]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/commitdiff
moderatedcomments: New plugin to allow comment moderation w/o relying on blogspam...
authorJoey Hess <joey@gnu.kitenet.net>
Mon, 26 Oct 2009 17:24:27 +0000 (13:24 -0400)
committerJoey Hess <joey@gnu.kitenet.net>
Mon, 26 Oct 2009 17:24:27 +0000 (13:24 -0400)
IkiWiki/Plugin/moderatedcomments.pm [new file with mode: 0644]
debian/changelog
doc/plugins/comments.mdwn
doc/plugins/moderatedcomments.mdwn [new file with mode: 0644]

diff --git a/IkiWiki/Plugin/moderatedcomments.pm b/IkiWiki/Plugin/moderatedcomments.pm
new file mode 100644 (file)
index 0000000..2555927
--- /dev/null
@@ -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
index 33692431762456ae505f1f28fc9ca48e56de2e8b..f517111b3d00d3246f5ce87c925c23fdfbeb7763 100644 (file)
@@ -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 <joeyh@debian.org>  Mon, 26 Oct 2009 11:53:32 -0400
 
index 7e22324111d0e3a14ae6b28ad8d76e04c04534ab..b6d4d252bd3954265405a9e16815593b0d443e07 100644 (file)
@@ -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 (file)
index 0000000..97924d7
--- /dev/null
@@ -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.