Bug 282686: Multiple projects sharing the same Bugzilla codebase (different datastores) - Patch by guillomovitch@zarb.org r=wurblzap a=justdave

This commit is contained in:
lpsolit%gmail.com 2005-09-15 22:16:53 +00:00
parent 4d0de4219f
commit 56c732047e
2 changed files with 54 additions and 15 deletions

View File

@ -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');

View File

@ -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 {