diff options
Diffstat (limited to 'internal/web/server.go')
| -rw-r--r-- | internal/web/server.go | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/internal/web/server.go b/internal/web/server.go index 92cb758..7d9dfe5 100644 --- a/internal/web/server.go +++ b/internal/web/server.go @@ -72,7 +72,7 @@ func NewServer(cfg config.Config) http.Handler { mux.HandleFunc("GET /calendar", func(w http.ResponseWriter, r *http.Request) { calendarHandler(s.get())(w, r) }) mux.HandleFunc("GET /api/calendar.json", func(w http.ResponseWriter, r *http.Request) { apiCalendarJSONHandler(s.get())(w, r) }) mux.HandleFunc("GET /calendar.ics", func(w http.ResponseWriter, r *http.Request) { calendarICSHandler(s.get())(w, r) }) - mux.HandleFunc("GET /reader", func(w http.ResponseWriter, r *http.Request) { readerHandler(s.get(), s.table())(w, r) }) + mux.HandleFunc("GET /reader", func(w http.ResponseWriter, r *http.Request) { readerHandler(s.get(), s.table(), s.bm)(w, r) }) mux.HandleFunc("GET /theme.css", func(w http.ResponseWriter, r *http.Request) { themeCSSHandler(s.get())(w, r) }) mux.HandleFunc("GET /source", sourceHandler) mux.HandleFunc("GET /settings", settingsGet(s)) @@ -500,7 +500,7 @@ type chapOpt struct { // navigation and corpus-version compare, rendering the same reading-pane // templates/themes as the daily view. The controls form re-fetches /reader and // hx-selects #reader-root, so book/chapter/version selects stay in sync. -func readerHandler(cfg config.Config, tbl *bible.BookTable) http.HandlerFunc { +func readerHandler(cfg config.Config, tbl *bible.BookTable, bm *bookmarks.Store) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { books := tbl.Books(cfg.SiglaLang()) if len(books) == 0 { // defensive: embedded table always has books @@ -525,7 +525,18 @@ func readerHandler(cfg config.Config, tbl *bible.BookTable) http.HandlerFunc { theme = cfg.WebTheme } - reading := RenderPassage(info.Canonical, info.Name, chap, versions, display, cfg.UILanguage) + // Verses in this book+chapter that carry a bookmark get a red "*". + marked := map[string]bool{} + if bm != nil { + if all, err := bm.List(""); err == nil { + for _, b := range all { + if b.Book == info.Canonical && b.Chapter == chap { + marked[fmt.Sprintf("%d:%d", b.Chapter, b.Verse)] = true + } + } + } + } + reading := RenderPassage(info.Canonical, info.Name, chap, versions, display, cfg.UILanguage, marked) bookOpts := make([]bookOpt, 0, len(books)) for _, b := range books { @@ -807,11 +818,10 @@ func settingsPost(s *server) http.HandlerFunc { cfg.Versions = r.PostForm["versions"] cfg.WebVersions = r.PostForm["web_versions"] cfg.All = r.PostForm.Get("all") != "" - cfg.Offline = r.PostForm.Get("offline") != "" cfg.WebMono = r.PostForm.Get("web_mono") != "" - cfg.Width = atoiOr(r.PostForm.Get("width"), cfg.Width) cfg.WebPort = atoiOr(r.PostForm.Get("web_port"), cfg.WebPort) - cfg.Pager = r.PostForm.Get("pager") + // offline, width and pager are not web-editable; their config values are + // preserved (the form no longer carries those fields). booksText := r.PostForm.Get("books") |
