package handler import ( "html/template" "net/http" "ntech/internal/db/sqlite" "ntech/internal/model" "github.com/go-chi/chi/v5" ) // PodaciPodesavanja su podaci za stranicu podešavanja type PodaciPodesavanja struct { model.PodaciStranice NazivFirme string Podnazlov string LogoTip string LogoPutanja string Tema string Sacuvano bool } // Podesavanja renderuje stranicu podešavanja func (h *Handler) Podesavanja(w http.ResponseWriter, r *http.Request) { podesavanja, err := sqlite.DohvatiSvaPodesavanja(r.Context(), h.DB) if err != nil { http.Error(w, "Greška pri učitavanju podešavanja", http.StatusInternalServerError) return } podaci := PodaciPodesavanja{ PodaciStranice: model.PodaciStranice{ Stranica: "podesavanja", NaslovStranice: "Podešavanja", Tema: podesavanja["tema"], NazivFirme: podesavanja["naziv_firme"], Podnazlov: podesavanja["podnazlov"], LogoTip: podesavanja["logo_tip"], LogoPutanja: podesavanja["logo_putanja"], Korisnik: "Admin", }, NazivFirme: podesavanja["naziv_firme"], Podnazlov: podesavanja["podnazlov"], LogoTip: podesavanja["logo_tip"], LogoPutanja: podesavanja["logo_putanja"], Tema: podesavanja["tema"], Sacuvano: r.URL.Query().Get("sacuvano") == "1", } tmpl, err := template.ParseFiles( "web/templates/teme/podrazumevana/base.html", "web/templates/komponente/sidebar.html", "web/templates/komponente/topbar.html", "web/templates/stranice/podesavanja.html", ) if err != nil { http.Error(w, "Greška pri učitavanju stranice", http.StatusInternalServerError) return } if err := tmpl.ExecuteTemplate(w, "base", podaci); err != nil { http.Error(w, "Greška pri prikazu stranice", http.StatusInternalServerError) return } } // SacuvajPodesavanja prima POST i čuva podešavanja u bazu func (h *Handler) SacuvajPodesavanja(w http.ResponseWriter, r *http.Request) { if err := r.ParseForm(); err != nil { http.Error(w, "Greška pri čitanju forme", http.StatusBadRequest) return } polja := map[string]string{ "naziv_firme": r.FormValue("naziv_firme"), "podnazlov": r.FormValue("podnazlov"), "logo_tip": r.FormValue("logo_tip"), "tema": r.FormValue("tema"), } for kljuc, vrednost := range polja { if vrednost == "" { continue } if err := sqlite.SacuvajPodesavanje(r.Context(), h.DB, kljuc, vrednost); err != nil { http.Error(w, "Greška pri čuvanju podešavanja", http.StatusInternalServerError) return } } 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) }