MediaWiki:Gadget-selAut.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)
- Edge: tieni premuto il tasto Ctrl e fai clic su Aggiorna, oppure premi Ctrl-F5.
// WIP
/*
function listaAutori() {
var lista=[]
var blocco=JSON.parse($.ajax({
url:"https://it.wikisource.org/w/api.php?action=query&list=allpages&format=json&apnamespace=102&aplimit=500&apcontinue=",async:false}).responseText);
lista=lista.concat(blocco.query.allpages)
while (blocco["continue"]!=undefined) {
blocco=JSON.parse($.ajax({
url:"https://it.wikisource.org/w/api.php?action=query&list=allpages&format=json&apnamespace=102&aplimit=500"+
"&apfrom="+blocco["query-continue"].apcontinue+
"&apcontinue=",async:false}).responseText);
lista=lista.concat(blocco.query.allpages)
}
for (i=0;i<lista.length;i+=1) {lista[i]=lista[i].title.replace("Autore:","");}
localStorage.setItem("autori",JSON.stringify(lista));}*/
function listaAutori() {
var api = new mw.Api(),
lista = [],
params = {
action: 'query',
list: 'allpages',
apnamespace: 102,
aplimit: 500
},
listaAutoriRicorsiva = function ( continua ) {
if ( continua !== undefined ) {
$.extend( params, continua );
}
return api.get( params ).then( function ( blocco ) {
lista = lista.concat( blocco.query.allpages );
if ( blocco.continue ) {
return listaAutoriRicorsiva( blocco.continue );
} else {
return $.map( lista, function ( elemento ) {
return elemento.title.replace( 'Autore:', '' );
} );
}
} );
};
return listaAutoriRicorsiva();
}
function caricaListaAutori(){
listaAutori().done( function ( autori ) {
localStorage.autori=JSON.stringify(autori);
} );
console.log("fatto");
}
var selAut=function () {
var selezione=selection()[1];
if (localStorage.getItem("autori")==null) listaAutori();
if (localStorage.getItem("autori nuovi")==null) localStorage.setItem("autori nuovi","[]");
var autori=JSON.parse(localStorage.getItem("autori"));
autori=autori.concat(JSON.parse(localStorage.getItem("autori nuovi")));
var lu=[];
var ls=[];
var s=0;
for (i=0;i<autori.length;i+=1) {
s=simil(selezione.toLocaleLowerCase(), autori[i].toLocaleLowerCase(),2);
if (s==1) {
lu.push(autori[i]);
} else {
if (s>.6) {ls.push(autori[i]);}
}
}
if (lu.length==1) {scriviBox(selection()[0]+"{{AutoreCitato|"+lu[0]+"|"+selezione+"}}"+selection()[2]); return;}
if (lu.length>1) {selBox(selection(),lu); return;}
selBox(selection(),ls); return;
}
function selBox (selection,lista) {
if ($("#box_selettore").length!=0) $("#box_selettore").remove();
var selettore='<div id="box_selettore" style="position:fixed;top:200px;left:200px;z-index:200;border:3px solid red;background-color:#dfdfdf;">'+
' <input id="input1_selettore" type="text">'+
' <input id="input2_selettore" type="text">'+
' <button id="bottone1_selettore" type="button" >OK</button>'+
' <button id="bottone2_selettore" type="button" >Annulla</button>'+
' <div style="overflow:auto;max-height:150px;">'+
' <ul id="ul_selettore" style="font-size:0.8pc;line-height:0.9pc;">'+
' </ul>'+
' </div>'+
'</div>';
var selez=selection;
$("body").append(selettore);
$("#input1_selettore").val(selez[1]);
$("#bottone2_selettore").click(function() {$("#box_selettore").remove();});
$("#bottone1_selettore").click(function() {
selez[1]="{{AutoreCitato|"+$("#input2_selettore").val()+"|"+$("#input1_selettore").val()+"}}";
scriviBox(selez.join(""));
if ($.inArray($("#input2_selettore").val(),lista)==-1) {
var l=JSON.parse(localStorage.getItem("autori nuovi"));
l.splice(l.length,0,$("#input2_selettore").val());
localStorage.setItem("autori nuovi",JSON.stringify(l));
}
$("#box_selettore").remove();
});
for (var i=0;i<lista.length;i+=1) {
el=$("<li>").text(lista[i]).click(function() {$("#input2_selettore").val($(this).text());} );
$("#ul_selettore").append(el);
}
}
$(document).ready(function() {newButton("selAut","selAut","es","Nuovo autore citato")});