User:ScatheMote/Sandbox: Difference between revisions
Jump to navigation
Jump to search
(ckzPlOGwunvTpAlqebgYAS) |
m (rv to last good version) |
||
Line 1: | Line 1: | ||
<pre> | |||
// 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); | |||
} | |||
</pre> |
Latest revision as of 15:04, 29 April 2014
// 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); }