Domaines
Communes
Quartiers de Brest
Espaces de noms

Variantes
Actions
De Wiki-Brest

MediaWiki:Common.js : Différence entre versions

(màj syntaxe)
 
(72 révisions intermédiaires par 4 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
/* Any JavaScript here will be loaded for all users on every page load. */
+
/* 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
 +
monobook.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 !
 +
 
 +
NE PAS RETIRER CECI SINON : remplacement des signature, substitution des modèles, ... : <nowiki>
 +
 
 +
/*************************************************************/
 +
/* Fonctions javascript : pallient les limites de javascript */
 +
/* Surveiller : http://www.ecmascript.org/                  */
 +
/*************************************************************/
 +
 
 +
/**
 +
* insertAfter : insérer un élément dans une page
 +
*/
 +
function insertAfter(parent, node, referenceNode) {
 +
  parent.insertBefore(node, referenceNode.nextSibling);
 +
}
 +
 
 +
 
 +
/**
 +
* getElementsByClass : rechercher les éléments de la page dont le paramètre "class" est celui recherché
 +
*/
 +
function getElementsByClass(searchClass, node, tag) {
 +
  if (node == null) node = document;
 +
  if (tag == null) tag = '*';
 +
  return getElementsByClassName(node, tag, searchClass);
 +
}
 +
 
 +
/**
 +
* Diverses fonctions manipulant les classes
 +
* Utilise des expressions régulières et un cache pour de meilleures perfs
 +
* isClass et whichClass depuis http://fr.wikibooks.org/w/index.php?title=MediaWiki:Common.js&oldid=140211
 +
* hasClass, addClass, removeClass et eregReplace 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
 +
*/
 +
function isClass(element, classe) {
 +
    return hasClass(element, classe);
 +
}
 +
 
 +
function whichClass(element, classes) {
 +
    var s=" "+element.className+" ";
 +
    for(var i=0;i<classes.length;i++)
 +
        if (s.indexOf(" "+classes[i]+" ")>=0) return i;
 +
    return -1;
 +
}
 +
 +
function hasClass(node, className) {
 +
  if (node.className == className) {
 +
    return true;
 +
  }
 +
  var reg = new RegExp('(^| )'+ className +'($| )')
 +
  if (reg.test(node.className)) {
 +
    return true;
 +
  }
 +
  return false;
 +
}
 +
 +
function addClass(node, className) {
 +
    if (hasClass(node, className)) {
 +
        return false;
 +
    }
 +
    node.className += ' '+ className;
 +
    return true;
 +
}
 +
 +
function removeClass(node, className) {
 +
  if (!hasClass(node, className)) {
 +
    return false;
 +
  }
 +
  node.className = eregReplace('(^|\\s+)'+ className +'($|\\s+)', ' ', node.className);
 +
  return true;
 +
}
 +
 
 +
function eregReplace(search, replace, subject) {
 +
    return subject.replace(new RegExp(search,'g'), replace);
 +
}
 +
 
 +
 
 +
/**
 +
* Récupère la valeur du cookie
 +
*/
 +
function getCookieVal(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;
 +
}
 +
 
 +
/************************************************************************/
 +
/* Fonctions générales mediawiki (pallient les limitations du logiciel) */
 +
/* Surveiller : http://fr.wikipedia.org/skins-1.5/common/wikibits.js    */
 +
/************************************************************************/
  
<poem><code><nowiki>
 
 
/*
 
/*
  * Ajout de boutons à la barre d'outils
+
  * Fonction générales de lancement de fonctions ou de script
 +
* DÉPRÉCIÉ : utiliser $() simplement
 
  */
 
  */
/**
+
function addLoadEvent(func) {
* Générateur de tableaux
+
  $(func);
* English: Generate an array using Mediawiki syntax
+
}
*
+
 
* @author: fr:user:dake
+
/**
  * @version: 0.1
+
  * Insérer un JavaScript d'une page particulière, idée de Mickachu
 
  */
 
  */
 +
function loadJs(page) {
 +
  mw.loader.load('http://fr.wikipedia.org/w/index.php?title=' + page +
 +
                '&action=raw&ctype=text/javascript&dontcountme=s');
 +
}
  
function generateTableau(nbCol, nbRow, border, styleHeader, styleLine)
+
/**
{
+
* Projet JavaScript
    var code = "\n";
+
*/
    if (styleHeader==1) {
+
function obtenir(name) {
          code += '{{entête';
+
  if(name.indexOf('caractères/') != -1) loadJs('MediaWiki:JSScripts/' + name);
          code += ' tableau charte}}\n';
+
  else loadJs('MediaWiki:Gadget-' + name + '.js');
    } else {
 
          code += '{| border="' + border + '"\n';
 
          code += '|+ Titre du tableau\n';
 
    }
 
   
 
    for (var i=0; i<nbCol; i++) code += '! en-tête ' + i + '\n';
 
   
 
    for (var j=0; j<nbRow; j++) {
 
          if ((j+1)%2==0 && styleLine==1) {
 
                code += '|-{'+'{ligne grise}'+'}\n';
 
          } else {           
 
                code += '|-----\n';
 
          }
 
         
 
          for (var i=0; i<nbCol; i++) code += '| élément\n';
 
    }
 
   
 
    code += '|}';
 
    insertTags('','', code);
 
 
}
 
}
  
/**
+
 
*
+
/**************************************/
* English: Open a popup with parameters to generate an array.
+
/* Applications pour les lecteurs    */
* The number of rows/columns can be modified. Some additional
+
/**************************************/
* parameters are related to templates available on :fr
+
 
*
+
/* Devraient en principe se trouver côté serveur */
  * @author: fr:user:dake
+
 
  * @version: 0.1
+
/*
 +
  * Choix du mode d'affichage des références
 +
  * @note L'ordre de cette liste doit correspondre a celui de Modèle:Édition !
 
  */
 
  */
  
function popupTableau()
+
function addBibSubsetMenu() {
{
+
   var specialBib = document.getElementById('specialBib');
   var popup = window.open('','name','height=400,width=500');
+
  if (!specialBib) return;
 +
 
 +
  specialBib.style.display = 'block';
 +
  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;
 
    
 
    
   javaCode =  '<script type="text\/javascript">function insertCode(){';
+
   /* default subset - try to use a cookie some day */
  javaCode += 'var row = parseInt(document.paramForm.inputRow.value); ';
+
  chooseBibSubset(0);
   javaCode += 'var col = parseInt(document.paramForm.inputCol.value); ';
+
}
  javaCode += 'var bord = parseInt(document.paramForm.inputBorder.value); ';
+
 
   javaCode += 'var styleHeader = document.paramForm.inputHeader.checked; ';
+
// select subsection of special characters
  javaCode += 'var styleLine = document.paramForm.inputLine.checked; ';
+
function chooseBibSubset(s) {
   javaCode += 'window.opener.generateTableau(col,row,bord,styleHeader,styleLine); ';
+
   var l = document.getElementsByTagName('div');
  javaCode += '}<\/script>';
+
   for (var i = 0; i < l.length ; i++) {
 
+
    if(l[i].className == 'BibList')   l[i].style.display = s == 0 ? 'block' : 'none';
  popup.document.write('<html><head><title>Paramètres du tableau</title>');
+
    else if(l[i].className == 'WikiNorme') l[i].style.display = s == 1 ? 'block' : 'none';
  popup.document.write('<script type="text\/javascript" src="\/skins-1.5\/common\/wikibits.js"><!-- wikibits js --><\/script>');
+
    else if(l[i].className == 'BibTeX')   l[i].style.display = s == 2 ? 'block' : 'none';
  popup.document.write('<style type="text\/css" media="screen projection">/*<![CDATA[*/ @import "\/skins-1.5\/monobook\/main.css?5"; /*]]>*/<\/style>');
+
    else if(l[i].className == 'ISBD')     l[i].style.display = s == 3 ? 'block' : 'none';
  popup.document.write(javaCode);
+
    else if(l[i].className == 'ISO690')   l[i].style.display = s == 4 ? 'block' : 'none';
  popup.document.write('</head><body>');
+
   }
  popup.document.write('<p>Veuillez entrer les paramètres du tableau : </p>');
 
  popup.document.write('<form name="paramForm">');
 
  popup.document.write('Nombre de lignes : <input type="text" name="inputRow" value="3" ><p>');
 
  popup.document.write('Nombre de colonnes : <input type="text" name="inputCol" value="3" ><p>');
 
  popup.document.write('Largeur de la bordure : <input type="text" name="inputBorder" value="1" ><p>');
 
  popup.document.write('En-tête en gris (style « charte graphique ») : <input type="checkbox" name="inputHeader" checked="1" ><p>');
 
  popup.document.write('Lignes grises alternées (style « charte graphique ») : <input type="checkbox" name="inputLine" checked="1" ><p>');
 
  popup.document.write('</form">');
 
  popup.document.write('<p><a href="javascript:insertCode()"> Insérer le code dans la fenêtre d\'édition</a></p>');
 
  popup.document.write('<p><a href="javascript:self.close()"> Fermer</a></p>');
 
  popup.document.write('</body></html>');
 
   popup.document.close();
 
 
}
 
}
 +
 +
$(addBibSubsetMenu);
  
 
/**
 
/**
  * Insertion de nouveaux boutons dans la barre d'outil
+
  * Transformer les pages du Bistro en page de discussion
 
  */
 
  */
 +
function DiscussionBistro() {
 +
  if(  (mw.config.get('wgPageName').search('Wikipédia:Le_Bistro') != -1)
 +
    || (mw.config.get('wgPageName').search('Wikipédia:Bulletin_des_administrateurs') != -1))
 +
    document.body.className = 'ns-1';
 +
}
  
function addCustomButton(imageFile, speedTip, tagOpen, tagClose, sampleText, imageId) {
+
$(DiscussionBistro);
  mwCustomEditButtons[mwCustomEditButtons.length] =
+
 
    {"imageId": imageId,
+
/**
    "imageFile": imageFile,
+
* Transformer certaines pages en page de discussion avec le modèle {{page de discussion}}
    "speedTip": speedTip,
+
*/
    "tagOpen": tagOpen,
+
function TransformeEnDiscussion() {
    "tagClose": tagClose,
+
  var transformeEnPDD = document.getElementById("transformeEnPageDeDiscussion");
    "sampleText": sampleText};
+
  if(transformeEnPDD) document.body.className = "ns-1";
 
}
 
}
  
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/0/04/Button_array.png','Tableau','{|\n|-\n|\n|\n|}','','','mw-editbutton-array');
+
$(TransformeEnDiscussion);
  
  if (wgNamespaceNumber != 0) addCustomButton('http://upload.wikimedia.org/wikipedia/commons/c/c9/Button_strike.png','Rayer','<s>','</s>','');
