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

[%# INTERFACE:
  # operations: array of hashes. May be empty. Each has has three members:
  #   who: string. who performed the operation
  #   when: string. when they performed it
  #   changes: hash. Details of what they changed. This hash has three
  #            compulsory and one optional member:
  #     field: string. The name of the field
  #     removed: string. What was removed from the field
  #     added: string. What was added to the field
  #     attach_id: integer. If the change was adding an attachment, its id.
  # incomplete_data: boolean. True if some of the data is incomplete (because
  #                  it was affected by an old Bugzilla bug.)
  #%]

[% PROCESS bug/time.html.tmpl %]

[% IF incomplete_data %]
  <p>
    There used to be an issue in <a href="http://www.bugzilla.org/">Bugzilla</a>
    which caused activity data to be lost if there were a large number of cc's
    or dependencies.  That has been fixed, but some data was already lost in
    your activity table that could not be regenerated.  The changes that the
    script could not reliably determine are prefixed by '?'.
  </p>
[% END %]

[% IF operations.size > 0 %]
  <table border cellpadding="4">
    <tr>
      <th>Who</th>
      <th>When</th>
      <th>What</th>
      <th>Removed</th>
      <th>Added</th>
    </tr>

    [% FOREACH operation = operations %]
      <tr>
        <td rowspan="[% operation.changes.size %]" valign="top">
          [% operation.who FILTER email FILTER html %]
        </td>
        <td rowspan="[% operation.changes.size %]" valign="top">
          [% operation.when FILTER time %]
        </td>
        [% FOREACH change = operation.changes %]
          [% "</tr><tr>" IF loop.index > 0 %]
            <td>
              [% IF change.attachid %]
                <a href="attachment.cgi?id=[% change.attachid %]">
                Attachment #[% change.attachid %]</a>
              [% END %]
              [% IF change.comment.defined %]
                 [% comment_desc = field_descs.${change.fieldname} %]
                 [% comment_num = "Comment $change.comment.count" FILTER bug_link(bug.bug_id, comment_num => change.comment.count) %]
                 [% comment_desc.replace('^(Comment )?', "$comment_num ") FILTER none %]
              [% ELSE %]
                [%+ field_descs.${change.fieldname} FILTER html %]
              [% END %]
            </td>
            [% PROCESS change_column change_type = change.removed %]
            [% PROCESS change_column change_type = change.added %]
        [% END %]
      </tr>
    [% END %]
  </table>
[% ELSE %]
  <p>
    No changes have been made to this [% terms.bug %] yet.
  </p>
[% END %]

[% BLOCK change_column %]
  <td>
    [% IF change_type.defined %]
      [% IF change.fieldname == 'estimated_time' ||
            change.fieldname == 'remaining_time' ||
            change.fieldname == 'work_time' %]
        [% PROCESS formattimeunit time_unit=change_type %]
      [% ELSIF change.fieldname == 'blocked' ||
               change.fieldname == 'dependson' %]
        [% change_type FILTER bug_list_link FILTER none %]
      [% ELSIF change.fieldname == 'assigned_to' ||
               change.fieldname == 'reporter' ||
               change.fieldname == 'qa_contact' ||
               change.fieldname == 'cc' ||
               change.fieldname == 'flagtypes.name' %]
        [% display_value(change.fieldname, change_type) FILTER email FILTER html %]
      [% ELSE %]
        [% display_value(change.fieldname, change_type) FILTER html %]
      [% END %]
    [% ELSE %]
      &nbsp;
    [% END %]
  </td>
[% END %]
