mirror of
https://github.com/snipe/snipe-it.git
synced 2025-01-30 07:02:20 -08:00
Merge remote-tracking branch 'origin/develop'
This commit is contained in:
commit
b76500e32d
|
@ -288,7 +288,7 @@ class AssetModelsController extends Controller
|
||||||
public function show($modelId = null)
|
public function show($modelId = null)
|
||||||
{
|
{
|
||||||
$this->authorize('view', AssetModel::class);
|
$this->authorize('view', AssetModel::class);
|
||||||
$model = AssetModel::withTrashed()->find($modelId);
|
$model = AssetModel::withTrashed()->withCount('assets')->find($modelId);
|
||||||
|
|
||||||
if (isset($model->id)) {
|
if (isset($model->id)) {
|
||||||
return view('models/view', compact('model'));
|
return view('models/view', compact('model'));
|
||||||
|
|
|
@ -49,15 +49,86 @@ class BulkAssetsController extends Controller
|
||||||
return redirect()->back()->with('error', trans('admin/hardware/message.update.no_assets_selected'));
|
return redirect()->back()->with('error', trans('admin/hardware/message.update.no_assets_selected'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$asset_ids = $request->input('ids');
|
||||||
|
|
||||||
// Figure out where we need to send the user after the update is complete, and store that in the session
|
// Figure out where we need to send the user after the update is complete, and store that in the session
|
||||||
$bulk_back_url = request()->headers->get('referer');
|
$bulk_back_url = request()->headers->get('referer');
|
||||||
session(['bulk_back_url' => $bulk_back_url]);
|
session(['bulk_back_url' => $bulk_back_url]);
|
||||||
|
|
||||||
|
$allowed_columns = [
|
||||||
|
'id',
|
||||||
|
'name',
|
||||||
|
'asset_tag',
|
||||||
|
'serial',
|
||||||
|
'model_number',
|
||||||
|
'last_checkout',
|
||||||
|
'notes',
|
||||||
|
'expected_checkin',
|
||||||
|
'order_number',
|
||||||
|
'image',
|
||||||
|
'assigned_to',
|
||||||
|
'created_at',
|
||||||
|
'updated_at',
|
||||||
|
'purchase_date',
|
||||||
|
'purchase_cost',
|
||||||
|
'last_audit_date',
|
||||||
|
'next_audit_date',
|
||||||
|
'warranty_months',
|
||||||
|
'checkout_counter',
|
||||||
|
'checkin_counter',
|
||||||
|
'requests_counter',
|
||||||
|
'byod',
|
||||||
|
'asset_eol_date',
|
||||||
|
];
|
||||||
|
|
||||||
$asset_ids = $request->input('ids');
|
|
||||||
// Using the 'short-ternary' A/K/A "Elvis operator" '?:' here because ->input() might return an empty string
|
/**
|
||||||
list($sortname,$sortdir) = explode(" ",$request->input('sort') ?: 'id ASC');
|
* Make sure the column is allowed, and if it's a custom field, make sure we strip the custom_fields. prefix
|
||||||
$assets = Asset::with('assignedTo', 'location', 'model')->whereIn('id', $asset_ids)->orderBy($sortname, $sortdir)->get();
|
*/
|
||||||
|
$order = $request->input('order') === 'asc' ? 'asc' : 'desc';
|
||||||
|
$sort_override = str_replace('custom_fields.', '', $request->input('sort'));
|
||||||
|
|
||||||
|
// This handles all of the pivot sorting below (versus the assets.* fields in the allowed_columns array)
|
||||||
|
$column_sort = in_array($sort_override, $allowed_columns) ? $sort_override : 'assets.id';
|
||||||
|
|
||||||
|
$assets = Asset::with('assignedTo', 'location', 'model')->whereIn('assets.id', $asset_ids);
|
||||||
|
|
||||||
|
switch ($sort_override) {
|
||||||
|
case 'model':
|
||||||
|
$assets->OrderModels($order);
|
||||||
|
break;
|
||||||
|
case 'model_number':
|
||||||
|
$assets->OrderModelNumber($order);
|
||||||
|
break;
|
||||||
|
case 'category':
|
||||||
|
$assets->OrderCategory($order);
|
||||||
|
break;
|
||||||
|
case 'manufacturer':
|
||||||
|
$assets->OrderManufacturer($order);
|
||||||
|
break;
|
||||||
|
case 'company':
|
||||||
|
$assets->OrderCompany($order);
|
||||||
|
break;
|
||||||
|
case 'location':
|
||||||
|
$assets->OrderLocation($order);
|
||||||
|
case 'rtd_location':
|
||||||
|
$assets->OrderRtdLocation($order);
|
||||||
|
break;
|
||||||
|
case 'status_label':
|
||||||
|
$assets->OrderStatus($order);
|
||||||
|
break;
|
||||||
|
case 'supplier':
|
||||||
|
$assets->OrderSupplier($order);
|
||||||
|
break;
|
||||||
|
case 'assigned_to':
|
||||||
|
$assets->OrderAssigned($order);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
$assets->orderBy($column_sort, $order);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
$assets = $assets->get();
|
||||||
|
|
||||||
$models = $assets->unique('model_id');
|
$models = $assets->unique('model_id');
|
||||||
$modelNames = [];
|
$modelNames = [];
|
||||||
|
|
|
@ -43,7 +43,7 @@
|
||||||
</span>
|
</span>
|
||||||
<span class="hidden-xs hidden-sm">
|
<span class="hidden-xs hidden-sm">
|
||||||
{{ trans('general.assets') }}
|
{{ trans('general.assets') }}
|
||||||
{!! (($model->assets) && ($model->assets->count() > 0 )) ? '<badge class="badge badge-secondary">'.number_format($model->assets->count()).'</badge>' : '' !!}
|
{!! (($model->assets_count) && ($model->assets_count > 0 )) ? '<badge class="badge badge-secondary">'.number_format($model->assets_count).'</badge>' : '' !!}
|
||||||
</span>
|
</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
@ -342,7 +342,7 @@
|
||||||
@endcan
|
@endcan
|
||||||
|
|
||||||
@can('delete', \App\Models\AssetModel::class)
|
@can('delete', \App\Models\AssetModel::class)
|
||||||
@if ($model->assets->count() > 0)
|
@if ($model->assets_count > 0)
|
||||||
|
|
||||||
<div class="col-md-12" style="padding-bottom: 5px;">
|
<div class="col-md-12" style="padding-bottom: 5px;">
|
||||||
<button class="btn btn-block btn-sm btn-danger hidden-print disabled" data-tooltip="true" data-placement="top" data-title="{{ trans('general.cannot_be_deleted') }}">{{ trans('general.delete') }}</button>
|
<button class="btn btn-block btn-sm btn-danger hidden-print disabled" data-tooltip="true" data-placement="top" data-title="{{ trans('general.cannot_be_deleted') }}">{{ trans('general.delete') }}</button>
|
||||||
|
|
|
@ -6,8 +6,9 @@
|
||||||
'id' => (isset($id_formname)) ? $id_formname : 'assetsBulkForm',
|
'id' => (isset($id_formname)) ? $id_formname : 'assetsBulkForm',
|
||||||
]) }}
|
]) }}
|
||||||
|
|
||||||
{{-- The 'id ASC' will only be used if the cookie is actually empty (like on first-use) --}}
|
{{-- The sort and order will only be used if the cookie is actually empty (like on first-use) --}}
|
||||||
<input name="sort" type="hidden" value="id ASC">
|
<input name="sort" type="hidden" value="assets.id">
|
||||||
|
<input name="order" type="hidden" value="asc">
|
||||||
<label for="bulk_actions">
|
<label for="bulk_actions">
|
||||||
<span class="sr-only">
|
<span class="sr-only">
|
||||||
{{ trans('button.bulk_actions') }}
|
{{ trans('button.bulk_actions') }}
|
||||||
|
|
|
@ -164,23 +164,24 @@
|
||||||
// Initialize sort-order for bulk actions (label-generation) for snipe-tables
|
// Initialize sort-order for bulk actions (label-generation) for snipe-tables
|
||||||
$('.snipe-table').each(function (i, table) {
|
$('.snipe-table').each(function (i, table) {
|
||||||
table_cookie_segment = $(table).data('cookie-id-table');
|
table_cookie_segment = $(table).data('cookie-id-table');
|
||||||
name = '';
|
sort = '';
|
||||||
direction = '';
|
order = '';
|
||||||
cookies = document.cookie.split(";");
|
cookies = document.cookie.split(";");
|
||||||
for(i in cookies) {
|
for(i in cookies) {
|
||||||
cookiedef = cookies[i].split("=", 2);
|
cookiedef = cookies[i].split("=", 2);
|
||||||
cookiedef[0] = cookiedef[0].trim();
|
cookiedef[0] = cookiedef[0].trim();
|
||||||
if (cookiedef[0] == table_cookie_segment + ".bs.table.sortOrder") {
|
if (cookiedef[0] == table_cookie_segment + ".bs.table.sortOrder") {
|
||||||
direction = cookiedef[1];
|
order = cookiedef[1];
|
||||||
}
|
}
|
||||||
if (cookiedef[0] == table_cookie_segment + ".bs.table.sortName") {
|
if (cookiedef[0] == table_cookie_segment + ".bs.table.sortName") {
|
||||||
name = cookiedef[1];
|
sort = cookiedef[1];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (name && direction) {
|
if (sort && order) {
|
||||||
domnode = $($(this).data('bulk-form-id')).get(0);
|
domnode = $($(this).data('bulk-form-id')).get(0);
|
||||||
if ( domnode && domnode.elements && domnode.elements.sort ) {
|
if ( domnode && domnode.elements && domnode.elements.sort ) {
|
||||||
domnode.elements.sort.value = name + " " + direction;
|
domnode.elements.sort.value = sort;
|
||||||
|
domnode.elements.order.value = order;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -190,7 +191,8 @@
|
||||||
domnode = $($(this).data('bulk-form-id')).get(0);
|
domnode = $($(this).data('bulk-form-id')).get(0);
|
||||||
// make safe in case there isn't a bulk-form-id, or it's not found, or has no 'sort' element
|
// make safe in case there isn't a bulk-form-id, or it's not found, or has no 'sort' element
|
||||||
if ( domnode && domnode.elements && domnode.elements.sort ) {
|
if ( domnode && domnode.elements && domnode.elements.sort ) {
|
||||||
domnode.elements.sort.value = name + " " + order;
|
domnode.elements.sort.value = name;
|
||||||
|
domnode.elements.order.value = order;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue