diff --git a/static/admin.html b/static/admin.html index f4523b7..2790c49 100644 --- a/static/admin.html +++ b/static/admin.html @@ -32,13 +32,9 @@ body { font-size: 14px; line-height: 1.5; } -.app { display: grid; grid-template-columns: 240px 1fr; min-height: 100vh; } -.sidebar { - background: var(--bg-2); - border-right: 1px solid var(--border); - padding: 20px 0; - display: flex; flex-direction: column; -} +.app { display: grid; grid-template-columns: 1fr; min-height: 100vh; } +/* Native .sidebar hidden β€” shared sidebar (/static/shared/sidebar.*) handles sectioned menu */ +.sidebar { display: none; } .brand { padding: 0 20px 20px; border-bottom: 1px solid var(--border); @@ -161,6 +157,8 @@ td.num { font-family: 'JetBrains Mono', monospace; text-align: right; } .sidebar { display: none; } } + +
@@ -206,13 +204,13 @@ td.num { font-family: 'JetBrains Mono', monospace; text-align: right; }
Portali
- πŸ”‘Prijava - πŸ“±Aplikacija - πŸ›‘Administracija - πŸ‘₯CRM - πŸ’°ERP - πŸ“ˆKPI - πŸ“‹Audit + πŸ”‘Prijava + πŸ“±Aplikacija + πŸ›‘Administracija + πŸ‘₯CRM + πŸ’°ERP + πŸ“ˆKPI + πŸ“‹Audit 🌐Public portal diff --git a/static/app.html b/static/app.html index fd20395..5e9ad96 100644 --- a/static/app.html +++ b/static/app.html @@ -36,7 +36,8 @@ button,input,select,textarea{font-family:inherit;font-size:inherit;outline:none} /* ============ LAYOUT ============ */ .app{display:flex;min-height:100vh} -.sb{width:240px;background:linear-gradient(180deg,var(--bg1) 0%,var(--bg0) 100%);border-right:1px solid var(--rim);position:fixed;top:0;left:0;bottom:0;display:flex;flex-direction:column;z-index:10;transition:width .22s ease} +/* Native .sb hidden β€” shared sidebar (/static/shared/sidebar.*) handles sectioned menu */ +.sb{display:none} .sb-h{padding:18px 18px 14px;border-bottom:1px solid var(--rim);position:relative} .sb-h .logo{font-weight:800;font-size:14px;color:var(--t0);letter-spacing:.5px;white-space:nowrap;overflow:hidden} .sb-h .logo .g{color:var(--pgz-gold)} @@ -78,7 +79,7 @@ button,input,select,textarea{font-family:inherit;font-size:inherit;outline:none} .nav-ext:hover{color:var(--pgz-gold);background:var(--bg2)} .nav-ext.active{background:linear-gradient(90deg,var(--pgz-blue) 0%,var(--pgz-blue2) 100%);color:#fff} -.main{margin-left:240px;flex:1;min-width:0;transition:margin-left .22s ease} +.main{margin-left:0;flex:1;min-width:0;transition:margin-left .22s ease} .sb.collapsed ~ .main{margin-left:58px} .tb{background:var(--bg1);border-bottom:1px solid var(--rim);padding:12px 22px;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:5;gap:12px} .tb-t{font-size:15px;font-weight:700;color:var(--t0)} @@ -256,6 +257,8 @@ table tbody tr:hover{background:var(--bg3)} .role-switch{display:none} } + + @@ -600,35 +603,22 @@ function setRole(r){ } //=========== NAV =========== -const NAV_EXTERNAL = [ - {id:'login', href:'/sport/login', ic:'\u{1F511}', label:'Prijava'}, - {id:'app', href:'/sport/app', ic:'\u{1F4F1}', label:'Aplikacija'}, - {id:'admin', href:'/sport/admin', ic:'\u{1F6E1}', label:'Administracija'}, - {id:'crm', href:'/sport/crm', ic:'\u{1F465}', label:'CRM'}, - {id:'erp', href:'/sport/erp', ic:'\u{1F4B0}', label:'ERP'}, - {id:'kpi', href:'/sport/kpi', ic:'\u{1F4C8}', label:'KPI'}, - {id:'audit', href:'/sport/audit', ic:'\u{1F4CB}', label:'Audit'}, - {id:'sport2', href:'/sport/static/sport2.html', ic:'\u{1F310}', label:'Public portal'} -]; function buildNav(){ const items = NAV_BY_ROLE[_state.role] || []; - let html = items.map(n => + $('#nav').innerHTML = items.map(n => `` ).join(''); - // PORTALI separator + external links (active = 'app') - html += ''; - html += NAV_EXTERNAL.map(n => - ` - ${n.ic}${esc(n.label)} - β†— - ` - ).join(''); - $('#nav').innerHTML = html; } +window.addEventListener('hashchange', () => { + const h = (location.hash||'').replace(/^#/,''); + if(!h) return; + const items = NAV_BY_ROLE[_state.role] || []; + if(items.some(n => n.id===h)) navTo(h); +}); function navTo(id){ _state.section = id; $$('.nav-i').forEach(el => el.classList.toggle('active', el.dataset.id===id)); @@ -1158,7 +1148,7 @@ SECTIONS['pgz:racuni'] = () => ` SECTIONS['pgz:crm'] = () => `
- πŸ“‹ Otvori CRM workspace (Članarine β€’ Liječnički β€’ Obrasci) β€” live API + πŸ“‹ Otvori CRM workspace (Članarine β€’ Liječnički β€’ Obrasci) β€” live API
@@ -1255,7 +1245,7 @@ async function renderKalendar(opts){ const isToday = (k === today.toISOString().slice(0,10)); const evHtml = ev.slice(0,3).map(e => `
${esc(e.title.substring(0,28))}
`).join(''); const more = ev.length > 3 ? `
+${ev.length-3} viΕ‘e
` : ''; - grid += `
${d}
${evHtml}${more}
`; + grid += `
${d}
${evHtml}${more}
`; } grid += '
'; @@ -1505,7 +1495,7 @@ SECTIONS['klub:clanovi'] = () => `
`; SECTIONS['klub:clanarine'] = () => ` -
πŸ“‹ Otvori live CRM (HUB-3 PDF + EPC QR generator)
+
πŸ“‹ Otvori live CRM (HUB-3 PDF + EPC QR generator)
€ Članarine 2026
Plaćeno
80
Dug
7
@@ -1527,7 +1517,7 @@ SECTIONS['klub:clanarine'] = () => `
`; SECTIONS['klub:lijecnicki'] = () => ` -
βš• Otvori live CRM β€” pregledi + ZZJZ PGΕ½ scheduling
+
βš• Otvori live CRM β€” pregledi + ZZJZ PGΕ½ scheduling
βš• Liječnički pregledi članova
@@ -1626,7 +1616,7 @@ SECTIONS['sportas:clanarina'] = () => ` `; SECTIONS['sportas:lijecnicki'] = () => ` -
βš• Otvori live CRM β€” pregledi + ZZJZ PGΕ½ scheduling
`+` +
βš• Otvori live CRM β€” pregledi + ZZJZ PGΕ½ scheduling
`+`
βš• Moji liječnički pregledi
⚠ Trenutni: vrijedi do 2026-08-15 (103 dana)
@@ -1658,7 +1648,7 @@ SECTIONS['sportas:dokumenti'] = () => `
`; SECTIONS['sportas:obrasci'] = () => ` -
πŸ“ Otvori live obrasce β€” popuni i digitalno potpiΕ‘i
+
πŸ“ Otvori live obrasce β€” popuni i digitalno potpiΕ‘i
πŸ“ Obrasci za potpis
GDPR suglasnost 2026 β€” obvezno do 2026-06-01
diff --git a/static/crm.html b/static/crm.html index 612574c..7303ce6 100644 --- a/static/crm.html +++ b/static/crm.html @@ -136,7 +136,8 @@ table tr:hover td { background: rgba(26, 115, 232, 0.05); } .toast.err { border-left-color: var(--err); } - + + @@ -158,6 +159,7 @@ table tr:hover td { background: rgba(26, 115, 232, 0.05); }
πŸ“ Obrasci …
πŸ“Š Statistika
πŸ”” Notifikacije …
+
πŸ“¨ E-mail templates
ROLA:
ČlanDatum pregledaVrijedi doDoktorStatus