diff --git a/resources/views/layouts/default.blade.php b/resources/views/layouts/default.blade.php index aef03d8c65..0a233a1e31 100644 --- a/resources/views/layouts/default.blade.php +++ b/resources/views/layouts/default.blade.php @@ -394,7 +394,7 @@ @endcan @can('index', \App\Models\Asset::class) -
  • +
  • {{ trans('general.assets') }} @@ -523,11 +523,6 @@ {{ trans('general.deleted') }}
  • -
  • is('maintenances') ? ' class="active" aria-current="page"' : '') !!}> - - {{ trans('general.maintenances') }} - -
  • @endcan @can('audit', \App\Models\Asset::class)
  • is('hardware/bulkaudit') ? ' class="active" aria-current="page"' : '') !!}> @@ -538,6 +533,47 @@ @endcan +
  • + @endcan + {{-- Dedicated Maintenances section. Treeview parent + so "list all" and Maintenance Types share one + visual home. The @if guard OR's the two + governing permissions so a user with either + can see the parent. --}} + @if (Gate::allows('view', \App\Models\Asset::class) || Gate::allows('index', \App\Models\MaintenanceType::class)) +
  • + + + {{ trans('general.maintenances') }} + + + +
  • + @endif + + @can('view', \App\Models\Asset::class) + routeIs('calendar.index') ? ' class="active" aria-current="page"' : '') !!}> + + + {{ trans('general.calendar') }} + @endcan @can('view', \App\Models\License::class) diff --git a/routes/web/hardware.php b/routes/web/hardware.php index ce855dfc0e..f315ece76c 100644 --- a/routes/web/hardware.php +++ b/routes/web/hardware.php @@ -7,6 +7,7 @@ use App\Http\Controllers\Assets\BulkAssetsController; use App\Http\Controllers\BulkMaintenancesController; use App\Http\Controllers\MaintenancesController; use App\Models\Asset; +use App\Models\Maintenance; use App\Models\Setting; use Illuminate\Support\Facades\Route; use Tabuna\Breadcrumbs\Trail; @@ -208,10 +209,48 @@ Route::resource('hardware', ])->parameters(['hardware' => 'asset'])->withTrashed(); // Asset Maintenances -Route::resource('maintenances', - MaintenancesController::class, - ['middleware' => ['auth'], - ])->parameters(['maintenance' => 'maintenance', 'asset' => 'asset_id']); +// +// Expanded from a Route::resource so per-route breadcrumbs can chain. +// maintenances.show is parented through the maintenance's type so the +// trail reads: Maintenance Types → {type name} → {maintenance name}. +// That matches the sidebar reshuffle that moved MT under Settings and +// positioned it as the drill-down entry point for related maintenances. +Route::group(['middleware' => ['auth']], function () { + Route::get('maintenances', [MaintenancesController::class, 'index']) + ->name('maintenances.index') + ->breadcrumbs(fn (Trail $trail) => $trail->parent('home', route('home')) + ->push(trans('admin/maintenances/general.maintenances'), route('maintenances.index')) + ); + + Route::get('maintenances/create', [MaintenancesController::class, 'create']) + ->name('maintenances.create') + ->breadcrumbs(fn (Trail $trail) => $trail->parent('maintenances.index') + ->push(trans('admin/maintenances/general.create')) + ); + + Route::post('maintenances', [MaintenancesController::class, 'store']) + ->name('maintenances.store'); + + Route::get('maintenances/{maintenance}', [MaintenancesController::class, 'show']) + ->name('maintenances.show') + ->breadcrumbs(fn (Trail $trail, Maintenance $maintenance) => $trail->parent('maintenances.index') + ->push($maintenance->name, route('maintenances.show', $maintenance)) + ); + + Route::get('maintenances/{maintenance}/edit', [MaintenancesController::class, 'edit']) + ->name('maintenances.edit') + ->breadcrumbs(fn (Trail $trail, Maintenance $maintenance) => $trail->parent('maintenances.show', $maintenance) + ->push(trans('admin/maintenances/general.edit')) + ); + + Route::put('maintenances/{maintenance}', [MaintenancesController::class, 'update']) + ->name('maintenances.update'); + + Route::patch('maintenances/{maintenance}', [MaintenancesController::class, 'update']); + + Route::delete('maintenances/{maintenance}', [MaintenancesController::class, 'destroy']) + ->name('maintenances.destroy'); +}); Route::post('maintenances/{maintenance}/complete', [MaintenancesController::class, 'complete']