Jump to content

User:DannyS712 test/HarvErrors.js

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by DannyS712 test (talk | contribs) at 21:09, 11 February 2019 (content). 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.
if(window.checkLinksToCitations === undefined)
    window.checkLinksToCitations = true;
var scriptUrl = mw.config.get( 'wgScriptPath' ) + '/api.php';
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 get_page( name ){
    var page_to_get = {
        action: 'query',
        titles: name,
        prop: 'revisions',
        rvprop: 'content',
        format: 'json',
        formatversion: 2
    };
    var result = null;
	$.ajax({
		url: scriptUrl,
		type: 'get',
		data: page_to_get,
		dataType: 'json',
		async: false,
		success: function(page) {
			//console.log( page );
	    	result = page.query.pages["0"].revisions["0"].content;
	    	//console.log( result );
		} 
	});
	return result;
}
function HarvErrors(){
	var $content = $( '#mw-content-text' );
    // 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.");
    } );

    // 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 + ".");
            }
        }
    }
}