{#
 # Affiche le composant de pagination.
 # Celui-ci permet d'accéder :
 # - à la première page (<a href>)
 # - à la page précédente (<a href>)
 # - à n'importe quelle page (<input type="text">)
 # - à la page suivante (<a href>)
 # - à la dernière page (<a href>)
 # Afin de fonctionner, ce composant nécessite que la variable suivante lui soit passée en paramètre :
 # - pages : nombre total de pages
 # De plus, l'avancée dans la pagination s'effectue via le paramètre de route 'page'. S'il n'existe pas, sa valeur est considérée comme égale à 1.
 # Enfin, ce composant transmet toute variable contenue dans l'URL lors d'un changement de page. Ainsi,
 # il est possible de naviguer parmi les pages de résultats d'une recherche si les paramètres de celle-ci sont présents
 # dans l'URL.
 #}
{% if pages is defined and pages > 1 %}
    {% set pageCurrent = app.request.attributes.get('page') ?? 1 %}

    {% spaceless %}
        {% set route = app.request.attributes.get('_route') %}
        {% set route_args = app.request.attributes.get('_route_params')|merge(app.request.query.all) %}

        <ul class="pagination">
            {# Première page #}
            <li class="pagination-first{% if pageCurrent == 1 %} pagination-disabled{% endif %}">
                {% if pageCurrent > 1 %}
                    <a href="{{ path(route, route_args|merge({page:1})) }}" title="Première page">
                {% else %}
                    <span>
                {% endif %}

                <svg class="icon icon-pagination-last"><use xlink:href="#icon-pagination-last"></use></svg>

                {% if pageCurrent > 1 %}
                    </a>
                {% else %}
                    </span>
                {% endif %}
            </li>

            {# Page précédente #}
            <li class="pagination-previous{% if pageCurrent == 1 %} pagination-disabled{% endif %}">
                {% if pageCurrent > 1 %}
                    <a href="{{ path(route, route_args|merge({page:pageCurrent - 1})) }}" title="Page précédente">
                {% else %}
                    <span>
                {% endif %}

                <svg class="icon icon-pagination-next"><use xlink:href="#icon-pagination-next"></use></svg>

                {% if pageCurrent > 1 %}
                    </a>
                {% else %}
                    </span>
                {% endif %}
            </li>

            {# Page actuelle #}
            <li class="pagination-current">
                <form action="{{ path('admin_search', {route:route}) }}" method="get">
                    {#
                     # Les champs cachés permettent de transmettre les paramètres de l'url au contrôleur de recherche
                     # lors de la soumission du formulaire. Sans eux, les paramètres ne seraient pas transmis.
                     #}
                    {% for param_name, param_value in route_args %}
                        <input name="{{ param_name }}" type="hidden" value="{{ param_value }}"/>
                    {% endfor %}
                    Page&nbsp;<input type="number" max="{{ pages }}" min="1" name="page" value="{{ pageCurrent }}"/> sur {{ pages }}
                </form>
            </li>

            {# Page suivante #}
            <li class="pagination-next{% if pageCurrent == pages %} pagination-disabled{% endif %}">
                {% if pageCurrent < pages %}
                    <a href="{{ path(route, route_args|merge({page:pageCurrent + 1})) }}" title="Page suivante">
                {% else %}
                    <span>
                {% endif %}

                <svg class="icon icon-pagination-next"><use xlink:href="#icon-pagination-next"></use></svg>

                {% if pageCurrent < pages %}
                    </a>
                {% else %}
                    </span>
                {% endif %}
            </li>

            {# Dernière page #}
            <li class="pagination-last{% if pageCurrent == pages %} pagination-disabled{% endif %}">
                {% if pageCurrent < pages %}
                    <a href="{{ path(route, route_args|merge({page:pages})) }}" title="Dernière page">
                {% else %}
                    <span>
                {% endif %}

                <svg class="icon icon-pagination-last"><use xlink:href="#icon-pagination-last"></use></svg>
                
                {% if pageCurrent < pages %}
                    </a>
                {% else %}
                    </span>
                {% endif %}
            </li>
        </ul>
    {% endspaceless %}
{% endif %}