]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 769134 - Bugzilla unintentionally removes groups when changing products with...
authorSimon Green <sgreen@redhat.com>
Thu, 26 Sep 2013 02:13:18 +0000 (12:13 +1000)
committerSimon Green <sgreen@redhat.com>
Thu, 26 Sep 2013 02:13:18 +0000 (12:13 +1000)
r=dkl, a=justdave

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

index ba941788b3f47c7ba2f78aa8a11eb68ad6178590..4d2421a595dc3502dea2a0ed1f7016a5d5ce98d6 100644 (file)
@@ -2556,6 +2556,10 @@ sub _set_product {
                                        OR gcm.othercontrol != ?) )',
                 undef, (@idlist, $product->id, CONTROLMAPNA, CONTROLMAPNA));
             $vars{'old_groups'} = Bugzilla::Group->new_from_list($gids);            
+
+            # Did we come here from editing multiple bugs? (affects how we
+            # show optional group changes)
+            $vars{multiple_bugs} = Bugzilla->cgi->param('id') ? 0 : 1;
         }
         
         if (%vars) {
index 77471cbcd484c93499a6251f4bc738f2bee3b259..c712ae09ae5dd77662ef84f06406a435c88bed20 100644 (file)
   [% IF optional_groups.size %]
     <p>These groups are optional. You can decide to restrict [% terms.bugs %] to
     one or more of the following groups:<br>
-    [% FOREACH group = optional_groups %]
-      <input type="hidden" name="defined_groups"
-             value="[% group.group.name FILTER html %]">
-      <input type="checkbox" id="group_[% group.group.id FILTER html %]"
-             name="groups"
-             [% ' checked="checked"' IF ((group.membercontrol == constants.CONTROLMAPDEFAULT && user.in_group(group.group.name))
-                 || (group.othercontrol == constants.CONTROLMAPDEFAULT && !user.in_group(group.group.name))
-                 || cgi.param("groups").contains(group.group.name)) %]
-             value="[% group.group.name FILTER html %]">
-      <label for="group_[% group.group.id FILTER html %]">
-        [% group.group.name FILTER html %]: [% group.group.description FILTER html %]
-      </label>
-      <br>
+    [% IF multiple_bugs %]
+      [% USE Bugzilla %]
+      <script type="text/javascript">
+        function turn_off(myself, id) {
+            var other_checkbox = document.getElementById(id);
+            if (myself.checked && other_checkbox) {
+                other_checkbox.checked = false;
+            }
+        }
+      </script>
+
+      <table border="1">
+        <tr>
+          <th>Remove<br>[% terms.bugs %]<br>from this<br>group</th>
+          <th>Add<br>[% terms.bugs %]<br>to this<br>group</th>
+          <th>Group Name:</th>
+        </tr>
+
+        [% FOREACH group = optional_groups %]
+        <tr>
+          <td align="center">
+            <input type="checkbox" name="defined_groups" 
+                   id="defined_group_[% group.group.id FILTER html %]"
+                   value="[% group.group.name FILTER html %]"
+                   [% IF Bugzilla.cgi.param("defined_groups").contains(group.group.name) %] checked="checked"[% END %]
+                   onchange="turn_off(this, 'group_[% group.group.id FILTER html %]')">
+          </td>
+          <td align="center">
+            <input type="checkbox" name="groups" 
+                   id="group_[% group.group.id FILTER html %]"
+                   value="[% group.group.name FILTER html %]"
+                   [% IF Bugzilla.cgi.param("groups").contains(group.group.name) %] checked="checked"[% END %]
+                   onchange="turn_off(this, 'defined_group_[% group.group.id FILTER html %]')">
+          </td>
+
+          <td>
+            [% group.group.description FILTER html %]
+          </td>
+
+        </tr>
+        [% END %]
+
+      </table>
+    [% ELSE %]
+      [% FOREACH group = optional_groups %]
+        <input type="hidden" name="defined_groups"
+               value="[% group.group.name FILTER html %]">
+        <input type="checkbox" id="group_[% group.group.id FILTER html %]"
+               name="groups"
+               [% ' checked="checked"' IF ((group.membercontrol == constants.CONTROLMAPDEFAULT && user.in_group(group.group.name))
+                   || (group.othercontrol == constants.CONTROLMAPDEFAULT && !user.in_group(group.group.name))
+                   || cgi.param("groups").contains(group.group.name)) %]
+               value="[% group.group.name FILTER html %]">
+        <label for="group_[% group.group.id FILTER html %]">
+          [% group.group.name FILTER html %]: [% group.group.description FILTER html %]
+        </label>
+        <br>
+      [% END %]
     [% END %]
     </p>
   [% END %]