{% extends "community/_base.html" %}

{% from "macros/box.html" import  m_box_content, m_box_menu with context %}
{% from "macros/recent.html" import m_recent_items %}

{% macro m_users_table(users_and_roles, controls) %}
  {% set table_id = uuid() %}
  <form method="POST">
    {{ csrf_token }}
    <table class="table table-condensed table-striped" id="{{ table_id }}">
      <thead>
      <tr>
        <th></th>
        <th class="hide">Last Name</th>
        <th class="hide">First Name</th>
        <th>{{ _("Name") }}</th>
        <th>{{ _("Role") }}</th>
        {% if controls %}
          <th>{{ _("Action") }}</th>
        {% endif %}
      </tr>
      </thead>

      <tbody>
      {% for user, role, has_access in users_and_roles %}
        <tr>
          <td>{%- if not user.can_login %}
            <i class="glyphicon glyphicon-lock" title="{{ _('account disabled') }}"></i>
            {%- elif has_access %}
            <i class="fa fa-check">&nbsp;</i>
            {%- endif %}
          </td>
          <td class="hide">{{ user.last_name }}</td>
          <td class="hide">{{ user.first_name }}</td>
          <td>
            {%- if not user.can_login %}<s title="{{ _('account disabled') }}">{%- endif %}
            <a href="{{ url_for("social.user", user_id=user.id) }}">{{ user.name }}</a>
            ({{ user.email }})
            {%- if not user.can_login %}</s>{%- endif %}
          </td>
          <td>{{ role }}</td>
          {%- if controls %}
            <td>
              <button type="submit" name="delete-user-role"
                  value="{{ "%s:%s" % (role, user.id) }}"
                  class="btn btn-small btn-danger"><i class="fa fa-trash"></i>
              </button>
            </td>
          {%- endif %}
        </tr>
      {% endfor %}
      </tbody>
    </table>
  </form>

  {%- deferJS %}
  <script type="text/javascript">
    $(document).ready(function() {
      var id = "#{{ table_id }}"; // Should be unique enough
      $(id).dataTable({
        aaSorting: [[3, "asc"]],
        aoColumns:       [
         { bSortable: false }, // 0: has_access
         { bVisible: false },  // 1: last_name
         { bVisible: false }, // 2: first_name
         { aDataSort: [1, 2], asSorting: [ "asc", "desc" ] }, // 3: fullname
         { aDataSort: [4, 1, 2], asSorting: [ "asc", "desc" ] }, // 4: role - sort by role then name
         {%- if controls %}
         { bSortable: false }
         {% endif %}
        ],
        sPaginationType: "bootstrap",
        bFilter:         true,
        bLengthChange:   false
      });
    });
  </script>
  {%- enddeferJS %}

  <div style="clear: both;"></div>
{% endmacro %}

{% macro m_groups_table(groups_and_roles, controls) %}
  {% set table_id = uuid() %}
  <form method="POST">
    {{ csrf_token }}
    <table class="table table-condensed table-striped" id="{{ table_id }}">
      <thead>
      <tr>
        <th>{{ _("Name") }}</th>
        <th>{{ _("Role") }}</th>
        {% if controls %}
          <th>{{ _("Action") }}</th>
        {% endif %}
      </tr>
      </thead>

      <tbody>
      {% for group, role in groups_and_roles %}
        <tr>
          <td><a
              href="{{ url_for("social.group_home", group_id=group.id) }}">{{ group.name }}</a>
          </td>
          <td>{{ role }}</td>
          {%- if controls %}
            <td>
              <button type="submit" name="delete-group-role"
                  value="{{ role }}:{{ group.id }}"
                  class="btn btn-small btn-danger"><i class="fa fa-trash"></i>
              </button>
            </td>
          {% endif %}
        </tr>
      {% endfor %}
      </tbody>
    </table>
  </form>

  {%- deferJS %}
  <script type="text/javascript">
    $(document).ready(function() {
      var id = "#{{ table_id }}"; // Should be unique enough
      $(id).dataTable({
        aoColumns:       [
          { asSorting: [ "asc", "desc" ] },
          { asSorting: [ "asc", "desc" ] },
          {%- if controls %}
            { asSorting: [ "asc", "desc" ] }
          {% endif %}
        ],
        sPaginationType: "bootstrap",
        bFilter:         true,
        bLengthChange:   false
      });
    });
  </script>
  {%- enddeferJS %}
  <div style="clear: both;"></div>
{% endmacro %}


