From d58e360a3f222ae5bb7686114c62fcb849e352d5 Mon Sep 17 00:00:00 2001 From: "Kyle J. McKay" Date: Mon, 20 Apr 2015 13:37:40 -0700 Subject: [PATCH] gitweb: make last refresh date tweakable Use the same formatting so it can be javascript-manipulated. Signed-off-by: Kyle J. McKay --- gitweb/gitweb.perl | 38 +++++++++++++++++++++++++++++++++++--- 1 file changed, 35 insertions(+), 3 deletions(-) diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl index e1676d446a..91782723b9 100755 --- a/gitweb/gitweb.perl +++ b/gitweb/gitweb.perl @@ -3389,6 +3389,35 @@ sub parse_date { return %date; } +my %parse_date_rfc2822_month_names; +BEGIN { + %parse_date_rfc2822_month_names = ( + jan => 0, feb => 1, mar => 2, apr => 3, may => 4, jun => 5, + jul => 6, aug => 7, sep => 8, oct => 9, nov => 10, dec => 11 + ); +} + +sub parse_date_rfc2822 { + my $datestr = shift; + return () unless defined $datestr; + $datestr = $1 if $datestr =~/^[^\s]+,\s*(.*)$/; + return () unless $datestr =~ + /^\s*(\d{1,2})\s+([A-Za-z]{3})\s+(\d{4})\s+(\d{1,2}):(\d{2}):(\d{2})\s+([+-]\d{4})\s*$/; + my ($d,$b,$Y,$H,$M,$S,$z) = ($1,$2,$3,$4,$5,$6,$7); + my $m = $parse_date_rfc2822_month_names{lc($b)}; + return () unless defined($m); + my $seconds = timegm(0+$S, 0+$M, 0+$H, 0+$d, 0+$m, $Y-1900); + my $tzoffset = 60 * (60 * (0+substr($z,1,2)) + (0+substr($z,3,2))); + $tzoffset = -$tzoffset if substr($z,0,1) eq '-'; + my $tzstring; + if ($tzoffset >= 0) { + $tzstring = sprintf('+%02d%02d', int($tzoffset / 3600), int(($tzoffset % 3600) / 60)); + } else { + $tzstring = sprintf('-%02d%02d', int(-$tzoffset / 3600), int((-$tzoffset % 3600) / 60)); + } + return parse_date($seconds - $tzoffset, $tzstring); +} + sub parse_tag { my $tag_id = shift; my %tag; @@ -6521,7 +6550,7 @@ sub git_summary { my $owner = git_get_project_owner($project); my $homepage = git_get_project_config('homepage'); my $base_url = git_get_project_config('baseurl'); - my $last_refresh = git_get_project_config("lastrefresh"); + my $last_refresh = git_get_project_config('lastrefresh'); my $refs = git_get_references(); # These get_*_list functions return one more to allow us to see if @@ -6561,8 +6590,11 @@ sub git_summary { print "last change" . "".format_timestamp_html(\%cd)."\n"; } - if ($last_refresh) { - print "last refresh$last_refresh\n"; + if (defined $last_refresh) { + my %rd = parse_date_rfc2822($last_refresh); + print "last refresh" . + "".format_timestamp_html(\%rd)."\n" + if defined $rd{'rfc2822'}; } # use per project git URL list in $projectroot/$project/cloneurl -- 2.11.4.GIT