## Please edit system and help pages ONLY in the moinmaster wiki! For more
## information, please see MoinMaster:MoinPagesEditorGroup.
##||{{{[[ ]]}}} ||  ||  ||
##master-date2007-11-13 14:38:07
##master-page:HelpOnMacros
#acl MoinPagesEditorGroup:read,write,delete,revert All:read
#format wiki
#language it

<<Navigation(children)>>
<<BR>><<BR>>
<<TableOfContents>>

== Le macro ==

Le macro consentono di inserire nuove funzionalità nelle normali pagine wiki; l'unica cosa che  le rende speciali è che contengono delle macro. Se modifichi pagine tipo ModificheRecenti o InformazioniSulSistema, potrai vedere cosa si intende.

Per ulteriori informazioni sulle possibili formattazioni, vedi AiutoSuModificaPagina.

=== Macro di ricerca ===

MoinMoin utilizza un nuovo motore di ricerca, che ti permette di svolgere ricerche sofisticate utilizzando sia il riquadro di ricerca interattiva sia una qualsiasi delle macro di ricerca. Per un ulteriore aiuto, vedi AiutoSuRicerche.

||||||'''Macro''' ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;"> '''Descrizione''' ||'''Esempio''' ||
||||||{{{<<AdvancedSearch>>}}} ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;">Crea un dialogo di ricerca avanzata nella pagina || Vedi CercaPagina ||
||||||{{{<<TitleSearch>>}}} ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;">Crea un riquadro di ricerca nella pagina che cerca tra i titoli delle pagine || Vedi CercaPagina ||
||||||{{{<<FullSearch>>}}} ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;">Crea un riquadro di ricerca nella pagina che cerca nel contenuto delle pagine || Vedi CercaPagina ||
||||||{{{<<FullSearch()>>}}} ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;">Elenca le pagine che contengono il titolo della pagina (come cliccando sul titolo della pagina) || Vedi la pagina CategoriaCategoria ||
||||||{{{<<FullSearch(text)>>}}} ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;">Elenca le pagine che contengono il termine ricercato || /* Cerca {{{powered}}}:<<FullSearch(powered)>> */ ||
||||||{{{<<FullSearchCached(text)>>}}} ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;">Lavora come la macro {{{FullSearch}}} ma crea una cache statica dei risultati. Utilizzala se preferisci cercare velocemente su un risultato aggiornato || /* Cerca {{{powered}}}:<<FullSearchCached(powered)>> */ ||
||||||{{{<<GoTo>>}}} ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;">Vai direttamente alla pagina indicata || Vedi CercaPagina ||
||||||{{{<<PageList(Help)>>}}} ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;">Elenca le pagine il cui titolo corrisponde al termine ricercato || Vedi AiutoIndice ||

