MediaWiki/Javascript
Variabili e funzioni predefinite
modificaMediaWiki 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
modificaMediaWiki include la libreria JQuery fin dalla versione 1.16.
Interfaccia grafica
modificaPer approfondire, vedi MediaWiki/Le skin e MediaWiki/Hacking interfaccia. |
La pagina di riferimento è mw:Manual:Interface/JavaScript.
Come fare per...
modificaAlbero delle categorie
modificaCi 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 wrapperefCategoryTreeAjaxWrapper
), 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
è inCategoryTreeFunctions.php
efCategoryTreeAjaxWrapper
è inCategoryTree.php
categoryTreeLoadChildren
è inCategoryTree.js
Parsing di una invocazione a template
modificaPer ottenere la lista di corrispondenze parametro-valore da una invocazione a template come questa:
{{NomeTemplate|valore1|par2=valore2}}
- 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
modifica- mw:Category:Snippets with JavaScript - Esempi di codice Javascript per realizzare diversi compiti.
- mw:JavaScript performance