<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fa">
	<id>https://www.iran-pedia.org/w/index.php?action=history&amp;feed=atom&amp;title=%D9%85%D8%AF%DB%8C%D8%A7%D9%88%DB%8C%DA%A9%DB%8C%3AGadget-metadata.js</id>
	<title>مدیاویکی:Gadget-metadata.js - تاریخچهٔ نسخه‌ها</title>
	<link rel="self" type="application/atom+xml" href="https://www.iran-pedia.org/w/index.php?action=history&amp;feed=atom&amp;title=%D9%85%D8%AF%DB%8C%D8%A7%D9%88%DB%8C%DA%A9%DB%8C%3AGadget-metadata.js"/>
	<link rel="alternate" type="text/html" href="https://www.iran-pedia.org/w/index.php?title=%D9%85%D8%AF%DB%8C%D8%A7%D9%88%DB%8C%DA%A9%DB%8C:Gadget-metadata.js&amp;action=history"/>
	<updated>2026-04-26T10:51:40Z</updated>
	<subtitle>تاریخچهٔ نسخه‌ها برای این صفحه در ویکی</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://www.iran-pedia.org/w/index.php?title=%D9%85%D8%AF%DB%8C%D8%A7%D9%88%DB%8C%DA%A9%DB%8C:Gadget-metadata.js&amp;diff=2298&amp;oldid=prev</id>
		<title>Rootadmin: ۱ نسخه واردشده</title>
		<link rel="alternate" type="text/html" href="https://www.iran-pedia.org/w/index.php?title=%D9%85%D8%AF%DB%8C%D8%A7%D9%88%DB%8C%DA%A9%DB%8C:Gadget-metadata.js&amp;diff=2298&amp;oldid=prev"/>
		<updated>2017-12-02T10:46:52Z</updated>

		<summary type="html">&lt;p&gt;۱ نسخه واردشده&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;fa&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;→ نسخهٔ قدیمی‌تر&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;نسخهٔ ‏۲ دسامبر ۲۰۱۷، ساعت ۱۲:۴۶&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;4&quot; class=&quot;diff-notice&quot; lang=&quot;fa&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(بدون تفاوت)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key fairanpediadb-fa_:diff:1.41:old-2297:rev-2298 --&gt;
