From: Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
To: git@vger.kernel.org
Cc: Jakub Narebski <jnareb@gmail.com>,
Junio C Hamano <gitster@pobox.com>,
Aaron Crane <git@aaroncrane.co.uk>,
Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
Subject: [PATCHv4 2/2] gitweb: gravatar support
Date: Tue, 23 Jun 2009 00:49:59 +0200 [thread overview]
Message-ID: <1245710999-17763-3-git-send-email-giuseppe.bilotta@gmail.com> (raw)
In-Reply-To: <1245710999-17763-2-git-send-email-giuseppe.bilotta@gmail.com>
Introduce gravatar support by adding the appropriate img tag next to
author and committer in commit(diff), history, shortlog and log view.
The feature is disabled by default, and depends on Digest::MD5, which
is a core package since Perl 5.8. If Digest::MD5 cannot be found,
enabling this feature results in a no-op.
Signed-off-by: Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
---
gitweb/gitweb.css | 4 +++
gitweb/gitweb.perl | 56 ++++++++++++++++++++++++++++++++++++++++++++++-----
2 files changed, 54 insertions(+), 6 deletions(-)
diff --git a/gitweb/gitweb.css b/gitweb/gitweb.css
index 68b22ff..ddf982b 100644
--- a/gitweb/gitweb.css
+++ b/gitweb/gitweb.css
@@ -28,6 +28,10 @@ img.logo {
border-width: 0px;
}
+img.avatar {
+ vertical-align:middle;
+}
+
div.page_header {
height: 25px;
padding: 8px;
diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
index 223648f..531d589 100755
--- a/gitweb/gitweb.perl
+++ b/gitweb/gitweb.perl
@@ -195,6 +195,14 @@ our %known_snapshot_format_aliases = (
'x-zip' => undef, '' => undef,
);
+# Pixel sizes for avatars. If the default font sizes or lineheights
+# are changed, it may be appropriate to change these values too via
+# $GITWEB_CONFIG.
+our %avatar_size = (
+ 'default' => 16,
+ 'double' => 32
+) ;
+
# You define site-wide feature defaults here; override them with
# $GITWEB_CONFIG as necessary.
our %feature = (
@@ -365,6 +373,21 @@ our %feature = (
'sub' => \&feature_patches,
'override' => 0,
'default' => [16]},
+
+ # Gravatar support. When this feature is enabled, views such as
+ # shortlog or commit will display the gravatar associated with
+ # the email of the committer(s) and/or author(s). Please note that
+ # the feature depends on Digest::MD5.
+
+ # To enable system wide have in $GITWEB_CONFIG
+ # $feature{'gravatar'}{'default'} = [1];
+ # To have project specific config enable override in $GITWEB_CONFIG
+ # $feature{'gravatar'}{'override'} = 1;
+ # and in project config gitweb.gravatar = 0|1;
+ 'gravatar' => {
+ 'sub' => sub { feature_bool('gravatar', @_) },
+ 'override' => 0,
+ 'default' => [0]},
);
sub gitweb_get_feature {
@@ -814,6 +837,10 @@ $git_dir = "$projectroot/$project" if $project;
our @snapshot_fmts = gitweb_get_feature('snapshot');
@snapshot_fmts = filter_snapshot_fmts(@snapshot_fmts);
+# check if gravatars are enabled and dependencies are satisfied
+our $git_gravatar_enabled = gitweb_check_feature('gravatar') &&
+ (eval { require Digest::MD5; 1; });
+
# dispatch
if (!defined $action) {
if (defined $hash) {
@@ -1474,7 +1501,7 @@ sub format_author_html {
my $tag = shift;
my $co = shift;
my $author = chop_and_escape_str($co->{'author_name'}, @_);
- return "<$tag class=\"author\">" . $author . "</$tag>\n";
+ return "<$tag class=\"author\">" . git_get_gravatar($co->{'author_email'}, 'space_after' => 1) . $author . "</$tag>\n";
}
# format git diff header line, i.e. "diff --(git|combined|cc) ..."
@@ -3222,6 +3249,21 @@ sub git_print_header_div {
"\n</div>\n";
}
+# insert a gravatar for the given $email at the given $size if the feature
+# is enabled
+sub git_get_gravatar {
+ if ($git_gravatar_enabled) {
+ my ($email, %params) = @_;
+ my $pre_white = ($params{'space_before'} ? " " : "");
+ my $post_white = ($params{'space_after'} ? " " : "");
+ my $size = $avatar_size{$params{'size'}} || $avatar_size{'default'};
+ return $pre_white . "<img class=\"avatar\" src=\"http://www.gravatar.com/avatar.php?gravatar_id=" .
+ Digest::MD5::md5_hex(lc $email) . "&size=$size\" />" . $post_white;
+ } else {
+ return "";
+ }
+}
+
# Outputs the author name and date in long form
sub git_print_authorship {
my $co = shift;
@@ -3238,7 +3280,8 @@ sub git_print_authorship {
printf(" (%02d:%02d %s)",
$ad{'hour_local'}, $ad{'minute_local'}, $ad{'tz_local'});
}
- print "]</$tag>\n";
+ print "]" . git_get_gravatar($co->{'author_email'}, 'space_before' => 1)
+ . "</$tag>\n";
}
# Outputs the author and commiter name and date in long form
@@ -3246,9 +3289,9 @@ sub git_print_who {
my $co = shift;
my %ad = parse_date($co->{'author_epoch'}, $co->{'author_tz'});
my %cd = parse_date($co->{'committer_epoch'}, $co->{'committer_tz'});
- print "<tr><td>author</td><td>" . esc_html($co->{'author'}) . "</td></tr>\n".
- "<tr>" .
- "<td></td><td> $ad{'rfc2822'}";
+ print "<tr><td>author</td><td>" . esc_html($co->{'author'}) . "</td>".
+ "<td rowspan=\"2\">" .git_get_gravatar($co->{'author_email'}, 'size' => 'double') . "</td></tr>\n" .
+ "<tr><td></td><td> $ad{'rfc2822'}";
if ($ad{'hour_local'} < 6) {
printf(" (<span class=\"atnight\">%02d:%02d</span> %s)",
$ad{'hour_local'}, $ad{'minute_local'}, $ad{'tz_local'});
@@ -3258,7 +3301,8 @@ sub git_print_who {
}
print "</td>" .
"</tr>\n";
- print "<tr><td>committer</td><td>" . esc_html($co->{'committer'}) . "</td></tr>\n";
+ print "<tr><td>committer</td><td>" . esc_html($co->{'committer'}) . "</td>".
+ "<td rowspan=\"2\">" .git_get_gravatar($co->{'committer_email'}, 'size' => 'double') . "</td></tr>\n";
print "<tr><td></td><td> $cd{'rfc2822'}" .
sprintf(" (%02d:%02d %s)", $cd{'hour_local'}, $cd{'minute_local'}, $cd{'tz_local'}) .
"</td></tr>\n";
--
1.6.3.rc1.192.gdbfcb
next prev parent reply other threads:[~2009-06-22 22:49 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-06-22 22:49 [PATCHv4 0/2] gitweb: gravatar support Giuseppe Bilotta
2009-06-22 22:49 ` [PATCHv4 1/2] gitweb: refactor author name insertion Giuseppe Bilotta
2009-06-22 22:49 ` Giuseppe Bilotta [this message]
2009-06-24 13:44 ` [PATCHv4 2/2] gitweb: gravatar support Nanako Shiraishi
2009-06-24 20:00 ` Giuseppe Bilotta
2009-06-25 1:35 ` Jakub Narebski
2009-06-25 1:23 ` [PATCHv4 1/2] gitweb: refactor author name insertion Jakub Narebski
2009-06-24 7:20 ` [PATCHv4 0/2] gitweb: gravatar support Junio C Hamano
2009-06-24 7:45 ` Jakub Narebski
2009-06-24 8:15 ` Nanako Shiraishi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1245710999-17763-3-git-send-email-giuseppe.bilotta@gmail.com \
--to=giuseppe.bilotta@gmail.com \
--cc=git@aaroncrane.co.uk \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=jnareb@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).