Merge remote-tracking branch 'origin/develop'

Signed-off-by: snipe <snipe@snipe.net>
This commit is contained in:
snipe
2025-04-23 21:30:16 +01:00
19 changed files with 350 additions and 204 deletions

103
.pa11yci.json Normal file
View File

@@ -0,0 +1,103 @@
{
"standard": "WCAG2AA",
"level": "error",
"defaults": {
"useIncognitoBrowserContext": false,
"timeout": 500000,
"wait": 5000,
"ignore" : [
"WCAG2AA.Principle1.Guideline1_4.1_4_3.G145.Fail",
"WCAG2AA.Principle1.Guideline1_4.1_4_3.G18.Fail"
],
"viewport": {
"width": 1280,
"height": 1024
}
},
"urls": [
{
"__NOTE" : "this should always be FIRST (if browser context is preserved)",
"url": "https://snipe-it.test/login",
"actions": [
"navigate to https://snipe-it.test/login",
"screen capture tests/pa11y/login.png",
"set field input[name='username'] to admin",
"set field input[name='password'] to password",
"click element button[type=submit]",
"wait for url to be https://snipe-it.test/",
"screen capture tests/pa11y/dashboard.png"
]
},
{
"url" : "https://snipe-it.test/admin",
"actions" : [
"navigate to https://snipe-it.test/admin",
"screen capture tests/pa11y/admin-settings.png"
]
},
{
"url" : "https://snipe-it.test/hardware/create",
"actions" : [
"navigate to https://snipe-it.test/hardware/create",
"screen capture tests/pa11y/asset-create.png"
]
},
{
"url" : "https://snipe-it.test/hardware",
"actions" : [
"navigate to https://snipe-it.test/hardware",
"screen capture tests/pa11y/asset-list.png"
]
},
{
"url" : "https://snipe-it.test/hardware/1",
"actions" : [
"navigate to https://snipe-it.test/hardware/1",
"screen capture tests/pa11y/asset-detail.png"
]
},
{
"url" : "https://snipe-it.test/account/view-assets",
"actions" : [
"navigate to https://snipe-it.test/account/view-assets",
"screen capture tests/pa11y/profile.png"
]
},
{
"url" : "https://snipe-it.test/licences",
"actions" : [
"navigate to https://snipe-it.test/licenses",
"screen capture tests/pa11y/license-list.png"
]
},
{
"url" : "https://snipe-it.test/licences/create",
"actions" : [
"navigate to https://snipe-it.test/licenses/create",
"screen capture tests/pa11y/license-create.png"
]
},
{
"url" : "https://snipe-it.test/licences/1",
"actions" : [
"navigate to https://snipe-it.test/licenses/1",
"screen capture tests/pa11y/license-view.png"
]
},
{
"url" : "https://snipe-it.test/accessories",
"actions" : [
"navigate to https://snipe-it.test/accessories",
"screen capture tests/pa11y/accessory-list.png"
]
},
{
"url" : "https://snipe-it.test/accessories/create",
"actions" : [
"navigate to https://snipe-it.test/accessories/create",
"screen capture tests/pa11y/accessory-create.png"
]
}
]
}

24
pa11y.js Normal file
View File

@@ -0,0 +1,24 @@
const pa11y = require('pa11y');
pa11y('http://snipe-it.test', {
standard: "WCAG2AA",
level: "error",
defaults: {
"timeout": 500000,
"wait": 2000,
"ignore": [
"WCAG2AA.Principle1.Guideline1_4.1_4_3.G18",
"WCAG2AA.Principle1.Guideline1_4.1_4_3.G18.Fail",
],
"viewport": {
"width": 1280,
"height": 1024
},
},
actions: [
'set field #username to admin',
'set field #password to password',
'click element #submit',
'wait for path to be /',
]
});

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -2,8 +2,8 @@
"/js/build/app.js": "/js/build/app.js?id=f69d05a80165b5bbf6b0f4691edfd24e",
"/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=569dc248b0dc3dbb01610b034300f2f2",
"/css/build/app.css": "/css/build/app.css?id=ed8cabf3efad21ed89d18d6582d2885f",
"/css/build/overrides.css": "/css/build/overrides.css?id=1956dacae986380f376eb30f849d899a",
"/css/build/app.css": "/css/build/app.css?id=14158c05ed4795311c028b18ea9a616f",
"/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=2b91d3aa2262b202a452de9cc7f1ab9b",
"/css/dist/all.css": "/css/dist/all.css?id=7bdd2e09505b405c4c2d02d6ebd07278",
"/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",

