aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoey Hess <joey@kitenet.net>2013-06-23 14:04:42 -0400
committerJoey Hess <joey@kitenet.net>2013-06-23 14:04:42 -0400
commit5038f36cba2c7db223708d06a65f99b08c25b733 (patch)
tree57bb7bd2b20aad5cd56a62606ffbcf5eae057730
parentc204de3ca2a14fa9513da2c65fb841fdfb8eb767 (diff)
parentc42fd7d7580d081f3e3f624fd74219b0435230f6 (diff)
downloadikiwiki-5038f36cba2c7db223708d06a65f99b08c25b733.tar
ikiwiki-5038f36cba2c7db223708d06a65f99b08c25b733.tar.gz
Merge branch 'restrict-comment-formats' of git://rtime.felk.cvut.cz/sojka/ikiwiki
-rw-r--r--IkiWiki/Plugin/comments.pm21
1 files changed, 19 insertions, 2 deletions
diff --git a/IkiWiki/Plugin/comments.pm b/IkiWiki/Plugin/comments.pm
index c00bf5275..1ef79a27a 100644
--- a/IkiWiki/Plugin/comments.pm
+++ b/IkiWiki/Plugin/comments.pm
@@ -90,6 +90,15 @@ sub getsetup () {
safe => 0,
rebuild => 0,
},
+ comments_allowformats => {
+ type => 'string',
+ default => '',
+ example => 'mdwn txt',
+ description => 'Restrict formats for comments to (no restriction if empty)',
+ safe => 1,
+ rebuild => 0,
+ },
+
}
sub checkconfig () {
@@ -101,6 +110,8 @@ sub checkconfig () {
unless defined $config{comments_closed_pagespec};
$config{comments_pagename} = 'comment_'
unless defined $config{comments_pagename};
+ $config{comments_allowformats} = ''
+ unless defined $config{comments_allowformats};
}
sub htmlize {
@@ -128,12 +139,18 @@ sub safeurl ($) {
}
}
+sub isallowed ($) {
+ my $format = shift;
+ return ! $config{comments_allowformats} || $config{comments_allowformats} =~ /\b$format\b/;
+}
+
sub preprocess {
my %params = @_;
my $page = $params{page};
my $format = $params{format};
- if (defined $format && ! exists $IkiWiki::hooks{htmlize}{$format}) {
+ if (defined $format && (! exists $IkiWiki::hooks{htmlize}{$format} ||
+ ! isallowed($format))) {
error(sprintf(gettext("unsupported page format %s"), $format));
}
@@ -332,7 +349,7 @@ sub editcomment ($$) {
my @page_types;
if (exists $IkiWiki::hooks{htmlize}) {
- foreach my $key (grep { !/^_/ } keys %{$IkiWiki::hooks{htmlize}}) {
+ foreach my $key (grep { !/^_/ && isallowed($_) } keys %{$IkiWiki::hooks{htmlize}}) {
push @page_types, [$key, $IkiWiki::hooks{htmlize}{$key}{longname} || $key];
}
}