Improve time markup and tooltips
[gitweb] / gitweb.cgi
index 1de74b658fa613e490aea3ac12eb3a6c533fd8e1..ea06c90313fa9d32153d38af235cfddd095b7bc4 100755 (executable)
@@ -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,
@@ -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;
 }
@@ -4318,20 +4307,13 @@ sub git_footer_html {
                      qq!           "!. esc_attr(href()) .qq!");\n!.
                      qq!</script>\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!<script src="!.esc_url($javascript).qq!"></script>\n!;
                        print qq!<script>\n!.
                                qq!window.onload = function () {\n!;
                        if (gitweb_check_feature('javascript-actions')) {
                                print qq!       fixLinks();\n!;
                        }
-                       if ($jstimezone && $tz_cookie && $datetime_class) {
-                               print qq!       var tz_cookie = { name: '$tz_cookie', expires: 14, path: '/' };\n!. # in days
-                                       qq!     onloadTZSetup('$jstimezone', tz_cookie, '$datetime_class');\n!;
-                       }
                        print qq!};\n!.
                                qq!</script>\n!;
                }
@@ -4497,7 +4479,7 @@ sub git_print_header_div {
 
 sub format_repo_url {
        my ($name, $url) = @_;
-       return "<tr class=\"metadata_url\"><td>$name</td><td>$url</td></tr>\n";
+       return "<tr class=\"metadata_url\"><th>$name</th><td>$url</td></tr>\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!<span class="$datetime_class">$strtime</span>!;
-       }
-
-       my $localtime_format = '(%02d:%02d %s)';
-       $strtime .= ' ' .
-                   sprintf($localtime_format,
-                           $date->{'hour_local'}, $date->{'minute_local'}, $date->{'tz_local'});
 
-       return $strtime;
+       return qq!<time datetime="$date->{'iso-8601'}" title="$date->{'iso-tz'}">$date->{'rfc2822'}</time>!;
 }
 
 # Outputs the author name and date in long form
@@ -5913,7 +5883,7 @@ sub git_log_body {
                my $commit = $co{'id'};
                my $ref = format_ref_marker($refs, $commit);
                git_print_header_div('commit',
-                              "<span class=\"age\">$co{'age_string'}</span>" .
+                              "<time datetime=\"$co{'age_string_iso8601'}\" title=\"$co{'age_string_iso8601'}\" class=\"age\">$co{'age_string'}</time>" .
                               esc_html($co{'title'}) . $ref,
                               $commit);
                print "<div class=\"title_text\">\n" .
@@ -5958,7 +5928,7 @@ sub git_shortlog_body {
                }
                $alternate ^= 1;
                # 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" .
+               print "<td title=\"$co{'age_string_age'}\"><time datetime=\"$co{'age_string_iso8601'}\">$co{'age_string_date'}</time></td>\n" .
                      format_author_html('td', \%co, 10) . "<td>";
                print format_subject_html($co{'title'}, $co{'title_short'},
                                          href(action=>"commit", hash=>$commit), $ref);
@@ -6007,7 +5977,7 @@ sub git_history_body {
                        print "<tr class=\"light\">\n";
                }
                $alternate ^= 1;
-               print "<td title=\"$co{'age_string_age'}\"><i>$co{'age_string_date'}</i></td>\n" .
+               print "<td title=\"$co{'age_string_age'}\"><time datetime=\"$co{'age_string_iso8601'}\">$co{'age_string_date'}</time></td>\n" .
        # shortlog:   format_author_html('td', \%co, 10)
                      format_author_html('td', \%co, 15, 3) . "<td>";
                # originally git_history used chop_str($co{'title'}, 50)
@@ -6337,7 +6307,7 @@ sub git_search_changes {
                        $alternate ^= 1;
                        %co = parse_commit($set{'commit'});
                        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" .
+                       print "<td title=\"$co{'age_string_age'}\"><time datetime=\"$co{'age_string_iso8601'}\">$co{'age_string_date'}</time></td>\n" .
                              "<td><i>$author</i></td>\n" .
                              "<td>" .
                              $cgi->a({-href => href(action=>"commit", hash=>$co{'id'}),
@@ -6471,7 +6441,7 @@ sub git_search_grep_body {
                        print "<tr class=\"light\">\n";
                }
                $alternate ^= 1;
-               print "<td title=\"$co{'age_string_age'}\"><i>$co{'age_string_date'}</i></td>\n" .
+               print "<td title=\"$co{'age_string_age'}\"><time datetime=\"$co{'age_string_iso8601'}\">$co{'age_string_date'}</time></td>\n" .
                      format_author_html('td', \%co, 15, 5) .
                      "<td>" .
                      $cgi->a({-href => href(action=>"commit", hash=>$co{'id'}),