package web import ( "net/http" "strings" ) func (s *Server) handleBlogOverview(w http.ResponseWriter, r *http.Request) { blog := currentBlog(r) pages, err := s.st.ListPages(r.Context(), blog.ID) if err != nil { s.serverError(w, err) return } posts, err := s.st.ListPosts(r.Context(), blog.ID, 0) if err != nil { s.serverError(w, err) return } if len(posts) > 5 { posts = posts[:5] } s.render(w, r, "dashboard/overview.html", map[string]any{"pages": pages, "posts": posts}) } func (s *Server) handleSettingsForm(w http.ResponseWriter, r *http.Request) { s.render(w, r, "dashboard/settings.html", nil) } func (s *Server) handleSettings(w http.ResponseWriter, r *http.Request) { blog := currentBlog(r) title := strings.TrimSpace(r.FormValue("title")) tagline := strings.TrimSpace(r.FormValue("tagline")) if title == "" || len(title) > 120 || len(tagline) > 300 { s.renderStatus(w, r, http.StatusBadRequest, "dashboard/settings.html", map[string]any{"error": "Title is required (max 120 chars); tagline max 300."}) return } if err := s.st.UpdateBlogSettings(r.Context(), blog.ID, title, tagline); err != nil { s.serverError(w, err) return } redirectOK(w, r, "/b/"+blog.Subdomain+"/settings", "Saved. Refresh your blog to see it.") }