MediaWiki:Gadget-selAut.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.
/* da studiare la trasformazione in una funzione (function...)() 
console.log("caricato gadget selAut");
function listaAutori() {
	var api = new mw.Api(),
	lista = [],
	params = {
		action: 'query',
		list: 'allpages',
		apnamespace: 102,
		apfilterredir: 'nonredirects',
		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);
	alert("Sono stati caricati in memoria "+autori.length+" autori");
} );
     
}

function selAut() {
   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);
   
   } 
}
var newButton= newButton || function (nome, funzione, azione, messaggio) { 
// azione è una stringa composta da v,e,s,h rispettivamente view,edit,submit,history
// se nome è un oggetto svolgilo
	var p;
	if (typeof(nome) === "string") {
		p = {
			nome: nome,
			funzione: funzione,
			azione: azione,
			messaggio: messaggio
		};
	} else {
		p = nome;
	}
	if (p.messaggio===undefined) p.messaggio="Nessun aiuto registrato";
	if (p.classe===undefined) p.classe="baseButton";
	if (p.stile===undefined) p.stile="display:inline";
	if (p.namespaces!==undefined) {
		var listaNamespaces=p.namespaces.split("|");
		for (var i=0; i<listaNamespaces.length; i+=1) {
			listaNamespaces[i]=$.trim(listaNamespaces[i]); 
			if (["ns0", "Main", "Principale"].indexOf(listaNamespaces[i]) !== -1) {
				listaNamespaces[i] === "";
			}
		}
		if ($.inArray(mw.config.get('wgCanonicalNamespace'),p.namespaces.split(","))==-1) return;
	}
// Passo 1: se newtatooo non esiste, lo crea
	if ($("#newtattoo").length===0) creaBottoniera();
	// fine se azione=history
	if (mw.config.get('wgAction') === "history") {
		return;
	}
	// normalizzazione function
	if (p.funzione.indexOf("(") === -1 && p.funzione.indexOf(")") === -1) {
		p.funzione += "()";
	}
	// default: bottone presente in view, edit, 
	if (p.azione === undefined) {
		p.azione = "ves";
	}
		// messaggio di default
	if (p.messaggio === undefined) {
		p.messaggio = "Nessun messaggio di aiuto registrato";
	}
	// valutazione condizione di visualizzazione
	if (mw.config.get('wgAction') === "edit" && p.azione.indexOf("e") === -1) {
		return;
	}
	if (mw.config.get('wgAction') === "view" && p.azione.indexOf("v") === -1) {
		return;
	}
	if (mw.config.get('wgAction') === "submit" && p.azione.indexOf("s") === -1) {
		return;
	}
	// caso pulsante=immagine
	var html = "";
	if (p.nome.substring(0, 2) == "//") {
		html = '<img class="'+p.classe+'" style="'+p.stile+'" src="' + p.nome + '" onclick="' + p.funzione + '" title="' + p.messaggio +'"';
		if (p.ondblclick!==undefined) html+=' ondblclick="'+p.ondblclick+'"';
		html+='/>';
	}
	// caso pulsante=label
	else {
		html = '<button class="'+p.classe+'" style="'+p.stile+'" type="button" title="' + p.messaggio + '" onclick="' + p.funzione +'"';
		if (p.ondblclick!==undefined) html+=' ondblclick="'+p.ondblclick+'"';
		html+='><small>' + p.nome + '</small></button>';                
	}
	$("#newtattoo").append($(html));
	return false;
}




$(document).ready(function() {
	newButton("selAut","mw.selAut","es","Nuovo autore citato");
	
	$("#p-tb ul").append($('<li><a href="javascript:void()">Aggiorna lista Autori</a></li>').click(function() {caricaListaAutori();}));
});

// console.log("caricato gadget selAut");
*/