From: Jakub Narebski <jnareb@gmail.com>
To: Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
Cc: git@vger.kernel.org, Junio C Hamano <gitster@pobox.com>,
Aaron Crane <git@aaroncrane.co.uk>,
Nanako Shiraishi <nanako3@lavabit.com>
Subject: Re: [PATCHv4 2/2] gitweb: gravatar support
Date: Thu, 25 Jun 2009 03:35:27 +0200 [thread overview]
Message-ID: <200906250335.28019.jnareb@gmail.com> (raw)
In-Reply-To: <1245710999-17763-3-git-send-email-giuseppe.bilotta@gmail.com>
On Tue, 23 June 2009, Giuseppe Bilotta wrote:
> Introduce gravatar support by adding the appropriate img tag next to
> author and committer in commit(diff), history, shortlog and log view.
That reminds me that I have refactoring all log-like views in my TODO
file for gitweb for quite long time.
>
> 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.
Good description.
>
> 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;
> +}
> +
Nitpick: "vertical-align: middle;" (with space separating key from
value).
> 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
> +) ;
Good idea, good description. I wonder if it would be worth adding
to gitweb_conf.perl description in gitweb/README and gitweb/INSTALL...
Nitpick: ");"
> +
> # 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]},
> );
Good.
>
> 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; });
> +
I think this is correct.
> # 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";
> }
Line too long, please break it.
>
> # 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'} ? " " : "");
This name of parameter is a bit too low level for my taste. It doesn't
matter whether we add ' ' nonbreakable space before or after img,
but whethere gravatar image has _padding_ on the left/on the right hand
side of gravatar image. So 'pad_left' and 'pad_right', or 'pad_before'
and 'pad_after' rather than 'space_before' and 'space_after'.
But this is a matter of taste...
> + my $size = $avatar_size{$params{'size'}} || $avatar_size{'default'};
Nice trick.
> + 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";
> }
>
Good.
> # 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" .
. git_get_gravatar($co->{'author_email'}, 'size' => 'double') .
> + "<tr><td></td><td> $ad{'rfc2822'}";
If you put <tr> on separate line, as was before, it would be more
obvious in this diff that you are only adding single line.
> 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";
Sidenote: you add here additional column. Which is present only in
fragment of this table. Doesn't it screw layout of the rest of headers?
> --
> 1.6.3.rc1.192.gdbfcb
>
>
--
Jakub Narebski
Poland
next prev parent reply other threads:[~2009-06-25 1:35 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 ` [PATCHv4 2/2] gitweb: gravatar support Giuseppe Bilotta
2009-06-24 13:44 ` Nanako Shiraishi
2009-06-24 20:00 ` Giuseppe Bilotta
2009-06-25 1:35 ` Jakub Narebski [this message]
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=200906250335.28019.jnareb@gmail.com \
--to=jnareb@gmail.com \
--cc=git@aaroncrane.co.uk \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=giuseppe.bilotta@gmail.com \
--cc=nanako3@lavabit.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).