From e19acb6f79527e7a777adad17e84ed3c89fba850 Mon Sep 17 00:00:00 2001 From: "travis%sedsystems.ca" Date: Mon, 28 Feb 2005 18:55:07 +0000 Subject: [PATCH] Bug 283139 : Zero out 'hours remaining' field on certain state transitions r.t. throwing an error saying it's not zeroed out. Patch by Shane H. W. Travis r=LpSolit a=justdave --- webtools/bugzilla/process_bug.cgi | 82 ++++++++++++------- .../en/default/global/messages.html.tmpl | 7 ++ .../en/default/global/user-error.html.tmpl | 5 -- 3 files changed, 59 insertions(+), 35 deletions(-) diff --git a/webtools/bugzilla/process_bug.cgi b/webtools/bugzilla/process_bug.cgi index 3eccfa3707e..ea2180c3c20 100755 --- a/webtools/bugzilla/process_bug.cgi +++ b/webtools/bugzilla/process_bug.cgi @@ -23,6 +23,7 @@ # Dave Miller # Christopher Aillon # Myk Melez +# Jeff Hedlund # Frédéric Buclin use strict; @@ -565,6 +566,21 @@ $::query = "update bugs\nset"; $::comma = ""; umask(0); +sub _remove_remaining_time { + if (UserInGroup(Param('timetrackinggroup'))) { + if ( defined $::FORM{'remaining_time'} + && $::FORM{'remaining_time'} > 0 ) + { + $::FORM{'remaining_time'} = 0; + $vars->{'message'} = "remaining_time_zeroed"; + } + } + else { + DoComma(); + $::query .= "remaining_time = 0"; + } +} + sub DoComma { $::query .= "$::comma\n "; $::comma = ","; @@ -770,30 +786,6 @@ if (Param("usebugaliases") && defined($::FORM{'alias'})) { } } -# jeff.hedlund@matrixsi.com time tracking data processing: -if (UserInGroup(Param('timetrackinggroup'))) { - foreach my $field ("estimated_time", "remaining_time") { - if (defined $::FORM{$field}) { - my $er_time = trim($::FORM{$field}); - if ($er_time ne $::FORM{'dontchange'}) { - DoComma(); - $::query .= "$field = " . SqlQuote($er_time); - } - } - } - - if (defined $::FORM{'deadline'}) { - DoComma(); - $::query .= "deadline = "; - if ($::FORM{'deadline'}) { - Bugzilla::Util::ValidateDate($::FORM{'deadline'}, 'YYYY-MM-DD'); - $::query .= SqlQuote($::FORM{'deadline'}); - } else { - $::query .= "NULL" ; - } - } -} - # If the user is submitting changes from show_bug.cgi for a single bug, # and that bug is restricted to a group, process the checkboxes that # allowed the user to set whether or not the reporter @@ -918,12 +910,6 @@ SWITCH: for ($::FORM{'knob'}) { last SWITCH; }; /^resolve$/ && CheckonComment( "resolve" ) && do { - if (UserInGroup(Param('timetrackinggroup'))) { - if (defined $::FORM{'remaining_time'} && - $::FORM{'remaining_time'} > 0) { - ThrowUserError("resolving_remaining_time"); - } - } # Check here, because its the only place we require the resolution CheckFormField(\%::FORM, 'resolution', \@::settable_resolution); @@ -938,6 +924,11 @@ SWITCH: for ($::FORM{'knob'}) { dependency_count => scalar @dependencies }); } } + + # RESOLVED bugs should have no time remaining; + # more time can be added for the VERIFY step, if needed. + _remove_remaining_time(); + ChangeStatus('RESOLVED'); ChangeResolution($::FORM{'resolution'}); last SWITCH; @@ -992,6 +983,9 @@ SWITCH: for ($::FORM{'knob'}) { last SWITCH; }; /^close$/ && CheckonComment( "close" ) && do { + # CLOSED bugs should have no time remaining. + _remove_remaining_time(); + ChangeStatus('CLOSED'); last SWITCH; }; @@ -1008,6 +1002,10 @@ SWITCH: for ($::FORM{'knob'}) { if (!defined($::FORM{'id'}) || $duplicate == $::FORM{'id'}) { ThrowUserError("dupe_of_self_disallowed"); } + + # DUPLICATE bugs should have no time remaining. + _remove_remaining_time(); + ChangeStatus('RESOLVED'); ChangeResolution('DUPLICATE'); $::FORM{'comment'} .= "\n\n*** This bug has been marked " . @@ -1059,6 +1057,30 @@ if ($::comma eq "" } } +# Process data for Time Tracking fields +if (UserInGroup(Param('timetrackinggroup'))) { + foreach my $field ("estimated_time", "remaining_time") { + if (defined $::FORM{$field}) { + my $er_time = trim($::FORM{$field}); + if ($er_time ne $::FORM{'dontchange'}) { + DoComma(); + $::query .= "$field = " . SqlQuote($er_time); + } + } + } + + if (defined $::FORM{'deadline'}) { + DoComma(); + $::query .= "deadline = "; + if ($::FORM{'deadline'}) { + Bugzilla::Util::ValidateDate($::FORM{'deadline'}, 'YYYY-MM-DD'); + $::query .= SqlQuote($::FORM{'deadline'}); + } else { + $::query .= "NULL" ; + } + } +} + my $basequery = $::query; my $delta_ts; diff --git a/webtools/bugzilla/template/en/default/global/messages.html.tmpl b/webtools/bugzilla/template/en/default/global/messages.html.tmpl index b007af2e189..ba1476300ed 100644 --- a/webtools/bugzilla/template/en/default/global/messages.html.tmpl +++ b/webtools/bugzilla/template/en/default/global/messages.html.tmpl @@ -25,6 +25,8 @@ [% PROCESS global/variables.none.tmpl %] +[% PROCESS "global/field-descs.none.tmpl" %] + [% message_tag = message %] [% message = BLOCK %] @@ -141,6 +143,11 @@ or you don't have access to it. The following is a list of the products you can choose from. + [% ELSIF message_tag == "remaining_time_zeroed" %] + The [% field_descs.remaining_time FILTER html %] field has been + set to zero automatically as part of marking this [% terms.bug %] + as either RESOLVED or CLOSED. + [% ELSIF message_tag == "series_created" %] [% title = "Series Created" %] The series [% series.category FILTER html %] / diff --git a/webtools/bugzilla/template/en/default/global/user-error.html.tmpl b/webtools/bugzilla/template/en/default/global/user-error.html.tmpl index 47dcaca101f..e0d43b5b14c 100644 --- a/webtools/bugzilla/template/en/default/global/user-error.html.tmpl +++ b/webtools/bugzilla/template/en/default/global/user-error.html.tmpl @@ -940,11 +940,6 @@ [% title = "Summary Needed" %] You must enter a summary for this [% terms.bug %]. - [% ELSIF error == "resolving_remaining_time" %] - [% title = "Trying to Resolve with Hours Remaining" %] - You cannot resolve [% terms.abug %] with hours still remaining. Set - Remaining Hours to zero if you want to resolve the [% terms.bug %]. - [% ELSIF error == "sanity_check_access_denied" %] [% title = "Access Denied" %] You do not have the permissions necessary to run a sanity check.