Aller au contenu

Utilisateur:Epok/MyMenuPerso.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) ;

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>