« MediaWiki:Common.js » : différence entre les versions
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. */ | ||
/* | /** | ||
* 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); | |||
function | /** | ||
* 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); | |||
} | } | ||
if ( | |||
/** | |||
* 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); | |||
} |
Dernière version du 27 septembre 2010 à 00: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);
}