diff --git a/cmd/ntech/main.go b/cmd/ntech/main.go index 98703d5..b12082b 100644 --- a/cmd/ntech/main.go +++ b/cmd/ntech/main.go @@ -56,6 +56,7 @@ func main() { r.Get("/dashboard", h.Dashboard) r.Get("/podesavanja", h.Podesavanja) r.Post("/podesavanja/sacuvaj", h.SacuvajPodesavanja) + r.Get("/tema/{tema}", h.PromeniTemu) log.Printf("NTech pokrenut na portu %s", port) err = http.ListenAndServe(":"+port, r) diff --git a/internal/handler/podesavanja.go b/internal/handler/podesavanja.go index 193281d..3bdf827 100644 --- a/internal/handler/podesavanja.go +++ b/internal/handler/podesavanja.go @@ -6,6 +6,8 @@ import ( "ntech/internal/db/sqlite" "ntech/internal/model" + + "github.com/go-chi/chi/v5" ) // PodaciPodesavanja su podaci za stranicu podešavanja @@ -89,3 +91,29 @@ func (h *Handler) SacuvajPodesavanja(w http.ResponseWriter, r *http.Request) { http.Redirect(w, r, "/podesavanja?sacuvano=1", http.StatusSeeOther) } + +// PromeniTemu menja aktivnu temu i vraća na prethodnu stranicu +func (h *Handler) PromeniTemu(w http.ResponseWriter, r *http.Request) { + tema := chi.URLParam(r, "tema") + + // proveravamo da li je validna tema + validne := map[string]bool{ + "tamna": true, "svetla": true, "zelena": true, "ljubicasta": true, + } + if !validne[tema] { + http.Redirect(w, r, "/dashboard", http.StatusSeeOther) + return + } + + if err := sqlite.SacuvajPodesavanje(r.Context(), h.DB, "tema", tema); err != nil { + http.Error(w, "Greška pri promeni teme", http.StatusInternalServerError) + return + } + + // vraćamo se na stranicu sa koje je kliknut dugmić + referer := r.Header.Get("Referer") + if referer == "" { + referer = "/dashboard" + } + http.Redirect(w, r, referer, http.StatusSeeOther) +} diff --git a/web/templates/komponente/topbar.html b/web/templates/komponente/topbar.html index 5e55e45..c3a7131 100644 --- a/web/templates/komponente/topbar.html +++ b/web/templates/komponente/topbar.html @@ -6,8 +6,8 @@