mirror of
https://github.com/snipe/snipe-it.git
synced 2024-11-14 01:24:06 -08:00
Merge branch 'develop'
This commit is contained in:
commit
e759a249bd
|
@ -274,7 +274,7 @@ class AccessoriesController extends Controller
|
||||||
$data['note'] = $logaction->note;
|
$data['note'] = $logaction->note;
|
||||||
$data['require_acceptance'] = $accessory->requireAcceptance();
|
$data['require_acceptance'] = $accessory->requireAcceptance();
|
||||||
// TODO: Port this to new mail notifications
|
// TODO: Port this to new mail notifications
|
||||||
if (($accessory->requireAcceptance()=='1') || ($accessory->getEula())) {
|
if ((($accessory->requireAcceptance()=='1') || ($accessory->getEula())) && ($user->email!='')) {
|
||||||
|
|
||||||
Mail::send('emails.accept-accessory', $data, function ($m) use ($user) {
|
Mail::send('emails.accept-accessory', $data, function ($m) use ($user) {
|
||||||
$m->to($user->email, $user->first_name . ' ' . $user->last_name);
|
$m->to($user->email, $user->first_name . ' ' . $user->last_name);
|
||||||
|
@ -351,7 +351,7 @@ class AccessoriesController extends Controller
|
||||||
$data['item_tag'] = '';
|
$data['item_tag'] = '';
|
||||||
$data['note'] = e($logaction->note);
|
$data['note'] = e($logaction->note);
|
||||||
|
|
||||||
if (($accessory->checkin_email()=='1')) {
|
if ((($accessory->checkin_email()=='1')) && ($user->email!='')) {
|
||||||
|
|
||||||
Mail::send('emails.checkin-asset', $data, function ($m) use ($user) {
|
Mail::send('emails.checkin-asset', $data, function ($m) use ($user) {
|
||||||
$m->to($user->email, $user->first_name . ' ' . $user->last_name);
|
$m->to($user->email, $user->first_name . ' ' . $user->last_name);
|
||||||
|
|
|
@ -129,9 +129,8 @@ class AccessoriesController extends Controller
|
||||||
{
|
{
|
||||||
$this->authorize('view', Accessory::class);
|
$this->authorize('view', Accessory::class);
|
||||||
$accessory = Accessory::findOrFail($id)->with('users')->first();
|
$accessory = Accessory::findOrFail($id)->with('users')->first();
|
||||||
$accessories_users = $accessory->users;
|
$total = $accessory->users->count();
|
||||||
$total = $accessories_users->count();
|
return (new AccessoriesTransformer)->transformCheckedoutAccessory($accessory, $total);
|
||||||
return (new AccessoriesTransformer)->transformCheckedoutAccessories($accessories_users, $total);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -59,13 +59,30 @@ class AccessoriesTransformer
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public function transformCheckedoutAccessories (Collection $accessories_users, $total)
|
public function transformCheckedoutAccessory (Accessory $accessory, $total)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
$array = array();
|
$array = array();
|
||||||
foreach ($accessories_users as $user) {
|
foreach ($accessory->users as $user) {
|
||||||
$array[] = (new UsersTransformer)->transformUser($user);
|
$array[] = [
|
||||||
|
'assigned_pivot_id' => $user->pivot->id,
|
||||||
|
'id' => (int) $user->id,
|
||||||
|
'username' => e($user->username),
|
||||||
|
'name' => e($user->getFullNameAttribute()),
|
||||||
|
'first_name'=> e($user->first_name),
|
||||||
|
'last_name'=> e($user->last_name),
|
||||||
|
'employee_number' => e($user->employee_num),
|
||||||
|
'type' => 'user',
|
||||||
|
'available_actions' => ['checkin' => true]
|
||||||
|
];
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return (new DatatablesTransformer)->transformDatatables($array, $total);
|
return (new DatatablesTransformer)->transformDatatables($array, $total);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -33,7 +33,8 @@ class AssetsTransformer
|
||||||
'model_number' => ($asset->model) ? e($asset->model->model_number) : null,
|
'model_number' => ($asset->model) ? e($asset->model->model_number) : null,
|
||||||
'status_label' => ($asset->assetstatus) ? [
|
'status_label' => ($asset->assetstatus) ? [
|
||||||
'id' => (int) $asset->assetstatus->id,
|
'id' => (int) $asset->assetstatus->id,
|
||||||
'name'=> e($asset->assetstatus->name)
|
'name'=> e($asset->assetstatus->name),
|
||||||
|
'status_type' => e($asset->assetstatus->getStatuslabelType()),
|
||||||
] : null,
|
] : null,
|
||||||
'category' => ($asset->model->category) ? [
|
'category' => ($asset->model->category) ? [
|
||||||
'id' => (int) $asset->model->category->id,
|
'id' => (int) $asset->model->category->id,
|
||||||
|
|
|
@ -2,23 +2,35 @@
|
||||||
|
|
||||||
{{-- Page title --}}
|
{{-- Page title --}}
|
||||||
@section('title')
|
@section('title')
|
||||||
{{ trans('admin/hardware/general.checkin') }}
|
{{ trans('admin/accessories/general.checkin') }}
|
||||||
@parent
|
@parent
|
||||||
@stop
|
@stop
|
||||||
|
|
||||||
|
@section('header_right')
|
||||||
|
<a href="{{ URL::previous() }}" class="btn btn-primary pull-right">
|
||||||
|
{{ trans('general.back') }}</a>
|
||||||
|
@stop
|
||||||
|
|
||||||
|
|
||||||
{{-- Page content --}}
|
{{-- Page content --}}
|
||||||
@section('content')
|
@section('content')
|
||||||
|
|
||||||
<div class="row header">
|
|
||||||
<div class="col-md-12">
|
|
||||||
<a href="{{ URL::previous() }}" class="btn-flat gray pull-right"><i class="fa fa-arrow-left icon-white"></i> {{ trans('general.back') }}</a>
|
|
||||||
<h3> {{ trans('general.checkin') }}</h3>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row form-wrapper">
|
|
||||||
<!-- left column -->
|
<div class="row">
|
||||||
<div class="col-md-10 column">
|
<div class="col-md-9">
|
||||||
|
<form class="form-horizontal" method="post" action="" autocomplete="off">
|
||||||
|
<!-- CSRF Token -->
|
||||||
|
<input type="hidden" name="_token" value="{{ csrf_token() }}" />
|
||||||
|
|
||||||
|
<div class="box box-default">
|
||||||
|
@if ($accessory->id)
|
||||||
|
<div class="box-header with-border">
|
||||||
|
<h3 class="box-title">{{ $accessory->name }}</h3>
|
||||||
|
</div><!-- /.box-header -->
|
||||||
|
@endif
|
||||||
|
|
||||||
|
<div class="box-body">
|
||||||
|
|
||||||
<form class="form-horizontal" method="post" action="" autocomplete="off">
|
<form class="form-horizontal" method="post" action="" autocomplete="off">
|
||||||
<!-- CSRF Token -->
|
<!-- CSRF Token -->
|
||||||
|
@ -54,7 +66,12 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</form>
|
</form>
|
||||||
</div> <!-- .col-md-10.column -->
|
</div>
|
||||||
</div> <!-- .row.form-wrapper -->
|
<div class="box-footer text-right">
|
||||||
|
<button type="submit" class="btn btn-success"><i class="fa fa-check icon-white"></i> {{ trans('general.save') }}</button>
|
||||||
|
</div>
|
||||||
|
</div> <!-- .box.box-default -->
|
||||||
|
</form>
|
||||||
|
</div> <!-- .col-md-9-->
|
||||||
|
</div> <!-- .row -->
|
||||||
@stop
|
@stop
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
{{-- Page title --}}
|
{{-- Page title --}}
|
||||||
@section('title')
|
@section('title')
|
||||||
{{ trans('admin/hardware/general.checkout') }}
|
{{ trans('admin/accessories/general.checkout') }}
|
||||||
@parent
|
@parent
|
||||||
@stop
|
@stop
|
||||||
@section('header_right')
|
@section('header_right')
|
||||||
|
|
|
@ -57,15 +57,15 @@
|
||||||
name="accessory_users"
|
name="accessory_users"
|
||||||
class="table table-striped snipe-table"
|
class="table table-striped snipe-table"
|
||||||
id="table"
|
id="table"
|
||||||
data-url="{{ route('api.accessories.show', $accessory->id) }}"
|
data-url="{{ route('api.accessories.checkedout', $accessory->id) }}"
|
||||||
data-cookie="true"
|
data-cookie="true"
|
||||||
data-click-to-select="true"
|
data-click-to-select="true"
|
||||||
data-cookie-id-table="accessoryUsersTable"
|
data-cookie-id-table="accessoryUsersTable"
|
||||||
>
|
>
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th data-switchable="false" data-searchable="false" data-formatter="userLinkObjFormatter" data-sortable="false" data-field="name">{{ trans('general.user') }}</th>
|
<th data-switchable="false" data-searchable="false" data-formatter="usersLinkFormatter" data-sortable="false" data-field="name">{{ trans('general.user') }}</th>
|
||||||
<th data-switchable="false" data-searchable="false" data-sortable="false" data-field="actions">{{ trans('table.actions') }}</th>
|
<th data-switchable="false" data-searchable="false" data-sortable="false" data-field="actions" data-formatter="accessoriesInOutFormatter">{{ trans('table.actions') }}</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
</table>
|
</table>
|
||||||
|
|
|
@ -87,8 +87,8 @@
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
@endif
|
@endif
|
||||||
{{ $asset->present()->statusText() }}
|
<a href="{{ route('statuslabels.show', $asset->assetstatus->id) }}">{{ $asset->present()->statusText() }}</a>
|
||||||
({{ $asset->assetstatus->getStatuslabelType() }})
|
<label class="label label-default">{{ $asset->assetstatus->getStatuslabelType() }}</label>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@endif
|
@endif
|
||||||
|
|
|
@ -139,7 +139,9 @@ $('.snipe-table').bootstrapTable({
|
||||||
// Use this when we're introspecting into a column object and need to link
|
// Use this when we're introspecting into a column object and need to link
|
||||||
function genericColumnObjLinkFormatter(destination) {
|
function genericColumnObjLinkFormatter(destination) {
|
||||||
return function (value,row) {
|
return function (value,row) {
|
||||||
if ((value) && (value.name)) {
|
if (value.status_type) {
|
||||||
|
return '<a href="{{ url('/') }}/' + destination + '/' + value.id + '"> ' + value.name + '</a> ' + '<label class="label label-default">'+ value.status_type + '</label>';
|
||||||
|
} else if ((value) && (value.name)) {
|
||||||
return '<a href="{{ url('/') }}/' + destination + '/' + value.id + '"> ' + value.name + '</a>';
|
return '<a href="{{ url('/') }}/' + destination + '/' + value.id + '"> ' + value.name + '</a>';
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -228,8 +230,14 @@ $('.snipe-table').bootstrapTable({
|
||||||
return '<div data-tooltip="true" title="This item has a status label that is undeployable and cannot be checked out at this time."><a class="btn btn-sm btn-primary disabled">{{ trans('general.checkout') }}</a></div>';
|
return '<div data-tooltip="true" title="This item has a status label that is undeployable and cannot be checked out at this time."><a class="btn btn-sm btn-primary disabled">{{ trans('general.checkout') }}</a></div>';
|
||||||
|
|
||||||
// The user is allowed to check items in
|
// The user is allowed to check items in
|
||||||
} else if ((row.available_actions.checkin == true) && (row.assigned_to)) {
|
} else if (row.available_actions.checkin == true) {
|
||||||
|
if (row.assigned_to) {
|
||||||
return '<nobr><a href="{{ url('/') }}/' + destination + '/' + row.id + '/checkin" class="btn btn-sm btn-primary" data-tooltip="true" title="Check this item in so it is available for re-imaging, re-issue, etc.">{{ trans('general.checkin') }}</a>';
|
return '<nobr><a href="{{ url('/') }}/' + destination + '/' + row.id + '/checkin" class="btn btn-sm btn-primary" data-tooltip="true" title="Check this item in so it is available for re-imaging, re-issue, etc.">{{ trans('general.checkin') }}</a>';
|
||||||
|
} else if (row.assigned_pivot_id) {
|
||||||
|
return '<nobr><a href="{{ url('/') }}/' + destination + '/' + row.assigned_pivot_id + '/checkin" class="btn btn-sm btn-primary" data-tooltip="true" title="Check this item in so it is available for re-imaging, re-issue, etc.">{{ trans('general.checkin') }}</a>';
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue