]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/commitdiff
Merge branch 'restrict-comment-formats' of git://rtime.felk.cvut.cz/sojka/ikiwiki
authorJoey Hess <joey@kitenet.net>
Sun, 23 Jun 2013 18:04:42 +0000 (14:04 -0400)
committerJoey Hess <joey@kitenet.net>
Sun, 23 Jun 2013 18:04:42 +0000 (14:04 -0400)
1  2 
IkiWiki/Plugin/comments.pm

index c00bf52752e9326a3ffc40855ed8b130dced74ce,151e839d0bb826a7bda242a9d94b882e79e7cb17..1ef79a27a958a77dde14f75dd34b1b5c75dd5763
@@@ -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 () {
                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];
                }
        }
                $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}) {