Ticketing: settings tabs are deep-linkable routes (/settings/{tab})

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Jh8RnYXrC8E6z79LWs8ggd
This commit is contained in:
2026-06-21 20:19:04 -04:00
parent dd0a458250
commit e49a1e2ac9
3 changed files with 5 additions and 2 deletions

View File

@@ -1,7 +1,7 @@
{ {
"name": "dashboard/ticketing", "name": "dashboard/ticketing",
"description": "Help desk ticketing snap-in for the Dashboard platform", "description": "Help desk ticketing snap-in for the Dashboard platform",
"version": "1.0.0", "version": "1.0.1",
"type": "library", "type": "library",
"require": { "require": {
"php": "^8.2", "php": "^8.2",

View File

@@ -64,7 +64,7 @@ class TicketingSettingsController extends Controller
} }
} }
public function index(): Response public function index(?string $tab = null): Response
{ {
$this->requireAgentAccess(); $this->requireAgentAccess();
@@ -101,6 +101,7 @@ class TicketingSettingsController extends Controller
: EmailConnection::whereIn('group_id', $myGroupIds)->get(); : EmailConnection::whereIn('group_id', $myGroupIds)->get();
return Inertia::render('Ticketing/Settings', [ return Inertia::render('Ticketing/Settings', [
'activeTab' => $tab,
'groups' => $groups, 'groups' => $groups,
'agents' => $agents, 'agents' => $agents,
'priorities' => $priorities, 'priorities' => $priorities,

View File

@@ -29,6 +29,8 @@ Route::middleware(['web', 'auth', 'app.access:ticketing'])
// ── Settings (must be before /{ticket} wildcard) ────────────────────── // ── Settings (must be before /{ticket} wildcard) ──────────────────────
Route::middleware('permission:ticketing.settings')->group(function () { Route::middleware('permission:ticketing.settings')->group(function () {
Route::get('/settings', [TicketingSettingsController::class, 'index']) ->name('settings'); 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::post('/settings/groups', [TicketingSettingsController::class, 'storeGroup']) ->name('settings.groups.store');
Route::put('/settings/groups/{group}', [TicketingSettingsController::class, 'updateGroup']) ->name('settings.groups.update'); Route::put('/settings/groups/{group}', [TicketingSettingsController::class, 'updateGroup']) ->name('settings.groups.update');
Route::post('/settings/agents', [TicketingSettingsController::class, 'storeAgent']) ->name('settings.agents.store'); Route::post('/settings/agents', [TicketingSettingsController::class, 'storeAgent']) ->name('settings.agents.store');