{% extends 'edit.twig' %}

{% block inner_content %}
{% if result %}
<h4>{{ lang.mailbox.bcc_map }}</h4>
<br>
<form class="form-horizontal" data-id="editbcc" role="form" method="post">
  <input type="hidden" value="0" name="active">
  <div class="row mb-2">
    <label class="control-label col-sm-2" for="bcc_dest">{{ lang.mailbox.bcc_destination }}</label>
    <div class="col-sm-10">
      <input value="{{ result.bcc_dest }}" type="text" class="form-control" name="bcc_dest" id="bcc_dest">
      <small>{{ lang.edit.bcc_dest_format|raw }}</small>
    </div>
  </div>
  <div class="row mb-4">
    <label class="control-label col-sm-2" for="type">{{ lang.mailbox.bcc_map_type }}</label>
    <div class="col-sm-10">
      <select id="addFilterType" name="type" id="type" required>
        <option value="sender"{% if result.type == 'sender'%} selected{% endif %}>{{ lang.mailbox.bcc_sender_map }}</option>
        <option value="rcpt"{% if result.type == 'rcpt'%} selected{% endif %}>{{ lang.mailbox.bcc_rcpt_map }}</option>
      </select>
    </div>
  </div>
  <div class="row mb-2">
    <div class="offset-sm-2 col-sm-10">
      <div class="checkbox">
        <label><input type="checkbox" value="1" name="active"{% if result.active == '1' %} checked{% endif %}> {{ lang.edit.active }}</label>
      </div>
    </div>
  </div>
  <div class="row mb-2">
    <div class="offset-sm-2 col-sm-10">
      <button class="btn btn-xs-lg d-block d-sm-inline btn-success" data-action="edit_selected" data-id="editbcc" data-item="{{ bcc }}" data-api-url='edit/bcc' data-api-attr='{}' href="#">{{ lang.edit.save }}</button>
    </div>
  </div>
</form>
{% else %}
  {{ parent() }}
{% endif %}
{% endblock %}
