[%# 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.
  #%]

[% INCLUDE global/header.html.tmpl
   title = "Edit Workflow"
   style_urls = ['skins/standard/admin.css']
%]

<script type="text/javascript">
<!--
  function toggle_cell(cell) {
    if (cell.checked)
      cell.parentNode.className = "checkbox-cell checked";
    else
      cell.parentNode.className = "checkbox-cell";
  }
//-->
</script>

<p>
  This page allows you to define which status transitions are valid in your workflow.
  For compatibility with older versions of [% terms.Bugzilla %], reopening [% terms.abug %]
  will only display either [% display_value("bug_status", "UNCONFIRMED") FILTER html %] or
  [%+ display_value("bug_status", "REOPENED") FILTER html %] (if allowed by your workflow) but not
  both. The decision depends on whether the [% terms.bug %] has ever been confirmed or not.
  So it is a good idea to allow both transitions and let [% terms.Bugzilla %] select the
  correct one.
</p>

<form id="workflow_form" method="POST" action="editworkflow.cgi">
<table>
  <tr>
    <th colspan="2">&nbsp;</th>
    <th colspan="[% statuses.size FILTER html %]" class="title">To</th>
  </tr>

  <tr>
    <th rowspan="[% statuses.size + 2 FILTER html %]" class="title">From</th>
    <th>&nbsp;</th>
    [% FOREACH status = statuses %]
      <th class="col-header[% status.is_open ? " open-status" : " closed-status" %]">
        [% display_value("bug_status", status.name) FILTER html %]
      </th>
    [% END %]
  </tr>

  [%# This defines the entry point in the workflow %]
  [% p = [{id => 0, name => "{Start}", is_open => 1}] %]
  [% FOREACH status = p.merge(statuses) %]
    <tr class="highlight">
      <th align="right" class="[% status.is_open ? "open-status" : "closed-status" %]">
        [% display_value("bug_status", status.name) FILTER html %]
      </th>

      [% FOREACH new_status = statuses %]
        [% IF status.id != new_status.id %]
          [% checked = workflow.${status.id}.${new_status.id}.defined ? 1 : 0 %]
          [% mandatory = (status.id && new_status.name == Param("duplicate_or_move_bug_status")) ? 1 : 0 %]
          <td align="center" class="checkbox-cell[% " checked" IF checked || mandatory %]"
              title="From [% status.name FILTER html %] to [% new_status.name FILTER html %]">
            <input type="checkbox" name="w_[% status.id %]_[% new_status.id %]"
                   id="w_[% status.id %]_[% new_status.id %]" onclick="toggle_cell(this)"
                   [%+ "checked='checked'" IF checked || mandatory %]
                   [%+ "disabled='disabled'" IF mandatory %]>
          </td>
        [% ELSE %]
          <td class="checkbox-cell forbidden">&nbsp;</td>
        [% END %]
      [% END %]
    </tr>
  [% END %]
</table>

<p>
  When [% terms.abug %] is marked as a duplicate of another one or is moved
  to another installation, the [% terms.bug %] status is automatically set to
  <b>[% display_value("bug_status", Param("duplicate_or_move_bug_status")) FILTER html %]</b>. All transitions to
  this [% terms.bug %] status must then be valid (this is the reason why you cannot edit
  them above).<br>
  Note: you can change this setting by visiting the
  <a href="editparams.cgi?section=bugchange#duplicate_or_move_bug_status">Parameters</a>
  page and editing the <i>duplicate_or_move_bug_status</i> parameter.
</p>

<p align="center">
  <input type="hidden" name="action" value="update">
  <input type="hidden" name="token" value="[% token FILTER html %]">
  <input type="submit" id="update_workflow" value="Commit Changes"> -
  <a href="editworkflow.cgi">Cancel Changes</a> -
  <a href="editworkflow.cgi?action=edit_comment">View Comments Required on Status Transitions</a>
</p>

</form>

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