1. Macros
Macros allow the insertion of system features into normal wiki pages; the only thing that makes those pages special is that they contain macros. If you edit pages like RecentChanges or SystemInfo, you'll see what that means.For more information on the possible markup, see HelpOnEditing.
1.1. Search macros
Macro | Description | Example |
[[TitleSearch]] | search the page titles | See the FindPage |
[[FullSearch]] | search the page contents | See the FindPage |
[[FullSearch()]] | search for the current title in all pages (like clicking on the page title) | See the CategoryCategory page |
[[FullSearch('text')]] | search for "text" in all pages |
Search for FullSearch:
|
[[GoTo]] | directly go to the page you enter | See the FindPage |
[[PageList(regex)]] | list of pages whose title matches the regex | See the HelpIndex |
1.2. Navigation
Macro | Description | Example |
[[RecentChanges]] | a list of recently edited pages | See RecentChanges |
[[TitleIndex]] | an index of all page titles | See TitleIndex |
[[WordIndex]] | an index of all words in page titles | See WordIndex |
[[WantedPages]] | list links to non-existent pages | See WantedPages |
[[OrphanedPages]] | list pages no other page links to | See OrphanedPages |
[[AbandonedPages]] | list pages that were not edited for the longest time | See AbandonedPages |
| Please include this information in your bug reports!: Python Python 2.7.18: /usr/bin/python2 Linux erode.bofh.it 6.1.0-23-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.99-1 (2024-07-15) x86_64 MoinMoin Release 1.2.4 [Revision 1.187] Fri Nov 22 19:45:40 2024 |
A problem occurred in a Python script. Here is the sequence of function calls leading up to the error, in the order they occurred.
/usr/local/share/moin/MoinMoin/request.py in run(self=<MoinMoin.request.RequestCGI instance>) |
389 if handler: |
390 handler(pagename or |
391 wikiutil.getSysPage(self, config.page_front_page).page_name, self) |
392 else: |
393 self.http_headers() |
global wikiutil = <module 'MoinMoin.wikiutil' from '/usr/local/share/moin/MoinMoin/wikiutil.pyc'>, wikiutil.getSysPage = <function getSysPage>, self = <MoinMoin.request.RequestCGI instance>, global config = <module 'MoinMoin.config' from '/usr/local/share/moin/MoinMoin/config.pyc'>, config.page_front_page = 'FrontPage', ).page_name undefined |
/usr/local/share/moin/MoinMoin/wikiaction.py in do_print(pagename='HelpOnMacros', request=<MoinMoin.request.RequestCGI instance>) |
575 |
576 def do_print(pagename, request): |
577 do_show(pagename, request) |
578 |
579 |
global do_show = <function do_show>, pagename = 'HelpOnMacros', request = <MoinMoin.request.RequestCGI instance> |
/usr/local/share/moin/MoinMoin/wikiaction.py in do_show(pagename='HelpOnMacros', request=<MoinMoin.request.RequestCGI instance>) |
561 def do_show(pagename, request): |
562 if request.form.has_key('date'): |
563 Page(pagename, date=request.form['date'][0]).send_page(request, count_hit=1) |
564 else: |
565 Page(pagename).send_page(request, count_hit=1) |
global Page = <class MoinMoin.Page.Page>, pagename = 'HelpOnMacros', date undefined, request = <MoinMoin.request.RequestCGI instance>, request.form = {'action': ['print'], 'date': ['1108506723']}, ).send_page undefined, count_hit undefined |
/usr/local/share/moin/MoinMoin/Page.py in send_page(self=<MoinMoin.Page.Page instance>, request=<MoinMoin.request.RequestCGI instance>, msg='<strong>Version as of 2005-02-15 22:32:03</strong><br>', **keywords={'count_hit': 1}) |
622 else: |
623 # parse the text and send the page content |
624 self.send_page_content(request, Parser, body) |
625 |
626 # check for pending footnotes |
self = <MoinMoin.Page.Page instance>, self.send_page_content = <bound method Page.send_page_content of <MoinMoin.Page.Page instance>>, request = <MoinMoin.request.RequestCGI instance>, Parser = <class MoinMoin.parser.wiki.Parser>, body = '[[Navigation(children)]]\n[[TableOfContents]]\n\n==... the {{{[[SystemInfo]]}}} macro:\n [[SystemInfo]]\n' |
/usr/local/share/moin/MoinMoin/Page.py in send_page_content(self=<MoinMoin.Page.Page instance>, request=<MoinMoin.request.RequestCGI instance>, Parser=<class MoinMoin.parser.wiki.Parser>, body='[[Navigation(children)]]\n[[TableOfContents]]\n\n==... the {{{[[SystemInfo]]}}} macro:\n [[SystemInfo]]\n', needsupdate=0) |
673 (not formatter_name in config.caching_formats)): |
674 # parse the text and send the page content |
675 Parser(body, request).format(self.formatter) |
676 return |
677 |
Parser = <class MoinMoin.parser.wiki.Parser>, body = '[[Navigation(children)]]\n[[TableOfContents]]\n\n==... the {{{[[SystemInfo]]}}} macro:\n [[SystemInfo]]\n', request = <MoinMoin.request.RequestCGI instance>, ).format undefined, self = <MoinMoin.Page.Page instance>, self.formatter = <MoinMoin.formatter.text_html.Formatter instance> |
/usr/local/share/moin/MoinMoin/parser/wiki.py in format(self=<MoinMoin.parser.wiki.Parser instance>, formatter=<MoinMoin.formatter.text_html.Formatter instance>) |
1031 line = line + " " # we don't have \n as whitespace any more |
1032 |
1033 formatted_line = self.scan(scan_re, line) # this also sets self.inhibit_p as side effect! |
1034 |
1035 #self.request.write("<!-- inhibit_p==%d -->\n" % self.inhibit_p) |
formatted_line = '<tr>\n<td>\n<tt>[[AbandonedPages]]</tt> </td>\n<td>..."/AbandonedPages">AbandonedPages</a> </td>\n</tr>\n', self = <MoinMoin.parser.wiki.Parser instance>, self.scan = <bound method Parser.scan of <MoinMoin.parser.wiki.Parser instance>>, scan_re = <_sre.SRE_Pattern object>, line = '||{{{[[RandomPage]]}}} || a link to a random page || [[RandomPage]] || ' |
/usr/local/share/moin/MoinMoin/parser/wiki.py in scan(self=<MoinMoin.parser.wiki.Parser instance>, scan_re=<_sre.SRE_Pattern object>, line='||{{{[[RandomPage]]}}} || a link to a random page || [[RandomPage]] || ') |
864 else: |
865 result.append(self.formatter.text(line[lastpos:match.start()])) |
866 result.append(self.replace(match)) |
867 |
868 # search for the next one |
result = ['', '<tr>\n<td>\n', '', '<tt>[[RandomPage]]</tt>', ' ', '</td>\n<td>\n', ' a link to a random page ', '</td>\n<td>\n', ' '], result.append = <built-in method append of list object>, self = <MoinMoin.parser.wiki.Parser instance>, self.replace = <bound method Parser.replace of <MoinMoin.parser.wiki.Parser instance>>, match = <_sre.SRE_Match object> |
/usr/local/share/moin/MoinMoin/parser/wiki.py in replace(self=<MoinMoin.parser.wiki.Parser instance>, match=<_sre.SRE_Match object>) |
884 return self.highlight_text(hit) |
885 else: |
886 return getattr(self, '_' + type + '_repl')(hit) |
887 else: |
888 import pprint |
getattr undefined, self = <MoinMoin.parser.wiki.Parser instance>, type = 'macro', hit = '[[RandomPage]]' |
/usr/local/share/moin/MoinMoin/parser/wiki.py in _macro_repl(self=<MoinMoin.parser.wiki.Parser instance>, word='[[RandomPage]]') |
823 |
824 # call the macro |
825 return self.formatter.macro(self.macro, macro_name, args) |
826 |
827 |
self = <MoinMoin.parser.wiki.Parser instance>, self.formatter = <MoinMoin.formatter.text_html.Formatter instance>, self.formatter.macro = <bound method Formatter.macro of <MoinMoin.formatter.text_html.Formatter instance>>, self.macro = <MoinMoin.wikimacro.Macro instance>, macro_name = 'RandomPage', args = None |
/usr/local/share/moin/MoinMoin/formatter/base.py in macro(self=<MoinMoin.formatter.text_html.Formatter instance>, macro_obj=<MoinMoin.wikimacro.Macro instance>, name='RandomPage', args=None) |
160 def macro(self, macro_obj, name, args): |
161 # call the macro |
162 return macro_obj.execute(name, args) |
163 |
164 def processor(self, processor_name, lines): |
macro_obj = <MoinMoin.wikimacro.Macro instance>, macro_obj.execute = <bound method Macro.execute of <MoinMoin.wikimacro.Macro instance>>, name = 'RandomPage', args = None |
/usr/local/share/moin/MoinMoin/wikimacro.py in execute(self=<MoinMoin.wikimacro.Macro instance>, macro_name='RandomPage', args=None) |
110 return self._m_lang(macro_name, args) |
111 |
112 raise ImportError("Cannot load macro %s" % macro_name) |
113 |
114 def _m_lang(self, lang_name, text): |
ImportError undefined, macro_name = 'RandomPage' |