« MediaWiki:Common.js » : différence entre les versions

De Wiki Out Of Mana
Aller à la navigation Aller à la recherche
Aucun résumé des modifications
Aucun résumé des modifications
 
(5 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
console.log("Common.js chargé !");
mw.hook('wikipage.content').add(function ($content) {
 
     console.log("Script des menus déroulants chargé !");
mw.loader.using('jquery', function() {
   
     console.log("jQuery est bien chargé !");
    $content.find(".menu-deroulant-titre").each(function () {
});
        $(this).on("click", function () {
 
            var $target = $(this).next(".menu-deroulant-contenu");
/* Tout JavaScript ici sera chargé avec chaque page accédée par n’importe quel utilisateur. */
            if ($target.length) {
 
                $target.slideToggle(); // Animation fluide
/* Le tri des tableaux via la classe CSS sortable est naïf et les lettres accentuées sont triées après la lettre Z.
                $(this).toggleClass("menu-ouvert");
  Cette petite ligne corrige ça. */
            }
mw.config.set('tableSorterCollation', {'à': 'a', 'â': 'a', 'ä': 'a', 'ç': 'c', 'é': 'e', 'è': 'e', 'ê': 'e', 'ë': 'e',
        });
'ô': 'o', 'ö': 'o', 'î': 'i', 'ï': 'i', 'û': 'u', 'ü': 'u'});
    });
 
 
/**
* Vector HeadAnchors
* @source https://www.mediawiki.org/wiki/MediaWiki:Gadget-vector-headanchor.js
* @revision 2015-03-07
*
* @license http://krinkle.mit-license.org/
* @author Timo Tijhof, 2013–2015
*/
( function ( $ ) {
$( '.mw-headline' ).each( function ( i, el ) {
var id = el.id,
$headline = $( el ),
$header = $headline.parent();
if ( !id || $header.find( '.mw-headline-anchor,.mw-headline-headanchor').length ) {
return;
}
$headline.removeAttr('id');
$header.addClass( 'mw-header' ).prepend(
$( '<a>' ).prop({
id: id,
href: '#' + id,
title: 'Lien vers cette section',
className: 'mw-headline-headanchor'
})
);
} );
}( jQuery ) );
 
 
/* collapsible/collapsed avec MediaWiki */
$( '.collapsible, .enroulable' ).addClass( 'mw-collapsible' );
$( '.collapsed, .enroulé' ).addClass( 'mw-collapsed' );
 
/* alias français */
$( '.triable' ).addClass( 'sortable' );
 
 
/**
* Bouton pour afficher/masquer un contenu.
* Idée de départ : http://encyclopediadramatica.com/MediaWiki:Common.js par WhiteMystery (misterioblanco@gmail.com)
* Créateur : [[Utilisateur:Misdre]]
* Licence : WTFPL ou Creative Commons Paternité 2.5 ou suivantes
* Plus d'informations ici : [[Aide:Afficher et masquer du contenu]]
*/
 
// todo :
// remettre le display initial
// -> il faudrait conserver toutes les valeures initiales de display (mais ça marche déjà très bien)
 
function boutonsAfficherMasquer() {
var balisesBoutons = document.querySelectorAll('button:not(.masquage)');
var cibles = [];
var nbPartiesCachees = 0;
 
for ( var i = 0; i < balisesBoutons.length; i++ ) {
// on cherche les boutons afficher-masquer dans la page
// on trouve un bouton qui servira à afficher une partie cachée
if ( balisesBoutons[i].getAttribute("value") == "afficher" ) {
if ( !balisesBoutons[i].hasAttribute("title") || balisesBoutons[i].getAttribute("title") === "" )
balisesBoutons[i].setAttribute("title", "[Masquer]");
if ( typeof(balisesBoutons[i].textContent) != "undefined") {
if ( balisesBoutons[i].textContent === "" )
balisesBoutons[i].textContent = "[Afficher]";
}
else {
if ( balisesBoutons[i].innerText === "" )
balisesBoutons[i].innerText = "[Afficher]";
}
balisesBoutons[i].setAttribute("onclick", "afficherMasquer(this)");
balisesBoutons[i].style.display = 'inline-block';
nbPartiesCachees++;
cibles[nbPartiesCachees-1] = balisesBoutons[i].getAttribute("name");
}
else if ( balisesBoutons[i].getAttribute("value") == "masquer" ) {
if ( !balisesBoutons[i].hasAttribute("title") || balisesBoutons[i].getAttribute("title") === "" )
balisesBoutons[i].setAttribute("title", "[Afficher]");
if ( typeof(balisesBoutons[i].textContent) != "undefined") {
if ( balisesBoutons[i].textContent === "" )
balisesBoutons[i].textContent = "[Masquer]";
}
else {
if ( balisesBoutons[i].innerText === "" )
balisesBoutons[i].innerText = "[Masquer]";
}
balisesBoutons[i].setAttribute("onclick", "afficherMasquer(this)");
balisesBoutons[i].style.display = 'inline-block';
}
}
 
// on cache les parties censées être cachées (celles ciblées par un bouton afficher)
var balises = document.getElementsByTagName('*');
for ( var i = 0; i < balises.length; i++ ) {
for( var j = 0; j < cibles.length; j++ ) {
if ( $( balises[i] ).hasClass( cibles[j] ) ) {
balises[i].style.display = "none";
break;
}
}
}
}
 
function afficherMasquer(sourceAction) {
var classeCible = sourceAction.getAttribute("name");
var typeAction = sourceAction.getAttribute("value");
var balises = document.getElementsByTagName('*');
for ( var i = 0; i < balises.length; i++ ) {
if ( $( balises[i] ).hasClass( classeCible ) ) {
if ( typeAction == "afficher" ) {
balises[i].style.display = '';
}
else {
balises[i].style.display = "none";
}
}
}
 
var balisesBoutons = document.querySelectorAll('button:not(.masquage)');
for ( var i = 0; i < balisesBoutons.length; i++ ) {
var tmp;
if ( balisesBoutons[i].getAttribute("value") == "afficher" && balisesBoutons[i].getAttribute("name") == classeCible) {
if ( typeof(balisesBoutons[i].textContent) != "undefined") {
tmp = balisesBoutons[i].textContent;
balisesBoutons[i].textContent = balisesBoutons[i].getAttribute("title");
}
else {
tmp = balisesBoutons[i].innerText;
balisesBoutons[i].innerText = balisesBoutons[i].getAttribute("title");
}
balisesBoutons[i].setAttribute("title", tmp);
balisesBoutons[i].setAttribute("value", "masquer");
}
else if ( balisesBoutons[i].getAttribute("value") == "masquer" && balisesBoutons[i].getAttribute("name") == classeCible) {
if ( typeof(balisesBoutons[i].textContent) != "undefined") {
tmp = balisesBoutons[i].textContent;
balisesBoutons[i].textContent = balisesBoutons[i].getAttribute("title");
}
else {
tmp = balisesBoutons[i].innerText;
balisesBoutons[i].innerText = balisesBoutons[i].getAttribute("title");
}
balisesBoutons[i].setAttribute("title", tmp);
balisesBoutons[i].setAttribute("value", "afficher");
}
}
}
 
jQuery( boutonsAfficherMasquer );
 
 
/* https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach#Compatibility */
/* Pour IE8 */
if (!Array.prototype.forEach) {
Array.prototype.forEach = function (fn, scope) {
'use strict';
var i, len;
for (i = 0, len = this.length; i < len; ++i) {
if (i in this) {
fn.call(scope, this[i], i, this);
}
}
};
}
 
/* Animation de capacité */
jQuery( function(){
var runAnimationElems = document.querySelectorAll(".run-animation");
for(var i=0; i<runAnimationElems.length; i++) {
if(runAnimationElems[i].parentNode.querySelector(".url-animation a")) {
runAnimationElems[i].addEventListener("click", function() {
this.innerHTML = "<small>Chargement en cours...</small>";
this.parentNode.querySelector("a.image img").addEventListener("load", function() {
this.parentNode.parentNode.querySelector(".run-animation").style.visibility="hidden";
}),
this.parentNode.querySelector("a.image").setAttribute("href", "/Fichier:"+this.parentNode.querySelector(".url-animation a").getAttribute("title"));
this.parentNode.querySelector("a.image img").setAttribute("src", this.parentNode.querySelector(".url-animation a").getAttribute("href"));
});
}
}
});
});

Dernière version du 14 mars 2025 à 01:02

mw.hook('wikipage.content').add(function ($content) {
    console.log("Script des menus déroulants chargé !");
    
    $content.find(".menu-deroulant-titre").each(function () {
        $(this).on("click", function () {
            var $target = $(this).next(".menu-deroulant-contenu");
            if ($target.length) {
                $target.slideToggle(); // Animation fluide
                $(this).toggleClass("menu-ouvert");
            }
        });
    });
});