##acl
##master-page:HelpOnMacros
##master-date:None
#acl -All:write Default
#format wiki
#language fi
<<Navigation(children)>> 
<<BR>><<BR>>
<<TableOfContents>>

== Makrot ==

Makrot mahdollistavat järjestelmätoimintojen sisällyttämisen sivujen sisältöön. Hyviä esimerkkejä makrojen hyötykäytöstä löytyy sivuilta UusimmatMuutokset ja JärjestelmäTiedot.

Lisätietoja merkintätavoista löytyy sivulta OhjeMuokkauksesta.

=== Hakumakrot ===
MoinMoin käyttää hakukonetta, joka mahdollistaa hakujen suorittamisen käyttämällä yläreunan hakutoimintoa, SivuHaku''''''a tai sisällyttämällä hakumakroja sivulle. Lisätietoja löytyy sivulta OhjeHakemisesta.

||||||'''Makro''' ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;"> '''Kuvaus''' ||'''Esimerkki''' ||
||||||`<<AdvancedSearch>>` ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;"> luo laajennetun hakukentän sivulle || Katso SivuHaku ||
||||||`<<TitleSearch>>` ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;"> luo sivulle hakukentän, jonka avulla voi etsiä sivujen nimistä || Katso SivuHaku ||
||||||`<<FullSearch>>` ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;"> luo sivulle hakukentän, jonka avulla voi etsiä sivujen sisällöstä || Katso SivuHaku ||
||||||`<<FullSearch()>>` ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;"> luetteloi sivut, joiden sisältö vastaa nykyisen sivun nimeä (kuten napsauttaessa yläreunasta sivun nimeä) || Katso KategoriaKategoria ||
||||||`<<FullSearch(hakuehto)>>` ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;"> luetteloi sivut, joiden sisällöstä löytyy sana hakuehto || ||
||||||`<<FullSearchCached(hakuehto)>>` ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;"> toimii kuten {{{FullSearch}}}, mutta tulokset haetaan välimuistista (ovat staattisia). käytä jos nopeus on tärkeämpää kuin ajantasaiset tulokset || ||
||||||`<<GoTo>>` ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;"> siirtyy suoraan halutulle sivulle || Katso SivuHaku ||
||||||`<<PageList(Ohje)>>` ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;"> luetteloi sivut, joiden nimessä esiintyy sana Ohje || Katso OhjeHakemisto ||


=== Navigointi ===
||||||'''Makro''' ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;"> '''Kuvaus''' ||'''Esimerkki''' ||
||||||`<<RecentChanges>>` ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;"> luetteloi uusimmat muutokset || Katso UusimmatMuutokset ||
||||||`<<TitleIndex>>` ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;"> luetteloi wikin kaikki sivut nimen mukaisesti || Katso SivuHakemisto ||
||||||`<<WordIndex>>` ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;"> luetteloi kaikki wikin sivujen nimissä esiintyvät sanat || Katso SanaHakemisto ||
||||||`<<WantedPages>>` ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;"> luetteloi sivut, joille johtaa joltain toiselta sivulta linkki, mutta joita ei ole vielä luotu || Katso KaivatutSivut ||
||||||`<<OrphanedPages>>` ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;"> luetteloi sivut, jotka ovat olemassa, mutta joille ei johda linkkiä miltään sivulta || Katso OrvotSivut ||
||||||`<<AbandonedPages>>` ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;"> luetteloi sivut, joita ei ole muokattu pitkään aikaan || Katso HylätytSivut ||
||||||`<<RandomPage>>` ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;"> luo linkin satunnaiselle sivulle || <<RandomPage>> ||
||||||`<<RandomPage(#)>>` ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;"> luo linkit halutulle määrälle satunnaisia sivuja || Kaksi satunnaista sivua:<<RandomPage(2)>> ||
||||||`<<TableOfContents([maxdepth])>>` ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;"> luo sisällysluettelon sivusta. tasojen määrää on mahdollista rajoittaa || Katso sivun yläosa ||
||||||`<<Anchor(anchorname)>>` ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;"> luo nykyiselle sivulle ankkurin || <<Anchor(ankkuri)>>#ankkuri ||
||||||`<<Navigation(children[,maxdepth])>>` ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;"> luetteloi kaikki nykyisen sivun alasivut || Katso sivun yläosa ||
||||||`<<Navigation(siblings[,maxdepth])>>` ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;"> quick navigation to siblings of a page || See /MailTo ||
||||||`<<Navigation(slideshow)>>` ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;"> luo linkin, jonka avulla voi vaihdella diaesityksen ja wikin välillä. luo myös linkin diaesityksen alkuun || Katso OhjeDiaEsityksistä ||
||||||`<<Navigation(slides)>>` ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;"> näyttää linkit ensimmäinen/edellinen/seuraava/viimeinen || Katso OhjeDiaEsityksistä ||
||||||`<<AttachInfo>>` ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;"> luetteloi nykyisen sivun liitetiedostojen lukumäärän || Katso HelpOnActions/AttachFile ||
||||||`<<AttachInfo(SivunNimi)>>` ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;"> luetteloi sivun !SivunNimi liitetiedostojen lukumäärän || Katso HelpOnActions/AttachFile ||
||||||`<<AttachList(SivunNimi,mimetype)>>` ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;"> luetteloi sivun !SivunNimi liitetiedostot ja niiden tyypit || Katso HelpOnActions/AttachFile ||

