74 lines
3.2 KiB
Twig
74 lines
3.2 KiB
Twig
{% macro link(url, content, class) %}
|
|
{% spaceless %}
|
|
<a href="{{ url }}" {% if '://' in url %} target="_blank" rel="noreferrer noopener"{% endif %} {% if class is defined %}class="{{ class }}"{% endif %}>{{ content|raw }}</a>
|
|
{% endspaceless %}
|
|
{% endmacro %}
|
|
|
|
{% macro pagination_segment(url_window, base_url, currentPage) %}
|
|
{% for page, url in url_window %}
|
|
<li class="pagination__option{{ currentPage == page ? ' pagination__option--active' : '' }}">
|
|
<a href="{{ base_url ~ url|slice(2) }}" class="pagination__link{{ currentPage == page ? ' pagination__link--active' : '' }}">
|
|
{{ page }}
|
|
</a>
|
|
</li>
|
|
{% endfor %}
|
|
{% endmacro %}
|
|
|
|
{% macro paginate(paginator, base_url, className, alwaysRender) %}
|
|
{% set alwaysRender = alwaysRender|default(false) %}
|
|
|
|
{% if alwaysRender or paginator.hasMorePages %}
|
|
{% set separator = '%3F' in base_url|default('')|url_encode ? '&' : '?' %}
|
|
{% set base_url = base_url ~ separator %}
|
|
|
|
<ul class="pagination{{ className is defined and className|length > 0 ? ' ' ~ className : '' }}">
|
|
{% if paginator.onFirstPage %}
|
|
<li class="pagination__option pagination__option--prev">
|
|
<span class="pagination__link pagination__link--prev">
|
|
«
|
|
</span>
|
|
</li>
|
|
{% else %}
|
|
<li class="pagination__option pagination__option--prev">
|
|
<a href="{{ base_url ~ paginator.previousPageUrl|slice(2) }}" class="pagination__link pagination__link--prev" rel="prev">
|
|
«
|
|
</a>
|
|
</li>
|
|
{% endif %}
|
|
|
|
<li class="pagination__separator"></li>
|
|
|
|
{% from _self import pagination_segment %}
|
|
{% set url_window = paginator|create_pagination %}
|
|
|
|
{% if url_window.first is iterable %}
|
|
{{ pagination_segment(url_window.first, base_url, paginator.currentPage) }}
|
|
<li class="pagination__separator"></li>
|
|
{% endif %}
|
|
|
|
{% if url_window.slider is iterable %}
|
|
{{ pagination_segment(url_window.slider, base_url, paginator.currentPage) }}
|
|
<li class="pagination__separator"></li>
|
|
{% endif %}
|
|
|
|
{% if url_window.last is iterable %}
|
|
{{ pagination_segment(url_window.last, base_url, paginator.currentPage) }}
|
|
<li class="pagination__separator"></li>
|
|
{% endif %}
|
|
|
|
{% if paginator.hasMorePages %}
|
|
<li class="pagination__option pagination__option--next">
|
|
<a href="{{ base_url ~ paginator.nextPageUrl|slice(2) }}" class="pagination__link pagination__link--next" rel="next">
|
|
»
|
|
</a>
|
|
</li>
|
|
{% else %}
|
|
<li class="pagination__option pagination__option--next">
|
|
<span class="pagination__link pagination__link--next">
|
|
»
|
|
</span>
|
|
</li>
|
|
{% endif %}
|
|
</ul>
|
|
{% endif %}
|
|
{% endmacro %}
|