Utilisateur:Epok/MyMenuPerso.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.// <nowiki>
/////
// Fonctions communes
function buildMenuHeading( title )
{
var divNode = document.createElement( 'div' );
divNode.classList.add("epok-menu-heading");
divNode.classList.add("vector-menu-heading");
var textNode = document.createTextNode( title );
divNode.appendChild( textNode );
return divNode;
}
function buildMenuContent( items )
{
var divNode = document.createElement( 'div' );
divNode.classList.add("epok-menu-content");
divNode.classList.add("vector-menu-content");
var listNode = buildList( items );
divNode.appendChild( listNode );
return divNode;
}
function buildLink( text, link, plain )
{
var linkNode = document.createElement( 'a' );
linkNode.classList.add("epok-link");
if (plain === undefined)
{
linkNode.href = mw.util.getUrl( link );
}
else
{
linkNode.href = link;
}
var spanNode = document.createElement( 'span' );
var textNode = document.createTextNode( text );
spanNode.appendChild( textNode );
linkNode.appendChild( spanNode );
return linkNode;
}
function buildList( items )
{
var listNode = document.createElement( 'ul' );
listNode.classList.add("epok-menu-content-list");
listNode.classList.add("vector-menu-content-list");
for ( var i = 0; i < items.length; i++)
{
var listItem = document.createElement( 'li' );
listItem.classList.add("epok-list-item");
listItem.classList.add("mw-list-item");
if ( Array.isArray(items[i]) )
{
sublist = buildList(items[i]);
sublist.classList.add("epok-sublist");
listItem.appendChild( sublist );
}
else
{
listItem.appendChild( items[i] );
}
listNode.appendChild( listItem );
}
return listNode;
}
function buildMenu( title, contentList, id )
{
var divNode = document.createElement( 'div' );
divNode.classList.add("epok-menu");
divNode.classList.add("vector-menu");
divNode.classList.add("mw-portlet");
divNode.id = 'p-' + id;
var sectionHeading = buildMenuHeading( title );
var sectionContent = buildMenuContent( contentList );
divNode.appendChild( sectionHeading );
divNode.appendChild( sectionContent );
insertMenuBefore(divNode, '#p-navigation');
}
function insertMenuBefore(newMenu, before)
{
var parent = document.querySelector( '#vector-main-menu' );
var nextMenu = document.querySelector( before );
parent.insertBefore(newMenu, nextMenu);
}
/////
// Fonction principale
function monMenuPerso()
{
/////
// Première section
var list1Item1 = buildLink( 'Bulletin des admins', 'Wikipédia:Bulletin des administrateurs' );
var list1Item2 = buildLink( 'Toutes les requêtes', 'Wikipédia:Requête aux administrateurs/Menu' );
var list1Item3Subitem1 = buildLink( 'Page SI', 'Wikipédia:Demande de suppression immédiate' );
var list1Item3Subitem2 = buildLink( 'Catégorie SI', 'Catégorie:Wikipédia:Suppression immédiate demandée' );
var list1Item3Subitem3 = buildLink( 'Renommages', 'Wikipédia:Demande de renommage' );
buildMenu( 'Liens d\'administration',
[
list1Item1,
list1Item2,
[ list1Item3Subitem1, list1Item3Subitem2, list1Item3Subitem3 ]
],
'admin'
);
/////
// Deuxième section
var list2Item1 = buildLink( 'Pages spéciales', 'Spécial:Pages spéciales' );
var list2Item2Subitem1 = buildLink( 'Modifications récentes', 'Spécial:Modifications récentes' );
var list2Item2Subitem2 = buildLink( 'Journaux', 'Spécial:Journal' );
var list2Item2Subitem3 = buildLink( 'Catégories demandées', 'https://fr.wikipedia.org/w/index.php?title=Sp%C3%A9cial:Cat%C3%A9gories_demand%C3%A9es&limit=500', 1 );
var list2Item2Subitem4 = buildLink( 'Catégories inutilisées', 'https://fr.wikipedia.org/w/index.php?title=Sp%C3%A9cial:Cat%C3%A9gories_inutilis%C3%A9es&limit=500', 1 );
var list2Item2Subitem5 = buildLink( 'Erreurs de lint', 'Spécial:LintErrors' );
var list2Item3 = buildLink( 'Débat d\'admissibilité', 'Wikipédia:Débat d\'admissibilité' );
var list2Item4 = buildLink( 'Requête bot', 'Wikipédia:Bot/Requêtes' );
var list2Item5 = buildLink( 'Maintenance modèles', 'Projet:Modèle/Maintenance/Listes' );
var list2Item6Subitem1 = buildLink( 'Maintenance palettes', 'Projet:Palette/Maintenance/Listes' );
var list2Item6Subitem2 = buildLink( 'Suivi BU', 'https://fr.wikipedia.org/w/index.php?hidemyself=1&hidebots=1&hidecategorization=1&hideWikibase=1&target=Cat%C3%A9gorie%3AProjet%3ABo%C3%AEte_utilisateur%2FMod%C3%A8les_li%C3%A9s&limit=500&days=30&enhanced=1&title=Sp%C3%A9cial:Suivi_des_liens&hideliu=0&hideanons=0&hidepatrolled=0&hideunpatrolled=0&urlversion=2', 1 );
var list2Item6Subitem3 = buildLink( 'BU inutilisées', 'Projet:Boîte Utilisateur/BU inutilisées' );
var list2Item6Subitem4 = buildLink( 'BU à categ', 'Projet:Boîte Utilisateur/BU non catégorisées' );
var list2Item7 = buildLink( 'Le bistro', 'Wikipédia:Le Bistro' );
var list2Item8 = buildLink( 'Faire un don', 'https://donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&utm_medium=sidebar&utm_campaign=C13_fr.wikipedia.org&uselang=fr', 1 );
buildMenu( 'Liens généraux',
[
list2Item1,
[ list2Item2Subitem1, list2Item2Subitem2, list2Item2Subitem3, list2Item2Subitem4, list2Item2Subitem5 ],
list2Item3,
list2Item4,
list2Item5,
[ list2Item6Subitem1, list2Item6Subitem2, list2Item6Subitem3, list2Item6Subitem4 ],
list2Item7,
list2Item8
],
'general'
);
/////
// Troisième section
var list3Item1 = buildLink( 'Todo', 'Utilisateur:Epok/À faire' );
var list3Item2 = buildLink( 'Utile', 'Utilisateur:Epok/Utile' );
var list3Item3 = buildLink( 'JS', 'Utilisateur:Epok/common.js' );
var list3Item3Subitem1 = buildLink( 'Menu perso', 'Utilisateur:Epok/MyMenuPerso.js' );
var list3Item3Subitem2 = buildLink( 'Suppression Deluxe', 'Utilisateur:Epok/MySuppressionDeluxe.js' );
var list3Item3Subitem3 = buildLink( 'Sous-pages', 'Utilisateur:Epok/MySousPages.js' );
var list3Item3Subitem4 = buildLink( 'Charset Links', 'Utilisateur:Epok/MyCharsetsLinks.js' );
var list3Item4 = buildLink( 'CSS', 'Utilisateur:Epok/common.css' );
buildMenu( 'Liens perso',
[
list3Item1,
list3Item2,
list3Item3,
[ list3Item3Subitem1, list3Item3Subitem2, list3Item3Subitem3, list3Item3Subitem4 ],
list3Item4
],
'perso'
);
}
/////
// Chargement de la fonction principale une fois la page chargée.
$(function()
{
mw.loader.using( ['mediawiki.util'] , monMenuPerso() );
}
);
// </nowiki>