{% block content %}
  {% call m_box_content("Permissions") %}
    <h2 style="margin-top: 0;">{{ _('Manage permissions on <em>{folder}</em>').format(folder=folder.title) }}</h2>

    <a class="btn btn-default datatable-export"
        href="{{ url_for('.permissions_export', folder_id=folder.id, community_id=folder.community.slug) }}"><i
        class="fa fa-align-justify"></i>{{ _("Export to Excel") }}</a>

    <hr/>

    <h3>{{ _("Inheritance") }}</h3>

    {% if folder.inherit_security %}
      <i class="fa fa-check-circle-o"></i>{{ _("Activated") }}
      <button class="btn btn-default"
          id="deactivate_inheritance">{{ _("Deactivate") }}</button>
    {% else %}
      <i class="fa fa-ban"></i>{{ _("Deactivated") }}
      <button class="btn btn-default" id="activate_inheritance">{{ _("Activate") }}</button>
    {% endif %}

    {#
    <h3>Current local roles for groups</h3>

    {% if groups_and_local_roles %}
      {{ m_groups_table(groups_and_local_roles, controls=True) }}
    {% else %}
      {{ _("Nothing") }}.
    {% endif %}

    <p>
      <button class="btn" href="#modal-add-group-local-role"
          data-toggle="modal">
        <i class="fa fa-plus"></i>{{ _("Add new local role") }}&hellip;</button>
    </p>

    <h3>{{ _("Current inherited roles for groups") }}</h3>

    {% if folder.inherit_security %}
      {% if groups_and_inherited_roles %}
        {{ m_groups_table(groups_and_inherited_roles, controls=False) }}
      {% else %}
        {{ _("Nothing") }}.
      {% endif %}
    {% else %}
      {{ _("Deactivated") }}
    {% endif %}

    <hr>
    #}

    <h3>{{ _("Current local roles for users") }}</h3>

    {% if users_and_local_roles %}
      {{ m_users_table(users_and_local_roles, controls=True) }}
    {% else %}
      {{ _("Nothing") }}.
    {% endif %}

    <p>
      <button class="btn btn-default" href="#modal-add-user-local-role" data-toggle="modal">
        <i class="fa fa-plus"></i>{{ _("Add new local role") }}&hellip;</button>
    </p>

    <h3>{{ _("Current inherited roles for users") }}</h3>

    {% if folder.inherit_security %}
      {% if users_and_inherited_roles %}
        {{ m_users_table(users_and_inherited_roles, controls=False) }}
      {% else %}
        {{ _("Nothing") }}.
      {% endif %}
    {% else %}
      {{ _("Deactivated") }}
    {% endif %}

    <h3 class="main">{{ _("Audit Log") }}</h3>
    <div style="margin-bottom: 25px;">
      {% for entry in audit_entries %}
        <div>{{ entry.msg }}</div>
      {% endfor %}
    </div>

  {% endcall %}
{% endblock %}


{% block sidebar %}
  {%- set content_actions = actions.for_category('documents:content') %}
  {%- if content_actions %}
    {% call m_box_menu() %}
      <ul class="nav nav-list">
        {%- for action in content_actions %}
          <li>{{ action.render() }}</li>
        {%- endfor %}
      </ul>
    {% endcall %}
  {%- endif %}
{% endblock %}


{% block modals %}
  {% include "documents/_modals_folder.html" %}
  {% include "documents/_modals_roles.html" %}
{% endblock %}

{% block js %}
  <script type="text/javascript">
require(
    ['Abilian', 'jquery'],
    function(Abilian, $) {

    Abilian.fn.onAppInit(function() {
      $("#deactivate_inheritance").click(function() {
        var form = $('<form>{{ csrf_token }}<input type="text" name="action" value="deactivate_inheritance" /></form>');
        form.attr("method", "post");
        form.attr("action", "{{ request.path }}");
        $(document.body).append(form);
        form.submit();
      });

      $("#activate_inheritance").click(function() {
        var form = $('<form>{{ csrf_token }}<input type="text" name="action" value="activate_inheritance" /></form>');
        form.attr("method", "post");
        form.attr("action", "{{ request.path }}");
        $(document.body).append(form);
        form.submit();
      });

      $("#user-select").attr("style", "width: 220px").select2({
        minimumInputLength: 2,
        ajax:               {
          url:         "{{ url_for("social.users_json") }}",
          dataType:    'json',
          quietMillis: 100,
          data:        function(term, page) {
            return { q: term };
          },
          results:     function(data, page) {
            return {results: data.results, more: false};
          }
        },
        allowClear:         true
      });
      $("#s2id_user-select a span").text("");
      $("input#user-select").attr("value", "");

    });
});
  </script>
{% endblock %}
