<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.qa2triots.win/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3ACommon.js</id>
	<title>MediaWiki:Common.js - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.qa2triots.win/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3ACommon.js"/>
	<link rel="alternate" type="text/html" href="https://wiki.qa2triots.win/index.php?title=MediaWiki:Common.js&amp;action=history"/>
	<updated>2026-07-29T00:09:10Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://wiki.qa2triots.win/index.php?title=MediaWiki:Common.js&amp;diff=308&amp;oldid=prev</id>
		<title>Yoot: Created page with &quot;/* Any JavaScript here will be loaded for all users on every page load. */  // makes admins red mw.loader.using( [ &#039;mediawiki.api&#039;, &#039;mediawiki.util&#039; ] ).then( function () {     &#039;use strict&#039;;      var api = new mw.Api();     var adminPromise = null;      function normalizeUsername( username ) {         return username             .replace( /_/g, &#039; &#039; )             .trim()             .toLowerCase();     }      function fetchAdministrators( continuation, names ) {         v...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.qa2triots.win/index.php?title=MediaWiki:Common.js&amp;diff=308&amp;oldid=prev"/>
		<updated>2026-06-07T11:59:35Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;&lt;span class=&quot;autocomment&quot;&gt;Any JavaScript here will be loaded for all users on every page load.: &lt;/span&gt;  // makes admins red mw.loader.using( [ &amp;#039;mediawiki.api&amp;#039;, &amp;#039;mediawiki.util&amp;#039; ] ).then( function () {     &amp;#039;use strict&amp;#039;;      var api = new mw.Api();     var adminPromise = null;      function normalizeUsername( username ) {         return username             .replace( /_/g, &amp;#039; &amp;#039; )             .trim()             .toLowerCase();     }      function fetchAdministrators( continuation, names ) {         v...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;/* Any JavaScript here will be loaded for all users on every page load. */&lt;br /&gt;
