MediaWiki:Gadget-sister-projects.js: Difference between revisions

From Path of Exile 2 Wiki
Jump to navigation Jump to search
(Created page with "→‎global mw: →‎jshint strict:true, jquery:true, esversion:5, bitwise:true, curly:true, eqeqeq:true, undef:true, latedef:true, trailingcomma:true: ( function () { 'use strict'; →‎Fires when wiki content is added.: mw.hook('wikipage.content').add( function ($wikipageContent) { var namespace = mw.config.get('wgNamespaceNumber'); →‎* Add menu tab: var addTab = function (project, interwiki, page) { var url = mw.util.getUrl(interwi...")
 
(This timing should produce more reliable results)
 
(2 intermediate revisions by the same user not shown)
Line 5: Line 5:
'use strict';
'use strict';


/* Fires when wiki content is added. */
/* Wait for mediawiki.util and DOM ready */
mw.hook('wikipage.content').add( function ($wikipageContent) {
$.when( mw.loader.using(['mediawiki.util',]), $.ready ).then( function () {
 
     var namespace = mw.config.get('wgNamespaceNumber');
     var namespace = mw.config.get('wgNamespaceNumber');


Line 15: Line 14:
     var addTab = function (project, interwiki, page) {
     var addTab = function (project, interwiki, page) {
         var url = mw.util.getUrl(interwiki + ':' + page);
         var url = mw.util.getUrl(interwiki + ':' + page);
        if ( namespace === -1 || namespace === 8 ) {
            url += window.location.search; // include query string
        }
         var tooltip = 'View this page on ' + project;
         var tooltip = 'View this page on ' + project;
         if ( namespace === 0 ) {
         if ( namespace === 0 ) {
Line 28: Line 30:
         );
         );
         link.classList.add('sister-tab');
         link.classList.add('sister-tab');
     }
     };


     if ( namespace === -1 || namespace === 8 ) {
     if ( namespace === -1 || namespace === 8 ) {
Line 50: Line 52:
         }
         }
     }
     }
} );
} );


}() );
}() );

Latest revision as of 01:53, 14 October 2024

/* global mw */
/* jshint strict:true, jquery:true, esversion:5, bitwise:true, curly:true, eqeqeq:true, undef:true, latedef:true, trailingcomma:true */

( function () {
'use strict';

/* Wait for mediawiki.util and DOM ready */
$.when( mw.loader.using(['mediawiki.util',]), $.ready ).then( function () {
    var namespace = mw.config.get('wgNamespaceNumber');

    /*
     * Add menu tab
     */
    var addTab = function (project, interwiki, page) {
        var url = mw.util.getUrl(interwiki + ':' + page);
        if ( namespace === -1 || namespace === 8 ) {
            url += window.location.search; // include query string
        }
        var tooltip = 'View this page on ' + project;
        if ( namespace === 0 ) {
            // Article namespace
            tooltip = 'View this article on ' + project;
        }
        var link = mw.util.addPortletLink(
        'p-namespaces',
            url,
            project,
            'ca-sister-' + interwiki,
            tooltip
        );
        link.classList.add('sister-tab');
    };

    if ( namespace === -1 || namespace === 8 ) {
        // Add tabs on Special and MediaWiki pages
        var page = mw.config.get('wgPageName');
        addTab('Path of Exile Wiki', 'poewiki', page);
    } else {
        // Add tabs from Template:Sister
        var sisterData = document.getElementsByClassName('js-sister-data');
        if (sisterData.length) {
            for ( var i = 0; i < sisterData.length; i++ ) {
                var data = sisterData[i].children;
                for ( var j = 0; j < data.length; j++ ) {
                    addTab(
                        data[j].dataset.project,
                        data[j].dataset.interwiki,
                        data[j].dataset.page
                    );
                }
            }
        }
    }
} );

}() );