зеркало из https://github.com/mozilla/gecko-dev.git
Bug 304417: Template precompilation is clumsy when it comes to additional language directories.
Patch by Jochen Wiedmann <jochen.wiedmann@gmail.com>, r=wurblzap, a=myk
This commit is contained in:
Родитель
fb13021570
Коммит
9f2bd195a8
|
@ -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...
|
||||
|
|
|
@ -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,14 +1246,27 @@ unless ($switch{'no_templates'}) {
|
|||
|
||||
# Don't hang on templates which use the CGI library
|
||||
eval("use CGI qw(-no_debug)");
|
||||
$::template = Bugzilla::Template->create();
|
||||
|
||||
foreach $::templatepath (@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);
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
###########################################################################
|
||||
# Set proper rights
|
||||
|
|
Загрузка…
Ссылка в новой задаче