+
/**
 +
* Transformer certaines pages en pseudo-article
 +
* c'est raisonnable ? --Tavernier
 +
  */
 +
function TransformeEnArticle() {
 +
  var transformeEnA = document.getElementById("transformeEnArticle");
 +
  if(transformeEnA) document.body.className = "ns-0";
 +
}
  
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/8/88/Btn_toolbar_enum.png','Énumération','\n# élément 1\n# élément 2\n# élément 3','','');
+
$(TransformeEnArticle);
  
  addCustomButton('http://upload.wikimedia.org/wikipedia/commons/1/11/Btn_toolbar_liste.png','Liste','\n* élément A\n* élément B\n* élément C','','');
+
/**
 +
* Afficher une explication au nombre de caractères dans la liste de suivi
 +
  */
 +
function toolTipPlusMinus() {
 +
  var tt = "Nombre de caractères d'écart entre les deux dernières versions de la page";
 +
  var elmts = document.getElementsByTagName("span");
 +
  for(var cpt = 0; cpt < elmts.length; cpt++) {
 +
    if (/mw-plusminus-(pos|neg|null)/.test(elmts[cpt].className) || /mw-plusminus-(pos|neg|null)/.test(elmts[cpt].getAttribute("class")))
 +
      elmts[cpt].title = tt;
 +
  }
 +
}
  
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/9/9e/Btn_toolbar_gallery.png','Galerie d\'images','\n<gallery>\nImage:Exemple.jpg|[[Tournesol]]\nImage:Exemple1.jpg|[[La Joconde]]\nImage:Exemple2.jpg|Un [[hamster]]\n</gallery>','','');
+
$(toolTipPlusMinus);
  
  addCustomButton('http://upload.wikimedia.org/wikipedia/commons/3/37/Btn_toolbar_commentaire.png','Commentaire','<!--','-->','');
+
/**
 +
  * Utilisation du modèle Modèle:Images
 +
*/
 +
function toggleImage(group, remindex, shwindex) {
 +
  document.getElementById("ImageGroupsGr"+group+"Im"+remindex).style.display="none";
 +
  document.getElementById("ImageGroupsGr"+group+"Im"+shwindex).style.display="inline";
 +
}
  
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/4/47/Button_redir.png','Redirection','#REDIRECT [[',']]','nom de la destination');
+
function imageGroup(){
 +
  if (document.URL.match(/printable/g)) return;
 +
  var bc=document.getElementById("bodyContent");
 +
  if( !bc ) bc = document.getElementById("mw_contentholder");
 +
  if( !bc ) return;
 +
  var divs=bc.getElementsByTagName("div");
 +
  var i = 0, j = 0;
 +
  var units, search;
 +
  var currentimage;
 +
  var UnitNode;
 +
  for (i = 0; i < divs.length ; i++) {
 +
    if (divs[i].className != "ImageGroup") continue;
 +
    UnitNode=undefined;
 +
    search=divs[i].getElementsByTagName("div");
 +
    for (j = 0; j < search.length ; j++) {
 +
      if (search[j].className != "ImageGroupUnits") continue;
 +
      UnitNode=search[j];
 +
      break;
 +
    }
 +
    if (UnitNode==undefined) continue;
 +
    units=Array();
 +
    for (j = 0 ; j < UnitNode.childNodes.length ; j++ ) {
 +
      var temp = UnitNode.childNodes[j];
 +
      if (temp.className=="center") units.push(temp);
 +
    }
 +
    for (j = 0 ; j < units.length ; j++) {
 +
      currentimage=units[j];
 +
      currentimage.id="ImageGroupsGr"+i+"Im"+j;
 +
      var imghead = document.createElement("div");
 +
      var leftlink;
 +
      var rightlink;
 +
      if (j != 0) {
 +
        leftlink = document.createElement("a");
 +
        leftlink.href = "javascript:toggleImage("+i+","+j+","+(j-1)+");";
 +
        leftlink.innerHTML="<img src='http://upload.wikimedia.org/wikipedia/commons/thumb/4/49/ArrowLeftNavbox.svg/12px-ArrowLeftNavbox.svg.png'>";
 +
      } else {
 +
        leftlink = document.createElement("span");
 +
        leftlink.innerHTML="&nbsp;";
 +
      }
 +
      if (j != units.length - 1) {
 +
        rightlink = document.createElement("a");
 +
        rightlink.href = "javascript:toggleImage("+i+","+j+","+(j+1)+");";
 +
        rightlink.innerHTML="<img src='http://upload.wikimedia.org/wikipedia/commons/thumb/1/10/ArrowRightNavbox.svg/12px-ArrowRightNavbox.svg.png'>";
 +
      } else {
 +
        rightlink = document.createElement("span");
 +
        rightlink.innerHTML="&nbsp;";
 +
      }
 +
      var comment = document.createElement("tt");
 +
      comment.innerHTML = "("+ (j+1) + "/" + units.length + ")";
 +
      with(imghead) {
 +
        style.fontSize="110%";
 +
        style.fontweight="bold";
 +
        appendChild(leftlink);
 +
        appendChild(comment);
 +
        appendChild(rightlink);
 +
      }
 +
      currentimage.insertBefore(imghead,currentimage.childNodes[0]);
 +
      if (j != 0) currentimage.style.display="none";
 +
    }
 +
  }
 +
}
  
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/b/b4/Button_category03.png','Catégorie','[[Catégorie:',']]','nom de la catégorie');
+
$(imageGroup);
  
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/3/3b/Button_template_alt.png','Modèle','{{','}}','modèle ou page à inclure');
 
  
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/c/c4/Button_ref.png','Référence','<ref>','</ref>','référence, citation ou lien');
 
  
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/6/64/Buttonrefvs8.png','Index des références','== Notes et références ==\n<references /> <!-- aide : http://fr.wikipedia.org/wiki/Aide:Notes et références -->','','');
+
/* En phase de test */
 +
/* DÉBUT DU CODE JAVASCRIPT DE "CADRE À ONGLETS"
 +
    Fonctionnement du [[Modèle:Cadre à onglets]]
 +
    Modèle implanté par User:Peleguer de http://ca.wikipedia.org
 +
    Actualisé par User:Joanjoc de http://ca.wikipedia.org
 +
    Traduction et adaptation User:Antaya de http://fr.wikipedia.org
 +
*/
 +
function CadreOngletInit(){
 +
// retour si ailleurs que sur l'espace utilisateur,
 +
// sachant que c'est une horreur au niveau de l'accessibilité
 +
// et qu'il est impossible de "récupérer" ou de recycler ce script
 +
// (celui-ci fonctionnant par inclusion de sous pages)
 +
if (mw.config.get('wgCanonicalNamespace') != 'User') return; 
 +
  var i=0     
 +
  for (i=0;i<=9;i++){
 +
    var vMb = document.getElementById("mb"+i);
 +
    if (!vMb) break;
 +
 +
    var j=1   
 +
    var vOgIni = 0 
 +
    for (j=1;j<=9;j++){
 +
        var vBt = document.getElementById("mb"+i+"bt"+j);
 +
        if (!vBt) break;
 +
        vBt.onclick = CadreOngletVoirOnglet;         
 +
        if (vBt.className=="mbBoutonSel") vOgIni=j;
 +
    }
  
var voirAussi = '<!-- Suggestion de présentation des annexes. Aide : http://fr.wikipedia.org/wiki/Aide:Notes et références -->\n'
+
    if (vOgIni == 0) {
+ '== Notes et références de l\'article ==\n'
+
        vOgIni = 1+Math.floor((j-1)*Math.random()) ;
+ '<references/>\n'
+
        document.getElementById("mb"+i+"og"+vOgIni).style.display = "block";
+ '== Voir aussi ==\n'
+
        document.getElementById("mb"+i+"og"+vOgIni).style.visibility = "visible";
+ '=== Articles connexes ===\n'
+
        document.getElementById("mb"+i+"bt"+vOgIni).className="mbBoutonSel";
+ '* [[À remplacer]]\n'
+
    }
+ '*\n'
+
  }
+ '=== Liens et documents externes ===\n'
+
}
+ '*\n';
+
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/b/bb/Seealso.png','Section Voir aussi',voirAussi,'','');
+
function CadreOngletVoirOnglet(){
 
+
  var vMbNom = this.id.substr(0,3);  
// Changer le lien du bouton de création de tableau
+
  var vIndex = this.id.substr(5,1);  
function button_tab()
 
{
 
toolbarArray = document.getElementById('mw-editbutton-array');
 
if (!toolbarArray) return false;
 
 
   
 
   
toolbarArray.onclick = function() {
+
  var i=1
  popupTableau();
+
  for (i=1;i<=9;i++){       
  return false;
+
        var vOgElem = document.getElementById(vMbNom+"og"+i);
 +
        if (!vOgElem) break;
 +
        if (vIndex==i){
 +
                vOgElem.style.display = "block";
 +
                vOgElem.style.visibility = "visible";
 +
                document.getElementById(vMbNom+"bt"+i).className="mbBoutonSel";
 +
        } else {            
 +
                vOgElem.style.display = "none";
 +
                vOgElem.style.visibility = "hidden";
 +
                document.getElementById(vMbNom+"bt"+i).className="mbBouton";
 +
        }
 +
  }
 +
  return false;  
 
  }
 
  }
 +
 +
$(CadreOngletInit);
 +
 +
/*FIN DU CODE JAVASCRIPT DE "CADRE À ONGLETS"*/
 +
 +
/**
 +
* Boîtes déroulantes
 +
*
 +
* Pour [[Modèle:Méta palette de navigation]]
 +
*/
 +
 +
var autoCollapse = 2;
 +
var collapseCaption = '[ Enrouler ]';
 +
var expandCaption = '[ Dérouler ]';
 +
 +
function collapseTable( tableIndex ) {
 +
  var Button = document.getElementById( "collapseButton" + tableIndex );
 +
  var Table = document.getElementById( "collapsibleTable" + tableIndex );
 +
  if ( !Table || !Button ) return false;
 +
 +
  var Rows = Table.getElementsByTagName( "tr" );
 +
 +
  if ( Button.firstChild.data == collapseCaption ) {
 +
    for ( var i = 1; i < Rows.length; i++ ) {
 +
      Rows[i].style.display = "none";
 +
    }
 +
    Button.firstChild.data = expandCaption;
 +
  } else {
 +
    for ( var i = 1; i < Rows.length; i++ ) {
 +
      Rows[i].style.display = Rows[0].style.display;
 +
    }
 +
    Button.firstChild.data = collapseCaption;
 +
  }
 
}
 
}
hookEvent('load', button_tab);
 
  
// Supprime le bouton 'signature' sur les articles
+
function createCollapseButtons() {
function hideSigButtonOnArticles() {
+
   var tableIndex = 0;
   if (wgNamespaceNumber != 0) return;
+
  var NavigationBoxes = new Object();
   var btnSigImg = document.getElementById('mw-editbutton-signature');
+
   var Tables = document.getElementsByTagName( "table" );
   if (!btnSigImg) return;
+
 
  btnSigImg.style.display = "none";
+
   for ( var i = 0; i < Tables.length; i++ ) {
 +
    if ( hasClass( Tables[i], "collapsible" ) ) {
 +
      NavigationBoxes[ tableIndex ] = Tables[i];
 +
      Tables[i].setAttribute( "id", "collapsibleTable" + tableIndex );
 +
 
 +
      var Button    = document.createElement( "span" );
 +
      var ButtonLink = document.createElement( "a" );
 +
      var ButtonText = document.createTextNode( collapseCaption );
 +
 
 +
      Button.style.styleFloat = "right";
 +
      Button.style.cssFloat = "right";
 +
      Button.style.fontWeight = "normal";
 +
      Button.style.textAlign = "right";
 +
      Button.style.width = "6em";
 +
 
 +
      ButtonLink.setAttribute( "id", "collapseButton" + tableIndex );
 +
      ButtonLink.setAttribute( "href", "javascript:collapseTable(" + tableIndex + ");" );
 +
      ButtonLink.appendChild( ButtonText );
 +
 
 +
      Button.appendChild( ButtonLink );
 +
 
 +
      var Header = Tables[i].getElementsByTagName( "tr" )[0].getElementsByTagName( "th" )[0];
 +
      /* only add button and increment count if there is a header row to work with */
 +
      if (Header) {
 +
        Header.insertBefore( Button, Header.childNodes[0] );
 +
        tableIndex++;
 +
      }
 +
    }
 +
  }
 +
 
 +
  for (var i = 0; i < tableIndex; i++) {
 +
    if ( hasClass( NavigationBoxes[i], "collapsed" ) || ( tableIndex >= autoCollapse && hasClass( NavigationBoxes[i], "autocollapse" ) ) ) collapseTable( i );
 +
  }
 
}
 
}
hookEvent('load', hideSigButtonOnArticles);
 
  
/* Fin de la barre d'outils
+
$(createCollapseButtons);
  
/*
+
/**
Caractères spéciaux
+
* Pour [[Modèle:Boîte déroulante]]
-------------------
+
*/
 +
