Note relative alla programmazione, in relazione o meno con Wikipedia.

Indice

Note per Javascript

[modifica | modifica wikitesto]

Note per l'uso di Javascript nel vector.js, nei gadget, ecc.


 mw.util.addPortletLink('p-tb', "href_del_link", "Nome del link", '');

dove

Per modificare il testo di una pagina in automatico
Per avere l'elenco delle visite ad una pagina

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].

Per eseguire uno script esterno, al click del mouse su un link

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", '');
Per eseguire uno script esterno immediatamente

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");
(vedi anche qui)
importScript('Wikipedia:Monobook.js/Catwatch.js');
(vedi anche qui)
Errori che commetto più di frequente

API di MediaWiki

[modifica | modifica wikitesto]

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.

Estensioni di MediaWiki

[modifica | modifica wikitesto]

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.

Toolserver

[modifica | modifica wikitesto]
Getting started

Vedi

Rules sul Toolserver

Altro:

Note

[modifica | modifica wikitesto]
  1. ^ Non usare la forma
     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.

  2. ^ Ovvero, non riesco a far funzionare il seguente codice:
     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
    
  3. ^ meta:User-Agent_policy