Wiki Macros
Trac macros are plugins to extend the Trac engine with custom 'functions' written in Python. A macro inserts dynamic HTML data in any context supporting WikiFormatting.
Another kind of macros are WikiProcessors. They typically deal with alternate markup formats and representation of larger blocks of information (like source code highlighting).
Using Macros
Macro calls are enclosed in two square brackets. Like python functions, macros can also have arguments, a comma separated list within parentheses.
Examples
[[Timestamp]]
Display:
Sun Mar 21 04:27:49 2010
[[HelloWorld(Testing)]]
Display:
Hello World, args = Testing
Available Macros
Note that the following list will only contain the macro documentation if you've not enabled -OO optimizations, or not set the PythonOptimize option for mod_python.
[[InterTrac]]Provide a list of known InterTrac prefixes.
[[TitleIndex]]Inserts an alphabetic list of all wiki pages into the output.
Accepts a prefix string as parameter: if provided, only pages with names that start with the prefix are included in the resulting list. If this parameter is omitted, all pages are listed.
[[RecentChanges]]Lists all pages that have recently been modified, grouping them by the day they were last modified.
This macro accepts two parameters. The first is a prefix string: if provided, only pages with names that start with the prefix are included in the resulting list. If this parameter is omitted, all pages are listed.
The second parameter is a number for limiting the number of pages returned. For example, specifying a limit of 5 will result in only the five most recently changed pages to be included in the list.
[[PageOutline]]Displays a structural outline of the current wiki page, each item in the outline being a link to the corresponding heading.
This macro accepts three optional parameters:
- The first is a number or range that allows configuring the minimum and maximum level of headings that should be included in the outline. For example, specifying "1" here will result in only the top-level headings being included in the outline. Specifying "2-3" will make the outline include all headings of level 2 and 3, as a nested list. The default is to include all heading levels.
- The second parameter can be used to specify a custom title (the default is no title).
- The third parameter selects the style of the outline. This can be either inline or pullout (the latter being the default). The inline style renders the outline as normal part of the content, while pullout causes the outline to be rendered in a box that is by default floated to the right side of the other content.
[[Image]]Embed an image in wiki-formatted text.
The first argument is the file specification. The file specification may reference attachments or files in three ways:
- module:id:file, where module can be either wiki or ticket, to refer to the attachment named file of the specified wiki page or ticket.
- id:file: same as above, but id is either a ticket shorthand or a Wiki page name.
- file to refer to a local attachment named 'file'. This only works from within that wiki page or a ticket.
Also, the file specification may refer to repository files, using the source:file syntax (source:file@rev works also).
The remaining arguments are optional and allow configuring the attributes and style of the rendered <img> element:
- digits and unit are interpreted as the size (ex. 120, 25%) for the image
- right, left, top or bottom are interpreted as the alignment for the image
- nolink means without link to image source.
- key=value style are interpreted as HTML attributes or CSS style
indications for the image. Valid keys are:
- align, border, width, height, alt, title, longdesc, class, id and usemap
- border can only be a number
Examples:
[[Image(photo.jpg)]] # simplest [[Image(photo.jpg, 120px)]] # with size [[Image(photo.jpg, right)]] # aligned by keyword [[Image(photo.jpg, nolink)]] # without link to source [[Image(photo.jpg, align=right)]] # aligned by attributeYou can use image from other page, other ticket or other module.
[[Image(OtherPage:foo.bmp)]] # if current module is wiki [[Image(base/sub:bar.bmp)]] # from hierarchical wiki page [[Image(#3:baz.bmp)]] # if in a ticket, point to #3 [[Image(ticket:36:boo.jpg)]] [[Image(source:/images/bee.jpg)]] # straight from the repository! [[Image(htdocs:foo/bar.png)]] # image file in project htdocs dir.Adapted from the Image.py macro created by Shun-ichi Goto <gotoh@taiyo.co.jp>
[[MacroList]]Displays a list of all installed Wiki macros, including documentation if available.
Optionally, the name of a specific macro can be provided as an argument. In that case, only the documentation for that macro will be rendered.
Note that this macro will not be able to display the documentation of macros if the PythonOptimize option is enabled for mod_python!
[[TracIni]]Produce documentation for Trac configuration file.
Typically, this will be used in the TracIni page. Optional arguments are a configuration section filter, and a configuration option name filter: only the configuration options whose section and name start with the filters are output.
[[NewHack]][[download]][[ref]]Reference section headers in the current page. To refer to the section Using Macros, use
[[ref(Using Macros)]]
[[FootNote]]Collates and generates foot-notes. Call the macro with the foot-note content as the only argument:
[[FootNote(This is a footnote)]]
Foot-notes are numbered by the order in which they appear. To create a reference to an existing foot-note, pass the footnote number as argument to the macro:
[[FootNote(1)]]
In addition, identical foot-notes are coalesced into one entry. The following will generate one footnote entry with two references:
Some text[[FootNote(A footnote)]] and some more text [[FootNote(A footnote)]].
A list of footnotes generated by one or more of the above commands is produced by calling the macro without arguments:
[[FootNote]]
Once a set of footnotes has been displayed, a complete new set of footnotes can be created. This allows multiple sets of footnotes per page.
[[TracGuideToc]]This macro shows a quick and dirty way to make a table-of-contents for a set of wiki pages.
[[Timestamp]]Inserts the current time (in seconds) into the wiki page.
[[HelloWorld]]Example macro.
[[div]]Div wrapping formatter
[[email]]Email wrapping formatter
This macro takes an email message and will wrap lines to 72 characters (default), or a length specified. It will also put the emails inside a preformatted block.
Invocation:
<email stuff here>
To wrap to a specified length, the line imediately following the invocation should contain cols: followed by the number of columns at wich we wrap. For example:
<email stuff here>
It is important that the cols: starts at the beginning of the line and that only a number follows it.
[[Email]]Email wrapping formatter
This macro takes an email message and will wrap lines to 72 characters (default), or a length specified. It will also put the emails inside a preformatted block.
Invocation:
<email stuff here>
To wrap to a specified length, the line imediately following the invocation should contain cols: followed by the number of columns at wich we wrap. For example:
<email stuff here>
It is important that the cols: starts at the beginning of the line and that only a number follows it.
[[ChangeLog]]Provides the macro
[[ChangeLog(path[,limit[,rev]])]]
which dumps the change log for path of revision rev, back limit revisions. "rev" can be 0 for the latest revision.
[[TicketQuery]]Macro that lists tickets that match certain criteria.
This macro accepts two parameters, the second of which is optional.
The first parameter is the query itself, and uses the same syntax as for query: wiki links (but not the variant syntax starting with "?").
The second parameter determines how the list of tickets is presented: the default presentation is to list the ticket ID next to the summary, with each ticket on a separate line. If the second parameter is given, it must be one of:
- compact -- the tickets are presented as a comma-separated list of ticket IDs.
- count -- only the count of matching tickets is displayed
[[scm]]Syntax highlighting for Scheme using Pygments
[[ragel-java]]Syntax highlighting for Ragel in Java Host using Pygments
[[objc]]Syntax highlighting for Objective-C using Pygments
[[javascript+erb]]Syntax highlighting for JavaScript?+Ruby using Pygments
[[antlr-as]]Syntax highlighting for ANTLR With ActionScript? Target using Pygments
[[antlr]]Syntax highlighting for ANTLR using Pygments
[[text]]Syntax highlighting for Text only using Pygments
[[llvm]]Syntax highlighting for LLVM using Pygments
[[rest]]Syntax highlighting for reStructuredText using Pygments
[[html+ruby]]Syntax highlighting for RHTML using Pygments
[[newspeak]]Syntax highlighting for Newspeak using Pygments
[[pascal]]Syntax highlighting for Delphi using Pygments
[[xml+genshi]]Syntax highlighting for Genshi using Pygments
[[javascript+php]]Syntax highlighting for JavaScript?+PHP using Pygments
[[genshi]]Syntax highlighting for Genshi using Pygments
[[mysql]]Syntax highlighting for MySQL using Pygments
[[trac-wiki]]Syntax highlighting for MoinMoin/Trac? Wiki markup using Pygments
[[xml]]Syntax highlighting for XML using Pygments
[[javascript+django]]Syntax highlighting for JavaScript?+Django/Jinja using Pygments
[[console]]Syntax highlighting for Bash Session using Pygments
[[html+spitfire]]Syntax highlighting for HTML+Cheetah using Pygments
[[clj]]Syntax highlighting for Clojure using Pygments
[[restructuredtext]]Syntax highlighting for reStructuredText using Pygments
[[antlr-cpp]]Syntax highlighting for ANTLR With CPP Target using Pygments
[[xml+evoque]]Syntax highlighting for XML+Evoque using Pygments
[[fortran]]Syntax highlighting for Fortran using Pygments
[[pycon]]Syntax highlighting for Python console session using Pygments
[[logtalk]]Syntax highlighting for Logtalk using Pygments
[[matlab]]Syntax highlighting for Matlab using Pygments
[[css+mako]]Syntax highlighting for CSS+Mako using Pygments
[[erlang]]Syntax highlighting for Erlang using Pygments
[[vbnet]]Syntax highlighting for VB.net using Pygments
[[aconf]]Syntax highlighting for ApacheConf? using Pygments
[[xml+cheetah]]Syntax highlighting for XML+Cheetah using Pygments
[[ragel-cpp]]Syntax highlighting for Ragel in CPP Host using Pygments
[[python]]Syntax highlighting for Python using Pygments
[[sqlite3]]Syntax highlighting for sqlite3con using Pygments
[[html+evoque]]Syntax highlighting for HTML+Evoque using Pygments
[[aspx-vb]]Syntax highlighting for aspx-vb using Pygments
[[antlr-actionscript]]Syntax highlighting for ANTLR With ActionScript? Target using Pygments
[[matlabsession]]Syntax highlighting for Matlab session using Pygments
[[antlr-perl]]Syntax highlighting for ANTLR With Perl Target using Pygments
[[python3]]Syntax highlighting for Python 3 using Pygments
[[bbcode]]Syntax highlighting for BBCode using Pygments
[[bat]]Syntax highlighting for Batchfile using Pygments
[[lighty]]Syntax highlighting for Lighttpd configuration file using Pygments
[[js+genshitext]]Syntax highlighting for JavaScript?+Genshi Text using Pygments
[[d]]Syntax highlighting for D using Pygments
[[antlr-java]]Syntax highlighting for ANTLR With Java Target using Pygments
[[abap]]Syntax highlighting for ABAP using Pygments
[[c++]]Syntax highlighting for C++ using Pygments
[[modelica]]Syntax highlighting for Modelica using Pygments
[[man]]Syntax highlighting for Groff using Pygments
[[html+erb]]Syntax highlighting for RHTML using Pygments
[[squidconf]]Syntax highlighting for SquidConf? using Pygments
[[befunge]]Syntax highlighting for Befunge using Pygments
[[ragel]]Syntax highlighting for Ragel using Pygments
[[antlr-objc]]Syntax highlighting for ANTLR With ObjectiveC Target using Pygments
[[evoque]]Syntax highlighting for Evoque using Pygments
[[cfg]]Syntax highlighting for INI using Pygments
[[apacheconf]]Syntax highlighting for ApacheConf? using Pygments
[[html+myghty]]Syntax highlighting for HTML+Myghty using Pygments
[[tex]]Syntax highlighting for TeX using Pygments
[[ragel-ruby]]Syntax highlighting for Ragel in Ruby Host using Pygments
[[html+kid]]Syntax highlighting for HTML+Genshi using Pygments
[[html+mako]]Syntax highlighting for HTML+Mako using Pygments
[[html+jinja]]Syntax highlighting for HTML+Django/Jinja using Pygments
[[ragel-rb]]Syntax highlighting for Ragel in Ruby Host using Pygments
[[mxml]]Syntax highlighting for MXML using Pygments
[[javascript+genshi]]Syntax highlighting for JavaScript?+Genshi Text using Pygments
[[as3]]Syntax highlighting for ActionScript? 3 using Pygments
[[javascript+ruby]]Syntax highlighting for JavaScript?+Ruby using Pygments
[[groff]]Syntax highlighting for Groff using Pygments
[[html+django]]Syntax highlighting for HTML+Django/Jinja using Pygments
[[cython]]Syntax highlighting for Cython using Pygments
[[splus]]Syntax highlighting for S using Pygments
[[scala]]Syntax highlighting for Scala using Pygments
[[udiff]]Syntax highlighting for Diff using Pygments
[[delphi]]Syntax highlighting for Delphi using Pygments
[[js+smarty]]Syntax highlighting for JavaScript?+Smarty using Pygments
[[js]]Syntax highlighting for JavaScript? using Pygments
[[c-objdump]]Syntax highlighting for c-objdump using Pygments
[[lua]]Syntax highlighting for Lua using Pygments
[[html+php]]Syntax highlighting for HTML+PHP using Pygments
[[javascript+mako]]Syntax highlighting for JavaScript?+Mako using Pygments
[[js+jinja]]Syntax highlighting for JavaScript?+Django/Jinja using Pygments
[[redcode]]Syntax highlighting for Redcode using Pygments
[[rb]]Syntax highlighting for Ruby using Pygments
[[irb]]Syntax highlighting for Ruby irb session using Pygments
[[irc]]Syntax highlighting for IRC logs using Pygments
[[bf]]Syntax highlighting for Brainfuck using Pygments
[[antlr-csharp]]Syntax highlighting for ANTLR With C# Target using Pygments
[[javascript+cheetah]]Syntax highlighting for JavaScript?+Cheetah using Pygments
[[xslt]]Syntax highlighting for XSLT using Pygments
[[common-lisp]]Syntax highlighting for Common Lisp using Pygments
[[vala]]Syntax highlighting for Vala using Pygments
[[js+erb]]Syntax highlighting for JavaScript?+Ruby using Pygments
[[basemake]]Syntax highlighting for Makefile using Pygments
[[html+smarty]]Syntax highlighting for HTML+Smarty using Pygments
[[myghty]]Syntax highlighting for Myghty using Pygments
[[octave]]Syntax highlighting for Matlab using Pygments
[[apache]]Syntax highlighting for ApacheConf? using Pygments
[[javascript+myghty]]Syntax highlighting for JavaScript?+Myghty using Pygments
[[bash]]Syntax highlighting for Bash using Pygments
[[jinja]]Syntax highlighting for Django/Jinja using Pygments
[[literate-haskell]]Syntax highlighting for Literate Haskell using Pygments
[[c]]Syntax highlighting for C using Pygments
[[vb.net]]Syntax highlighting for VB.net using Pygments
[[js+ruby]]Syntax highlighting for JavaScript?+Ruby using Pygments
[[ragel-em]]Syntax highlighting for Embedded Ragel using Pygments
[[ocaml]]Syntax highlighting for OCaml using Pygments
[[javascript]]Syntax highlighting for JavaScript? using Pygments
[[s]]Syntax highlighting for S using Pygments
[[css+smarty]]Syntax highlighting for CSS+Smarty using Pygments
[[css+genshitext]]Syntax highlighting for CSS+Genshi Text using Pygments
[[nroff]]Syntax highlighting for Groff using Pygments
[[clojure]]Syntax highlighting for Clojure using Pygments
[[glsl]]Syntax highlighting for GLSL using Pygments
[[xml+myghty]]Syntax highlighting for XML+Myghty using Pygments
[[spitfire]]Syntax highlighting for Cheetah using Pygments
[[cl]]Syntax highlighting for Common Lisp using Pygments
[[pov]]Syntax highlighting for POVRay using Pygments
[[pot]]Syntax highlighting for Gettext Catalog using Pygments
[[js+genshi]]Syntax highlighting for JavaScript?+Genshi Text using Pygments
[[smarty]]Syntax highlighting for Smarty using Pygments
[[vim]]Syntax highlighting for VimL using Pygments
[[haskell]]Syntax highlighting for Haskell using Pygments
[[yaml]]Syntax highlighting for YAML using Pygments
[[dpatch]]Syntax highlighting for Darcs Patch using Pygments
[[diff]]Syntax highlighting for Diff using Pygments
[[js+django]]Syntax highlighting for JavaScript?+Django/Jinja using Pygments
[[rbcon]]Syntax highlighting for Ruby irb session using Pygments
[[bsdmake]]Syntax highlighting for Makefile using Pygments
[[xml+jinja]]Syntax highlighting for XML+Django/Jinja using Pygments
[[java]]Syntax highlighting for Java using Pygments
[[vapi]]Syntax highlighting for Vala using Pygments
[[js+mako]]Syntax highlighting for JavaScript?+Mako using Pygments
[[py]]Syntax highlighting for Python using Pygments
[[makefile]]Syntax highlighting for Makefile using Pygments
[[perl]]Syntax highlighting for Perl using Pygments
[[rebol]]Syntax highlighting for REBOL using Pygments
[[squid.conf]]Syntax highlighting for SquidConf? using Pygments
[[xml+ruby]]Syntax highlighting for XML+Ruby using Pygments
[[scheme]]Syntax highlighting for Scheme using Pygments
[[numpy]]Syntax highlighting for NumPy? using Pygments
[[po]]Syntax highlighting for Gettext Catalog using Pygments
[[pl]]Syntax highlighting for Perl using Pygments
[[ragel-c]]Syntax highlighting for Ragel in C Host using Pygments
[[py3]]Syntax highlighting for Python 3 using Pygments
[[antlr-python]]Syntax highlighting for ANTLR With Python Target using Pygments
[[ragel-d]]Syntax highlighting for Ragel in D Host using Pygments
[[xml+mako]]Syntax highlighting for XML+Mako using Pygments
[[c#]]Syntax highlighting for C# using Pygments
[[hs]]Syntax highlighting for Haskell using Pygments
[[js+php]]Syntax highlighting for JavaScript?+PHP using Pygments
[[pytb]]Syntax highlighting for Python Traceback using Pygments
[[lighttpd]]Syntax highlighting for Lighttpd configuration file using Pygments
[[xml+spitfire]]Syntax highlighting for XML+Cheetah using Pygments
[[css+ruby]]Syntax highlighting for CSS+Ruby using Pygments
[[javascript+spitfire]]Syntax highlighting for JavaScript?+Cheetah using Pygments
[[rst]]Syntax highlighting for reStructuredText using Pygments
[[moin]]Syntax highlighting for MoinMoin/Trac? Wiki markup using Pygments
[[cpp-objdump]]Syntax highlighting for cpp-objdump using Pygments
[[ruby]]Syntax highlighting for Ruby using Pygments
[[objectivec]]Syntax highlighting for Objective-C using Pygments
[[genshitext]]Syntax highlighting for Genshi Text using Pygments
[[xml+smarty]]Syntax highlighting for XML+Smarty using Pygments
[[javascript+smarty]]Syntax highlighting for JavaScript?+Smarty using Pygments
[[mf]]Syntax highlighting for Makefile using Pygments
[[css+jinja]]Syntax highlighting for CSS+Django/Jinja using Pygments
[[rhtml]]Syntax highlighting for RHTML using Pygments
[[cxx-objdump]]Syntax highlighting for cpp-objdump using Pygments
[[objective-c]]Syntax highlighting for Objective-C using Pygments
[[obj-c]]Syntax highlighting for Objective-C using Pygments
[[aspx-cs]]Syntax highlighting for aspx-cs using Pygments
[[r]]Syntax highlighting for S using Pygments
[[xml+erb]]Syntax highlighting for XML+Ruby using Pygments
[[csharp]]Syntax highlighting for C# using Pygments
[[erb]]Syntax highlighting for ERB using Pygments
[[erl]]Syntax highlighting for Erlang erl session using Pygments
[[css+genshi]]Syntax highlighting for CSS+Genshi Text using Pygments
[[prolog]]Syntax highlighting for Prolog using Pygments
[[control]]Syntax highlighting for Debian Control file using Pygments
[[css+erb]]Syntax highlighting for CSS+Ruby using Pygments
[[squid]]Syntax highlighting for SquidConf? using Pygments
[[raw]]Syntax highlighting for Raw token data using Pygments
[[as]]Syntax highlighting for ActionScript? using Pygments
[[php4]]Syntax highlighting for PHP using Pygments
[[brainfuck]]Syntax highlighting for Brainfuck using Pygments
[[ini]]Syntax highlighting for INI using Pygments
[[io]]Syntax highlighting for Io using Pygments
[[mupad]]Syntax highlighting for MuPAD using Pygments
[[js+myghty]]Syntax highlighting for JavaScript?+Myghty using Pygments
[[css+myghty]]Syntax highlighting for CSS+Myghty using Pygments
[[smalltalk]]Syntax highlighting for Smalltalk using Pygments
[[mako]]Syntax highlighting for Mako using Pygments
[[pas]]Syntax highlighting for Delphi using Pygments
[[csh]]Syntax highlighting for Tcsh using Pygments
[[gnuplot]]Syntax highlighting for Gnuplot using Pygments
[[javascript+jinja]]Syntax highlighting for JavaScript?+Django/Jinja using Pygments
[[xml+kid]]Syntax highlighting for Genshi using Pygments
[[make]]Syntax highlighting for Makefile using Pygments
[[minid]]Syntax highlighting for MiniD using Pygments
[[css+django]]Syntax highlighting for CSS+Django/Jinja using Pygments
[[javascript+genshitext]]Syntax highlighting for JavaScript?+Genshi Text using Pygments
[[sourceslist]]Syntax highlighting for Debian Sourcelist using Pygments
[[html]]Syntax highlighting for HTML using Pygments
[[php5]]Syntax highlighting for PHP using Pygments
[[actionscript]]Syntax highlighting for ActionScript? using Pygments
[[html+cheetah]]Syntax highlighting for HTML+Cheetah using Pygments
[[cheetah]]Syntax highlighting for Cheetah using Pygments
[[css+php]]Syntax highlighting for CSS+PHP using Pygments
[[css]]Syntax highlighting for CSS using Pygments
[[php3]]Syntax highlighting for PHP using Pygments
[[pyx]]Syntax highlighting for Cython using Pygments
[[d-objdump]]Syntax highlighting for d-objdump using Pygments
[[tcsh]]Syntax highlighting for Tcsh using Pygments
[[gas]]Syntax highlighting for GAS using Pygments
[[objdump]]Syntax highlighting for objdump using Pygments
[[boo]]Syntax highlighting for Boo using Pygments
[[actionscript3]]Syntax highlighting for ActionScript? 3 using Pygments
[[sources.list]]Syntax highlighting for Debian Sourcelist using Pygments
[[py3tb]]Syntax highlighting for Python 3.0 Traceback using Pygments
[[jsp]]Syntax highlighting for Java Server Page using Pygments
[[sql]]Syntax highlighting for SQL using Pygments
[[squeak]]Syntax highlighting for Smalltalk using Pygments
[[js+spitfire]]Syntax highlighting for JavaScript?+Cheetah using Pygments
[[php]]Syntax highlighting for PHP using Pygments
[[antlr-c#]]Syntax highlighting for ANTLR With C# Target using Pygments
[[kid]]Syntax highlighting for Genshi using Pygments
[[antlr-ruby]]Syntax highlighting for ANTLR With Ruby Target using Pygments
[[latex]]Syntax highlighting for TeX using Pygments
[[dylan]]Syntax highlighting for Dylan using Pygments
[[c++-objdumb]]Syntax highlighting for cpp-objdump using Pygments
[[nginx]]Syntax highlighting for Nginx configuration file using Pygments
[[xml+php]]Syntax highlighting for XML+PHP using Pygments
[[ragel-objc]]Syntax highlighting for Ragel in Objective C Host using Pygments
[[antlr-rb]]Syntax highlighting for ANTLR With Ruby Target using Pygments
[[django]]Syntax highlighting for Django/Jinja using Pygments
[[js+cheetah]]Syntax highlighting for JavaScript?+Cheetah using Pygments
[[objectpascal]]Syntax highlighting for Delphi using Pygments
[[sh]]Syntax highlighting for Bash using Pygments
[[lhs]]Syntax highlighting for Literate Haskell using Pygments
[[xml+django]]Syntax highlighting for XML+Django/Jinja using Pygments
[[cpp]]Syntax highlighting for C++ using Pygments
[[html+genshi]]Syntax highlighting for HTML+Genshi using Pygments
[[tcl]]Syntax highlighting for Tcl using Pygments
[[moocode]]Syntax highlighting for MOOCode using Pygments
[[applescript]]Syntax highlighting for AppleScript? using Pygments
[[nasm]]Syntax highlighting for NASM using Pygments
[[redirect]]Redirect: Redirection for Trac
Purpose and Usage
The redirect wiki macro provides redirect functionality for Trac with backlink support. It takes a qualified TracLink (type:id) as argument, e.g. wiki:SandBox, source:README or ticket:123. Users with a JavaScript?-enabled browser will get redirected to the page specified by this shortlink.
Installation
See http://projects.edgewall.com/trac/wiki/TracPlugins.
Author and license
Copyright 2005, 2006
- Bernhard Haumacher (haui at haumacher.de)
- Thomas Moschny (moschny at ipd.uni-karlsruhe.de)
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Additional information
Please visit: http://svn.ipd.uka.de/trac/javaparty/wiki/TracRedirect.
[[TOC]]Generate a table of contents for the current page or a set of pages. If no arguments are given, a table of contents is generated for the current page, with the top-level title stripped:
[[TOC]]
To generate a table of contents for a set of pages, simply pass them as comma separated arguments to the TOC macro, e.g. as in
[[TOC(TracGuide, TracInstall, TracUpgrade, TracIni, TracAdmin, TracBackup, TracLogging, TracPermissions, TracWiki, WikiFormatting, TracBrowser, TracRoadmap, TracChangeset, TracTickets, TracReports, TracQuery, TracTimeline, TracRss, TracNotification)]]The following control arguments change the default behaviour of the TOC macro:
Argument Meaning heading=<x> Override the default heading of "Table of Contents" noheading Suppress display of the heading. depth=<n> Display headings of subsequent pages to a maximum depth of <n>. inline Display TOC inline rather than as a side-bar. titleindex Only display the page name and title of each page, similar to TitleIndex. Note that the current page must also be specified if individual wiki pages are given in the argument list.
[[TagCloud]]This macro displays a tag cloud (weighted list) of all tags.
Argument Description tagspace=<tagspace> Specify the tagspace the macro should operate on. tagspaces=(<tagspace>,...) Specify a set of tagspaces the macro should operate on. smallest=<n> The lower bound of the font size for the tag cloud. biggest=<n> The upper bound of the font size for the tag cloud. showcount=true|false Show the count of objects for each tag? mincount=<n> Hide tags with a count less than <n>. [[ListTagged]]List tagged objects. Optionally accepts a list of tags to match against. The special tag . (dot) inserts the current Wiki page name.
[[ListTagged(<tag>, ...)]]
Argument Description tagspace=<tagspace> Specify the tagspace the macro should operate on. tagspaces=(<tagspace>,...) Specify a set of tagspaces the macro should operate on. operation=intersection|union The set operation to perform on the discovered objects. showheadings=true|false List objects under the tagspace they occur in. expression=<expr> Match object tags against the given expression. The supported expression operators are: unary - (not); binary +, - and | (and, and not, or). All values in the expression are treated as tags. Any tag not in the same form as a Python variable must be quoted.
eg. Match all objects tagged with ticket and workflow, and not tagged with wiki or closed.
(ticket+workflow)-(wiki|closed)
If an expression is provided operation is ignored.
[[TagIt]]Deprecated. Does nothing.
[[ListTags]]List all tags.
Argument Description tagspace=<tagspace> Specify the tagspace the macro should operate on. tagspaces=(<tagspace>,...) Specify a set of tagspaces the macro should operate on. shownames=true|false Whether to show the objects that tags appear on (long). [[Poll]]Add a poll. Each argument must be separated by a semi-colon (;) or new-line (if used as a processor). The first argument is the title of the poll, which is also the identifier for each poll.
Usage: [[TicketPoll(<title>; <arg> [; <arg>] ...)]]
Where <arg> conforms to the following:
<arg> Description query:<ticket-query> Add tickets from a query to the poll. #<n> Add an individual ticket to the poll. <text> A poll question. eg.
[[BlogShow]]Displays a blog based on tags
The list of tags to be shown can be specified as arguments to the macro. If no tags are specified as parameters, then the default 'blog' tag is used.
Because any wiki page can be a blog entry,it is suggested that one uses a unique tag for any page that should appear in the blog, such as the tag: 'blog' (the default).
The following options can be specified:
union - Specify whether the join for the tags listed should be a union or intersection(default).
num_posts - Number of posts to display.
year - Year for which to show posts.
month - Month for which to show posts.
day - Day of the month for which to show posts.
delta - How many days of posts should be shown.
mark_update - Specify whether to show "Updated on" for posts that have been updated.
format - Show as RSS feed ('rss') or HTML (else).
post_size - Number of bytes to show before truncating the post and providing a (...) link. Posts are truncated at the next line break after the byte count is reached. poster - Show only entries made by a single named user.
If specifying dates with year, month, and/or day, the current value is specified if missing. For example, if day is specified but year and month are not, then year will be filled in with the current year and month will be filled with the current month. If only year and month are specified, then that indicates the whole month is desired.
The num_posts options is bounded by the date options if combined. For example, if num_posts=5 and month=4 is specified, it will show up to 5 posts from the month of April. If only 3 posts exist, then only 3 are shown. If a date option is not specified, then it will show the last num_posts posts.
The poster option is bounded by all of the above options and also limits the calendar to display tallies respective of the named user.
Examples
[[BlogShow()]] [[BlogShow(blog,pacopablo)]] [[BlogShow(blog,pacopablo,union=True)]] [[BlogShow(blog,pacopablo,num_posts=5)]] [[BlogShow(blog,pacopablo,month=4,num_posts=5)]] [[BlogShow(blog,pacopablo,year=2006,month=4)]] [[BlogShow(blog,pacopablo,year=2006,month=4,day=12)]] [[BlogShow(blog,pacopablo,delta=5)]] [[BlogShow(blog,pacopablo,delta=5,mark_updated=False)]] [[BlogShow(blog,poster=UserName)]]
[[SplitPost]]Displays a blog based on tags
The list of tags to be shown can be specified as arguments to the macro. If no tags are specified as parameters, then the default 'blog' tag is used.
Because any wiki page can be a blog entry,it is suggested that one uses a unique tag for any page that should appear in the blog, such as the tag: 'blog' (the default).
The following options can be specified:
union - Specify whether the join for the tags listed should be a union or intersection(default).
num_posts - Number of posts to display.
year - Year for which to show posts.
month - Month for which to show posts.
day - Day of the month for which to show posts.
delta - How many days of posts should be shown.
mark_update - Specify whether to show "Updated on" for posts that have been updated.
format - Show as RSS feed ('rss') or HTML (else).
post_size - Number of bytes to show before truncating the post and providing a (...) link. Posts are truncated at the next line break after the byte count is reached. poster - Show only entries made by a single named user.
If specifying dates with year, month, and/or day, the current value is specified if missing. For example, if day is specified but year and month are not, then year will be filled in with the current year and month will be filled with the current month. If only year and month are specified, then that indicates the whole month is desired.
The num_posts options is bounded by the date options if combined. For example, if num_posts=5 and month=4 is specified, it will show up to 5 posts from the month of April. If only 3 posts exist, then only 3 are shown. If a date option is not specified, then it will show the last num_posts posts.
The poster option is bounded by all of the above options and also limits the calendar to display tallies respective of the named user.
Examples
[[BlogShow()]] [[BlogShow(blog,pacopablo)]] [[BlogShow(blog,pacopablo,union=True)]] [[BlogShow(blog,pacopablo,num_posts=5)]] [[BlogShow(blog,pacopablo,month=4,num_posts=5)]] [[BlogShow(blog,pacopablo,year=2006,month=4)]] [[BlogShow(blog,pacopablo,year=2006,month=4,day=12)]] [[BlogShow(blog,pacopablo,delta=5)]] [[BlogShow(blog,pacopablo,delta=5,mark_updated=False)]] [[BlogShow(blog,poster=UserName)]]
[[BlogPost]]Inserts a link to create a new blog post
Accepts keyword arguments that specify default parameters. The macro will be hidden unless the user has BLOG_POSTER permissions.
tag - Tag that populates the "Tag under" field. This key may be specified as a tuple or list to pass multiple values.
blogtitle - Default blog entry title.
text - Default entry body text.
pagename - Default wiki page name.
readonly - Default readonly page status.
link - Text to display as the link.
Examples
[[BlogPost()]] [[BlogPost(tag=(blog,pacopablo))]] [[BlogPost(tag=blog,blogtitle="A Simple Title",text="Body Text")]] [[BlogPost(tag=blog,pagename=blog/newpage,readonly=1)]] [[BlogPost(tag=(blog,pacopablo),link="A New Blog Post")]]
[[Include]]A macro to include other resources in wiki pages. More documentation to follow.
[[ListTypes]]Main hack type listing
[[TracAdminHelp]]Displays help for trac-admin commands.
Examples:
[[TracAdminHelp]] # all commands [[TracAdminHelp(wiki)]] # all wiki commands [[TracAdminHelp(wiki export)]] # the "wiki export" command [[TracAdminHelp(upgrade)]] # the upgrade command
[[InterWiki]]Provide a description list for the known InterWiki prefixes.
Macros from around the world
The Trac Project has a section dedicated to user-contributed macros, MacroBazaar. If you're looking for new macros, or have written new ones to share with the world, don't hesitate adding it to the MacroBazaar wiki page.
Developing Custom Macros
Macros, like Trac itself, are written in the Python programming language. They are very simple modules, identified by the filename and should contain a single entry point function. Trac will display the returned data inserted into the HTML where the macro was called.
It's easiest to learn from an example:
# MyMacro.py -- The world's simplest macro def execute(hdf, args, env): return "Hello World called with args: %s" % args
You can also use the environment (env) object, for example to access configuration data and the database, for example:
def execute(hdf, txt, env): return env.get_config('trac', 'repository_dir')
Note that since version 0.9, wiki macros can also be written as TracPlugins. This gives them some capabilities than “classic” macros do not have, such as directly access the HTTP request.
For more information about developing macros, see the development resources on the main project site.
See also: WikiProcessors, WikiFormatting, TracGuide