var NavigationBarShowDefault = 0;
 +
 +
function toggleNavigationBar(indexNavigationBar) {
 +
  var NavToggle = document.getElementById("NavToggle" + indexNavigationBar);
 +
  var NavFrame = document.getElementById("NavFrame" + indexNavigationBar);
 +
 +
  if (!NavFrame || !NavToggle) return;
 +
 +
  // surcharge des libellés dérouler/enrouler grâce a l'attribut title
 +
  // exemple : title="[déroulade]/[enroulade]"
 +
  var caption = [expandCaption, collapseCaption];
 +
  if (NavFrame.title && NavFrame.title.length > 0) {
 +
    caption = NavFrame.title.split("/");
 +
    if (caption.length < 2) caption.push(collapseCaption);
 +
  }
 +
 +
  // if shown now
 +
  if (NavToggle.firstChild.data == caption[1]) {
 +
    for ( var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling ) {
 +
      if (hasClass(NavChild, 'NavPic')) NavChild.style.display = 'none';
 +
      if (hasClass(NavChild, 'NavContent')) NavChild.style.display = 'none';
 +
      if (hasClass(NavChild, 'NavToggle')) NavChild.firstChild.data = caption[0];
 +
    }
 +
 +
  // if hidden now
 +
  } else if (NavToggle.firstChild.data == caption[0]) {
 +
    for ( var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling ) {
 +
      if (hasClass(NavChild, 'NavPic')) NavChild.style.display = 'block';
 +
      if (hasClass(NavChild, 'NavContent')) NavChild.style.display = 'block';
 +
      if (hasClass(NavChild, 'NavToggle')) NavChild.firstChild.data = caption[1];
 +
    }
 +
  }
 +
}
 +
 +
// adds show/hide-button to navigation bars
 +
function createNavigationBarToggleButton() {
 +
  var indexNavigationBar = 0;
 +
  var NavFrame;
 +
  // iterate over all < div >-elements
 +
  for( var i=0; NavFrame = document.getElementsByTagName("div")[i]; i++ ) {
 +
    // if found a navigation bar
 +
    if (hasClass(NavFrame, "NavFrame")) {
 +
      indexNavigationBar++;
 +
      var NavToggle = document.createElement("a");
 +
      NavToggle.className = 'NavToggle';
 +
      NavToggle.setAttribute('id', 'NavToggle' + indexNavigationBar);
 +
      NavToggle.setAttribute('href', 'javascript:toggleNavigationBar(' + indexNavigationBar + ');');
 +
 +
      // surcharge des libellés dérouler/enrouler grâce a l'attribut title
 +
      var caption = collapseCaption;
 +
      if (NavFrame.title && NavFrame.title.indexOf("/") > 0) {
 +
        caption = NavFrame.title.split("/")[1];
 +
      }
 +
 
 +
      var NavToggleText = document.createTextNode(caption);
 +
      NavToggle.appendChild(NavToggleText);
 
   
 
   
Ajouter un menu pour choisir des sous-ensembles de caractères spéciaux.
+
      // add NavToggle-Button as first div-element
Ecrit par Zelda, voir sur [[Utilisateur:Zelda/Edittools.js]].
+
      // in <div class="NavFrame">
Remplace l'ancienne fonction par une variante plus rapide.
+
      NavFrame.insertBefore( NavToggle, NavFrame.firstChild );
*/
+
      NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar);
 +
    }
 +
  }
 +
  // if more Navigation Bars found than Default: hide all
 +
  if (NavigationBarShowDefault < indexNavigationBar) {
 +
    for( var i=1; i<=indexNavigationBar; i++ ) {
 +
      toggleNavigationBar(i);
 +
    }
 +
  }
 +
}
 
   
 
   
 +
$(createNavigationBarToggleButton);
 +
 +
/**
 +
* Compteur de consultation d'articles
 +
*
 +
* Please talk to User:LeonWeber before changing anything or
 +
* if there are any issues with that.
 +
* this should be adjusted to a good value.
 +
* BE CAREFULL, you will break zedler if it's too low!
 +
* And then DaB. will kill Leon :-(
 +
*/
 +
 +
var disable_counter = 0;
 +
var counter_factor = 900;
 +
 +
function pgcounterSetup() {
 +
  if(disable_counter == 0) {
 +
    var url = window.location.href;
 +
    if(Math.floor(Math.random()*counter_factor)==42) { // the probability thing
 +
      if(mw.config.get('wgIsArticle')==true) { // do not count history pages etc.
 +
        var pgcountNs = mw.config.get('wgCanonicalNamespace');
 +
        if(mw.config.get('wgCanonicalNamespace')=="") pgcountNs = "0";
 +
        var cnt_url = "http://pgcount.wikimedia.de/index.png?ns=" + pgcountNs + "&title=" + encodeURI(mw.config.get('wgTitle')) + "&factor=" + counter_factor + "&wiki=frwiki";
 +
        var img = new Image();
 +
        img.src = cnt_url;
 +
      }
 +
    }
 +
  }
 +
}
 +
 +
$(pgcounterSetup);
 +
 +
 +
/**
 +
* WikiMiniAtlas
 +
*
 +
* voir WP:WMA
 +
*/
 +
mw.loader.load('http://meta.wikimedia.org/w/index.php?title=MediaWiki:Wikiminiatlas.js'
 +
            + '&action=raw&ctype=text/javascript&dontcountme=s');
 +
 +
var wma_settings = {
 +
  buttonImage: 'http://upload.wikimedia.org/wikipedia/commons/thumb/e/e9/Geographylogo.svg/18px-Geographylogo.svg.png'
 +
}
 +
 +
 +
 +
/**
 +
* Déplacement de coordonnées qui apparaissent en haut de la page
 +
*/
 +
function moveCoord() {
 +
  var h1 = document.getElementsByTagName("h1")[0];
 +
  var coord = document.getElementById('coordinates');
 +
  if ( !coord || !h1 ) return;
 +
  coord.id = "coordinates-title";
 +
  h1.insertBefore(coord, h1.firstChild);
 +
}
 +
 +
$(moveCoord);
 +
 +
/**
 +
* Déplacement des [modifier]
 +
*
 +
* Correction des titres qui s'affichent mal en raison de limitations dues à MediaWiki.
 +
*
 +
* Copyright 2006, Marc Mongenet. Licence GPL et GFDL.
 +
*
 +
* The function looks for <span class="editsection">, and move them
 +
* at the end of their parent and display them inline in small font.
 +
* var oldEditsectionLinks=true disables the function.
 +
*/
 +
function setModifySectionStyle() {
 +
  try {
 +
    if (!(typeof oldEditsectionLinks == 'undefined' || oldEditsectionLinks == false)) return;
 +
    var spans = document.getElementsByTagName("span");
 +
    for (var s = 0; s < spans.length; ++s) {
 +
      var span = spans[s];
 +
      if (span.className == "editsection") {
 +
        span.style.fontSize = "xx-small";
 +
        span.style.fontWeight = "normal";
 +
        span.style.cssFloat = span.style.styleFloat = "none";
 +
        span.parentNode.appendChild(document.createTextNode(" "));
 +
        span.parentNode.appendChild(span);
 +
      }
 +
    }
 +
  } catch (e) { /* something went wrong */ }
 +
}
 +
 +
$(setModifySectionStyle);
 +
 +
 +
 +
 +
/*************************************/
 +
/* Applications pour les rédacteurs  */
 +
/*************************************/
 +
 +
/* todo : migrer celles qui ne sont pas vitales dans les gadgets */
 +
 +
/**
 +
* Remplit la zone d'édition si elle est vide avec le texte retourné par
 +
* un pointeur de fonction sélectionné par le nom de la page.
 +
*/
 +
