MediaWiki:Searchbox.js
Questa pagina definisce alcuni parametri di aspetto e comportamento generale di tutte le pagine. Per personalizzarli vedi Aiuto:Stile utente.
Nota: dopo aver salvato è necessario pulire la cache del proprio browser per vedere i cambiamenti, e comunque qualche minuto di preghiera non guasta. Per Mozilla / Firefox / Safari: fare clic su Ricarica tenendo premuto il tasto delle maiuscole, oppure premere Ctrl-F5 o Ctrl-R (Command-R su Mac); per Chrome premere Ctrl-Shift-R (Command-Shift-R su un Mac); per Konqueror: premere il pulsante Ricarica o il tasto F5; per Opera può essere necessario svuotare completamente la cache dal menu Strumenti → Preferenze; per Internet Explorer: mantenere premuto il tasto Ctrl mentre si preme il pulsante Aggiorna o premere Ctrl-F5.
// Search box for Mediawiki
// (c) 2006 [[User:Zocky]], released under GPL
//------------- Prelevato da: http://en.wikipedia.org/wiki/User:Zocky/SearchBox.js ---------------------
importStylesheetURI('http://nonciclopedia.wikia.com/index.php?title=Utente:Nonciclopediologo/Searchbox.css&action=raw&ctype=text/css');
var sr$t;
var sr$f;
var sr$s;
var sr$r;
var sr$w;
var sr$i;
var sr$re;
var sr$mc;
function srBack() {
if(sr$s.attr('value') === '') {
sr$t.focus();
return;
}
if(sr$re.attr('checked') == 'checked') {
var searchString = sr$s.attr('value');
}
else {
searchString = sr$s.attr('value').replace(/([\[\]\{\}\|\.\*\?\(\)\$\^\\])/g, '\\$1');
}
searchString = '(' + searchString + ')(?![\\s\\S]*' + searchString + ')';
if(sr$mc.attr('checked') == 'checked') {
var re = new RegExp(searchString);
}
else {
var re = new RegExp(searchString, 'i');
}
var res = re.exec(sr$t.attr('value').substring(0, sr$t[0].selectionStart));
if(!res) {
var res = re.exec(sr$t.attr('value'));
}
if(res) {
sr$t[0].selectionStart = res.index;
sr$t[0].selectionEnd = res.index + res[1].length;
}
else {
sr$t[0].selectionStart = sr$t[0].selectionEnd;
}
srSync();
}
function srNext() {
if(sr$s.attr('value') === '') {
sr$t.focus();
return;
}
if(sr$re.attr('checked') == 'checked') {
var searchString = sr$s.attr('value');
}
else {
searchString = sr$s.attr('value').replace(/([\[\]\{\}\|\.\*\?\(\)\$\^\\])/g, '\\$1');
}
searchString = '(' + searchString + ')(?![\\s\\S]*' + searchString + ')';
if(sr$mc.attr('checked') == 'checked') {
var re = new RegExp(searchString, 'g');
}
else {
var re = new RegExp(searchString, 'gi');
}
re.lastIndex = sr$t[0].selectionEnd;
var res = re.exec(sr$t.attr('value'));
if(!res) {
re.lastIndex = 0;
var res = re.exec(sr$t.attr('value'));
}
if(res) {
sr$t[0].selectionStart = res.index;
sr$t[0].selectionEnd = res.index + res[0].length;
}
else {
sr$t[0].selectionStart = sr$t[0].selectionEnd;
}
srSync();
}
function srReplace() {
var sels = sr$t[0].selectionStart;
var sele = sr$t[0].selectionEnd;
var selr = sr$t.attr('value').length - sele;
if(sr$s.attr('value') == '' || sels == sele) {
sr$t.focus();
return;
}
if(sr$re.attr('checked') == 'checked') {
var searchString = sr$s.attr('value');
var replaceString = sr$r.attr('value');
}
else {
searchString = sr$s.attr('value').replace(/([\[\]\{\}\|\.\*\?\(\)\$\^\\])/g, '\\$1');
replaceString = sr$r.attr('value').replace(/([\$\\])/g, '\\$1');
}
if(sr$mc.attr('checked') == 'checked') {
var re = new RegExp(searchString, 'g');
}
else {
var re = new RegExp(searchString, 'gi');
}
re.lastIndex = sels;
var res = re.exec(sr$t.attr('value'));
var $$ = 0;
if(res && res.index == sels && res[0].length == sele - sels) {
if(sr$re.attr('checked') == 'checked') {
replaceString = replaceString.replace(/\\\\/g, '&backslash;');
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/, '\n').replace (/&backslash;/g, '\\ ').replace(/$/g, '\$');
}
sr$t.attr('value', sr$t.attr('value').substring(0, sels) + replaceString + sr$t.attr('value').substring(sele));
}
sr$t[0].selectionStart = sels;
sr$t[0].selectionEnd = sr$t.attr('value').length - selr;
srSync();
}
function srReplaceall() {
if(!sr$s.attr('value')) {
sr$t.focus();
return;
}
var sels = sr$t[0].selectionStart;
var sele = sr$t[0].selectionEnd;
var selr = sr$t.attr('value').length - sele;
var reps;
if(sr$re.attr('checked') == 'checked') {
var searchString = sr$s.attr('value');
var replaceString = sr$r.attr('value').replace(/\\\\/, '&backslash;').replace(/\\n/, '\n').replace(/&backslash;/, '\\');
}
else {
searchString = sr$s.attr('value').replace(/([\[\]\{\}\|\.\*\?\(\)\$\^\\])/g, '\\$1');
replaceString = sr$r.attr('value').replace(/([\$\\])/g, '\\$1');
}
if(sele > sels) {
reps = sr$t.attr('value').substring(sels, sele);
}
else {
reps = sr$t.attr('value');
}
if(sr$mc.attr('checked') == '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.attr('value', sr$t.attr('value').substring(0, sels) + reps + sr$t.attr('value').substring(sele));
}
else {
sr$t.attr('value', reps);
}
sr$t[0].selectionStart = sels;
sr$t[0].selectionEnd = sele > sels ? sr$t.attr('value').length - selr : sels;
window.status = replaceCounter + ' occorrenze di ' + searchString + ' sostituite.';
srSync();
}
function srToggleCase() {
var sels = sr$t[0].selectionStart;
var sele = sr$t[0].selectionEnd;
var selr = sr$t.attr('value').length - sele;
var selt = sr$t.attr('value').substring(sels, sele);
if(sele > sels) {
if(selt == selt.toUpperCase()) {
selt = selt.toLowerCase();
}
else if(selt == selt.toLowerCase() && sele - sels > 1) {
selt = selt.substring(0, 1).toUpperCase() + selt.substring(1).toLowerCase();
}
else {
selt = selt.toUpperCase();
}
sr$t.attr('value', sr$t.attr('value').substring(0, sels) + selt + sr$t.attr('value').substring(sele));
sr$t[0].selectionStart = sels;
sr$t[0].selectionEnd = sele > sels ? sr$t.attr('value').length - selr : sels;
}
srSync();
}
function srSync() {
var allLines = 0;
var lineNo = 0;
var w = sr$t.cols - 5;
var dummy = sr$t.attr('value').split('\n');
for(var i = 0; i < dummy.length; i++){
allLines += Math.ceil(dummy[i].length / w);
}
var dummy = sr$t.attr('value').substring(0, sr$t[0].selectionStart).split('\n');
for(var i = 0; i < dummy.length; i++){
lineNo += Math.ceil(dummy[i].length / w);
}
sr$t.scrollTop = sr$t.scrollHeight * (lineNo - 10) / allLines;
sr$t.focus();
}
function srInit() {
if($('#wpTextbox1').length) {
var srBoxCode = $('<div></div>').attr('id', 'srForm');
var br = $('<br />');
var table = $('<table></table>').attr('id', 'srBox').css('border-spacing', '2px');
var tr = $('<tr></tr>');
var td1 = $('<td></td>').css('vertical-align', 'bottom');
var label = $('<label></label>').attr('for', 'srSearch').css({
'color': 'black',
'font-size': '80%'
}).text('Cerca');
var input = $('<input />').attr({
'id': 'srSearch',
'type': 'text',
'accesskey': 'F',
'tabindex': '8',
'value': '',
'onkeypress': 'event.which == 13 && srNext();'
});
td1.append(label, '<br />', input);
var td2 = td1.clone();
$('label', td2).attr('for', 'srReplace').text('Sostituisci con:');
$('input', td2).attr({
'id': 'srReplace',
'accesskey': 'G',
'tabindex': '9',
'value': '',
'onkeypress': 'event.which == 13 && srNext();'
});
var td3 = $('<td></td>').css('vertical-align', 'top');
var input1 = $('<input />').attr({
'id': 'srCase',
'type': 'checkbox',
'tabindex': '10',
'onclick': 'sr$t.focus();'
});
var label1 = $('<label></label>').attr('for', 'srCase').css({
'color': 'black',
'font-size': '80%'
}).text('maiuscole/minuscole');
var input2 = $('<input />').attr({
'id': 'srRegexp',
'type': 'checkbox',
'tabindex': '11',
'onclick': 'sr$t.focus();'
});
var label2 = $('<label></label>').attr('for', 'srRegexp').css({
'color': 'black',
'font-size': '80%'
}).text('usa regexp');
var link1 = $('<a></a>').attr({
'title': 'Trova testo precedente [alt-2]',
'accesskey': '2',
'onclick': 'srBack();',
'onmouseover': 'sr$t.focus();'
}).text('<');
var link2 = $('<a></a>').attr({
'title': 'Trova testo successivo [alt-3]',
'accesskey': '3',
'onclick': 'srNext();',
'onmouseover': 'sr$t.focus();'
}).css('margin-right', '0.6em').text('Trova >');
var link3 = $('<a></a>').attr({
'title': 'Trova e sostituisce il testo precedente [alt-4]',
'accesskey': '4',
'onclick': 'srReplace(); srBack();',
'onmouseover': 'sr$t.focus();'
}).text('<');
var link4 = $('<a></a>').attr({
'title': 'Trova e sostituisce il testo selezionato',
'onclick': 'srReplace();',
'onmouseover': 'sr$t.focus();'
}).text('Sostituisci');
var link5 = $('<a></a>').attr({
'title': 'Trova e sostituisce il testo successivo [alt-5]',
'accesskey': '5',
'onclick': 'srNext();',
'onmouseover': 'sr$t.focus();'
}).css('margin-right', '0.6em').text('>');
var link6 = $('<a></a>').attr({
'title': 'Sostituisci tutto [alt-7]',
'accesskey': '7',
'onclick': 'srReplaceall();',
'onmouseover': 'sr$t.focus();'
}).text('Sostituisci tutto');
td3.append(input1, label1, ' ', input2, label2, br, link1, ' ', link2, ' ', link3, ' ', link4, ' ', link5, ' ', link6);
tr.append(td1, td2, td3);
table.append(tr);
srBoxCode.append(table);
var ep = $('#searchInput');
if(ep.length) {
ep.removeAttr('accesskey');
}
sr$t = $('#wpTextbox1');
sr$w = sr$t.css('width');
var sr = $('<div></div>');
sr.append(srBoxCode);
var im = $('<span></span>');
var link1 = $('<a></a>').attr({
'id': 'SearchIcon',
'onclick': 'srShowHide();'
});
var img1 = $('<img />').attr({
'title': 'Cerca/Sostituisci',
'alt': 'Cerca/Sostitiusci',
'src': 'http://upload.wikimedia.org/wikipedia/commons/1/12/Button_find.png'
}).css({
'cursor': 'pointer',
'border-width': '0',
'height': '22px',
'width': '23px'
});
link1.append(img1);
var link2 = link1.clone().attr('onclick', 'srToggleCase();').removeAttr('id');
$('img', link2).attr({
'title': 'Maiuscole/Minuscole',
'alt': 'Maiuscole/Minuscole',
'src': 'http://upload.wikimedia.org/wikipedia/commons/1/12/Button_case.png'
});
im.append(link1, link2);
var ep = $('#toolbar');
if(ep.length) {
ep.append(im);
}
else {
var ep = $('#editform');
ep.before(im);
}
sr$i = $('#SearchIcon');
sr$i.attr('accesskey', 'F');
$(':first-child', sr).hide();
var ep = $('#editform');
ep.before(sr);
sr$f = $('#srForm');
sr$s = $('#srSearch');
sr$r = $('#srReplace');
sr$re = $('#srRegexp');
sr$mc = $('#srCase');
}
}
function srShowHide() {
if(sr$f.css('display') == 'none') {
sr$f.removeAttr('accesskey').css('width', '100%').show();
$('*', sr$f).show();
}
else {
sr$f.attr('accesskey', 'F').css('width', sr$w).hide();
}
}
hooksCustom.push(srInit);
//