X-Git-Url: https://git.chrismorgan.info/gitweb/blobdiff_plain/c36a795cb6b387c7bb8ddf103b71d937480c4d21..997771613b0b40fa6b973e741773e564fd241534:/gitweb.cgi
diff --git a/gitweb.cgi b/gitweb.cgi
index 515d80c..28a64ea 100755
--- a/gitweb.cgi
+++ b/gitweb.cgi
@@ -519,18 +519,6 @@ our %feature = (
'override' => 0,
'default' => [0]},
- # Enable and configure ability to change common timezone for dates
- # in gitweb output via JavaScript. Enabled by default.
- # Project specific override is not supported.
- 'javascript-timezone' => {
- 'override' => 0,
- 'default' => [
- 'local', # default timezone: 'utc', 'local', or '(-|+)HHMM' format,
- # or undef to turn off this feature
- 'gitweb_tz', # name of cookie where to store selected timezone
- 'datetime', # CSS class used to mark up dates for manipulation
- ]},
-
# Syntax highlighting support. This is based on Daniel Svensson's
# and Sham Chukoury's work in gitweb-xmms2.git.
# It requires the 'highlight' program present in $PATH,
@@ -1874,7 +1862,7 @@ sub esc_html_hl_regions {
$out .= esc_html(substr($str, $pos, $begin - $pos), %opts)
if ($begin - $pos > 0);
- $out .= $cgi->span({-class => $css_class}, $escaped);
+ $out .= "$escaped ";
$pos = $end;
}
@@ -1904,7 +1892,7 @@ sub esc_html_match_hl {
my @matches = matchpos_list($str, $regexp);
return esc_html($str) unless @matches;
- return esc_html_hl_regions($str, 'match', @matches);
+ return esc_html_hl_regions($str, undef, @matches);
}
@@ -1936,7 +1924,7 @@ sub esc_html_match_hl_chopped {
push @filtered, $m;
}
- return esc_html_hl_regions($chopped . $tail, 'match', @filtered);
+ return esc_html_hl_regions($chopped . $tail, undef, @filtered);
}
## ----------------------------------------------------------------------
@@ -3044,7 +3032,7 @@ sub git_populate_project_tagcloud {
$title =~ s/^/ /g;
$title =~ s/$/ /g;
if (defined $matched && $matched eq $ctag) {
- $title = qq($title );
+ $title = qq($title );
}
$cloud->add($title, href(project=>undef, ctag=>$ctag),
$ctags_lc{$ctag}->{count});
@@ -3054,7 +3042,7 @@ sub git_populate_project_tagcloud {
foreach my $ctag (keys %ctags_lc) {
my $title = esc_html($ctags_lc{$ctag}->{topname}, -nbsp=>1);
if (defined $matched && $matched eq $ctag) {
- $title = qq($title );
+ $title = qq($title );
}
$cloud->{$ctag}{count} = $ctags_lc{$ctag}->{count};
$cloud->{$ctag}{ctag} =
@@ -3594,12 +3582,13 @@ sub parse_commit_text {
$co{'age'} = $age;
$co{'age_string'} = age_string($age);
my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday) = gmtime($co{'committer_epoch'});
+ $co{'age_string_iso8601'} = sprintf "%4i-%02u-%02i %02u:%02u:%02uZ", 1900 + $year, $mon+1, $mday, $hour, $min, $sec;
if ($age > 60*60*24*7*2) {
$co{'age_string_date'} = sprintf "%4i-%02u-%02i", 1900 + $year, $mon+1, $mday;
- $co{'age_string_age'} = $co{'age_string'};
+ $co{'age_string_age'} = "$co{'age_string_iso8601'} ($co{'age_string'})";
} else {
$co{'age_string_date'} = $co{'age_string'};
- $co{'age_string_age'} = sprintf "%4i-%02u-%02i", 1900 + $year, $mon+1, $mday;
+ $co{'age_string_age'} = $co{'age_string_iso8601'};
}
return %co;
}
@@ -4097,11 +4086,11 @@ sub print_feed_meta {
} else {
printf(' '."\n",
- esc_attr($site_name),
+ esc_attr(to_utf8($site_name)),
esc_attr(href(project=>undef, action=>"project_index")));
printf(' '."\n",
- esc_attr($site_name),
+ esc_attr(to_utf8($site_name)),
esc_attr(href(project=>undef, action=>"opml")));
}
}
@@ -4318,20 +4307,13 @@ sub git_footer_html {
qq! "!. esc_attr(href()) .qq!");\n!.
qq!\n!;
} else {
- my ($jstimezone, $tz_cookie, $datetime_class) =
- gitweb_get_feature('javascript-timezone');
-
- if (gitweb_check_feature('javascript-actions') || ($jstimezone && $tz_cookie && $datetime_class)) {
+ if (gitweb_check_feature('javascript-actions')) {
print qq!\n!;
print qq!\n!;
}
@@ -4432,7 +4414,7 @@ sub git_print_page_nav {
print "
\n" .
(join " | ",
map { $_ eq $current ?
- $_ : $cgi->a({-href => ($arg{$_}{_href} ? $arg{$_}{_href} : href(%{$arg{$_}}))}, "$_")
+ $cgi->span({-class => "current"}, $_) : $cgi->a({-href => ($arg{$_}{_href} ? $arg{$_}{_href} : href(%{$arg{$_}}))}, "$_")
} @navs);
print " \n$extra" if defined $extra; # pager or formats
print "
\n";
@@ -4497,7 +4479,7 @@ sub git_print_header_div {
sub format_repo_url {
my ($name, $url) = @_;
- return "$name $url \n";
+ return "$name $url \n";
}
# Group output by placing it in a DIV element and adding a header.
@@ -4540,20 +4522,8 @@ sub git_print_section {
sub format_timestamp_html {
my $date = shift;
- my $strtime = $date->{'rfc2822'};
- my (undef, undef, $datetime_class) =
- gitweb_get_feature('javascript-timezone');
- if ($datetime_class) {
- $strtime = qq!$strtime !;
- }
-
- my $localtime_format = '(%02d:%02d %s)';
- $strtime .= ' ' .
- sprintf($localtime_format,
- $date->{'hour_local'}, $date->{'minute_local'}, $date->{'tz_local'});
-
- return $strtime;
+ return qq!$date->{'rfc2822'} !;
}
# Outputs the author name and date in long form
@@ -4878,11 +4848,11 @@ sub git_difftree_body {
my ($difftree, $hash, @parents) = @_;
my ($parent) = $parents[0];
my $have_blame = gitweb_check_feature('blame');
- print "\n";
if ($#{$difftree} > 10) {
+ print "
\n";
print(($#{$difftree} + 1) . " files changed:\n");
+ print "
\n";
}
- print "
\n";
print " 1 ? "combined " : "") .
@@ -5907,13 +5877,15 @@ sub git_log_body {
$from = 0 unless defined $from;
$to = $#{$commitlist} if (!defined $to || $#{$commitlist} < $to);
+ print "\n";
for (my $i = 0; $i <= $to; $i++) {
my %co = %{$commitlist->[$i]};
next if !%co;
my $commit = $co{'id'};
my $ref = format_ref_marker($refs, $commit);
+ print "\n";
git_print_header_div('commit',
- "$co{'age_string'} " .
+ "$co{'age_string'} " .
esc_html($co{'title'}) . $ref,
$commit);
print "\n" .
@@ -5930,7 +5902,9 @@ sub git_log_body {
print "
\n";
git_print_log($co{'comment'});
print "
\n";
+ print "\n";
}
+ print "\n";
if ($extra) {
print "
\n";
print "$extra\n";
@@ -5958,7 +5932,7 @@ sub git_shortlog_body {
}
$alternate ^= 1;
# git_summary() used print "
$co{'age_string'} \n" .
- print "$co{'age_string_date'} \n" .
+ print "$co{'age_string_date'} \n" .
format_author_html('td', \%co, 10) . "";
print format_subject_html($co{'title'}, $co{'title_short'},
href(action=>"commit", hash=>$commit), $ref);
@@ -6007,7 +5981,7 @@ sub git_history_body {
print " \n";
}
$alternate ^= 1;
- print "$co{'age_string_date'} \n" .
+ print "$co{'age_string_date'} \n" .
# shortlog: format_author_html('td', \%co, 10)
format_author_html('td', \%co, 15, 3) . "";
# originally git_history used chop_str($co{'title'}, 50)
@@ -6337,7 +6311,7 @@ sub git_search_changes {
$alternate ^= 1;
%co = parse_commit($set{'commit'});
my $author = chop_and_escape_str($co{'author_name'}, 15, 5);
- print " $co{'age_string_date'} \n" .
+ print "$co{'age_string_date'} \n" .
"$author \n" .
"" .
$cgi->a({-href => href(action=>"commit", hash=>$co{'id'}),
@@ -6349,7 +6323,7 @@ sub git_search_changes {
print $cgi->a({-href => href(action=>"blob", hash_base=>$co{'id'},
hash=>$set{'to_id'}, file_name=>$set{'to_file'}),
-class => "list"},
- "" . esc_path($set{'file'}) . " ") .
+ "" . esc_path($set{'file'}) . " ") .
" \n";
}
}
@@ -6424,9 +6398,9 @@ sub git_search_files {
$ltext = untabify($ltext);
if ($ltext =~ m/^(.*)($search_regexp)(.*)$/i) {
$ltext = esc_html($1, -nbsp=>1);
- $ltext .= '';
+ $ltext .= '';
$ltext .= esc_html($2, -nbsp=>1);
- $ltext .= ' ';
+ $ltext .= '';
$ltext .= esc_html($3, -nbsp=>1);
} else {
$ltext = esc_html($ltext, -nbsp=>1);
@@ -6471,7 +6445,7 @@ sub git_search_grep_body {
print " \n";
}
$alternate ^= 1;
- print "$co{'age_string_date'} \n" .
+ print "$co{'age_string_date'} \n" .
format_author_html('td', \%co, 15, 5) .
"" .
$cgi->a({-href => href(action=>"commit", hash=>$co{'id'}),
@@ -6491,7 +6465,7 @@ sub git_search_grep_body {
$match = esc_html($match);
$trail = esc_html($trail);
- print "$lead$match $trail ";
+ print "$lead$match $trail ";
}
}
print " \n" .
@@ -6655,51 +6629,66 @@ sub git_summary {
print "
\n";
+ print("\n");
+
# If XSS prevention is on, we don't include README.html.
# TODO: Allow a readme in some safe format.
if (!$prevent_xss && -s "$projectroot/$project/README.html") {
+ print("\n");
print "readme
\n" .
"\n";
insert_file("$projectroot/$project/README.html");
print "\n
\n"; # class="readme"
+ print(" \n");
}
# we need to request one more than 16 (0..15) to check if
# those 16 are all
my @commitlist = $head ? parse_commits($head, 17) : ();
if (@commitlist) {
+ print("\n");
git_print_header_div('shortlog');
git_shortlog_body(\@commitlist, 0, 15, $refs,
$#commitlist <= 15 ? undef :
$cgi->a({-href => href(action=>"shortlog")}, "..."));
+ print(" \n");
}
if (@taglist) {
+ print("\n");
git_print_header_div('tags');
git_tags_body(\@taglist, 0, 15,
$#taglist <= 15 ? undef :
$cgi->a({-href => href(action=>"tags")}, "..."));
+ print(" \n");
}
if (@headlist) {
+ print("\n");
git_print_header_div('heads');
git_heads_body(\@headlist, $head, 0, 15,
$#headlist <= 15 ? undef :
$cgi->a({-href => href(action=>"heads")}, "..."));
+ print(" \n");
}
if (%remotedata) {
+ print("\n");
git_print_header_div('remotes');
git_remotes_body(\%remotedata, 15, $head);
+ print(" \n");
}
if (@forklist) {
+ print("\n");
git_print_header_div('forks');
git_project_list_body(\@forklist, 'age', 0, 15,
$#forklist <= 15 ? undef :
$cgi->a({-href => href(action=>"forks")}, "..."),
'no_header');
+ print(" \n");
}
+ print(" \n");
git_footer_html();
}
@@ -8229,7 +8218,7 @@ sub git_feed {
return if ($cgi->request_method() eq 'HEAD');
# header variables
- my $title = "$site_name - $project/$action";
+ my $title = to_utf8($site_name) . " - $project/$action";
my $feed_type = 'log';
if (defined $hash) {
$title .= " - '$hash'";
@@ -8392,7 +8381,7 @@ sub git_opml {
-charset => 'utf-8',
-content_disposition => 'inline; filename="opml.xml"');
- my $title = esc_html($site_name);
+ my $title = esc_html(to_utf8($site_name));
my $filter = " within subdirectory ";
if (defined $project_filter) {
$filter .= esc_html($project_filter);