From ce67e5637a56f4020c47b0ef4663eb71c69f008a Mon Sep 17 00:00:00 2001 From: "terry%mozilla.org" Date: Mon, 8 May 2000 22:00:38 +0000 Subject: [PATCH] Add a new param, musthavemilestoneonaccept, which requires users to set the target milestone when accepting a bug. --- webtools/bugzilla/defparams.pl | 5 +++++ webtools/bugzilla/process_bug.cgi | 27 +++++++++++++++++++++++++-- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/webtools/bugzilla/defparams.pl b/webtools/bugzilla/defparams.pl index 41a40faf01cf..f3ee43a6c1f8 100644 --- a/webtools/bugzilla/defparams.pl +++ b/webtools/bugzilla/defparams.pl @@ -427,6 +427,11 @@ DefParam("curmilestone", 1, \&check_numeric); +DefParam("musthavemilestoneonaccept", + "If you are using Target Milestone, do you want to require that the milestone be set in order for a user to ACCEPT a bug?", + "b", + 0); + DefParam("useqacontact", "Do you wish to use the QA Contact field?", "b", diff --git a/webtools/bugzilla/process_bug.cgi b/webtools/bugzilla/process_bug.cgi index 22dff72e9141..8d88ef85ce2c 100755 --- a/webtools/bugzilla/process_bug.cgi +++ b/webtools/bugzilla/process_bug.cgi @@ -45,6 +45,8 @@ use vars %::versions, my $whoid = confirm_login(); +my $requiremilestone = 0; + print "Content-type: text/html\n\n"; PutHeader ("Bug processed"); @@ -404,6 +406,11 @@ SWITCH: for ($::FORM{'knob'}) { /^accept$/ && CheckonComment( "accept" ) && do { DoConfirm(); ChangeStatus('ASSIGNED'); + if (Param("musthavemilestoneonaccept")) { + if (Param("usetargetmilestone")) { + $requiremilestone = 1; + } + } last SWITCH; }; /^clearresolution$/ && CheckonComment( "clearresolution" ) && do { @@ -611,16 +618,32 @@ foreach my $id (@idlist) { SendSQL("LOCK TABLES bugs $write, bugs_activity $write, cc $write, " . "profiles $write, dependencies $write, votes $write, " . "keywords $write, longdescs $write, fielddefs $write, " . - "keyworddefs READ, groups READ, attachments READ"); + "keyworddefs READ, groups READ, attachments READ, products READ"); my @oldvalues = SnapShotBug($id); + my %oldhash; my $i = 0; foreach my $col (@::log_columns) { + $oldhash{$col} = $oldvalues[$i]; if (exists $::FORM{$col}) { CheckCanChangeField($col, $id, $oldvalues[$i], $::FORM{$col}); } $i++; } - + if ($requiremilestone) { + my $value = $::FORM{'target_milestone'}; + if (!defined $value || $value eq $::dontchange) { + $value = $oldhash{'target_milestone'}; + } + SendSQL("SELECT defaultmilestone FROM products WHERE product = " . + SqlQuote($oldhash{'product'})); + if ($value eq FetchOneColumn()) { + SendSQL("UNLOCK TABLES"); + PuntTryAgain("You must determine a target milestone for bug $id " . + "if you are going to accept it. (Part of " . + "accepting a bug is giving an estimate of when it " . + "will be fixed.)"); + } + } if (defined $::FORM{'delta_ts'} && $::FORM{'delta_ts'} ne $delta_ts) { print "

Mid-air collision detected!