From: Joey Hess Date: Mon, 26 Oct 2009 17:24:27 +0000 (-0400) Subject: moderatedcomments: New plugin to allow comment moderation w/o relying on blogspam.net. X-Git-Url: https://sipb.mit.edu/gitweb.cgi/ikiwiki.git/commitdiff_plain/8dfd5289a970e2a77499a2178c493c2c233ba27e?ds=sidebyside moderatedcomments: New plugin to allow comment moderation w/o relying on blogspam.net. --- diff --git a/IkiWiki/Plugin/moderatedcomments.pm b/IkiWiki/Plugin/moderatedcomments.pm new file mode 100644 index 000000000..2555927b7 --- /dev/null +++ b/IkiWiki/Plugin/moderatedcomments.pm @@ -0,0 +1,44 @@ +#!/usr/bin/perl +package IkiWiki::Plugin::moderatedcomments; + +use warnings; +use strict; +use IkiWiki 3.00; + +sub import { + hook(type => "getsetup", id => "moderatedcomments", call => \&getsetup); + hook(type => "checkcontent", id => "moderatedcomments", call => \&checkcontent); +} + +sub getsetup () { + return + plugin => { + safe => 1, + rebuild => 0, + }, + moderate_users => { + type => 'boolean', + example => 1, + description => 'Moderate comments of logged-in users?', + safe => 1, + rebuild => 0, + }, +} + +sub checkcontent (@) { + my %params=@_; + + # only handle comments + return undef unless pagespec_match($params{page}, "postcomment(*)", + location => $params{page}); + + # admins and maybe users can comment w/o moderation + my $session=$params{session}; + my $user=$session->param("name") if $session; + return undef if defined $user && (IkiWiki::is_admin($user) || + (exists $config{moderate_users} && ! $config{moderate_users})); + + return gettext("comment needs moderation"); +} + +1 diff --git a/debian/changelog b/debian/changelog index 336924317..f517111b3 100644 --- a/debian/changelog +++ b/debian/changelog @@ -2,6 +2,8 @@ ikiwiki (3.20091024) UNRELEASED; urgency=low * po: Fix breakage caused by changes to render code. * mdwn: Avoid trying to use multimarkdown if it is not installed. + * moderatedcomments: New plugin to allow comment moderation w/o relying + on blogspam.net. -- Joey Hess Mon, 26 Oct 2009 11:53:32 -0400 diff --git a/doc/plugins/comments.mdwn b/doc/plugins/comments.mdwn index 7e2232411..b6d4d252b 100644 --- a/doc/plugins/comments.mdwn +++ b/doc/plugins/comments.mdwn @@ -45,7 +45,8 @@ There are some global options for the setup file: ## comment moderation If you enable the [[blogspam]] plugin, comments that appear spammy will be -held for moderation. Wiki admins can access the comment moderation queue +held for moderation. (Or with the [[moderatedcomments]] plugin, all +comments will be held.) Wiki admins can access the comment moderation queue via a button on their Preferences page. The comments are stored in `.ikiwiki/comments_pending/`, and can be diff --git a/doc/plugins/moderatedcomments.mdwn b/doc/plugins/moderatedcomments.mdwn new file mode 100644 index 000000000..97924d742 --- /dev/null +++ b/doc/plugins/moderatedcomments.mdwn @@ -0,0 +1,10 @@ +[[!template id=plugin name=moderatedcomments author="[[Joey]]"]] +[[!tag type/auth]] + +This plugin causes [[comments]] to be held for manual moderation. +Admins can access the comment moderation queue via their preferences page. + +By default, all comments made by anyone who is not an admin will be held +for moderation. The `moderate_users` setting can be set to false to avoid +moderating comments of logged-in users, while still moderating anonymous +comments.