=== Navigazione ===
||||||'''Macro''' ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;"> '''Descrizione''' ||'''Esempio''' ||
||||||{{{<<RecentChanges>>}}} ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;">Elenco di pagine modificate di recente || Vedi ModificheRecenti ||
||||||{{{<<TitleIndex>>}}} ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;">Indice di tutti i titoli delle pagine || Vedi IndiceDeiTitoli ||
||||||{{{<<WordIndex>>}}} ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;">Indice di tutte le parole nei titoli delle pagine || Vedi IndicePerParola ||
||||||{{{<<WantedPages>>}}} ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;">Elenco di pagine che non esistono || Vedi PagineAssenti ||
||||||{{{<<OrphanedPages>>}}} ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;">Elenco di pagine non referenziate da altre pagine || Vedi PagineOrfane ||
||||||{{{<<AbandonedPages>>}}} ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;">Elenca le pagine non modificate da più tempo || Vedi PagineAbbandonate ||
||||||{{{<<RandomPage>>}}} ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;">Collegamento a una pagina a caso || <<RandomPage>> ||
||||||{{{<<RandomPage(#)>>}}} ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;">Collegamenti a un dato numero di pagine a caso || Due pagine a caso:<<RandomPage(2)>> ||
||||||{{{<<TableOfContents([maxdepth])>>}}} ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;">Visualizza un indice locale, limitato ad una profondità massima (maxdept) || Vedi a inizio pagina ||
||||||{{{<<Anchor(anchorname)>>}}} ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;">Macro per inserire "ancore" in una pagina || <<Anchor(qui)>>[[#qui]] ||
||||||{{{<<Navigation(children[,maxdepth])>>}}} ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;">Macro che elenca tutte le pagine che discendono da una pagina || Vedi a inizio pagina ||
||||||{{{<<Navigation(siblings[,maxdepth])>>}}} ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;">Navigazione rapida tra pagine sullo stesso livello || Vedi /MailTo ||
||||||{{{<<Navigation(slideshow)>>}}} ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;">Crea un collegamento per passare da modalità "Slide show" a modalità "Wiki" e uno per far partire la presentazione || Vedi AiutoSuSlideShow ||
||||||{{{<<Navigation(slides)>>}}} ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;">Mostra i collegamenti a prima/precedente/prossima/ultima slide || Vedi AiutoSuSlideShow ||
||||||{{{<<AttachInfo>>}}} ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;">Mostra il numero di file allegati alla pagina attuale || Vedi AiutoSuAzioni/AllegaFile ||
||||||{{{<<AttachInfo(page)>>}}} ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;">Mostra il numero di file allegati alla pagina indicata || Vedi AiutoSuAzioni/AllegaFile ||
||||||{{{<<AttachList(pagename,mimetype)>>}}} ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;">Mostra l'elenco dei file allegati || Vedi AiutoSuAzioni/AllegaFile ||

=== Informazioni di sistema ===

||||||'''Macro''' ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;"> '''Descrizione''' ||'''Esempio''' ||
||||||{{{<<InterWiki>>}}} ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;">Elenco di tutti i nomi InterWiki conosciuti || InterWiki ||
||||||{{{<<SystemInfo>>}}} ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;">Informazioni sul wiki, sull'interprete Python e sul sistema ospite || InformazioniSulSistema ||
||||||{{{<<PageCount(exists)>>}}} ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;">Calcolo del numero di pagine attuali. Se viene utilizzato come argomento {{{exists}}}, verranno mostrate solo le pagine esistenti. || <<PageCount>> pagine ||
||||||{{{<<PageSize>>}}} ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;">Elenca le dimensioni di tutte le pagine || Vedi PaginePerDimensione ||
||||||{{{<<StatsChart(type)>>}}} ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;">Mostra grafici statistici (attualmente sono definiti questi tipi: hitcounts, pagesize, useragents) || Vedi StatisticheEventi e sottopagine ||
||||||{{{<<SystemAdmin>>}}} ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;">Informazioni per gli amministratori del sistema || Devi essere un ''superuser'' per utilizzare questa macro<<BR>> <<SystemAdmin>> ||
||||||{{{<<EditedSystemPages>>}}} ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;">Elenco di tutte le pagine di sistema modificate || <<EditedSystemPages>> ||

=== Altre ===
||||||'''Macro''' ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;"> '''Descrizione''' ||'''Esempio''' ||
||||||{{{<<Action(action [,text])>>}}} ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;">Collega una pagina con un'azione valida, il testo opzionale può essere utilizzato come alias (i nomi delle azioni fanno distinzione tra maiuscole e minuscole)|| `<<Action(print, Stampa questa pagina)>>`, <<Action(print, Stampa questa pagina)>>||
||||||{{{<<ImageLink(image,target[,width=width[,height=height]][,alt=alttag])>>}}} ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;">Macro utilizzata per creare un collegamento che mostra un'immagine (può essere fornita sia come file allegato sia come URL) e la collega sia a un URL che a una pagina wiki. Volendo è possibile ridimensionarla. Nel caso non venga fornito il parametro "target" il collegamento punterà all'immagine stessa. || Vedi /AllegaImmagine ||
||||||{{{<<Icon(image)>>}}} ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;">Mostra icone di sistema || Vedi AiutoSuNavigazione ||
||||||{{{<<UserPreferences>>}}} ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;">Mostra un dialogo con le preferenze utente || Vedi PreferenzeUtente ||
||||||{{{<<UserPreferences(createonly)>>}}} ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;">Mostra un dialogo per la creazione utente || ||
||||||{{{<<BR>>}}} ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;">Forza un a-capo ||Prima riga<<BR>>seconda riga ||
||||||{{{<<RandomQuote(pagename)>>}}} ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;">Seleziona una parte di testo a caso della pagina indicata o da {{{FortuneCookies}}} se questa viene omessa || <<RandomQuote>> ||
||||||{{{<<Include(HelloWorld[,"heading"[,level]])>>}}} ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;">Include i conenuti di un'altra pagina || Per dettagli vedi [[/Includi]] ||
||||||{{{<<FootNote(text)>>}}} ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;">Aggiunge una nota a fondo pagina<<FootNote(Il testo non può contenere alcuna formattazione wiki)>> oppure mostra tutte le note a piè di pagina se non viene fornito un argomento || Vedi l'esempio a fine pagina ||
||||||{{{<<Date(timestamp)>>}}} ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;">Mostra la data come da impostazioni di sistema || <<Date>> ||
||||||{{{<<DateTime(timestamp)>>}}} ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;">Mostra data e ora<<FootNote("timestamp" può essere vuoto (ora attuale), un numero di secondi dal 1970 (unix timestamp) o una specifica temporale W3C ("2002-01-23T12:34:56"). Vedi RFC822, sez. 5. )>> come da impostazioni utente || <<DateTime>> ||
||||||{{{<<GetText(text)>>}}} ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;">Carica le traduzioni I18N (per utilizzi su pagine di Aiuto) || "Edit``Text" viene tradotto in "<<GetText(EditText)>>" ||
||||||{{{<<GetText2(,message,argument1,argument2,...)>>}}} ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;">Carica le traduzioni I18N (per utilizzi su pagine di aiuto o su pagine wiki con output generato) e sostituisce `%s` nel messaggio a seconda degli argomenti. Il primo carattere dell'argomento è utilizzato come separatore (in questo esempio: una virgola). Si può evitare il separatore utilizzando una barra rovescia. || "`<<GetText2(,[You may not read %s],FooBar)>>`" diventa "<<GetText2(,[You may not read %s],FooBar)>>" ||
||||||{{{<<TeudView>>}}} ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;">Utile per wiki di sviluppo su intranet, per visualizzare documentazione pydoc formattata con un foglio di stile XSLT || Vedi http://twistedmatrix.com/wiki/python/TeudProject ||
||||||{{{<<MailTo(email)>>}}} ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;">Protegge il tuo indirizzo email dagli ''spam bot'' ||Per dettagli vedi /MailTo ||
||||||{{{<<NewPage(PageTemplate,ButtonLabel,[ParentPage,@ME,@SELF] [,NameTemplate])>>}}} ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;">Permette agli utenti di creare con facilità (sotto-) pagine, usando la pagina {{{PageTemplate}}} come modello per una nuova pagina e la stringa {{{NameTemplate}}} come maschera per il nome.<<FootNote(`NameTemplate` viene formattato come `time.strftime()`, con l'eccezzione che `%s` viene sostituito da quanto inserito nel riquadro di modifica (che viene mostrato solo se richiesto). Se "NameTemplate" non viene specificato o è vuoto, viene sostituito di default con `%s`.)>> `@ME` viene utilizzato se si vuole creare la pagina come sotto pagina della pagina personale. `@SELF` viene utilizzato per creare una sotto pagina sotto la pagina dalla quale viene invocata la macro. || <<NewPage(CategoryTemplate, Crea la nuova Categoria,,Category%s)>> ||
||||||{{{<<GetVal(NeatSnippets,regards)>>}}} ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;">Restituisce il corrispondente trovato nelle pagine dizionario. || Nel caso esistesse una pagina GermanDict contenente la voce ''Test'', dovresti vederne la traduzione qui: <<GetVal(GermanDict,Test)>> ||
||||||{{{ <<MonthCalendar(,,12)>>}}} ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;">Mostra un calendario e crea i collegamenti per ogni giorno in sottopagine || Vedi /CalendarioMensile ||

<<FootNote>>

=== Scrivere una macro ===

Creare un file python di nome {{{MacroName.py}}} nella directory {{{data/plugin/macro}}}. Assicurarsi che abbia un solo metodo chiamato {{{execute(macro, arguments)}}} che ne costituisce il punto di ingresso.

 * ''macro'' è un'istanza di classe Macro e viene valorizzata in una stringa col nomemacro.
 * ''arguments'' è una stringa arbitraria di argomento che è possibile passare insieme ai parametri alla macro.
Tutte le istanze {{{Macro}}} hanno un oggetto {{{request}}} attraverso il quale accedere ai parametri e alle altre informazioni legate all'interazione con l'utente.

{{{execute()}}} dovrebbe utilizzare il formattatore per costruire una formattazione valida per il formato finale attuale. Nella maggior parte dei casi questo è HTML, per cui scrivere una  macro che restituisce dell'HTML funzionerà nella maggior parte dei casi ma fallirà nel caso siano richiesti formati come XML o {{{text/plain}}}.

Per esempio, se nella pagina wiki c'è la seguente riga:

{{{
<<MacroName(arg1,arg2,arg3)>>
}}}

È possibile scrivere un file !MacroName.py come questo:

{{{
#!python
Dependencies = []
def execute(macro, args):
    return macro.formatter.text("Ho ricevuto questi argomenti da una macro %s: %s" %
    (str(macro), args))
}}}
 . /!\ Aggiungere una voce in {{{Dependencies}}} se l'output della macro non dovesse rimanere nella cache. Questo è importante nel caso in cui l'output della macro potesse cambiare, per esempio se la macro effettua una ricerca su pagine wiki che possono essere state modificate da altri utenti o carica informazioni da un database esterno il cui contenuto può cambiare. In questo caso il valore di ogni voce non ha importanza e può essere considerato una descrizione abbreviata del "perchè i risultati di questa macro non dovrebbero restare in cache". Controllare in altre macro per trovare casi più interessanti.
