MediaWiki:Gadget-CadreOnglets.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.
/*
 * Fonctionnement du [[Modèle:Cadre à onglets]]
 *
 * Modèle implanté par User:Peleguer de https://ca.wikipedia.org
 * Actualisé par User:Joanjoc de https://ca.wikipedia.org
 * Traduction et adaptation User:Antaya de https://fr.wikipedia.org
 * Indépendance de classes CSS et nettoyage par User:Nemoi de https://fr.wikipedia.org
 */

/* globals $ */
/* exported CadreOnglets_Init */

(function () {

	function VoirOnglet(e) {
		e.preventDefault();

		var match = /^(classeur\d+)onglet(\d+)$/.exec(this.id);
		var nomClasseur = match[1];
		var indexOnglet = parseInt(match[2]);

		var Classeur = $('#' + nomClasseur);

		var PremierBoutonNonSel = Classeur.find('.ongletBoutonNonSel')[0];
		var rule1 = PremierBoutonNonSel.style.backgroundColor;
		var rule2 = PremierBoutonNonSel.style.borderColor; // $('.ongletBoutonNonSel').css("border-color"); ne fonctionne pas car c'est un shorthand, qui n'est pas supporté par jQuery

		var Onglets = Classeur.children("div").eq(0).children("div");

		for ( var j = 0; j < Onglets.length; j++) {
			var Onglet = Onglets[j];
			var Feuillet = document.getElementById(nomClasseur + "feuillet" + j);

			if (Feuillet && indexOnglet === j) {
				Feuillet.style.display = "block";
				Feuillet.style.visibility = "visible";
				Onglet.classList.remove("ongletBoutonNonSel");
				Onglet.classList.add("ongletBoutonSel");
				Onglet.style.cursor="default";
				Onglet.style.backgroundColor="inherit";
				Onglet.style.borderTopColor="inherit"; // propriété par propriété sinon Chrome/Chromium se loupe
				Onglet.style.borderRightColor="inherit";
				Onglet.style.borderBottomColor="inherit";
				Onglet.style.borderLeftColor="inherit";
			} else {
				Feuillet.style.display = "none";
				Feuillet.style.visibility = "hidden";
				Onglet.classList.remove("ongletBoutonSel");
				Onglet.classList.add("ongletBoutonNonSel");
				Onglet.style.cursor="pointer";
				Onglet.style.backgroundColor=rule1;
				Onglet.style.borderColor=rule2;
			}
		}
	}

	function Init($content) {
		var i, j, Onglet, Feuillet;
		var Classeurs = $content.find('.cadre_a_onglets');
		for ( i = 0; i < Classeurs.length; i++ ) {
			var Classeur = Classeurs[i];

			Classeur.id = "classeur" + i;

			var vOgIni = -1; // pour connaître l’onglet renseigné

			var Onglets = $(Classeur).children("div").eq(0).children("div");
			var Feuillets = $(Classeur).children("div").eq(1).children("div");

			for ( j = 0; j < Onglets.length; j++ ) {
					Onglet = Onglets[j];
					Feuillet = Feuillets[j];

					Onglet.id = "classeur" + i + "onglet" + j;
					Feuillet.id = "classeur" + i + "feuillet" + j;
					Onglet.onclick = VoirOnglet;

					if ( Onglet.classList.contains( 'ongletBoutonSel' ) ) {
						vOgIni=j;
					}
			}

			// inutile sauf dans le cas où l’onglet de départ est *mal* renseigné
			if (vOgIni === -1) {
					vOgIni = Math.floor((Onglets.length)*Math.random());
					document.getElementById("classeur"+i+"feuillet"+vOgIni).style.display = "block";
					document.getElementById("classeur"+i+"feuillet"+vOgIni).style.visibility = "visible";
					var vBtElem = document.getElementById("classeur"+i+"onglet"+vOgIni);
					Onglet.classList.remove("ongletBoutonNonSel");
					Onglet.classList.add("ongletBoutonSel");
					vBtElem.style.cursor="default";
					vBtElem.style.backgroundColor="inherit";
					vBtElem.style.borderTopColor="inherit"; // propriété par propriété sinon Chrome/Chromium se loupe
					vBtElem.style.borderRightColor="inherit";
					vBtElem.style.borderBottomColor="inherit";
					vBtElem.style.borderLeftColor="inherit";
			}
		}
	}

	// point d'accès à la fonction d'initialisation, utilisé par [[MediaWiki:Common.js]]
	window.CadreOnglets_Init = Init;

})();