function InitPage() {
 +
  // Tester si editform et wpTextbox1 existe sinon il y a une erreur lorsqu'on
 +
  // ouvre l'historique d'une page qui match un des noms de init_if_empty[],
 +
  // tester seulement le nom de la page n'est pas suffisant.
 +
  if (document.editform == undefined || document.editform.wpTextbox1 == undefined) return;
 +
  var text_area = document.editform.wpTextbox1;
 +
  if (text_area.value.length != 0) return;
 +
  for (var i = 0; i < init_if_empty.length; ++i) {
 +
    var page_match = init_if_empty[i][0];
 +
    var index = mw.config.get('wgPageName').indexOf(page_match);
 +
    if (index != -1) {
 +
      page_name = mw.config.get('wgPageName').slice(page_match.length);
 +
      page_name = page_name.replace(/_/g, ' ');
 +
      text_area.value = init_if_empty[i][1](page_name);
 +
      break;
 +
    }
 +
  }
 +
}
 +
 +
$(InitPage);
 +
 +
/**
 +
* Caractères spéciaux
 +
*
 +
* Ajouter un menu pour choisir des sous-ensembles de caractères spéciaux.
 +
* Ecrit par Zelda, voir sur [[Utilisateur:Zelda/Edittools.js]].
 +
* Remplace l'ancienne fonction par une variante plus rapide.
 +
*/
 +
 
/**
 
/**
 
  * Ajoute un menu déroulant permettant de choisir un jeu de caractères spéciaux
 
  * Ajoute un menu déroulant permettant de choisir un jeu de caractères spéciaux
Ligne 169 : Ligne 635 :
 
   var specialchars = document.getElementById('specialcharsets');
 
   var specialchars = document.getElementById('specialcharsets');
 
   if (!specialchars) return;
 
   if (!specialchars) return;
+
 
 
   // Construction du menu de selection
 
   // Construction du menu de selection
 
   var charSubsetSelect = document.createElement("select");
 
   var charSubsetSelect = document.createElement("select");
 
   charSubsetSelect.setAttribute("style", "display:inline");
 
   charSubsetSelect.setAttribute("style", "display:inline");
 
   charSubsetSelect.onchange = function () { chooseCharSubset(this.selectedIndex); };
 
   charSubsetSelect.onchange = function () { chooseCharSubset(this.selectedIndex); };
+
 
 
   // Ajout des options au menu
 
   // Ajout des options au menu
 
   var p = document.getElementById('specialcharsets').getElementsByTagName('p');
 
   var p = document.getElementById('specialcharsets').getElementsByTagName('p');
Ligne 183 : Ligne 649 :
 
     charSubsetSelect.appendChild(opt);
 
     charSubsetSelect.appendChild(opt);
 
   }
 
   }
+
 
 
   specialchars.insertBefore(charSubsetSelect, specialchars.childNodes[0]);
 
   specialchars.insertBefore(charSubsetSelect, specialchars.childNodes[0]);
+
 
 
   /* default subset - try to use a cookie some day */
 
   /* default subset - try to use a cookie some day */
 
   chooseCharSubset(0);
 
   chooseCharSubset(0);
 
}
 
}
+
 
 
/**
 
/**
 
  * Affichage du jeu de caractères sélectionné
 
  * Affichage du jeu de caractères sélectionné
Ligne 205 : Ligne 671 :
 
   }
 
   }
 
}
 
}
+
 
 
/**
 
/**
 
  * Initialisation du jeu de caractères sélectionné
 
  * Initialisation du jeu de caractères sélectionné
Ligne 215 : Ligne 681 :
 
   var spans = p.getElementsByTagName("span");
 
   var spans = p.getElementsByTagName("span");
 
   if (!spans) return;
 
   if (!spans) return;
+
 
 
   // regexp pour echapper les caractères JS spéciaux : \ et '
 
   // regexp pour echapper les caractères JS spéciaux : \ et '
 
   var re = new RegExp("(\\\\|')", "g");
 
   var re = new RegExp("(\\\\|')", "g");
Ligne 221 : Ligne 687 :
 
   var escapeRe = new RegExp("[^\\\\](\\\\\\\\)*\\\\$", "g");
 
   var escapeRe = new RegExp("[^\\\\](\\\\\\\\)*\\\\$", "g");
 
   var unescapeRe = new RegExp("\\\\\\\\", "g");
 
   var unescapeRe = new RegExp("\\\\\\\\", "g");
+
 
 
   // traitement des spans du paragraphe
 
   // traitement des spans du paragraphe
 
   for (var j = 0; j < spans.length; j++) {
 
   for (var j = 0; j < spans.length; j++) {
 
     // span deja traité
 
     // span deja traité
 
     if (spans[j].childNodes.length == 0 || spans[j].childNodes[0].nodeType != 3) continue;
 
     if (spans[j].childNodes.length == 0 || spans[j].childNodes[0].nodeType != 3) continue;
+
 
 
     // On parse le contenu du span
 
     // On parse le contenu du span
 
     var chars = spans[j].childNodes[0].nodeValue.split(" ");
 
     var chars = spans[j].childNodes[0].nodeValue.split(" ");
Ligne 232 : Ligne 698 :
 
       var a = document.createElement("a");
 
       var a = document.createElement("a");
 
       var tags = chars[k];
 
       var tags = chars[k];
+
 
 
       // regroupement des mots se terminant par un espace protégé par un \
 
       // regroupement des mots se terminant par un espace protégé par un \
 
       while (k < chars.length && chars[k].match(escapeRe)) {
 
       while (k < chars.length && chars[k].match(escapeRe)) {
Ligne 238 : Ligne 704 :
 
tags = tags.substr(0, tags.length - 1) + " " + chars[k];
 
tags = tags.substr(0, tags.length - 1) + " " + chars[k];
 
       }
 
       }
+
 
 
       // création du lien insertTag(tagBegin, tagEnd, defaultValue) en protegeant les caractères JS \ et '
 
       // création du lien insertTag(tagBegin, tagEnd, defaultValue) en protegeant les caractères JS \ et '
 
       tags = (tags.replace(unescapeRe, "\\")).split("+");
 
       tags = (tags.replace(unescapeRe, "\\")).split("+");
Ligne 247 : Ligne 713 :
 
       //a.href="#";
 
       //a.href="#";
 
       //eval("a.onclick = function() { insertTags('" + tagBegin + "','" + tagEnd + "', '" + defaultValue + "'); return false; }");
 
       //eval("a.onclick = function() { insertTags('" + tagBegin + "','" + tagEnd + "', '" + defaultValue + "'); return false; }");
+
 
 
       a.appendChild(document.createTextNode((tagBegin + tagEnd).replace(unescapeRe, "\\")));
 
       a.appendChild(document.createTextNode((tagBegin + tagEnd).replace(unescapeRe, "\\")));
 
       spans[j].appendChild(a);
 
       spans[j].appendChild(a);
Ligne 256 : Ligne 722 :
 
   }
 
   }
 
}
 
}
+
 
addOnloadHook(addCharSubsetMenu);
+
$(addCharSubsetMenu);
+
 
 
/**
 
/**
 
  * Permet d'ajouter d'un jeu de caractères spéciaux dans le menu déroulant
 
  * Permet d'ajouter d'un jeu de caractères spéciaux dans le menu déroulant
Ligne 269 : Ligne 735 :
 
   var specialchars = document.getElementById('specialcharsets');
 
   var specialchars = document.getElementById('specialcharsets');
 
   if (!specialchars) return;
 
   if (!specialchars) return;
+
 
  // Ajout d'un nouvel item au menu déroulant
 
  var select = specialchars.getElementsByTagName("select")[0];
 
  var opt = document.createElement("option");
 
  opt.appendChild(document.createTextNode(title));
 
  select.appendChild(opt);
 
 
 
   // Ajout des caractères spéciaux. Les liens seront initialisé par initializeCharSubset()
 
   // Ajout des caractères spéciaux. Les liens seront initialisé par initializeCharSubset()
 
   // lors de la sélection
 
   // lors de la sélection
Ligne 281 : Ligne 741 :
 
   var p = document.createElement("p");
 
   var p = document.createElement("p");
 
   p.style.display = "none";
 
   p.style.display = "none";
 +
  p.title = title;
 
   p.innerHTML = charsHTML;
 
   p.innerHTML = charsHTML;
 
   specialcharsets.appendChild(p);
 
   specialcharsets.appendChild(p);
 
}
 
}
+
 
 
/**
 
/**
 
  * Permet d'ajouter d'un jeu de caractères spéciaux dans le menu déroulant
 
  * Permet d'ajouter d'un jeu de caractères spéciaux dans le menu déroulant
Ligne 296 : Ligne 757 :
 
}
 
}
  
</nowiki></code></poem>
+
/**
 +
* Générateur de tableaux
 +
* English: Generate an array using Mediawiki syntax
 +
*
 +
* @author: fr:user:dake
 +
* @version: 0.2
 +
*/
 +
 
 +
function generateTableau(nbCol, nbRow, styleHeader, styleLine) {
 +
  var code = "\n{| " +
 +
    ((styleHeader==1) ? 'class="wikitable"' : '')+
 +
    '\n|+ Titre du tableau\n';
 +
   
 +
  for (var i=0; i<nbCol; i++) code += '! en-tête ' + i + '\n';
 +
   
 +
  for (var j=0; j<nbRow; j++) {
 +
    if ((j+1)%2==0 && styleLine==1) {
 +
      code += '|-{'+'{ligne grise}'+'}\n';
 +
    } else {           
 +
      code += '|-----\n';
 +
    }
 +
         
 +
    for (var i=0; i<nbCol; i++) code += '| élément\n';
 +
  }
 +
   
 +
  code += '|}';
 +
  insertTags('','', code);
 +
}
 +
 
 +
/**
 +
* English: Open a popup with parameters to generate an array.
 +
* The number of rows/columns can be modified. Some additional
 +
* parameters are related to templates available on :fr
 +
*
 +
* @author: fr:user:dake
 +
* @version: 0.1
 +
*/
 +
 
 +
