summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWilliam Uther <willu@cse.unsw.edu.au>2008-09-11 17:04:23 -0400
committerJoey Hess <joey@kodama.kitenet.net>2008-09-11 17:05:19 -0400
commit4f0ac7fe59c196a602e07cc6c4abfc248999ec6b (patch)
tree725f523faeb8e8db0efd81be4024257799c93ef8
parent595b0359157d1f57ee5a87c63e665dfa1d2130ec (diff)
add underlay files for listdirectives
As was noted, 'listdirectives' didn't include the underlay files that make it really worthwhile. I've just gone through all the plugin documentation, modified it to remove installation information and renamed the files to match the directives rather than the plugins. This can now serve as useful underlay. I've only gone through plugins in the 'plugins' dir. I did not go through the 'contrib' dir.
l---------underlays/basewiki/directive.mdwn1
-rw-r--r--underlays/basewiki/directive/aggregate.mdwn47
-rw-r--r--underlays/basewiki/directive/brokenlinks.mdwn12
-rw-r--r--underlays/basewiki/directive/calendar.mdwn65
-rw-r--r--underlays/basewiki/directive/color.mdwn23
-rw-r--r--underlays/basewiki/directive/copy.mdwn1
-rw-r--r--underlays/basewiki/directive/cut.mdwn1
-rw-r--r--underlays/basewiki/directive/cutpaste.mdwn53
-rw-r--r--underlays/basewiki/directive/edittemplate.mdwn32
-rw-r--r--underlays/basewiki/directive/fortune.mdwn14
-rw-r--r--underlays/basewiki/directive/graph.mdwn28
-rw-r--r--underlays/basewiki/directive/haiku.mdwn13
-rw-r--r--underlays/basewiki/directive/if.mdwn46
-rw-r--r--underlays/basewiki/directive/img.mdwn36
-rw-r--r--underlays/basewiki/directive/inline.mdwn10
-rw-r--r--underlays/basewiki/directive/linkmap.mdwn28
-rw-r--r--underlays/basewiki/directive/listdirectives.mdwn16
-rw-r--r--underlays/basewiki/directive/map.mdwn17
-rw-r--r--underlays/basewiki/directive/meta.mdwn145
-rw-r--r--underlays/basewiki/directive/more.mdwn14
-rw-r--r--underlays/basewiki/directive/orphans.mdwn19
-rw-r--r--underlays/basewiki/directive/pagecount.mdwn10
-rw-r--r--underlays/basewiki/directive/pagestats.mdwn13
-rw-r--r--underlays/basewiki/directive/pagetemplate.mdwn12
-rw-r--r--underlays/basewiki/directive/paste.mdwn1
-rw-r--r--underlays/basewiki/directive/ping.mdwn16
-rw-r--r--underlays/basewiki/directive/poll.mdwn23
-rw-r--r--underlays/basewiki/directive/polygen.mdwn28
-rw-r--r--underlays/basewiki/directive/postsparkline.mdwn43
-rw-r--r--underlays/basewiki/directive/progress.mdwn17
-rw-r--r--underlays/basewiki/directive/shortcut.mdwn7
-rw-r--r--underlays/basewiki/directive/sparkline.mdwn58
-rw-r--r--underlays/basewiki/directive/table.mdwn43
-rw-r--r--underlays/basewiki/directive/tag.mdwn35
-rw-r--r--underlays/basewiki/directive/taglink.mdwn1
-rw-r--r--underlays/basewiki/directive/template.mdwn85
-rw-r--r--underlays/basewiki/directive/testpagespec.mdwn22
-rw-r--r--underlays/basewiki/directive/teximg.mdwn23
-rw-r--r--underlays/basewiki/directive/toc.mdwn19
-rw-r--r--underlays/basewiki/directive/toggle.mdwn32
-rw-r--r--underlays/basewiki/directive/toggleable.mdwn1
-rw-r--r--underlays/basewiki/directive/version.mdwn10
42 files changed, 1120 insertions, 0 deletions
diff --git a/underlays/basewiki/directive.mdwn b/underlays/basewiki/directive.mdwn
new file mode 120000
index 000000000..e8ce42cba
--- /dev/null
+++ b/underlays/basewiki/directive.mdwn
@@ -0,0 +1 @@
+../../doc/ikiwiki/directive.mdwn \ No newline at end of file
diff --git a/underlays/basewiki/directive/aggregate.mdwn b/underlays/basewiki/directive/aggregate.mdwn
new file mode 100644
index 000000000..e8c1d8e10
--- /dev/null
+++ b/underlays/basewiki/directive/aggregate.mdwn
@@ -0,0 +1,47 @@
+The `aggregate` directive is supplied by the [[!iki plugins/aggregate]] plugin.
+
+This directive allows content from other feeds to be aggregated into the wiki.
+Aggregate a feed as follows:
+
+ \[[!aggregate name="example blog" dir="example"
+ feedurl="http://example.com/index.rss"
+ url="http://example.com/" updateinterval="15"]]
+
+That example aggregates posts from the specified RSS feed, updating no
+more frequently than once every 15 minutes, and puts a page per post under
+the example/ directory in the wiki.
+
+You can then use ikiwiki's [[ikiwiki/blog]] support to create a blog of one or
+more aggregated feeds. For example:
+
+ \[[!inline pages="internal(example/*)"]]
+
+## usage
+
+Here are descriptions of all the supported parameters to the `aggregate`
+directive:
+
+* `name` - A name for the feed. Each feed must have a unique name.
+ Required.
+* `url` - The url to the web page for the feed that's being aggregated.
+ Required.
+* `dir` - The directory in the wiki where pages should be saved. Optional,
+ if not specified, the directory is based on the name of the feed.
+* `feedurl` - The url to the feed. Optional, if it's not specified ikiwiki
+ will look for feeds on the `url`. RSS and atom feeds are supported.
+* `updateinterval` - How often to check for new posts, in minutes. Default
+ is 15 minutes.
+* `expireage` - Expire old items from this feed if they are older than
+ a specified number of days. Default is to never expire on age.
+* `expirecount` - Expire old items from this feed if there are more than
+ the specified number total. Oldest items will be expired first. Default
+ is to never expire on count.
+* `tag` - A tag to tag each post from the feed with. A good tag to use is
+ the name of the feed. Can be repeated multiple times. The [[tag]] plugin
+ must be enabled for this to work.
+* `template` - Template to use for creating the aggregated pages. Defaults to
+ aggregatepost.
+
+Note that even if you are using subversion or another revision control
+system, pages created by aggregation will *not* be checked into revision
+control.
diff --git a/underlays/basewiki/directive/brokenlinks.mdwn b/underlays/basewiki/directive/brokenlinks.mdwn
new file mode 100644
index 000000000..3ae8909dc
--- /dev/null
+++ b/underlays/basewiki/directive/brokenlinks.mdwn
@@ -0,0 +1,12 @@
+The `brokenlinks` directive is supplied by the [[!iki plugins/brokenlinks]] plugin.
+
+This directive generates a list of broken links on pages in the wiki. This is
+a useful way to find pages that still need to be written, or links that
+are written wrong.
+
+The optional parameter "pages" can be a [[ikiwiki/PageSpec]] specifying the
+pages to search for broken links, default is search them all.
+
+If this plugin is turned on, here's a list of broken links on this wiki:
+
+[[!brokenlinks pages="* and !recentchanges"]]
diff --git a/underlays/basewiki/directive/calendar.mdwn b/underlays/basewiki/directive/calendar.mdwn
new file mode 100644
index 000000000..a2ead8a82
--- /dev/null
+++ b/underlays/basewiki/directive/calendar.mdwn
@@ -0,0 +1,65 @@
+The `calendar` directive is supplied by the [[!iki plugins/calendar]] plugin.
+
+This directive displays a calendar, similar to the typical calendars shown on
+some blogs.
+
+# examples
+
+ \[[!calendar ]]
+
+ \[[!calendar type="month" pages="blog/* and !*/Discussion"]]
+
+ \[[!calendar type="year" year="2005" pages="blog/* and !*/Discussion"]]
+
+This plugin is inspired by the calendar plugin for Blosxom, but
+derives no code from it. This plugin is essentially a fancy front end
+to archives of previous pages, usually used for blogs. It can produce
+a calendar for a given month, or a list of months for a given year.
+
+This plugin requires extra setup. See the plugin documentation for details.
+
+## usage
+
+* `type` - Used to specify the type of calendar wanted. Can be one of
+ "month" or "year". The default is a month view calendar.
+* `pages` - Specifies the [[ikiwiki/PageSpec]] of pages to link to from the
+ month calendar. Defaults to "*".
+* `archivebase` - Configures the base of the archives hierarchy. The
+ default is "archives". Note that this default can also be overridden
+ for the whole wiki by setting `archivebase` in ikiwiki's setup file.
+* `year` - The year for which the calendar is requested. Defaults to the
+ current year.
+* `month` - The numeric month for which the calendar is requested, in the
+ range 1..12. Used only for the month view calendar, and defaults to the
+ current month.
+* `week_start_day` - A number, in the range 0..6, which represents the day
+ of the week that the month calendar starts with. 0 is Sunday, 1 is Monday,
+ and so on. Defaults to 0, which is Sunday.
+* `months_per_row` - In the annual calendar, number of months to place in
+ each row. Defaults to 3.
+
+## CSS
+
+The output is liberally sprinkled with classes, for fine grained CSS
+customization.
+
+* `month-calendar` - The month calendar as a whole.
+* `month-calendar-head` - The head of the month calendar (ie,"March").
+* `month-calendar-day-head` - A column head in the month calendar (ie, a
+ day-of-week abbreviation).
+* `month-calendar-day-noday`, `month-calendar-day-link`,
+ `month-calendar-day-nolink`, `month-calendar-day-future`,
+ `month-calendar-day-this-day` - The day squares on the month calendar,
+ for days that are not in the month (before or after the month itself), that
+ don't have links, that do have links, that are in the future, or are that
+ are the current day, respectively.
+* `Sunday`, `Monday`, `Tuesday`, ... - Each day square is also given a class
+ matching its (localised) day of week, this can be used to highlight
+ weekends.
+* `year-calendar` - The year calendar as a whole.
+* `year-calendar-head` - The head of the year calendar (ie, "2007").
+* `year-calendar-subhead` - For example, "Months".
+* `year-calendar-month-link`, `year-calendar-month-nolink`,
+ `year-calendar-month-future`, `year-calendar-this-month` - The month
+ squares on the year calendar, for months with stories,
+ without, in the future, and currently selected, respectively.
diff --git a/underlays/basewiki/directive/color.mdwn b/underlays/basewiki/directive/color.mdwn
new file mode 100644
index 000000000..cdb9b6c1d
--- /dev/null
+++ b/underlays/basewiki/directive/color.mdwn
@@ -0,0 +1,23 @@
+The `color` directive is supplied by the [[!iki plugins/color]] plugin.
+
+This directive can be used to color a piece of text on a page.
+It can be used to set the foreground and/or background color of the text.
+
+You can use a color name (e.g. `white`) or HTML code (e.g. `#ffffff`)
+to define colors.
+
+## examples
+
+Here the foreground color is defined as a word, while the background color
+is defined as a HTML color code:
+
+ \[[!color foreground=white background=#ff0000 text="White text on red background"]]
+
+The background color is missing, so the text is displayed on default
+background:
+
+ \[[!color foreground=white text="White text on default color background"]]
+
+The foreground is missing, so the text has the default foreground color:
+
+ \[[!color background=#ff0000 text="Default color text on red background"]]
diff --git a/underlays/basewiki/directive/copy.mdwn b/underlays/basewiki/directive/copy.mdwn
new file mode 100644
index 000000000..145bfdb1a
--- /dev/null
+++ b/underlays/basewiki/directive/copy.mdwn
@@ -0,0 +1 @@
+[[!meta redir=/ikiwiki/directive/cutpaste]]
diff --git a/underlays/basewiki/directive/cut.mdwn b/underlays/basewiki/directive/cut.mdwn
new file mode 100644
index 000000000..145bfdb1a
--- /dev/null
+++ b/underlays/basewiki/directive/cut.mdwn
@@ -0,0 +1 @@
+[[!meta redir=/ikiwiki/directive/cutpaste]]
diff --git a/underlays/basewiki/directive/cutpaste.mdwn b/underlays/basewiki/directive/cutpaste.mdwn
new file mode 100644
index 000000000..56dd993cb
--- /dev/null
+++ b/underlays/basewiki/directive/cutpaste.mdwn
@@ -0,0 +1,53 @@
+The `copy`, `cut` and `paste` directives are supplied by the [[!iki plugins/cutpaste]] plugin.
+
+With these directives you can store and recall pieces of text:
+
+ * `\[[!cut id=name text="text"]]` memorizes the text allowing to recall it
+ using the given ID. The text being cut is not included in the output.
+ * `\[[!copy id=name text="text"]]` memorizes the text allowing to recall it
+ using the given ID. The text being cut *is* included in the output.
+ * `\[[!paste id=name]]` is replaced by the previously memorized text.
+
+The text being cut, copied and pasted can freely include wiki markup, including
+more calls to cut, copy and paste.
+
+You do not need to memorize the text before using it: a cut directive can
+follow the paste directive that uses its text. In fact, this is quite useful
+to postpone big blocks of text like long annotations and have a more natural
+flow. For example:
+
+ This plugin provides three directives:
+
+ * \[[!toggle id="cut" text="cut"]] that cuts text
+ * \[[!toggle id="copy" text="copy"]] that copies text
+ * \[[!toggle id="paste" text="paste"]] that pastes text
+
+ \[[!toggleable id="cut" text="\[[!paste id=cutlongdesc]]"]]
+ \[[!toggleable id="copy" text="\[[!paste id=copylongdesc]]"]]
+ \[[!toggleable id="paste" text="\[[!paste id=pastelongdesc]]"]]
+
+ \[...some time later...]
+
+ \[[!cut id=cutlongdesc text="""
+ blah blah blah
+ """]]
+ \[[!cut id=copylongdesc text="""
+ blah blah blah
+ """]]
+ \[[!cut id=pastelongdesc text="""
+ blah blah blah
+ """]]
+
+This can potentially be used to create loops, but ikiwiki is clever and breaks
+them.
+
+Since you can paste without using double quotes, copy and paste can be used to
+nest directive that require multiline parameters inside each other:
+
+ \[[!toggleable id=foo text="""
+ \[[!toggleable id=bar text="\[[!paste id=baz]]"]]
+ """]]
+
+ \[[!cut id=baz text="""
+ multiline parameter!
+ """]]
diff --git a/underlays/basewiki/directive/edittemplate.mdwn b/underlays/basewiki/directive/edittemplate.mdwn
new file mode 100644
index 000000000..94295585e
--- /dev/null
+++ b/underlays/basewiki/directive/edittemplate.mdwn
@@ -0,0 +1,32 @@
+The `edittemplate` directive is supplied by the [[!iki plugins/edittemplate]] plugin.
+
+This directive allows registering template pages, that provide default
+content for new pages created using the web frontend. To register a
+template, insert a [[ikiwiki/directive/template]] directive on some other page.
+
+ \[[!edittemplate template="bugtemplate" match="bugs/*"]]
+
+In the above example, the page named "bugtemplate" is registered as a
+template to be used when any page named "bugs/*" is created.
+
+Often the template page contains a simple skeleton for a particular type of
+page. For the bug report pages in the above example, it might look
+something like:
+
+ Package:
+ Version:
+ Reproducible: y/n
+ Details:
+
+The template page can also contain [[!cpan HTML::Template]] directives,
+similar to other ikiwiki [[templates]]. Currently only one variable is
+set: `<TMPL_VAR name>` is replaced with the name of the page being
+created.
+
+----
+
+It's generally not a good idea to put the `edittemplate` directive in
+the template page itself, since the directive would then be included as
+part of the template on new pages, which would then in turn be registered
+as templates. If multiple pages are registered as templates for a new page,
+an arbitrary one is chosen, so that could get confusing.
diff --git a/underlays/basewiki/directive/fortune.mdwn b/underlays/basewiki/directive/fortune.mdwn
new file mode 100644
index 000000000..36e0b5733
--- /dev/null
+++ b/underlays/basewiki/directive/fortune.mdwn
@@ -0,0 +1,14 @@
+The `fortune` directive is supplied by the [[!iki plugins/fortune]] plugin.
+
+This just uses the `fortune` program to insert a fortune into the page.
+Usage:
+
+ \[[!fortune ]]
+
+[[!if test="enabled(fortune)" then="""
+Here's a fortune for you:
+
+----
+
+[[!fortune ]]
+"""]]
diff --git a/underlays/basewiki/directive/graph.mdwn b/underlays/basewiki/directive/graph.mdwn
new file mode 100644
index 000000000..f45af3e04
--- /dev/null
+++ b/underlays/basewiki/directive/graph.mdwn
@@ -0,0 +1,28 @@
+The `graph` directive is supplied by the [[!iki plugins/graphviz]] plugin.
+
+This directive allows embedding [graphviz](http://www.graphviz.org/) graphs in a
+page. Example usage:
+
+ \[[!graph src="a -> b -> c; a -> c;"]]
+
+Note that graphs will only show up in previews if your browser has
+[[!wikipedia data: URI]] support, or if the same graph already exists on that
+page.
+
+The `graph` directive supports the following parameters:
+
+- `src` - The graphviz source to render.
+- `type` - The type of graph to render: `graph` or `digraph`. Defaults to
+ `digraph`.
+- `prog` - The graphviz program to render with: `dot`, `neato`, `fdp`, `twopi`,
+ or `circo`. Defaults to `dot`.
+- `height`, `width` - Limit the size of the graph to a given height and width,
+ in inches. You must specify both to limit the size; otherwise, graphviz will
+ choose a size, without any limit.
+
+[[!if test="enabled(graphviz)" then="""
+Some example graphs:
+
+[[!graph src="a -> b -> c; a -> b;"]]
+[[!graph src="a -- b -- c -- a;" prog="circo" type="graph"]]
+"""]]
diff --git a/underlays/basewiki/directive/haiku.mdwn b/underlays/basewiki/directive/haiku.mdwn
new file mode 100644
index 000000000..d7df3e249
--- /dev/null
+++ b/underlays/basewiki/directive/haiku.mdwn
@@ -0,0 +1,13 @@
+The `haiku` directive is supplied by the [[!iki plugins/haiku]] plugin.
+
+This plugin allows inserting a randomly generated haiku into a wiki page.
+Just type:
+
+ \[[!haiku hint="argument"]]
+
+[[!haiku hint="argument test"]]
+
+The hint parameter can be omitted, it only provides the generator a hint of
+what to write the haiku about. If no hint is given, it might base it on the
+page name. Since the vocabulary it knows is very small, many hints won't
+affect the result at all.
diff --git a/underlays/basewiki/directive/if.mdwn b/underlays/basewiki/directive/if.mdwn
new file mode 100644
index 000000000..57a04aa74
--- /dev/null
+++ b/underlays/basewiki/directive/if.mdwn
@@ -0,0 +1,46 @@
+The `if` directive is supplied by the [[!iki plugins/conditional]] plugin.
+
+With this directive, you can make text be conditionally displayed on a page.
+For example:
+
+ \[[!if test="enabled(smiley)"
+ then="The smiley plugin is enabled :-)"
+ else="No smiley plugin here.."]]
+
+If the specified `test` succeeds, the `then` text will be displayed,
+otherwise the `else` text will be displayed. The `else` part is optional.
+
+The `then` and `else` values can include any markup that would be allowed
+in the wiki page outside the template. Triple-quoting the values even allows
+quotes to be included.
+
+The `test` is a [[ikiwiki/PageSpec]]; if it matches any page in the wiki
+then it succeeds. So you can do things like testing for the existence of a
+page or pages, testing to see if any pages were created in a given month,
+and so on.
+
+If you want the [[ikiwiki/PageSpec]] to only match against the page that
+contains the conditional, rather than matching against all pages in the
+wiki, set the "all" parameter to "no".
+
+The regular [[ikiwiki/PageSpec]] syntax is expanded with the following
+additional tests:
+
+* enabled(plugin)
+
+ Tests whether the specified plugin is enabled.
+
+* sourcepage(glob)
+
+ Tests whether the glob matches the name of the page that contains the
+ conditional.
+
+* destpage(glob)
+
+ Tests whether the glob matches the name of the page that is being built.
+ That might be different than the name of the page that contains the
+ conditional, if it's being inlined into another page.
+
+* included()
+
+ Tests whether the page is being included onto another page.
diff --git a/underlays/basewiki/directive/img.mdwn b/underlays/basewiki/directive/img.mdwn
new file mode 100644
index 000000000..d8c9f359f
--- /dev/null
+++ b/underlays/basewiki/directive/img.mdwn
@@ -0,0 +1,36 @@
+The `img` directive is supplied by the [[!iki plugins/img]] plugin.
+
+This is an image handling directive. While ikiwiki supports inlining full-size
+images by making a [[ikiwiki/WikiLink]] that points to the image, using
+this plugin you can easily scale down an image for inclusion onto a page,
+providing a link to a full-size version.
+
+## usage
+
+ \[[!img image1.jpg size="200x200" alt="clouds"]]
+
+The image file will be searched for using the same rules as used to find
+the file pointed to by a [[ikiwiki/WikiLink]].
+
+The `size` parameter is optional, defaulting to full size. Note that the
+original image's aspect ratio is always preserved, even if this means
+making the image smaller than the specified size. You can also specify only
+the width or the height, and the other value will be calculated based on
+it: "200x", "x200".
+
+You can also pass `alt`, `title`, `class` and `id` parameters. These are
+passed through unchanged to the html img tag. If you include a `caption`
+parameter, the caption will be displayed centered beneath the image.
+
+The `link` parameter is used to control whether the scaled down image links
+to the full size version. By default it does; set "link=somepage" to link
+to another page instead, or "link=no" to disable the link, or
+"link=http://url" to link to a given url.
+
+You can also set default values that will be applied to all later images on
+the page, unless overridden. Useful when including many images on a page.
+
+ \[[!img defaults size=200x200 alt="wedding photo"]]
+ \[[!img photo1.jpg]]
+ \[[!img photo2.jpg]]
+ \[[!img photo3.jpg size=200x600]]
diff --git a/underlays/basewiki/directive/inline.mdwn b/underlays/basewiki/directive/inline.mdwn
new file mode 100644
index 000000000..7dfda7eda
--- /dev/null
+++ b/underlays/basewiki/directive/inline.mdwn
@@ -0,0 +1,10 @@
+The `inline` directive is supplied by the [[!iki plugins/inline]] plugin.
+
+This is a [[ikiwiki/directive]] that allows including one wiki page
+inside another. For example:
+
+ \[[!inline pages="blog/*"]]
+
+The most common use of inlining is generating blogs and RSS or Atom feeds.
+See [[ikiwiki/blog]] for details.
+
diff --git a/underlays/basewiki/directive/linkmap.mdwn b/underlays/basewiki/directive/linkmap.mdwn
new file mode 100644
index 000000000..8466e0465
--- /dev/null
+++ b/underlays/basewiki/directive/linkmap.mdwn
@@ -0,0 +1,28 @@
+The `linkmap` directive is supplied by the [[!iki plugins/linkmap]] plugin.
+
+This directive uses [graphviz](http://www.graphviz.org/) to generate a graph showing the links between a
+set of pages in the wiki. Example usage:
+
+ \[[!linkmap pages="* and !blog/* and !*/Discussion"]]
+
+Only links between mapped pages will be shown; links pointing to or from
+unmapped pages will be omitted. If the pages to include are not specified,
+the links between all pages (and other files) in the wiki are mapped. For
+best results, only a small set of pages should be mapped, since otherwise
+the map can become very large, unweildy, and complicated. Also, the map is
+rebuilt whenever one of the mapped pages is changed, which can make the
+wiki a bit slow.
+
+Here are descriptions of all the supported parameters to the `linkmap`
+directive:
+
+* `pages` - A [[ikiwiki/PageSpec]] of the pages to map.
+* `height`, `width` - Limit the size of the map to a given height and width,
+ in inches. Both must be specified for the limiting to take effect, otherwise
+ the map's size is not limited.
+
+[[!if test="enabled(linkmap)" then="""
+Here is an example link map, of the index page and all pages it links to:
+
+[[!linkmap pages="index or (backlink(index) and !*.png)"]]
+"""]]
diff --git a/underlays/basewiki/directive/listdirectives.mdwn b/underlays/basewiki/directive/listdirectives.mdwn
new file mode 100644
index 000000000..4d7ab5b3e
--- /dev/null
+++ b/underlays/basewiki/directive/listdirectives.mdwn
@@ -0,0 +1,16 @@
+The `listdirectives` directive is supplied by the [[!iki plugins/listdirectives]] plugin.
+
+This directive generates a list of available
+[[directives|ikiwiki/directive]].
+
+ \[[!listdirectives]]
+
+There is one optional keyword argument, `generated`. Normally the `listdirectives` directive will
+list all built in directives and directives directly registered by plugins. With this keyword,
+`listdirectives` will also list directives generated later. For example, all [[shortcuts]] are
+directives generated in turn by the `shortcut` directive. They will only be listed if the `generated` argument is
+supplied.
+
+ \[[!listdirectives generated]]
+
+This extended list is often quite long, and often contains many undocumented directives.
diff --git a/underlays/basewiki/directive/map.mdwn b/underlays/basewiki/directive/map.mdwn
new file mode 100644
index 000000000..3b27416ef
--- /dev/null
+++ b/underlays/basewiki/directive/map.mdwn
@@ -0,0 +1,17 @@
+The `map` directive is supplied by the [[!iki plugins/map]] plugin.
+
+This directive generates a hierarchical page map for the wiki. Example usage:
+
+ \[[!map pages="* and !blog/* and !*/Discussion"]]
+
+If the pages to include are not specified, all pages (and other files) in
+the wiki are mapped.
+
+By default, the names of pages are shown in the map. The `show` parameter
+can be used to show the titles or descriptions of pages instead (as set by
+the [[meta]] plugin). For example:
+
+ \[[!map pages="* and !blog/* and !*/Discussion" show=title]]
+
+Hint: To limit the map to displaying pages less than a certain level deep,
+use a [[ikiwiki/PageSpec]] like this: `pages="* and !*/*/*"`
diff --git a/underlays/basewiki/directive/meta.mdwn b/underlays/basewiki/directive/meta.mdwn
new file mode 100644
index 000000000..0b4b01ab8
--- /dev/null
+++ b/underlays/basewiki/directive/meta.mdwn
@@ -0,0 +1,145 @@
+The `meta` directive is supplied by the [[!iki plugins/meta]] plugin.
+
+This plugin allows inserting arbitrary metadata into the source of a page.
+Enter the metadata as follows:
+
+ \[[!meta field="value"]]
+ \[[!meta field="value" param="value" param="value"]]
+
+The first form sets a given field to a given value, while the second form
+also specifies some additional sub-parameters.
+
+The field values are treated as HTML entity-escaped text, so you can include
+a quote in the text by writing `&quot;` and so on.
+
+Supported fields:
+
+* title
+
+ Overrides the title of the page, which is generally the same as the
+ page name.
+
+ Note that if the title is overridden, a "title_overridden" variable will
+ be set to a true value in the template; this can be used to format things
+ differently in this case.
+
+* license
+
+ Specifies a license for the page, for example, "GPL". Can contain
+ WikiLinks and arbitrary markup.
+
+* copyright
+
+ Specifies the copyright of the page, for example, "Copyright 2007 by
+ Joey Hess". Can contain WikiLinks and arbitrary markup.
+
+* author
+
+ Specifies the author of a page.
+
+* authorurl
+
+ Specifies an url for the author of a page.
+
+* description
+
+ Specifies a "description" of the page. You could use this to provide
+ a summary, for example, to be picked up by the [[map]] plugin.
+
+* permalink
+
+ Specifies a permanent link to the page, if different than the page
+ generated by ikiwiki.
+
+* date
+
+ Specifies the creation date of the page. The date can be entered in
+ nearly any format, since it's parsed by [[!cpan TimeDate]].
+
+* stylesheet
+
+ Adds a stylesheet to a page. The stylesheet is treated as a wiki link to
+ a `.css` file in the wiki, so it cannot be used to add links to external
+ stylesheets. Example:
+
+ \[[!meta stylesheet=somestyle rel="alternate stylesheet"
+ title="somestyle"]]
+
+* openid
+
+ Adds html &lt;link&gt; tags to perform OpenID delegation to an external
+ OpenID server (for `openid` and `openid2`). An optional `xrds-location`
+ parameter lets you specify the location of any [eXtensible Resource
+ DescriptorS](http://www.windley.com/archives/2007/05/using_xrds.shtml).
+
+ This lets you use an ikiwiki page as your OpenID. Example:
+
+ \\[[!meta openid="http://joeyh.myopenid.com/"
+ server="http://www.myopenid.com/server"
+ xrds-location="http://www.myopenid.com/xrds?username=joeyh.myopenid.com""]]
+
+* link
+
+ Specifies a link to another page. This can be used as a way to make the
+ wiki treat one page as linking to another without displaying a user-visible
+ [[ikiwiki/WikiLink]]:
+
+ \[[!meta link=otherpage]]
+
+ It can also be used to insert a html &lt;link&gt; tag. For example:
+
+ \[[!meta link="http://joeyh.myopenid.com/" rel="openid.delegate"]]
+
+ However, this latter syntax won't be allowed if the [[!iki plugins/htmlscrubber]]
+ plugin is enabled, since it can be used to insert unsafe content.
+
+* redir
+
+ Causes the page to redirect to another page in the wiki.
+
+ \[[!meta redir=otherpage]]
+
+ Optionally, a delay (in seconds) can be specified. The default is to
+ redirect without delay.
+
+ It can also be used to redirect to an external url. For example:
+
+ \[[!meta redir="http://example.com/"]]
+
+ However, this latter syntax won't be allowed if the [[!iki plugins/htmlscrubber]]
+ plugin is enabled, since it can be used to insert unsafe content.
+
+ For both cases, an anchor to jump to inside the destination page may also be
+ specified using the common `PAGE#ANCHOR` syntax.
+
+* robots
+
+ Causes the robots meta tag to be written:
+
+ \[[!meta robots="index, nofollow"]]
+
+ Valid values for the attribute are: "index", "noindex", "follow", and
+ "nofollow". Multiple comma-separated values are allowed, but obviously only
+ some combinations make sense. If there is no robots meta tag, "index,
+ follow" is used as the default.
+
+ The plugin escapes the value, but otherwise does not care about its
+ contents. In particular, it does not check the values against the set of
+ valid values but serves whatever you pass it.
+
+* guid
+
+ Specifies a globally unique ID for a page. This guid should be a URI
+ (in particular, it can be `urn:uuid:` followed by a UUID, as per
+ [[!rfc 4122]]), and it will be used to identify the page's entry in RSS
+ and Atom feeds. If not given, the default is to use the page's URL as its
+ guid.
+
+ This is mostly useful when a page has moved, to keep the guids for
+ pages unchanged and avoid_flooding_aggregators
+ (see [[!iki tips/howto_avoid_flooding_aggregators]]).
+
+If the field is not one of the above predefined fields, the metadata will be
+written to the generated html page as a &lt;meta&gt; header. However, this
+won't be allowed if the [[!iki plugins/htmlscrubber]] plugin is enabled,
+since it can be used to insert unsafe content.
diff --git a/underlays/basewiki/directive/more.mdwn b/underlays/basewiki/directive/more.mdwn
new file mode 100644
index 000000000..dc5f0d8b1
--- /dev/null
+++ b/underlays/basewiki/directive/more.mdwn
@@ -0,0 +1,14 @@
+The `more` directive is supplied by the [[!iki plugins/more]] plugin.
+
+This directive provides a way to have a "more" link on a page in a blog, that
+leads to the full version of the page. Use it like this:
+
+ \[[!more linktext="click for more" text="""
+ This is the rest of my post. Not intended for people catching up on
+ their blogs at 30,000 feet. Because I like to make things
+ difficult.
+ """]]
+
+If the `linktext` parameter is omitted it defaults to just "more".
+
+Note that you can accomplish something similar using a [[toggle]] instead.
diff --git a/underlays/basewiki/directive/orphans.mdwn b/underlays/basewiki/directive/orphans.mdwn
new file mode 100644
index 000000000..76c028474
--- /dev/null
+++ b/underlays/basewiki/directive/orphans.mdwn
@@ -0,0 +1,19 @@
+The `orphans` directive is supplied by the [[!iki plugins/orphans]] plugin.
+
+This directive generates a list of possibly orphaned pages -- pages that no
+other page links to.
+
+The optional parameter "pages" can be a [[ikiwiki/PageSpec]] specifying the
+pages to check for orphans, default is search them all.
+
+Note that it takes backlinks into account, but does not count inlining a
+page as linking to it, so will generally count many blog-type pages as
+orphans.
+
+[[!if test="enabled(orphans)" then="""
+Here's a list of orphaned pages on this wiki:
+
+[[!orphans pages="* and !news/* and !todo/* and !bugs/* and !users/* and
+!recentchanges and !examples/* and !tips/* and !sandbox/* and !templates/* and
+!wikiicons/* and !plugins/*"]]
+"""]]
diff --git a/underlays/basewiki/directive/pagecount.mdwn b/underlays/basewiki/directive/pagecount.mdwn
new file mode 100644
index 000000000..b2ed09a48
--- /dev/null
+++ b/underlays/basewiki/directive/pagecount.mdwn
@@ -0,0 +1,10 @@
+The `pagecount` directive is supplied by the [[!iki plugins/pagecount]] plugin.
+
+This directive counts pages currently in the wiki.
+
+The optional parameter "pages" can be a [[ikiwiki/PageSpec]] specifying the
+pages to count, default is to count them all.
+
+If it is turned on it can tell us that this wiki includes
+[[!pagecount pages="* and !recentchanges"]]
+pages, of which [[!pagecount pages="*/Discussion"]] are discussion pages.
diff --git a/underlays/basewiki/directive/pagestats.mdwn b/underlays/basewiki/directive/pagestats.mdwn
new file mode 100644
index 000000000..c6888df37
--- /dev/null
+++ b/underlays/basewiki/directive/pagestats.mdwn
@@ -0,0 +1,13 @@
+The `pagestats` directive is supplied by the [[!iki plugins/pagestats]] plugin.
+
+This directive can generate stats about how pages link to each other. It can
+produce either a del.icio.us style cloud, or a table counting the number of
+links to each page.
+
+Here's how to use it to create a [[tag]] cloud:
+
+ \[[!pagestats pages="tags/*"]]
+
+And here's how to create a table of all the pages on the wiki:
+
+ \[[!pagestats style="table"]]
diff --git a/underlays/basewiki/directive/pagetemplate.mdwn b/underlays/basewiki/directive/pagetemplate.mdwn
new file mode 100644
index 000000000..631ea09a4
--- /dev/null
+++ b/underlays/basewiki/directive/pagetemplate.mdwn
@@ -0,0 +1,12 @@
+The `pagetemplate` directive is supplied by the [[!iki plugins/pagetemplate]] plugin.
+
+This directive allows a page to be created using a different
+wikitemplates. The page text is inserted into the template, so
+the template controls the overall look and feel of the wiki page. This is
+in contrast to the [[ikiwiki/directive/template]] directive, which allows inserting templates
+_into_ the body of a page.
+
+This directive can only reference templates that are already installed
+by the system administrator. Example:
+
+ \[[!pagetemplate template=my_fancy.tmpl]]
diff --git a/underlays/basewiki/directive/paste.mdwn b/underlays/basewiki/directive/paste.mdwn
new file mode 100644
index 000000000..145bfdb1a
--- /dev/null
+++ b/underlays/basewiki/directive/paste.mdwn
@@ -0,0 +1 @@
+[[!meta redir=/ikiwiki/directive/cutpaste]]
diff --git a/underlays/basewiki/directive/ping.mdwn b/underlays/basewiki/directive/ping.mdwn
new file mode 100644
index 000000000..5bb340edb
--- /dev/null
+++ b/underlays/basewiki/directive/ping.mdwn
@@ -0,0 +1,16 @@
+The `ping` directive is supplied by the [[!iki plugins/pinger]] plugin.
+
+This directive allows ikiwiki to be configured to hit a URL each time it
+updates the wiki. One way to use this is in conjunction with the [[!iki plugins/pingee]]
+plugin to set up a loosely coupled mirror network, or a branched version of
+a wiki. By pinging the mirror or branch each time the main wiki changes, it
+can be kept up-to-date.
+
+ \[[!ping from="http://mywiki.com/"
+ to="http://otherwiki.com/ikiwiki.cgi?do=ping"]]
+
+The "from" parameter must be identical to the url of the wiki that is doing
+the pinging. This is used to prevent ping loops.
+
+The "to" parameter is the url to ping. The example shows how to ping
+another ikiwiki instance.
diff --git a/underlays/basewiki/directive/poll.mdwn b/underlays/basewiki/directive/poll.mdwn
new file mode 100644
index 000000000..d27329c72
--- /dev/null
+++ b/underlays/basewiki/directive/poll.mdwn
@@ -0,0 +1,23 @@
+The `poll` directive is supplied by the [[!iki plugins/poll]] plugin.
+
+This directive allows you to create online polls in the wiki. Here's an
+example use:
+
+ \[[!poll 0 "red" 0 "green" 0 "blue"]]
+
+The numbers indicate how many users voted for that choice. When a user
+votes for a choice in the poll, the page is modified and the number
+incremented.
+
+While some basic precautions are taken to prevent users from accidentially
+voting twice, this sort of poll should not be counted on to be very
+accurate; all the usual concerns about web based polling apply. Unless the
+page that the poll is in is locked, users can even edit the page and change
+the numbers!
+
+Parameters:
+
+* `open` - Whether voting is still open. Set to "no" to close the poll to
+ voting.
+* `total` - Show total number of votes at bottom of poll. Default is "yes".
+* `percent` - Whether to display percents. Default is "yes".
diff --git a/underlays/basewiki/directive/polygen.mdwn b/underlays/basewiki/directive/polygen.mdwn
new file mode 100644
index 000000000..72b031235
--- /dev/null
+++ b/underlays/basewiki/directive/polygen.mdwn
@@ -0,0 +1,28 @@
+The `polygen` directive is supplied by the [[!iki plugins/polygen]] plugin.
+
+This directive allows inserting text generated by polygen into a wiki page.
+For example:
+
+ \[[!polygen grammar="genius"]]
+
+It's also possible to specify a starting nonterminal for the grammar by
+including `symbol="text"` in the directive.
+
+[[!if test="enabled(polygen)" then="""
+----
+
+Here are a few notes about ikiwiki, courtesy of polygen:
+
+Ikiwiki is internally based on a [[!polygen grammar="designpatterns"]]
+coupled to a [[!polygen grammar="designpatterns"]], as described in
+"[[!polygen grammar="paper"]]" by [[!polygen grammar="nipponame"]] of
+[[!polygen grammar="boyband"]].
+
+Ikiwiki reviews:
+<ul>
+<li>[[!polygen grammar="reviews"]]</li>
+<li>[[!polygen grammar="reviews"]]</li>
+<li>[[!polygen grammar="reviews"]]</li>
+</ul>
+
+"""]]
diff --git a/underlays/basewiki/directive/postsparkline.mdwn b/underlays/basewiki/directive/postsparkline.mdwn
new file mode 100644
index 000000000..d10451f85
--- /dev/null
+++ b/underlays/basewiki/directive/postsparkline.mdwn
@@ -0,0 +1,43 @@
+The `postsparkline` directive is supplied by the [[!iki plugins/postsparkline]] plugin.
+
+This plugin uses the [[!iki plugins/sparkline]] plugin to create a [[sparkline]] of
+statistics about a set of pages, such as posts to a blog.
+
+# examples
+
+ Post interval:
+ \[[!postsparkline pages="blog/* and !*/Discussion" max=100
+ formula=interval style=bar barwidth=2 barspacing=1 height=13]]
+
+ Posts per month this year:
+ \[[!postsparkline pages="blog/* and !*/Discussion" max=12
+ formula=permonth style=bar barwidth=2 barspacing=1 height=13]]
+
+# usage
+
+All options aside fron the `pages`, `max`, `formula`, `time`, and `color`
+options are passed on to the sparkline plugin.
+
+You don't need to specify any data points (though you can if you want to).
+Instead, data points are automatically generated based on the creation
+times of pages matched by the specified `pages` [[ikiwiki/PageSpec]]. A
+maximum of `max` data points will be generated.
+
+The `formula` parameter controls the formula used to generate data points.
+Available forumlae:
+
+* `interval` - The height of each point represents how long it has been
+ since the previous post.
+* `perday` - Each point represents a day; the height represents how
+ many posts were made that day.
+* `permonth` - Each point represents a month; the height represents how
+ many posts were made that month.
+* `peryear` - Each point represents a day; the height represents how
+ many posts were made that year.
+
+The `time` parameter has a default value of "ctime", since forumae use
+the creation times of pages by default. If you instead want
+them to use the modification times of pages, set it to "mtime".
+
+To change the color used to draw the sparkline, use the `color` parameter.
+For example, "color=red".
diff --git a/underlays/basewiki/directive/progress.mdwn b/underlays/basewiki/directive/progress.mdwn
new file mode 100644
index 000000000..8f2426693
--- /dev/null
+++ b/underlays/basewiki/directive/progress.mdwn
@@ -0,0 +1,17 @@
+The `progress` directive is supplied by the [[!iki plugins/progress]] plugin.
+
+This directive generates a progress bar.
+
+There are two possible parameter sets. The first is a single parameter
+"percent" which holds a percentage figure of how complete the progress bar is.
+
+The second possible set of parameters is a pair of [[ikiwiki/PageSpec]]s,
+`totalpages` and `donepages`. The progress plugin counts the number of
+pages in each pagespec and shows the percentage of the total pages that are
+done.
+
+This plugin is included in ikiwiki, but is not enabled by default.
+
+If it is turned on it can show what percentage of pages have discussion pages:
+
+[[!progress totalpages="* and !*/Discussion" donepages="*/Discussion"]]
diff --git a/underlays/basewiki/directive/shortcut.mdwn b/underlays/basewiki/directive/shortcut.mdwn
new file mode 100644
index 000000000..2c6e0224f
--- /dev/null
+++ b/underlays/basewiki/directive/shortcut.mdwn
@@ -0,0 +1,7 @@
+The `shortcut` directive is supplied by the [[!iki plugins/shortcut]] plugin.
+
+This plugin allows external links to commonly linked to sites to be made
+more easily using shortcuts.
+
+The available shortcuts are defined on the [[shortcuts]] page in
+the wiki.
diff --git a/underlays/basewiki/directive/sparkline.mdwn b/underlays/basewiki/directive/sparkline.mdwn
new file mode 100644
index 000000000..53dea2619
--- /dev/null
+++ b/underlays/basewiki/directive/sparkline.mdwn
@@ -0,0 +1,58 @@
+The `sparkline` directive is supplied by the [[!iki plugins/sparkline]] plugin.
+
+This directive allows for embedding sparklines into wiki pages. A
+sparkline is a small word-size graphic chart, that is designed to be
+inlined alongside text.
+
+# examples
+
+ \[[!sparkline 1 3 5 -3 10 0 width=40 height=16
+ featurepoint="4,-3,red,3" featurepoint="5,10,green,3"]]
+
+This creates a simple line graph, graphing several points.
+[[!if test="enabled(sparkline)" then="""
+[[!sparkline 1 3 5 -3 10 0 width=40 height=16
+featurepoint="4,-3,red,3" featurepoint="5,10,green,3"]]
+"""]]
+It will be drawn 40 pixels wide and 16 pixels high. The high point in the
+line has a green marker, and the low point has a red marker.
+
+ \[[!sparkline 1 -1(red) 1 -1(red) 1 1 1 -1(red) -1(red) style=bar barwidth=2
+ barspacing=1 height=13]]
+
+This more complex example generates a bar graph.
+[[!if test="enabled(sparkline)" then="""
+[[!sparkline 1 -1(red) 1 -1(red) 1 1 1 -1(red) -1(red)
+style=bar barwidth=2 barspacing=1 height=13]]
+"""]]
+The bars are 2 pixels wide, and separated by one pixel, and the graph is 13
+pixels tall. Width is determined automatically for bar graphs. The points
+with negative values are colored red, instead of the default black.
+
+# usage
+
+The form for the data points is "x,y", or just "y" if the x values don't
+matter. Bar graphs can also add "(color)" to specify a color for that bar.
+
+The following named parameters are recognised. Most of these are the same
+as those used by the underlying sparkline library, which is documented in
+more detail in [its wiki](http://sparkline.wikispaces.com/usage).
+
+* `style` - Either "line" (the default) or "bar".
+* `width` - Width of the graph in pixels. Only needed for line graphs.
+* `height` - Height of the graph in pixels. Defaults to 16.
+* `barwidth` - Width of bars in a bar graph. Default is 1 pixel.
+* `barspacing` - Spacing between bars in a bar graph, in pixels. Default is
+ 1 pixel.
+* `ymin`, `ymax` - Minimum and maximum values for the Y axis. This is
+ normally calculated automatically, but can be explicitly specified to get
+ the same values for multiple related graphs.
+* `featurepoint` - Adds a circular marker to a line graph, with optional
+ text. This can be used to label significant points.
+
+ The value is a comma-delimited list of parameters specifying the feature
+ point: X value, Y value, color name, circle diameter, text (optional),
+ and text location (optional). Example: `featurepoint="3,5,blue,3"`
+
+ Available values for the text location are: "top", "right", "bottom", and
+ "left".
diff --git a/underlays/basewiki/directive/table.mdwn b/underlays/basewiki/directive/table.mdwn
new file mode 100644
index 000000000..0ddb0a9a3
--- /dev/null
+++ b/underlays/basewiki/directive/table.mdwn
@@ -0,0 +1,43 @@
+The `table` directive is supplied by the [[!iki plugins/table]] plugin.
+
+This directive can build HTML tables from data in CSV (comma-separated values)
+or DSV (delimiter-separated values) format.
+
+## examples
+
+ \[[!table data="""
+ Customer|Amount
+ Fulanito|134,34
+ Menganito|234,56
+ Menganito|234,56
+ """]]
+
+ \[[!table class="book_record" format=csv file="data/books/record1"]]
+
+In this second example the `record1` page should be similar to:
+
+ "Title","Perl Best Practices"
+ "Author","Damian Conway"
+ "Publisher","O’Reilly"
+
+To make a cell span multiple columns, follow it with one or more empty
+cells. For example:
+
+ \[[!table data="""
+ left||right|
+ a|b|c|d
+ this cell spans 4 columns|||
+ """]]
+
+## usage
+
+* `data` - Values for the table.
+* `file` - A file in the wiki containing the data.
+* `format` - The format of the data, either "csv", "dsv", or "auto"
+ (the default).
+* `delimiter` - The character used to separate fields. By default,
+ DSV format uses a pipe (`|`), and CSV uses a comma (`,`).
+* `class` - A CSS class for the table html element.
+* `header` - By default, or if set to "row", the first data line is used
+ as the table header. Set it to "no" to make a table without a header, or
+ "column" to make the first column be the header.
diff --git a/underlays/basewiki/directive/tag.mdwn b/underlays/basewiki/directive/tag.mdwn
new file mode 100644
index 000000000..68b969f76
--- /dev/null
+++ b/underlays/basewiki/directive/tag.mdwn
@@ -0,0 +1,35 @@
+The `tag` and `taglink` directives are supplied by the [[!iki plugins/tag]] plugin.
+
+These directives allows tagging pages. List tags as follows:
+
+ \[[!tag tech life linux]]
+
+The tags work the same as if you had put a (hidden) [[ikiwiki/WikiLink]] on
+the page for each tag, so you can use a [[ikiwiki/PageSpec]] match all
+pages that are tagged with a given tag, for example. The tags will also
+show up on blog entries and at the bottom of the tagged pages, as well as
+in RSS and Atom feeds.
+
+If you want a visible [[ikiwiki/WikiLink]] along with the tag, use taglink
+instead:
+
+ \[[!taglink foo]]
+ \[[!taglink tagged_as_foo|foo]]
+
+This plugin has a configuration option. Set --tagbase=tags and links to tags
+will be located under the specified base page. If ikiwiki is configured
+this way, then the example above actually tags the page with the tags
+tags/tech, tags/life, and tags/linux. This is a useful way to avoid
+having to write the full path to tags, if you want to keep them grouped
+together out of the way.
+
+If you want to override the tagbase for a particular tag, you can use
+something like this:
+
+ \[[!tag ./foo]]
+ \[[!taglink /foo]]
+
+[[!if test="enabled(tag)" then="""
+This wiki has the tag plugin enabled, so you'll see a note below that this
+page is tagged with the "tags" tag.
+"""]]
diff --git a/underlays/basewiki/directive/taglink.mdwn b/underlays/basewiki/directive/taglink.mdwn
new file mode 100644
index 000000000..2fc08b1ff
--- /dev/null
+++ b/underlays/basewiki/directive/taglink.mdwn
@@ -0,0 +1 @@
+[[!meta redir=/ikiwiki/directive/tag]]
diff --git a/underlays/basewiki/directive/template.mdwn b/underlays/basewiki/directive/template.mdwn
new file mode 100644
index 000000000..8a981c3be
--- /dev/null
+++ b/underlays/basewiki/directive/template.mdwn
@@ -0,0 +1,85 @@
+The `template` directive is supplied by the [[!iki plugins/template]] plugin.
+
+Templates are files that can be filled out and inserted into pages in the
+wiki.
+
+## Using a template
+
+Using a template works like this:
+
+ \[[!template id=note text="""Here is the text to insert into my note."""]]
+
+This fills out the `note` template, filling in the `text` field with
+the specified value, and inserts the result into the page.
+
+Generally, a value can include any markup that would be allowed in the wiki
+page outside the template. Triple-quoting the value even allows quotes to
+be included in it. Combined with multi-line quoted values, this allows for
+large chunks of marked up text to be embedded into a template:
+
+ \[[!template id=foo name="Sally" color="green" age=8 notes="""
+ * \[[Charley]]'s sister.
+ * "I want to be an astronaut when I grow up."
+ * Really 8 and a half.
+ """]]
+
+## Creating a template
+
+To create a template, simply add a template directive to a page, and the
+page will provide a link that can be used to create the template. The template
+is a regular wiki page, located in the `templates/` subdirectory inside
+the source directory of the wiki.
+
+The template uses the syntax used by the [[!cpan HTML::Template]] perl
+module, which allows for some fairly complex things to be done. Consult its
+documentation for the full syntax, but all you really need to know are a
+few things:
+
+* Each parameter you pass to the template directive will generate a
+ template variable. There are also some pre-defined variables like PAGE
+ and BASENAME.
+* To insert the value of a variable, use `<TMPL_VAR variable>`. Wiki markup
+ in the value will first be converted to html.
+* To insert the raw value of a variable, with wiki markup not yet converted
+ to html, use `<TMPL_VAR raw_variable>`.
+* To make a block of text conditional on a variable being set use
+ `<TMPL_IF NAME="variable">text</TMPL_IF>`.
+* To use one block of text if a variable is set and a second if it's not,
+ use `<TMPL_IF NAME="variable">text<TMPL_ELSE>other text</TMPL_IF>`
+
+Here's a sample template:
+
+ <span class="infobox">
+ Name: \[[<TMPL_VAR raw_name>]]<br />
+ Age: <TMPL_VAR age><br />
+ <TMPL_IF NAME="color">
+ Favorite color: <TMPL_VAR color><br />
+ <TMPL_ELSE>
+ No favorite color.<br />
+ </TMPL_IF>
+ <TMPL_IF NAME="notes">
+ <hr />
+ <TMPL_VAR notes>
+ </TMPL_IF>
+ </span>
+
+The filled out template will be formatted the same as the rest of the page
+that contains it, so you can include WikiLinks and all other forms of wiki
+markup in the template. Note though that such WikiLinks will not show up as
+backlinks to the page that uses the template.
+
+Note the use of "raw_name" inside the [[WikiLink]] generator. This ensures
+that if the name contains something that might be mistaken for wiki markup,
+it's not converted to html before being processed as a [[WikiLink]].
+
+[[!if test="enabled(template) and enabled(inline)" then="""
+
+## Available templates
+
+These templates are available for inclusion onto other pages in this
+wiki:
+
+[[!inline pages="templates/* and !*/discussion" feeds=no archive=yes
+sort=title template=titlepage]]
+"""]]
+
diff --git a/underlays/basewiki/directive/testpagespec.mdwn b/underlays/basewiki/directive/testpagespec.mdwn
new file mode 100644
index 000000000..38b5c67ae
--- /dev/null
+++ b/underlays/basewiki/directive/testpagespec.mdwn
@@ -0,0 +1,22 @@
+The `testpagespec` directive is supplied by the [[!iki plugins/testpagespec]] plugin.
+
+This directive allows testing a [[ikiwiki/PageSpec]] to see if it matches a
+page, and to see the part that matches, or causes the match to fail.
+
+Example uses:
+
+ \[[!testpagespec pagespec="foopage and barpage" match="foopage"]]
+
+This will print out something like "no match: barpage does not match
+foopage", highlighting which part of the [[ikiwiki/PageSpec]] is causing
+the match to fail.
+
+ \[[!testpagespec pagespec="foopage or !bar*" match="barpage"]]
+
+This will print out something like "no match: bar* matches barpage", since
+the part of the [[ikiwiki/PageSpec]] that fails is this negated match.
+
+ \[[!testpagespec pagespec="foopage or barpage" match="barpage"]]
+
+This will print out something like "match: barpage matches barpage",
+indicating the part of the [[ikiwiki/PageSpec]] that caused it to match.
diff --git a/underlays/basewiki/directive/teximg.mdwn b/underlays/basewiki/directive/teximg.mdwn
new file mode 100644
index 000000000..b80c0d016
--- /dev/null
+++ b/underlays/basewiki/directive/teximg.mdwn
@@ -0,0 +1,23 @@
+The `teximg` directive is supplied by the [[!iki plugins/teximg]] plugin.
+
+This directive renders LaTeX formulas into images.
+
+## examples
+
+ \[[!teximg code="\frac{1}{2}"]]
+ \[[!teximg code="E = - \frac{Z^2 \cdot \mu \cdot e^4}{32\pi^2 \epsilon_0^2 \hbar^2 n^2}" ]]
+
+To scale the image, use height=x:
+
+ \[[!teximg code="\frac{1}{2}" height="17"]]
+ \[[!teximg code="\frac{1}{2}" height="8"]]
+
+If no height is choosen the default height 12 is used. Valid heights are: 8, 9,
+10, 11, 12, 14, 17, 20. If another height is entered, the closest available
+height is used.
+
+To add an alt text to the image, use alt="text":
+
+ \[[!teximg code="\frac{1}{2}" alt="1/2"]]
+
+See [this site](http://www.der-winnie.de/opensource/gsoc2007) for rendered images.
diff --git a/underlays/basewiki/directive/toc.mdwn b/underlays/basewiki/directive/toc.mdwn
new file mode 100644
index 000000000..e499ee824
--- /dev/null
+++ b/underlays/basewiki/directive/toc.mdwn
@@ -0,0 +1,19 @@
+The `toc` directive is supplied by the [[!iki plugins/toc]] plugin.
+
+Add a table of contents to a page:
+
+ \[[!toc ]]
+
+The table of contents will be automatically generated based on the
+headers of the page. By default only the largest headers present on the
+page will be shown; to control how many levels of headers are shown, use
+the `levels` parameter:
+
+ \[[!toc levels=2]]
+
+The toc directive will take the level of the first header as the topmost
+level, even if there are higher levels seen later in the file.
+
+The table of contents will be created as an ordered list. If you want
+an unordered list instead, you can change the list-style in your local
+style sheet.
diff --git a/underlays/basewiki/directive/toggle.mdwn b/underlays/basewiki/directive/toggle.mdwn
new file mode 100644
index 000000000..f4602ba29
--- /dev/null
+++ b/underlays/basewiki/directive/toggle.mdwn
@@ -0,0 +1,32 @@
+The `toggle` and `toggleable` directives are supplied by the [[!iki plugins/toggle]] plugin.
+
+With these directives you can create links on pages that, when clicked, toggle
+display of other parts of the page.
+
+It uses javascript to accomplish this; browsers without javascript will
+always see the full page content.
+
+Example use:
+
+ \[[!toggle id="ipsum" text="show"]]
+
+ \[[!toggleable id="ipsum" text="""
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
+ eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim
+ ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
+ aliquip ex ea commodo consequat.
+
+ [[!toggle id="ipsum" text="hide"]]
+ """]]
+
+Note that you can include wiki markup in the toggleable text,
+including even additional toggles, as shown in the above example.
+
+Also, the toggle and the togglable definitions do not need to be next to
+each other, but can be located anywhere on the page. There can also be
+mutiple toggles that all toggle a single togglable.
+
+The id has a default value of "default", so can be omitted in simple cases.
+
+If you'd like a toggleable to be displayed by default, and toggle to
+hidden, then pass a parameter "open=yes" when setting up the toggleable.
diff --git a/underlays/basewiki/directive/toggleable.mdwn b/underlays/basewiki/directive/toggleable.mdwn
new file mode 100644
index 000000000..c69cbf801
--- /dev/null
+++ b/underlays/basewiki/directive/toggleable.mdwn
@@ -0,0 +1 @@
+[[!meta redir=/ikiwiki/directive/toggle]]
diff --git a/underlays/basewiki/directive/version.mdwn b/underlays/basewiki/directive/version.mdwn
new file mode 100644
index 000000000..da1ddceb5
--- /dev/null
+++ b/underlays/basewiki/directive/version.mdwn
@@ -0,0 +1,10 @@
+The `version` directive is supplied by the [[!iki plugins/version]] plugin.
+
+This directive allows inserting the version of ikiwiki onto a page.
+
+Whenever ikiwiki is upgraded to a new version, the page will be rebuilt,
+updating the version number.
+
+Use is simple:
+
+ \[[!version ]]