Jump to content

User:DavidBrooks/HarvErrors.js

From Wikipedia, the free encyclopedia
This is the current revision of this page, as edited by DavidBrooks (talk | contribs) at 14:50, 23 July 2020 (Simple version of Ucucha: always show a CITEREF in green). The present address (URL) is a permanent link to this version.
(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.
// Tweaked copy of [[User:Ucucha/HarvErrors.js]]
// But see [[User:Trappist the monk/HarvErrors.js]] for selective error suppression
if(window.checkLinksToCitations === undefined)
    window.checkLinksToCitations = true;

mw.hook( 'wikipage.content' ).add( function( $content ) {
    // first check: do links in Harvard citations point to a valid citation?
    var href,
    	links = $content.find( 'a[href^="#CITEREF"]' );

    links.each( function (i, elem) {
    	href = elem.getAttribute( 'href' ).substring(1); //skip the #
    	// IDs can contain characters like . that have meaning in selectors
    	// use $.escapeSelector to make sure they are escaped
        if ( $content.find( '#' + $.escapeSelector(href) ).length < 1)
            elem.parentNode.innerHTML +=
                " <strong class=error>Harv error: link from " +
                href +
                " doesn't point to any citation.</strong>";
    } );

    // second check: used to be: do CITEREF IDs have Harvard citations pointing to them?
    // David's tweak: even if they don't, surface them.
    if(window.checkLinksToCitations) {
        var cites = $content.find('.citation');
        for(var i=0; i < cites.length; i++) {
            var id = cites[i].getAttribute('id');
            // we only need to check citations with a... something?
            if(!id || id.indexOf('CITEREF') !== 0)
                continue;
            // Don't warn about links to this citation: I'm not so exercised by those
          	cites[i].innerHTML +=
                    " <span style=\"color:LimeGreen\">This citation's anchor is named " + id + ".</span>";
        }
    }
});