From ec9e1754e4c804776886aa08620a995b799dbd1b Mon Sep 17 00:00:00 2001 From: lichenblankie Date: Fri, 5 Jun 2026 02:07:31 +0000 Subject: [PATCH] cleaner form layout: CSS, forum-form class, remove hardcoded sizes/br tags --- tinyweb_forum/handlers.py | 73 ++++++++++++++++++++++----------------- 1 file changed, 42 insertions(+), 31 deletions(-) diff --git a/tinyweb_forum/handlers.py b/tinyweb_forum/handlers.py index 8d125b0..3ec6bb9 100644 --- a/tinyweb_forum/handlers.py +++ b/tinyweb_forum/handlers.py @@ -16,6 +16,17 @@ def esc(s): return html.escape(str(s)) +FORUM_CSS = """ + +""" + + class ForumHandlers: def __init__(self, fdb, sync, identity, reticulum, site_name="me"): self.fdb = fdb @@ -53,7 +64,7 @@ class ForumHandlers: return { "status": status, "content_type": "text/html; charset=utf-8", - "body": body_html, + "body": FORUM_CSS + body_html, "headers": {}, } @@ -223,14 +234,14 @@ class ForumHandlers: def handle_new_form(self, msg=""): return self._respond( f"

new thread

" - f'
' + f'' f'{self._csrf_field()}' - f'
' - f"max {MAX_TITLE_LENGTH} characters

" - f'

' - f'
' - f"max {MAX_BODY_LENGTH} characters

" - f'

' + f'' + f"max {MAX_TITLE_LENGTH} characters" + f'' + f'' + f"max {MAX_BODY_LENGTH} characters" + f'' f'' f"
" f"

{msg}

" @@ -315,10 +326,10 @@ class ForumHandlers: ) reply_form = ( - f'
' + f'' f'{self._csrf_field()}' - f'
' - f"max {MAX_BODY_LENGTH} characters

" + f'' + f"max {MAX_BODY_LENGTH} characters" f'' f"
" ) @@ -374,14 +385,14 @@ class ForumHandlers: return self._error(403) return self._respond( f"

edit thread

" - f'
' + f'' f'{self._csrf_field()}' - f'
' - f"max {MAX_TITLE_LENGTH} characters

" - f'

' - f'
' - f"max {MAX_BODY_LENGTH} characters

" - f'

' + f'' + f"max {MAX_TITLE_LENGTH} characters" + f'' + f'' + f"max {MAX_BODY_LENGTH} characters" + f'' f'' f"
" f"

{msg}

" @@ -513,50 +524,50 @@ class ForumHandlers: f"

{msg}

" f'

sync now

' f"

auto-discovery

" - f'
' + f'' f'{self._csrf_field()}' f'

" + f" automatically discover other forum instances on the mesh" f'' f"
" f"

auto-sync

" - f'
' + f'' f'{self._csrf_field()}' f'

" + f" automatically sync content every 5 minutes" f'' f"
" f"

storage

" - f'
' + f'' f'{self._csrf_field()}' f'' - f"
Older threads are pruned automatically (default: 30). Set to 0 to keep everything.

" + f"Older threads are pruned automatically (default: 30). Set to 0 to keep everything." f'' f"
" f"

blocked instances

" f"{blocked_items}" - f'
' + f'' f'{self._csrf_field()}' - f'

' + f'' f'' f"
" f"

peer reports

" f"{self._peer_reports_html()}" f"

keyword filters

" - f'
' + f'' f'{self._csrf_field()}' - f'

' + f'' f'' f"
" f"

synced instances

" f"{synced_items}" f"

Instances are discovered automatically via mesh announces. " f"You can also manually add a friend's instance hash to bootstrap.

" - f'
' + f'' f'{self._csrf_field()}' - f'

' - f'

' + f'' + f'' f'' f"
" f'
'