From: Joey Hess Date: Sun, 23 Jun 2013 18:04:42 +0000 (-0400) Subject: Merge branch 'restrict-comment-formats' of git://rtime.felk.cvut.cz/sojka/ikiwiki X-Git-Tag: 3.20130710~32 X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/commitdiff_plain/5038f36cba2c7db223708d06a65f99b08c25b733?hp=-c Merge branch 'restrict-comment-formats' of git://rtime.felk.cvut.cz/sojka/ikiwiki --- 5038f36cba2c7db223708d06a65f99b08c25b733 diff --combined IkiWiki/Plugin/comments.pm index c00bf5275,151e839d0..1ef79a27a --- a/IkiWiki/Plugin/comments.pm +++ b/IkiWiki/Plugin/comments.pm @@@ -90,6 -90,15 +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 +110,8 @@@ 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 +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 +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]; } } @@@ -443,7 -460,10 +460,7 @@@ $content .= " nickname=\"$nickname\"\n"; } elsif (defined $session->remote_addr()) { - my $ip = $session->remote_addr(); - if ($ip =~ m/^([.0-9]+)$/) { - $content .= " ip=\"$1\"\n"; - } + $content .= " ip=\"".$session->remote_addr()."\"\n"; } if ($config{comments_allowauthor}) {