:User:Ucucha/HarvErrors.js

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 && elem.parentNode)

elem.parentNode.innerHTML +=

" Harv error: link from " +

href +

" doesn't point to any citation.";

} );

// second check: do CITEREF IDs have Harvard citations pointing to 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

if(!id || id.indexOf('CITEREF') !== 0)

continue;

// don't do cites that are inside a ref

var parentid = cites[i].parentNode.parentNode.getAttribute('id');

if(parentid && parentid.indexOf('cite_note') === 0)

continue;

// check for links to this citation

var query = 'a[href|="#' + $.escapeSelector(id) + '"]';

if($content.find(query).length === 0) {

cites[i].innerHTML +=

" Harv warning: There is no link pointing to this citation. The anchor is named " + id + ".";

}

}

}

});