diff options
author | Junio C Hamano <gitster@pobox.com> | 2009-10-26 04:40:21 +0300 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2009-10-26 04:40:21 +0300 |
commit | 24be49522f00767718e84468d46ccb22cc7734d7 (patch) | |
tree | 193772be106fc49c1b7098d2c9ba31abba07fa12 | |
parent | 9382bb31ada4a4b2277bd297cb018df27168e58f (diff) | |
parent | e133d65c3e3d7f5f869edb2d6205af68af0fe38f (diff) |
Merge branch 'sb/gitweb-link-author'
* sb/gitweb-link-author:
gitweb: linkify author/committer names with search
-rw-r--r-- | gitweb/gitweb.css | 4 | ||||
-rwxr-xr-x | gitweb/gitweb.perl | 40 |
2 files changed, 39 insertions, 5 deletions
diff --git a/gitweb/gitweb.css b/gitweb/gitweb.css index d60bfc1f64..cb3f0baf05 100644 --- a/gitweb/gitweb.css +++ b/gitweb/gitweb.css @@ -32,6 +32,10 @@ img.avatar { vertical-align: middle; } +a.list img.avatar { + border-style: none; +} + div.page_header { height: 25px; padding: 8px; diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl index c9e2af67ca..e4cbfc35a7 100755 --- a/gitweb/gitweb.perl +++ b/gitweb/gitweb.perl @@ -1607,6 +1607,29 @@ sub git_get_avatar { } } +sub format_search_author { + my ($author, $searchtype, $displaytext) = @_; + my $have_search = gitweb_check_feature('search'); + + if ($have_search) { + my $performed = ""; + if ($searchtype eq 'author') { + $performed = "authored"; + } elsif ($searchtype eq 'committer') { + $performed = "committed"; + } + + return $cgi->a({-href => href(action=>"search", hash=>$hash, + searchtext=>$author, + searchtype=>$searchtype), class=>"list", + title=>"Search for commits $performed by $author"}, + $displaytext); + + } else { + return $displaytext; + } +} + # format the author name of the given commit with the given tag # the author name is chopped and escaped according to the other # optional parameters (see chop_str). @@ -1615,8 +1638,10 @@ sub format_author_html { my $co = shift; my $author = chop_and_escape_str($co->{'author_name'}, @_); return "<$tag class=\"author\">" . - git_get_avatar($co->{'author_email'}, -pad_after => 1) . - $author . "</$tag>"; + format_search_author($co->{'author_name'}, "author", + git_get_avatar($co->{'author_email'}, -pad_after => 1) . + $author) . + "</$tag>"; } # format git diff header line, i.e. "diff --(git|combined|cc) ..." @@ -3400,10 +3425,11 @@ sub git_print_authorship { my $co = shift; my %opts = @_; my $tag = $opts{-tag} || 'div'; + my $author = $co->{'author_name'}; my %ad = parse_date($co->{'author_epoch'}, $co->{'author_tz'}); print "<$tag class=\"author_date\">" . - esc_html($co->{'author_name'}) . + format_search_author($author, "author", esc_html($author)) . " [$ad{'rfc2822'}"; print_local_time(%ad) if ($opts{-localtime}); print "]" . git_get_avatar($co->{'author_email'}, -pad_before => 1) @@ -3422,8 +3448,12 @@ sub git_print_authorship_rows { @people = ('author', 'committer') unless @people; foreach my $who (@people) { my %wd = parse_date($co->{"${who}_epoch"}, $co->{"${who}_tz"}); - print "<tr><td>$who</td><td>" . esc_html($co->{$who}) . "</td>" . - "<td rowspan=\"2\">" . + print "<tr><td>$who</td><td>" . + format_search_author($co->{"${who}_name"}, $who, + esc_html($co->{"${who}_name"})) . " " . + format_search_author($co->{"${who}_email"}, $who, + esc_html("<" . $co->{"${who}_email"} . ">")) . + "</td><td rowspan=\"2\">" . git_get_avatar($co->{"${who}_email"}, -size => 'double') . "</td></tr>\n" . "<tr>" . |