Domaines
Communes
Quartiers de Brest
Espaces de noms

Variantes
Actions
De Wiki-Brest

MediaWiki:Common.js : Différence entre versions

Ligne 152 : Ligne 152 :
  
 
/* Fin de la barre d'outils
 
/* Fin de la barre d'outils
 +
 +
/*
 +
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);
 +
  }
 +
}
 +
 +
addOnloadHook(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 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()
 +
  // lors de la sélection
 +
  var specialcharsets = document.getElementById('specialcharsets');
 +
  var p = document.createElement("p");
 +
  p.style.display = "none";
 +
  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>");
 +
}
  
 
</nowiki></code></poem>
 
</nowiki></code></poem>

Version du 24 septembre 2007 à 21:54

/* Any JavaScript here will be loaded for all users on every page load. */

<poem><code><nowiki>
/*
 * Ajout de boutons à la barre d'outils 
 */
 /**
 * Générateur de tableaux
 * English: Generate an array using Mediawiki syntax
 *
 * @author: fr:user:dake
 * @version: 0.1
 */

function generateTableau(nbCol, nbRow, border, styleHeader, styleLine)
{
     var code = "\n";
     if (styleHeader==1) {
           code += '{{entête';
           code += ' tableau charte}}\n';
     } 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. 
 * 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 bord = parseInt(document.paramForm.inputBorder.value); ';
  javaCode += 'var styleHeader = document.paramForm.inputHeader.checked; ';
  javaCode += 'var styleLine = document.paramForm.inputLine.checked; ';
  javaCode += 'window.opener.generateTableau(col,row,bord,styleHeader,styleLine); ';
  javaCode += '}<\/script>';
  
  popup.document.write('<html><head><title>Paramètres du tableau</title>');
  popup.document.write('<script type="text\/javascript" src="\/skins-1.5\/common\/wikibits.js"><!-- wikibits js --><\/script>');
  popup.document.write('<style type="text\/css" media="screen projection">/*<![CDATA[*/ @import "\/skins-1.5\/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('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();
}

/**
 * Insertion de nouveaux boutons dans la barre d'outil
 */

function addCustomButton(imageFile, speedTip, tagOpen, tagClose, sampleText, imageId) {
   mwCustomEditButtons[mwCustomEditButtons.length] =
    {"imageId": imageId,
     "imageFile": imageFile,
     "speedTip": speedTip,
     "tagOpen": tagOpen,
     "tagClose": tagClose,
     "sampleText": sampleText};
}

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

 if (wgNamespaceNumber != 0)  addCustomButton('http://upload.wikimedia.org/wikipedia/commons/c/c9/Button_strike.png','Rayer','<s>','</s>','');

 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','','');

 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','','');

 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>','','');

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

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

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

 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 -->','','');

 var voirAussi = '<!-- Suggestion de présentation des annexes. Aide : http://fr.wikipedia.org/wiki/Aide:Notes et références -->\n'
 + '== Notes et références de l\'article ==\n'
 + '<references/>\n'
 + '== Voir aussi ==\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,'','');

// Changer le lien du bouton de création de tableau
function button_tab()
{
 toolbarArray = document.getElementById('mw-editbutton-array');
 if (!toolbarArray) return false;
 
 toolbarArray.onclick = function() {
   popupTableau();
   return false;
 }
}
hookEvent('load', button_tab);

// Supprime le bouton 'signature' sur les articles
function hideSigButtonOnArticles() {
  if (wgNamespaceNumber != 0) return;
  var btnSigImg = document.getElementById('mw-editbutton-signature');
  if (!btnSigImg) return;
  btnSigImg.style.display = "none";
}
hookEvent('load', hideSigButtonOnArticles);

/* Fin de la barre d'outils

/*
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);
  }
}
 
addOnloadHook(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 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()
  // lors de la sélection
  var specialcharsets = document.getElementById('specialcharsets');
  var p = document.createElement("p");
  p.style.display = "none";
  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>");
}

</nowiki></code></poem>
Outils personnels