MediaWiki:Common.js
De Bahaipedia
Note : après avoir publié vos modifications, il se peut que vous deviez forcer le rechargement complet du cache de votre navigateur pour voir les changements.
- Firefox / Safari : maintenez la touche Maj (Shift) en cliquant sur le bouton Actualiser ou appuyez sur Ctrl + F5 ou Ctrl + R (⌘ + R sur un Mac).
- Google Chrome : appuyez sur Ctrl + Maj + R (⌘ + Shift + R sur un Mac).
- Edge : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl + F5.
mw.loader.using( ['mediawiki.user', 'mediawiki.util', 'jquery.client'] ).done( function () {
/* N’importe quel JavaScript ici sera chargé pour n’importe quel utilisateur et pour chaque page accédée. */
/** Numeric sorting ***************************************************
*
* Description: Fixes a bug (part of [[bugzilla:8115]])
* in http://svn.wikimedia.org/viewvc/mediawiki/trunk/phase3/skins/common/wikibits.js
* regarding [[Help:Sorting|table sorting]]:
* it allows sorting of numbers with more than one comma (thousands separator).
* Maintainer: [[User:Patrick|Patrick]]
*/
function ts_parseFloat(num) {
if (!num) return 0;
num = parseFloat(num.replace(/,/g, ""));
return (isNaN(num) ? 0 : num);
}
/*
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>");
}
/***********************************************************************************
*/
//[[Image:CatsaGauche JS.png|thumb|Illustration]]<source lang="javascript" line="">
/*
* Catégories à Gauche
*
* Met les catégories dans un panneau de navigation
*
* Auteur : Jmfayard
* Dernière révision : 3 novembre 2006
*/
function CategoriesAGauche() {
var catlinks = document.getElementById("catlinks");
if (!catlinks) { return; }
var categories = catlinks.getElementsByTagName("a") ;
var h5_cats = document.createElement( "h5" );
var text = document.createTextNode( "Catégories" ) ;
h5_cats.appendChild( text ) ;
var div_cats = document.createElement( "div" );
div_cats.setAttribute( "class", "pBody" );
var ul = document.createElement( "ul" );
var a_debut = 1 ; // evitons le lien Categories:
for (var i = a_debut ; i < categories.length ; i++ ) {
var a = categories[i] ;
var li = document.createElement( "li" ) ;
li.appendChild( a.cloneNode(1) ) ;
ul.appendChild( li );
}
div_cats.appendChild( ul ) ;
var portlet = document.createElement( "div" ) ;
portlet.setAttribute( "class", "portlet" );
portlet.setAttribute( "id", "p-cat" ) ;
portlet.appendChild( h5_cats ) ;
portlet.appendChild( div_cats ) ;
//document.getElementById("column-one").insertBefore( document.getElementById("p-search"), portlet ) ;
//document.getElementById("column-one").appendChild( portlet ) ;
div_ptb = document.getElementById( "p-tb" );
document.getElementById("column-one").insertBefore( portlet, div_ptb)
}
addOnloadHook( CategoriesAGauche ) ;
/**
* Hide category container when no categoies can exist (special pages) ***************************
*
*/
var catlinksElement = document.querySelector('.catlinks-allhidden');
var navElement = document.querySelector('nav.p-navbar.not-collapsible.small.mb-2');
var sidebarElement = document.querySelector('.sidebar-item.sidebar-menu-translations.col');
var interlanguageElement = document.querySelector('.interlanguage-link');
if (catlinksElement && navElement) {
navElement.parentNode.removeChild(navElement);
}
if (!interlanguageElement && sidebarElement) {
sidebarElement.style.display = 'none';
}
/* End of mw.loader.using callback */
} );