]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 304417: Template precompilation is clumsy when it comes to additional language...
authorwurblzap%gmail.com <>
Sun, 20 Nov 2005 08:00:05 +0000 (08:00 +0000)
committerwurblzap%gmail.com <>
Sun, 20 Nov 2005 08:00:05 +0000 (08:00 +0000)
Patch by Jochen Wiedmann <jochen.wiedmann@gmail.com>,
r=wurblzap, a=myk

Bugzilla/Template.pm
checksetup.pl

index 758a829af3e67db07e4406f7a034d1ec8f347e40..c47610b1c8a9d9831626d82919cea1df0ebfd590 100644 (file)
@@ -284,6 +284,13 @@ $Template::Stash::SCALAR_OPS->{ truncate } =
 ###############################################################################
 
 # Construct the Template object
+    my %opts = @_;
+    if ($opts{'clean_cache'}) {
+        # checksetup.pl will call us once for any template/lang directory.
+        # We need a possibility to reset the cache, so that no files from
+        # the previous language pollute the action.
+        $template_include_path = undef;
+    }
 
 # Note that all of the failure cases here can't use templateable errors,
 # since we won't have a template to use...
index 3f378efd78f6ee60ff97d8052c99594fdf0963c8..fda31b1cc30064dd66d90cd7831a86385300dea6 100755 (executable)
@@ -1220,27 +1220,6 @@ unless ($switch{'no_templates'}) {
        }
     }
 
-    # Search for template directories
-    # We include the default and custom directories separately to make
-    # sure we compile all templates
-    my @templatepaths = ();
-    {
-        use File::Spec; 
-        opendir(DIR, $templatedir) || die "Can't open '$templatedir': $!";
-        my @files = grep { /^[a-z-]+$/i } readdir(DIR);
-        closedir DIR;
-
-        foreach my $dir (@files) {
-            next if($dir =~ /^CVS$/i);
-            my $path = File::Spec->catdir($templatedir, $dir, 'custom');
-            push(@templatepaths, $path) if(-d $path);
-            $path = File::Spec->catdir($templatedir, $dir, 'extension');
-            push(@templatepaths, $path) if(-d $path);
-            $path = File::Spec->catdir($templatedir, $dir, 'default');
-            push(@templatepaths, $path) if(-d $path);
-        }
-    }
-
     # Precompile stuff. This speeds up initial access (so the template isn't
     # compiled multiple times simultaneously by different servers), and helps
     # to get the permissions right.
@@ -1267,12 +1246,25 @@ unless ($switch{'no_templates'}) {
         
         # Don't hang on templates which use the CGI library
         eval("use CGI qw(-no_debug)");
-        $::template = Bugzilla::Template->create();
+        
+        use File::Spec; 
+        opendir(DIR, $templatedir) || die "Can't open '$templatedir': $!";
+        my @files = grep { /^[a-z-]+$/i } readdir(DIR);
+        closedir DIR;
 
-        foreach $::templatepath (@templatepaths) {
-           # Traverse the template hierarchy. 
-           find({ wanted => \&compile, no_chdir => 1 }, $::templatepath);
-       }
+        foreach my $dir (@files) {
+            next if($dir =~ /^CVS$/i);
+            local $ENV{'HTTP_ACCEPT_LANGUAGE'} = $dir;
+            SetParam("languages", "$dir,en");
+            $::template = Bugzilla::Template->create(clean_cache => 1);
+            my @templatepaths;
+            foreach my $subdir (qw(custom extension default)) {
+                $::templatepath = File::Spec->catdir($templatedir, $dir, $subdir);
+                next unless -d $::templatepath;
+                # Traverse the template hierarchy. 
+                find({ wanted => \&compile, no_chdir => 1 }, $::templatepath);
+            }
+        }
     }
 }