MediaWiki:Common.js

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

Fonctions générales
* Fonctions générales de lancement de fonctions ou de script */

/** * Installation d'une nouvelle fonction de cette façon : * addOnloadHook(nom_de_la_fonction); (sans parenthèses) * La procédure suivante ne doit plus être utilisée */ if (!window.aOnloadFunctions) { var aOnloadFunctions = new Array; }

window.onload = function { if (window.aOnloadFunctions) { for (var _i=0; _i<aOnloadFunctions.length; _i++) { aOnloadFunctions[_i]; } } }

function addLoadEvent(func) { hookEvent('load', func); }

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

/** * Insérer un javascript d'une page particulière, idée de Mickachu */ function loadJs(page) { document.write(' '); }

/** * Projet JavaScript */ function obtenir(name) { loadJs('MediaWiki:JSScripts/' + name); }

/* Fin des fonctions générales

Fonctions de remplissage automatique
* Fonctions de remplissage automatique */

function InitPaS(page_name) {   var c1 = ""; var c2 = ""; var tpl = '' + page_name + '';   return c1 + '\n' + tpl + '\n' + c2; }

function InitLANN(page_name) {   var c1 = ""; var c2 = ""; var tpl =  + page_name + ; return c1 + '\n' + tpl + '\n' + c2; }

function InitIaS(page_name) {   var c1 = ""; var c2 = ""; var tpl =  + page_name + ; return c1 + '\n' + tpl + '\n' + c2; }

function InitPAdQ(page_name) {   var c1 = ""; var tpl = '' + page_name + '\n'; }

function InitIaA(page_name) {   var c1 = ""; return c1 + '\n'; }

function InitPCP(page_name) {   var c1 = ""; var c2 = ""; var tpl =  + page_name + ; return c1 + '\n' + tpl + '\n' + c2; }

function InitArbReq(page_name) {  var c1 = ""; var c2 = ""; var tpl = '' return c1 + '\n' + tpl + '\n' + c2; }

function InitCdl(page_name) {   var c1   = ""; var c2  = ""; var tpl =  + page_name + ; var tpl2 = '<' + '/noinclude>'; return c1 + '\n' + c2 + '\n' + '\n' + tpl2 + '\n' + tpl; }

function InitProjetTraduction(page_name) { var mustSkip=wgPageName.indexOf('Projet:Traduction/*/'); if (mustSkip == -1) { var c1 = "" + "" + ""; return c1; } else { return ''; } }

function InitPBA(page_name) { var c1 = ""; var tpl = '' + page_name + '\n'; }

var init_if_empty = new Array(  new Array('Wikipédia:Pages_à_supprimer/', InitPaS),   new Array('Wikipédia:Liste_des_articles_non_neutres/', InitLANN),   new Array('Wikipédia:Images_à_supprimer/', InitIaS),   new Array('Wikipédia:Proposition_articles_de_qualité/', InitPAdQ),   new Array('Wikipédia:Pages_soupçonnées_de_violation_de_copyright/', InitPCP),   new Array('Wikipédia:Comité_d\'arbitrage/Arbitrage/', InitArbReq),   new Array('Wikipédia:Comité_de_lecture/', InitCdl),   new Array('Projet:Traduction/', InitProjetTraduction),   new Array('Wikipédia:Proposition_bons_articles/', InitPBA) );

/** * 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 = wgPageName.indexOf(page_match); if (index != -1) { page_name = wgPageName.slice(page_match.length); page_name = page_name.replace(/_/g, ' '); text_area.value = init_if_empty[i][1](page_name); break; }  } } addOnloadHook(InitPage);

/* Fin des fonctions de remplissage automatique

Caractères spéciaux
* Ajouter un menu pour choisir des sous-ensembles de caractères spéciaux * @note L'ordre de cette liste doit correspondre a celui de MediaWiki:Edittools ! */

