[%# 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:
  # a: attachment object; attachment the user wants to delete.
  # token: string; The token used to identify the session.
  #%]

[% title = BLOCK %]
  Delete Attachment [% a.id FILTER html %] of [% terms.Bug %] [%+ a.bug_id FILTER html %]
[% END %]

[% PROCESS global/header.html.tmpl
  title = title
  style_urls = ['skins/standard/admin.css']
  doc_section = "using/editing.html#attachments"
%]

<table id="admin_table">
  <tr class="column_header">
    <th>Field</th>
    <th>Value</th>
  </tr>
  <tr>
    <td>Attachment ID</td>
    <td>
      <a href="attachment.cgi?id=[% a.id FILTER html %]">[% a.id FILTER html %]</a>
    </td>
  </tr>
  <tr>
    <td>File name</td>
    <td>[% a.filename FILTER html %]</td>
  </tr>
  <tr>
    <td>Description</td>
    <td>[% a.description FILTER html %]</td>
  </tr>
  <tr>
    <td>Contained in [% terms.Bug %]</td>
    <td>[% a.bug_id FILTER bug_link(a.bug_id) FILTER none %]</td>
  </tr>
  <tr>
    <td>Creator</td>
    <td>[% a.attacher.identity FILTER html %]</td>
  </tr>
  <tr>
    <td>Creation Date</td>
    <td>[% a.attached FILTER time %]</td>
  </tr>
</table>

<h2>Confirmation</h2>

<p class="confirmation">
  The content of this attachment will be deleted in an <b>irreversible</b> way.
</p>

<p>Do you really want to delete this attachment?</p>

<form action="attachment.cgi" method="POST">
  <label for="reason">Reason of the deletion:</label>
  <input type="text" id="reason" name="reason" value="" size="80" maxlength="200">
  <br>
  <input type="submit" value="Yes, delete" id="delete">
  <input type="hidden" name="action" value="delete">
  <input type="hidden" name="id" value="[% a.id FILTER html %]">
  <input type="hidden" name="token" value="[% token FILTER html %]">
</form>

<p>
  No, cancel this deletion and return to
  [%+ "$terms.bug " _ a.bug_id FILTER bug_link(a.bug_id) FILTER none %].
</p>

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