- $pagestate{$page}{comments}{comments} = defined $params{closed}
- ? (not IkiWiki::yesno($params{closed}))
- : 1;
- $pagestate{$page}{comments}{allowdirectives} = IkiWiki::yesno($params{allowdirectives});
- $pagestate{$page}{comments}{commit} = defined $params{commit}
- ? IkiWiki::yesno($params{commit})
- : 1;
-
- my $formtemplate = IkiWiki::template("comments_embed.tmpl",
- blind_cache => 1);
- $formtemplate->param(cgiurl => $config{cgiurl});
- $formtemplate->param(page => $params{page});
-
- if (not $pagestate{$page}{comments}{comments}) {
- $formtemplate->param("disabled" =>
- gettext('comments are closed'));
- }
- elsif ($params{preview}) {
- $formtemplate->param("disabled" =>
- gettext('not available during Preview'));
- }
-
- debug("page $params{page} => destpage $params{destpage}");
-
- unless (defined $params{inline} && !IkiWiki::yesno($params{inline})) {
- my $posts = '';
- eval q{use IkiWiki::Plugin::inline};
- error($@) if ($@);
- my @args = (
- pages => "internal($params{page}/_comment_*)",
- template => "comments_display",
- show => 0,
- reverse => "yes",
- # special stuff passed through
- page => $params{page},
+
+ my $format = $params{format};
+ if (defined $format && ! exists $IkiWiki::hooks{htmlize}{$format}) {
+ error(sprintf(gettext("unsupported page format %s"), $format));
+ }
+
+ my $content = $params{content};
+ if (! defined $content) {
+ error(gettext("comment must have content"));
+ }
+ $content =~ s/\\"/"/g;
+
+ $content = IkiWiki::filter($page, $params{destpage}, $content);
+
+ if ($config{comments_allowdirectives}) {
+ $content = IkiWiki::preprocess($page, $params{destpage},
+ $content);
+ }
+
+ # no need to bother with htmlize if it's just HTML
+ $content = IkiWiki::htmlize($page, $params{destpage}, $format,
+ $content) if defined $format;
+
+ IkiWiki::run_hooks(sanitize => sub {
+ $content = shift->(
+ page => $page,