View File

@@ -1205,3 +1205,9 @@ legend.highlight {
fieldset.bottom-padded {
padding-bottom: 20px;
}
caption.tableCaption {
font-size: 18px;
padding-left: 8px;
}

View File

@@ -9,6 +9,7 @@
{{-- Account page content --}}
@section('content')
@if ($acceptances = \App\Models\CheckoutAcceptance::forUser(Auth::user())->pending()->count())
<div class="row">
<div class="col-md-12">
@@ -32,20 +33,23 @@
<li class="active">
<a href="#details" data-toggle="tab">
<span class="hidden-lg hidden-md">
<i class="fas fa-info-circle fa-2x"></i>
</span>
<span class="hidden-xs hidden-sm">{{ trans('admin/users/general.info') }}</span>
<span class="hidden-lg hidden-md" aria-hidden="true">
<i class="fas fa-info-circle fa-2x"></i>
</span>
<span class="hidden-xs hidden-sm">
{{ trans('admin/users/general.info') }}
</span>
</a>
</li>
<li>
<a href="#asset" data-toggle="tab">
<span class="hidden-lg hidden-md">
<x-icon type="assets" class="fa-2x" />
</span>
<span class="hidden-xs hidden-sm">{{ trans('general.assets') }}
{!! ($user->assets()->AssetsForShow()->count() > 0 ) ? '<badge class="badge badge-secondary">'.number_format($user->assets()->AssetsForShow()->count()).'</badge>' : '' !!}
<a href="#assets" data-toggle="tab">
<span class="hidden-lg hidden-md" aria-hidden="true">
<x-icon type="assets" class="fa-2x" />
</span>
<span class="hidden-xs hidden-sm">
{{ trans('general.assets') }}
{!! ($user->assets()->AssetsForShow()->count() > 0 ) ? '<span class="badge badge-secondary">'.number_format($user->assets()->AssetsForShow()->count()).'</span>' : '' !!}
</span>
</a>
</li>
@@ -56,7 +60,7 @@
<i class="far fa-save fa-2x"></i>
</span>
<span class="hidden-xs hidden-sm">{{ trans('general.licenses') }}
{!! ($user->licenses->count() > 0 ) ? '<badge class="badge badge-secondary">'.number_format($user->licenses->count()).'</badge>' : '' !!}
{!! ($user->licenses->count() > 0 ) ? '<span class="badge badge-secondary">'.number_format($user->licenses->count()).'</span>' : '' !!}
</span>
</a>
</li>
@@ -67,18 +71,18 @@
<x-icon type="accessories" class="fa-2x" />
</span>
<span class="hidden-xs hidden-sm">{{ trans('general.accessories') }}
{!! ($user->accessories->count() > 0 ) ? '<badge class="badge badge-secondary">'.number_format($user->accessories->count()).'</badge>' : '' !!}
{!! ($user->accessories->count() > 0 ) ? '<span class="badge badge-secondary">'.number_format($user->accessories->count()).'</span>' : '' !!}
</span>
</a>
</li>
<li>
<a href="#consumables" data-toggle="tab">
<span class="hidden-lg hidden-md">
<i class="fas fa-tint fa-2x"></i>
</span>
<span class="hidden-lg hidden-md" aria-hidden="true">
<x-icon type="consumables" class="fa-2x" />
</span>
<span class="hidden-xs hidden-sm">{{ trans('general.consumables') }}
{!! ($user->consumables->count() > 0 ) ? '<badge class="badge badge-secondary">'.number_format($user->consumables->count()).'</badge>' : '' !!}
{!! ($user->consumables->count() > 0 ) ? '<span class="badge badge-secondary">'.number_format($user->consumables->count()).'</span>' : '' !!}
</span>
</a>
</li>
@@ -93,13 +97,8 @@
<!-- Start button column -->
<div class="col-md-3 col-xs-12 col-sm-push-9">
<div class="col-md-12 text-center">
</div>
<div class="col-md-12 text-center">
<img src="{{ $user->present()->gravatar() }}" class=" img-thumbnail hidden-print" style="margin-bottom: 20px;" alt="{{ $user->present()->fullName() }}">
<img src="{{ $user->present()->gravatar() }}" class=" img-thumbnail hidden-print" style="margin-bottom: 20px;" alt="{{ $user->present()->fullName() }}" alt="User avatar">
</div>
@can('self.profile')
<div class="col-md-12">
@@ -376,35 +375,31 @@
</div> <!--/.row-->
</div><!-- /.tab-pane -->
<div class="tab-pane" id="asset">
<div class="tab-pane" id="assets">
<!-- checked out assets table -->
<div class="table table-responsive">
@if ($user->id)
<div class="box-header with-border">
</div><!-- /.box-header -->
@endif
<!-- checked out assets table -->
<div class="table-responsive">
<table
data-cookie="true"
data-cookie-id-table="userAssets"
data-pagination="true"
data-id-table="userAssets"
data-search="true"
data-side-pagination="client"
data-show-columns="true"
data-show-export="true"
data-show-footer="true"
data-sort-order="asc"
id="userAssets"
class="table table-striped snipe-table"
data-export-options='{
<table
data-toolbar="#userAssetToolbar"
data-pagination="true"
data-id-table="userAssets"
data-search="true"
data-side-pagination="client"
data-show-columns="true"
data-show-export="true"
data-show-footer="true"
data-sort-order="asc"
id="userAssets"
class="table table-striped snipe-table"
data-show-fullscreen="true"
data-export-options='{
"fileName": "my-assets-{{ date('Y-m-d') }}",
"ignoreColumn": ["actions","image","change","checkbox","checkincheckout","icon"]
}'>
<caption id="userAssetToolbar" class="tableCaption">
{{ trans('general.assets') }}
</caption>
<thead>
<tr>
<th class="col-md-1">
@@ -468,9 +463,9 @@
<td>{{ $counter }}</td>
<td>
@if (($asset->image) && ($asset->image!=''))
<img src="{{ Storage::disk('public')->url(app('assets_upload_path').e($asset->image)) }}" style="max-height: 30px; width: auto" class="img-responsive">
<img src="{{ Storage::disk('public')->url(app('assets_upload_path').e($asset->image)) }}" style="max-height: 30px; width: auto" class="img-responsive" alt="">
@elseif (($asset->model) && ($asset->model->image!=''))
<img src="{{ Storage::disk('public')->url(app('models_upload_path').e($asset->model->image)) }}" style="max-height: 30px; width: auto" class="img-responsive">
<img src="{{ Storage::disk('public')->url(app('models_upload_path').e($asset->model->image)) }}" style="max-height: 30px; width: auto" class="img-responsive" alt="">
@endif
</td>
<td>
@@ -530,13 +525,11 @@
@endforeach
</tbody>
</table>
</div>
</div> <!-- .table-responsive-->
</div><!-- /asset -->
<div class="tab-pane" id="licenses">
<div class="table-responsive">
<table
data-toolbar="#userLicensesToolbar"
data-cookie-id-table="userLicenses"
data-pagination="true"
data-id-table="userLicenses"
@@ -547,11 +540,17 @@
data-show-refresh="false"
data-sort-order="asc"
id="userLicenses"
data-show-fullscreen="true"
class="table table-striped snipe-table"
data-export-options='{
"fileName": "my-licenses-{{ date('Y-m-d') }}",
"ignoreColumn": ["actions","image","change","checkbox","checkincheckout","icon"]
}'>
<caption id="userLicensesToolbar" class="tableCaption">
{{ trans('general.licenses') }}
</caption>
<thead>
<tr>
<th class="col-md-2">{{ trans('general.name') }}</th>
@@ -593,12 +592,11 @@
@endforeach
</tbody>
</table>
</div> <!-- .table-responsive-->
</div>
<div class="tab-pane" id="accessories">
<div class="table-responsive">
<table
data-toolbar="#userAccessoryToolbar"
data-cookie-id-table="userAccessoryTable"
data-id-table="userAccessoryTable"
id="userAccessoryTable"
@@ -617,6 +615,12 @@
"fileName": "export-accessory-{{ str_slug($user->username) }}-{{ date('Y-m-d') }}",
"ignoreColumn": ["actions","image","change","checkbox","checkincheckout","delete","download","icon"]
}'>
<caption id="userAccessoryToolbar" class="tableCaption">
{{ trans('general.accessories') }}
</caption>
<thead>
<tr>
<th class="col-md-5">{{ trans('general.name') }}</th>
@@ -644,12 +648,11 @@
@endforeach
</tbody>
</table>
</div>
</div><!-- /accessories-tab -->
<div class="tab-pane" id="consumables">
<div class="table-responsive">
<table
data-toolbar="#userConsumableToolbar"
data-cookie-id-table="userConsumableTable"
data-id-table="userConsumableTable"
id="userConsumableTable"
@@ -668,6 +671,11 @@
"fileName": "export-consumable-{{ str_slug($user->username) }}-{{ date('Y-m-d') }}",
"ignoreColumn": ["actions","image","change","checkbox","checkincheckout","delete","download","icon"]
}'>
<caption id="userConsumableToolbar" class="tableCaption">
{{ trans('general.consumables') }}
</caption>
<thead>
<tr>
<th class="col-md-3">{{ trans('general.name') }}</th>
@@ -693,8 +701,10 @@
@endforeach
</tbody>
</table>
</div>
</div><!-- /consumables-tab -->
<div class="tab-pane" id="test">
<p>fdlkgjljg</p>
</div>
</div><!-- /.tab-content -->
</div><!-- nav-tabs-custom -->