function addCharSubsetMenu { var specialchars = document.getElementById('specialchars'); if (!specialchars) return;

var charSubsetSelect = document.createElement("select"); charSubsetSelect.setAttribute("style", "display:inline"); // hard to find something that works both on IE and Fx... charSubsetSelect.onchange = function { chooseCharSubset(this.selectedIndex); };

var options = [ "Wiki", "Mathématiques", "API", "Latin/Romain", "Grec", "Cyrillique", "AHD", "Diacritiques", "Allemand", "Arabe", "Berbère", "Catalan", "Croate", "Espagnol", "Espéranto", "Estonien", "Gallois", "Hawaïen", "Hébreu", "Hiéroglyphe", "Hongrois", "Indo-européen", "Irlandais", "Islandais", "Italien", "Letton", "Lituanien", "Maltais", "Navajo & Apache", "Néerlandais", "Pinyin", "Polonais", "Portugais", "Rōmaji", "Roumain", "Scandinave", "Serbe", "Tchèque", "Turc", "Vieil anglais", "Vietnamien", "Yiddish" ]; for (var i in options) { var opt = document.createElement("option"); var txt = document.createTextNode(options[i]); opt.appendChild(txt); charSubsetSelect.appendChild(opt); }

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

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

/* choisir la section de caractères spéciaux */ function chooseCharSubset(s) { var l = document.getElementById('specialchars').getElementsByTagName('p'); for (var i = 0; i < l.length ; i++) { l[i].style.display = i == s ? 'inline' : 'none'; l[i].style.visibility = i == s ? 'visible' : 'hidden'; } } addOnloadHook(addCharSubsetMenu);

/* Fin des caractères spéciaux

Espace Référence
* 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 = '' + ' Liste ' + ' WikiNorme ' + ' BibTeX ' + ' ISBD ' + ' ISO690 ' + ' '; 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'; } } addOnloadHook(addBibSubsetMenu);

/* Fin de l'espace Référence

Barre d'outil
* 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 += '\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; ifunction 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('  Paramètres du tableau '); popup.document.write('<\/script>'); popup.document.write('/*<![CDATA[*/ @import "\/skins-1.5\/monobook\/main.css?5"; /*]]>*/<\/style>'); popup.document.write(javaCode); popup.document.write(' '); popup.document.write(' Veuillez entrer les paramètres du tableau : '); popup.document.write(''); popup.document.write('Nombre de lignes :  '); popup.document.write('Nombre de colonnes :  '); popup.document.write('Largeur de la bordure :  '); popup.document.write('En-tête en gris (style « charte graphique ») :  '); popup.document.write('Lignes grises alternées (style « charte graphique ») :  '); popup.document.write(' '); popup.document.write('  Insérer le code dans la fenêtre d\'édition '); popup.document.write('  Fermer '); popup.document.write(' '); 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');

addCustomButton('http://upload.wikimedia.org/wikipedia/commons/3/30/Btn_toolbar_rayer.png','Rayer',' ',' ','');

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

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

addCustomButton('http://upload.wikimedia.org/wikipedia/commons/c/c8/Button_redirect.png','Redirection','#REDIRECT ','','nom de la destination');

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

addCustomButton('http://upload.wikimedia.org/wikipedia/commons/7/79/Button_reflink.png','Référence',' ','référence, citation ou lien');

addCustomButton('http://upload.wikimedia.org/wikipedia/commons/3/3b/Button_template_alt.png','Index des références','== Notes et références ==\n ',,);

var voirAussi = '\n' + '== Notes et références de l\'article ==\n' + ' \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);

/* Fin de la barre d'outils

Page de recherche
* Amélioration de la page de recherche v3 * Auteur : Marc Mongenet * Sous licence GFDL & GPL */ function SpecialSearchEnhanced3 {

function SearchForm(search_action_url, engine_url, engine_name, logo_url,                    search_field_name, search_field_value, site_field_name, site_field_value) {  var span = document.createElement("div"); span.style.marginRight = "1em"; span.style.width="100%"; span.style.whiteSpace = "nowrap";

var form = document.createElement("form"); form.method = "get"; form.action = search_action_url; form.style.display = "inline"; span.appendChild(form);

var input = document.createElement("input"); input.type = "hidden"; input.name = search_field_name; form.appendChild(input);

var site = document.createElement("input"); site.type = "hidden"; site.name = site_field_name; site.value = site_field_value; form.appendChild(site);

var submit = document.createElement("input"); submit.type = "submit"; submit.value = "Recherche"; form.appendChild(submit);

form.onsubmit = function { input.value = document.getElementById("lsearchbox").value; }

var a = document.createElement("a"); a.href = engine_url; span.appendChild(a);

var img = document.createElement("img"); img.src = logo_url; img.alt = engine_name; img.style.borderWidth = "0"; img.style.padding = "5px"; a.appendChild(img);

return span; }

if (typeof SpecialSearchEnhanced3Disabled != 'undefined') return; if (wgPageName != "Special:Search") return;

var mainNode = document.getElementsByTagName("form"); if (!mainNode) return; mainNode = mainNode[0]; mainNode.appendChild(document.createElement("center")); mainNode = mainNode.lastChild;

var searchValue = document.getElementById("lsearchbox").value; var engine; engine = SearchForm("http://partner.exalead.fr/search", "http://www.exalead.fr/", "Exalead",                    "http://www.wikipedia.fr/exalead.gif", "q", searchValue,                     "site", "fr.wikipedia.org"); mainNode.appendChild(engine); engine = SearchForm("http://www.google.fr/search", "http://www.google.fr/", "Google",                    "http://www.google.com/logos/Logo_25wht.gif", "q", searchValue,                     "as_sitesearch", "fr.wikipedia.org"); mainNode.appendChild(engine); engine = SearchForm("http://www.wikipediasearch.net/index.php", "http://www.wikipediasearch.net", "Wikipedia Search",                    "http://www.wikipediasearch.net/logo_mini.png", "action", searchValue,                     "lang", "fr"); mainNode.appendChild(engine); engine = SearchForm("http://search.live.com/results.aspx", "http://search.live.com/", "Live",                    "http://search.live.com/s/affillogoLive.gif", "q", searchValue,                     "q1", "site:http://fr.wikipedia.org"); mainNode.appendChild(engine); engine = SearchForm("http://fr.search.yahoo.com/search", "http://fr.search.yahoo.com/", "Yahoo!",                    "http://us.yimg.com/i/yahootogo/y88red2.gif", "p", searchValue,                     "vs", "fr.wikipedia.org"); mainNode.appendChild(engine); } addOnloadHook(SpecialSearchEnhanced3); /* Fin de la page de recherche

Désactiver le bouton Sauvegarder à la première édition
* Force IP to preview before saving changes. * Copyright Marc Mongenet, 2006 */ function forcePreview {    if (wgUserName != null) return; saveButton = document.getElementById("wpSave"); if (!saveButton) return; if (location.search.search(/&action=edit/) == -1) return; saveButton.disabled = true; saveButton.style.fontWeight = "normal"; document.getElementById("wpPreview").style.fontWeight = "bold"; } addLoadEvent(forcePreview);

