summaryrefslogtreecommitdiff
path: root/internal/web/server.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/web/server.go')
-rw-r--r--internal/web/server.go29
1 files changed, 22 insertions, 7 deletions
diff --git a/internal/web/server.go b/internal/web/server.go
index 667e986..6393076 100644
--- a/internal/web/server.go
+++ b/internal/web/server.go
@@ -89,13 +89,18 @@ func shiftDate(date string, days int) string {
}
// requestVersions returns the versions requested via one or more repeated
-// ?v= query params, falling back to a single cfg.DefaultVersion (not the
-// full cfg.Versions set) when none were given, so a plain visit checks
-// exactly one version box.
+// ?v= query params. The controls form always submits a hidden "vset" marker,
+// so a request that carries "vset" but no "v" means the user unchecked EVERY
+// version -- return none (the pane then shows nothing). A request with neither
+// (a fresh visit or a bare link) falls back to cfg.WebVersions, else a single
+// cfg.DefaultVersion, so a plain visit checks exactly one box.
func requestVersions(cfg config.Config, r *http.Request) []string {
if vs, ok := r.URL.Query()["v"]; ok && len(vs) > 0 {
return vs
}
+ if r.URL.Query().Has("vset") {
+ return nil // form submitted with every box unchecked
+ }
if len(cfg.WebVersions) > 0 {
return append([]string(nil), cfg.WebVersions...)
}
@@ -214,8 +219,15 @@ func indexHandler(cfg config.Config) http.HandlerFunc {
theme = cfg.WebTheme
}
- secs, dayInfo, loadVersions, err := loadSections(cfg, lectionary, date, all, versions)
- reading := renderOrError(secs, loadVersions, lectionary, display, cfg.UILanguage, dayInfo, err)
+ // No version selected -> fetch nothing and show nothing (empty pane, no
+ // day-info/headings); loadVersions stays nil so no box is checked.
+ var reading template.HTML
+ var loadVersions []string
+ if len(versions) > 0 {
+ secs, dayInfo, lv, err := loadSections(cfg, lectionary, date, all, versions)
+ loadVersions = lv
+ reading = renderOrError(secs, lv, lectionary, display, cfg.UILanguage, dayInfo, err)
+ }
// Check the boxes for the versions actually rendered (loadVersions),
// not the raw request: traditional/offline substitute pl->wuj, so the
@@ -264,8 +276,11 @@ func readingsHandler(cfg config.Config) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
date, lectionary, all, versions, display := resolveQuery(cfg, r)
- secs, dayInfo, loadVersions, err := loadSections(cfg, lectionary, date, all, versions)
- reading := renderOrError(secs, loadVersions, lectionary, display, cfg.UILanguage, dayInfo, err)
+ var reading template.HTML
+ if len(versions) > 0 {
+ secs, dayInfo, loadVersions, err := loadSections(cfg, lectionary, date, all, versions)
+ reading = renderOrError(secs, loadVersions, lectionary, display, cfg.UILanguage, dayInfo, err)
+ }
w.Header().Set("Content-Type", "text/html; charset=utf-8")
io.WriteString(w, string(reading))