X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/8d3c89f0c75c31c5e17a661150662e3efd3a146e..4c22562ec10bed4d8e499f226b2b3ba8a18a6489:/IkiWiki/Plugin/comments.pm diff --git a/IkiWiki/Plugin/comments.pm b/IkiWiki/Plugin/comments.pm index 93c8c4061..3cafcbe9c 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").''); @@ -262,6 +262,10 @@ sub sessioncgi ($$) { elsif ($do eq 'commentmoderation') { commentmoderation($cgi, $session); } + elsif ($do eq 'commentsignin') { + IkiWiki::cgi_signin($cgi, $session); + exit; + } } # Mostly cargo-culted from IkiWiki::plugin::editpage @@ -339,7 +343,7 @@ sub editcomment ($$) { if (! defined $session->param('name')) { # Make signinurl work and return here. - $form->tmpl_param(signinurl => IkiWiki::cgiurl(do => 'signin')); + $form->tmpl_param(signinurl => IkiWiki::cgiurl(do => 'commentsignin')); $session->param(postsignin => $ENV{QUERY_STRING}); IkiWiki::cgi_savesession($session); } @@ -473,7 +477,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 @@ -858,22 +862,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; } @@ -906,28 +908,30 @@ sub match_comment ($$;@) { my $page = shift; my $glob = shift; - my $match=match_glob($page, "$glob/*", internal => 1, @_); - if ($match && exists $IkiWiki::pagesources{$page}) { - my $type=IkiWiki::pagetype($IkiWiki::pagesources{$page}); - if (defined $type && $type ne "_comment") { - return IkiWiki::FailReason->new("$page is not a comment"); - } + if (! IkiWiki::isinternal($page)) { + return IkiWiki::FailReason->new("$page is not a comment"); + } + my $type=IkiWiki::pagetype($IkiWiki::pagesources{$page}); + if (defined $type && $type ne "_comment") { + return IkiWiki::FailReason->new("$page is not a comment"); } - return $match; + + return match_glob($page, "$glob/*", internal => 1, @_); } sub match_comment_pending ($$;@) { my $page = shift; my $glob = shift; - - my $match=match_glob($page, "$glob/*", internal => 1, @_); - if ($match && $IkiWiki::pagesources{$page}) { - my $type=IkiWiki::pagetype($IkiWiki::pagesources{$page}); - if (defined $type && $type ne "_comment_pending") { - return IkiWiki::FailReason->new("$page is not a pending comment"); - } + + if (! IkiWiki::isinternal($page)) { + return IkiWiki::FailReason->new("$page is not a pending comment"); + } + my $type=IkiWiki::pagetype($IkiWiki::pagesources{$page}); + if (defined $type && $type ne "_comment_pending") { + return IkiWiki::FailReason->new("$page is not a pending comment"); } - return $match; + + return match_glob($page, "$glob/*", internal => 1, @_); } 1