MediaWiki:Gadget-SommaireCompactCategorieDeluxe.js
Apparence
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) ;
Firefox (sur GNU/Linux) / 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) + ' — ' + 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>