Utilisateur:Tavernier/searchremplace.js

Un livre de Wikilivres.

Attention : Depuis MediaWiki 1.18 les pages se terminant avec l'extension .js ou .css sont interprétées comme des pages wiki ! En particulier les modèles (subst ou non) et les liens. Vous devez donc migrer le code source et effectuer vos changements en évitant ces éléments de syntaxe wiki (peu importe leurs emplacements dans le code source : commentaire, chaine) :

  • Double accolades ouvrantes (en particulier avec subst:) : séparer les deux accolades "{"+"{" du reste de la chaine
  • Double crochets ouvrants : même technique de séparation.
  • Signature (tildes ~ multiples) : même technique de séparation.

Note : après avoir enregistré vos préférences, vous devrez attendre que le serveur mette à jour la feuille de style globale avant de 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 ;
  • Konqueror : Cliquez sur Actualiser ou pressez F5 ;
  • Opera : Videz le cache dans Outils → Préférences.
urlsearch = window.location.search;
if (urlsearch != '') {
    data = urlsearch.substr(1, urlsearch.length - 1);
    parameters = data.split('&');
    urlvariables = new Array();
    for (var i = 0; i < parameters.length; i++) {
        parameter = parameters[i]
        pos = parameter.indexOf('=');
        variable = parameter.substr(0, pos);
        value = decodeURI(parameter.substring(pos + 1, parameter.length));
        while (value.search(/\+/) != -1)
            value = value.replace(/\+/, ' ');
        urlvariables[variable] = value;
    }
}

function Replace(diff) {
    var form = document.forms['tc-searchreplace'];
    var search = form.elements['tc-search'].value;
    var replace = form.elements['tc-replace'].value;
    var form = document.forms['tc-resume'];
    var resume = form.elements[0].value;
    if(search == '') return false;

    form = document.forms['editform'];
    var text = form.elements['wpTextbox1'];
    text.value = text.value.replace(new RegExp(search, "g"), replace);
//  form.elements['wpSummary'].value += ' ' + resume + ' s/'+search+'/'+replace+'/';
    form.elements['wpSummary'].value = resume + ' s/'+search+'/'+replace+'/';
    if (diff) {
        form.elements['wpDiff'].click();
    } else {
        form.elements['wpSave'].click();
    }
    return false;
}

function SaveCookie(name, value) {
    var expires = new Date();
    expires.setTime(expires.getTime() + 365*24*3600*1000);
    expires = expires.toGMTString();
    document.cookie = name + '=' + escape(value) + '; expires=' + expires + '; path=/; domain=wikibooks.org;';
}

function GetCookie(name) {
    var cookies = document.cookie;
    if (cookies) {
        var start = cookies.indexOf(name + '=');
        if (start != -1) {
            var end = cookies.indexOf(";", start);
            if (end == -1) end = cookies.length;
            return unescape(cookies.substring(start + name.length + 1, end));
        }
    }
    return '';
}

function SearchPrompt() {
    var search = prompt('Chaîne à remplacer ?');
    if (search) {
        var replace = prompt('À remplacer par ?');
        if (!replace) return;
        SaveCookie('TCsearch', search);
        SaveCookie('TCreplace', replace);
    }
}

