[%# 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): Myk Melez <myk@mozilla.org>
  #                 Frédéric Buclin <LpSolit@gmail.com>
  #                 Guy Pyrzak <guy.pyrzak@gmail.com>
  #%]

[% PROCESS global/variables.none.tmpl %]

[%# Define strings that will serve as the title and header of this page %]
[% title = BLOCK %]
  Attachment [% attachment.id %] Details for [% terms.Bug %] [%+ attachment.bug_id %]
  &ndash; [% attachment.description FILTER html %]
[% END %]
[% header = BLOCK %]
  Attachment [% attachment.id %] Details for
  [%+ "$terms.Bug ${attachment.bug_id}" FILTER bug_link(attachment.bug_id) FILTER none %]
[% END %]
[% subheader = BLOCK %][% attachment.bug.short_desc FILTER html %][% END %]

[% PROCESS global/header.html.tmpl
  title = title
  header = header
  subheader = subheader
  generate_api_token = 1
  doc_section = "attachments.html"
  javascript_urls = ['js/attachment.js', 'js/field.js']
  style_urls = ['skins/standard/attachment.css']
  bodyclasses = "no_javascript"
%]

[%# No need to display the Diff button and iframe if the attachment is not a patch. %]
[% use_patchviewer = (feature_enabled('patch_viewer') && attachment.ispatch) %]
[% can_edit = attachment.validate_can_edit %]
[% editable_or_hide = can_edit ? "" : " bz_hidden_option" %]

<form method="post" action="[% basepath FILTER none %]attachment.cgi" onsubmit="normalizeComments();">
  <input type="hidden" name="bugid" value="[% attachment.bug_id %]">
  <input type="hidden" name="id" value="[% attachment.id %]">
  <input type="hidden" name="action" value="update">
  <input type="hidden" name="contenttypemethod" value="manual">
  <input type="hidden" name="delta_ts" value="[% attachment.modification_time FILTER html %]">
  [% IF user.id %]
    <input type="hidden" name="token" value="[% issue_hash_token([attachment.id, attachment.modification_time]) FILTER html %]">
  [% END %]

  <div id="attachment_info" class="attachment_info [% IF can_edit %] edit[% ELSE %] read[% END%]">
    <div id="attachment_attributes">
      <div id="attachment_information_read_only" class="[% "bz_private" IF attachment.isprivate %]">
        <div class="title">
          [% "[patch]" IF attachment.ispatch%]
          <span class="[% "bz_obsolete" IF attachment.isobsolete %]" title="[% "obsolete" IF attachment.isobsolete %]">
            [% attachment.description FILTER html %]
          </span>
          [% IF can_edit %]
            <span class="bz_edit">(<a href="javascript:toggle_attachment_details_visibility()">edit details</a>)</span>
          [% END %]
        </div>
        <div class="details">
          [% attachment.filename FILTER html %] ([% attachment.contenttype FILTER html %]),
          [% IF attachment.datasize %]
            [%+ attachment.datasize FILTER unitconvert %]
          [% ELSE %]
            <em>deleted</em>
          [% END %], created by [%+ INCLUDE global/user.html.tmpl who = attachment.attacher %]
          [% IF attachment.isprivate %];
            <span class="bz_private">only visible to <strong>[% Param('insidergroup') FILTER html %]</strong> members</span>
          [% END %]
        </div>
      </div>
      <div id="attachment_information_edit">
        <span class="bz_hide">
          (<a href="javascript:toggle_attachment_details_visibility();">hide</a>)
        </span>
        <div id="attachment_description">
          <label for="description">Description:</label>&nbsp;
          [% INCLUDE global/textarea.html.tmpl
            id             = 'description'
            name           = 'description'
            minrows        = 3
            cols           = 25
            wrap           = 'soft'
            classes        = 'block' _ editable_or_hide
            defaultcontent = attachment.description
          %]
        </div>

          <div id="attachment_filename">
            <label for="filename">Filename:</label>
            <input type="text" size="20"  class="text block[% editable_or_hide %]"
                   id="filename" name="filename"
                   value="[% attachment.filename FILTER html %]">
          </div>

          <div id="attachment_mimetype">
            <label for="contenttypeentry">MIME Type:</label>
            <input type="text" size="20" class="text block[% editable_or_hide %]"
                   id="contenttypeentry" name="contenttypeentry"
                   value="[% attachment.contenttype FILTER html %]">
          </div>

          <div id="attachment_creator">
            <span class="label">Creator:</span>
            [%+ INCLUDE global/user.html.tmpl who = attachment.attacher %]
          </div>

          <div id="attachment_size">
            <span class="label">Size:</span>
            [% IF attachment.datasize %]
              [%+ attachment.datasize FILTER unitconvert %]
            [% ELSE %]
              <em>deleted</em>
            [% END %]
          </div>

          <div id="attachment_ispatch">
            <input type="checkbox" id="ispatch" name="ispatch" value="1"
                   [%+ 'checked="checked"' IF attachment.ispatch %]>
                   <label for="ispatch">patch</label>
          </div>

        <div class="readonly">
          <div class="checkboxes">
            <div id="attachment_isobsolete">
              <input type="checkbox" id="isobsolete" name="isobsolete" value="1"
                     [%+ 'checked="checked"' IF attachment.isobsolete %]>
                <label for="isobsolete">obsolete</label>
            </div>

            [% IF user.is_insider %]
              <div id="attachment_isprivate">
                <input type="checkbox" id="isprivate" name="isprivate" value="1"
                       [%+ 'checked="checked"' IF attachment.isprivate %]>
                [% IF can_edit %]
                  <label for="isprivate">private (only visible to
                    <strong>[% Param('insidergroup') FILTER html %]</strong>)
                  </label>
                [% ELSE %]
                  <span class="label">Is Private:</span>
                  [%+ attachment.isprivate ? "yes" : "no" %]
                [% END %]
              </div>
            [% END %]
          </div>
        </div>
      </div>

      <div id="attachment_view_window">
        [% IF !attachment.datasize %]
          <div><b>The content of this attachment has been deleted.</b></div>
        [% ELSIF !Param("allow_attachment_display") %]
          <div id="view_disabled">
            <p><b>
              The attachment is not viewable in your browser due to security
              restrictions enabled by your [% terms.Bugzilla %] administrator.
            </b></p>
            <p><b>
              In order to view the attachment, you first have to
              <a href="[% basepath FILTER none %]attachment.cgi?id=[% attachment.id %]">download it</a>.
            </b></p>
          </div>
        [% ELSIF attachment.is_viewable %]
          [%# to override attachment viewing, hook edit-view and set custom_attachment_viewer to 1 %]
          [% custom_attachment_viewer = 0 %]
          [% Hook.process('view') %]
          [% UNLESS custom_attachment_viewer %]
            <div>
              <input type="hidden" name="markdown_off" value="0">
              [% INCLUDE global/textarea.html.tmpl
                id      = 'editFrame'
                name    = 'comment'
                classes   = 'bz_default_hidden'
                minrows = 10
                cols    = 80
                wrap    = 'soft'
                disabled = 'disabled'
                defaultcontent = (attachment.contenttype.match('^text\/')) ?
                                  attachment.data.replace('(.*\n|.+)', '>$1') : undef
              %]
              [% IF attachment.contenttype == 'text/plain' AND is_safe_url(attachment.data) %]
                <p>
                  <a href="[% attachment.data FILTER html %]">
                    [% IF attachment.datasize < 120 %]
                      [% attachment.data FILTER html %]
                    [% ELSE %]
                      [% attachment.data FILTER truncate(80) FILTER html %]
                      ...
                      [% attachment.data.match('.*(.{20})$').0 FILTER html %]
                    [% END %]
                  </a>
                </p>
              [% ELSIF attachment.contenttype == "text/html" %]
                [%# For security reasons (clickjacking, embedded scripts), we never
                  # render HTML pages from here. The source code is displayed instead. %]
                [% INCLUDE global/textarea.html.tmpl
                  id      = 'viewFrame'
                  minrows = 10
                  cols    = 80
                  defaultcontent = attachment.data
                  readonly = 'readonly'
                %]
              [% ELSE %]
                <iframe id="viewFrame" src="[% basepath FILTER none %]attachment.cgi?id=[% attachment.id %]
                  [%- "&amp;content_type=text/plain" IF attachment.contenttype.match('^text/x-') %]" sandbox>
                  <b>You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
                  <a href="[% basepath FILTER none %]attachment.cgi?id=[% attachment.id %]">View the attachment on a separate page</a>.</b>
                </iframe>
              [% END %]
              <script [% script_nonce FILTER none %]>
                <!--
                var patchviewerinstalled = 0;
                var attachment_id = [% attachment.id %];
                if (typeof document.getElementById == "function") {
                  [% IF use_patchviewer %]
                    var patchviewerinstalled = 1;
                    document.write('<iframe id="viewDiffFrame" class="bz_default_hidden"><\/iframe>');
                  [% END %]
                  [% IF user.id %]
                    document.write('<button type="button" id="editButton" onclick="editAsComment(patchviewerinstalled);">Edit Attachment As Comment<\/button>');
                    document.write('<button type="button" id="undoEditButton" onclick="undoEditAsComment(patchviewerinstalled);" class="bz_default_hidden">Undo Edit As Comment<\/button>');
                    document.write('<button type="button" id="redoEditButton" onclick="redoEditAsComment(patchviewerinstalled);" class="bz_default_hidden">Redo Edit As Comment<\/button>');
                    var editFrame = document.getElementById('editFrame');
                    if (editFrame) {
                      editFrame.disabled = false;
                    }
                  [% END %]
                  [% IF use_patchviewer %]
                    document.write('<button type="button" id="viewDiffButton" onclick="viewDiff(attachment_id, patchviewerinstalled);">View Attachment As Diff<\/button>');
                  [% END %]
                  document.write('<button type="button" id="viewRawButton" onclick="viewRaw(patchviewerinstalled);" class="bz_default_hidden">View Attachment As Raw<\/button>');
                }
                //-->
              </script>
            </div>
          [% END %]
        [% ELSE %]
          <div id="noview">
            <p><b>
              Attachment is not viewable in your browser because its MIME type
              ([% attachment.contenttype FILTER html %]) is not one that your browser is
              able to display.
            </b></p>
            <p><b>
              <a href="[% basepath FILTER none %]attachment.cgi?id=[% attachment.id %]">Download the attachment</a>.
            </b></p>
          </div>
        [% END %]
      </div>
      <div id="attachment_comments_and_flags">
        <div id="attachment_flags">
          [% IF attachment.flag_types.size > 0 %]
            [% PROCESS "flag/list.html.tmpl" flag_types = attachment.flag_types, read_only_flags = !can_edit %]
          [% END %]
        </div>
        [% IF user.id %]
          <div id="smallCommentFrame">
            <label for="comment">Comment (on the [% terms.bug %]):</label>
            [% classNames = 'block' %]
            [% classNames = "$classes bz_private" IF attachment.isprivate %]
            [% INCLUDE bug/comment.html.tmpl
               minrows = 10
               cols    = 80
               wrap    = 'soft'
               classes = classNames
            %]
            [% Hook.process('after_comment_textarea') %]
          </div>
        [% END %]
      </div>
    </div>
  </div>

  [% Hook.process('form_before_submit') %]

  [% IF user.id %]
    <div id="update_container">
      <input type="submit" value="Submit" id="update">
      <span role="status"></span>
    </div>
  [% END %]
</form>

<div id="attachment_actions">
  <span class="label">Actions:</span>
  <a href="[% basepath FILTER none %]attachment.cgi?id=[% attachment.id %]">View</a>
  [% IF use_patchviewer %]
    | <a href="[% basepath FILTER none %]attachment.cgi?id=[% attachment.id %]&amp;action=diff">Diff</a>
  [% END %]
  [% IF Param("allow_attachment_deletion")
        && user.in_group('admin')
        && attachment.datasize > 0 %]
    | <a href="[% basepath FILTER none %]attachment.cgi?id=[% attachment.id %]&amp;action=delete">Delete</a>
  [% END %]
  [% Hook.process('action') %]
</div>

<div id="attachment_list">
  Attachments on [% "$terms.bug ${attachment.bug_id}" FILTER bug_link(attachment.bug_id) FILTER none %]:
  [% FOREACH a = attachments %]
    [% IF a.isobsolete %]
      <span class="bz_obsolete">
    [% END %]
    [% IF a.id == attachment.id %]
      [%+ a.id FILTER html %]
    [% ELSE %]
      <a href="[% basepath FILTER none %]attachment.cgi?id=[% a.id FILTER uri %]&amp;action=edit"
         title="[% a.description FILTER html %]">[% a.id FILTER html %]</a>
    [% END %]
    [% IF a.isobsolete %]
      </span>
    [% END %]
    [% " |" UNLESS loop.last() %]
  [% END %]
</div>
[% IF can_edit %]
  <script [% script_nonce FILTER none %]>
    <!--
      YAHOO.util.Dom.removeClass( document.body, "no_javascript" );
      toggle_attachment_details_visibility( );
    -->
  </script>
[% END %]
[% Hook.process('end') %]

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