[[!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]]