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.
This commit is contained in:
@@ -13,8 +13,8 @@ func BezbednostHeaders() func(http.Handler) http.Handler {
|
||||
h.Set("Referrer-Policy", "strict-origin-when-cross-origin")
|
||||
h.Set("Content-Security-Policy",
|
||||
"default-src 'self'; "+
|
||||
"style-src 'self' 'unsafe-inline' https://cdn.tailwindcss.com; "+
|
||||
"script-src 'self' 'unsafe-inline' https://cdn.tailwindcss.com https://cdn.jsdelivr.net; "+
|
||||
"style-src 'self' 'unsafe-inline'; "+
|
||||
"script-src 'self' 'unsafe-inline'; "+
|
||||
"img-src 'self' data: blob:; "+
|
||||
"font-src 'self'; "+
|
||||
"connect-src 'self'")
|
||||
|
||||
@@ -740,3 +740,20 @@ select {
|
||||
@view-transition {
|
||||
navigation: auto;
|
||||
}
|
||||
|
||||
/* pomoćne klase (ranije iz Tailwind-a, sada lokalno da ne zavisimo od CDN-a) */
|
||||
.grid { display: grid; }
|
||||
.gap-3 { gap: 12px; }
|
||||
.gap-4 { gap: 16px; }
|
||||
.mb-6 { margin-bottom: 24px; }
|
||||
|
||||
/* broj kolona u grid rasporedu — bazne (mobilni-first) vrednosti */
|
||||
.grid-cols-1 { grid-template-columns: repeat(1, minmax(0, 1fr)); }
|
||||
.grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
|
||||
|
||||
/* responsive varijante — primenjuju se od 768px naviše (Tailwind „md") */
|
||||
@media (min-width: 768px) {
|
||||
.md\:grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
|
||||
.md\:grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
|
||||
.md\:grid-cols-5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }
|
||||
}
|
||||
|
||||
Vendored
+20
File diff suppressed because one or more lines are too long
Vendored
+1
File diff suppressed because one or more lines are too long
@@ -263,7 +263,7 @@
|
||||
inicijalizujGrafikon();
|
||||
} else {
|
||||
var s = document.createElement('script');
|
||||
s.src = 'https://cdn.jsdelivr.net/npm/chart.js@4.4.4/dist/chart.umd.min.js';
|
||||
s.src = '/static/js/chart.umd.min.js';
|
||||
s.onload = inicijalizujGrafikon;
|
||||
document.head.appendChild(s);
|
||||
}
|
||||
|
||||
@@ -22,9 +22,6 @@
|
||||
<!-- glavni stilovi -->
|
||||
<link rel="stylesheet" href="/static/css/main.css" />
|
||||
|
||||
<!-- tailwind -->
|
||||
<script src="https://cdn.tailwindcss.com"></script>
|
||||
|
||||
{{block "dodatni-css" .}}{{end}}
|
||||
|
||||
{{if .AppPozadina}}
|
||||
@@ -112,8 +109,8 @@
|
||||
<!-- alpine.js CSP build (lokalno, bez unsafe-eval) -->
|
||||
<script src="/static/js/alpine.csp.min.js" defer></script>
|
||||
|
||||
<!-- htmx za komunikaciju sa serverom -->
|
||||
<script src="https://cdn.jsdelivr.net/npm/htmx.org@2.x.x/dist/htmx.min.js"></script>
|
||||
<!-- htmx za komunikaciju sa serverom (lokalno) -->
|
||||
<script src="/static/js/htmx.min.js"></script>
|
||||
|
||||
<!-- sidebar logika — sidebar se NIKAD ne menja pri HTMX navigaciji, pa nema potrebe za swap logikom -->
|
||||
<script>
|
||||
|
||||
Reference in New Issue
Block a user