From b8a987e4c69c2f6e7b57bf8379cdbb9bafa92455 Mon Sep 17 00:00:00 2001 From: Jared Vititoe Date: Fri, 23 Jan 2026 10:23:19 -0500 Subject: [PATCH] fix: Cache busting and visibility group editing UI - Add cache busting query params to JS/CSS files (v=20260123) - Add visibility group selection UI for editing existing tickets - Add toggleVisibilityGroupsEdit() and getSelectedVisibilityGroups() functions - Fix visibility data being saved when editing tickets - Pass $conn to views for UserModel access Co-Authored-By: Claude Opus 4.5 --- assets/js/ticket.js | 30 +++++++++++++++++++- controllers/TicketController.php | 5 +++- views/CreateTicketView.php | 6 ++-- views/DashboardView.php | 6 ++-- views/TicketView.php | 48 +++++++++++++++++++------------- 5 files changed, 67 insertions(+), 28 deletions(-) diff --git a/assets/js/ticket.js b/assets/js/ticket.js index 8640a5d..a4f7dce 100644 --- a/assets/js/ticket.js +++ b/assets/js/ticket.js @@ -5,6 +5,25 @@ function escapeHtml(text) { return div.innerHTML; } +/** + * Toggle visibility groups field based on visibility selection + */ +function toggleVisibilityGroupsEdit() { + const visibility = document.getElementById('visibilitySelect')?.value; + const groupsField = document.getElementById('visibilityGroupsField'); + if (groupsField) { + groupsField.style.display = visibility === 'internal' ? 'block' : 'none'; + } +} + +/** + * Get selected visibility groups + */ +function getSelectedVisibilityGroups() { + const checkboxes = document.querySelectorAll('.visibility-group-checkbox:checked'); + return Array.from(checkboxes).map(cb => cb.value); +} + function saveTicket() { const editables = document.querySelectorAll('.editable'); const data = {}; @@ -34,9 +53,18 @@ function saveTicket() { } }); + // Get visibility settings + const visibilitySelect = document.getElementById('visibilitySelect'); + if (visibilitySelect) { + data.visibility = visibilitySelect.value; + if (data.visibility === 'internal') { + data.visibility_groups = getSelectedVisibilityGroups(); + } + } + // Use the correct API path const apiUrl = '/api/update_ticket.php'; - + fetch(apiUrl, { method: 'POST', headers: { diff --git a/controllers/TicketController.php b/controllers/TicketController.php index 0b67e60..5a9fab1 100644 --- a/controllers/TicketController.php +++ b/controllers/TicketController.php @@ -80,10 +80,13 @@ class TicketController { // Get allowed status transitions for this ticket $allowedTransitions = $this->workflowModel->getAllowedTransitions($ticket['status']); + // Make $conn available to view for visibility groups + $conn = $this->conn; + // Load the view include dirname(__DIR__) . '/views/TicketView.php'; } - + public function create() { // Get current user $currentUser = $GLOBALS['currentUser'] ?? null; diff --git a/views/CreateTicketView.php b/views/CreateTicketView.php index a1aca43..1d3024c 100644 --- a/views/CreateTicketView.php +++ b/views/CreateTicketView.php @@ -8,9 +8,9 @@ Create New Ticket - - - + + + - - + + - - - + + +