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.
function allinea(callback) {
    var result;
    if (leggiBox().indexOf("{{Iwpage")!==-1) {
        $.ajax({
        url: 'https://la.wikisource.org/w/api.php',
        data: {
            format: 'json',
            action: 'query',
            titles: mw.config.get("wgPageName"),
            prop: 'revisions',
            rvlimit: '1',
            rvprop: 'ids|content'
        },
        dataType: 'jsonp' // this is the important one!
        }).done(function(data) {
        // do some work here
        for (id in data.query.pages) {result=data.query.pages[id];}
        callback(result);
        });
    } else {
        mw.alertMessage("La pagina non contiene il tl Iwpage");
    }
}

/* test callback attivo */
function allineamento(dati) {
var nuovoTesto;
try {
    var r=analisiPagina(dati.revisions[0]["*"]);
    r.revid=dati.revisions[0].revid;
    console.log(r.revid, r.user, r.level);
    if (leggiBox().indexOf(r.revid)!==-1) mw.alertMessage("Pagina già allineata"); else {
        if (confirm("Pagina da allineare\nAllineo?")) {
            //aggiustamenti
            r.headerContent=r.headerContent.replace(/{{rh\|/i,"{{RigaIntestazione|");
    		r.body=r.body.replace(/{{hr\|/i,"{{Rule|");
            //console.log("Eseguo allineamento");
            scriviBox(r.headerContent,0);
            scriviBox(r.footerContent,2);
            scriviBox("{{Allineatore|la}}<!--{{Iwpage|la}}, %revid, %level-->"
                    .replace("%revid",r.revid)
                    .replace("%level",r.level)
                    +r.body)
            $("#radiobuttons input[value='"+r.level+"']").click(); // in eis
            $(".prp-quality-widget input[value='"+r.level+"']").click(); // in edit normale
            updatePreview(); // se in preview di eis, aggiorna preview
        	
        }
        };
    }
    catch(err) {
        mw.alertMessage("Allineamento non riuscito.\nVerificare se la pagina la.wikisource esiste");
    }
}

// esegue la trasformazione wikicode->oggetto e oggetto->wikicode
function analisiPagina(input) {
    var risultato, comp, decomp;
    if (typeof(input)==="string") risultato=decomp(input); else risultato=comp(input);
    return risultato;
    
    function decomp(input) {
        var p=splitPagina(input);
        var r={};
        r.header=p[0];
        r.body=p[1];
        r.footer=p[2];
        r.level=/level="(\d)"/.exec(r.header)[1];
        r.user=/user="(.+)?"/.exec(r.header)[1];
        r.headerContent=r.header.replace(/<\/*noinclude>/g,"").replace(/<.+?>/,"")
        r.footerContent=r.footer.replace(/<\/*noinclude>/g,"");
        return r;
    }
    function comp(input) {
        var r=input;
        r.header='<noinclude><pagequality level="%level" user="%user" />%content</noinclude>'.replace("%level",r.level).replace("%user",r.user).replace("%content",r.headerContent);
        r.footer='<noinclude>%footer</noinclude>'.replace("%footer",r.footerContent);
        return r.header+r.body+r.footer;
    }
}

// funzione generica di lettura codice wiki seguita da callback
function leggiCodice(pagina, server, callback) {
    var result;
        if (pagina===undefined) pagina=mw.config.get("wgPageName");
        if (server==undefined) server=mw.config.get("wgServer");
        if (callback===undefined) callback=function(x) {console.log(x.pageid);}
        $.ajax({
        url: server+'/w/api.php',
        data: {
            format: 'json',
            action: 'query',
            titles: pagina,
            prop: 'revisions',
            rvlimit: '1',
            rvprop: 'ids|content'
        },
        dataType: 'jsonp' // this is the important one!
        }).done(function(data) {
        // do some work here
        for (id in data.query.pages) {result=data.query.pages[id];}
        callback(result);
        });
}