View File

@@ -54,7 +54,8 @@
<!-- CSRF Token -->
<fieldset>
<fieldset name="login" aria-label="login">
<legend></legend>
<div class="form-group{{ $errors->has('username') ? ' has-error' : '' }}">
<label for="username">
@@ -74,7 +75,7 @@
</div>
<div class="form-group">
<label class="form-control">
<input name="remember" type="checkbox" value="1"> {{ trans('auth/general.remember_me') }}
<input name="remember" type="checkbox" value="1" id="remember"> {{ trans('auth/general.remember_me') }}
</label>
</div>
</fieldset>
@@ -94,7 +95,9 @@
@if (config('app.require_saml'))
<a class="btn btn-primary btn-block" href="{{ route('saml.login') }}">{{ trans('auth/general.saml_login') }}</a>
@else
<button class="btn btn-primary btn-block">{{ trans('auth/general.login') }}</button>
<button class="btn btn-primary btn-block" type="submit" id="submit">
{{ trans('auth/general.login') }}
</button>
@endif
@if ($snipeSettings->custom_forgot_pass_url)

View File

@@ -9,9 +9,9 @@
<!-- begin non-ajaxed file listing table -->
<div class="table-responsive">
<table
data-cookie-id-table="{{ str_slug($object->name) }}UploadsTable"
data-id-table="{{ str_slug($object->name) }}UploadsTable"
id="{{ str_slug($object->name) }}}UploadsTable"
data-cookie-id-table="{{ str_slug($object->name ?? $object->id) }}UploadsTable"
data-id-table="{{ str_slug($object->name ?? $object->id) }}UploadsTable"
id="{{ str_slug($object->name ?? $object->id) }}UploadsTable"
data-search="true"
data-pagination="true"
data-side-pagination="client"

