File:Monobooksenpai.png
Uno screenshot del monobook completo

Il codice MediaWiki permette l'esecuzione di uno script (monobook.js) che facilita l'utilizzo di Wikipedia attraverso semplici tool. Il linguaggio usato per la sua codifica è JavaScript e chiunque può crearsene uno personalizzato. Lo script consiste, di fatto, in una sottopagina utente: la tua è questa. Ogni modifica apportata al suo codice, per essere applicata, richiede una pulizia della cache, per farlo premi Ctrl+F5 oppure Ctrl+ Maiusc+R dopo aver salvato la pagina.

Per facilitare la vita di tutti quelli che non hanno familiarità con queste cose è stata creata una versione standard e molto completa, che può essere facilmente installata e configurata.

In ogni caso ricordati che:

  • Se hai problemi puoi leggere le FAQ in fondo alla pagina o chiedere aiuto qui.
  • Se hai nuove proposte o qualche tool che non è ancora stato inserito, parlane qui.

Installazione

Per installare il monobook standard basta salvare questo codice nel proprio monobook.js

//<pre>

// Elenco dei tool da caricare.

var toLoad="purg led ns0 lks orol tabs nav stru unw tbar avan cwtch popup nms chat cmd qed wed since goo rch edt ver vpop vfol bot linkcomplete qdel lrc dels";



//Monobook Modulare
//Lancia il vero monobook
// Vedi [[Wikipedia:Monobook.js/MonobookCompleto.js]]
// 
importScript("Wikipedia:Monobook.js/MonobookCompleto.js");

//</pre>


A questo codice si possono aggiungere altri script a scelta dell'utente aggiungendo il relativo codice dopo questo.

Attenzione: per un corretto funzionamento del monobook.js, è assolutamente necessario installare anche il monobook.css copiandolo nel proprio css. Invece di copiare tutto il css nel proprio, si può anche aggiungere nel proprio monobook.css la riga:

 @import "//it.wikipedia.org/w/index.php?title=Wikipedia:Monobook.js/monobook.css&usemsgcache=yes&action=raw&ctype=text/css&smaxage=2678400";

Configurazione

Nella versione 4.x il monobook.js è modulare, ovvero potete scegliere cosa installare (per default viene installato tutto).

Per modificare la lista dei tool installati è disponibile uno strumento grafico accessibile dal portlet "strumenti" e intitolato "Setup", che consente di modificare la lista dei moduli (elencati sotto).

Se non volete usare il tool grafico, è sufficiente aprire il vostro monobook in modifica ed editare la linea che inizia con "var toLoad=".

Questa riga contiene una serie di sigle, una per ogni tool da importare.

Le sigle devono essere separate da spazi e quella che segue è la lista dei tool disponibili (altri potrebbero essere aggiunti in futuro, per cui consiglio di mettere questa pagina tra gli Osservati Speciali, vedi il paragrafo Aggiornamenti).

