use warnings;
use strict;
use IkiWiki 2.00;
-use IkiWiki::Plugin::inline;
-use IkiWiki::Plugin::mdwn;
-use CGI 'escapeHTML';
use constant PLUGIN => "smcvpostcomment";
use constant PREVIEW => "Preview";
hook(type => "htmlize", id => "_".PLUGIN,
call => \&IkiWiki::Plugin::mdwn::htmlize);
IkiWiki::loadplugin("inline");
+ IkiWiki::loadplugin("mdwn");
+} # }}}
+
+sub htmlize { # {{{
+ eval { use IkiWiki::Plugin::mdwn; };
+ error($@) if ($@);
+ return IkiWiki::Plugin::mdwn::htmlize(@_)
} # }}}
sub getsetup () { #{{{
}
my $page = $params{page};
- $pagestate{$page}{PLUGIN()}{comments} = 1;
+ $pagestate{$page}{PLUGIN()}{comments} = defined $params{closed}
+ ? (not IkiWiki::yesno($params{closed}))
+ : 1;
$pagestate{$page}{PLUGIN()}{allowhtml} = IkiWiki::yesno($params{allowhtml});
$pagestate{$page}{PLUGIN()}{allowdirectives} = IkiWiki::yesno($params{allowdirectives});
$pagestate{$page}{PLUGIN()}{commit} = defined $params{commit}
$formtemplate->param(cgiurl => $config{cgiurl});
$formtemplate->param(page => $params{page});
- if ($params{preview}) {
+ if (not $pagestate{$page}{PLUGIN()}{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}");
- # I'm reasonably sure that this counts as abuse of [[!inline]]
- return $formtemplate->output . "\n" .
- IkiWiki::preprocess_inline(
+ my $posts = '';
+ unless (defined $params{inline} && !IkiWiki::yesno($params{inline})) {
+ eval { use IkiWiki::Plugin::inline; };
+ error($@) if ($@);
+ my @args = (
pages => "internal($params{page}/_comment_*)",
template => PLUGIN . "_display",
show => 0,
reverse => "yes",
+ # special stuff passed through
page => $params{page},
destpage => $params{destpage},
- preview => $params{preview});
+ preview => $params{preview},
+ );
+ push @args, atom => $params{atom} if defined $params{atom};
+ push @args, rss => $params{rss} if defined $params{rss};
+ push @args, feeds => $params{feeds} if defined $params{feeds};
+ push @args, feedshow => $params{feedshow} if defined $params{feedshow};
+ push @args, timeformat => $params{timeformat} if defined $params{timeformat};
+ push @args, feedonly => $params{feedonly} if defined $params{feedonly};
+ $posts = "\n" . IkiWiki::preprocess_inline(@args);
+ }
+
+ return $formtemplate->output . $posts;
} # }}}
# FIXME: logic taken from editpage, should be common code?