Utente:Alex brollo/Allinea.js
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);
});
}