MediaWiki:Gadget-pulsanti-W.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.
// https://upload.wikimedia.org/wikipedia/commons/e/ef/Button_Wikidata_editor_toolbar.png

//https://www.wikidata.org/w/api.php?action=wbsearchentities&search=frisone&language=it
risultato = {};
function selWikidata() {
	var t = selection();
	if (t[1] === "") {
		alert("Nessun testo selezionato");
	} else {
		wbs(t);
	}
}

function getWikidata(id) {
	t = $.getJSON({url:"https://www.wikidata.org/wiki/Special:EntityData/"+id+".json", async:false}).responseJSON.entities[id];
	var dati = {};
	dati.id = id;
	dati.label = t.labels.it!==undefined ? t.labels.it.value: "";
	dati.description = t.descriptions.it!==undefined?t.descriptions.it.value:"";
	dati.itwiki = t.sitelinks.itwiki!==undefined?t.sitelinks.itwiki.title:"";
	dati.itwikisource = t.sitelinks.itwikisource!==undefined?t.sitelinks.itwikisource.title.replace("Autore:",""):"";
	return dati;
}

// bozza funzione ricerca 
// riceve una lista t selection
function wbs(testo) {
	var entities=[];
    $.ajax({
        url: 'https://www.wikidata.org/w/api.php',
        data: {
            format: 'json',
            action: 'wbsearchentities', 
            search: testo[1].replace(/’/g,"'"),
            language: 'it'
        },
        dataType: 'jsonp' // this is the important one!
    }).done(function(data) { 
	    risultato=data;
	    // risultato.search è una lista di oggetti
	    
	    for (i = 0; i < risultato.search.length; i++) {
	    	entities.push(risultato.search[i].id+" "+risultato.search[i].label+" "+risultato.search[i].description);
	    }
	    
	    selBox(testo,entities);
    });
}
// bozza script creatore di tool di selezione 
function selBox (selection,lista) {
    if ($("#box_wds").length!==0) $("#box_wds").remove();
    var selettore='<div id="box_wds" class="box">'+
    '   <div class="box-title">Ricerca in Wikidata<span class="icon-close"></span></div>'+
    '   <div class="box-main">'+
    '   <input id="input1_selettore" type="text">'+ // testo
    '   <input id="input2_selettore" type="text">'+ // ID wikidata
    '   <button id="bottone1_selettore" type="button" class="btn blue">OK</button>'+
    '   <button id="bottone3_selettore" type="button" class="btn blue">Cerca</button>'+
    '   <button id="bottone2_selettore" type="button" class="btn blue">Annulla</button>'+
    '   <div id="cont_selettore">'+
    '      <ul id="ul_selettore">'+
    '      </ul>'+
    '   </div>'+
    '   </div>'+
    '</div>';
    
    var selez = selection;
    $("body").append(selettore);
    $('#box_wds').draggable({
		create: function( event, ui ) {
			$(this).css({
				right: "auto",
				top: $(this).position().top,
				left: $(this).position().left
			});
		}
	});
	// escludi il corpo del box dal trascinamento
	$('#box_wds').draggable('option', 'cancel', '.box-main');
	$('#box_wds .icon-close').click(function() {
		$('#box_wds').remove();
	});
    
    $("#input1_selettore").val(selez[1]);
    $("#bottone2_selettore").click(function() {
    	$("#box_wds").remove();
    });
    $("#bottone3_selettore").click(function() {
    	var testoRicerca=$("#input1_selettore").val();
    	testoRicerca=escape($.trim(testoRicerca).replace(/’/g,"'").toLocaleLowerCase());
    	var url="https://www.wikidata.org/w/index.php?search=&search=TESTO&title=Special:Search&go=Vai".replace("TESTO",testoRicerca);
    	window.open(url,"wikidata");
    });
    // bottone OK
    $("#bottone1_selettore").click(function() {
    	var dati = getWikidata($("#input2_selettore").val());
         selez[1] = "{"+"{"+"Wl|"+$("#input2_selettore").val()+"|"+$("#input1_selettore").val()+"}}";
         /*selez[1]="{"+"{"+"Wl|"+dati.id+
        	"|"+$("#input1_selettore").val()+
        	"|"+"s="+dati.itwikisource+
        	"|"+"w="+dati.itwiki+"}}"; */
         scriviBox(selez.join(""));
        $("#box_wds").remove();
	});
    for (var i = 0; i < lista.length; i++) {
        el = $("<li>").text(lista[i]).click(function() {
			$("#input2_selettore").val($(this).text().split(" ")[0]);
		});
        $("#ul_selettore").append(el);
    }
}

if ( typeof $ != 'undefined' && typeof $.fn.wikiEditor != 'undefined' ) {
	$( function() {
		$( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
			'section': 'advanced',
			'group': 'format',
			'tools': {
				'Connessione wikidata': {
					label: 'Connessione wikidata',
					type: 'button',
					icon: '//upload.wikimedia.org/wikipedia/commons/e/ef/Button_Wikidata_editor_toolbar.png',
					action: {
						type: 'callback',
						execute: function(context){
							selWikidata();
						}
					}
				}
			}
		});
	});
}