MediaWiki:Common.js : Différence entre versions
De Wicri Base 1.28
imported>Jacques Ducloy |
imported>Jacques Ducloy |
||
Ligne 1 203 : | Ligne 1 203 : | ||
$( addBibSubsetMenu ); | $( addBibSubsetMenu ); | ||
} // Fin du code concernant l'espace de nom 'Référence' | } // Fin du code concernant l'espace de nom 'Référence' | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− |
Version du 18 avril 2017 à 16:09
/*jshint maxerr:600, scripturl:true, laxbreak:true, sub:true, loopfunc:true, forin:false, unused:true*/
/*global mw, $*/
/**
* N'importe quel JavaScript ici sera chargé pour n'importe quel utilisateur et pour chaque page accédée.
*
* ATTENTION : Avant de modifier cette page, veuillez tester vos changements avec votre propre
* vector.js. Une erreur sur cette page peut faire bugger le site entier (et gêner l'ensemble des
* visiteurs), même plusieurs heures après la modification !
*
* Prière de ranger les nouvelles fonctions dans les sections adaptées :
* - Fonctions JavaScript
* - Fonctions spécifiques pour MediaWiki
* - Applications spécifiques à la fenêtre d'édition
* - Applications qui peuvent être utilisées sur toute page
* - Applications spécifiques à un espace de nom ou une page
*
* Note : une ré-écriture de cette page en utilisant jQuery a été commencée sur [[Projet:JavaScript/Refonte Common.js avec jQuery]].
*
* <nowiki> /!\ Ne pas retirer cette balise
*/
/*************************************************************/
/* Fonctions JavaScript : pallient les limites de JavaScript */
/* Surveiller : http://www.ecmascript.org/ */
/*************************************************************/
/**
* insertAfter : insérer un élément dans une page
*/
mw.log.deprecate( window, 'insertAfter', function ( parent, node, referenceNode ) {
parent.insertBefore( node, referenceNode.nextSibling );
}, 'Use jQuery\'s .after() or .insertAfter() instead.' );
/**
* getElementsByClass : rechercher les éléments de la page dont le paramètre "class" est celui recherché
*/
mw.log.deprecate( window, 'getElementsByClass', function ( searchClass, node, tag ) {
if ( !node ) {
node = document;
}
if ( !tag ) {
tag = '';
}
return $( node ).find( tag + '.' + searchClass ).toArray();
}, 'Use $( \'.someClass\' ) or $( element ).find( \'.someClass\' ) instead.' );
/**
* Diverses fonctions manipulant les classes
* Utilise des expressions régulières et un cache pour de meilleures perfs
* hasClass, addClass et removeClass depuis http://drupal.org.in/doc/misc/drupal.js.source.html
* surveiller l'implémentation de .classList http://www.w3.org/TR/2008/WD-html5-diff-20080122/#htmlelement-extensions
*/
mw.log.deprecate( window, 'hasClass', function ( node, className ) {
return $( node ).hasClass( className );
}, 'Use $( element ).hasClass( \'class\' ) instead.' );
mw.log.deprecate( window, 'addClass', function ( node, className ) {
if ( $( node ).hasClass( className ) ) {
return false;
}
var cache = node.className;
if ( cache ) {
node.className = cache + ' ' + className;
} else {
node.className = className;
}
return true;
}, 'Use $( element ).addClass( \'className\' ) instead.' );
mw.log.deprecate( window, 'removeClass', function ( node, className ) {
if ( ! $( node ).hasClass( className ) ) {
return false;
}
node.className = eregReplace( '(^|\\s+)'+ className +'($|\\s+)', ' ', node.className );
return true;
}, 'Use $( element ).removeClass( \'className\' ) instead.' );
/* petites fonctions pratiques - Darkoneko, 09/01/2008 */
//créé un lien et le retourne.
//le parametre onclick est facultatif.
window.createAdressNode = function ( href, texte, onclick ) {
var a = document.createElement('a');
a.href = href;
a.appendChild(document.createTextNode( texte ) );
if (arguments.length === 3) {
a.setAttribute("onclick", onclick );
}
return a;
};
//Créé un cookie. il n'existais qu'une version dédiée à l'accueil. Celle ci est plus générique
//le parametre duree est en jours
window.setCookie = function ( nom, valeur, duree ) {
var expDate = new Date();
expDate.setTime(expDate.getTime() + ( duree * 24 * 60 * 60 * 1000));
document.cookie = nom + "=" + escape(valeur) + ";expires=" + expDate.toGMTString() + ";path=/";
};
/**
* Récupère la valeur du cookie
*/
window.getCookieVal = function ( name ) {
var cookiePos = document.cookie.indexOf(name + "=");
var cookieValue = false;
if (cookiePos > -1) {
cookiePos += name.length + 1;
var endPos = document.cookie.indexOf(";", cookiePos);
if (endPos > -1) {
cookieValue = document.cookie.substring(cookiePos, endPos);
} else {
cookieValue = document.cookie.substring(cookiePos);
}
}
return cookieValue;
};
// Récupère proprement le contenu textuel d'un noeud et de ses noeuds descendants
// Copyright Harmen Christophe, http://openweb.eu.org/articles/validation_avancee, CC
window.getTextContent = function ( oNode ) {
if ( !oNode ) {
return null;
}
if ( typeof oNode.textContent !== "undefined" ) {
return oNode.textContent;
}
switch ( oNode.nodeType ) {
case 3: // TEXT_NODE
case 4: // CDATA_SECTION_NODE
return oNode.nodeValue;
case 7: // PROCESSING_INSTRUCTION_NODE
case 8: // COMMENT_NODE
if ( getTextContent.caller !== getTextContent ) {
return oNode.nodeValue;
}
break;
case 9: // DOCUMENT_NODE
case 10: // DOCUMENT_TYPE_NODE
case 12: // NOTATION_NODE
return null;
}
var _textContent = "";
oNode = oNode.firstChild;
while ( oNode ) {
_textContent += getTextContent( oNode );
oNode = oNode.nextSibling;
}
return _textContent;
};
if ( !String.prototype.HTMLize ) {
String.prototype.HTMLize = function() {
var chars = [ '&', '<', '>', '"' ];
var entities = [ 'amp', 'lt', 'gt', 'quot' ];
var string = this;
for ( var i = 0; i < chars.length; i++ ) {
var regex = new RegExp( chars[ i ], 'g' );
string = string.replace( regex, '&' + entities[ i ] + ';' );
}
return string;
};
}
/**********************************************************************************************************/
/* Fonctions générales MediaWiki (pallient les limitations du logiciel) */
/* Surveiller : https://git.wikimedia.org/history/mediawiki%2Fcore.git/HEAD/skins%2Fcommon%2Fwikibits.js */
/**********************************************************************************************************/
/*
* Fonction générales de lancement de fonctions ou de script
* DÉPRÉCIÉ : utiliser $( func ) qui fait partie de jQuery
*/
mw.log.deprecate( window, 'addLoadEvent', function ( hookFunct ) {
$( function() {
hookFunct();
} );
}, 'Use jQuery instead.' );
/**
* Insérer un JavaScript d'une page particulière
* DÉPRÉCIÉ : utiliser importScript( page ) qui fait partie de MediaWiki
*/
mw.log.deprecate( window, 'loadJs', importScript, 'Use importScript instead.' );
/**
* Projet JavaScript
*/
window.obtenir = function ( name ) {
importScript( 'MediaWiki:Gadget-' + name + '.js' );
};
/**
* Transformer les pages du Bistro, du BA et les pages spécifiées en page de discussion
*/
function TransformeEnDiscussion( $ ) {
if (
/^Wikipédia:(Le_Bistro|Bulletin_des_administrateurs|Questions_techniques)/.test( mw.config.get( 'wgPageName' ) ) ||
$( '#transformeEnPageDeDiscussion' ).length
) {
$( 'body' ).removeClass( 'ns-subject' ).addClass( 'ns-talk' );
}
}
$( TransformeEnDiscussion );
/**
* Ajouter un bouton à la fin de la barre d'outils
*/
if ( typeof addCustomButton === 'undefined' ) {
mw.log.deprecate( window, 'addCustomButton', function ( imageFile, speedTip, tagOpen, tagClose, sampleText, imageId ) {
if ( mw.toolbar ) {
mw.toolbar.addButton( {
imageFile: imageFile.replace( /^http:(\/\/upload\.wikimedia\.org\/)/, '$1' ),
speedTip: speedTip,
tagOpen: tagOpen,
tagClose: tagClose,
sampleText: sampleText,
imageId: imageId
} );
}
}, 'Use mw.toolbar.addButton instead.' );
}
/****************************************/
/* Applications pour l'ensemble du site */
/****************************************/
/**
* Tout ce qui concerne la page d'édition
* Voir MediaWiki:Common.js/edit.js pour ces fonctions
*/
if ( ['edit','submit'].indexOf(mw.config.get('wgAction')) !== -1 ) {
importScript( 'MediaWiki:Common.js/edit.js' );
}
/**
* Réécriture des titres
*
* Fonction utilisée par [[Modèle:Titre incorrect]]
*
* La fonction cherche un bandeau de la forme
* <div id="RealTitleBanner">
* <span id="RealTitle">titre</span>
* </div>
*
* Un élément comportant id="DisableRealTitle" désactive la fonction
*/
function rewritePageTitle( $ ) {
var $realTitle, titleText, $h1,
$realTitleBanner = $( '#RealTitleBanner' );
if ( $realTitleBanner.length && !$( '#DisableRealTitle' ).length ) {
$realTitle = $( '#RealTitle' );
$h1 = $( 'h1:first' );
if ( $realTitle.length && $h1.length ) {
titleText = $realTitle.html();
if ( titleText === '' ) {
$h1.hide();
} else {
$h1.html( titleText );
if ( mw.config.get('wgAction') === 'view' && $realTitle.children().length === 0 ) {
document.title = $realTitle.text() + " — Wikipédia";
}
}
$realTitleBanner.hide();
$( '<p>' ).css( 'font-size', '80%' )
.html( 'Titre à utiliser pour créer un lien interne : <b>' + mw.config.get('wgPageName').replace( /_/g, ' ' ) + '</b>' )
.insertAfter( $h1 );
}
}
}
$( rewritePageTitle );
/**
* Ajout d'un sous-titre
*
* Fonction utilisée par [[Modèle:Sous-titre]]
*
* La fonction cherche un élément de la forme
* <span id="sous_titre_h1">Sous-titre</span>
*/
function sousTitreH1( $content ) {
$( '#firstHeading > #sous_titre_h1' ).remove();
var $span = $content.find( '#sous_titre_h1' );
if ( $span.length ) {
$span.prepend( ' ' );
$( '#firstHeading' ).append( $span );
}
}
mw.hook( 'wikipage.content' ).add( sousTitreH1 );
/**
* Boîtes déroulantes
*
* Pour [[Modèle:Méta palette de navigation]]
*/
var Palette_Enrouler = '[masquer]';
var Palette_Derouler = '[afficher]';
var Palette_max = 1;
function Palette_toggle( $table ) {
$table.find( 'tr:not(:first)' ).toggleClass( 'navboxHidden' );
}
function Palette( element ) {
if ( !element ) {
element = document;
}
var $tables = $( element ).find( 'table.collapsible' );
var groups = {};
$tables.each( function( _, table ) {
var group = table.getAttribute('data-autocollapse-group') || '__default__';
groups[group] = ( groups[group] || 0 ) + 1;
} );
$tables.each( function( _, table ) {
var $table = $( table );
var group = table.getAttribute('data-autocollapse-group') || '__default__';
var autoCollapse = groups[group] > Palette_max;
var collapsed = $table.hasClass( 'collapsed' ) || ( autoCollapse && $table.hasClass( 'autocollapse' ) );
$table.find( 'tr:first th:first' ).prepend(
$( '<span class="navboxToggle">\u00a0</span>' ).append(
$( '<a href="#">' + (collapsed ? Palette_Derouler : Palette_Enrouler) + '</a>' ).click( function() {
var $this = $( this );
if ( $this.text() === Palette_Enrouler ) {
$this.text( Palette_Derouler );
} else {
$this.text( Palette_Enrouler );
}
Palette_toggle( $table );
return false;
} )
)
);
if ( collapsed ) {
Palette_toggle( $table );
}
} );
}
$( function() {
Palette();
} );
/**
* Pour [[Modèle:Boîte déroulante]]
*/
var BoiteDeroulante_Enrouler = '[masquer]';
var BoiteDeroulante_Derouler = '[afficher]';
var BoiteDeroulante_max = 0;
var BoiteDeroulante_index = -1;
function BoiteDeroulante_toggle(indexBoiteDeroulante){
var a, m;
var NavFrame = document.getElementById("NavFrame" + indexBoiteDeroulante);
var NavToggle = document.getElementById("NavToggle" + indexBoiteDeroulante);
var CaptionContainer = document.getElementById("NavCaption" + indexBoiteDeroulante);
if (!NavFrame || !NavToggle || !CaptionContainer) {
return;
}
var caption = [];
var CaptionSpans = CaptionContainer.getElementsByTagName('span');
caption[0] = CaptionSpans[0].innerHTML;
caption[1] = CaptionSpans[1].innerHTML;
var Contents = NavFrame.getElementsByTagName('div');
if ( NavToggle.innerHTML === caption[1] ) {
NavToggle.innerHTML = caption[0];
for ( a=0, m=Contents.length; a<m; a++ ) {
if ( $( Contents[a] ).hasClass( 'NavContent' ) ) {
Contents[a].style.display = 'none';
return;
}
}
} else {
NavToggle.innerHTML = caption[1];
for ( a=0, m=Contents.length; a<m; a++ ) {
if ( $(Contents[a]).hasClass("NavContent") ) {
Contents[a].style.display = 'block';
return;
}
}
}
}
function BoiteDeroulante(Element){
if (!Element) {
Element = document;
}
var i, l, Enrouler, Derouler, CaptionContainer, NavToggle, NavToggleText, NavFrame;
var NavFrameCount = -1;
var NavFrames = Element.getElementsByTagName("div");
for ( i=0, l=NavFrames.length; i<l; i++ ){
if ( $( NavFrames[i] ).hasClass( 'NavFrame' ) ){
NavFrame = NavFrames[i];
NavFrameCount++;
BoiteDeroulante_index++;
if (NavFrame.title && NavFrame.title.indexOf("/") !== -1) {
Enrouler = NavFrame.title.HTMLize().split("/")[1];
Derouler = NavFrame.title.HTMLize().split("/")[0];
} else {
Enrouler = BoiteDeroulante_Enrouler;
Derouler = BoiteDeroulante_Derouler;
}
NavFrame.title='';
CaptionContainer = document.createElement('span');
CaptionContainer.id = 'NavCaption' + BoiteDeroulante_index;
CaptionContainer.style.display = "none";
CaptionContainer.innerHTML = '<span>' + Derouler + '</span><span>' + Enrouler + '</span>';
NavFrame.appendChild(CaptionContainer);
NavToggle = document.createElement("a");
NavToggle.className = 'NavToggle';
NavToggle.id = 'NavToggle' + BoiteDeroulante_index;
NavToggle.href = 'javascript:BoiteDeroulante_toggle(' + BoiteDeroulante_index + ');';
NavToggleText = document.createTextNode(Enrouler);
NavToggle.appendChild(NavToggleText);
NavFrame.insertBefore( NavToggle, NavFrame.firstChild );
NavFrame.id = 'NavFrame' + BoiteDeroulante_index;
if (BoiteDeroulante_max <= NavFrameCount) {
BoiteDeroulante_toggle(BoiteDeroulante_index);
}
}
}
}
mw.hook( 'wikipage.content' ).add( function() {
BoiteDeroulante();
} );
/**
* Utilisation du modèle Modèle:Animation
*/
var Diaporama = {};
Diaporama.Params = {};
Diaporama.Fonctions = {};
Diaporama.Params.DiaporamaIndex = 0;
Diaporama.Params.ImageDelay = 1;
Diaporama.Params.Paused = [];
Diaporama.Params.Visible = [];
Diaporama.Params.Length = [];
Diaporama.Params.Delay = [];
Diaporama.Params.Timeout = [];
Diaporama.Fonctions.Init = function(node){
if (!node) {
node = document;
}
var Diaporamas = $( node ).find( 'div.diaporama' ).get();
for (var a=0, l=Diaporamas.length; a<l; a++) {
Diaporama.Fonctions.InitDiaporama(Diaporamas[a]);
}
};
Diaporama.Fonctions.InitDiaporama = function(DiaporamaDiv){
var index = Diaporama.Params.DiaporamaIndex;
Diaporama.Params.DiaporamaIndex++;
DiaporamaDiv.id = "Diaporama_"+index;
var DiaporamaFileContainer = $( DiaporamaDiv ).find( 'div.diaporamaFiles' )[0];
var DiaporamaControl = $( DiaporamaDiv ).find( 'div.diaporamaControl' )[0];
if (!DiaporamaFileContainer || !DiaporamaControl) {
return;
}
var DiaporamaFiles = $( DiaporamaFileContainer ).find( 'div.ImageFile' ).get();
var width;
var firstTumbinner = $( DiaporamaFileContainer ).find( 'div.thumbinner' )[0];
if (firstTumbinner) { // force la largeur du diaporama (pour IE)
width = firstTumbinner.style.width.split("px").join("");
} else {
if (DiaporamaFileContainer.firstChild.firstChild) {
width = DiaporamaFileContainer.firstChild.firstChild.offsetWidth;
}
}
if (width) {
DiaporamaDiv.style.width = (parseInt(width)+30) + "px";
}
if (DiaporamaFiles.length<2) {
return;
}
Diaporama.Params.Length[index] = DiaporamaFiles.length;
DiaporamaFileContainer.id = "DiaporamaFileContainer_"+index;
DiaporamaControl.id = "DiaporamaControl_"+index;
Diaporama.Params.Delay[index] = Diaporama.Params.ImageDelay;
var DiaporamaDivClass = DiaporamaDiv.className.HTMLize();
var ParamDelay = DiaporamaDivClass.match(/Delay[0-9]+(\.|,)?[0-9]*/);
if (ParamDelay !== null) {
ParamDelay = parseFloat(ParamDelay[0].split("Delay").join("").split(",").join("."));
if (ParamDelay && ParamDelay>0) {
Diaporama.Params.Delay[index] = ParamDelay;
}
}
Diaporama.Fonctions.ShowThisDiapo(index, 0);
var ControlLinks = DiaporamaControl.getElementsByTagName("a");
ControlLinks[0].firstChild.id = "DiaporamaPlay"+index;
ControlLinks[0].href = "javascript:Diaporama.Fonctions.Play("+index+");";
ControlLinks[1].firstChild.id = "DiaporamaPause"+index;
ControlLinks[1].href = "javascript:Diaporama.Fonctions.Pause("+index+");";
ControlLinks[2].firstChild.id = "DiaporamaStop"+index;
ControlLinks[2].href = "javascript:Diaporama.Fonctions.Stop("+index+");";
ControlLinks[3].firstChild.id = "DiaporamaLast"+index;
ControlLinks[3].href = "javascript:Diaporama.Fonctions.ToggleDiapo("+index+",-1);";
ControlLinks[4].firstChild.id = "DiaporamaNext"+index;
ControlLinks[4].href = "javascript:Diaporama.Fonctions.ToggleDiapo("+index+", 1);";
ControlLinks[5].parentNode.appendChild(Diaporama.Fonctions.CreateSelect(index, ControlLinks[5].title));
ControlLinks[5].parentNode.removeChild(ControlLinks[5]);
for (var e=0, t=ControlLinks.length; e<t; e++) {
ControlLinks[e].onmousedown = function(){Diaporama.Fonctions.Onclick(this);};
ControlLinks[e].onmouseup = function(){Diaporama.Fonctions.Offclick(this, index);};
ControlLinks[e].firstChild.style.backgroundColor = "white";
ControlLinks[e].onmouseover = function(){ this.focus(); };
}
DiaporamaControl.style.display = "block";
Diaporama.Fonctions.Pause(index);
};
Diaporama.Fonctions.Play = function(index){
if (Diaporama.Params.Paused[index] === false) {
return;
}
Diaporama.Params.Paused[index] = false;
clearTimeout(Diaporama.Params.Timeout[index]);
Diaporama.Params.Timeout[index] = setTimeout("Diaporama.Fonctions.ToggleDiapo("+index+",1);", Diaporama.Params.Delay[index]*1000);
var ButtonPlay = document.getElementById("DiaporamaPlay"+index);
ButtonPlay.style.backgroundColor = "silver";
var ButtonPause = document.getElementById("DiaporamaPause"+index);
ButtonPause.style.backgroundColor = "white";
var ButtonStop = document.getElementById("DiaporamaStop"+index);
ButtonStop.style.backgroundColor = "white";
};
Diaporama.Fonctions.Pause = function(index){
Diaporama.Params.Paused[index] = true;
clearTimeout(Diaporama.Params.Timeout[index]);
var ButtonPlay = document.getElementById("DiaporamaPlay"+index);
ButtonPlay.style.backgroundColor = "white";
var ButtonPause = document.getElementById("DiaporamaPause"+index);
ButtonPause.style.backgroundColor = "silver";
var ButtonStop = document.getElementById("DiaporamaStop"+index);
ButtonStop.style.backgroundColor = "white";
};
Diaporama.Fonctions.Stop = function(index){
Diaporama.Params.Paused[index] = true;
clearTimeout(Diaporama.Params.Timeout[index]);
Diaporama.Fonctions.ShowThisDiapo(index, 0);
var ButtonPlay = document.getElementById("DiaporamaPlay"+index);
ButtonPlay.style.backgroundColor = "white";
var ButtonPause = document.getElementById("DiaporamaPause"+index);
ButtonPause.style.backgroundColor = "white";
var ButtonStop = document.getElementById("DiaporamaStop"+index);
ButtonStop.style.backgroundColor = "silver";
};
Diaporama.Fonctions.ToggleDiapo = function(index, diff){
clearTimeout(Diaporama.Params.Timeout[index]);
var DiaporamaFileContainer = document.getElementById("DiaporamaFileContainer_"+index);
var DiaporamaFiles = $( DiaporamaFileContainer ).find( 'div.ImageFile' ).get();
var VisibleIndex = Diaporama.Params.Visible[index];
var NextDiaporamaIndex = (VisibleIndex+diff);
if (NextDiaporamaIndex === DiaporamaFiles.length || NextDiaporamaIndex < 0) {
var DiaporamaDiv = document.getElementById("Diaporama_"+index);
if ( diff < 0 || ! $( DiaporamaDiv ).hasClass( 'AutoLoop' ) ) {
return;
}
NextDiaporamaIndex = 0;
}
Diaporama.Fonctions.ShowThisDiapo(index, NextDiaporamaIndex);
};
Diaporama.Fonctions.ShowThisDiapo = function(index, Value){
clearTimeout(Diaporama.Params.Timeout[index]);
var DiaporamaFileContainer = document.getElementById("DiaporamaFileContainer_"+index);
var DiaporamaFiles = $( DiaporamaFileContainer ).find( 'div.ImageFile' ).get();
for (var x=0, z=DiaporamaFiles.length; x<z; x++) {
if (x !== Value) {
DiaporamaFiles[x].style.display = "none";
} else {
DiaporamaFiles[x].style.display = "block";
}
}
Diaporama.Params.Visible[index] = Value;
Diaporama.Fonctions.UpdateBar(index);
Diaporama.Fonctions.UpdateSelect(index);
if (!Diaporama.Params.Paused[index]) {
var multipl = 1;
if (Value === (Diaporama.Params.Length[index]-1)) {
multipl = 3;
}
Diaporama.Params.Timeout[index] = setTimeout("Diaporama.Fonctions.ToggleDiapo("+index+",1);", Diaporama.Params.Delay[index]*1000*multipl);
}
};
Diaporama.Fonctions.CreateSelect = function(index, Title) {
var s, Opt;
var Total = Diaporama.Params.Length[index];
var Select = document.createElement('select');
Select.id = "DiaporamaSelect"+index;
Select.title = Title;
for ( s=0; s<Total; s++ ) {
Opt = document.createElement('option');
if (s === 0) {
Opt.selected = "selected";
}
Opt.text = (s+1)+"/"+Total;
Opt.innerHTML = (s+1)+"/"+Total;
Opt.value = s;
Select.appendChild(Opt);
}
Select.onchange = function(){ Diaporama.Fonctions.SelectDiapo(Diaporama.Fonctions.getIndex(this)); };
Select.onmouseover = function(){ this.focus(); };
return Select;
};
Diaporama.Fonctions.SelectDiapo = function(index){
var Select = document.getElementById("DiaporamaSelect"+index);
if (!Select) {
return;
}
var Opts = Select.getElementsByTagName('option');
for (var o=0, p=Opts.length; o<p; o++) {
if (Opts[o].selected) {
var Value = parseInt(Opts[o].value);
return Diaporama.Fonctions.ShowThisDiapo(index, Value);
}
}
};
Diaporama.Fonctions.UpdateSelect = function(index){
var Select = document.getElementById("DiaporamaSelect"+index);
if (!Select) {
return;
}
var Opts = Select.getElementsByTagName('option');
for (var o=0, p=Opts.length; o<p; o++){
if (o === Diaporama.Params.Visible[index]) {
Opts[o].selected = "selected";
} else {
Opts[o].selected = false;
}
}
};
Diaporama.Fonctions.UpdateBar = function(index){
var Percent = (100/(Diaporama.Params.Length[index]-1)) * Diaporama.Params.Visible[index];
if (Percent>100) {
Percent = 100;
}
var DiaporamaControl = document.getElementById("DiaporamaControl_"+index);
var DiaporamaScrollBar = $( DiaporamaControl ).find( 'div.ScrollBar' )[0];
DiaporamaScrollBar.style.width = Percent + "%";
};
Diaporama.Fonctions.Onclick = function(Link){
var Image = Link.getElementsByTagName('img')[0];
Image.style.backgroundColor = "gray";
};
Diaporama.Fonctions.Offclick = function(Link, index){
var Span = Link.parentNode;
var Image = Link.getElementsByTagName('img')[0];
var DiapoState = Diaporama.Params.Paused[index];
if ( ( $( Span ).hasClass( 'Play' ) && DiapoState === false ) || ( ( $( Span ).hasClass( 'Pause' ) || $( Span ).hasClass( 'Stop' ) ) && DiapoState === true ) ){
Image.style.backgroundColor = "silver";
} else {
Image.style.backgroundColor = "white";
}
};
Diaporama.Fonctions.getIndex = function(Element){
return parseInt(Element.id.replace(/[^0-9]/g, ""));
};
$( function () {
Diaporama.Fonctions.Init();
} );
/**
* Permet d'afficher les catégories cachées pour les contributeurs enregistrés, en ajoutant un (+) à la manière des boîtes déroulantes
*/
function hiddencat( $ ) {
if (typeof DesactiveHiddenCat !== "undefined" && DesactiveHiddenCat) {
return;
}
if (document.URL.indexOf("printable=yes") !== -1) {
return;
}
var cl = document.getElementById('catlinks');
if (!cl) {
return;
}
var $hc = $('#mw-hidden-catlinks');
if ( !$hc.length ) {
return;
}
if ( $hc.hasClass('mw-hidden-cats-user-shown') ) {
return;
}
if ( $hc.hasClass('mw-hidden-cats-ns-shown') ) {
$hc.addClass('mw-hidden-cats-hidden');
}
var nc = document.getElementById('mw-normal-catlinks');
if ( !nc ) {
var catline = document.createElement('div');
catline.id = 'mw-normal-catlinks';
var a = document.createElement('a');
a.href = '/wiki/Catégorie:Accueil';
a.title = 'Catégorie:Accueil';
a.appendChild(document.createTextNode('Catégories'));
catline.appendChild(a);
catline.appendChild(document.createTextNode(' : '));
nc = cl.insertBefore(catline, cl.firstChild);
} else {
nc.appendChild(document.createTextNode(' | '));
}
var lnk = document.createElement('a');
lnk.id = 'mw-hidden-cats-link';
lnk.title = 'Cet article contient des catégories cachées';
lnk.style.cursor = 'pointer';
lnk.style.color = 'black';
$(lnk).click(toggleHiddenCats);
lnk.appendChild(document.createTextNode('[+]'));
nc.appendChild(lnk);
}
function toggleHiddenCats(e) {
var $hc = $('#mw-hidden-catlinks');
if ( $hc.hasClass('mw-hidden-cats-hidden') ) {
$hc.removeClass('mw-hidden-cats-hidden');
$hc.addClass('mw-hidden-cat-user-shown');
$(e.target).text('[–]');
} else {
$hc.removeClass('mw-hidden-cat-user-shown');
$hc.addClass('mw-hidden-cats-hidden');
$(e.target).text('[+]');
}
}
$( hiddencat );
/**
* Script pour alterner entre plusieurs cartes de géolocalisation
*/
function GeoBox_Init(Element){
if (!Element) {
Element = document.body;
}
var cont = $( Element ).find( 'div.img_toogle' ).get();
for (var i = 0,m=cont.length; i < m; i++) {
cont[i].id = 'img_toogle_' + i;
var Boxes = $( cont[i] ).find( '.geobox' ).get();
var ToggleLinksDiv = document.createElement('ul');
ToggleLinksDiv.id = 'geoboxToggleLinks_' + i;
for (var a=0, l=Boxes.length; a<l; a++){
var ThisBox = Boxes[a];
ThisBox.id = 'geobox_' + i + "_" + a;
ThisBox.style.borderTop='0';
var ThisAlt = ThisBox.getElementsByTagName('img')[0].alt;
var toggle = document.createElement('a');
toggle.id = 'geoboxToggle_' + i + "_" + a;
toggle.appendChild(document.createTextNode(ThisAlt));
toggle.href='javascript:;';
toggle.onclick = function(){
GeoBox_Toggle(this);
return false;
};
var Li = document.createElement('li');
Li.appendChild(toggle);
ToggleLinksDiv.appendChild(Li);
if (a === (l-1)) {
Li.style.display = "none";
} else {
ThisBox.style.display = "none";
}
}
cont[i].appendChild(ToggleLinksDiv);
}
}
function GeoBox_Toggle(link){
var a, l;
var ImgToggleIndex = link.id.split('geoboxToggle_').join('').replace(/_.*/g, "");
var GeoBoxIndex = link.id.replace(/.*_/g, "");
var ImageToggle = document.getElementById('img_toogle_' + ImgToggleIndex);
var Links = document.getElementById('geoboxToggleLinks_' + ImgToggleIndex);
var Geobox = document.getElementById('geobox_' + ImgToggleIndex + "_" + GeoBoxIndex);
var Link = document.getElementById('geoboxToggle_' + ImgToggleIndex + "_" + GeoBoxIndex);
if ( (!ImageToggle) || (!Links) || (!Geobox) || (!Link) ) {
return;
}
var AllGeoboxes = $( ImageToggle ).find( '.geobox' ).get();
for ( a=0, l=AllGeoboxes.length; a<l; a++ ) {
var ThisgeoBox = AllGeoboxes[a];
if (ThisgeoBox.id === Geobox.id) {
ThisgeoBox.style.display = "";
} else {
ThisgeoBox.style.display = "none";
}
}
var AllToggleLinks = Links.getElementsByTagName('a');
for (a=0, l=AllToggleLinks.length; a<l; a++) {
var thisToggleLink = AllToggleLinks[a];
if (thisToggleLink.id === Link.id){
thisToggleLink.parentNode.style.display = "none";
}else{
thisToggleLink.parentNode.style.display = "";
}
}
}
if ( ['view','submit'].indexOf(mw.config.get('wgAction')) !== -1) {
$( function() {
GeoBox_Init();
} );
}
/**
* permet d'ajouter un petit lien (par exemple d'aide) à la fin du titre d'une page.
* utilisé par [[Modèle:Aide contextuelle]]
* known bug : conflit avec le changement de titre classique.
* Pour les commentaires, merci de contacter [[user:Plyd|Plyd]].
*/
function rewritePageH1bis() {
var helpPage = document.getElementById("helpPage");
if (helpPage) {
var helpPageURL = document.getElementById("helpPageURL");
var h1 = document.getElementById('firstHeading');
if (helpPageURL && h1) {
h1.innerHTML = h1.innerHTML + '<span id="h1-helpPage">' + helpPageURL.innerHTML + '</span>';
helpPage.style.display = "none";
}
}
}
$( rewritePageH1bis );
/**
* Configuration du tri des diacritique dans les tables de class "sortable"
*/
mw.config.set( 'tableSorterCollation', {'à':'a', 'â':'a', 'æ':'ae', 'é':'e', 'è':'e', 'ê':'e', 'î':'i', 'ï':'i', 'ô':'o', 'œ':'oe', 'û':'u', 'ç':'c', } );
/**
* Rétablit l'accès clavier à la fonction de tri des tableaux
*/
$( function ($) {
$( '.sortable th' ).attr( 'tabindex', 0 ).keypress( function( event ) {
if ( event.which === 13 ) {
$( this ).click();
}
} );
} );
/**
* Direct imagelinks to Commons
*
* Required modules: mediawiki.RegExp, mediawiki.util
*
* @source www.mediawiki.org/wiki/Snippets/Direct_imagelinks_to_Commons
* @author Krinkle
* @version 2015-06-23
* Ajouté le 'uselang' ce 18 janvier 2015 — Ltrlg
*/
if ( mw.config.get( 'wgNamespaceNumber' ) >= 0 ) {
mw.loader.using( [ 'mediawiki.RegExp', 'mediawiki.util', 'user.options' ] ).done(function(){
mw.hook( 'wikipage.content' ).add( function ( $content ) {
var
uploadBase = '//upload.wikimedia.org/wikipedia/commons/',
fileNamespace = mw.config.get( 'wgFormattedNamespaces' )['6'],
localBasePath = new RegExp( '^' + mw.RegExp.escape( mw.util.getUrl( fileNamespace + ':' ) ) ),
localBaseScript = new RegExp( '^' + mw.RegExp.escape( mw.util.wikiScript() + '?title=' + mw.util.wikiUrlencode( fileNamespace + ':' ) ) ),
commonsBasePath = '//commons.wikimedia.org/wiki/File:',
commonsBaseScript = '//commons.wikimedia.org/w/index.php?title=File:',
lang = mw.user.options.get( 'language' );
$content.find( 'a.image' ).attr( 'href', function ( i, currVal ) {
if ( $( this ).find( 'img' ).attr( 'src' ).indexOf( uploadBase ) === 0 ) {
if ( localBasePath.test( currVal ) ) {
return currVal.replace( localBasePath, commonsBasePath ) + '?uselang=' + lang;
} else if ( localBaseScript.test( currVal ) ) {
return currVal.replace( localBaseScript, commonsBaseScript ) + '&uselang=' + lang;
} else {
return currVal;
}
}
} );
} );
} );
}
/**
* Ajout d'un lien « ajouter une section » en bas de page
*/
$( function( $ ) {
var $newSectionLink = $( '#ca-addsection a' );
if ( $newSectionLink.length ) {
$( '#mw-content-text' ).append(
'<div style="text-align:right; font-size:0.9em; margin:1em 0 -0.5em">'
+ '<a href="' + $newSectionLink.attr( 'href' ) + '" title="Commencer une nouvelle section">Ajouter un sujet</a>'
+ '</div>'
);
}
} );
/**
* Recentrage de la page sur l'ancre avec laquelle elle a été appelée
* après le repli des boîtes déroulantes, entre autres.
*/
// execute on window.load to try to get the best accuracy
$(window).load(function () {
// scroll to the url hash if any
if (window.location.hash) {
var currentTarget = document.getElementById(window.location.hash.substring(1));
currentTarget.scrollIntoView(true);
}
});
/************************************************************/
/* Function Strictement spécifiques à un espace de nom ou à une page */
/************************************************************/
/**
* Sur la page d'accueil uniquement
*/
if ( mw.config.get( 'wgIsMainPage' ) ) {
/**
* Lien vers la liste complète des Wikipédias en bas de la liste des langues
*/
mw.loader.using( [ 'mediawiki.util' ], function () {
$( function() {
mw.util.addPortletLink( 'p-lang', '//www.wikipedia.org/', 'Liste complète', 'interwiki-listecomplete', 'Liste complète des Wikipédias' );
} );
} );
}
// ESPACE DE NOM 'SPECIAL'
if ( mw.config.get( 'wgNamespaceNumber' ) === -1 ) {
/**
* Ajoute le namespace aux filtres personnalisés sur [[Spécial:Pages liées]]
* Voir aussi [[MediaWiki:Linkshere]]
*/
if (mw.config.get('wgCanonicalSpecialPageName') === 'Whatlinkshere') {
mw.loader.using('mediawiki.Uri', function () {
$(document).ready(function ($) {
var query = (new mw.Uri(null, {overrideKeys: true})).query;
var append = (query.namespace ? '&namespace=' + encodeURIComponent( query.namespace ) : '')
+ (query.invert ? '&invert=' + encodeURIComponent( query.invert ) : '');
if (append !== '') {
$('#whatlinkshere-customfilters').find('a').each(function () {
this.href += append;
});
}
});
});
}
/**
* Affiche un modèle Information sur la page de téléchargement de fichiers [[Spécial:Téléchargement]]
* Voir aussi [[MediaWiki:Onlyifuploading.js]]
*/
if ( mw.config.get( 'wgCanonicalSpecialPageName' ) === 'Upload' ) {
importScript( 'MediaWiki:Onlyifuploading.js' );
}
/**
* Supprime de la liste des balises disponibles et de la liste des balises supprimables
* certaines balises réservées à des outils automatiques
*/
if (mw.config.get('wgCanonicalSpecialPageName') === 'EditTags') {
mw.loader.using('mediawiki.special.edittags', function () {
$(function ($) {
var tagstokeep = [
'AWB',
'BandeauxCategories',
'BandeauxEbauches',
'BandeauxPortails',
'HotCats',
'LiveRC',
'PaFtec',
'PaStec',
'Popups',
'RenommageCategorie',
'WPCleaner',
'C-helper'
];
function shouldkeep(tag) {
return tagstokeep.indexOf(tag) !== -1;
}
if ($('div.permissions-errors').length) {
return;
}
var $container = $('#mw_edittags_tag_list_chzn');
$container.find('li.search-choice').each(function (i, choice) {
var choicetext = choice.firstChild.innerHTML;
if (shouldkeep(choicetext)) {
var $deletelink = $(choice).find('a.search-choice-close');
if ($deletelink.length) {
$deletelink.remove();
$(choice).css('padding-right', '-=15px');
}
}
});
$container.find('li.active-result').each(function (i, activeresult) {
var activeresulttext = activeresult.innerHTML;
if (shouldkeep(activeresulttext)) {
$(activeresult).remove();
}
});
var canremoveall = true;
$('input.mw-edittags-remove-checkbox').each(function (i, checkbox) {
if (shouldkeep(checkbox.value)) {
checkbox.disabled = 'disabled';
canremoveall = false;
}
});
if (!canremoveall) {
$('#mw-edittags-remove-all').prop('disabled', true);
}
});
});
}
} // Fin du code concernant l'espace de nom 'Special'
// ESPACE DE NOM 'UTILISATEUR'
if ( mw.config.get( 'wgNamespaceNumber' ) === 2 ) {
/* DÉBUT DU CODE JAVASCRIPT DE "CADRE À ONGLETS"
* Fonctionnement du [[Modèle:Cadre à onglets]]
* Modèle implanté par User:Peleguer de https://ca.wikipedia.org
* Actualisé par User:Joanjoc de https://ca.wikipedia.org
* Traduction et adaptation User:Antaya de https://fr.wikipedia.org
* Indépendance de classes CSS et nettoyage par User:Nemoi de https://fr.wikipedia.org
*/
var CadreOngletVoirOngletN = function () {
var vOngletNom = this.id.substr(0,this.id.indexOf("onglet",1));
var vOngletIndex = this.id.substr(this.id.indexOf("onglet",0)+6,this.id.length);
var rule1=$('#' + vOngletNom + ' .ongletBoutonNonSel')[0].style.backgroundColor.toString();
var rule2=$('#' + vOngletNom + ' .ongletBoutonNonSel')[0].style.borderColor.toString(); // rule2=$('.ongletBoutonNonSel').css("border-color"); ne fonctionne pas sous Firefox
var Onglets = $('#' + vOngletNom).children("div").eq(0).children("div");
for ( var j = 0; j < Onglets.length; j++) {
var Onglet = Onglets[j];
var Feuillet = document.getElementById(vOngletNom + "feuillet" + j);
if (vOngletIndex === j) {
Feuillet.style.display = "block";
Feuillet.style.visibility = "visible";
$(Onglet).removeClass("ongletBoutonNonSel");
$(Onglet).addClass("ongletBoutonSel");
Onglet.style.cursor="default";
Onglet.style.backgroundColor="inherit";
Onglet.style.borderTopColor="inherit"; // propriété par propriété sinon Chrome/Chromium se loupe
Onglet.style.borderRightColor="inherit";
Onglet.style.borderBottomColor="inherit";
Onglet.style.borderLeftColor="inherit";
} else {
Feuillet.style.display = "none";
Feuillet.style.visibility = "hidden";
$(Onglet).removeClass("ongletBoutonSel");
$(Onglet).addClass("ongletBoutonNonSel");
Onglet.style.cursor="pointer";
Onglet.style.backgroundColor=rule1;
Onglet.style.borderColor=rule2;
}
}
return false;
};
var CadreOngletInitN = function ( $ ) {
var i, j, Onglet, Feuillet;
var Classeurs = $('div.classeur');
for ( i = 0; i < Classeurs.length; i++ ) {
var Classeur = Classeurs[i];
Classeur.setAttribute( "id", "classeur" + i );
var vOgIni = -1; // pour connaître l’onglet renseigné
var Onglets = $(Classeur).children("div").eq(0).children("div");
var Feuillets = $(Classeur).children("div").eq(1).children("div");
for ( j = 0; j < Onglets.length; j++ ) {
Onglet = Onglets[j];
Feuillet = Feuillets[j];
Onglet.setAttribute( "id", "classeur" + i + "onglet" + j );
Feuillet.setAttribute( "id", "classeur" + i + "feuillet" + j );
Onglet.onclick = CadreOngletVoirOngletN;
if ( $( Onglet ).hasClass( 'ongletBoutonSel' ) ) {
vOgIni=j;
}
}
// inutile sauf dans le cas où l’onglet de départ est *mal* renseigné
if (vOgIni === -1) {
vOgIni = Math.floor((Onglets.length)*Math.random());
document.getElementById("classeur"+i+"feuillet"+vOgIni).style.display = "block";
document.getElementById("classeur"+i+"feuillet"+vOgIni).style.visibility = "visible";
var vBtElem = document.getElementById("classeur"+i+"onglet"+vOgIni);
$(Onglet).removeClass("ongletBoutonNonSel");
$(Onglet).addClass("ongletBoutonSel");
vBtElem.style.cursor="default";
vBtElem.style.backgroundColor="inherit";
vBtElem.style.borderTopColor="inherit"; // propriété par propriété sinon Chrome/Chromium se loupe
vBtElem.style.borderRightColor="inherit";
vBtElem.style.borderBottomColor="inherit";
vBtElem.style.borderLeftColor="inherit";
}
}
};
$( CadreOngletInitN );
/*FIN DU CODE JAVASCRIPT DE "CADRE À ONGLETS"*/
} // Fin du code concernant l'espace de nom 'Utilisateur'
// ESPACE DE NOM 'RÉFÉRENCE'
if ( mw.config.get( 'wgNamespaceNumber' ) === 104 ) {
/*
* Choix du mode d'affichage des références
* Devraient en principe se trouver côté serveur
* @note L'ordre de cette liste doit correspondre a celui de Modèle:Édition !
*/
// select subsection of special characters
var chooseBibSubset = function (s) {
var l = document.getElementsByTagName('div');
for (var i = 0; i < l.length; i++) {
if (l[i].className === 'BibList') {
l[i].style.display = s === 0 ? 'block' : 'none';
} else if (l[i].className === 'WikiNorme') {
l[i].style.display = s === 1 ? 'block' : 'none';
} else if (l[i].className === 'BibTeX') {
l[i].style.display = s === 2 ? 'block' : 'none';
} else if (l[i].className === 'ISBD') {
l[i].style.display = s === 3 ? 'block' : 'none';
} else if (l[i].className === 'ISO690') {
l[i].style.display = s === 4 ? 'block' : 'none';
}
}
};
var addBibSubsetMenu = function () {
var specialBib = document.getElementById('specialBib');
if (!specialBib) {
return;
}
specialBib.style.display = 'block';
var menu = '<select style="display:inline;" onChange="chooseBibSubset(selectedIndex)">'
+ '<option>Liste</option>'
+ '<option>WikiNorme</option>'
+ '<option>BibTeX</option>'
+ '<option>ISBD</option>'
+ '<option>ISO690</option>'
+ '</select>';
specialBib.innerHTML = specialBib.innerHTML + menu;
/* default subset - try to use a cookie some day */
chooseBibSubset(0);
};
$( addBibSubsetMenu );
} // Fin du code concernant l'espace de nom 'Référence'