From d7775e62eccbd0e3d96f7e50a5598db2dcbe2853 Mon Sep 17 00:00:00 2001 From: Jared Vititoe Date: Sat, 28 Mar 2026 12:43:24 -0400 Subject: [PATCH] Fix layout regressions, nav drawer structure, and security issues - base.css: add width:100%+min-width:0 to .lt-main so flex column body doesn't shrink content due to margin:0 auto from .lt-container - layout_header.php: restructure mobile nav drawer to match web_template exactly (nav-drawer-links nav, direct links, section div, no ul/li wrapper, overlay after drawer); fix lt-nav-overlay id mismatch with base.js; rename lt-header-username -> lt-header-user (matches CSS); add JSON_HEX_TAG to all inline json_encode calls (closes XSS) - base.css: add lt-kv-row/label/value aliases (display:contents pattern used in web_template v1.2 kv-grid); add lt-badge-sm variant - Admin views: add missing .catch() on editField/editRecurring/loadUsers; add JSON_HEX_TAG to json_encode in TemplatesView/WorkflowDesignerView - TicketView: add JSON_HEX_TAG to all ticket-data json_encode calls Co-Authored-By: Claude Sonnet 4.6 --- assets/css/base.css | 10 +++++ views/TicketView.php | 12 +++--- views/admin/CustomFieldsView.php | 4 +- views/admin/RecurringTicketsView.php | 6 ++- views/admin/TemplatesView.php | 2 +- views/admin/WorkflowDesignerView.php | 2 +- views/layout_header.php | 61 ++++++++++++---------------- 7 files changed, 50 insertions(+), 47 deletions(-) diff --git a/assets/css/base.css b/assets/css/base.css index f13aa12..8fc27bc 100644 --- a/assets/css/base.css +++ b/assets/css/base.css @@ -359,6 +359,10 @@ hr { .lt-main { padding-top: calc(var(--header-height) + var(--space-lg)); flex: 1; + /* When body is a flex column, margin:0 auto from .lt-container would prevent + stretch. Force full width so max-width+auto-margin centering still works. */ + width: 100%; + min-width: 0; /* prevent flex overflow on very small viewports */ } .lt-layout { @@ -1211,6 +1215,7 @@ select option:checked { .lt-badge-green { color: var(--accent-green); } .lt-badge-amber { color: var(--accent-amber); } .lt-badge-red { color: var(--accent-red); } +.lt-badge-sm { font-size: 0.52rem; padding: 0.05rem 0.3rem; letter-spacing: 0.08em; } /* Status + priority badge variants (dark-mode base) */ .lt-badge-open { color: var(--accent-green); background: rgba(0,255,136,0.08); border-color: rgba(0,255,136,0.35); text-shadow: var(--glow-green); } @@ -3192,6 +3197,11 @@ input[type="range"].lt-range::-moz-range-thumb { .lt-kv-val--green { color: var(--accent-green); } .lt-kv-val--red { color: var(--accent-red); } +/* v1.2 aliases: lt-kv-row wraps label+value as a transparent grid wrapper */ +.lt-kv-row { display: contents; } +.lt-kv-label { padding: var(--space-xs) var(--space-md) var(--space-xs) 0; color: var(--text-dim); text-transform: uppercase; letter-spacing: 0.05em; font-size: 0.7rem; white-space: nowrap; border-right: 1px solid var(--border-dim); } +.lt-kv-value { padding: var(--space-xs) 0 var(--space-xs) var(--space-md); color: var(--text-primary); } + /* ---------------------------------------------------------------- 43. HERO / BANNER SECTION diff --git a/views/TicketView.php b/views/TicketView.php index 841094d..9dab107 100644 --- a/views/TicketView.php +++ b/views/TicketView.php @@ -71,12 +71,12 @@ $visUserModel = new UserModel($conn); $allAvailableGroups = $visUserModel->getAllGroups(); // JSON-encode ticket fields for the inline script -$json_ticket_id = json_encode($ticket['ticket_id']); -$json_title = json_encode($ticket['title']); -$json_status = json_encode($ticket['status']); -$json_priority = json_encode($ticket['priority']); -$json_category = json_encode($ticket['category']); -$json_type = json_encode($ticket['type']); +$json_ticket_id = json_encode($ticket['ticket_id'], JSON_HEX_TAG); +$json_title = json_encode($ticket['title'], JSON_HEX_TAG); +$json_status = json_encode($ticket['status'], JSON_HEX_TAG); +$json_priority = json_encode($ticket['priority'], JSON_HEX_TAG); +$json_category = json_encode($ticket['category'], JSON_HEX_TAG); +$json_type = json_encode($ticket['type'], JSON_HEX_TAG); $pageInlineScript = << @@ -62,39 +62,30 @@ $_lt_navActive = $activeNav ?? 'dashboard';

   
 
-  
-  
+ +