|
imported>Sergey kudryavtsev |
| (10 intermediate revisions by 3 users not shown) |
| Line 1: |
Line 1: |
| /* <pre> <nowiki> */ | | /* <pre> */ |
| | |
| document.write('<script type="text/javascript" src="'
| |
| + 'http://fr.wikipedia.org/w/index.php?title=Utilisateur:GôTô/objects.js'
| |
| + '&action=raw&ctype=text/javascript&dontcountme=s"></script>');
| |
| | |
| document.write('<script type="text/javascript" src="'
| |
| + 'http://fr.wikipedia.org/w/index.php?title=Utilisateur:Dake/monobook.js/deluxehistory.js'
| |
| + '&action=raw&ctype=text/javascript&dontcountme=s"></script>');
| |
| | |
| // [[User:Lupin/popups.js]]
| |
| | |
| document.write('<script type="text/javascript" src="'
| |
| + 'http://en.wikipedia.org/w/index.php?title=User:Lupin/popups.js'
| |
| + '&action=raw&ctype=text/javascript&dontcountme=s"></script>');
| |
|
| |
|
| /* tooltips and access keys */ | | /* tooltips and access keys */ |
| Line 67: |
Line 53: |
|
| |
|
|
| |
|
| //============================================================ | | /* </pre> */ |
| // | | /*** |
| // Fonctions de gestion
| | *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 */ |
| * Installation d'une nouvelle fonction de cette façon:
| | function custom() { |
| * aOnloadFunctions[aOnloadFunctions.length] = nom_de_la_fonction; // (sans parenthèses)
| |
| */
| |
| if (!window.aOnloadFunctions) {
| |
| var aOnloadFunctions = new Array();
| |
| }
| |
|
| |
|
| window.onload = function()
| | /* if already open */ |
| { | | if(document.getElementById('regexform')) customremove() |
| if (window.aOnloadFunctions) {
| | else { |
| for (var _i=0; _i<aOnloadFunctions.length; _i++) {
| | editbox = document.getElementById('wpTextbox1'); |
| aOnloadFunctions[_i]();
| | /* 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); |
| * Ajouter une nouvelle fonction a excuter au chargement de la page.
| | formform.appendChild(newinput); |
| */
| | |
| function addLoadEvent(func)
| | var newinput = document.createElement('input'); |
| {
| | newinput.setAttribute('id','formreplace'); |
| if (window.addEventListener)
| | newlabel = document.createElement('label'); |
| window.addEventListener("load", func, false);
| | newlabel.setAttribute('for','formreplace'); |
| else if (window.attachEvent)
| | newlabel.appendChild(document.createTextNode(' par ')); |
| window.attachEvent("onload", func);
| | |
| }
| | formform.appendChild(newlabel); |
| | | formform.appendChild(newinput); |
| //============================================================
| |
| //
| |
| // Boites deroulantes
| |
| //
| |
| //============================================================
| |
| // BEGIN Dynamic Navigation Bars (experimantal)
| |
|
| |
| // set up the words in your language
| |
| var NavigationBarHide = '[ Enrouler ]';
| |
| var NavigationBarShow = '[ Dérouler ]';
| |
|
| |
| // set up max count of Navigation Bars on page,
| |
| // if there are more, all will be hidden
| |
| // NavigationBarShowDefault = 0; // all bars will be hidden
| |
| // NavigationBarShowDefault = 1; // on pages with more than 1 bar all bars will be hidden
| |
| var NavigationBarShowDefault = 0;
| |
|
| |
|
| |
| // shows and hides content and picture (if available) of navigation bars
| |
| // Parameters:
| |
| // indexNavigationBar: the index of navigation bar to be toggled
| |
| function toggleNavigationBar(indexNavigationBar)
| |
| {
| |
| var NavToggle = document.getElementById("NavToggle" + indexNavigationBar);
| |
| var NavFrame = document.getElementById("NavFrame" + indexNavigationBar);
| |
|
| |
| if (!NavFrame || !NavToggle) {
| |
| return false;
| |
| }
| |
|
| |
| // if shown now
| |
| if (NavToggle.firstChild.data == NavigationBarHide) {
| |
| for (
| |
| var NavChild = NavFrame.firstChild;
| |
| NavChild != null;
| |
| NavChild = NavChild.nextSibling
| |
| ) {
| |
| if (NavChild.className == 'NavPic') {
| |
| NavChild.style.display = 'none';
| |
| }
| |
| if (NavChild.className == 'NavContent') {
| |
| NavChild.style.display = 'none';
| |
| }
| |
| }
| |
| NavToggle.firstChild.data = NavigationBarShow;
| |
|
| |
| // if hidden now
| |
| } else if (NavToggle.firstChild.data == NavigationBarShow) {
| |
| for (
| |
| var NavChild = NavFrame.firstChild;
| |
| NavChild != null;
| |
| NavChild = NavChild.nextSibling
| |
| ) {
| |
| if (NavChild.className == 'NavPic') {
| |
| NavChild.style.display = 'block';
| |
| }
| |
| if (NavChild.className == 'NavContent') {
| |
| NavChild.style.display = 'block';
| |
| }
| |
| }
| |
| NavToggle.firstChild.data = NavigationBarHide;
| |
| }
| |
| }
| |
|
| |
| // adds show/hide-button to navigation bars
| |
| function createNavigationBarToggleButton()
| |
| {
| |
| var indexNavigationBar = 0;
| |
| // iterate over all < div >-elements
| |
| for(
| |
| var i=0;
| |
| NavFrame = document.getElementsByTagName("div")[i];
| |
| i++
| |
| ) {
| |
| // if found a navigation bar
| |
| if (NavFrame.className == "NavFrame") {
| |
|
| |
| indexNavigationBar++;
| |
| var NavToggle = document.createElement("a");
| |
| NavToggle.className = 'NavToggle';
| |
| NavToggle.setAttribute('id', 'NavToggle' + indexNavigationBar);
| |
| NavToggle.setAttribute('href', 'javascript:toggleNavigationBar(' + indexNavigationBar + ');');
| |
|
| |
| var NavToggleText = document.createTextNode(NavigationBarHide);
| |
| NavToggle.appendChild(NavToggleText);
| |
| // Find the NavHead and attach the toggle link (Must be this complicated because Moz's firstChild handling is borked)
| |
| for(
| |
| var j=0;
| |
| j < NavFrame.childNodes.length;
| |
| j++
| |
| ) {
| |
| if (NavFrame.childNodes[j].className == "NavHead") {
| |
| NavFrame.childNodes[j].appendChild(NavToggle);
| |
| }
| |
| }
| |
| NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar);
| |
| }
| |
| }
| |
| // if more Navigation Bars found than Default: hide all
| |
| if (NavigationBarShowDefault < indexNavigationBar) {
| |
| for(
| |
| var i=1;
| |
| i<=indexNavigationBar;
| |
| i++
| |
| ) {
| |
| toggleNavigationBar(i);
| |
| }
| |
| }
| |
|
| |
| }
| |
|
| |
| addLoadEvent(createNavigationBarToggleButton);
| |
|
| |
| // END Dynamic Navigation Bars
| |
| | |
| | |
| | |
| //============================================================
| |
| //
| |
| // 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>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 += "<option>API</option>";
| |
| menu += "<option>Mathématiques</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)
| | // go! link |
| {
| | var go_button = document.createElement('input'); |
| specialBib.style.display = 'block';
| | go_button.setAttribute('type',"submit"); |
| var menu = "<select style=\"display:inline;\" onChange=\"chooseBibSubset(selectedIndex)\">";
| | go_button.setAttribute('title',"go!"); |
| menu += "<option>Liste</option>";
| | go_button.setAttribute('value',"go!"); |
| menu += "<option>WikiNorme</option>";
| | formform.appendChild(go_button); |
| 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);
| |
|
| |
|
| |
|
| |
| //============================================================
| |
| //
| |
| // 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();
| |
| }
| |
|
| |
|
| //============================================================ | | /* run patterns */ |
| // Insertion de nouveaux boutons dans la barre d'outil
| | function customgo() { |
| //============================================================ | | /* get search and replace strings */ |
|
| |
|
| /**
| | search = document.getElementById('formsearch').value; |
| * Ajoute quelques boutons sur la barre d'outil
| | search = search.replace(/\\n/g, '\n'); |
| * Inspiré de mon code précédent et des icônes sur he:
| |
| * @author: fr:user:dake
| |
| * @version: 0.1
| |
| */
| |
| function ImprovedToolbar()
| |
| {
| |
| tooly = document.getElementById('toolbar');
| |
| if (tooly == null) return;
| |
|
| |
|
| StrikeTextButton = "<a href=\"javascript:insertTags('<s>','</s>','');\"><img src=\"http://upload.wikimedia.org/wikipedia/fr/3/30/Btn_toolbar_rayer.png\" alt=\"Rayer\" title=\"Rayer\"></a>";
| | replace = document.getElementById('formreplace').value; |
| EnumTextButton = "<a href=\"javascript:insertTags('\\n# élément 1\\n# élément 2\\n# élément 3','','');\"><img src=\"http://upload.wikimedia.org/wikipedia/fr/8/88/Btn_toolbar_enum.png\" alt=\"Énumération\" title=\"Énumération\"></a>";
| | replace = replace.replace(/\\n/g, '\n'); |
| ListTextButton = "<a href=\"javascript:insertTags('\\n* élément A\\n* élément B\\n* élément C','','');\"><img src=\"http://upload.wikimedia.org/wikipedia/fr/1/11/Btn_toolbar_liste.png\" alt=\"Liste\" title=\"Liste\"></a>";
| |
| GalleryButton = "<a href=\"javascript:insertTags('\\n<gallery>\\nImage:Vista-openbsd.png|Légende\\nImage:AMule.png|Légende\\nImage:Cyberduck icon.png|Légende\\n</gallery>','','');\"><img src=\"http://upload.wikimedia.org/wikipedia/fr/9/9e/Btn_toolbar_gallery.png\" alt=\"Galerie d'images\" title=\"Galerie d'images\"></a>";
| |
| CommentTextButton = "<a href=\"javascript:insertTags('<!--','-->','');\"><img src=\"http://upload.wikimedia.org/wikipedia/fr/3/37/Btn_toolbar_commentaire.png\" alt=\"Commentaire\" title=\"Commentaire\"></a>";
| |
| RedirectButton = "<a href=\"javascript:insertTags('#REDIRECT [[',']]','nom de la destination');\"><img src=\"http://upload.wikimedia.org/wikipedia/en/c/c8/Button_redirect.png\" alt=\"Redirection\" title=\"Redirection\"></a>";
| |
| ArrayButton = "<a href=\"javascript:popupTableau();\"><img src=\"http://upload.wikimedia.org/wikipedia/fr/0/04/Button_array.png\" alt=\"Tableau\" title=\"Tableau\"></a>";
| |
| CenterTextButton = "<a href=\"javascript:insertTags('<div style="text-align: center;">','</div>','Centered text');\"><img src=\"http://upload.wikimedia.org/wikipedia/en/5/5f/Button_center.png\" alt=\"Centré\" title=\"Texte centré\"></a>";
| |
|
| |
|
| SecondaryHeadlineButton = "<a href=\"javascript:insertTags('\\n===','===','Secondary headline');\"><img src=\"http://upload.wikimedia.org/wikipedia/en/e/e9/Button_headline2.png\" alt=\"2nd header\" title=\"Insérer un sous-titre de niveau inférieur\"></a>";
| | /* convert input to regex */ |
|
| |
|
| ShiftingButton = "<a href=\"javascript:insertTags(':','',':');\"><img src=\"http://upload.wikimedia.org/wikipedia/en/8/8e/Button_shifting.png\" alt=\"Retrait\" title=\"Insérer un retrait\"></a>";
| | // 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,''); |
|
| |
|
| SmallTextButton = "<a href=\"javascript:insertTags('<small>','</small>','Small text');\"><img src=\"http://upload.wikimedia.org/wikipedia/en/5/58/Button_small.png\" alt=\"Petit\" title=\"Texte plus petit\"></a>";
| | search = new RegExp(regpattern, regmodifiers); |
| | } |
|
| |
|
| UpperTextButton = "<a href=\"javascript:insertTags('<sup>','</sup>','Superscript');\"><img src=\"http://upload.wikimedia.org/wikipedia/en/8/80/Button_upper_letter.png\" alt=\"Exposant\" title=\"Exposant\"></a>";
| | /* perform */ |
| | editbox.value = editbox.value.replace(search,replace); |
|
| |
|
| SubLinkButton = "<a href=\"javascript:insertTags('[[Page#',']]','Sub_page');\"><img src=\"http://upload.wikimedia.org/wikipedia/en/9/93/Button_sub_link.png\" alt=\"Lien pour sous-titre\" title=\"Insérer un lien vers le sous-titre d'une page\"></a>";
| | } |
|
| |
|
| BlockQuoteButton = "<a href=\"javascript:insertTags('<blockquote style="border: 1px solid blue; padding: 2em;">\\n','\\n</blockquote>','Block quote');\"><img src=\"http://upload.wikimedia.org/wikipedia/en/f/fd/Button_blockquote.png\" alt=\"Citation\" title=\"Insérer un bloc de citation\"></a>";
| | /* remove form */ |
| | | function customremove() { |
| EenterButton = "<a href=\"javascript:insertTags('<br />','','');\"><img src=\"http://upload.wikimedia.org/wikipedia/en/1/13/Button_enter.png\" alt=\"à la ligne\" title=\"Aller à la ligne\"></a>";
| | regexform.parentNode.removeChild(regexform); |
| | | patterncount = -1; |
| | | } |
| tooly.innerHTML = tooly.innerHTML + StrikeTextButton + EnumTextButton +
| |
| ListTextButton + CommentTextButton + GalleryButton + RedirectButton + ArrayButton + CenterTextButton + SecondaryHeadlineButton + ShiftingButton + SmallTextButton + UpperTextButton + SubLinkButton + BlockQuoteButton + BlockQuoteButton + EenterButton ;
| |
| } | |
|
| |
|
| addLoadEvent(ImprovedToolbar);
| |
|
| |
|
| | /******************* |
| | *** create button |
| | ********************/ |
| | function add_regexp_button(){ |
|
| |
|
| /* </nowiki> </pre> */ | | var 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> */
/* tooltips and access keys */
ta = new Object();
ta['pt-userpage'] = new Array('.','My user page');
ta['pt-anonuserpage'] = new Array('.','The user page for the ip you\'re editing as');
ta['pt-mytalk'] = new Array('n','My talk page');
ta['pt-anontalk'] = new Array('n','Discussion about edits from this ip address');
ta['pt-preferences'] = new Array('','My preferences');
ta['pt-watchlist'] = new Array('l','The list of pages you\'re monitoring for changes.');
ta['pt-mycontris'] = new Array('y','List of my contributions');
ta['pt-login'] = new Array('o','You are encouraged to log in, it is not mandatory however.');
ta['pt-anonlogin'] = new Array('o','You are encouraged to log in, it is not mandatory however.');
ta['pt-logout'] = new Array('o','Log out');
ta['ca-talk'] = new Array('t','Discussion about the content page');
ta['ca-edit'] = new Array('e','You can edit this page. Please use the preview button before saving.');
ta['ca-addsection'] = new Array('+','Add a comment to this discussion.');
ta['ca-viewsource'] = new Array('e','This page is protected. You can view its source.');
ta['ca-history'] = new Array('h','Past versions of this page.');
ta['ca-protect'] = new Array('=','Protect this page');
ta['ca-delete'] = new Array('d','Delete this page');
ta['ca-undelete'] = new Array('d','Restore the edits done to this page before it was deleted');
ta['ca-move'] = new Array('m','Move this page');
ta['ca-watch'] = new Array('w','Add this page to your watchlist');
ta['ca-unwatch'] = new Array('w','Remove this page from your watchlist');
ta['search'] = new Array('f','Search this wiki');
ta['p-logo'] = new Array('','Main Page');
ta['n-mainpage'] = new Array('z','Visit the Main Page');
ta['n-portal'] = new Array('','About the project, what you can do, where to find things');
ta['n-currentevents'] = new Array('','Find background information on current events');
ta['n-recentchanges'] = new Array('r','The list of recent changes in the wiki.');
ta['n-randompage'] = new Array('x','Load a random page');
ta['n-help'] = new Array('','The place to find out.');
ta['n-sitesupport'] = new Array('','Support us');
ta['t-whatlinkshere'] = new Array('j','List of all wiki pages that link here');
ta['t-recentchangeslinked'] = new Array('k','Recent changes in pages linked from this page');
ta['feed-rss'] = new Array('','RSS feed for this page');
ta['feed-atom'] = new Array('','Atom feed for this page');
ta['t-contributions'] = new Array('','View the list of contributions of this user');
ta['t-emailuser'] = new Array('','Send a mail to this user');
ta['t-upload'] = new Array('u','Upload images or media files');
ta['t-specialpages'] = new Array('q','List of all special pages');
ta['ca-nstab-main'] = new Array('c','View the content page');
ta['ca-nstab-user'] = new Array('c','View the user page');
ta['ca-nstab-media'] = new Array('c','View the media page');
ta['ca-nstab-special'] = new Array('','This is a special page, you can\'t edit the page itself.');
ta['ca-nstab-wp'] = new Array('a','View the project page');
ta['ca-nstab-image'] = new Array('c','View the image page');
ta['ca-nstab-mediawiki'] = new Array('c','View the system message');
ta['ca-nstab-template'] = new Array('c','View the template');
ta['ca-nstab-help'] = new Array('c','View the help page');
ta['ca-nstab-category'] = new Array('c','View the category page');
/* </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(){
var 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)