User:ScatheMote/Sandbox
Jump to navigation
Jump to search
// Code courtesy of pcj of WoWWiki. // This is a modified version of the WoWWiki site version, in that it is designed for global.js use. // Code adds a checkbox at the top of the Special:RecentChanges list, next to the header. // Ticking it sets a cookie (should be individual to wikis) and starts updating the RC list. // This occurs silently every 60 seconds without a full page reload occuring. function setCookie(c_name,value,expiredays) { var exdate=new Date() exdate.setDate(exdate.getDate()+expiredays) document.cookie=c_name+ "=" +escape(value) + ((expiredays==null) ? "" : ";expires="+exdate.toGMTString()) } function getCookie(c_name) { if (document.cookie.length>0) { c_start=document.cookie.indexOf(c_name + "=") if (c_start!=-1) { c_start=c_start + c_name.length+1 c_end=document.cookie.indexOf(";",c_start) if (c_end==-1) c_end=document.cookie.length return unescape(document.cookie.substring(c_start,c_end)) } } return "" } function getXmlHttpRequestObject() { if (window.XMLHttpRequest) { return new XMLHttpRequest(); //Not Internet Explorer } else if(window.ActiveXObject) { return new ActiveXObject("Microsoft.XMLHTTP"); //Internet Explorer } else { //fail silently } } getRCDataRO = getXmlHttpRequestObject(); var cr = new RegExp("\r", "gm"); var lf = new RegExp("\n", "gm"); var endText = new RegExp('</div>[\t\s]*?<!-- end content -->[\t\s]*?<div class="visualClear">', "mi"); var rcTimer; var rcRefresh = 60000; function preloadAJAXRC() { s = 0; ajaxRCCookie = getCookie("ajaxRC")=="on" ? true:false; document.getElementsByTagName("h1")[s].innerHTML += ' <span style="font-size: xx-small; border-bottom: 1px dotted; cursor:help;" title="Enable auto-refreshing recent changes">Auto-Refresh:</span><input type="checkbox" id="ajaxRCtoggle" onClick="toggleRC();">'; document.getElementById("ajaxRCtoggle").checked = ajaxRCCookie; if (getCookie("ajaxRC")=="on") loadRCData(); } function toggleRC() { if (document.getElementById("ajaxRCtoggle").checked == true) { setCookie("ajaxRC", "on", 30); loadRCData(); } else { setCookie("ajaxRC", "off", 30); clearTimeout(rcTimer); } } function loadRCData() { if (getRCDataRO.readyState == 4 || getRCDataRO.readyState == 0) { if (location.href.indexOf("/wiki/")) { rcURL = "http://" + location.hostname + "/wiki/Special:RecentChanges" + location.search; } else { rcURL = "http://" + location.hostname + "/Special:RecentChanges" + location.search; } getRCDataRO.open("GET", rcURL, true); getRCDataRO.onreadystatechange = parseRCdata; getRCDataRO.send(null); } } function parseRCdata() { if (getRCDataRO.readyState == 4) { textFilter = new RegExp('<div id="bodyContent">.*?</div>[\t\s]*?<!-- end content -->[\t\s]*?<div class="visualClear">', "i"); rawRCdata = getRCDataRO.responseText.replace(cr, "").replace(lf, ""); filteredRCdata = textFilter.exec(rawRCdata); updatedText = filteredRCdata[0].replace('<div id="bodyContent">', "").replace(endText, ""); document.getElementById("bodyContent").innerHTML = updatedText; rcTimer = setTimeout("loadRCData();", rcRefresh); } } if (wgPageName == "Special:RecentChanges") addOnloadHook(preloadAJAXRC); // Credits go to the Transformers Wiki http://transformers.wikia.com/ for this function if ( skin == 'monobook' ) { function loadsearchstuff() { // If you're reading this, I'm sorry. Messy code lies ahead. if (document.implementation && document.implementation.createDocument) xmlDoc=document.implementation.createDocument("","",null); else xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); xmlDoc.async=false; xmlDoc.load("/index.php?title=Template:Searchicons&action=raw"); // Establishing the various fragments of the search box. var randindex = Math.floor(Math.random()*xmlDoc.getElementsByTagName("item").length); var searchicon = "<img src='" + xmlDoc.getElementsByTagName("url")[randindex].childNodes[0].nodeValue + "' style='margin-left: -15px; margin-top:-6px;' /></a>"; var searchbox = document.getElementById('searchBody'); // Throwing all the various fragments together. var searchfieldentry = document.getElementById('searchInput').value; searchbox.innerHTML = searchicon + searchbox.innerHTML; document.getElementById('searchInput').value = searchfieldentry; // Finally, removing the redundant "search" title at the top. searchbox.parentNode.removeChild(searchbox.parentNode.getElementsByTagName("h5")[0]); // Sets focus on the search bar ... // document.getElementById('searchInput').focus(); } addOnloadHook(loadsearchstuff); }