Merge remote-tracking branch 'origin/develop'

This commit is contained in:
snipe
2025-10-03 09:17:35 +01:00
9 changed files with 62 additions and 50 deletions
@@ -398,6 +398,7 @@ class AssetsController extends Controller
$asset->assigned_to = null;
$asset->assigned_type = null;
$asset->accepted = null;
$asset->last_checkin = now();
event(new CheckoutableCheckedIn($asset, $target, auth()->user(), 'Checkin on asset update with '.$status->getStatuslabelType().' status', date('Y-m-d H:i:s'), $originalValues));
}
-43
View File
@@ -104,23 +104,6 @@ Form::macro('digit_separator', function ($name = 'digit_separator', $selected =
return $select;
});
Form::macro('name_display_format', function ($name = 'name_display_format', $selected = null, $class = null) {
$formats = [
'first_last' => trans('general.firstname_lastname_display'),
'last_first' => trans('general.lastname_firstname_display'),
];
$select = '<select name="'.$name.'" class="'.$class.'" style="width: 100%" aria-label="'.$name.'">';
foreach ($formats as $format => $label) {
$select .= '<option value="'.$format.'"'.($selected == $format ? ' selected="selected" role="option" aria-selected="true"' : ' aria-selected="false"').'>'.$label.'</option> '."\n";
}
$select .= '</select>';
return $select;
});
/**
* Barcode macro
* Generates the dropdown menu of available 1D barcodes
@@ -168,32 +151,6 @@ Form::macro('barcode_types', function ($name = 'barcode_type', $selected = null,
return $select;
});
Form::macro('email_format', function ($name = 'email_format', $selected = null, $class = null) {
$formats = [
'firstname.lastname' => trans('admin/settings/general.email_formats.firstname_lastname_format'),
'firstname' => trans('admin/settings/general.email_formats.first_name_format'),
'lastname' => trans('admin/settings/general.email_formats.last_name_format'),
'filastname' => trans('admin/settings/general.email_formats.filastname_format'),
'lastnamefirstinitial' => trans('admin/settings/general.email_formats.lastnamefirstinitial_format'),
'firstname_lastname' => trans('admin/settings/general.email_formats.firstname_lastname_underscore_format'),
'firstinitial.lastname' => trans('admin/settings/general.email_formats.firstinitial_lastname'),
'lastname_firstinitial' => trans('admin/settings/general.email_formats.lastname_firstinitial'),
'lastname.firstinitial' => trans('admin/settings/general.email_formats.lastname_dot_firstinitial_format'),
'firstnamelastname' => trans('admin/settings/general.email_formats.firstnamelastname'),
'firstnamelastinitial' => trans('admin/settings/general.email_formats.firstnamelastinitial'),
'lastname.firstname' => trans('admin/settings/general.email_formats.lastnamefirstname'),
];
$select = '<select name="'.$name.'" class="'.$class.'" style="width: 100%" aria-label="'.$name.'">';
foreach ($formats as $format => $label) {
$select .= '<option value="'.$format.'"'.($selected == $format ? ' selected="selected" role="option" aria-selected="true"' : ' aria-selected="false"').'>'.$label.'</option> '."\n";
}
$select .= '</select>';
return $select;
});
Form::macro('username_format', function ($name = 'username_format', $selected = null, $class = null) {
$formats = [
'firstname.lastname' => trans('admin/settings/general.username_formats.firstname_lastname_format'),
@@ -0,0 +1,27 @@
@php
$formats = [
'firstname.lastname' => trans('admin/settings/general.email_formats.firstname_lastname_format'),
'firstname' => trans('admin/settings/general.email_formats.first_name_format'),
'lastname' => trans('admin/settings/general.email_formats.last_name_format'),
'filastname' => trans('admin/settings/general.email_formats.filastname_format'),
'lastnamefirstinitial' => trans('admin/settings/general.email_formats.lastnamefirstinitial_format'),
'firstname_lastname' => trans('admin/settings/general.email_formats.firstname_lastname_underscore_format'),
'firstinitial.lastname' => trans('admin/settings/general.email_formats.firstinitial_lastname'),
'lastname_firstinitial' => trans('admin/settings/general.email_formats.lastname_firstinitial'),
'lastname.firstinitial' => trans('admin/settings/general.email_formats.lastname_dot_firstinitial_format'),
'firstnamelastname' => trans('admin/settings/general.email_formats.firstnamelastname'),
'firstnamelastinitial' => trans('admin/settings/general.email_formats.firstnamelastinitial'),
'lastname.firstname' => trans('admin/settings/general.email_formats.lastnamefirstname'),
];
@endphp
<x-input.select {{ $attributes }}>
@foreach($formats as $format => $label)
<option
value="{{ $format }}"
@selected($selected == $format)
>
{{ $label }}
</option>
@endforeach
</x-input.select>
@@ -38,8 +38,8 @@
@elseif (isset($item) && (isset($item->model)) && ($item->model->image != ''))
<div class="form-group">
<div class="col-md-8 col-md-offset-3">
<p class="text-info">
<x-icon type="info-circle" /> {{ trans('general.use_cloned_no_image_help') }}
<p class="help-block">
<x-icon type="info-circle" class="text-primary" /> {{ trans('general.use_cloned_no_image_help') }}
</p>
</div>
</div>
@@ -31,6 +31,7 @@
<th class="col-sm-1">{{ trans('admin/licenses/form.seats') }}</th>
<th class="col-sm-1">{{ trans('admin/licenses/form.remaining_seats') }}</th>
<th class="col-sm-1">{{ trans('admin/licenses/form.expiration') }}</th>
<th class="col-sm-1">{{ trans('admin/licenses/form.termination_date') }}</th>
<th class="col-sm-1">{{ trans('general.purchase_date') }}</th>
<th class="col-sm-1 text-right" class="col-sm-1">{{ trans('general.purchase_cost') }}</th>
<th class="col-sm-1">{{ trans('general.depreciation') }}</th>
@@ -54,6 +55,12 @@
<td>{{ $license->seats }}</td>
<td>{{ $license->remaincount() }}</td>
<td>{{ $license->expiration_date }}</td>
<td>{{ $license->termination_date }}
@if ($license->isTerminated())
<span class="text-danger">
<x-icon type="warning" class="text-warning" />
</span>
@endif</td>
<td>{{ $license->purchase_date }}</td>
<td class="text-right">
{{ $snipeSettings->default_currency }}{{ Helper::formatCurrencyOutput($license->purchase_cost) }}
+6 -1
View File
@@ -87,7 +87,12 @@
<label for="email_format">{{ trans('admin/settings/general.email_formats.email_format') }}</label>
</div>
<div class="col-md-8">
{!! Form::email_format('email_format', old('email_format', $setting->email_format), 'select2') !!}
<x-input.email-format-select
name="email_format"
:selected="old('email_format', $setting->email_format)"
style="width: 100%"
aria-label="email_format"
/>
{!! $errors->first('email_format', '<span class="alert-msg" aria-hidden="true">:message</span>') !!}
</div>
</div>
@@ -58,8 +58,12 @@
<label for="name_display_format">{{ trans('general.name_display_format') }}</label>
</div>
<div class="col-md-5 col-xs-12">
{!! Form::name_display_format('name_display_format', old('name_display_format', $setting->name_display_format), 'select2') !!}
<x-input.select
name="name_display_format"
:options="['first_last' => trans('general.firstname_lastname_display'), 'last_first' => trans('general.lastname_firstname_display')]"
:selected="old('name_display_format', $setting->name_display_format)"
style="width: 100%"
/>
{!! $errors->first('name_display_format', '<span class="alert-msg" aria-hidden="true">:message</span>') !!}
</div>
</div>
+8 -1
View File
@@ -295,7 +295,14 @@
<div class="col-md-8 col-md-offset-3">
<label class="form-control form-control--disabled">
{{ Form::checkbox('send_welcome', '1', old('send_welcome'), ['id' => "email_user_checkbox", 'aria-label'=>'send_welcome']) }}
<input
type="checkbox"
name="send_welcome"
id="email_user_checkbox"
value="1"
aria-label="send_welcome"
@checked(old('send_welcome'))
/>
{{ trans('general.send_welcome_email_to_users') }}
</label>
+5 -1
View File
@@ -75,7 +75,10 @@ class EditAssetTest extends TestCase
$user = User::factory()->create();
$deployable_status = Statuslabel::factory()->rtd()->create();
$achived_status = Statuslabel::factory()->archived()->create();
$asset = Asset::factory()->assignedToUser($user)->create(['status_id' => $deployable_status->id]);
$asset = Asset::factory()->assignedToUser($user)->create([
'status_id' => $deployable_status->id,
'last_checkin' => null,
]);
$this->assertTrue($asset->assignedTo->is($user));
$currentTimestamp = now();
@@ -96,6 +99,7 @@ class EditAssetTest extends TestCase
$this->assertNull($asset->assigned_to);
$this->assertNull($asset->assigned_type);
$this->assertEquals($achived_status->id, $asset->status_id);
$this->assertNotNull($asset->last_checkin);
Event::assertDispatched(function (CheckoutableCheckedIn $event) use ($currentTimestamp) {
return (int) Carbon::parse($event->action_date)->diffInSeconds($currentTimestamp, true) < 2;