mirror of
https://github.com/snipe/snipe-it.git
synced 2026-08-18 11:15:42 +00:00
Added breadcrumbs
This commit is contained in:
@ -394,7 +394,7 @@
|
||||
</li>
|
||||
@endcan
|
||||
@can('index', \App\Models\Asset::class)
|
||||
<li class="treeview{{ ((request()->is('statuslabels/*') || request()->is(['hardware*', 'maintenances*'])) ? ' active' : '') }}">
|
||||
<li class="treeview{{ ((request()->is('statuslabels/*') || request()->is('hardware*')) ? ' active' : '') }}">
|
||||
<a href="#">
|
||||
<x-icon type="assets" class="fa-fw" />
|
||||
<span>{{ trans('general.assets') }}</span>
|
||||
@ -523,11 +523,6 @@
|
||||
{{ trans('general.deleted') }}
|
||||
</a>
|
||||
</li>
|
||||
<li {!! (request()->is('maintenances') ? ' class="active" aria-current="page"' : '') !!}>
|
||||
<a href="{{ route('maintenances.index') }}">
|
||||
{{ trans('general.maintenances') }}
|
||||
</a>
|
||||
</li>
|
||||
@endcan
|
||||
@can('audit', \App\Models\Asset::class)
|
||||
<li id="bulk-audit-sidenav-option" {!! (request()->is('hardware/bulkaudit') ? ' class="active" aria-current="page"' : '') !!}>
|
||||
@ -538,6 +533,47 @@
|
||||
@endcan
|
||||
|
||||
</ul>
|
||||
</li>
|
||||
@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))
|
||||
<li class="treeview{{ (request()->is('maintenances*') || request()->is('maintenance-types*')) ? ' active' : '' }}">
|
||||
<a href="#">
|
||||
<x-icon type="maintenances" class="fa-fw"/>
|
||||
<span>{{ trans('general.maintenances') }}</span>
|
||||
<x-icon type="angle-left" class="pull-right fa-fw"/>
|
||||
</a>
|
||||
<ul class="treeview-menu">
|
||||
@can('view', \App\Models\Asset::class)
|
||||
<li{!! (request()->is('maintenances') ? ' class="active" aria-current="page"' : '') !!}>
|
||||
<a href="{{ route('maintenances.index') }}">
|
||||
<x-icon type="circle" class="text-grey fa-fw"/>
|
||||
{{ trans('general.list_all') }}
|
||||
</a>
|
||||
</li>
|
||||
@endcan
|
||||
@can('index', \App\Models\MaintenanceType::class)
|
||||
<li{!! (request()->is('maintenance-types*') ? ' class="active" aria-current="page"' : '') !!}>
|
||||
<a href="{{ route('maintenance-types.index') }}">
|
||||
<x-icon type="circle" class="text-grey fa-fw"/>
|
||||
{{ trans('admin/maintenance_types/general.maintenance_types') }}
|
||||
</a>
|
||||
</li>
|
||||
@endcan
|
||||
</ul>
|
||||
</li>
|
||||
@endif
|
||||
|
||||
@can('view', \App\Models\Asset::class)
|
||||
<li{!! (request()->routeIs('calendar.index') ? ' class="active" aria-current="page"' : '') !!}>
|
||||
<a href="#">
|
||||
<x-icon type="calendar" class="fa-fw"/>
|
||||
<span>{{ trans('general.calendar') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
@endcan
|
||||
@can('view', \App\Models\License::class)
|
||||
|
||||
@ -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']
|
||||
|
||||
Reference in New Issue
Block a user