Ispravke — bezbednost, CSS teme, handleri, sidebar, servis forma

This commit is contained in:
2026-06-03 23:13:15 +02:00
parent f5b6b0c7ee
commit 4b7ed36473
19 changed files with 352 additions and 519 deletions
+3 -3
View File
@@ -192,7 +192,7 @@ func (h *Handler) AdminProfil(w http.ResponseWriter, r *http.Request) {
podesavanja, _ := sqlite.DohvatiSvaPodesavanja(r.Context(), h.DB)
ps := h.popuniPodaciStranice(r, podesavanja)
ps.Stranica = "admin"
ps.Stranica = "profil"
ps.NaslovStranice = "Moj profil"
podaci := podaciAdminProfil{
@@ -261,7 +261,7 @@ func (h *Handler) AdminTotpPokreni(w http.ResponseWriter, r *http.Request) {
}
ps := h.popuniPodaciStranice(r, podesavanja)
ps.Stranica = "admin"
ps.Stranica = "profil"
ps.NaslovStranice = "Podesi 2FA"
podaci := podaciAdminProfil{
@@ -294,7 +294,7 @@ func (h *Handler) AdminTotpAktivacija(w http.ResponseWriter, r *http.Request) {
// ponovni prikaz sa greškom — regenerišemo isti tajnu
podesavanja, _ := sqlite.DohvatiSvaPodesavanja(r.Context(), h.DB)
ps := h.popuniPodaciStranice(r, podesavanja)
ps.Stranica = "admin"
ps.Stranica = "profil"
ps.NaslovStranice = "Podesi 2FA"
// regenerišemo QR za već generisanu tajnu (korisnik je video ovaj QR)
+1 -1
View File
@@ -30,7 +30,7 @@ func (h *Handler) Dashboard(w http.ResponseWriter, r *http.Request) {
if err := h.DB.QueryRowContext(ctx, `
SELECT COUNT(*) FROM servisni_nalozi
WHERE status NOT IN ('Završeno', 'Preuzeto')`,
WHERE status != 'Završeno'`,
).Scan(&aktivniServisi); err != nil {
log.Printf("dashboard: aktivni servisi: %v", err)
}
+33 -63
View File
@@ -43,21 +43,15 @@ func (h *Handler) Dobavljaci(w http.ResponseWriter, r *http.Request) {
return
}
ps := h.popuniPodaciStranice(r, podesavanja)
ps.Stranica = "dobavljaci"
ps.NaslovStranice = "Dobavljači"
podaci := PodaciDobavljaca{
PodaciStranice: model.PodaciStranice{
Stranica: "dobavljaci",
NaslovStranice: "Dobavljači",
Tema: podesavanja["tema"],
NazivFirme: podesavanja["naziv_firme"],
Podnazlov: podesavanja["podnazlov"],
LogoTip: podesavanja["logo_tip"],
LogoPutanja: podesavanja["logo_putanja"],
Korisnik: "Admin",
},
Dobavljaci: dobavljaci,
Pretraga: pretraga,
Sacuvano: r.URL.Query().Get("sacuvano") == "1",
Obrisan: r.URL.Query().Get("obrisan") == "1",
PodaciStranice: ps,
Dobavljaci: dobavljaci,
Pretraga: pretraga,
Sacuvano: r.URL.Query().Get("sacuvano") == "1",
Obrisan: r.URL.Query().Get("obrisan") == "1",
}
h.renderujTemplate(w, "dobavljaci", podaci)
@@ -71,18 +65,12 @@ func (h *Handler) NoviDobavljac(w http.ResponseWriter, r *http.Request) {
return
}
ps := h.popuniPodaciStranice(r, podesavanja)
ps.Stranica = "dobavljaci"
ps.NaslovStranice = "Novi dobavljač"
h.renderujFormuDobavljaca(w, PodaciFormeDobavljaca{
PodaciStranice: model.PodaciStranice{
Stranica: "dobavljaci",
NaslovStranice: "Novi dobavljač",
Tema: podesavanja["tema"],
NazivFirme: podesavanja["naziv_firme"],
Podnazlov: podesavanja["podnazlov"],
LogoTip: podesavanja["logo_tip"],
LogoPutanja: podesavanja["logo_putanja"],
Korisnik: "Admin",
},
Izmena: false,
PodaciStranice: ps,
Izmena: false,
})
}
@@ -96,20 +84,14 @@ func (h *Handler) SacuvajDobavljaca(w http.ResponseWriter, r *http.Request) {
dobavljac, greska := parseFormuDobavljaca(r)
if greska != "" {
podesavanja, _ := sqlite.DohvatiSvaPodesavanja(r.Context(), h.DB)
ps := h.popuniPodaciStranice(r, podesavanja)
ps.Stranica = "dobavljaci"
ps.NaslovStranice = "Novi dobavljač"
h.renderujFormuDobavljaca(w, PodaciFormeDobavljaca{
PodaciStranice: model.PodaciStranice{
Stranica: "dobavljaci",
NaslovStranice: "Novi dobavljač",
Tema: podesavanja["tema"],
NazivFirme: podesavanja["naziv_firme"],
Podnazlov: podesavanja["podnazlov"],
LogoTip: podesavanja["logo_tip"],
LogoPutanja: podesavanja["logo_putanja"],
Korisnik: "Admin",
},
Dobavljac: dobavljac,
Greska: greska,
Izmena: false,
PodaciStranice: ps,
Dobavljac: dobavljac,
Greska: greska,
Izmena: false,
})
return
}
@@ -142,19 +124,13 @@ func (h *Handler) IzmeniDobavljaca(w http.ResponseWriter, r *http.Request) {
return
}
ps := h.popuniPodaciStranice(r, podesavanja)
ps.Stranica = "dobavljaci"
ps.NaslovStranice = "Izmeni dobavljača"
h.renderujFormuDobavljaca(w, PodaciFormeDobavljaca{
PodaciStranice: model.PodaciStranice{
Stranica: "dobavljaci",
NaslovStranice: "Izmeni dobavljača",
Tema: podesavanja["tema"],
NazivFirme: podesavanja["naziv_firme"],
Podnazlov: podesavanja["podnazlov"],
LogoTip: podesavanja["logo_tip"],
LogoPutanja: podesavanja["logo_putanja"],
Korisnik: "Admin",
},
Dobavljac: *dobavljac,
Izmena: true,
PodaciStranice: ps,
Dobavljac: *dobavljac,
Izmena: true,
})
}
@@ -175,20 +151,14 @@ func (h *Handler) SacuvajIzmeneDobavljaca(w http.ResponseWriter, r *http.Request
if greska != "" {
podesavanja, _ := sqlite.DohvatiSvaPodesavanja(r.Context(), h.DB)
dobavljac.ID = id
ps := h.popuniPodaciStranice(r, podesavanja)
ps.Stranica = "dobavljaci"
ps.NaslovStranice = "Izmeni dobavljača"
h.renderujFormuDobavljaca(w, PodaciFormeDobavljaca{
PodaciStranice: model.PodaciStranice{
Stranica: "dobavljaci",
NaslovStranice: "Izmeni dobavljača",
Tema: podesavanja["tema"],
NazivFirme: podesavanja["naziv_firme"],
Podnazlov: podesavanja["podnazlov"],
LogoTip: podesavanja["logo_tip"],
LogoPutanja: podesavanja["logo_putanja"],
Korisnik: "Admin",
},
Dobavljac: dobavljac,
Greska: greska,
Izmena: true,
PodaciStranice: ps,
Dobavljac: dobavljac,
Greska: greska,
Izmena: true,
})
return
}
+7 -13
View File
@@ -32,20 +32,14 @@ func (h *Handler) Kategorije(w http.ResponseWriter, r *http.Request) {
return
}
ps := h.popuniPodaciStranice(r, podesavanja)
ps.Stranica = "magacin"
ps.NaslovStranice = "Kategorije"
podaci := PodaciKategorija{
PodaciStranice: model.PodaciStranice{
Stranica: "magacin",
NaslovStranice: "Kategorije",
Tema: podesavanja["tema"],
NazivFirme: podesavanja["naziv_firme"],
Podnazlov: podesavanja["podnazlov"],
LogoTip: podesavanja["logo_tip"],
LogoPutanja: podesavanja["logo_putanja"],
Korisnik: "Admin",
},
Kategorije: kategorije,
Sacuvano: r.URL.Query().Get("sacuvano") == "1",
Obrisana: r.URL.Query().Get("obrisana") == "1",
PodaciStranice: ps,
Kategorije: kategorije,
Sacuvano: r.URL.Query().Get("sacuvano") == "1",
Obrisana: r.URL.Query().Get("obrisana") == "1",
}
h.renderujTemplate(w, "kategorije", podaci)
+47 -89
View File
@@ -44,21 +44,15 @@ func (h *Handler) Klijenti(w http.ResponseWriter, r *http.Request) {
return
}
ps := h.popuniPodaciStranice(r, podesavanja)
ps.Stranica = "klijenti"
ps.NaslovStranice = "Klijenti"
podaci := PodaciKlijenata{
PodaciStranice: model.PodaciStranice{
Stranica: "klijenti",
NaslovStranice: "Klijenti",
Tema: podesavanja["tema"],
NazivFirme: podesavanja["naziv_firme"],
Podnazlov: podesavanja["podnazlov"],
LogoTip: podesavanja["logo_tip"],
LogoPutanja: podesavanja["logo_putanja"],
Korisnik: "Admin",
},
Klijenti: klijenti,
Pretraga: pretraga,
Sacuvano: r.URL.Query().Get("sacuvano") == "1",
Obrisan: r.URL.Query().Get("obrisan") == "1",
PodaciStranice: ps,
Klijenti: klijenti,
Pretraga: pretraga,
Sacuvano: r.URL.Query().Get("sacuvano") == "1",
Obrisan: r.URL.Query().Get("obrisan") == "1",
}
h.renderujTemplate(w, "klijenti", podaci)
@@ -72,18 +66,12 @@ func (h *Handler) NoviKlijent(w http.ResponseWriter, r *http.Request) {
return
}
ps := h.popuniPodaciStranice(r, podesavanja)
ps.Stranica = "klijenti"
ps.NaslovStranice = "Novi klijent"
h.renderujFormuKlijenta(w, PodaciFormeKlijenta{
PodaciStranice: model.PodaciStranice{
Stranica: "klijenti",
NaslovStranice: "Novi klijent",
Tema: podesavanja["tema"],
NazivFirme: podesavanja["naziv_firme"],
Podnazlov: podesavanja["podnazlov"],
LogoTip: podesavanja["logo_tip"],
LogoPutanja: podesavanja["logo_putanja"],
Korisnik: "Admin",
},
Izmena: false,
PodaciStranice: ps,
Izmena: false,
})
}
@@ -97,20 +85,14 @@ func (h *Handler) SacuvajKlijenta(w http.ResponseWriter, r *http.Request) {
klijent, greska := parseFormuKlijenta(r)
if greska != "" {
podesavanja, _ := sqlite.DohvatiSvaPodesavanja(r.Context(), h.DB)
ps := h.popuniPodaciStranice(r, podesavanja)
ps.Stranica = "klijenti"
ps.NaslovStranice = "Novi klijent"
h.renderujFormuKlijenta(w, PodaciFormeKlijenta{
PodaciStranice: model.PodaciStranice{
Stranica: "klijenti",
NaslovStranice: "Novi klijent",
Tema: podesavanja["tema"],
NazivFirme: podesavanja["naziv_firme"],
Podnazlov: podesavanja["podnazlov"],
LogoTip: podesavanja["logo_tip"],
LogoPutanja: podesavanja["logo_putanja"],
Korisnik: "Admin",
},
Klijent: klijent,
Greska: greska,
Izmena: false,
PodaciStranice: ps,
Klijent: klijent,
Greska: greska,
Izmena: false,
})
return
}
@@ -118,20 +100,14 @@ func (h *Handler) SacuvajKlijenta(w http.ResponseWriter, r *http.Request) {
if _, err := h.KlijentiRepo.Kreiraj(r.Context(), &klijent); err != nil {
log.Printf("greška pri čuvanju klijenta: %v", err)
podesavanja, _ := sqlite.DohvatiSvaPodesavanja(r.Context(), h.DB)
ps := h.popuniPodaciStranice(r, podesavanja)
ps.Stranica = "klijenti"
ps.NaslovStranice = "Novi klijent"
h.renderujFormuKlijenta(w, PodaciFormeKlijenta{
PodaciStranice: model.PodaciStranice{
Stranica: "klijenti",
NaslovStranice: "Novi klijent",
Tema: podesavanja["tema"],
NazivFirme: podesavanja["naziv_firme"],
Podnazlov: podesavanja["podnazlov"],
LogoTip: podesavanja["logo_tip"],
LogoPutanja: podesavanja["logo_putanja"],
Korisnik: "Admin",
},
Klijent: klijent,
Greska: "Došlo je do greške pri čuvanju. Pokušajte ponovo.",
Izmena: false,
PodaciStranice: ps,
Klijent: klijent,
Greska: "Došlo je do greške pri čuvanju. Pokušajte ponovo.",
Izmena: false,
})
return
}
@@ -159,19 +135,13 @@ func (h *Handler) IzmeniKlijenta(w http.ResponseWriter, r *http.Request) {
return
}
ps := h.popuniPodaciStranice(r, podesavanja)
ps.Stranica = "klijenti"
ps.NaslovStranice = "Izmeni klijenta"
h.renderujFormuKlijenta(w, PodaciFormeKlijenta{
PodaciStranice: model.PodaciStranice{
Stranica: "klijenti",
NaslovStranice: "Izmeni klijenta",
Tema: podesavanja["tema"],
NazivFirme: podesavanja["naziv_firme"],
Podnazlov: podesavanja["podnazlov"],
LogoTip: podesavanja["logo_tip"],
LogoPutanja: podesavanja["logo_putanja"],
Korisnik: "Admin",
},
Klijent: *klijent,
Izmena: true,
PodaciStranice: ps,
Klijent: *klijent,
Izmena: true,
})
}
@@ -192,20 +162,14 @@ func (h *Handler) SacuvajIzmenuKlijenta(w http.ResponseWriter, r *http.Request)
if greska != "" {
podesavanja, _ := sqlite.DohvatiSvaPodesavanja(r.Context(), h.DB)
klijent.ID = id
ps := h.popuniPodaciStranice(r, podesavanja)
ps.Stranica = "klijenti"
ps.NaslovStranice = "Izmeni klijenta"
h.renderujFormuKlijenta(w, PodaciFormeKlijenta{
PodaciStranice: model.PodaciStranice{
Stranica: "klijenti",
NaslovStranice: "Izmeni klijenta",
Tema: podesavanja["tema"],
NazivFirme: podesavanja["naziv_firme"],
Podnazlov: podesavanja["podnazlov"],
LogoTip: podesavanja["logo_tip"],
LogoPutanja: podesavanja["logo_putanja"],
Korisnik: "Admin",
},
Klijent: klijent,
Greska: greska,
Izmena: true,
PodaciStranice: ps,
Klijent: klijent,
Greska: greska,
Izmena: true,
})
return
}
@@ -214,20 +178,14 @@ func (h *Handler) SacuvajIzmenuKlijenta(w http.ResponseWriter, r *http.Request)
if err := h.KlijentiRepo.Izmeni(r.Context(), &klijent); err != nil {
log.Printf("greška pri čuvanju izmene klijenta: %v", err)
podesavanja, _ := sqlite.DohvatiSvaPodesavanja(r.Context(), h.DB)
ps := h.popuniPodaciStranice(r, podesavanja)
ps.Stranica = "klijenti"
ps.NaslovStranice = "Izmeni klijenta"
h.renderujFormuKlijenta(w, PodaciFormeKlijenta{
PodaciStranice: model.PodaciStranice{
Stranica: "klijenti",
NaslovStranice: "Izmeni klijenta",
Tema: podesavanja["tema"],
NazivFirme: podesavanja["naziv_firme"],
Podnazlov: podesavanja["podnazlov"],
LogoTip: podesavanja["logo_tip"],
LogoPutanja: podesavanja["logo_putanja"],
Korisnik: "Admin",
},
Klijent: klijent,
Greska: "Došlo je do greške pri čuvanju. Pokušajte ponovo.",
Izmena: true,
PodaciStranice: ps,
Klijent: klijent,
Greska: "Došlo je do greške pri čuvanju. Pokušajte ponovo.",
Izmena: true,
})
return
}
+4 -10
View File
@@ -56,17 +56,11 @@ func (h *Handler) Magacin(w http.ResponseWriter, r *http.Request) {
return
}
ps := h.popuniPodaciStranice(r, podesavanja)
ps.Stranica = "magacin"
ps.NaslovStranice = "Magacin"
podaci := PodaciMagacina{
PodaciStranice: model.PodaciStranice{
Stranica: "magacin",
NaslovStranice: "Magacin",
Tema: podesavanja["tema"],
NazivFirme: podesavanja["naziv_firme"],
Podnazlov: podesavanja["podnazlov"],
LogoTip: podesavanja["logo_tip"],
LogoPutanja: podesavanja["logo_putanja"],
Korisnik: "Admin",
},
PodaciStranice: ps,
Artikli: artikli,
Kategorije: kategorije,
Filter: filter,
+22 -50
View File
@@ -35,22 +35,14 @@ func (h *Handler) NoviArtikal(w http.ResponseWriter, r *http.Request) {
return
}
podaci := PodaciFormeArtikla{
PodaciStranice: model.PodaciStranice{
Stranica: "magacin",
NaslovStranice: "Novi artikal",
Tema: podesavanja["tema"],
NazivFirme: podesavanja["naziv_firme"],
Podnazlov: podesavanja["podnazlov"],
LogoTip: podesavanja["logo_tip"],
LogoPutanja: podesavanja["logo_putanja"],
Korisnik: "Admin",
},
Kategorije: kategorije,
Izmena: false,
}
h.renderujFormuArtikla(w, podaci)
ps := h.popuniPodaciStranice(r, podesavanja)
ps.Stranica = "magacin"
ps.NaslovStranice = "Novi artikal"
h.renderujFormuArtikla(w, PodaciFormeArtikla{
PodaciStranice: ps,
Kategorije: kategorije,
Izmena: false,
})
}
// SacuvajArtikal prima POST formu i čuva novi artikal
@@ -68,17 +60,11 @@ func (h *Handler) SacuvajArtikal(w http.ResponseWriter, r *http.Request) {
if artikal.KategorijaID != nil {
katIDStr = strconv.FormatInt(*artikal.KategorijaID, 10)
}
ps := h.popuniPodaciStranice(r, podesavanja)
ps.Stranica = "magacin"
ps.NaslovStranice = "Novi artikal"
h.renderujFormuArtikla(w, PodaciFormeArtikla{
PodaciStranice: model.PodaciStranice{
Stranica: "magacin",
NaslovStranice: "Novi artikal",
Tema: podesavanja["tema"],
NazivFirme: podesavanja["naziv_firme"],
Podnazlov: podesavanja["podnazlov"],
LogoTip: podesavanja["logo_tip"],
LogoPutanja: podesavanja["logo_putanja"],
Korisnik: "Admin",
},
PodaciStranice: ps,
Artikal: artikal,
Kategorije: kategorije,
KategorijaIDStr: katIDStr,
@@ -136,24 +122,16 @@ func (h *Handler) IzmeniArtikal(w http.ResponseWriter, r *http.Request) {
katIDStr = strconv.FormatInt(*artikal.KategorijaID, 10)
}
podaci := PodaciFormeArtikla{
PodaciStranice: model.PodaciStranice{
Stranica: "magacin",
NaslovStranice: "Izmeni artikal",
Tema: podesavanja["tema"],
NazivFirme: podesavanja["naziv_firme"],
Podnazlov: podesavanja["podnazlov"],
LogoTip: podesavanja["logo_tip"],
LogoPutanja: podesavanja["logo_putanja"],
Korisnik: "Admin",
},
ps := h.popuniPodaciStranice(r, podesavanja)
ps.Stranica = "magacin"
ps.NaslovStranice = "Izmeni artikal"
h.renderujFormuArtikla(w, PodaciFormeArtikla{
PodaciStranice: ps,
Artikal: *artikal,
Kategorije: kategorije,
KategorijaIDStr: katIDStr,
Izmena: true,
}
h.renderujFormuArtikla(w, podaci)
})
}
// SacuvajIzmenuArtikla prima POST formu i čuva izmenu artikla
@@ -179,17 +157,11 @@ func (h *Handler) SacuvajIzmenuArtikla(w http.ResponseWriter, r *http.Request) {
if artikal.KategorijaID != nil {
katIDStr = strconv.FormatInt(*artikal.KategorijaID, 10)
}
ps := h.popuniPodaciStranice(r, podesavanja)
ps.Stranica = "magacin"
ps.NaslovStranice = "Izmeni artikal"
h.renderujFormuArtikla(w, PodaciFormeArtikla{
PodaciStranice: model.PodaciStranice{
Stranica: "magacin",
NaslovStranice: "Izmeni artikal",
Tema: podesavanja["tema"],
NazivFirme: podesavanja["naziv_firme"],
Podnazlov: podesavanja["podnazlov"],
LogoTip: podesavanja["logo_tip"],
LogoPutanja: podesavanja["logo_putanja"],
Korisnik: "Admin",
},
PodaciStranice: ps,
Artikal: artikal,
Kategorije: kategorije,
KategorijaIDStr: katIDStr,
+33 -57
View File
@@ -25,11 +25,11 @@ type PodaciNabavki struct {
// PodaciFormeNabavke su podaci za formu unosa nove nabavke
type PodaciFormeNabavke struct {
model.PodaciStranice
Artikli []model.ArtikalSaKategorijom
ArtikliJSON template.JS // JSON niz artikala za Alpine.js — bezbedan za umetanje u <script>
Dobavljaci []model.Dobavljac
Kategorije []model.Kategorija // za dropdown u modalu novog artikla
Greska string
Artikli []model.ArtikalSaKategorijom
ArtikliJSON template.JS // JSON niz artikala za Alpine.js — bezbedan za umetanje u <script>
Dobavljaci []model.Dobavljac
Kategorije []model.Kategorija // za dropdown u modalu novog artikla
Greska string
}
// PodaciDetaljiNabavke su podaci za pregled jedne nabavke sa stavkama
@@ -68,20 +68,14 @@ func (h *Handler) Nabavke(w http.ResponseWriter, r *http.Request) {
return
}
ps := h.popuniPodaciStranice(r, podesavanja)
ps.Stranica = "nabavke"
ps.NaslovStranice = "Nabavke"
podaci := PodaciNabavki{
PodaciStranice: model.PodaciStranice{
Stranica: "nabavke",
NaslovStranice: "Nabavke",
Tema: podesavanja["tema"],
NazivFirme: podesavanja["naziv_firme"],
Podnazlov: podesavanja["podnazlov"],
LogoTip: podesavanja["logo_tip"],
LogoPutanja: podesavanja["logo_putanja"],
Korisnik: "Admin",
},
Nabavke: nabavke,
Sacuvano: r.URL.Query().Get("sacuvano") == "1",
Obrisan: r.URL.Query().Get("obrisan") == "1",
PodaciStranice: ps,
Nabavke: nabavke,
Sacuvano: r.URL.Query().Get("sacuvano") == "1",
Obrisan: r.URL.Query().Get("obrisan") == "1",
}
h.renderujTemplate(w, "nabavke", podaci)
@@ -113,21 +107,15 @@ func (h *Handler) NovaNabavka(w http.ResponseWriter, r *http.Request) {
return
}
ps := h.popuniPodaciStranice(r, podesavanja)
ps.Stranica = "nabavke"
ps.NaslovStranice = "Nova nabavka"
h.renderujFormuNabavke(w, PodaciFormeNabavke{
PodaciStranice: model.PodaciStranice{
Stranica: "nabavke",
NaslovStranice: "Nova nabavka",
Tema: podesavanja["tema"],
NazivFirme: podesavanja["naziv_firme"],
Podnazlov: podesavanja["podnazlov"],
LogoTip: podesavanja["logo_tip"],
LogoPutanja: podesavanja["logo_putanja"],
Korisnik: "Admin",
},
Artikli: artikli,
ArtikliJSON: artikalUJSON(artikli),
Dobavljaci: dobavljaci,
Kategorije: kategorije,
PodaciStranice: ps,
Artikli: artikli,
ArtikliJSON: artikalUJSON(artikli),
Dobavljaci: dobavljaci,
Kategorije: kategorije,
})
}
@@ -144,22 +132,16 @@ func (h *Handler) SacuvajNabavku(w http.ResponseWriter, r *http.Request) {
artikli, _ := h.Artikli.Lista(r.Context(), db.ArtikalFilter{})
dobavljaci, _ := h.DobavljaciRepo.Lista(r.Context(), "")
kategorije, _ := h.KategorijeRepo.Lista(r.Context())
ps := h.popuniPodaciStranice(r, podesavanja)
ps.Stranica = "nabavke"
ps.NaslovStranice = "Nova nabavka"
h.renderujFormuNabavke(w, PodaciFormeNabavke{
PodaciStranice: model.PodaciStranice{
Stranica: "nabavke",
NaslovStranice: "Nova nabavka",
Tema: podesavanja["tema"],
NazivFirme: podesavanja["naziv_firme"],
Podnazlov: podesavanja["podnazlov"],
LogoTip: podesavanja["logo_tip"],
LogoPutanja: podesavanja["logo_putanja"],
Korisnik: "Admin",
},
Artikli: artikli,
ArtikliJSON: artikalUJSON(artikli),
Dobavljaci: dobavljaci,
Kategorije: kategorije,
Greska: greska,
PodaciStranice: ps,
Artikli: artikli,
ArtikliJSON: artikalUJSON(artikli),
Dobavljaci: dobavljaci,
Kategorije: kategorije,
Greska: greska,
})
return
}
@@ -208,17 +190,11 @@ func (h *Handler) DetaljiNabavke(w http.ResponseWriter, r *http.Request) {
}
}
ps := h.popuniPodaciStranice(r, podesavanja)
ps.Stranica = "nabavke"
ps.NaslovStranice = "Detalji nabavke"
podaci := PodaciDetaljiNabavke{
PodaciStranice: model.PodaciStranice{
Stranica: "nabavke",
NaslovStranice: "Detalji nabavke",
Tema: podesavanja["tema"],
NazivFirme: podesavanja["naziv_firme"],
Podnazlov: podesavanja["podnazlov"],
LogoTip: podesavanja["logo_tip"],
LogoPutanja: podesavanja["logo_putanja"],
Korisnik: "Admin",
},
PodaciStranice: ps,
Nabavka: *nabavka,
Stavke: stavke,
DobavljacNaziv: dobavljacNaziv,
+15 -21
View File
@@ -40,28 +40,22 @@ func (h *Handler) Podesavanja(w http.ResponseWriter, r *http.Request) {
return
}
ps := h.popuniPodaciStranice(r, podesavanja)
ps.Stranica = "podesavanja"
ps.NaslovStranice = "Podešavanja"
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"],
Adresa: podesavanja["adresa"],
Telefon: podesavanja["telefon"],
PIB: podesavanja["pib"],
LogoTip: podesavanja["logo_tip"],
LogoPutanja: podesavanja["logo_putanja"],
Tema: podesavanja["tema"],
Sacuvano: r.URL.Query().Get("sacuvano") == "1",
Verzija: h.Verzija,
LogoGreska: r.URL.Query().Get("logo_greska"),
PodaciStranice: ps,
NazivFirme: podesavanja["naziv_firme"],
Podnazlov: podesavanja["podnazlov"],
Adresa: podesavanja["adresa"],
Telefon: podesavanja["telefon"],
PIB: podesavanja["pib"],
LogoTip: podesavanja["logo_tip"],
LogoPutanja: podesavanja["logo_putanja"],
Tema: podesavanja["tema"],
Sacuvano: r.URL.Query().Get("sacuvano") == "1",
Verzija: h.Verzija,
LogoGreska: r.URL.Query().Get("logo_greska"),
}
h.renderujTemplate(w, "podesavanja", podaci)
+31 -55
View File
@@ -88,21 +88,15 @@ func (h *Handler) Prodaja(w http.ResponseWriter, r *http.Request) {
return
}
ps := h.popuniPodaciStranice(r, podesavanja)
ps.Stranica = "prodaja"
ps.NaslovStranice = "Prodaja"
podaci := PodaciProdaje{
PodaciStranice: model.PodaciStranice{
Stranica: "prodaja",
NaslovStranice: "Prodaja",
Tema: podesavanja["tema"],
NazivFirme: podesavanja["naziv_firme"],
Podnazlov: podesavanja["podnazlov"],
LogoTip: podesavanja["logo_tip"],
LogoPutanja: podesavanja["logo_putanja"],
Korisnik: "Admin",
},
Nalozi: nalozi,
Sacuvano: r.URL.Query().Get("sacuvano") == "1",
Obrisan: r.URL.Query().Get("obrisan") == "1",
Pretraga: pretraga,
PodaciStranice: ps,
Nalozi: nalozi,
Sacuvano: r.URL.Query().Get("sacuvano") == "1",
Obrisan: r.URL.Query().Get("obrisan") == "1",
Pretraga: pretraga,
}
h.renderujTemplate(w, "prodaja", podaci)
@@ -128,20 +122,14 @@ func (h *Handler) NovaProdaja(w http.ResponseWriter, r *http.Request) {
return
}
ps := h.popuniPodaciStranice(r, podesavanja)
ps.Stranica = "prodaja"
ps.NaslovStranice = "Nova prodaja"
h.renderujFormuProdaje(w, PodaciFormeProdaje{
PodaciStranice: model.PodaciStranice{
Stranica: "prodaja",
NaslovStranice: "Nova prodaja",
Tema: podesavanja["tema"],
NazivFirme: podesavanja["naziv_firme"],
Podnazlov: podesavanja["podnazlov"],
LogoTip: podesavanja["logo_tip"],
LogoPutanja: podesavanja["logo_putanja"],
Korisnik: "Admin",
},
Artikli: artikli,
ArtikliJSON: artikalUJSONSaCenom(artikli),
Klijenti: klijenti,
PodaciStranice: ps,
Artikli: artikli,
ArtikliJSON: artikalUJSONSaCenom(artikli),
Klijenti: klijenti,
})
}
@@ -158,21 +146,15 @@ func (h *Handler) SacuvajProdaju(w http.ResponseWriter, r *http.Request) {
podesavanja, _ := sqlite.DohvatiSvaPodesavanja(r.Context(), h.DB)
artikli, _ := h.Artikli.Lista(r.Context(), appdb.ArtikalFilter{})
klijenti, _ := h.KlijentiRepo.Lista(r.Context(), "")
ps := h.popuniPodaciStranice(r, podesavanja)
ps.Stranica = "prodaja"
ps.NaslovStranice = "Nova prodaja"
h.renderujFormuProdaje(w, PodaciFormeProdaje{
PodaciStranice: model.PodaciStranice{
Stranica: "prodaja",
NaslovStranice: "Nova prodaja",
Tema: podesavanja["tema"],
NazivFirme: podesavanja["naziv_firme"],
Podnazlov: podesavanja["podnazlov"],
LogoTip: podesavanja["logo_tip"],
LogoPutanja: podesavanja["logo_putanja"],
Korisnik: "Admin",
},
Artikli: artikli,
ArtikliJSON: artikalUJSONSaCenom(artikli),
Klijenti: klijenti,
Greska: poruka,
PodaciStranice: ps,
Artikli: artikli,
ArtikliJSON: artikalUJSONSaCenom(artikli),
Klijenti: klijenti,
Greska: poruka,
})
}
@@ -250,21 +232,15 @@ func (h *Handler) DetaljiProdaje(w http.ResponseWriter, r *http.Request) {
}
}
ps := h.popuniPodaciStranice(r, podesavanja)
ps.Stranica = "prodaja"
ps.NaslovStranice = "Detalji prodaje"
podaci := PodaciDetaljiProdaje{
PodaciStranice: model.PodaciStranice{
Stranica: "prodaja",
NaslovStranice: "Detalji prodaje",
Tema: podesavanja["tema"],
NazivFirme: podesavanja["naziv_firme"],
Podnazlov: podesavanja["podnazlov"],
LogoTip: podesavanja["logo_tip"],
LogoPutanja: podesavanja["logo_putanja"],
Korisnik: "Admin",
},
Nalog: *nalog,
Stavke: stavke,
KlijentNaziv: klijentNaziv,
Sacuvano: r.URL.Query().Get("sacuvano") == "1",
PodaciStranice: ps,
Nalog: *nalog,
Stavke: stavke,
KlijentNaziv: klijentNaziv,
Sacuvano: r.URL.Query().Get("sacuvano") == "1",
}
h.renderujTemplate(w, "prodaja_detalji", podaci)
+69 -117
View File
@@ -59,23 +59,17 @@ func (h *Handler) Servis(w http.ResponseWriter, r *http.Request) {
return
}
ps := h.popuniPodaciStranice(r, podesavanja)
ps.Stranica = "servis"
ps.NaslovStranice = "Servis"
podaci := PodaciServisa{
PodaciStranice: model.PodaciStranice{
Stranica: "servis",
NaslovStranice: "Servis",
Tema: podesavanja["tema"],
NazivFirme: podesavanja["naziv_firme"],
Podnazlov: podesavanja["podnazlov"],
LogoTip: podesavanja["logo_tip"],
LogoPutanja: podesavanja["logo_putanja"],
Korisnik: "Admin",
},
Nalozi: nalozi,
Pretraga: pretraga,
FilterStatus: filterStatus,
SviStatusi: model.SviStatusi,
Sacuvano: r.URL.Query().Get("sacuvano") == "1",
Obrisan: r.URL.Query().Get("obrisan") == "1",
PodaciStranice: ps,
Nalozi: nalozi,
Pretraga: pretraga,
FilterStatus: filterStatus,
SviStatusi: model.SviStatusi,
Sacuvano: r.URL.Query().Get("sacuvano") == "1",
Obrisan: r.URL.Query().Get("obrisan") == "1",
}
h.renderujTemplate(w, "servis", podaci)
@@ -101,21 +95,15 @@ func (h *Handler) NoviNalog(w http.ResponseWriter, r *http.Request) {
return
}
ps := h.popuniPodaciStranice(r, podesavanja)
ps.Stranica = "servis"
ps.NaslovStranice = "Novi nalog"
h.renderujFormuNaloga(w, PodaciFormeNaloga{
PodaciStranice: model.PodaciStranice{
Stranica: "servis",
NaslovStranice: "Novi nalog",
Tema: podesavanja["tema"],
NazivFirme: podesavanja["naziv_firme"],
Podnazlov: podesavanja["podnazlov"],
LogoTip: podesavanja["logo_tip"],
LogoPutanja: podesavanja["logo_putanja"],
Korisnik: "Admin",
},
Nalog: model.ServisniNalog{BrojNaloga: brojNaloga, Status: model.StatusPrimljeno},
Klijenti: klijenti,
SviStatusi: model.SviStatusi,
Izmena: false,
PodaciStranice: ps,
Nalog: model.ServisniNalog{BrojNaloga: brojNaloga, Status: model.StatusPrimljeno},
Klijenti: klijenti,
SviStatusi: model.SviStatusi,
Izmena: false,
})
}
@@ -130,22 +118,16 @@ func (h *Handler) SacuvajNalog(w http.ResponseWriter, r *http.Request) {
if greska != "" {
podesavanja, _ := sqlite.DohvatiSvaPodesavanja(r.Context(), h.DB)
klijenti, _ := h.KlijentiRepo.Lista(r.Context(), "")
ps := h.popuniPodaciStranice(r, podesavanja)
ps.Stranica = "servis"
ps.NaslovStranice = "Novi nalog"
h.renderujFormuNaloga(w, PodaciFormeNaloga{
PodaciStranice: model.PodaciStranice{
Stranica: "servis",
NaslovStranice: "Novi nalog",
Tema: podesavanja["tema"],
NazivFirme: podesavanja["naziv_firme"],
Podnazlov: podesavanja["podnazlov"],
LogoTip: podesavanja["logo_tip"],
LogoPutanja: podesavanja["logo_putanja"],
Korisnik: "Admin",
},
Nalog: nalog,
Klijenti: klijenti,
SviStatusi: model.SviStatusi,
Greska: greska,
Izmena: false,
PodaciStranice: ps,
Nalog: nalog,
Klijenti: klijenti,
SviStatusi: model.SviStatusi,
Greska: greska,
Izmena: false,
})
return
}
@@ -155,22 +137,16 @@ func (h *Handler) SacuvajNalog(w http.ResponseWriter, r *http.Request) {
log.Printf("greška pri čuvanju naloga: %v", err)
podesavanja, _ := sqlite.DohvatiSvaPodesavanja(r.Context(), h.DB)
klijenti, _ := h.KlijentiRepo.Lista(r.Context(), "")
ps := h.popuniPodaciStranice(r, podesavanja)
ps.Stranica = "servis"
ps.NaslovStranice = "Novi nalog"
h.renderujFormuNaloga(w, PodaciFormeNaloga{
PodaciStranice: model.PodaciStranice{
Stranica: "servis",
NaslovStranice: "Novi nalog",
Tema: podesavanja["tema"],
NazivFirme: podesavanja["naziv_firme"],
Podnazlov: podesavanja["podnazlov"],
LogoTip: podesavanja["logo_tip"],
LogoPutanja: podesavanja["logo_putanja"],
Korisnik: "Admin",
},
Nalog: nalog,
Klijenti: klijenti,
SviStatusi: model.SviStatusi,
Greska: "Došlo je do greške pri čuvanju. Pokušajte ponovo.",
Izmena: false,
PodaciStranice: ps,
Nalog: nalog,
Klijenti: klijenti,
SviStatusi: model.SviStatusi,
Greska: "Došlo je do greške pri čuvanju. Pokušajte ponovo.",
Izmena: false,
})
return
}
@@ -204,21 +180,15 @@ func (h *Handler) IzmeniNalog(w http.ResponseWriter, r *http.Request) {
return
}
ps := h.popuniPodaciStranice(r, podesavanja)
ps.Stranica = "servis"
ps.NaslovStranice = "Izmeni nalog"
h.renderujFormuNaloga(w, PodaciFormeNaloga{
PodaciStranice: model.PodaciStranice{
Stranica: "servis",
NaslovStranice: "Izmeni nalog",
Tema: podesavanja["tema"],
NazivFirme: podesavanja["naziv_firme"],
Podnazlov: podesavanja["podnazlov"],
LogoTip: podesavanja["logo_tip"],
LogoPutanja: podesavanja["logo_putanja"],
Korisnik: "Admin",
},
Nalog: *nalog,
Klijenti: klijenti,
SviStatusi: model.SviStatusi,
Izmena: true,
PodaciStranice: ps,
Nalog: *nalog,
Klijenti: klijenti,
SviStatusi: model.SviStatusi,
Izmena: true,
})
}
@@ -240,22 +210,16 @@ func (h *Handler) SacuvajIzmenaNaloga(w http.ResponseWriter, r *http.Request) {
podesavanja, _ := sqlite.DohvatiSvaPodesavanja(r.Context(), h.DB)
klijenti, _ := h.KlijentiRepo.Lista(r.Context(), "")
nalog.ID = id
ps := h.popuniPodaciStranice(r, podesavanja)
ps.Stranica = "servis"
ps.NaslovStranice = "Izmeni nalog"
h.renderujFormuNaloga(w, PodaciFormeNaloga{
PodaciStranice: model.PodaciStranice{
Stranica: "servis",
NaslovStranice: "Izmeni nalog",
Tema: podesavanja["tema"],
NazivFirme: podesavanja["naziv_firme"],
Podnazlov: podesavanja["podnazlov"],
LogoTip: podesavanja["logo_tip"],
LogoPutanja: podesavanja["logo_putanja"],
Korisnik: "Admin",
},
Nalog: nalog,
Klijenti: klijenti,
SviStatusi: model.SviStatusi,
Greska: greska,
Izmena: true,
PodaciStranice: ps,
Nalog: nalog,
Klijenti: klijenti,
SviStatusi: model.SviStatusi,
Greska: greska,
Izmena: true,
})
return
}
@@ -265,22 +229,16 @@ func (h *Handler) SacuvajIzmenaNaloga(w http.ResponseWriter, r *http.Request) {
log.Printf("greška pri čuvanju izmene naloga: %v", err)
podesavanja, _ := sqlite.DohvatiSvaPodesavanja(r.Context(), h.DB)
klijenti, _ := h.KlijentiRepo.Lista(r.Context(), "")
ps := h.popuniPodaciStranice(r, podesavanja)
ps.Stranica = "servis"
ps.NaslovStranice = "Izmeni nalog"
h.renderujFormuNaloga(w, PodaciFormeNaloga{
PodaciStranice: model.PodaciStranice{
Stranica: "servis",
NaslovStranice: "Izmeni nalog",
Tema: podesavanja["tema"],
NazivFirme: podesavanja["naziv_firme"],
Podnazlov: podesavanja["podnazlov"],
LogoTip: podesavanja["logo_tip"],
LogoPutanja: podesavanja["logo_putanja"],
Korisnik: "Admin",
},
Nalog: nalog,
Klijenti: klijenti,
SviStatusi: model.SviStatusi,
Greska: "Došlo je do greške pri čuvanju. Pokušajte ponovo.",
Izmena: true,
PodaciStranice: ps,
Nalog: nalog,
Klijenti: klijenti,
SviStatusi: model.SviStatusi,
Greska: "Došlo je do greške pri čuvanju. Pokušajte ponovo.",
Izmena: true,
})
return
}
@@ -336,20 +294,14 @@ func (h *Handler) DetaljiNaloga(w http.ResponseWriter, r *http.Request) {
}
}
ps := h.popuniPodaciStranice(r, podesavanja)
ps.Stranica = "servis"
ps.NaslovStranice = "Detalji naloga"
podaci := PodaciDetaljiNaloga{
PodaciStranice: model.PodaciStranice{
Stranica: "servis",
NaslovStranice: "Detalji naloga",
Tema: podesavanja["tema"],
NazivFirme: podesavanja["naziv_firme"],
Podnazlov: podesavanja["podnazlov"],
LogoTip: podesavanja["logo_tip"],
LogoPutanja: podesavanja["logo_putanja"],
Korisnik: "Admin",
},
Nalog: *nalog,
KlijentNaziv: klijentNaziv,
Sacuvano: r.URL.Query().Get("sacuvano") == "1",
PodaciStranice: ps,
Nalog: *nalog,
KlijentNaziv: klijentNaziv,
Sacuvano: r.URL.Query().Get("sacuvano") == "1",
}
h.renderujTemplate(w, "servis_detalji", podaci)