Utente:IPork/statopersonale pubblico.js

Da Wikisource.

Nota: dopo aver pubblicato, potrebbe essere necessario pulire la cache del proprio browser per vedere i cambiamenti.

  • Firefox / Safari: tieni premuto il tasto delle maiuscole Shift e fai clic su Ricarica, oppure premi Ctrl-F5 o Ctrl-R (⌘-R su Mac)
  • Google Chrome: premi Ctrl-Shift-R (⌘-Shift-R su un Mac)
  • Internet Explorer / Edge: tieni premuto il tasto Ctrl e fai clic su Aggiorna, oppure premi Ctrl-F5
  • Opera: premi Ctrl-F5.
/* <pre> */ 
// Codice originale su http://en.wikipedia.org/wiki/User:Topaz/Wikiscripts
// Istruzioni su http://it.wikisource.org/wiki/Utente:IPork/scripts/Indicatore_di_stato
iPork.indicatoredistato = new Object();
iPork.indicatoredistato.version = 20070302;

// INIZIO SEZIONE MODIFICABILE DALL'UTENTE

// Modifica le indicazioni come preferisci. Puoi aggiungere nuove linee, purchè si mantenga la 
// stessa forma (parola:'codice'). Si può usare anche il linguaggio wiki per formattare le scritte.
// Si suggerisce di lasciare inalterate i tre stati principali (online, occupato e offline)
iPork.indicatoredistato.statuscode = {
  online:'<font color="green">online</font>',
  occupato:'<font color="orange"> occupato </font>',
  offline:'<font color="red">offline</font>'
};

// true: permette di usare il linguaggio wiki nel codice (se attivato la pagina non si aggiorna automaticamente)
// false: non puoi usare il linguaggio wiki nel codice
iPork.indicatoredistato.enablewikimarkup = false;

// true: mostra il menu in alto a destra
// false: mostra il menu a sinistra sotto la sezione "strumenti"
iPork.indicatoredistato.usepersonalbar = true;

// true: aggiunge la pagina Utente:NOME/Stats nella lista degli osservati speciali
// false: non mostra la pagina nella lista degli osservati speciali
iPork.indicatoredistato.watchstatus = false;

// FINE SEZIONE MODIFICABILE DALL'UTENTE

iPork.indicatoredistato.buttonlist = {};
iPork.indicatoredistato.oldonload = window.onload;
window.onload = function() {
  if (typeof iPork.indicatoredistato.oldonload == "function") {
    setTimeout('iPork.indicatoredistato.oldonload()',50);
  }
  if (!iPork.indicatoredistato.usepersonalbar) {
    iPork.wputil.addsidepanel("tz-indicatoredistato", "indicatore di stato");
  }
  var buttonlist = [];
  for (status in iPork.indicatoredistato.statuscode) {
    buttonlist.push(status);
    iPork.indicatoredistato.buttonlist[status] =
        iPork.wputil.addsidepanelbutton(
          iPork.indicatoredistato.usepersonalbar ? "p-personal" : "tz-indicatoredistato",
          status,
          'javascript:iPork.indicatoredistato.setstatus("' + status + '")'
        );
  }

  if (iPork.indicatoredistato.usepersonalbar) {
    for(var i=0; i<buttonlist.length; i++) {
      with (iPork.indicatoredistato.buttonlist[buttonlist[i]].style) {
        if (i != buttonlist.length-1) {
          borderRight = "1px solid #aaaaaa";
          paddingRight = "2px";
        }
        if (i != 0) {
          marginLeft = "0px";
          paddingLeft = "2px";
        }
      }
    }
  }

  var spanlist = document.getElementsByTagName("span");
  for (var i=0; i<spanlist.length; i++) {
    if (spanlist[i].className == "iPork.indicatoredistato.curstatus."+escape(iPork.wputil.username())) {
      iPork.util.cookie.set("iPork.indicatoredistato.curstatus", spanlist[i].innerHTML);
    }
  }

  iPork.indicatoredistato.update();
};

iPork.indicatoredistato.setstatus = function(statusname) {
  iPork.wputil.setpagecontent(
      "User:"+iPork.wputil.username()+"/Status",

      (!iPork.indicatoredistato.enablewikimarkup ?
          '<includeonly><span class="iPork.indicatoredistato.inlinestatus.'
          + escape(iPork.wputil.username())
          + '"></includeonly>'
      : '') +

      iPork.indicatoredistato.statuscode[statusname] +

      (!iPork.indicatoredistato.enablewikimarkup ?
          '<includeonly></span></includeonly>'
      : '') +

      '<span class="iPork.indicatoredistato.curstatus.'+escape(iPork.wputil.username()) +
      '" style="display:none">'+statusname+'</span>',

      statusname,
      iPork.indicatoredistato.watchstatus);
  iPork.util.cookie.set("iPork.indicatoredistato.curstatus", statusname);
  iPork.indicatoredistato.update();
};

iPork.indicatoredistato.laststatus = null;
iPork.indicatoredistato.update = function() {
  var curstatus = iPork.util.cookie.get("iPork.indicatoredistato.curstatus");
  if (curstatus && curstatus != iPork.indicatoredistato.laststatus) {
    for (status in iPork.indicatoredistato.buttonlist) {
      with (iPork.indicatoredistato.buttonlist[status].style) {
        if (status == curstatus) {
          fontWeight = "bold";
        } else {
          fontWeight = "normal";
        }
      }
    }

    if (!iPork.indicatoredistato.enablewikimarkup) {
      var spanlist = document.getElementsByTagName("span");
      for (var i=0; i<spanlist.length; i++) {
        if (spanlist[i].className == "iPork.indicatoredistato.inlinestatus."+escape(iPork.wputil.username())) {
          spanlist[i].innerHTML = iPork.indicatoredistato.statuscode[curstatus];
        }
      }
    }
  }
  iPork.indicatoredistato.laststatus = curstatus;
};

setInterval("iPork.indicatoredistato.update()", 5000);

/* </pre> */