Utilizator:Gutza/replace.js

De la Wikipedia, enciclopedia liberă

Notă: După salvare, trebuie să treceți peste cache-ul browser-ului pentru a vedea modificările.

  • Mozilla, Google Chrome, Safari, Konqueror: țineți apăsat Shift în timp ce apăsați butonul Reload (sau apăsați Ctrl-Shift-R).
  • Internet Explorer: apăsați Ctrl-F5.
  • Opera: apăsați F5.
// Generic
var wpReplaceStrings = {
  'pageTitle': 'Replace',
  'search': 'Search:',
  'replaceButton': 'Replace',
  'replaceTabTitle': 'Replace',
  'replace': 'Replace:',
  'regexp': 'Regular expression',
  'global': 'Global',
  'caseInsensitive': 'Case insensitive',
  'multiline': 'Multi-line',
  'closeButton': 'Close window',
  'undoButton': 'Undo',
  'undoConfirm': 'The text has been modified since the last replacement, all changed will be lost -- continue?',
  'diffButton': 'Show differences'
};

// Romanian
wpReplaceStrings = {
  'pageTitle': 'Înlocuieşte',
  'search': 'Caută:',
  'replaceButton': 'Înlocuieşte',
  'replaceTabTitle': 'Înlocuieşte',
  'replace': 'Înlocuieşte:',
  'regexp': 'Expresie regulată',
  'global': 'Global',
  'caseInsensitive': 'Ignoră diferenţele dintre majuscule şi minuscule',
  'multiline': 'Pe mai multe linii',
  'closeButton': 'Închide fereastra',
  'undoButton': 'Revenire',
  'undoConfirm': 'Textul a fost modificat de la ultima înlocuire, toate modificările se vor pierde -- doriţi să continuaţi?',
  'diffButton': 'Arată diferenţele'
};

function wpTextboxReplace()
{
    // Open window, write headers
    var win=window.open('','wpReplace','height=200,width=400');
    w=win.document;
    w.write("<html><head><title>"+wpReplaceStrings.pageTitle+"</title>");
    var styles=document.getElementsByTagName("style");
    for(i=0;i<styles.length;i++) {
      w.write("<style type='"+styles[i].type+"' media='"+styles[i].media+"'>"+styles[i].innerHTML+"</style>");
    }
    w.write("</head><body style='margin:5px'>");

    // Main DIV
    w.write("<div style='font-size:10pt'>");

    // Search DIV
    w.write("<div>");
    w.write(wpReplaceStrings.search);
    w.write("<input type='text' id='search'>");
    w.write("</div>");

    // Replace DIV
    w.write("<div style='margin-top:5px'>");
    w.write(wpReplaceStrings.replace);
    w.write("<input type='text' id='replace'>");
    w.write("</div>");

    // Options DIV
    w.write("<div>");
    w.write("<input type='checkbox' id='regexp' value=1 onClick='document.getElementById(\"regexpOptions\").style.display=(this.checked?\"block\":\"none\")'>");
    w.write(" <label for='regexp'>"+wpReplaceStrings.regexp+"</label><br>");
    w.write("<input type='checkbox' id='global' value=1>");
    w.write(" <label for='global'>"+wpReplaceStrings.global+"</label>");
    w.write("</div>");
    w.write("<div id='regexpOptions' style='display:none'>");
    w.write("<input type='checkbox' id='insensitive' value=1>");
    w.write(" <label for='insensitive'>"+wpReplaceStrings.caseInsensitive+"</label><br>");
    w.write("<input type='checkbox' id='multiline' value=1>");
    w.write(" <label for='multiline'>"+wpReplaceStrings.multiline+"</label>");
    w.write("</div>");

    // Buttons DIV
    w.write("<table style='width:100%; background-color:transparent'><tr><td>");
    w.write("<input type='button' onClick='replace();' value='"+wpReplaceStrings.replaceButton+"'> ");
    w.write("<input type='button' onClick='undo();' id='undo' disabled value='"+wpReplaceStrings.undoButton+"'>");
    w.write("</td><td style='text-align:right'>");
    w.write("<input type='button' onClick='window.opener.document.editform.wpDiff.click();' value='"+wpReplaceStrings.diffButton+"'>");
    w.write("<input type='button' onClick='window.close();' value='"+wpReplaceStrings.closeButton+"'>");
    w.write("</td></tr></table>");

    // JavaScript
    w.write("<script language='JavaScript'>");

    w.write("var lastText='';");
    w.write("var prevText='';");

    w.write("function undo() {");
    w.write("var t=window.opener.document.editform.wpTextbox1;");
    w.write("if (t.value==lastText || confirm('"+wpReplaceStrings.undoConfirm+"')) {");
    w.write("t.value=prevText;");
    w.write("document.getElementById('undo').disabled=true;");
    w.write("}");
    w.write("}");

    w.write("function replace() {");
    w.write("  var t=window.opener.document.editform.wpTextbox1;");
    w.write("  prevText=t.value;");
    w.write("  var s=document.getElementById('search').value;");
    w.write("  var r=document.getElementById('replace').value;");
    w.write("  if (!document.getElementById('regexp').checked) {");
    w.write("    if (!document.getElementById('global').checked) {");
    w.write("      t.value=t.value.replace(s,r);");
    w.write("    } else {");
    w.write("      var arr=t.value.split(s);");
    w.write("      var final=new String('');");
    w.write("      for (i=0; i<arr.length; i++) {");
    w.write("        final=final+arr[i]+r;");
    w.write("      }");
    w.write("      final=final.substr(0,final.length-r.length);");
    w.write("      t.value=final;");
    w.write("    }");
    w.write("  } else {");
    w.write("    var options='';");
    w.write("    if (document.getElementById('global').checked) {");
    w.write("      options=options+'g';");
    w.write("    }");
    w.write("    if (document.getElementById('insensitive').checked) {");
    w.write("      options=options+'i';");
    w.write("    }");
    w.write("    if (document.getElementById('multiline').checked) {");
    w.write("      options=options+'m';");
    w.write("    }");
    w.write("    t.value=t.value.replace(new RegExp(s,options),r);");
    w.write("  }");
    w.write("  lastText=t.value;");
    w.write("  document.getElementById('undo').disabled=false;");
    w.write("}");
    w.write("</script>");

    // Page ending
    w.write("</div>");
    w.write("</body></html>");
    w.close();
    return;

    // Obsolete (will be deleted)
    var s = prompt("Search regexp:");
    if(s){
        var r = prompt("Replace /"+s+"/ with:");
        if(r==null) {
          alert(r);
          return;
        }
        var txt = document.editform.wpTextbox1;
        txt.value = txt.value.replace(new RegExp(s, "mg"), r);
    }
}

$(function () {
    if (document.forms.editform) {
        mw.util.addPortletLink('p-cactions', 'javascript:wpTextboxReplace()', wpReplaceStrings.replaceTabTitle, 'ca-replace',
                       'Regexp replace for the edit window', 'R', document.getElementById('ca-history'));
    }
});