Jump to content

User:Gary/link intermediate revisions.js

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Gary (talk | contribs) at 21:51, 21 September 2010 (creating). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
(diff) ← Previous revision | Latest revision (diff) | Newer revision → (diff)
Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.
/*
	LINK INTERMEDIATE REVISIONS
	Description: Link intermediate revisions when viewing a diff, to easily see which revisions are between the two diffs currently being viewed.
*/

if (typeof(unsafeWindow) != 'undefined')
{
	wgScript = unsafeWindow.wgScript;
	wgPageName = unsafeWindow.wgPageName;
	importScriptURI = unsafeWindow.importScriptURI;
	wgServer = unsafeWindow.wgServer;
	wgScriptPath = unsafeWindow.wgScriptPath;
	console = unsafeWindow.console;
}

function getURLParam(param)
{
	if (!document.location.search || document.location.search.length == 0) return false;
	var params = document.location.search.substr(1).split('&');
	for (var i = 0; i < params.length; i++)
	{
		var paramParts = params[i].split('=');
		if (paramParts[0] == param) return paramParts[1];
	}
	return false;
};

function createDiffMultiLink()
{
	// split URL
	if (!getURLParam('diff') || !getURLParam('oldid'))
		return false;
	
	var url = wgServer + wgScriptPath + '/api.php?action=query&prop=revisions&titles=' + wgPageName + '&rvprop=timestamp&rvstartid=' + getURLParam('diff') + '&rvendid=' + getURLParam('oldid') + '&callback=diffMultiCallback&format=json&indexpageids=1';
	importScriptURI(url);
}

function twoDigitPadding(integer)
{
	var string = integer.toString();
	
	if (string.length == 1) return '0' + integer;
	else return integer;
}

diffMultiCallback = function(response)
{
	if (!response['query'] || !response['query']['pages'] || response['query']['pageids'][0] == -1)
		return false;
	
	var diffMultis = document.getElementsByClassName('diff-multi');
	
	if (diffMultis.length == 0)
		return false;
	
	var pageId = response['query']['pageids'][0];
	var page = response['query']['pages'][pageId];
	var revisions = page['revisions'];
	
	var oldid = new Date(revisions[revisions.length - 1]['timestamp']);
	oldid = oldid.getUTCFullYear().toString() + twoDigitPadding(oldid.getUTCMonth() + 1).toString() + oldid.getUTCDate().toString() + twoDigitPadding(oldid.getUTCHours() + 1).toString() + twoDigitPadding(oldid.getUTCMinutes() + 1).toString() + twoDigitPadding(oldid.getUTCSeconds() + 1).toString();
	var diff = new Date(revisions[0]['timestamp']);
	diff = diff.getUTCFullYear().toString() + twoDigitPadding(diff.getUTCMonth() + 1).toString() + diff.getUTCDate().toString() + twoDigitPadding(diff.getUTCHours() + 1).toString() + twoDigitPadding(diff.getUTCMinutes() + 1).toString() + twoDigitPadding(diff.getUTCSeconds() + 1).toString();

	var diffMulti = diffMultis[0];
	var a = document.createElement('a');
	a.href = wgScript + '?title=' + wgPageName + '&action=history&offset=' + diff + '&limit=' + revisions.length;
	a.appendChild(diffMulti.firstChild);
	diffMulti.appendChild(a);
}

if (typeof(addOnloadHook) == 'undefined')
{
	createDiffMultiLink();
}
else
{
	addOnloadHook(createDiffMultiLink);
}

if (typeof(unsafeWindow) != 'undefined')
{
	unsafeWindow.diffMultiCallback = diffMultiCallback;
}