Files
torsearch/templates/partial/paginator.html.twig

53 lines
2.8 KiB
Twig

{% set _currentPage = app.request.query.get('page') ?: 1 %}
{% set _currentRoute = app.request.attributes.get('_route') %}
{% set _lastPage = paginator.lastPage %}
{% set _currentParams = app.request.query.all|merge(app.request.attributes.get('_route_params')) %}
{% if paginator.lastPage > 1 %}
<nav>
<ul class="mt-2 flex flex-row justify-content-center gap-1 py-1 text-white text-sm">
<li class="page-item{{ _currentPage <= 1 ? ' disabled' : '' }}">
<a data-live-action="click->pagination#paginate"
data-live-action-page-value="_currentPage - 1"
class="page-link px-2.5 py-1 rounded-lg bg-orange-500 align-middle" href="{{ path(_currentRoute, _currentParams|merge({page: _currentPage - 1})) }}" aria-label="Previous">
&laquo;
</a>
</li>
{% set startPage = max(1, _currentPage - 2) %}
{% set endPage = min(_lastPage, startPage + 4) %}
{% if startPage > 1 %}
<li class="page-item">
<a data-live-action="click->pagination#paginate"
data-live-action-page-value="1"
class="page-link px-2.5 py-1 rounded-lg bg-orange-500 align-middle" href="{{ path(_currentRoute, _currentParams|merge({page: 1})) }}">1</a>
</li>
{% if startPage > 2 %}
<li class="page-item disabled">
<span class="page-link px-2.5 py-1 rounded-lg bg-orange-500 align-middle">...</span>
</li>
{% endif %}
{% endif %}
{% for i in startPage..endPage %}
<li class="page-item {% if i == _currentPage %}active{% endif %}">
<a class="page-link px-2.5 py-1 rounded-lg bg-orange-500 align-middle" href="#">{{ i }}</a>
</li>
{% endfor %}
{% if endPage < _lastPage %}
{% if endPage < _lastPage - 1 %}
<li class="page-item disabled">
<span class="page-link px-2.5 py-1 rounded-lg bg-orange-500 align-middle">...</span>
</li>
{% endif %}
<li class="page-item">
<a class="page-link px-2.5 py-1 rounded-lg bg-orange-500 align-middle" href="{{ path(_currentRoute, _currentParams|merge({page: _lastPage})) }}">{{ _lastPage }}</a>
</li>
{% endif %}
<li class="page-item {{ _currentPage >= paginator.lastPage ? ' disabled' : '' }}">
<a class="page-link px-2.5 py-1 rounded-lg bg-orange-500 align-middle" href="{{ path(_currentRoute, _currentParams|merge({page: _currentPage + 1})) }}" aria-label="Next">
&raquo;
</a>
</li>
</ul>
</nav>
{% endif %}