View File

@@ -27,127 +27,122 @@
@endif
<div class="row">
<!-- panel -->
<div class="col-lg-2 col-xs-6">
<a href="{{ route('hardware.index') }}">
<!-- small box -->
<div class="dashboard small-box bg-teal">
<div class="inner">
<h3>{{ number_format(\App\Models\Asset::AssetsForShow()->count()) }}</h3>
<p>{{ trans('general.assets') }}</p>
</div>
<div class="icon" aria-hidden="true">
<x-icon type="assets" />
</div>
@can('index', \App\Models\Asset::class)
<a href="{{ route('hardware.index') }}" class="small-box-footer">{{ trans('general.view_all') }}
<x-icon type="arrow-circle-right" />
<!-- panel -->
<div class="col-lg-2 col-xs-6">
<a href="{{ route('hardware.index') }}">
<!-- small hardware box -->
<div class="dashboard small-box bg-teal">
<div class="inner">
<h3>{{ number_format(\App\Models\Asset::AssetsForShow()->count()) }}</h3>
<p>{{ trans('general.assets') }}</p>
</div>
<div class="icon" aria-hidden="true">
<x-icon type="assets" />
</div>
<span class="small-box-footer">
{{ trans('general.view_all') }}
<x-icon type="arrow-circle-right" />
</span>
</div>
</a>
@endcan
</div>
</a>
</div><!-- ./col -->
</div><!-- ./col -->
<div class="col-lg-2 col-xs-6">
<a href="{{ route('licenses.index') }}">
<!-- small box -->
<div class="dashboard small-box bg-maroon">
<div class="inner">
<h3>{{ number_format($counts['license']) }}</h3>
<p>{{ trans('general.licenses') }}</p>
</div>
<div class="icon" aria-hidden="true">
<x-icon type="licenses" />
</div>
@can('view', \App\Models\License::class)
<a href="{{ route('licenses.index') }}" class="small-box-footer">{{ trans('general.view_all') }}
<x-icon type="arrow-circle-right" />
</a>
@endcan
</div>
</a>
</div><!-- ./col -->
<div class="col-lg-2 col-xs-6">
<!-- small box -->
<a href="{{ route('accessories.index') }}">
<div class="dashboard small-box bg-orange">
<div class="inner">
<h3> {{ number_format($counts['accessory']) }}</h3>
<p>{{ trans('general.accessories') }}</p>
</div>
<div class="icon" aria-hidden="true">
<x-icon type="accessories" />
</div>
@can('index', \App\Models\Accessory::class)
<a href="{{ route('accessories.index') }}" class="small-box-footer">{{ trans('general.view_all') }}
<x-icon type="arrow-circle-right" />
</a>
@endcan
</div>
</a>
</div><!-- ./col -->
<div class="col-lg-2 col-xs-6">
<!-- small box -->
<a href="{{ route('consumables.index') }}">
<div class="dashboard small-box bg-purple">
<div class="inner">
<h3> {{ number_format($counts['consumable']) }}</h3>
<p>{{ trans('general.consumables') }}</p>
</div>
<div class="icon" aria-hidden="true">
<x-icon type="consumables" />
</div>
@can('index', \App\Models\Consumable::class)
<a href="{{ route('consumables.index') }}" class="small-box-footer">{{ trans('general.view_all') }}
<x-icon type="arrow-circle-right" />
<div class="col-lg-2 col-xs-6">
<a href="{{ route('licenses.index') }}" aria-hidden="true">
<!-- small license box -->
<div class="dashboard small-box bg-maroon">
<div class="inner">
<h3>{{ number_format($counts['license']) }}</h3>
<p>{{ trans('general.licenses') }}</p>
</div>
<div class="icon" aria-hidden="true">
<x-icon type="licenses" />
</div>
<span class="small-box-footer">
{{ trans('general.view_all') }}
<x-icon type="arrow-circle-right" />
</span>
</div>
</a>
@endcan
</div>
</div><!-- ./col -->
</div><!-- ./col -->
<div class="col-lg-2 col-xs-6">
<a href="{{ route('components.index') }}">
<!-- small box -->
<div class="dashboard small-box bg-yellow">
<div class="inner">
<h3>{{ number_format($counts['component']) }}</h3>
<p>{{ trans('general.components') }}</p>
</div>
<div class="icon" aria-hidden="true">
<x-icon type="components" />
</div>
@can('view', \App\Models\License::class)
<a href="{{ route('components.index') }}" class="small-box-footer">{{ trans('general.view_all') }}
<x-icon type="arrow-circle-right" />
</a>
@endcan
</div>
</a>
</div><!-- ./col -->
<div class="col-lg-2 col-xs-6">
<a href="{{ route('users.index') }}">
<!-- small box -->
<div class="dashboard small-box bg-light-blue">
<div class="inner">
<h3>{{ number_format($counts['user']) }}</h3>
<p>{{ trans('general.people') }}</p>
</div>
<div class="icon" aria-hidden="true">
<x-icon type="users" />
</div>
@can('view', \App\Models\License::class)
<a href="{{ route('users.index') }}" class="small-box-footer">{{ trans('general.view_all') }}
<x-icon type="arrow-circle-right" />
</a>
@endcan
</div>
</a>
</div><!-- ./col -->
<div class="col-lg-2 col-xs-6">
<!-- small accessories box -->
<a href="{{ route('accessories.index') }}">
<div class="dashboard small-box bg-orange">
<div class="inner">
<h3> {{ number_format($counts['accessory']) }}</h3>
<p>{{ trans('general.accessories') }}</p>
</div>
<div class="icon" aria-hidden="true">
<x-icon type="accessories" />
</div>
<span class="small-box-footer">
{{ trans('general.view_all') }}
<x-icon type="arrow-circle-right" />
</span>
</div>
</a>
</div><!-- ./col -->
<div class="col-lg-2 col-xs-6">
<!-- small consumables box -->
<a href="{{ route('consumables.index') }}">
<div class="dashboard small-box bg-purple">
<div class="inner">
<h3> {{ number_format($counts['consumable']) }}</h3>
<p>{{ trans('general.consumables') }}</p>
</div>
<div class="icon" aria-hidden="true">
<x-icon type="consumables" />
</div>
<span class="small-box-footer">
{{ trans('general.view_all') }}
<x-icon type="arrow-circle-right" />
</span>
</div>
</a>
</div><!-- ./col -->
<div class="col-lg-2 col-xs-6">
<!-- small components box -->
<a href="{{ route('components.index') }}">
<div class="dashboard small-box bg-yellow">
<div class="inner">
<h3>{{ number_format($counts['component']) }}</h3>
<p>{{ trans('general.components') }}</p>
</div>
<div class="icon" aria-hidden="true">
<x-icon type="components" />
</div>
<span class="small-box-footer">
{{ trans('general.view_all') }}
<x-icon type="arrow-circle-right" />
</span>
</div>
</a>
</div><!-- ./col -->
<div class="col-lg-2 col-xs-6">
<!-- small users box -->
<a href="{{ route('users.index') }}">
<div class="dashboard small-box bg-light-blue">
<div class="inner">
<h3>{{ number_format($counts['user']) }}</h3>
<p>{{ trans('general.people') }}</p>
</div>
<div class="icon" aria-hidden="true">
<x-icon type="users" />
</div>
<span class="small-box-footer">
{{ trans('general.view_all') }}
<x-icon type="arrow-circle-right" />
</span>
</div>
</a>
</div><!-- ./col -->
</div>
</div>

