use warnings;
use strict;
-use IkiWiki 2.00;
+use IkiWiki 3.00;
use Encode;
use POSIX qw(strftime);
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"),
}
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
error($conflict) if defined $conflict;
# Jump to the new comment on the page.
- IkiWiki::redirect($cgi, urlto($page, undef, 1)."#$location");
+ # 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)."?updated#$location");
+
}
else {
IkiWiki::showform ($form, \@buttons, $session, $cgi,
}
}
+ # 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});
$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;