From 8dfd5289a970e2a77499a2178c493c2c233ba27e Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 26 Oct 2009 13:24:27 -0400 Subject: moderatedcomments: New plugin to allow comment moderation w/o relying on blogspam.net. --- IkiWiki/Plugin/moderatedcomments.pm | 44 +++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 IkiWiki/Plugin/moderatedcomments.pm (limited to 'IkiWiki/Plugin/moderatedcomments.pm') 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 -- cgit v1.2.3