Wikibooks:Monobook.js/Setup.js
/*
Interfaccia grafica per il setup del Monobook standard.
Autore: Salvatore Ingala.
Ripreso per wikibooks da Wimb
- /
//
<nowiki>
var msConfigs = new Array(
//Formato: [gruppo (o '' se è un modulo principale), chiave, descrizione]
[ '', 'purg', 'Aggiunge tab "purge"'],
[ '', 'led', 'Aggiunge tab "ultima modifica"'],
[ '', 'ns0', 'Aggiunge tab "0"'],
[ '', 'lks', 'Personalizza i link nella barra in alto'],
[ '', 'orol', 'Aggiunge l\'orologio in alto a destra'],
[ '', 'tabs', 'Aggiunge i tab "Messaggi talk" e "strumenti vari"'],
[ '', 'chat', 'Aggiunge un link diretto alla chat di wikibooks'],
[ '', 'nav', 'Aggiunge tutti i link nel portlet "navigazione"'],
[ 'nav', 'newp', 'Aggiunge "Pagine nuove" nel menù "navigazione"'],
[ 'nav', 'mjs', 'Aggiunge \'monobook.js\' nel menù "navigazione"'],
[ 'nav', 'mcss', 'Aggiunge \'monobook.css\' nel menù "navigazione"'],
[ 'nav', 'sand', 'Aggiunge "Sandbox" nel menù "navigazione"'],
[ 'nav', 'blk', 'Aggiunge "Block Log" nel menù "navigazione"'],
[ 'nav', 'csu', 'Aggiunge "Cancella subito" nel menù "navigazione"'],
[ 'nav', 'pca', 'Aggiunge "Pagine da cancellare" nel menù "navigazione"'],
[ 'nav', 'stub', 'Aggiunge "Stub" nel menù "navigazione"'],
[ 'nav', 'admin', 'Aggiunge "Admin" nel menù "navigazione"'],
[ 'nav', 'prob', 'Aggiunge "Utenti problematici" nel menù "navigazione"'],
[ 'nav', 'aut', 'Aggiunge "Autorizzazione ottenute" nel menù "navigazione"'],
[ 'nav', 'vand', 'Aggiunge "Vandalismi in corso" nel menù "navigazione"'],
[ 'nav', 'syop', 'Aggiunge "amministratori di wikibooks" nel menù "navigazione"'],
[ 'nav', 'bot', 'Aggiunge i contributi del proprio bot nel menù "navigazione"'],
[ '', 'stru', 'Aggiunge tutti i link nel portlet "strumenti" '],
[ 'stru', 'uec', 'Aggiunge "user edit count" nel menù "strumenti"'],
[ 'stru', 'log', 'Aggiunge "Log" nel menù "strumenti"'],
[ 'stru', 'whois', 'Aggiunge "Pagine nuove" nel menù "strumenti"'],
[ 'stru', 'newp', 'Aggiunge "Whois" nel menù "strumenti"'],
[ 'stru', 'unw', 'Aggiunge "non seguire" nella pagina degli Osservati Speciali'],
[ 'stru', 'ulmod', 'Aggiunge "Immagini caricate recentemente" nel menù strumenti'],
[ '', 'allp', 'Aggiunge il pulsante "AllPages" nel box di ricerca'],
[ '', 'rch', 'Aggiunge il pulsante per le ultime modifiche sotto il logo di wikibooks'],
[ '', 'tbar', 'Aggiunge tutti i pulsanti alla Toolbar'],
[ 'tbar', 'voto', 'Votazioni: +1/0/-1'],
[ 'tbar', 'cocp', 'Controlcopy'],
[ 'tbar', 'cacp', 'Cancelcopy'],
[ 'tbar', 'cat', 'Categorizzare'],
[ 'tbar', 'test', 'Test'],
[ 'tbar', 'wnb', 'wikibooks non è un blog'],
[ 'tbar', 'benv', 'Benvenuto'],
[ 'tbar', 'canc', 'Da cancellare'],
[ 'tbar', 'caut', 'Avvisocancellautente'],
[ 'tbar', 'cimm', 'Cancella subito'],
[ 'tbar', 'cviol', 'ViolazioneCopyright'],
[ 'tbar', 'aviol', 'Avvisocopyviol'],
[ 'tbar', 'avand', 'Vandalismo'],
[ 'tbar', 'spam', 'Avviso spam'],
[ 'tbar', 'uni', 'Da unire'],
[ 'tbar', 'bnpov', 'AvvisobloccoNPOV'],
[ 'tbar', 'unv', 'Unverified'],
[ 'tbar', 'grz', 'Grazie'],
[ 'tbar', 'ndis', 'Nota disambigua'],
[ 'tbar', 'vedan', 'Vedi anche'],
[ 'tbar', 'gall', 'Gallery'],
[ 'tbar', 'ref', 'References'],
[ 'tbar', 'ipro', 'Interprogetto'],
[ 'tbar', 'sta', 'Aggiunge Categoria, wikipedialink commento'],
[ 'tbar', 'avz', 'Aggiunge i pulsanti di avanzamento'],
[ 'tbar', 'punt', 'Aggiunge elenco puntato'],
[ 'tbar', 'num', 'Aggiunge elenco numerato'],
[ 'tbar', 'stpag', ' aggiunge da sottopaginare'],
[ '', 'avan', 'Anti-vandal tool'],
[ '', 'nms', 'Ricerca in un namespace'],
[ '', 'cwtch', 'Category watch'],
[ '', 'popup', 'Popup di navigazione in italiano'],
[ '', 'popupen', 'Popup di navigazione in inglese'],
[ '', 'popupfr', 'Popup di navigazione in francese'],
[ '', 'popupes', 'Popup di navigazione in spagnolo'],
[ '', 'cmd', 'Aggiunge la command line'],
[ '', 'qed', 'QuickEdit. Permette la modifica veloce di una sezione'],
[ '', 'wed', 'wikEd. Nuova casella di editing con nuove funzionalità'],
[ '', 'since', 'Novità. Si accede alla pagina degli Osservati Speciali ma vengono mostrate solo le modifiche apportate dopo l\'ultima visita'],
[ '', 'goo', 'Ricerca con Google e Yahoo. Permette la ricerca in Wikibooks sfruttando i motori Google e Yahoo'],
[ '', 'rch', 'Crea un piccolo tasto sulla sinistra della pagina che consente di visualizzare la cronologia della pagina corrente'],
[ '', 'vpop', 'Patrolling retroattivo (VPopSpeed)'],
[ '', 'stex', 'Aggiunge il menù strumenti extra'],
[ '', 'ver', 'Controlli avanzati per la verifica delle versioni'],
[ '', 'tatoo', 'Aggiunge i tatoo'],
[ '', 'ptb', 'Aggiunge la personal toolbar'],
[ '', 'stch', 'Aggiunge lo status changer'],
[ '', 'riex', 'Aggiunge il modulo per la ricerca avanzata'],
[ '', 'uppg', 'Aggiunge una freccia rossa che rimanda a inizio pagina'],
[ '', 'forcesum', 'Aggiunge script che crea un\'intermittenza di colore se l\'oggetto della modifica è vuoto'],
[ '', 'rev', 'Aggiunge script per i revert nella pagina delle differenze tra revisioni'],
[ '', 'vfol', 'Vandal Fighter on Line (VFonLine)'],
[ '', 'edt', 'Permette di editare i titoli come fossero una casella di ricerca'],
[ '', 'movetxt', 'Aggiunge un modulo precompilato per inserire velocemente la motivazione di uno spostamento'],
[ '', 'adlink', 'Aggiunge un tab per gli admin con collegamenti utili'],
[ '', 'adrus', 'Aggiunge un check box per selezionare e deselezionare tutte le modifiche nel recupero cronologia '],
[ '', 'adtog', 'Aggiunge il pulsante inverti nella pagina per il recupero della cronologia'],
[ '', 'canctxt', 'Aggiunge un modulo precompilato per inserire velocemente l\'oggetto di una cancellazione'],
[ '', 'cancfiletxt', 'Aggiunge un modulo precompilato per inserire velocemente l\'oggetto della cancellazione dei file']
);
var msCheckboxes = new Array();
var msGetGroup = new Object();
var msStartConfig = new Object();
// Grazie a [[:en:User:Topaz]]
function msXmlhttpreq() {
if (window.XMLHttpRequest) {
xmlhttpobj = new XMLHttpRequest()
} else {
try {
xmlhttpobj = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlhttpobj = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {
xmlhttpobj = null;
}
}
}
return xmlhttpobj;
}
// Grazie a [[:en:User:Topaz]]
function msDoReq(url,postdata,headers) {
var req = msXmlhttpreq();
req.open(postdata?"POST":"GET", url, false);
for(header in headers)
req.setRequestHeader(header,headers[header]);
req.send(postdata||null);
return req;
}
function fullescape(text)
{
return escape(text).replace(/\+/g,"%2B");
}
// Grazie a [[:en:User:Topaz]]
function msSetPageContent(pagename,content,summary,watch) {
var prelimresp = msDoReq("/w/index.php?title="+pagename+"&action=submit");
var edittime = prelimresp.responseText.match(/\<input type='hidden' value="(\d+)" name="wpEdittime" \/\>/)[1];
var edittoken = prelimresp.responseText.match(/\<input type='hidden' value="([^"]+)" name="wpEditToken" \/\>/)[1];
msDoReq("/w/index.php?title="+pagename+"&action=submit",
"wpEdittime="+edittime+
"&wpEditToken="+fullescape(edittoken)+
"&wpTextbox1="+encodeURIComponent(content)+
"&wpSummary="+encodeURIComponent(summary)+
(watch?"&wpWatchthis=on":"")+
"&wpSection=&wpSave=Save+page",
{"Content-Type":"application/x-www-form-urlencoded"});
}
// Grazie a [[:en:User:Topaz]]
function msGetPageContent(pagename) {
var req = msDoReq("/w/index.php?title="+pagename+"&action=edit");
var content = req.responseText.match(/\<textarea[\w\W]*?\>([\w\W]*?)\<\/textarea\>/)[1];
content = content.replace(/\<\;/gi, "<");
content = content.replace(/\>\;/gi, ">");
content = content.replace(/\"\;/gi, "\"");
content = content.replace(/\&\;/gi, "&");
return content;
}
function msRefreshCheckboxes(){
var isChecked = new Object();
for(var i = 0; i < msCheckboxes.length; i++){
isChecked[msCheckboxes[i].mod] = msCheckboxes[i].checked;
if(isChecked[msCheckboxes[i].group])
msCheckboxes[i].disabled = true;
else
msCheckboxes[i].disabled = false;
}
}
function msAddCheckbox(obj, group, mod, text, val){
var cb=document.createElement('input');
cb.type='checkbox';
cb.id='chkbox' + mod;
cb.checked = (msStartConfig[mod] == true);
cb.mod = mod;
cb.group = group;
cb.onclick = msRefreshCheckboxes;
var l=document.createElement('label');
l.innerHTML = mod + " - " + text + "<br />";
l.cb = cb;
l.onclick = function(e){e = (e) ? e : ((window.event) ? window.event : null); var t = e.target ? e.target : e.SrcElement; t.cb.click();};
msCheckboxes.push(cb);
msGetGroup[mod] = group;
obj.appendChild(cb);
obj.appendChild(l);
}
function msGenerateNewConfig(){
var res = '';
for(i = 0; i < msConfigs.length; i++)
if (msCheckboxes[i].checked)
res += ' ' + msCheckboxes[i].mod;
return res.substring(1);
}
function msSave(){
var oldMonobook = msGetPageContent('Utente:' + wgUserName + '/' + msConfigFile);
var newMonobook = oldMonobook.replace(/toLoad[ ]*=[ ]*"[^"]*"[ ]*;/, "toLoad = \"" + msGenerateNewConfig() + "\";");
msSetPageContent('Utente:' + wgUserName + '/' + msConfigFile, newMonobook, "Monobook Setup");
if (newMonobook != oldMonobook)
alert("Configurazione salvata. Ricordati di premere ctrl+r per pulire la cache per attivare i cambiamenti.");
else
alert("Nessuna modifica effettuata.");
msWndSetup.close();
}
function msInit(){
if (toLoad){
var toLoadArr = toLoad.split(' ');
for(var i = 0; i < toLoadArr.length; i++)
if (toLoadArr[i])
msStartConfig[toLoadArr[i]] = true;
}
}
function msCreateUI(){
msWndSetup = window.open('', 'Setup', 'width=640,height=480,toolbar=no,location=no,status=no,' +
'menubar=no,scrollbars=yes,resizable=yes,left=100,top=100');
msWndSetup.document.title = "Monobook Setup";
msWndSetup.document.bgColor="#FFFFCC";
var body = msWndSetup.document.body;
var intro = document.createElement('p');
intro.innerHTML = "Benvenuto nella configurazione del tuo <b>Monobook.js</b> personale.<br /><br />" +
"Vedi <a href='http://it.wikibooks.org/wiki/Wikipedia:Monobook.js' target=new>qui</a> per maggiori informazioni<br /><br />" +
"Seleziona i moduli che vuoi attivare. NOTA: Quando una casella di primo livello viene attivata, " +
"tutte le caselle che da essa dipendono vengono disabilitate perché incluse automaticamente. Per modificare le caselle " +
"disabilitate, deseleziona la rispettiva casella principale.<br /><br />";
body.appendChild(intro);
for(var i = 0; i < msConfigs.length; i++){
var group = msConfigs[i][0];
var mod = msConfigs[i][1];
var title = msConfigs[i][2];
if(group == ''){
msAddCheckbox(body, group, mod, title, false);
} else {
var l=document.createElement('label');
l.innerHTML=" "; //padding
body.appendChild(l);
msAddCheckbox(body, group, mod, title, false);
}
}
body.appendChild(document.createElement("hr"));
var btnSelectAll = document.createElement('input');
btnSelectAll.type='button';
btnSelectAll.value = "Seleziona tutti";
btnSelectAll.onclick = function(){ for(var i = 0; i < msCheckboxes.length; i++)
msCheckboxes[i].checked = (msCheckboxes[i].group == '');
msRefreshCheckboxes();
};
body.appendChild(btnSelectAll);
var pad=document.createElement('label');
pad.innerHTML=" ";
body.appendChild(pad);
var btnDeselectAll = document.createElement('input');
btnDeselectAll.type='button';
btnDeselectAll.value = "Deseleziona tutti";
btnDeselectAll.onclick = function(){ for(var i = 0; i < msCheckboxes.length; i++)
msCheckboxes[i].checked = false;
msRefreshCheckboxes();
};
body.appendChild(btnDeselectAll);
var pad=document.createElement('label');
pad.innerHTML=" ";
body.appendChild(pad);
var btnReset = document.createElement('input');
btnReset.type='button';
btnReset.value = "Annulla modifiche";
btnReset.onclick = function(){ for(var i = 0; i < msCheckboxes.length; i++)
msCheckboxes[i].checked = (msStartConfig[msCheckboxes[i].mod] == true);
msRefreshCheckboxes();
};
body.appendChild(btnReset);
body.appendChild(document.createElement("hr"));
var btnSave=document.createElement('input');
btnSave.type='button';
btnSave.value = "Salva";
btnSave.onclick = msSave;
body.appendChild(btnSave);
var pad=document.createElement('label');
pad.innerHTML=" ";
body.appendChild(pad);
var btnClose=document.createElement('input');
btnClose.type='button';
btnClose.value = "Annulla";
btnClose.onclick = function(){ msWndSetup.close(); };
body.appendChild(btnClose);
msRefreshCheckboxes();
}
if (typeof msConfigFile == 'undefined')
msConfigFile = 'monobook.js';
if((typeof(msWndSetup) != 'undefined') && !msWndSetup.closed){
msWndSetup.focus();
}else{
msInit();
msCreateUI();
}
// </nowiki>