|
|
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> ');
| |
| 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"> </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 revision': 'cette 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 page': 'page 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 ( [text] )
| |
| 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}} [[#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');
| |
| }
| |
|
| |
| });
| |