Wikisource:La fabbrica dei giocattoli/autoSommario()

Ideatore e scopo modifica

Il giocattolo è stato immaginato da Utente:Alex brollo per aiutare l'utente a creare il campo Sommario di pagine Indice che sono già transcluse in ns0, ed hanno dunque già il sommario creato con i template {{testo}}.
Il Sommario verrà costruito nella pagina Indice con il nuovo codice per il template {{Indice sommario}}. L'utilizzo dello strumento autoSommario è dunque utile per creare Indici di opere precedentemente pubblicate su Wikisource (magari utilizzato assieme a Match & Split).

Meccanismo modifica

Lo script, che va attivato dalla pagina Indice, in edit, legge:

  1. il nome della pagina principale collegata all'Indice:
  2. la pagina principale, estraendo i template {{Testo}} ed estraendone i dati;
  3. ognuna delle sottopagine, estraendone il valore del parametro from= del tag pages;
  4. i dati contenuti nella tabella pagine della pagina Indice (creati da pagelist)

Installazione modifica

Il codice da aggiungere nel proprio vector.js è il seguente:

newButton("autoSommario","autoSommario");

Istruzione ed avvertenze modifica

Attenzione!
Come si intuisce dal meccanismo, lo script deve leggere via AJAX parecchie pagine, tante quante sono le sottopagine; non meravigliatevi se per parecchi secondi non dà segno di vita. NON schiacciate più volte per sburtare.

Il tool funziona solo se:

  1. esiste la pagina principale corrispondende alla pagina Indice
  2. nella pagina principale esiste un indice costruito con i template Testo;
  3. tutte le pagine, collegate dal template Testo, contengono un tag pages con un campo from=.

Se queste tre condizioni sono rispettate, allora la pressione del bottone autoSommario:

  1. compila un campo Sommario completo sostituendo completamente il precedente contenuto del campo Sommario


  1. nel caso in cui il tl Testo abbia, come secondo parametro, il codice riga=tradizionale invece che il titolo della sottopagina, allora questo parametro viene erroneamente inserito nel parametro titolo= e va corretto a mano.

Bug e casi speciali modifica

Il template testo ha solo due parametri e il secondo parametro è tipo=tradizionale
Soluzione: modificare i template {{testo}} aggiungendo il secondo parametro (titolo capitolo) facendo diventare tipo=tradizionale terzo parametro, che viene ignorato


Le pagine/sottopagine non contengono il tag pages

Alcune pagine in ns0 sono costruite con il template Pagina e non con il tag pages. Questo avviene quando il tag pages creava problemi specifici (frequenti nelle opere bilingui).

Soluzione: i nuovi parametri aggiuntivi di pages [1], e in particolare onlysection e step, consentono di evitare l'uso di {{Pagina}} in una varietà di situazioni. Per autoSommario() è sufficiente che esista il parametro from= dentro un tag pages; gli altri parametri sono ignorati.


Le pagine principali non contengono alcun template {{testo}}

Avviene:

  1. nelle pagine monoblocco di testi brevi,
  2. oppure in casi in cui le sottopagine sono linkate con link normali per scelta del contributore.
Soluzione:
  1. nel caso 1, si può rinunciare e scrivere Indice sommario a mano, oppure si può aggiungere (per opportuna generalizzazione) un {{testo}}che punta alla stessa pagina, mascherato dentro un template {{Nascondi}}.
  2. nel caso 2, è opportuno trasformare i link normali in chiamate di {{testo}};


Nel template {{testo}} il parametro 2 contiene template di formattazione del testo
Soluzione temporanea: eliminare i template di formattazione dal secondo parametro oppure correggere a mano il {{Indice sommario}} erroneo


Il campo pagine di Indice
contiene codice aggiuntivo (in particolare link a immagini, generati da un template)
Soluzione: spostare il codice fuori dal campo pagine rimettendocelo eventualmente dopo il lancio di autoSommario


La sottopagina in ns0 non contiene alcun template pages (avviene nelle sottopagine "puri indici")
Soluzione: la riga prodotto si riconosce a occhio perchè al momento ha NaN rosso come numero pagina. Correggere a mano assegnando gli stessi valori from, delta della riga immediatamente successiva.