X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/1533abb5674f68d27bfc69e9cb1433481be80be5..dd0981824d1d919f431d75af47e07447d460e1b4:/doc/todo/plugin.mdwn diff --git a/doc/todo/plugin.mdwn b/doc/todo/plugin.mdwn index 4cbe25638..3f8958f64 100644 --- a/doc/todo/plugin.mdwn +++ b/doc/todo/plugin.mdwn @@ -1,30 +1,53 @@ -A plugin system should ideally support things like: - -* [[todo/lists]] of pages, of mising pages / broken links, of registered users, etc -* a [[todo/link_map]] -* [[pageindexes]] -* 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. - -## preprocessor plugins - -done - -## case study: Moin Moin plugins - -See - -6 different types of plugins: - -* *actions* are possibly out of scope for ikiwiki, this is probably what it uses for cgi script type stuff. Unless ikiwiki wants to allow pluggable CGI script stuff, it doesn't need these. -* *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]]). +Suggestions of ideas for plugins: + +* list of registered users - tricky because it sorta calls for a way to rebuild the page when a new user is registered. Might be better as a cgi? +> At best, this could only show the users who have logged in, not all +> permitted by the current auth plugin(s). HTTP auth would need +> web-server-specific code to list all users, and openid can't feasibly do so +> at all. --[[JoshTriplett]] + +* [[sigs]] ? + +* 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.) + + Or using an iframe + to inline the cgi, although firefox seems to render that nastily with + nested scroll bars. :-( +> Or just link to the equivalent in the version control system, if available; +> gitweb's shortlog or summary view would work nicely as a +> RecentChanges. --[[JoshTriplett]] + +* It would be nice to be able to have a button to show "Differences" (or + "Show Diff") when editing a page. Is that an option that can be enabled? + Using a plugin? + +* 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]] + +* random page (cgi plugin; how to link to it easily?) + +* How about an event calendar. Events could be sub-pages with an embedded + code to detail recurrance and/or event date/time + +* rcs plugin ([[JeremyReed]] has one he has been using for over a month with over 850 web commits with 13 users with over ten commits each.) + +* asciidoc or txt2tags format plugins + + Should be quite easy to write, the otl plugin is a good example of a + similar formatter. + +* manpage plugin: convert **"ls(1)"** style content into Markdown like **\[ls(1)\]\(http://example.org/man.cgi?name=ls§=1\)** or into HTML directly. +> With a full installation of groff available, man offers HTML output. Might +> take some fiddling to make it fit into the ikiwiki templates, and you might +> or might not want to convert pages in the SEE ALSO as +> well. --[[JoshTriplett]]