summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
2f2fbdf)
* moderatedcomments: Added moderate_pagespec that can be used
to control which users or comment locations are moderated.
This can be used, just for example, to moderate http://myopenid.com/*
if you're getting a lot of spammers from one particular openid
provider (who should perhaps answer your emails about them),
while not moderating other users.
* moderatedcomments: The moderate_users setting is deprecated. Instead,
set moderate_pagespec to "!admin()" or "user(*)" instead.
rebuild => 0,
section => "auth",
},
rebuild => 0,
section => "auth",
},
- moderate_users => {
- type => 'boolean',
- example => 1,
- description => 'Moderate comments of logged-in users?',
+ moderate_pagespec => {
+ type => 'pagespec',
+ example => 'user(http://*)',
+ description => 'PageSpec matching users or comment locations to moderate',
+ link => 'ikiwiki/PageSpec',
safe => 1,
rebuild => 0,
},
safe => 1,
rebuild => 0,
},
# only handle comments
return undef unless pagespec_match($params{page}, "postcomment(*)",
location => $params{page});
# only handle comments
return undef unless pagespec_match($params{page}, "postcomment(*)",
location => $params{page});
+
+ # backwards compatability
+ if (exists $config{moderate_users} &&
+ ! exists $config{moderate_pagespec}) {
+ $config{moderate_pagespec} = $config{moderate_users}
+ ? "!admin()"
+ : "!user(*)";
+ }
+
+ # default is to moderate all except admins
+ if (! exists $config{moderate_pagespec}) {
+ $config{moderate_pagespec}="!admin()";
+ }
- # admins and maybe users can comment w/o moderation
my $session=$params{session};
my $user=$session->param("name") if $session;
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");
+ if (pagespec_match($params{page}, $config{moderate_pagespec},
+ location => $params{page},
+ (defined $user ? (user => $user) : ()),
+ (defined $ENV{REMOTE_ADDR} ? (ip => $ENV{REMOTE_ADDR}) : ()),
+ )) {
+ return gettext("comment needs moderation");
+ }
+ else {
+ return undef;
+ }
ikiwiki (3.20100303) UNRELEASED; urgency=low
* Fix utf8 issues in calls to md5_hex.
ikiwiki (3.20100303) UNRELEASED; urgency=low
* Fix utf8 issues in calls to md5_hex.
+ * moderatedcomments: Added moderate_pagespec that can be used
+ to control which users or comment locations are moderated.
+ This can be used, just for example, to moderate http://myopenid.com/*
+ if you're getting a lot of spammers from one particular openid
+ provider (who should perhaps answer your emails about them),
+ while not moderating other users.
+ * moderatedcomments: The moderate_users setting is deprecated. Instead,
+ set moderate_pagespec to "!admin()" or "user(*)" instead.
-- Joey Hess <joeyh@debian.org> Tue, 09 Mar 2010 19:46:35 -0500
-- Joey Hess <joeyh@debian.org> Tue, 09 Mar 2010 19:46:35 -0500
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
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.
+for moderation. The `moderate_pagespec` setting can be used to specify a
+[[ikiwiki/PageSpec]] to match comments and users who should be moderated.
+For example, to avoid moderating comments from logged-in users, set
+`moderate_pagespec` to "!user(*)". Or to moderate everyone except for
+admins, set it to "!admin(*)".