diff options
author | Jakub Narebski <jnareb@gmail.com> | 2011-04-28 21:04:11 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2011-05-24 11:22:45 -0700 |
commit | 2e987f92408f5ddd20246d7d9553b57d90767d54 (patch) | |
tree | e11b90012bf8c37d562460c6b3bc9177bc00a2a9 /gitweb | |
parent | 2ae8da2552f43802476676bb86b037e9028b7a7c (diff) | |
download | git-2e987f92408f5ddd20246d7d9553b57d90767d54.tar.gz git-2e987f92408f5ddd20246d7d9553b57d90767d54.tar.xz |
gitweb: Make JavaScript ability to adjust timezones configurable
Configure JavaScript-based ability to select common timezone for git
dates via %feature mechanism, namely 'javascript-timezone' feature.
The following settings are configurable:
* default timezone (defaults to 'local' i.e. browser timezone);
this also can function as a way to disable this ability,
by setting it to false-ish value (undef or '')
* name of cookie to store user's choice of timezone
* class name to mark dates
NOTE: This is a bit of abuse of %feature system, which can store only
sequence of values, rather than dictionary (hash); usually but not
always only a single value is used.
Based-on-code-by: John 'Warthog9' Hawley <warthog9@eaglescrag.net>
Helped-by: Kevin Cernekee <cernekee@gmail.com>
Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'gitweb')
-rwxr-xr-x | gitweb/gitweb.perl | 39 |
1 files changed, 31 insertions, 8 deletions
diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl index b1e80ef87..ac335b6de 100755 --- a/gitweb/gitweb.perl +++ b/gitweb/gitweb.perl @@ -480,6 +480,18 @@ 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, @@ -3733,14 +3745,19 @@ sub git_footer_html { qq! "!. href() .qq!");\n!. qq!</script>\n!; } else { + my ($jstimezone, $tz_cookie, $datetime_class) = + gitweb_get_feature('javascript-timezone'); + print qq!<script type="text/javascript">\n!. - qq!window.onload = function () {\n!. - (gitweb_check_feature('javascript-actions') ? - qq! fixLinks();\n! : ''). - # last parameter to onloadTZSetup must be CSS class used by format_timestamp_html - qq! var tz_cookie = { name: 'gitweb_tz', expires: 14, path: '/' };\n!. # in days - qq! onloadTZSetup('local', tz_cookie, 'datetime');\n!. - qq!};\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!; } @@ -3946,7 +3963,13 @@ sub git_print_section { sub format_timestamp_html { my $date = shift; - my $strtime = '<span class="datetime">'.$date->{'rfc2822'}.'</span>'; + 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)'; if ($date->{'hour_local'} < 6) { |