User:Writ Keeper/Scripts/contribsHistory.js

diffRequestLocked = "f"; if(mw.config.get("wgCanonicalSpecialPageName") == "Contributions") {	function addContribsInspectionBoxes { $("#mw-content-text ul").children("li").each(function(index, element)			{				if($(element).children('[href*="diff=prev"]').length > 0 && !(/(\.js|\.css)$/.test($(element).children('.mw-changeslist-date').attr('title'))))				{					var diffURL = $(element).children('.mw-changeslist-date').attr("href");					var regex = /&oldid=(\d+)/.exec(diffURL);					var diffID = regex[1];					var inlineDiffButton;                                       if(typeof inlineDiffSmallUI != "undefined")                                        {                                               inlineDiffButton = document.createElement("a");					      inlineDiffButton.href = "#";					      inlineDiffButton.innerHTML = ' [ inspect diff ] ';                                        }                                        else                                        {                                              inlineDiffButton = document.createElement("input"); inlineDiffButton.type = "button"; inlineDiffButton.value = "Inspect edit"; }					inlineDiffButton.id = diffID; $(inlineDiffButton).click(function{ return inspectContribsDiff(this);}); element.appendChild(inlineDiffButton); }			});

mw.loader.load('mediawiki.action.history.diff') }	function inspectContribsDiff(button) {		if(diffRequestLocked === "t") {			alert("An old request is still being processed, please wait..."); return false; }		else {			diffRequestLocked = "t"; $.getJSON("/w/api.php?action=query&prop=revisions&format=json&rvprop=timestamp&rvdiffto=prev&revids="+button.id, function(response, status){				var diffString = response.query.pages[Object.keys(response.query.pages)[0]].revisions[0].diff["*"];				if(diffString == null)				{				alert("Request failed!");					diffRequestLocked = "f";					return;				}				var newTable = document.createElement("table");				newTable.className = "diff";				var colGroup = document.createElement("colgroup");				var diffCol = document.createElement("col");				diffCol.className = "diff-marker";				colGroup.appendChild(diffCol);				diffCol = document.createElement("col");				diffCol.className = "diff-content";				colGroup.appendChild(diffCol);				diffCol = document.createElement("col");				diffCol.className = "diff-marker";				colGroup.appendChild(diffCol);				diffCol = document.createElement("col");				diffCol.className = "diff-content"; colGroup.appendChild(diffCol); newTable.appendChild(colGroup); $(newTable).append(diffString); $(newTable).insertAfter("#"+ button.id); newTable.id = button.id + "display"; $(button).unbind("click"); if(typeof inlineDiffSmallUI != "undefined") {				   $(button).html(' [ hide diff ] '); $(button).click(function{ return hideSmallEditInspection(this);}); }                               else {                                   $(button).attr("value","Hide edit"); $(button).click(function{ return hideEditInspection(this);}); }				diffRequestLocked = "f"; });			}               return false;	}	function showEditInspection( button)	{		$("#"+button.id+"display").css("display", "");		$(button).attr("value","Hide edit");		$(button).unbind("click");		$(button).click(function{ return hideEditInspection(this);});                return false;	}	function hideEditInspection( button)	{		$("#"+button.id+"display").css("display", "none");		$(button).attr("value","Show edit");		$(button).unbind("click");		$(button).click(function{ return showEditInspection(this);});                return false;	}

function showSmallEditInspection( button) {               $("#"+button.id+"display").css("display", ""); $(button).html(' [ hide diff ] '); $(button).unbind("click"); $(button).click(function{ return hideSmallEditInspection(this);}); return false; }       function hideSmallEditInspection( button) {		$("#"+button.id+"display").css("display", "none"); $(button).html(' [ show diff ] '); $(button).unbind("click"); $(button).click(function{ return showSmallEditInspection(this);}); return false; }

$(document).ready(addContribsInspectionBoxes); }