User:KokoroSenshi/common.js

//

// // External wiki redirect prompt // Test to make a dialogue box ask whether to redirect when sent to soft redirect pages // }}

var elemSoftRedirect = document.getElementById("softredirect"); console.log("|"); console.log("| "+elemSoftRedirect); if (elemSoftRedirect != null) { console.log("| This is a softredirect"); //Check if href exists (better save than sorry) ///console.log("| "+elemSoftRedirect.children[0]); //An alternative console.log("| "+elemSoftRedirect.firstElementChild); ///.firstChild should have(?) worked but didn't if (elemSoftRedirect.firstElementChild.hasAttribute("href")) { //Redirect confirmation box var URL = elemSoftRedirect.firstElementChild.getAttribute("href"); console.log("| "+URL); ConfirmRedirect } else { console.log("| There's no href"); }; } else { //If not a soft redirect page: console.log("| There's no softredirect"); }; console.log("|---");

function ConfirmRedirect{ console.log("| "+elemSoftRedirect.lastElementChild); console.log("| "+elemSoftRedirect.lastElementChild.innerHTML); var wikiName = elemSoftRedirect.lastElementChild.innerHTML; var reply = confirm("Redirect to the page"+ URL +" on "+ wikiName +"?"); //navigates to the page with 10s delay after the confirmation box setTimeout(function{   console.log("| Will redirect since no cancel (5s delay for redirect exists to confirm end of script in log)");    console.log("|---");    setTimeout(function{ window.location = URL; },(5 * 1000)); },(10 * 1000));  if(reply == true) { console.log("| Will redirect since clicked (5s delay for redirect exists to confirm end of script in log)"); console.log("|---"); setTimeout(function{     window.location = URL;    },(5 * 1000)); } else { console.log("| Not redirecting"); }; };

// // New Element test // Q: Do we want the blackout to cover the whole page, or not exist or leave the tools and top free? //   (the blackout will go over the preceding elements //

//document.getElementById("firstHeading").appendChild( newElem("div","opacity: 0.3;", "test1", "testElem1", null) ); //document.body.appendChild( newElem("div", "opacity: 0.3; position:fixed; top:0; left:0; width:100%; height:100%; background-color:#000;",null, "blackout", null) ); //https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Functions#Function_parameters //http://stackoverflow.com/questions/12556229/do-i-need-to-pass-empty-parameters-to-a-javascript-function //so... have to put null if the param/arg is not the last ones (i.e. can't have ,, ) console.log("test1");

document.body.appendChild(  newElem("div", null, null, "aa", "mw-dismissable-notice") ); aa.appendChild(  newElem("div", "visibility: visible;", "toReplace", null, "mw-dismissable-notice-close") ); aa.firstChild.innerHTML = '[dismiss]' aa.appendChild(  newElem("div", null, null, "bb", "mw-dismissable-notice-body") ); bb.appendChild(  newElem("div", null, null, "Content", null) ); Content.appendChild(  newElem("div", "font-size:1.25em; text-align:center;background-color: #1d578b; padding:1em; border-radius: 10px; -moz-border-radius: 10px; -webkit-border-radius: 10px; -khtml-border-radius: 10px; -icab-border-radius: 10px; -o-border-radius: 10px", "haha", null, null) );

function newElem(type, style, text, id, clss){ var elem = document.createElement(type); elem.setAttribute("id",id); //console.log(text); if (style != null){ elem.setAttribute("style",style); }; if (text != null){ elem.textContent = text;          }; if (clss != null){ elem.setAttribute("class",clss);  }; return elem; };

// - // mw.config variables:  https://www.mediawiki.org/wiki/Manual:Interface/JavaScript#mw.config //   Actually, you can access these by starting to type wg into the console in Firefox // (radix converts the base first) https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toString // - consoleLoop([ debug, skin, stylepath, wgActionPaths, wgArticlePath, wgAvailableSkins, wgCaseSensitiveNamespaces, wgTitle, wgPageName, wgRelevantPageName //,wpDestFile <- oh I get it now... this breaks it except on reupload page since elsewhere it doesn't exist ]);

function consoleLoop(array){ for(i=0;i<array.length;i++){ console.log((i).toString+array[i]); //Print i as well since some may not exist, and thus not log }; }; // -

// // Automatic purge cache after new version upload aka reupload // Notes: Only perform if both this and the prev page were the reupload page then image page //       (in simplicity, just test for existence, though could be more efficient to match, then use the reupload page's image name //         in the search string for current url) //       Renavigate won't work + reload gives infinite loop + server purge isn't the issue so pointless //         //location = window.location.href;//window.location.reload(true); //       Something about the way Doin (user at stackoverflow) did it makes the onload/etc. work //       The file history uses a thumbnail (unless it's a small file) which is updated/generated after reupload(?); if file is //         small, then it won't create a thumbnail(?) //       So, only the non-thumb image is stuck in cache(?), so need to refresh that src only, but need to remove both main and //        most recent file history src.s also jic // Relating to Doin's code: //       http://stackoverflow.com/questions/3535996/jquery-javascript-functione-what-is-e-why-is-it-needed-what-does-it-ac# //       ////set iframe0.src after addEventListener? Though addEventListener then needs 'firstrun'(?) to not put back src.s early//// //       //Need the "window." ?//http://stackoverflow.com/questions/588040/window-onload-vs-document-onload // // nup?: http://www.satya-weblog.com/2010/04/how-to-delete-cached-file-on-client-side.html //       http://websistent.com/javascript-reload-image/ // // Ref: document.referrer    https://developer.mozilla.org/en-US/docs/Web/API/Document/referrer //     .search( ... )        https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/search //     window.location.href  https://developer.mozilla.org/en-US/docs/Web/API/Window/location //     |                       https://developer.mozilla.org/en-US/docs/Web/API/Location //     wg stuff              https://www.mediawiki.org/wiki/Manual:Interface/JavaScript //     RegExp                https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions //     RegExp checker       http://www.regexr.com/ //     Tip: Use mozilla's scratchpad to debug js //      Works, once you replace the relevant stuff that scratchpad gives error //                           http://stackoverflow.com/questions/321865/how-to-clear-or-replace-a-cached-image#22430452 //                           http://stackoverflow.com/questions/1077041/refresh-image-with-a-new-one-at-the-same-url#22429796 //     loop                  http://stackoverflow.com/questions/3010840/loop-through-array-in-javascript //     var.s ! https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/var //     Need the "window." ? http://stackoverflow.com/questions/588040/window-onload-vs-document-onload // // RegExp info: Encase like so / ... / ; the operations typically operate on preceding char; \ to escape; ? ops to 0 or 1 of; //             * ops to 0 or more of;. represents most characters; {1,5} ops to 1 ot 5 of; // // TODO: Make url checking better? //      Probably don't need to check if src exists if thisURL and prevURL are right (though jic, to not break the whole script?) //      Extra large images create a medium size thumbnail too! is that auto-updated/generated? I suppose I need to reverse-eng the //       image url/src in that case? //      Images of index 1 and 2 are the game image and license image, which usually but may not exist; thus, just loop to temp //       remove over all images to be safe? //

console.log("|---"); console.log("To avoid having to reupload, now that the validation definitely works, made a link to replace this user action"); if (location.href.search(/File=.*\..{1,5}/) != -1){ document.getElementById("n-mainpage").firstChild.innerHTML = 'CLICK OVER HERE CLICK OVER HERE CLICK OVER HERE CLICK OVER HERE' }; console.log("| Purge image cache after reupload - START"); //Get previous page URL (then later test if is a reupload page) prevURL = document.referrer; //Get previous url //It's possible for prevURL to be empty if not navigated through links, e.g. address bar/back-button, etc. so check this first(?): if (prevURL != "") { console.log("| The previous URL is: "+prevURL); var prevRE = /https?:\/\/zeldawiki\.org\/index\.php\?title=Special:Upload&wpDestFile=.*\..{1,5}&wpForReUpload=1.*/; //RegExp //Test if prevURL is a reupload page: if (prevURL.search(prevRE) != -1){ //If prevURL is a reupload page console.log("| The previous URL was a reuploading page"); //Get current URL + test if the image page that would follow after upload var thisURL = window.location.href; //Get current url console.log("| This URL is: "+thisURL); var thisRE = /https?:\/\/zeldawiki.org\/File:.*\..{1,5}/; //RegExp //Test if thisURL is an image page: if (thisURL.search(thisRE) != -1) { console.log("| This url is an image page"); console.log("| Time to refresh image cache:"); purgeImgCache; } else { console.log("| This url isn't an image page - END"); }; } else { console.log("| Previous url isn't (a) reupload page - END"); }; console.log("|---"); } else { console.log("| No previous url - END");console.log("|---"); };

function purgeImgCache{ console.log("||---"); console.log("|| Start Img cache purge, may not work in all situations");

//Find the imgs and their src.s var elBodyText = document.getElementById("mw-content-text"); //main body element that hold the actual page content console.log("|| "+elBodyText); var arrayImgEl = elBodyText.getElementsByTagName("img"); //Array of all img elements in the main body console.log("|| "+arrayImgEl); //Test if first img (main image/medium-thumbnail) has src then store it if ( arrayImgEl[0].hasAttribute("src") ){ var source0 = arrayImgEl[0].getAttribute("src"); //arrayImgEl[0].src retrieves full url instead btw }; //Test if first img (first image/small(?)-thumbnail in File History) has src then store it  if ( arrayImgEl[3].hasAttribute("src") ){ var source3 = arrayImgEl[3].getAttribute("src"); //arrayImgEl[3].src retrieves full url instead btw };

//Blank or remove the src.s to avoid issues when refreshing arrayImgEl[0].setAttribute("src",""); arrayImgEl[3].setAttribute("src",""); console.log("|| http://zeldawiki.org"+source0); //Create iframe, add it to the page, add the src.s var step = 0, iframe0 = window.document.createElement("iframe");//Need the "window." ?//http://stackoverflow.com/questions/588040/window-onload-vs-document-onload iframe0.style.display = "none"; //So it takes up no space window.parent.document.body.appendChild(iframe0);///document.body.appendChild(iframe0); //?

console.log("|| "+iframe0.contentWindow); //Should be about:blank, not null?

//Wait for load (only Doin's way works??) iframe0.addEventListener("load" ,refreshOrDone,false); iframe0.addEventListener("error",refreshOrDone,false); iframe0.src = source0; //"http://zeldawiki.org"+ function refreshOrDone{ if (!step) // "initial load just completed.  Note that it doesn't actually matter if this load succeeded or not!" {     step = 2; iframe0.contentWindow.location.reload(true); // "initiate forced-reload" }   else if (step===2)   // "forced re-load is done" {     arrayImgEl[0].setAttribute("src",source0); arrayImgEl[3].setAttribute("src",source3); console.log("|| loaded?"); if (iframe0.parentNode) iframe0.parentNode.removeChild(iframe0); }; }  //console.log("||---"); }

// // Wikitext test // - // //

///console.log(" KokoroSenshi "); ///console.log("~"); ///console.log(" "); ///console.log("&#126;&#126;&#126;&#126;");