]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 283139 : Zero out 'hours remaining' field on certain state transitions r.t. throw...
authortravis%sedsystems.ca <>
Tue, 1 Mar 2005 02:55:06 +0000 (02:55 +0000)
committertravis%sedsystems.ca <>
Tue, 1 Mar 2005 02:55:06 +0000 (02:55 +0000)
Patch by Shane H. W. Travis <travis@sedsystems.ca>  r=LpSolit  a=justdave

process_bug.cgi
template/en/default/global/messages.html.tmpl
template/en/default/global/user-error.html.tmpl

index 3eccfa3707e2b352569223d5dde2e9f2a66dfbc2..ea2180c3c2006fc62e694c5246f74205d653f386 100755 (executable)
@@ -23,6 +23,7 @@
 #                 Dave Miller <justdave@syndicomm.com>
 #                 Christopher Aillon <christopher@aillon.com>
 #                 Myk Melez <myk@mozilla.org>
+#                 Jeff Hedlund <jeff.hedlund@matrixsi.com>
 #                 Frédéric Buclin <LpSolit@gmail.com>
 
 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;
 
index b007af2e189fc3752359ccaeab3213f991d4cbe0..ba1476300ed9174579b7d8f58addb884e50512e3 100644 (file)
@@ -25,6 +25,8 @@
 
 [% PROCESS global/variables.none.tmpl %]
 
+[% PROCESS "global/field-descs.none.tmpl" %]
+
 [% message_tag = message %]
 
 [% message = BLOCK %]
     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 <em>[% series.category FILTER html %] /
index 47dcaca101fa80e7435096b8d12dc5de4597453f..e0d43b5b14cddde43c40fd07ca00b74c6a42013b 100644 (file)
     [% 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.