]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/blobdiff - IkiWiki/Plugin/comments.pm
No more custom patches or plugins at work (yay!).
[git.ikiwiki.info.git] / IkiWiki / Plugin / comments.pm
index 285013e49175c8651055bb53e34e71e44115699c..1ef79a27a958a77dde14f75dd34b1b5c75dd5763 100644 (file)
@@ -90,6 +90,15 @@ sub getsetup () {
                        safe => 0,
                        rebuild => 0,
                },
                        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 () {
 }
 
 sub checkconfig () {
@@ -101,6 +110,8 @@ sub checkconfig () {
                unless defined $config{comments_closed_pagespec};
        $config{comments_pagename} = 'comment_'
                unless defined $config{comments_pagename};
                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 {
 }
 
 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};
 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));
        }
 
                error(sprintf(gettext("unsupported page format %s"), $format));
        }
 
@@ -332,7 +349,7 @@ sub editcomment ($$) {
 
        my @page_types;
        if (exists $IkiWiki::hooks{htmlize}) {
 
        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];
                }
        }
                        push @page_types, [$key, $IkiWiki::hooks{htmlize}{$key}{longname} || $key];
                }
        }
@@ -443,10 +460,7 @@ sub editcomment ($$) {
                $content .= " nickname=\"$nickname\"\n";
        }
        elsif (defined $session->remote_addr()) {
                $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}) {
        }
 
        if ($config{comments_allowauthor}) {