]> sipb.mit.edu Git - ikiwiki.git/blobdiff - doc/plugins/write.mdwn
web commit by joey
[ikiwiki.git] / doc / plugins / write.mdwn
index db1badb7c4efec5b759f4f0b549a5d88342f8c42..a4e800c5870cabbf1223ea7171dc1992949695db 100644 (file)
@@ -33,16 +33,29 @@ Each time the directive is processed, the referenced function (`preprocess` in t
 as named parameters as well. Whatever the function returns goes onto the
 page in place of the directive.
 
+### Error handing
+
+While a plugin can call ikiwiki's error routine for a fatal error, for
+errors that aren't intended to halt the entire wiki build, including bad
+parameters passed to a [[PreProcessorDirective]], etc, it's better to just
+return the error message as the output of the plugin.
+
+### Html issues
+
+Note that if [[HTMLSanitization]] 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 passed through markdown along with the rest of the page.
+
 ## Other types of hooks
 
 Beyond PreProcessorDirectives, Other types of hooks that can be used by plugins include:
 
 ### checkconfig
 
-        IkiWiki::hook(type => "delete", id => "foo", call => \&checkconfig);
+        IkiWiki::hook(type => "checkconfig", id => "foo", call => \&checkconfig);
 
-This is useful if the plugin needs to check for, or modify ikiwiki's configuration. It's called early in the ikiwiki startup process. It's ok for
-the function to call IkiWiki::error if something isn't configured right.
+This is useful if the plugin needs to check for, or modify ikiwiki's configuration. It's called early in the ikiwiki startup process. The function is passed no values. It's ok for the function to call IkiWiki::error if something isn't configured right.
 
 ### delete
 
@@ -56,19 +69,12 @@ Each time a page or pages is removed from the wiki, the referenced function is c
 
 Each time ikiwiki renders a change or addition (but not deletion) of a page to the wiki, the referenced function is called, and passed the name of the source file that was rendered.
 
-## Error handing in plugins
+### cgi
 
-While a plugin can call ikiwiki's error routine for a fatal error, for
-errors that aren't intended to halt the entire wiki build, including bad
-parameters passed to a [[PreProcessorDirective]], etc, it's better to just
-return the error message as the output of the plugin.
+        IkiWiki::hook(type => "cgi", id => "foo", call => \&cgi);
 
-## Html issues
-
-Note that if [[HTMLSanitization]] 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 passed through markdown along with the rest of the page.
+Use this to hook into ikiwiki's cgi script. Each registered cgi hook is 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.
 
 ## Wiki configuration
 
@@ -96,12 +102,21 @@ use the following hashes, using a page name as the key:
   it is by using the IkiWiki::add_depends function, which takes as its
   parameters the page name and a [[GlobList]] of dependencies to add.
 
+## Page templates
+
+Plugins are mostly limited to changing the content of pages, to change the look and feel of the wiki it's generally better to use a stylesheet and [[templates]]. However, there are some hooks in the templates that plugins can use to add stuff to the wiki's UI:
+
+### Adding content to the page header
+
+Html that is added to $IkiWiki::config{headercontent} will show up in the
+header of the page. One good thing to put here is a search form.
+
 ## RCS plugins
 
 ikiwiki's support for revision control systems also uses pluggable perl
 modules. These are in the `IkiWiki::RCS` namespace, for example
 `IkiWiki::RCS::svn`. 
 
-Each RCS plugin must support all the IkiWiki::rcs_* functions.
+Each RCS plugin must support all the IkiWiki::rcs\_* functions.
 See IkiWiki::RCS::Stub for the full list of functions. It's ok if
-rcs_getctime does nothing except for throwing an error.
+rcs\_getctime does nothing except for throwing an error.