User:DannyS712 test/HarvErrors.js

if(window.checkLinksToCitations === undefined) window.checkLinksToCitations = true; mw.loader.using( 'mediawiki.util', function {    $(document).ready( function  { //       var link = mw.util.addPortletLink( 'p-cactions', 'javascript:void(0)', 'HarvErorrs', 'ca-harv-errors', 'Check for Harvard Errors'); //       $( link ).click( function ( event ) { //            event.preventDefault;            HarvErrors; //        } ); } ); } ); function HarvErrors{ var $content = $( '#mw-content-text' ); var has_errors = false; // 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)            console.log( "Harv error: link from " + href + " doesn't point to any citation.");            has_errors = true;    } );

// 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) { console.log( "Harv warning: There is no link pointing to this citation. The anchor is named " + id + "."); has_errors = true; }       }    }    if (has_errors) alert("This page has Harvard errors"); }