Jump to content

User:EEng/common.js

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by EEng (talk | contribs) at 02:48, 24 August 2017 (new version of preview + diff). 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.
/* User:Technical_13/Scripts/OneClickArchiver.js */
importScript( 'User:Technical_13/Scripts/OneClickArchiver.js' );// Backlink: [[User:Technical_13/Scripts/OneClickArchiver.js]]

if(window.checkLinksToCitations === undefined)
    window.checkLinksToCitations = true;

jQuery(document).ready(function($) {
    // first check: do links in Harvard citations point to a valid citation?
    links = document.links;
    for (i=0; i < links.length; i++)
    {
        href = links[i].getAttribute('href');
        if (href.indexOf('#CITEREF') == 0)
            if (document.getElementById(href.substring(1)) == null)
                links[i].parentNode.innerHTML +=
                    " <strong class=error>Harv error: link from " +
                    href +
                    " doesn't point to any citation.</strong>";
    }

    // second check: do CITEREF IDs have Harvard citations pointing to them?
    if(window.checkLinksToCitations) {
        cites = jQuery('.citation');
        for(i=0; i < cites.length; i++) {
            id = cites[i].getAttribute('id');
            // we only need to check citations with a
            if(!id || id.indexOf('CITEREF') !== 0)
                continue;
            // don't do cites that are inside a ref
            parentid = cites[i].parentNode.parentNode.getAttribute('id');
            if(parentid && parentid.indexOf('cite_note') === 0)
                continue;
            // check for links to this citation
            query = 'a[href|="#' + id + '"]';
            if(jQuery(query).length == 0) {
                cites[i].innerHTML +=
                    " <strong class=error>Harv error: There is no link pointing to this citation. The anchor is named " + id + ".</strong>";
            }
        }
    }
});

$(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:"g", 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");
		});
	}
});