]> sipb.mit.edu Git - ikiwiki.git/blobdiff - doc/plugins/contrib/comments.mdwn
Another TODO item
[ikiwiki.git] / doc / plugins / contrib / comments.mdwn
index 891d3dee563513f0bc191a871dbc46888433fe54..d2ca8d17dc212d681078bf33266738f70d7015d4 100644 (file)
@@ -10,33 +10,6 @@ or [[htmlbalance]]. Directives are filtered out by default, to avoid commenters
 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.
 
-> I'm not sure that raw html should be a problem, as long as the
-> htmlsanitizer and htmlbalanced plugins are enabled. I can see filtering
-> out directives, as a special case. --[[Joey]]
-
->> Right, if I sanitize each post individually, with htmlscrubber and either htmltidy
->> or htmlbalance turned on, then there should be no way the user can forge a comment;
->> I was initially wary of allowing meta directives, but I think those are OK, as long
->> as the comment template puts the \[[!meta author]] at the *end*. Disallowing
->> directives is more a way to avoid commenters causing expensive processing than
->> anything else, at this point.
->>
->> I've rebased the plugin on master, made it sanitize individual posts' content
->> and removed the option to disallow raw HTML. Sanitizing individual posts before
->> they've been htmlized required me to preserve whitespace in the htmlbalance
->> plugin, so I did that. Alternatively, we could htmlize immediately and always
->> save out raw HTML? --[[smcv]]
-
->> There might be some use cases for other directives, such as img, in
->> comments.
->> 
->> I don't know if meta is "safe" (ie, guaranteed to be inexpensive and not
->> allow users to do annoying things) or if it will continue to be in the
->> future. Hard to predict really, all that can be said with certainty is
->> all directives will contine to be inexpensive and safe enough that it's
->> sensible to allow users to (ab)use them on open wikis.
->> --[[Joey]]
-
 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:
@@ -61,27 +34,58 @@ There are some global options for the setup file:
   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
-`postcomment` branch). A demo wiki with the plugin enabled is running at
-<http://www.pseudorandom.co.uk/2008/ikiwiki/demo/>.
+`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
+* 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]]
 
-Wishlist:
-
-* tbm would like anonymous people to be able to enter their name and possibly email
-  address
-* smcv would like an indication of who you're posting as / the ability to log in
-  as someone else (even if anonymous comments are allowed, it'd be nice to be
-  able to choose to log in with a username or OpenID, like in Livejournal);
-  perhaps editpage needs this too
+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]]