summaryrefslogtreecommitdiff
path: root/internal/web/templates/settings.html
diff options
context:
space:
mode:
authorLukasz Kasprzak <lukas@labunix.xyz>2026-07-24 15:01:03 +0200
committerLukasz Kasprzak <lukas@labunix.xyz>2026-07-24 15:01:03 +0200
commit2453b598def94649cc7ce9af7155bfaad40cce12 (patch)
tree0267ac67c2e9d108bcf4b3006d55aaafc5deb8d8 /internal/web/templates/settings.html
parent35f98e0a8a0573d51a4412ec7f60c7de068acfe6 (diff)
downloadlectio-2453b598def94649cc7ce9af7155bfaad40cce12.tar.gz
lectio-2453b598def94649cc7ce9af7155bfaad40cce12.zip
web: /settings page to edit config + books.toml, persisted and applied live; v0.14.0
Diffstat (limited to 'internal/web/templates/settings.html')
-rw-r--r--internal/web/templates/settings.html115
1 files changed, 115 insertions, 0 deletions
diff --git a/internal/web/templates/settings.html b/internal/web/templates/settings.html
new file mode 100644
index 0000000..bea6fb9
--- /dev/null
+++ b/internal/web/templates/settings.html
@@ -0,0 +1,115 @@
+{{/* settings.html — lectio-web /settings page: a form for every config
+ setting plus a raw books.toml editor. A plain POST form (no htmx) --
+ saving redirects (PRG) back here with ?saved=1. On a validation error
+ the form re-renders with the submitted values and an inline message
+ instead of redirecting. Self-contained and theme-aware, like index.html. */}}
+<!doctype html>
+<html lang="{{.Lang}}">
+<head>
+<meta charset="utf-8">
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<title>lectio — settings</title>
+<link rel="stylesheet" href="/static/base.css">
+<link id="theme" rel="stylesheet" href="/theme.css?name={{.Cfg.WebTheme}}">
+<script src="/static/htmx.min.js"></script>
+</head>
+<body{{if .Cfg.WebMono}} class="mono"{{end}}>
+<div class="page">
+
+ <p><a class="nav-link" href="/">&larr; {{.L.BannerReadings}}</a></p>
+
+ {{if .Saved}}<p class="saved">Saved.</p>{{end}}
+ {{if .Error}}<p class="error">{{.Error}}</p>{{end}}
+
+ <form class="settings" method="post" action="/settings">
+
+ <label>{{.L.Lectionary}}
+ <select name="lectionary">
+ <option value="new" {{if eq .Cfg.Lectionary "new"}}selected{{end}}>{{.L.OptModern}}</option>
+ <option value="traditional" {{if eq .Cfg.Lectionary "traditional"}}selected{{end}}>{{.L.OptTraditional}}</option>
+ </select>
+ </label>
+
+ <label>traditional language
+ <select name="traditional_lang">
+ <option value="pl" {{if eq .Cfg.TraditionalLang "pl"}}selected{{end}}>pl</option>
+ <option value="en" {{if eq .Cfg.TraditionalLang "en"}}selected{{end}}>en</option>
+ </select>
+ </label>
+
+ <label>UI language
+ <select name="ui_language">
+ <option value="en" {{if eq .Cfg.UILanguage "en"}}selected{{end}}>en</option>
+ <option value="pl" {{if eq .Cfg.UILanguage "pl"}}selected{{end}}>pl</option>
+ </select>
+ </label>
+
+ <label>sigla style
+ <select name="sigla_style">
+ <option value="auto" {{if eq .Cfg.SiglaStyle "auto"}}selected{{end}}>auto</option>
+ <option value="polish" {{if eq .Cfg.SiglaStyle "polish"}}selected{{end}}>polish</option>
+ <option value="english" {{if eq .Cfg.SiglaStyle "english"}}selected{{end}}>english</option>
+ </select>
+ </label>
+
+ <label>{{.L.Layout}}
+ <select name="web_display">
+ <option value="horizontal" {{if eq .Cfg.WebDisplay "horizontal"}}selected{{end}}>{{.L.OptHorizontal}}</option>
+ <option value="vertical" {{if eq .Cfg.WebDisplay "vertical"}}selected{{end}}>{{.L.OptColumns}}</option>
+ <option value="interlinear" {{if eq .Cfg.WebDisplay "interlinear"}}selected{{end}}>{{.L.OptInterlinear}}</option>
+ </select>
+ </label>
+
+ <label>{{.L.Theme}}
+ <select name="web_theme">
+ {{range .ThemeOpts}}<option value="{{.Name}}" {{if .Selected}}selected{{end}}>{{.Name}}</option>{{end}}
+ </select>
+ </label>
+
+ <label>default version
+ <select name="default_version">
+ {{range .VersionOpts}}<option value="{{.Code}}" {{if eq .Code $.Cfg.DefaultVersion}}selected{{end}}>{{.Code}}</option>{{end}}
+ </select>
+ </label>
+
+ <div class="row">
+ versions
+ {{range .VersionOpts}}<label><input type="checkbox" name="versions" value="{{.Code}}" {{if .Checked}}checked{{end}}> {{.Code}}</label>{{end}}
+ </div>
+
+ <div class="row">
+ web versions
+ {{range .WebVersionOpts}}<label><input type="checkbox" name="web_versions" value="{{.Code}}" {{if .Checked}}checked{{end}}> {{.Code}}</label>{{end}}
+ </div>
+
+ <div class="row">
+ <label><input type="checkbox" name="all" {{if .Cfg.All}}checked{{end}}> {{.L.OptAll}}</label>
+ <label><input type="checkbox" name="offline" {{if .Cfg.Offline}}checked{{end}}> offline</label>
+ <label><input type="checkbox" name="web_mono" {{if .Cfg.WebMono}}checked{{end}}> {{.L.Mono}}</label>
+ </div>
+
+ <label>width
+ <input type="number" name="width" value="{{.Cfg.Width}}">
+ </label>
+
+ <label>web port
+ <input type="number" name="web_port" value="{{.Cfg.WebPort}}">
+ </label>
+
+ <label>pager
+ <input type="text" name="pager" value="{{.Cfg.Pager}}">
+ </label>
+
+ <label>books.toml
+ <textarea name="books" rows="20">{{.Books}}</textarea>
+ </label>
+
+ <div class="row">
+ <button type="submit">Save</button>
+ </div>
+
+ </form>
+
+</div>
+</body>
+</html>