# MediaWiki/Javascript

MediaWiki
Copertina Tutti i moduli · Sviluppo
IntroduzioneMediaWiki/Introduzione
Markup NamespaceMediaWiki/Namespace TemplateMediaWiki/Template Ricerca SkinMediaWiki/Le skin EdittoolsMediaWiki/Edittools Importazione ed esportazioneMediaWiki/Importazione ed esportazione API
PrerequisitiMediaWiki/Installare i programmi necessari - InstallazioneMediaWiki/Installazione - ConfigurazioneMediaWiki/Configurazione - LocalSettings.phpMediaWiki/LocalSettings.php UploadMediaWiki/Upload
Personalizzare la graficaMediaWiki/Personalizzare la grafica
* Hacking interfacciaMediaWiki/Hacking interfaccia
* La barra lateraleMediaWiki/La barra laterale
* La toolbar di modificaMediaWiki/
* Altre personalizzazioni graficheMediaWiki/Altre personalizzazioni grafiche
Cancellare vandalismi in Ultime modificheMediaWiki/Ultime modifiche Limitare l'accesso al wikiMediaWiki/Restrizioni di accesso AggiornamentoMediaWiki/Aggiornamento Dump JavascriptMediaWiki/Javascript AltroMediaWiki/Come fare per
Le estensioniMediaWiki/Estensioni
* Semantic MediaWikiMediaWiki/Semantic MediaWiki
* Formule matematicheMediaWiki/TeX
* Estensione CollectionMediaWiki/Estensione Collection
* Estensione WarnNoCategoriesMediaWiki/Estensione WarnNoCategories
Contribuire allo sviluppo di MediaWikiMediaWiki/Contribuire Grammatica del markup GlossarioMediaWiki/Glossario
Modifica il sommario

## Variabili e funzioni predefinite

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

MediaWiki include la libreria JQuery fin dalla versione 1.16.

## Interfaccia grafica

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

## Come fare per...
### Albero delle categorie

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

Per ottenere la lista di corrispondenze parametro-valore da una invocazione a template come questa:
* creare un template NomeTemplate2 che accetta gli stessi parametri e che li formatta in modo da restituire una stringa in formato JSON
* sostituire il nome del template nel wikitesto che gli passa i parametri
* chiedere a MediaWiki di espandere il wikitesto tramite API (vedi mw:API:Parsing_wikitext#expandtemplates)
* 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

* mw:Category:Snippets with JavaScript - Esempi di codice Javascript per realizzare diversi compiti.
* mw:JavaScript performance