X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/523650d9c2b876152aaa9bc6c5d6363377ea7008..e9e75f5f29d78b0631f98d9b0fa93184fcb181fe:/IkiWiki/Plugin/comments.pm?ds=sidebyside diff --git a/IkiWiki/Plugin/comments.pm b/IkiWiki/Plugin/comments.pm index 1c10417c3..833bedf25 100644 --- a/IkiWiki/Plugin/comments.pm +++ b/IkiWiki/Plugin/comments.pm @@ -343,8 +343,6 @@ sub sessioncgi ($$) { error(gettext("bad page name")); } - # FIXME: is this right? Or should we be using the candidate subpage - # (whatever that might mean) as the base URL? my $baseurl = urlto($page, undef, 1); $form->title(sprintf(gettext("commenting on %s"), @@ -469,9 +467,21 @@ sub sessioncgi ($$) { } if ($form->submitted eq POST_COMMENT && $form->validate) { - my $file = "$location._comment"; - IkiWiki::checksessionexpiry($cgi, $session); + + $postcomment=1; + IkiWiki::check_content(content => $form->field('editcontent'), + subject => $form->field('subject'), + $config{comments_allowauthor} ? ( + author => $form->field('author'), + url => $form->field('url'), + ) : (), + page => $location, + cgi => $cgi, session => $session + ); + $postcomment=0; + + my $file = "$location._comment"; # FIXME: could probably do some sort of graceful retry # on error? Would require significant unwinding though @@ -508,7 +518,7 @@ sub sessioncgi ($$) { # Jump to the new comment on the page. # The trailing question mark tries to avoid broken # caches and get the most recent version of the page. - IkiWiki::redirect($cgi, urlto($page, undef, 1)."#$location?updated"); + IkiWiki::redirect($cgi, urlto($page, undef, 1)."?updated#$location"); } else { @@ -604,6 +614,12 @@ sub pagetemplate (@) { } } + # everything below this point is only relevant to the comments + # themselves + if (!exists $commentstate{$page}) { + return; + } + if ($template->query(name => 'commentuser')) { $template->param(commentuser => $commentstate{$page}{commentuser}); @@ -628,6 +644,14 @@ sub pagetemplate (@) { $template->param(commentauthorurl => $commentstate{$page}{commentauthorurl}); } + + if ($template->query(name => 'removeurl') && + IkiWiki::Plugin::remove->can("check_canremove") && + length $config{cgiurl}) { + $template->param(removeurl => IkiWiki::cgiurl(do => 'remove', + page => $page)); + $template->param(have_actions => 1); + } } package IkiWiki::PageSpec;