X-Git-Url: https://sipb.mit.edu/gitweb.cgi/ikiwiki.git/blobdiff_plain/911184432d1ccbeb1bcee224efba99f558ba74d5..fe8f4a77818f835aaaeb3784ca954e9ae96b4709:/IkiWiki/Plugin/comments.pm diff --git a/IkiWiki/Plugin/comments.pm b/IkiWiki/Plugin/comments.pm index 0a808aaef..5d7176a8c 100644 --- a/IkiWiki/Plugin/comments.pm +++ b/IkiWiki/Plugin/comments.pm @@ -109,7 +109,7 @@ sub htmlize { sub htmlize_pending { my %params = @_; - return sprintf(gettext("comment pending %s"), + return sprintf(gettext("this comment needs %s"), ''. gettext("moderation").''); @@ -473,7 +473,7 @@ sub editcomment ($$) { $postcomment=0; if (! $ok) { - $location=unique_comment_location($page, $content, $config{srcdir}); + $location=unique_comment_location($page, $content, $config{srcdir}, "._comment_pending"); writefile("$location._comment_pending", $config{srcdir}, $content); # Refresh so anything that deals with pending @@ -557,7 +557,7 @@ sub commentmoderation ($$) { my %vars=$cgi->Vars; my $added=0; foreach my $id (keys %vars) { - if ($id =~ /(.*)\Q._comment(?:_pending)?\E$/) { + if ($id =~ /(.*)\._comment(?:_pending)?$/) { my $action=$cgi->param($id); next if $action eq 'Defer' && ! $rejectalldefer; @@ -621,7 +621,7 @@ sub commentmoderation ($$) { id => $id, view => $preview, } - } sort { $b->[1] <=> $a->[1] } comments_pending(); + } sort { $b->[2] <=> $a->[2] } comments_pending(); my $template=template("commentmoderation.tmpl"); $template->param( @@ -858,22 +858,20 @@ sub num_comments ($$) { return @comments; } -sub unique_comment_location ($$$) { +sub unique_comment_location ($$$$) { my $page=shift; - eval q{use Digest::MD5 'md5_hex'}; error($@) if $@; my $content_md5=md5_hex(Encode::encode_utf8(shift)); - my $dir=shift; + my $ext=shift || "._comment"; my $location; my $i = num_comments($page, $dir); do { $i++; $location = "$page/$config{comments_pagename}${i}_${content_md5}"; - } while (-e "$dir/$location._comment" || - -e "$dir/$location._comment_pending"); + } while (-e "$dir/$location$ext"); return $location; } @@ -907,9 +905,9 @@ sub match_comment ($$;@) { my $glob = shift; my $match=match_glob($page, "$glob/*", internal => 1, @_); - if ($match) { + if ($match && exists $IkiWiki::pagesources{$page}) { my $type=IkiWiki::pagetype($IkiWiki::pagesources{$page}); - if ($type ne "_comment") { + if (defined $type && $type ne "_comment") { return IkiWiki::FailReason->new("$page is not a comment"); } } @@ -921,9 +919,9 @@ sub match_comment_pending ($$;@) { my $glob = shift; my $match=match_glob($page, "$glob/*", internal => 1, @_); - if ($match) { + if ($match && $IkiWiki::pagesources{$page}) { my $type=IkiWiki::pagetype($IkiWiki::pagesources{$page}); - if ($type ne "_comment_pending") { + if (defined $type && $type ne "_comment_pending") { return IkiWiki::FailReason->new("$page is not a pending comment"); } }