MediaWiki:Gadget-SommaireCompactCategorieDeluxe.js

Une page de Wikipédia, l'encyclopédie libre.
Note : après avoir enregistré la page, vous devrez forcer le rechargement complet du cache de votre navigateur pour voir les changements.

Mozilla / Firefox / Konqueror / Safari : maintenez la touche Majuscule (Shift) en cliquant sur le bouton Actualiser (Reload) ou pressez Maj-Ctrl-R (Cmd-R sur Apple Mac) ;

Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5.
//{{Catégorisation JS|SommaireCompactCategorieDeluxe}}
//<source lang=javascript>//<pre><nowiki>

// Associated template: [[Modèle:Boîte des catégories]]

/* jshint scripturl: true */
/* globals mw, $ */

if (mw.config.get('wgNamespaceNumber') === 14 && mw.config.get('wgAction') === 'view') {
    mw.loader.using('mediawiki.util', function () {
        'use strict';

        var Letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'];

        $(function ($) {
            $('.CategoryIndex').each(function () {
                SommaireCompactCategorieDeluxe(this);
            });
        });

        function SommaireCompactCategorieDeluxe(Sommaire) {
            var FirstLetterFrom = false;
            var From = GetFrom(document.URL);
            if (From) FirstLetterFrom = From[0];
            $(Sommaire).find('a').each(function (_, Link) {
                var Letter = GetFrom(Link.href);
                if (!Letter) return;
                Link.href = 'javascript:';
                Link.onclick = function (e) {
                    e.preventDefault();
                    ShowMenu(Letter, From, Sommaire);
                };
                Link.target = '';
                Link.className = '';
                if (Letter === FirstLetterFrom) Link.style.color = 'black';
            });
            if (FirstLetterFrom) ShowMenu(FirstLetterFrom, From, Sommaire);
        }

        function ShowMenu(Letter, From, Sommaire) {
            // Remove possible previous menu
            $(Sommaire).find('.SommaireIndexBis').remove();

            var NewLine = document.createElement('span');
            NewLine.className = 'SommaireIndexBis';
            var LineContent = CreateLinks(Letter, From);
            NewLine.innerHTML = '<br>' + LineContent;
            Sommaire.appendChild(NewLine);
        }

        function GetFrom(url) {
            var from = new URL(url).searchParams.get('from');
            if (from) {
                return from.substring(0, 2);
            } else {
                return false;
            }
        }

        function CreateLinks(Letter, From) {
            var TDContent = [];
            for (var a = 0, l = Letters.length; a < l; ++a) {
                TDContent.push(CreateLink(Letter + Letters[a], From));
            }
            return CreateLink(Letter, From) + ' &nbsp;—&nbsp; ' + TDContent.join(' · ');
        }

        function CreateLink(From, CurrentFrom) {
            if (From === CurrentFrom) {
                return '<a class="mw-selflink selflink">' + From + '</a>';
            } else {
                return '<a href="' + mw.html.escape(mw.util.getUrl(null, {from: From})) + '">' + From + '</a>';
            }
        }

    });
}

//</nowiki></pre></source>