summaryrefslogtreecommitdiffstats
path: root/enter_bug.cgi
diff options
context:
space:
mode:
Diffstat (limited to 'enter_bug.cgi')
-rwxr-xr-xenter_bug.cgi34
1 files changed, 27 insertions, 7 deletions
diff --git a/enter_bug.cgi b/enter_bug.cgi
index c8ceed212..4bda17ac4 100755
--- a/enter_bug.cgi
+++ b/enter_bug.cgi
@@ -355,18 +355,38 @@ if (formvalue('version')) {
$default{'version'} = $vars->{'version'}->[$#{$vars->{'version'}}];
}
-# There must be at least one status in @status.
-my @status = "NEW";
+# List of status values for drop-down.
+my @status;
-if (UserInGroup("editbugs") || UserInGroup("canconfirm")) {
- SendSQL("SELECT votestoconfirm FROM products WHERE name = " .
- SqlQuote($product));
- push(@status, $unconfirmedstate) if (FetchOneColumn());
+# 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.
+
+SendSQL("SELECT votestoconfirm FROM products WHERE name = " .
+ SqlQuote($product));
+if (FetchOneColumn()) {
+ if (UserInGroup("editbugs") || UserInGroup("canconfirm")) {
+ push(@status, "NEW");
+ }
+ push(@status, $unconfirmedstate);
+} else {
+ push(@status, "NEW");
}
$vars->{'bug_status'} = \@status;
-$default{'bug_status'} = $status[0];
+# Get the default from a template value if it is legitimate.
+# Otherwise, set the default to the first item on the list.
+
+if (formvalue('bug_status') && (lsearch(\@status, formvalue('bug_status')) >= 0)) {
+ $default{'bug_status'} = formvalue('bug_status');
+} else {
+ $default{'bug_status'} = $status[0];
+}
+
SendSQL("SELECT DISTINCT groups.id, groups.name, groups.description, " .
"membercontrol, othercontrol " .
"FROM groups LEFT JOIN group_control_map " .