[%# The contents of this file are subject to the Mozilla Public
  # License Version 1.1 (the "License"); you may not use this file
  # except in compliance with the License. You may obtain a copy of
  # the License at http://www.mozilla.org/MPL/
  #
  # Software distributed under the License is distributed on an "AS
  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
  # implied. See the License for the specific language governing
  # rights and limitations under the License.
  #
  # The Original Code is the Bugzilla Bug Tracking System.
  #
  # The Initial Developer of the Original Code is Netscape Communications
  # Corporation. Portions created by Netscape are
  # Copyright (C) 1998 Netscape Communications Corporation. All
  # Rights Reserved.
  #
  # Contributor(s): Gervase Markham <gerv@gerv.net>
  #                 David D. Kilzer <ddkilzer@kilzer.net>
  #                 Reed Loden <reed@reedloden.com>
  #%]

[%# 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 class="admin_table">
    <tr>
      <th>Who</th>
      <th>When</th>
      <th>What</th>
      <th>Removed</th>
      <th>Added</th>
    </tr>

    [% FOREACH operation = operations %]
      [% op_loop = loop.count %]
      [% class_name = loop.index % 2 ? 'even_row' : 'odd_row' %]
      <tr class="[% class_name %]">
        <td rowspan="[% operation.total_lines %]" valign="top">
          [% operation.who FILTER email FILTER html %]
        </td>
        <td rowspan="[% operation.total_lines %]" valign="top">
          [% operation.when FILTER time %]
        </td>
        [% FOREACH change = operation.changes %]
          [% "</tr><tr class='" _ class_name _ "'>" IF loop.index > 0 %]
            <td valign="top"[% IF change.lines %] rowspan="[% change.lines.size %]"[% END %]>
              [% IF change.attachid %]
                <a href="attachment.cgi?id=[% change.attachid %]">
                Attachment #[% change.attachid %]</a>
              [% END %]
              [% IF change.fieldname == 'longdesc' %]
              <a href="show_bug.cgi?id=[% bug.bug_id%]#c[% change.comment_count FILTER html %]">
                [% IF change.comment_count > 0 %]
                  Comment #[% change.comment_count %]
                [% ELSE %]
                  Description
                [% END %]
                [% IF !change.lines && (change.removed.length > 85 || change.added.length > 85) %]
                  <br/><a href="#" id="link_[% op_loop %]_[% loop.count %]" onclick="showFullComment('[% op_loop %]_[% loop.count %]'); return false;">Show full text</a>
                [% END %]
              [% ELSE %]
                [%+ field_descs.${change.fieldname} || bug_fields.${change.fieldname}.description FILTER html %]
              [% END %]
            </td>
            [% IF change.lines %]
              [% FOR l = change.lines %]
                [% "</tr><tr>" IF loop.index > 0 %]
                [% l %]
              [% END %]
            [% ELSE %]
              [% PROCESS change_column change_type = change.removed op_type = "removed" op_count = loop.count op_loop = op_loop %]
              [% PROCESS change_column change_type = change.added op_type = "added" op_count = loop.count op_short_comment %]
            [% END %]
        [% 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' %]
        [% change_type FILTER email FILTER html %]
      [% ELSE %]
        [% IF change_type.length > 85 %]
            <div id="[% op_type %]_[% op_loop %]_[% op_count %]">
            [% change_type.substr(0, 85) FILTER html %] <a href="#" onclick="showFullComment('[% op_loop %]_[% loop.count %]'); return false;">[...]</a></span>
            </div>
            <div id="text_[% op_type %]_[% op_loop %]_[% op_count %]" style="display: none;">
                [% change_type FILTER html %]
            </div>
        [% ELSE %]
            [% change_type FILTER html %]
        [% END %]
      [% END %]
    [% ELSE %]
      &nbsp;
    [% END %]
  </td>
[% END %]
