User:Nihiltres/assesslinks.js

/** * Optional component for metadata script (MediaWiki:Gadget-metadata.js). * This script adds a link to the toolbox. When clicked, the script finds the * assessment of all articles linked from the current article and colors the * links accordingly. * @author Pyrospirit - Created the original script * @author Nihiltres - Rewrote it to match his update to the gadget */

mw.loader.using("ext.gadget.metadata", function {

assessment.links = (function {        var assessmentLinksObj = {},            //internal shortcuts            al = assessmentLinksObj,            am = assessment.methods;

/**        * Assesses all the links on the page, making an AJAX query for each. */       al.assessLinks = function  { var unassessedClass = "assess-wikilink " + am.renderAssessment({rating: "none"}).newClass, rawArticlePath = mw.config.get("wgArticlePath").replace("$1", "");

$("#bodyContent a[href^=\"" + rawArticlePath + "\"]").each(function (i, e) {               var url = $(e).attr("href").replace(/#.*/, ""); //Bypass section links                if (url === "" || //empty string as the result of stripping out an internal section link url === mw.config.get("wgPageName").replace(/(.*)/, mw.config.get("wgArticlePath")) || //Link to the current page mw.Title.newFromText(decodeURIComponent(url.replace(rawArticlePath, ""))).namespace !== 0 //Link to non-mainspace page ) {                   return true; //go back to the loop                }                $.ajax({ url: url.replace(                       rawArticlePath,                        mw.config.get("wgScript") + "?title=Talk:"                    ) + "&action=raw&section=0", cache: true, async: true, dataType: "text", success: function (responseText) { $(e).addClass("assess-wikilink " + am.renderAssessment(am.getAssessment(responseText)).newClass); },                   error: function (jqxhr) { if (jqxhr.status === 404) { $(e).addClass(unassessedClass); }                   }                });            });        };

/**        * Adds a link to activate the main assessLinks function. */       al.addToolboxLink = function  { mw.util.addPortletLink(               "p-tb",                "#",                "Assess links",                "t-assess-article-links",                "Find the assessment of all articles linked and colour the links"            ); $("#t-assess-article-links").click(assessment.links.assessLinks); };

/**        * Runs the part that adds the tab, and anything else necessary. * Slightly redundant, but consistent form is nice. */       al.init = function  { al.addToolboxLink; };

return assessmentLinksObj; });

//Initializes the script on page load. $(assessment.links.init); mw.loader.load("//en.wikipedia.org/w/index.php?title=User:Pyrospirit/metadata/assesslinks.css&action=raw&ctype=text/css", "text/css");

});