fix post-nav button order

Navigation now follows newer/older logic. click right to go older, left
to go newer.
This commit is contained in:
Daniel Fichtinger 2025-07-15 16:52:58 -04:00
parent fa10a813f2
commit bafe70ed37
4 changed files with 23 additions and 16 deletions

View file

@ -99,6 +99,8 @@ class ZonaBuilder:
def _build(self):
assert self.items
# sort according to date
# descending order
post_list: list[Item] = sorted(
[item for item in self.items if item.post],
key=lambda item: item.metadata.date
@ -106,12 +108,16 @@ class ZonaBuilder:
else date.min,
reverse=True,
)
# number of posts
posts = len(post_list)
# link post chronology
for i, item in enumerate(post_list):
prev = post_list[i - 1] if i > 0 else None
next = post_list[i + 1] if i < posts - 2 else None
item.previous = prev
item.next = next
# prev: older post
older = post_list[i + 1] if i + 1 < posts else None
# next: newer post
newer = post_list[i - 1] if i > 0 else None
item.older = older
item.newer = newer
templater = Templater(
config=self.config,

View file

@ -1,9 +1,11 @@
<div class="post-nav">
<center>
<span class="symbol">&lt;</span>{% if previous %}<a
href="{{ previous }}"
>prev</a>{% endif %}{% if previous and next %}<span class="symbol"
>|</span>{% endif %}{% if next %}<a href="{{ next }}">next</a>{% endif
%}<span class="symbol">&gt;</span>
<span class="symbol">&lt;</span>{% if newer %}<a href="{{ newer }}">newr</a>{%
else %}<span class="placeholder">null</span>{% endif %}<span
class="symbol"
><span class="bar"></span></span>{% if older %}<a href="{{ older }}"
>oldr</a>{% else %}<span class="placeholder">null</span>{% endif %}<span
class="symbol"
>&gt;</span>
</center>
</div>

View file

@ -23,8 +23,8 @@ class Item:
type: ItemType | None = None
copy: bool = True
post: bool = False
next: Item | None = None
previous: Item | None = None
newer: Item | None = None
older: Item | None = None
# @dataclass

View file

@ -27,7 +27,6 @@ def get_footer(template_dir: Path) -> str | None:
return html_footer.read_text()
# TODO: add next/prev post button logic to posts
# TODO: add a recent posts element that can be included elsewhere?
class Templater:
def __init__(
@ -79,11 +78,11 @@ class Templater:
header=header,
footer=footer,
is_post=item.post,
next=util.normalize_url(item.next.url)
if item.next
newer=util.normalize_url(item.newer.url)
if item.newer
else None,
previous=util.normalize_url(item.previous.url)
if item.previous
older=util.normalize_url(item.older.url)
if item.older
else None,
post_list=self.post_list,
)