View File

@@ -42,8 +42,11 @@
{!! $errors->first('asset_tag', '<span class="alert-msg"><i class="fas fa-times"></i> :message</span>') !!}
</div>
<div class="col-md-2 col-sm-12">
<button class="add_field_button btn btn-default btn-sm">
<button class="add_field_button btn btn-default btn-sm" name="add_field_button">
<x-icon type="plus" />
<span class="sr-only">
{{ trans('general.new') }}
</span>
</button>
</div>
@endif
@@ -116,7 +119,7 @@
<!-- Datepicker -->
<div class="form-group{{ $errors->has('next_audit_date') ? ' has-error' : '' }}">
<label class="col-md-3 control-label">
<label class="col-md-3 control-label" for="next_audit_date">
{{ trans('general.next_audit_date') }}
</label>

View File

@@ -46,15 +46,15 @@
<body class="hold-transition login-page">
@if (($snipeSettings) && ($snipeSettings->logo!=''))
<center>
<a href="{{ config('app.url') }}"><img id="login-logo" src="{{ Storage::disk('public')->url('').e($snipeSettings->logo) }}"></a>
</center>
<div class="text-center">
<a href="{{ config('app.url') }}">
<img id="login-logo" src="{{ Storage::disk('public')->url('').e($snipeSettings->logo) }}" alt="{{ $snipeSettings->site_name }}">
</a>
</div>
@endif
<!-- Content -->
@yield('content')
<div class="text-center" style="padding-top: 100px;">
@if (($snipeSettings) && ($snipeSettings->privacy_policy_link!=''))
<a target="_blank" rel="noopener" href="{{ $snipeSettings->privacy_policy_link }}" target="_new">{{ trans('admin/settings/general.privacy_policy') }}</a>

