MediaWiki:Monobook.js
Un article de JurisPedia, le droit partagé.
Version du 15 avril 2006 à 15:25 par JurisPedia (discuter | contributions)
Note : après avoir enregistré 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 pressez Ctrl-F5 ou Ctrl-R (⌘-R sur un Mac) ;
- Google Chrome : Appuyez sur Ctrl-Maj-R (⌘-Shift-R sur un Mac) ;
- Internet Explorer : Maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5 ;
- Opera : Videz le cache dans Outils → Préférences.
/* <pre> <nowiki> */
// From http://fr.wikipedia.org/wiki/MediaWiki:Monobook.js */
// under a GNU Free Documentation License http://www.gnu.org/copyleft/fdl.html */
//============================================================
//
// Info-bulle et touches de raccourci
//
//============================================================
ta = new Object();
ta['pt-userpage'] = new Array('.', 'Ma page utilisateur');
ta['pt-anonuserpage'] = new Array('.', 'La page utilisateur pour l\'adresse IP que vous utilisez');
ta['pt-mytalk'] = new Array('N', 'Ma page de discussion');
ta['pt-anontalk'] = new Array('N', 'La page de discussion pour cette adresse');
ta['pt-preferences'] = new Array('', 'Mes préférences');
ta['pt-watchlist'] = new Array('L', 'La liste des pages que vous suivez');
ta['pt-mycontris'] = new Array('Y', 'La liste de mes contributions');
ta['ca-talk'] = new Array('T', 'Discussion pour cette page');
ta['ca-edit'] = new Array('E', 'Vous pouvez modifier cette page. Merci de prévisualiser avant d\'enregistrer.');
ta['ca-addsection'] = new Array('+', 'Ajouter un commentaire à cette discussion.');
ta['ca-viewsource'] = new Array('E', 'Cette page est protégée. Vous pouvez toutefois en voir le contenu.');
ta['ca-history'] = new Array('H', 'Les auteurs et versions précédentes de cette page.');
ta['ca-protect'] = new Array('=', 'Pour protéger cette page.');
ta['ca-delete'] = new Array('D', 'Pour supprimer cette page.');
ta['ca-undelete'] = new Array('D', 'Pour restaurer cette page.');
ta['ca-move'] = new Array('M', 'Pour déplacer ou renommer cette page.');
ta['ca-nomove'] = new Array('', 'Vous n\'avez pas la permission de déplacer cette page.');
ta['ca-watch'] = new Array('W', 'Ajoutez cette page à votre liste de suivi.');
ta['ca-unwatch'] = new Array('W', 'Retirez cette page de votre liste de suivi.');
ta['search'] = new Array('F', 'Pour effectuer une recherche.');
ta['p-logo'] = new Array('', 'Page principale.');
ta['n-mainpage'] = new Array('Z', 'Pour afficher la page principale.');
ta['n-portal'] = new Array('', 'À propos du projet.');
ta['n-currentevents'] = new Array('', 'Trouvez des informations sur les événements récents.');
ta['n-recentchanges'] = new Array('R', 'La liste des modifications récentes.');
ta['n-randompage'] = new Array('X', 'Afficher une page au hasard.');
ta['n-help'] = new Array('', 'Aide.');
ta['n-sitesupport'] = new Array('', 'Pour soutenir le projet.');
ta['t-whatlinkshere'] = new Array('J', 'Liste des pages liées à celle-ci.');
ta['t-recentchangeslinked'] = new Array('K', 'Liste des modifications récentes des pages liées à celle-ci.');
ta['feed-rss'] = new Array('', 'Alimenter le flux RSS pour cette page.');
ta['feed-atom'] = new Array('', 'Alimenter le flux Atom pour cette page.');
ta['t-contributions'] = new Array('', 'Voir la liste des contributions de cet utilisateur.');
ta['t-emailuser'] = new Array('', 'Envoyer un courriel à cet utilisateur.');
ta['t-upload'] = new Array('U', 'Importer une image ou fichier média sur le serveur.');
ta['t-specialpages'] = new Array('Q', 'Liste des pages spéciales.');
ta['ca-nstab-main'] = new Array('C', 'Afficher le contenu de cette page.');
ta['ca-nstab-user'] = new Array('C', 'Afficher la page utilisateur.');
ta['ca-nstab-media'] = new Array('C', 'Afficher la page média.');
ta['ca-nstab-special'] = new Array('', 'Ceci est une page spéciale, vous ne pouvez pas la modifier.');
ta['ca-nstab-wp'] = new Array('A', 'Afficher la page du projet.');
ta['ca-nstab-image'] = new Array('C', 'Afficher la page de description de l\'image.');
ta['ca-nstab-mediawiki'] = new Array('C', 'Afficher le message système.');
ta['ca-nstab-template'] = new Array('C', 'Afficher le modèle.');
ta['ca-nstab-help'] = new Array('C', 'Afficher la page d\'aide.');
ta['ca-nstab-category'] = new Array('C', 'Afficher la page de catégorie.');
//============================================================
//
// Fonctions de gestion
//
//============================================================
/**
* Installation d'une nouvelle fonction de cette façon:
* aOnloadFunctions[aOnloadFunctions.length] = nom_de_la_fonction; // (sans parenthèses)
*/
if (!window.aOnloadFunctions) {
var aOnloadFunctions = new Array();
}
window.onload = function()
{
if (window.aOnloadFunctions) {
for (var _i=0; _i<aOnloadFunctions.length; _i++) {
aOnloadFunctions[_i]();
}
}
}
/**
* Ajouter une nouvelle fonction a excuter au chargement de la page.
*/
function addLoadEvent(func)
{
if (window.addEventListener)
window.addEventListener("load", func, false);
else if (window.attachEvent)
window.attachEvent("onload", func);
}
//============================================================
//
// Caractères spéciaux
//
//============================================================
/**
* Ajoutez le 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) {
var menu = "<select style=\"display:inline\" onChange=\"chooseCharSubset(selectedIndex)\">";
menu += "<option>Wiki</option>";
menu += "<option>Mathématiques</option>";
menu += "<option>API</option>";
menu += "<option>Latin/Romain</option>";
menu += "<option>Grec</option>";
menu += "<option>Cyrillique</option>";
menu += "<option>AHD</option>";
menu += "<option>Allemand</option>";
menu += "<option>Arabe</option>";
menu += "<option>Catalan</option>";
menu += "<option>Croate</option>";
menu += "<option>Espagnol</option>";
menu += "<option>Espéranto</option>";
menu += "<option>Estonien</option>";
menu += "<option>Gallois</option>";
menu += "<option>Hawaien</option>";
menu += "<option>Hébreu</option>";
menu += "<option>Hiéroglyphe</option>";
menu += "<option>Hollandais</option>";
menu += "<option>Hongrois</option>";
menu += "<option>Indo-européen</option>";
menu += "<option>Irlandais</option>";
menu += "<option>Islandais</option>";
menu += "<option>Italien</option>";
menu += "<option>Letton</option>";
menu += "<option>Lituanien</option>";
menu += "<option>Maltais</option>";
menu += "<option>Navajo & Apache</option>";
menu += "<option>Pinyin</option>";
menu += "<option>Polonais</option>";
menu += "<option>Portugais</option>";
menu += "<option>Rōmaji</option>";
menu += "<option>Roumain</option>";
menu += "<option>Scandinave</option>";
menu += "<option>Serbe</option>";
menu += "<option>Tchèque</option>";
menu += "<option>Turc</option>";
menu += "<option>Vieil anglais</option>";
menu += "<option>Vietnamien</option>";
menu += "<option>Yiddish</option>";
menu += "</select>";
specialchars.innerHTML = menu + specialchars.innerHTML;
/* default subset - try to use a cookie some day */
chooseCharSubset(0);
}
}
/* select subsection of special characters */
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';
}
}
addLoadEvent(addCharSubsetMenu);
//============================================================
//
// Choix de l'affichage des références
//
//============================================================
/**
* 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)
{
specialBib.style.display = 'block';
var menu = "<select style=\"display:inline;\" onChange=\"chooseBibSubset(selectedIndex)\">";
menu += "<option>Liste</option>";
menu += "<option>WikiNorme</option>";
menu += "<option>BibTeX</option>";
menu += "<option>ISBD</option>";
menu += "<option>ISO690</option>";
menu += "</select>";
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';
}
}
addLoadEvent(addBibSubsetMenu);
//============================================================
//
// Prévisualisation rapide
//
//============================================================
/**
* Script de ajoutant une option de prévisualisation rapide.
*
*
* English: Add a Quick View option on the Edit pages.
* This script add 2 new buttons into the "editButtons" div.
* When QuickPrev button is press, the content of edit window
* is retreived and parsed using regular expressions.
*
* @author: fr:user:aoineko
* @version: 0.2
*/
function addQuickPreview()
{
var QuickPreviewBtnTitle = "Prévisualisation rapide de vos modifications [Alt + Q]";
var QuickPreviewBtnValue = "Prévisualisation rapide";
var QuickPrevHideBtnTitle = "Cacher la prévisualisation rapide [Alt + H]";
var QuickPrevHideBtnValue = "Cacher";
var div = document.getElementsByTagName('div');
for(var i = 0; i < div.length ; i++)
{
if(div[i].className == "editButtons") // search "editButtons" div
{
div[i].appendChild(document.createElement("br")); // add a <br/>
var wpQuick = document.createElement("input"); // create and set the "QuickPrev" button
wpQuick.setAttribute("id", "wpQuick");
wpQuick.setAttribute("name", "wpQuick");
wpQuick.setAttribute("title", QuickPreviewBtnTitle);
wpQuick.setAttribute("value", QuickPreviewBtnValue);
wpQuick.setAttribute("type", "button");
wpQuick.setAttribute("onclick", "doQuickPreview();");
wpQuick.setAttribute("tabindex", "8");
wpQuick.setAttribute("accesskey", "Q");
div[i].appendChild(wpQuick);
var wpHide = document.createElement("input"); // create and set the "Hide" button
wpHide.setAttribute("id", "wpHide");
wpHide.setAttribute("name", "wpHide");
wpHide.setAttribute("title", QuickPrevHideBtnTitle);
wpHide.setAttribute("value", QuickPrevHideBtnValue);
wpHide.setAttribute("type", "button");
wpHide.setAttribute("onclick", "hideQuickPreview();");
wpHide.setAttribute("tabindex", "9");
wpHide.setAttribute("accesskey", "H");
div[i].appendChild(wpHide);
}
}
}
/// Retreive current code and parse it
function doQuickPreview()
{
var wpQuickPreview = document.getElementById("wpQuickPreview");
if(!wpQuickPreview)
{
/*var l = document.getElementsByTagName('div');
for(var i = 0; i < l.length ; i++)
if(l[i].className == "previewnote")
wpQuickPreview = l;
if(!wpQuickPreview)*/
{
wpQuickPreview = document.createElement("div");
wpQuickPreview.setAttribute("style", "border:solid 1px gray; width:100%; margin-top:1em; margin-bottom:1em; padding:0.5em;");
var wpSummaryLabel = document.getElementById("wpSummaryLabel");
wpSummaryLabel.parentNode.insertBefore(wpQuickPreview, wpSummaryLabel);
}
wpQuickPreview.setAttribute("id", "wpQuickPreview");
}
wpQuickPreview.style.display = "block";
wpTextbox1 = document.getElementById("wpTextbox1");
var str = "=Prévisualisation rapide=\n" + wpTextbox1.value;
var qp = new QuickPreview(str);
wpQuickPreview.innerHTML = qp.Parse();
}
function QuickPreview(wiki)
{
this.line = wiki.split(/\n/);
this.html = new String;
this.list = 0; // current list depth
this.tab = 0; // current tabulation depth
this.pre = false; /// inside a <pre> tag
this.para = false; /// inside a paragraph
this.HandlePre = function(i)
{
if(this.line[i][0] == ' ')
{
if(this.para)
{
this.para = false;
this.html += "</p>\n";
}
if(!this.pre)
{
this.pre = true;
this.html += "<pre>\n";
}
this.html += this.line[i] + "\n";
return true;
}
else if(this.pre)
{
this.pre = false;
this.html += "</pre>\n";
}
return false;
};
this.HandleH = function(i)
{
if(res = this.line[i].match(/^(={1,6})(.*)\1(.*)$/))
{
this.line[i] = "<h" + res[1].length + ">" + res[2] + "</h" + res[1].length + ">" + res[3];
return true;
}
return false;
};
this.Parse = function()
{
this.html = "";
for(var i = 0; i < this.line.length ; i++)
{
var p = true;
if(this.HandlePre(i))
continue;
if(this.HandleH(i))
p = false;
if(p && !this.para)
{
this.para = true;
this.html += "<p>";
}
this.html += this.line[i]
// Sign //
.replace(/~{5}/g, Date())
.replace(/~{4}/g, "<span style='padding:0.2em; margin:0.5em; border:dashed 1px yellow;'>Signature</span> "+Date())
.replace(/~{3}/g, "<span style='padding:0.2em; margin:0.5em; border:dashed 1px yellow;'>Signature</span>")
// Style //
.replace(/'''''(.*?)''(.*?)'''/g, "<strong><em>$1</em>$2</strong>")
.replace(/'''''(.*?)'''(.*?)''/g, "<em><strong>$1</strong>$2</em>")
.replace(/'''(.*?)''(.*?)'''''/g, "<strong>$1<em>$2</em></strong>")
.replace(/'''''(.*?)''''/g, "<strong><em>\'$1</em></strong>")
.replace(/''''(.*?)''''/g, "<strong><em>$1</em></strong>")
.replace(/''''(.*?)'''/g, "<strong>\'$1</strong>")
.replace(/'''(.*?)'''/g, "<strong>$1</strong>")
.replace(/'''(.*?)''/g, "<em>\'$1</em>")
.replace(/''(.*?)''/g, "<em>$1</em>")
// List //
.replace(/^\*(.*)/g, "<li>$1</li>")
.replace(/^#(.*)/g, "<li>$1</li>")
.replace(/^:(.*)/g, "<li>$1</li>")
// Link //
.replace(/\{\{([^\|]*).*}}/g, "<span style='padding:0.2em; margin:0.5em; border:dashed 1px lightgreen;'>Modèle : $1</span>")
.replace(/\[\[[Ii]mage:([^\|]*)[^\[]*\]\]/g, "<span style='padding:0.2em; margin:0.5em; border:dashed 1px lightblue;'>Image : $1</span>")
.replace(/\[\[[Cc]atégorie:([^\|]*)[^\[]*\]\]/g, "<span style='padding:0.2em; margin:0.5em; border:dashed 1px #FF8080;'><a href='/wiki/Catégorie:$1' title='$1'>Catégorie : $1</a></span>")
.replace(/\[\[([^\[.]*)\|([^\[.]*)\]\]/g, "<a href='/wiki/$1' title='$1'>$2</a>")
.replace(/\[\[([^\[.]*)\]\]/g, "<a href='/wiki/$1' title='$1'>$1</a>")
/*
// Special //
.replace(/\n\n/g, "\n\n<br/>")
.replace(/(^|\n)-{4}(?!~)/g, "<hr/>")
// Table //
.replace(/(^|\n)\{\|(.*)/g, "$1<table $2>")
.replace(/(^|\n)\|}/g, "$1</table>")
.replace(/(^|\n)(\|.*)\|\|/g, "$1$2</td><td>")
.replace(/(^|\n)\|[^-}](.*)/g, "$1</td>$2<td>")
.replace(/(^|\n)(!.*)!!/g, "$1$2</th><th>")
.replace(/(^|\n)/g, "$1</th>$2<th>")
*/
;
this.html += "\n";
}
return this.html;
};
};
/// Hide
function hideQuickPreview()
{
var wpQuickPreview = document.getElementById("wpQuickPreview");
if(wpQuickPreview)
{
wpQuickPreview.style.display = 'none';
}
}
addLoadEvent(addQuickPreview);
//============================================================
//
// Barre d'outil
//
//============================================================
//============================================================
// 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 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();
}
/*
* VraiTitre : Ajout du titre réel d'un article pour lequel MediaWiki n'affiche pas correctement
*/
function VraiTitre()
{
var balise = document.getElementById("vrai_titre");
if (!balise) return;
vrai_titre = balise.childNodes[0].nodeValue;
var titre = document.getElementsByTagName("H1")[0];
rectificatif = titre.appendChild(document.createElement("span"));
rectificatif.setAttribute ("style","color:#AAAAAA; font-size:0.7em; font-style:italic; display:inline;");
rectificatif.appendChild(document.createTextNode(" ("+ vrai_titre +")"));
}
addLoadEvent(VraiTitre);
/* </nowiki> </pre> */