Wikisource:Monobook.js/Setup.js
Aspetto
/*
Interfaccia grafica per il setup del Monobook standard.
Autore: Salvatore Ingala.
- /
//
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 wikisource'], [ '', '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', 'whois', 'Aggiunge "Pagine nuove" nel menù "strumenti"'], [ 'stru', 'newp', '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', 'aviol', 'Avvisocopyviol'], [ 'tbar', 'avand', 'Vandalismo'], [ 'tbar', 'yc', 'Cartellino giallo'], [ 'tbar', 'rc', 'Cartellino rosso'], [ 'tbar', 'spam', 'Avviso spam'], [ 'tbar', 'uni', 'Da unire'], [ '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}}'], [ '', 'avan', 'Anti-vandal tool'], [ '', 'cwtch', 'Category watch'], [ '', 'popup', 'Popup di navigazione'], [ '', 'nms', 'Ricerca in un namespace'], [ '', '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 Wikisource sfruttando i motori Google e Yahoo'], [ '', 'rch', 'Crea un piccolo tasto sulla sinistra della pagina che consente di visualizzare la cronologia della pagina corrente'], [ '', 'edt', 'Permette di editare i titoli delle pagine per spostarsi'], [ '', 'ver', 'Potenzia la funzione di verifica delle versioni'], [ '', 'vpop', 'Patrolling retroattivo (VPopSpeed)'], [ '', 'vfol', 'Vandal Fighter on Line (VFonLine)'] ); 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; } // 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="([0-9a-f]+\\?)" name="wpEditToken" \/\>/)[1]; msDoReq("/w/index.php?title="+pagename+"&action=submit", "wpEdittime="+edittime+ "&wpEditToken="+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.wikisource.org/wiki/Wikisource: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(); } //