]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 238819: enter_bug.cgi should offer ASSIGNED as a possible initial state - Patch...
authorlpsolit%gmail.com <>
Mon, 17 Jul 2006 05:53:08 +0000 (05:53 +0000)
committerlpsolit%gmail.com <>
Mon, 17 Jul 2006 05:53:08 +0000 (05:53 +0000)
enter_bug.cgi
post_bug.cgi

index 1315ca927dce116c8d67ff22f10520f8e66af261..512650a7eb5e1d8a8dbafc17739d1739d50cf869 100755 (executable)
@@ -438,24 +438,27 @@ if ( Bugzilla->params->{'usetargetmilestone'} ) {
     }
 }
 
+# Construct the list of allowable statuses.
+#
+# * If the product requires votes to confirm:
+#   users with privs   : NEW + ASSI + UNCO
+#   users with no privs: UNCO
+#
+# * If the product doesn't require votes to confirm:
+#   users with privs   : NEW + ASSI
+#   users with no privs: NEW (as these users cannot reassign
+#                             bugs to them, it doesn't make sense
+#                             to let them mark bugs as ASSIGNED)
 
-# List of status values for drop-down.
 my @status;
-
-# Construct the list of allowable values.  There are three cases:
-# 
-#  case                                 values
-#  product does not have confirmation   NEW
-#  confirmation, user cannot confirm    UNCONFIRMED
-#  confirmation, user can confirm       NEW, UNCONFIRMED.
-
+if ($user->in_group('editbugs') || $user->in_group('canconfirm')) {
+    @status = ('NEW', 'ASSIGNED');
+}
+elsif (!$product->votes_to_confirm) {
+    @status = ('NEW');
+}
 if ($product->votes_to_confirm) {
-    if (UserInGroup("editbugs") || UserInGroup("canconfirm")) {
-        push(@status, "NEW");
-    }
     push(@status, 'UNCONFIRMED');
-} else {
-    push(@status, "NEW");
 }
 
 $vars->{'bug_status'} = \@status; 
index 2fa6576f2c14e22cb9e280ce52c144d3c9c9d5b6..b3f668e3ff9b45546af0be4f12e8b1018b06401c 100755 (executable)
@@ -202,17 +202,24 @@ if (Bugzilla->params->{"useqacontact"}) {
     }
 }
 
+# Check the bug status.
+# This order is important, see below.
+my @valid_statuses = ('UNCONFIRMED', 'NEW', 'ASSIGNED');
+
 my $bug_status = 'UNCONFIRMED';
-if ($product->votes_to_confirm) {
+if ($user->in_group('editbugs') || $user->in_group('canconfirm')) {
     # Default to NEW if the user with privs hasn't selected another status.
-    if (UserInGroup('editbugs') || UserInGroup('canconfirm')) {
-        $bug_status = scalar($cgi->param('bug_status')) || 'NEW';
-    }
-} else {
+    $bug_status = scalar($cgi->param('bug_status')) || 'NEW';
+}
+elsif (!$product->votes_to_confirm) {
     $bug_status = 'NEW';
 }
 $cgi->param(-name => 'bug_status', -value => $bug_status);
 
+# Reject 'UNCONFIRMED' as a valid status if the product
+# doesn't require votes to confirm its bugs.
+shift @valid_statuses if !$product->votes_to_confirm;
+
 if (!defined $cgi->param('target_milestone')) {
     $cgi->param(-name => 'target_milestone', -value => $product->default_milestone);
 }
@@ -226,7 +233,7 @@ check_field('rep_platform', scalar $cgi->param('rep_platform'));
 check_field('bug_severity', scalar $cgi->param('bug_severity'));
 check_field('priority',     scalar $cgi->param('priority'));
 check_field('op_sys',       scalar $cgi->param('op_sys'));
-check_field('bug_status',   scalar $cgi->param('bug_status'), ['UNCONFIRMED', 'NEW']);
+check_field('bug_status',   scalar $cgi->param('bug_status'), \@valid_statuses);
 check_field('version',      scalar $cgi->param('version'),
             [map($_->name, @{$product->versions})]);
 check_field('target_milestone', scalar $cgi->param('target_milestone'),