diff options
authorJonas Smedegaard <>2010-10-14 13:38:20 +0200
committerJonas Smedegaard <>2010-10-14 13:38:20 +0200
commitce0037e0ff41a75d0e6c947ef547ef9630c54be9 (patch)
Sync with ikiwiki 3.20100926.HEADmasterikiwiki
38 files changed, 1399 insertions, 0 deletions
diff --git a/ikiwiki/directive/aggregate.mdwn b/ikiwiki/directive/aggregate.mdwn
new file mode 100644
index 0000000..f493151
--- /dev/null
+++ b/ikiwiki/directive/aggregate.mdwn
@@ -0,0 +1,57 @@
+The `aggregate` directive is supplied by the [[!iki plugins/aggregate
+desc=aggregate]] plugin. This plugin requires extra setup, specifically, a
+cron job. See the plugin's documentation for details.
+This directive allows content from other feeds to be aggregated into the
+wiki. Aggregate a feed as follows:
+ \[[!aggregate name="eksempel blog" dir="eksempel"
+ feedurl=""
+ url="" updateinterval="15"]]
+That example aggregates posts from the specified RSS feed, updating no more
+frequently than once every 15 minutes (though possibly less frequently, if
+the cron job runs less frequently than that), and puts a page per post under
+the example/ directory in the wiki.
+You can then use ikiwiki's [[inline]] directive to create a blog of one or
+more aggregated feeds. For example:
+ \[[!inline pages="internal(eksempel/*)"]]
+Note the use of `internal()` in the [[ikiwiki/PageSpec]] to match aggregated
+pages. By default, aggregated pages are internal pages, which prevents them
+from showing up directly in the wiki, and so this special [[PageSpec]] is
+needed to match them.
+## brug
+Here are descriptions of all the supported parameters to the `aggregate`
+* `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
+[[!meta robots="noindex, follow"]]
diff --git a/ikiwiki/directive/brokenlinks.mdwn b/ikiwiki/directive/brokenlinks.mdwn
new file mode 100644
index 0000000..b59e18b
--- /dev/null
+++ b/ikiwiki/directive/brokenlinks.mdwn
@@ -0,0 +1,15 @@
+The `brokenlinks` directive is supplied by the [[!iki plugins/brokenlinks
+desc=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.
+ \[[!brokenlinks pages="* and !recentchanges"]]
+[[!meta robots="noindex, follow"]]
diff --git a/ikiwiki/directive/calendar.mdwn b/ikiwiki/directive/calendar.mdwn
new file mode 100644
index 0000000..22ee91b
--- /dev/null
+++ b/ikiwiki/directive/calendar.mdwn
@@ -0,0 +1,61 @@
+The `calendar` directive is supplied by the [[!iki plugins/calendar
+desc=calendar]] plugin.
+This directive displays a calendar, similar to the typical calendars shown
+on some blogs.
+# exempler
+ \[[!calendar ]]
+ \[[!calendar type="month" pages="blog/* and !*/Discussion"]]
+ \[[!calendar type="year" year="2005" pages="blog/* and !*/Discussion"]]
+## setup
+The calendar 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. The month format calendar simply links to
+any page posted on each day of the month. The year format calendar links to
+archive pages, with names like `archives/2007` (for all of 2007) and
+`archives/2007/01` (for January, 2007).
+While you can insert calendar directives anywhere on your wiki, including in
+the sidebar, you'll also need to create these archive pages. They typically
+use this directive to display a calendar, and also use [[inline]] to display
+or list pages created in the given time frame.
+The `ikiwiki-calendar` command can be used to automatically generate the
+archive pages. It also refreshes the wiki, updating the calendars to
+highlight the current day. This command is typically run at midnight from
+An example crontab:
+ 0 0 * * * ikiwiki-calendar ~/ikiwiki.setup "posts/* and !*/Discussion"
+## brug
+* `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.
+ Calendars link to pages under here, with names like "2010/04" and
+ "2010". These pages can be automatically created using the
+ `ikiwiki-calendar` program.
+* `year` - The year for which the calendar is requested. Defaults to the
+ current year. Can also use -1 to refer to last year, and so on.
+* `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. Can also use -1 to refer to last month, and so on.
+* `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 year calendar, number of months to place in each
+ row. Defaults to 3.
+[[!meta robots="noindex, follow"]]
diff --git a/ikiwiki/directive/color.mdwn b/ikiwiki/directive/color.mdwn
new file mode 100644
index 0000000..806dcb0
--- /dev/null
+++ b/ikiwiki/directive/color.mdwn
@@ -0,0 +1,26 @@
+The `color` directive is supplied by the [[!iki plugins/color desc=color]]
+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.
+## eksempler
+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="Hvid tekst på rød baggrund"]]
+The background color is missing, so the text is displayed on default
+ \[[!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"]]
+[[!meta robots="noindex, follow"]]
diff --git a/ikiwiki/directive/comment.mdwn b/ikiwiki/directive/comment.mdwn
new file mode 100644
index 0000000..a9a7c21
--- /dev/null
+++ b/ikiwiki/directive/comment.mdwn
@@ -0,0 +1,38 @@
+The `comment` directive is supplied by the [[!iki plugins/comments
+desc=comments]] plugin, and is used to add a comment to a page. Typically,
+the directive is the only thing on a comment page, and is filled out by the
+comment plugin when a user posts a comment.
+ \[[!comment format=mdwn
+ username="foo"
+ subject="Bar"
+ date="2009-06-02T19:05:01Z"
+ content="""
+ Blah blah.
+ """
+ ]]
+## brug
+The only required parameter is `content`, the others just add or override
+metadata of the comment.
+* `content` - Text to display for the comment. Note that
+ [[directives|ikiwiki/directive]] may not be allowed, depending on the
+ configuration of the comment plugin.
+* `format` - Specifies the markup used for the content.
+* `subject` - Subject for the comment.
+* `date` - Date the comment was posted. Can be entered in nearly any format,
+ since it's parsed by [[!cpan TimeDate]]
+* `username` - Used to record the username (or OpenID) of a logged in
+ commenter.
+* `nickname` - Name to display for a logged in commenter. (Optional; used
+ for OpenIDs.)
+* `ip` - Can be used to record the IP address of a commenter, if they posted
+ anonymously.
+* `claimedauthor` - Records the name that the user entered, if anonymous
+ commenters are allowed to enter their (unverified) name.
+[[!meta robots="noindex, follow"]]
diff --git a/ikiwiki/directive/cutpaste.mdwn b/ikiwiki/directive/cutpaste.mdwn
new file mode 100644
index 0000000..ae456a1
--- /dev/null
+++ b/ikiwiki/directive/cutpaste.mdwn
@@ -0,0 +1,50 @@
+The `copy`, `cut` and `paste` directives are supplied by the [[!iki
+plugins/cutpaste desc=cutpaste]] plugin.
+With these directives you can store and recall pieces of text in a page:
+ * `\[[!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:
+ \[[!toggleable id="cut" text="[[!paste id=cutlongdesc]]"]]
+ \[[!toggleable id="copy" text="[[!paste id=copylongdesc]]"]]
+ \[[!toggleable id="paste" text="[[!paste id=pastelongdesc]]"]]
+ [...noget tid senere...]
+ \[[!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 directives that require multiline parameters inside each other:
+ \[[!toggleable id=foo text="""
+ [[!toggleable id=bar text="[[!paste id=baz]]"]]
+ """]]
+ \[[!cut id=baz text="""
+ flere linjer lang parameter!
+ """]]
+[[!meta robots="noindex, follow"]]
diff --git a/ikiwiki/directive/edittemplate.mdwn b/ikiwiki/directive/edittemplate.mdwn
new file mode 100644
index 0000000..52581cd
--- /dev/null
+++ b/ikiwiki/directive/edittemplate.mdwn
@@ -0,0 +1,38 @@
+The `edittemplate` directive is supplied by the [[!iki plugins/edittemplate
+desc=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
+ \[[!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. To avoid the
+directive displaying a note about the template being registered, add
+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
+ Package:
+ Version:
+ Reproducible: y/n
+ Details:
+The template page can also contain [[!cpan HTML::Template]] directives,
+like other ikiwiki [[templates]]. Currently only one variable is
+set: `<TMPL_VAR name>` is replaced with the name of the page being
+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.
+[[!meta robots="noindex, follow"]]
diff --git a/ikiwiki/directive/format.mdwn b/ikiwiki/directive/format.mdwn
new file mode 100644
index 0000000..a829a58
--- /dev/null
+++ b/ikiwiki/directive/format.mdwn
@@ -0,0 +1,29 @@
+The `format` directive is supplied by the [[!iki plugins/format
+desc=format]] plugin.
+The directive allows formatting a chunk of text using any available page
+format. It takes two parameters. First is the type of format to use, ie the
+extension that would be used for a standalone file of this type. Second is
+the text to format.
+For example, this will embed an otl outline inside a page using mdwn or some
+other format:
+ \[[!format otl """
+ foo
+ 1
+ 2
+ bar
+ 3
+ 4
+ """]]
+Note that if the highlight plugin is enabled, this directive can also be
+used to display syntax highlighted code. Many languages and formats are
+supported. For example:
+ \[[!format perl """
+ print "hej, verden\n";
+ """]]
+[[!meta robots="noindex, follow"]]
diff --git a/ikiwiki/directive/fortune.mdwn b/ikiwiki/directive/fortune.mdwn
new file mode 100644
index 0000000..496eacd
--- /dev/null
+++ b/ikiwiki/directive/fortune.mdwn
@@ -0,0 +1,9 @@
+The `fortune` directive is supplied by the [[!iki plugins/fortune
+desc=fortune]] plugin.
+This just uses the `fortune` program to insert a fortune cookie into the
+page. Usage:
+ \[[!fortune ]]
+[[!meta robots="noindex, follow"]]
diff --git a/ikiwiki/directive/graph.mdwn b/ikiwiki/directive/graph.mdwn
new file mode 100644
index 0000000..7473d3e
--- /dev/null
+++ b/ikiwiki/directive/graph.mdwn
@@ -0,0 +1,24 @@
+The `graph` directive is supplied by the [[!iki plugins/graphviz
+desc=graphviz]] plugin.
+This directive allows embedding [graphviz]( 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.
+[[!meta robots="noindex, follow"]]
diff --git a/ikiwiki/directive/haiku.mdwn b/ikiwiki/directive/haiku.mdwn
new file mode 100644
index 0000000..43d93b0
--- /dev/null
+++ b/ikiwiki/directive/haiku.mdwn
@@ -0,0 +1,16 @@
+The `haiku` directive is supplied by the [[!iki plugins/haiku desc=haiku]]
+This directive 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.
+[[!meta robots="noindex, follow"]]
diff --git a/ikiwiki/directive/if.mdwn b/ikiwiki/directive/if.mdwn
new file mode 100644
index 0000000..955c854
--- /dev/null
+++ b/ikiwiki/directive/if.mdwn
@@ -0,0 +1,49 @@
+The `if` directive is supplied by the [[!iki plugins/conditional
+desc=conditional]] plugin.
+With this directive, you can make text be conditionally displayed on a
+page. For example:
+[[!if test="enabled(smiley)"
+ then="Smiley-udvidelsen er aktiveret :-)"
+ else="Ingen smiley-udvidelse her..."]]
+If the specified `test` succeeds, the `then` text will be displayed,
+otherwise the `else` text will be displayed. The `else` part is optional.
+Værdierne `then` og `else` kan indeholde enhver opmærkning som ville være
+tilladt på wikisiden udenfor skabelonen. Trippel-citering af værdien
+tillader endda at bruge citering som del af værdien.
+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".
+I et `if`-direktiv udvides den normale [[ikiwiki/PageSpec]]-syntaks med
+følgende yderligere tests:
+* enabled(udvielse)
+ 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.
+[[!meta robots="noindex, follow"]]
diff --git a/ikiwiki/directive/img.mdwn b/ikiwiki/directive/img.mdwn
new file mode 100644
index 0000000..a35d79a
--- /dev/null
+++ b/ikiwiki/directive/img.mdwn
@@ -0,0 +1,39 @@
+The `img` directive is supplied by the [[!iki plugins/img desc=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 directive you can easily scale down an image for inclusion onto a
+page, providing a link to a full-size version.
+## brug
+ \[[!img image1.jpg size="200x200" alt="skyer"]]
+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`, `align`, `id`, `hspace`, and
+`vspace` 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 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="bryllupsfoto"]]
+ \[[!img photo1.jpg]]
+ \[[!img photo2.jpg]]
+ \[[!img photo3.jpg size=200x600]]
+[[!meta robots="noindex, follow"]]
diff --git a/ikiwiki/directive/inline.mdwn b/ikiwiki/directive/inline.mdwn
new file mode 100644
index 0000000..92ed13f
--- /dev/null
+++ b/ikiwiki/directive/inline.mdwn
@@ -0,0 +1,121 @@
+The `inline` directive is supplied by the [[!iki plugins/inline
+desc=inline]] plugin.
+This is a directive that allows including one wiki page inside another. The
+most common use of inlining is generating blogs and RSS or Atom feeds.
+ \[[!inline pages="blog/* and !*/Discussion" show="10" rootpage="blog"]]
+Any pages that match the specified [[PageSpec]] (in the example, any
+[[SubPage]] of "blog") will be part of the blog, and the newest 10 of them
+will appear in the page. Note that if files that are not pages match the
+[[PageSpec]], they will be included in the feed using RSS enclosures, which
+is useful for podcasting.
+The optional `rootpage` parameter tells the wiki that new posts to this blog
+should default to being [[SubPages|SubPage]] of "blog", and enables a form
+at the top of the blog that can be used to add new items.
+If you want your blog to have an archive page listing every post ever made
+to it, you can accomplish that like this:
+ \[[!inline pages="blog/* and !*/Discussion" archive="yes"]]
+You can even create an automatically generated list of all the pages on the
+wiki, with the most recently added at the top, like this:
+ \[[!inline pages="* and !*/Discussion" archive="yes"]]
+If you want to be able to add pages to a given blog feed by tagging them,
+you can do that too. To tag a page, just make it link to a page or pages
+that represent its tags. Then use the special `link()` [[PageSpec]] to match
+all pages that have a given tag:
+ \[[!inline pages="link(livet)"]]
+Or include some tags and exclude others:
+ \[[!inline pages="link(debian) and !link(venner)"]]
+## brug
+There are many parameters you can use with the `inline` directive. These are
+the commonly used ones:
+* `pages` - A [[PageSpec]] of the pages to inline.
+* `show` - Specify the maximum number of matching pages to inline. Default
+ is 10, unless archiving, when the default is to show all. Set to 0 to
+ show all matching pages.
+* `archive` - If set to "yes", only list page titles and some metadata, not
+ full contents.
+* `description` - Sets the description of the rss feed if one is generated.
+ Defaults to the name of the wiki.
+* `skip` - Specify a number of pages to skip displaying. Can be useful to
+ produce a feed that only shows archived pages.
+* `postform` - Set to "yes" to enable a form to post new pages to a blog.
+* `postformtext` - Set to specify text that is displayed in a postform.
+* `rootpage` - Enables the postform, and allows controling where newly
+ posted pages should go, by specifiying the page that they should be a
+ [[SubPage]] of.
+Here are some less often needed parameters:
+* `actions` - If set to "yes" add links to the bottom of the inlined pages
+ for editing and discussion (if they would be shown at the top of the page
+ itself).
+* `rss` - controls generation of an rss feed. If the wiki is configured to
+ generate rss feeds by default, set to "no" to disable. If the wiki is
+ configured to `allowrss`, set to "yes" to enable.
+* `atom` - controls generation of an atom feed. If the wiki is configured to
+ generate atom feeds by default, set to "no" to disable. If the wiki is
+ configured to `allowatom`, set to "yes" to enable.
+* `feeds` - controls generation of all types of feeds. Set to "no" to
+ disable generating any feeds.
+* `emptyfeeds` - Set to "no" to disable generation of empty feeds. Has no
+ effect if `rootpage` or `postform` is set.
+* `template` - Specifies the template to fill out to display each inlined
+ page. By default the `inlinepage` template is used, while the
+ `archivepage` template is used for archives. Set this parameter to use
+ some other, custom template, such as the `titlepage` template that only
+ shows post titles or the `microblog` template, optimised for
+ microblogging. Note that you should still set `archive=yes` if your custom
+ template does not include the page content.
+* `raw` - Rather than the default behavior of creating a blog, if raw is set
+ to "yes", the page will be included raw, without additional markup around
+ it, as if it were a literal part of the source of the inlining page.
+* `sort` - Controls how inlined pages are [[sorted|pagespec/sorting]]. The
+ default is to sort the newest created pages first.
+* `reverse` - If set to "yes", causes the sort order to be reversed.
+* `feedshow` - Specify the maximum number of matching pages to include in
+ the rss/atom feeds. The default is the same as the `show` value above.
+* `feedonly` - Only generate the feed, do not display the pages inline on
+ the page.
+* `quick` - Build archives in quick mode, without reading page contents for
+ metadata. This also turns off generation of any feeds.
+* `timeformat` - Use this to specify how to display the time or date for
+ pages in the blog. The format string is passed to the strftime(3)
+ function.
+* `feedpages` - A [[PageSpec]] of inlined pages to include in the rss/atom
+ feeds. The default is the same as the `pages` value above, and only pages
+ matched by that value are included, but some of those can be excluded by
+ specifying a tighter [[PageSpec]] here.
+* `guid` - If a URI is given here (perhaps a UUID prefixed with
+ `urn:uuid:`), the Atom feed will have this as its `<id>`. The default is
+ to use the URL of the page containing the `inline` directive.
+* `feedfile` - Can be used to change the name of the file generated for the
+ feed. This is particularly useful if a page contains multiple feeds. For
+ example, set "feedfile=feed" to cause it to generate `page/feed.atom`
+ and/or `page/feed.rss`. This option is not supported if the wiki is
+ configured not to use `usedirs`.
+* `pagenames` - If given instead of `pages`, this is interpreted as a
+ space-separated list of links to pages (with the same
+ [[SubPage/LinkingRules]] as in a [[ikiwiki/WikiLink]]), and they are
+ inlined in exactly the order given: the `sort` and `pages` parameters
+ cannot be used in conjunction with this one.
+[[!meta robots="noindex, follow"]]
+A related directive is the [[ikiwiki/directive/edittemplate]] directive,
+which allows default text for a new page to be specified.
diff --git a/ikiwiki/directive/linkmap.mdwn b/ikiwiki/directive/linkmap.mdwn
new file mode 100644
index 0000000..9158138
--- /dev/null
+++ b/ikiwiki/directive/linkmap.mdwn
@@ -0,0 +1,30 @@
+The `linkmap` directive is supplied by the [[!iki plugins/linkmap
+desc=linkmap]] plugin.
+This directive uses [graphviz]( 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 link