comments: If comment content checks fail, store the comment (in .ikiwiki/comments_pending) for moderator review.
parent
0cfb159bb0
commit
c154fa5d6c
|
@ -380,14 +380,7 @@ sub sessioncgi ($$) {
|
||||||
IkiWiki::check_canedit($page, $cgi, $session);
|
IkiWiki::check_canedit($page, $cgi, $session);
|
||||||
$postcomment=0;
|
$postcomment=0;
|
||||||
|
|
||||||
# FIXME: rather a simplistic way to make the comments...
|
my $location=unique_comment_location($page, $config{srcdir});
|
||||||
my $i = 0;
|
|
||||||
my $file;
|
|
||||||
my $location;
|
|
||||||
do {
|
|
||||||
$i++;
|
|
||||||
$location = "$page/$config{comments_pagename}$i";
|
|
||||||
} while (-e "$config{srcdir}/$location._comment");
|
|
||||||
|
|
||||||
my $content = "[[!_comment format=$type\n";
|
my $content = "[[!_comment format=$type\n";
|
||||||
|
|
||||||
|
@ -470,21 +463,33 @@ sub sessioncgi ($$) {
|
||||||
IkiWiki::checksessionexpiry($cgi, $session);
|
IkiWiki::checksessionexpiry($cgi, $session);
|
||||||
|
|
||||||
$postcomment=1;
|
$postcomment=1;
|
||||||
IkiWiki::check_content(content => $form->field('editcontent'),
|
my $ok=IkiWiki::check_content(content => $form->field('editcontent'),
|
||||||
subject => $form->field('subject'),
|
subject => $form->field('subject'),
|
||||||
$config{comments_allowauthor} ? (
|
$config{comments_allowauthor} ? (
|
||||||
author => $form->field('author'),
|
author => $form->field('author'),
|
||||||
url => $form->field('url'),
|
url => $form->field('url'),
|
||||||
) : (),
|
) : (),
|
||||||
page => $location,
|
page => $location,
|
||||||
cgi => $cgi, session => $session
|
cgi => $cgi,
|
||||||
|
session => $session,
|
||||||
|
nonfatal => 1,
|
||||||
);
|
);
|
||||||
$postcomment=0;
|
$postcomment=0;
|
||||||
|
|
||||||
my $file = "$location._comment";
|
if (! $ok) {
|
||||||
|
my $penddir=$config{wikistatedir}."/comments_pending";
|
||||||
|
$location=unique_comment_location($page, $penddir);
|
||||||
|
writefile("$location._comment", $penddir, $content);
|
||||||
|
print IkiWiki::misctemplate(gettext(gettext("comment stored for moderation")),
|
||||||
|
"<p>".
|
||||||
|
gettext("Your comment will be posted after moderator review"),
|
||||||
|
"</p>");
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
# FIXME: could probably do some sort of graceful retry
|
# FIXME: could probably do some sort of graceful retry
|
||||||
# on error? Would require significant unwinding though
|
# on error? Would require significant unwinding though
|
||||||
|
my $file = "$location._comment";
|
||||||
writefile($file, $config{srcdir}, $content);
|
writefile($file, $config{srcdir}, $content);
|
||||||
|
|
||||||
my $conflict;
|
my $conflict;
|
||||||
|
@ -654,6 +659,20 @@ sub pagetemplate (@) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub unique_comment_location ($) {
|
||||||
|
my $page=shift;
|
||||||
|
my $dir=shift;
|
||||||
|
|
||||||
|
my $location;
|
||||||
|
my $i = 0;
|
||||||
|
do {
|
||||||
|
$i++;
|
||||||
|
$location = "$page/$config{comments_pagename}$i";
|
||||||
|
} while (-e "$dir/$location._comment");
|
||||||
|
|
||||||
|
return $location;
|
||||||
|
}
|
||||||
|
|
||||||
package IkiWiki::PageSpec;
|
package IkiWiki::PageSpec;
|
||||||
|
|
||||||
sub match_postcomment ($$;@) {
|
sub match_postcomment ($$;@) {
|
||||||
|
|
|
@ -105,11 +105,12 @@ sub check_content (@) {
|
||||||
$ok=1;
|
$ok=1;
|
||||||
}
|
}
|
||||||
elsif (ref $ret eq 'CODE') {
|
elsif (ref $ret eq 'CODE') {
|
||||||
$ret->();
|
$ret->() unless $params{nonfatal};
|
||||||
$ok=0;
|
$ok=0;
|
||||||
}
|
}
|
||||||
elsif (defined $ret) {
|
elsif (defined $ret) {
|
||||||
error($ret);
|
error($ret) unless $params{nonfatal};
|
||||||
|
$ok=0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -6,6 +6,8 @@ ikiwiki (3.03) UNRELEASED; urgency=low
|
||||||
* Remove nonstandard css. Closes: #512378
|
* Remove nonstandard css. Closes: #512378
|
||||||
* blogspam: Fix use of blogspam_options and blogspam_server
|
* blogspam: Fix use of blogspam_options and blogspam_server
|
||||||
config settings.
|
config settings.
|
||||||
|
* comments: If comment content checks fail, store the comment
|
||||||
|
(in .ikiwiki/comments_pending) for moderator review.
|
||||||
|
|
||||||
-- Joey Hess <joeyh@debian.org> Sun, 18 Jan 2009 14:50:57 -0500
|
-- Joey Hess <joeyh@debian.org> Sun, 18 Jan 2009 14:50:57 -0500
|
||||||
|
|
||||||
|
|
|
@ -41,3 +41,10 @@ There are some global options for the setup file:
|
||||||
specify a name for themselves, and the \[[!meta author]] and
|
specify a name for themselves, and the \[[!meta author]] and
|
||||||
\[[!meta authorurl]] directives will not be overridden by the comments
|
\[[!meta authorurl]] directives will not be overridden by the comments
|
||||||
plugin
|
plugin
|
||||||
|
|
||||||
|
## comment moderation
|
||||||
|
|
||||||
|
If you enable the [[blogspam]] plugin, comments that appear spammy will be
|
||||||
|
held for moderation. These comments are stored in
|
||||||
|
`.ikiwiki/comments_pending/`, and can be deleted, or moved into the
|
||||||
|
wiki's srcdir to be posted.
|
||||||
|
|
Loading…
Reference in New Issue