[PATCHv3 2/2] gitweb: refactor author+gravatar insertion
---
gitweb/gitweb.css | 5 +++-
gitweb/gitweb.perl | 69 ++++++++++++++++++++++++++++-----------------------
2 files changed, 42 insertions(+), 32 deletions(-)
diff --git a/gitweb/gitweb.css b/gitweb/gitweb.css
index eaf74c3..ddf982b 100644
--- a/gitweb/gitweb.css
+++ b/gitweb/gitweb.css
@@ -136,11 +136,14 @@ div.list_head {
font-style: italic;
}
+.author_date, .author {
+ font-style: italic;
+}
+
div.author_date {
padding: 8px;
border: solid #d9d8d1;
border-width: 0px 0px 1px 0px;
- font-style: italic;
}
a.list {
diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
index f5654d7..cb4ecc3 100755
--- a/gitweb/gitweb.perl
+++ b/gitweb/gitweb.perl
@@ -1496,6 +1496,31 @@ sub format_subject_html {
}
}
+# 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 "";
+ }
+}
+
+# format, perhaps shortened and preceded by the gravatar, the author name
+sub format_author_html {
+ my $tag = shift;
+ my $co = shift;
+ my $author = chop_and_escape_str($co->{'author_name'}, @_);
+ 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) ..."
sub format_git_diff_header_line {
my $line = shift;
@@ -3241,28 +3266,14 @@ 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, followed by the gravatar
sub git_print_authorship {
my $co = shift;
+ my $tag = shift || 'div';
my %ad = parse_date($co->{'author_epoch'}, $co->{'author_tz'});
- print "<div class=\"author_date\">" .
+ print "<$tag class=\"author_date\">" .
esc_html($co->{'author_name'}) .
- git_get_gravatar($co->{'author_email'}, 'space_before' => 1) .
" [$ad{'rfc2822'}";
if ($ad{'hour_local'} < 6) {
printf(" (<span class=\"atnight\">%02d:%02d</span> %s)",
@@ -3271,7 +3282,9 @@ sub git_print_authorship {
printf(" (%02d:%02d %s)",
$ad{'hour_local'}, $ad{'minute_local'}, $ad{'tz_local'});
}
- print "]</div>\n";
+ print "]" .
+ git_get_gravatar($co->{'author_email'}, 'space_before' => 1) .
+ "</$tag>\n";
}
sub git_print_page_path {
@@ -4185,11 +4198,9 @@ sub git_shortlog_body {
print "<tr class=\"light\">\n";
}
$alternate ^= 1;
- my $author = chop_and_escape_str($co{'author_name'}, 10);
# git_summary() used print "<td><i>$co{'age_string'}</i></td>\n" .
print "<td title=\"$co{'age_string_age'}\"><i>$co{'age_string_date'}</i></td>\n" .
- "<td>" . git_get_gravatar($co{'author_email'}, 'space_after' => 1) . "<i>" . $author . "</i></td>\n" .
- "<td>";
+ format_author_html('td', \%co, 10) . "<td>";
print format_subject_html($co{'title'}, $co{'title_short'},
href(action=>"commit", hash=>$commit), $ref);
print "</td>\n" .
@@ -4236,11 +4247,9 @@ sub git_history_body {
print "<tr class=\"light\">\n";
}
$alternate ^= 1;
- # shortlog uses chop_str($co{'author_name'}, 10)
- my $author = chop_and_escape_str($co{'author_name'}, 15, 3);
print "<td title=\"$co{'age_string_age'}\"><i>$co{'age_string_date'}</i></td>\n" .
- "<td>" . git_get_gravatar($co{'author_email'}, 'space_after' => 1) . "<i>" . $author . "</i></td>\n" .
- "<td>";
+ # shortlog uses format_author_html('td', \%co, 10)
+ format_author_html('td', \%co, 15, 3) . "<td>";
# originally git_history used chop_str($co{'title'}, 50)
print format_subject_html($co{'title'}, $co{'title_short'},
href(action=>"commit", hash=>$commit), $ref);
@@ -4393,9 +4402,8 @@ sub git_search_grep_body {
print "<tr class=\"light\">\n";
}
$alternate ^= 1;
- my $author = chop_and_escape_str($co{'author_name'}, 15, 5);
print "<td title=\"$co{'age_string_age'}\"><i>$co{'age_string_date'}</i></td>\n" .
- "<td>" . git_get_gravatar($co{'author_email'}, 'space_after' => 1) . "<i>" . $author . "</i></td>\n" .
+ format_author_html('td', \%co, 15, 5) .
"<td>" .
$cgi->a({-href => href(action=>"commit", hash=>$co{'id'}),
-class => "list subject"},
@@ -5137,10 +5145,9 @@ sub git_log {
" | " .
$cgi->a({-href => href(action=>"tree", hash=>$commit, hash_base=>$commit)}, "tree") .
"<br/>\n" .
- "</div>\n" .
- "<i>" . esc_html($co{'author_name'}) . " [$ad{'rfc2822'}]</i> " .
- git_get_gravatar($co{'author_email'}) .
- "<br/>\n</div>\n";
+ "</div>\n";
+ git_print_authorship(\%co);
+ print "<br/>\n</div>\n";
print "<div class=\"log_body\">\n";
git_print_log($co{'comment'}, -final_empty_line=> 1);
--
1.6.3.rc1.192.gdbfcb