]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 452896: A user with no privs who reported a bug coudln't move it to another produ...
authormkanat%bugzilla.org <>
Fri, 3 Oct 2008 06:54:46 +0000 (06:54 +0000)
committermkanat%bugzilla.org <>
Fri, 3 Oct 2008 06:54:46 +0000 (06:54 +0000)
Patch By Max Kanat-Alexander <mkanat@bugzilla.org> r=LpSolit, a=mkanat

Bugzilla/Bug.pm
template/en/default/bug/process/verify-new-product.html.tmpl

index 6ca9df3baaa6fcabc61f4cd491a9a3794e2c7fa5..1189f06964c6a3d401962ec6a8c7bb0b909a1d07 100644 (file)
@@ -1792,7 +1792,15 @@ sub set_product {
         Bugzilla->error_mode(ERROR_MODE_DIE);
         my $component_ok = eval { $self->set_component($comp_name);      1; };
         my $version_ok   = eval { $self->set_version($vers_name);        1; };
-        my $milestone_ok = eval { $self->set_target_milestone($tm_name); 1; };
+        my $milestone_ok = 1;
+        # Reporters can move bugs between products but not set the TM.
+        if ($self->check_can_change_field('target_milestone', 0, 1)) {
+            $milestone_ok = eval { $self->set_target_milestone($tm_name); 1; };
+        }
+        else {
+            # Have to set this directly to bypass the validators.
+            $self->{target_milestone} = $product->default_milestone;
+        }
         # If there were any errors thrown, make sure we don't mess up any
         # other part of Bugzilla that checks $@.
         undef $@;
@@ -1840,6 +1848,7 @@ sub set_product {
         
         if (%vars) {
             $vars{product} = $product;
+            $vars{bug} = $self;
             my $template = Bugzilla->template;
             $template->process("bug/process/verify-new-product.html.tmpl",
                 \%vars) || ThrowTemplateError($template->error());
@@ -1851,7 +1860,13 @@ sub set_product {
         # just die if any of these are invalid.
         $self->set_component($comp_name);
         $self->set_version($vers_name);
-        $self->set_target_milestone($tm_name);
+        if ($self->check_can_change_field('target_milestone', 0, 1)) {
+            $self->set_target_milestone($tm_name);
+        }
+        else {
+            # Have to set this directly to bypass the validators.
+            $self->{target_milestone} = $product->default_milestone;
+        }
     }
     
     if ($product_changed) {
index 7b5b58a185606097582ddd64c35a1d5520ec2d84..2eeb9277e3d9ebfee3e1ffeb3bb6c85496776a89 100644 (file)
 <input type="hidden" name="confirm_product_change" value="1">
     
 [%# Verify the version, component, and target milestone fields. %]
-<h3>Verify Version, Component[% ", Target Milestone" IF Param("usetargetmilestone") %]</h3>
+<h3>Verify Version, Component
+  [%- ", Target Milestone" 
+      IF Param("usetargetmilestone")
+         && bug.check_can_change_field('target_milestone', 0, 1) %]</h3>
 
 <p>
-[% IF Param("usetargetmilestone") %]
+[% IF Param("usetargetmilestone") 
+   && bug.check_can_change_field('target_milestone', 0, 1) 
+%]
   You are moving the [% terms.bug %](s) to the product 
   <b>[% product.name FILTER html %]</b>,
   and the version, component, and/or target milestone fields are no longer
@@ -93,7 +98,9 @@
                  default=default_component
                  size=10 %]
     </td>
-    [% IF Param("usetargetmilestone") %]
+    [% IF Param("usetargetmilestone") 
+          && bug.check_can_change_field('target_milestone', 0, 1) 
+    %]
       <td>
         <b>Target Milestone:</b><br>
       [% PROCESS "global/select-menu.html.tmpl"