X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/38a088a433d53eadfe1a457460fa7b702bdbe64c..d09bf0754f650399b7fc7227106f761ddbd24f0d:/IkiWiki/Plugin/comments.pm diff --git a/IkiWiki/Plugin/comments.pm b/IkiWiki/Plugin/comments.pm index ca497c75a..edf5183a6 100644 --- a/IkiWiki/Plugin/comments.pm +++ b/IkiWiki/Plugin/comments.pm @@ -126,7 +126,7 @@ sub htmlize { sub htmlize_pending { my %params = @_; return sprintf(gettext("this comment needs %s"), - ''. gettext("moderation").''); } @@ -198,7 +198,6 @@ sub preprocess { $commentuser = $params{username}; my $oiduser = eval { IkiWiki::openiduser($commentuser) }; - if (defined $oiduser) { # looks like an OpenID $commentauthorurl = $commentuser; @@ -206,10 +205,17 @@ sub preprocess { $commentopenid = $commentuser; } else { - $commentauthorurl = IkiWiki::cgiurl( - do => 'goto', - page => IkiWiki::userpage($commentuser) - ); + my $emailuser = IkiWiki::emailuser($commentuser); + if (defined $emailuser) { + $commentuser=$emailuser; + } + + if (length $config{cgiurl}) { + $commentauthorurl = IkiWiki::cgiurl( + do => 'goto', + page => IkiWiki::userpage($commentuser) + ); + } $commentauthor = $commentuser; } @@ -221,22 +227,9 @@ sub preprocess { $commentauthor = gettext("Anonymous"); } - $commentstate{$page}{commentuser} = $commentuser; - $commentstate{$page}{commentopenid} = $commentopenid; - $commentstate{$page}{commentip} = $commentip; - $commentstate{$page}{commentauthor} = $commentauthor; - $commentstate{$page}{commentauthorurl} = $commentauthorurl; - $commentstate{$page}{commentauthoravatar} = $params{avatar}; - if (! defined $pagestate{$page}{meta}{author}) { - $pagestate{$page}{meta}{author} = $commentauthor; - } - if (! defined $pagestate{$page}{meta}{authorurl}) { - $pagestate{$page}{meta}{authorurl} = $commentauthorurl; - } - if ($config{comments_allowauthor}) { if (defined $params{claimedauthor}) { - $pagestate{$page}{meta}{author} = $params{claimedauthor}; + $commentauthor = $params{claimedauthor}; } if (defined $params{url}) { @@ -248,12 +241,21 @@ sub preprocess { } if (safeurl($url)) { - $pagestate{$page}{meta}{authorurl} = $url; + $commentauthorurl = $url; } } } - else { + + $commentstate{$page}{commentuser} = $commentuser; + $commentstate{$page}{commentopenid} = $commentopenid; + $commentstate{$page}{commentip} = $commentip; + $commentstate{$page}{commentauthor} = $commentauthor; + $commentstate{$page}{commentauthorurl} = $commentauthorurl; + $commentstate{$page}{commentauthoravatar} = $params{avatar}; + if (! defined $pagestate{$page}{meta}{author}) { $pagestate{$page}{meta}{author} = $commentauthor; + } + if (! defined $pagestate{$page}{meta}{authorurl}) { $pagestate{$page}{meta}{authorurl} = $commentauthorurl; } @@ -263,7 +265,7 @@ sub preprocess { $pagestate{$page}{meta}{title} = decode_entities($params{subject}); } - if ($params{page} =~ m/\/\Q$config{comments_pagename}\E\d+_/) { + if ($params{page} =~ m/\/\Q$config{comments_pagename}\E\d+/) { $pagestate{$page}{meta}{permalink} = urlto(IkiWiki::dirname($params{page})). "#".page_to_id($params{page}); } @@ -284,7 +286,7 @@ sub preprocess_moderation { unless defined $params{desc}; if (length $config{cgiurl}) { - return ''.$params{desc}.''; } @@ -354,7 +356,8 @@ sub editcomment ($$) { my @page_types; if (exists $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] + unless $IkiWiki::hooks{htmlize}{$key}{nocreate}; } } @page_types=sort @page_types; @@ -464,7 +467,7 @@ sub editcomment ($$) { my $content = "[[!comment format=$type\n"; if (defined $session->param('name')) { - my $username = $session->param('name'); + my $username = IkiWiki::cloak($session->param('name')); $username =~ s/"/"/g; $content .= " username=\"$username\"\n"; } @@ -477,7 +480,7 @@ sub editcomment ($$) { if (!(defined $session->param('name') || defined $session->param('nickname')) && defined $session->remote_addr()) { - $content .= " ip=\"".$session->remote_addr()."\"\n"; + $content .= " ip=\"".IkiWiki::cloak($session->remote_addr())."\"\n"; } if ($config{comments_allowauthor}) { @@ -554,11 +557,12 @@ sub editcomment ($$) { } $postcomment=1; - my $ok=IkiWiki::check_content(content => $form->field('editcontent'), - subject => $form->field('subject'), + my $ok=IkiWiki::check_content( + content => scalar $form->field('editcontent'), + subject => scalar $form->field('subject'), $config{comments_allowauthor} ? ( - author => $form->field('author'), - url => $form->field('url'), + author => scalar $form->field('author'), + url => scalar $form->field('url'), ) : (), page => $location, cgi => $cgi, @@ -598,7 +602,7 @@ sub editcomment ($$) { length $form->field('subject')) { $message = sprintf( gettext("Added a comment: %s"), - $form->field('subject')); + scalar $form->field('subject')); } IkiWiki::rcs_add($file); @@ -917,16 +921,18 @@ sub pagetemplate (@) { } if ($shown) { + my $absolute = $template->param('wants_absolute_urls'); + if ($template->query(name => 'commentsurl')) { $template->param(commentsurl => - urlto($page).'#comments'); + urlto($page, undef, $absolute).'#comments'); } if ($template->query(name => 'atomcommentsurl') && $config{usedirs}) { # This will 404 until there are some comments, but I # think that's probably OK... $template->param(atomcommentsurl => - urlto($page).'comments.atom'); + urlto($page, undef, $absolute).'comments.atom'); } if ($template->query(name => 'commentslink')) { @@ -940,7 +946,7 @@ sub pagetemplate (@) { ); } elsif (commentsopen($page)) { - $link = "". + $link = "". #translators: Here "Comment" is a verb; #translators: the user clicks on it to #translators: post a comment.