Merge remote-tracking branch 'origin/develop'

Signed-off-by: snipe <snipe@snipe.net>

# Conflicts:
#	public/css/build/app.css
#	public/css/build/overrides.css
#	public/css/dist/all.css
#	public/mix-manifest.json
This commit is contained in:
snipe
2025-04-03 15:28:10 +01:00
16 changed files with 86 additions and 54 deletions
+1 -1
View File
@@ -868,7 +868,7 @@ class Helper
$filetype = @finfo_file($finfo, $file);
finfo_close($finfo);
if (($filetype == 'image/jpeg') || ($filetype == 'image/jpg') || ($filetype == 'image/png') || ($filetype == 'image/bmp') || ($filetype == 'image/gif') || ($filetype == 'image/avif')) {
if (($filetype == 'image/jpeg') || ($filetype == 'image/jpg') || ($filetype == 'image/png') || ($filetype == 'image/bmp') || ($filetype == 'image/gif') || ($filetype == 'image/avif') || ($filetype == 'image/webp')) {
return $filetype;
}
+1 -1
View File
@@ -41,7 +41,7 @@ class LicensePresenter extends Presenter
'searchable' => true,
'sortable' => true,
'title' => trans('admin/licenses/form.license_key'),
'formatter' => 'licensesLinkFormatter',
'formatter' => 'licenseKeyFormatter',
], [
'field' => 'expiration_date',
'searchable' => true,
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1 -1
View File
File diff suppressed because one or more lines are too long
+3 -3
View File
@@ -2,8 +2,8 @@
"/js/build/app.js": "/js/build/app.js?id=970945c192cb3217d5f371a1931d7d77",
"/css/dist/skins/skin-black-dark.css": "/css/dist/skins/skin-black-dark.css?id=d34ae2483cbe2c77478c45f4006eba55",
"/css/dist/skins/_all-skins.css": "/css/dist/skins/_all-skins.css?id=6bf62cdec2477f3176df196fd0c99662",
"/css/build/overrides.css": "/css/build/overrides.css?id=655ce786ac4a9de0c5e40757ddd9a1bd",
"/css/build/app.css": "/css/build/app.css?id=57a9bc8e5cc7737a84bee2f7abcb95c5",
"/css/build/overrides.css": "/css/build/overrides.css?id=2f2ede13edd1f2937d66bc74f4c91404",
"/css/build/app.css": "/css/build/app.css?id=d8057c063e1f004253f684a2cecc88b9",
"/css/build/AdminLTE.css": "/css/build/AdminLTE.css?id=a67bd93bed52e6a29967fe472de66d6c",
"/css/dist/skins/skin-yellow.css": "/css/dist/skins/skin-yellow.css?id=fc7adb943668ac69fe4b646625a7571f",
"/css/dist/skins/skin-yellow-dark.css": "/css/dist/skins/skin-yellow-dark.css?id=53edc92eb2d272744bc7404ec259930e",
@@ -19,7 +19,7 @@
"/css/dist/skins/skin-blue.css": "/css/dist/skins/skin-blue.css?id=091d9625203be910caca3e229afe438f",
"/css/dist/skins/skin-blue-dark.css": "/css/dist/skins/skin-blue-dark.css?id=18787b3f00a3be7be38ee4e26cbd2a07",
"/css/dist/skins/skin-black.css": "/css/dist/skins/skin-black.css?id=1f33ca3d860461c1127ec465ab3ebb6b",
"/css/dist/all.css": "/css/dist/all.css?id=e06ce6503c567fecd77ad3fe64250fe2",
"/css/dist/all.css": "/css/dist/all.css?id=ef934ed25444d0d98d055c481fe19bf2",
"/css/dist/signature-pad.css": "/css/dist/signature-pad.css?id=6a89d3cd901305e66ced1cf5f13147f7",
"/css/dist/signature-pad.min.css": "/css/dist/signature-pad.min.css?id=6a89d3cd901305e66ced1cf5f13147f7",
"/js/select2/i18n/af.js": "/js/select2/i18n/af.js?id=4f6fcd73488ce79fae1b7a90aceaecde",
+7
View File
@@ -1175,3 +1175,10 @@ th.text-right.text-padding-number-footer-cell {
white-space: nowrap;
}
code.single-line {
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 1;
overflow: hidden;
max-width: 400px;
}
+2
View File
@@ -62,6 +62,8 @@ return [
'changepassword' => 'Change Password',
'checkin' => 'Checkin',
'checkin_from' => 'Checkin from',
'checkin_note' => 'Checkin Note',
'checkout_note' => 'Checkout Note',
'checkout' => 'Checkout',
'checkouts_count' => 'Checkouts',
'checkins_count' => 'Checkins',
+10 -7
View File
@@ -554,21 +554,24 @@
}'>
<thead>
<tr>
<th>{{ trans('general.name') }}</th>
<th>{{ trans('admin/licenses/form.license_key') }}</th>
<th>{{ trans('admin/licenses/form.to_name') }}</th>
<th>{{ trans('admin/licenses/form.to_email') }}</th>
<th>{{ trans('general.category') }}</th>
<th class="col-md-2">{{ trans('general.name') }}</th>
<th class="col-md-4">{{ trans('admin/licenses/form.license_key') }}</th>
<th class="col-md-2">{{ trans('admin/licenses/form.to_name') }}</th>
<th class="col-md-2">{{ trans('admin/licenses/form.to_email') }}</th>
<th class="col-md-2">{{ trans('general.category') }}</th>
</tr>
</thead>
<tbody>
@foreach ($user->licenses as $license)
<tr>
<td>{{ $license->name }}</td>
<td>
{{ $license->name }}
</td>
<td>
@can('viewKeys', $license)
{{ $license->serial }}
<code class="single-line"><span class="js-copy-link" data-clipboard-target=".js-copy-key-{{ $license->id }}" aria-hidden="true" data-tooltip="true" data-placement="top" title="{{ trans('general.copy_to_clipboard') }}"><span class="js-copy-key-{{ $license->id }}">{{ $license->serial }}</span></span></code>
@else
------------
@endcan
+5 -5
View File
@@ -1152,10 +1152,10 @@
<table class="table">
<thead>
<tr>
<th class="col-md-4">{{ trans('general.name') }}</th>
<th class="col-md-4"><span class="line"></span>{{ trans('admin/licenses/form.license_key') }}</th>
<th class="col-md-4"><span class="line"></span>{{ trans('admin/licenses/form.expiration') }}</th>
<th class="col-md-1"><span class="line"></span>{{ trans('table.actions') }}</th>
<th>{{ trans('general.name') }}</th>
<th><span class="line"></span>{{ trans('admin/licenses/form.license_key') }}</th>
<th><span class="line"></span>{{ trans('admin/licenses/form.expiration') }}</th>
<th><span class="line"></span>{{ trans('table.actions') }}</th>
</tr>
</thead>
<tbody>
@@ -1165,7 +1165,7 @@
<td><a href="{{ route('licenses.show', $seat->license->id) }}">{{ $seat->license->name }}</a></td>
<td>
@can('viewKeys', $seat->license)
{!! nl2br(e($seat->license->serial)) !!}
<code class="single-line"><span class="js-copy-link" data-clipboard-target=".js-copy-key-{{ $seat->id }}" aria-hidden="true" data-tooltip="true" data-placement="top" title="{{ trans('general.copy_to_clipboard') }}"><span class="js-copy-key-{{ $seat->id }}">{{ $seat->license->serial }}</span></span></code>
@else
------------
@endcan
+26 -16
View File
@@ -16,7 +16,7 @@
@section('content')
<div class="row">
<!-- left column -->
<div class="col-md-7">
<div class="col-md-8">
<form class="form-horizontal" method="post" action="{{ route('licenses.checkin.save', ['licenseId'=>$licenseSeat->id, 'backTo'=>$backto] ) }}" autocomplete="off">
{{csrf_field()}}
@@ -28,31 +28,41 @@
<!-- license name -->
<div class="form-group">
<label class="col-sm-2 control-label">{{ trans('admin/hardware/form.name') }}</label>
<div class="col-md-6">
<label class="col-sm-3 control-label">{{ trans('admin/hardware/form.name') }}</label>
<div class="col-md-8">
<p class="form-control-static">{{ $licenseSeat->license->name }}</p>
</div>
</div>
<!-- Serial -->
<!-- Category -->
<div class="form-group">
<label class="col-sm-2 control-label">{{ trans('admin/licenses/form.license_key') }}</label>
<div class="col-md-6">
<p class="form-control-static">
@can('viewKeys', $licenseSeat->license)
{{ $licenseSeat->license->serial }}
@else
------------
@endcan
</p>
<label class="col-sm-3 control-label">{{ trans('general.category') }}</label>
<div class="col-md-9">
<p class="form-control-static">{{ $licenseSeat->license->category->name }}</p>
</div>
</div>
<!-- Serial -->
@can('viewKeys', $licenseSeat->license)
<div class="form-group">
<label class="col-sm-3 control-label">{{ trans('admin/licenses/form.license_key') }}
<i class="fa-regular fa-clipboard js-copy-link hidden-print" data-clipboard-target=".js-copy-key" aria-hidden="true" data-tooltip="true" data-placement="top" title="{{ trans('general.copy_to_clipboard') }}">
<span class="sr-only">{{ trans('general.copy_to_clipboard') }}</span>
</i>
</label>
<div class="col-md-8">
<p class="form-control-static">
<code style="white-space: pre-wrap"><span class="js-copy-key">{{ $licenseSeat->license->serial }}</span></code>
</p>
</div>
</div>
@endcan
<!-- Note -->
<div class="form-group {{ $errors->has('notes') ? 'error' : '' }}">
<label for="note" class="col-md-2 control-label">{{ trans('admin/hardware/form.notes') }}</label>
<div class="col-md-7">
<textarea class="col-md-6 form-control" id="notes" name="notes"></textarea>
<label for="note" class="col-md-3 control-label">{{ trans('general.checkin_note') }}</label>
<div class="col-md-8">
<textarea class="form-control" id="notes" name="notes" rows="5"></textarea>
{!! $errors->first('notes', '<span class="alert-msg" aria-hidden="true"><i class="fas fa-times" aria-hidden="true"></i> :message</span>') !!}
</div>
</div>
+12 -11
View File
@@ -15,7 +15,7 @@
@section('content')
<div class="row">
<!-- left column -->
<div class="col-md-7">
<div class="col-md-8">
<form class="form-horizontal" method="post" action="" autocomplete="off">
{{csrf_field()}}
@@ -26,7 +26,7 @@
<div class="box-body">
<!-- Asset name -->
<!-- License name -->
<div class="form-group">
<label class="col-sm-3 control-label">{{ trans('admin/hardware/form.name') }}</label>
<div class="col-md-9">
@@ -42,18 +42,19 @@
</div>
<!-- Serial -->
@can('viewKeys', $license)
<div class="form-group">
<label class="col-sm-3 control-label">{{ trans('admin/licenses/form.license_key') }}</label>
<label class="col-sm-3 control-label">{{ trans('admin/licenses/form.license_key') }}
<i class="fa-regular fa-clipboard js-copy-link hidden-print" data-clipboard-target=".js-copy-key" aria-hidden="true" data-tooltip="true" data-placement="top" title="{{ trans('general.copy_to_clipboard') }}">
<span class="sr-only">{{ trans('general.copy_to_clipboard') }}</span>
</i>
</label>
<div class="col-md-9">
<p class="form-control-static" style="word-wrap: break-word;">
@can('viewKeys', $license)
{{ $license->serial }}
@else
------------
@endcan
<p class="form-control-static"><code style="white-space: pre-wrap"><span class="js-copy-key">{{ $license->serial }}</span></code>
</p>
</div>
</div>
@endcan
@include ('partials.forms.checkout-selector', ['user_select' => 'true','asset_select' => 'true'])
@@ -64,9 +65,9 @@
<!-- Note -->
<div class="form-group {{ $errors->has('notes') ? 'error' : '' }}">
<label for="note" class="col-md-3 control-label">{{ trans('admin/hardware/form.notes') }}</label>
<label for="note" class="col-md-3 control-label">{{ trans('general.checkout_note') }}</label>
<div class="col-md-8">
<textarea class="col-md-6 form-control" id="notes" name="notes" style="width: 100%">{{ old('note') }}</textarea>
<textarea class="col-md-6 form-control" id="notes" name="notes" rows="5">{{ old('note') }}</textarea>
{!! $errors->first('note', '<span class="alert-msg" aria-hidden="true"><i class="fas fa-times" aria-hidden="true"></i> :message</span>') !!}
</div>
</div>
+1 -1
View File
@@ -34,7 +34,7 @@
<div class="form-group {{ $errors->has('serial') ? ' has-error' : '' }}">
<label for="serial" class="col-md-3 control-label">{{ trans('admin/licenses/form.license_key') }}</label>
<div class="col-md-7">
<textarea class="form-control" type="text" name="serial" id="serial"{{ (Helper::checkIfRequired($item, 'serial')) ? ' required' : '' }}>{{ old('serial', $item->serial) }}</textarea>
<textarea class="form-control" type="text" name="serial" id="serial" rows="5"{{ (Helper::checkIfRequired($item, 'serial')) ? ' required' : '' }}>{{ old('serial', $item->serial) }}</textarea>
{!! $errors->first('serial', '<span class="alert-msg" aria-hidden="true"><i class="fas fa-times" aria-hidden="true"></i> :message</span>') !!}
</div>
</div>
+4 -4
View File
@@ -124,13 +124,13 @@
<div class="row">
<div class="col-md-3">
<strong>{{ trans('admin/licenses/form.license_key') }}</strong>
<i class="fa-regular fa-clipboard js-copy-link" data-clipboard-target=".js-copy" aria-hidden="true" data-tooltip="true" data-placement="top" title="{{ trans('general.copy_to_clipboard') }}">
<span class="sr-only">{{ trans('general.copy_to_clipboard') }}</span>
</i>
</div>
<div class="col-md-9">
@can('viewKeys', $license)
<span class="js-copy">{!! nl2br(e($license->serial)) !!}</span>
<i class="fa-regular fa-clipboard js-copy-link" data-clipboard-target=".js-copy" aria-hidden="true" data-tooltip="true" data-placement="top" title="{{ trans('general.copy_to_clipboard') }}">
<span class="sr-only">{{ trans('general.copy_to_clipboard') }}</span>
</i>
<code><span class="js-copy">{!! nl2br(e($license->serial)) !!}</span></code>
@else
------------
@endcan
@@ -333,6 +333,13 @@
};
}
function licenseKeyFormatter(value, row) {
return '<code class="single-line"><span class="js-copy-link" data-clipboard-target=".js-copy-key-' + row.id + '" aria-hidden="true" data-tooltip="true" data-placement="top" title="{{ trans('general.copy_to_clipboard') }}"><span class="js-copy-key-' + row.id + '">' + value + '</span></span></code>';
}
function hardwareAuditFormatter(value, row) {
return '<a href="{{ config('app.url') }}/hardware/audit/' + row.id + '/" class="btn btn-sm bg-yellow" data-tooltip="true" title="Audit this item">{{ trans('general.audit') }}</a>';
}
+4 -2
View File
@@ -792,6 +792,8 @@
</div><!-- /asset -->
<div class="tab-pane" id="licenses">
<div class="table-responsive">
<table
data-cookie-id-table="userLicenseTable"
@@ -815,7 +817,7 @@
<thead>
<tr>
<th class="col-md-5">{{ trans('general.name') }}</th>
<th>{{ trans('general.name') }}</th>
<th>{{ trans('admin/licenses/form.license_key') }}</th>
<th data-footer-formatter="sumFormatter" data-fieldname="purchase_cost">{{ trans('general.purchase_cost') }}</th>
<th>{{ trans('admin/licenses/form.purchase_order') }}</th>
@@ -831,7 +833,7 @@
</td>
<td class="col-md-4">
@can('viewKeys', $license)
{!! $license->present()->serialUrl() !!}
<code class="single-line"><span class="js-copy-link" data-clipboard-target=".js-copy-key-{{ $license->id }}" aria-hidden="true" data-tooltip="true" data-placement="top" title="{{ trans('general.copy_to_clipboard') }}"><span class="js-copy-key-{{ $license->id }}">{{ $license->serial }}</span></span></code>
@else
------------
@endcan