Jump to content

User:Writ Keeper/Scripts/previewAndDiff.js

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Writ Keeper (talk | contribs) at 01:12, 24 August 2017 (hmm, it does that for me). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
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.
$(document).ready(function()
{
	if(mw.config.get("wgAction") === "edit" || mw.config.get("wgAction") === "submit" )
	{
		if(/previewanddiff=true/.test(window.location.href))
		{
			mw.loader.load('mediawiki.action.history.diff');
			$("#wikiPreview").after('<h2></h2><h2>Your changes</h2><table class="diff" id="ajaxDiff"><colgroup><col class="diff-marker"><col class="diff-content"><col class="diff-marker"><col class="diff-content"></colgroup></table>');
			var requestString="/w/api.php";
			var requestData = {action:"query", prop:"revisions", format:"json", rvcontentformat:"text/x-wiki", revids:$("input[name='baseRevId']").attr("value"), rvdifftotext:$("textarea#wpTextbox1").text()};
			if($("input[name='wpSection']").attr("value") !== "")
			{
				requestData.rvsection = $("input[name='wpSection']").attr("value");
			}
			$.post(requestString, requestData, function(response, status)
			{
				$("#ajaxDiff").append(response.query.pages[Object.keys(response.query.pages)[0]].revisions[0].diff["*"]);
			});
		}
		var previewDiffButton = new OO.ui.ButtonInputWidget({label:'Show preview and changes', useInputTag: true, value: 'wpPreview', name: 'wpPreview', type:"submit", accessKey:"b", tabIndex: ($("#wpDiff").prop("tabIndex") + 1)});
		previewDiffButton.setTitle("Show a preview of your changes, as well as a diff of what you changed");
		
		$("#wpDiffWidget").after(previewDiffButton.$element);
		previewDiffButton.$element.children("input").click(function()
		{
			var formAction = $("#editform").attr("action");
			$("#editform").attr("action", formAction+"&previewanddiff=true");
		});
	}
});