Wikinotizie:Monobook.js/Setup.js
/*
Interfaccia grafica per il setup del Monobook standard.
Autore: Salvatore Ingala.
- /
//
<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'],
[ '', 'chat', 'Aggiunge un link diretto alla chat di wikipedia'],
[ '', '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', 'rich', 'Aggiunge "Richieste agli amministratori" 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', 'newp', 'Aggiunge "Pagine nuove" nel menù "strumenti"'],
[ 'stru', 'whois', 'Aggiunge "Whois" nel menù "strumenti"'],
[ 'stru', 'unw', 'Aggiunge "non seguire" nella pagina degli Osservati Speciali'],
[ '', 'allp', 'Aggiunge il pulsante "AllPages" nel box di ricerca'],
[ '', 'tbar', 'Aggiunge tutti i pulsanti alla Toolbar'],
[ 'tbar', 'aiu', '"A"iutare'],
[ 'tbar', 'con', '"C"ontrollare'],
[ 'tbar', 'pov', '"P"OV'],
[ 'tbar', 'wiki', '"W"ikificare'],
[ 'tbar', 'stu', '"S"tub'],
[ 'tbar', 'enc', '"E"nciclopedicità dubbia'],
[ 'tbar', 'tra', 'Da tradurre'],
[ 'tbar', 'voto', 'Votazioni: +1/0/-1'],
[ 'tbar', 'cocp', 'Controlcopy'],
[ 'tbar', 'cacp', 'Cancelcopy'],
[ 'tbar', 'cat', 'Categorizzare'],
[ 'tbar', 'test', 'Test'],
[ 'tbar', 'prom', 'Promozionale'],
[ 'tbar', 'benv', 'Benvenuto'],
[ 'tbar', 'canc', 'Da cancellare'],
[ 'tbar', 'caut', 'Avvisocancellautente'],
[ 'tbar', 'cimm', 'Cancella subito'],
[ 'tbar', 'cviol', 'ViolazioneCopyright'],
[ 'tbar', 'sviol', 'Segnala copyviol'],
[ 'tbar', 'aviol', 'Avvisocopyviol'],
[ 'tbar', 'avand', 'Vandalismo'],
[ 'tbar', 'avv', 'Avvisoavvisi'],
[ 'tbar', 'yc', 'Cartellino giallo'],
[ 'tbar', 'rc', 'Cartellino rosso'],
[ 'tbar', 'spam', 'Avviso spam'],
[ 'tbar', 'uni', 'Da unire'],
[ 'tbar', 'divi', 'Da dividere'],
[ 'tbar', 'bpar', 'Avvisobloccoparziale'],
[ 'tbar', 'edw', 'Avvisoeditwar'],
[ 'tbar', 'bnpov', 'AvvisobloccoNPOV'],
[ 'tbar', 'tras', 'Trasferimento'],
[ 'tbar', 'orf', 'Orfana'],
[ 'tbar', 'wip', 'WIP'],
[ 'tbar', 'cgr', 'Da correggere'],
[ 'tbar', 'aimm', 'Avvisoimmagine'],
[ 'tbar', 'unv', 'Unverified'],
[ 'tbar', 'date', 'Date personali'],
[ 'tbar', 'grz', 'Grazie'],
[ 'tbar', 'ndis', 'Nota disambigua'],
[ 'tbar', 'dis', 'Disambigua'],
[ 'tbar', 'vedan', 'Vedi anche'],
[ 'tbar', 'mon', 'Monitoraggio'],
[ 'tbar', 'gall', 'Gallery'],
[ 'tbar', 'ref', 'References'],
[ 'tbar', 'ipro', 'Interprogetto'],
[ 'tbar', 'sbo', 'Scroll box'],
[ 'tbar', 'sot', 'Testo sottolineato'],
[ 'tbar', 'small', 'Testo piccolo'],
[ 'tbar', 'bar', 'Testo barrato'],
[ 'tbar', 'case', 'Trasforma maiuscolo in minuscolo e viceversa'],
[ 'tbar', 'br', 'Tasto "a capo"'],
[ 'tbar', 'cate', 'Aggiunge [[Categoria:]]'],
[ 'tbar', 'sef', 'Aggiunge {{senza fonti}}'],
[ 'tbar', 'cne', 'Aggiunge {{citazione necessaria}}'],
[ 'tbar', 'dmo', 'Aggiunge {{dmoz}}'],
[ 'tbar', 'noinc', 'Aggiunge "noinclude"'],
[ 'tbar', 'incor', 'Aggiunge {{Incorso}}'],
[ 'tbar', 'agg', 'Aggiunge {{Da aggiornare}}'],
[ 'tbar', 'prob', 'Aggiunge {{Problematico}}'],
[ 'tbar', 'fat', 'Aggiunge {{Fatto}}'],
[ 'tbar', 'nfat', 'Aggiunge {{Non fatto}}'],
[ 'tbar', 'port', 'Aggiunge {{Portale}}'],
[ 'tbar', 'ssen', 'Aggiunge {{Senza senso}}'],
[ 'tbar', 'scorp', 'Aggiunge {{ScorporoUnione}}'],
[ 'tbar', 'aw', 'Aggiunge {{AiutoW}}'],
[ 'tbar', 'avfir', 'Aggiunge {{Avvisofirma}}'],
[ '', 'avan', 'Anti-vandal tool'],
[ '', 'popup', 'Popup di navigazione'],
[ '', 'nms', 'Ricerca in un namespace'],
[ '', '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'],
[ '', 'edt', 'Permette di editare i titoli delle pagine per spostarsi'],
[ '', 'ver', 'Potenzia la funzione di verifica delle versioni'],
[ '', 'vpop', 'Patrolling retroattivo (VPopSpeed)'],
[ '', 'linkcomplete', 'Completamento automatico dei wikilink'],
[ '', 'lrc', 'LiveRC: Tool per il patrolling'],
[ '', 'dels', 'Aggiunge il link "cancella" da parte ad ogni sezione']
);
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');
//L'url strano "about:blank#" serve per un'incompatibilità con l'estensione di Firefox "Fast Dial"
msWndSetup = window.open('about:blank#', '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.wikipedia.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>