We make the content_type template pass through the &interpolate routine like other...
[matthijs/upstream/blosxom.git] / blosxom.cgi
index 4bdfc4aa30a829d883cc5969713d4163f95ef4e9..e5f80ac7d06d9fa6bb74d3916832bd39fcc099a4 100755 (executable)
@@ -77,6 +77,7 @@ use FileHandle;
 use File::Find;
 use File::stat;
 use Time::localtime;
+use Time::Local;
 use CGI qw/:standard :netscape/;
 
 $version = "2.0.2";
@@ -334,8 +335,6 @@ else {
   my $content_type = (&$template($path_info,'content_type',$flavour));
   $content_type =~ s!\n.*!!s;
 
-  $header = {-type=>$content_type};
-
   print generate('dynamic', $path_info, "$path_info_yr/$path_info_mo_num/$path_info_da", $flavour, $content_type);
 }
 
@@ -374,6 +373,10 @@ sub generate {
     # override the default built-in interpolate subroutine
     my $tmp; foreach my $plugin ( @plugins ) { $plugins{$plugin} > 0 and $plugin->can('interpolate') and defined($tmp = $plugin->interpolate()) and $interpolate = $tmp and last; }
         
+    # Content_type
+    $content_type=&$interpolate($content_type);
+    $header = {-type=>$content_type};
+
     # Head
     my $head = (&$template($currentdir,'head',$flavour));
   
@@ -419,8 +422,8 @@ sub generate {
       $path &&= "/$path";
 
       # Date fiddling for by-{year,month,day} archive views
-      use vars qw/ $dw $mo $mo_num $da $ti $yr $hr $min $hr12 $ampm /;
-      ($dw,$mo,$mo_num,$da,$ti,$yr) = nice_date($files{"$path_file"});
+      use vars qw/ $dw $mo $mo_num $da $ti $yr $hr $min $hr12 $ampm $utc_offset/;
+      ($dw,$mo,$mo_num,$da,$ti,$yr,$utc_offset) = nice_date($files{"$path_file"});
       ($hr,$min) = split /:/, $ti;
       ($hr12, $ampm) = $hr >= 12 ? ($hr - 12,'pm') : ($hr, 'am'); 
       $hr12 =~ s/^0//; $hr12 == 0 and $hr12 = 12;
@@ -494,11 +497,15 @@ sub nice_date {
   my($unixtime) = @_;
   
   my $c_time = ctime($unixtime);
-  my($dw,$mo,$da,$ti,$yr) = ( $c_time =~ /(\w{3}) +(\w{3}) +(\d{1,2}) +(\d{2}:\d{2}):\d{2} +(\d{4})$/ );
+  my($dw,$mo,$da,$hr,$min,$yr) = ( $c_time =~ /(\w{3}) +(\w{3}) +(\d{1,2}) +(\d{2}):(\d{2}):\d{2} +(\d{4})$/ );
+  $ti="$hr:$min";
   $da = sprintf("%02d", $da);
   my $mo_num = $month2num{$mo};
-  
-  return ($dw,$mo,$mo_num,$da,$ti,$yr);
+
+  my $offset = timegm(00, $min, $hr, $da, $mo_num-1, $yr-1900)-$unixtime;  
+  my $utc_offset = sprintf("%+03d", int($offset / 3600)).sprintf("%02d", ($offset % 3600)/60) ;
+
+  return ($dw,$mo,$mo_num,$da,$ti,$yr,$utc_offset);
 }
 
 
@@ -564,7 +571,7 @@ error content_type text/html
 
 error head <html>
 error head <body>
-error head     <p><font color="red">Error: I'm afraid this is the first I've heard of a "$flavour" flavoured Blosxom.  Try dropping the "/+$flavour" bit from the end of the URL.</font>
+error head     <p><font color="red">Error: I'm afraid this is the first I've heard of a "$flavour" flavoured Blosxom.  Try dropping the "/+$flavour" bit from the end of the URL.</font></p>
 
 
 error story <p><b>$title</b><br />