&lt;br /&gt;
// makes admins red&lt;br /&gt;
mw.loader.using( [ &amp;#039;mediawiki.api&amp;#039;, &amp;#039;mediawiki.util&amp;#039; ] ).then( function () {&lt;br /&gt;
    &amp;#039;use strict&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
    var api = new mw.Api();&lt;br /&gt;
    var adminPromise = null;&lt;br /&gt;
&lt;br /&gt;
    function normalizeUsername( username ) {&lt;br /&gt;
        return username&lt;br /&gt;
            .replace( /_/g, &amp;#039; &amp;#039; )&lt;br /&gt;
            .trim()&lt;br /&gt;
            .toLowerCase();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function fetchAdministrators( continuation, names ) {&lt;br /&gt;
        var params = {&lt;br /&gt;
            action: &amp;#039;query&amp;#039;,&lt;br /&gt;
            list: &amp;#039;allusers&amp;#039;,&lt;br /&gt;
            augroup: &amp;#039;sysop&amp;#039;,&lt;br /&gt;
            aulimit: &amp;#039;max&amp;#039;,&lt;br /&gt;
            formatversion: 2&lt;br /&gt;
        };&lt;br /&gt;
&lt;br /&gt;
        if ( continuation ) {&lt;br /&gt;
            Object.keys( continuation ).forEach( function ( key ) {&lt;br /&gt;
                params[ key ] = continuation[ key ];&lt;br /&gt;
            } );&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        return api.get( params ).then( function ( data ) {&lt;br /&gt;
            data.query.allusers.forEach( function ( user ) {&lt;br /&gt;
                names.add( normalizeUsername( user.name ) );&lt;br /&gt;
            } );&lt;br /&gt;
&lt;br /&gt;
            if ( data.continue ) {&lt;br /&gt;
                return fetchAdministrators( data.continue, names );&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            return names;&lt;br /&gt;
        } );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function getAdministrators() {&lt;br /&gt;
        if ( !adminPromise ) {&lt;br /&gt;
            adminPromise = fetchAdministrators( null, new Set() );&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        return adminPromise;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function getLinkPageTitle( link ) {&lt;br /&gt;
        try {&lt;br /&gt;
            var url = new URL( link.href, window.location.href );&lt;br /&gt;
            var queryTitle = url.searchParams.get( &amp;#039;title&amp;#039; );&lt;br /&gt;
&lt;br /&gt;
            if ( queryTitle ) {&lt;br /&gt;
                return queryTitle.replace( /_/g, &amp;#039; &amp;#039; );&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            var articlePath = mw.config.get( &amp;#039;wgArticlePath&amp;#039; );&lt;br /&gt;
            var pieces = articlePath.split( &amp;#039;$1&amp;#039; );&lt;br /&gt;
&lt;br /&gt;
            if (&lt;br /&gt;
                pieces.length === 2 &amp;amp;&amp;amp;&lt;br /&gt;
                url.pathname.indexOf( pieces[ 0 ] ) === 0 &amp;amp;&amp;amp;&lt;br /&gt;
                (&lt;br /&gt;
                    pieces[ 1 ] === &amp;#039;&amp;#039; ||&lt;br /&gt;
                    url.pathname.slice( -pieces[ 1 ].length ) === pieces[ 1 ]&lt;br /&gt;
                )&lt;br /&gt;
            ) {&lt;br /&gt;
                var encodedTitle;&lt;br /&gt;
&lt;br /&gt;
                if ( pieces[ 1 ] ) {&lt;br /&gt;
                    encodedTitle = url.pathname.slice(&lt;br /&gt;
                        pieces[ 0 ].length,&lt;br /&gt;
                        -pieces[ 1 ].length&lt;br /&gt;
                    );&lt;br /&gt;
                } else {&lt;br /&gt;
                    encodedTitle = url.pathname.slice( pieces[ 0 ].length );&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                return decodeURIComponent( encodedTitle ).replace( /_/g, &amp;#039; &amp;#039; );&lt;br /&gt;
            }&lt;br /&gt;
        } catch ( error ) {&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        return ( link.getAttribute( &amp;#039;title&amp;#039; ) || &amp;#039;&amp;#039; ).replace( /_/g, &amp;#039; &amp;#039; );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function getUsernameFromLink( link ) {&lt;br /&gt;
        var pageTitle = getLinkPageTitle( link );&lt;br /&gt;
        var namespaces = mw.config.get( &amp;#039;wgFormattedNamespaces&amp;#039; );&lt;br /&gt;
        var userNamespace = namespaces[ 2 ] || &amp;#039;User&amp;#039;;&lt;br /&gt;
        var prefix = userNamespace + &amp;#039;:&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
        if (&lt;br /&gt;
            pageTitle.slice( 0, prefix.length ).toLowerCase() !==&lt;br /&gt;
            prefix.toLowerCase()&lt;br /&gt;
        ) {&lt;br /&gt;
            return null;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        return pageTitle&lt;br /&gt;
            .slice( prefix.length )&lt;br /&gt;
            .split( &amp;#039;#&amp;#039; )[ 0 ];&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function markAdministratorLinks( root ) {&lt;br /&gt;
        var $root = root &amp;amp;&amp;amp; root.jquery ? root : $( root || document );&lt;br /&gt;
&lt;br /&gt;
        getAdministrators().then( function ( administrators ) {&lt;br /&gt;
            var $links = $root&lt;br /&gt;
                .find( &amp;#039;a.mw-userlink&amp;#039; )&lt;br /&gt;
                .add( $root.filter( &amp;#039;a.mw-userlink&amp;#039; ) );&lt;br /&gt;
&lt;br /&gt;
            $links.each( function () {&lt;br /&gt;
                var username = getUsernameFromLink( this );&lt;br /&gt;
&lt;br /&gt;
                if (&lt;br /&gt;
                    username &amp;amp;&amp;amp;&lt;br /&gt;
                    administrators.has( normalizeUsername( username ) )&lt;br /&gt;
                ) {&lt;br /&gt;
                    this.classList.add( &amp;#039;mw-admin-name&amp;#039; );&lt;br /&gt;
                }&lt;br /&gt;
            } );&lt;br /&gt;
        } );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    $( function () {&lt;br /&gt;
        markAdministratorLinks( document );&lt;br /&gt;
    } );&lt;br /&gt;
&lt;br /&gt;
    mw.hook( &amp;#039;wikipage.content&amp;#039; ).add( markAdministratorLinks );&lt;br /&gt;
} );&lt;/div&gt;</summary>
		<author><name>Yoot</name></author>
	</entry>
</feed>