Utente:Olando/monobook.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 (per le pagine globali è comunque necessario attendere qualche minuto). 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 menù Strumenti → Preferenze; per Internet Explorer: mantenere premuto il tasto Ctrl mentre si preme il pulsante Aggiorna o premere Ctrl-F5.
// <pre>
var myButtons = new Array([1,'{{subst:Loggati|{{subst:PAGENAME}}|Utente}}--~~~~','1','Loggati',0,'Loggati!']);
var nomeBot = 'Olandobot';
/**** Aggiunge i link nel portlet "navigazione" ****/
mw.loader.using( 'mediawiki.util' )
.then( function () {
mw.util.addPortletLink('p-navigation', '/wiki/Categoria:Categoria da definire', 'Da categorizzare');
} );
//</pre>
//<pre>
// Stiamo modificando la White o la Black List?
var BlackOrWhite = "";
$(function (){
if ((/Firefox|Netscape|Mozilla/).test( navigator.userAgent ) === false)
return; // Funziona solo con browser della famiglia Firefox
if (wgCanonicalSpecialPageName != "Recentchanges")
return; //Serve solo in Utlime modifiche
var abilitato = $.cookie('wikiVFOL');
if (abilitato == '' || abilitato == 'disabilitato')
return; //Serve solo se c'e' abilitato il filtro
// Lettura cookie: nei cookie ho salvato la lista in formato testo. Per poter funzionare il controllo devo
// codificarla in formato URI (ad esempio sostituendo "û" con "%C3%BB")
WhiteList = $.cookie('wikiWhiteList');
WhiteList = correggiTesto(WhiteList);
BlackList = $.cookie('wikiBlackList');
BlackList = correggiTesto(BlackList);
// Leggo il contenuto di "content"
var Contenuto = document.getElementById('content');
// Estraggo le righe delle modifiche
if (Contenuto.innerHTML.indexOf("</h4>\n<ul class=\"special\">") != -1)
tagliatoDa = Contenuto.innerHTML.indexOf("</h4>\n<ul class=\"special\">")+26; // +26 per saltare '</h4>\n<ul class="special">'
else
tagliatoDa = Contenuto.innerHTML.indexOf('</h4>')+11; // +11 per saltare '</h4>\n<div>'
// Ogni singola modifica e' un elenco di tag ed e' separata dalle altre con l'uso di <br />
TutteLeModifiche = Contenuto.innerHTML.substr(tagliatoDa);
// Splitta le modifiche rispetto a <br /> (nelle ultime modifiche avanzate le righe sono separate da <br />)
var Modifiche = TutteLeModifiche.split("<br />");
// Splitta le modifiche rispetto a <\n> (nelle ultime modifiche tradizionali le righe sono separate da \n)
var Modifiche = TutteLeModifiche.split("\n");
// Variabili necessarie per colorare i div che racchiudono numerose modifiche
var tutteVerdi = true; // Tutte le modifiche all'interno sono verdi
var unaGialla = false; // Almeno una modifica e' gialla
var unaRossa = false; // Almeno una modifica e' rossa
var inDiv = false; // Sono nel div
var escoAdesso = false; // Mi dice se sto uscendo dal div nell'iterazione corrente del ciclo
var inizioDiv = 0; // Inizio ultimo div
var fineDiv = 0; // Fine ultimo div
// Per ogni modifica
for (z=0;z<Modifiche.length;z++)
{
inizioNomeUtente = Modifiche[z].indexOf("Speciale:Contributi/") + 20;
lunghezzaNomeUtente = Modifiche[z].indexOf("\"",inizioNomeUtente) - inizioNomeUtente;
nomeUtente = Modifiche[z].substr(inizioNomeUtente,lunghezzaNomeUtente);
// Gestione variabili del DIV
// Inizio DIV
if (Modifiche[z].substr(0,5)=="<div ")
{
inDiv = true;
fineDiv = TutteLeModifiche.indexOf(Modifiche[z]); // Dove inizia l'elenco delle modifiche contenute nel DIV
inizioDiv = TutteLeModifiche.substr(0,fineDiv).lastIndexOf("<span id="); // Vai allo span della freccettina aperta
inizioDiv = TutteLeModifiche.substr(0,inizioDiv).lastIndexOf("<span id="); // Vai allo span della freccettina chiusa
tutteVerdi = true;
unaRossa = false;
unaGialla = false;
}
// Fine DIV
if (Modifiche[z].substr(0,6)=="</div>")
{
inDiv = false;
escoAdesso = true;
}
if ((WhiteList.indexOf("@"+nomeUtente+"@") != -1) || // in Whitelist
(BlackList.indexOf("@"+nomeUtente+"@") != -1) || // in Blacklist
(nomeUtente.match(/^([0-9]+\.){3}[0-9]+$/))) // Edit di un anonimo
{
// Se questa modifica apre una serie racchiusa in un div va eliminato il tag di apertura
if (Modifiche[z].substr(0,5)=="<div ")
Modifiche[z]=Modifiche[z].substr(Modifiche[z].indexOf('<',2));
// Se questa modifica appare dopo un div va eliminato il tag di chiusura
if (Modifiche[z].substr(0,6)=="</div>")
Modifiche[z]=Modifiche[z].substr(6);
da = TutteLeModifiche.indexOf(Modifiche[z]);
quanto = Modifiche[z].length;
// Colora la riga
temp = TutteLeModifiche.substr(0,da);
if (WhiteList.indexOf("@"+nomeUtente+"@") != -1)
temp += '<div style="background-color: #CCFFCC;">';
else if (BlackList.indexOf("@"+nomeUtente+"@") != -1)
{
if (inDiv == true)
{
unaRossa = true;
tutteVerdi = false;
}
temp += '<div style="background-color: #FFCCCC;">';
}
else // Edit anonimo
{
if (inDiv == true)
unaGialla = true;
temp += '<div style="background-color: #FFFFBB;">';
}
temp += Modifiche[z];
temp += '</div>';
temp += TutteLeModifiche.substr(da+quanto);
TutteLeModifiche = temp;
// Aggiorno "Modifiche[z]" per usarlo nella creazione dei link di gestione liste
Modifiche[z] = TutteLeModifiche.substr(da,quanto+46); // +46 per includere i 2 nuovi tag
}
else // l'utente non e' ne' in Whitelist ne' in Blacklist e non e' un anonimo
if (inDiv == true)
tutteVerdi = false;
// Aggiungo i link per l'aggiunt/rimozione automatica dalle liste
// Li aggiungo solo se non siamo nella prima riga di un DIV e se la riga contiene una modifica
if ((Modifiche[z].indexOf("javascript:toggleVisibility") == -1) &&
(Modifiche[z].indexOf("Speciale:Contributi/") != -1))
{
// Decido le azioni da proporre
azioneWL = "";
azioneBL = "";
if (WhiteList.indexOf("@"+nomeUtente+"@") != -1) // utente in Whitelist
azioneWL = '<a href="javascript:removeFromList(\'White\',\''+nomeUtente+'\')" title="Elimina dalla Whitelist">-wl</a>';
else
azioneWL = '<a href="javascript:addToList(\'White\',\''+nomeUtente+'\')" title="Aggiungi alla Whitelist">+wl</a>';
if (BlackList.indexOf("@"+nomeUtente+"@") != -1) // utente in Blacklist
azioneBL = '<a href="javascript:removeFromList(\'Black\',\''+nomeUtente+'\')" title="Elimina dalla Blacklist">-bl</a>';
else
azioneBL = '<a href="javascript:addToList(\'Black\',\''+nomeUtente+'\')" title="Aggiungi alla Blacklist">+bl</a>';
// Calcolo il punto di inserimento
doveScrivere = TutteLeModifiche.indexOf(Modifiche[z]); // Vai all'inizio della modifica
if (nomeUtente.match(/^([0-9]+\.){3}[0-9]+$/)) // edit di un utente anonimo
doveScrivere = TutteLeModifiche.indexOf('<a href="/wiki/Speciale:Contributi/'+nomeUtente,doveScrivere); // Vai al link del nome utente
else
{
if (Modifiche[z].indexOf('<a href="/wiki/Utente:') != -1) // se l'utente ha una sua pagina
doveScrivere = TutteLeModifiche.indexOf('<a href="/wiki/Utente:'+nomeUtente+'"',doveScrivere); // Vai al link del nome utente
else // la pagina utente e' da creare
doveScrivere = TutteLeModifiche.indexOf('<a href="/w/index.php?title=Utente:'+nomeUtente,doveScrivere); // Vai al link del nome utente
}
doveScrivere = TutteLeModifiche.indexOf('</a>',doveScrivere) + 4; // Vai alla fine del link del nome utente
// Aggiungi i link
temp = TutteLeModifiche.substr(0,doveScrivere);
temp += " (" + azioneWL;
temp += " " + azioneBL + ")";
temp += TutteLeModifiche.substr(doveScrivere);
TutteLeModifiche = temp;
}
// Se sto uscendo da un DIV calcolo come colorarlo
if (escoAdesso == true)
{
// Colora la riga
if ((unaRossa == true) || (tutteVerdi == true) || (unaGialla == true))
{
temp = TutteLeModifiche.substr(0,inizioDiv);
if (unaRossa == true)
temp += '<div style="background-color: #FFCCCC;">';
else if (unaGialla == true)
temp += '<div style="background-color: #FFFFBB;">';
else
temp += '<div style="background-color: #CCFFCC;">';
temp += TutteLeModifiche.substr(inizioDiv,fineDiv-inizioDiv);
temp += '</div>';
temp += TutteLeModifiche.substr(fineDiv);
TutteLeModifiche = temp;
}
// Setta i default per il controllo DIV
escoAdesso = false;
tutteVerdi = true;
unaRossa = false;
unaGialla = false;
inDiv = false;
}
}
// Applica tutti i cambiamenti fatti all'elemento "content"
Contenuto.innerHTML = Contenuto.innerHTML.substr(0, tagliatoDa) +
TutteLeModifiche;
})
// Rimuove un dato utente da una lista
function removeFromList(lista,utente)
{
// leggi il cookie
contenuto = $.cookie('wiki'+lista+'List');
// elimina l'utente richiesto
temp = contenuto.substr(0,contenuto.indexOf(utente));
temp += contenuto.substr(contenuto.indexOf(utente)+utente.length+1);
contenuto = temp;
// salva il cookie
var cookieExpire = new Date(); // scadenza del cookie
cookieExpire.setTime(cookieExpire.getTime() + (12 * 30 * 24 * 60 * 60 * 1000)); // il cookie scade dopo 1 anno
$.cookie('wiki'+lista+'List', contenuto, { expires: cookieExpire, path: '/'});
}
// Aggiunge un dato utente ad una lista
function addToList(lista,utente)
{
// trasforma gli underscore in spazi
while (utente.indexOf("_") != -1)
{
temp = utente.substr(0,utente.indexOf("_"));
temp += " ";
temp += utente.substr(utente.indexOf("_")+1);
utente = temp;
}
// leggi il cookie
contenuto = $.cookie('wiki'+lista+'List');
// Se l'utente e' gia' inserito esci
if (contenuto.indexOf("@"+utente+"@") != -1)
return;
// aggiunge l'utente richiesto
// Nella Whitelist aggiunge in ordine alfabetico, nella blacklist aggiunge in cima
indice = 1;
if (lista == "White")
{
do
{
stringa = contenuto.substr(indice,contenuto.indexOf("@",indice+1)-indice);
if (stringa > utente)
break; // abbiamo trovato il punto
indice = contenuto.indexOf("@",indice)+1; // vai al prossimo nome
}
while (indice != -1);
if (indice == -1) // va aggiunto alla fine
indice = contenuto.length;
}
temp = contenuto.substr(0,indice);
temp += utente+"@";
temp += contenuto.substr(indice);
contenuto = temp;
// salva il cookie
var cookieExpire = new Date(); // scadenza del cookie
cookieExpire.setTime(cookieExpire.getTime() + (12 * 30 * 24 * 60 * 60 * 1000)); // il cookie scade dopo 1 anno
$.cookie('wiki'+lista+'List', contenuto, {expires: cookieExpire, path: '/'} );
}
// Nei cookie ho salvato la lista in formato testo. Per poter funzionare il controllo devo
// codificarla in formato URI (ad esempio sostituendo "û" con "%C3%BB")
// devo trasformare i "%40" in "@", @ e' il separatore tra i nomi
// devo trasformare i "%20" in underscore (altrimenti non funziona il confronto con white e black list)
function correggiTesto(stringa)
{
// codifica la stringa
stringa = encodeURIComponent(stringa);
// Trasforma gli "%40" in "@" (altrimenti non funziona il confronto con white e black list), @ e' il separatore tra i nomi
while (stringa.indexOf("%40") != -1)
{
temp = stringa.substr(0,stringa.indexOf("%40"));
temp += "@";
temp += stringa.substr(stringa.indexOf("%40")+3);
stringa = temp;
}
// Trasforma i "%20" in underscore (altrimenti non funziona il confronto con white e black list)
while (stringa.indexOf("%20") != -1)
{
temp = stringa.substr(0,stringa.indexOf("%20"));
temp += "_";
temp += stringa.substr(stringa.indexOf("%20")+3);
stringa = temp;
}
return stringa;
}
function enableVFOL()
{
var scritta = $.cookie('wikiVFOL');
if (scritta == '') // Se il cookie non esiste
scritta = "disabilitato"; // per default e' disabilitato
// Aggiorna il cookie
var cookieExpire = new Date(); // scadenza del cookie
cookieExpire.setTime(cookieExpire.getTime() + (12 * 30 * 24 * 60 * 60 * 1000)); // il cookie scade dopo 1 anno
if (scritta=="abilitato")
{
scritta="disabilitato";
$.cookie('wikiVFOL', "disabilitato", {expires: cookieExpire, path: '/'});
// Carica il nodo padre
d = document.getElementById('vfol').parentNode;
// ed elimina i figli
d.removeChild(document.getElementById('vfol1'));
d.removeChild(document.getElementById('vfol2'));
}
else
{
scritta="abilitato";
$.cookie('wikiVFOL', "abilitato", {expires: cookieExpire, path: '/'});
mw.loader.using( 'mediawiki.util' )
.then( function () {
mw.util.addPortletLink('p-tb', 'javascript:ModificaListaVFOL("White")', 'Mostra la White List', 'vfol1');
mw.util.addPortletLink('p-tb', 'javascript:ModificaListaVFOL("Black")', 'Mostra la Black List', 'vfol2');
} );
}
//E aggiorna la scritta a video
document.getElementById('vfol').innerHTML="<a href='javascript:enableVFOL()'>VFonLine "+scritta+"</a>";
}
// Carica il contenuto della White/Black List (es:cookie 'wikiWhiteList') nella textarea
function mostraListVFOL()
{
// Leggi il cookie
contenuto = $.cookie('wiki'+BlackOrWhite+'List');
// Correggi iniziale e finale
contenuto = contenuto.substr(1, contenuto.length -2);
WBTextarea = document.getElementById("WBTextarea");
// Mostra la lista trasformando i '@' in '\n'
WBTextarea.value = contenuto.split('@').join('\n');
}
// Salva il contenuto della textarea nella White/Black List (es: cookie 'wikiWhiteList')
function salvaListVFOL()
{
WBTextarea = document.getElementById("WBTextarea");
testo = WBTextarea.value.split('\n');
//Concateno i nomi usando il carattere '@'. Essendo vietato nei nickname evita ambiguita'
elencoNomi = testo.join('@');
// Correggi iniziale e finale
elencoNomi = '@' + elencoNomi + '@';
// Aggiorna il cookie
var cookieExpire = new Date(); // scadenza del cookie
cookieExpire.setTime(cookieExpire.getTime() + (12 * 30 * 24 * 60 * 60 * 1000)); // il cookie scade dopo 1 anno
$.cookie('wiki'+BlackOrWhite+'List', elencoNomi, {expires: cookieExpire, path: '/'});
// e chiudi tutto
$("#WBListPopupDiv").remove();
}
// Crea il popup utilizzato per modificare la White/Black List
function ModificaListaVFOL(tipo)
{
// memorizza la lista da modificare
BlackOrWhite = tipo;
//Creo il testo del popup
Greeter = "<big><b>Modifica della \"" + BlackOrWhite + "List\"</b><big><br/>";
var div = document.createElement('div');
div.id = 'WBListPopupDiv';
div.style.position = 'fixed';
div.style.zIndex = 1000;
div.style.left = '5px';
div.style.top = '5px';
div.style.backgroundColor = '#FFFFFF';
div.style.borderStyle = 'solid';
div.style.borderWidth = ' medium';
div.style.borderColor = '#000000';
div.style.width = '220px';
var top = document.createElement('div');
top.id = 'WBListPopupTop';
top.style.textAlign = 'right';
top.style.margin = '8px';
top.style.backgroundColor = '#DDDDDD';
// crea il tasto "Close"
var a = document.createElement('a');
a.appendChild(document.createTextNode('Close'));
a.href = 'javascript:void(0)';
$(a).on('click', function() { $('#WBListPopupDiv').remove(); } );
a.style.margin = '8px';
top.appendChild(a);
div.appendChild(top);
// crea la textarea
var greet = document.createElement('p');
greet.innerHTML = Greeter;
greet.style.margin = '10px';
div.appendChild(greet);
var form = document.createElement('form');
form.name = "popupForm";
var p = document.createElement('p');
var lista = document.createElement('TEXTAREA');
lista.name = 'WBList';
lista.id = 'WBTextarea';
lista.rows = 10;
lista.style.width = '200px';
lista.style.margin = '7px';
p.appendChild(lista);
// crea il bottone "OK"
var button = document.createElement('input');
button.value = 'OK';
button.type = 'button';
button.style.margin = '8px';
button.setAttribute('onclick', 'salvaListVFOL()');
p.appendChild(button);
// crea il bottone "Annulla"
var button2 = document.createElement('input');
button2.value = 'Annulla';
button2.type = 'button';
button2.style.margin = '8px';
$(button2).on('click', function() { $("#WBListPopupDiv").remove(); } );
p.appendChild(button2);
// reimposta il tutto
form.appendChild(p);
div.appendChild(form);
// e lo mostra a video
document.body.appendChild(div);
div.getElementsByTagName('input')[0].focus();
// e carica la lista
mostraListVFOL();
}
// [[:en:User:Lupin/popups.js]]
mw.loader.load('https://it.wikipedia.org/w/index.php?title=MediaWiki:Gadget-Popup.js&action=raw&ctype=text/javascript');