View File

@@ -400,8 +400,8 @@ dir="{{ Helper::determineLanguageDirection() }}">
{{ trans('general.logout') }}
</a>
<form id="logout-form" action="{{ route('logout.post') }}" method="POST"
style="display: none;">
<form id="logout-form" action="{{ route('logout.post') }}" method="POST" style="display: none;">
<button type="submit" style="display: none;" title="logout"></button>
{{ csrf_field() }}
</form>

View File

@@ -45,7 +45,7 @@
</div>
@if (isset($topSubmit) && ($topSubmit=='true'))
<div class="col-md-3 text-right" style="padding-right: 10px;">
<button type="submit" class="btn btn-primary pull-right">
<button type="submit" class="btn btn-primary pull-right" name="submit">
<x-icon type="checkmark" />
{{ trans('general.save') }}
</button>

View File

@@ -1,5 +1,5 @@
@if ($errors->any())
<div class="col-md-12">
<div class="col-md-12" id="error-notification">
<div class="alert alert-danger fade in">
<button type="button" class="close" data-dismiss="alert">&times;</button>
<i class="fas fa-exclamation-triangle faa-pulse animated"></i>
@@ -12,7 +12,7 @@
@if ($message = session()->get('status'))
<div class="col-md-12">
<div class="col-md-12" id="success-notification">
<div class="alert alert-success fade in">
<button type="button" class="close" data-dismiss="alert">&times;</button>
<i class="fas fa-check faa-pulse animated"></i>
@@ -24,7 +24,7 @@
@if ($message = session()->get('success'))
<div class="col-md-12">
<div class="col-md-12" id="success-notification">
<div class="alert alert-success fade in">
<button type="button" class="close" data-dismiss="alert">&times;</button>
<i class="fas fa-check faa-pulse animated"></i>
@@ -37,7 +37,7 @@
@if ($message = session()->get('success-unescaped'))
<div class="col-md-12">
<div class="col-md-12" id="success-notification">
<div class="alert alert-success fade in">
<button type="button" class="close" data-dismiss="alert">&times;</button>
<i class="fas fa-check faa-pulse animated"></i>
@@ -51,7 +51,7 @@
@if ($assets = session()->get('assets'))
@foreach ($assets as $asset)
<div class="col-md-12">
<div class="col-md-12" id="multi-error-notification">
<div class="alert alert-info fade in">
<button type="button" class="close" data-dismiss="alert">&times;</button>
<i class="fas fa-info-circle faa-pulse animated"></i>
@@ -77,7 +77,7 @@
@if ($consumables = session()->get('consumables'))
@foreach ($consumables as $consumable)
<div class="col-md-12">
<div class="col-md-12" id="success-notification">
<div class="alert alert-info fade in">
<button type="button" class="close" data-dismiss="alert">&times;</button>
<i class="fas fa-info-circle faa-pulse animated"></i>

