{% extends "admin/layout.html" %} {% block title %}{{ resource.plural_label }}{% endblock %} {% block content %} {# Valeurs de repli : le contrôleur les fournit toutes, mais un gabarit surchargé ou un rendu partiel ne doit pas produire une 500. #} {% set filters = filters | default({}) %} {% set search = search | default('') %} {% set sort = sort | default('') %} {% set descending = descending | default(false) %} {% set criteria_query = criteria_query | default('') %}

← Tableau de bord

{{ resource.plural_label }}

{% if resource.search_fields or resource.filter_fields %}
{% if resource.search_fields %} {% endif %} {% for champ in resource.filter_fields %} {% endfor %} {# Le tri suit le formulaire : sans ces champs, filtrer le remettrait à zéro. #} {% if sort %}{% endif %} {% if descending %}{% endif %} {% if search or filters %} Tout afficher {% endif %}
{% endif %} {# Actions groupées : la colonne de cases n'apparaît QUE si la ressource en déclare (ADMIN-BULK-ACTIONS-001). Une case offerte sans qu'on l'ait demandée invite à un geste irréversible sur une table qu'on croyait en lecture. #} {% set actions_groupees = resource.bulk_delete or resource.bulk_transitions %} {% if rows %}
{% if actions_groupees %}{% endif %} {% for column in columns %} {% endfor %} {% for row in rows %} {% if actions_groupees %} {% endif %} {% for column in columns %}{% endfor %} {% endfor %}
{# Trier sur la colonne déjà triée en inverse le sens. #} {{ column }}{% if column == sort %}{{ ' ▼' if descending else ' ▲' }}{% endif %}
{{ row[column] }}
{% if actions_groupees %}
Sur la sélection {% if resource.bulk_delete %} {% endif %} {% for depuis, vers in resource.bulk_transitions %} {% endfor %} {# Aucune action ne s'applique directement : toutes passent par la page de confirmation, comme la suppression unitaire. #}
{% endif %}
{% else %}

{% if search or filters %}Aucune ligne ne correspond.{% else %}Aucune ligne.{% endif %}

{% endif %} {% endblock %}