95 lines
4.8 KiB
Twig
95 lines
4.8 KiB
Twig
{% macro navigation(links, current, top, fmt, align) %}
|
|
{% set top = top|default(false) == true %}
|
|
{% set align = align|default('centre') %}
|
|
{% set current = current|default(null) %}
|
|
{% set fmt = fmt|default('%s') %}
|
|
|
|
<ul class="navigation{% if top %} navigation--top{% endif %}{% if align != 'centre' %} navigation--{{ align }}{% endif %}">
|
|
{% for name, url in links %}
|
|
<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>
|
|
{% endfor %}
|
|
</ul>
|
|
{% endmacro %}
|
|
|
|
{% macro pagination(itemCount, itemRange, currentOffset, baseUrl, alwaysRender, offsetParam, useRanges, pageRange) %}
|
|
{% set alwaysRender = alwaysRender|default(false) %}
|
|
|
|
{% if alwaysRender or itemCount > itemRange %}
|
|
{% set separator = '%3F' in baseUrl|default('')|url_encode ? '&' : '?' %}
|
|
{% set originalUrl = baseUrl %}
|
|
{% set baseUrl = baseUrl ~ separator %}
|
|
{% set pageCount = (itemCount / itemRange)|round(0, 'ceil') %}
|
|
{% set currentPage = currentOffset // itemRange %}
|
|
{% set useRanges = useRanges|default(true) %}
|
|
{% set offsetParam = offsetParam|default(useRanges ? 'o' : 'p') %}
|
|
{% set pageRange = pageRange|default(10) %}
|
|
|
|
<div class="pagination">
|
|
<div class="pagination__section pagination__section--first">
|
|
{% if currentPage < 1 %}
|
|
<div class="pagination__link pagination__link--first pagination__link--disabled">
|
|
<i class="fas fa-angle-double-left"></i>
|
|
</div>
|
|
<div class="pagination__link pagination__link--prev pagination__link--disabled">
|
|
<i class="fas fa-angle-left"></i>
|
|
</div>
|
|
{% else %}
|
|
<a href="{{ originalUrl }}" class="pagination__link pagination__link--first" rel="first">
|
|
<i class="fas fa-angle-double-left"></i>
|
|
</a>
|
|
<a href="{{ currentPage < 2 ? originalUrl : baseUrl ~ offsetParam ~ '=' ~ (useRanges ? ((currentPage - 1) * itemRange) : currentPage) }}" class="pagination__link pagination__link--prev" rel="prev">
|
|
<i class="fas fa-angle-left"></i>
|
|
</a>
|
|
{% endif %}
|
|
</div>
|
|
|
|
<div class="pagination__section pagination__section--pages">
|
|
{% set paginationStart = currentPage - pageRange %}
|
|
{% set paginationStop = currentPage + pageRange %}
|
|
|
|
{% for i in paginationStart..paginationStop %}
|
|
{% if i >= 0 and i < pageCount %}
|
|
<a href="{{ i == 0 ? originalUrl : baseUrl ~ offsetParam ~ '=' ~ (useRanges ? i * itemRange : i + 1) }}" class="pagination__link{{ currentPage == i ? ' pagination__link--current' : '' }}">
|
|
{{ i + 1 }}
|
|
</a>
|
|
{% endif %}
|
|
{% endfor %}
|
|
</div>
|
|
|
|
<div class="pagination__section pagination__section--last">
|
|
{% if currentPage >= pageCount - 1 %}
|
|
<div class="pagination__link pagination__link--next pagination__link--disabled">
|
|
<i class="fas fa-angle-right"></i>
|
|
</div>
|
|
<div class="pagination__link pagination__link--last pagination__link--disabled">
|
|
<i class="fas fa-angle-double-right"></i>
|
|
</div>
|
|
{% else %}
|
|
<a href="{{ baseUrl ~ offsetParam ~ '=' ~ (useRanges ? ((currentPage + 1) * itemRange) : currentPage + 2) }}" class="pagination__link pagination__link--next" rel="next">
|
|
<i class="fas fa-angle-right"></i>
|
|
</a>
|
|
<a href="{{ baseUrl ~ offsetParam ~ '=' ~ (useRanges ? ((pageCount - 1) * itemRange) : pageCount) }}" class="pagination__link pagination__link--last" rel="last">
|
|
<i class="fas fa-angle-double-right"></i>
|
|
</a>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
{% endif %}
|
|
{% endmacro %}
|
|
|
|
{% macro container_title(title, url, raw) %}
|
|
{% set has_url = url is not null and url|length > 0 %}
|
|
|
|
<div class="container__title">
|
|
<div class="container__title__background"></div>
|
|
{% if has_url %}<a href="{{ url }}" class="container__title__link">{% endif %}
|
|
<div class="container__title__text">
|
|
{% if raw %}
|
|
{{ title|raw }}
|
|
{% else %}
|
|
{{ title }}
|
|
{% endif %}
|
|
</div>
|
|
{% if has_url %}</a>{% endif %}
|
|
</div>
|
|
{% endmacro %}
|