function SearchReplace() {
//  if (document.title.indexOf('Modification de ') == 0) {
        var toolbar = document.getElementById('toolbar'); 
        if (toolbar) {

        var br = document.createElement('br');
        toolbar.appendChild(br);
        
        var form = document.createElement('form');
        form.setAttribute('action', '');
        form.setAttribute('method', 'get');
        form.setAttribute('enctype', 'text/plain');
        form.setAttribute('id', 'tc-resume');
        form.setAttribute('style', 'display: inline; vertical-align: bottom;');

        var select = document.createElement('select');
        select.setAttribute('onchange', 'SaveCookie(\'TCresume\', this.value)');
        
        var option = document.createElement('option');
        option.value = option.text = 'Orthographe';
        select.appendChild(option);
        
        var option = document.createElement('option');
        option.value = option.text = 'Typographie';
        select.appendChild(option);

        var option = document.createElement('option');
        option.value = option.text = 'Anglicisme';
        select.appendChild(option);

        var option = document.createElement('option');
        option.value = option.text = 'Grammaire';
        select.appendChild(option);

        var option = document.createElement('option');
        option.value = option.text = 'Correction';
        select.appendChild(option);

        var option = document.createElement('option');
        option.value = option.text = 'Ponctuation';
        select.appendChild(option);

        var option = document.createElement('option');
        option.value = option.text = 'Ajout';
        select.appendChild(option);

        var option = document.createElement('option');
        option.value = option.text = 'Suppression';
        select.appendChild(option);

        var option = document.createElement('option');
        option.value = option.text = 'Recatégorisation';
        select.appendChild(option);

        var option = document.createElement('option');
        option.value = option.text = 'Suppression catégorie';
        select.appendChild(option);

        var option = document.createElement('option');
        option.value = option.text = 'Retouche';
        select.appendChild(option);

        var option = document.createElement('option');
        option.value = option.text = 'Lien';
        select.appendChild(option);

        select.value = GetCookie('TCresume');

        form.appendChild(select);
        toolbar.appendChild(form);

        var form = document.createElement('form');
        form.setAttribute('action', '');
        form.setAttribute('method', 'get');
        form.setAttribute('enctype', 'text/plain');
        form.setAttribute('onsubmit', 'return Replace(1)');
        form.setAttribute('id', 'tc-searchreplace');
        form.setAttribute('style', 'display: inline; vertical-align: middle;');

        var text = document.createTextNode(' s/');
        form.appendChild(text);
        
        var input = document.createElement('input');
        input.setAttribute('type', 'text');
        input.setAttribute('size', '10');
        input.setAttribute('name', 'tc-search');
        input.setAttribute('id', 'tc-search');
        input.setAttribute('value', GetCookie('TCsearch'));
        input.setAttribute('title', 'Chaîne à remplacer ?');
        input.setAttribute('onchange', 'SaveCookie(\'TCsearch\', this.value)');
        form.appendChild(input);

        text = document.createTextNode('/');
        form.appendChild(text);
        
        input = document.createElement('input');
        input.setAttribute('type', 'text');
        input.setAttribute('size', '10');
        input.setAttribute('name', 'tc-replace');
        input.setAttribute('id', 'tc-replace');
        input.setAttribute('value', GetCookie('TCreplace'));
        input.setAttribute('title', 'À remplacer par ?');
        input.setAttribute('onchange', 'SaveCookie(\'TCreplace\', this.value)');
        form.appendChild(input);

        text = document.createTextNode('/ ');
        form.appendChild(text);
        
        input = document.createElement('input');
        input.setAttribute('type', 'image');
        input.setAttribute('src', 'http://upload.wikimedia.org/wikipedia/commons/9/96/Button_trait%C3%A9supprimer.png');
        input.setAttribute('alt', 'Rechercher, remplacer et prévisualiser les changements');
        input.setAttribute('style', 'vertical-align: middle;');
        form.appendChild(input);

        toolbar.appendChild(form);

        var img = document.createElement('img');
        img.setAttribute('src', 'http://upload.wikimedia.org/wikipedia/commons/a/ae/Button_trait%C3%A9conserver.png');
        img.setAttribute('alt', 'Rechercher, remplacer et sauvegarder les changements');
        img.setAttribute('style', 'vertical-align: middle;');
        
        var a = document.createElement('a');
        a.setAttribute('href', 'javascript:Replace(0)'); 
        a.appendChild(img); 

        toolbar.appendChild(a);

        if (urlvariables['searchreplace'] == 'save') Replace(0);
        if (urlvariables['searchreplace'] == 'diff') Replace(1);
    }

/*//  if (document.getElementById('ca-nstab-main').getAttribute('class') == "selected") {
        var tabs = document.getElementById('p-cactions').getElementsByTagName('ul')[0];
        if (!tabs) return;

        var li = document.createElement('li');
        li.setAttribute('id', 'ca-tc-searchreplace');
        
      var font = document.createElement('font');
        font.setAttribute('style', 'color: blue; font-weight: bold; padding-left: 0.5em');
        var text = document.createTextNode('s&r');
        font.appendChild(text);
        li.appendChild(font); 

        var a = document.createElement('a');
        a.setAttribute('href', 'javascript:SearchPrompt()'); 
        a.setAttribute('title', 'Saisir les termes de recherche et de remplacement');
        a.setAttribute('style', '');
        text = document.createTextNode('s&r');
        a.appendChild(text);
        li.appendChild(a);
        
        var editlink = document.getElementById('ca-edit').getElementsByTagName('a')[0].getAttribute('href');
        var a = document.createElement('a');
        a.setAttribute('href', editlink + '&searchreplace=diff'); 
        a.setAttribute('title', 'Rechercher, remplacer et prévisualiser les changements');
        a.setAttribute('style', '');
        text = document.createTextNode('D');
        a.appendChild(text);
        li.appendChild(a);

        a = document.createElement('a');
        a.setAttribute('href', editlink + '&searchreplace=save'); 
        a.setAttribute('title', 'Rechercher, remplacer et sauvegarder les changements');
        a.setAttribute('style', '');
        text = document.createTextNode('S');
        a.appendChild(text);
        li.appendChild(a);

        var a = document.createElement('a');
        a.setAttribute('href', 'javascript:SearchHighlight()'); 
        a.setAttribute('title', 'Mettre en surbrillance les termes à remplacer');
        a.setAttribute('style', '');
        text = document.createTextNode('H');
        a.appendChild(text);
        li.appendChild(a);

        tabs.insertBefore(li, document.getElementById('ca-history'));*/
//  }
}

$(SearchReplace);

// <b style="color:black;background-color:#ffff66">layer</b>