misuzu/views/mio/macros.twig

88 lines
4.1 KiB
Twig
Raw Normal View History

2018-03-22 02:56:41 +00:00
{% 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 navigation(links, current, top, fmt) %}
2018-03-22 02:56:41 +00:00
{% set top = top|default(false) == true %}
{% set current = current|default(null) %}
{% set fmt = fmt|default('%s') %}
2018-03-22 02:56:41 +00:00
2018-04-16 00:33:54 +00:00
<ul class="navigation{% if top %} navigation--top{% endif %}">
2018-03-22 02:56:41 +00:00
{% for name, url in links %}
2018-04-16 00:33:54 +00:00
<li class="navigation__option{% if url == current or name == current %} navigation__option--selected{% endif %}"><a href="{{ fmt|format(url) }}" class="navigation__link">{{ name }}</a></li>
2018-03-22 02:56:41 +00:00
{% endfor %}
</ul>
{% endmacro %}
2018-04-16 00:33:54 +00:00
{% macro pagination_segment(url_window, base_url, currentPage, classPrefix) %}
{% for page, url in url_window %}
<li class="{{ classPrefix }}pagination__option{{ currentPage == page ? ' ' ~ classPrefix ~ 'pagination__option--active' : '' }}">
<a href="{{ base_url ~ url|slice(2) }}" class="{{ classPrefix }}pagination__link{{ currentPage == page ? ' ' ~ classPrefix ~ 'pagination__link--active' : '' }}">
{{ page }}
</a>
</li>
{% endfor %}
{% endmacro %}
{% macro paginate(paginator, base_url, classPrefix, alwaysRender) %}
{% set alwaysRender = alwaysRender|default(false) %}
{% if alwaysRender or paginator.lastPage > 1 %}
{% set classPrefix = classPrefix|default('') %}
{% set separator = '%3F' in base_url|default('')|url_encode ? '&' : '?' %}
{% set base_url = base_url ~ separator %}
<ul class="{{ classPrefix }}pagination">
{% if paginator.onFirstPage %}
<li class="{{ classPrefix }}pagination__option {{ classPrefix }}pagination__option--prev">
<span class="{{ classPrefix }}pagination__link {{ classPrefix }}pagination__link--prev">
&laquo;
</span>
</li>
{% else %}
<li class="{{ classPrefix }}pagination__option {{ classPrefix }}pagination__option--prev">
<a href="{{ base_url ~ paginator.previousPageUrl|slice(2) }}" class="{{ classPrefix }}pagination__link {{ classPrefix }}pagination__link--prev" rel="prev">
&laquo;
</a>
</li>
{% endif %}
<li class="{{ classPrefix }}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, classPrefix) }}
<li class="{{ classPrefix }}pagination__separator"></li>
{% endif %}
{% if url_window.slider is iterable %}
{{ pagination_segment(url_window.slider, base_url, paginator.currentPage, classPrefix) }}
<li class="{{ classPrefix }}pagination__separator"></li>
{% endif %}
{% if url_window.last is iterable %}
{{ pagination_segment(url_window.last, base_url, paginator.currentPage, classPrefix) }}
<li class="{{ classPrefix }}pagination__separator"></li>
{% endif %}
{% if paginator.hasMorePages %}
<li class="{{ classPrefix }}pagination__option {{ classPrefix }}pagination__option--next">
<a href="{{ base_url ~ paginator.nextPageUrl|slice(2) }}" class="{{ classPrefix }}pagination__link {{ classPrefix }}pagination__link--next" rel="next">
&raquo;
</a>
</li>
{% else %}
<li class="{{ classPrefix }}pagination__option {{ classPrefix }}pagination__option--next">
<span class="{{ classPrefix }}pagination__link {{ classPrefix }}pagination__link--next">
&raquo;
</span>
</li>
{% endif %}
</ul>
{% endif %}
{% endmacro %}