{% extends "tesm_core/base.html" %}
{% from "tesm_core/macros.html" import field, textarea_field, pill, modal, alert, permission_matrix, empty_state %}

{% block page_title %}Gruppen und Rechte{% endblock %}
{% block page_sub %}{{ groups | length }} Gruppen &middot; Rechte addieren sich ueber alle Gruppen eines Benutzers{% endblock %}

{% block topbar_extra %}
  {% if current_user.has('groups.create') %}
    <button class="btn btn--primary btn--sm" type="button" data-dialog-open="group-new">
      {{ icon('plus', size=15) }} Gruppe anlegen
    </button>
  {% endif %}
{% endblock %}

{% block content %}
{{ alert('Wer selbst ein Recht nicht besitzt, kann es auch nicht vergeben. Diese Regel gilt fuer
alle ausser echten Administratoren und verhindert, dass sich ein Gruppenverwalter ueber eine
neue Gruppe selbst hoeherstuft.', 'info', 'Eskalationsschutz') }}

<div class="grid grid--2">
  {% for group in groups %}
    <section class="card">
      <div class="card__header">
        <div class="flex-1">
          <div class="card__title">
            {{ icon('shield-users', size=17) }}
            <a href="{{ url_for('admin.group_detail', group_id=group.id) }}">{{ group.name }}</a>
            {% if group.is_system %}{{ pill('System', 'accent') }}{% endif %}
            {% if group.is_default %}{{ pill('Standard', 'info') }}{% endif %}
          </div>
          <div class="card__sub">
            {{ group.description or 'Ohne Beschreibung' }} &middot;
            {{ group.member_count }} Mitglied{{ '' if group.member_count == 1 else 'er' }}
          </div>
        </div>
        {% if current_user.has('groups.delete') and not group.is_system %}
          <form method="post" action="{{ url_for('admin.group_delete', group_id=group.id) }}" data-no-guard>
            <input type="hidden" name="{{ csrf_field_name }}" value="{{ csrf_token() }}">
            <button class="btn btn--sm btn--ghost danger-text" type="submit"
                    data-confirm="Gruppe {{ group.name }} loeschen? Sie landet im Papierkorb; Mitglieder verlieren die zugehoerigen Rechte."
                    data-confirm-title="Gruppe loeschen" data-confirm-ok="Loeschen"
                    aria-label="Loeschen">{{ icon('trash', size=15) }}</button>
          </form>
        {% endif %}
      </div>
      <div class="card__body">
        {% if summaries[group.id] %}
          <ul class="stack stack--tight fs-sm">
            {% for line in summaries[group.id] %}<li class="muted">{{ line }}</li>{% endfor %}
          </ul>
        {% else %}
          <p class="faint fs-sm">Keine Rechte vergeben &ndash; Mitglieder sehen nur ihr eigenes Konto.</p>
        {% endif %}
      </div>
      <div class="card__footer">
        <a class="btn btn--sm" href="{{ url_for('admin.group_detail', group_id=group.id) }}">
          Rechte bearbeiten
        </a>
      </div>
    </section>
  {% endfor %}
</div>
{% if not groups %}
  {{ empty_state('Keine Gruppen', 'Ohne Gruppen hat niemand ausser Administratoren Rechte.', 'shield-users') }}
{% endif %}
{% endblock %}

{% block dialogs %}
{% if current_user.has('groups.create') %}
  {% call modal('group-new', 'Gruppe anlegen', 'Rechte koennen anschliessend feiner eingestellt werden', 'wide') %}
    <form method="post" action="{{ url_for('admin.group_create') }}">
      <input type="hidden" name="{{ csrf_field_name }}" value="{{ csrf_token() }}">
      <div class="modal__body">
        {{ field('name', 'Name', required=True) }}
        {{ textarea_field('description', 'Beschreibung', rows=2) }}
        {{ permission_matrix(tree, action_meta, {}, disabled=False) }}
      </div>
      <div class="modal__footer">
        <button class="btn" type="button" data-dialog-close>Abbrechen</button>
        <button class="btn btn--primary" type="submit">Anlegen</button>
      </div>
    </form>
  {% endcall %}
{% endif %}
{% endblock %}
