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.
/*
Recupera qualsiasi dato recuperabile con API da qualsiasi pagina di qualsiasi progetto mediawiki, e sui dati recuperati (in formato JSON) esegue qualsiasi cosa sia fattibile in js.

Accetta un unico parametro parametri che è un oggetto js del tipo:
var parametri = {
		sito: sito,        
		titolo: titolo,
		indice: indice,
		ajax: {
			url: 'https://' + sito + '/w/api.php',
			async: false, // NON MODIFICARE
			data: {
				format: 'json',
				action: 'parse',
				page: titolo,          
				prop: 'text'
			},
			dataType: 'jsonp' // NON MODIFICARE
		},
                callback: callback1, // questa funzione viene eseguita su data tenendo anche conto di parametri
	}
 
In questo caso di esempio, il parametro ajax corrisponde alla chiamata API action=parse e prop=text sulla pagina titolo del sito sito e restituisce l'html della pagina; vedi documentazione API. Questo contenuto di parametri permette di recuperare il testo html di qualsiasi pagina normale di qualsiasi progetto mediawiki. 


*/
/* Il "cuore" del meccanismo, getAny(), viene portato in Common.js.
function getAny(parametri) {
	$.ajax(parametri.ajax).done(function (data) {
		parametri.callback( parametri, data);
	});
}*/

/* questa particolare funzione callback di elaborazione dei dati estrae l'html come testo, rende assoluti i link relativi in modo che puntino sul sito giusto, e nell'ultima istruzione inserisce il testo html (trasformato in oggetto jQuery) subito 
sotto a un "bottone di richiesta di inserimento" (l'esempio è tratto da una particolare applicazione su wikivoyage) */

function callback1(parametri, data) {
	// estraggo l'html dall'oggetto JSON
	var html = data.parse.text["*"]
 
	// rendo assoluti i link relativi
	html = html.replace(/href=\"\/wiki\//g, 'href=//' + parametri.sito + '/wiki/')
	html = html.replace(/href=\"\/w\//g, 'href=//' + parametri.sito + '/w/');
 
	// faccio comparire html in .iwt
	$(".iwtContent", $(".iwt").eq(parametri.indice)).html("").append($(html));
}

/* questo è un esempio di "funzione chiamante getAny", anch'essa tratta da u esperimento su wikivoyage. Raccoglie dalla pagina
il valore dei due parametri titolo e sito, allestisce l'oggetto parametri e chiama getAny. */
function getAnyGo(titolo, sito, indice) {
	if (titolo == undefined) var titolo = $(".nomePagGet").text();
	if (sito == undefined) var sito = $(".sitoPagGet").text();
	sito = sito.split(":");
	sito = sito[0] + "." + sito[1] + ".org";
	var parametri = {
		sito: sito,
		titolo: titolo,
		indice: indice,
		ajax: {
			url: 'https://' + sito + '/w/api.php',
			async: false,
			data: {
				format: 'json',
				action: 'parse',
				page: titolo,
				prop: 'text'
			},
			dataType: 'jsonp'
		},
                callback: callback1
	}
 
	getAny(parametri, callback1);
	$(".itw .bottone").eq(indice).remove();
}
 
/* Questo è un esempio di funzione preliminare che, sulla base del codice predisposto da un template, crea i bottoni 
per attivare getAnyGo() alla pressione di un bottone collegato a una pagina di un sito. In questo caso oltre al bottone 
si crea anche una div in cui il risultato finale della chiamata sarà visualizzato.  */

$(document).ready(function () {
	$(".iwt").each(function (index) {
		var titolo = $(".nomePagGet", $(this)).text();
		var sito = $(".sitoPagGet", $(this)).text();
		$(".bottone", $(this)).append($('<button onclick="getAnyGo(&quot;' + titolo + '&quot;,&quot;' + sito + '&quot;,' + index + ')">Visualizza da ' + sito + '</button>'));
		// $(this).append($('<div class="iwtContent mw-collapsible-content" style="border:1px dotted blue"></div>'));
	})
});
 
/*
// Questa funzione è WIP per un altro tipo di interrogazione: ricava la  lista dei langlinks di una pagina. 
// Va profondamente rivista sulla base di una chiamata a Wikidata. 
function g(title, lang, site) {
      $.ajax({
           url: 'https://'+lang+'.'+site+'/w/api.php',
           async:false,
           data: {
           format: 'json',
           action: 'parse',
           page: title,
           prop: 'langlinks|iwlinks', 
                 },
      dataType: 'jsonp' 
      }).done(function (data) {
       var l=[];
       $.each(data.parse.langlinks, function (index,value) {
          if (value.lang=="en" || value.lang=="it" || value.lang=="fr" || value.lang=="de" || value.lang=="el") {
              l.push([value["*"],value.lang]);
          }
       });
          $(".ourDiv").data("langlinks",l); 
          });
}  */