X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/a87f43d71eccc6c71bd0dadcc1fe06ec809cfdcf..2e15a490067991448c3b65323ad9ecdc774dbfe4:/IkiWiki/Plugin/comments.pm diff --git a/IkiWiki/Plugin/comments.pm b/IkiWiki/Plugin/comments.pm index 1a50d1865..0858f69f1 100644 --- a/IkiWiki/Plugin/comments.pm +++ b/IkiWiki/Plugin/comments.pm @@ -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,6 +205,11 @@ sub preprocess { $commentopenid = $commentuser; } else { + my $emailuser = IkiWiki::emailuser($commentuser); + if (defined $emailuser) { + $commentuser=$emailuser; + } + if (length $config{cgiurl}) { $commentauthorurl = IkiWiki::cgiurl( do => 'goto', @@ -223,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}) { @@ -250,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; } @@ -356,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; @@ -466,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"; } @@ -479,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}) { @@ -556,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, @@ -600,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); @@ -919,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')) {