X-Git-Url: https://git.ladys.computer/Gitweb/blobdiff_plain/8467d6ae3a28e9398e8be47a8a73c37c8a67474dce4a0118dc21ea7551c4d01e..99682608e121a2efafe38b78b833bb0237fbabe368f70c2d1a9c509da3dfd14e:/gitweb.perl
diff --git a/gitweb.perl b/gitweb.perl
index 0146151..2811dea 100755
--- a/gitweb.perl
+++ b/gitweb.perl
@@ -1470,6 +1470,16 @@ sub format_subject_html {
}
}
+# 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).
+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>";
+}
+
# format git diff header line, i.e. "diff --(git|combined|cc) ..."
sub format_git_diff_header_line {
my $line = shift;
@@ -3215,21 +3225,50 @@ sub git_print_header_div {
"\n\n";
}
+sub print_local_time {
+ my %date = @_;
+ if ($date{'hour_local'} < 6) {
+ printf(" (%02d:%02d %s)",
+ $date{'hour_local'}, $date{'minute_local'}, $date{'tz_local'});
+ } else {
+ printf(" (%02d:%02d %s)",
+ $date{'hour_local'}, $date{'minute_local'}, $date{'tz_local'});
+ }
+}
+
+# Outputs the author name and date in long form
sub git_print_authorship {
my $co = shift;
+ my %opts = @_;
+ my $tag = $opts{-tag} || 'div';
my %ad = parse_date($co->{'author_epoch'}, $co->{'author_tz'});
- print "
" .
+ print "<$tag class=\"author_date\">" .
esc_html($co->{'author_name'}) .
" [$ad{'rfc2822'}";
- if ($ad{'hour_local'} < 6) {
- printf(" (%02d:%02d %s)",
- $ad{'hour_local'}, $ad{'minute_local'}, $ad{'tz_local'});
- } else {
- printf(" (%02d:%02d %s)",
- $ad{'hour_local'}, $ad{'minute_local'}, $ad{'tz_local'});
+ print_local_time(%ad) if ($opts{-localtime});
+ print "]$tag>\n";
+}
+
+# Outputs table rows containing the full author or committer information,
+# in the format expected for 'commit' view (& similia).
+# Parameters are a commit hash reference, followed by the list of people
+# to output information for. If the list is empty it defalts to both
+# author and committer.
+sub git_print_authorship_rows {
+ my $co = shift;
+ # too bad we can't use @people = @_ || ('author', 'committer')
+ my @people = @_;
+ @people = ('author', 'committer') unless @people;
+ foreach my $who (@people) {
+ my %wd = parse_date($co->{"${who}_epoch"}, $co->{"${who}_tz"});
+ print "
| $who | " . esc_html($co->{$who}) . " |
\n".
+ "" .
+ " | $wd{'rfc2822'}";
+ print_local_time(%wd);
+ print " | " .
+ "
\n";
}
- print "]\n";
}
sub git_print_page_path {
@@ -4143,11 +4182,9 @@ sub git_shortlog_body {
print "\n";
}
$alternate ^= 1;
- my $author = chop_and_escape_str($co{'author_name'}, 10);
# git_summary() used print "| $co{'age_string'} | \n" .
print "$co{'age_string_date'} | \n" .
- "" . $author . " | \n" .
- "";
+ format_author_html('td', \%co, 10) . " | ";
print format_subject_html($co{'title'}, $co{'title_short'},
href(action=>"commit", hash=>$commit), $ref);
print " | \n" .
@@ -4194,11 +4231,9 @@ sub git_history_body {
print "
\n";
}
$alternate ^= 1;
- # shortlog uses chop_str($co{'author_name'}, 10)
- my $author = chop_and_escape_str($co{'author_name'}, 15, 3);
print "| $co{'age_string_date'} | \n" .
- "" . $author . " | \n" .
- "";
+ # shortlog: format_author_html('td', \%co, 10)
+ format_author_html('td', \%co, 15, 3) . " | ";
# originally git_history used chop_str($co{'title'}, 50)
print format_subject_html($co{'title'}, $co{'title_short'},
href(action=>"commit", hash=>$commit), $ref);
@@ -4351,9 +4386,8 @@ sub git_search_grep_body {
print " |
\n";
}
$alternate ^= 1;
- my $author = chop_and_escape_str($co{'author_name'}, 15, 5);
print "| $co{'age_string_date'} | \n" .
- "" . $author . " | \n" .
+ format_author_html('td', \%co, 15, 5) .
"" .
$cgi->a({-href => href(action=>"commit", hash=>$co{'id'}),
-class => "list subject"},
@@ -5095,9 +5129,9 @@ sub git_log {
" | " .
$cgi->a({-href => href(action=>"tree", hash=>$commit, hash_base=>$commit)}, "tree") .
" \n" .
- "\n" .
- "" . esc_html($co{'author_name'}) . " [$ad{'rfc2822'}] \n" .
"\n";
+ git_print_authorship(\%co, -tag => 'span');
+ print " \n\n";
print "\n";
git_print_log($co{'comment'}, -final_empty_line=> 1);
@@ -5116,8 +5150,6 @@ sub git_commit {
$hash ||= $hash_base || "HEAD";
my %co = parse_commit($hash)
or die_error(404, "Unknown commit object");
- my %ad = parse_date($co{'author_epoch'}, $co{'author_tz'});
- my %cd = parse_date($co{'committer_epoch'}, $co{'committer_tz'});
my $parent = $co{'parent'};
my $parents = $co{'parents'}; # listref
@@ -5184,22 +5216,7 @@ sub git_commit {
}
print " \n" .
" |