diff options
Diffstat (limited to 'internal/web/server.go')
| -rw-r--r-- | internal/web/server.go | 29 |
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)) |
