summaryrefslogtreecommitdiff
path: root/doc/plugins/contrib/comments.mdwn
blob: d2ca8d17dc212d681078bf33266738f70d7015d4 (plain)

[[!template id=plugin name=comments author="[[Simon_McVittie|smcv]]"]] [[!tag type/useful]]

This plugin adds "blog-style" comments. The intention is that on a non-wiki site (like a blog) you can lock all pages for admin-only access, then allow otherwise unprivileged (or perhaps even anonymous) users to comment on posts.

When using this plugin, you should also enable [[htmlscrubber]] and either [[htmltidy]] or [[htmlbalance]]. Directives are filtered out by default, to avoid commenters slowing down the wiki by causing time-consuming processing. As long as the recommended plugins are enabled, comment authorship should hopefully be unforgeable by CGI users.

The plugin adds a new [[ikiwiki/PageSpec]] match type, postcomment, for use with anonok_pagespec from the [[plugins/anonok]] plugin or locked_pages from the [[plugins/lockedit]] plugin. Typical usage would be something like:

locked_pages => "!postcomment(*)"

to allow non-admin users to comment on pages, but not edit anything. You can also do

anonok_pages => "postcomment(*)"

to allow anonymous comments (the IP address will be used as the "author").

There are some global options for the setup file:

  • comments_shown_pagespec: pages where comments will be displayed inline, e.g. blog/* or */discussion.
  • comments_open_pagespec: pages where new comments can be posted, e.g. blog/* and created_after(close_old_comments) or */discussion
  • comments_pagename: if this is e.g. comment_ (the default), then comments on the [[sandbox]] will be called something like sandbox/comment_12
  • comments_allowdirectives: if true (default false), comments may contain IkiWiki directives
  • comments_commit: if true (default true), comments will be committed to the version control system
  • comments_allowauthor: if true (default false), anonymous commenters may specify a name for themselves, and the [[!meta author]] and [[!meta authorurl]] directives will not be overridden by the comments plugin

Templates that will display comments (by default that means comments_display.tmpl) can use the following additional <TMPL_VAR>s:

  • COMMENTUSER: the authenticated/verified user name, or undefined if the user was not signed in
  • COMMENTIP: the remote IP address, or undefined if not known (this is not currently recorded for users who are signed in, who are assumed to be vaguely accountable)
  • COMMENTAUTHOR: a "prettier" version of the authenticated/verified user name (e.g. OpenIDs are formatted the same way as in [[RecentChanges]]), or the result of localizing "Anonymous" if the user was not signed in
  • COMMENTAUTHORURL: if the user was signed in with an OpenID, that URL; if the user was signed in with some other username, a CGI URL that redirects to their user page (if any)

This plugin also adds a \[[!_comment]] directive which is used when storing comments. This directive is for internal use only and shouldn't be used on pages that are edited in the usual way.

This plugin aims to close the [[todo]] item "[[todo/supporting_comments_via_disussion_pages]]", and is currently available from [[smcv]]'s git repository on git.pseudorandom.co.uk (it's the comments-rebase2 branch). A demo wiki with the plugin enabled is running at http://www.pseudorandom.co.uk/2008/ikiwiki/demo/; the sandbox page has some examples of comments.

Known issues:

  • Needs code review
  • The access control via postcomment() is rather strange (see [[discussion]] for more details)
  • There is some common code cargo-culted from other plugins (notably inline and editpage) which should probably be shared
  • Joey doesn't think it should necessarily use internal pages (see [[discussion]])
  • Previews always say "unknown IP address"
  • Add COMMENTOPENID: the authenticated/verified user name, if and only if it was an OpenID
  • The default template should have a (?) icon next to unauthenticated users (with the IP address as title) and an OpenID icon next to OpenIDs

I haven't done a detailed code review, but I will say I'm pleased you avoided re-implementing inline! --[[Joey]]

Fixed issues:

  • Joey didn't think the \[[!comments]] directive was appropriate; comments now appear on pages selected with a [[ikiwiki/pagespec]]
  • Joey thought that raw HTML should always be allowed; it now is
  • tbm wanted anonymous people to be able to enter their name and possibly email address; a name and website can now be supplied
  • There is now an indication of who you're signed in as
  • Each comment is now one big [[!_comment]] directive invocation, avoiding previous issues with unambiguous and un-spoofable metadata
  • \[[!comment]] should be \[[!_comment]], or a special filter/htmlize hook rather than being a directive at all
  • [[todo/inline_plugin:_ability_to_override_the_feed_name]]
  • [[todo/inline_plugin:_hide_feed_buttons_if_empty]]