=== Järjestelmätiedot ===
||||||'''Makro''' ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;"> '''Kuvaus''' ||'''Esimerkki''' ||
||||||`<<InterWiki>>` ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;"> luetteloi kaikki [[InterWikit| InterWiki-sivut]] || InterWikit ||
||||||`<<SystemInfo>>` ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;"> tietoa wikistä, Pythonista ja palvelimesta || JärjestelmäTiedot ||
||||||`<<PageCount(exists)>>` ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;"> current page count. If {{{exists}}} is supplied as an argument, only existing pages will be shown. || <<PageCount>> pages ||
||||||`<<PageSize>>` ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;"> luetteloi kaikki sivut ja niiden koot kilotavuina || SivuKoko ||
||||||`<<StatsChart(type)>>` ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;"> shows statistical charts (currently defined types: hitcounts, pagesize, useragents) || See EventStats and subpages ||
||||||`<<SystemAdmin>>` ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;"> tietoa ylläpitäjille || tunnuksellasi tulee olla superuser-oikeudet, jotta voit käyttää tätä makroa <<BR>> <<SystemAdmin>> ||
||||||`<<EditedSystemPages>>` ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;"> luettelo kaikista järjestelmäsivuista, joita on muokattu || <<EditedSystemPages>> ||

=== Muita makroja ===
||||||'''Makro''' ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;"> '''Kuvaus''' ||'''Esimerkki''' ||
||||||`<<Action(action [,text])>>` ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;">links to page with valid action, optional text could be used as alias. (action names are case sensitive)||  e.g. `<<Action(print, Print this page)>>`, <<Action(print, Print this page)>>||
||||||`<<ImageLink(image,target[,width=width[,height=height]][,alt=alttag])>>` ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;"> This macro is used to make a link that displays an image (can be given as either attachment or URL) and links to either an URL or a wiki page. Optionally the size of the image can be adjusted. If no target is given the link will point to the image itself. || See /ImageLink ||
||||||`<<Icon(image)>>` ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;">display system icons ||  Katso OhjeNavigoinnista ||
||||||`<<UserPreferences>>` ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;"> display a user preferences dialog || Katso KäyttäjäAsetukset ||
||||||`<<UserPreferences(createonly)>>` ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;"> display user creation dialog || ||
||||||`<<BR>>` ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;"> luo rivivälin || ensimmäinen rivi<<BR>>toinen rivi ||
||||||`<<RandomQuote(pagename)>>` ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;"> Select a random quote from the given page, or from {{{FortuneCookies}}} if omitted || <<RandomQuote>> ||
||||||`<<Include(HelloWorld[,"heading"[,level]])>>` ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;"> sisällyttää toisen sivun sisällön || katso [[/Include]] ||
||||||`<<FootNote(text)>>` ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;"> Add a footnote<<FootNote(the text cannot contain any wiki markup)>>, or explicitly display collected footnotes when no args are given || See below for an example. ||
||||||`<<Date(timestamp)>>` ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;"> näyttää aikaleiman järjestelmän asetusten mukaisesti || <<Date>> ||
||||||`<<DateTime(timestamp)>>` ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;"> display a timestamp<<FootNote("timestamp" can be empty (current time), a number of seconds since 1970 (unix timestamp), or a W3C time specification ("2002-01-23T12:34:56"). See RFC822, sect. 5. )>> according to user settings || <<DateTime>> ||
||||||`<<GetText(text)>>` ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;"> loads I18N texts (mainly intended for use on Help pages) || "Edit``Text" is translated to "<<GetText(EditText)>>" ||
||||||`<<GetText2(,message,argument1,argument2,...)>>` ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;"> loads I18N texts (mainly intended for use on Help pages or in generated output on wiki pages) and replaces `%s` in the message by the arguments. The first character of the argument is used as the separator (in this example: a comma). You can escape the separator by using a backslash. || "`<<GetText2(,[You may not read %s],FooBar)>>`" yields "<<GetText2(,[You may not read %s],FooBar)>>" ||
||||||`<<TeudView>>` ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;"> useful for intranet developer wikis, a means to view pydoc documentation, formatted via a XSLT stylesheet || See http://twistedmatrix.com/wiki/python/TeudProject ||
||||||`<<MailTo(email)>>` ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;"> suojaa sähköpostiosoitteesi roskapostiroboteilta || katso /MailTo ||
||||||`<<NewPage(PageTemplate,ButtonLabel,[ParentPage,@ME,@SELF] [,NameTemplate])>>` ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;"> Allow the user to create (sub-) pages easily, using the page {{{PageTemplate}}}as the template for the new page and the string {{{NameTemplate}}} as a template for the name.<<FootNote(`NameTemplate` is formatted with `time.strftime()`, with the exception of `%s` which is replaced by the input into the edit box (which is only shown if necessary). If `NameTemplate` is not specified or empty, it defaults to `%s`.)>> `@ME` is used if you want the  page created below the users homepage. `@SELF` is used to create a subpage below the page where it is called from. || <<NewPage(CategoryTemplate, Create new category,,Category%s)>> ||
||||||`<<GetVal(NeatSnippets,regards)>>` ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;"> Retrieve dictionary entries from dict pages. || If you have a page called GermanDict which contains the entry ''Test'', you should see the translation here: <<GetVal(GermanDict,Test)>> ||
||||||`<<MonthCalendar(,,12)>>` ||
||<5%><<BR>>||<75% style="margin: 10px; vertical-align: top;"> Displays a Calendar and creates link for entries to each day on subpages || See /MonthCalendar ||
<<FootNote>>

