]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 311489 Bug entry makes user choose classification even if only one is enterable
authorbugreport%peshkin.net <>
Mon, 10 Oct 2005 10:17:12 +0000 (10:17 +0000)
committerbugreport%peshkin.net <>
Mon, 10 Oct 2005 10:17:12 +0000 (10:17 +0000)
Patch bu Joel Peshkin <bugreport@peshkin.net>
r=kiko, a=justdave

enter_bug.cgi

index 66e182423808d6e51a3d8afb6cf8244f499aea5f..7c248ac72b4af7b89bc294743306a5843ecb8f14 100755 (executable)
@@ -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) {