From 5f81c1d6a054cb593c48dd38ecc49df9a3c8688b Mon Sep 17 00:00:00 2001 From: "bugreport%peshkin.net" <> Date: Mon, 10 Oct 2005 10:17:12 +0000 Subject: Bug 311489 Bug entry makes user choose classification even if only one is enterable Patch bu Joel Peshkin r=kiko, a=justdave --- enter_bug.cgi | 64 ++++++++++++++++++++++++++++++++++++----------------------- 1 file changed, 39 insertions(+), 25 deletions(-) diff --git a/enter_bug.cgi b/enter_bug.cgi index 66e182423..7c248ac72 100755 --- a/enter_bug.cgi +++ b/enter_bug.cgi @@ -74,32 +74,46 @@ if (!defined $product || $product eq "") { GetVersionTable(); Bugzilla->login(); - if ( ! Param('useclassification') ) { - # just pick the default one - $cgi->param(-name => 'classification', -value => (keys %::classdesc)[0]); - } - - if (!$cgi->param('classification')) { - my $classifications = Bugzilla->user->get_selectable_classifications(); - - if (scalar(@$classifications) == 0) { - ThrowUserError("no_products"); - } - elsif (scalar(@$classifications) > 1) { - $vars->{'classifications'} = $classifications; - - $vars->{'target'} = "enter_bug.cgi"; - $vars->{'format'} = $cgi->param('format'); + if ( ! Param('useclassification') ) { + # just pick the default one + $cgi->param(-name => 'classification', + -value => (keys %::classdesc)[0]); + } + + if (!$cgi->param('classification')) { + my $classifications = Bugzilla->user->get_selectable_classifications(); + foreach my $classification (@$classifications) { + my $found = 0; + foreach my $p (@enterable_products) { + if (CanEnterProduct($p) + && IsInClassification($classification->{name},$p)) { + $found = 1; + } + } + if ($found == 0) { + @$classifications = grep($_->{name} ne $classification->{name}, + @$classifications); + } + } + + if (scalar(@$classifications) == 0) { + ThrowUserError("no_products"); + } + elsif (scalar(@$classifications) > 1) { + $vars->{'classifications'} = $classifications; + + $vars->{'target'} = "enter_bug.cgi"; + $vars->{'format'} = $cgi->param('format'); - $vars->{'cloned_bug_id'} = $cgi->param('cloned_bug_id'); - - print $cgi->header(); - $template->process("global/choose-classification.html.tmpl", $vars) - || ThrowTemplateError($template->error()); - exit; - } - $cgi->param(-name => 'classification', -value => @$classifications[0]->name); - } + $vars->{'cloned_bug_id'} = $cgi->param('cloned_bug_id'); + + print $cgi->header(); + $template->process("global/choose-classification.html.tmpl", $vars) + || ThrowTemplateError($template->error()); + exit; + } + $cgi->param(-name => 'classification', -value => @$classifications[0]->name); + } my %products; foreach my $p (@enterable_products) { -- cgit v1.2.3-24-g4f1b