ikiwiki/doc/plugins/contrib/comments.mdwn

92 lines
4.8 KiB
Markdown

[[!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](http://www.pseudorandom.co.uk/2008/ikiwiki/demo/sandbox/#comments) 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]]