function popupTableau() {
 +
  var popup = window.open('','name','height=400,width=500');
 +
 
 +
  javaCode =  '<script type="text\/javascript">function insertCode(){';
 +
  javaCode += 'var row = parseInt(document.paramForm.inputRow.value); ';
 +
  javaCode += 'var col = parseInt(document.paramForm.inputCol.value); ';
 +
  javaCode += 'var styleHeader = document.paramForm.inputHeader.checked; ';
 +
  javaCode += 'var styleLine = document.paramForm.inputLine.checked; ';
 +
  javaCode += 'window.opener.generateTableau(col,row,styleHeader,styleLine); ';
 +
  javaCode += '}<\/script>';
 +
 
 +
  popup.document.write('<html><head><title>Paramètres du tableau</title>');
 +
  popup.document.write('<script type="text\/javascript" src="\/resources\/src\/mediawiki.legacy\/wikibits.js"><!-- wikibits js --><\/script>');
 +
  popup.document.write('<style type="text\/css" media="screen">/*<![CDATA[*/ @import "\/skins\/MonoBook\/main.css?5"; /*]]>*/<\/style>');
 +
  popup.document.write(javaCode);
 +
  popup.document.write('</head><body>');
 +
  popup.document.write('<p>Veuillez entrer les paramètres du tableau : </p>');
 +
  popup.document.write('<form name="paramForm">');
 +
  popup.document.write('Nombre de lignes : <input type="text" name="inputRow" value="3" ><p>');
 +
  popup.document.write('Nombre de colonnes : <input type="text" name="inputCol" value="3" ><p>');
 +
  popup.document.write('Mise en forme (wikitable) : <input type="checkbox" name="inputHeader" checked="1" ><p>');
 +
  popup.document.write('Lignes grises alternées : <input type="checkbox" name="inputLine" checked="0" ><p>');
 +
  popup.document.write('</form">');
 +
  popup.document.write('<p><a href="javascript:insertCode()"> Insérer le code dans la fenêtre d\'édition</a></p>');
 +
  popup.document.write('<p><a href="javascript:self.close()"> Fermer</a></p>');
 +
  popup.document.write('</body></html>');
 +
  popup.document.close();
 +
}
 +
/**
 +
* Insertion de nouveaux boutons dans la barre d'outil
 +
*/
 +
 
 +
if ( typeof addCustomButton === 'undefined' ) {
 +
window.addCustomButton = function ( imageFile, speedTip, tagOpen, tagClose, sampleText, imageId ) {
 +
mw.hook( 'wikipage.editform' ).add( function () {
 +
mw.loader.using( 'mediawiki.toolbar', function () {
 +
mw.toolbar.addButton( {
 +
imageFile: imageFile,
 +
speedTip: speedTip,
 +
tagOpen: tagOpen,
 +
tagClose: tagClose,
 +
sampleText: sampleText,
 +
imageId: imageId
 +
} );
 +
} );
 +
} );
 +
};
 +
}
 +
 
 +
addCustomButton('http://www.wiki-brest.net/skins/common/images/button_centrer.png',
 +
                'Centrer',
 +
                '<center>',
 +
                '</center>',
 +
                '',
 +
                'mw-editbutton-center');
 +
 
 +
addCustomButton('http://www.wiki-brest.net/skins/common/images/button_underline.png',
 +
                'Souligné',
 +
                '<u>',
 +
                '</u>',
 +
                '',
 +
                'mw-editbutton-underline');
 +
 
 +
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/0/04/Button_array.png',
 +
                'Tableau',
 +
                '{| border=1\n|-\n|Contenu1Ligne1\n|Contenu2Ligne1\n|-\n|Contenu1Ligne2\n|Contenu2Ligne2\n|}',
 +
                '',
 +
                '',
 +
                'mw-editbutton-array');
 +
 
 +
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/b/b0/Button_note.png',
 +
                'MP3',
 +
                '<flashmp3>',
 +
                '</flashmp3>',
 +
                '',
 +
                'mw-editbutton-mp3');
 +
 
 +
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/a/ae/Button_IFilm.png',
 +
                'Vidéo',
 +
                '\n<!--Coller entre les balises html le code du lecteur exportable de la vidéo-->\n<center>\n<html>',
 +
                '\n</html>\n</center>',
 +
                '',
 +
                'mw-editbutton-video');
 +
 
 +
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/c/c9/Button_strike.png',
 +
                'Rayer',
 +
                '<s>',
 +
                '</s>',
 +
                '',
 +
                'mw-editbutton-strike');
 +
 
 +
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/8/88/Btn_toolbar_enum.png',
 +
                'Énumération',
 +
                '\n# élément 1\n# élément 2\n# élément 3',
 +
                '',
 +
                '',
 +
                'mw-editbutton-enum');
 +
 
 +
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/1/11/Btn_toolbar_liste.png',
 +
                'Liste',
 +
                '\n* élément A\n* élément B\n* élément C',
 +
                '',
 +
                '',
 +
                'mw-editbutton-liste');
 +
 
 +
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/9/9e/Btn_toolbar_gallery.png',
 +
                'Galerie d\'images',
 +
                '\n<!--Consultez l Anti-sèche pour les options de la galerie-->\n<center>\n<gallery caption="Donner un titre à votre galerie">\nImage:Exemple.jpg|légende\nImage:Exemple.jpg|légende\nImage:Exemple.jpg|légende\n</gallery>\n</center>',
 +
                '',
 +
                '',
 +
                'mw-editbutton-gallery');
 +
 
 +
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/3/37/Btn_toolbar_commentaire.png',
 +
                'Commentaire',
 +
                '<!--',
 +
                '-->',
 +
                '',
 +
                'mw-editbutton-comment');
 +
 
 +
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/4/47/Button_redir.png',
 +
                'Redirection',
 +
                '#REDIRECT [[',
 +
                ']]',
 +
                'nom de la destination',
 +
                'mw-editbutton-redir');
 +
 
 +
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/b/b4/Button_category03.png',
 +
                'Catégorie',
 +
                '[[Catégorie:',
 +
                ']]',
 +
                'nom de la catégorie',
 +
                'mw-editbutton-category');
 +
 
 +
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/3/3b/Button_template_alt.png',
 +
                'Modèle',
 +
                '{{',
 +
                '}}',
 +
                'modèle ou page à inclure',
 +
                'mw-editbutton-template');
 +
 
 +
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/c/c4/Button_ref.png',
 +
                'Référence',
 +
                '<ref>',
 +
                '</ref>',
 +
                'référence, citation ou lien',
 +
                'mw-editbutton-ref');
 +
 
 +
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/6/64/Buttonrefvs8.png',
 +
                'Index des références',
 +
                '== Notes et références ==\n<references />',
 +
                '',
 +
                '',
 +
                'mw-editbutton-references');
 +
 
 +
var voirAussi = '<!-- Suggestion de présentation des annexes. Aide : http://fr.wikipedia.org/wiki/Aide:Note -->\n'
 +
+ '== Annexes ==\n'
 +
+ '=== Notes et références ===\n'
 +
+ '<references/>\n'
 +
+ '=== Articles connexes ===\n'
 +
+ '* [[À remplacer]]\n'
 +
+ '*\n'
 +
+ '=== Liens et documents externes ===\n'
 +
+ '*\n';
 +
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/b/bb/Seealso.png',
 +
                'Section Voir aussi',
 +
                voirAussi,
 +
                '',
 +
                '',
 +
                'mw-editbutton-voiraussi');
 +
 
 +
 
 +
/**
 +
* Changer le lien du bouton de création de tableau et supprime le bouton signature sur les articles
 +
*/
 +
function changButtons() {
 +
  toolbarArray = document.getElementById('mw-editbutton-array');
 +
  if (toolbarArray) {
 +
    toolbarArray.onclick = function() {
 +
      popupTableau();
 +
      return false;
 +
    }
 +
  }
 +
 
 +
  var btnSigImg = document.getElementById('mw-editbutton-signature');
 +
  if (btnSigImg && mw.config.get('wgNamespaceNumber') == 0) btnSigImg.style.display = "none";
 +
}
 +
$(changButtons);
 +
 
 +
 
 +
/**
 +
* permet d'ajouter le modèle {{Information}} dans la zone de Description de la page "Importer un fichier"
 +
*
 +
*/
 +
  function includePage(name) {
 +
      mw.loader.load(mw.config.get('wgScript') + '?title='
 +
          + name + 
 +
'&action=raw&ctype=text/javascript&dontcountme=s');    // 
 +
smaxage=3600
 +
  }
 +
  if (mw.config.get('wgCanonicalSpecialPageName') == "Upload", "MultipleUpload") {
 +
      includePage("MediaWiki:Onlyifuploading.js");
 +
  }
 +
 
 +
//</nowiki>

Version actuelle datée du 3 mai 2018 à 14:14

/* 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
monobook.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 !

NE PAS RETIRER CECI SINON : remplacement des signature, substitution des modèles, ... : <nowiki>

/*************************************************************/
/* Fonctions javascript : pallient les limites de javascript */
/* Surveiller : http://www.ecmascript.org/                   */
/*************************************************************/

/**
 * insertAfter : insérer un élément dans une page
 */
function insertAfter(parent, node, referenceNode) {
  parent.insertBefore(node, referenceNode.nextSibling); 
}


/**
 * getElementsByClass : rechercher les éléments de la page dont le paramètre "class" est celui recherché
 */
function getElementsByClass(searchClass, node, tag) {
  if (node == null) node = document;
  if (tag == null) tag = '*';
  return getElementsByClassName(node, tag, searchClass);
}

/**
 * Diverses fonctions manipulant les classes
 * Utilise des expressions régulières et un cache pour de meilleures perfs
 * isClass et whichClass depuis http://fr.wikibooks.org/w/index.php?title=MediaWiki:Common.js&oldid=140211
 * hasClass, addClass, removeClass et eregReplace 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
 */
function isClass(element, classe) {
    return hasClass(element, classe);
}

function whichClass(element, classes) {
    var s=" "+element.className+" ";
    for(var i=0;i<classes.length;i++)
        if (s.indexOf(" "+classes[i]+" ")>=0) return i;
    return -1;
}
 
function hasClass(node, className) {
  if (node.className == className) {
    return true;
  }
  var reg = new RegExp('(^| )'+ className +'($| )')
  if (reg.test(node.className)) {
    return true;
  }
  return false;
}
 
function addClass(node, className) {
    if (hasClass(node, className)) {
        return false;
    }
    node.className += ' '+ className;
    return true;
}
 
function removeClass(node, className) {
  if (!hasClass(node, className)) {
    return false;
  }
  node.className = eregReplace('(^|\\s+)'+ className +'($|\\s+)', ' ', node.className);
  return true;
}

function eregReplace(search, replace, subject) {
    return subject.replace(new RegExp(search,'g'), replace);
}


/**
 * Récupère la valeur du cookie
 */
function getCookieVal(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;
}

/************************************************************************/
/* Fonctions générales mediawiki (pallient les limitations du logiciel) */
/* Surveiller : http://fr.wikipedia.org/skins-1.5/common/wikibits.js    */
/************************************************************************/

/*
 * Fonction générales de lancement de fonctions ou de script
 * DÉPRÉCIÉ : utiliser $() simplement
 */
function addLoadEvent(func) {
  $(func);
}

/**
 * Insérer un JavaScript d'une page particulière, idée de Mickachu
 */
function loadJs(page) {
  mw.loader.load('http://fr.wikipedia.org/w/index.php?title=' + page +
                 '&action=raw&ctype=text/javascript&dontcountme=s');
}

/**
 * Projet JavaScript
 */
