MediaWiki:Gadget-common-areadati.js

Da Wikisource.
(Reindirizzamento da MediaWiki:Areadati.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.
var campiIntestazione = new Array("Lingua originale del testo", "Nome e cognome dell'autore", "Nome e cognome del curatore", "Nome e cognome dell'autore delle musiche", "Organismo emittente", "Anno di pubblicazione", "Anno di traduzione", "Nome e cognome del traduttore", "URL della versione cartacea a fronte", "Argomento", "Progetto", "Titolo", "Nome della pagina principale", "Università", "Facoltà", "Corso di laurea", "Nome e cognome del relatore", "Nome della versione");

var campiIncludi = new Array("Argomento", "autore", "sottotitolo", "prec", "succ");

var campiQualita = new Array("data", "avz", "arg");

var campiAutore = new Array("Nome", "Cognome", "Attività", "Nazionalità", "Professione e nazionalità");


/*
 * Get the value of a template parameter
 * str: the text of the template
 * param_name: the name of the parameter
 */
function findparamTemplate(str, param_name) {
	var pattern = "\\n([\\s]*?)\\|([\\s]*?)" + param_name + "([\\s]*?)=([\\s\\S]*?)\\n([\\s]*?)\\|([^=\\n\\|]+)=";
	var re = new RegExp(pattern);
	var m = str.match(re);
	if (m) {
		val = m[4];

		//niente note tra i parametri
		nota = find_stringa(val, "<ref>", "</ref>", true, "");
		while (nota !== "") {
			val = val.replace(nota,"");
			nota = find_stringa(val, "<ref>", "</ref>", true, "");
		}

		return val;
	}
	return '';
}

function findparamQualita(str, param_name) {
	var pattern = "\\|" + param_name + "=([\\s\\S]*?)\\|([^=\\|]+)=";
	var re = new RegExp(pattern);
	var m = str.match(re);
	if (m) return m[1];  
	return '';
}

//controlla che dopo il }} che chiude il template non sia rimasta della robaccia in più
function togliRobaccia(testo) {
	testo2 = testo.substring(2) + "}}";
	var i = 1;
	var fine = 2;

	while (i > 0) {
		var open = testo2.search("{{");
		var close = testo2.search("}}");
		if (open != -1 && open < close) { 
			i++;
			testo2 = testo2.substring(open + 2);
			fine += open + 2;
		}
		else { 
			i--;
			testo2 = testo2.substring(close + 2);
			fine += close + 2;
		}
	}
	return testo.substring(0, fine - 2);
}

/* genera l'area dati per le pagine in namespace principale
 *
 * Called from MediaWiki:Common.js
 */
window.creaAreaDatiNs0 = function creaAreaDatiNs0() {
	if (mw.config.get("wgNamespaceNumber") !== 0) { return; }

	var text = document.getElementById("wpTextbox1"); 
	if (!text) { return; }
	var testo = text.value;

        // togli parametro inutile
        testo = testo.replace(/\n[\s]*\|[\s]*Eventuale secondo anno di pubblicazione[\s]*=[\s]*\n/, "\n");

	// togli l'area dati vecchia se per caso era rimasta
	areaDatiVecchia = find_stringa(testo, "<!-- Area dati:", "a qui -->", true, "");
	if (areaDatiVecchia !== "") {
		testo = testo.replace(areaDatiVecchia, "");
	}

	var textdata = '<!-- Area dati: non modificare da qui: --><onlyinclude><div style="display:none">';

	var nome_template = "Intestazione";
	var existQualita = false;

	// esci se non trova né Template:Intestazione né IncludiIntestazione
	params = '';
	if (testo) {
		var re = /\{\{[Ii]ntestazione([\s\S]*)\n[\s]*\}\}/m;
		var m = testo.match(re);
		if (!m) {
			re = /\{\{[Ii]ncludiIntestazione([\s\S]*)([\n]?)\}\}/m;
			testo2 = testo.replace(/\|/g, "\n|").replace(/\n\n/g, "\n");

			var mi = testo2.match(re);
			nome_template = "IncludiIntestazione";
			
			if (!mi) {
				re = /\{\{[Ss]ubIntestazione([\s\S]*)([\n]?)\}\}/m;
				mi = testo2.match(re);
				nome_template = "SubIntestazione";
			}
			if (!mi) {
				re = /\{\{[Ee]dizione([\s\S]*)([\n]?)\}\}/m;
				mi = testo2.match(re);
				nome_template = "Edizione";
			}
			if (!mi) {
				re = /\{\{[Ss]ottopagina([\s\S]*)([\n]?)\}\}/m;
				mi = testo2.match(re);
				nome_template = "Sottopagina";
			}
			
			if (!mi) return; 
			else {
				params = togliRobaccia(mi[1]) + '\n\|END='; 
				campiIntestazione = campiIncludi;
			}
		} 
		else params = togliRobaccia(m[1]) + '\n\|END='; 
		
		re = /\{\{[Qq]ualità([\s\S]+?)\}\}/m;
		var mq = testo.match(re);

		//se non trova il tl:Qualità inserisce solo gli altri dati
		if (mq) existQualita = true; 
		if (existQualita) paramsQualita = mq[1] + '\|END='; 
	}

	for (i = 0; i < campiIntestazione.length; i++) {
		value = findparamTemplate(params, campiIntestazione[i]).trim();
		if (value !== '') {
			textdata += '<section begin="' + campiIntestazione[i] + '"/>' + value.replace(/\n\|/g, "|") + '<section end="' + campiIntestazione[i] + '"/>\n';
		}
	}
	textdata += '<section begin="nome template"/>' + nome_template + '<section end="nome template"/>\n';

	if (existQualita) { 
		for (i = 0; i < campiQualita.length; i++) {
			value = findparamQualita(paramsQualita, campiQualita[i]).trim();
			if (value !== '') {
				textdata += '<section begin="' + campiQualita[i] + '"/>' + value + '<section end="' + campiQualita[i] + '"/>\n';
			}
		}
	}

	textdata += '</div></onlyinclude><!-- a qui -->';

    // rimuove dal testo l'eventuale tl Conteggio pagine e lo aggiunge in cima
    testo = testo.replace("{{Conteggio pagine|[[Speciale:Statistiche]]}}", "");

	testo = "{{Conteggio pagine|[[Speciale:Statistiche]]}}" + textdata + testo;
	document.getElementById("wpTextbox1").value = testo;
}


/* genera l'area dati per le pagine Autore
 *
 * Called from MediaWiki:Common.js
 */
window.creaAreaDatiAutore = function creaAreaDatiAutore() {
	//esci se il namespace non è Autore
	if (mw.config.get("wgNamespaceNumber") != 102) { return; }
 
	var text = document.getElementById("wpTextbox1"); 
	if (!text) { return; }

	var testo = text.value;

	//togli l'area dati se per caso era rimasta
	areaDatiVecchia = find_stringa(testo, "<!-- Area dati:", "a qui -->", true, "");
	if (areaDatiVecchia !== "") {
		testo = testo.replace(areaDatiVecchia, "");
	}
 
	var textdata = '<!-- Area dati: non modificare da qui: --><onlyinclude><div style="display:none">';
 
	// esci se non trova Template:Autore
	params = '';
	if (testo) {
		var re = /\{\{[Aa]utore([\s\S]*)\n\}\}/m;
		var m = testo.match(re);
		if (!m) return; 
		else params = togliRobaccia(m[1]) + '\n\|END='; 
	}
 
	for (i = 0; i < campiAutore.length; i++) {
		value = findparamTemplate(params, campiAutore[i]).trim();
		if (value !== '') {
			textdata += '<section begin="' + campiAutore[i].replace(/\\/g, "") + '"/>' + value + '<section end="' + campiAutore[i].replace(/\\/g, "") + '"/>\n';
		}
	}
 
	textdata += '</div></onlyinclude><!-- a qui -->';

    testo = textdata + testo;
	document.getElementById("wpTextbox1").value = testo;
}