Utente:LoStrangolatore/Tools/Apri pagine in sequenza/Codice
///////////////////////////////////// TOOL "APRI PAGINE IN SEQUENZA" ///////////////////////////////////// // Racchiude tutte le funzioni del tool, così non possono esserci conflitti di nomi Tool_ApriPagineInSequenza = {};
// Apre le pagine specificate del testo specificato. In particolare, ognuna delle pagine // è Pagina:titolo.djvu/i dove i è compreso fra primaPagina e ultimaPagina incluse. Tool_ApriPagineInSequenza.apriPagine = function(testo, primaPagina, ultimaPagina) {
for(var i = primaPagina; i <= ultimaPagina; i++) { var pagina = "Pagina:" + testo + ".djvu/" + i; Tool_ApriPagineInSequenza.apriSchedaDelBrowser("http://it.wikisource.org/w/index.php?title=" + pagina + "&action=edit"); }
};
// Apre lo URL specificato in una nuova scheda del browser. Tool_ApriPagineInSequenza.apriSchedaDelBrowser = function(url) {
window.open(url); // corretto?
}
// Cerca di estrarre il nome della pagina corrente: priva del namespace, dell'estensione, di sottopagine ecc. // Es. Da "Pagina:Piccolo Mondo Moderno (Fogazzaro).djvu/81" cerca di estrarre "Piccolo Mondo Moderno (Fogazzaro)" Tool_ApriPagineInSequenza.estraiNomePagina = function() {
var nsPrincipale = 0, nsPagina = 108, nsIndice = 110; var nomePagina = wgPageName; // copio perché dopo uso funzioni con side-effect switch(wgNamespaceNumber) { case nsPrincipale: return nomePagina; case nsPrincipale+1: return nomePagina.split(":")[1]; case nsPagina: case nsPagina+1: return nomePagina.replace(/.*\s*[Pp]agina:/, "").replace(/.djvu\/\d+/, ""); case nsIndice: case nsIndice+1: return nomePagina.replace(/.*\s*[Ii]ndice:/, "").replace(/.djvu/, ""); default: return nomePagina.split(":")[1]; }
}
// Cerca di dedurre il nome del testo cui l'utente ha intenzione di accedere.
// Nel caso non riesca a dedurre un buon nome, restituisce "".
Tool_ApriPagineInSequenza.deduciPossibileNomeTesto = function() {
return Tool_ApriPagineInSequenza.estraiNomePagina().replace(/_/g, " ");
}
// Esegue il tool. Tool_ApriPagineInSequenza.esegui = function() {
// Messaggi utente. var messaggio1 = "Inserisci il nome del testo.\n\n" + "ESEMPIO:\nSe vuoi accedere alle pagine di:\n" + " Testo:Piccolo Mondo Moderno (Fogazzaro).djvu\n" + "inserisci:\n" + "Piccolo Mondo Moderno (Fogazzaro)"; var messaggio2 = "Inserisci il numero della prima e dell'ultima pagina, separate da uno spazio.\n\n" + "ESEMPIO:\nPer aprire le seguenti pagine:\n"+ " Pagina:Piccolo Mondo Moderno (Fogazzaro).djvu/20\n" + " Pagina:Piccolo Mondo Moderno (Fogazzaro).djvu/21\n" + " Pagina:Piccolo Mondo Moderno (Fogazzaro).djvu/22\n" + "qui sotto dovrai scrivere:\n20 22"; // Ottengo input. Termino il tool se l'utente preme "Annulla" o se inserisce un input errato. var testo = prompt(messaggio1, Tool_ApriPagineInSequenza.deduciPossibileNomeTesto()); if (testo == null) return; // tasto "Annulla" var pagine = prompt(messaggio2, ""); if (pagine == null) return; // tasto "Annulla" if (!pagine.match(/\d+\s\d+/)) { alert("Impossibile proseguire: devono essere inseriti due numeri separati da uno spazio."); return; } pagine = pagine.split(" "); var primaPagina = pagine[0], ultimaPagina = pagine[1];
// Eseguo, usando l'input raccolto. Tool_ApriPagineInSequenza.apriPagine(testo, primaPagina, ultimaPagina);
}
///////////////////////////////////// FINE TOOL "APRI PAGINE IN SEQUENZA" /////////////////////////////////////