X-Git-Url: https://sipb.mit.edu/gitweb.cgi/ikiwiki.git/blobdiff_plain/b34d31142b9fed28ec9cf77fe0c5d9f405d48c84..f4262696ad9250ca14ba89849270dfeb3518c38d:/IkiWiki/Plugin/comments.pm diff --git a/IkiWiki/Plugin/comments.pm b/IkiWiki/Plugin/comments.pm old mode 100644 new mode 100755 index 8f475aa56..fcce6c5a6 --- a/IkiWiki/Plugin/comments.pm +++ b/IkiWiki/Plugin/comments.pm @@ -167,6 +167,7 @@ sub preprocess { my $commentip; my $commentauthor; my $commentauthorurl; + my $commentauthoravatar; my $commentopenid; if (defined $params{username}) { $commentuser = $params{username}; @@ -187,6 +188,21 @@ sub preprocess { $commentauthor = $commentuser; } + + eval q{use Libravatar::URL}; + if (! $@) { + if (defined $commentopenid) { + eval { + $commentauthoravatar = libravatar_url(openid => $commentopenid, https => $ENV{HTTPS}); + } + } + if (! defined $commentauthoravatar && + (my $email = IkiWiki::userinfo_get($commentuser, 'email'))) { + eval { + $commentauthoravatar = libravatar_url(email => $email, https => $ENV{HTTPS}); + } + } + } } else { if (defined $params{ip}) { @@ -200,6 +216,7 @@ sub preprocess { $commentstate{$page}{commentip} = $commentip; $commentstate{$page}{commentauthor} = $commentauthor; $commentstate{$page}{commentauthorurl} = $commentauthorurl; + $commentstate{$page}{commentauthoravatar} = $commentauthoravatar; if (! defined $pagestate{$page}{meta}{author}) { $pagestate{$page}{meta}{author} = $commentauthor; } @@ -216,7 +233,7 @@ sub preprocess { my $url=$params{url}; eval q{use URI::Heuristic}; - if (! $@) { + if (! $@) { $url=URI::Heuristic::uf_uristr($url); } @@ -755,10 +772,8 @@ sub previewcomment ($$$) { sub commentsshown ($) { my $page=shift; - return ! pagespec_match($page, "comment(*)", - location => $page) && - pagespec_match($page, $config{comments_pagespec}, - location => $page); + return pagespec_match($page, $config{comments_pagespec}, + location => $page); } sub commentsopen ($) { @@ -785,7 +800,7 @@ sub pagetemplate (@) { my $comments = undef; if ($shown) { $comments = IkiWiki::preprocess_inline( - pages => "comment($page)", + pages => "comment($page) and !comment($page/*)", template => 'comment', show => 0, reverse => 'yes', @@ -876,6 +891,11 @@ sub pagetemplate (@) { $commentstate{$page}{commentauthorurl}); } + if ($template->query(name => 'commentauthoravatar')) { + $template->param(commentauthoravatar => + $commentstate{$page}{commentauthoravatar}); + } + if ($template->query(name => 'removeurl') && IkiWiki::Plugin::remove->can("check_canremove") && length $config{cgiurl}) { @@ -957,8 +977,7 @@ sub match_comment ($$;@) { } } - return match_glob($page, "$glob/*", internal => 1, @_) && - ! match_glob($page, "$glob/*/*", internal => 1, @_); + return match_glob($page, "$glob/*", internal => 1, @_); } sub match_comment_pending ($$;@) { @@ -973,8 +992,7 @@ sub match_comment_pending ($$;@) { return IkiWiki::FailReason->new("$page is not a pending comment"); } - return match_glob($page, "$glob/*", internal => 1, @_) && - ! match_glob($page, "$glob/*/*", internal => 1, @_); + return match_glob($page, "$glob/*", internal => 1, @_); } 1