Compare commits

...

2 commits

8 changed files with 51 additions and 15 deletions

View file

@ -99,6 +99,13 @@ class ZonaBuilder:
else date.min, else date.min,
reverse=True, reverse=True,
) )
posts = len(post_list)
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
templater = Templater( templater = Templater(
config=self.config, config=self.config,
template_dir=self.layout.templates, template_dir=self.layout.templates,

View file

@ -31,6 +31,18 @@ header {
text-transform: lowercase; text-transform: lowercase;
} }
.post-nav {
font-family: monospace;
}
.post-nav .symbol {
color: var(--main-bullet-color);
}
.post-nav a {
margin: 0 2px;
}
.site-logo { .site-logo {
color: inherit; color: inherit;
font-weight: bold; font-weight: bold;

View file

@ -1,18 +1,12 @@
{% extends "base.html" %} {% block content %} {% extends "base.html" %} {% block content %} {% if metadata.show_title %} {%
include "title.html" %} {% if metadata.date %}
{% if metadata.show_title %}
{% include "title.html" %}
{% if metadata.date %}
<center> <center>
<time class="post-date" datetime="{{ metadata.date | safe }}" <time class="post-date" datetime="{{ metadata.date | safe }}"
>{{ metadata.date | safe}}</time> >{{ metadata.date | safe}}</time>
</center> </center>
{% endif %} {% endif %} {% endif %} {% if is_post %} {% include "post_nav.html" %} {% endif
%}
<hr> <hr>
{% endif %}
<article>{{ content | safe }}</article> <article>{{ content | safe }}</article>
{% endblock %} {% endblock %}

View file

@ -0,0 +1,9 @@
<div class="post-nav">
<center>
<span class="symbol">&lt;</span>{% if previous %}<a
href="{{ previous.url }}"
>prev</a>{% endif %}{% if previous and next %}<span class="symbol"
>|</span>{% endif %}{% if next %}<a href="{{ next.url }}">next</a>{% endif
%}<span class="symbol">&gt;</span>
</center>
</div>

View file

@ -18,6 +18,8 @@ class Metadata:
date: date date: date
description: str | None description: str | None
show_title: bool = True show_title: bool = True
show_date: bool = True
show_nav: bool = True
style: str | None = "/static/style.css" style: str | None = "/static/style.css"
header: bool = True header: bool = True
footer: bool = True footer: bool = True

View file

@ -1,3 +1,5 @@
from __future__ import annotations
from dataclasses import dataclass from dataclasses import dataclass
from enum import Enum from enum import Enum
from pathlib import Path from pathlib import Path
@ -21,6 +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
previous: Item | None = None
# @dataclass # @dataclass

View file

@ -237,11 +237,13 @@ def serve(
observer.schedule( observer.schedule(
event_handler, path=str(root / "content"), recursive=True event_handler, path=str(root / "content"), recursive=True
) )
observer.schedule( templates = root / "templates"
event_handler, if templates.is_dir():
path=str(root / "templates"), observer.schedule(
recursive=True, event_handler,
) path=str(templates),
recursive=True,
)
observer.start() observer.start()
# function to shut down gracefully # function to shut down gracefully

View file

@ -3,6 +3,7 @@ from typing import Literal
from jinja2 import Environment, FileSystemLoader, select_autoescape from jinja2 import Environment, FileSystemLoader, select_autoescape
from zona import util
from zona.config import ZonaConfig from zona.config import ZonaConfig
from zona.markdown import md_to_html from zona.markdown import md_to_html
from zona.models import Item from zona.models import Item
@ -76,5 +77,10 @@ class Templater:
metadata=meta, metadata=meta,
header=header, header=header,
footer=footer, footer=footer,
is_post=item.post,
next=util.normalize_url(item.next.url) if item.next else None,
previous=util.normalize_url(item.previous.url)
if item.previous
else None,
post_list=self.post_list, post_list=self.post_list,
) )