}
if ($params{page} =~ m/\/\Q$config{comments_pagename}\E\d+_/) {
- $pagestate{$page}{meta}{permalink} = urlto(IkiWiki::dirname($params{page}), undef, 1).
+ $pagestate{$page}{meta}{permalink} = urlto(IkiWiki::dirname($params{page})).
"#".page_to_id($params{page});
}
}
# The untaint is OK (as in editpage) because we're about to pass
- # it to file_pruned anyway
- my $page = $form->field('page');
+ # it to file_pruned and wiki_file_regexp anyway.
+ my ($page) = $form->field('page')=~/$config{wiki_file_regexp}/;
$page = IkiWiki::possibly_foolish_untaint($page);
if (! defined $page || ! length $page ||
IkiWiki::file_pruned($page)) {
IkiWiki::saveindex();
IkiWiki::printheader($session);
- print IkiWiki::misctemplate(gettext(gettext("comment stored for moderation")),
+ print IkiWiki::cgitemplate($cgi, gettext(gettext("comment stored for moderation")),
"<p>".
gettext("Your comment will be posted after moderator review").
"</p>");
}
else {
- IkiWiki::showform_preview($form, \@buttons, $session, $cgi,
+ IkiWiki::showform($form, \@buttons, $session, $cgi,
page => $page);
}
IkiWiki::run_hooks(format => sub {
$out = shift->(page => "", content => $out);
});
- print IkiWiki::misctemplate(gettext("comment moderation"), $out);
+ print IkiWiki::cgitemplate($cgi, gettext("comment moderation"), $out);
exit;
}
}
}
- return match_glob($page, "$glob/*", internal => 1, @_);
+ return match_glob($page, "$glob/*", internal => 1, @_) &&
+ ! match_glob($page, "$glob/*/*", internal => 1, @_);
}
sub match_comment_pending ($$;@) {
return IkiWiki::FailReason->new("$page is not a pending comment");
}
- return match_glob($page, "$glob/*", internal => 1, @_);
+ return match_glob($page, "$glob/*", internal => 1, @_) &&
+ ! match_glob($page, "$glob/*/*", internal => 1, @_);
}
1