add page navigation

This commit is contained in:
2026-08-06 21:21:01 -07:00
parent b4aec8fbe2
commit 39c3ea3a06
4 changed files with 49 additions and 12 deletions
-1
View File
@@ -11,6 +11,5 @@ This is a very early form of the software, heavily tailored to my site, just to
- More generic templating options, provide CSS - More generic templating options, provide CSS
- Expand content generation to entire site using markdown, templating, and CSS - Expand content generation to entire site using markdown, templating, and CSS
- CSS configuration tool - CSS configuration tool
- Actually be able to navigate past one page (seriously, this thing barely works yet)
- Navigation by dates - Navigation by dates
+1 -1
View File
@@ -18,7 +18,7 @@ def initBlog(db_file):
def newPost(db, title, body): def newPost(db, title, body):
now = datetime.datetime.now() now = datetime.datetime.now()
time = int(now.timestamp() * 1000) time = int(now.timestamp())
db.execute( db.execute(
"INSERT INTO posts (title, body, timestamp) VALUES (?, ?, ?)", "INSERT INTO posts (title, body, timestamp) VALUES (?, ?, ?)",
(title, body, time) (title, body, time)
+45 -10
View File
@@ -1,5 +1,6 @@
import markdown import markdown
import toml import toml
import math
from jinja2 import Environment, PackageLoader from jinja2 import Environment, PackageLoader
from blahblah import bbdb from blahblah import bbdb
from datetime import datetime from datetime import datetime
@@ -20,10 +21,16 @@ except:
sys.exit() sys.exit()
def generateBodies(db): def generateBodies(db):
pageCount = 1
postCount = 0 postCount = 0
perPage = config['formatting']['post_per_page']
documentRoot = config['server']['document_root']
copyrightHolder = config['server']['copyright_holder']
blogRoll = [] blogRoll = []
blobStack = "" blobStack = ""
for p in bbdb.getAllPosts(db): for p in bbdb.getAllPosts(db):
postURLIntro = '<a href="' + documentRoot + "/blog/posts/" + str(p["timestamp"]) + '.html">'
if p["title"] != None: if p["title"] != None:
newPost = '<div class="blobs mainbox blogpost">' newPost = '<div class="blobs mainbox blogpost">'
newPost = newPost + "<h2>" + p["title"] + "</h2><br>" newPost = newPost + "<h2>" + p["title"] + "</h2><br>"
@@ -33,30 +40,58 @@ def generateBodies(db):
bodyText = p["body"] bodyText = p["body"]
if len(bodyText) > 512: if len(bodyText) > 512:
formattedBody = bodyText[0:509] + '...' formattedBody = bodyText[0:512] + postURLIntro + '...[click for full post]' + '</a>'
else: else:
formattedBody = bodyText formattedBody = bodyText
formattedBody = markdown.markdown(formattedBody) formattedBody = markdown.markdown(formattedBody)
bodyText = markdown.markdown(bodyText) bodyText = markdown.markdown(bodyText)
ts = p["timestamp"]
with open("./blog/posts/" + str(p["id"]) + ".html", "w") as f: with open("./blog/posts/" + str(p["timestamp"]) + ".html", "w") as f:
singlePost = newPost + bodyText singlePost = newPost + bodyText
singlePost = singlePost + '<p style="font-size:small;text-align:right">'
singlePost = singlePost + datetime.fromtimestamp(ts).strftime('%B %-d, %Y') + '</p>'
singlePost = singlePost + '</div>' singlePost = singlePost + '</div>'
f.write(postTemplate.render(webRoot=config['server']['document_root'], blogContent=singlePost, siteCopyright=config['server']['copyright_holder'])) f.write(postTemplate.render(webRoot=documentRoot, blogContent=singlePost, siteCopyright=copyrightHolder))
ts = p["timestamp"] / 1000
newPost = newPost + formattedBody newPost = newPost + formattedBody
newPost = newPost + '<p style="font-size:small;text-align:right">' + datetime.fromtimestamp(ts).strftime('%B %-d, %Y ') newPost = newPost + '<p style="font-size:small;text-align:right">' + datetime.fromtimestamp(ts).strftime('%B %-d, %Y ')
newPost = newPost + '<a href="' + config['server']['document_root'] + "/blog/posts/" + str(p["id"]) + '.html">' newPost = newPost + postURLIntro
newPost = newPost + 'link to full post</a></p></div>' newPost = newPost + 'permalink</a></p></div>'
blogRoll.append(newPost) blogRoll.append(newPost)
postCount += 1 postCount += 1
if postCount < config['formatting']['post_per_page']: pageCount = math.ceil(postCount / perPage)
for p in blogRoll:
blobStack = blobStack + p for i in range(1, pageCount + 1):
counter = 0
blobStack = ""
while counter < perPage and len(blogRoll) > 0:
blobStack = blobStack + blogRoll.pop(0)
counter += 1
if i > 1:
prev = '<a href="' + documentRoot + '/page' + str(i-1) + '.html"><p>Page ' + str(i-1) + '</p></a>'
else:
prev = " "
cur = '<p>Page ' + str(i) + '</p>'
if i == pageCount:
following = " "
else:
following = '<a href="' + documentRoot + '/page' + str(i+1) + '.html"><p>Page ' + str(i+1) + '</p></a>'
with open("./blog/page" + str(i) + ".html", "w") as f:
f.write(rollTemplate.render(prevPage=prev, curPage=cur, nextPage=following, webRoot=documentRoot, blogContent=blobStack, siteCopyright=copyrightHolder))
f.close()
with open("./blog/index.html", "w") as f: with open("./blog/index.html", "w") as f:
f.write(rollTemplate.render(webRoot=config['server']['document_root'], blogContent=blobStack, siteCopyright=config['server']['copyright_holder'])) with open("./blog/page1.html", "r") as g:
for line in g:
f.write(line)
g.close()
f.close()
@@ -15,6 +15,9 @@
<div class ="inner-content"> <div class ="inner-content">
<div class ="blogbox"> <div class ="blogbox">
{{ blogContent }} {{ blogContent }}
<div class = "blobs mainbox navi">
<div>{{ prevPage }}</div><div><b>{{ curPage }}</b></div><div>{{ nextPage }} </div>
</div>
</div> </div>
<div class="blobs linkbox"> <div class="blobs linkbox">
<a href="{{ webRoot }}"><p>HOME</p></a><hr> <a href="{{ webRoot }}"><p>HOME</p></a><hr>