Aller au contenu

Légendes Pokémon : Z-A approche !

Nous vous rappelons que seules les informations publiées officiellement seront acceptées sur le wiki jusqu'à la sortie du jeu, le 16 octobre.
Tout ajout issu de leak ou jeu obtenu avant l'heure sera supprimé. Merci de votre compréhension, et bonne navigation sur Poképédia !

« Utilisateur:FanDeNintendoFR/common.js » : différence entre les versions

De Poképédia
X-Fusion (discussion | contributions)
mAucun résumé des modifications
FanDeNintendoFR (discussion | contributions)
m Page blanchie
Balise : Blanchiment
 
Ligne 1 : Ligne 1 :
/**
* Accès immédiat au contenu des références et notes en bas de page
* dans une fenêtre contextuelle.
* auteur : http://fr.wikipedia.org/wiki/Utilisateur:Lgd
* licence : MIT
*
* Utilise : http://fr.wikipedia.org/wiki/MediaWiki:Gadget-tooltipRef.css
*
* Paramétrage: ajouter var tooltipRefHover = true dans le common.js personnel
* pour utiliser au survol plutôt qu'au clic
*/


var tooltipRef = function ($) {
    var backClass = '.renvois_vers_le_texte';
    var msg_err1 = 'Erreur : note ou référence non trouvée.';
    var msg_err2 = 'Erreur: entrée non trouvée dans la bibliographie.';
    var msg_err3 = '<br>Cette fonctionnalité peut ne pas être disponible en mode édition si vous prévisualisez une section de page.';
    var msg_close = 'Fermer';
    var msg_go1 = 'Aller';
    var msg_go1title = 'Aller à cette référence en fin de page';
    var msg_go2 ='Aller à la bibliographie';
    var tooltipRefTimer = false;
    function fixId(myid) { // replaces special characters in id name
        return myid.replace(/[\[\]:.]/g, "\\$&");
    }
    function closeNote() {
        $('.hasnote').removeClass('hasnote');
        $('li.tooltipRef').remove();
    }
    function closeNoteAfterDelay() {
        tooltipRefTimer = setTimeout(closeNote, 400);
    }
    function cancelDelayedNoteClosure() {
        clearTimeout(tooltipRefTimer);
    }
    function openNote(ref) {
        closeNote();
        var id = ref.attr('href');
        var note;
        var fallback;
        var idfix = fixId(id);
        if ($(idfix).length != 0) {
            note = $(idfix).clone();
            // copy computed styles to clone as inline styles
            var links1 = $(idfix).find('a.external');
            var links2 = note.find('a.external');
            links1.each(function (i, elm) {
                var computed = $(elm).css(['color', 'background-image', 'background-position', 'background-repeat', 'padding-right']);
                links2.eq(i).css(computed);
            });
            note.removeAttr('id').addClass('tooltipRef');
            note.find(backClass).remove();
            note.find('[href^="#"]').click(function() {
                if ($(this).is('.open')) {
                    $('.subnote').remove();
                    $(this).removeClass('open');
                    return false;
                }
                $('.subnote').remove();
                $('.tooltipRef .open').removeClass('open');
                var id2 = $(this).attr('href');
                var more = $('<a href="'+id2+'">'+msg_go2+'</a>');
                more.click(closeNote);
                var note2;
                id2 = fixId(id2);
                if ($(id2).length != 0) {
                    note2 = $(id2).clone().addClass('subnote').removeAttr('id');
                    var morep = $('<p class="more"></p>');
                    morep.append(more);
                    note2.append(morep);
                } else {
                    note2 = $('<span class="subnote">'+msg_err2+'</span>');
                }
                note.append(note2);
                $(this).addClass('open');
                return false;
            });
            fallback = $('<a href="'+id+'" class="go" title="'+msg_go1title+'">'+msg_go1+'</a>&nbsp;');
            fallback.click(closeNote);
        } else {
            note = $('<li class="tooltipRef">'+msg_err1+'</li>');
        }
        var link = $('<a href="#" class="close" title="'+msg_close+'">X</a>');
        link.click(function() {
            closeNote();
            return false;
        });
        var span = $('<span class="actions">&nbsp;</span>');
        span.prepend(fallback).append(link);
        note.prepend(span);
        if (typeof tooltipRefHover !== 'undefined' && tooltipRefHover) {
            note.mouseover(cancelDelayedNoteClosure);
            note.mouseout(closeNoteAfterDelay);
        }
        $('body').append(note);
        var offset = ref.offset();
        note.offset({
            top: offset.top + ref.height(),
            left: offset.left > 500 ? offset.left - note.outerWidth() : offset.left
        });
        ref.addClass('hasnote');
        return false;
    }
    if (typeof tooltipRefHover !== 'undefined' && tooltipRefHover) {
        $('sup.reference > a').mouseenter(function() {
            openNote($(this));
        });
        $('sup.reference').mouseover(cancelDelayedNoteClosure);
        $('sup.reference').mouseout(closeNoteAfterDelay);
        $('sup.reference > a').click(function() {
            return false;
        });
    } else {
        $('sup.reference > a').click(function() {
            if ($(this).is('.hasnote')) {
                closeNote();
                return false;
            }
            openNote($(this))
            return false;
        });
    }
}
mw.loader.using(["user", "user.options"], function() {
    if (!mw.user.options.get('gadget-tooltipRef')) {
        importStylesheet('MediaWiki:Gadget-tooltipRef.css');
    }
    $(document).ready(tooltipRef);
});
// Permet de zoomer une image ("thumb" ou galerie) au survol de la souris ou au focus du clavier
// Documentation : Projet:JavaScript/Notices/ZoomOnThumb
//<source lang=javascript>
//<pre><nowiki>
////////////////////////////////////////////////////////////// VARIABLES PERSONNALISABLES //////////////////////////////////////////
////  Images thumb  ////
// délai avant zoom en millisecondes
if(typeof(window.ZoomOnThumb_Delay)=="undefined") window.ZoomOnThumb_Delay = 200;
// délai entre deux étapes d'agrandissement en millisecondes
if(typeof(window.ZoomOnThumb_TimeOut)=="undefined") window.ZoomOnThumb_TimeOut = 50;
// multiplicateur de grossissement max
if(typeof(window.ZoomOnThumb_MaxMultiplicator)=="undefined") window.ZoomOnThumb_MaxMultiplicator = 3;
////  Images galeries  ////
// délai avant zoom en millisecondes
if(typeof(window.ZoomOnGallery_Delay)=="undefined") window.ZoomOnGallery_Delay = 200;
// délai entre deux étapes d'agrandissement en millisecondes
if(typeof(window.ZoomOnGallery_TimeOut)=="undefined") window.ZoomOnGallery_TimeOut = 50;
// pourcentage d'agrandissement entre deux étapes
if(typeof(window.ZoomOnGallery_ZoomFactor)=="undefined") window.ZoomOnGallery_ZoomFactor = 4;
// multiplicateur de grossissement max
if(typeof(window.ZoomOnGallery_MaxMultiplicator)=="undefined") window.ZoomOnGallery_MaxMultiplicator = 3;
////////////////////////////////////////////////////////////// FONCTIONS //////////////////////////////////////////
// --------------------------------------------------- IMAGES THUMB -----------------------------------------------------------------
/* VARIABLES */
var ZoomOnThumb_LinkOnImage = [];                // Liste des liens "image"
var ZoomOnThumb_LinkOnImageState = [];            // État de zoom : 1 = zoom avant, -1 = zoom arrière, 0 = taille normale
var ZoomOnThumb_LinkOnImageOriginalWidth = [];    // Largeur originale de l'image
var ZoomOnThumb_LinkOnImageOriginalHeight = [];  // Hauteur originale de l'image
var ZoomOnThumb_LinkOnImageOriginalTarget = [];  // Cible originale de l'image (basse résolution)
var ZoomOnThumb_LinkOnImageZoomedTarget = [];    // Cible zoomée de l'image (haute résolution)
/* ÉTABLISSEMENT DE LA LISTE DES LIENS "IMAGE" */
function ZoomOnThumb_CheckLinks(){
    var Divs = document.getElementsByTagName('div');
    for(var a=0;a<Divs.length;a++){
          if($(Divs[a]).hasClass("thumbinner")){
              var DivThumb = Divs[a];
              var Parent = DivThumb.parentNode;
              while(Parent){
                    if(Parent.className && (Parent.className.indexOf("infobox")!=-1 || Parent.className.indexOf("noZoom")!=-1)) break;
                    Parent = Parent.parentNode;
              }
              if(Parent) continue;
              $(DivThumb).addClass("nopopups");
              var Links = DivThumb.getElementsByTagName('a');
              var LinkOnImage = Links[0];
              if(LinkOnImage){
                    while(LinkOnImage.className != "image"){
                        LinkOnImage = LinkOnImage.nextSibling;
                        if(!LinkOnImage) break;
                    }
              }
              if(LinkOnImage){
                    var Extension = LinkOnImage.href.replace(/.*\./,"").toLowerCase();
                    if(['ogg','ogv','pdf','webm'].indexOf(Extension) == -1){
                        ZoomOnThumb_LinkOnImage.push(LinkOnImage);
                    }
              }
          }
    }
    ZoomOnThumb_ModifyLinks();
}
/* TRANSFORMATION DES LIENS, MISE A JOUR VARIABLES */
function ZoomOnThumb_ModifyLinks(){
    for(var b=0;b<ZoomOnThumb_LinkOnImage.length;b++){
          var ThisLink = ZoomOnThumb_LinkOnImage[b];
          ThisLink.id = "ZoomLink_" +b;
          ThisLink.onmouseover = function(){
              var ID = parseInt(this.id.split('ZoomLink_').join(''));
              ZoomOnThumb_LinkOnImageState[ID] = 1;
              ZoomOnThumb_ReplaceSrc(ID);
              setTimeout("window.ZoomOnThumb_ZoomIn("+ID+");", window.ZoomOnThumb_Delay);
          };
          ThisLink.onfocus = function(){
              var ID = parseInt(this.id.split('ZoomLink_').join(''));
              ZoomOnThumb_LinkOnImageState[ID] = 1;
              ZoomOnThumb_ReplaceSrc(ID);
              setTimeout("window.ZoomOnThumb_ZoomIn("+ID+");", window.ZoomOnThumb_Delay);
          };
          ThisLink.onmouseout = function(){
              var ID = parseInt(this.id.split('ZoomLink_').join(''));
              ZoomOnThumb_LinkOnImageState[ID] = -1;
              window.ZoomOnThumb_ZoomOut(ID);
          };
          ThisLink.onblur = function(){
              var ID = parseInt(this.id.split('ZoomLink_').join(''));
              ZoomOnThumb_LinkOnImageState[ID] = -1;
              window.ZoomOnThumb_ZoomOut(ID);
          };
          var ThisDiv = ThisLink.parentNode;
          ThisDiv.id = "ZoomDiv_" +b;
          var ThisImage = ThisLink.getElementsByTagName('img')[0];
          ThisImage.id = "ZoomImage_" +b;
          ZoomOnThumb_LinkOnImageOriginalWidth[b] = ThisImage.width;
          ZoomOnThumb_LinkOnImageOriginalHeight[b] = ThisImage.height;
          ZoomOnThumb_LinkOnImageOriginalTarget[b] = ThisImage.src;
          ZoomOnThumb_LinkOnImageState[b] = 0;
    }
}
/* ZOOM AVANT */
window.ZoomOnThumb_ZoomIn = function(ID){
    if(ZoomOnThumb_LinkOnImageState[ID]!= 1) return;
    var Image = document.getElementById('ZoomImage_'+ID);
    var Div = document.getElementById('ZoomDiv_'+ID);
    if((!Image)||(!Div)) return;
    var ImageWidth = parseInt(Image.width);
    var ImageHeight = parseInt(Image.height);
    var Content = document.getElementById("bodyContent");
    if(!Content) Content = document.getElementById("mw_contentholder");
    if(!Content) Content = document.getElementById("article");
    var ContentWidth = (parseInt(Content.offsetWidth) - 30);
    if(ImageWidth<(ZoomOnThumb_LinkOnImageOriginalWidth[ID]*window.ZoomOnThumb_MaxMultiplicator)){
          var NewImageWidth = parseInt(ImageWidth * 1.05);
          var NewImageHeight = parseInt(ImageHeight * 1.05);
          if(NewImageWidth>ContentWidth) return;
          Image.width = NewImageWidth;
          Image.height = NewImageHeight;
          Div.style.width = (2+NewImageWidth) + 'px';
          setTimeout("window.ZoomOnThumb_ZoomIn("+ID+");", window.ZoomOnThumb_TimeOut);
    }
};
/* ZOOM ARRIÈRE */
window.ZoomOnThumb_ZoomOut = function(ID){
    if(ZoomOnThumb_LinkOnImageState[ID]!= -1) return;
    var Image = document.getElementById('ZoomImage_'+ID);
    var Div = document.getElementById('ZoomDiv_'+ID);
    if((!Image)||(!Div)) return;
    var ImageWidth = parseInt(Image.width);
    var ImageHeight = parseInt(Image.height);
    if(ImageWidth>ZoomOnThumb_LinkOnImageOriginalWidth[ID]){
          var NewImageWidth = parseInt(ImageWidth * 0.8);
          var NewImageHeight = parseInt(ImageHeight * 0.8);
          if(NewImageWidth<ZoomOnThumb_LinkOnImageOriginalWidth[ID]){
              NewImageWidth = ZoomOnThumb_LinkOnImageOriginalWidth[ID];
              NewImageHeight = ZoomOnThumb_LinkOnImageOriginalHeight[ID];
              Image.src = ZoomOnThumb_LinkOnImageOriginalTarget[ID];
              ZoomOnThumb_LinkOnImageState[ID] = 0;
          }
          Image.width = NewImageWidth;
          Image.height = NewImageHeight;
          Div.style.width = (2+NewImageWidth) + 'px';
          setTimeout("window.ZoomOnThumb_ZoomOut("+ID+");", window.ZoomOnThumb_TimeOut);
    }
};
/* RECHERCHE CIBLE DE L'IMAGE EN HAUTE RÉSOLUTION */
function ZoomOnThumb_ReplaceSrc(ID){
    var Image = document.getElementById('ZoomImage_'+ID);
    var Link = document.getElementById('ZoomLink_'+ID);
    if((!Image)||(!Link)) return;
    if(ZoomOnThumb_LinkOnImageZoomedTarget[ID]){
          Image.src = ZoomOnThumb_LinkOnImageZoomedTarget[ID];
          return;
    }
    var Cible = mw.config.get('wgFormattedNamespaces')[6] + ':' + decodeURIComponent(Link.href).split('File:')[1].replace(/(&|\?)uselang=.*/, '');
    var queryopt = {
          action: 'query',
          prop: 'imageinfo',
          iiprop: 'url',
          iiurlwidth: (ZoomOnThumb_LinkOnImageOriginalWidth[ID]*window.ZoomOnThumb_MaxMultiplicator),
          titles: Cible
    };
    var api = new mw.Api();
    api.get( queryopt ).then( function ( data ) {
          var pages = data.query.pages;
          if ( pages ) {
              for(var index in pages){
                    if(!pages.hasOwnProperty(index)) continue;
                    var imageinfo = pages[index].imageinfo[0];
                    if(!imageinfo) continue;
                    var thumburl = imageinfo.thumburl;
                    ZoomOnThumb_LinkOnImageZoomedTarget[ID] = thumburl;
                    if(ZoomOnThumb_LinkOnImageState[ID]!= 1) return;
                    Image.src = thumburl;
}
          }
    } );
}
/* LANCEMENT */
mw.loader.using( ['mediawiki.api'], function(){ $( document ).ready(ZoomOnThumb_CheckLinks); });
// --------------------------------------------------- IMAGES GALERIES ---------------------------------------------------------------
/* VARIABLES */
var ZoomOnGallery_LinkOnImage = [];                // Liste des liens "image"
var ZoomOnGallery_LinkOnImageState = [];            // État de zoom : 1 = zoom avant, -1 = zoom arrière, 0 = taille normale
var ZoomOnGallery_LinkOnImageOriginalWidth = [];    // Largeur originale de l'image
var ZoomOnGallery_LinkOnImageOriginalHeight = [];  // Hauteur originale de l'image
var ZoomOnGallery_LinkOnImageOriginalTarget = [];  // Cible originale de l'image (basse résolution)
var ZoomOnGallery_LinkOnImageZoomedTarget = [];    // Cible zoomée de l'image (haute résolution)
/* ÉTABLISSEMENT DE LA LISTE DES LIENS "IMAGE" */
function ZoomOnGallery_CheckLinks(){
    var Divs = document.getElementsByTagName('li');
    for(var a=0;a<Divs.length;a++){
          if($(Divs[a]).hasClass("gallerybox")){
              var DivGallery = Divs[a];
              $(DivGallery).addClass("nopopups");
              var Links = DivGallery.getElementsByTagName('a');
              var LinkOnImage = Links[0];
              if(LinkOnImage){
                    while(LinkOnImage.className != "image"){
                        LinkOnImage = LinkOnImage.nextSibling;
                        if(!LinkOnImage) break;
                    }
              }
              if(LinkOnImage){
                    var Extension = LinkOnImage.href.replace(/.*\./,"").toLowerCase();
                    if(['ogg','ogv','pdf','webm'].indexOf(Extension) == -1){
                        ZoomOnGallery_LinkOnImage.push(LinkOnImage);
                    }
              }
          }
    }
    ZoomOnGallery_ModifyLinks();
}
/* TRANSFORMATION DES LIENS, MISE A JOUR VARIABLES */
function ZoomOnGallery_ModifyLinks(){
    for(var b=0;b<ZoomOnGallery_LinkOnImage.length;b++){
          var ThisLink = ZoomOnGallery_LinkOnImage[b];
          ThisLink.id = "ZoomLink_" +(b+1000);
          ThisLink.onmouseover = function(){
              var ID = parseInt(this.id.split('ZoomLink_').join(''));
              ZoomOnGallery_LinkOnImageState[ID] = 1;
              ZoomOnGallery_ReplaceSrc(ID);
              setTimeout("window.ZoomOnGallery_ZoomIn("+ID+");", window.ZoomOnGallery_Delay);
          };
          ThisLink.onfocus = function(){
              var ID = parseInt(this.id.split('ZoomLink_').join(''));
              ZoomOnGallery_LinkOnImageState[ID] = 1;
              ZoomOnGallery_ReplaceSrc(ID);
              setTimeout("window.ZoomOnGallery_ZoomIn("+ID+");", window.ZoomOnGallery_Delay);
          };
          ThisLink.onmouseout = function(){
              var ID = parseInt(this.id.split('ZoomLink_').join(''));
              ZoomOnGallery_LinkOnImageState[ID] = -1;
              window.ZoomOnGallery_ZoomOut(ID);
          };
          ThisLink.onblur = function(){
              var ID = parseInt(this.id.split('ZoomLink_').join(''));
              ZoomOnGallery_LinkOnImageState[ID] = -1;
              window.ZoomOnGallery_ZoomOut(ID);
          };
          var ThisDiv1 = ThisLink.parentNode;
          ThisDiv1.id = "ZoomDiv1_" +(b+1000);
          var ThisThumb = ThisDiv1.parentNode;
          ThisThumb.id = "ZoomThumb_" +(b+1000);
          var ThisDiv2 = ThisThumb.parentNode;
          ThisDiv2.id = "ZoomDiv2_" +(b+1000);
          var ThisGalleryBox = ThisDiv2.parentNode;
          ThisGalleryBox.id = "ZoomGalleryBox_" +(b+1000);
          var ThisImage = ThisLink.getElementsByTagName('img')[0];
          ThisImage.id = "ZoomImage_" +(b+1000);
          ZoomOnGallery_LinkOnImageOriginalWidth[(b+1000)] = ThisImage.width;
          ZoomOnGallery_LinkOnImageOriginalHeight[(b+1000)] = ThisImage.height;
          ZoomOnGallery_LinkOnImageOriginalTarget[(b+1000)] = ThisImage.src;
          ZoomOnGallery_LinkOnImageState[(b+1000)] = 0;
    }
}
/* ZOOM AVANT */
window.ZoomOnGallery_ZoomIn = function(ID){
    if(ZoomOnGallery_LinkOnImageState[ID]!= 1) return;
    var Image = document.getElementById('ZoomImage_'+ID);
    var Div1 = document.getElementById('ZoomDiv1_'+ID);
    var Thumb = document.getElementById('ZoomThumb_'+ID);
    var Div2 = document.getElementById('ZoomDiv2_'+ID);
    var GalleryBox = document.getElementById('ZoomGalleryBox_'+ID);
    if((!Image)||(!Div1)||(!Thumb)||(!Div2)||(!GalleryBox)) return;
    var ImageWidth = parseInt(Image.width);
    var ImageHeight = parseInt(Image.height);
    var Content = document.getElementById("bodyContent");
    if(!Content) Content = document.getElementById("mw_contentholder");
    if(!Content) Content = document.getElementById("article");
    var ContentWidth = (parseInt(Content.offsetWidth) - 30);
    var Factor = (100+window.ZoomOnGallery_ZoomFactor)/100;
    var MaxWidth = (parseInt(ZoomOnGallery_LinkOnImageOriginalWidth[ID])*parseInt(window.ZoomOnGallery_MaxMultiplicator));
    if(ImageWidth<MaxWidth){
          var NewImageWidth = parseInt(ImageWidth * Factor);
          var NewImageHeight = parseInt(ImageHeight * Factor);
          if(NewImageWidth>ContentWidth) return;
          var MaxSize = NewImageWidth;
          if(ImageHeight>NewImageWidth) MaxSize = NewImageHeight;
          Image.width = NewImageWidth;
          Image.height = NewImageHeight;
          Div1.style.width = NewImageWidth + 'px';
          Thumb.style.width = Math.floor( MaxSize+30 ) + 'px';
          Thumb.style.height = Math.floor( MaxSize+30 ) + 'px';
          Div2.style.width = Math.floor( MaxSize+35 ) + 'px';
          GalleryBox.style.width = Math.floor( MaxSize+35 ) + 'px';
          setTimeout("window.ZoomOnGallery_ZoomIn("+ID+");", window.ZoomOnGallery_TimeOut);
    }
};
function ZoomOnGallery_GetWidth(Node){
    return parseInt(Node.style.width.split("px").join(""));
}
function ZoomOnGallery_GetHeight(Node){
    return parseInt(Node.style.height.split("px").join(""));
}
/* ZOOM ARRIÈRE */
window.ZoomOnGallery_ZoomOut = function(ID){
    if(ZoomOnGallery_LinkOnImageState[ID]!= -1) return;
    var Image = document.getElementById('ZoomImage_'+ID);
    var Div1 = document.getElementById('ZoomDiv1_'+ID);
    var Thumb = document.getElementById('ZoomThumb_'+ID);
    var Div2 = document.getElementById('ZoomDiv2_'+ID);
    var GalleryBox = document.getElementById('ZoomGalleryBox_'+ID);
    if((!Image)||(!Div1)||(!Thumb)||(!Div2)||(!GalleryBox)) return;
    var ImageWidth = parseInt(Image.width);
    var ImageHeight = parseInt(Image.height);
    var MinWidth = ZoomOnGallery_LinkOnImageOriginalWidth[ID];
    var Factor = 0.8;
    if(ImageWidth>MinWidth){
          var NewImageWidth = parseInt(ImageWidth * Factor);
          var NewImageHeight = parseInt(ImageHeight * Factor);
          if(NewImageWidth<MinWidth){
              Factor = 0.9;
              NewImageWidth = parseInt(ImageWidth * Factor);
              NewImageHeight = parseInt(ImageHeight * Factor);
              if(NewImageWidth<MinWidth){
                    Factor = 0.95;
                    NewImageWidth = parseInt(ImageWidth * Factor);
                    NewImageHeight = parseInt(ImageHeight * Factor);
                    if(NewImageWidth<MinWidth){
                        NewImageWidth = ZoomOnGallery_LinkOnImageOriginalWidth[ID];
                        NewImageHeight = ZoomOnGallery_LinkOnImageOriginalHeight[ID];
                        Image.src = ZoomOnGallery_LinkOnImageOriginalTarget[ID];
                        ZoomOnGallery_LinkOnImageState[ID] = 0;
                        return;
                    }
              }
          }
          var MaxSize = NewImageWidth;
          if(ImageHeight>NewImageWidth) MaxSize = NewImageHeight;
          Image.width = NewImageWidth;
          Image.height = NewImageHeight;
          Image.width = NewImageWidth;
          Image.height = NewImageHeight;
          Div1.style.width = NewImageWidth + 'px';
          Thumb.style.width = (MaxSize+30) + 'px';
          Thumb.style.height = (MaxSize+30) + 'px';
          Div2.style.width = (MaxSize+35) + 'px';
          GalleryBox.style.width = (MaxSize+35) + 'px';
          setTimeout("window.ZoomOnGallery_ZoomOut("+ID+");", window.ZoomOnGallery_TimeOut);
    }
};
/* RECHERCHE CIBLE DE L'IMAGE EN HAUTE RÉSOLUTION */
function ZoomOnGallery_ReplaceSrc(ID){
    var Image = document.getElementById('ZoomImage_'+ID);
    var Link = document.getElementById('ZoomLink_'+ID);
    if((!Image)||(!Link)) return;
    if(ZoomOnGallery_LinkOnImageZoomedTarget[ID]){
          Image.src = ZoomOnGallery_LinkOnImageZoomedTarget[ID];
          return;
    }
    var Cible = mw.config.get('wgFormattedNamespaces')[6] + ':' + decodeURIComponent(Link.href).split('File:')[1].replace(/(&|\?)uselang=.*/, '');
    var queryopt = {
          action: 'query',
          prop: 'imageinfo',
          iiprop: 'url',
          iiurlwidth: (ZoomOnGallery_LinkOnImageOriginalWidth[ID]*window.ZoomOnGallery_MaxMultiplicator),
          titles: Cible
    };
    var api = new mw.Api();
    api.get( queryopt ).then( function ( data ) {
          var pages = data.query.pages;
          if ( pages ) {
              for(var index in pages){
                    if(!pages.hasOwnProperty(index)) continue;
                    var imageinfo = pages[index].imageinfo[0];
                    if(!imageinfo) continue;
                    var thumburl = imageinfo.thumburl;
                    ZoomOnGallery_LinkOnImageZoomedTarget[ID] = thumburl;
                    if(ZoomOnGallery_LinkOnImageState[ID] != 1) return;
                    Image.src = thumburl;
}
          }
    } );
}
/* LANCEMENT */
mw.loader.using( ['mediawiki.api'], function(){ $( document ).ready(ZoomOnGallery_CheckLinks); });
//</nowiki></pre>
//</source>
if (typeof window.FRpopupsRunning === 'undefined') {
    window.FRpopupsRunning = true;
    mw.loader.load( '//en.wikipedia.org/w/index.php?title=MediaWiki:Gadget-navpop.css&action=raw&ctype=text/css', 'text/css' );
    //////////////////////////////////////////////////
    // Translatable strings
    // Traduit en français par fr:Utilisateur:Leag
    //////////////////////////////////////////////////
    //
    // See instructions at
    // https://en.wikipedia.org/wiki/Wikipedia:Tools/Navigation_popups/Translation
//<nowiki>
    window.popupStrings = {
      /////////////////////////////////////
      // summary data, searching etc.
      /////////////////////////////////////
      'article': 'article',
      'category': 'catégorie',
      'categories': 'catégories',
      'image': 'image',
      'images': 'images',
      'stub': 'ébauche',
      'section stub': 'section ébauche',
      'Empty page': 'Page vide',
      'kB': 'ko',
      'bytes': 'octets',
      'day': 'jour',
      'days': 'jours',
      'hour': 'heure',
      'hours': 'heures',
      'minute': 'minute',
      'minutes': 'minutes',
      'second': 'seconde',
      'seconds': 'secondes',
      'week': 'semaine',
      'weeks': 'semaines',
      'search': 'rechercher',
      'SearchHint': 'Trouver les articles de Wikipédia contenant %s',
      'web': 'web',
      'global': 'global',
      'globalSearchHint': 'Trouver les articles dans toutes les langues de Wikipédia contenant %s',
      'googleSearchHint': 'Rechercher %s avec Google',
      /////////////////////////////////////
      // article-related actions and info
      // (some actions also apply to user pages)
      /////////////////////////////////////
      'actions': 'actions',        ///// view articles and view talk
      'popupsMenu': 'options',
      'togglePreviewsHint': 'Changer la prévisualisation du popups de cette page',
      'toggle previews': 'changer la prévisualisation',
      'enable previews': 'activer la prévisualisation',
      'disable previews': 'désactiver la prévisualisation',
      'show preview': 'afficher la prévisualisation',
      'reset': 'reset',
      'more...': 'plus…',
      'disable': 'désactiver popups',
      'disablePopupsHint': 'Désactiver le popups sur cette page. Recharger la page pour réactiver',
      'historyfeedHint': 'flux RSS des RC sur cette page',
      'purgePopupsHint': 'Reset popups, efface toutes les données du cache',
      'PopupsHint': 'Reset popups, efface toutes les données du cache',
      'spacebar': 'barre d\'espace',
      'view': 'voir',
      'view article': 'voir l\'article',
      'viewHint': 'Voir %s',
      'talk': 'discussion',
      'talk page': 'page de discussion',
      'this&nbsp;revision': 'cette&nbsp;version',
      'revision %s of %s': 'version %s sur %s',
      'Revision %s of %s': 'Version %s sur %s',
      'the revision prior to revision %s of %s': 'la version antérieure à la version %s de %s',
      'Toggle image size': 'Changer la taille de l\'image',
      'del': 'supprimer',                ///// delete, protect, move
      'delete': 'supprimer',
      'deleteHint': 'Supprimer %s',
      'undeleteShort': 'dé',
      'UndeleteHint': 'Voir l\'historique des suppressions de %s',
      'protect': 'protéger',
      'protectHint': 'Protéger %s',
      'unprotectShort': 'dé',
      'unprotectHint': 'Déprotéger %s',
      'move': 'déplacer',
      'move page': 'déplacer la page',
      'MovepageHint': 'Changer le titre de %s',
      'edit': 'modifier',              ///// edit articles and talk
      'edit article': 'modifier l\'article',
      'editHint': 'Changer le contenu de %s',
      'edit talk': 'modifier discussion',
      'new': 'nouveau',
      'new topic': 'nouveau sujet',
      'newSectionHint': 'Démarrer une nouvelle section dans %s',
      'null edit': 'édition nulle',
      'nullEditHint': 'Modifier %s, sans faire de changements',
      'hist': 'hist',              ///// history, diffs, editors, related
      'history': 'historique',
      'historyHint': 'Afficher l\'historique de %s',
      'last': 'dernière',
      'lastEdit': 'dernière modification',
      'mark patrolled': 'marquer vérifié',
      'markpatrolledHint': 'Marquer cette modif comme non vandalisée',
      'show last edit': 'voir dernière modif',
      'Show the last edit': 'Voir les effets de la dernière modification',
      'lastContrib': 'dernière contribution',
      'last set of edits': 'dernières éditions',
      'lastContribHint': 'Voir les effets de la dernière contribution',
      'cur': 'act',
      'diffCur': 'diff/act',
      'Show changes since revision %s': 'Voir les modifications depuis la version %s',
      '%s old': '%s depuis la dernière modification',
      'oldEdit': 'ancienne version',
      'purge': 'purger',
      'purgeHint': 'Purger %s du cache',
      'raw': 'source',
      'rawHint': 'Voir la source de %s',
      'render': 'simple',
      'renderHint': 'Voir %s sans style de mise en page',
      'Show the edit made to get revision': 'Voir les modifications pour avoir cette version',
      'sinceMe': 'depuis moi',
      'changes since mine': 'depuis ma modif',
      'sinceMeHint': 'Voir les changements depuis ma dernière modification',
      'Couldn\'t find an edit by %s\nin the last %s edits to\n%s': 'Impossible de trouver une modification par %s\n dans les dernières %s modifications de\n%s',
      'eds': 'eds',
      'editors': 'contributeurs',
      'editorListHint': 'Liste des utilisateurs qui ont modifié %s',
      'related': 'relatif',
      'relatedChanges': 'modif liées',
      'related changes': 'modif liées',
      'RecentchangeslinkedHint': 'Voir les changements dans les articles relatifs à %s',
      'editOld': 'éditeAncien',          ///// edit old version, or revert
      'rv': 'rv',
      'revert': 'révoquer',
      'revertHint': 'Revenir à %s',
      'defaultpopupRedlinkSummary': 'Suppression du lien vers la page vierge [[%s]] grâce au [[Utilisateur:Leag/Navigation popups|popups]]',
      'defaultpopupFixDabsSummary': 'Page d\'homonymie [[%s]] corrigée en [[%s]] grâce au [[Utilisateur:Leag/Navigation popups|popups]]',
      'defaultpopupFixRedirsSummary': 'Redirection [[%s]] corrigée en [[%s]] grâce au [[Utilisateur:Leag/Navigation popups|popups]]',
      'defaultpopupExtendedRevertSummary': 'Révocation (retour à la version du %s par celle du %s, oldid %s grâce au [[Utilisateur:Leag/Navigation popups|popups]])',
      'defaultpopupRevertToPreviousSummary': 'Révocation (retour à la version antérieure à la version %s grâce au [[Utilisateur:Leag/Navigation popups|popups]])',
      'defaultpopupRevertSummary': 'Révocation (retour à la version %s grâce au [[Utilisateur:Leag/Navigation popups|popups]])',
      'defaultpopupQueriedRevertToPreviousSummary': 'Révocation (retour à la version antérieure à la version $1 du $2 par $3 grâce au [[Utilisateur:Leag/Navigation popups|popups]])',
      'defaultpopupQueriedRevertSummary': 'Révocation (retour à la version $1 du $2 par $3 grâce au [[Utilisateur:Leag/Navigation popups|popups]])',
      'defaultpopupRmDabLinkSummary': 'Suppression du lien vers la page d\'homonymie [[%s]] grâce au [[Utilisateur:Leag/Navigation popups|popups]]',
      'Redirects': 'Redirection', // as in Redirects to ...
      ' to ': ' vers ',          // as in Redirects to ...
      'Bypass redirect': 'Redirection',
      'Fix this redirect': 'Corriger cette redirection',
      'disambig': 'homonymie',          ///// add or remove dab etc.
      'disambigHint': 'Corriger ce lien en [[%s]]',
      'Click to disambiguate this link to:': 'Cliquer pour corriger ce lien en :',
      'remove this link': 'supprimer ce lien',
      'remove all links to this page from this article': 'supprimer tout les liens vers cette page dans l\'article',
      'remove all links to this disambig page from this article': 'supprimer tout les liens vers cette page d\'homonymie dans l\'article',
      'mainlink': 'lien principaux',          ///// links, watch, unwatch
      'wikiLink': 'lien wiki',
      'wikiLinks': 'liens wiki',
      'links here': 'page liées',
      'whatLinksHere': 'pagesliées',
      'what links here': 'pages liées',
      'WhatlinkshereHint': 'Liste des pages liées à %s',
      'unwatchShort': 'ne plus',
      'watchThingy': 'suivre',  // called watchThingy because {}.watch is a function
      'watchHint': 'Ajouter %s à ma liste de suivi',
      'unwatchHint': 'Supprimer %s de ma liste de suivi',
      'Only found one editor: %s made %s edits': 'Seul éditeur trouvé : %s a fait %s modification',
      '%s seems to be the last editor to the page %s': '%s semble être le dernier éditeur de la page %s',
      'rss': 'rss',
      /////////////////////////////////////
      // diff previews
      /////////////////////////////////////
      'Diff truncated for performance reasons': 'Différence tronquée pour raisons de performance',
      'Old revision': 'Ancienne version',
      'New revision': 'Nouvelle version',
      'Something went wrong :-(': 'Quelque chose n\'a pas fonctionné :o(',
      'Empty revision, maybe non-existent': 'Version vierge, peut\-être inexistante',
      'Unknown date': 'Date inconnue',
      /////////////////////////////////////
      // other special previews
      /////////////////////////////////////
      'Empty category': 'catégorie vide',
      'Category members (%s shown)': 'membres de la catégorie (%s vu)',
      'No image links found': 'Pas d\'image liée trouvée',
      'File links': 'Fichiers liés',
      'No image found': 'Pas d\'image trouvée',
      'Image from Commons': 'Image de Commons',
      'Description page': 'Page de description',
      'Alt text:': 'Alt text:',
      'revdel':'Révision cachée',
      /////////////////////////////////////
      // user-related actions and info
      /////////////////////////////////////
      'user': 'utilisateur',              ///// user page, talk, email, space
      'user&nbsp;page': 'page&nbsp;utilisateur',
      'user talk': 'discussion',
      'edit user talk': 'modifier discussion',
      'leave comment': 'laisser commentaire',
      'email': 'e\-mail',
      'email user': 'envoyer un e\-mail',
      'EmailuserHint': 'Envoyer un e\-mail à %s',
      'space': 'espace',
      'PrefixindexHint': 'Voir les pages de l\'espace utilisateur de %s',
      'count': 'contrib',            ///// contributions, tree, log
      'edit counter': 'compteur d\'édition',
      'editCounterLinkHint': 'Compter les contributions de %s',
      'contribs': 'contribs',
      'contributions': 'contributions',
      'deletedContribs': 'contributions supprimées',
      'DeletedcontributionsHint': 'Liste des contributions supprimées de %s',
      'ContributionsHint': 'Liste des contributions de %s',
      'log': 'journal',
      'user log': 'journal utilisateur',
      'userLogHint': 'Voir le journal de %s',
      'arin': 'recherche ARIN',            ///// ARIN lookup, block user or IP
      'Look up %s in ARIN whois database': 'Rechercher %s dans la base ARIN whois',
      'unblockShort': 'dé',
      'block': 'bloquer',
      'block user': 'bloquer utilisateur',
      'IpblocklistHint': 'Débloquer %s',
      'BlockipHint': 'Bloquer %s',
      'block log': 'liste des blocages',
      'blockLogHint': 'Voir l\'historique des blocages de %s',
      'protectLogHint': 'Voir le journal de protection de %s',
      'pageLogHint': 'Voir le journal de %s',
      'deleteLogHint': 'Voir le journal d\'effacement de %s',
      'Invalid %s %s': 'L\'option %s est invalide : %s',
      'No backlinks found': 'Pas de lien retour trouvé',
      ' and more': ' et plus',
      'undo': 'défaire',
      'undoHint': 'défaire cette modif',
      'Download preview data': 'Télécharger les données prévisualisée',
      'Invalid or IP user': 'Non valide ou IP',
      'Not a registered username': 'Utilisateur non enregistré',
      'BLOCKED': 'Bloqué',
      ' edits since: ': ' modifs depuis : ',
      /////////////////////////////////////
      // Autoediting
      /////////////////////////////////////
      'Enter a non-empty edit summary or press cancel to abort': 'Modifiez le résumé de votre modification ou cliquer sur annuler pour abondonner',
      'Failed to get revision information, please edit manually.\n\n': 'Pas d\'information sur la version, éditez manuellement.\n\n',
      'The %s button has been automatically clicked. Please wait for the next page to load.': 'Le bouton %s a été cliqué automatiquement. Veuillez attendre la page suivante pour charger.',
      'Could not find button %s. Please check the settings in your javascript file.': 'Impossible de trouver le bouton %s. Veuillez vérifier la configuration de votre fichier JavaScript.',
      /////////////////////////////////////
      // Popups setup
      /////////////////////////////////////
      'Display navigation links at the top of the popup': 'Afficher les liens de navigation en haut du popups',
      'Load images': 'Charger des images',
      'Never download extra stuff for images/previews': 'Ne jamais télécharger de choses supplémentaires pour les images/prévisualisations',
      'Only start downloading when told to do so': 'Ne commencer à télécharger que lorsque demandé ainsi',
      'Open full-size image': 'Ouvrir l\'image en haute résolution',
      'Preview only on click': 'Prévisualiser seulement par clic',
      'Show/hide options': 'Montrer/cacher les options',
      'Show image previews': 'Prévisualiser les images',
      'Show navigation links': 'Montrer les liens de navigation',
      'Show page summary data': 'Montrer le résumé de la page',
      'Show previews': 'Prévisualiser',
      'Show summary data': 'Montrer le résumé',
      'Show text previews': 'Prévisualiser les textes',
      'Simple popups': 'Popups simples',
      'Toggle this option': 'Changer cette option',
      'zxy': 'zxy'
    };
    //</nowiki>
    mw.loader.load( '//en.wikipedia.org/w/index.php?title=MediaWiki:Gadget-popups.js&action=raw&ctype=text/javascript' );
}
/**
* fork de jQuery makeCollapsible
*
* script initial : http://www.mediawiki.org/wiki/RL/DM#jQuery.makeCollapsible
* auteur initial : Krinkle <krinklemail@gmail.com>
*
* modifications : http://fr.wikipedia.org/wiki/Utilisateur:Lgd
*
* Dual license:
* @license CC-BY 3.0 <http://creativecommons.org/licenses/by/3.0>
* @license GPL2 <http://www.gnu.org/licenses/old-licenses/gpl-2.0.html>
*/
function newCollapsible( $content ) {
return $content.find('.fr-collapsible').each(function() {
// Define reused variables and functions
var $that = $(this),
that = this,
collapsetext = $(this).attr( 'data-collapsetext' ),
expandtext = $(this).attr( 'data-expandtext' ),
toggleElement = function( $collapsible, action, $defaultToggle, instantHide ) {
// Validate parameters
if ( !$collapsible.jquery ) { // $collapsible must be an instance of jQuery
return;
}
if ( action != 'expand' && action != 'collapse' ) {
// action must be string with 'expand' or 'collapse'
return;
}
if ( typeof $defaultToggle == 'undefined' ) {
$defaultToggle = null;
}
if ( $defaultToggle !== null && !($defaultToggle instanceof $) ) {
// is optional (may be undefined), but if defined it must be an instance of jQuery.
// If it's not, abort right away.
// After this $defaultToggle is either null or a valid jQuery instance.
return;
}
var $containers = null;
if ( action == 'collapse' ) {
// Collapse the element
if ( $collapsible.is( 'table' ) &&  $collapsible.find('caption').length ) { // only table with caption
// Hide all table rows of this table
// Slide doens't work with tables, but fade does as of jQuery 1.1.3
// http://stackoverflow.com/questions/467336#920480
$containers = $collapsible.find( '>tbody>tr, >thead>tr' );
if ( $defaultToggle ) {
$containers.stop(true, true).fadeOut();
} else {
if ( instantHide ) {
$containers.hide();
} else {
$containers.stop( true, true ).fadeOut();
}
}
} else if ( !$collapsible.is( 'ul' ) && !$collapsible.is( 'ol' )  && !$that.is( 'table' ) ) { // <div>, <p> etc. but not ul ol and tables without caption
var $collapsibleContent = $collapsible.find( '> .fr-collapsible-content' );
// If a collapsible-content is defined, collapse it
if ( $collapsibleContent.length ) {
if ( instantHide ) {
$collapsibleContent.hide();
} else {
$collapsibleContent.slideUp();
}
// Otherwise assume this is a customcollapse with a remote toggle
// .. and there is no collapsible-content because the entire element should be toggled
} else {
if ( $collapsible.is( 'tr' ) || $collapsible.is( 'td' ) || $collapsible.is( 'th' ) ) {
$collapsible.fadeOut();
} else {
$collapsible.slideUp();
}
}
}
} else {
// Expand the element
if ( $collapsible.is( 'table' ) &&  $collapsible.find('caption').length ) {
$containers = $collapsible.find( '>tbody>tr, >thead>tr' );
if ( $defaultToggle ) {
$containers.stop(true, true).fadeIn();
} else {
$containers.stop(true, true).fadeIn();
}
} else if ( !$collapsible.is( 'ul' ) && !$collapsible.is( 'ol' )  && !$that.is( 'table' ) ) { // <div>, <p> etc.but not ul ol and not tables without caption
var $collapsibleContent = $collapsible.find( '> .fr-collapsible-content' );
// If a collapsible-content is defined, collapse it
if ( $collapsibleContent.length ) {
$collapsibleContent.slideDown();
// Otherwise assume this is a customcollapse with a remote toggle
// .. and there is no collapsible-content because the entire element should be toggled
} else {
if ( $collapsible.is( 'tr' ) || $collapsible.is( 'td' ) || $collapsible.is( 'th' ) ) {
$collapsible.fadeIn();
} else {
$collapsible.slideDown();
}
}
}
}
},
// Toggles collapsible and togglelink class and updates text label
toggleLinkDefault = function( that, e ) {
var $that = $(that),
$collapsible = $that.closest( '.fr-collapsible.fr-made-collapsible' ).toggleClass( 'fr-collapsed' );
e.preventDefault();
e.stopPropagation();
// It's expanded right now
if ( !$that.hasClass( 'fr-collapsible-toggle-collapsed' ) ) {
// Change link to "Show"
$that.removeClass( 'fr-collapsible-toggle-expanded' ).addClass( 'fr-collapsible-toggle-collapsed' );
if ( $that.find( '> a' ).length ) {
$that.find( '> a' ).text( expandtext );
} else {
$that.text( expandtext );
}
// Collapse element
toggleElement( $collapsible, 'collapse', $that );
// It's collapsed right now
} else {
// Change link to "Hide"
$that.removeClass( 'fr-collapsible-toggle-collapsed' ).addClass( 'fr-collapsible-toggle-expanded' );
if ( $that.find( '> a' ).length ) {
$that.find( '> a' ).text( collapsetext );
} else {
$that.text( collapsetext );
}
// Expand element
toggleElement( $collapsible, 'expand', $that );
}
return;
},
// Toggles collapsible and togglelink class
toggleLinkPremade = function( $that, e ) {
var $collapsible = $that.eq(0).closest( '.fr-collapsible.fr-made-collapsible' ).toggleClass( 'fr-collapsed' );
if ( $(e.target).is('a') ) {
return true;
}
e.preventDefault();
e.stopPropagation();
// It's expanded right now
if ( !$that.hasClass( 'fr-collapsible-toggle-collapsed' ) ) {
// Change toggle to collapsed
$that.removeClass( 'fr-collapsible-toggle-expanded' ).addClass( 'fr-collapsible-toggle-collapsed' );
// Collapse element
toggleElement( $collapsible, 'collapse', $that );
// It's collapsed right now
} else {
// Change toggle to expanded
$that.removeClass( 'fr-collapsible-toggle-collapsed' ).addClass( 'fr-collapsible-toggle-expanded' );
// Expand element
toggleElement( $collapsible, 'expand', $that );
}
return;
},
// Toggles customcollapsible
toggleLinkCustom = function( $that, e, $collapsible ) {
// For the initial state call of customtogglers there is no event passed
if (e) {
e.preventDefault();
e.stopPropagation();
}
// Get current state and toggle to the opposite
var action = $collapsible.hasClass( 'fr-collapsed' ) ? 'expand' : 'collapse';
$collapsible.toggleClass( 'fr-collapsed' );
toggleElement( $collapsible, action, $that );
};
// Use custom text or default ?
if( !collapsetext ) {
//collapsetext = mw.message( 'collapsible-collapse' );
collapsetext = 'masquer';
}
if ( !expandtext ) {
//expandtext = mw.message( 'collapsible-expand' );
expandtext = 'afficher';
}
// Create toggle link with a space around the brackets (&nbsp;[text]&nbsp;)
var $toggleLink =
$( '<a href="#"></a>' )
.text( collapsetext )
.wrap( '<span class="fr-collapsible-toggle"></span>' )
.parent()
.bind( 'click.fr-collapse', function(e) {
toggleLinkDefault( this, e );
} );
// Return if it has been enabled already.
if ( $that.hasClass( 'fr-made-collapsible' ) ) {
return;
} else {
$that.addClass( 'fr-made-collapsible' );
}
// Check if this element has a custom position for the toggle link
// (ie. outside the container or deeper inside the tree)
// Then: Locate the custom toggle link(s) and bind them
if ( ( $that.attr( 'id' ) || '' ).indexOf( 'fr-customcollapsible-' ) === 0 ) {
var thatId = $that.attr( 'id' ),
$customTogglers = $content.find( '.' + thatId.replace( 'fr-customcollapsible', 'fr-customtoggle' ) );
// Double check that there is actually a customtoggle link
if ( $customTogglers.length ) {
$customTogglers.bind( 'click.fr-collapse', function( e ) {
toggleLinkCustom( $(this), e, $that );
} );
}
// Initial state
if ( $that.hasClass( 'fr-collapsed' ) ) {
$that.removeClass( 'fr-collapsed' );
toggleLinkCustom( $customTogglers, null, $that );
}
// If this is not a custom case, do the default:
// Wrap the contents add the toggle link
} else {
// Elements are treated differently
if ( $that.is( 'table' )  &&  $that.find('caption').length ) { // only table with caption
// The toggle-link will be in the caption
var $caption = $that.find( 'caption' ),
$toggle = $caption.find( '> .fr-collapsible-toggle' );
// If theres no toggle link, add it to the caption
if ( !$toggle.length ) {
$caption.eq(-1).prepend( $toggleLink );
} else {
$toggleLink = $toggle.unbind( 'click.fr-collapse' ).bind( 'click.fr-collapse', function( e ) {
toggleLinkPremade( $toggle, e );
} );
}
} else if ( !$that.is( 'ul' ) && !$that.is( 'ol' )  && !$that.is( 'table' ) ) { // <div>, <p> etc.but not ol ul and not tables without caption
// The toggle-link will be the first child of the element
var $toggle = $that.find( '> .fr-collapsible-toggle' );
// If a direct child .content-wrapper does not exists, create it
if ( !$that.find( '> .fr-collapsible-content' ).length ) {
$that.wrapInner( '<div class="fr-collapsible-content"></div>' );
}
// If theres no toggle link, add it
if ( !$toggle.length ) {
$that.prepend( $toggleLink );
} else {
$toggleLink = $toggle.unbind( 'click.fr-collapse' ).bind( 'click.fr-collapse', function( e ) {
toggleLinkPremade( $toggle, e );
} );
}
}
}
// Initial state (only for those that are not custom)
if ( $that.hasClass( 'fr-collapsed' ) && ( $that.attr( 'id' ) || '').indexOf( 'fr-customcollapsible-' ) !== 0 ) {
$that.removeClass( 'fr-collapsed' );
// The collapsible element could have multiple togglers
// To toggle the initial state only click one of them (ie. the first one, eq(0) )
// Else it would go like: hide,show,hide,show for each toggle link.
toggleElement( $that, 'collapse', $toggleLink.eq(0), /* instantHide = */ true );
$toggleLink.eq(0).click();
}
} );
};
function newCollapsibleKeyboard($content) {
$content.find('.fr-collapsible-toggle, .fr-collapsible-toggle-keyboard').attr('tabindex',0).keypress(function(event){
if ( event.which == 13 ) {
$(this).click()
}
});
};
function newCollapsibleGroup($content) {
$content.find('.fr-collapsible-group').each(function(){
var $that = $(this);
var text = 'Tout ouvrir';
var $tooglelink = $('<a class="fr-collapsible-toggle fr-collapsible-toggle-collapsed fr-collapsible-group-toogle-all" href="#">Tout ouvrir</a>');
$that.find('.fr-collapsible-group-toogle:first').append($tooglelink).click(function(event){
if(text == 'Tout ouvrir') {
text = 'Tout fermer';
$that.find('.fr-collapsible-toggle-collapsed:not(".fr-collapsible-group-toogle-all")').click();
} else {
text = 'Tout ouvrir';
$that.find('.fr-collapsible-toggle-expanded:not(".fr-collapsible-group-toogle-all")').click();
}
$tooglelink.text(text);
return false;
});
});
};
mw.hook( 'wikipage.content' ).add( [
newCollapsible,
newCollapsibleKeyboard,
newCollapsibleGroup
] );
/**
* Sous-pages
*
* Place un bouton "afficher les sous-pages" dans la boîte à outils
*
* Auteur : Delhovlyn, Lgd pour la mise à jour Mediawiki 1.19
* Date de la dernière révision : 4 mars 2012
*/
(function (mw, $) {
    var NSWithoutSubpages = [-1, 0, 6, 14, 104, 105];
    if (NSWithoutSubpages.indexOf(mw.config.get('wgNamespaceNumber')) !== -1) {
        return;
    }
    mw.loader.using('mediawiki.util', function () {
        $(function ($) {
            var target = 'Spécial:Index/' + mw.config.get('wgPageName') + '/';
            mw.util.addPortletLink('p-tb', mw.util.getUrl(target), 'Sous-pages');
        });
    });
})(mediaWiki, jQuery);
mw.loader.load('//www.mediawiki.org/w/index.php?title=MediaWiki:Gadget-DotsSyntaxHighlighter.js&action=raw&ctype=text/javascript');
/**
* QPreview
*
* Permet une prévisualisation rapide sans recharger la page
* Affiche :
* le texte, catégories et interwikis fournit par le serveur
* N'affiche pas :
* la prévisualisation du résumé
* les modèles utilisés
* autres trucs rares comme les couleurs GeSHi (code de programmation coloré)
*
* Auteur initial : [[:en:User:Alex Smotrov|en:Alex Smotrov]] sur [[:en:User:Alex Smotrov/qpreview.js]],
*  complété par [[:fr:Utilisateur:Seb35|fr:Seb35]] puis [[:fr:Utilisateur:Zebulon84|Zebulon84]]
* Date de la dernière révision : 12 avril 2015
* Projet:JavaScript/Script
*/
var qPreviewBoutonNom = 'Aperçu';
var qPreviewBoutonAttendre = 'Patience…';
var qPreviewTitreIw = 'Autres langues';
var qPreviewHeaderText = 'Aperçu';
var qPreviwGoToEdit = '→ Aller à la zone de modification';
function qPreview() {
var divPreview, ulLang, divCat, btnQPreview, qPreviewTextbox, qPreviewHeader, tablePreview, diffEnCours;
var i, htmlText, htmlCat, langList, langLine, langLink;
divPreview = document.getElementById( 'wikiPreview' );
btnQPreview = document.getElementById( 'btnQPreview' );
btnQPreview.value = qPreviewBoutonAttendre;
qPreviewTextbox = '<div>{{MediaWiki:Previewnote}}&emsp;[[#editform|' + qPreviwGoToEdit + ']]</div><hr>\n';
if ( document.editform.wpSection.value === 'new' ) {
qPreviewTextbox += '== ' + document.editform.wpSummary.value + ' ==\n';
}
qPreviewTextbox += document.getElementById( 'wpTextbox1' ).value;
$.post(
mw.util.wikiScript( 'api' ),
{
        format: 'json',
        action: 'parse',
preview: true,
disableeditsection: true,
pst: true,
title: mw.config.get('wgPageName'),
text: qPreviewTextbox,
        prop: 'text|categorieshtml|langlinks'
    },
function (data) {
// ajout du texte
htmlText = data.parse.text['*'];
divPreview.innerHTML = htmlText;
// ajout entête prévisualisation
qPreviewHeader = document.createElement( 'h2' );
qPreviewHeader.id = 'mw-previewheader';
qPreviewHeader.innerHTML = qPreviewHeaderText;
divPreview.insertBefore( qPreviewHeader, divPreview.firstChild );
tablePreview = document.getElementById( 'previewnote-fr' ).getElementsByTagName( 'table' )[0];
if ( tablePreview ) {
tablePreview.style.backgroundColor = '#E2F2FF';
tablePreview.style.borderColor = '#ACCEFF';
}
// ajout des catégories
divCat = document.getElementById( 'catlinks' );
if ( !divCat ) {
divCat = document.createElement( 'div' );
divPreview.parentNode.insertBefore( divCat, divPreview.nextSibling );
}
htmlCat = data.parse.categorieshtml['*'];
divCat.outerHTML = htmlCat;
//ajout des interWiki
if ( document.getElementById( 'p-lang' ) ) {
ulLang = document.getElementById( 'p-lang' ).getElementsByTagName( 'ul' )[0];
ulLang.innerHTML = '';
langList = data.parse.langlinks;
for ( i = 0; i < langList.length; i++ ) {
langLink = document.createElement( 'a' );
langLink.lang = langList[i].lang;
langLink.setAttribute( 'hreflang', langList[i].lang );
langLink.title = langList[i]['*'] + ' — ' + langList[i].langname;
langLink.href = langList[i].url;
langLink.innerHTML = langList[i].autonym;
langLine = document.createElement( 'li' );
langLine.className = 'interlanguage-link interwiki-' + langList[i].lang;
langLine.appendChild( langLink );
ulLang.appendChild( langLine );
}
}
// suppression de la zone "Changements en cours" si elle est présente.
diffEnCours = document.getElementById( 'wikiDiff' );
if ( diffEnCours ) {
diffEnCours.style.display = 'none';
}
btnQPreview.value = qPreviewBoutonNom;
}
);
}
/* Compatibilité iRef */
window.qPreview = qPreview;
function qPreviewButton() {
var i, sauv, newDiv, toolbox, div, newBtn;
sauv = document.getElementById( 'wpSave' );
if ( !sauv ) {
return;
}
document.getElementById( 'wikiPreview' ).style.display = 'block';
newBtn = document.createElement( 'input' );
newBtn.type = 'button';
newBtn.value = qPreviewBoutonNom;
newBtn.onclick = qPreview;
newBtn.id = 'btnQPreview';
newBtn.setAttribute( 'tabindex', '6' );
sauv.parentNode.insertBefore( newBtn, sauv.nextSibling );
}
mw.loader.using( 'mediawiki.util', function () {
$( qPreviewButton );
} );
/**
* Nom : DeluxeHistory
* Implémentation originale de Dake, basée sur du code Ajax de GôTô
* Réécriture complète par Dr Brains et Od1n, avec améliorations de Ltrlg
* Dépendances :
*  — les habituelles implicites 'mediawiki' & 'jquery' ;
*  — 'mediawiki.util' (fonctions mw.util.*) ;
*  — 'user' (assure le chargement du common.js avant ce script, pour la configuration) ;
*  — 'user.options' (pour tester si le gadget est coché dans les préférences) ;
*  — 'mediawiki.legacy.wikibits' (fonction importStylesheet).
*/
/*global document, localStorage, mw, $ */
/*jslint vars: true, plusplus: true */
mw.loader.using(['mediawiki.util', 'user', 'user.options', 'mediawiki.legacy.wikibits'], function () {
    'use strict';
    if (!mw.user.options.get('gadget-DeluxeHistory')) {
        importStylesheet('MediaWiki:Gadget-DeluxeHistory.css');
    }
    var botMembers, sysopMembers;
    /////////////////////////////////////// DÉTECTION SUPPORT LOCALSTORAGE ///////////////////////////////////////
    var supportLocalStorage;
    try {
        localStorage.setItem('modernizr', 'modernizr');
        localStorage.removeItem('modernizr');
        supportLocalStorage = true;
    } catch (e) {
        supportLocalStorage = false;
    }
    var dateNowUTC = Date.now();
    /////////////////////////////////////// FONCTIONS DE TRAITEMENT DES LIENS ///////////////////////////////////////
    var nsSpecial = mw.config.get('wgFormattedNamespaces')[-1] + ':';
    var watcherName = mw.config.get('wgUserName');
    function isUserIP(userlink) {
        // Les liens des IP sont de la forme « Spécial:Contributions/<IP> »
        return userlink.title.indexOf(nsSpecial) === 0;
    }
    function getUserClass(userlink) {
        var UserName = userlink.textContent;
        if (UserName === watcherName) { return 'UserIs-Self'; }
        if (botMembers.indexOf(UserName) > -1) { return 'UserIs-Bot'; }
        if (sysopMembers.indexOf(UserName) > -1) { return 'UserIs-Sysop'; }
        if (isUserIP(userlink)) { return 'UserIs-IP'; }
        return 'UserIs-User';
    }
    // Renvoie 'UserIs-…' si un seul type, 'UserIs-Mixed' sinon (RC "améliorée").
    // Colore les liens vers les utilisateurs pour disposer de la différentiation même si historique mixte.
    function getMultipleClassName(userlinks) {
        var className = '';
        $.each(userlinks, function () {
            var localClassName = getUserClass(this);
            $(this).addClass(localClassName);
            if (className === '') {
                className = localClassName;
            } else if (className !== localClassName) {
                className = 'UserIs-Mixed';
            }
        });
        return className;
    }
    function userGroupClassName(Li) {
        var userlinks = Li.getElementsByClassName('mw-userlink');
        if (userlinks.length > 1) {  // groupe des RC "améliorées"
            $(Li).addClass(getMultipleClassName(userlinks) + ' UserIs-Multiple');
        } else if (userlinks.length === 1) {
            $(Li).addClass(getUserClass(userlinks[0]));
        }
    }
    /////////////////////////////////////// FONCTIONS DE PARCOURS DES ÉLÉMENTS ///////////////////////////////////////
    function scan_first_ul() {
        $('#mw-content-text').find('ul').eq(0).find('li').each(function () {
            userGroupClassName(this);
        });
    }
    function scan_ul_special_li() {
        $('ul.special li').each(function () {
            userGroupClassName(this);
        });
    }
    function scan_td() {
        $('td').each(function () {
            userGroupClassName(this);
        });
    }
    /////////////////////////////////////// FONCTIONS DE SÉLECTION DES FILTRES ///////////////////////////////////////
    function process_History() {
        $('#pagehistory, .flow-board-history').find('li').each(function () {
            userGroupClassName(this);
        });
    }
    function process_Watchlist() {
        scan_ul_special_li(); // Liste de suivi normale
        scan_td(); // Liste de suivi "améliorée"
    }
    function process_Recentchanges() {
        scan_ul_special_li(); // RC normale
        scan_td(); // RC "améliorées"
    }
    function process_Recentchangeslinked() {
        scan_ul_special_li(); // RC liées normales
        scan_td(); // RC liées "améliorées"
    }
    function process_Newpages() {
        scan_first_ul();
    }
    function process_Log() {
        scan_first_ul();
    }
    function process_AbuseLog() {
        scan_first_ul();
    }
    function process_OtherPages() {
        scan_ul_special_li();
    }
    /////////////////////////////////////// LANCEMENTS ///////////////////////////////////////
    var DeluxeHistory_ClassesApplied = false;
    var DeluxeHistory_Enabled = $.extend({
        "history": true,
        "watchlist": true,
        "recentchanges": true,
        "recentchangeslinked": true,
        "newpages": true,
        "log": true,
        "abuseLog": true,
        "other": true
    }, window.DeluxeHistory_Enabled);
    function enabled(pageType) {
        return DeluxeHistory_Enabled[pageType];
    }
    function applyClasses() {
        if (botMembers && sysopMembers && !DeluxeHistory_ClassesApplied) {
            DeluxeHistory_ClassesApplied = true;
            var paramAction = mw.config.get('wgAction');
            var paramCanonicalSpecialPageName = mw.config.get('wgCanonicalSpecialPageName');
            if ( paramAction === 'history' ) {
                if( enabled("history") ) {
                    $(document).ready(process_History);
                }
            } else if ( paramCanonicalSpecialPageName === 'Watchlist' ) {
                if( enabled("watchlist") ) {
                    $(document).ready(process_Watchlist);
                }
            } else if ( paramCanonicalSpecialPageName === 'Recentchanges' ) {
                if( enabled("recentchanges") ) {
                    $(document).ready(process_Recentchanges);
                }
            } else if ( paramCanonicalSpecialPageName === 'Recentchangeslinked' ) {
                if( enabled("recentchangeslinked") ) {
                    $(document).ready(process_Recentchangeslinked);
                }
            } else if ( paramCanonicalSpecialPageName === 'Newpages' ) {
                if( enabled("newpages") ) {
                    $(document).ready(process_Newpages);
                    mw.util.addCSS('.not-patrolled { text-decoration: underline !important; }');
                }
            } else if ( paramCanonicalSpecialPageName === 'Log' ) {
                if( enabled("log") ) {
                    $(document).ready(process_Log);
                }
            } else if ( paramCanonicalSpecialPageName === 'AbuseLog' ) {
                if( enabled("abuseLog") ) {
                    $(document).ready(process_AbuseLog);
                }
            } else {
                if( enabled("other") ) {
                    $(document).ready(process_OtherPages);
                }
            }
        }
    }
    /////////////////////////////////////// RÉCUPÉRATION DE LA LISTE DES BOTS ET SYSOPS ///////////////////////////////////////
    var validCache;
    function updateUserList(Group, UserList, UserContinue) {
        if (!UserList) { UserList = []; }
        var paramUserGroups = mw.config.get('wgUserGroups');
        var APILimit = paramUserGroups.indexOf('sysop') > -1 || paramUserGroups.indexOf('bot') > -1
            ? 5000 : 500;
        var params = {
            'format'  : 'json',
            'action'  : 'query',
            'list'    : 'allusers',
            'aulimit'  : APILimit,
            'augroup'  : Group,
            'continue' : '' // https://www.mediawiki.org/wiki/API:Query#Continuing_queries
        };
        if (UserContinue) {
            $.extend(params, UserContinue);
        }
        $.get(mw.util.wikiScript('api'), params, function (data) {
            $.each(data.query.allusers, function () {
                UserList.push(this.name);
            });
            if (data['continue']) {
                updateUserList(Group, UserList, data['continue']);
            } else {
                if (supportLocalStorage) {
                    var storedValue = UserList.join('|');
                    localStorage.setItem('HistoryDeluxe_' + Group, storedValue);
                    localStorage.setItem('HistoryDeluxe_lastUpdate', dateNowUTC);
                }
                if (Group === 'bot') {
                    botMembers = UserList;
                } else if (Group === 'sysop') {
                    sysopMembers = UserList;
                }
                applyClasses();
            }
        });
    }
    function testCacheValidity() {
        var lastUpdate;
        if (supportLocalStorage) {
            lastUpdate = localStorage.getItem('HistoryDeluxe_lastUpdate');
            validCache = lastUpdate && dateNowUTC - lastUpdate < 1000 * 3600 * 24 && dateNowUTC - lastUpdate > 0;
        } else {
            validCache = false;
        }
    }
    // Exécutée si validCache, ie. si (supportLocalStorage && lastUpdate pas trop loin)
    function getUserList(Group) {
        var storedValue;
        storedValue = localStorage.getItem('HistoryDeluxe_' + Group);
        return storedValue ? storedValue.split('|') : null;
    }
    /////////////////////////////////////// INITIALISATION ///////////////////////////////////////
    testCacheValidity();
    if (validCache) {
        botMembers = getUserList('bot');
        sysopMembers = getUserList('sysop');
        applyClasses();
    } else {
        updateUserList('bot');
        updateUserList('sysop');
    }
});

Dernière version du 2 juin 2020 à 16:39