Les pages de droit public principalement ainsi que toutes autres branches de droit - Webmestre : Bertrand GRONDIN
Ce wiki possède
556 articles.
MediaWiki:Common.js
De Gdn
Révision de 12 septembre 2009 à 09:37 par Galdrad (discuter | contributions) (Révocation des modifications de Galdrad (discussion) vers la dernière version de Grondin)
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.
//192.168.254.24//192.168.254.24//192.168.254.24//192.168.254.24//192.168.254.24/* N’importe quel JavaScript ici sera chargé pour n’importe quel utilisateur et pour chaque page accédée. */ /* __FORCETOC__ == infobulles et touches d’accès == <pre>*/ var ta = new Object(); ta['pt-userpage'] = new Array('.','Ma page utilisateur'); ta['pt-anonuserpage'] = new Array('.','La page utilisateur de l’IP avec laquelle vous contribuez'); ta['pt-mytalk'] = new Array('n','Ma page de discussion'); ta['pt-anontalk'] = new Array('n','Discussion à propos des modifications depuis cette adresse IP'); ta['pt-preferences'] = new Array('','Mes préférences'); ta['pt-watchlist'] = new Array('l','liste des pages dont vous suivez les modifications.'); ta['pt-mycontris'] = new Array('y','Liste de mes contributions'); ta['pt-login'] = new Array('o','Vous êtes invité à vous identifier, mais ce n’est pas obligatoire.'); ta['pt-anonlogin'] = new Array('o','Vous êtes invité à vous identifier, mais ce n’est pas obligatoire.'); ta['pt-logout'] = new Array('o','Se déconnecter'); ta['ca-talk'] = new Array('t','Discussion à propos de l’article'); ta['ca-edit'] = new Array('e','Vous pouvez modifier cette page. Merci d’utiliser le bouton de prévisualisation avant de sauvegarder.'); ta['ca-addsection'] = new Array('+','Ajouter un commentaire à cette discussion.'); ta['ca-viewsource'] = new Array('e','Cette page est protégée. Vous pouvez voir sa source.'); ta['ca-history'] = new Array('h','Anciennes versions de cette page.'); ta['ca-protect'] = new Array('=','Protéger cette page'); ta['ca-delete'] = new Array('d','Supprimer cette page'); ta['ca-undelete'] = new Array('d','Restaurer les modifications effectuées sur cette page avant sa suppression'); ta['ca-move'] = new Array('m','Renommer cette page'); ta['ca-watch'] = new Array('w','Ajouter cette page à votre liste de suivi'); ta['ca-unwatch'] = new Array('w','Retirer cette page de votre liste de suivi'); ta['search'] = new Array('f','Chercher dans ce wiki'); ta['p-logo'] = new Array('','Page principale'); ta['n-mainpage'] = new Array('z','Visitez la page principale'); ta['n-portal'] = new Array('','À propos de ce projet, ce que vous pouvez faire, où trouver les choses'); ta['n-currentevents'] = new Array('','Trouver des informations sur les évènements actuels'); ta['n-recentchanges'] = new Array('r','Liste des changements récents sur le wiki'); ta['n-randompage'] = new Array('x','Charger une page aléatoire'); ta['n-help'] = new Array('','Aide'); ta['n-sitesupport'] = new Array('','Aidez-nous'); ta['t-whatlinkshere'] = new Array('j','Liste de tous les wikis qui lient vers cette page'); ta['t-recentchangeslinked'] = new Array('k','Changements récents dans les pages qui lient vers cette page'); ta['feed-rss'] = new Array('','Flux RSS pour cette page'); ta['feed-atom'] = new Array('','Flux Atom pour cette page'); ta['t-contributions'] = new Array('','Voir la liste de contributions de cet utilisateur'); ta['t-emailuser'] = new Array('','Envoyer un courriel à cet utilisateur'); ta['t-upload'] = new Array('u','Télécharger une image ou des fichiers'); ta['t-specialpages'] = new Array('q','Liste de toutes les pages spéciales'); ta['ca-nstab-main'] = new Array('c','Voir l’article'); ta['ca-nstab-user'] = new Array('c','Voir la page utilisateur'); ta['ca-nstab-media'] = new Array('c','Voir la page du média'); ta['ca-nstab-special'] = new Array('','Ceci est une page spéciale, vous ne pouvez la modifier.'); ta['ca-nstab-project'] = new Array('a','Voir la page du projet'); ta['ca-nstab-image'] = new Array('c','Voir la page de l’image'); ta['ca-nstab-mediawiki'] = new Array('c','Voir le message système'); ta['ca-nstab-template'] = new Array('c','Voir le modèle'); ta['ca-nstab-help'] = new Array('c','Voir la page d’aide'); ta['ca-nstab-category'] = new Array('c','Voir la page de la catégorie'); /*</pre> ==Générateur de tableaux== <pre>*/ /** * * 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(); } /*</pre> == Insersion des caractères spéciaux == <pre>*/ /** * 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 (modèles)</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>Catalan</option>"; menu += "<option>Croate</option>"; menu += "<option>Espagnol</option>"; menu += "<option>Espéranto</option>"; menu += "<option>Estonien</option>"; menu += "<option>Français</option>"; menu += "<option>Gallois</option>"; menu += "<option>Hawaien</option>"; menu += "<option>Islandais</option>"; menu += "<option>Italien</option>"; menu += "<option>Japonais</option>"; menu += "<option>Maltais</option>"; menu += "<option>Pinyin</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 += "</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'; } } addOnloadHook(addCharSubsetMenu); /*</pre> == Insertion de nouveaux boutons == <pre>*/ //Remplit la variable mwCustomEditButtons (voir /skins-1.5/commons/wikibits.js) pour ajouter des boutons à la barre d'outils function addCustomButton(imageFile, speedTip, tagOpen, tagClose, sampleText) { mwCustomEditButtons[mwCustomEditButtons.length] = {"imageFile": imageFile, "speedTip": speedTip, "tagOpen": tagOpen, "tagClose": tagClose, "sampleText": sampleText}; } addCustomButton('http://upload.wikimedia.org/wikipedia/commons/0/03/Button_paragraphe_1.png','Paragraphe de premier niveau','= ',' =\n','Texte à insérer'); addCustomButton('http://upload.wikimedia.org/wikipedia/commons/c/cf/Button_paragraphe_2.png','Paragraphe de deuxième niveau','== ',' ==\n','Texte à insérer'); addCustomButton('http://upload.wikimedia.org/wikipedia/commons/b/ba/Button_paragraphe_3.png','Paragraphe de troisième niveau','=== ',' ===\n','Texte à insérer'); addCustomButton('http://upload.wikimedia.org/wikipedia/commons/6/61/Button_paragraphe_4.png','Paragraphe de quatrième niveau','==== ',' ====\n','Texte à insérer'); addCustomButton('http://upload.wikimedia.org/wikipedia/commons/7/79/Button_paragraphe_5.png','Paragraphe de cinquième niveau','===== ',' =====\n','Texte à insérer'); addCustomButton('http://upload.wikimedia.org/wikipedia/commons/e/e8/Button_paragraphe_6.png','Paragraphe de sixième niveau','====== ',' ======\n','Texte à insérer'); addCustomButton('http://upload.wikimedia.org/wikipedia/commons/a/a0/Button_references_alt.png','Ajoute une référence','<ref>','</ref>',''); addCustomButton('http://upload.wikimedia.org/wikipedia/commons/9/9a/Button_references.png','Liste des références','<references />\n','',''); addCustomButton('http://upload.wikimedia.org/wikipedia/commons/4/4b/Button_class_text.png','Classe texte','<div class=\"text\">\n\n','\n</div>','Insérez les paragraphes'); addCustomButton('http://upload.wikimedia.org/wikipedia/commons/0/07/Button_justice.png','Classe jurisprudence','<div class=\"jur\">\n','\n</div>','Insérez les notes de jurisprudence'); addCustomButton('http://upload.wikimedia.org/wikipedia/commons/b/bf/Button_pagename.png','Titrage','\{\{Titre\n\|1=','\n\|2=\n\|3=\n\}\}','Insérez votre titre'); addCustomButton('http://upload.wikimedia.org/wikipedia/commons/a/a4/TableStart.png','Tableau échelons','\{\{subst:TCE\n\|grade1=','\n\|grade2=\n\n\}\}','Insérez votre tableau'); addCustomButton('http://upload.wikimedia.org/wikipedia/commons/5/5c/Button_ligne_tableau.png','ligne tableau FP','\{\{subst:LigneTEC\|','\|\|\}\}\n','Insérez l’échelon'); addCustomButton('http://upload.wikimedia.org/wikipedia/commons/4/4c/TableRow.png','ligne tableau FP','\{\{subst:LigneTEC1\n\|1=','\n\|2=\n\|3=\n\|4=\n\|5=\n\|6=\n\|7=\n\}\}\n','Insérez l’échelon'); //Ressemble à la fonction de /skins-1.5/commons/wikibits.js pour insérer un autre lien que insertTags function marque_tab() { var toolbar = document.getElementById('toolbar'); if (!toolbar) return false; var textbox = document.getElementById('wpTextbox1'); if (!textbox) return false; if (!document.selection && textbox.selectionStart == null) return false; var image = document.createElement("img"); image.width = 23; image.height = 22; image.src = 'http://upload.wikimedia.org/wikipedia/commons/0/04/Button_array.png'; image.border = 0; image.alt = 'Tableau'; image.title = 'Tableau'; image.style.cursor = "pointer"; image.onclick = function() { popupTableau(); return false; } toolbar.appendChild(image); } addOnloadHook(marque_tab); /*</pre> == AJAX, Cookies et HTML Parser == <pre> */ var ajax = new objAJAX() var cookies = new objCookies() //--------------------------------------------------------------------------------------------objAJAX function objAJAX() { // AJAX taken from http://jibbering.com/2002/4/httprequest.html. Thanx :) this.conn = false /*@cc_on @*/ /*@if (@_jscript_version >= 5) // JScript gives us Conditional compilation, we can cope with old IE versions. // and security blocked creation of the objects. try { this.conn = new ActiveXObject("Msxml2.XMLHTTP") } catch (e) { try { this.conn = new ActiveXObject("Microsoft.XMLHTTP") } catch (E) { this.conn = false } } @end @*/ if (!this.conn && typeof XMLHttpRequest != 'undefined') { try { this.conn = new XMLHttpRequest() } catch (e) { this.conn =false } } if (!this.conn && window.createRequest) { try { this.conn = window.createRequest() } catch (e) { this.conn = false } } this.url = null this.requestType = "GET" this.unsync = true this.parser = new objHTMLparser() } objAJAX.prototype.sendRequest = function (url, type, unsync, data) { if (!this.conn) return null if (this.conn.readyState != 0 && this.conn.readyState != 4) return "busy" if (url) this.url = url if (type) this.requestType = type if (unsync != null) this.unsync = unsync //alert(this.requestType + " ++ " + this.url + " ++ " + this.unsync) this.conn.open(this.requestType, this.url, this.unsync) this.conn.send(data) } objAJAX.prototype.getResult = function () { if (!this.conn) return null return this.conn.responseText } objAJAX.prototype.abort = function () { this.conn.onreadystatechange = null this.conn.abort() } //------------------------------------------------------------------------------------------ObjCookie function objCookies() { this.value = null this.name = null this.expires = null } objCookies.prototype.get = function (which) { this.allcookies = document.cookie var start = this.allcookies.indexOf("; " + which + "=") if (start == -1) { start = this.allcookies.indexOf(which + "=") if (start != 0) return null } else start += "; ".length this.name = which var end = this.allcookies.indexOf(";", start) if (end == -1) end = this.allcookies.length this.value = this.allcookies.substring(start + which.length + 1, end) var arr = this.allcookies.substring(start, this.allcookies.length).split("; ") this.expires = null if (arr.length > 0) if (/expires=/.test(arr[1])) this.expires = arr[1].substring("expires=".length, arr[1].length) return this.value } objCookies.prototype.set = function (name, value, expires) { document.cookie = name + "=" + value + ";" + (expires ? "expires=" + expires + ";" : "") + "path=/;" + "domain=fr.wikipedia.org;" this.allcookies = document.cookie } objCookies.prototype.setWithDelay = function (name, value, delay) { // delay is in millisecond var d = new Date() d.setTime(d.getTime() + delay) this.set(name, value, d.toGMTString()) } objCookies.prototype.kill = function (which) { if (this.get(which)) this.set(which, null, "Thu, 01-Jan-70 00:00:01 GMT") } //--------------------------------------------------------------------------------------objHTMLparser function objHTMLparser(str) { this.html = str } objHTMLparser.prototype.parse = function (elmt, str) { if (str !== null) this.html = str if (this.html.indexOf("<" + elmt) == -1 || this.html.indexOf("</" + elmt + ">") == -1) return null var arr1 = this.html.split("<" + elmt) var elmts = new Array() for (var cpt = 1 ; cpt < arr1.length ; cpt++) { var el = new Object() el.innerHTML = arr1[cpt].substring(arr1[cpt].indexOf(">"), arr1[cpt].length).split("</" + elmt)[0] var prop = arr1[cpt].split(">")[0].split(/\s/g) for (var cpt1 = 1 ; cpt1 < prop.length ; cpt1++) { if (prop[cpt1].indexOf("=") != -1) el[prop[cpt1]] = true else el[prop[cpt1].split("=")[0]] = prop[cpt1].substring(prop[cpt1].indexOf("="), prop[cpt1].length) } elmts[cpt-1] = el } this.elmts[elmt] = elmts } /*</pre> == Historique en couleurs == <pre> */ /*************************************************/ // Nom : DeluxeHistory // Auteur : Dake // Basé sur du code Ajax de GôTô // Dernière mise à jour : 8 avril 2006 // Commentaires : /*************************************************/ var sysopsDeluxeHistory = null; var botsDeluxeHistory = null; function extractUsers(res) { pattern = /title\=\"Utilisateur:(.*?)\"/g; s = ""; while((result = pattern.exec(res)) != null) { s += result[1] + "||"; } return s; } /*************************************************/ // Auteur : Dake // Basé sur du code de GôTô /*************************************************/ function getBots() { try { netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead"); } catch (e) { // mange l'exception } if (!cookies.get("botsDeluxeHistory")) { ajax.conn.onreadystatechange = function () { if (ajax.conn.readyState == 4) { botsDeluxeHistory = extractUsers(ajax.getResult()) // conservé pour une semaine cookies.setWithDelay("botsDeluxeHistory", botsDeluxeHistory, 1000*3600*24*7) getSysops(); } } ajax.sendRequest("http://grondin.tuxfamily.org/index.php?title=Special:Listusers&group=bot&limit=500&offset=0&action=raw", "GET", true) } else { botsDeluxeHistory = cookies.get("botsDeluxeHistory") getSysops(); } } /*************************************************/ // Auteur : Dake // Basé sur du code de GôTô /*************************************************/ function getSysops() { try { netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead"); } catch (e) { // mange l'exception } if (!cookies.get("sysopsDeluxeHistory")) { ajax.conn.onreadystatechange = function () { if (ajax.conn.readyState == 4) { sysopsDeluxeHistory = extractUsers(ajax.getResult()) // conservé pour une semaine cookies.setWithDelay("sysopsDeluxeHistory", sysopsDeluxeHistory, 1000*3600*24*7) deluxeHistoryProcess(); } } ajax.sendRequest("http://grondin.tuxfamily.org/index.php?title=Special:Listusers&group=sysop&limit=500&offset=0&action=raw", "GET", true) } else { sysopsDeluxeHistory = cookies.get("sysopsDeluxeHistory") deluxeHistoryProcess(); } } // code by Martin Honnen function getOuterHTML (node) { if (node.nodeType == 3) return node.nodeValue; else if (node.nodeType == 1) { var html = ''; html += '<' + node.nodeName; for (var a = 0; a < node.attributes.length; a++) html += ' ' + node.attributes[a].nodeName + '="' + node.attributes[a].nodeValue + '"'; if (node.childNodes.length == 0) html += ' \/>'; else { html += '>'; for (var c = 0; c < node.childNodes.length; c++) html += getOuterHTML(node.childNodes[c]); html += '<\/' + node.nodeName + '>'; } return html; } } function deluxeHistoryProcess() { sysopsList = sysopsDeluxeHistory.split("||") botsList = botsDeluxeHistory.split("||") var lis = document.getElementById("pagehistory").getElementsByTagName("li"); for (i=0; i<lis.length; i++) { spanNode = lis[i].getElementsByTagName("span"); username = spanNode[0].childNodes[0].childNodes[0].nodeValue; // check le statut du contributeur var className = "history-user-normal"; // bot ? for (j=0;j<botsList.length;j++) { if (botsList[j].indexOf(username)==0) { className = "history-user-bot" break; } } // sysop ? for (j=0;j<sysopsList.length;j++) { if (sysopsList[j].indexOf(username)==0) { className = "history-user-sysop" break; } } // ip ? var ip = /\d{1,3}\.\d{1,3}.\d{1,3}.\d{1,3}/; if (ip.exec(username)) { className = "history-user-ip" } // ajout des icônes specialOp = ""; var comment = ""; for (h=0;h<spanNode.length;h++) { if (spanNode[h].getAttribute("class") == "comment") { comment = getOuterHTML(spanNode[h]) break; } } var regexExpEvents = new Array(); regexExpEvents[0] = /((r|R)(é|e)vocation|(r|R)v |(R|r)evert|(v|V)andal(isme|e))/; regexExpEvents[1] = /(a restauré|a effacé|(s|S)uppression)/; regexExpEvents[2] = /((R|r)enommage|a déplacé)/; regexExpEvents[3] = /((semi|Semi)-(p|P)rotection|(P|p)rotection)/; var iconsEvents = new Array(); iconsEvents[0] = "http://upload.wikimedia.org/wikipedia/commons/thumb/7/77/Crystal_Clear_action_reload.png/20px-Crystal_Clear_action_reload.png" iconsEvents[1] = "http://upload.wikimedia.org/wikipedia/commons/thumb/0/0c/Crystal_Clear_action_exit.png/20px-Crystal_Clear_action_exit.png" iconsEvents[2] = "http://upload.wikimedia.org/wikipedia/commons/thumb/4/45/Crystal_Clear_action_2rightarrow.png/20px-Crystal_Clear_action_2rightarrow.png" iconsEvents[3] = "http://upload.wikimedia.org/wikipedia/commons/thumb/f/ff/Crystal_Clear_action_lock.png/20px-Crystal_Clear_action_lock.png" if (comment) { for (k=0;k<regexExpEvents.length;k++) { if (regexExpEvents[k].test(comment)) { imgTag = "<img src=\"" + iconsEvents[k] + "\" />" specialOp = "<div class=\"" + className + "\" style=\"float: right; vertical-align:top;\">" + imgTag + "</div>" } } } lis[i].innerHTML = "<div class=\"" + className + "\">" + specialOp + lis[i].innerHTML + "</div>" inputNodes = lis[i].getElementsByTagName("input"); for (j=0;j<inputNodes.length;j++) { inputNodes[j].style.visibility='visible'; } for (j=0;j<spanNode.length;j++) { if(spanNode[j].getAttribute("class")=="history-user") { spanNode[j].setAttribute("class", className) } } } } function deluxeHistoryLoader() { if (document.URL.indexOf("&action=history")==-1) return; getBots(); } addOnloadHook(deluxeHistoryLoader); /* </pre> == bouton Remplacement == <pre> */ /*** *Expressions régulières *Auteur: ThomasV, Pathoschild *Note : cet outil utilise la syntaxe javascript : on utilise $ (et pas \) pour appeler un groupe dans la chaîne de remplacement. *Tutoriel : http://www.regular-expressions.info/tutorial.html ****/ /* create form */ function custom() { /* if already open */ if(document.getElementById('regexform')) customremove() else { editbox = document.getElementById('wpTextbox1'); /* container */ regexform = document.createElement('div'); regexform.setAttribute('id','regexform'); editbox.parentNode.insertBefore(regexform,editbox.parentNode.firstChild); /* form tag */ var formform = document.createElement('form'); formform.setAttribute('id','regexformform'); formform.setAttribute('onSubmit','customgo(); return false;'); regexform.appendChild(formform); // add input boxes var newinput = document.createElement('input'); newinput.setAttribute('id','formsearch'); newlabel = document.createElement('label'); newlabel.setAttribute('for','formsearch'); newlabel.appendChild(document.createTextNode("Remplacer ")); formform.appendChild(newlabel); formform.appendChild(newinput); var newinput = document.createElement('input'); newinput.setAttribute('id','formreplace'); newlabel = document.createElement('label'); newlabel.setAttribute('for','formreplace'); newlabel.appendChild(document.createTextNode(' par ')); formform.appendChild(newlabel); formform.appendChild(newinput); // go! link var go_button = document.createElement('input'); go_button.setAttribute('type',"submit"); go_button.setAttribute('title',"go!"); go_button.setAttribute('value',"go!"); formform.appendChild(go_button); } } /* run patterns */ function customgo() { /* get search and replace strings */ search = document.getElementById('formsearch').value; search = search.replace(/\\n/g, '\n'); replace = document.getElementById('formreplace').value; replace = replace.replace(/\\n/g, '\n'); /* convert input to regex */ // without delimiters if(!search.match(/^\s*\/[\s\S]*\/[a-z]*\s*$/i)) { search = new RegExp(search,'g'); } // with delimiters else { // break into parts var regpattern = search.replace(/^\s*\/([\s\S]*)\/[a-z]*\s*$/i,'$1'); var regmodifiers = search.replace(/^\s*\/[\s\S]*\/([a-z]*)\s*$/,'$1'); // filter invalid flags regmodifiers = regmodifiers.replace(/[^gim]/ig,''); search = new RegExp(regpattern, regmodifiers); } /* perform */ editbox.value = editbox.value.replace(search,replace); } /* remove form */ function customremove() { regexform.parentNode.removeChild(regexform); patterncount = -1; } /******************* *** create button ********************/ function add_regexp_button(){ toolbar = document.getElementById("toolbar"); if(toolbar){ var image = document.createElement("img"); image.width = 23; image.height = 22; image.border = 0; image.className = "mw-toolbar-editbutton"; image.style.cursor = "pointer"; image.alt = "regexp"; image.title = "Expression régulière"; image.src = "http://upload.wikimedia.org/wikipedia/commons/a/a0/Button_references_alt.png"; image.onclick = custom; toolbar.appendChild(image); } } addOnloadHook(add_regexp_button) /* </pre> */