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

View file

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

View file

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

View file

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