MediaWiki:Gadget-RecentChangesRefresh.js: Difference between revisions

From the Super Mario Wiki, the Mario encyclopedia
Jump to navigationJump to search
No edit summary
No edit summary
 
(15 intermediate revisions by the same user not shown)
Line 2: Line 2:
// Code courtesy of pcj of WoWWiki
// Code courtesy of pcj of WoWWiki


var loaderImg = 'https://wiki.gallery/images/loader.gif';
var ajaxPages = ['Special:RecentChanges'];
var ajaxRCOverride = false;
var rcRefresh = 30000;
var rcRefresh = 30000;
var ajaxRCOverride = false;
var ajaxPages = new Array('Special:RecentChanges');


function setCookie(c_name, value, expiredays) {
function setCookie(c_name, value, expiredays) {
var exdate = new Date();
var exdate = new Date();
exdate.setDate(exdate.getDate() + expiredays);
exdate.setDate(exdate.getDate() + expiredays);
document.cookie = c_name + '=' + escape(value) + ((expiredays == null) ? '' : ';expires=' + exdate.toGMTString());
document.cookie = c_name + '=' + escape(value) + ((expiredays === null) ? '' : ';expires=' + exdate.toGMTString());
}
}


Line 26: Line 27:


function ajaxRC() {
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>');
$(appTo).last().append('&nbsp;<div style="height:0;display:inline-block;margin-left:10px"><span style="font-family:sans-serif;font-size:xx-small;cursor:help" title="Automatically refresh this page every ' + Math.floor(rcRefresh / 1000) + ' seconds">AUTO-REFRESH:</span><input type="checkbox" id="autoRefreshToggle" style="margin-left:5px"><span style="position:relative;left:5px" id="autoRefreshProgress"><img class="invert" src="' + loaderImg + '" border="0" alt="Refresh in progress"/></span></div>');
$('#autoRefreshToggle').click(function () {
$('#autoRefreshToggle').click(function() {
setCookie('ajaxRC', $('#autoRefreshToggle').prop('checked') ? 'on' : 'off');
setCookie('ajaxRC', $('#autoRefreshToggle').prop('checked') ? 'on' : 'off', 999);
loadRCData();
loadRCData();
});
});
Line 41: Line 42:
if (!$('#autoRefreshToggle').prop('checked')) return;
if (!$('#autoRefreshToggle').prop('checked')) return;
$('#autoRefreshProgress').show();
$('#autoRefreshProgress').show();
$(article).load(location.href + ' ' + article + ' > *', function (data) {
$(article).load(location.href + ' ' + article + ' > *', function(data) {
$(article + ' .mw-collapsible').makeCollapsible();
$(article + ' .mw-collapsible').makeCollapsible();
$('#autoRefreshProgress').hide();
$('#autoRefreshProgress').hide();
Line 49: Line 50:


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

Latest revision as of 13:35, February 27, 2023

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

var loaderImg = 'https://wiki.gallery/images/loader.gif';
var ajaxPages = ['Special:RecentChanges'];
var ajaxRCOverride = false;
var rcRefresh = 30000;

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).last().append('&nbsp;<div style="height:0;display:inline-block;margin-left:10px"><span style="font-family:sans-serif;font-size:xx-small;cursor:help" title="Automatically refresh this page every ' + Math.floor(rcRefresh / 1000) + ' seconds">AUTO-REFRESH:</span><input type="checkbox" id="autoRefreshToggle" style="margin-left:5px"><span style="position:relative;left:5px" id="autoRefreshProgress"><img class="invert" src="' + loaderImg + '" border="0" alt="Refresh in progress"/></span></div>');
	$('#autoRefreshToggle').click(function() {
		setCookie('ajaxRC', $('#autoRefreshToggle').prop('checked') ? 'on' : 'off', 999);
		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 ($('.mw-rcfilters-enabled').length) return;
	appTo = 'h1';
	article = '#mw-content-text';
	for (var x in ajaxPages) {
		if (mw.config.get('wgPageName') == ajaxPages[x] && $('#autoRefreshToggle').length === 0) ajaxRC();
	}
});