Utilizator:Gutza/replace.js
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'));
}
});