X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/ad2c77dd3076568024a28b485afbf82c3508d448..55aae671ad28ea75263125baea2468641583744d:/doc/plugins/write.mdwn diff --git a/doc/plugins/write.mdwn b/doc/plugins/write.mdwn index 8492b1756..7c4da8d5f 100644 --- a/doc/plugins/write.mdwn +++ b/doc/plugins/write.mdwn @@ -30,6 +30,12 @@ hook, a "id" paramter, which should be a unique string for this plugin, and a "call" parameter, which is a reference to a function to call for the hook. +An optional "scan" parameter, if set to a true value, makes the hook be +called during the preliminary scan that ikiwiki makes of updated pages, +before begining to render pages. This parameter should be set to true if +the hook modifies data in `%links`. Note that doing so will make the hook +be run twice per page build, so avoid doing it for expensive hooks. + ## Types of hooks In roughly the order they are called. @@ -64,6 +70,14 @@ 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` and `content` and should return the filtered content. +### scan + + hook(type => "scan", id => "foo", call => \&scan); + +This is identical to a preprocess hook (see below), except that it is +called in the initial pass that scans pages for data that will be used in +later passes. Scan hooks are the only hook that should modify + ### preprocess Adding a [[PreProcessorDirective]] is probably the most common use of a @@ -161,6 +175,19 @@ called in turn, and passed a CGI object. The hook should examine the parameters, and if it will handle this CGI request, output a page and terminate the program. +### cgi + + hook(type => "cgi", id => "foo", call => \&auth); + +This hook can be used to implement a different authentication method than +the standard web form. When a user needs to be authenticated, each registered +auth hook is called in turn, and passed a CGI object and a session object. + +If the hook is able to authenticate the user, it should set the session +object's "name" parameter to the authenticated user's name. Note that +if the name is set to the name of a user who is not registered, +a basic registration of the user will be automatically performed. + ### savestate hook(type => "savestate", id => "foo", call => \&savestate);