function obtenir(name) {
  if(name.indexOf('caractères/') != -1) loadJs('MediaWiki:JSScripts/' + name);
  else loadJs('MediaWiki:Gadget-' + name + '.js');
}


/**************************************/
/* Applications pour les lecteurs     */
/**************************************/

/* Devraient en principe se trouver côté serveur */

/*
 * Choix du mode d'affichage des références
 * @note L'ordre de cette liste doit correspondre a celui de Modèle:Édition !
 */

function addBibSubsetMenu() {
  var specialBib = document.getElementById('specialBib');
  if (!specialBib) return;

  specialBib.style.display = 'block';
  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);
}

// select subsection of special characters
function chooseBibSubset(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';
  }
}

$(addBibSubsetMenu);

/**
 * Transformer les pages du Bistro en page de discussion
 */
function DiscussionBistro() {
  if(  (mw.config.get('wgPageName').search('Wikipédia:Le_Bistro') != -1)
    || (mw.config.get('wgPageName').search('Wikipédia:Bulletin_des_administrateurs') != -1))
    document.body.className = 'ns-1';
}

$(DiscussionBistro);

/**
 * Transformer certaines pages en page de discussion avec le modèle {{page de discussion}}
 */
function TransformeEnDiscussion() {
   var transformeEnPDD = document.getElementById("transformeEnPageDeDiscussion");
   if(transformeEnPDD) document.body.className = "ns-1";
}

$(TransformeEnDiscussion);

/**
 * Transformer certaines pages en pseudo-article
 * c'est raisonnable ? --Tavernier
 */
function TransformeEnArticle() {
   var transformeEnA = document.getElementById("transformeEnArticle");
   if(transformeEnA) document.body.className = "ns-0";
}

$(TransformeEnArticle);

/**
 * Afficher une explication au nombre de caractères dans la liste de suivi
 */
function toolTipPlusMinus() {
  var tt = "Nombre de caractères d'écart entre les deux dernières versions de la page";
  var elmts = document.getElementsByTagName("span");
  for(var cpt = 0; cpt < elmts.length; cpt++) {
    if (/mw-plusminus-(pos|neg|null)/.test(elmts[cpt].className) || /mw-plusminus-(pos|neg|null)/.test(elmts[cpt].getAttribute("class")))
      elmts[cpt].title = tt;
  }
}

$(toolTipPlusMinus);

/**
 * Utilisation du modèle Modèle:Images
 */
function toggleImage(group, remindex, shwindex) {
  document.getElementById("ImageGroupsGr"+group+"Im"+remindex).style.display="none";
  document.getElementById("ImageGroupsGr"+group+"Im"+shwindex).style.display="inline";
}

function imageGroup(){
  if (document.URL.match(/printable/g)) return;
  var bc=document.getElementById("bodyContent");
  if( !bc ) bc = document.getElementById("mw_contentholder");
  if( !bc ) return;
  var divs=bc.getElementsByTagName("div");
  var i = 0, j = 0;
  var units, search;
  var currentimage;
  var UnitNode;
  for (i = 0; i < divs.length ; i++) {
    if (divs[i].className != "ImageGroup") continue;
    UnitNode=undefined;
    search=divs[i].getElementsByTagName("div");
    for (j = 0; j < search.length ; j++) {
      if (search[j].className != "ImageGroupUnits") continue;
      UnitNode=search[j];
      break;
    }
    if (UnitNode==undefined) continue;
    units=Array();
    for (j = 0 ; j < UnitNode.childNodes.length ; j++ ) {
      var temp = UnitNode.childNodes[j];
      if (temp.className=="center") units.push(temp);
    }
    for (j = 0 ; j < units.length ; j++) {
      currentimage=units[j];
      currentimage.id="ImageGroupsGr"+i+"Im"+j;
      var imghead = document.createElement("div");
      var leftlink;
      var rightlink;
      if (j != 0) {
        leftlink = document.createElement("a");
        leftlink.href = "javascript:toggleImage("+i+","+j+","+(j-1)+");";
        leftlink.innerHTML="<img src='http://upload.wikimedia.org/wikipedia/commons/thumb/4/49/ArrowLeftNavbox.svg/12px-ArrowLeftNavbox.svg.png'>";
      } else {
        leftlink = document.createElement("span");
        leftlink.innerHTML="&nbsp;";
      }
      if (j != units.length - 1) {
        rightlink = document.createElement("a");
        rightlink.href = "javascript:toggleImage("+i+","+j+","+(j+1)+");";
        rightlink.innerHTML="<img src='http://upload.wikimedia.org/wikipedia/commons/thumb/1/10/ArrowRightNavbox.svg/12px-ArrowRightNavbox.svg.png'>";
      } else {
        rightlink = document.createElement("span");
        rightlink.innerHTML="&nbsp;";
      }
      var comment = document.createElement("tt");
      comment.innerHTML = "("+ (j+1) + "/" + units.length + ")";
      with(imghead) {
        style.fontSize="110%";
        style.fontweight="bold";
        appendChild(leftlink);
        appendChild(comment);
        appendChild(rightlink);
      }
      currentimage.insertBefore(imghead,currentimage.childNodes[0]);
      if (j != 0) currentimage.style.display="none";
    }
  }
}

$(imageGroup);



/* En phase de test */
/* DÉBUT DU CODE JAVASCRIPT DE "CADRE À ONGLETS"
    Fonctionnement du [[Modèle:Cadre à onglets]]
    Modèle implanté par User:Peleguer de http://ca.wikipedia.org
    Actualisé par User:Joanjoc de http://ca.wikipedia.org
    Traduction et adaptation User:Antaya de http://fr.wikipedia.org
*/
function CadreOngletInit(){
 // retour si ailleurs que sur l'espace utilisateur, 
 // sachant que c'est une horreur au niveau de l'accessibilité
 // et qu'il est impossible de "récupérer" ou de recycler ce script
 // (celui-ci fonctionnant par inclusion de sous pages)
 if (mw.config.get('wgCanonicalNamespace') != 'User') return;  
  var i=0       
  for (i=0;i<=9;i++){
     var vMb = document.getElementById("mb"+i);
     if (!vMb) break;
 
     var j=1    
     var vOgIni = 0  
     for (j=1;j<=9;j++){
        var vBt = document.getElementById("mb"+i+"bt"+j);
        if (!vBt) break;
        vBt.onclick = CadreOngletVoirOnglet;          
        if (vBt.className=="mbBoutonSel") vOgIni=j;  
     }

     if (vOgIni == 0) { 
         vOgIni = 1+Math.floor((j-1)*Math.random()) ;
         document.getElementById("mb"+i+"og"+vOgIni).style.display = "block";
         document.getElementById("mb"+i+"og"+vOgIni).style.visibility = "visible";
         document.getElementById("mb"+i+"bt"+vOgIni).className="mbBoutonSel";
     } 
  }
 }
 
 function CadreOngletVoirOnglet(){
  var vMbNom = this.id.substr(0,3); 
  var vIndex = this.id.substr(5,1); 
 
  var i=1
  for (i=1;i<=9;i++){        
        var vOgElem = document.getElementById(vMbNom+"og"+i);
        if (!vOgElem) break;
        if (vIndex==i){ 
                vOgElem.style.display = "block";
                vOgElem.style.visibility = "visible";
                document.getElementById(vMbNom+"bt"+i).className="mbBoutonSel";
        } else {             
                vOgElem.style.display = "none";
                vOgElem.style.visibility = "hidden";
                document.getElementById(vMbNom+"bt"+i).className="mbBouton";
        }
  }
  return false; 
 }
 
 $(CadreOngletInit);
 
/*FIN DU CODE JAVASCRIPT DE "CADRE À ONGLETS"*/

/** 
 * Boîtes déroulantes
 *
 * Pour [[Modèle:Méta palette de navigation]]
 */

var autoCollapse = 2;
var collapseCaption = '[ Enrouler ]';
var expandCaption = '[ Dérouler ]';

function collapseTable( tableIndex ) {
  var Button = document.getElementById( "collapseButton" + tableIndex );
  var Table = document.getElementById( "collapsibleTable" + tableIndex );
  if ( !Table || !Button ) return false;

  var Rows = Table.getElementsByTagName( "tr" ); 

  if ( Button.firstChild.data == collapseCaption ) {
    for ( var i = 1; i < Rows.length; i++ ) {
      Rows[i].style.display = "none";
    }
    Button.firstChild.data = expandCaption;
  } else {
    for ( var i = 1; i < Rows.length; i++ ) {
      Rows[i].style.display = Rows[0].style.display;
    }
    Button.firstChild.data = collapseCaption;
  }
}

function createCollapseButtons() {
  var tableIndex = 0;
  var NavigationBoxes = new Object();
  var Tables = document.getElementsByTagName( "table" );

  for ( var i = 0; i < Tables.length; i++ ) {
    if ( hasClass( Tables[i], "collapsible" ) ) {
      NavigationBoxes[ tableIndex ] = Tables[i];
      Tables[i].setAttribute( "id", "collapsibleTable" + tableIndex );

      var Button     = document.createElement( "span" );
      var ButtonLink = document.createElement( "a" );
      var ButtonText = document.createTextNode( collapseCaption );

      Button.style.styleFloat = "right";
      Button.style.cssFloat = "right";
      Button.style.fontWeight = "normal";
      Button.style.textAlign = "right";
      Button.style.width = "6em";

      ButtonLink.setAttribute( "id", "collapseButton" + tableIndex );
      ButtonLink.setAttribute( "href", "javascript:collapseTable(" + tableIndex + ");" );
      ButtonLink.appendChild( ButtonText );

      Button.appendChild( ButtonLink );

      var Header = Tables[i].getElementsByTagName( "tr" )[0].getElementsByTagName( "th" )[0];
      /* only add button and increment count if there is a header row to work with */
      if (Header) {
        Header.insertBefore( Button, Header.childNodes[0] );
        tableIndex++;
      }
    }
  }

  for (var i = 0; i < tableIndex; i++) {
    if ( hasClass( NavigationBoxes[i], "collapsed" ) || ( tableIndex >= autoCollapse && hasClass( NavigationBoxes[i], "autocollapse" ) ) ) collapseTable( i );
  }
}

$(createCollapseButtons);

/**
 * Pour [[Modèle:Boîte déroulante]] 
 */
var NavigationBarShowDefault = 0;
 
