From e49a1e2ac92d23e4a6b1c3841fdfab2734534ea6 Mon Sep 17 00:00:00 2001 From: Joel Wedemire Date: Sun, 21 Jun 2026 20:19:04 -0400 Subject: [PATCH] Ticketing: settings tabs are deep-linkable routes (/settings/{tab}) Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01Jh8RnYXrC8E6z79LWs8ggd --- composer.json | 2 +- src/Http/Controllers/TicketingSettingsController.php | 3 ++- src/routes/ticketing.php | 2 ++ 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/composer.json b/composer.json index 5219d2a..4a4b738 100644 --- a/composer.json +++ b/composer.json @@ -1,7 +1,7 @@ { "name": "dashboard/ticketing", "description": "Help desk ticketing snap-in for the Dashboard platform", - "version": "1.0.0", + "version": "1.0.1", "type": "library", "require": { "php": "^8.2", diff --git a/src/Http/Controllers/TicketingSettingsController.php b/src/Http/Controllers/TicketingSettingsController.php index 1ca9951..213e1ae 100644 --- a/src/Http/Controllers/TicketingSettingsController.php +++ b/src/Http/Controllers/TicketingSettingsController.php @@ -64,7 +64,7 @@ class TicketingSettingsController extends Controller } } - public function index(): Response + public function index(?string $tab = null): Response { $this->requireAgentAccess(); @@ -101,6 +101,7 @@ class TicketingSettingsController extends Controller : EmailConnection::whereIn('group_id', $myGroupIds)->get(); return Inertia::render('Ticketing/Settings', [ + 'activeTab' => $tab, 'groups' => $groups, 'agents' => $agents, 'priorities' => $priorities, diff --git a/src/routes/ticketing.php b/src/routes/ticketing.php index 1e051be..15ccd91 100644 --- a/src/routes/ticketing.php +++ b/src/routes/ticketing.php @@ -29,6 +29,8 @@ Route::middleware(['web', 'auth', 'app.access:ticketing']) // ── Settings (must be before /{ticket} wildcard) ────────────────────── Route::middleware('permission:ticketing.settings')->group(function () { Route::get('/settings', [TicketingSettingsController::class, 'index']) ->name('settings'); + Route::get('/settings/{tab}', [TicketingSettingsController::class, 'index']) + ->where('tab', 'groups|agents|priorities|statuses|projects|automation')->name('settings.tab'); Route::post('/settings/groups', [TicketingSettingsController::class, 'storeGroup']) ->name('settings.groups.store'); Route::put('/settings/groups/{group}', [TicketingSettingsController::class, 'updateGroup']) ->name('settings.groups.update'); Route::post('/settings/agents', [TicketingSettingsController::class, 'storeAgent']) ->name('settings.agents.store');