hook(type => "getsetup", id => 'comments', call => \&getsetup);
hook(type => "preprocess", id => 'comments', call => \&preprocess);
hook(type => "sessioncgi", id => 'comment', call => \&sessioncgi);
- hook(type => "htmlize", id => "_comment",
- call => \&IkiWiki::Plugin::mdwn::htmlize);
+ hook(type => "htmlize", id => "_comment", call => \&htmlize);
IkiWiki::loadplugin("inline");
IkiWiki::loadplugin("mdwn");
} # }}}
sub htmlize { # {{{
- eval { use IkiWiki::Plugin::mdwn; };
+ eval q{use IkiWiki::Plugin::mdwn};
error($@) if ($@);
return IkiWiki::Plugin::mdwn::htmlize(@_)
} # }}}
$pagestate{$page}{comments}{comments} = defined $params{closed}
? (not IkiWiki::yesno($params{closed}))
: 1;
- $pagestate{$page}{comments}{allowhtml} = IkiWiki::yesno($params{allowhtml});
$pagestate{$page}{comments}{allowdirectives} = IkiWiki::yesno($params{allowdirectives});
$pagestate{$page}{comments}{commit} = defined $params{commit}
? IkiWiki::yesno($params{commit})
my $posts = '';
unless (defined $params{inline} && !IkiWiki::yesno($params{inline})) {
- eval { use IkiWiki::Plugin::inline; };
+ eval q{use IkiWiki::Plugin::inline};
error($@) if ($@);
my @args = (
pages => "internal($params{page}/_comment_*)",
}
} # }}}
-# FIXME: taken from IkiWiki::Plugin::editpage, should be common?
-sub checksessionexpiry ($$) { # {{{
- my $session = shift;
- my $sid = shift;
-
- if (defined $session->param("name")) {
- if (! defined $sid || $sid ne $session->id) {
- error(gettext("Your login session has expired."));
- }
- }
-} # }}}
-
# Mostly cargo-culted from IkiWiki::plugin::editpage
sub sessioncgi ($$) { #{{{
my $cgi=shift;
}
my $allow_directives = $pagestate{$page}{comments}{allowdirectives};
- my $allow_html = $pagestate{$page}{comments}{allowdirectives};
my $commit_comments = defined $pagestate{$page}{comments}{commit}
? $pagestate{$page}{comments}{commit}
: 1;
htmllink($page, $page, 'ikiwiki/formatting',
noimageinline => 1,
linktext => 'FormattingHelp'),
- allowhtml => $allow_html,
allowdirectives => $allow_directives);
if (not exists $pagesources{$page}) {
unless $config{prefix_directives};
}
- unless ($allow_html) {
- $body =~ s/&(\w|#)/&$1/g;
- $body =~ s/</</g;
- $body =~ s/>/>/g;
- }
+ IkiWiki::run_hooks(sanitize => sub {
+ # $fake is a possible location for this comment. We don't
+ # know yet what the comment number *actually* is.
+ my $fake = "$page/_comment_1";
+ $body=shift->(
+ page => $fake,
+ destpage => $fake,
+ content => $body,
+ );
+ });
# In this template, the [[!meta]] directives should stay at the end,
# so that they will override anything the user specifies. (For
# - this means that if they do, rocks fall and everyone dies
if ($form->submitted eq PREVIEW) {
- # $fake is a location that has the same number of slashes
- # as the eventual location of this comment.
- my $fake = "$page/_comments_hypothetical";
+ # $fake is a possible location for this comment. We don't
+ # know yet what the comment number *actually* is.
+ my $fake = "$page/_comment_1";
my $preview = IkiWiki::htmlize($fake, $page, 'mdwn',
IkiWiki::linkify($page, $page,
IkiWiki::preprocess($page, $page,
# Let's get posting. We don't check_canedit here because
# that somewhat defeats the point of this plugin.
- checksessionexpiry($session, $cgi->param('sid'));
+ IkiWiki::checksessionexpiry($session, $cgi->param('sid'));
# FIXME: check that the wiki is locked right now, because
# if it's not, there are mad race conditions!