Now that it knows what pages it needs to build, ikiwiki runs two
compile passes. First, it runs `scan` hooks, which collect metadata about
the pages. Then it runs a page rendering pipeline, by calling in turn these
-hooks: `filter`, `preprocess`, `linkify`, `htmlize`, `postscan`,
+hooks: `filter`, `preprocess`, `linkify`, `htmlize`, `indexhtml`,
`pagetemplate`, `sanitize`, `format`.
After all necessary pages are built, it calls the `change` hook. Finally,
If `hook` is passed an optional "longname" parameter, this value is used
when prompting a user to choose a page type on the edit page form.
-### postscan
+### indexhtml
- hook(type => "postscan", id => "foo", call => \&postscan);
+ hook(type => "indexhtml", id => "foo", call => \&indexhtml);
This hook is called once the page has been converted to html (but before
the generated html is put in a template). The most common use is to
update search indexes. Added in ikiwiki 2.54.
-The function is passed named parameters "page" and "content". Its return
-value is ignored.
+The function is passed named parameters "page", "destpage", and "content".
+Its return value is ignored.
### pagetemplate
template directory), or undef if it doesn't want to change the default
("page.tmpl").
+### pageactions
+
+ hook(type => "pageactions", id => "foo", call => \&pageactions);
+
+This hook allows plugins to add arbitrary actions to the action bar on a
+page (next to Edit, RecentChanges, etc). The hook is passed a "page"
+parameter, and can return a list of html fragments to add to the action
+bar.
+
### sanitize
hook(type => "sanitize", id => "foo", call => \&sanitize);
it might return the current revision ID of the file, and use that
information later when merging changes.
-#### `rcs_commit($$$;$$)`
+#### `rcs_commit($$$;$$$)`
-Passed a file, message, token (from `rcs_prepedit`), user, and ip address.
+Passed a file, message, token (from `rcs_prepedit`), user, ip address,
+and optionally the username component of the committer's email address.
Should try to commit the file. Returns `undef` on *success* and a version
of the page with the rcs's conflict markers on failure.
-#### `rcs_commit_staged($$$)`
+#### `rcs_commit_staged($$$;$)`
-Passed a message, user, and ip address. Should commit all staged changes.
+Passed a message, user, ip address, and optionally the username component of
+the committer's email address. Should commit all staged changes.
Returns undef on success, and an error message on failure.
Changes can be staged by calls to `rcs_add`, `rcs_remove`, and
{
rev => # the RCSs id for this commit
- user => # name of user who made the change,
+ user => # user who made the change (may be an openid),
+ usershort => # short name of user (optional; not an openid),
+
committype => # either "web" or the name of the rcs,
when => # time when the change was made,
message => [