X-Git-Url: https://git.ladys.computer/Gitweb/blobdiff_plain/e301db1d49799c3f6cce05ac75438cd76254de83cb4675c7b45e9019abcb6306..11ba4e4ec317649b2f1712b7f4337d7b3405c1dfe3e4c97212627a2271e29e36:/gitweb.perl
diff --git a/gitweb.perl b/gitweb.perl
index ddf8ad2..5e69a16 100755
--- a/gitweb.perl
+++ b/gitweb.perl
@@ -492,6 +492,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,
@@ -632,18 +644,30 @@ sub filter_snapshot_fmts {
# if it is true then gitweb config would be run for each request.
our $per_request_config = 1;
+# read and parse gitweb config file given by its parameter.
+# returns true on success, false on recoverable error, allowing
+# to chain this subroutine, using first file that exists.
+# dies on errors during parsing config file, as it is unrecoverable.
+sub read_config_file {
+ my $filename = shift;
+ return unless defined $filename;
+ # die if there are errors parsing config file
+ if (-e $filename) {
+ do $filename;
+ die $@ if $@;
+ return 1;
+ }
+ return;
+}
+
our ($GITWEB_CONFIG, $GITWEB_CONFIG_SYSTEM);
sub evaluate_gitweb_config {
our $GITWEB_CONFIG = $ENV{'GITWEB_CONFIG'} || "++GITWEB_CONFIG++";
our $GITWEB_CONFIG_SYSTEM = $ENV{'GITWEB_CONFIG_SYSTEM'} || "++GITWEB_CONFIG_SYSTEM++";
- # die if there are errors parsing config file
- if (-e $GITWEB_CONFIG) {
- do $GITWEB_CONFIG;
- die $@ if $@;
- } elsif (-e $GITWEB_CONFIG_SYSTEM) {
- do $GITWEB_CONFIG_SYSTEM;
- die $@ if $@;
- }
+
+ # use first config file that exists
+ read_config_file($GITWEB_CONFIG) or
+ read_config_file($GITWEB_CONFIG_SYSTEM);
}
# Get loadavg of system, to compare against $maxload.
@@ -3887,13 +3911,19 @@ sub git_footer_html {
qq! "!. href() .qq!");\n!.
qq!\n!;
} else {
+ my ($jstimezone, $tz_cookie, $datetime_class) =
+ gitweb_get_feature('javascript-timezone');
+
print qq!\n!;
}
@@ -4099,7 +4129,13 @@ sub git_print_section {
sub format_timestamp_html {
my $date = shift;
- my $strtime = ''.$date->{'rfc2822'}.'';
+ 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)';
if ($date->{'hour_local'} < 6) {