Difference between revisions of "MediaWiki:Gadget-RecentChangesRefresh.js"

From Conker Wiki
Jump to navigationJump to search
(mariowiki/wowwiki)
 
m (1 revision imported)
 
(No difference)

Latest revision as of 17:10, 21 March 2020

// Auto-refresh recent changes
// Code courtesy of pcj of WoWWiki

var rcRefresh = 30000;
var ajaxRCOverride = false;
var ajaxPages = new Array('Special:RecentChanges');

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 ajaxRC() {
	$(appTo).append('&nbsp;<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; left:5px;" id="autoRefreshProgress"><img src="/images/loader.gif" border="0" alt="AJAX operation in progress" /></span></span>');
	$('#autoRefreshToggle').click(function () {
		setCookie('ajaxRC', $('#autoRefreshToggle').prop('checked') ? 'on' : 'off', 365);
		loadRCData();
	});
	$('#autoRefreshProgress').hide();
	if (getCookie('ajaxRC') == 'on' || ajaxRCOverride) {
		$('#autoRefreshToggle').prop('checked', true);
		setTimeout(loadRCData, rcRefresh);
	}
}

function loadRCData() {
	if (!$('#autoRefreshToggle').prop('checked')) return;
	$('#autoRefreshProgress').show();
	$(article).load(location.href + ' ' + article + ' > *', function (data) {
		$(article + ' .mw-collapsible').makeCollapsible();
		$('#autoRefreshProgress').hide();
		if ($('#autoRefreshToggle').prop('checked')) setTimeout(loadRCData, rcRefresh);
	});
}

$(function() {
	if (!document.getElementsByClassName('mw-rcfilters-enabled')[0]) {
		article = '#bodyContent';
		appTo = '.firstHeading';
		for (x in ajaxPages) {
			if (mw.config.get('wgPageName') == ajaxPages[x] && $('#autoRefreshToggle').length == 0) ajaxRC();
		}
	}
});