&lt;/table&gt;</summary>
		<author><name>Rootadmin</name></author>
	</entry>
	<entry>
		<id>https://www.iran-pedia.org/w/index.php?title=%D9%85%D8%AF%DB%8C%D8%A7%D9%88%DB%8C%DA%A9%DB%8C:Gadget-metadata.js&amp;diff=2297&amp;oldid=prev</id>
		<title>Rootadmin: ۱ نسخه واردشده</title>
		<link rel="alternate" type="text/html" href="https://www.iran-pedia.org/w/index.php?title=%D9%85%D8%AF%DB%8C%D8%A7%D9%88%DB%8C%DA%A9%DB%8C:Gadget-metadata.js&amp;diff=2297&amp;oldid=prev"/>
		<updated>2017-08-29T15:56:34Z</updated>

		<summary type="html">&lt;p&gt;۱ نسخه واردشده&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحهٔ تازه&lt;/b&gt;&lt;/p&gt;&lt;div&gt;/**&lt;br /&gt;
 * Metadata assessment script&lt;br /&gt;
 * Finds the WP 1.0/WikiProject assessment of every article you go to, then&lt;br /&gt;
 * displays that information in the article header.&lt;br /&gt;
 * @author Outriggr - created the script and used to maintain it&lt;br /&gt;
 * @author Pyrospirit - currently maintains and updates the script&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
if (typeof(unsafeWindow) != &amp;#039;undefined&amp;#039;)&lt;br /&gt;
{&lt;br /&gt;
	addOnloadHook = mw.util.addOnloadHook;&lt;br /&gt;
	console = unsafeWindow.console;&lt;br /&gt;
	importStylesheet = unsafeWindow.importStylesheet;&lt;br /&gt;
	mw = unsafeWindow.mw;&lt;br /&gt;
	sajax_init_object = unsafeWindow.sajax_init_object;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Import stylesheet with custom classes for header colors&lt;br /&gt;
importStylesheet(&amp;#039;مدیاویکی:Gadget-metadata.css&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
var assessment = {&lt;br /&gt;
    showOldPeerReviews: false,&lt;br /&gt;
    /**&lt;br /&gt;
     * Starts the script object running. The main function of the script. If the&lt;br /&gt;
     * getMainType() function can find the assessment, it uses that assessment&lt;br /&gt;
     * for the page, parses it, and displays it in the header. Otherwise, it runs&lt;br /&gt;
     * ajaxMain().&lt;br /&gt;
     */&lt;br /&gt;
    init: function init () {&lt;br /&gt;
        if( !$(&amp;#039;#siteSub&amp;#039;).length ) return; //This skin is not compatible with the tool&lt;br /&gt;
        this.callHooks(&amp;#039;init_before&amp;#039;);&lt;br /&gt;
        var initialAssessment = this.checkArticle(); // checks for types visible from article page&lt;br /&gt;
        if (initialAssessment.exists) {&lt;br /&gt;
            this.currentAssessment = initialAssessment;&lt;br /&gt;
            var data = this.talkAssess(this.currentAssessment);&lt;br /&gt;
            this.update(data.newClass, data.slogan, data.info);&lt;br /&gt;
        }&lt;br /&gt;
        else this.ajaxMain(); // proceed to check the talk page&lt;br /&gt;
        this.callHooks(&amp;#039;init_after&amp;#039;);&lt;br /&gt;
    },&lt;br /&gt;
    /**&lt;br /&gt;
     * The main function when an AJAX request is needed to find the assessment.&lt;br /&gt;
     * Creates an AJAX request for the contents of a URL (defaults to the&lt;br /&gt;
     * first section of the article&amp;#039;s talk page), then sends the request. After&lt;br /&gt;
     * getting the requested data back, it finds the assessment information in&lt;br /&gt;
     * the data, then uses and displays that assessment in the header.&lt;br /&gt;
     * @param {String} url - Optional: override the default URL for the request.&lt;br /&gt;
     * @param {Function} stateChange - Optional: override the default request callback&lt;br /&gt;
     * @param optionalArgument - Optional: passed to the stateChange function&lt;br /&gt;
     */&lt;br /&gt;
    ajaxMain: function ajaxMain (url, stateChange, optionalArgument) {&lt;br /&gt;
        if (!url || !/^https?:\/\//i.test(url)) // optional url override&lt;br /&gt;
            url = mw.config.get(&amp;#039;wgServer&amp;#039;) + mw.config.get(&amp;#039;wgScript&amp;#039;) + &amp;#039;?title=بحث:&amp;#039; + encodeURIComponent(mw.config.get(&amp;#039;wgPageName&amp;#039;))&lt;br /&gt;
            + &amp;#039;&amp;amp;action=raw&amp;amp;section=0&amp;#039;;&lt;br /&gt;
        if (typeof stateChange !== &amp;#039;function&amp;#039;) {&lt;br /&gt;
            stateChange = this.stateChange;&lt;br /&gt;
            this.url = url;&lt;br /&gt;
        }&lt;br /&gt;
        var request = sajax_init_object();&lt;br /&gt;
        if (request) {&lt;br /&gt;
            var that = this; // store value of &amp;#039;this&amp;#039;&lt;br /&gt;
            request.onreadystatechange = function () {&lt;br /&gt;
                stateChange.call(that, request, optionalArgument);&lt;br /&gt;
            }&lt;br /&gt;
            request.open(&amp;#039;GET&amp;#039;, url, true);&lt;br /&gt;
            request.send(null);&lt;br /&gt;
        }&lt;br /&gt;
    },&lt;br /&gt;
    /**&lt;br /&gt;
     * This function is passed as a parameter to ajaxMain. It is called each time&lt;br /&gt;
     * this.request updates, and the code inside the conditional runs when the&lt;br /&gt;
     * data is available.&lt;br /&gt;
     */&lt;br /&gt;
    stateChange: function stateChange (request) {&lt;br /&gt;
        if (request.readyState == 4 &amp;amp;&amp;amp; request.status == 200) {&lt;br /&gt;
            this.text = request.responseText;&lt;br /&gt;
            this.request = request;&lt;br /&gt;
            var rating = this.getRating(this.text);&lt;br /&gt;
            this.currentAssessment = this.getAssessment(this.text, rating);&lt;br /&gt;
            var data = this.talkAssess(this.currentAssessment);&lt;br /&gt;
            this.update(data.newClass, data.slogan, data.info);&lt;br /&gt;
            this.callHooks(&amp;#039;onCompletedRequest&amp;#039;);&lt;br /&gt;
        }&lt;br /&gt;
    },&lt;br /&gt;
    /**&lt;br /&gt;
     * Checks for various objects on the article page that indicate a certain&lt;br /&gt;
     * assessment, such as a featured star or disambiguation page notice. If this&lt;br /&gt;
     * function can find the assessment, AJAX is not needed for this page.&lt;br /&gt;
     * @return {Object} assess - the assessment in an easily readable format&lt;br /&gt;
     * @static&lt;br /&gt;
     */&lt;br /&gt;
    checkArticle: function checkArticle () {&lt;br /&gt;
        var assess = {};&lt;br /&gt;
        assess.extra == &amp;#039;&amp;#039;;&lt;br /&gt;
        assess.exists = true;&lt;br /&gt;
        if ($(&amp;#039;#disambig&amp;#039;).length || $(&amp;#039;#disambig_disambigbox&amp;#039;).length&lt;br /&gt;
                || $(&amp;#039;#disambigbox&amp;#039;).length)&lt;br /&gt;
            assess.rating = &amp;#039;dab&amp;#039;;&lt;br /&gt;
        else if ($(&amp;#039;#setindexbox&amp;#039;).length)&lt;br /&gt;
            assess.rating = &amp;#039;setindex&amp;#039;;&lt;br /&gt;
        else if ($(&amp;#039;#contentSub&amp;#039;).length&lt;br /&gt;
                &amp;amp;&amp;amp; $(&amp;#039;#contentSub&amp;#039;).text() == &amp;#039;Redirect page&amp;#039;)&lt;br /&gt;
            assess.rating = &amp;#039;redir&amp;#039;;&lt;br /&gt;
        else if ($(&amp;#039;#ca-talk&amp;#039;).length&lt;br /&gt;
                &amp;amp;&amp;amp; $(&amp;#039;#ca-talk&amp;#039;).hasClass(&amp;#039;new&amp;#039;)) // no talk page&lt;br /&gt;
            assess.rating = &amp;#039;none&amp;#039;;&lt;br /&gt;
        else assess.exists = false; // none of the above, no assessment found&lt;br /&gt;
        return assess;&lt;br /&gt;
    },&lt;br /&gt;
    /**&lt;br /&gt;
     * Searches the provided wikicode for the rating part of an assessment and&lt;br /&gt;
     * returns it as a string.&lt;br /&gt;
     * Note that a higher assessment takes priority, and less-used assessments&lt;br /&gt;
     * such as &amp;quot;list&amp;quot;, &amp;quot;current&amp;quot;, or &amp;quot;future&amp;quot; are used only if nothing else can&lt;br /&gt;
     * be found.&lt;br /&gt;
     * @param {String} text - some wikitext to be searched for assessment info&lt;br /&gt;
     * @return {String} rating - the article&amp;#039;s current assessment&lt;br /&gt;
     */&lt;br /&gt;
    getRating: function getRating (text) {&lt;br /&gt;
        this.callHooks(&amp;#039;getRating_before&amp;#039;);&lt;br /&gt;
        var rating = &amp;#039;none&amp;#039;;&lt;br /&gt;
        if (text.match(/\|\s*(کلاس|درجه)\s*=\s*برگزیده/i))&lt;br /&gt;
            rating = &amp;#039;fa&amp;#039;;&lt;br /&gt;
        else if (text.match(/\|\s*(کلاس|درجه)\s*=\sفهرست برگزیده/i))&lt;br /&gt;
            rating = &amp;#039;fl&amp;#039;;&lt;br /&gt;
        else if (text.match(/\|\s*(کلاس|درجه)\s*=\s*a/i)) {&lt;br /&gt;
            if (text.match(/\|\s*(کلاس|درجه)\s*=\s*خوب|\|\s*currentstatus\s*=\s*(ffa\/)?ga/i))&lt;br /&gt;
                rating = &amp;#039;a/ga&amp;#039;; // A-class articles that are also GA&amp;#039;s&lt;br /&gt;
            else rating = &amp;#039;a&amp;#039;;&lt;br /&gt;
        } else if (text.match(/\|\s*(کلاس|درجه)\s*=\s*خوب|\|\s*currentstatus\s*=\s*(ffa\/)?ga\b|\{\{\s*ga\s*\|/i)&lt;br /&gt;
                   &amp;amp;&amp;amp; !text.match(/\|\s*currentstatus\s*=\s*dga/i))&lt;br /&gt;
            rating = &amp;#039;ga&amp;#039;;&lt;br /&gt;
        else if (text.match(/\|\s*(کلاس|درجه)\s*=\s*متوسط/i))&lt;br /&gt;
            rating = &amp;#039;b&amp;#039;;&lt;br /&gt;
        else if (text.match(/\|\s*(کلاس|درجه)\s*=\s*bplus/i))&lt;br /&gt;
            rating = &amp;#039;bplus&amp;#039;; // used by WP Math&lt;br /&gt;
        else if (text.match(/\|\s*(کلاس|درجه)\s*=\s*ضعیف/i))&lt;br /&gt;
            rating = &amp;#039;c&amp;#039;;&lt;br /&gt;
        else if (text.match(/\|\s*(کلاس|درجه)\s*=\s*ابتدایی/i))&lt;br /&gt;
            rating = &amp;#039;start&amp;#039;;&lt;br /&gt;
        else if (text.match(/\|\s*(کلاس|درجه)\s*=\s*خرد/i))&lt;br /&gt;
            rating = &amp;#039;stub&amp;#039;;&lt;br /&gt;
        else if (text.match(/\|\s*(کلاس|درجه)\s*=\s*فهرست/i))&lt;br /&gt;
            rating = &amp;#039;list&amp;#039;;&lt;br /&gt;
        else if (text.match(/\|\s*class\s*=\s*sl/i))&lt;br /&gt;
            rating = &amp;#039;sl&amp;#039;; // used by WP Plants&lt;br /&gt;
        else if (text.match(/\|\s*(کلاس|درجه)\s*=\s*(ابهام|ابهامu\200cزدایی)/i))&lt;br /&gt;
            rating = &amp;#039;dab&amp;#039;;&lt;br /&gt;
        else if (text.match(/\|\s*class\s*=\s*cur(rent)?/i))&lt;br /&gt;
            rating = &amp;#039;cur&amp;#039;;&lt;br /&gt;
        else if (text.match(/\|\s*class\s*=\s*future/i))&lt;br /&gt;
            rating = &amp;#039;future&amp;#039;;&lt;br /&gt;
        this.callHooks(&amp;#039;getRating_after&amp;#039;);&lt;br /&gt;
        return rating;&lt;br /&gt;
    },&lt;br /&gt;
    /**&lt;br /&gt;
     * Searches the provided wikicode for data on the article&amp;#039;s current and past&lt;br /&gt;
     * featured or good status and returns an object that contains this data&lt;br /&gt;
     * along with some miscellaneous other bits of information.&lt;br /&gt;
     * @param {String} text - some wikitext to be searched for assessment info&lt;br /&gt;
     * @return {Object} assess - the assessment data for the page&lt;br /&gt;
     */&lt;br /&gt;
    getAssessment: function getAssessment (text, rating) {&lt;br /&gt;
        this.callHooks(&amp;#039;getAssessment_before&amp;#039;);&lt;br /&gt;
        var assess = {rating: rating, pageLink: [null, null], extra: [], activeReview: null};&lt;br /&gt;
        var actionNumber = 0, pageLinkFlag = false, tempMatch, articleName;&lt;br /&gt;
&lt;br /&gt;
        // Current nominations (FAC, FLC, or GAN)&lt;br /&gt;
        if ((assess.reg = text.match(/\{\{\s*featured[ _]article[ _]candidates\s*(?:[\|\}]\s*([^\|\}]*))?[^\}]*?\}\}/i))) {&lt;br /&gt;
            assess.extra.push(&amp;#039;fac&amp;#039;);&lt;br /&gt;
            if (assess.reg[1] &amp;amp;&amp;amp; (articleName = this.decodeEntities($.trim(assess.reg[1]))))&lt;br /&gt;
                assess.pageLink[0] = &amp;#039;Wikipedia:Featured_article_candidates\/&amp;#039; + articleName;&lt;br /&gt;
        } else if ((assess.reg = text.match(/\{\{\s*featured[ _]list[ _]candidates\s*(?:[\|\}]\s*([^\|\}]*))?[^\}]*?\}\}/i))) {&lt;br /&gt;
            assess.extra.push(&amp;#039;flc&amp;#039;);&lt;br /&gt;
            if (assess.reg[1] &amp;amp;&amp;amp; (articleName = this.decodeEntities($.trim(assess.reg[1]))))&lt;br /&gt;
                assess.pageLink[0] = &amp;#039;Wikipedia:Featured_list_candidates\/&amp;#039; + articleName;&lt;br /&gt;
        } else if ((assess.reg = text.match(/\{\{\s*ga ?nominee\s*[\|\}][^\}]*\}\}/i))) {&lt;br /&gt;
            assess.extra.push(&amp;#039;gan&amp;#039;);&lt;br /&gt;
            tempMatch = assess.reg[0].match(/\|\s*page\s*=\s*(\d+).*\|\s*status\s*=\s*\w+\b/i);&lt;br /&gt;
            if (tempMatch)&lt;br /&gt;
                assess.pageLink[0] = &amp;#039;Talk:&amp;#039; + this.encodePageName(mw.config.get(&amp;#039;wgPageName&amp;#039;)) + &amp;#039;\/GA&amp;#039; + tempMatch[1];&lt;br /&gt;
        }&lt;br /&gt;
        // Current reviews of a status (FAR, FLRC, or GAR)&lt;br /&gt;
        else if ((assess.reg = text.match(/\{\{\s*featured[ _]article[ _]review\s*(?:[\|\}]\s*([^\|\}]*))?[^\}]*?\}\}/i))) {&lt;br /&gt;
            assess.extra.push(&amp;#039;far&amp;#039;);&lt;br /&gt;
            if (assess.reg[1] &amp;amp;&amp;amp; (articleName = this.decodeEntities($.trim(assess.reg[1]))))&lt;br /&gt;
                assess.pageLink[0] = &amp;#039;Wikipedia:Featured_article_review\/&amp;#039; + articleName;&lt;br /&gt;
        } else if ((assess.reg = text.match(/\{\{\s*featured[ _]list[ _]removal[ _]candidates\s*(?:[\|\}]\s*([^\|\}]*))?[^\}]*?\}\}/i))) {&lt;br /&gt;
            assess.extra.push(&amp;#039;flrc&amp;#039;);&lt;br /&gt;
            if (assess.reg[1] &amp;amp;&amp;amp; (articleName = this.decodeEntities($.trim(assess.reg[1]))))&lt;br /&gt;
                assess.pageLink[0] = &amp;#039;Wikipedia:Featured_list_removal_candidates\/&amp;#039; + articleName;&lt;br /&gt;
        } else if ((assess.reg = text.match(/\{\{\s*gar\/link\s*[\|\}][^\}]*\}\}/i))) {&lt;br /&gt;
            assess.extra.push(&amp;#039;gar&amp;#039;);&lt;br /&gt;
            tempMatch = assess.reg[0].match(/\|\s*GARpage\s*=\s*(\d+).*\|/i);&lt;br /&gt;
            if (tempMatch)&lt;br /&gt;
                assess.pageLink[0] = this.getGARLink(this.encodePageName(mw.config.get(&amp;#039;wgPageName&amp;#039;)), tempMatch[1]);&lt;br /&gt;
        }&lt;br /&gt;
        // Former statuses (FFA, FFL, or DGA)&lt;br /&gt;
        if ((assess.reg = text.match(/\|\s*currentstatus\s*=\s*ffa\b/i))) {&lt;br /&gt;
            tempMatch = text.match(/\|\s*action(\d+)\s*=\s*far\b/gi);&lt;br /&gt;
            actionNumber = tempMatch[tempMatch.length - 1].match(/\d+/);&lt;br /&gt;
            pageLinkFlag = true;&lt;br /&gt;
            assess.extra.push(&amp;#039;ffa&amp;#039;);&lt;br /&gt;
        } else if ((assess.reg = text.match(/\|\s*action(\d+)\s*=\s*far\b/gi))&lt;br /&gt;
                // This checks if the last FAR entry in ArticleHistory resulted in removal.&lt;br /&gt;
                &amp;amp;&amp;amp; text.match(RegExp(&lt;br /&gt;
                    &amp;#039;\\|\\s*action&amp;#039; + assess.reg[assess.reg.length - 1].match(/\d+/)&lt;br /&gt;
                        + &amp;#039;result\\s*=\\s*removed\\b&amp;#039;, &amp;#039;i&amp;#039;&lt;br /&gt;
                )) &amp;amp;&amp;amp; assess.rating.search(/f[al]/i) == -1) {&lt;br /&gt;
            actionNumber = assess.reg[assess.reg.length - 1].match(/\d+/);&lt;br /&gt;
            pageLinkFlag = true;&lt;br /&gt;
            assess.extra.push(&amp;#039;ffa&amp;#039;);&lt;br /&gt;
        } else if ((assess.reg = text.match(/\{\{\s*formerfa2?\b/i))) {&lt;br /&gt;
            assess.extra.push(&amp;#039;ffa&amp;#039;);&lt;br /&gt;
        } else if ((assess.reg = text.match(/\|\s*currentstatus\s*=\s*ffl\b/i))) {&lt;br /&gt;
            assess.extra.push(&amp;#039;ffl&amp;#039;);&lt;br /&gt;
        } else if ((assess.reg = text.match(/\{\{\s*ffl\s*[\|\}]/i))) {&lt;br /&gt;
            assess.extra.push(&amp;#039;ffl&amp;#039;);&lt;br /&gt;
        } else if ((assess.reg = text.match(/\|\s*currentstatus\s*=\s*dga\b/i))) {&lt;br /&gt;
            tempMatch = text.match(/\|\s*action(\d+)\s*=\s*gar\b/gi);&lt;br /&gt;
            actionNumber = tempMatch[tempMatch.length - 1].match(/\d+/);&lt;br /&gt;
            pageLinkFlag = true;&lt;br /&gt;
            assess.extra.push(&amp;#039;dga&amp;#039;);&lt;br /&gt;
        } else if ((assess.reg = text.match(/\{\{\s*d(elisted)?ga\s*[\|\}]/i))) {&lt;br /&gt;
            assess.extra.push(&amp;#039;dga&amp;#039;);&lt;br /&gt;
        }&lt;br /&gt;
        // Former nominations (former FAC, FLC, or GAN)&lt;br /&gt;
        else if ((assess.reg = text.match(/\|\s*action(\d+)\s*=\s*fac\b/gi))&lt;br /&gt;
                &amp;amp;&amp;amp; assess.rating.search(/f[al]/i) == -1) {&lt;br /&gt;
            actionNumber = assess.reg[assess.reg.length - 1].match(/\d+/);&lt;br /&gt;
            pageLinkFlag = true;&lt;br /&gt;
            assess.extra.push(&amp;#039;ffac&amp;#039;);&lt;br /&gt;
        } else if ((assess.reg = text.match(/\|\s*currentstatus\s*=\s*ffac\b/i))) {&lt;br /&gt;
            assess.extra.push(&amp;#039;ffac&amp;#039;);&lt;br /&gt;
        } else if ((assess.reg = text.match(/\{\{\s*fac?(failed|(\-|[ _]\()?contested\)?)\s*[\|\}]/i))) {&lt;br /&gt;
            assess.extra.push(&amp;#039;ffac&amp;#039;);&lt;br /&gt;
        } else if ((assess.reg = text.match(/\|\s*action(\d+)\s*=\s*flc\b/gi))&lt;br /&gt;
                &amp;amp;&amp;amp; assess.rating.search(/f[al]/i) == -1) {&lt;br /&gt;
            actionNumber = assess.reg[assess.reg.length - 1].match(/\d+/);&lt;br /&gt;
            pageLinkFlag = true;&lt;br /&gt;
            assess.extra.push(&amp;#039;fflc&amp;#039;);&lt;br /&gt;
        } else if ((assess.reg = text.match(/\|\s*currentstatus\s*=\s*fflc\b/i))) {&lt;br /&gt;
            assess.extra.push(&amp;#039;fflc&amp;#039;);&lt;br /&gt;
        } else if ((assess.reg = text.match(/\|\s*action(\d+)\s*=\s*gan\b/gi))&lt;br /&gt;
                &amp;amp;&amp;amp; assess.rating.search(/f[al]|(a\/)?ga/i) == -1) {&lt;br /&gt;
            actionNumber = assess.reg[assess.reg.length - 1].match(/\d+/);&lt;br /&gt;
            pageLinkFlag = true;&lt;br /&gt;
            assess.extra.push(&amp;#039;fgan&amp;#039;);&lt;br /&gt;
        } else if ((assess.reg = text.match(/\|\s*currentstatus\s*=\s*fgan\b/i))) {&lt;br /&gt;
            assess.extra.push(&amp;#039;fgan&amp;#039;);&lt;br /&gt;
        } else if ((assess.reg = text.match(/\{\{\s*f(ailed ?)?ga\s*[\|\}]/i))) {&lt;br /&gt;
            assess.extra.push(&amp;#039;fgan&amp;#039;);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // Looks for currently active peer reviews&lt;br /&gt;
        var peerReview;&lt;br /&gt;
        if ((peerReview = text.match(/\{\{\s*peer[_ ]?review\s*\|\s*archive\s*=\s*(\d+)\b/i))) {&lt;br /&gt;
            assess.review = &amp;#039;Wikipedia:Peer_review/&amp;#039; + mw.config.get(&amp;#039;wgPageName&amp;#039;) + &amp;#039;/archive&amp;#039;&lt;br /&gt;
                + peerReview[1];&lt;br /&gt;
            assess.activeReview = true;&lt;br /&gt;
        } else if (this.showOldPeerReviews) {&lt;br /&gt;
            // TODO: Add code for old peer reviews&lt;br /&gt;
        } else assess.review = null;&lt;br /&gt;
&lt;br /&gt;
        // Scans for the link associated with an action in ArticleHistory&lt;br /&gt;
        if (pageLinkFlag) {&lt;br /&gt;
            var linkPattern = RegExp(&amp;#039;\\|\\s*action&amp;#039; + actionNumber + &amp;#039;link\\s*=\\s*([^\\n\\|]+)\\s*\\|&amp;#039;);&lt;br /&gt;
            var linkMatch = text.match(linkPattern);&lt;br /&gt;
            assess.pageLink[1] = linkMatch ? this.decodeEntities(linkMatch[1]) : null;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        assess.exists = true;&lt;br /&gt;
        this.callHooks(&amp;#039;getAssessment_after&amp;#039;);&lt;br /&gt;
        return assess;&lt;br /&gt;
    },&lt;br /&gt;
    /**&lt;br /&gt;
     * Parses an assessment object into the HTML and CSS code needed to update&lt;br /&gt;
     * the article header. If it doesn&amp;#039;t recognize a part of the information&lt;br /&gt;
     * given, it will simply ignore it and mark as unassessed.&lt;br /&gt;
     * @param {Object} assess - assessment information for this article&lt;br /&gt;
     * @return {String} newClass - the CSS class corresponding to its assessment&lt;br /&gt;
     * @return {String} slogan - HTML giving (with a link) the main assessment&lt;br /&gt;
     * @return {String} info - HTML giving (with a link) additional information&lt;br /&gt;
     */&lt;br /&gt;
    talkAssess: function talkAssess (assess) {&lt;br /&gt;
        this.callHooks(&amp;#039;talkAssess_before&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
        var path = mw.config.get(&amp;#039;wgArticlePath&amp;#039;).replace(&amp;#039;$1&amp;#039;, &amp;#039;&amp;#039;);&lt;br /&gt;
        var assessLink = path + &amp;#039;وپ:در&amp;#039;;&lt;br /&gt;
        if (typeof assess.extra === &amp;#039;undefined&amp;#039;) assess.extra = &amp;#039;&amp;#039;;&lt;br /&gt;
        var extra = assess.extra, rating = assess.rating;&lt;br /&gt;
        var pageLink = assess.pageLink ? [this.encodePageName(assess.pageLink[0]),&lt;br /&gt;
            this.encodePageName(assess.pageLink[1])] : [null, null];&lt;br /&gt;
        var peerReview = this.encodePageName(assess.review);&lt;br /&gt;
&lt;br /&gt;
        var info = this.getExtraInfo(extra, pageLink);&lt;br /&gt;
        var peerReviewText = this.addPeerReview(peerReview, assess.activeReview);&lt;br /&gt;
        if (peerReviewText)&lt;br /&gt;
            info.push(peerReviewText);&lt;br /&gt;
        var newClass, slogan;&lt;br /&gt;
&lt;br /&gt;
        if (rating == &amp;#039;a&amp;#039; || rating == &amp;#039;a/ga&amp;#039;) {&lt;br /&gt;
            newClass = &amp;#039;assess-a-text&amp;#039;;&lt;br /&gt;
            slogan = &amp;#039;An &amp;lt;a href=&amp;quot;&amp;#039; + assessLink + &amp;#039;&amp;quot;&amp;gt;A-class&amp;lt;/a&amp;gt; article&amp;#039;;&lt;br /&gt;
            if (rating == &amp;#039;a/ga&amp;#039;) {&lt;br /&gt;
                info.push(&amp;#039;Also a &amp;lt;a href=&amp;quot;&amp;#039; + path + &amp;#039;Wikipedia:Good_Articles&amp;quot;&amp;gt;good article&amp;lt;/a&amp;gt;.&amp;#039;);&lt;br /&gt;
            }&lt;br /&gt;
        } else if (rating == &amp;#039;ga&amp;#039;) {&lt;br /&gt;
            newClass = &amp;#039;assess-ga-text&amp;#039;;&lt;br /&gt;
            slogan = &amp;#039;یک &amp;lt;a href=&amp;quot;&amp;#039; + path + &amp;#039;وپ:نخ&amp;quot;&amp;gt;مقاله خوب&amp;lt;/a&amp;gt;&amp;#039;&lt;br /&gt;
        } else if (rating == &amp;#039;b&amp;#039;) {&lt;br /&gt;
            newClass = &amp;#039;assess-b-text&amp;#039;;&lt;br /&gt;
            slogan = &amp;#039;یک مقاله &amp;lt;a href=&amp;quot;&amp;#039; + assessLink + &amp;#039;&amp;quot;&amp;gt;متوسط &amp;lt;a/&amp;gt;&amp;#039;;&lt;br /&gt;
        } else if (rating == &amp;#039;bplus&amp;#039;) {&lt;br /&gt;
            newClass = &amp;#039;assess-bplus-text&amp;#039;;&lt;br /&gt;
            slogan = &amp;#039;A &amp;lt;a href=&amp;quot;&amp;#039; + path + &amp;#039;Wikipedia:WikiProject_Mathematics/Wikipedia_1.0&amp;#039;&lt;br /&gt;
                + &amp;#039;/Grading_scheme&amp;quot;&amp;gt;B-plus-class&amp;lt;/a&amp;gt; article&amp;#039;;&lt;br /&gt;
        } else if (rating == &amp;#039;c&amp;#039;) {&lt;br /&gt;
            newClass = &amp;#039;assess-c-text&amp;#039;;&lt;br /&gt;
            slogan = &amp;#039;یک مقاله &amp;lt;a href=&amp;quot;&amp;#039; + assessLink + &amp;#039;&amp;quot;&amp;gt;ضعیف&amp;lt;/a&amp;gt;&amp;#039;;&lt;br /&gt;
        } else if (rating == &amp;#039;start&amp;#039;) {&lt;br /&gt;
            newClass = &amp;#039;assess-start-text&amp;#039;;&lt;br /&gt;
            slogan = &amp;#039;یک مقاله &amp;lt;a href=&amp;quot;&amp;#039; + assessLink + &amp;#039;&amp;quot;&amp;gt;ابتدایی&amp;lt;/a&amp;gt;&amp;#039;;&lt;br /&gt;
        } else if (rating == &amp;#039;stub&amp;#039;) {&lt;br /&gt;
            newClass = &amp;#039;assess-stub-text&amp;#039;;&lt;br /&gt;
            slogan = &amp;#039;یک مقاله &amp;lt;a href=&amp;quot;&amp;#039; + assessLink + &amp;#039;&amp;quot;&amp;gt;خرد&amp;lt;/a&amp;gt;&amp;#039;;&lt;br /&gt;
        } else if (rating == &amp;#039;sl&amp;#039;) {&lt;br /&gt;
            newClass = &amp;#039;assess-sl-text&amp;#039;;&lt;br /&gt;
            slogan = &amp;#039;یک مقاله &amp;lt;a href=&amp;quot;&amp;#039; + assessLink + &amp;#039;&amp;quot;&amp;gt;خرد&amp;lt;/a&amp;gt;&amp;#039;;&lt;br /&gt;
        } else if (rating == &amp;#039;list&amp;#039;) {&lt;br /&gt;
            newClass = &amp;#039;assess-list-text&amp;#039;;&lt;br /&gt;
            slogan = &amp;#039;یک &amp;lt;a href=&amp;quot;&amp;#039; + path + &amp;#039;Wikipedia:Lists&amp;quot;&amp;gt;فهرست&amp;lt;/a&amp;gt;&amp;#039;;&lt;br /&gt;
        } else if (rating == &amp;#039;dab&amp;#039;) {&lt;br /&gt;
            newClass = &amp;#039;assess-dab-text&amp;#039;;&lt;br /&gt;
            slogan = &amp;#039;یک &amp;lt;a href=&amp;quot;&amp;#039; + path + &amp;#039;وپ:ابهام&amp;quot;&amp;gt;صفحه ابهام زدایی&amp;lt;/a&amp;gt;&amp;#039;;&lt;br /&gt;
        } else if (rating == &amp;#039;setindex&amp;#039;) {&lt;br /&gt;
            newClass = &amp;#039;assess-setindex-text&amp;#039;;&lt;br /&gt;
            slogan = &amp;#039;A &amp;lt;a href=&amp;quot;&amp;#039; + path + &amp;#039;Wikipedia:Disambiguation#Set_index_articles&amp;quot;&amp;gt;&amp;#039;&lt;br /&gt;
                + &amp;#039;set index article&amp;lt;/a&amp;gt;&amp;#039;;&lt;br /&gt;
        } else if (rating == &amp;#039;redir&amp;#039;) {&lt;br /&gt;
            newClass = &amp;#039;assess-redir-text&amp;#039;;&lt;br /&gt;
            slogan = &amp;#039;یک &amp;lt;a href=&amp;quot;&amp;#039; + path + &amp;#039;راهنما:تغییرمسیر&amp;quot;&amp;gt;صفحه تغییرمسیر&amp;lt;/a&amp;gt;&amp;#039;;&lt;br /&gt;
        } else if (rating == &amp;#039;fl&amp;#039;) {&lt;br /&gt;
            newClass = &amp;#039;assess-fl-text&amp;#039;;&lt;br /&gt;
            slogan = &amp;#039;یک &amp;lt;a href=&amp;quot;&amp;#039; + path + &amp;#039;وپ:فب&amp;quot;&amp;gt;فهرست برگزیده&amp;lt;/a&amp;gt;&amp;#039;;&lt;br /&gt;
        } else if (rating == &amp;#039;fa&amp;#039;) {&lt;br /&gt;
            newClass = &amp;#039;assess-fa-text&amp;#039;;&lt;br /&gt;
            slogan = &amp;#039;یک &amp;lt;a href=&amp;quot;&amp;#039; + path + &amp;#039;وپ:مب&amp;quot;&amp;gt;مقاله برگزیده&amp;lt;/a&amp;gt;&amp;#039;;&lt;br /&gt;
        } else if (rating == &amp;#039;cur&amp;#039;) {&lt;br /&gt;
            newClass = &amp;#039;assess-cur-text&amp;#039;;&lt;br /&gt;
            slogan = &amp;#039;A &amp;lt;a href=&amp;quot;&amp;#039; + path + &amp;#039;Portal:Current_events&amp;quot;&amp;gt;current-class&amp;lt;/a&amp;gt; article&amp;#039;;&lt;br /&gt;
        } else if (rating == &amp;#039;future&amp;#039;) {&lt;br /&gt;
            newClass = &amp;#039;assess-future-text&amp;#039;;&lt;br /&gt;
            slogan = &amp;#039;A &amp;lt;a href=&amp;quot;&amp;#039; + path + &amp;#039;Category:Future-Class_articles&amp;quot;&amp;gt;future-class&amp;lt;/a&amp;gt;&amp;#039;&lt;br /&gt;
                + &amp;#039; article&amp;#039;;&lt;br /&gt;
        } else {&lt;br /&gt;
            newClass = &amp;#039;assess-unassessed-text&amp;#039;;&lt;br /&gt;
            slogan = &amp;#039;یک مقاله &amp;lt;a href=&amp;quot;&amp;#039; + assessLink + &amp;#039;&amp;quot;&amp;gt;درجه‌بندی‌نشده&amp;lt;/a&amp;gt;&amp;#039;;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        this.callHooks(&amp;#039;talkAssess_after&amp;#039;);&lt;br /&gt;
        return {newClass: newClass, slogan: slogan, info: info};&lt;br /&gt;
    },&lt;br /&gt;
    /**&lt;br /&gt;
     * Creates an info string based on the assessment info and a page link.&lt;br /&gt;
     */&lt;br /&gt;
    getExtraInfo: function getExtraInfo (extra, pageLink) {&lt;br /&gt;
        var info = [];&lt;br /&gt;
        var page = this.encodePageName(mw.config.get(&amp;#039;wgPageName&amp;#039;));&lt;br /&gt;
        // Current nominations and reviews&lt;br /&gt;
        if (extra.indexOf(&amp;#039;fac&amp;#039;) != -1) {&lt;br /&gt;
            info.push(this.makeInfoString(&amp;#039;Currently a&amp;#039;, pageLink[0], &amp;#039;Wikipedia:Featured_article_candidates/&amp;#039;&lt;br /&gt;
                + page, &amp;#039;featured article candidate&amp;#039;, null));&lt;br /&gt;
        } else if (extra.indexOf(&amp;#039;flc&amp;#039;) != -1) {&lt;br /&gt;
            info.push(this.makeInfoString(&amp;#039;Currently a&amp;#039;, pageLink[0], &amp;#039;Wikipedia:Featured_list_candidates/&amp;#039;&lt;br /&gt;
                + page, &amp;#039;featured list candidate&amp;#039;, null));&lt;br /&gt;
        } else if (extra.indexOf(&amp;#039;gan&amp;#039;) != -1) {&lt;br /&gt;
            info.push(this.makeInfoString(&amp;#039;Currently a&amp;#039;, pageLink[0], &amp;#039;Wikipedia:Good_article_nominations&amp;#039;,&lt;br /&gt;
                &amp;#039;good article nominee&amp;#039;, null));&lt;br /&gt;
        } else if (extra.indexOf(&amp;#039;far&amp;#039;) != -1) {&lt;br /&gt;
            info.push(this.makeInfoString(&amp;#039;Currently undergoing&amp;#039;, pageLink[0], &amp;#039;Wikipedia:Featured_article_review/&amp;#039;&lt;br /&gt;
                + page, &amp;#039;review&amp;#039;, &amp;#039;of its featured status&amp;#039;));&lt;br /&gt;
        } else if (extra.indexOf(&amp;#039;flrc&amp;#039;) != -1) {&lt;br /&gt;
            info.push(this.makeInfoString(&amp;#039;Currently a&amp;#039;, pageLink[0], &amp;#039;Wikipedia:Featured_list_removal_candidates/&amp;#039;&lt;br /&gt;
                + page, &amp;#039;candidate&amp;#039;, &amp;#039;for removal as a featured list&amp;#039;));&lt;br /&gt;
        } else if (extra.indexOf(&amp;#039;gar&amp;#039;) != -1) {&lt;br /&gt;
            info.push(this.makeInfoString(&amp;#039;&amp;lt;span id=&amp;quot;assess-gar-link&amp;quot;&amp;gt;Currently undergoing a&amp;#039;, pageLink[0],&lt;br /&gt;
                &amp;#039;Wikipedia:Good_article_reassessment&amp;#039;, &amp;#039;good article reassessment&amp;#039;, &amp;#039;&amp;lt;\/span&amp;gt;&amp;#039;, true));&lt;br /&gt;
        }&lt;br /&gt;
        // Past statuses and nominations&lt;br /&gt;
        if (extra.indexOf(&amp;#039;ffa&amp;#039;) != -1) {&lt;br /&gt;
            info.push(this.makeInfoString(&amp;#039;A&amp;#039;, pageLink[1], &amp;#039;Wikipedia:Featured_article_review/&amp;#039; + page,&lt;br /&gt;
                &amp;#039;former&amp;#039;, &amp;#039;featured article&amp;#039;));&lt;br /&gt;
        } else if (extra.indexOf(&amp;#039;ffl&amp;#039;) != -1) {&lt;br /&gt;
            info.push(this.makeInfoString(&amp;#039;A&amp;#039;, pageLink[1], &amp;#039;Wikipedia:Featured_list_removal_candidates/&amp;#039;&lt;br /&gt;
                + page, &amp;#039;former&amp;#039;, &amp;#039;featured list&amp;#039;));&lt;br /&gt;
        } else if (extra.indexOf(&amp;#039;dga&amp;#039;) != -1) {&lt;br /&gt;
            info.push(this.makeInfoString(&amp;#039;A&amp;#039;, pageLink[1], &amp;#039;Wikipedia:Good_article_reassessment&amp;#039;,&lt;br /&gt;
                &amp;#039;delisted&amp;#039;, &amp;#039;good article&amp;#039;));&lt;br /&gt;
        } else if (extra.indexOf(&amp;#039;ffac&amp;#039;) != -1) {&lt;br /&gt;
            info.push(this.makeInfoString(&amp;#039;A former&amp;#039;, pageLink[1], &amp;#039;Wikipedia:Featured_article_candidates/&amp;#039;&lt;br /&gt;
                + page, &amp;#039;featured article candidate&amp;#039;, null));&lt;br /&gt;
        } else if (extra.indexOf(&amp;#039;fflc&amp;#039;) != -1) {&lt;br /&gt;
            info.push(this.makeInfoString(&amp;#039;A former&amp;#039;, pageLink[1], &amp;#039;Wikipedia:Featured_list_candidates/&amp;#039;&lt;br /&gt;
                + page, &amp;#039;featured list candidate&amp;#039;, null));&lt;br /&gt;
        } else if (extra.indexOf(&amp;#039;fgan&amp;#039;) != -1) {&lt;br /&gt;
            info.push(this.makeInfoString(&amp;#039;A former&amp;#039;, pageLink[1], &amp;#039;Wikipedia:Good_article_nominations&amp;#039;,&lt;br /&gt;
                &amp;#039;good article nominee&amp;#039;, null));&lt;br /&gt;
        }&lt;br /&gt;
        return info;&lt;br /&gt;
    },&lt;br /&gt;
    /**&lt;br /&gt;
     * Get the correct link for Good Article reassessments. These things require an&lt;br /&gt;
     * additional AJAX request to determine whether it&amp;#039;s a community or individual&lt;br /&gt;
     * reassessment. The trick is to assume it&amp;#039;s a community reassessment, then&lt;br /&gt;
     * switch the link once the request returns if it&amp;#039;s actually not.&lt;br /&gt;
     */&lt;br /&gt;
    getGARLink: function getGARLink (articleName, reviewNumber) {&lt;br /&gt;
        var communityTitle = &amp;#039;Wikipedia:Good_article_reassessment\/&amp;#039; + articleName + &amp;#039;\/&amp;#039; + reviewNumber,&lt;br /&gt;
            individualTitle = &amp;#039;Talk:&amp;#039; + articleName + &amp;#039;\/GA&amp;#039; + reviewNumber,&lt;br /&gt;
            url = mw.config.get(&amp;#039;wgServer&amp;#039;) + mw.config.get(&amp;#039;wgScriptPath&amp;#039;) + &amp;#039;\/api.php?action=query&amp;amp;titles=&amp;#039;&lt;br /&gt;
                + communityTitle + &amp;#039;|&amp;#039; + individualTitle + &amp;#039;&amp;amp;prop=info&amp;amp;format=json&amp;#039;;&lt;br /&gt;
        this.ajaxMain(url, this.getGARLinkCallback, [communityTitle, individualTitle]);&lt;br /&gt;
        return communityTitle;&lt;br /&gt;
    },&lt;br /&gt;
    /**&lt;br /&gt;
     * Now we have the information back from the API and need to figure out if the&lt;br /&gt;
     * link needs to be changed.&lt;br /&gt;
     */&lt;br /&gt;
    getGARLinkCallback: function getGARLinkCallback (request, altTitles) {&lt;br /&gt;
        if (request.readyState == 4 &amp;amp;&amp;amp; request.status == 200) {&lt;br /&gt;
            var text = request.responseText;&lt;br /&gt;
            if (JSON &amp;amp;&amp;amp; JSON.parse) {&lt;br /&gt;
                var query = JSON.parse(text)[&amp;#039;query&amp;#039;];&lt;br /&gt;
            }&lt;br /&gt;
            else return;&lt;br /&gt;
            var communityTitleNorm = altTitles[0],&lt;br /&gt;
                individualTitleNorm = altTitles[1];&lt;br /&gt;
            var len = query[&amp;#039;normalized&amp;#039;].length;&lt;br /&gt;
            for (var j = 0; j &amp;lt; len; j++) {&lt;br /&gt;
                switch (query[&amp;#039;normalized&amp;#039;][j][&amp;#039;from&amp;#039;]) {&lt;br /&gt;
                    case altTitles[0]:&lt;br /&gt;
                        communityTitleNorm = query[&amp;#039;normalized&amp;#039;][j][&amp;#039;to&amp;#039;];&lt;br /&gt;
                        break;&lt;br /&gt;
                    case altTitles[1]:&lt;br /&gt;
                        individualTitleNorm = query[&amp;#039;normalized&amp;#039;][j][&amp;#039;to&amp;#039;];&lt;br /&gt;
                        break;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            var noCommunityAssessment = false;&lt;br /&gt;
            for (var i = -1; i &amp;gt;= -2; i--) {&lt;br /&gt;
                if (query[&amp;#039;pages&amp;#039;][i] &amp;amp;&amp;amp; typeof query[&amp;#039;pages&amp;#039;][i][&amp;#039;missing&amp;#039;] === &amp;#039;string&amp;#039;) {&lt;br /&gt;
                    if (query[&amp;#039;pages&amp;#039;][i][&amp;#039;title&amp;#039;] == individualTitleNorm) {&lt;br /&gt;
                        // No individual assessment, no need to change anything.&lt;br /&gt;
                        return;&lt;br /&gt;
                    }&lt;br /&gt;
                    else if (query[&amp;#039;pages&amp;#039;][i][&amp;#039;title&amp;#039;] == communityTitleNorm) {&lt;br /&gt;
                        // There&amp;#039;s no community assessment, so flag it.&lt;br /&gt;
                        noCommunityAssessment = true;&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
			var garLink = $(&amp;#039;#assess-gar-link a:first&amp;#039;);&lt;br /&gt;
			if (noCommunityAssessment &amp;amp;&amp;amp; garLink.length)&lt;br /&gt;
			{&lt;br /&gt;
				// There&amp;#039;s an individual assessment but no community assessment. Switch the link.&lt;br /&gt;
				garLink.attr(&amp;#039;href&amp;#039;, mw.config.get(&amp;#039;wgArticlePath&amp;#039;).replace(&amp;#039;$1&amp;#039;, &amp;#039;&amp;#039;) + altTitles[1]);&lt;br /&gt;
			}&lt;br /&gt;
        }&lt;br /&gt;
    },&lt;br /&gt;
    /**&lt;br /&gt;
     * Creates the peer review text from an info string, if a peer review was detected earlier.&lt;br /&gt;
     */&lt;br /&gt;
    addPeerReview: function addPeerReview (peerReview, activeReview) {&lt;br /&gt;
        var reviewText = null, path = mw.config.get(&amp;#039;wgArticlePath&amp;#039;).replace(&amp;#039;$1&amp;#039;, &amp;#039;&amp;#039;);&lt;br /&gt;
        if (peerReview) {&lt;br /&gt;
            reviewText = (activeReview&lt;br /&gt;
                ? &amp;#039;Currently being &amp;lt;a href=&amp;quot;&amp;#039; + path + peerReview + &amp;#039;&amp;quot;&amp;gt;peer reviewed&amp;lt;/a&amp;gt;.&amp;#039;&lt;br /&gt;
                : &amp;#039;Previously &amp;lt;a href=&amp;quot;&amp;#039; + path + peerReview + &amp;#039;&amp;quot;&amp;gt;peer reviewed&amp;lt;/a&amp;gt;.&amp;#039;);&lt;br /&gt;
            reviewText = &amp;#039;&amp;lt;span class=&amp;quot;assess-info-review&amp;quot;&amp;gt;&amp;#039; + reviewText + &amp;#039;&amp;lt;/span&amp;gt;&amp;#039;;&lt;br /&gt;
        }&lt;br /&gt;
        return reviewText;&lt;br /&gt;
    },&lt;br /&gt;
    /**&lt;br /&gt;
     * Updates article header with new assessment information by giving it a new&lt;br /&gt;
     * class (for style information such as color) and altering the tagline below&lt;br /&gt;
     * it to state the assessment found.&lt;br /&gt;
     * @param {String} newClass - the CSS class name added to the article header&lt;br /&gt;
     * @param {String} slogan - italicized text prepended to the tagline, showing&lt;br /&gt;
     *        the article&amp;#039;s main assessment&lt;br /&gt;
     * @param {String} info - additional assessment info appended to the tagline&lt;br /&gt;
     * @static&lt;br /&gt;
     */&lt;br /&gt;
    update: function update (newClass, slogan, info) {&lt;br /&gt;
		var firstHeading = $(&amp;#039;h1:first&amp;#039;);&lt;br /&gt;
		var siteSub = &amp;#039;&amp;lt;span class=&amp;quot;assess-article-rating&amp;quot;&amp;gt;&amp;#039; + slogan + &amp;#039;&amp;lt;\/span&amp;gt; از ویکی‌پدیا، دانشنامهٔ آزاد&amp;#039;;&lt;br /&gt;
		if (info &amp;amp;&amp;amp; info.length &amp;gt; 0) siteSub += &amp;#039;&amp;lt;span class=&amp;quot;assess-info-all&amp;quot;&amp;gt;. &amp;#039; + (typeof info.join === &amp;#039;undefined&amp;#039; ? info.toString() : info.join(&amp;#039; &amp;#039;)) + &amp;#039;&amp;lt;\/span&amp;gt;&amp;#039;;&lt;br /&gt;
		firstHeading.addClass((typeof newClass.join === &amp;#039;undefined&amp;#039; ? newClass.toString() : newClass.join(&amp;#039; &amp;#039;))); // add newClass as additional class(es)&lt;br /&gt;
		$(&amp;#039;#siteSub&amp;#039;).html(siteSub);&lt;br /&gt;
    },&lt;br /&gt;
    /**&lt;br /&gt;
     * Creates a string formatted for the &amp;#039;info&amp;#039; parameter in the update method.&lt;br /&gt;
     * @param start - text at the beginning of the string, before the link&lt;br /&gt;
     * @param pageLink - a link to the target page&lt;br /&gt;
     * @param defLink - the backup page link if !pageLink&lt;br /&gt;
     * @param linkText - the text of the link&lt;br /&gt;
     * @param end - text after the link&lt;br /&gt;
     * @return {String} output - the info string&lt;br /&gt;
     * @static&lt;br /&gt;
     */&lt;br /&gt;
    makeInfoString: function makeInfoString (start, pageLink, defLink, linkText, end, noEndSpace) {&lt;br /&gt;
        var output;&lt;br /&gt;
        var path = mw.config.get(&amp;#039;wgArticlePath&amp;#039;).replace(&amp;#039;$1&amp;#039;, &amp;#039;&amp;#039;);&lt;br /&gt;
        var page = pageLink ? path + pageLink : (defLink ? path + defLink : null);&lt;br /&gt;
        start = start ? start.toString() + &amp;#039; &amp;#039; : &amp;#039;&amp;#039;;&lt;br /&gt;
        linkText = linkText ? linkText.toString() : &amp;#039;&amp;#039;;&lt;br /&gt;
        end = (end ? (noEndSpace ? &amp;#039;&amp;#039; : &amp;#039; &amp;#039;) + end.toString() + &amp;#039;.&amp;#039; : &amp;#039;.&amp;#039;);&lt;br /&gt;
        output = start + (page ? &amp;#039;&amp;lt;a href=&amp;quot;&amp;#039; + page + &amp;#039;&amp;quot;&amp;#039; + (linkText ? &amp;#039;&amp;gt;&amp;#039; : &amp;#039; \/&amp;gt;&amp;#039;) : &amp;#039;&amp;#039;)&lt;br /&gt;
            + linkText + ((page &amp;amp;&amp;amp; linkText) ? &amp;#039;&amp;lt;\/a&amp;gt;&amp;#039; : &amp;#039;&amp;#039;) + end;&lt;br /&gt;
        return output;&lt;br /&gt;
    },&lt;br /&gt;
    /**&lt;br /&gt;
     * Encodes the URL of a Wikipedia page for use in the talkAssess method.&lt;br /&gt;
     * @param {String} inputText - the unencoded full page name&lt;br /&gt;
     * @return {String} outputText - the encoded page name&lt;br /&gt;
     * @static&lt;br /&gt;
     */&lt;br /&gt;
    encodePageName: function encodePageName (inputText) {&lt;br /&gt;
        if (!inputText) return null;&lt;br /&gt;
        var outputText = encodeURIComponent(inputText);&lt;br /&gt;
        while (outputText != null &amp;amp;&amp;amp; outputText.match(/(\%20|\%2F|\%253A)/i)) {&lt;br /&gt;
            outputText = outputText.replace(/\%20/i, &amp;#039;_&amp;#039;); // unescape spaces for readability&lt;br /&gt;
            outputText = outputText.replace(/\%2F/i, &amp;#039;\/&amp;#039;); // %2F must be unescaped&lt;br /&gt;
			outputText = outputText.replace(/\%253A/i, &amp;#039;:&amp;#039;); // &amp;quot;%253A&amp;quot; for special cases such as [[Metroid: Other M]]&lt;br /&gt;
        }&lt;br /&gt;
        return outputText;&lt;br /&gt;
    },&lt;br /&gt;
    callHooks: function callHooks (hook) {&lt;br /&gt;
        for (funct in this[hook]) {&lt;br /&gt;
            this[hook][funct].call(this);&lt;br /&gt;
        }&lt;br /&gt;
    },&lt;br /&gt;
    addHook: function addHook (hook, funct) {&lt;br /&gt;
        if (typeof this[hook] === &amp;#039;undefined&amp;#039;)&lt;br /&gt;
            this[hook] = [];&lt;br /&gt;
        this[hook][this[hook].length] = funct;&lt;br /&gt;
        return this;&lt;br /&gt;
    },&lt;br /&gt;
    /**&lt;br /&gt;
     * Decodes all HTML entities in the string provided.&lt;br /&gt;
     */&lt;br /&gt;
    decodeEntities: function decodeEntities (str) {&lt;br /&gt;
        var t = document.createElement(&amp;quot;textarea&amp;quot;);&lt;br /&gt;
        t.innerHTML = str;&lt;br /&gt;
        return t.value;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Implement Array.indexOf for older browsers that don&amp;#039;t have it&lt;br /&gt;
if (!Array.prototype.indexOf) {&lt;br /&gt;
    Array.prototype.indexOf = function indexOf (elt, from) {&lt;br /&gt;
        var len = this.length &amp;gt;&amp;gt;&amp;gt; 0;&lt;br /&gt;
        var from = Number(arguments[1]) || 0;&lt;br /&gt;
        from = (from &amp;lt; 0) ? Math.ceil(from) : Math.floor(from);&lt;br /&gt;
        if (from &amp;lt; 0)&lt;br /&gt;
            from += len;&lt;br /&gt;
        for (; from &amp;lt; len; from++) {&lt;br /&gt;
            if (from in this &amp;amp;&amp;amp; this[from] === elt)&lt;br /&gt;
                return from;&lt;br /&gt;
        }&lt;br /&gt;
        return -1;&lt;br /&gt;
    };&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Initializes the script on page load&lt;br /&gt;
 */&lt;br /&gt;
if (mw.config.get(&amp;#039;wgNamespaceNumber&amp;#039;) == 0 &amp;amp;&amp;amp; (mw.config.get(&amp;#039;wgAction&amp;#039;) == &amp;#039;view&amp;#039; || mw.config.get(&amp;#039;wgAction&amp;#039;) == &amp;#039;purge&amp;#039;) &amp;amp;&amp;amp; !mw.util.getParamValue(&amp;#039;printable&amp;#039;) &amp;amp;&amp;amp; mw.config.get(&amp;#039;wgPageName&amp;#039;) != &amp;#039;Main_Page&amp;#039; )&lt;br /&gt;
{&lt;br /&gt;
	$(document).ready(function()&lt;br /&gt;
	{&lt;br /&gt;
		assessment.init();&lt;br /&gt;
	});&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Rootadmin</name></author>
	</entry>
</feed>