Użytkownik:Sp5uhe/searchbox-test.js
Uwaga: aby zobaczyć zmiany po opublikowaniu, może zajść potrzeba wyczyszczenia pamięci podręcznej przeglądarki.
- Firefox / Safari: Przytrzymaj Shift podczas klikania Odśwież bieżącą stronę, lub naciśnij klawisze Ctrl+F5, lub Ctrl+R (⌘-R na komputerze Mac)
- Google Chrome: Naciśnij Ctrl-Shift-R (⌘-Shift-R na komputerze Mac)
- Internet Explorer / Edge: Przytrzymaj Ctrl, jednocześnie klikając Odśwież, lub naciśnij klawisze Ctrl+F5
- Opera: Naciśnij klawisze Ctrl+F5.
/*<pre><nowiki>*/
//
// Search box for Mediawiki
// Instrukcja obsługi [[Wikipedia:Narzędzia/Wyszukiwanie i zamiana]]
// Autor: [[:en:User:Zocky]]
// Licencja: GNU General Public License, http://opensource.org/licenses/gpl-license.php
// Wersja tłumaczona skryptu: http://en.wikipedia.org/w/index.php?title=User:Zocky/SearchBox.js&oldid=60000195
// Tłumaczenie i drobne poprawki: Maciej Jaros [[:pl:User:Nux]]
var sr$t; // sr$t=document.editform.wpTextbox1;
var sr$f; // sr$f=document.srForm;
var sr$s; // sr$s=document.srForm.srSearch;
var sr$r; // sr$r=document.srForm.srReplace;
var sr$w; // sr$w=sr$t.style.width;
var sr$i; // sr$i=document.getElementById('SearchIcon');
var sr$lang = {
// '_num_ ocurrences of _str_ replaced' : '$1 ocurrences of $2 replaced.'
'_num_ ocurrences of _str_ replaced' : 'Zmieniono $1 wystapien $2.'
};
/*
Translate also:
var srBoxCode = ...
*/
function srBack()
{
if (sr$s.value=='')
{
sr$t.focus();
return;
}
var searchString = sr$s.value;
if (!sr$f.srRegexp.checked)
searchString = searchString.replace(/([\[\]\{\}\|\.\*\?\(\)\$\^\\])/g,'\\$1')
;
searchString="("+searchString+")(?![\\s\\S]*"+searchString+")";
if (sr$f.srCase.checked)
var re=new RegExp(searchString)
else
var re=new RegExp(searchString,"i")
;
var res = re.exec (sr$t.value.substring(0,sr$t.selectionStart));
if (!res)
var res = re.exec (sr$t.value)
;
if (res)
{
sr$t.selectionStart=res.index;
sr$t.selectionEnd=res.index+res[1].length;
}
else
sr$t.selectionStart=sr$t.selectionEnd
;
srSync();
}
function srNext()
{
if (sr$s.value=='')
{
sr$t.focus();
return
}
var searchString = sr$s.value;
if (!sr$f.srRegexp.checked)
searchString=searchString.replace(/([\[\]\{\}\|\.\*\?\(\)\$\^\\])/g,'\\$1')
;
if (sr$f.srCase.checked)
var re=new RegExp(searchString,"g")
else
var re=new RegExp(searchString,"gi")
;
re.lastIndex=sr$t.selectionEnd;
var res = re.exec (sr$t.value)
if (!res)
{
re.lastIndex=0;
var res = re.exec (sr$t.value)
}
if (res)
{
sr$t.selectionEnd=res.index+res[0].length;
sr$t.selectionStart=res.index;
}
else
sr$t.selectionStart=sr$t.selectionEnd
;
srSync();
}
function srReplace()
{
var sels=sr$t.selectionStart;
var sele=sr$t.selectionEnd;
var selr=sr$t.value.length-sele;
if (sr$s.value=='' || sels==sele)
{
sr$t.focus();
return;
}
var searchString = sr$s.value;
var replaceString = sr$r.value;
if (!sr$f.srRegexp.checked)
{
searchString=searchString.replace(/([\[\]\{\}\|\.\*\?\(\)\$\^\\])/g,'\\$1');
replaceString=replaceString.replace(/([\$\\])/g,'\\$1');
}
if (sr$f.srCase.checked)
var re=new RegExp(searchString,"g")
else
var re=new RegExp(searchString,"gi")
;
re.lastIndex=sels;
var res = re.exec (sr$t.value);
var $$=0;
if (res && res.index==sels && res[0].length==sele-sels)
{
if (sr$f.srRegexp.checked)
{
replaceString=replaceString.replace(/\\\\/g,'&backslash;').replace(/\\\$/g,'$');
var replaceBits=(" "+replaceString).split(/(?=\$\d)/);
replaceString=replaceBits[0].substring(1);
for (var i=1; i<replaceBits.length; i++)
{
$$=replaceBits[i][1]-'0';
if ($$<res.length)
replaceString += res[$$] + replaceBits[i].substring(2)
else
replaceString += replaceBits[i]
;
}
replaceString=replaceString.replace(/\\n/g,"\n").replace(/&backslash;/g,"\\").replace(/$/g,"\$")
}
sr$t.value= sr$t.value.substring(0,sels) + replaceString + sr$t.value.substring(sele);
}
sr$t.selectionStart=sels;
sr$t.selectionEnd=sr$t.value.length-selr;
srSync();
}
function srReplaceall()
{
if (!sr$s.value) {
sr$t.focus();
return
}
var sels=sr$t.selectionStart;
var sele=sr$t.selectionEnd;
var selr=sr$t.value.length-sele;
var reps;
var searchString = sr$s.value;
var replaceString = sr$r.value;
if (sr$f.srRegexp.checked)
{
replaceString = replaceString.replace(/\\\\/,'&backslash;').replace(/\\n/,'\n').replace(/&backslash;/,"\\");
}
else
{
searchString = searchString.replace(/([\[\]\{\}\|\.\*\?\(\)\$\^\\])/g,'\\$1');
replaceString = replaceString.replace(/([\$\\])/g,'\\$1');
}
if (sele>sels)
reps=sr$t.value.substring(sels,sele)
else
reps=sr$t.value
;
if (sr$f.srCase.checked)
var re=new RegExp(searchString,"g")
else
var re=new RegExp(searchString,"gi")
;
var replaceCounter=0;
var replaceFunc=function()
{
replaceCounter++;
return replaceString;
};
reps=reps.replace(re,replaceFunc);
if (sele>sels)
sr$t.value = sr$t.value.substring(0,sels) + reps + sr$t.value.substring(sele);
else
sr$t.value = reps
;
sr$t.selectionStart=sels;
sr$t.selectionEnd=sele>sels ? sr$t.value.length-selr : sels;
// ## window.status = replaceCounter+" ocurrences of " + searchString + " replaced.";
window.status = sr$lang['_num_ ocurrences of _str_ replaced'].replace(/\$1/, replaceCounter).replace(/\$2/, searchString);
srSync();
}
function srToggleCase()
{
var sels=sr$t.selectionStart;
var sele=sr$t.selectionEnd;
var selr=sr$t.value.length-sele;
var selt=sr$t.value.substring(sels,sele);
document.forms.editform.wpSummary.value = sr$f.csCase.value;
if (sele>sels) {
if (sr$f.csCase.value!=-1) {
if (sr$f.csCase.value==0) {
selt=selt.substring(0,1).toUpperCase()+selt.substring(1).toLowerCase()
sr$f.csCase.value="1";
} else if (sr$f.csCase.value==1) {
selt=selt.toUpperCase()
sr$f.csCase.value="2";
} else if (sr$f.csCase.value==2) {
selt=selt.toLowerCase()
if (sele-sels>1)
sr$f.csCase.value="3";
else
sr$f.csCase.value="1";
} else if (sr$f.csCase.value==3) {
if (sele-sels>1) {
selt=selt.substring(0,1).toUpperCase()+selt.substring(1).toLowerCase()
var i;
for (i=1; i<selt.length-1; i++)
if (selt.substring(i-1,i).toUpperCase()==selt.substring(i-1,i).toLowerCase())
selt=selt.substring(0,i)+
selt.substring(i,i+1).toUpperCase()+
selt.substring(i+1).toLowerCase();
sr$f.csCase.value="0";
} else
sr$f.csCase.value="1";
}
} else {
if (selt==selt.toUpperCase()) {
selt=selt.toLowerCase()
sr$f.csCase.value="0";
}
else if (selt==selt.toLowerCase() && sele-sels>1) {
selt=selt.substring(0,1).toUpperCase()+selt.substring(1).toLowerCase()
sr$f.csCase.value="1";
}
else {
selt=selt.toUpperCase()
sr$f.csCase.value="2";
}
;
}
sr$t.value = sr$t.value.substring(0,sels) + selt + sr$t.value.substring(sele);
sr$t.selectionStart=sels;
sr$t.selectionEnd=sele>sels ? sr$t.value.length-selr : sels;
}
srSync();
}
function srSync()
{
var i;
var allLines=0;
var lineNo=0;
var w=sr$t.cols-5;
var dummy=sr$t.value.split("\n");
for (i=0;i<dummy.length;i++){allLines+=Math.ceil(dummy[i].length/w)}
var dummy=sr$t.value.substring(0,sr$t.selectionStart).split("\n");
for (i=0;i<dummy.length;i++){lineNo+=Math.ceil(dummy[i].length/w)}
// alert (w+" "+lineNo+"/"+allLines);
sr$t.scrollTop=sr$t.scrollHeight*(lineNo-10)/allLines;
sr$t.focus();
}
function srInit()
{
if(document.getElementById('wpTextbox1'))
{
var srBoxCode =
'<form name="srForm"><input size="0" type="hidden" name="csCase" value="-1"><table id="srBox" cellpadding="0" cellspacing="2">'
+'<tr>'
+'<td valign="bottom">'
+'<span class="label">znajdź:</span><br />'
+'<input size="17" type="text" name="srSearch" accesskey="F" tabindex="8" onkeypress="event.which == 13 && srNext()"; value="" />'
+'</td>'
+'<td valign="bottom">'
+'<span class="label">zamień na:</span><br />'
+'<input size="17" type="text" name="srReplace" accesskey="G" tabindex="9" onkeypress="event.which == 13 && srNext()"; value="" />'
+'</td>'
+'<td valign="top">'
+'<label><input type="checkbox" name="srCase" onclick="sr$t.focus()" tabindex="10" />uwzględnij wielkość liter</label>'
+'<label><input type="checkbox" name="srRegexp" onclick="sr$t.focus()" tabindex="11" />użyj RegEx</label>'
+'<br />'
+'<a href="javascript:srBack()" onmouseover="sr$t.focus()" title="szukaj wstecz [alt-2]" accesskey="2"><</a> '
+'<a href="javascript:srNext()" onmouseover="sr$t.focus()" title="szukaj dalej [alt-3]" accesskey="3">szukaj ></a> '
+'<a href="javascript:srReplace();srBack()" onmouseover="sr$t.focus()" title="zamień znalezione i szukaj poprzedniego [alt-4]" accesskey="4"><</a> '
+'<a href="javascript:srReplace()" onmouseover="sr$t.focus()" title="zamień znalezione">zamień</a> '
+'<a href="javascript:srReplace();srNext()" onmouseover="sr$t.focus()" title="zamień znalezione i szukaj następnego [alt-5]" accesskey="5">></a> '
+'<a href="javascript:srReplaceall()" onmouseover="sr$t.focus()" title="zamień wszystkie wystąpienia, które zostaną znalezione [alt-7]" accesskey="7">zamień wszystkie</a> '
+'</td>'
+'</tr>'
+'</table></form>'
;
document.getElementById('searchInput').accessKey='none';
sr$t=document.editform.wpTextbox1;
sr$w=sr$t.style.width;
//
// inserting buttons
var btns=document.createElement('span');
btns.innerHTML=
'<a id="SearchIcon" href="javascript:srShowHide()">'
+'<img style="cursor: pointer;" title="Wyszukiwanie i zamiana" alt="Wyszukiwanie i zamiana" src="http://upload.wikimedia.org/wikipedia/en/1/12/Button_find.png" border="0" height="22" width="23">'
+'</a>'
+'<a href="javascript:srToggleCase()">'
+'<img style="cursor: pointer;" title="Zmiana wielkości liter" alt="Zmiana wielkości liter" src="http://upload.wikimedia.org/wikipedia/en/1/12/Button_case.png" border="0" height="22" width="23">'
+'</a>'
;
var el=document.getElementById('toolbar');
if (el)
{
el.appendChild(btns)
}
else
{
el=document.getElementById('editform');
el.parentNode.insertBefore(btns,el);
}
sr$i=document.getElementById('SearchIcon');
sr$i.accessKey="F";
//
// inserting box
var srbox=document.createElement('div');
srbox.innerHTML=srBoxCode;
srbox.firstChild.style.display='none';
el=document.getElementById('editform');
el.parentNode.insertBefore(srbox,el);
sr$f=document.srForm;
sr$s=document.srForm.srSearch;
sr$r=document.srForm.srReplace;
}
}
function srShowHide()
{
if (sr$f.style.display=='none')
{
sr$f.style.display='block';
sr$i.accessKey="none";
sr$t.style.width='auto';
sr$s.focus();
}
else
{
sr$f.style.display='none';
sr$t.style.width=sr$w;
sr$i.accessKey="F";
}
}
addOnloadHook(srInit);
document.write('<link rel="stylesheet" type="text/css" href=" \
http://pl.wikiquote.org/w/index.php?title=U%C5%BCytkownik:Sp5uhe/searchbox.css \
&action=raw&ctype=text/css&dontcountme=s">');
/*</nowiki></pre>*/