misuzu/views/manage/macros.twig
2018-04-01 00:28:32 +02:00

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">
&laquo;
</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">
&laquo;
</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">
&raquo;
</a>
</li>
{% else %}
<li class="pagination__option pagination__option--next">
<span class="pagination__link pagination__link--next">
&raquo;
</span>
</li>
{% endif %}
</ul>
{% endif %}
{% endmacro %}