function toggleNavigationBar(indexNavigationBar) {
  var NavToggle = document.getElementById("NavToggle" + indexNavigationBar);
  var NavFrame = document.getElementById("NavFrame" + indexNavigationBar);
 
  if (!NavFrame || !NavToggle) return;
 
  // surcharge des libellés dérouler/enrouler grâce a l'attribut title
  // exemple : title="[déroulade]/[enroulade]"
  var caption = [expandCaption, collapseCaption];
  if (NavFrame.title && NavFrame.title.length > 0) {
    caption = NavFrame.title.split("/");
    if (caption.length < 2) caption.push(collapseCaption);
  }
 
  // if shown now
  if (NavToggle.firstChild.data == caption[1]) {
    for ( var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling ) {
      if (hasClass(NavChild, 'NavPic')) NavChild.style.display = 'none';
      if (hasClass(NavChild, 'NavContent')) NavChild.style.display = 'none';
      if (hasClass(NavChild, 'NavToggle')) NavChild.firstChild.data = caption[0];
    }
 
  // if hidden now
  } else if (NavToggle.firstChild.data == caption[0]) {
    for ( var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling ) {
      if (hasClass(NavChild, 'NavPic')) NavChild.style.display = 'block';
      if (hasClass(NavChild, 'NavContent')) NavChild.style.display = 'block';
      if (hasClass(NavChild, 'NavToggle')) NavChild.firstChild.data = caption[1];
    }
  }
}
 
// adds show/hide-button to navigation bars
function createNavigationBarToggleButton() {
  var indexNavigationBar = 0;
  var NavFrame;
  // iterate over all < div >-elements
  for( var i=0; NavFrame = document.getElementsByTagName("div")[i]; i++ ) {
    // if found a navigation bar
    if (hasClass(NavFrame, "NavFrame")) {
      indexNavigationBar++;
      var NavToggle = document.createElement("a");
      NavToggle.className = 'NavToggle';
      NavToggle.setAttribute('id', 'NavToggle' + indexNavigationBar);
      NavToggle.setAttribute('href', 'javascript:toggleNavigationBar(' + indexNavigationBar + ');');
 
      // surcharge des libellés dérouler/enrouler grâce a l'attribut title
      var caption = collapseCaption;
      if (NavFrame.title && NavFrame.title.indexOf("/") > 0) {
         caption = NavFrame.title.split("/")[1];
      }

      var NavToggleText = document.createTextNode(caption);
      NavToggle.appendChild(NavToggleText);
 
      // add NavToggle-Button as first div-element 
      // in <div class="NavFrame">
      NavFrame.insertBefore( NavToggle, NavFrame.firstChild );
      NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar);
    }
  }
  // if more Navigation Bars found than Default: hide all
  if (NavigationBarShowDefault < indexNavigationBar) {
    for( var i=1; i<=indexNavigationBar; i++ ) {
      toggleNavigationBar(i);
    }
  }
}
 
$(createNavigationBarToggleButton);

/**
 * Compteur de consultation d'articles
 *
 * Please talk to User:LeonWeber before changing anything or 
 * if there are any issues with that.
 * this should be adjusted to a good value.
 * BE CAREFULL, you will break zedler if it's too low!
 * And then DaB. will kill Leon :-( 
 */

var disable_counter = 0;
var counter_factor = 900; 

function pgcounterSetup() {
  if(disable_counter == 0) {
    var url = window.location.href;
    if(Math.floor(Math.random()*counter_factor)==42) { // the probability thing
      if(mw.config.get('wgIsArticle')==true) { // do not count history pages etc.
        var pgcountNs = mw.config.get('wgCanonicalNamespace');
        if(mw.config.get('wgCanonicalNamespace')=="") pgcountNs = "0";
        var cnt_url = "http://pgcount.wikimedia.de/index.png?ns=" + pgcountNs + "&title=" + encodeURI(mw.config.get('wgTitle')) + "&factor=" + counter_factor + "&wiki=frwiki";
        var img = new Image(); 
        img.src = cnt_url;
      }
    }
  }
}

$(pgcounterSetup);


/**
 * WikiMiniAtlas
 *
 * voir WP:WMA 
 */
mw.loader.load('http://meta.wikimedia.org/w/index.php?title=MediaWiki:Wikiminiatlas.js' 
             + '&action=raw&ctype=text/javascript&dontcountme=s');

var wma_settings = { 
  buttonImage: 'http://upload.wikimedia.org/wikipedia/commons/thumb/e/e9/Geographylogo.svg/18px-Geographylogo.svg.png'
}



/**
 * Déplacement de coordonnées qui apparaissent en haut de la page 
 */
function moveCoord() {
  var h1 = document.getElementsByTagName("h1")[0];
  var coord = document.getElementById('coordinates');
  if ( !coord || !h1 ) return;
  coord.id = "coordinates-title";
  h1.insertBefore(coord, h1.firstChild);
}

$(moveCoord);

/**
 * Déplacement des [modifier]
 *
 * Correction des titres qui s'affichent mal en raison de limitations dues à MediaWiki.
 *
 * Copyright 2006, Marc Mongenet. Licence GPL et GFDL.
 *
 * The function looks for <span class="editsection">, and move them
 * at the end of their parent and display them inline in small font.
 * var oldEditsectionLinks=true disables the function.
 */
function setModifySectionStyle() {
  try {
    if (!(typeof oldEditsectionLinks == 'undefined' || oldEditsectionLinks == false)) return;
    var spans = document.getElementsByTagName("span");
    for (var s = 0; s < spans.length; ++s) {
      var span = spans[s];
      if (span.className == "editsection") {
        span.style.fontSize = "xx-small";
        span.style.fontWeight = "normal";
        span.style.cssFloat = span.style.styleFloat = "none";
        span.parentNode.appendChild(document.createTextNode(" "));
        span.parentNode.appendChild(span);
      }
    }
  } catch (e) { /* something went wrong */ }
}

$(setModifySectionStyle);




/*************************************/
/* Applications pour les rédacteurs  */
/*************************************/

/* todo : migrer celles qui ne sont pas vitales dans les gadgets */

/**
 * Remplit la zone d'édition si elle est vide avec le texte retourné par
 * un pointeur de fonction sélectionné par le nom de la page.
 */
function InitPage() {
  // Tester si editform et wpTextbox1 existe sinon il y a une erreur lorsqu'on
  // ouvre l'historique d'une page qui match un des noms de init_if_empty[],
  // tester seulement le nom de la page n'est pas suffisant.
  if (document.editform == undefined || document.editform.wpTextbox1 == undefined) return;
  var text_area = document.editform.wpTextbox1;
  if (text_area.value.length != 0) return;
  for (var i = 0; i < init_if_empty.length; ++i) {
    var page_match = init_if_empty[i][0];
    var index = mw.config.get('wgPageName').indexOf(page_match);
    if (index != -1) {
      page_name = mw.config.get('wgPageName').slice(page_match.length);
      page_name = page_name.replace(/_/g, ' ');
      text_area.value = init_if_empty[i][1](page_name);
      break;
    }
  }
}

$(InitPage);

/**
 * Caractères spéciaux
 *
 * Ajouter un menu pour choisir des sous-ensembles de caractères spéciaux.
 * Ecrit par Zelda, voir sur [[Utilisateur:Zelda/Edittools.js]].
 * Remplace l'ancienne fonction par une variante plus rapide.
 */

/**
 * Ajoute un menu déroulant permettant de choisir un jeu de caractères spéciaux
 * Les caractères spéciaux sont définis dans Mediawiki:Edittools
 */
function addCharSubsetMenu() {
  var specialchars = document.getElementById('specialcharsets');
  if (!specialchars) return;

  // Construction du menu de selection
  var charSubsetSelect = document.createElement("select");
  charSubsetSelect.setAttribute("style", "display:inline");
  charSubsetSelect.onchange = function () { chooseCharSubset(this.selectedIndex); };

  // Ajout des options au menu
  var p = document.getElementById('specialcharsets').getElementsByTagName('p');
  for (var i = 0; i < p.length ; i++) {
    var opt = document.createElement("option");
    var txt = document.createTextNode(p[i].title);
    opt.appendChild(txt);
    charSubsetSelect.appendChild(opt);
  }

  specialchars.insertBefore(charSubsetSelect, specialchars.childNodes[0]);

  /* default subset - try to use a cookie some day */
  chooseCharSubset(0);
}

/**
 * Affichage du jeu de caractères sélectionné
 */
function chooseCharSubset(index) {
  var p = document.getElementById('specialcharsets').getElementsByTagName('p');
  for (var i = 0; i < p.length ; i++) {
    // Initialisation du jeu de caractères sélectionné
    if (i == index) {
    	initializeCharSubset(p[i]);
    }
    // Affichage du jeu sélectionné, masquage des autres
    p[i].style.display = i == index ? 'inline' : 'none';
    p[i].style.visibility = i == index ? 'visible' : 'hidden';
  }
}

/**
 * Initialisation du jeu de caractères sélectionné
 * Paramètre : paragraphe contenant le jeu à initialiser. Initialise tous les
 * caractères contenus dans les sous-spans du paragraphe
 */
function initializeCharSubset(p) {
  // recherche des sous-elements de type span à traiter
  var spans = p.getElementsByTagName("span");
  if (!spans) return;

  // regexp pour echapper les caractères JS spéciaux : \ et '
  var re = new RegExp("(\\\\|')", "g");
  // gestion du caractère d'échappement '\'
  var escapeRe = new RegExp("[^\\\\](\\\\\\\\)*\\\\$", "g");
  var unescapeRe = new RegExp("\\\\\\\\", "g");

  // traitement des spans du paragraphe
  for (var j = 0; j < spans.length; j++) {
    // span deja traité
    if (spans[j].childNodes.length == 0 || spans[j].childNodes[0].nodeType != 3) continue;

    // On parse le contenu du span
    var chars = spans[j].childNodes[0].nodeValue.split(" ");
    for (var k = 0; k < chars.length; k++) {
      var a = document.createElement("a");
      var tags = chars[k];

      // regroupement des mots se terminant par un espace protégé par un \
      while (k < chars.length && chars[k].match(escapeRe)) {
      	k++;
	tags = tags.substr(0, tags.length - 1) + " " + chars[k];
      }

      // création du lien insertTag(tagBegin, tagEnd, defaultValue) en protegeant les caractères JS \ et '
      tags = (tags.replace(unescapeRe, "\\")).split("+");
      var tagBegin = tags[0].replace(re, "\\$1");
      var tagEnd = tags.length > 1 ? tags[1].replace(re, "\\$1") : "";
      var defaultValue = tags.length > 2 ? tags[2].replace(re, "\\$1") : "";
      a.href = "javascript:insertTags('" + tagBegin + "','" + tagEnd + "', '" + defaultValue + "')";
      //a.href="#";
      //eval("a.onclick = function() { insertTags('" + tagBegin + "','" + tagEnd + "', '" + defaultValue + "'); return false; }");

      a.appendChild(document.createTextNode((tagBegin + tagEnd).replace(unescapeRe, "\\")));
      spans[j].appendChild(a);
      spans[j].appendChild(document.createTextNode(" "));
    }
    // suppression de l'ancien contenu
    spans[j].removeChild(spans[j].firstChild);
  }
}

