MediaWiki:Gadget-RecentChangesRefresh.js

// 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 { if ( mw.config.get('skin') == 'nimbus' ) { appTo = $(".pagetitle"); } else if ( mw.config.get('skin') != 'nimbus' ) { appTo = $(".firstHeading"); }	appTo.append('  AUTO-REFRESH:  '); $("#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 {	if ( mw.config.get('skin') == 'nimbus' ) {		article = "#mw-content-text";	} else if ( mw.config.get('skin') != 'nimbus' ) {		article = "#bodyContent";	}	for (x in ajaxPages) {		if (mw.config.get('wgPageName') == ajaxPages[x] && $("#autoRefreshToggle").length == 0) ajaxRC;	} });