diff options
| author | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-07-24 15:16:47 +0200 |
|---|---|---|
| committer | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-07-24 15:16:47 +0200 |
| commit | 1e4939874a14d8abb13e82b2273bfc5f9d653295 (patch) | |
| tree | 9c9eecb37fad3dc78d5bd8f58bc405d6f9cbd672 /internal/web/templates | |
| parent | e6665bd3f9ae011f65788004e4eab4472a461e8f (diff) | |
| download | lectio-1e4939874a14d8abb13e82b2273bfc5f9d653295.tar.gz lectio-1e4939874a14d8abb13e82b2273bfc5f9d653295.zip | |
bookmarks: web reader bookmarks with notes + tags (add/list/filter/jump/delete); v0.15.0
Diffstat (limited to 'internal/web/templates')
| -rw-r--r-- | internal/web/templates/bookmarks.html | 50 | ||||
| -rw-r--r-- | internal/web/templates/index.html | 1 | ||||
| -rw-r--r-- | internal/web/templates/reader.html | 9 |
3 files changed, 60 insertions, 0 deletions
diff --git a/internal/web/templates/bookmarks.html b/internal/web/templates/bookmarks.html new file mode 100644 index 0000000..f51515b --- /dev/null +++ b/internal/web/templates/bookmarks.html @@ -0,0 +1,50 @@ +{{/* bookmarks.html — lectio-web /bookmarks page: the saved book+chapter + bookmarks (note + tags), filterable by tag, each with an "open" link + back into the reader and its own delete form. A plain page like + index.html/settings.html's head; no htmx round trip needed for the + list itself (a plain GET with ?tag=), each delete is its own POST form. */}} +<!doctype html> +<html lang="{{.Lang}}"> +<head> +<meta charset="utf-8"> +<meta name="viewport" content="width=device-width, initial-scale=1"> +<title>lectio — bookmarks</title> +<link rel="stylesheet" href="/static/base.css"> +<link id="theme" rel="stylesheet" href="/theme.css"> +</head> +<body> +<div class="page"> + + <p> + <a class="nav-link" href="/reader">← reader</a> + <a class="nav-link" href="/">home</a> + </p> + + <nav class="tag-filter"> + <a class="nav-link{{if eq .Tag ""}} active{{end}}" href="/bookmarks">all</a> + {{range .AllTags}} + <a class="nav-link{{if eq $.Tag .}} active{{end}}" href="/bookmarks?tag={{.}}">{{.}}</a> + {{end}} + </nav> + + {{if not .Items}} + <p>No bookmarks yet.</p> + {{else}} + <div class="bookmarks"> + {{range .Items}} + <div class="bookmark"> + <a href="/reader?book={{.Book}}&chap={{.Chapter}}">{{.Display}} {{.Chapter}}</a> + {{if .Note}}<span class="note">{{.Note}}</span>{{end}} + {{if .Tags}}<span class="tags">{{range .Tags}}#{{.}} {{end}}</span>{{end}} + <form method="post" action="/bookmarks/delete"> + <input type="hidden" name="id" value="{{.ID}}"> + <button type="submit">delete</button> + </form> + </div> + {{end}} + </div> + {{end}} + +</div> +</body> +</html> diff --git a/internal/web/templates/index.html b/internal/web/templates/index.html index 3058746..d3416e9 100644 --- a/internal/web/templates/index.html +++ b/internal/web/templates/index.html @@ -63,6 +63,7 @@ <a class="nav-link" href="/reader">{{.L.NavReader}} →</a> <a class="nav-link" href="/settings">settings</a> + <a class="nav-link" href="/bookmarks">bookmarks</a> </form> <label class="theme-picker">{{.L.Theme}} diff --git a/internal/web/templates/reader.html b/internal/web/templates/reader.html index af29e65..7e506c2 100644 --- a/internal/web/templates/reader.html +++ b/internal/web/templates/reader.html @@ -21,6 +21,7 @@ hx-get="/reader" hx-target="#reader-root" hx-select="#reader-root" hx-swap="outerHTML" hx-trigger="change"> <a class="nav-link" href="/">← {{.L.BannerReadings}}</a> <a class="nav-link" href="/settings">settings</a> + <a class="nav-link" href="/bookmarks">bookmarks</a> <label>{{.L.WebBook}} <select name="book"> @@ -54,6 +55,14 @@ </label> </form> + <form class="bookmark-add" method="post" action="/reader/bookmark"> + <input type="hidden" name="book" value="{{.Book}}"> + <input type="hidden" name="chap" value="{{.Chap}}"> + <input type="text" name="note" placeholder="note"> + <input type="text" name="tags" placeholder="tags, comma-separated"> + <button type="submit">★ bookmark</button> + </form> + {{/* #pane is OUTSIDE the form so its reading text inherits body's --font-reading (mono-responsive), not the form's --font-ui. It stays inside #reader-root so an hx-select swap re-renders it with the controls. */}} |
