X-Git-Url: http://git.tremily.us/?p=ikiwiki.git;a=blobdiff_plain;f=doc%2Fplugins%2Fwrite.mdwn;h=15ed08d82b698baece572f1e845e13fe1808bc35;hp=9128c7f5453bd14b679e37ea31fdd14510a3b58b;hb=1786b106a9c7f448136ff47d9b6dd26d48a5dd2e;hpb=8a56df576a9d7d184a5233bcde8ea07eee86dd60 diff --git a/doc/plugins/write.mdwn b/doc/plugins/write.mdwn index 9128c7f54..15ed08d82 100644 --- a/doc/plugins/write.mdwn +++ b/doc/plugins/write.mdwn @@ -39,7 +39,7 @@ built. 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, @@ -200,7 +200,9 @@ value is ignored. Runs on the raw source of a page, before anything else touches it, and can make arbitrary changes. The function is passed named parameters "page", -"destpage", and "content". It should return the filtered content. +"destpage", "content" and "fullpage". "fullpage" is a true value if, +and only if, a full page's content is being filtered, e.g. as opposed +to a directive parameter. It should return the filtered content. ### preprocess @@ -282,16 +284,16 @@ like `Makefile` that have no extension. 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 @@ -319,6 +321,15 @@ should return the name of the template file to use (relative to the 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); @@ -701,9 +712,11 @@ the entire wiki build and make the wiki unusable. ### `template($;@)` -Creates and returns a [[!cpan HTML::Template]] object. The first parameter -is the name of the template file. The optional remaining parameters are -passed to `HTML::Template->new`. +Creates and returns a [[!cpan HTML::Template]] object. (In a list context, +returns the parameters needed to construct the obhect.) + +The first parameter is the name of the template file. The optional remaining +parameters are passed to `HTML::Template->new`. Normally, the template file is first looked for in the templates/ subdirectory of the srcdir. Failing that, it is looked for in the templatedir. @@ -936,13 +949,16 @@ search for files. If the directory name is not absolute, ikiwiki will assume it is in the parent directory of the configured underlaydir. -### `displaytime($;$)` +### `displaytime($;$$)` Given a time, formats it for display. The optional second parameter is a strftime format to use to format the time. +If the third parameter is true, this is the publication time of a page. +(Ie, set the html5 pubdate attribute.) + ### `gettext` This is the standard gettext function, although slightly optimised. @@ -1037,16 +1053,20 @@ token, that will be passed into `rcs_commit` when committing. For example, it might return the current revision ID of the file, and use that information later when merging changes. -#### `rcs_commit($$$;$$)` +#### `rcs_commit(@)` + +Passed named parameters: `file`, `message`, `token` (from `rcs_prepedit`), +and `session` (optional). -Passed a file, message, token (from `rcs_prepedit`), user, and ip 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 named parameters: `message`, and `session` (optional). -Passed a message, user, and ip address. Should commit all staged changes. -Returns undef on success, and an error message on failure. +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 `rcs_rename`. @@ -1089,7 +1109,9 @@ The data structure returned for each change is: { 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), + nickname => # short name for user (optional; not an openid), + committype => # either "web" or the name of the rcs, when => # time when the change was made, message => [