Note relative alla programmazione, in relazione o meno con Wikipedia.
Indice |
---|
Note per l'uso di Javascript nel vector.js, nei gadget, ecc.
mw.util.addPortletLink('p-tb', "href_del_link", "Nome del link", '');
dove
Le informazioni sono accessibili in formato JSON alla pagina [2]. Questa pag. è accessibile anche manualmente, cliccando sulla sulla scritta "This page in json format" che è in basso all'indirizzo [3].
Importare lo script e aggiungere il link, impostando come href il codice Javascript che lancia lo script:[1]
importScript('Utente:LoStrangolatore/CodiceDelloScript'); mw.util.addPortletLink('p-tb', "javascript:eseguiUnaCertaFunzione();", "Nome link", '');
Non so perché, ma importare lo script con le modalità definite qui, per invocare subito dopo una funzione o metodo di qualche oggetto, non funziona.[2] Tuttavia, con tali modalità viene comunque eseguito normalmente il codice dello script esterno che si trova fuori da funzioni o oggetti.
Per importare il codice di uno script presente su una certa pagina, seguire uno dei seguenti esempi:
$.getScript("/w/index.php?title=Utente:LoStrangolatore/sandboxes/2&action=raw&ctype=text/javascript");
importScript('Wikipedia:Monobook.js/Catwatch.js');
{}
si usa per gli oggetti; per gli array, si usa []
.Per usare da bot le API delle wiki Wikimedia, si dovrebbe cambiare la stringa dello user agent, mentre, se sono usate da scriptini all'interno di pagine Web, si può usare lo user agent del browser (Browser-based applications written in Flash or JavaScript are typically forced to send the same User-Agent header as the browser that hosts them. This is not a violation of policy.).[3]
Per la documentazione delle API disponibili: vedi http://en.wikipedia.org/w/api.php e mw:Template:API intro.
Per i risultati delle query, può essere comodo indicare il formato JSON e invocare l'API tramite AJAX, in quanto la combinazione di queste due cose permette di scrivere il codice client riferendosi direttamente alle proprietà dell'oggetto Javascript restituito dalla query (cioè senza dover parserizzare stringhe in formati diversi). Esempio.
Per invocare una funzione PHP, parte di un'estensione, da una pagina di MediaWiki: registra la funzione nella variabile mw:Manual:$wgAjaxExportList, quindi effettua una richiesta AJAX (vedi, in pratica si richiama index.php con il parametro action=ajax) impostata secondo quanto indicato qui nella riga che riguarda il parametro ajax.
Vedi
Rules sul Toolserver
Altro:
mw.util.addPortletLink('p-tb', "javascript:importScript('Utente:LoStrangolatore/CodiceDelloScript');", "Nome link", '');
perché questo porta a problemi; ad es., se le invocazioni di window.open(), nello script B importato dallo script A, aprono delle finestre e non delle tab nel browser, e si vuole invece che aprano delle tab, allora la catena delle invocazioni a funzione che termina con window.open() deve partire dallo stesso script A e non dallo script B.
importScript('Wikipedia:Monobook.js/Catwatch.js'); // o altra istruzione che importi lo script funzione(); // oppure oggetto.metodo(); dove funzione, oggetto e metodo sono definiti nello script esterno