SFTG Recherche, soutient un projet d'analyse de l'usage, de l'intérêt et de la contribution à ce site. Merci d'avoir répondu à l'enquête.
MediaWiki:Common.js
Révision datée du 24 février 2019 à 16:25 par Yves.bertin (discussion | contributions) (3 révisions importées)
Note : après avoir enregistré vos modifications, il se peut que vous deviez forcer le rechargement complet du cache de votre navigateur pour voir les changements.
- Firefox / Safari : maintenez la touche Maj (Shift) en cliquant sur le bouton Actualiser ou pressez Ctrl-F5 ou Ctrl-R (⌘-R sur un Mac).
- Google Chrome : appuyez sur Ctrl-Maj-R (⌘-Shift-R sur un Mac).
- Internet Explorer : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5.
- Opera : allez dans Menu → Settings (Opera → Préférences sur un Mac) et ensuite à Confidentialité et sécurité → Effacer les données d’exploration → Images et fichiers en cache.
/*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 générales MediaWiki (pallient les limitations du logiciel) */
/* Surveiller : https://git.wikimedia.org/history/mediawiki%2Fcore.git/HEAD/skins%2Fcommon%2Fwikibits.js */
/**********************************************************************************************************/
/**
* 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,
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( $content ) {
if ( !$content ) {
$content = $( '#mw-content-text' );
} else if ( !$content.jquery ) {
$content = $( $content );
}
var $tables = $content.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' ) );
// le modèle dispose d'une classe "navbox-title",
// sauf que les palettes "inlinées" (e.g. « {| class="navbox collapsible collapsed" ») n'ont pas cette classe
$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 );
}
} );
// permet de dérouler/enrouler les palettes en cliquant n'importe où sur l'entête
// (utilisation de la classe "navbox-title", comme ça seules les vraies palettes utilisant le modèle sont ciblées)
$content.find( '.navbox-title' )
.click( function ( e ) {
if ( $( e.target ).closest( 'a' ).length ) {
return;
}
$( this ).find( '.navboxToggle a' ).click();
} )
.css( 'cursor', 'pointer' );
}
mw.hook( 'wikipage.content' ).add( Palette );
/**
* Pour [[Modèle:Boîte déroulante]]
*/
var BoiteDeroulante_Enrouler = '[masquer]';
var BoiteDeroulante_Derouler = '[afficher]';
var BoiteDeroulante_index = -1;
function BoiteDeroulante_toggle(indexBoiteDeroulante){
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;
if ( NavToggle.innerHTML === caption[1] ) {
NavToggle.innerHTML = caption[0];
$(NavFrame).find('div.NavContent').first().hide();
} else {
NavToggle.innerHTML = caption[1];
$(NavFrame).find('div.NavContent').first().show();
}
}
function BoiteDeroulante( $content ) {
if ( !$content ) {
$content = $( '#mw-content-text' );
} else if ( !$content.jquery ) {
$content = $( $content );
}
$content.find( '.NavFrame' ).each( function ( _, NavFrame ) {
var Enrouler, Derouler, CaptionContainer, NavToggle, NavToggleText;
BoiteDeroulante_index++;
if (NavFrame.title && NavFrame.title.indexOf("/") !== -1) {
Enrouler = mw.html.escape(NavFrame.title).split("/")[1];
Derouler = mw.html.escape(NavFrame.title).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;
BoiteDeroulante_toggle(BoiteDeroulante_index);
} );
// permet de dérouler/enrouler les boîtes en cliquant n'importe où sur l'entête
$content.find( '.NavHead' )
.click( function ( e ) {
if ( $( e.target ).closest( 'a' ).length ) {
return;
}
var toggle = $( this ).siblings( 'a.NavToggle' )[0];
if ( toggle ) {
toggle.click(); // pas du jquery, mais du vanilla js
}
} )
.css( 'cursor', 'pointer' );
}
mw.hook( 'wikipage.content' ).add( 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;
}
$( node ).find( 'div.diaporama' ).each( function ( _, DiaporamaDiv ) {
Diaporama.Fonctions.InitDiaporama( DiaporamaDiv );
} );
};
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.replace("px", "");
} 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 = mw.html.escape(DiaporamaDiv.className);
var ParamDelay = DiaporamaDivClass.match(/Delay([0-9]+[.,]?[0-9]*)/);
if (ParamDelay !== null) {
ParamDelay = parseFloat(ParamDelay[1].replace(",", "."));
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 (mw.util.getParamValue('printable') === 'yes') {
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);
}
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.style.marginLeft = '0.3em';
$(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('[+]');
}
}
mw.loader.using('mediawiki.util', function () {
$( hiddencat );
});
/**
* Script pour alterner entre plusieurs cartes de géolocalisation
*/
function GeoBox_Init(Element){
if (!Element) {
Element = document.body;
}
$( Element ).find( 'div.img_toogle' ).each( function ( i, Container ) {
Container.id = 'img_toogle_' + i;
var Boxes = $( Container ).find( '.geobox' );
var ToggleLinksDiv = document.createElement('ul');
ToggleLinksDiv.id = 'geoboxToggleLinks_' + i;
Boxes.each( function ( a, ThisBox ) {
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 === (Boxes.length - 1)) {
Li.style.display = "none";
} else {
ThisBox.style.display = "none";
}
} );
Container.appendChild(ToggleLinksDiv);
} );
}
function GeoBox_Toggle(link){
var ImgToggleIndex = link.id.replace('geoboxToggle_', '').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;
}
$( ImageToggle ).find( '.geobox' ).each( function ( _, ThisgeoBox ) {
if (ThisgeoBox.id === Geobox.id) {
ThisgeoBox.style.display = "";
} else {
ThisgeoBox.style.display = "none";
}
} );
$( Links ).find( 'a' ).each( function ( _, thisToggleLink ) {
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 h1 = document.getElementById('firstHeading');
if (h1) {
h1.innerHTML += '<span id="h1-helpPage">' + helpPage.innerHTML + '</span>';
}
}
}
$( 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', } );
/**
* 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
*/
if ( mw.config.get( 'wgAction' ) === 'view' ) {
$( function( $ ) {
var $newSectionLink = $( '#ca-addsection' ).find( '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>'
);
}
} );
}
/**
* Repositionnement de la page sur l'ancre avec laquelle elle a été appelée
* après le repli des boîtes déroulantes, entre autres.
*/
if (window.location.hash) {
$(function ($) {
var currentTarget = document.getElementById(window.location.hash.substring(1));
if (currentTarget) {
setTimeout(function () {
currentTarget.scrollIntoView();
}, 1);
}
});
}
/************************************************************/
/* Function Strictement spécifiques à un espace de nom ou à une page */
/************************************************************/
// 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 () {
$(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' ) {
importScript( 'MediaWiki:Common.js/EditTags.js' );
}
} // Fin du code concernant l'espace de nom 'Special'
// ESPACE DE NOM 'UTILISATEUR'
if ( mw.config.get( 'wgNamespaceNumber' ) === 2 ) {
/*
* Fonctionnement du [[Modèle:Cadre à onglets]]
* Voir aussi [[MediaWiki:Gadget-CadreOnglets.js]]
*/
$( function ( $ ) {
if ( document.getElementsByClassName( 'classeur' ).length ) {
mw.loader.load( 'ext.gadget.CadreOnglets' );
}
} );
} // 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'
// TOUS LES ESPACES DE NOMS SAUF L'ESPACE PRINCIPAL
/* Permet d'afficher un compte à rebours sur une page avec le modèle [[Modèle:Compte à rebours]] */
/* Plyd - 3 février 2009 */
function Rebours() {
try {
if (document.getElementById("rebours")) {
var destime, Maintenant, Future, Diff, TempsRestantJ, TempsRestantH, TempsRestantM, TempsRestantS, TempsRestant;
destime = mw.html.escape(document.getElementById("rebours").title).split(";;");
Maintenant = (new Date ()).getTime();
Future = new Date(Date.UTC(destime[0], (destime[1]-1), destime[2], destime[3], destime[4], destime[5])).getTime();
Diff = (Future-Maintenant);
if (Diff < 0) {Diff = 0;}
TempsRestantJ = Math.floor(Diff/(24*3600*1000));
TempsRestantH = Math.floor(Diff/(3600*1000)) % 24;
TempsRestantM = Math.floor(Diff/(60*1000)) % 60;
TempsRestantS = Math.floor(Diff/1000) % 60;
TempsRestant = "" + destime[6] + " ";
if (TempsRestantJ === 1) {
TempsRestant = TempsRestant + TempsRestantJ + " jour ";
} else if (TempsRestantJ > 1) {
TempsRestant = TempsRestant + TempsRestantJ + " jours ";
}
TempsRestant = TempsRestant + TempsRestantH + " h " + TempsRestantM + " min " + TempsRestantS + " s";
document.getElementById("rebours").innerHTML = TempsRestant;
setTimeout( function () { Rebours(); }, 1000);
}
} catch (e) {}
}
// Personnalisation des liens dans les pages d'aide selon un paramètre de l'URL.
// Utilisé par Modèle:Brouillon.
function ReplaceSourcePageInLinks() {
var match = window.location.search.match( /[?&]sourcepage=([^&]*)/ );
if ( !match ) {
return;
}
var page = decodeURIComponent( match[1] );
$( '.sourcepage-subst a' ).each( function() {
if ( /^(https?:)?\/\/[^/]+\.wikipedia\.org\//.test( this.href ) ) {
this.href = this.href.replace( 'TITRE-A-REMPLACER', encodeURIComponent( page ) );
}
} );
}
if ( mw.config.get( 'wgNamespaceNumber' ) !== 0 ) {
$( Rebours );
$( ReplaceSourcePageInLinks );
}
/**
* Ajoute la date de dernière modification sur le bandeau événement récent
*/
function LastModCopy( $ ) {
var lastmodcopy = $( '.lastmodcopy' );
if ( lastmodcopy.length ) {
// L'id change entre Vector d'une part, Monobook et Modern d'autre part ; Cologneblue non supporté
var html = $( '#footer-info-lastmod' ).html() || $( '#lastmod' ).html();
if ( html ) {
lastmodcopy.html( html );
}
}
}
$( LastModCopy );