summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Bugzilla/Config.pm22
-rw-r--r--Bugzilla/Template.pm47
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 {