Wikizionario:Monobook.js/Setup.js

Da Wikizionario, il dizionario a contenuto aperto.

/*

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 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', '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}}'],
  [ 'tbar',   'port', 'Aggiunge {{Portale}}'],
  [     '',  '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 Wikipedia 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(/\&lt\;/gi, "<");
  content = content.replace(/\&gt\;/gi, ">");
  content = content.replace(/\&quot\;/gi, "\"");
  content = content.replace(/\&amp\;/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.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();
}

//