Commit Graph
76 Commits
Author SHA1 Message Date
Dasko 90801cc71a feat(pdv): KPR — knjiga primljenih računa + PIB/mesto dobavljača (Faza 2a)
KPR (handler, rute pod RequireModul("pdv"), UI sa sumama po stopama,
izbor dobavljača, datum plaćanja, PDV bez odbitka / oslobođena nabavka)
+ stavka u meniju. Dobavljači dobili PIB i mesto (migracija 043) jer KPR
traži PIB dobavljača za POPDV. Time je Faza 2a kompletna (KIR + KPR).
2026-06-14 02:05:33 +02:00
Dasko 9c880d78ab feat(pdv): izbor klijenta u KIR formi + mesto/grad u klijentima
KIR forma nudi padajuću listu postojećih klijenata koja popunjava naziv,
PIB/JMBG i mesto kupca (uz ručni unos za kupce van baze). KIR i dalje
čuva kupca kao tekst, ne kao vezu. Klijenti dobili polje mesto (migracija
042), provučeno kroz model, repo, formu i handler.
2026-06-14 01:39:06 +02:00
Dasko ca10fa541b feat(pdv): KIR — handler, RequireModul, rute i UI (Faza 2a)
Pregled knjige izdatih računa (filter perioda + sume po stopama), forma
unosa (server računa ukupno) i brisanje. Nove dozvole pdv.*; prvi put
montiran RequireModul("pdv") — KIR je vidljiv u meniju (.Moduli) i
dostupan samo PDV obveznicima, uz RBAC. Oznaka PIB/JMBG po broju cifara.
2026-06-13 23:45:24 +02:00
Dasko df79aec9ef feat(pdv): šifarnik PDV stopa — handler, rute i UI (Faza 1)
Handleri (prikaz, dodaj, izmeni, arhiviraj/vrati) sa validacijom i flash
porukama; rute pod /admin/podesavanja/pdv-stope (dozvole podesavanja.*);
stranica pdv_stope registrovana u kes.go i dodata u meni Podešavanja.
Šifarnik je opšti (bez RequireModul) jer ga koristi i kalkulacija.
2026-06-13 20:45:43 +02:00
Dasko 3701152e30 feat(podesavanja): profil firme — pravni i poreski status (Faza 0)
Dodata kartica „Pravni i poreski status" na Podešavanja → Opšte:
pravni oblik, režim rada, PDV obveznik, fiskalizacija. Čuva se u
postojećoj key-value tabeli podesavanja (bez migracije). Fiskalizacija
se zasivi i forsira na „Ne" u režimu „samo evidencija".
2026-06-13 19:27:26 +02:00
Dasko 21aff4453a style(dashboard): labele kartica svetlije (tekst-glavni) i lakši bold (500) 2026-06-13 10:33:20 +02:00
Dasko 38352f2f56 style(dashboard): labele kartica 14px i bold (font-weight:600) 2026-06-13 10:31:38 +02:00
Dasko 3cf5078661 style(dashboard): blago uvećane labele statističkih kartica (12px → 13px) 2026-06-13 10:30:02 +02:00
Dasko bca2d47c78 fix(ui): senka na naslovima kartica, labelama i naslovu stranice preko slike
Naslovi kartica i statističke labele su goli <div> koje glass override nije
dohvatao — blede na svetloj slici. Dodato .kartica div sa senkom (boju NE
diramo, da namerno obojeni div-ovi ostanu) i .topbar-naslov dobija svetli
tekst + senku.
2026-06-13 10:13:37 +02:00
Dasko 7411219d65 fix(ui): senka na info-banneru u Profil—Tema preko slike
Tekst bannera „Tamna tema je aktivna…" su goli <div> koje glass override
ne dohvata — gubili su se na svetloj slici. Dodata klasa .info-banner sa
ciljanim pravilom (svetli tekst + dvoslojna senka) u glass režimu.
2026-06-13 10:06:52 +02:00
Dasko fc3e58b3e8 fix(ui): jača dvoslojna senka teksta u karticama preko svetle slike
Tekst u karticama/tabelama/modalu imao slabu jednoslojnu senku (0.7–0.8),
pa se na jako providnoj kartici + svetloj slici jedva video. Prebačeno na
umerenu dvoslojnu (oštar obris 0.9 + lagani halo 0.55) — čitljivije, i dalje
diskretno. Sidebar netaknut (već dovoljno taman).
2026-06-13 10:04:23 +02:00
Dasko fcccc30b63 fix(ui): gradijentno zatamnjenje senke naslova (skoro crn → upola → bled)
Tri sloja text-shadow podešena u opadajućem zatamnjenju: oštar skoro crn
obris, srednji upola, široki bledi halo.
2026-06-13 09:58:40 +02:00
Dasko 06c53c2644 fix(ui): dublje zatamnjenje senke naslova van kartice
Dodat treći sloj (0 0 8px rgba(0,0,0,1)) — gust crni halo oko slova za
jači kontrast naslova na svetloj pozadinskoj slici.
2026-06-13 09:56:11 +02:00
Dasko a669607bea fix(ui): jača dvoslojna senka na naslovu van kartice
Naslov .naslov-traka dobio jaču dvoslojnu senku (oštar obris + širi halo)
umesto jednoslojne, da bolje „iskoči" na svetloj pozadinskoj slici.
2026-06-13 09:54:35 +02:00
Dasko 70cccf1413 fix(ui): senka na naslovu van kartice (istorija prijava) preko slike
Naslov „Istorija prijava — <korisnik>" je <span> van kartice, pa ga glass
override nije dohvatao — svetli tekst bez senke se gubio na svetloj slici.
Dodata klasa .naslov-traka koja u glass režimu dobija halo (text-shadow);
ista klasa se može dati i drugim naslovima van kartica.
2026-06-13 09:51:41 +02:00
Dasko 27295a3bcd fix(ui): vidljivost elemenata van kartica preko pozadinske slike
Glass override je davao svetli tekst i staklenu podlogu samo karticama,
tabelama i sidebaru — elementi van kartica (.nazad-link, .btn-sekundarno,
.btn-obrisi-ghost, checkbox-traka „Samo aktivni") i goli <div> napomene
(„maksimum N MB") ostajali su u prigušenoj boji i jedva se videli.
Dodata pravila u glass blok: pomenuti elementi dobijaju sopstvenu staklenu
pill-podlogu (poluprovidna + blur + svetli border + svetli tekst), pa se
vide bez obzira da li je slika tamna ili svetla. Napomene dobile klasu
.pomocni-tekst da ih override dohvati; checkbox-traka klasu .cek-filter.
2026-06-13 09:39:53 +02:00
Dasko a25dbe86c9 fix(css): hover lift na svim karticama + animiraj na nabavka-detalji karticama
Hover lift (.kartica:hover translateY) nije radio na karticama sa .animiraj
jer je fadeInUp imao fill-mode both, koji forwards zaključa transform i
nadjača hover. Prebačeno na backwards: i dalje nema treperenja na ulazu, a
hover sad radi na svim karticama u programu.
Kartice „Stavke nabavke" i „Brisanje nabavke" u nabavka_detalji nisu imale
.animiraj (previd — stagger u <style> je predviđao tri kartice). Dodato, i
stagger pomeren na nth-child(2-4) jer je prvi child .kolone „Nazad" link.
2026-06-13 09:21:28 +02:00
Dasko af455e351e refactor(css): stagger kartica na stranicama profila/podešavanja na jedno mesto
Isti .animiraj:nth-child stagger (korak 0.06s) bio je dupliran u 7
template <style> blokova (admin_profil, admin_login_istorija, profil_tema,
podesavanja i 3 podstranice). Prebačen u main.css kao
.stranica-stack .animiraj:nth-child(N); descendant selektor čuva isto
ponašanje po neposrednom roditelju, a klasa .stranica-stack sprečava
curenje na ostatak programa. Sad radi i pod HTMX navigacijom, menja se
na jednom mestu.
2026-06-13 08:33:13 +02:00
Dasko 5c17e70f6f refactor(css): bedž statusa servisa na jedno mesto u main.css
Status bedž (.status-badge i .status-* boje) je bio dupliran u
servis.html i servis_detalji.html sa sitnom razlikom u veličini.
Ujednačena veličina i prebačeno u main.css — sad se menja na jednom
mestu i radi pod HTMX navigacijom. Uklonjen i prazan <style> blok
iz magacin.html.
2026-06-13 08:22:47 +02:00
Dasko 662964f3c8 refactor(css): stagger mobilnih lista-kartica na jedno mesto u main.css
Mobilni parnjak prethodnog (tabele): 7 lista-kartica klasa (prodaja/servis/magacin/
pod/klijent/dobavljac/nabavka-kartica) imale su identičan :nth-child stagger
(0.06s korak do 5). Uvedeno jedno pravilo [class*="-kartice"] > .animiraj:nth-child
u main.css; uklonjeni per-page blokovi. Drugi tipovi kartica (detalji/forma/
dashboard/izvestaji) imaju svoj stagger i ostaju po strani.
4 strane (nabavke/klijenti/prodaja/dobavljaci) ostale prazan dodatni-css blok →
uklonjen. Bez HTML izmena u sadržaju; radi i pod HTMX-om. Animacija lista-kartica
se sada menja na JEDNOM mestu.
2026-06-13 01:32:44 +02:00
Dasko edffeeecaf refactor(css): stagger animacija redova tabela na jedno mesto u main.css
Svaka lista-strana je imala identičan tbody tr:nth-child stagger (0.04s korak do
10), samo sa drugim prefiksom klase (.prodaja-tabela, .servis-tabela...). Uvedeno
JEDNO univerzalno pravilo .tabela tbody tr:nth-child(1..10) u main.css (sve tabele
već imaju .tabela, redovi .animiraj). Uklonjeni per-page blokovi iz 10 strana
(uklj. duplikat .dozvole-tabela iz admin_dozvole — kopija ostaje u main.css).
Pogađa samo redove koji se animiraju; nije bilo HTML izmena. Bonus: sada radi i
pod HTMX navigacijom (page <style> blokovi se odbacuju sa <head>, main.css ostaje).
Animacija redova se sada menja na JEDNOM mestu.
Mobilni card stagger (.X-kartica:nth-child) je zaseban — ostaje za sledeći korak.
2026-06-13 01:26:09 +02:00
Dasko aebcfa11e6 refactor(css): animacije poruka iz dupliranih <style> u main.css
.poruka-animacija (10 fajlova) i .greska-animacija (7 fajlova) bile su identično
duplirane po stranicama; keyframes (slideDown/shake) su već bili u main.css.
Izdvojene klase u main.css uz keyframes, uklonjeni duplikati. Forma-strane
(dobavljac/podsetnik/magacin/servis_forma) ostale prazan dodatni-css blok →
uklonjen (base.html koristi {{block}} sa difoltom, pa je bezbedno izostaviti).
HTML class= upotrebe netaknute; build, handler testovi i parsiranje prolaze.
2026-06-13 01:11:50 +02:00
Dasko f4efd60ca0 refactor(css): toast sistem iz dupliranih <style> blokova u main.css
Toast obaveštenja (.toast, .toast-greska, .toast-uspeh, .toast.nestaje,
@keyframes toastIn/Out) bila su identično duplirana u podesavanja.html i
podesavanja_opste.html. Izdvojeno jednom u main.css; uklonjeno iz oba <style>
bloka. Obe strane idu kroz base.html (učitavaju main.css), pa rade nepromenjeno.
Standalone .greska (prijava/totp_provera/setup) NAMERNO ostavljene — te strane
ne učitavaju main.css (samostalne, minimalne).
2026-06-13 01:07:03 +02:00
Dasko d99db72665 refactor(css): ghost-obriši dugme na .btn-obrisi-ghost klasu
Nova klasa .btn-obrisi-ghost (providna pozadina, #fca5a5 ivica, #dc2626 tekst) —
ghost varijanta brisanja, drugačija od pune .btn-obrisi-malo. Zamenjeno 6 inline
pojava u: admin_korisnici, podesavanja (2x), podesavanja_sistem, podesavanja_izgled,
profil_tema. Mala veličina je default klase; srednje (7px 14px / radius 8px /
font 13px) dobile kontekstualni override. Dodat suptilan hover (ranije ga nije bilo).
Preostali #fca5a5 su error/toast poruke (.greska/.toast-greska) — nisu dugmad.
2026-06-13 01:02:37 +02:00
Dasko e922d76331 refactor(css): layout utili .kolona i .red-izmedju
Nove utility klase: .kolona (display:flex;flex-direction:column) i .red-izmedju
(display:flex;justify-content:space-between) — struktura bez razmaka. Izdvojena
strukturna flex deklaracija iz 50 elemenata (32 kolona + 18 red-izmedju); gap/
margin ostaju kao kontekstualni override po instanci.
Visoko varirani page-header redovi (sa border-bottom/flex-wrap) ostavljeni —
jednokratni. Bez promene izgleda; šabloni parsiraju.
2026-06-13 00:57:07 +02:00
Dasko 25aed85ee6 refactor(css): sporedni tekst na .pomocni-tekst klasu
39 inline elemenata (span/div) sa font-size:13px;color:var(--tekst-sporedni)
(identično postojećoj .pomocni-tekst) zamenjeno klasom; ukupno 40.
Razdelnici (border-bottom:0.5px na <tr>) NISU dirani: mešavina su thead redova
(redundantni — .tabela ih daje) i tbody data redova (gde je ivica separator i
POTREBNA), pa blanket-promena nije bezbedna. Naglašeni naslovi (font-weight:500;
color:glavni) imaju raznolik font-size (14/15/16/22px) — ne mapiraju se na jednu
klasu, ostavljeni.
2026-06-13 00:50:10 +02:00
Dasko e2aaab32a7 refactor(css): inline <table> na .tabela klasu
Tabele su koristile inline width:100%;border-collapse:collapse (identično .tabela).
21 tabela sada koristi .tabela (named tabele dobile ' tabela' uz postojeću klasu).
Preostale 2 imaju samo kontekstualni font-size:13px override.
th/td/thead-tr ostavljeni inline: th/td su kontekstualni (poravnanje/širina/boja
po koloni, raznoliki), a thead tr border je redundantan-ali-bezopasan (klasa daje
isti border:0.5px var(--ivica), inline ga samo nadjačava istom vrednošću).
Bez promene izgleda; šabloni parsiraju.
2026-06-13 00:45:41 +02:00
Dasko 655e15b521 refactor(css): inline labele forme na .polje-labela klasu
59 inline labela (font-size:13px; color:--tekst-sporedni; display:block;
margin-bottom:6px — identično .polje-labela) zamenjeno klasom; ukupno 67 labela
sada koristi .polje-labela. Inputi se već globalno stilizuju (main.css 635-679),
pa nije bilo punih inline input-stilova. Preostale labele (12px/4px, 8px, flex
checkbox/radio) su namerne varijante — ostavljene.
Bez promene izgleda. Napomena: redundantni inline width:100% na inputima (globalni
stil ga već postavlja) ostavljen za kasnije (bezbedno uklanjanje traži ciljanje
po elementu jer je width:100% legitiman na tabelama).
2026-06-13 00:07:13 +02:00
Dasko 5bcf0bc89a refactor(css): inline dugmad na semantičke .btn-* klase
Dodate klase .btn-opasno (puno crveno) i .btn-upozorenje (narandžasto/storno);
.btn-primarno-malo dobio cursor:pointer (nedostajao). Inline dugmad zamenjena
klasama u: admin_profil (lozinka/2FA/regeneriši/podesi/deaktiviraj), prodaja/
servis/nabavka_detalji (obriši/storno), servis (traži), magacin (premesti),
admin_login_istorija (nazad). Override-i tipa class=btn-primarno style=background
uklonjeni u korist .btn-opasno/.btn-upozorenje.
Ostala samo kontekstualna inline svojstva (width/align-self/veličina po instanci).
Bez promene izgleda — samo izdvajanje ponovljenog stila. Šabloni parsiraju.
2026-06-12 23:58:00 +02:00
Dasko ce624fdc87 feat(2fa): rezervni (jednokratni) kodovi za 2FA
Alternativa TOTP-u kada uređaj nije dostupan. Po specifikaciji:
10 kodova pri aktivaciji, čuvani kao bcrypt heš.
Backend:
- migracija 039 (tabela rezervni_kodovi, FK CASCADE)
- auth.GenerisiRezervneKodove (Crockford base32, XXXX-XXXX) + NormalizujRezervniKod
- RezervniKodoviRepository (Zameni/Iskoristi/BrojPreostalih/Obrisi) + SQLite impl
- žičenje u Handler (+ reinicijalizuj)
Prijava:
- VerifikujTotp prvo proba TOTP, pa rezervni kod (isto polje); kod je jednokratni
- totp_provera.html: input opušten (slova/crtica), napomena o rezervnom kodu
Profil:
- aktivacija generiše i prikazuje kodove JEDNOM; dugme Regeneriši; brojač preostalo X/10
- deaktivacija briše kodove
Testovi: auth (generisanje/format/normalizacija), repo (jednokratnost/regeneracija),
prijava rezervnim kodom end-to-end. Ukupno 36 test funkcija.
2026-06-12 23:44:09 +02:00
Dasko a7a3f0c9e3 refactor(css): premešteni stilovi za dozvole u main.css
Stilovi za tabelu dozvola i zaglavlja modula premešteni iz inline bloka (dodatni-css) u globalni main.css, jer HTMX navigacija odbacuje pa oni nisu bili primenjeni nakon prelaska na stranicu. Istovremeno su unapređeni: animacija redova, staklena providna traka sa akcentnom levom ivicom i prilagođeni checkbox-ovi.
2026-06-12 01:06:05 +02:00
Dasko 1cdc0bda12 Dodata zahtevajDozvolu metoda koja zamenjuje dupliranu proveru dozvola u handlerima.
Uvedena AssetV promenljiva za cache-busting statičkih fajlova, koja se postavlja pri svakom pokretanju.
Kreiran pogled klijent_prikaz (migracija 038) za jedinstveno prikazivanje imena klijenta, čime se eliminiše ponavljanje COALESCE logike u upitima.
Izvučena dodeliOpcijeKorisnika funkcija u korisnici.go radi DRY.
Zamenjeni inline stilovi u HTML šablonima CSS klasama (.polje-labela, .obavezno, .pomocni-tekst, .tabela, .kartica-tabela, .prazno-stanje).
Dodat width: 100% na inpute i resize: vertical na textarea u main.css.
2026-06-12 00:43:58 +02:00
Dasko c99887bb6f Magacin: modal za premeštanje + ujednačen slajder na svim brauzerima
Premeštanje artikla:
- Padajući <details> meni zamenjen nativnim <dialog> modalom (showModal),
koji ide u „top layer" pa je uvek iznad svega bez obzira na z-index/overflow.
- Dodato zatamnjenje pozadine (::backdrop) i fade in/out animacije
(@starting-style + transition-behavior: allow-discrete).
- Klik van modala, × dugme i Escape zatvaraju; klik na kategoriju i dalje
odmah premešta artikal.
Tema i HTMX:
- CSS modala premešten iz magacin.html (dodatni-css u headeru) u main.css,
jer se header ne menja pri HTMX navigaciji (hx-select=#glavni-sadrzaj),
pa je stil sada uvek prisutan.
- Modal prati svetlu/tamnu temu preko CSS promenljivih; kad je aktivna
pozadinska slika, glass-override u base.html ga čini providnim i zamućenim
kao kartice.
- Modal centriran (margin:auto, jer reset gazi UA podrazumevano) i pojačana senka.
Slajder (input[type=range]):
- Dodata zajednička klasa .klizac sa ručnim stilom za oba motora
(::-webkit-slider-* i ::-moz-range-*), da svuda izgleda kao u Firefox-u.
- Plava popunjenost pre glave: Firefox preko ::-moz-range-progress, Chromium
preko gradijenta i CSS promenljive --popunjeno koju postavlja JS.
- Svih 12 slajdera (profil_tema, podesavanja_izgled, podesavanja) prešlo sa
inline accent-color stila na klasu .klizac.
2026-06-10 00:05:40 +02:00
Dasko 53d9ada97b Ispravljen prikaz fontova na Chart.js grafikonu u Chromium browserima (Opera, Chrome, Edge)
Problem: u Operi i Chrome-u na Chart.js grafikonu (Izveštaji) stubići
se vide, ali slova i brojevi ne. U Firefoxu sve radi ispravno.
Uzrok 1 — CSP font-src 'self' (internal/middleware/bezbednost.go):
Chromium primenjuje CSP font-src direktivu i na canvas.fillText(),
blokirajući sistemske fontove jer nisu sa 'self' origina.
Firefox ovu proveru ne radi.
Uzrok 2 — nedostaje font family u Chart.js konfiguraciji:
Canvas na Linuxu ne ume sam da pronađe font sa ćiriličnim slovima
(Helvetica/Arial ih često nemaju za canvas iako ih imaju u DOM-u).
Rešenje:
- Uklonjena font-src direktiva iz CSP-a
- Dodat family: 'DejaVu Sans, Ubuntu, system-ui, sans-serif' na
legendu, x-osu i y-osu Chart.js grafikona
2026-06-09 22:15:44 +02:00
Dasko eb506ce519 Lokalizovane frontend biblioteke i popravljen prikaz u Opera/Chromium
Uklonjena zavisnost od spoljnih CDN-ova koja je u Operi prouzrokovala
nestanak stilova i elemenata kada blocker/ekstenzija blokira CDN:
- Tailwind (cdn.tailwindcss.com) potpuno izbačen; 9 korišćenih klasa
(grid, grid-cols-*, md:grid-cols-*, gap-*, mb-6) prebačeno u main.css
- HTMX i Chart.js skinuti lokalno u web/static/js/ i serviraju se
preko go:embed umesto sa jsdelivr CDN-a
- CSP očišćen u bezbednost.go — uklonjeni svi spoljni izvori, ostaje 'self'
Popravljen grafikon na stranici Izveštaji: dodato color-scheme:only light
na canvas i wrapper, jer Operin "tamni režim za web" (force-dark) zatamni
canvas i učini tekst na osama nevidljivim.
2026-06-09 02:32:24 +02:00
Dasko 9466c7133b Code-review popravke: RequireDozvola middleware, validacija backupa, dedup partiala
Bezbednost / dozvole:
- Nov RequireDozvola(proveri, akcija) middleware (po uzoru na RequireAdmin):
na odbijanje redirekt na /dashboard sa flash porukom umesto golog 403
- 10 "pregled" ruta (prodaja, servis, klijenti, dobavljači, nabavke) prešlo
na deklarativnu proveru na nivou rute
- Uklonjene inline pregled-provere iz handlera — provera je sad na jednom
mestu po ruti, vidljiva u ruteru
Backup podešavanja:
- Neispravan unos (van opsega ili ne-broj) više se ne preskače tiho;
prikazuje se jasna greška i ne prikazuje se lažno "sačuvano"
- Hvata se greška pri čuvanju u bazu (uklonjen progutani _ =)
Šabloni:
- "Premesti" dropdown izvučen u jedan {{define "premestiMeni"}} partial
(više nije dupliran u tabeli i mobilnoj kartici)
- Dodat dict helper u FuncMap saSidebar šablona radi prosleđivanja više
vrednosti partialu; standalone šabloni namerno ostaju bez izmene
2026-06-09 01:26:10 +02:00
Dasko eb389dedf9 Magacin premeštanje, backup podešavanja, čišćenje RBAC sistema
Magacin:
- Dodato premeštanje artikla u drugu kategoriju (dugme + nativni
<details> meni, bez JS-a; radi na desktopu i mobilnom)
- Endpoint POST /magacin/premesti/{id} uz proveru dozvole artikal.premesti
Backup:
- Nova podešavanja: interval automatskog backupa i broj kopija (rotacija)
- Periodični backup uz onaj pri pokretanju; interval se čita iz baze
- Migracija 037_backup_podesavanja.sql
Dozvole (RBAC):
- Dodate kartice koje su nedostajale (dashboard.prihod, prodaja.storno,
podesavanja.login_pozadina, tema.lokalno) — popravljen i bug gde su se
gasile pri svakom čuvanju matrice
- Aktivirana kontrola pregleda za prodaju, servis, klijente i dobavljače
(provera u handlerima + skrivanje iz sidebara)
- Uklonjene mrtve/obmanjujuće dozvole iz matrice i sveAkcije (korisnici,
podsetnici, artikal.pregled, kategorija.izmeni, tema.globalno,
podesavanja.app_pozadina); sveAkcije 47 -> 34
- Čišćenje zastarelih redova (siročića) u tabeli dozvola pri startu
Ostalo:
- Statički fajlovi: embed celog web/static i ispravan MIME za .js/.css
- Keš šablona: dodat admin_dozvole (stranica Dozvole se nije otvarala)
- Sidebar accordion: radi i skupljen i proširen, međusobno isključiv
2026-06-09 00:55:15 +02:00
Dasko 19ecdf30a3 Popravka sidebara: kolaps, podmeni i HTMX navigacija 2026-06-08 19:29:17 +02:00
Dasko be74b22508 Premešten responsive CSS u main.css zbog HTMX navigacije
- Premešten sav responsive CSS (display: none za kartice, @media pravila)
iz {{define "dodatni-css"}} blokova u globalni main.css
- Pogođene stranice: nabavke, dobavljači, klijenti, magacin, servis,
prodaja, podsetnici, nabavka forma/detalji, servis forma, podešavanja
- Razlog: HTMX pri navigaciji menja samo <main> sadržaj, <head> ostaje —
page-specifičan CSS iz dodatni-css nije bio aktivan nakon navigacije
2026-06-07 22:41:09 +02:00
Dasko ef3a323203 Bezbednosni audit i refaktoring: HP popravke, RBAC, flash poruke, go:embed, CSP 2026-06-07 22:41:09 +02:00
Dasko ca7f8e525d Izmena Readme.md fajla i dodat Readme_sr.md na srpskom 2026-06-07 02:15:34 +02:00
Dasko 0966f358ba Refaktoring: uklanjanje globalne teme i app pozadine, dozvole u podešavanja, UI ispravke
- Uklonjena globalna tema i pozadinska slika aplikacije (ostala samo lična pozadina po korisniku)
- Uklonjena animacija treperenja pozadine pri navigaciji; dodat sessionStorage za instant prikaz
- Dozvole premeštene iz sidebar-a u Podešavanja → Sistem; vidljive i adminu (samo Radnik kolona)
- Admin može menjati samo dozvole uloge Radnik, superadmin menja i Radnik i Admin
- Zatamnjivanje kartice NTech na stranici prijave — novi slider u Podešavanja → Izgled
- Upozorenje na dashboard-u (kritične zalihe) — popravljen kontrast boje
2026-06-06 21:07:01 +02:00
Dasko 1b2d701b7c Izmena u radu tema 2026-06-06 17:47:52 +02:00
Dasko 75b020b98d Podešavanja: accordion podmeni, podsekcije Opšte/Izgled/Sistem, glassmorphism prijava, kontrast teksta 2026-06-06 02:58:12 +02:00
Dasko 7ee627d0e0 Podešavanja: ispravke UI pozadinske slike prijave i aplikacije 2026-06-06 01:21:08 +02:00
Dasko 855084fe8c Podešavanja: glass efekt, pozadinska slika aplikacije, preview panel sa slajderima 2026-06-06 01:02:53 +02:00
Dasko d90ba424b5 Podešavanja: pozadinska slika i glass efekt za aplikaciju sa live preview sliderom 2026-06-05 23:49:05 +02:00
Dasko 6516bda88d Flash poruke: toast notifikacije umesto ?greska= i ?sacuvano= u URL-u 2026-06-05 23:15:49 +02:00
Dasko 742d0a528c Bezbednost: ispravke kontrole pristupa u admin i handler sloju 2026-06-05 22:41:20 +02:00
Dasko c0bb36c1b3 Dodato go:embed - disk-first logika za statičke fajlove i šablone 2026-06-04 20:14:03 +02:00