diff --git a/src/zona/builder.py b/src/zona/builder.py index 5c8af6b..416edc8 100644 --- a/src/zona/builder.py +++ b/src/zona/builder.py @@ -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, diff --git a/src/zona/data/templates/post_nav.html b/src/zona/data/templates/post_nav.html index 86ac330..1e96ff5 100644 --- a/src/zona/data/templates/post_nav.html +++ b/src/zona/data/templates/post_nav.html @@ -1,9 +1,11 @@
- <{% if previous %}prev{% endif %}{% if previous and next %}|{% endif %}{% if next %}next{% endif - %}> + <{% if newer %}newr{% + else %}null{% endif %}{% if older %}oldr{% else %}null{% endif %}>
diff --git a/src/zona/models.py b/src/zona/models.py index d009476..7f67015 100644 --- a/src/zona/models.py +++ b/src/zona/models.py @@ -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 diff --git a/src/zona/templates.py b/src/zona/templates.py index d5e0f22..4529143 100644 --- a/src/zona/templates.py +++ b/src/zona/templates.py @@ -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, )