MediaWiki:Common.js: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
aggiungo link "Scarica come ePub" |
Nessun oggetto della modifica |
||
Riga 119: | Riga 119: | ||
*/ |
*/ |
||
datiPagina={}; |
datiPagina={}; |
||
r6=/(.*)\<\!--(\d+)\s(\d+)\s(\d+)\s(\d+)\s(\d+)\s(\d+)--\>/; // regex per elemento datiPagina a 6 cifre |
|||
r4=/(.*)\<\!--(\d+)\s(\d+)\s(\d+)\s(\d+)--\>/; // regex per elemento datiPagina a 6 cifre |
|||
/* |
|||
Funzione base caricamento datiPagina con nuovo meccanismo sperimentale |
|||
Scatta solo se esiste un commento a 6 elementi numerici nel codice |
|||
*/ |
|||
function newDpl(testo) { |
|||
if (r6.test(testo)) { |
|||
testo=testo.split("\n"); |
|||
datiPagina={}; |
|||
datiPagina["righe"]=[]; |
|||
for (var i=0;i<testo.length;i+=1) { |
|||
if (r6.test(testo[i])) {var res=r6.exec(testo[i]); |
|||
datiPagina["xypagina"]=[res[6],res[7]]; |
|||
var riga=[res[2],res[3],res[4],res[5],res[1]]; |
|||
datiPagina["righe"].push(riga); |
|||
testo[i]=res[1]; |
|||
} |
|||
if (r4.test(testo[i])) { |
|||
var res=r4.exec(testo[i]); |
|||
var riga=[res[2],res[3],res[4],res[5],res[1]]; |
|||
datiPagina["righe"].push(riga); |
|||
testo[i]=res[1]; |
|||
} |
|||
} |
|||
testo=testo.join("\n"); |
|||
} |
|||
return testo; |
|||
} |
|||
//funzione "dummy", destinata a essere sostituita da funzioni omonime più complesse testate in [[Utente:Alex_brollo/vector.js]] |
//funzione "dummy", destinata a essere sostituita da funzioni omonime più complesse testate in [[Utente:Alex_brollo/vector.js]] |
||
Riga 125: | Riga 155: | ||
function spanSALdelete() { |
function spanSALdelete() { |
||
var editbox = document.getElementsByName('wpTextbox1')[0]; |
var editbox = document.getElementsByName('wpTextbox1')[0]; |
||
testo=editbox.value; |
|||
editbox.value=newDpl(testo); |
|||
if (editbox && wgCanonicalNamespace == "Pagina") { |
if (editbox && wgCanonicalNamespace == "Pagina") { |
||
//carica eventuale valore areaDatiPagina in datiPagina ed elimina testo da editbox.value |
//carica eventuale valore areaDatiPagina in datiPagina ed elimina testo da editbox.value |
||
Riga 147: | Riga 179: | ||
} |
} |
||
} |
} |
||
$(document).ready(spanSALdelete); |
$(document).ready(spanSALdelete); |
||
Versione delle 20:29, 14 gen 2012
/* <pre> */
/* Il codice JavaScript inserito qui viene caricato da ciascuna pagina, per tutti gli utenti. */
/* traduzione dei messaggi javascript */
self.ws_messages = {
'iwtrans':'Il suo testo proviene da',
'iwtrans2':'Il suo testo proviene da un altro sottodominio di Wikisource.',
'compare_with': 'Confronto con:',
'compare_texts': 'Confronta testi'
}
var proofreadpage_show_headers=true;
/* rimuove gli spazi alle estremità della stringa */
String.prototype.trim = function() {
return this.replace(/^\s+|\s+$/g,"");
}
/* aggiunge un metodo conta all'oggetto String.
Restistuisce il numero di sottostringhe stringa contenute nella stringa principale. Il confronto è sensibile
alle maiuscole/minuscole. */
String.prototype.count = function(stringa) {
var n=0;
var testo=this
while (testo.indexOf(stringa)>-1) {
n=n+1;
testo=testo.replace(stringa,"");
}
return n;
}
/* aggiunge il metodo isOdd a Number */
Number.prototype.isOdd = function() {
if (this % 1 !=0 || this < 0) {return undefined;}
if (this % 2 == 0) {return true;} else {return false;}
}
/* conta il numero di occorrenze di stringa dentro testo*/
function count(testo,stringa) {
n=0;
while (testo.indexOf(stringa)>-1) {
n=n+1;
testo=testo.replace(stringa,"");
}
return n;
}
/* estensione jQuery che aggiunge la funzione getUrlVar(), per recuperare il valore di un parametro dalla request
*
* da http://jquery-howto.blogspot.com/2009/09/get-url-parameters-values-with-jquery.html
*/
$.extend({
getUrlVars: function(){
var vars = [], hash;
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for(var i = 0; i < hashes.length; i++)
{
hash = hashes[i].split('=');
vars.push(hash[0]);
vars[hash[0]] = hash[1];
}
return vars;
},
getUrlVar: function(name){
return $.getUrlVars()[name];
}
});
//modifica un dato link settando il parametro par in fondo all'URL
function setURLVar(link, par, val) {
if (link) {
href = link.attr("href");
//rimuovi il parametro se c'era gia'
if (href.indexOf(par) != -1) {
regex = new RegExp(par+"\=([a-z0-9]*)");
href = href.replace(regex, "");
}
if (href.indexOf("?") == -1) {
href += "?" + par + "=" + val;
}
else {
href += "&" + par + "=" + val;
}
link.attr("href", href);
}
}
/*
* IMPORTANTE: Base.js deve essere importato prima di poter usare qualunque altro script da wikisource.org
*/
mw.loader.load('//wikisource.org/w/index.php?title=MediaWiki:Base.js&action=raw&ctype=text/javascript');
//disable ThomasV's "simplified lst"
self.proofreadpage_raw_lst=true;
// Codice utilizzato per le chiamate OCR
mw.loader.load('//wikisource.org/w/index.php?title=MediaWiki:OCR.js&action=raw&ctype=text/javascript');
// Iw_pages: Trasclusione di pagine tra sottodomini tramite le API
mw.loader.load('//wikisource.org/w/index.php?title=MediaWiki:InterWikiTransclusion.js&action=raw&ctype=text/javascript');
// Script per il confronto fra testi
mw.loader.load('//wikisource.org/w/index.php?title=MediaWiki:Compare.js&action=raw&ctype=text/javascript');
/* script per la creazione dell'area dati */
importScript("MediaWiki:Areadati.js");
/* Funzioni di semantizzazione SAL pagina
1. spanSALdelete(): rimuove lo span SAL dal testo Pagina: in edit
*/
datiPagina={};
r6=/(.*)\<\!--(\d+)\s(\d+)\s(\d+)\s(\d+)\s(\d+)\s(\d+)--\>/; // regex per elemento datiPagina a 6 cifre
r4=/(.*)\<\!--(\d+)\s(\d+)\s(\d+)\s(\d+)--\>/; // regex per elemento datiPagina a 6 cifre
/*
Funzione base caricamento datiPagina con nuovo meccanismo sperimentale
Scatta solo se esiste un commento a 6 elementi numerici nel codice
*/
function newDpl(testo) {
if (r6.test(testo)) {
testo=testo.split("\n");
datiPagina={};
datiPagina["righe"]=[];
for (var i=0;i<testo.length;i+=1) {
if (r6.test(testo[i])) {var res=r6.exec(testo[i]);
datiPagina["xypagina"]=[res[6],res[7]];
var riga=[res[2],res[3],res[4],res[5],res[1]];
datiPagina["righe"].push(riga);
testo[i]=res[1];
}
if (r4.test(testo[i])) {
var res=r4.exec(testo[i]);
var riga=[res[2],res[3],res[4],res[5],res[1]];
datiPagina["righe"].push(riga);
testo[i]=res[1];
}
}
testo=testo.join("\n");
}
return testo;
}
//funzione "dummy", destinata a essere sostituita da funzioni omonime più complesse testate in [[Utente:Alex_brollo/vector.js]]
function elaboradatiPagina(i) {riga=datiPagina["righe"][i][4]+"\n"; return riga;}
function spanSALdelete() {
var editbox = document.getElementsByName('wpTextbox1')[0];
testo=editbox.value;
editbox.value=newDpl(testo);
if (editbox && wgCanonicalNamespace == "Pagina") {
//carica eventuale valore areaDatiPagina in datiPagina ed elimina testo da editbox.value
areaDatiPagina=find_stringa(editbox.value, "<!-- Area dati\n","\n-->",1);
if (areaDatiPagina && areaDatiPagina!="") {
editbox.value=editbox.value.replace(areaDatiPagina, "");
datiPagina=JSON.parse(areaDatiPagina.replace("<!-- Area dati\n","").replace("\n-->",""));
// se in editbox non resta nulla gattacicova....
if (editbox.value.trim()=="") {
for (i=0;i<datiPagina["righe"].length;i+=1) {
editbox.value+=elaboradatiPagina(i);
}
}
}
//elimina eventuale riga vuota dopo l'ultimo span SAL (inserita al salvataggio dal "bug della riga vuota")
editbox.value = editbox.value.replace(/<\/span>[\r\n]+$/, '</span>');
while (find_stringa(editbox.value, '<span class="SAL">',"</span>",1)!="") {
spanData=find_stringa(editbox.value, '<span class="SAL">',"</span>",1);
editbox.value = editbox.value.replace(spanData,"");
}
}
}
$(document).ready(spanSALdelete);
/*
2: inserisce i dati SAL nelle pagine Pagina all'atto del salvataggio della pagina
*/
function aggiungiSal() {
var editbox = document.getElementsByName('wpTextbox1')[0];
var pagina = wgTitle.substring(wgTitle.indexOf("/") + 1);
var sal=proofreadpage_quality;
var user=proofreadpage_username;
//predispongo il nuovo span
codice='<span class="SAL">'+pagina+','+sal+','+user+'</span>';
// elimino i vecchi span
s0=produciLista(editbox.value,'<span class="SAL"','</span>',1);
for(i=0; i<s0.length;i+=1) {
editbox.value=editbox.value.replace(s0[i],'');
}
//listo i tag section
//s1=produciLista(editbox.value,"<section begin","/>",1);
s2=produciLista(editbox.value,"<section end","/>",1);
s1=[];
// caricati tutti i section tag in s2, li ricarico in s1 eliminando i doppioni e i casi
// in cui il tag contiene il carattere @
for(i=0; i<s2.length;i+=1) {
if ($.inArray(s2[i],s1)== -1 && s2[i].indexOf("@") == -1)
{
s1.push(s2[i]);
}
}
// aggiungo lo span a ogni section oppure in testa alla pagina
if (s1.length>0) {
for(i=0; i<s1.length;i+=1) {
//editbox.value=editbox.value.replace(s1[i],s1[i]+codice);
editbox.value=editbox.value.replace(s1[i],codice+s1[i]);
}
}
else {
//{editbox.value=codice+editbox.value;}
finale=editbox.value.substring(editbox.value.length-8).toLowerCase();
if (finale=="{{nop}}\n")
{editbox.value=editbox.value.substring(0,editbox.value.length-1);}
finale=editbox.value.substring(editbox.value.length-8).toLowerCase();
if (finale!="\n{{nop}}")
{editbox.value=editbox.value+codice;}
else
{editbox.value=editbox.value.substring(0,editbox.value.length-8)+codice+"\n{{nop}}";}
}
//se ci sono più sections con lo stesso nome, lo span viene inserito più volte: quindi eliminiamo quelli di troppo
var re = new RegExp(codice+codice, "g");
editbox.value=editbox.value.replace(re, codice);
editbox.value=editbox.value.replace(re, codice);
//aggiungi l'area dati, ma solo se non vuota
if (JSON.stringify(datiPagina)!="{}") editbox.value+="<!-- Area dati\n"+JSON.stringify(datiPagina)+"\n-->";
//ci metto una pezza: se lo span interferisce con l'apertura di una tabella, metti un a capo tra i due
//editbox.value=editbox.value.replace(/<\/span>\{\|/g, "</span>\n{|");
}
/* Assegna ai link pagina in ns0 l'immagine SAL estraendola dal codice pagina transcluso
Funzioni chiamate:
1. SALarray(), che restituisce l'array dei dati estratti dal codice html delle pagine trancluse
2. immagineSAL(), che modifica il codice html facendo comparire le icone nei link usando i dati estratti da SALarray. La
funzione richiede che il template crei un codice File:00%.png; lo 00% viene sostituito con il valore appropriato.
*/
jQuery(document).ready(function(){
listaSal=SALarray();
for (i=0;i<listaSal.length;i+=1){
immagineSAL(listaSal[i]);}
}
);
function SALarray(){
sv=[];
sv['0']='00%';
sv['1']='25%';
sv['2']='50%';
sv['3']='75%';
sv['4']='100%';
y=[];
x=jQuery("span.SAL").map(function() {
return jQuery(this).html();
}).get();
for (i=0;i<x.length;i+=1) {x[i]=x[i].split(",");x[i][1]=sv[x[i][1]];}
return x;
}
/*Questo codice ricerca la stringa html relativa all'immagine SAL 00% della pagina e modifica il codice per puntare a un differente SAL
*/
function immagineSAL(listaDati) {
if (listaDati.length<2) {return;}
else {
a=jQuery('span a[title$="/'+listaDati[0]+'"]').siblings('a.image').html();
if (a) {
//prima di fare la sostituzione cerco tutti i 100% e ci metto un segnaposto, per tenerli fuori dalla successiva replace
a=a.replace(/100\%/g, "___cento___");
a=a.replace(/00\%/g, listaDati[1]);
a=a.replace(/___cento___/g, "100%");
if (listaDati.length>2) {
a=a.replace('<img ','<img title="Ultima modifica di '+listaDati[2]+'" ');
}
jQuery('span a[title$="/'+listaDati[0]+'"]').siblings('a.image').html(a);
}
}
}
/*
interwikiExtra: carica i collegamenti alle versioni straniere ed alternative
*/
function interwikiExtra()
{
// ripeti per tutti gli elementi <span>
for(var i=0; a = document.getElementsByTagName("span")[i]; i++) {
// se si trova uno span "linkInfo"
if(a.className == "interwiki-info") {
// ripeti per tutti gli elementi <li>
var count=0;
for(var j=0; b = document.getElementsByTagName("li")[j]; j++) {
if(b.className == "interwiki-" + a.id) {
// se c'è già il testo default toglilo
b.innerHTML = b.innerHTML.replace(/\(orig\.\)/g, "") + " " + a.title;
if(a.title == "(orig.)") { b.title = "Testo originale"; }
}
else if(b.className == "interwiki-" + a.id.substr(0,a.id.length-1)) {
count = count+1;
if(a.id.charAt(a.id.length-1) == count) {
b.innerHTML = b.innerHTML.replace(/\(orig\.\)/g, "") + " "+a.title;
}
}
}
}
if(a.className == "AltraVersione") {
p = a.title.indexOf("|");
pvers = document.getElementById("p-version");
if (pvers == null) {
c = document.getElementById("column-one");
if (c) {
c.innerHTML = c.innerHTML
+ "<div class=\"portlet\" id=\"p-version\">"
+ "<h5>Altre versioni</h5>"
+ "<div class=\"pBody\">"
+ "<ul>"
+ "</ul>"
+ "</div>";
pvers = document.getElementById("p-version");
}
//fix per vector
else {
c = document.getElementById("mw-panel");
if (c) {
c.innerHTML = c.innerHTML
+ "<div class=\"portal expanded\" id=\"p-version\">"
+ "<h5>Altre versioni</h5>"
+ "<div class=\"body\" style=\"display:block\">"
+ "<ul>"
+ "</ul>"
+ "</div>";
pvers = document.getElementById("p-version");
}
}
}
e = pvers.getElementsByTagName("ul")[0];
etichetta = a.title.substr(p+1,a.title.length-1);
nuovoLink = $(e).html()
+ "<li><a href=\"/wiki/" + a.title.substr(0,p) + "\" title=\"" + a.title.substr(0,p) + "\" >" + etichetta + "</a>";
//link per il confronto tra due testi di it.source
$(e).html(nuovoLink + '<a href="#" onclick="compare_ajax(\'it\', \'' + a.title.substr(0,p).replace(/\'/g, "\\'") + '\')" title="' + ws_msg('compare_texts') + '"> ⇔</a></li>');
}
}
}
addOnloadHook(interwikiExtra);
/*
Script di Candalua per la duplicazione delle barre di navigazione
se nella pagina è presente sotto l'intestazione la barra di navigazione,
la duplica e mostra il duplicato a fondo pagina
*/
addOnloadHook( function() {
if (wgNamespaceNumber == 0) {
$("table#barra_navigazione").clone().attr('id', 'barra_navigazione_sotto').appendTo($("table#barra_navigazione").parent());
}
});
/*
FasiAvanzamento: mostra l'icona del SAL leggendo la pagina linkata dal template {{Testo}} --- OBSOLETO
DataUltimaRevisione: mostra la data dell'ultima revisione della pagina
IconeSALtesti: mostra le icone per la modifica semplificata del SAL nei testi
*/
//importScript('MediaWiki:FasiAvanzamento.js');
importScript('MediaWiki:DataUltimaRevisione.js');
importScript("MediaWiki:IconeSALtesti.js");
/*
"onglets": carica le icone SAL accanto a ''testo''
*/
function onglets()
{
// primo tab: inserimento di icona
var a = document.getElementById("ca-nstab-main");
if(a){
a = a.firstChild.firstChild;
var s = a.innerHTML;
q = document.getElementById("textquality")
if( q ) {
var image = "";
if( q.className == "00%") {
image = " <img src='//upload.wikimedia.org/wikipedia/commons/thumb/d/d6/00%25.svg/9px-00%25.svg' alt='' width='9' height='9' longdesc='' />"; }
if( q.className == "25%") {
image = " <img src='//upload.wikimedia.org/wikipedia/commons/thumb/3/34/25%25.svg/9px-25%25.svg' alt='' width='9' height='9' longdesc='' />"; }
if( q.className == "50%") {
image = " <img src='//upload.wikimedia.org/wikipedia/commons/thumb/c/c2/50%25.svg/9px-50%25.svg' alt='' width='9' height='9' longdesc='' />"; }
if( q.className == "75%") {
image = " <img src='//upload.wikimedia.org/wikipedia/commons/thumb/4/49/75%25.svg/9px-75%25.svg' alt='' width='9' height='9' longdesc='' />"; }
if( q.className == "100%") {
image = " <img src='//upload.wikimedia.org/wikipedia/commons/thumb/c/ce/100%25.svg/9px-100%25.svg' alt='' width='9' height='9' longdesc='' />"; }
if( q.className == "101%") {
image = " <img src='//upload.wikimedia.org/wikisource/it/7/73/101%25.png' alt='' width='10' height='10' longdesc='' />"; }
if( q.className == "Edizioni Wikisource") {
image = " <img src='//upload.wikimedia.org/wikisource/it/7/73/101%25.png' alt='' width='10' height='10' longdesc='' />"; }
a.innerHTML = s+image;
}
}
}
addOnloadHook(onglets);
/*
onglets2: carica le icone SAL accanto a ''pagina'' nel
*/
function onglets2()
{
// primo tab
var a = document.getElementById("ca-nstab-pagina");
if(a){
a = a.firstChild.firstChild;
var s = a.innerHTML;
q = document.getElementById("pagequality")
if( q ) {
var image = "";
if( q.className == "00%") {
image = " <img src='//upload.wikimedia.org/wikipedia/commons/thumb/d/d6/00%25.svg/9px-00%25.svg' alt='' width='9' height='9' longdesc='' />"; }
if( q.className == "25%") {
image = " <img src='//upload.wikimedia.org/wikipedia/commons/thumb/3/34/25%25.svg/9px-25%25.svg' alt='' width='9' height='9' longdesc='' />"; }
if( q.className == "50%") {
image = " <img src='//upload.wikimedia.org/wikipedia/commons/thumb/c/c2/50%25.svg/9px-50%25.svg' alt='' width='9' height='9' longdesc='' />"; }
if( q.className == "75%") {
image = " <img src='//upload.wikimedia.org/wikipedia/commons/thumb/4/49/75%25.svg/9px-75%25.svg' alt='' width='9' height='9' longdesc='' />"; }
if( q.className == "100%") {
image = " <img src='//upload.wikimedia.org/wikipedia/commons/thumb/c/ce/100%25.svg/9px-100%25.svg' alt='' width='9' height='9' longdesc='' />"; }
if( q.className == "quality0") {
image = " <img src='//upload.wikimedia.org/wikipedia/commons/thumb/d/d6/00%25.svg/9px-00%25.svg' alt='' width='9' height='9' longdesc='' />"; }
if( q.className == "quality1") {
image = " <img src='//upload.wikimedia.org/wikipedia/commons/thumb/3/34/25%25.svg/9px-25%25.svg' alt='' width='9' height='9' longdesc='' />"; }
if( q.className == "quality2") {
image = " <img src='//upload.wikimedia.org/wikipedia/commons/thumb/c/c2/50%25.svg/9px-50%25.svg' alt='' width='9' height='9' longdesc='' />"; }
if( q.className == "quality3") {
image = " <img src='//upload.wikimedia.org/wikipedia/commons/thumb/4/49/75%25.svg/9px-75%25.svg' alt='' width='9' height='9' longdesc='' />"; }
if( q.className == "quality4") {
image = " <img src='//upload.wikimedia.org/wikipedia/commons/thumb/c/ce/100%25.svg/9px-100%25.svg' alt='' width='9' height='9' longdesc='' />"; }
if( q.className == "Edizioni Wikisource") {
image = " <img src='//upload.wikimedia.org/wikisource/it/7/73/101%25.svg' alt='' width='10' height='10' longdesc='' />"; }
a.innerHTML = s+image;
}
}
}
addOnloadHook(onglets2);
/*
onglets3: carica le icone SAL accanto a ''indice''
*/
function onglets3()
{
var a = document.getElementById("ca-nstab-indice");
if(a) {
a = a.firstChild.firstChild;
var s = a.innerHTML;
q = document.getElementById("pagequality");
if( q ) {
var image = "";
if( q.className == "25%") {
image = " <img src='//upload.wikimedia.org/wikipedia/commons/thumb/3/34/25%25.svg/9px-25%25.svg' alt='' width='9' height='9' longdesc='' />"; }
if( q.className == "50%") {
image = " <img src='//upload.wikimedia.org/wikipedia/commons/thumb/c/c2/50%25.svg/9px-50%25.svg' alt='' width='9' height='9' longdesc='' />"; }
if( q.className == "75%") {
image = " <img src='//upload.wikimedia.org/wikipedia/commons/thumb/4/49/75%25.svg/9px-75%25.svg' alt='' width='9' height='9' longdesc='' />"; }
if( q.className == "100%") {
image = " <img src='//upload.wikimedia.org/wikipedia/commons/thumb/c/ce/100%25.svg/9px-100%25.svg' alt='' width='9' height='9' longdesc='' />"; }
a.innerHTML = s+image;
}
//se i seguenti campi di Indice sono vuoti, carica in automatico dei valori predefiniti
var campoQualita = document.getElementsByName("Qualità")[0];
if (campoQualita) {
if (campoQualita.value == "") campoQualita.value = "25%";
}
var campoPagine = document.getElementsByName("Pagine")[0];
if (campoPagine) {
if (campoPagine.value == "") campoPagine.value = "{{Indice pagine|1}}\n<pagelist />";
}
var campoImmagine = document.getElementsByName("Immagine")[0];
if (campoImmagine && wgTitle.indexOf(".djvu")!=-1) {
if (campoImmagine.value == "") campoImmagine.value = wgTitle+"|page=1";
}
}
}
addOnloadHook(onglets3);
/*
al passaggio del mouse su un rimando di nota genera un tooltip con il testo della nota
*/
addOnloadHook ( function ()
{
sups = document.getElementsByTagName("sup");
for (i=0; i<sups.length; i++)
{
note_id = sups[i].childNodes[0].href;
if (note_id && (note_id.indexOf("#") != -1))
{
note_id = document.getElementById(note_id.substr(note_id.indexOf("#")+1));
if (note_id) {
text = note_id.innerHTML;
text = text.replace(/<br \/>/gi, " ")
.replace(/<a href="#cite_ref-[0-9]*">↑<\/a>/gi, "")
.replace(/<span class="numeropagina">(.*?)\]<\/span>/gi, "")
.replace(/<span class="SAL">(.*?)<\/span>/gi, "")
.replace(/<\/?[^>]+>/gi, '');
sups[i].title = text;
}
}
}
})
/*
il link per caricare file nel menu di sinistra lo facciamo puntare direttamente a Commons
*/
addOnloadHook( function() {
$("#t-upload a").attr("href", "//commons.wikimedia.org/wiki/Special:Upload?uselang=it");
$("#t-upload a").attr("title", "Carica su Commons [alt-u]");
$("#t-upload a").text("Carica su Commons");
});
/*
NavigationBar: gestisce i menu a scomparsa
*/
var NavigationBarHide = '▲ Nascondi';
var NavigationBarShow = '▼ Espandi';
// NavigationBarShowDefault = 0; // tutte le barre verrano nascoste
// NavigationBarShowDefault = 1; // su pagine con più di una barra tutte le barre verranno nascoste
var NavigationBarShowDefault = 0;
// mostra e nasconde contenuto e immagine (se presente) delle barre di navigazione
// Parametri:
// indexNavigationBar: l'indice della barra di navigazione da contrarre
function toggleNavigationBar(indexNavigationBar)
{
var NavToggle = document.getElementById("NavToggle" + indexNavigationBar);
var NavFrame = document.getElementById("NavFrame" + indexNavigationBar);
if (!NavFrame || !NavToggle) {
return false;
}
// se mostrato ora
if (NavToggle.firstChild.data == NavigationBarHide) {
for (
var NavChild = NavFrame.firstChild;
NavChild != null;
NavChild = NavChild.nextSibling
) {
if (NavChild.className == 'NavPic') {
NavChild.style.display = 'none';
}
if (NavChild.className == 'NavContent') {
NavChild.style.display = 'none';
}
if (NavChild.className == 'NavToggle') {
NavChild.firstChild.data = NavigationBarShow;
}
}
// se nascosto ora
} else if (NavToggle.firstChild.data == NavigationBarShow) {
for (
var NavChild = NavFrame.firstChild;
NavChild != null;
NavChild = NavChild.nextSibling
) {
if (NavChild.className == 'NavPic') {
NavChild.style.display = 'block';
}
if (NavChild.className == 'NavContent') {
NavChild.style.display = 'block';
}
if (NavChild.className == 'NavToggle') {
NavChild.firstChild.data = NavigationBarHide;
}
}
}
}
// aggiunge i pulsanti "mostra/nascondi" alle barre di navigazione
function createNavigationBarToggleButton()
{
var indexNavigationBar = 0;
// ripeti per tutti gli elementi <div>
for(
var i=0;
NavFrame = document.getElementsByTagName("div")[i];
i++
) {
// se si trova una barra di navigazione
if (NavFrame.className == "NavFrame") {
indexNavigationBar++;
var NavToggle = document.createElement("a");
NavToggle.className = 'NavToggle';
NavToggle.setAttribute('id', 'NavToggle' + indexNavigationBar);
NavToggle.setAttribute('href', 'javascript:toggleNavigationBar(' + indexNavigationBar + ');');
var NavToggleText = document.createTextNode(NavigationBarHide);
NavToggle.appendChild(NavToggleText);
// aggiunge un pulsante "NavToggle" come primo elemento del div
// in < div class="NavFrame" >
NavFrame.insertBefore(
NavToggle,
NavFrame.firstChild
);
NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar);
}
}
// se si trovano più barre di navigazione rispetto a Default: nascondi tutte
if (NavigationBarShowDefault < indexNavigationBar) {
for(
var i=1;
i<=indexNavigationBar;
i++
) {
toggleNavigationBar(i);
}
}
}
$(document).ready(createNavigationBarToggleButton);
/*
addCharSubsetMenu: genera i menu a tendine nella sezione di modifica delle pagine.
L'ordine della lista deve corrispondere a quello di MediaWiki:Edittools !
*/
function addCharSubsetMenu() {
var specialchars = document.getElementById('specialchars');
if (specialchars) {
var menu = "<select style=\"display:inline\" onChange=\"chooseCharSubset(selectedIndex)\">";
menu += "<option>Simboli</option>";
menu += "<option>Latino esteso</option>";
menu += "<option>Greco antico</option>";
menu += "<option>Greco moderno</option>";
menu += "<option>Cirillico</option>";
menu += "<option>Arabo</option>";
menu += "<option>Ebraico e yiddish</option>";
menu += "<option>Armeno</option>";
menu += "<option>Geroglifico</option>";
menu += "<option>Vietnamita</option>";
menu += "<option>IPA</option>";
menu += "<option>Matematica</option>";
menu += "</select>";
specialchars.innerHTML = menu + specialchars.innerHTML;
/* default subset - try to use a cookie some day */
chooseCharSubset(0);
}
}
/* select subsection of special characters */
function chooseCharSubset(s) {
var l = document.getElementById('specialchars').getElementsByTagName('p');
for (var i = 0; i < l.length ; i++) {
l[i].style.display = i == s ? 'inline' : 'none';
l[i].style.visibility = i == s ? 'visible' : 'hidden';
}
}
addOnloadHook(addCharSubsetMenu);
/*
Funzioni varie di Alex brollo, con la complicità di FiloSottile e Candalua, per gestire la semantizzazione dei
contenuti di alcuni template in ns0 e in nsAutore e per eseguire modifiche automatiche in questi namespace e
anche nei namespace Pagina e Indice
*/
// elabora al volo il testo un attimo dopo il caricamento
function elabNs0() {
var editbox = document.getElementsByName('wpTextbox1')[0];
//nasconde l'area dati (il ciclo serve a trovare eventuali aree dati duplicate)
areaDati = find_stringa(editbox.value, "<!-- Area dati:", "a qui -->", true, "");
while (areaDati != "") {
editbox.value = editbox.value.replace(areaDati,"");
areaDati = find_stringa(editbox.value, "<!-- Area dati:", "a qui -->", true, "");
}
//nasconde il Conteggio pagine
editbox.value = editbox.value.replace("{{Conteggio pagine|[[Speciale:Statistiche]]}}", "");
}
function verificaPagina() {
var editbox = document.getElementsByName('wpTextbox1')[0];
editbox.value = editbox.value.replace(/—/g,"— ")
.replace(/—\ \ /g,"— ");
aggiungiSal();
if (wgPageName.indexOf("Pagina:La_Sacra_Bibbia_(Diodati_1885).djvu")==0) {bibbia1();}
}
// eliminazione section versetti in apertura pagina
$(document).ready( function () {
if (wgPageName.indexOf("Pagina:La_Sacra_Bibbia_(Diodati_1885).djvu")==0)
{bibbia2();}
})
function verificaIndice() {
var editbox = document.getElementsByName('wpTextbox1')[0];
editbox.value = editbox.value.replace("—","— ").replace("— ","— ");
editbox.value=areaDati+editbox.value;
}
function verificaNs0() {
var editbox = document.getElementsByName('wpTextbox1')[0];
//controlla che la pagina contenga il template:Qualità (se non è una pagina di disambigua o un redirect o la pagina principale o una sezione di pagina)
if (editbox.value.search(/\{\{[Qq]ualità\|/) == -1
&& editbox.value.search(/\{\{[Dd]isambigua/) == -1
&& editbox.value.search(/#RINVIA/) == -1
&& editbox.value.search(/#REDIRECT/) == -1
&& wgTitle.search(/Pagina principale/) == -1
&& $('[name=wpSection]').val() != undefined && $('[name=wpSection]').val() == '' ) {
alert("Si prega di assegnare una qualità alla pagina, selezionando una delle icone qualità in basso");
return false;
}
//compila automaticamente il campo "URL della versione cartacea a fronte" se è vuoto ma c'è un tag pages
if (editbox.value.search(/<pages index=\".*?\"/) != -1 &&
editbox.value.search(/URL della versione cartacea a fronte\s*=\s*\n/) != -1) {
m = editbox.value.match(/<pages index=\"(.*?)\"/);
editbox.value = editbox.value.replace(/URL della versione cartacea a fronte\s*=\s*\n/, "URL della versione cartacea a fronte =Indice:" + m[1] + "\n");
}
editbox.value = editbox.value.replace("—","— ").replace("— ","— ");
//funzione importata da Mediawiki:Areadati.js
creaAreaDatiNs0();
}
function verificaAutore() {
var editbox = document.getElementsByName('wpTextbox1')[0];
editbox.value = editbox.value.replace("—","— ").replace("— ","— ");
//funzione importata da Mediawiki:Areadati.js
creaAreaDatiAutore();
}
// predisposizione variabile areaDati e routine di pre-elaborazione al caricamento della pagina di edit
areaDati="valore iniziale di areadati";
function elabNs0_onEdit(){
// Solo ns0, Autore o Discussioni indice e edit
if ( ( wgNamespaceNumber != 0 && wgNamespaceNumber != 102 && wgNamespaceNumber != 111) || !document.getElementById('wpTextbox1') ) return;
elabNs0();
}
addOnloadHook(elabNs0_onEdit);
function impostaBottoni(fun) {
var saveButton = document.getElementById("wpSave");
var previewButton = document.getElementById("wpPreview");
var diffButton = document.getElementById("wpDiff");
if (saveButton) {
saveButton.onclick = fun;
previewButton.onclick = fun;
diffButton.onclick = fun;
}
}
// predisposizione per collegamento verifica() all'evento onSubmit
$(document).ready( function () {
if (wgCanonicalNamespace == "Pagina") { impostaBottoni(verificaPagina); }
else if (wgCanonicalNamespace == "") { impostaBottoni(verificaNs0); }
else if (wgCanonicalNamespace == "Indice") { impostaBottoni(proofreadpage_fill_index_IT); }
else if (wgCanonicalNamespace == "Discussioni_indice") { impostaBottoni(verificaIndice); }
else if (wgCanonicalNamespace == "Autore") { impostaBottoni(verificaAutore); }
})
function produciLista(testo, s1, s2, delim, x) {
lista = new Array();
while (find_stringa(testo, s1, s2, delim, x) > "") {
elemento = find_stringa(testo, s1, s2, delim, x);
testo = testo.replace(elemento, "");
if (delim) {
lista.push(elemento);
}
else {
lista.push(elemento.slice(s1.length, - s2.length));
}
}
return lista;
}
/*
Ricerca nella stringa testo la sottostringa che inizia con idi e termina con idf. (idi e idf sono stringhe).
Se dc ("delimitatori compresi") è 1, restituisce la sottostringa completa di idi e idf; se dc è 0, restituisce la stringa
senza delimitatori; parametro opzionale con default 0.
Per risolvere correttamente il caso di ricerca di tag annidati, come i template, in cui l'identificatore iniziale ha una
parte non aspecifica, e una parte specifica, può essere passato un quinto parametro, che definisce la parte aspecifica dell'identificatore iniziale.
Esempio: volendo ottenere l'intero contenuto del template {{centrato|{{sc|Testo di prova}}|l=18em}}, il risultato corretto
NON proviene dalla ricerca find_stringa("{{centrato|","}}",1), perchè sarebbe {{centrato|{{sc|Testo di prova}}.
Impostando invece find_stringa("{{centrato|","}}",1,"{{"), visto che "{{" è la parte aspecifica del primo delimitatore,
si ottiene il risultato corretto, a prescindere dal numero dei template annidati.
Se la sottostringa non viene trovata, la funzione restituisce una stringa vuota "".
*/
function find_stringa(testo, idi, idf, dc, x) {
idip = testo.indexOf(idi);
idfp = testo.indexOf(idf, idip + idi.length) + idf.length;
if (idip > -1 && idfp >- 1) {
if (x!="") {
while (count(testo.slice(idip, idfp),x) > count(testo.slice(idip, idfp), idf)) {
idfp=testo.indexOf(idf, idfp) + idf.length;
}
}
if (dc == 0) {
vvalore = testo.slice(idip + idi.length, idfp - idf.length);
}
else {
vvalore = testo.slice(idip, idfp);
}
}
else {
vvalore="";
}
return vvalore;
}
/* Fine funzioni Alex
*/
/* Adattamento da http://wikisource.org/wiki/MediaWiki:OCR.js
* per far comparire il bottone OCR anche sulla nuova barra degli strumenti "avanzata"
*/
function addOCRButton2New(id,comment,source,onclick) {
var new_tb = document.getElementById("wikiEditor-ui-toolbar");
if(new_tb) {
var group = new_tb.childNodes[0].childNodes[1];
var image = document.createElement("img");
image.width = 46;
image.height = 22;
image.border = 0;
image.className = "mw-toolbar-editbutton";
image.style.cursor = "pointer";
image.alt = "OCR";
image.title = comment;
image.src = source;
image.onclick = onclick;
group.appendChild(image);
}
}
function addOCRButtonNew(){
if(!self.proofreadPageIsEdit) return;
if(!self.proofreadPageViewURL) return;
addOCRButton2New("wpOcr","Get the text by OCR","//upload.wikimedia.org/wikipedia/commons/e/e0/Button_ocr.png",add_ocr);
}
if(!self.proofreadpage_disable_ocr) hookEvent("load",addOCRButtonNew);
/* modifica la casella di ricerca in alto a destra
* per cercare di default sia in ns0 che in Autore:
*/
addOnloadHook(function () {
var searchButton = document.getElementById('searchButton');
if (!searchButton) return;
var searchNs0Hidden = document.createElement('input');
searchNs0Hidden.id = 'searchNs0Hidden';
searchNs0Hidden.type = 'hidden';
searchNs0Hidden.name = 'ns0';
searchNs0Hidden.value = '1';
var searchNs102Hidden = document.createElement('input');
searchNs102Hidden.id = 'searchNs102Hidden';
searchNs102Hidden.type = 'hidden';
searchNs102Hidden.name = 'ns102';
searchNs102Hidden.value = '1';
searchButton.parentNode.insertBefore(searchNs0Hidden, searchButton);
searchButton.parentNode.insertBefore(searchNs102Hidden, searchButton);
});
/* OCR automatico alla creazione di una nuova Pagina
Aggiungo valutazione automatica prosa/poesia
*/
function postOCRAutomatico() {
if (wgCanonicalNamespace == "Pagina" && wgAction == "edit" && wgArticleId == 0) {
var editbox = document.getElementsByName('wpTextbox1')[0];
editbox.value = editbox.value.replace(/'/g, '’')
.replace(/’’’/g, '\'\'\'')
.replace(/’’/g, '\'\'')
.replace(/ \n/g, '\n')
.replace(/-\n/g, '')
.replace(/- \n/g, '')
.replace(/- /g, '― ')
.replace(/ì’/g, 'l’')
.replace(/ deir /g, ' dell’')
.replace(/ air /g, ' all’')
.replace(/ neir /g, ' nell’')
.replace(/ perche /g, ' perchè ')
.replace(/ poiche /g, ' poichè ')
.replace(/ piu /g, ' più ')
.replace(/([bcdfghlmnprstvzBCDFGHLMNPRSTV])’ /g, '$1’')
.replace(/eh’/g, 'ch’')
.replace(/\s+$/, '');
//inserisce un a capo all'inizio del footer (per il bug 26028)
footer = $('[name=wpFooterTextbox]')
if ( !footer.val().match(/^\n/) ) {
footer.val( '\n' + footer.val() );
}
}
}
$(document).ready(postOCRAutomatico);
/* Versione leggermente modificata della stessa funzione presente su l'estension ProofreadPage
* questa in più crea un'area dati al salvataggio (delle pagine Indice)
*
* based on the same function from proofread_index.js written by ThomasV
* http://wikisource.org/w/extensions/ProofreadPage/proofread_index.js
*/
function proofreadpage_fill_index_IT() {
var form = document.getElementById( 'editform' );
var result = '{{:MediaWiki:Proofreadpage_index_template';
var index_attributes = self.prp_index_attributes.split( '\n' );
//inizio area dati
var textdata = '<!-- Area dati: non modificare da qui: --><includeonly><div style="display:none">';
//se Titolo e TitoloOriginale sono uguali a NomePagina, mettili vuoti
var nomePagina = $("#editform input[name=NomePagina]").val();
if ($("#editform input[name=Titolo]").val() == nomePagina) { $("#editform input[name=Titolo]").val(""); }
if ($("#editform input[name=TitoloOriginale]").val() == nomePagina) { $("#editform input[name=TitoloOriginale]").val(""); }
for( i = 0; i < index_attributes.length; i++ ) {
m = index_attributes[i].split( '|' );
param_name = m[0];
value = form.elements[param_name].value;
// remove trailing \n
value = value.replace( /\n$/, '' );
// replace pipe symbol everywhere...
value = value.replace( /\|/g, '{{!}}' );
// ...except in links...
do {
prev = value;
value = value.replace( /\[\[(.*?)\{\{!\}\}(.*?)\]\]/g, '[[$1|$2]]' );
} while ( value != prev );
// ..and in templates
do {
prev = value;
value = value.replace( /\{\{(.*?)\{\{!\}\}(.*?)\}\}/g, '{{$1|$2}}' );
} while ( value != prev );
result = result + '\n|' + param_name + '=' + value;
//area dati
if (value.trim() != "") {
textdata = textdata + '<section begin="' + param_name + '"/>' + value.trim().replace(/\{\{!\}\}/g, '|') + '<section end="' + param_name + '"/>\n';
}
}
//fine area dati
textdata = textdata + '</div></includeonly><!-- a qui -->';
result = result + "\n}}";
//area dati
result = textdata + result;
form.elements['wpTextbox1'].value = result;
}
/***************
La funzione codifica() riceve un testo markup wiki e restituisce un testo "puro" e una lista ordinata degli elementi
che vanno protetti da replace() pena l'interruzione di link ecc.
ATTENZIONE: funzione in fase di test
**************/
function codifica(testo) {
var l=[];
var res=ss(testo,l,"<math","</math>","");
res=ss(res[0],res[1],"<!--","-->","<");
res=ss(res[0],res[1],"{","}","{");
res=ss(res[0],res[1],"[","]","[");
res=ss(res[0],res[1],"<",">","<");
res=ss(res[0],res[1],"http://"," ","");
return res;
}
function ss(testo,l,tagi,tagf,x) {
while (find_stringa(testo,tagi,tagf,1)>"") {
var el=find_stringa(testo,tagi,tagf,1,tagi);
testo=testo.replace(el, "###el"+l.length+"###");
l.push(el);}
return [testo,l]; }
/***************
La funzione decodifica() riceve un testo codificato e la lista degli elementi protetti e restituisce un testo con gli elementi protetti risistemati al loro posto; è complementare a codifica()
**************/
function decodifica(testo,l) {
for (i=l.length-1; i>-1; i=i-1) {
testo=testo.replace("###el"+i+"###",l[i]);
}
return testo;
}
/* Sostituisce tutti gli apostrofi dattilografici in tipografici, ma rispetta gli apostrofi di marckup wiki e gli apostrofi
contenuti in: math, {{{}}}, {{}}, [[]], [], http:..... */
function apostrofi(editbox) {
if (editbox==undefined) {var editbox = document.getElementsByName('wpTextbox1')[0];}
var testoCod=codifica(editbox.value);
testoCod[0] = testoCod[0].replace(/'/g, '’').replace(/’’’/g, '\'\'\'').replace(/’’/g, '\'\'');
editbox.value=decodifica(testoCod[0],testoCod[1]);
}
//messaggio custom vicino ai bottoni qualità in ns Pagina
$(document).ready(function() {
var s = $("div.editCheckboxes > span");
if (s.html()) {
s.html(s.html().replace("Status della pagina", '<a href="/wiki/Aiuto:Stato_di_Avanzamento_del_Lavoro" target="_blank">Cosa significano le icone?</a> · <a href="/wiki/Aiuto:Qualità_dei_testi/Percorso_guidato" target="_blank">Percorso guidato</a>'));
}
$("div.editCheckboxes span span.quality0").attr("title", "Pagina senza testo da trascrivere (0%)");
$("div.editCheckboxes span span.quality1").attr("title", "Pagina incompleta (25%)");
$("div.editCheckboxes span span.quality2").attr("title", "Pagina completa, ma da formattare (50%)");
$("div.editCheckboxes span span.quality3").attr("title", "Pagina completa e formattata, da rileggere (75%)");
$("div.editCheckboxes span span.quality4").attr("title", "Pagina riletta (100%)");
//ri-settiamo il checked sul bottone giusto, che con l'html().replace di cui sopra viene perso
if (document.editform && document.editform.quality) {
switch( self.proofreadpage_quality ) {
case 4:
document.editform.quality[4].checked = true;
break;
case 3:
document.editform.quality[3].checked = true;
break;
case 1:
document.editform.quality[2].checked = true;
break;
case 2:
document.editform.quality[1].checked = true;
break;
case 0:
document.editform.quality[0].checked = true;
break;
}
}
});
// FUNZIONI PER INGRANDIRE/RIMPICCIOLIRE IL CARATTERE DEI TESTI
//dimensione di default 100%
var dimensioneCarattere = 100;
function ingrandisciCarattere() {
if (dimensioneCarattere < 200) dimensioneCarattere += 10;
$("#box_esterno").css("font-size", dimensioneCarattere+"%");
$("#compare2 #box_esterno").css("font-size", dimensioneCarattere+"%");
}
function riduciCarattere() {
if (dimensioneCarattere > 50) dimensioneCarattere -= 10;
$("#box_esterno").css("font-size", dimensioneCarattere+"%");
$("#compare2 #box_esterno").css("font-size", dimensioneCarattere+"%");
}
if (wgNamespaceNumber == 0 && $("#box_esterno").length > 0) {
$(document).ready( function() {
var d = '<div class="noprint" style="position:fixed; right:0px; z-index:2"><a href="javascript:ingrandisciCarattere()"><img src="//upload.wikimedia.org/wikipedia/commons/3/30/Farm-Fresh_magnifier_zoom_in.png" title="Ingrandisci carattere" alt="Ingrandisci carattere" /></a> <a href="javascript:riduciCarattere()"><img src="//upload.wikimedia.org/wikipedia/commons/e/ea/Farm-Fresh_magnifier_zoom_out.png" title="Riduci carattere" alt="Riduci carattere" /></a></div>';
$("#jump-to-nav").before(d);
});
}
// FIX PROBLEMA DI VISUALIZZAZIONE NUMERI DI RIGA IN INTERNET EXPLORER 7
// sposta lo span.numeroriga da così: <br/>  <span>...</span>restodeltesto....
// a così: <br/><span>...</span>  testotestotesto....
// altrimenti su IE7 lo span cade sulla riga successiva al testo
if ( $.browser.msie ) {
$(document).ready( function() {
$("span.numeroriga").each( function(index) {
$(this).insertAfter( $(this).prev() );
});
});
}
// Autofocus nel campo "ricerca" della homepage
$(document).ready( function ()
{
if (window.mediaWiki &&
mediaWiki.config.get("wgNamespaceNumber") == 0 &&
mediaWiki.config.get("wgPageName") == "Pagina_principale" &&
mediaWiki.config.get("wgAction") == "view")
document.getElementById("searchInput").focus();
});
/* La funzione restituisce testo, in cui tutte le istanze di a sono sostituite con b, esattamente come il metodo .replace() di python.
Nel caso in cui a==b oppure a=="" restituisce testo immodificato
Nota: testo,a,b sono di tipo stringa */
function replaceAll(testo,a,b) {
if (a==b) return testo;
if (a=="") return testo;
if (testo.count(a)==0) return testo;
if (testo.count(a)==1) {testo=testo.replace(a,b);return testo;}
while (testo.indexOf(a)>-1) {
testo=testo.replace(a,b);}
return testo;
}
//pezza per la toolbar della casella di modifica in nsPagina:
//su schermi stretti o con font ingrandito i comandi vanno a capo e quindi escono dal contenitore
$(document).ready( function () {
$('.wikiEditor-ui-toolbar div').css('height', 'auto');
});
//link "Scarica come ePub" nel menu a sx
if ( $('#box_esterno').length > 0 ) {
$(document).ready( function () {
mw.util.addPortletLink('p-coll-print_export', '//toolserver.org/~tpt/wsexport/book.php?lang=it&format=epub&page=' + mw.config.get('wgPageName'), 'Scarica come ePub', 'n-epubExport', 'Scarica in formato ePub', '', '#t-print');
});
}
/* </pre> */