$(addCharSubsetMenu);

/**
 * Permet d'ajouter d'un jeu de caractères spéciaux dans le menu déroulant
 * paramètres :
 * - nom du jeu de caractères
 * - contenu HTML. Les caractères spéciaux doivent être dans des spans
 *   exemple : "caractères : <span>â ê î ô û</span>"
 */
function addSpecialCharsetHTML(title, charsHTML) {
  var specialchars = document.getElementById('specialcharsets');
  if (!specialchars) return;

  // Ajout des caractères spéciaux. Les liens seront initialisé par initializeCharSubset()
  // lors de la sélection
  var specialcharsets = document.getElementById('specialcharsets');
  var p = document.createElement("p");
  p.style.display = "none";
  p.title = title;
  p.innerHTML = charsHTML;
  specialcharsets.appendChild(p);
}

/**
 * Permet d'ajouter d'un jeu de caractères spéciaux dans le menu déroulant
 * paramètres :
 * - nom du jeu de caractères
 * - caractères spéciaux
 * exemple d'utilisation : addSpecialCharset("Français", "â ê î ô û");
 */
function addSpecialCharset(title, chars) {
  addSpecialCharsetHTML(title, "<span>" + chars + "</span>");
}

/**
 * Générateur de tableaux
 * English: Generate an array using Mediawiki syntax
 *
 * @author: fr:user:dake
 * @version: 0.2
 */

function generateTableau(nbCol, nbRow, styleHeader, styleLine) {
  var code = "\n{| " +
    ((styleHeader==1) ? 'class="wikitable"' : '')+
    '\n|+ Titre du tableau\n';
     
  for (var i=0; i<nbCol; i++) code += '! en-tête ' + i + '\n';
     
  for (var j=0; j<nbRow; j++) {
    if ((j+1)%2==0 && styleLine==1) {
      code += '|-{'+'{ligne grise}'+'}\n';
    } else {             
      code += '|-----\n';
    }
           
    for (var i=0; i<nbCol; i++) code += '| élément\n';
  }
     
  code += '|}';
  insertTags('','', code);
}

/**
 * English: Open a popup with parameters to generate an array. 
 * The number of rows/columns can be modified. Some additional
 * parameters are related to templates available on :fr
 *
 * @author: fr:user:dake
 * @version: 0.1
 */

function popupTableau() {
  var popup = window.open('','name','height=400,width=500');
  
  javaCode =  '<script type="text\/javascript">function insertCode(){';
  javaCode += 'var row = parseInt(document.paramForm.inputRow.value); ';
  javaCode += 'var col = parseInt(document.paramForm.inputCol.value); ';
  javaCode += 'var styleHeader = document.paramForm.inputHeader.checked; ';
  javaCode += 'var styleLine = document.paramForm.inputLine.checked; ';
  javaCode += 'window.opener.generateTableau(col,row,styleHeader,styleLine); ';
  javaCode += '}<\/script>';
  
  popup.document.write('<html><head><title>Paramètres du tableau</title>');
  popup.document.write('<script type="text\/javascript" src="\/resources\/src\/mediawiki.legacy\/wikibits.js"><!-- wikibits js --><\/script>');
  popup.document.write('<style type="text\/css" media="screen">/*<![CDATA[*/ @import "\/skins\/MonoBook\/main.css?5"; /*]]>*/<\/style>');
  popup.document.write(javaCode); 
  popup.document.write('</head><body>');
  popup.document.write('<p>Veuillez entrer les paramètres du tableau : </p>');
  popup.document.write('<form name="paramForm">');
  popup.document.write('Nombre de lignes : <input type="text" name="inputRow" value="3" ><p>');
  popup.document.write('Nombre de colonnes : <input type="text" name="inputCol" value="3" ><p>');
  popup.document.write('Mise en forme (wikitable) : <input type="checkbox" name="inputHeader" checked="1" ><p>');
  popup.document.write('Lignes grises alternées : <input type="checkbox" name="inputLine" checked="0" ><p>');
  popup.document.write('</form">');
  popup.document.write('<p><a href="javascript:insertCode()"> Insérer le code dans la fenêtre d\'édition</a></p>');
  popup.document.write('<p><a href="javascript:self.close()"> Fermer</a></p>');
  popup.document.write('</body></html>');
  popup.document.close();
}
/**
 * Insertion de nouveaux boutons dans la barre d'outil
 */

if ( typeof addCustomButton === 'undefined' ) {
	window.addCustomButton = function ( imageFile, speedTip, tagOpen, tagClose, sampleText, imageId ) {
		mw.hook( 'wikipage.editform' ).add( function () {
			mw.loader.using( 'mediawiki.toolbar', function () {
				mw.toolbar.addButton( {
					imageFile: imageFile,
					speedTip: speedTip,
					tagOpen: tagOpen,
					tagClose: tagClose,
					sampleText: sampleText,
					imageId: imageId
				} );
			} );
		} );
	};
}

addCustomButton('http://www.wiki-brest.net/skins/common/images/button_centrer.png',
                'Centrer',
                '<center>',
                '</center>',
                '',
                'mw-editbutton-center');

addCustomButton('http://www.wiki-brest.net/skins/common/images/button_underline.png',
                'Souligné',
                '<u>',
                '</u>',
                '',
                'mw-editbutton-underline');

addCustomButton('http://upload.wikimedia.org/wikipedia/commons/0/04/Button_array.png',
                'Tableau',
                '{| border=1\n|-\n|Contenu1Ligne1\n|Contenu2Ligne1\n|-\n|Contenu1Ligne2\n|Contenu2Ligne2\n|}',
                '',
                '',
                'mw-editbutton-array');

addCustomButton('http://upload.wikimedia.org/wikipedia/commons/b/b0/Button_note.png',
                'MP3',
                '<flashmp3>',
                '</flashmp3>',
                '',
                'mw-editbutton-mp3');

addCustomButton('http://upload.wikimedia.org/wikipedia/commons/a/ae/Button_IFilm.png',
                'Vidéo',
                '\n<!--Coller entre les balises html le code du lecteur exportable de la vidéo-->\n<center>\n<html>',
                '\n</html>\n</center>',
                '',
                'mw-editbutton-video');

addCustomButton('http://upload.wikimedia.org/wikipedia/commons/c/c9/Button_strike.png',
                'Rayer',
                '<s>',
                '</s>',
                '',
                'mw-editbutton-strike');

addCustomButton('http://upload.wikimedia.org/wikipedia/commons/8/88/Btn_toolbar_enum.png',
                'Énumération',
                '\n# élément 1\n# élément 2\n# élément 3',
                '',
                '',
                'mw-editbutton-enum');

addCustomButton('http://upload.wikimedia.org/wikipedia/commons/1/11/Btn_toolbar_liste.png',
                'Liste',
                '\n* élément A\n* élément B\n* élément C',
                '',
                '',
                'mw-editbutton-liste');

addCustomButton('http://upload.wikimedia.org/wikipedia/commons/9/9e/Btn_toolbar_gallery.png',
                'Galerie d\'images',
                '\n<!--Consultez l Anti-sèche pour les options de la galerie-->\n<center>\n<gallery caption="Donner un titre à votre galerie">\nImage:Exemple.jpg|légende\nImage:Exemple.jpg|légende\nImage:Exemple.jpg|légende\n</gallery>\n</center>',
                '',
                '',
                'mw-editbutton-gallery');

addCustomButton('http://upload.wikimedia.org/wikipedia/commons/3/37/Btn_toolbar_commentaire.png',
                'Commentaire',
                '<!--',
                '-->',
                '',
                'mw-editbutton-comment');

addCustomButton('http://upload.wikimedia.org/wikipedia/commons/4/47/Button_redir.png',
                'Redirection',
                '#REDIRECT [[',
                ']]',
                'nom de la destination',
                'mw-editbutton-redir');

addCustomButton('http://upload.wikimedia.org/wikipedia/commons/b/b4/Button_category03.png',
                'Catégorie',
                '[[Catégorie:',
                ']]',
                'nom de la catégorie',
                'mw-editbutton-category');

addCustomButton('http://upload.wikimedia.org/wikipedia/commons/3/3b/Button_template_alt.png',
                'Modèle',
                '{{',
                '}}',
                'modèle ou page à inclure',
                'mw-editbutton-template');

addCustomButton('http://upload.wikimedia.org/wikipedia/commons/c/c4/Button_ref.png',
                'Référence',
                '<ref>',
                '</ref>',
                'référence, citation ou lien',
                'mw-editbutton-ref');

addCustomButton('http://upload.wikimedia.org/wikipedia/commons/6/64/Buttonrefvs8.png',
                'Index des références',
                '== Notes et références ==\n<references />',
                '',
                '',
                'mw-editbutton-references');

var voirAussi = '<!-- Suggestion de présentation des annexes. Aide : http://fr.wikipedia.org/wiki/Aide:Note -->\n'
 + '== Annexes ==\n'
 + '=== Notes et références ===\n'
 + '<references/>\n'
 + '=== Articles connexes ===\n'
 + '* [[À remplacer]]\n'
 + '*\n'
 + '=== Liens et documents externes ===\n'
 + '*\n';
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/b/bb/Seealso.png',
                'Section Voir aussi',
                voirAussi,
                '',
                '',
                'mw-editbutton-voiraussi');


/**
 * Changer le lien du bouton de création de tableau et supprime le bouton signature sur les articles
 */
function changButtons() {
  toolbarArray = document.getElementById('mw-editbutton-array');
  if (toolbarArray) {
    toolbarArray.onclick = function() {
      popupTableau();
      return false;
    }
  }

  var btnSigImg = document.getElementById('mw-editbutton-signature');
  if (btnSigImg && mw.config.get('wgNamespaceNumber') == 0) btnSigImg.style.display = "none";
}
$(changButtons);


/**
 * permet d'ajouter le modèle {{Information}} dans la zone de Description de la page "Importer un fichier"
 *
 */
   function includePage(name) {
       mw.loader.load(mw.config.get('wgScript') + '?title='
           + name +  
'&action=raw&ctype=text/javascript&dontcountme=s');    //  
smaxage=3600
   }
   if (mw.config.get('wgCanonicalSpecialPageName') == "Upload", "MultipleUpload") {
       includePage("MediaWiki:Onlyifuploading.js");
   }

//</nowiki>
Outils personnels