comments: add avatar picture of comment author

Use Libravatar::URL to pull the avatar picture for the comment
author if we have an email address for him/her.
master
Francois Marier 2011-03-05 20:33:07 +13:00
parent 3e5197c967
commit 7723e94218
3 changed files with 25 additions and 0 deletions

17
IkiWiki/Plugin/comments.pm 100644 → 100755
View File

@ -167,6 +167,7 @@ sub preprocess {
my $commentip; my $commentip;
my $commentauthor; my $commentauthor;
my $commentauthorurl; my $commentauthorurl;
my $commentauthoravatar;
my $commentopenid; my $commentopenid;
if (defined $params{username}) { if (defined $params{username}) {
$commentuser = $params{username}; $commentuser = $params{username};
@ -187,6 +188,16 @@ sub preprocess {
$commentauthor = $commentuser; $commentauthor = $commentuser;
} }
eval 'use Libravatar::URL';
if (! $@) {
my $email = IkiWiki::userinfo_get($commentuser, 'email');
if (defined $email) {
$commentauthoravatar = libravatar_url(email => $email);
}
}
} }
else { else {
if (defined $params{ip}) { if (defined $params{ip}) {
@ -200,6 +211,7 @@ sub preprocess {
$commentstate{$page}{commentip} = $commentip; $commentstate{$page}{commentip} = $commentip;
$commentstate{$page}{commentauthor} = $commentauthor; $commentstate{$page}{commentauthor} = $commentauthor;
$commentstate{$page}{commentauthorurl} = $commentauthorurl; $commentstate{$page}{commentauthorurl} = $commentauthorurl;
$commentstate{$page}{commentauthoravatar} = $commentauthoravatar;
if (! defined $pagestate{$page}{meta}{author}) { if (! defined $pagestate{$page}{meta}{author}) {
$pagestate{$page}{meta}{author} = $commentauthor; $pagestate{$page}{meta}{author} = $commentauthor;
} }
@ -874,6 +886,11 @@ sub pagetemplate (@) {
$commentstate{$page}{commentauthorurl}); $commentstate{$page}{commentauthorurl});
} }
if ($template->query(name => 'commentauthoravatar')) {
$template->param(commentauthoravatar =>
$commentstate{$page}{commentauthoravatar});
}
if ($template->query(name => 'removeurl') && if ($template->query(name => 'removeurl') &&
IkiWiki::Plugin::remove->can("check_canremove") && IkiWiki::Plugin::remove->can("check_canremove") &&
length $config{cgiurl}) { length $config{cgiurl}) {

View File

@ -247,6 +247,9 @@ span.color {
.comment-subject { .comment-subject {
font-weight: bold; font-weight: bold;
} }
.comment-avatar {
float: right;
}
.comment { .comment {
border: 1px solid #aaa; border: 1px solid #aaa;
padding: 3px; padding: 3px;

View File

@ -1,6 +1,10 @@
<TMPL_IF HTML5><article class="comment" id="<TMPL_VAR COMMENTID>"> <TMPL_IF HTML5><article class="comment" id="<TMPL_VAR COMMENTID>">
<TMPL_ELSE><div class="comment" id="<TMPL_VAR COMMENTID>"></TMPL_IF> <TMPL_ELSE><div class="comment" id="<TMPL_VAR COMMENTID>"></TMPL_IF>
<TMPL_IF COMMENTAUTHORAVATAR><div class="comment-avatar">
<img src="<TMPL_VAR COMMENTAUTHORAVATAR>" alt="" />
</div></TMPL_IF>
<TMPL_IF HTML5><header class="comment-subject"><TMPL_ELSE><div class="comment-subject"></TMPL_IF> <TMPL_IF HTML5><header class="comment-subject"><TMPL_ELSE><div class="comment-subject"></TMPL_IF>
<TMPL_IF PERMALINK> <TMPL_IF PERMALINK>
<a href="<TMPL_VAR PERMALINK>"><TMPL_VAR TITLE></a> <a href="<TMPL_VAR PERMALINK>"><TMPL_VAR TITLE></a>
@ -58,4 +62,5 @@ Comment by
<TMPL_IF HTML5></nav><TMPL_ELSE></div></TMPL_IF> <TMPL_IF HTML5></nav><TMPL_ELSE></div></TMPL_IF>
</TMPL_IF> </TMPL_IF>
<div style="clear: both"></div>
<TMPL_IF HTML5></article><TMPL_ELSE></div></TMPL_IF> <TMPL_IF HTML5></article><TMPL_ELSE></div></TMPL_IF>