Indice del libro


Variabili e funzioni predefinite modifica

MediaWiki definisce un certo numero di variabili che veicolano informazioni specifiche del wiki o della pagina che si sta visitando. Queste variabili sono documentate alla pagina mw:Manual:Interface/JavaScript#mw.config.

JQuery modifica

MediaWiki include la libreria JQuery fin dalla versione 1.16.

Interfaccia grafica modifica

  Per approfondire, vedi MediaWiki/Le skin e MediaWiki/Hacking interfaccia.

La pagina di riferimento è mw:Manual:Interface/JavaScript.

Come fare per... modifica

Albero delle categorie modifica

Ci sono diversi modi per leggere l'albero delle categorie da Javascript:

  • usare le API di MediaWiki;
  • sfruttare l'estensione CategoryTree;
  • ...

Per farlo usando le API di MediaWiki, vedi mw:API:Categorymembers#Retrieving_via_AJAX.

Seguono le istruzioni per farlo usando l'estensione mw:Extension:CategoryTree (che deve essere installata sul wiki). CategoryTree funziona in questo modo:

  • definisce una funzione PHP CategoryTree::ajax che prende in ingresso il nome di una cat. e l'elenco delle opzioni, e restituisce in output la rappresentazione HTML della lista delle cat.;
  • all'interno di ciascuna pagina wiki, genera da PHP l'albero in HTML, corredato di una funzione AJAX categoryTreeLoadChildren che richiama la funzione PHP di cui sopra (tramite la funzione wrapper efCategoryTreeAjaxWrapper), parserizza e manipola graficamente il risultato.

Quindi è sufficiente scrivere una propria funzione AJAX che invochi il codice PHP e manipoli opportunamente il risultato, "fingendo" di essere la funzione categoryTreeLoadChildren. Per esempio, si può ottenere la lista delle sottocategorie manipolando il risultato con le regex.
Corrispondenze:

  • CategoryTree::ajax è in CategoryTreeFunctions.php
  • efCategoryTreeAjaxWrapper è in CategoryTree.php
  • categoryTreeLoadChildren è in CategoryTree.js

Parsing di una invocazione a template modifica

Per ottenere la lista di corrispondenze parametro-valore da una invocazione a template come questa:

{{NomeTemplate|valore1|par2=valore2}}
  1. creare un template NomeTemplate2 che accetta gli stessi parametri e che li formatta in modo da restituire una stringa in formato JSON
  2. sostituire il nome del template nel wikitesto che gli passa i parametri
  3. chiedere a MediaWiki di espandere il wikitesto tramite API (vedi mw:API:Parsing_wikitext#expandtemplates)
  4. infine, estrarre il risultato (è stato inserito in uno dei campi dell'oggetto restituito dall'API) e passarlo ad eval() per ottenere un oggetto di cui si possano leggere i campi direttamente.

Il punto 1 implica che il secondo template deve essere stato preparato a priori, quindi questa soluzione è applicabile solo ai template per i quali si è previsto di applicarla (lo script non funziona per tutti i template del wiki).

Approfondimenti modifica