]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/blobdiff - IkiWiki/Plugin/comments.pm
fix rcs_prepedit implementation to match spec
[git.ikiwiki.info.git] / IkiWiki / Plugin / comments.pm
index 41c6948e846557703717cb7ad83f1e41ca477c82..851f4862eb3a5a39bb0afb387b35dfc60262024d 100644 (file)
@@ -22,6 +22,7 @@ sub import {
        hook(type => "checkconfig", id => 'comments',  call => \&checkconfig);
        hook(type => "getsetup", id => 'comments',  call => \&getsetup);
        hook(type => "preprocess", id => 'comment', call => \&preprocess);
+       hook(type => "preprocess", id => 'commentmoderation', call => \&preprocess_moderation);
        # here for backwards compatability with old comments
        hook(type => "preprocess", id => '_comment', call => \&preprocess);
        hook(type => "sessioncgi", id => 'comment', call => \&sessioncgi);
@@ -142,8 +143,6 @@ sub preprocess {
        }
        $content =~ s/\\"/"/g;
 
-       $content = IkiWiki::filter($page, $params{destpage}, $content);
-
        if ($config{comments_allowdirectives}) {
                $content = IkiWiki::preprocess($page, $params{destpage},
                        $content);
@@ -177,7 +176,7 @@ sub preprocess {
                if (defined $oiduser) {
                        # looks like an OpenID
                        $commentauthorurl = $commentuser;
-                       $commentauthor = $oiduser;
+                       $commentauthor = (defined $params{nickname} && length $params{nickname}) ? $params{nickname} : $oiduser;
                        $commentopenid = $commentuser;
                }
                else {
@@ -251,6 +250,22 @@ sub preprocess {
        return $content;
 }
 
+sub preprocess_moderation {
+       my %params = @_;
+
+       $params{desc}=gettext("Comment Moderation")
+               unless defined $params{desc};
+
+       if (length $config{cgiurl}) {
+               return '<a href="'.
+                       IkiWiki::cgiurl(do => 'commentmoderation').
+                       '">'.$params{desc}.'</a>';
+       }
+       else {
+               return $params{desc};
+       }
+}
+
 sub sessioncgi ($$) {
        my $cgi=shift;
        my $session=shift;
@@ -396,12 +411,16 @@ sub editcomment ($$) {
 
        my $content = "[[!comment format=$type\n";
 
-       # FIXME: handling of double quotes probably wrong?
        if (defined $session->param('name')) {
                my $username = $session->param('name');
                $username =~ s/"/&quot;/g;
                $content .= " username=\"$username\"\n";
        }
+       if (defined $session->param('nickname')) {
+               my $nickname = $session->param('nickname');
+               $nickname =~ s/"/&quot;/g;
+               $content .= " nickname=\"$nickname\"\n";
+       }
        elsif (defined $session->remote_addr()) {
                my $ip = $session->remote_addr();
                if ($ip =~ m/^([.0-9]+)$/) {
@@ -565,6 +584,7 @@ sub commentmoderation ($$) {
                my $added=0;
                foreach my $id (keys %vars) {
                        if ($id =~ /(.*)\._comment(?:_pending)?$/) {
+                               $id=decode_utf8($id);
                                my $action=$cgi->param($id);
                                next if $action eq 'Defer' && ! $rejectalldefer;