annotate examples/trac/wiki-default/WikiMacros @ 39:93b4dcbafd7b trunk

Copy Trac to main branch.
author cmlenz
date Mon, 03 Jul 2006 18:53:27 +0000
parents
children
rev   line source
39
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
1 = Wiki Macros =
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
2 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.
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
3
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
4 Another kind of macros are WikiProcessors. They typically deal with alternate markup formats and representation of larger blocks of information (like source code highlighting).
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
5
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
6 == Using Macros ==
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
7 Macro calls are enclosed in two ''square brackets''. Like python functions, macros can also have arguments, a comma separated list within parentheses.
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
8
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
9 === Examples ===
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
10
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
11 {{{
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
12 [[Timestamp]]
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
13 }}}
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
14 Display:
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
15 [[Timestamp]]
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
16
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
17 {{{
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
18 [[HelloWorld(Testing)]]
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
19 }}}
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
20 Display:
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
21 [[HelloWorld(Testing)]]
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
22
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
23 == Available Macros ==
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
24
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
25 ''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 [wiki:TracModPython mod_python].''
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
26
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
27 [[MacroList]]
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
28
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
29 == Macros from around the world ==
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
30 The [http://projects.edgewall.com/trac/ Trac Project] has a section dedicated to user-contributed macros, [http://projects.edgewall.com/trac/wiki/MacroBazaar 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 [http://projects.edgewall.com/trac/wiki/MacroBazaar MacroBazaar] wiki page.
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
31
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
32 ----
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
33
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
34 == Developing Custom Macros ==
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
35 Macros, like Trac itself, are written in the [http://www.python.org/ 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.
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
36
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
37 It's easiest to learn from an example:
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
38 {{{
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
39 #!python
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
40 # MyMacro.py -- The world's simplest macro
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
41
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
42 def execute(hdf, args, env):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
43 return "Hello World called with args: %s" % args
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
44 }}}
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
45
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
46 You can also use the environment (`env`) object, for example to access configuration data and the database, for example:
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
47 {{{
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
48 #!python
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
49 def execute(hdf, txt, env):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
50 return env.get_config('trac', 'repository_dir')
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
51 }}}
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
52
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
53 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.
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
54
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
55 For more information about developing macros, see the [http://projects.edgewall.com/trac/wiki/TracDev development resources] on the main project site.
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
56
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
57 ----
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
58 See also: WikiProcessors, WikiFormatting, TracGuide
Copyright (C) 2012-2017 Edgewall Software