User:NQ/custom-scripts/inlinediffs.js

// WritKeeper's amazing inlinediff script with some style changes. User:Writ Keeper/Scripts/commonHistory.js User:Writ_Keeper/Scripts/inlineDiffDocs

diffRequestLocked = "f"; if(typeof inspectText == "undefined") {	inspectText = "inspect diff"; } if(typeof showText == "undefined") {	showText = "show diff"; } if(typeof hideText == "undefined") {	hideText = "hide diff"; } if(	mw.config.get("wgCanonicalSpecialPageName") == "Watchlist" || 	mw.config.get("wgCanonicalSpecialPageName") == "Recentchanges" || 	mw.config.get("wgCanonicalSpecialPageName") == "Contributions" ||	mw.config.get("wgAction") == "history") {	function inspectionEachHelper(index, element) {		var findString; if(mw.config.get("wgAction") == "history" || $(element).hasClass("mw-enhanced-rc-nested")) {			findString = 'a:contains("prev")'; }		else {			findString = 'a:contains("diff")'; }		var regex; if(mw.config.get("wgCanonicalSpecialPageName") == "Contributions") {			regex = /&oldid=(\d+)$/; }		else {			regex = /&diff=(\d+)&oldid=/; }		var diffLink = $(element).find(findString); if(diffLink.length > 0 ) {			var regexResult = regex.exec(diffLink[0].href); if(regexResult != null && regexResult.length >= 2) {				var diffID = regexResult[1]; var inlineDiffButton; if(typeof inlineDiffBigUI === "undefined") { 					inlineDiffButton = document.createElement("a"); inlineDiffButton.href = "#"; inlineDiffButton.innerHTML = ' ( '+inspectText+' ) '; }				else {					inlineDiffButton = document.createElement("input"); inlineDiffButton.type = "button"; inlineDiffButton.value = "Inspect edit"; }				inlineDiffButton.id = diffID; $(inlineDiffButton).click(function{ return inspectWatchlistDiff(this);}); if($(element).find("tr:first").length == 0) {					$(inlineDiffButton).insertBefore($(element).children(".mw-changeslist-separator:first")); }				else {					$(element).find("tr:first").append(" "); $(element).find("tr:first>td:last").append(inlineDiffButton); }			}		}	}	function addWatchlistInspectionBoxes { var entries = $("#mw-content-text table.mw-enhanced-rc"); if(entries.length == 0) {			$("#mw-content-text ul").each(function(ind, el)			{				$(el).children("li").each(inspectionEachHelper);			}); }		else {			entries.each(inspectionEachHelper); $("td.mw-enhanced-rc-nested").each(inspectionEachHelper); }		mw.loader.load('mediawiki.action.history.diff'); }	function inspectWatchlistDiff(button) {		if(diffRequestLocked === "t") {			alert("An old request is still being processed, please wait..."); return false; }		else {			diffRequestLocked = "t"; var mwApi = new mw.Api; mwApi.get( {action : "query", prop : "revisions", format : "json", rvprop : "timestamp", rvdiffto : "prev", revids : button.id}).done(function(response) 			{ 				if(response == null)				{					alert("Request failed!");					diffRequestLocked = "f";					return false;				}

var diffString = response.query.pages[Object.keys(response.query.pages)[0]].revisions[0].diff["*"]; if(diffString == null) {					alert("Request failed!"); diffRequestLocked = "f"; return false; }				var newTable = document.createElement("table"); newTable.className = "diff"; $(newTable).html('  '); $(newTable).append(diffString); if($("#"+ button.id).parent("td").length > 0 && !($("#"+ button.id).parent("td").hasClass("mw-enhanced-rc-nested"))) {					$("#"+ button.id).parents("table.mw-enhanced-rc:first").after(newTable); }				else {					diffParent = $("#"+button.id).parent; diffParent.append(newTable); }				newTable.id = button.id + "display"; $(button).unbind("click"); if(typeof inlineDiffBigUI === "undefined") {					$(button).html(' ( '+hideText+' ) '); $(button).click(function{ return hideSmallEditInspection(this);}); }				else {					$(button).attr("value","Hide edit"); $(button).click(function{ return hideEditInspection(this);}); }				mwApi.post({action : "setnotificationtimestamp", revids: button.id, token : mw.user.tokens.get("editToken")}).done(function(data)				{					if(diffParent != null)					{						diffParent.removeClass("mw-changeslist-line-watched");						diffParent.addClass("mw-changeslist-line-not-watched");					}				}); 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(' ( '+hideText+' ) '); $(button).unbind("click"); $(button).click(function{ return hideSmallEditInspection(this);}); return false; }	function hideSmallEditInspection(button) {		$("#"+button.id+"display").css("display", "none"); $(button).html(' ( '+showText+' ) '); $(button).unbind("click"); $(button).click(function{ return showSmallEditInspection(this);}); return false; }

$(document).ready(addWatchlistInspectionBoxes); }