MediaWiki/Javascript
Variabili e funzioni predefinite
[modifica | modifica sorgente]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 | modifica sorgente]MediaWiki include la libreria JQuery fin dalla versione 1.16.
Interfaccia grafica
[modifica | modifica sorgente]| Per approfondire, vedi MediaWiki/Le skin e MediaWiki/Hacking interfaccia. |
La pagina di riferimento è mw:Manual:Interface/JavaScript.
Come fare per...
[modifica | modifica sorgente]Albero delle categorie
[modifica | modifica sorgente]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::ajaxche 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
categoryTreeLoadChildrenche 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.phpefCategoryTreeAjaxWrapperè inCategoryTree.phpcategoryTreeLoadChildrenè inCategoryTree.js
Parsing di una invocazione a template
[modifica | modifica sorgente]Per ottenere la lista di corrispondenze parametro-valore da una invocazione a template come questa:
{{NomeTemplate|valore1|par2=valore2}}
- creare un template
NomeTemplate2che 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 | modifica sorgente]- mw:Category:Snippets with JavaScript - Esempi di codice Javascript per realizzare diversi compiti.
- mw:JavaScript performance