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",
"description": "Help desk ticketing snap-in for the Dashboard platform",
"version": "1.0.0",
"version": "1.0.1",
"type": "library",
"require": {
"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();
@@ -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,

View File

@@ -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');