[%# This Source Code Form is subject to the terms of the Mozilla Public
  # License, v. 2.0. If a copy of the MPL was not distributed with this
  # file, You can obtain one at http://mozilla.org/MPL/2.0/.
  #
  # This Source Code Form is "Incompatible With Secondary Licenses", as
  # defined by the Mozilla Public License, v. 2.0.
  #%]

[% title = BLOCK %]
  Confirm Group Control Change for product '[%- product.name FILTER html %]'
[% END %]

[% PROCESS global/header.html.tmpl title = title %]

[% FOREACH group = mandatory_groups %]
  <p>
    Group '[% group.name FILTER html %]' impacts 
    [% IF group.count == 1 %]
       one [%+ terms.bug %]
    [% ELSE %]
      [% group.count %] [%+ terms.bugs %]
    [% END %]
    for which this group is mandatory and will be added.
  </p>
[% END %]

[% FOREACH group = na_groups %]
  <p>
    Group '[% group.name FILTER html %]' impacts 
    [% IF group.count == 1 %]
       one [%+ terms.bug %]
    [% ELSE %]
      [% group.count %] [%+ terms.bugs %]
    [% END %]  
    for which this group is no longer applicable and will be removed.
  </p>
[% END %]

<form action="editproducts.cgi" method="post" >
  [% PROCESS "global/hidden-fields.html.tmpl" exclude="^Bugzilla_(login|password)$" %]
  <p>
    <br>
    Click "Continue" to proceed with the change including the changes
    indicated above.  If you do not want these changes, use "back" to
    return to the previous page.
  </p>
  <input type="hidden" name="confirmed" value="confirmed">
  <input type="submit" id="update" value="Continue">
</form>

[% PROCESS global/footer.html.tmpl %]