View File

@@ -322,7 +322,7 @@
</fieldset>
<fieldset class="bottom-padded">
<fieldset name="checkin-preferences" class="bottom-padded">
<legend class="highlight">
{{ trans('admin/settings/general.legends.checkin') }}
</legend>
@@ -342,7 +342,7 @@
<fieldset class="bottom-padded">
<fieldset name="dashboard" class="bottom-padded">
<legend class="highlight">
{{ trans('admin/settings/general.legends.dashboard') }}
</legend>

View File

@@ -14,9 +14,9 @@
<div class="pull-right">
<form onsubmit="return false;">
<form onsubmit="return false;" role="search" aria-label="Admin Options" id="setting-search">
<div class="btn-group">
<input id="searchinput" name="search" type="search" class="search form-control" placeholder="{{ trans('admin/settings/general.filter_by_keyword') }}">
<input id="searchinput" name="search" type="search" class="search form-control" placeholder="{{ trans('admin/settings/general.filter_by_keyword') }}" aria-label="keyword search">
<span id="searchclear" class="fas fa-times" aria-hidden="true"></span>
<button type="submit" disabled style="display: none" aria-hidden="true"></button>
</div>

2
tests/pa11y/.gitignore vendored Executable file
View File

@@ -0,0 +1,2 @@
*
!.gitignore