X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/a3a8ec19e33d1a79da897ea3a3dab6520de977f5..7960031135e74f6d36abc4294dbadb687117222c:/doc/plugins/write.mdwn diff --git a/doc/plugins/write.mdwn b/doc/plugins/write.mdwn index d09367f1b..3ed0a3017 100644 --- a/doc/plugins/write.mdwn +++ b/doc/plugins/write.mdwn @@ -101,8 +101,8 @@ make arbitrary changes. The function is passed named parameters "page", ### preprocess -Adding a [[PreProcessorDirective]] is probably the most common use of a -plugin. +Adding a [[ikiwiki/PreProcessorDirective]] is probably the most common use +of a plugin. hook(type => "preprocess", id => "foo", call => \&preprocess); @@ -126,11 +126,11 @@ 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. Note that if the [[htmlscrubber]] is enabled, html in -[[PreProcessorDirective]] output is sanitised, which may limit what your -plugin can do. Also, the rest of the page content is not in html format at -preprocessor time. Text output by a preprocessor directive will be -linkified and passed through markdown (or whatever engine is used to htmlize -the page) along with the rest of the page. +[[ikiwiki/PreProcessorDirective]] output is sanitised, which may limit what +your plugin can do. Also, the rest of the page content is not in html +format at preprocessor time. Text output by a preprocessor directive will +be linkified and passed through markdown (or whatever engine is used to +htmlize the page) along with the rest of the page. ### htmlize @@ -164,7 +164,7 @@ a new custom parameter to the template. hook(type => "templatefile", id => "foo", call => \&templatefile); -This hook allows plugins to change the [[template|wikitemplate]] that is +This hook allows plugins to change the [[template|wikitemplates]] that is used for a page in the wiki. The hook is passed a "page" parameter, and should return the name of the template file to use, or undef if it doesn't want to change the default ("page.tmpl"). Template files are looked for in @@ -251,6 +251,17 @@ by this hook, the hook should return an error message for the user to see. If the hook has no opinion about whether the edit can proceed, return `undef`, and the next plugin will be asked to decide. +### editcontent + + hook(type => "editcontent", id => "foo", call => \&editcontent); + +This hook is called when a page is saved (or previewed) using the web +interface. It is passed named parameters: `content`, `page`, `cgi`, and +`session`. These are, respectively, the new page content as entered by the +user, the page name, a `CGI` object, and the user's `CGI::Session`. + +It can modify the content as desired, and should return the content. + ### formbuilder hook(type => "formbuilder_setup", id => "foo", call => \&formbuilder_setup); @@ -340,9 +351,10 @@ cleanup. Note that while any plugin can use this for a fatal error, plugins should try to avoid dying on bad input, as that will halt the entire wiki build -and make the wiki unusable. So for example, if a [[PreProcessorDirective]] -is passed bad parameters, it's better to return an error message, which can -appear on the wiki page, rather than calling error(). +and make the wiki unusable. So for example, if a +[[ikiwiki/PreProcessorDirective]] is passed bad parameters, it's better to +return an error message, which can appear on the wiki page, rather than +calling error(). #### `template($;@)` @@ -357,12 +369,12 @@ page created from it. (Ie, it appends ".html".) #### `add_depends($$)` -Makes the specified page depend on the specified [[PageSpec]]. +Makes the specified page depend on the specified [[ikiwiki/PageSpec]]. #### `pagespec_match($$;@)` -Passed a page name, and [[PageSpec]], returns true if the [[PageSpec]] -matches the page. +Passed a page name, and [[ikiwiki/PageSpec]], returns true if the +[[ikiwiki/PageSpec]] matches the page. Additional named parameters can be passed, to further limit the match. The most often used is "location", which specifies the location the @@ -375,7 +387,7 @@ Given a page and the text of a link on the page, determine which existing page that link best points to. Prefers pages under a subdirectory with the same name as the source page, failing that goes down the directory tree to the base looking for matching -pages, as described in [[SubPage/LinkingRules]]. +pages, as described in [[ikiwiki/SubPage/LinkingRules]]. #### `htmllink($$$;@)` @@ -401,7 +413,8 @@ control some options. These are: * forcesubpage - set to force a link to a subpage * linktext - set to force the link text to something * anchor - set to make the link include an anchor -* rel - set to add a rel attribute to the link. +* rel - set to add a rel attribute to the link +* class - set to add a css class to the link #### `readfile($;$)` @@ -437,6 +450,10 @@ destination directory), register that the page will result in that file being rendered. It's important to call this before writing to any file in the destination directory. +Ikiwiki uses this information to automatically clean up rendered files when +the page that rendered them goes away or is changes to no longer render +them. will_render also does a few important security checks. + #### `pagetype($)` Given the name of a source file, returns the type of page it is, if it's @@ -450,13 +467,24 @@ that corresponds to that file. #### `srcfile($)` Given the name of a source file in the wiki, searches for the file in -the source directory and the underlay directory, and returns the full -path to the first file found. +the source directory and the underlay directories (most recently added +underlays first), and returns the full path to the first file found. -#### `displaytime($)` +#### `add_underlay($)` + +Adds a directory to the set of underlay directories that ikiwiki will +search for files. + +If the directory name is not absolute, ikiwiki will assume it is in +the parent directory of the configured underlaydir. + +#### `displaytime($;$)` Given a time, formats it for display. +The optional second parameter is a strftime format to use to format the +time. + #### `gettext` This is the standard gettext function, although slightly optimised. @@ -487,9 +515,9 @@ See [[RCS_details|rcs/details]] for some more info. ## PageSpec plugins It's also possible to write plugins that add new functions to -[[PageSpecs|PageSpec]]. Such a plugin should add a function to the +[[PageSpecs|ikiwiki/PageSpec]]. Such a plugin should add a function to the IkiWiki::PageSpec package, that is named `match_foo`, where "foo()" is -how it will be accessed in a [[PageSpec]]. The function will be passed +how it will be accessed in a [[ikiwiki/PageSpec]]. The function will be passed two parameters: The name of the page being matched, and the thing to match against. It may also be passed additional, named parameters. It should return a IkiWiki::SuccessReason object if the match succeeds, or an