{% macro render_pagination(pagination, pagination_window=2) %} {% set current = pagination.page %} {% set total = pagination.pages %} {% set window_start = [current - pagination_window, 1] | max %} {% set window_end = [current + pagination_window, total] | min %} {% endmacro %} {% macro render_year_archive_navigation( current_year_page, archive_window=2 ) %} {% set current_year = current_year_page.year %} {% set first_year_page = current_year_page.first_year_page %} {% set last_year_page = current_year_page.last_year_page %} {% set previous_year_page = current_year_page.previous_year_page %} {% set next_year_page = current_year_page.next_year_page %} {% set first_year = first_year_page.year %} {% set last_year = last_year_page.year %} {% set window_start = [current_year - archive_window, first_year] | max %} {% set window_end = [current_year + archive_window, last_year] | min %} {% endmacro %} {% macro render_month_archive_navigation( current_month_page, archive_window=2 ) %} {% set year_pages = index_pages('year') | sort(attribute='year') %} {% set ns = namespace( month_pages=[], current_position=none ) %} {% for year_page in year_pages %} {% set ns.month_pages = ns.month_pages + (year_page.subindexes | sort(attribute='month')) %} {% endfor %} {% for month_page in ns.month_pages %} {% if month_page.year == current_month_page.year and month_page.month == current_month_page.month %} {% set ns.current_position = loop.index0 %} {% endif %} {% endfor %} {% set total = ns.month_pages | length %} {% set current_position = ns.current_position %} {% set window_start = [current_position - archive_window, 0] | max %} {% set window_end = [current_position + archive_window, total - 1] | min %} {% set first_month_page = ns.month_pages[0] %} {% set last_month_page = ns.month_pages[total - 1] %} {% set previous_month_page = none %} {% set next_month_page = none %} {% if current_position > 0 %} {% set previous_month_page = ns.month_pages[current_position - 1] %} {% endif %} {% if current_position < total - 1 %} {% set next_month_page = ns.month_pages[current_position + 1] %} {% endif %} {% endmacro %}