Aiuto:DynamicPageList

Da Wikisource.
Jump to navigation Jump to search

DynamicPageList (DPL) è un'estensione di MediaWiki che permette di generare liste di link a pagine filtrate per categoria, o per intersezione di categorie. Il codice viene aggiornato dinamicamente, e allineato automaticamente e in tempo reale al contenuto dlle categorie selezionate.

La potenza "rivoluzionaria" di DPL deriva dal fatto che tratta le categorie come insiemi, e permette alcune operazioni fra insiemi, la più importante delle quali è l'intersezione.

Dato un insieme A, contenente n1 elementi, e dato l'insieme B, contenente n2 elementi, l'intersezione fra A e B è costituito dagli n3 elementi che appartengono sia ad A che a B.

In termini wikisourciani:

  1. data la categoria Testi di Giosuè Carducci, e data la categoria Poesie, le poesie di Carducci sono l'intersezione delle due categorie (max 10 risultati)


che è il risultato di

<DynamicPageList>
category             = Poesie
category             = Testi di Giosuè Carducci
count                = 10
order                = ascending
ordermethod          = categorysortkey
addfirstcategorydate = true
</DynamicPageList>
  • data la categoria Sonetti, e data la categoria Testi del XIV secolo, i sonetti del XIV secolo sono l'intersezione delle due categorie (max 10 risultati)


  • date le categoria Sonetti, Testi del XIX secolo, Testi SAL 100% questa è l'intersezione delle tre categorie (max 10 risultati):


Andiamo un po' a fondo nelle possibilità teoriche dell'intersezione dinamica fra categorie. L'intersezione permette di produrre elenchi di qualsiasi combinazione di "assi di categorizzazione": periodo, autore, SAL, tipo dell'opera. In altri termini: se quello che si desidera è lalista delle pagine che soddisfano a tutti i criteri di filtro, tutte le pagine-lista, faticosamente aggiornate via bot, diventano perfettamente inutili; come pure diventano inutili le stesse categorie "miste" in cui un'opera è categorizzata per più assi contemporaneamente. Ad esempio, non servono più numerose categorie in cui si classificano i tipi di opere per SAL; la categoria Categoria:Poesie SAL 25% mescola tipo di opera e SAL ed è perfettamente inutile, perchè la lista origina dall'intersezione di due grandi categorie generiche "pure" (che classificano per un solo criterio): Categoria:Testi SAL 25% e Categoria:Poesie (max 10 risultati):


Questo esempio è carino, perchè mette immediatamente in evidenza l'urgenza di fare un po' di lavoro sporco: le opere di Sole sono SAL 100% e non SAL 25%! La bellezza è che se correggiamo il SAL di un'opera elencata, la lista si aggiornerà immediatamente.

Quando - come nel nostro caso sourciano - si categorizzano le pagine con molti assi, e ciancun asse si suddivide in parecchi elementi, l'illusione di poter creare non dinamicamente tutti i possibili incroci fra tutti gli elementi degli assi si scontra con la progressione geometrica del numero di categorie necessarie. Per categorizzare in modo statico 10 varietà di opere per 10 secoli e per 5 livelli di SAL, servono ben 500 categorie, e se aggiungiamo un altro asse (es. lingua originale) con una decina di elementi, il numero sale a 5000, e se aggiungiamo un altro asse ancora, come il progetto a cui appartengono, diciamo altri 10, raggiungiamo il numero di 50000, e se aggiungiamo pure l'argomento.... fate voi. :-) Decine di migliaia di pagine, ognuna con una probabilità infinitesima di soddisfare esattamente la richiesta dell'utente, e quindi destinate a restare inutilizzate nel 99% dei casi. DynamicPageList permette invece all'utente di ottenere il risultato di una query esattamente centrata sulla sua necessità; e se centra il bersaglio, la probabilità che la pagina-lista sia utile, e consultata, ovviamente è del 100%.

Test incassettamento[modifica]

Il risultato di DynamicPageList può essere incorporato all'interno di un cassetto, che a sua volta può essere inserito in un Blocco:

Intersezione prime 10 poesie SAL 25%


Trasformazione della lista dinamica in lista di tl|Testo[modifica]

  1. inglobare il codice dynamicpagelist in una div class="nome_class_div";
  2. eseguire in console javascript:
function transf(nomeUnico) {
     lista=$("."+nomeUnico+" li a");
     t="";
     lista.each(function() {
        titolo=$(this).attr("title");
        t+="* {{testo|"+titolo+"}}\n";
     });
     console.log(t);
}


Poi eseguire nella stessa console transf("nome_classe_div"),

Riferimenti[modifica]