X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/02430a23a65927916603213808f086bf5af8f103..0aadc597d4093a60a123f6882ef9cffe1aa63798:/doc/todo/plugin.mdwn?ds=sidebyside diff --git a/doc/todo/plugin.mdwn b/doc/todo/plugin.mdwn index 8b1487df2..8fed8ca87 100644 --- a/doc/todo/plugin.mdwn +++ b/doc/todo/plugin.mdwn @@ -1,27 +1,30 @@ -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 +* [[todo/lists]] of pages, of mising pages / broken links (done), orphaned + pages (done), of registered users, etc * a [[todo/link_map]] -* [[todo/sigs]] +* [[todo/sigs]] ? * [[pageindexes]] -* Wiki stats, such as the total number of pages, total number of links, most linked to pages, etc, etc. +* Wiki stats, such as the total number of pages (done), 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? +* would it be useful to reimplement the hyperestradier search integration as a plugin? (done) +* 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.) +* Support for smileys or other symbols. I appreciate the support for check + marks, etc in other wikis. +* For PlaceWiki I want to be able to do some custom plugins, including one + that links together subpages about the same place created by different + users. This seems to call for a plugin that applies to every page w/o any + specific marker being used, and pre-or-post-processes the full page + content. It also needs to update pages when related pages are added, + so it needs to register dependencies pre-emptively between pages, + or something. It's possible that this is a special case of backlinks and + is best implemented by making backlinks a plugin somehow. --[[Joey]] * 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. - -## 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. +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. ## case study: Moin Moin plugins @@ -33,6 +36,3 @@ See * *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 -