diff options
| author | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-07-23 14:39:31 +0200 |
|---|---|---|
| committer | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-07-23 14:39:31 +0200 |
| commit | 4de7f7dca7485c9a6c94f6f86a53d01a974fce54 (patch) | |
| tree | bcdc1ea366a068310e460804c4a5f04df3ae20f4 /internal/web/templates/lookup.html | |
| parent | b72b81c410c161797eb525a6231b0517b4def993 (diff) | |
| download | lectio-4de7f7dca7485c9a6c94f6f86a53d01a974fce54.tar.gz lectio-4de7f7dca7485c9a6c94f6f86a53d01a974fce54.zip | |
web: HTMX server + lectio-web binary
NewServer wires B1's RenderReadings/Themes/themeCSS/embedded static+
templates FS into an http.ServeMux: GET / (full page), GET /readings
(HTMX reading-pane fragment), GET /lookup (bible.Lookup passage search
fragment), GET /theme.css (theme stylesheet, falling back through
cfg.WebTheme to the built-in default on an unknown name), GET /static/.
Run listens on cfg.WebPort (0 = OS-picked free port), prints the URL,
best-effort opens a browser, then serves. cmd/lectio-web is the binary
entry point (config.Load -> web.Run).
Fold-in from the B1 review: hardened themeCSS's name guard to an
explicit ^[A-Za-z0-9_-]+$ allowlist (the old filepath.Base/ContainsAny
check let ".." through), plus guard-rejection and HTML-escaping
regression tests -- B2 is what makes /theme.css?name=<raw> reachable
from the network, so it owns closing this out.
Diffstat (limited to 'internal/web/templates/lookup.html')
| -rw-r--r-- | internal/web/templates/lookup.html | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/internal/web/templates/lookup.html b/internal/web/templates/lookup.html new file mode 100644 index 0000000..c8bc2a7 --- /dev/null +++ b/internal/web/templates/lookup.html @@ -0,0 +1,20 @@ +{{/* lookup.html renders the passage-lookup fragment: one .column per + requested version, each version's matched bible.Verse rows plus any + sub-refs the corpus had no entry for. Structurally mirrors + readings.html's .columns/.column/.block classes so theme CSS restyles + both panes the same way. */}} +{{if .}} +<div class="columns"> + {{range .}} + <div class="column"> + <h3 class="version-label">{{.Version}}</h3> + {{range .Verses}} + <p class="block verse"><span class="vnum">{{.Chapter}}:{{.Verse}}</span> {{.Text}}</p> + {{end}} + {{if .Missing}} + <p class="block error">brak: {{range $i, $m := .Missing}}{{if $i}}, {{end}}{{$m}}{{end}}</p> + {{end}} + </div> + {{end}} +</div> +{{end}} |
