summaryrefslogtreecommitdiffstats
path: root/config.cgi
diff options
context:
space:
mode:
Diffstat (limited to 'config.cgi')
-rwxr-xr-xconfig.cgi18
1 files changed, 16 insertions, 2 deletions
diff --git a/config.cgi b/config.cgi
index 2ebcea181..c320ae515 100755
--- a/config.cgi
+++ b/config.cgi
@@ -38,6 +38,7 @@ use Bugzilla::Bug;
use Bugzilla::Field;
my $user = Bugzilla->login(LOGIN_OPTIONAL);
+my $cgi = Bugzilla->cgi;
# If the 'requirelogin' parameter is on and the user is not
# authenticated, return empty fields.
@@ -56,7 +57,20 @@ $vars->{'resolution'} = get_legal_field_values('resolution');
$vars->{'status'} = get_legal_field_values('bug_status');
# Include a list of product objects.
-$vars->{'products'} = $user->get_selectable_products;
+if ($cgi->param('product')) {
+ my @products = $cgi->param('product');
+ foreach my $product_name (@products) {
+ # We don't use check_product because config.cgi outputs mostly
+ # in XML and JS and we don't want to display an HTML error
+ # instead of that.
+ my $product = new Bugzilla::Product({ name => $product_name });
+ if ($product && $user->can_see_product($product->name)) {
+ push (@{$vars->{'products'}}, $product);
+ }
+ }
+} else {
+ $vars->{'products'} = $user->get_selectable_products;
+}
# Create separate lists of open versus resolved statuses. This should really
# be made part of the configuration.
@@ -78,7 +92,7 @@ display_data($vars);
sub display_data {
my $vars = shift;
- my $cgi = Bugzilla->cgi;
+ my $cgi = Bugzilla->cgi;
my $template = Bugzilla->template;
# Determine how the user would like to receive the output;