/* Fin du forcePreview

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

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

/** * 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|mw-plusminus-neg|mw-plusminus-null/.test(elmts[cpt].className) || /mw-plusminus-pos|mw-plusminus-neg|mw-plusminus-null/.test(elmts[cpt].getAttribute("class"))) elmts[cpt].title = tt; } } addLoadEvent(toolTipPlusMinus);

/* Fin des fonctions de mise en page

/** * Réécriture des titres * * Fonction utilisée par Modèle:Titre incorrect * * La fonction cherche un bandeau de la forme * titre * * Un élément comportant id="DisableRealTitle" désactive la fonction */ function rewritePageH1 { var realTitle = document.getElementById('RealTitle'); var h1 = document.getElementById('firstHeading'); if(!h1) { h1 = document.getElementsByTagName('h1')[0]; } if (realTitle && h1) { var titleText = realTitle.innerHTML; if (titleText == '') { h1.style.display = 'none'; } else { h1.innerHTML = titleText; } } } addOnloadHook(rewritePageH1);

/* Fin de l'aide sur page spéciales

Redirect vers wikibooks etc.
var redirected_from_article_datas = new Array(  new Array('Wikipédia:Redirect_vers_Wikibooks', 'wikibooks'),   new Array('Wikipédia:Redirect_vers_Wikisource', 'wikisource'),   new Array('Wikipédia:Redirect_vers_Wikiversité', 'wikiversity'),   new Array('Wikipédia:Redirect_vers_Wikiquote', 'wikiquote'),   new Array('Wikipédia:Redirect_vers_Wikinews', 'wikinews') );

function redirected_from_article {  if (wgIsArticle == false) return; for (var i = 0; i < redirected_from_article_datas.length; ++i) { var page_match = redirected_from_article_datas[i]; var index = wgPageName.indexOf(page_match[0]); if (index == 0) { var div = document.getElementById('contentSub'); var span = document.getElementById('redirected_from'); // real target is always encoded in the anchor. target = window.location.hash; if (!div || !span || target == '') break;

target = target.slice(1); target = target.split('.23'); target[0] = target[0].replace(/\.([0-9A-Z][0-9A-Z])/g, '%$1'); if (target.length > 1) target = target[0] + '#' + target[1] else target = target[0]; target = target.replace(/%2F/g, '/'); quoted_target = target; target = target.replace(/\.([0-9A-Z][0-9A-Z])/g, '%$1'); target = decodeURI(target);

// special case for self-referrer if (target == page_match[0]) break; target = target.replace(/_/g, ' ');

var e = document.createElement('A'); e.href = 'http://fr.' + page_match[1] + '.org/wiki/' + quoted_target; e.innerHTML = target; span.replaceChild(e, span.firstChild); break; }  } }

addLoadEvent(redirected_from_article);

// Fin Redirect vers wikibooks etc.