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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.