MediaWiki:DataUltimaRevisione.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> */
function getElementsByClass(cls, tag, doc)
{
    allElements = doc.getElementsByTagName(tag);
    var i = 0;
    arr = new Array();
    for(i = 0; i<allElements.length; i++) {
        if(allElements[i].className == cls) arr.push(allElements[i]);
    }
    return arr;
}

function cercaRevDate()
{
    cercatoreRevDate = new revDateCatcher();
    cercatoreRevDate.onRevDateCatched = inserisciRevDate;
    var dates = getElementsByClass('revisionDate', 'span', document); // Prende tutti gli elementi che hanno come classe "revisionDate"
    if(!dates.length) return;
    var i;
    for(i in dates)
    {
            var page = dates[i].innerHTML;
            dates[i].className='revDate_' + page;
            dates[i].innerHTML='';
            cercatoreRevDate.aggiungiPagina(page);
    }
    cercatoreRevDate.avanzaCoda();
}

function inserisciRevDate(page, data)
{
    var elms = getElementsByClass('revDate_' + page, 'span', document);
    var elm;
    var i;
    for(i=0; i<elms.length; i++)
    {
        elm = elms[i];
        dataText = document.createTextNode(data);
        elm.appendChild(dataText)
    }

}

function dateCatcherStatoCambiato()
{
    cercatoreRevDate.processa();
}

function revDateCatcher()
{
    this.coda = new Array();
    this.xhttpreq = null;
    this.currentPage = null;
    this.createRequest = createRequest;
    this.aggiungiPagina = addPage;
    this.avanzaCoda = initRequest;
    this.processa = processRequest;
    this.onRevDateCatched = null;
    
    function createRequest()
    {
        try {
            this.xhttpreq = new XMLHttpRequest();
        } catch(exc) {
            try {
                this.xhttpreq = new ActiveXObject('Msxml2.XMLHTTP');
            } catch(exc) {
                try {
                    this.xhttpreq = new ActiveXObject('Microsoft.XMLHTTP');
                } catch(exc) {
                    this.xhttpreq = null;
                }
            }
        }
    }
    
    function addPage(inputPage)
    {
        if(this.coda.indexOf(inputPage) != -1) return; // Se l'ho già messa, la salto!
        this.coda.push(inputPage);
    }
    
    function initRequest()
    {
        if(this.coda.length == 0) return;
        this.createRequest();
        this.xhttpreq.open('GET', '/w/api.php?action=query&prop=revisions&titles=' + this.coda[0] + '&rvprop=timestamp&format=json', true);
        this.xhttpreq.onreadystatechange = dateCatcherStatoCambiato;
        this.xhttpreq.send('');
        this.currentPage = this.coda[0];
        this.coda.shift();
    }
    
    function processRequest()
    {
        if(this.xhttpreq.readyState == 4) {
            var txtresp = this.xhttpreq.responseText;
            var dateregexp = /"timestamp":"(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})Z"/;
            var match = dateregexp.exec(txtresp);
            var curRevTimestamp = match[3] + '.' + match[2] + '.' + match[1] + ', ' + match[4] + ':' + match[5] + ':' + match[6];
            this.onRevDateCatched(this.currentPage, curRevTimestamp);
            this.avanzaCoda();
        }
    }
}

$(document).ready(cercaRevDate);

/* </pre> */