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

[% RETURN UNLESS ih_activity %]
[%# this div exists to allow bugzilla-tweaks to detect when we're active %]
<div id="inline-history-ext"></div>

<script [% script_nonce FILTER none %]>
  var ih_activity = new Array();
  var ih_activity_flags = new Array();
  var ih_activity_sort_order = '[% user.settings.comment_sort_order.value FILTER js %]';
  [% FOREACH operation = ih_activity %]
    var html = '';
    [% has_cc = 0 %]
    [% has_flag = 0 %]
    [% changer_identity = operation.who.identity %]
    [% changer_login = operation.who.login %]
    [% change_date = operation.when FILTER time %]

    [% FOREACH change = operation.changes %]
      [%# track flag changes %]
      [% IF change.fieldname == 'flagtypes.name' && change.added != '' %]
        [% new_flags = change.added.split('[ ,]+') %]
        [% FOREACH new_flag IN new_flags %]
          var item = new Array(5);
          item[0] = '[% changer_login FILTER js %]';
          item[1] = '[% change_date FILTER js %]';
          item[2] = '[% change.attachid FILTER js %]';
          item[3] = '[% new_flag FILTER js %]';
          item[4] = '[% changer_identity FILTER js %]';
          ih_activity_flags.push(item);
          [% has_flag = 1 %]
        [% END %]
      [% END %]

      [%# wrap CC changes in a span for toggling visibility %]
      [% IF change.fieldname == 'cc' %]
        html += '<span class="ih_cc">';
        [% has_cc = 1 %]
      [% END %]

      [%# make attachment changes better %]
      [% IF change.attachid %]
        html += '<a '
                + 'href="[% basepath FILTER none %]attachment.cgi?id=[% change.attachid FILTER none %]&amp;action=edit" '
                + 'title="[% change.attach.description FILTER html FILTER js %]" '
                + 'class="[% "bz_obsolete" IF change.attach.isobsolete %]"'
                + '>Attachment #[% change.attachid FILTER none %]</a> - ';
      [% END %]

      [%# buglists need to be displayed differently, as we shouldn't use strike-out %]
      [% IF change.buglist %]
        [% IF change.dupe %]
          [% label = 'Duplicate of this ' _ terms.bug %]
        [% ELSE %]
          [% label = field_descs.${change.fieldname} %]
        [% END %]
        [% IF change.added != '' %]
          html += '[% label FILTER js %]: ';
          [% PROCESS add_change value = change.added %]
        [% END %]
        [% IF change.removed != '' %]
          [% "html += '<br>';" IF change.added != '' %]
          html += 'No longer [% label FILTER lcfirst FILTER js %]: ';
          [% PROCESS add_change value = change.removed %]
        [% END %]
      [% ELSE %]
        [% IF change.fieldname == 'longdescs.isprivate' %]
          [%# reference the comment that was made private/public in the field label %]
          html += '<a href="#c[% change.comment.count FILTER js %]">'
                  + 'Comment [% change.comment.count FILTER js %]</a> is private: ';
        [% ELSE %]
          [%# normal label %]
          html += '[% field_descs.${change.fieldname} FILTER js %]: ';
        [% END %]
        [% IF change.removed != '' %]
          [% IF change.added == '' %]
            html += '<span class="ih_deleted">';
          [% END %]
          [% PROCESS add_change value = change.removed %]
          [% IF change.added == '' %]
            html += '</span>';
          [% ELSE %]
            html += ' &rarr; ';
          [% END %]
        [% END %]
        [% PROCESS add_change value = change.added %]
      [% END %]
      [% "html += '<br>';" UNLESS loop.last %]

      [% IF change.fieldname == 'cc' %]
        html += '</span>';
      [% END %]
    [% END %]

    [% changer_id = operation.who.id %]
    [% UNLESS user_cache.$changer_id %]
      [% user_cache.$changer_id = BLOCK %]
        [% INCLUDE global/user.html.tmpl who = operation.who %]
      [% END %]
    [% END %]

    var user_image = '
    [%~ who = operation.who %]
    [% Hook.process('user-image', 'bug/comments.html.tmpl') FILTER js %]';

    var item = new Array(7);
    item[0] = '[% changer_login FILTER js %]';
    item[1] = '[% change_date FILTER js %]';
    item[2] = html;
    item[3] = '<div class="bz_comment_head">'
              + '<span class="bz_comment_user">'
              + user_image
              + ' [% user_cache.$changer_id FILTER js %]'
              + '</span>'
              + '<span class="bz_comment_time"> ' + item[1] + ' </span>'
              + '</div>';
    item[4] = [% IF has_cc && (operation.changes.size == 1) %]true[% ELSE %]false[% END %];
    item[5] = [% IF change.dupe %][% change.added FILTER js %][% ELSE %]0[% END %];
    item[6] = [% IF has_flag %]true[% ELSE %]false[% END %];
    ih_activity[[% loop.index %]] = item;
  [% END %]
  inline_history.init();
</script>

[% BLOCK add_change %]
  html += '[%~%]
  [% IF change.fieldname == 'estimated_time' ||
        change.fieldname == 'remaining_time' ||
        change.fieldname == 'work_time' %]
    [% PROCESS formattimeunit time_unit = value FILTER html FILTER js %]
  [% ELSIF change.buglist %]
    [% value FILTER bug_list_link FILTER js %]
  [% ELSIF change.fieldname == 'bug_file_loc' %]
    [%~%]<a href="[% value FILTER html FILTER js %]" target="_blank" rel="noreferrer"
      [%~ ' onclick="return inline_history.confirmUnsafeUrl(this.href)"'
          UNLESS is_safe_url(value) %]>
    [%~%][% value FILTER ih_short_value FILTER html FILTER js %]</a>
  [% ELSIF change.fieldname == 'see_also' %]
    [% FOREACH see_also = value %]
      [% IF see_also.bug_id %]
        [%~%][% "$terms.bug $see_also.bug_id" FILTER bug_link(see_also.bug_id) FILTER js %]
      [% ELSE %]
        [%~%]<a href="[% see_also.url FILTER html FILTER js %]" target="_blank" rel="noreferrer">
        [%~%][% see_also.url FILTER html FILTER js %]</a>
      [% END %]
      [%- ", " IF NOT loop.last %]
    [% END %]
  [% ELSIF change.fieldname == 'assigned_to' ||
           change.fieldname == 'reporter' ||
           change.fieldname == 'qa_contact' ||
           change.fieldname == 'cc' ||
           change.fieldname == 'bug_mentor' ||
           change.fieldname == 'flagtypes.name' %]
    [% value FILTER email FILTER js %]
  [% ELSIF change.fieldtype == constants.FIELD_TYPE_DATETIME %]
    [% value FILTER time FILTER js %]
  [% ELSE %]
    [% value FILTER ih_short_value FILTER html FILTER js %]
  [% END %]
  [%~ %]';
[% END %]
