]> sipb.mit.edu Git - ikiwiki.git/blobdiff - doc/todo/plugin.mdwn
* Added plugin system, currently only supporting for PreProcessorDirectives.
[ikiwiki.git] / doc / todo / plugin.mdwn
index 8b1487df2e2213f18cfca4e2afcfa26d7dcc15f8..255f0ccf60dfad3284ff9763ece35c85c10a2087 100644 (file)
@@ -1,5 +1,3 @@
-For one type of plugin, see [[todo/PluggableRenderers]]. 
-
 A plugin system should ideally support things like:
 
 * [[todo/lists]] of pages, of mising pages / broken links, of registered users, etc
@@ -9,19 +7,17 @@ A plugin system should ideally support things like:
 * Wiki stats, such as the total number of pages, total number of links, most linked to pages, etc, etc.
 * wiki info page, giving the ikiwiki version etc
 * would it be useful to reimplement the hyperestradier search integration as a plugin?
+* Support [[RecentChanges]] as a regular page containing a plugin that updates each time there is a change, and statically builds the recent changes list. (Would this be too expensive/inflexible? There might be other ways to do it as a plugin, like making all links to RecentChanges link to the cgi and have the cgi render it on demand.)
 * etc
+* For another type of plugin, see [[todo/PluggableRenderers]]. 
 
-Another, separate plugin system that already (mostly) exists in ikiwiki is the RCS backend, which allows writing modules to drive other RCS systems than subversion.
+Another, separate plugin system that already (mostly) exists in ikiwiki is
+the RCS backend, which allows writing modules to drive other RCS systems
+than subversion.
 
 ## preprocessor plugins
 
-Considering ikiwiki plugins, one idea I have is to make the [[PreProcessorDirective]]s be a plugin. A setting in the config file would enable various plusins, which are perl modules, that each provide one or more preprocessor directives. 
-
-Since preprocessing happens before htmlization but after a page is loaded and linkified, it should be possible to use it to create something like a link map or lists, or a page index. Page inlining and rss generation is already done via preprocessor directives and seems a natureal as a plugin too. 
-
-Note that things like a link map or a broken link list page would need to be updated whenever a set (or all) pages change; the %inlinepages hash already allows for pages to register this, although it might need to be renamed. 
-
-I need to look at the full range of things that other wikis use their plugin systems for, but preprocessor directives as plugins certianly seems useful, even if it's  not a complete solution.
+done
 
 ## case study: Moin Moin plugins
 
@@ -33,6 +29,3 @@ See <http://moinmoin.wikiwikiweb.de/MoinDev/PluginConcept>
 * *parsers* and *formatters* are basically what I've been calling [[PluggableRenderers]]. MoinMoin separates these, so that a page is parsed to (presumbly) some intermediate form before being output as html or some other form. That's a nice separation, but what to do about things like markdown that are both a parser and a formatter?
 * *macros* and *processors* are analagous to preprocessor directives. A processor can operate on a large block of text though.
 * *themes* should be irrellevant (ikiwiki has [[templates]]).
-
-## case study: pybloxsom plugins
-