=== Omien makrojen luominen ===
Create a python file called {{{MacroName.py}}} located in your {{{data/plugin/macro}}} directory. Ensure it has a single method called {{{execute(macro, arguments)}}}, which is the entry-point.

 * ''macro'' is an instance of class Macro, and also evaluates to a string of the macroname.
 * ''arguments'' is an arbitrary argument string you can pass in with parameters to your macro.
All {{{Macro}}} instances have a {{{request}}} member through which you can access the form parameters and other information related to user interaction.

{{{execute()}}} should use the formatter to construct valid markup for the current target format. In most cases this is HTML, so writing a macro which returns HTML will work in most cases but fail when formats like XML or {{{text/plain}}} are requested.

For example, your wiki page has the following line on it:

{{{
<<MacroName(arg1,arg2,arg3)>>
}}}
You could write a !MacroName.py file like this:

{{{
#!python
Dependencies = []
def execute(macro, args):
    return macro.formatter.text("I got these args from a macro %s: %s" %
    (str(macro), args))
}}}
 . /!\ Add an entry into {{{Dependencies}}} if the output from your macro should not be cached. This is important if the macro output could change from one moment to another, for example if your macro searches in wiki pages which may be being edited by other users, or loads information from an external database whose contents may change. Currently the value of any entry does not matter and may be considered a short description for 'why results from this macro should not be cached', but please look at the entries used in other macros for values which may be suitable.
<<FootNote>>
