MediaWiki:Common.js: Difference between revisions
No edit summary |
Added auto-refreshing recent changes code |
||
Line 1: | Line 1: | ||
/* Any JavaScript here will be loaded for all users on every page load. */ | /* Any JavaScript here will be loaded for all users on every page load. */ | ||
// Code courtesy of pcj of WoWWiki. | |||
// This is a modified version of the WoWWiki site version. | |||
// 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 30 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 ""; | |||
} | |||
var ajaxPages = new Array("Special:RecentChanges"); | |||
var ajaxRCOverride = false; | |||
var rcRefresh = 30000; | |||
function ajaxRC() { | |||
appTo = $(".firstHeading"); | |||
appTo.append(' <span style="position:absolute; margin-left:10px;"><span style="font-size: xx-small; cursor:help;" title="Automatically refresh the current page every ' + Math.floor(rcRefresh / 1000) + ' seconds">AUTO-REFRESH:</span><input type="checkbox" id="autoRefreshToggle"><span style="position:relative; top:5px; left:5px;" id="autoRefreshProgress"><img src="/images/loader.gif" border="0" alt="AJAX operation in progress" /></span></span>'); | |||
$("#autoRefreshToggle").click(function () { | |||
setCookie("ajaxRC", $("#autoRefreshToggle").is(":checked") ? "on" : "off") | |||
loadRCData() | |||
}); | |||
$("#autoRefreshProgress").hide(); | |||
if (getCookie("ajaxRC") == "on" || ajaxRCOverride) { | |||
$("#autoRefreshToggle").attr("checked", "checked"); | |||
setTimeout("loadRCData();", rcRefresh); | |||
} | |||
} | |||
function loadRCData() { | |||
if (!$("#autoRefreshToggle").is(":checked")) return; | |||
$('#autoRefreshProgress').show() | |||
$(article).load(location.href + " " + article + " > *", function (data) { | |||
$(article + " .mw-collapsible").makeCollapsible(); | |||
$('#autoRefreshProgress').hide() | |||
if ($("#autoRefreshToggle").is(":checked")) setTimeout("loadRCData();", rcRefresh); | |||
}); | |||
} | |||
$(function () { | |||
article = "#bodyContent"; | |||
for (x in ajaxPages) { | |||
if (wgPageName == ajaxPages[x] && $("#autoRefreshToggle").length == 0) ajaxRC(); | |||
} | |||
}); | |||
/*================================================== | /*================================================== |