]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 573172: Prepare set_all for being used in a context other than
authorMax Kanat-Alexander <mkanat@bugzilla.org>
Wed, 23 Jun 2010 21:07:13 +0000 (14:07 -0700)
committerMax Kanat-Alexander <mkanat@bugzilla.org>
Wed, 23 Jun 2010 21:07:13 +0000 (14:07 -0700)
process_bug.cgi
r=dkl, a=mkanat

Bugzilla/Bug.pm
template/en/default/global/user-error.html.tmpl

index 187b6a1dc49585b46400fa770563200e0688f936..614d83a642a1b6e3636072e4b6faea27260e223c 100644 (file)
@@ -2073,6 +2073,15 @@ sub set_all {
     my $self = shift;
     my ($params) = @_;
 
+    # You cannot mark bugs as duplicate when changing several bugs at once
+    # (because currently there is no way to check for duplicate loops in that
+    # situation). You also cannot set the alias of several bugs at once.
+    if ($params->{other_bugs} and scalar @{ $params->{other_bugs} } > 1) {
+        ThrowUserError('dupe_not_allowed') if exists $params->{dup_id};
+        ThrowUserError('multiple_alias_not_allowed') 
+            if defined $params->{alias};
+    }
+
     # For security purposes, and because lots of other checks depend on it,
     # we set the product first before anything else.
     my $product_changed; # Used only for strict_isolation checks.
@@ -2162,15 +2171,6 @@ sub set_all {
     # do that here, because if they *did* change the assignee, qa, or CC,
     # then we don't want to check the original ones, only the new ones. 
     $self->_check_strict_isolation() if $product_changed;
-
-    # You cannot mark bugs as duplicates when changing several bugs at once
-    # (because currently there is no way to check for duplicate loops in that
-    # situation).
-    if (exists $params->{'dup_id'} and $params->{other_bugs} 
-        and scalar @{ $params->{other_bugs} } > 1) 
-    {
-        ThrowUserError('dupe_not_allowed');
-    }
 }
 
 # Helper for set_all that helps with fields that have an "add/remove"
@@ -2606,6 +2606,13 @@ sub add_comment {
         return;
     }
 
+    # If the user has explicitly set remaining_time, this will be overridden
+    # later in set_all. But if they haven't, this keeps remaining_time
+    # up-to-date.
+    if ($params->{work_time}) {
+        $self->set_remaining_time($self->remaining_time - $params->{work_time});
+    }
+
     # So we really want to comment. Make sure we are allowed to do so.
     my $privs;
     $self->check_can_change_field('longdesc', 0, 1, \$privs)
index 0d053cb745fb6826a98c3aa331c7045067f98bc0..373a9dc312e71ce6ded9ffee3fb42377d798cf23 100644 (file)
       to add a version to this product.
     [% END %]
 
+  [% ELSIF error == "multiple_alias_not_allowed" %]
+    You cannot set aliases when modifying multiple [% terms.bugs %]
+    at once.
+
   [% ELSIF error == "need_quip" %]
     [% title = "Quip Required" %]
     [% docslinks = {'quips.html' => 'About quips'} %]