Aller au contenu

Utilisateur:Dr Brains/MonobookToolbar-Dev.js

Une page de Wikipédia, l'encyclopédie libre.
Note : après avoir enregistré la page, vous devrez forcer le rechargement complet du cache de votre navigateur pour voir les changements.

Mozilla / Firefox / Konqueror / Safari : maintenez la touche Majuscule (Shift) en cliquant sur le bouton Actualiser (Reload) ou pressez Maj-Ctrl-R (Cmd-R sur Apple Mac) ;

Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5.
if(typeof(MonobookToolbarSearchReplace)==="undefined"){ // Test anti double inclusion

MonobookToolbarSearchReplace = new Object();

document.write('<style type="text/css">'
             + '#Menu_SearchAndReplace{'
             + 'text-align:left;'
             + '}'
             + '</style>');

MonobookToolbarSearchReplace.actualPosition = 0;

MonobookToolbarSearchReplace.AddButton = function(){
     if(!document.editform) return;
     var Toolbar = document.getElementById('toolbar');
     if(!Toolbar) Toolbar = document.getElementById('MonobookToolbar');
     if(!Toolbar){
          Toolbar = document.createElement('div');
          Toolbar.id = 'MonobookToolbar';
          document.editform.insertBefore(Toolbar, document.editform.firstChild);
     }
     var button = '<img src="//upload.wikimedia.org/wikipedia/commons/5/59/Button_replace.png" heigth="23" width="23" alt="Remplacer" />';

     var NewButton = document.createElement('a')
     NewButton.title = "Remplacer";
     NewButton.href = "#";
     NewButton.onclick = function(){ 
          MonobookToolbarSearchReplace.OpenMenu();
          return false;
     }
     NewButton.className = "mw-toolbar-editbutton";
     NewButton.innerHTML = button;
     Toolbar.appendChild(NewButton);
}

MonobookToolbarSearchReplace.Cancel = function(){
     var MenuDiv = document.getElementById('Menu_SearchAndReplace');
     MenuDiv.parentNode.removeChild(MenuDiv);
}

MonobookToolbarSearchReplace.OpenMenu = function(){
     var OldMenuDiv = document.getElementById('Menu_SearchAndReplace');
     if(OldMenuDiv) return;

     var Toolbar = document.getElementById('MonobookToolbar');
     var MenuDiv = document.createElement('div');
     MenuDiv.id = 'Menu_SearchAndReplace';
     Toolbar.parentNode.insertBefore(MenuDiv, Toolbar.nextSibling);

     var MenuSearchDiv = document.createElement('div');
     MenuSearchDiv.id = 'MenuSearchDiv';
     MenuDiv.appendChild(MenuSearchDiv);
     MenuSearchDiv.innerHTML = '<label for="MonobookToolbarSearchReplace_Replace1">Texte à rechercher</label>'
                        + '<input id="MonobookToolbarSearchReplace_Replace1" type="text" value="" />'
                        + '&nbsp;•&nbsp;'
                        + '<input type="button" value="Rechercher" onclick="MonobookToolbarSearchReplace.Search();" onselect="MonobookToolbarSearchReplace.Search();"/>'
                        + '&nbsp;'
                        + '<input type="button" value="Annuler" onclick="MonobookToolbarSearchReplace.Cancel();" onselect="MonobookToolbarSearchReplace.Cancel();"/>'
                        + '<span id="MenuSearchSpan" style="display:none">'
                        + '&nbsp;•&nbsp;'
                        + '<input type="button" value="<" onclick="MonobookToolbarSearchReplace.Search(-1);" onselect="MonobookToolbarSearchReplace.Search(-1);"/>'
                        + '&nbsp;'
                        + '<input type="button" value=">" onclick="MonobookToolbarSearchReplace.Search(1);" onselect="MonobookToolbarSearchReplace.Search(1);"/>'
                        + '</span>'
                        + '&nbsp;'
                        + '<span id="MenuSearchResults"></span>'

     var MenuReplaceDiv = document.createElement('div');
     MenuReplaceDiv.id = 'MenuReplaceDiv';
     MenuReplaceDiv.style.display = "none";
     MenuDiv.appendChild(MenuReplaceDiv);
     MenuReplaceDiv.innerHTML = ''
                        + '<label for="MonobookToolbarSearchReplace_Replace2">Texte de remplacement</label>'
                        + '<input id="MonobookToolbarSearchReplace_Replace2" type="text" value="" />'
                        + '&nbsp;•&nbsp;'
                        + '<input type="button" value="Remplacer" onclick="MonobookToolbarSearchReplace.Replace(false);" onselect="MonobookToolbarSearchReplace.Replace();"/>'
                        + '&nbsp;'
                        + '<input type="button" value="Remplacer tout" onclick="MonobookToolbarSearchReplace.Replace(true);" onselect="MonobookToolbarSearchReplace.ReplaceAll();"/>'
}

MonobookToolbarSearchReplace.Search = function(numero){
     try{
     var TextArea = document.getElementById('wpTextbox1');
     var OldText = document.getElementById('MonobookToolbarSearchReplace_Replace1').value;
     var MenuSearchSpan = document.getElementById('MenuSearchSpan');
     var MenuSearchResults = document.getElementById('MenuSearchResults');
     var MenuReplaceDiv = document.getElementById('MenuReplaceDiv');
     var Text = TextArea.value;
     }catch(e){ return; }
     var TextRegExp = OldText.replace(/([\\\^\$\*\+\?\.\|\{\}\[\]\(\)])/g, "\\$1");
     var Matches = Text.match(TextRegExp);
     var Searches = Text.search(TextRegExp);
          
     if(Matches==null){
          MenuSearchResults.innerHTML = "0 résultats"
          MenuSearchSpan.style.display = "none";
          MenuReplaceDiv.style.display = "none";
          MonobookToolbarSearchReplace.actualPosition = 0;
          return;
     }
     if(!numero) numero = 1
     else numero = MonobookToolbarSearchReplace.actualPosition + numero;
     if(numero==0) numero = Matches.length;
     MonobookToolbarSearchReplace.actualPosition = numero;
     MenuSearchResults.innerHTML = "résultat "+MonobookToolbarSearchReplace.actualPosition+"/"+Matches.length;
     
     var ThisMatch = Searches[MonobookToolbarSearchReplace.actualPosition];
     var StartIndex = ThisMatch.index;
     var EndIndex = StartIndex + Matches[Position].length;
     mw.loader.using('jquery.textSelection', function () {
          $('#wpTextbox1')
               .focus()
               .textSelection('setSelection', {start: StartIndex, end: EndIndex})
               .textSelection('scrollToCaretPosition', {force:false});
     });
     
     MenuSearchSpan.style.display = "";
     MenuReplaceDiv.style.display = "";
}

MonobookToolbarSearchReplace.Replace = function(){
     try{
     var TextArea = document.getElementById('wpTextbox1');
     var OldText = document.getElementById('MonobookToolbarSearchReplace_Replace1').value;
     var NewText = document.getElementById('MonobookToolbarSearchReplace_Replace2').value;
     var Text = TextArea.value;
     var TextRegExp = new RegExp(OldText.replace(/([\\\^\$\*\+\?\.\|\{\}\[\]\(\)])/g, "\\$1"), "g");
     var Matches = Text.match(TextRegExp);
     }catch(e){ return; }
     var Position = MonobookToolbarSearchReplace.actualPosition;
     var ThisMatch = Matches[Position];
     if(!ThisMatch) return;
     var Scroll = TextArea.scrollTop;
     Text = Text.replace(Matches[Position], NewText); 
     document.getElementById('wpTextbox1').value = Text;
     TextArea.scrollTop = Scroll;
     MonobookToolbarSearchReplace.Search();
}

MonobookToolbarSearchReplace.ReplaceAll = function(){
     try{
     var TextArea = document.getElementById('wpTextbox1');
     var Text = TextArea.value;
     var OldText = document.getElementById('MonobookToolbarSearchReplace_Replace1').value;
     var TextRegExp = new RegExp(OldText.replace(/([\\\^\$\*\+\?\.\|\{\}\[\]\(\)])/g, "\\$1"), "g");
     var Matches = Text.match(TextRegExp);
     }catch(e){ return; }
     if(Matches==null) return;
     for(var a=0,l=Matches.length;a<l;a++){
          MonobookToolbarSearchReplace.Replace();
     }
}

$(MonobookToolbarSearchReplace.AddButton);

} // Fin test anti double inclusion