« MediaWiki:Common.js » : différence entre les versions

De Disposition de clavier bépo
Aucun résumé des modifications
mAucun résumé des modifications
 
(3 versions intermédiaires par 2 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
/* N’importe quel JavaScript ici sera chargé pour n’importe quel utilisateur et pour chaque page accédée. */
/* N’importe quel JavaScript ici sera chargé pour n’importe quel utilisateur et pour chaque page accédée. */


/*
/**
* AddEditSection0
* Liens d'accès directs pour la navigation au clavier
*
*/
* Permet d'éditer la première section d'une page (en-tête)
function showSkipLinks() {
*
  var jump_to_nav = document.getElementById('jump-to-nav');
* Auteur : ??
  if( !jump_to_nav ) return;
* Contributeur : Pabix, Zelda
  var skip_links = jump_to_nav.getElementsByTagName('A')[0];
* Dernière révision : 12 novembre 2006 (importée de fr.wikipédia.org)
  jump_to_nav.className='hidden';
*/
  skip_links.onfocus=function() {
    jump_to_nav.className='';
  }
}
addOnloadHook(showSkipLinks);


function addEditSection0() {
/**
        if (!document.getElementById) {
* Caractères spéciaux
                return;
*
        }
* Ajouter un menu pour choisir des sous-ensembles de caractères spéciaux.
        x = document.getElementById('ca-edit');
* Ecrit par Zelda, voir sur [[Utilisateur:Zelda/Edittools.js]].
        if(!x) {
* Remplace l'ancienne fonction par une variante plus rapide.
                return;
*/
        }
        y = document.createElement('LI');
/**
        y.id = 'ca-edit-0';
* Ajoute un menu déroulant permettant de choisir un jeu de caractères spéciaux
        if (x.className == 'selected') {
* Les caractères spéciaux sont définis dans Mediawiki:Edittools
                if (/&action=edit&section=0$/.test(window.location.href)) {
*/
                        x.className = 'istalk';
function addCharSubsetMenu() {
                        y.className = 'selected';
  var specialchars = document.getElementById('specialcharsets');
                } else {
  if (!specialchars) return;
                        x.className = 'selected istalk';
                }
  // Construction du menu de selection
        } else if (x.className == 'selected istalk') {
  var charSubsetSelect = document.createElement("select");
                if (/&action=edit&section=0$/.test(window.location.href)) {
  charSubsetSelect.setAttribute("style", "display:inline");
                        x.className = 'istalk';
  charSubsetSelect.onchange = function () { chooseCharSubset(this.selectedIndex); };
                        y.className = 'selected istalk';
                } else {
  // Ajout des options au menu
                        y.className = 'istalk';
  var p = document.getElementById('specialcharsets').getElementsByTagName('p');
                }
  for (var i = 0; i < p.length ; i++) {
        } else {
    var opt = document.createElement("option");
                y.className = x.className;
    var txt = document.createTextNode(p[i].title);
                x.className = 'istalk';
    opt.appendChild(txt);
        }
    charSubsetSelect.appendChild(opt);
        z = document.createElement('A');
  }
        if (x.children) {
                z.href = x.children[0].href + '&section=0';
  specialchars.insertBefore(charSubsetSelect, specialchars.childNodes[0]);
                z.appendChild(document.createTextNode('en-tête'));
                y.appendChild(z);
  /* default subset - try to use a cookie some day */
                x.parentNode.insertBefore(y,x.nextSibling);
  chooseCharSubset(0);
        } else {
                z.href = x.childNodes[0].href + '&section=0';
                z.appendChild(document.createTextNode('en-tête'));
                y.appendChild(z);
                x.parentNode.insertBefore(y,x.nextSibling);
        }
}
}
if ( wgAction != "edit" && wgAction != "submit" ) {
        addOnloadHook(addEditSection0);
/**
* 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';
  }
}
}
function AppendCategoryTreeToSidebar() {
    try {
        var node = document.getElementById( "p-tb" )
                          .getElementsByTagName('div')[0]
                          .getElementsByTagName('ul')[0];
   
   
        var aNode = document.createElement( 'a' );
/**
        var liNode = document.createElement( 'li' );
* 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; }");
   
   
        aNode.appendChild( document.createTextNode( 'CategoryTree' ) );
      a.appendChild(document.createTextNode((tagBegin + tagEnd).replace(unescapeRe, "\\")));
        aNode.setAttribute( 'href' , 'http://en.wikipedia.org/wiki/Special:CategoryTree' );
      spans[j].appendChild(a);
        liNode.appendChild( aNode );
      spans[j].appendChild(document.createTextNode(" "));
        liNode.className = 'plainlinks';
        node.appendChild( liNode );
    } catch(e) {
        // lets just ignore what's happened
        return;
     }
     }
    // 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 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);
}
}
   
   
addOnloadHook( AppendCategoryTreeToSidebar );
/**
* 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);
}

Dernière version du 27 septembre 2010 à 01:25

/* N’importe quel JavaScript ici sera chargé pour n’importe quel utilisateur et pour chaque page accédée. */

/**
 * Liens d'accès directs pour la navigation au clavier
 */
function showSkipLinks() {
  var jump_to_nav = document.getElementById('jump-to-nav');
  if( !jump_to_nav ) return;
  var skip_links = jump_to_nav.getElementsByTagName('A')[0];
  jump_to_nav.className='hidden';
  skip_links.onfocus=function() {
    jump_to_nav.className='';
  }
}
addOnloadHook(showSkipLinks);

/**
 * 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 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);
}