diff options
-rw-r--r-- | Bugzilla/Config.pm | 22 | ||||
-rw-r--r-- | Bugzilla/Template.pm | 47 |
2 files changed, 54 insertions, 15 deletions
diff --git a/Bugzilla/Config.pm b/Bugzilla/Config.pm index c124d62bd..5ebc74e52 100644 --- a/Bugzilla/Config.pm +++ b/Bugzilla/Config.pm @@ -50,11 +50,23 @@ use base qw(Exporter); # graphs (since the path will be wrong in the HTML). This will be fixed at # some point. +# constant paths our $libpath = '.'; -our $localconfig = "$libpath/localconfig"; -our $datadir = "$libpath/data"; -our $attachdir = "$datadir/attachments"; our $templatedir = "$libpath/template"; + +# variable paths +our $project; +our $localconfig; +our $datadir; +if ($ENV{'PROJECT'} && $ENV{'PROJECT'} =~ /^(\w+)$/) { + $project = $1; + $localconfig = "$libpath/localconfig.$project"; + $datadir = "$libpath/data/$project"; +} else { + $localconfig = "$libpath/localconfig"; + $datadir = "$libpath/data"; +} +our $attachdir = "$datadir/attachments"; our $webdotdir = "$datadir/webdot"; # Module stuff @@ -71,8 +83,8 @@ our $webdotdir = "$datadir/webdot"; ( admin => [qw(GetParamList UpdateParams SetParam WriteParams)], db => [qw($db_driver $db_host $db_port $db_name $db_user $db_pass $db_sock)], - locations => [qw($libpath $localconfig $attachdir - $datadir $templatedir $webdotdir)], + locations => [qw($libpath $localconfig $attachdir $datadir $templatedir + $webdotdir $project)], ); Exporter::export_ok_tags('admin', 'db', 'locations'); diff --git a/Bugzilla/Template.pm b/Bugzilla/Template.pm index 92201507f..a4b8084d0 100644 --- a/Bugzilla/Template.pm +++ b/Bugzilla/Template.pm @@ -34,7 +34,7 @@ package Bugzilla::Template; use strict; use Bugzilla::Constants; -use Bugzilla::Config qw(:DEFAULT $templatedir $datadir); +use Bugzilla::Config qw(:DEFAULT $templatedir $datadir $project); use Bugzilla::Util; use Bugzilla::User; use Bugzilla::Error; @@ -110,10 +110,21 @@ sub getTemplateIncludePath { } my $languages = trim(Param('languages')); if (not ($languages =~ /,/)) { - return $template_include_path = - ["$templatedir/$languages/custom", - "$templatedir/$languages/extension", - "$templatedir/$languages/default"]; + if ($project) { + $template_include_path = [ + "$templatedir/$languages/$project", + "$templatedir/$languages/custom", + "$templatedir/$languages/extension", + "$templatedir/$languages/default" + ]; + } else { + $template_include_path = [ + "$templatedir/$languages/custom", + "$templatedir/$languages/extension", + "$templatedir/$languages/default" + ]; + } + return $template_include_path; } my @languages = sortAcceptLanguage($languages); my @accept_language = sortAcceptLanguage($ENV{'HTTP_ACCEPT_LANGUAGE'} || "" ); @@ -129,11 +140,27 @@ sub getTemplateIncludePath { } } push(@usedlanguages, Param('defaultlanguage')); - return $template_include_path = - [map(("$templatedir/$_/custom", - "$templatedir/$_/extension", - "$templatedir/$_/default"), - @usedlanguages)]; + if ($project) { + $template_include_path = [ + map(( + "$templatedir/$_/$project", + "$templatedir/$_/custom", + "$templatedir/$_/extension", + "$templatedir/$_/default" + ), @usedlanguages + ) + ]; + } else { + $template_include_path = [ + map(( + "$templatedir/$_/custom", + "$templatedir/$_/extension", + "$templatedir/$_/default" + ), @usedlanguages + ) + ]; + } + return $template_include_path; } sub put_header { |