aboutsummaryrefslogtreecommitdiffstats
path: root/internal/web/handlers_dashboard.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/web/handlers_dashboard.go')
-rw-r--r--internal/web/handlers_dashboard.go15
1 files changed, 10 insertions, 5 deletions
diff --git a/internal/web/handlers_dashboard.go b/internal/web/handlers_dashboard.go
index a1e0d89..506d28d 100644
--- a/internal/web/handlers_dashboard.go
+++ b/internal/web/handlers_dashboard.go
@@ -3,6 +3,8 @@ package web
import (
"net/http"
"strings"
+
+ "github.com/gramanas/blogspace/internal/i18n"
)
func (s *Server) handleBlogOverview(w http.ResponseWriter, r *http.Request) {
@@ -23,20 +25,23 @@ func (s *Server) handleBlogOverview(w http.ResponseWriter, r *http.Request) {
}
func (s *Server) handleSettingsForm(w http.ResponseWriter, r *http.Request) {
- s.render(w, r, "dashboard/settings.html", nil)
+ s.render(w, r, "dashboard/settings.html", map[string]any{"languages": i18n.Languages()})
}
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."})
+ language := r.FormValue("language")
+ if title == "" || len(title) > 120 || len(tagline) > 300 || !i18n.Valid(language) {
+ s.renderStatus(w, r, http.StatusBadRequest, "dashboard/settings.html",
+ map[string]any{"languages": i18n.Languages(), "error": s.tr(r, "Title is required (max 120 chars); tagline max 300.")})
return
}
- if err := blogStore(r).UpdateSettings(r.Context(), title, tagline); err != nil {
+ if err := blogStore(r).UpdateSettings(r.Context(), title, tagline, language); err != nil {
s.serverError(w, err)
return
}
- redirectOK(w, r, "/b/"+blog.Subdomain+"/settings", "Saved. Refresh your blog to see it.")
+ // The flash speaks the language just chosen, not the one the form was in.
+ redirectOK(w, r, "/b/"+blog.Subdomain+"/settings", i18n.T(language, "Saved. Refresh your blog to see it."))
}