From 7d1524e27096d10789faa1175ebc0746c8e13ce6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sergio=20Mart=C3=ADnez=20Portela?= Date: Sun, 17 Sep 2023 17:17:30 +0200 Subject: [PATCH] Add links to older/newer sections of archive. --- scripts/blog.py | 13 ++++++++++++- static/blog_index.tmpl.html | 13 +++++++++++++ static/style.css | 19 +++++++++++++++++++ 3 files changed, 44 insertions(+), 1 deletion(-) diff --git a/scripts/blog.py b/scripts/blog.py index 6ca49af..df2b009 100644 --- a/scripts/blog.py +++ b/scripts/blog.py @@ -282,7 +282,9 @@ def summarize(doc): def render_index(docs, dest_top): docs = sorted(docs.values(), key=lambda x: x[1]['date'], reverse=True) - for off in range(0, len(docs), BLOG_INDEX_PAGE_SIZE): + index_ranges = range(0, len(docs), BLOG_INDEX_PAGE_SIZE) + + for off in index_ranges: page = docs[off: off + BLOG_INDEX_PAGE_SIZE] posts = [ @@ -297,8 +299,17 @@ def render_index(docs, dest_top): for (doc, front_matter, out_path) in page ] + prev_index_num = None + next_index_num = off // BLOG_INDEX_PAGE_SIZE + 1 + if off > 0: + prev_index_num = off // BLOG_INDEX_PAGE_SIZE - 1 + if next_index_num >= len(index_ranges): + next_index_num = None + result = BLOG_INDEX_TEMPLATE.render( posts=posts, + prev_index_num=prev_index_num, + next_index_num=next_index_num, ) if off == 0: diff --git a/static/blog_index.tmpl.html b/static/blog_index.tmpl.html index df6a1a3..c34c0ec 100644 --- a/static/blog_index.tmpl.html +++ b/static/blog_index.tmpl.html @@ -48,5 +48,18 @@ {% endfor %} +
+ {% if prev_index_num != None %} + {% if prev_index_num == 0 %} + Newer posts + {% else %} + Newer posts + {% endif %} + {% endif %} + + {% if next_index_num %} + Older posts + {% endif %} +
diff --git a/static/style.css b/static/style.css index aed3372..e79db77 100644 --- a/static/style.css +++ b/static/style.css @@ -466,6 +466,24 @@ article.post { margin-bottom: 1em; padding-bottom: 1em; border-bottom: #000 1px dashed; +.index-pages { + display: block; + margin: 0 auto; + width: fit-content; +} +.index-pages a { + padding: 1ex; + display: inline-block; + background-color: #024; + color: #fff; + border-radius: 4px; +} + +.older-posts::after { + content: ' >'; +} +.newer-posts::before { + content: '< '; } /* Tables. */ @@ -485,6 +503,7 @@ tr.__table-separator { height: auto; } + .connections svg #graph0 > polygon { /* Main box */ fill: transparent;