[[!rpcbug Erreur: internal error: foo cannot be found in /home/louis/projets/ikiwiki/rpcbug or underlay]]
\n\n
Calling srcfile(foo)
: page
Calling srcfile(README.md)
: /home/louis/projets/ikiwiki/rpcbug/README.md
X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/08de927e67da177656b711f9118d34789b424695..4729ff0812c1f3d06d98524e2fec232d3bf90513:/doc/bugs/Error_with_external_plugins/debug.mdwn
diff --git a/doc/bugs/Error_with_external_plugins/debug.mdwn b/doc/bugs/Error_with_external_plugins/debug.mdwn
index 2a8b95bfe..b927e4401 100644
--- a/doc/bugs/Error_with_external_plugins/debug.mdwn
+++ b/doc/bugs/Error_with_external_plugins/debug.mdwn
@@ -1,7737 +1,7737 @@
-Trace of the `proxy.py` package during ikiwiki build.
+Trace of the `proxy.py` package during ikiwiki build. Look for the `preprocess` call and response for interesting stuff.
-> rpcbug:handle_rpc:191: waiting for procedure calls from ikiwiki...
-> rpcbug:handle_rpc:199: received procedure call from ikiwiki: [
* Calling `srcfile(foo)`: page
* Calling `srcfile(README.md)`: /home/louis/projets/ikiwiki/rpcbug/README.md']
-> rpcbug:handle_rpc:204: sending procedure response to ikiwiki: [
->
[[!rpcbug Erreur: internal error: foo cannot be found in /home/louis/projets/ikiwiki/rpcbug or underlay]]
\n\n
Calling srcfile(foo)
: page
Calling srcfile(README.md)
: /home/louis/projets/ikiwiki/rpcbug/README.md
Hello, world!
\n\nPage causing the error : foo
\n\nThis is the SandBox, a page anyone can edit to learn how to use the wiki.
\n\nHere\'s a paragraph.
\n\nHere\'s another one with emphasised text.
\n\n\n\nThis is a blockquote.
\n\nThis is the first level of quoting.
\n\n\n\nThis is nested blockquote.
Back to the first level.
Numbered list
\n\nBulleted list
\n\nIkiwiki uses many templates for many purposes. By editing its templates,\nyou can fully customise its appearance, and avoid duplicate content.
\n\nIkiwiki uses the HTML::Template module as its template engine. This\nsupports things like conditionals and loops in templates and is pretty\neasy to learn. All you really need to know to modify templates is this:
\n\n<TMPL_VAR variable>
.<TMPL_IF variable>text</TMPL_IF>
.<TMPL_IF variable>text<TMPL_ELSE>other text</TMPL_IF>
If the template does not contain a templatebody
directive, the entire\nsource of the page is used for the template. This is deprecated.
Template files are unlike template pages in that they have the extension\n.tmpl
. Template files are used extensively by Ikiwiki to generate html.\nThey can contain html that would not normally be allowed on a wiki page.
Template files are located in /usr/share/ikiwiki/templates
by default;\nthe templatedir
setting can be used to make another directory be\nsearched first. Customised template files can also be placed inside the\n"templates/" directory in your wiki\'s source -- files placed there override\nones in the templatedir
.
Here is a full list of the template files used:
\n\npage.tmpl
- Used for displaying all regular wiki pages. This is the\nkey template to customise to change the look and feel of Ikiwiki.
rsspage.tmpl
- Used for generating rss feeds for blogs.
rssitem.tmpl
- Used for generating individual items on rss feeds.atompage.tmpl
- Used for generating atom feeds for blogs.atomitem.tmpl
- Used for generating individual items on atom feeds.inlinepage.tmpl
- Used for displaying a post in a blog.archivepage.tmpl
- Used for listing a page in a blog archive page.titlepage.tmpl
- Used for listing a page by title in a blog archive page.microblog.tmpl
- Used for showing a microblogging post inline.blogpost.tmpl
- Used for a form to add a post to a blog (and rss/atom links)feedlink.tmpl
- Used to add rss/atom links if blogpost.tmpl
is not used.aggregatepost.tmpl
- Used by the aggregate plugin to create\na page for a post.searchform.tmpl
, googleform.tmpl
- Used by the search plugin\nand google plugin to add search forms to wiki pages.searchquery.tmpl
- This is a Omega template, used by the\nsearch plugin.comment.tmpl
- Used by the comments plugin to display a comment.change.tmpl
- Used to create a page describing a change made to the wiki.recentchanges.tmpl
- Used for listing a change on the RecentChanges page.autoindex.tmpl
- Filled in by the autoindex plugin to make index pages.autotag.tmpl
- Filled in by the tag plugin to make tag pages.calendarmonth.tmpl
, calendaryear.tmpl
- Used by ikiwiki-calendar to\nmake calendar archive pages.trails.tmpl
- Used by the trail plugin to generate links on each page\nthat is a member of a trail.notifyemail.tmpl
- Used by the notifymail plugin to generate mails about\nchanged pages.editpage.tmpl
, editconflict.tmpl
, editcreationconflict.tmpl
,\neditfailedsave.tmpl
, editpagegone.tmpl
, pocreatepage.tmpl
,\neditcomment.tmpl
commentmoderation.tmpl
, renamesummary.tmpl
,\npasswordmail.tmpl
, emailauth.tmpl,
login-selector.tmpl,\n
revert.tmpl` - Parts of ikiwiki\'s user interface; do not normally need\nto be customised.Recent changes to this wiki:
\n\nThis wiki has shortcuts disabled.
\n\nSome examples of using shortcuts include:
\n\n[[!google foo]]\n[[!wikipedia War_of_1812]]\n[[!debbug 12345]]\nCheck the [[!google ikiwiki desc="google search for %s"]].\n
\n\nThis page controls what shortcut links the wiki supports.
\n\n[[!debss package]]
or [[!debss package/version]]
. See http://snapshot.debian.org/ for details.To add a new shortcut, use the shortcut
\ndirective. In the url, "%s" is replaced with the\ntext passed to the named shortcut, after [[!wikipedia url_encoding]]\nit, and \'%S\' is replaced with the raw, non-encoded text.\nAdditionally, %W
is replaced with the text encoded just right for\nWikipedia. The optional desc
parameter controls the description of\nthe link.
Remember that the name
you give the shortcut will become a new\ndirective. Avoid using a name
that conflicts\nwith an existing directive. These directives also accept a desc
\nparameter that will override the one provided at definition time.
If you come up with a shortcut that you think others might find useful,\nconsider contributing it to the shortcuts page on the ikiwiki\nwiki, so that future versions of\nikiwiki will include your shortcut in the standard underlay.
\n\nUse this template to insert a note into a page. The note will be styled to\nfloat to the right of other text on the page. This template has one\nparameter:
\n\nUse this template to create a popup window that is displayed when the mouse\nis over part of the page. This template has two parameters:
\n\nNote that browsers that do not support the CSS will display the popup\ninline in the page, inside square brackets.
\n\n[[templatebody <\n[]\n\nENDBODY]]
\n\nDirectives are similar to a WikiLink in form, except they\nbegin with !
and may contain parameters. The general form is:
[[!directive param="value" param="value"]]\n
\n\nThis gets expanded before the rest of the page is processed, and can be used\nto transform the page in various ways.
\n\nThe quotes around values can be omitted if the value is a simple word.\nAlso, some directives may use parameters without values, for example:
\n\n[[!tag foo]]\n
\n\nA directive does not need to all be on one line, it can be\nwrapped to multiple lines if you like:
\n\n[[!directive foo="baldersnatch"\nbar="supercalifragilisticexpialidocious" baz=11]]\n
\n\nAlso, multiple lines of quoted text can be used for a value.\nTo allow quote marks inside the quoted text, delimit the block\nof text with triple-double-quotes or triple-single-quotes:
\n\n[[!directive text="""\n1. "foo"\n2. "bar"\n3. "baz"\n""" othertext=\'\'\'\n1. \'quux\'\n2. "foo"\n\'\'\']]\n
\n\nIf you want to put text with triple quotes into a parameter value, you can\nuse perl-style here-doc syntax, even nesting it like this:
\n\n[[!directive text=<<OUTER\n[[!otherdirective <<INNER\ninner text\nINNER]]\nouter text\nOUTER]]\n
\n\nikiwiki also has an older syntax for directives, which requires a space in\ndirectives to distinguish them from wikilinks. This\nsyntax has several disadvantages: it requires a space after directives with\nno parameters (such as [[pagecount ]]
), and it prohibits spaces in\nwikilinks. ikiwiki now provides the !
-prefixed\nsyntax shown above as default. However, ikiwiki still supports wikis using\nthe older syntax, if the prefix_directives
option is disabled.
To select a set of pages, such as pages that are locked, pages\nwhose commit emails you want subscribe to, or pages to combine into a\nblog, the wiki uses a PageSpec. This is an expression that matches\na set of pages.
\n\nThe simplest PageSpec is a simple list of pages. For example, this matches\nany of the three listed pages:
\n\nfoo or bar or baz\n
\n\nMore often you will want to match any pages that have a particular thing in\ntheir name. You can do this using a glob pattern. "*
" stands for any part\nof a page name, and "?
" for any single letter of a page name. So this\nmatches all pages about music, and any SubPages of the SandBox, but does\nnot match the SandBox itself:
*music* or SandBox/*\n
\n\nYou can also prefix an item with "!
" to skip pages that match it. So to\nmatch all pages except for Discussion pages and the SandBox:
* and !SandBox and !*/Discussion\n
\n\nSome more elaborate limits can be added to what matches using these functions:
\n\nglob(someglob)
" - matches pages and other files that match the given glob.\nJust writing the glob by itself is actually a shorthand for this function.page(glob)
" - like glob()
, but only matches pages, not other fileslink(page)
" - matches only pages that link to a given page (or glob)tagged(tag)
" - matches pages that are tagged or link to the given tag (or\ntags matched by a glob)backlink(page)
" - matches only pages that a given page links tocreation_month(month)
" - matches only files created on the given month\nnumbercreation_day(mday)
" - or day of the monthcreation_year(year)
" - or yearcreated_after(page)
" - matches only files created after the given page\nwas createdcreated_before(page)
" - matches only files created before the given page\nwas createdinternal(glob)
" - like glob()
, but matches even internal-use\npages that globs do not usually match.title(glob)
", "author(glob)
", "authorurl(glob)
",\n"license(glob)
", "copyright(glob)
", "guid(glob)
"\n\nuser(username)
" - tests whether a modification is being made by a\nuser with the specified username. If openid is enabled, an openid can also\nbe put here. Glob patterns can be used in the username. For example,\nto match all openid users, use user(*://*)
admin()
" - tests whether a modification is being made by one of the\nwiki admins.ip(address)
" - tests whether a modification is being made from the\nspecified IP address. Glob patterns can be used in the address. For\nexample, ip(127.0.0.*)
comment(glob)
" - matches comments to a page matching the glob.comment_pending(glob)
" - matches unmoderated, pending comments.postcomment(glob)
" - matches only when comments are being\nposted to a page matching the specified globFor example, to match all pages in a blog that link to the page about music\nand were written in 2005:
\n\nblog/* and link(music) and creation_year(2005)\n
\n\nNote the use of "and" in the above example, that means that only pages that\nmatch each of the three expressions match the whole. Use "and" when you\nwant to combine expression like that; "or" when it\'s enough for a page to\nmatch one expression. Note that it doesn\'t make sense to say "index and\nSandBox", since no page can match both expressions.
\n\nMore complex expressions can also be created, by using parentheses for\ngrouping. For example, to match pages in a blog that are tagged with either\nof two tags, use:
\n\nblog/* and (tagged(foo) or tagged(bar))\n
\n\nNote that page names in PageSpecs are matched against the absolute\nfilenames of the pages in the wiki, so a pagespec "foo" used on page\n"a/b" will not match a page named "a/foo" or "a/b/foo". To match\nrelative to the directory of the page containing the pagespec, you can\nuse "./". For example, "./foo" on page "a/b" matches page "a/foo".
\n\nTo indicate the name of the page the PageSpec is used in, you can\nuse a single dot. For example, link(.)
matches all the pages\nlinking to the page containing the PageSpec.
This wiki has OpenID enabled.
\n\nOpenID is a decentralized authentication mechanism\nthat allows you to have one login that you can use on a growing number of\nwebsites.
\n\nIf you have an account with some of the larger web service providers,\nyou might already have an OpenID.\nDirectory of OpenID providers
\n\nTo sign in to this wiki using OpenID, just enter it in the OpenID field in the\nsignin form. You do not need to give this wiki a password or go through any\nregistration process when using OpenID.
\n\nIt\'s also possible to make a page in the wiki usable as an OpenID url,\nby delegating it to an openid server. Here\'s an example of how to do that:
\n\n[[!meta openid="http://yourid.myopenid.com/"\n server="http://www.myopenid.com/server"]]\n
\n\nikiwiki supports placing pages in a directory hierarchy. For example,\nthis page, SubPage has some related pages placed under it, like\nLinkingRules. This is a useful way to add some order to your\nwiki rather than just having a great big directory full of pages.
\n\nTo add a SubPage, just make a subdirectory and put pages in it. For\nexample, this page is subpage.mdwn in this wiki\'s source, and there is also\na subpage subdirectory, which contains subpage/linkingrules.mdwn. Subpages\ncan be nested as deeply as you\'d like.
\n\nLinking to and from a SubPage is explained in LinkingRules.
\n\nMarkdown\nis a minimal markup language that resembles plain text as used in\nemail messages. It is the markup language used by this wiki by default.
\n\nFor documentation about the markdown syntax, see formatting and\nMarkdown: syntax.
\n\nNote that WikiLinks and directives are not part\nof the markdown syntax, and are the only bit of markup that this wiki\nhandles internally.
\n\nWikiLinks provide easy linking between pages of the wiki. To create a\nWikiLink, just put the name of the page to link to in double brackets.\nFor example [[WikiLink]]
.
If you ever need to write something like [[WikiLink]]
without creating a\nwikilink, just prefix it with a \\
, like \\[[WikiLink]]
.
There are some special LinkingRules that come into play when\nlinking between SubPages.
\n\nWikiLinks are matched with page names in a case-insensitive manner, so you\ndon\'t need to worry about getting the case the same, and can capitalise\nlinks at the start of a sentence, and so on.
\n\nIt\'s also possible to write a WikiLink that uses something other than the page\nname as the link text. For example [[foo_bar|SandBox]]
links to the SandBox\npage, but the link will appear like this: foo bar.
To link to an anchor inside a page, you can use something like\n[[WikiLink#foo]]
.
If the file linked to by a WikiLink looks like an image, it will\nbe displayed inline on the page.
\n\nYou can also put an url in a WikiLink, to link to an external page.\nEmail addresses can also be used to generate a mailto link.
\n\nText on this wiki is, by default, written in a form very close to how you\nmight write text for an email message. This style of text formatting is\ncalled MarkDown, and it works like this:
\n\nLeave blank lines between paragraphs.
\n\nYou can *emphasise* or **strongly emphasise** text by placing it\nin single or double asterisks.
\n\nTo create a list, start each line with an asterisk:
\n\nTo make a numbered list, start each line with a number (any number will\ndo) followed by a period:
\n\nTo create a header, start a line with one or more #
characters followed\nby a space and the header text. The number of #
characters controls the\nsize of the header:
To create a horizontal rule, just write three or more dashes or stars on\ntheir own line:
\n\nTo quote someone, prefix the quote with ">":
\n\n\n\nTo be or not to be,\nthat is the question.
To write a code block, indent each line with a tab or 4 spaces:
\n\n10 PRINT "Hello, world!"\n20 GOTO 10\n
\n\nTo link to an url or email address, you can just put the\nurl in angle brackets: <http://ikiwiki.info>, or you can use the\nform [link text](url)
\n\nIn addition to basic html formatting using MarkDown, this wiki lets\nyou use the following additional features:
\n\nTo link to another page on the wiki, place the page\'s name inside double\nsquare brackets. So you would use [[WikiLink]]
to link to WikiLink.
Insert various directives onto a page to perform useful\nactions.\nFor example, you can:
\n\nChange the title of a page:
\n\n[[!meta title="full page title"]]
Create a blog by inlining a set of pages:
\n\n[[!inline pages="blog/*"]]
This wiki has searching disabled.
\n\nIf searching is enabled, you can enter search terms in the search field,\nas you\'d expect. There are a few special things you can do to construct\nmore powerful searches.
\n\nAND
can be used to search for documents containing two expressions.OR
can be used to search for documents containing either one of\ntwo expressions.Some directives that use\nPageSpecs allow\nspecifying the order that matching pages are shown in. The following sort\norders can be specified.
\n\nage
- List pages from the most recently created to the oldest.
mtime
- List pages with the most recently modified first.
title
- Order by title (page name), e.g. "z/a a/b a/c"
path
- Order by page name including parents, e.g. "a/b a/c z/a"
meta(title)
- Order according to the [[!meta title="foo" sortas="bar"]]
\nor [[!meta title="foo"]]
directive, or the page name if no\nfull title was set. meta(author)
, meta(date)
, meta(updated)
, etc.\nalso work.
In addition, you can combine several sort orders and/or reverse the order of\nsorting, with a string like age -title
(which would sort by age, then by\ntitle in reverse order if two pages have the same age).
This wiki has attachments disabled.
\n\nIf attachments are enabled, the wiki admin can control what types of\nattachments will be accepted, via the allowed_attachments
\nconfiguration setting.
For example, to limit most users to uploading small images, and nothing else,\nwhile allowing larger mp3 files to be uploaded by joey into a specific\ndirectory, and check all attachments for viruses, something like this could be\nused:
\n\nvirusfree() and ((user(joey) and podcast/*.mp3 and mimetype(audio/mpeg) and maxsize(15mb)) or (mimetype(image/*) and maxsize(50kb)))\n
\n\nThe regular PageSpec syntax is expanded with the following\nadditional tests:
\n\n"maxsize(size)
" - tests whether the attachment is no larger than the\nspecified size. The size defaults to being in bytes, but "kb", "mb", "gb"\netc can be used to specify the units.
"minsize(size)
" - tests whether the attachment is no smaller than the\nspecified size.
"ispage()
" - tests whether the attachment will be treated by ikiwiki as a\nwiki page. (Ie, if it has an extension of ".mdwn", or of any other enabled\npage format).
So, if you don\'t want to allow wiki pages to be uploaded as attachments,\nuse !ispage()
; if you only want to allow wiki pages to be uploaded\nas attachments, use ispage()
.
"mimetype(foo/bar)
" - checks the MIME type of the attachment. You can\ninclude a glob in the type, for example mimetype(image/*)
.
"virusfree()
" - checks the attachment with an antiviral program.
This wiki has po support disabled.
\n\nIf the [[!iki plugins/po desc=po]] plugin is enabled, the regular\nPageSpec syntax is expanded with the following additional\ntests that can be used to improve user navigation in a multi-lingual\nwiki:
\n\nlang(LL)
" - tests whether a page is written in the language\nspecified as a ISO639-1 (two-letter) language code.currentlang()
" - tests whether a page is written in the same\nlanguage as the current page.needstranslation()
" - tests whether a page needs translation\nwork. Only slave pages match this PageSpec. A minimum target\ntranslation percentage can optionally be passed as an integer\nparameter: "needstranslation(50)
" matches only pages less than 50%\ntranslated.Note that every non-po page is considered to be written in\npo_master_language
, as specified in ikiwiki.setup
.
To link to or from a SubPage, you can normally use a regular\nWikiLink that does not contain the name of the parent directory of\nthe SubPage. Ikiwiki descends the directory hierarchy looking for a\npage that matches your link.
\n\nFor example, if FooBar/SubPage links to "OtherPage", ikiwiki will first\nprefer pointing the link to FooBar/SubPage/OtherPage if it exists, next\nto FooBar/OtherPage and finally to OtherPage in the root of the wiki.
\n\nNote that this means that if a link on FooBar/SomePage to "OtherPage"\ncurrently links to OtherPage, in the root of the wiki, and FooBar/OtherPage\nis created, the link will change to point to FooBar/OtherPage. On the\nother hand, a link from BazBar to "OtherPage" would be unchanged by this\ncreation of a SubPage of FooBar.
\n\nYou can also specify a link that contains a directory name, like\n"FooBar/OtherPage" to more exactly specify what page to link to. This is\nthe only way to link to an unrelated SubPage.
\n\nYou can use this to, for example, to link from BazBar to "FooBar/SubPage",\nor from BazBar/SubPage to "FooBar/SubPage".
\n\nYou can also use "/" at the start of a link, to specify exactly which page\nto link to, when there are multiple pages with similar names and the link\ngoes to the wrong page by default. For example, linking from\n"FooBar/SubPage" to "/OtherPage" will link to the "OtherPage" in the root\nof the wiki, even if there is a "FooBar/OtherPage".
\n\nAlso, if the wiki is configured with a userdir, you can link to pages\nwithin the userdir without specifying a path to them. This is to allow for\neasy linking to a user\'s page in the userdir, to sign a comment. These\nlinks are checked for last of all.
\n\n\[[!rpcbug Erreur: internal error: foo cannot be found in /home/louis/projets/ikiwiki/rpcbug or underlay]]
\n\n
Calling srcfile(foo)
: page
Calling srcfile(README.md)
: /home/louis/projets/ikiwiki/rpcbug/README.md
Hello, world!
\n\nPage causing the error : foo
\n\nThis is the SandBox, a page anyone can edit to learn how to use the wiki.
\n\nHere\'s a paragraph.
\n\nHere\'s another one with emphasised text.
\n\n\n\nThis is a blockquote.
\n\nThis is the first level of quoting.
\n\n\n\nThis is nested blockquote.
Back to the first level.
Numbered list
\n\nBulleted list
\n\nIkiwiki uses many templates for many purposes. By editing its templates,\nyou can fully customise its appearance, and avoid duplicate content.
\n\nIkiwiki uses the HTML::Template module as its template engine. This\nsupports things like conditionals and loops in templates and is pretty\neasy to learn. All you really need to know to modify templates is this:
\n\n<TMPL_VAR variable>
.<TMPL_IF variable>text</TMPL_IF>
.<TMPL_IF variable>text<TMPL_ELSE>other text</TMPL_IF>
If the template does not contain a templatebody
directive, the entire\nsource of the page is used for the template. This is deprecated.
Template files are unlike template pages in that they have the extension\n.tmpl
. Template files are used extensively by Ikiwiki to generate html.\nThey can contain html that would not normally be allowed on a wiki page.
Template files are located in /usr/share/ikiwiki/templates
by default;\nthe templatedir
setting can be used to make another directory be\nsearched first. Customised template files can also be placed inside the\n"templates/" directory in your wiki\'s source -- files placed there override\nones in the templatedir
.
Here is a full list of the template files used:
\n\npage.tmpl
- Used for displaying all regular wiki pages. This is the\nkey template to customise to change the look and feel of Ikiwiki.
rsspage.tmpl
- Used for generating rss feeds for blogs.
rssitem.tmpl
- Used for generating individual items on rss feeds.atompage.tmpl
- Used for generating atom feeds for blogs.atomitem.tmpl
- Used for generating individual items on atom feeds.inlinepage.tmpl
- Used for displaying a post in a blog.archivepage.tmpl
- Used for listing a page in a blog archive page.titlepage.tmpl
- Used for listing a page by title in a blog archive page.microblog.tmpl
- Used for showing a microblogging post inline.blogpost.tmpl
- Used for a form to add a post to a blog (and rss/atom links)feedlink.tmpl
- Used to add rss/atom links if blogpost.tmpl
is not used.aggregatepost.tmpl
- Used by the aggregate plugin to create\na page for a post.searchform.tmpl
, googleform.tmpl
- Used by the search plugin\nand google plugin to add search forms to wiki pages.searchquery.tmpl
- This is a Omega template, used by the\nsearch plugin.comment.tmpl
- Used by the comments plugin to display a comment.change.tmpl
- Used to create a page describing a change made to the wiki.recentchanges.tmpl
- Used for listing a change on the RecentChanges page.autoindex.tmpl
- Filled in by the autoindex plugin to make index pages.autotag.tmpl
- Filled in by the tag plugin to make tag pages.calendarmonth.tmpl
, calendaryear.tmpl
- Used by ikiwiki-calendar to\nmake calendar archive pages.trails.tmpl
- Used by the trail plugin to generate links on each page\nthat is a member of a trail.notifyemail.tmpl
- Used by the notifymail plugin to generate mails about\nchanged pages.editpage.tmpl
, editconflict.tmpl
, editcreationconflict.tmpl
,\neditfailedsave.tmpl
, editpagegone.tmpl
, pocreatepage.tmpl
,\neditcomment.tmpl
commentmoderation.tmpl
, renamesummary.tmpl
,\npasswordmail.tmpl
, emailauth.tmpl,
login-selector.tmpl,\n
revert.tmpl` - Parts of ikiwiki\'s user interface; do not normally need\nto be customised.Recent changes to this wiki:
\n\nThis wiki has shortcuts disabled.
\n\nSome examples of using shortcuts include:
\n\n\[[!google foo]]\n\[[!wikipedia War_of_1812]]\n\[[!debbug 12345]]\nCheck the \[[!google ikiwiki desc="google search for %s"]].\n
\n\nThis page controls what shortcut links the wiki supports.
\n\n\[[!debss package]]
or \[[!debss package/version]]
. See http://snapshot.debian.org/ for details.To add a new shortcut, use the shortcut
\ndirective. In the url, "%s" is replaced with the\ntext passed to the named shortcut, after \[[!wikipedia url_encoding]]\nit, and \'%S\' is replaced with the raw, non-encoded text.\nAdditionally, %W
is replaced with the text encoded just right for\nWikipedia. The optional desc
parameter controls the description of\nthe link.
Remember that the name
you give the shortcut will become a new\ndirective. Avoid using a name
that conflicts\nwith an existing directive. These directives also accept a desc
\nparameter that will override the one provided at definition time.
If you come up with a shortcut that you think others might find useful,\nconsider contributing it to the shortcuts page on the ikiwiki\nwiki, so that future versions of\nikiwiki will include your shortcut in the standard underlay.
\n\nUse this template to insert a note into a page. The note will be styled to\nfloat to the right of other text on the page. This template has one\nparameter:
\n\nUse this template to create a popup window that is displayed when the mouse\nis over part of the page. This template has two parameters:
\n\nNote that browsers that do not support the CSS will display the popup\ninline in the page, inside square brackets.
\n\n\[[templatebody <\n[]\n\nENDBODY]]
\n\nDirectives are similar to a WikiLink in form, except they\nbegin with !
and may contain parameters. The general form is:
\[[!directive param="value" param="value"]]\n
\n\nThis gets expanded before the rest of the page is processed, and can be used\nto transform the page in various ways.
\n\nThe quotes around values can be omitted if the value is a simple word.\nAlso, some directives may use parameters without values, for example:
\n\n\[[!tag foo]]\n
\n\nA directive does not need to all be on one line, it can be\nwrapped to multiple lines if you like:
\n\n\[[!directive foo="baldersnatch"\nbar="supercalifragilisticexpialidocious" baz=11]]\n
\n\nAlso, multiple lines of quoted text can be used for a value.\nTo allow quote marks inside the quoted text, delimit the block\nof text with triple-double-quotes or triple-single-quotes:
\n\n\[[!directive text="""\n1. "foo"\n2. "bar"\n3. "baz"\n""" othertext=\'\'\'\n1. \'quux\'\n2. "foo"\n\'\'\']]\n
\n\nIf you want to put text with triple quotes into a parameter value, you can\nuse perl-style here-doc syntax, even nesting it like this:
\n\n\[[!directive text=<<OUTER\n\[[!otherdirective <<INNER\ninner text\nINNER]]\nouter text\nOUTER]]\n
\n\nikiwiki also has an older syntax for directives, which requires a space in\ndirectives to distinguish them from wikilinks. This\nsyntax has several disadvantages: it requires a space after directives with\nno parameters (such as \[[pagecount ]]
), and it prohibits spaces in\nwikilinks. ikiwiki now provides the !
-prefixed\nsyntax shown above as default. However, ikiwiki still supports wikis using\nthe older syntax, if the prefix_directives
option is disabled.
To select a set of pages, such as pages that are locked, pages\nwhose commit emails you want subscribe to, or pages to combine into a\nblog, the wiki uses a PageSpec. This is an expression that matches\na set of pages.
\n\nThe simplest PageSpec is a simple list of pages. For example, this matches\nany of the three listed pages:
\n\nfoo or bar or baz\n
\n\nMore often you will want to match any pages that have a particular thing in\ntheir name. You can do this using a glob pattern. "*
" stands for any part\nof a page name, and "?
" for any single letter of a page name. So this\nmatches all pages about music, and any SubPages of the SandBox, but does\nnot match the SandBox itself:
*music* or SandBox/*\n
\n\nYou can also prefix an item with "!
" to skip pages that match it. So to\nmatch all pages except for Discussion pages and the SandBox:
* and !SandBox and !*/Discussion\n
\n\nSome more elaborate limits can be added to what matches using these functions:
\n\nglob(someglob)
" - matches pages and other files that match the given glob.\nJust writing the glob by itself is actually a shorthand for this function.page(glob)
" - like glob()
, but only matches pages, not other fileslink(page)
" - matches only pages that link to a given page (or glob)tagged(tag)
" - matches pages that are tagged or link to the given tag (or\ntags matched by a glob)backlink(page)
" - matches only pages that a given page links tocreation_month(month)
" - matches only files created on the given month\nnumbercreation_day(mday)
" - or day of the monthcreation_year(year)
" - or yearcreated_after(page)
" - matches only files created after the given page\nwas createdcreated_before(page)
" - matches only files created before the given page\nwas createdinternal(glob)
" - like glob()
, but matches even internal-use\npages that globs do not usually match.title(glob)
", "author(glob)
", "authorurl(glob)
",\n"license(glob)
", "copyright(glob)
", "guid(glob)
"\n\nuser(username)
" - tests whether a modification is being made by a\nuser with the specified username. If openid is enabled, an openid can also\nbe put here. Glob patterns can be used in the username. For example,\nto match all openid users, use user(*://*)
admin()
" - tests whether a modification is being made by one of the\nwiki admins.ip(address)
" - tests whether a modification is being made from the\nspecified IP address. Glob patterns can be used in the address. For\nexample, ip(127.0.0.*)
comment(glob)
" - matches comments to a page matching the glob.comment_pending(glob)
" - matches unmoderated, pending comments.postcomment(glob)
" - matches only when comments are being\nposted to a page matching the specified globFor example, to match all pages in a blog that link to the page about music\nand were written in 2005:
\n\nblog/* and link(music) and creation_year(2005)\n
\n\nNote the use of "and" in the above example, that means that only pages that\nmatch each of the three expressions match the whole. Use "and" when you\nwant to combine expression like that; "or" when it\'s enough for a page to\nmatch one expression. Note that it doesn\'t make sense to say "index and\nSandBox", since no page can match both expressions.
\n\nMore complex expressions can also be created, by using parentheses for\ngrouping. For example, to match pages in a blog that are tagged with either\nof two tags, use:
\n\nblog/* and (tagged(foo) or tagged(bar))\n
\n\nNote that page names in PageSpecs are matched against the absolute\nfilenames of the pages in the wiki, so a pagespec "foo" used on page\n"a/b" will not match a page named "a/foo" or "a/b/foo". To match\nrelative to the directory of the page containing the pagespec, you can\nuse "./". For example, "./foo" on page "a/b" matches page "a/foo".
\n\nTo indicate the name of the page the PageSpec is used in, you can\nuse a single dot. For example, link(.)
matches all the pages\nlinking to the page containing the PageSpec.
This wiki has OpenID enabled.
\n\nOpenID is a decentralized authentication mechanism\nthat allows you to have one login that you can use on a growing number of\nwebsites.
\n\nIf you have an account with some of the larger web service providers,\nyou might already have an OpenID.\nDirectory of OpenID providers
\n\nTo sign in to this wiki using OpenID, just enter it in the OpenID field in the\nsignin form. You do not need to give this wiki a password or go through any\nregistration process when using OpenID.
\n\nIt\'s also possible to make a page in the wiki usable as an OpenID url,\nby delegating it to an openid server. Here\'s an example of how to do that:
\n\n\[[!meta openid="http://yourid.myopenid.com/"\n server="http://www.myopenid.com/server"]]\n
\n\nikiwiki supports placing pages in a directory hierarchy. For example,\nthis page, SubPage has some related pages placed under it, like\nLinkingRules. This is a useful way to add some order to your\nwiki rather than just having a great big directory full of pages.
\n\nTo add a SubPage, just make a subdirectory and put pages in it. For\nexample, this page is subpage.mdwn in this wiki\'s source, and there is also\na subpage subdirectory, which contains subpage/linkingrules.mdwn. Subpages\ncan be nested as deeply as you\'d like.
\n\nLinking to and from a SubPage is explained in LinkingRules.
\n\nMarkdown\nis a minimal markup language that resembles plain text as used in\nemail messages. It is the markup language used by this wiki by default.
\n\nFor documentation about the markdown syntax, see formatting and\nMarkdown: syntax.
\n\nNote that WikiLinks and directives are not part\nof the markdown syntax, and are the only bit of markup that this wiki\nhandles internally.
\n\nWikiLinks provide easy linking between pages of the wiki. To create a\nWikiLink, just put the name of the page to link to in double brackets.\nFor example \[[WikiLink]]
.
If you ever need to write something like \[[WikiLink]]
without creating a\nwikilink, just prefix it with a \\
, like \\\[[WikiLink]]
.
There are some special LinkingRules that come into play when\nlinking between SubPages.
\n\nWikiLinks are matched with page names in a case-insensitive manner, so you\ndon\'t need to worry about getting the case the same, and can capitalise\nlinks at the start of a sentence, and so on.
\n\nIt\'s also possible to write a WikiLink that uses something other than the page\nname as the link text. For example \[[foo_bar|SandBox]]
links to the SandBox\npage, but the link will appear like this: foo bar.
To link to an anchor inside a page, you can use something like\n\[[WikiLink#foo]]
.
If the file linked to by a WikiLink looks like an image, it will\nbe displayed inline on the page.
\n\nYou can also put an url in a WikiLink, to link to an external page.\nEmail addresses can also be used to generate a mailto link.
\n\nText on this wiki is, by default, written in a form very close to how you\nmight write text for an email message. This style of text formatting is\ncalled MarkDown, and it works like this:
\n\nLeave blank lines between paragraphs.
\n\nYou can *emphasise* or **strongly emphasise** text by placing it\nin single or double asterisks.
\n\nTo create a list, start each line with an asterisk:
\n\nTo make a numbered list, start each line with a number (any number will\ndo) followed by a period:
\n\nTo create a header, start a line with one or more #
characters followed\nby a space and the header text. The number of #
characters controls the\nsize of the header:
To create a horizontal rule, just write three or more dashes or stars on\ntheir own line:
\n\nTo quote someone, prefix the quote with ">":
\n\n\n\nTo be or not to be,\nthat is the question.
To write a code block, indent each line with a tab or 4 spaces:
\n\n10 PRINT "Hello, world!"\n20 GOTO 10\n
\n\nTo link to an url or email address, you can just put the\nurl in angle brackets: <http://ikiwiki.info>, or you can use the\nform [link text](url)
\n\nIn addition to basic html formatting using MarkDown, this wiki lets\nyou use the following additional features:
\n\nTo link to another page on the wiki, place the page\'s name inside double\nsquare brackets. So you would use \[[WikiLink]]
to link to WikiLink.
Insert various directives onto a page to perform useful\nactions.\nFor example, you can:
\n\nChange the title of a page:
\n\n\[[!meta title="full page title"]]
Create a blog by inlining a set of pages:
\n\n\[[!inline pages="blog/*"]]
This wiki has searching disabled.
\n\nIf searching is enabled, you can enter search terms in the search field,\nas you\'d expect. There are a few special things you can do to construct\nmore powerful searches.
\n\nAND
can be used to search for documents containing two expressions.OR
can be used to search for documents containing either one of\ntwo expressions.Some directives that use\nPageSpecs allow\nspecifying the order that matching pages are shown in. The following sort\norders can be specified.
\n\nage
- List pages from the most recently created to the oldest.
mtime
- List pages with the most recently modified first.
title
- Order by title (page name), e.g. "z/a a/b a/c"
path
- Order by page name including parents, e.g. "a/b a/c z/a"
meta(title)
- Order according to the \[[!meta title="foo" sortas="bar"]]
\nor \[[!meta title="foo"]]
directive, or the page name if no\nfull title was set. meta(author)
, meta(date)
, meta(updated)
, etc.\nalso work.
In addition, you can combine several sort orders and/or reverse the order of\nsorting, with a string like age -title
(which would sort by age, then by\ntitle in reverse order if two pages have the same age).
This wiki has attachments disabled.
\n\nIf attachments are enabled, the wiki admin can control what types of\nattachments will be accepted, via the allowed_attachments
\nconfiguration setting.
For example, to limit most users to uploading small images, and nothing else,\nwhile allowing larger mp3 files to be uploaded by joey into a specific\ndirectory, and check all attachments for viruses, something like this could be\nused:
\n\nvirusfree() and ((user(joey) and podcast/*.mp3 and mimetype(audio/mpeg) and maxsize(15mb)) or (mimetype(image/*) and maxsize(50kb)))\n
\n\nThe regular PageSpec syntax is expanded with the following\nadditional tests:
\n\n"maxsize(size)
" - tests whether the attachment is no larger than the\nspecified size. The size defaults to being in bytes, but "kb", "mb", "gb"\netc can be used to specify the units.
"minsize(size)
" - tests whether the attachment is no smaller than the\nspecified size.
"ispage()
" - tests whether the attachment will be treated by ikiwiki as a\nwiki page. (Ie, if it has an extension of ".mdwn", or of any other enabled\npage format).
So, if you don\'t want to allow wiki pages to be uploaded as attachments,\nuse !ispage()
; if you only want to allow wiki pages to be uploaded\nas attachments, use ispage()
.
"mimetype(foo/bar)
" - checks the MIME type of the attachment. You can\ninclude a glob in the type, for example mimetype(image/*)
.
"virusfree()
" - checks the attachment with an antiviral program.
This wiki has po support disabled.
\n\nIf the \[[!iki plugins/po desc=po]] plugin is enabled, the regular\nPageSpec syntax is expanded with the following additional\ntests that can be used to improve user navigation in a multi-lingual\nwiki:
\n\nlang(LL)
" - tests whether a page is written in the language\nspecified as a ISO639-1 (two-letter) language code.currentlang()
" - tests whether a page is written in the same\nlanguage as the current page.needstranslation()
" - tests whether a page needs translation\nwork. Only slave pages match this PageSpec. A minimum target\ntranslation percentage can optionally be passed as an integer\nparameter: "needstranslation(50)
" matches only pages less than 50%\ntranslated.Note that every non-po page is considered to be written in\npo_master_language
, as specified in ikiwiki.setup
.
To link to or from a SubPage, you can normally use a regular\nWikiLink that does not contain the name of the parent directory of\nthe SubPage. Ikiwiki descends the directory hierarchy looking for a\npage that matches your link.
\n\nFor example, if FooBar/SubPage links to "OtherPage", ikiwiki will first\nprefer pointing the link to FooBar/SubPage/OtherPage if it exists, next\nto FooBar/OtherPage and finally to OtherPage in the root of the wiki.
\n\nNote that this means that if a link on FooBar/SomePage to "OtherPage"\ncurrently links to OtherPage, in the root of the wiki, and FooBar/OtherPage\nis created, the link will change to point to FooBar/OtherPage. On the\nother hand, a link from BazBar to "OtherPage" would be unchanged by this\ncreation of a SubPage of FooBar.
\n\nYou can also specify a link that contains a directory name, like\n"FooBar/OtherPage" to more exactly specify what page to link to. This is\nthe only way to link to an unrelated SubPage.
\n\nYou can use this to, for example, to link from BazBar to "FooBar/SubPage",\nor from BazBar/SubPage to "FooBar/SubPage".
\n\nYou can also use "/" at the start of a link, to specify exactly which page\nto link to, when there are multiple pages with similar names and the link\ngoes to the wrong page by default. For example, linking from\n"FooBar/SubPage" to "/OtherPage" will link to the "OtherPage" in the root\nof the wiki, even if there is a "FooBar/OtherPage".
\n\nAlso, if the wiki is configured with a userdir, you can link to pages\nwithin the userdir without specifying a path to them. This is to allow for\neasy linking to a user\'s page in the userdir, to sign a comment. These\nlinks are checked for last of all.
\n\n