Sigla Tool inserito Note
purg Aggiunge tab "purge"
led Aggiunge tab "ultima modifica"
ns0 Aggiunge tab "0" Apre in modifica la sezione 0 della pagina
lks Personalizza i link nella barra in alto Pagina utente, discussione, preferenze, ...
orol Aggiunge l'orologio in alto a destra
tabs Aggiunge i tab "Messaggi talk" e "strumenti vari"
chat Aggiunge un link diretto alla chat di wikipedia Il link verrà aggiunto nella barra superiore
nav Aggiunge tutti i link nel portlet "navigazione"
newp Aggiunge "Pagine nuove" nel menù "navigazione" Non è necessario se avete già specificato "nav"
mjs Aggiunge 'monobook.js' nel menù "navigazione" Non è necessario se avete già specificato "nav"
mcss Aggiunge 'monobook.css' nel menù "navigazione" Non è necessario se avete già specificato "nav"
sand Aggiunge "Sandbox" nel menù "navigazione" Non è necessario se avete già specificato "nav"
blk Aggiunge "Block Log" nel menù "navigazione" Non è necessario se avete già specificato "nav"
csu Aggiunge "Cancella subito" nel menù "navigazione" Non è necessario se avete già specificato "nav"
pca Aggiunge "Pagine da cancellare" nel menù "navigazione" Non è necessario se avete già specificato "nav"
stub Aggiunge "Stub" nel menù "navigazione" Non è necessario se avete già specificato "nav"
admin Aggiunge "Strumenti Admin" nel menù "navigazione" Non è necessario se avete già specificato "nav"
prob Aggiunge "Utenti problematici" nel menù "navigazione" Non è necessario se avete già specificato "nav"
aut Aggiunge "Autorizzazione ottenute" nel menù "navigazione" Non è necessario se avete già specificato "nav"
vand Aggiunge "Vandalismi in corso" nel menù "navigazione" Non è necessario se avete già specificato "nav"
rich Aggiunge "Richieste agli amministratori" nel menù "navigazione" Non è necessario se avete già specificato "nav"
bot Aggiunge il link alla pagina dei contributi del proprio bot nel menù "navigazione" Non è necessario se avete già specificato "nav", per specificare il nome del proprio bot è necessario scrivere var nomeBot="MioBot"; nel proprio monobook.js.
requi Aggiunge la "Verifica dei requisiti di voto" nel menù "navigazione"
stru Aggiunge tutti i link nel portlet nel menù "strumenti"
uec Aggiunge "user edit count" nel menù "strumenti" Non è necessario se avete già specificato "stru"
log Aggiunge "Log" nel menù "strumenti" Non è necessario se avete già specificato "stru"
whois Aggiunge "Whois" nel menù "strumenti" Non è necessario se avete già specificato "stru"
newp Aggiunge "Pagine nuove" nel menù "strumenti" Non è necessario se avete già specificato "stru"
unw Aggiunge "non seguire" nella pagina degli Osservati Speciali
allp Aggiunge il pulsante "AllPages" nel box di ricerca
tbar Aggiunge tutti i pulsanti alla Toolbar
aiu "A"iutare Non è necessario se avete già specificato "tbar"
con "C"ontrollare Non è necessario se avete già specificato "tbar"
pov "P"OV Non è necessario se avete già specificato "tbar"
wiki "W"ikificare Non è necessario se avete già specificato "tbar"
stu "S"tub Non è necessario se avete già specificato "tbar"
enc "E"nciclopedicità dubbia Non è necessario se avete già specificato "tbar"
tra Da tradurre Non è necessario se avete già specificato "tbar"
voto Votazioni: +1/0/-1 Non è necessario se avete già specificato "tbar"
cocp Controlcopy Non è necessario se avete già specificato "tbar"
cacp Cancelcopy Non è necessario se avete già specificato "tbar"
cat Categorizzare Non è necessario se avete già specificato "tbar"
test Test Non è necessario se avete già specificato "tbar"
prom Promozionale Non è necessario se avete già specificato "tbar"
benv Benvenuto Non è necessario se avete già specificato "tbar"
canc Da cancellare Non è necessario se avete già specificato "tbar"
caut Avvisocancellautente Non è necessario se avete già specificato "tbar"
cimm Cancella subito Non è necessario se avete già specificato "tbar"
cviol ViolazioneCopyright Non è necessario se avete già specificato "tbar"
sviol Segnala copyviol Non è necessario se avete già specificato "tbar"
aviol Avvisocopyviol Non è necessario se avete già specificato "tbar"
avand Vandalismo Non è necessario se avete già specificato "tbar"
avv Avvisoavvisi Non è necessario se avete già specificato "tbar"
yc Cartellino giallo Non è necessario se avete già specificato "tbar"
rc Cartellino rosso Non è necessario se avete già specificato "tbar"
spam Avviso spam Non è necessario se avete già specificato "tbar"
uni Da unire Non è necessario se avete già specificato "tbar"
inv Inversione Non è necessario se avete già specificato "tbar"
bpar Avvisobloccoparziale Non è necessario se avete già specificato "tbar"
edw Avvisoeditwar Non è necessario se avete già specificato "tbar"
bnpov AvvisobloccoNPOV Non è necessario se avete già specificato "tbar"
tras Trasferimento Non è necessario se avete già specificato "tbar"
orf Orfana Non è necessario se avete già specificato "tbar"
iorf Immagine orfana Non è necessario se avete già specificato "tbar"
wip WIP Non è necessario se avete già specificato "tbar"
cgr Da correggere Non è necessario se avete già specificato "tbar"
aimm Avvisoimmagine Non è necessario se avete già specificato "tbar"
unv Unverified Non è necessario se avete già specificato "tbar"
date Date personali Non è necessario se avete già specificato "tbar"
grz Grazie Non è necessario se avete già specificato "tbar"
ndis Nota disambigua Non è necessario se avete già specificato "tbar"
dis Disambigua Non è necessario se avete già specificato "tbar"
vedan Vedi anche Non è necessario se avete già specificato "tbar"
mon Monitoraggio Non è necessario se avete già specificato "tbar"
gall Gallery Non è necessario se avete già specificato "tbar"
ref References Non è necessario se avete già specificato "tbar"
ipro Interprogetto Non è necessario se avete già specificato "tbar"
sbo Scroll box Non è necessario se avete già specificato "tbar"
sot Testo sottolineato Non è necessario se avete già specificato "tbar"
small Testo piccolo Non è necessario se avete già specificato "tbar"
bar Testo barrato Non è necessario se avete già specificato "tbar"
case Trasforma maiuscolo in minuscolo e viceversa Non è necessario se avete già specificato "tbar"
br Tasto "a capo" Non è necessario se avete già specificato "tbar"
cate Aggiunge [[Categoria:]] Non è necessario se avete già specificato "tbar"
sef Aggiunge {{F}} Non è necessario se avete già specificato "tbar"
cne Aggiunge {{citazione necessaria}} Non è necessario se avete già specificato "tbar"
dmo Aggiunge {{dmoz}} Non è necessario se avete già specificato "tbar"
noinc Aggiunge <noinclude> Non è necessario se avete già specificato "tbar"
incor Aggiunge {{Incorso}} Non è necessario se avete già specificato "tbar"
agg Aggiunge {{Da aggiornare}} Non è necessario se avete già specificato "tbar"
prob Aggiunge {{Problematico}} Non è necessario se avete già specificato "tbar"
van Aggiunge {{Vandalo}} Non è necessario se avete già specificato "tbar"
fat Aggiunge {{Fatto}} Non è necessario se avete già specificato "tbar"
nfat Aggiunge {{Non fatto}} Non è necessario se avete già specificato "tbar"
port Aggiunge {{Portale}} Non è necessario se avete già specificato "tbar"
ssen Aggiunge {{Senza senso}} Non è necessario se avete già specificato "tbar"
scorp Aggiunge {{ScorporoUnione}} Non è necessario se avete già specificato "tbar"
aw Aggiunge {{AiutoW}} Non è necessario se avete già specificato "tbar"
avfir Aggiunge {{Avvisofirma}} Non è necessario se avete già specificato "tbar"
puli Aggiunge {{RichiestaPulizia}} Non è necessario se avete già specificato "tbar"
avan Anti-vandal tool
cwtch Category watch
popup Popup di navigazione
nms Ricerca in un namespace
cmd Aggiunge la command line per l'attivazione premere alt+z
qed QuickEdit. Permette la modifica veloce di una sezione Si può, opzionalmente, configurare come descritto in QuickEdit.js
wed wikEd. Nuova casella di editing con nuove funzionalità Il manuale d'uso si trova in Wikipedia:Monobook.js/WikEd/Manuale
since Novità. Si accede alla pagina degli Osservati Speciali ma vengono mostrate solo le modifiche apportate dopo l'ultima visita Fa uso di cookie (Come abilitarli)
goo Ricerca con Google e Yahoo. Permette la ricerca in Wikipedia sfruttando i motori Google e Yahoo
rch crea un piccolo tasto sulla sinistra della pagina che consente di visualizzare le modifiche più recenti della voce sulla quale si è (Descrizione e immagini d'esempio)
edt permette di editare i titoli delle pagine
ver potenzia la funzione di verifica delle versioni - (tool disattivato) Salvatore Ingala (conversami) 23:54, 17 feb 2011 (CET)[rispondi]
vpop patrolling retroattivo (VPopSpeed)
vfol Vandal Fighter on Line Funziona solo con Firefox e, forse, con Mozilla e Netscape
linkcomplete Link Complete Non funziona con IE
qdel Patrolling immagini. Inserisce vari link nel menù "strumenti" (es: Immagine senza licenza) che aggiunge un template (es: {{unverdata}}) all'immagine, ed un avviso (es: {{Avvisoimmagine}}) a chi l'aveva caricata Non funziona con Konqueror
lrc LiveRC: Patrolling Funziona con Firefox 1.5.x >+, Epiphany (Gecko) e SeaMonkey
elrc E-LiveRC: Patrolling Funziona con Firefox 1.5.x >+, Epiphany (Gecko) e SeaMonkey
dels Aggiunge il link "cancella" da parte ad ogni sezione. Svuota l'intera sezione. Non usarlo sull'ultima sezione, perché elimina anche i portali, le categorie e gli interwiki.
clink Rende cliccabili i link ai siti esterni nel campo oggetto della cronologia

Alcune di queste sigle sono cumulative. Ad esempio, se aggiungete tbar, installerete tutti i bottoni della toolbar, senza che sia necessario aggiungerli singolarmente.
L'ordine con cui inserite i codici non è importante.

Aggiornamenti

Per permettere di capire velocemente cosa è stato aggiunto o tolto, verranno elencate qui le modifiche.

20 novembre 2006

  • Aggiunto tab "Ultimo edit" (codice "led")
  • Aggiunto tab "0", modifica della sezione 0 (codice "ns0")
  • Aggiunto bottone "Cartellino rosso" (codice "rc")
  • Aggiunto richieste agli amministratori (codice "rich")
  • Aggiunto chat Wikipedia (codice "chat")
  • Eliminato "Strumenti monobook" (era stato aggiunto per errore)
  • Fixato bug menù di sinistra
  • Fixato bug su link alla chat

26 novembre 2006

  • Aggiunto tasto con template scroll box
  • Aggiunto tasto con template "Promozionale"

9 dicembre 2006

  • Corretto problema che bloccava il funzionamento del Category Watch.
  • Aggiunto "Tatoo" al nuovo paragrafo Personalizzazioni avanzate.

20 dicembre 2006

  • Aggiunta la command line, per l'attivazione è necessario aggiungere la variabile cmd nel proprio monobook.

5 gennaio 2007

14 gennaio 2007

15 gennaio 2007

  • Aggiunto QuickEdit (codice qed)

26 gennaio 2007

  • Aggiunti nuovi pulsanti alla toolbar.

31 gennaio 2007

  • Aggiunti 2 nuovi pulsanti

14 febbraio 2007

  • Aggiunto wikEd (codice wed)
  • Aggiunto Novità (codice since)
  • Aggiunta ricerca con Google e Yahoo (codice goo)
  • Aggiunto tasto di visualizzazione ultime modifiche (codice rch)

22 febbraio 2007

  • Aggiunta la trasfomazione del testo da maiuscolo in minuscolo e viceversa (codice case)
  • Aggiunti i titoli editabili. Si può editare il titolo della pagina utilizzandolo per spostarsi velocemente su un'altra voce

24 febbraio 2007

  • Fix titoli editabili e aggiunta "notiziario di aggiornamento monobook"

27 febbraio 2007

  • Potenziamento funzione di verifica.

2 marzo 2007

  • Aggiunto tasto dmoz (codice dmo o tbar)
  • Aggiunto VPopSpeed (codice vpop)

6 marzo 2007

  • Aggiunto il Setup grafico nel portlet "strumenti".

15 marzo 2007

  • Aggiunto link ai contributi del proprio bot (codice bot)
  • Aggiunto VFonLine (codice vfol)

10 aprile 2007

  • Aggiunti vari tasti alla toolbar.

11 aprile 2007

  • Aggiunto tasto "Problematico" (codice prob)

16 aprile 2007

  • Aggiunti tasti "Fatto/Non fatto" (codici fat e nfat)

27 aprile 2007

19 giugno 2007

15 settembre 2007

  • Aggiunto il Quick-Delete per il patrolling delle immagini (codice qdel)

24 dicembre 2007

  • Aggiunto il LiveRC, tool per il patrolling (codice lrc)

2 febbraio 2008

  • Aggiunti gli hotkeys ai pulsanti della toolbar.

27 maggio 2008

28 maggio 2008

  • Aggiunta la cancellazione di una sezione di voce (codice dels).

20 ottobre 2008

25 dicembre 2008

Evoluzioni delle versioni

  • ver. 4.2.
  • ver. 4.2.5. fix a bug menù
  • ver. 4.2.6. fix di alcuni bug
  • ver. 4.3.1. nuove funzionalità
  • ver. 4.5. aggiunta la command line
  • ver. 4.5.2. sistemato template benvenuto ed aggiunte variabili
  • ver. 4.6.5. implementato il template {{O}} ed eliminato il vecchio template {{orfana}}
  • ver. 4.7.0. fix vari
  • ver. 4.7.5. fixxata la posizione dei template
  • ver 4.7.1 aggiunto il quick edit
  • ver. 4.8.3. vari fix ed aggiunta della firma al quick edit
  • ver. 5.0.0. fix vari e aggiunta di nuovi tasti alla toolbar.
  • ver. 5.1.1. fix per I.E. e miglioramento funzioni toolbar.
  • ver. 5.3.0. aggiunti due nuovi pulsanti
  • ver. 6.0.1. aggiunta del wikied e fix vari
  • ver. 6.1.1. aggiunta visualizzazione rapida delle ultime modifiche della pagina
  • ver. 6.3.0. aggiunta dei titoli editabili e del notiziario.
  • ver. 6.4.0. vari fix + potenziamento verifica
  • ver. 6.5.1. aggiunto tasto "dmoz" e funzione di retropatrolling
  • ver. 6.7.0. Aggiunta interfaccia grafica ("Setup") per la configurazione del monobook.
  • ver. 6.7.1. Aggiunto link ai contributi del proprio bot (codice bot).
  • ver. 6.8.1. Aggiunto il virtual fighter online.
  • ver. 6.8.9. aggiunti vari pulsanti alla tool bar
  • ver. 6.8.10. aggiunta la creazione automatica dei pulsanti personali
  • ver. 6.9.0. aggiunta la creazione automatica dei collegamenti personali

Personalizzazioni avanzate

Ovvero, cose da fare se siete abbastanza esperti. Se non lo siete, e lo volete fare lo stesso, basta chiederlo.

Tatoo

File:MonobookTatoo.JPG
uno screenshot del tool Tatoo

Girovagando su alcune pagine utente ho trovato un'utile applicazione del codice usato per il template {{Immagine con scorrimento}}. In pratica viene creata un'icona, sempre visibile nell'angolo in basso a destra del browser, utile per raggiungere velocemente un determinato Progetto. Se vi interessa potete inserire nel vostro vector o monobook il codice

//

//PROGETTO TOLKIEN
var Tolkien="<div style=\"position:fixed;background-color:transparent;bottom:10px;right:10px;z-index:1000;display:block\"><A HREF=\"http://it.wikipedia.org/wiki/Progetto:Tolkien\"><IMG   SRC=\"http://upload.wikimedia.org/wikipedia/commons/b/b7/Unico_Anello.png\" WIDTH=\"40\" HEIGHT=\"40\" ALT=\"Progetto Tolkien\"></IMG></A></div>";
document.getElementById("content").innerHTML += Tolkien;

//

Aggiustandolo con le dovute modifiche. L'esempio sopra crea un collegamento al progetto Tolkien.

Tatoo Personalizzabili

Visualizza un tatoo in basso a destra il cui link è settabile da una comoda finestrella. Si ottiene così un comodo collegamento alla pagina a cui state lavorando sempre sullo schermo.

Per installarli è sufficiente scrivere nella barra del titolo

javascript:setpagecontent('Utente:'+wgUserName+'/Tatoo','Pagina_principale','Installazione');

e dare invio, poi aggiungere

document.writeln('');

in fondo al proprio monobook.

Ricordatevi di ricaricare (ctrl-r) dopo ogni cambiamento di link, funziona solo con Firefox.

Aggiungi un pulsante alla toolbar

Questo paragrafo si riferisce ai pulsanti che servono solo a voi. Se pensate che un pulsante sia utile anche per gli altri parlatene qui.

Creazione automatica

È possibile aggiungere un pulsante alla propria toolbar utilizzando una semplice interfaccia grafica. La spiegazione completa si trova in "Pulsanti personali". I nuovi pulsanti verranno aggiunti ad un menù a tendina sopra alla toolbar.

Creazione manuale

Se la creazione spiegata nel paragrafo sopra non funziona, o se preferite un pulsante rispetto al menù a tendina, potete seguire queste istruzioni.

Per poter inserire un nuovo pulsante nella vostra toolbar basta inserire in fondo al proprio monobook il seguente codice:

function personalButtons()
{
  AGGIUNGERE QUI UNA RIGA PER PULSANTE SECONDO I CRITERI SPIEGATI SOTTO
}
addLoadEvent(personalButtons);
Se il testo va inserito in cima o in fondo alla pagina

La riga da aggiungere e':

addToolbarButton('tb-xxx', 'javascript:aggiungiTesto("Testo da inserire", "Oggetto della modifica", Dove inserirlo, Offset)',
  'Indirizzo URL dell'immagine', 'Testo alternativo', 'Titolo immagine');

Dove:

  • Testo da inserire: È il testo da aggiungere alla pagina (va racchiuso tra doppi apici ")
  • Oggetto della modifica: È il contenuto del campo oggetto (va racchiuso tra doppi apici ")
  • Dove inserirlo: È un numero. 0 significa "in cima", 1 significa "in fondo" (non servono gli apici)
  • Offset: È un numero che dice di quanto va spostato il cursore rispetto all'inizio del testo inserito (e' opzionale, e non viene usato quasi mai)
  • Indirizzo URL dell'immagine: Non è il nome dell'immagine, bensì il suo indirizzo sul server (ovvero il link che, nella pagina dell'immagine, sta subito sotto a lei); il link va racchiuso tra apici semplici ( ' ). L'immagine non viene ridimensionata, per cui deve già essere delle dimensioni giuste (22 pixel). Una scelta di immagini per toolbar si trova nella Categoria:Icone per toolbar, e anche su Commons.
  • Testo alternativo: Testo da visualizzare se l'immagine non può essere caricata (va racchiuso tra apici semplici ' )
  • Titolo immagine: Scritta che viene mostrata fermandosi sul pulsante col cursore (va racchiuso tra apici semplici ' )
Se il testo va inserito nella posizione del cursore

La riga da aggiungere e':

addToolbarButton('tb-xxx', 'javascript:addTextAtCursor("Prima","Oggetto","Dopo",offset)',
  'Indirizzo URL dell'immagine', 'Testo alternativo', 'Titolo immagine');

Dove:

  • Prima: È il testo da aggiungere prima della selezione (se è stato selezionato del testo)
  • Oggetto: È l'oggetto della modifica
  • Dopo: È il testo da aggiungere dopo la selezione (se non c'e' la selezione viene accodato al precedente)
  • Offset: È un numero che dice di quanto va spostato il cursore rispetto al posizionamento standard (e' opzionale, e non viene usato quasi mai). Nel 90% dei casi deve essere "0" (senza le virgolette)
  • Indirizzo URL dell'immagine: Non è il nome dell'immagine, bensì il suo indirizzo sul server (ovvero il link che, nella pagina dell'immagine, sta subito sotto a lei). L'immagine non viene ridimensionata, per cui deve già essere delle dimensioni giuste (22 pixel). (va racchiuso tra apici semplici ' ). Ha un formato tipo "http://upload.wikimedia.org/wikipedia/..."
  • Testo alternativo: Testo da visualizzare se l'immagine non può essere caricata (va racchiuso tra apici semplici ' )
  • Titolo immagine: Scritta che viene mostrata fermandosi sul pulsante col cursore (va racchiuso tra apici semplici ' )

In questo modo il comportamento dei tasti e':

  • Se c'e' del testo selezionato: aggiunge davanti alla selezione "Prima", aggiunge dietro "Dopo" e mantiene selezionato il testo originale
  • Se non c'e' del testo selezionato: aggiunge "PrimaDopo" al posto del cursore e piazza il cursore tra Prima e Dopo.

Togli pulsanti dalla toolbar

Lo potete fare facilmente se usate Firefox e Adblock, basta pigiare sui pulsanti che si vuole togliere col tasto destro del mouse e bloccare l'immagine.

WikiMiniAtlas

Il template {{coord}} permette di inserire coordinate geografiche in una voce che, a questo punto, darà accesso ad una mappa interattiva del luogo. Le mappe sono attive per default, ma possono essere disattivate o configurate tramite il proprio monobook. Spiegazioni più dettagliate si trovano su Meta.

Tools per Traduttori

Questi tool vanno copiati nel proprio monobook della wikipedia estera, da cui si vuole tradurre. Tutti hanno bisogno anche della presenza di questo codice:

Codice del tool
//Funzioni per fare le query al DB con api.php
var wpajax = {
  http: function(bundle) {
    // mandatory: bundle.url
    // optional:  bundle.async
    // optional:  bundle.method
    // optional:  bundle.headers
    // optional:  bundle.data
    // optional:  bundle.onSuccess (xmlhttprequest, bundle)
    // optional:  bundle.onFailure (xmlhttprequest, bundle)
    // optional:  bundle.otherStuff OK too, passed to onSuccess and onFailure
    var xmlhttp;
    try {
      xmlhttp = new XMLHttpRequest(); 
    } catch(e) { 
      try {
        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
      } catch (e) { 
        try {
          xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (e) {
          xmlhttp = false
        }
      }
    }
 
    if (xmlhttp) {
      xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4)
          wpajax.httpComplete(xmlhttp,bundle);
      };
      xmlhttp.open(bundle.method ? bundle.method : "GET",bundle.url,bundle.async == false ? false : true);
      if (bundle.headers) {
        for (var field in bundle.headers)
          xmlhttp.setRequestHeader(field,bundle.headers[field]);
      }
      xmlhttp.send(bundle.data ? bundle.data : null); 
    }
    return xmlhttp;
  },
 
  httpComplete: function(xmlhttp,bundle) {
    if (xmlhttp.status == 200 || xmlhttp.status == 302) {
      if (bundle.onSuccess)
        bundle.onSuccess(xmlhttp,bundle);
    } else if (bundle.onFailure) {
      bundle.onFailure(xmlhttp,bundle);
    } else {
      // A activer en debug mode ?
      // alert(xmlhttp.statusText);
    }
  }
};
 
// Parser
if (document.implementation.createDocument) {
  var gml_xmlparser = new DOMParser();
}
 
function gml_XMLParse(string) {
  if (document.implementation.createDocument) {
    return gml_xmlparser.parseFromString(string, "text/xml");
  } else if (window.ActiveXObject) {
    var gml_xmldoc = new ActiveXObject("Microsoft.XMLDOM");
    gml_xmldoc.async = "false";
    ret = gml_xmldoc.loadXML(string);      
    if (!ret)
      return null;
    return gml_xmldoc.documentElement;
  }
  return null;
}
 
// HTMLize
String.prototype.htmlize = function() {
  var chars = new Array('&','<','>','"');
  var entities = new Array('amp','lt','gt','quot');
  var regex = new RegExp();
  var string = this;
  for (var i=0; i<chars.length; i++) {
    regex.compile(chars[i], "g");
    string = string.replace(regex, '&' + entities[i] + ';');
  }
  return string;
}
 
//Alias di document.getElementById
$ = function(id){
    return document.getElementById(id);
};
//

Traduzione interwiki

NB: Per funzionare ha bisogno anche di questo codice

Codice del tool
// Elenco dei [[ ]]
var elencoLink = new Array();

function tradToIT()
{
    // Recupera l'area di testo
    text = $("wpTextbox1").value;

    elencoLink.length=0;
    result = ""; 
    inseriti = "|";
    
    while (text.indexOf("[[") != -1)
    {
        text = text.substring(text.indexOf("[[")+2);
        to1 = text.indexOf("]]");
        if (to1 == -1)
            to1 = 10000000;
        to2 = text.indexOf("|");
        if (to2 == -1)
            to2 = 10000000;
        to3 = text.indexOf(":");
        if (to3 == -1)
            to3 = 10000000;
            
        if (to3<to2 && to3<to1) // si tratta di un interwiki o di un link a namespace!=0. Va saltato
        {
            text = text.substring(2);
            continue;
        }
            
        link = text.charAt(0).toUpperCase(); // prima lettera maiuscola
        link += text.substring(1, (to1<to2)?to1:to2);
        if (inseriti.indexOf("|"+link+"|") == -1)
            elencoLink[elencoLink.length] = link; // così non mette i doppioni
        inseriti += link+"|";
    }
    
    // Per ogni [[ ]]
    for (x in elencoLink)
    {
        // Ricava l'elenco degli interwiki della voce in oggetto
        wpajax.http({url: wgServer + wgScriptPath + '/api.php?action=query&prop=langlinks&titles='+escape(elencoLink[x])+'&redirects&format=xml&lllimit=5000', 
                   onSuccess: addRow, en: elencoLink[x] });
    }
}

// Crea la lista dei risultati
var result = "";
var total=0;

function addRow(xmlreq, data) {
    var api = xmlreq.responseXML;
    var en = data.en;
    
    // Cerca se c'è "it.wiki"
    interwikis = api.getElementsByTagName('ll');

    trovato = "";
    for (i=0; i<interwikis.length; i++)
        if (interwikis[i].getAttribute('lang')=="it")
        {
            trovato = interwikis[i].textContent;
            break;
        }
    
    // Aggiungi al totale la riga: [[en.wiki]] => [[it.wiki]] / No link
    if (trovato != "")
        result += "<a href='"+wgServer+"/wiki/"+escape(en)+"'>" + en + "</a> => <a href='//it.wikipedia.org/wiki/"+escape(trovato)+"'>" + trovato + "</a><br/>";
    else
        result += "<a href='"+wgServer+"/wiki/"+escape(en)+"'>" + en + "</a> => No link<br/>";
    
    
    
    if (++total == elencoLink.length)
    {
        // splitto su <br/>
        list = result.split("<br/>");
        
        // ordina la lista
        list.sort();
        
        // ricrea la stringa
        result = list.join("<br/>");
        result = result.substring(5); // elimino il <br/> iniziale

        // Mostra tutta la lista calcolata
        total=0;
        myRef = window.open('about:blank','mywin', 'left=20,top=20,width=300,height=300,toolbar=yes,resizable=yes');
        myRef.document.write("<div style='width: 100%; height: 100%; overflow: auto'> "+result+"</div>");
    }
}

addOnloadHook(function () {
    if (wgAction=="edit")
    {
        addPortletLink('p-tb', 'javascript:tradToIT()', 'Traduci i wikilink', 'tradIT');
        $('tradIT').firstChild.accessKey = 'T';
        $('tradIT').title = 'Alt-Shift-T';
    }
})
 
Esempio di applicazione

Visto che da qualche tempo il tool di escaladix non funziona più, ho creato un tool del monobook che fa la stessa cosa. In pratica scorre i wikilink di una voce straniera che vogliamo tradurre, e propone per ogni wikilink la traduzione in italiano, basandosi sugli interwiki presenti nella voce straniera.

Per usarlo bisogna usare questo codice copiandolo nel proprio monobook (ma dovrebbe andare anche per vector ecc.) nella wiki straniera da cui vogliamo tradurre. A quel punto, aprendo una loro voce in modifica, apparirà nella colonna di sinistra (sotto a "Strumenti", "Tools" o come lo chiamano loro) un link chiamato "Traduci i wikilink". Cliccandoci sopra, e con un po' di pazienza, vi verrà proposta una lista simile a questa qui accanto. La prima volta che lo usate il vostro browser potrebbe arrabbiarsi per il tentativo di aprire un popup, in questo caso confermate che è ok. Voci lunghe necessitano, ovviamente, di più tempo. Cliccare continuamente sul link non aiuta, anzi... Jalo 12:35, 26 lug 2010 (CEST)[rispondi]

Ricerca di voci da tradurre

NB: Per funzionare ha bisogno anche di questo codice

Codice del tool
/****** INIZIO TOOL DI RICERCA VOCI DA TRADURRE ******/
// controlla se l'array "array" contiene il valore "stringa"
function contiene(array, stringa) {
    for (var i = 0; i < array.length; i++) {
        if (array[i] == stringa) {
            return true;
        }
    }
    return false;
}

var vociInglesi = new Array();
var vociDaTrad = new Array();
var interwikisCount = new Array();
var noCategory = new Array();

var countVociDaTrad = 0;

// cicla sull'elenco delle categorie chieste dall'utente
function analisiVoci() {
    for (i = 0; i < vociInglesi.length; ++i)
    {
        // Ricava l'elenco degli interwiki della voce in oggetto
        myXmlReq = wpajax.http({url: wgServer + wgScriptPath + '/api.php?action=query&prop=langlinks&titles='+escape(vociInglesi[i])+'&redirects&format=xml&lllimit=500', onSuccess: addToVociDaTrad, en: vociInglesi[i]});
    }
}

function addToVociDaTrad(xmlreq, data) {
    var api = xmlreq.responseXML;
    var en = data.en;
    
    if (api == null)
    {
        ++countVociDaTrad;
        return;
    }

    // Cerca se c'è "it.wiki"
    interwikis = api.getElementsByTagName('ll');

    trovato = "";
    for (j=0; j<interwikis.length; j++)
        if (interwikis[j].getAttribute('lang')=="it")
        {
            trovato = interwikis[j].textContent;
            break;
        }
    
    // Aggiungi al totale la riga: [[en.wiki]] => [[it.wiki]] / No link
    if (trovato == "")
    {
        vociDaTrad.push(en);
        interwikisCount.push(interwikis.length);
    }

    if (++countVociDaTrad == vociInglesi.length)
    {
        // ordina la lista
        vociDaTrad.sort()
            
        // crea contenuto da salvare
        contenuto = "";
        for (i = 0; i < vociDaTrad.length; ++i)
        {
            contenuto += "<li><a href='"+wgServer+"/wiki/"+escape(vociDaTrad[i])+"'>" + vociDaTrad[i] + "</a> (" + interwikisCount[i] + ")</li>";
        }
        
        // crea lista categorie inesistenti
        nocat = "";
        if (noCategory.length > 0)
        {
            nocat += "Le seguenti categorie non esistono su "+wgContentLanguage+".wiki: ";
        
            for (i = 0; i < noCategory.length; ++i)
            {
                nocat += noCategory[i] + ", ";
            }
            
            nocat = nocat.substr(0, nocat.length-2) + "<br/><br/>";
        }
        
        // finito di creare la lista la mostro in una nuova finestra
        myRef = window.open('about:blank','mywin', 'left=20,top=20,width=500,height=300,toolbar=yes,resizable=yes');
        myRef.document.write("<div style='width: 100%; height: 100%; overflow: auto'> ");
        myRef.document.write("<big><big><big>Voci di "+wgContentLanguage+".wiki mancanti su it.wiki</big></big></big><br/><br/>");
        myRef.document.write("Tra parentesi il numero di interlink presenti su "+wgContentLanguage+".wiki<br/><br/>");
        myRef.document.write(nocat);
        myRef.document.write("<ol>"+contenuto+"</ol>");
        myRef.document.write("</div>");
    }
}

var totaleCategorie = 0;
var countCategorie = 0;

// cicla sull'elenco delle categorie chieste dall'utente
function scansioneCategorie() {
    categorie = $("Lista").value.split("\n");
    totaleCategorie = categorie.length;
    for (i = 0; i < categorie.length; ++i)
    {
        myXmlReq = wpajax.http({url: wgServer + wgScriptPath + '/api.php?action=query&list=categorymembers&cmprop=title&cmnamespace=0&cmlimit=500&format=xml&cmtitle=Category:'+categorie[i], onSuccess: addToVociInglesi, cat: categorie[i]});
    }
    
    // nascondo la finestra
    node=$('categorie');
    node.parentNode.removeChild(node);
}

function addToVociInglesi(xmlreq, data) {
    var api = xmlreq.responseXML;
    var cat = data.cat;
    
    if (api.getElementsByTagName("categorymembers")[0].childNodes.length == 0) // categoria non esistente
        noCategory.push(cat);
    
    if (api)
    {
        cm = api.getElementsByTagName('cm');
        var voce="";
        for(j=cm.length-1; j >= 0 ; j--) {
            voce = cm[j].attributes[1].nodeValue;
            if (voce == "") continue;
            if (!contiene(vociInglesi, voce)) // se non è già in lista
                vociInglesi.push(voce);
        }
    }
    
    if (++countCategorie == totaleCategorie)
        analisiVoci();
}

// mostra finestra in cui si chiede quali categorie tradurre
function categorieDaTradurre() {
  var msWndSetup = document.createElement('div');
    msWndSetup.id = 'categorie';
    msWndSetup.style.position = 'fixed';
    msWndSetup.style.zIndex   = 1000;
    msWndSetup.style.left     =  '0px';
    msWndSetup.style.top      =  '0px';
    msWndSetup.style.backgroundColor = '#FFFFFF';
    msWndSetup.style.borderStyle     = 'solid';
    msWndSetup.style.borderWidth     = ' medium';
    msWndSetup.style.borderColor     = '#000000';
    msWndSetup.style.width = '300px';
    msWndSetup.align = 'center';
 
  var top = document.createElement('div');
    top.id = 'categorieTop';
    top.style.textAlign = 'right';
    top.style.margin = '8px';
    top.style.backgroundColor = '#DDDDDD';
 
  msWndSetup.appendChild(top);
  var body = msWndSetup;
  var intro = document.createElement('p');
 
  intro.innerHTML = "<span style=\"font-size: medium; font-weight: bold;\">Elenco delle categorie da tradurre<br /><span style=\"font-size: small;\">(una per riga e senza \"Category:\")</span></span><br/><br/>";
 
  body.appendChild(intro);
 
  var Lista = document.createElement('textarea');
  Lista.rows = 10;
  Lista.width = "90%";
  Lista.wrap = 'off';
  Lista.name = 'Lista';
  Lista.id = 'Lista';
  Lista.style.marginLeft = "10px";
  Lista.style.marginRight = "10px";
  Lista.style.width = "90%";
 
  body.appendChild(Lista);
 
  // crea il bottone "Ok"
  var buttonOk = document.createElement('input');
  buttonOk.value = 'Ok';
  buttonOk.type = 'button';
  buttonOk.style.margin = '8px';
  buttonOk.setAttribute('onclick', 'scansioneCategorie()');
 
  // crea il bottone "Annulla"
  var buttonCancel = document.createElement('input');
  buttonCancel.value = 'Annulla';
  buttonCancel.type = 'button';
  buttonCancel.style.margin = '8px';
  buttonCancel.setAttribute('onclick', "javascript:node=$('categorie');node.parentNode.removeChild(node);");
 
  body.innerHTML += "\n";
  body.appendChild(buttonOk);
  body.appendChild(buttonCancel);
 
  // e lo mostra a video
  document.body.appendChild(msWndSetup);
  Lista.focus();
}

addOnloadHook(function () {
    addPortletLink('p-tb', 'javascript:categorieDaTradurre()', 'Voci da tradurre', 'daTradIT');
    $('daTradIT').firstChild.accessKey = 'V';
    $('daTradIT').title = 'Voci da tradurre (Alt-Shift-V)';
})

/****** FINE TOOL DI RICERCA VOCI DA TRADURRE ******/
//

Questo tool serve per cercare le voci presenti in una categoria di una wikipedia estera che mancano da noi. Il codice va copiato nel proprio monobook della wikipedia straniera da cui si vuole tradurre.

Dopo aver pulito la cache apparirà nella colonna di sinistra (sotto a "Strumenti", "Tools" o come lo chiamano loro) un link chiamato "Voci da tradurre". Cliccandoci sopra si aprirà una finestra in cui vanno elencate le categorie da controllare. Vanno inseriti i nomi delle categorie straniere, non quelle italiane, una per riga e senza il "Category:" davanti. Cliccando su ok verranno elencate le voci presenti in quelle categorie che non hanno interwiki verso it.wiki, oltre al numero di interwiki presenti in quelle voci (per capirne l'importanza). Evidenzia anche le categorie non esistenti, per segnalare eventuali errori di battitura.

La ricerca non è ricorsiva. Controlla solo le categorie che elencate, non le sottocategorie. Se la lista di categorie è lunga, o se le voci contenute sono molte, potrebbe richiedere qualche secondo in più Jalo 12:53, 26 lug 2010 (CEST)[rispondi]

Questa è una lista delle domande più comuni con le relative risposte
Ho salvato il codice nel mio monobook ma non è cambiato niente. Cosa devo fare?
  • Ricordati di svuotare la cache (CTRL-F5 o CTRL-R).
Ancora niente...
  • Hai abilitato i Javascript sul tuo browser? (come abilitarli). Già che ci sei, controlla che siano abilitati anche sul firewall.
Niente da fare. Altri suggerimenti?
  • Ricordati di copiare anche questo monobook.css nel tuo e ri-svuota la cache.
Alcuni tool o collegamenti mi compaiono due volte. Perché?
  • Probabilmente non hai cancellato il vecchio codice del tuo monobook. Alcuni dei tool più usati in passato sono stati inclusi in questo, per cui il codice appare duplicato. Oppure stai usando monobook e Accessori contemporaneamente. In questo caso ti basta disabilitare da una delle due parti i tool doppi.
L'ordine delle icone nella Toolbar non mi piace. Si può cambiare?
  • Al momento no. Ma se otterrò troppe proteste per questo mi impegnerò a prepararlo per la prossima versione.
E l'ordine dei collegamenti nel menù a sinistra?
  • Idem come sopra.
È normale che alcuni collegamenti appaiano e scompaiano a seconda della pagina aperta?
  • Sì. Per limitare l'ingombro dei tool, la loro presenza è stata limitata alle pagine per cui servono.
Ho un'idea riguardo ad una cosa da aggiungere al monobook. A chi lo dico?
Avevo uno script che non è stato incluso in questo monobook. Posso continuare ad usarlo? E come faccio?
  • Sì, puoi usarlo. Basta che tu inserisca il codice di questo monobook prima del tuo tool all'interno del monobook.js. Già che ci sei, spiega il tuo tool in Wikipedia:Monobook.js/Richieste, se lo troviamo utile anche per altri utenti potremmo aggiungerlo nelle versioni future.
Ho fatto come hai detto nella risposta precedente, ma è venuto fuori un gran casino. Che faccio?
  • Per pura sfortuna il tuo tool non è compatibile (ma non disperare). Chiedi aiuto in Wikipedia:Monobook.js/Aiuto. Qualche anima pia ti aiuterà.
Come al solito il mio problema non è elencato nelle FAQ o queste non mi hanno aiutato a risolverlo. E adesso?

Pagine correlate