X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/a87f43d71eccc6c71bd0dadcc1fe06ec809cfdcf..740c909abbe97151f14768de9476505c1f06badd:/IkiWiki/Plugin/comments.pm
diff --git a/IkiWiki/Plugin/comments.pm b/IkiWiki/Plugin/comments.pm
index 1a50d1865..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,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;
}
@@ -265,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});
}
@@ -286,7 +286,7 @@ sub preprocess_moderation {
unless defined $params{desc};
if (length $config{cgiurl}) {
- return ''.$params{desc}.'';
}
@@ -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')) {
@@ -942,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.