{# This Template Shows the Individual Blog Posts#}

{% extends "base.html" %}

{%- block seo %}
  {{- super() }}
  {%- set title_addition = "" %}
  {%- if page.title and config.title %}
    {%- set title = page.title %}
    {%- set title_addition = title_separator ~ config.title %}
  {%- elif page.title %}
    {%- set title = page.title %}
  {%- else %}
    {%- set title = config.title %}
  {%- endif %}

  {%- if page.description %}
    {%- set description = page.description %}
  {%- else %}
    {%- set description = config.description %}
  {%- endif %}
  {%- set created_time = page.date %}
  {%- set updated_time = page.updated %}
  {%- if current_section %}
    {%- set page_section = current_section %}
  {%- else %}
    {%- set page_section = "" %}
  {%- endif %}

  {{- macros_seo::seo(config=config, title=title, title_addition=title_addition, description=description, type="article", is_page=true, created_time=created_time, updated_time=updated_time, page_section=page_section) }}
{%- endblock seo %}

{%- block comments_init %}
  {%- if config.extra.comments.hyvor %}
  <script defer src="https://talk.hyvor.com/embed/embed.js" type="module"></script>
  {%- endif %}
{%- endblock comments_init %}

{%- block content %}
    <article>
    {{- macros::title_post(page=page, config=config) }}

    {%- if config.extra.meta_post.position %}
    {%- if config.extra.meta_post.position == "top" or config.extra.meta_post.position == "both" %}
    {{- macros::meta_post(page=page, config=config) }}
    {%- endif %}{%- endif %}

    {# In Page Series Navigation #}
    {%- if config.extra.series | default(value=true) %}
    {%- if page.extra.series %}

      {%- set tag = get_taxonomy_term(kind="tags", term=page.extra.series, lang=lang) %}
      {%- set page_num = tag.page_count | as_str %}

        {%- if lang != config.default_language %}
          {%- set parts_string = macros::translate(key='Series_parts', default='Series', i18n=i18n) | replace(from="$NUMBER_OF_PARTS", to=page_num) %}
        {% else %}
          {%- set parts_string = config.extra.Series_parts | default(value="Series") | replace(from="$NUMBER_OF_PARTS", to=page_num) %}
        {% endif -%}

    <div class="block">
      <div class="blockdiv">
        <a class="b s150" href="{{ tag.permalink | safe }}{%- if uglyurls %}index.html{%- endif %}">{{ tag.name }} ({{ parts_string }})</a>
        <ol>
        {%- for inner in tag.pages | sort(attribute="date") %}
          {%- if inner.content == page.content %}
            <li><a class="scur" href="{{ inner.permalink | safe }}{%- if uglyurls %}index.html{%- endif %}">{{ inner.title }}</a></li>
            {%- set_global current_section_index = loop.index0 %} {# Finds the current section, needed for pagination logic later #}
          {% else %}
            <li><a href="{{ inner.permalink | safe }}{%- if uglyurls %}index.html{%- endif %}">{{ inner.title }}</a></li>
          {%- endif %}
        {%- endfor %}
        </ol>
      </div>
    </div>
    {%- endif %}
    {%- endif %}


{{ page.content | safe }}

    {%- if config.extra.meta_post.position %}
    {%- if config.extra.meta_post.position == "bottom" or config.extra.meta_post.position == "both" %}
    {{- macros::meta_post(page=page, config=config) }}
    {%- endif %}{%- endif %}

    {%- block page_footer %}
    {{- macros::footer(page=page, config=config) }}
    {%- endblock page_footer %}

    {%- block comments_body %}
    {%- if config.extra.comments.hyvor %}
    <hyvor-talk-comments website-id={{ config.extra.comments.hyvor }} page-id={{ page.slug }}{%- if config.extra.comments.hyvorcolor %} colors="{{ config.extra.comments.hyvorcolor }}"{%- endif %}></hyvor-talk-comments>
    {%- endif %}
    {%- endblock comments_body %}
    </article>
    {%- block toc %}
    {%- if config.extra.toc | default(value=true) %}
    {%- if page.extra.toc %}
    {%- set toc = page.toc %}
    {%- endif %}
    {%- if toc or page.extra.series %}

    <div class="sblock">
      {%- if page.extra.series %}
      {%- set num_extra_pages = config.extra.series_items | default(value=9) %}
      <div class="blockdiv">
        <a class="b s150" href="{{ tag.permalink | safe }}{%- if uglyurls %}index.html{%- endif %}">{{ parts_string }}</a>
        <ol>
        {%- if tag.page_count > num_extra_pages and num_extra_pages > 0 %}
          {%- set sorted_array = tag.pages | sort(attribute="date") %}
          {%- set num_pages = tag.page_count %}

          {# Shows the first page #}
          {{ macros::series_link(inner=sorted_array.0, page=page, config=config) }}

          {# Hides the next couple of pages if the current section is more than 3 away from start #}
          {%- if current_section_index > 3 %}
            <details>
              <summary>More...</summary>
            </details>
            <div class="hidden_li">
              {%- for inner in sorted_array | slice(start=1, end=(current_section_index - 2)) %}
                <li><a href="{{ inner.permalink | safe }}{%- if uglyurls %}index.html{%- endif %}">{{ inner.title }}</a></li>
              {%- endfor %}
            </div>
          {%- endif %}

          {# Max(current_section_index - 2, 1) #}
          {%- if (current_section_index - 2 ) > 1 %}
            {%- set num = current_section_index - 2 %}
          {%- else %}
            {%- set num = 1 %}
          {%- endif %}

          {# Shows two pages before current page #}
          {%- for inner in sorted_array | slice(start=num, end=current_section_index) %}
            <li><a href="{{ inner.permalink | safe }}{%- if uglyurls %}index.html{%- endif %}">{{ inner.title }}</a></li>
          {%- endfor %}

          {# Shows the current page #}
          {%- if current_section_index != 0 and current_section_index != (num_pages - 1) %}
            {{ macros::series_link(inner=sorted_array[current_section_index], page=page, config=config) }}
          {%- endif %}

          {# Min(num_pages - 1, current_section_index + 3) #}
          {%- if (num_pages - 2 ) < (current_section_index + 3) %}
            {%- set num = num_pages - 1 %}
          {%- else %}
            {%- set num = current_section_index + 3 %}
          {%- endif %}

          {%- for inner in sorted_array | slice(start=(current_section_index + 1), end=num ) %}
            <li><a href="{{ inner.permalink | safe }}{%- if uglyurls %}index.html{%- endif %}">{{ inner.title }}</a></li>
          {%- endfor %}

          {%- if current_section_index < num_pages - 4 %}
            <details>
              <summary>More...</summary>
            </details>
            <div class="hidden_li">
              {%- for inner in sorted_array | slice(start=(current_section_index + 3), end=(num_pages - 1)) %}
                <li><a href="{{ inner.permalink | safe }}{%- if uglyurls %}index.html{%- endif %}">{{ inner.title }}</a></li>
              {%- endfor %}
            </div>
          {%- endif %}

        {%- set last = num_pages - 1%}
        {{ macros::series_link(inner=sorted_array[last], page=page, config=config) }}

        {# If there is not more than max pages render normally #}
        {%- else %}
          {%- for inner in tag.pages | sort(attribute="date") %}
            {{ macros::series_link(inner=inner, page=page, config=config) }}
          {%- endfor %}
        {%- endif %}
        </ol>
      </div>
      {%- endif %}

      {%- if toc %}
      <div class="blockdiv sticky">
        <a class="b s150" href="#">{{ macros::translate(key="Index", default="Index", i18n=i18n) }}</a>
        {%- for h in toc %}
        <div>
          <a href="#{{h.id | safe}}">{{ h.title }}</a>
        </div>
        {%- if h.children %}
        {%- for h2 in h.children %}
        <div class="hpad">
          <a href="#{{h2.id | safe}}"><small>- {{ h2.title }}</small></a>
        </div>
        {%- endfor %}
        {%- endif %}
        {%- endfor %}
      </div>
    </div>
    {%- endif %}
    {%- endif %}
    {%- endif %}
    {%- endblock toc %}

{%- endblock content %}

{%- block gotop %}

{%- if page.reading_time %}
{%- if page.reading_time > 2 %}
{%- set icon_top=config.extra.icon_top | default(value="svgs svgh angu") -%}
<span class="topout">
<span class="topleft"> </span><a href="#" class="top" title="Back to Top">{%- if icon_top %}<i class="{{ icon_top }}"></i>{%- else %}&cuwed;{%- endif %}</a>
</span>
{%- endif %}
{%- endif %}

{%- endblock gotop %}
