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/css/dist/bootstrap-table.css
#	public/js/dist/bootstrap-table.js
#	public/mix-manifest.json
This commit is contained in:
snipe 2024-08-20 11:49:32 +01:00
commit 0f8e041809
101 changed files with 1299 additions and 707 deletions

179
app/Helpers/IconHelper.php Normal file
View file

@ -0,0 +1,179 @@
<?php
namespace App\Helpers;
class IconHelper
{
public static function icon($type) {
switch ($type) {
case 'checkout':
return 'fa-solid fa-rotate-left';
case 'checkin':
return 'fa-solid fa-rotate-right';
case 'edit':
return 'fas fa-pencil-alt';
case 'clone':
return 'far fa-clone';
case 'delete':
return 'fas fa-trash';
case 'create':
return 'fa-solid fa-plus';
case 'audit':
return 'fa-solid fa-clipboard-check';
case '2fa reset':
return 'fa-solid fa-mobile-screen';
case 'new-user':
return 'fa-solid fa-user-plus';
case 'merged-user':
return 'fa-solid fa-people-arrows';
case 'delete-user':
return 'fa-solid fa-user-minus';
case 'update-user':
return 'fa-solid fa-user-pen';
case 'user':
return 'fa-solid fa-user';
case 'users':
return 'fas fa-users';
case 'restore':
return 'fa-solid fa-trash-arrow-up';
case 'external-link':
return 'fa fa-external-link';
case 'email':
return 'fa-regular fa-envelope';
case 'phone':
return 'fa-solid fa-phone';
case 'long-arrow-right':
return 'fas fa-long-arrow-alt-right';
case 'download':
return 'fas fa-download';
case 'checkmark':
return 'fas fa-check icon-white';
case 'x':
return 'fas fa-times';
case 'logout':
return 'fa fa-sign-out';
case 'admin-settings':
return 'fa fa-cogs';
case 'settings':
return 'fa fa-cog';
case 'angle-left':
return 'fa fa-angle-left';
case 'warning':
return 'fas fa-exclamation-triangle';
case 'kits':
return 'fa fa-object-group';
case 'assets':
return 'fas fa-barcode';
case 'accessories':
return 'far fa-keyboard';
case 'components':
return 'far fa-hdd';
case 'consumables':
return 'fas fa-tint';
case 'licenses':
return 'far fa-save';
case 'requestable':
return 'fa fa-laptop';
case 'reports':
return 'fas fa-chart-bar';
case 'heart':
return 'fas fa-heart';
case 'circle':
return 'fa-regular fa-circle';
case 'circle-solid':
return 'fa-solid fa-circle';
case 'due':
return 'fas fa-history';
case 'import':
return 'fas fa-cloud-upload-alt fa-fw';
case 'search':
return 'fas fa-search';
case 'alerts':
return 'far fa-flag';
case 'password':
return 'fa-solid fa-key';
case 'api-key':
return 'fa-solid fa-user-secret';
case 'nav-toggle':
return 'fas fa-bars';
case 'dashboard':
return 'fas fa-tachometer-alt';
case 'info-circle':
return 'fas fa-info-circle';
case 'caret-right':
return 'fa fa-caret-right';
case 'caret-up':
return 'fa fa-caret-up';
case 'caret-down':
return 'fa fa-caret-down';
case 'arrow-circle-right':
return 'fa fa-arrow-circle-right';
case 'minus':
return 'fas fa-minus';
case 'spinner':
return 'fas fa-spinner fa-spin';
case 'copy-clipboard':
return 'fa-regular fa-clipboard';
case 'paperclip':
return 'fas fa-paperclip';
case 'files':
return 'fa-regular fa-file';
case 'more-info':
return 'far fa-life-ring';
case 'calendar':
return 'fas fa-calendar';
case 'plus':
return 'fas fa-plus';
case 'history':
return 'fas fa-history';
case 'more-files':
return 'fa-solid fa-laptop-file';
case 'maintenances':
return 'fas fa-wrench';
case 'seats':
return 'far fa-list-alt';
case 'globe-us':
return 'fas fa-globe-americas';
case 'locked':
return 'fas fa-lock';
case 'unlocked':
return 'fas fa-lock';
case 'locations':
return 'fas fa-map-marker-alt';
case 'superadmin':
return 'fas fa-crown';
case 'print':
return 'fa-solid fa-print';
case 'checkin-and-delete':
return 'fa-solid fa-user-xmark';
case 'branding':
return 'fas fa-copyright';
case 'general-settings':
return 'fa-solid fa-list-check';
case 'groups':
return 'fa-solid fa-user-group';
case 'bell':
return 'fa-solid fa-bell';
case 'hashtag':
return 'fa-solid fa-hashtag';
case 'asset-tags':
return 'fas fa-list-ol';
case 'labels':
return 'fas fa-tags';
case 'ldap':
return 'fas fa-sitemap';
case 'google':
return 'fa-brands fa-google';
case 'saml':
return 'fas fa-sign-in-alt';
case 'backups':
return 'fas fa-file-archive';
case 'logins':
return 'fas fa-crosshairs';
case 'oauth':
return 'fas fa-user-secret';
}
}
}

View file

@ -233,7 +233,7 @@ class AssetModelsController extends Controller
if ($model->restore()) {
$logaction = new Actionlog();
$logaction->item_type = User::class;
$logaction->item_type = AssetModel::class;
$logaction->item_id = $model->id;
$logaction->created_at = date('Y-m-d H:i:s');
$logaction->user_id = auth()->id();

View file

@ -3,6 +3,7 @@
namespace App\Http\Controllers;
use App\Http\Requests\ImageUploadRequest;
use App\Models\Actionlog;
use App\Models\Asset;
use App\Models\Location;
use App\Models\User;
@ -193,7 +194,13 @@ class LocationsController extends Controller
*/
public function show($id = null) : View | RedirectResponse
{
$location = Location::find($id);
$location = Location::withCount('assignedAssets as assigned_assets_count')
->withCount('assets as assets_count')
->withCount('rtd_assets as rtd_assets_count')
->withCount('children as children_count')
->withCount('users as users_count')
->withTrashed()
->find($id);
if (isset($location->id)) {
return view('locations/view', compact('location'));
@ -249,6 +256,41 @@ class LocationsController extends Controller
}
/**
* Restore a given Asset Model (mark as un-deleted)
*
* @author [A. Gianotto] [<snipe@snipe.net>]
* @since [v1.0]
* @param int $id
*/
public function postRestore($id) : RedirectResponse
{
$this->authorize('create', Location::class);
if ($location = Location::withTrashed()->find($id)) {
if ($location->deleted_at == '') {
return redirect()->back()->with('error', trans('general.not_deleted', ['item_type' => trans('general.location')]));
}
if ($location->restore()) {
$logaction = new Actionlog();
$logaction->item_type = Location::class;
$logaction->item_id = $location->id;
$logaction->created_at = date('Y-m-d H:i:s');
$logaction->user_id = auth()->id();
$logaction->logaction('restore');
return redirect()->route('locations.index')->with('success', trans('admin/locations/message.restore.success'));
}
// Check validation
return redirect()->back()->with('error', trans('general.could_not_restore', ['item_type' => trans('general.location'), 'error' => $location->getErrors()->first()]));
}
return redirect()->back()->with('error', trans('admin/models/message.does_not_exist'));
}
public function print_all_assigned($id) : View | RedirectResponse
{
if ($location = Location::where('id', $id)->first()) {

View file

@ -21,6 +21,7 @@ class Kernel extends HttpKernel
\App\Http\Middleware\CheckForSetup::class,
\App\Http\Middleware\CheckForDebug::class,
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
\App\Http\Middleware\TrimStrings::class,
\App\Http\Middleware\SecurityHeaders::class,
\App\Http\Middleware\PreventBackHistory::class,
\Illuminate\Http\Middleware\HandleCors::class,

View file

@ -3,30 +3,25 @@
namespace App\Livewire;
use App\Models\CustomField;
use Livewire\Component;
use App\Models\Import;
use Illuminate\Support\Facades\Storage;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Livewire\Attributes\Computed;
use Livewire\Component;
class Importer extends Component
{
use AuthorizesRequests;
public $files;
public $progress; //upload progress - '-1' means don't show
public $progress = -1; //upload progress - '-1' means don't show
public $progress_message;
public $progress_bar_class;
public $progress_bar_class = 'progress-bar-warning';
public $message; //status/error message?
public $message_type; //success/error?
//originally from ImporterFile
public $import_errors; //
public ?Import $activeFile = null;
public $activeFileId;
public $headerRow = [];
public $typeOfImport;
public $importTypes;
public $columnOptions;
public $statusType;
@ -35,7 +30,6 @@ class Importer extends Component
public $send_welcome;
public $run_backup;
public $field_map; // we need a separate variable for the field-mapping, because the keys in the normal array are too complicated for Livewire to understand
public $file_id; // TODO: I can't figure out *why* we need this, but it really seems like we do. I can't seem to pull the id from the activeFile for some reason?
// Make these variables public - we set the properties in the constructor so we can localize them (versus the old static arrays)
public $accessories_fields;
@ -51,10 +45,8 @@ class Importer extends Component
'files.*.file_path' => 'required|string',
'files.*.created_at' => 'required|string',
'files.*.filesize' => 'required|integer',
'activeFile' => 'Import',
'activeFile.import_type' => 'string',
'activeFile.field_map' => 'array',
'activeFile.header_row' => 'array',
'headerRow' => 'array',
'typeOfImport' => 'string',
'field_map' => 'array'
];
@ -68,15 +60,13 @@ class Importer extends Component
{
$tmp = array();
if ($this->activeFile) {
$tmp = array_combine($this->activeFile->header_row, $this->field_map);
$tmp = array_combine($this->headerRow, $this->field_map);
$tmp = array_filter($tmp);
}
return json_encode($tmp);
}
private function getColumns($type)
{
switch ($type) {
@ -115,76 +105,66 @@ class Importer extends Component
return $results;
}
public function updating($name, $new_import_type)
public function updatingTypeOfImport($type)
{
if ($name == "activeFile.import_type") {
// go through each header, find a matching field to try and map it to.
foreach ($this->activeFile->header_row as $i => $header) {
// do we have something mapped already?
if (array_key_exists($i, $this->field_map)) {
// yes, we do. Is it valid for this type of import?
// (e.g. the import type might have been changed...?)
if (array_key_exists($this->field_map[$i], $this->columnOptions[$new_import_type])) {
//yes, this key *is* valid. Continue on to the next field.
continue;
} else {
//no, this key is *INVALID* for this import type. Better set it to null
// and we'll hope that the $aliases_fields or something else picks it up.
$this->field_map[$i] = null; // fingers crossed! But it's not likely, tbh.
} // TODO - strictly speaking, this isn't necessary here I don't think.
// go through each header, find a matching field to try and map it to.
foreach ($this->headerRow as $i => $header) {
// do we have something mapped already?
if (array_key_exists($i, $this->field_map)) {
// yes, we do. Is it valid for this type of import?
// (e.g. the import type might have been changed...?)
if (array_key_exists($this->field_map[$i], $this->columnOptions[$type])) {
//yes, this key *is* valid. Continue on to the next field.
continue;
} else {
//no, this key is *INVALID* for this import type. Better set it to null
// and we'll hope that the $aliases_fields or something else picks it up.
$this->field_map[$i] = null; // fingers crossed! But it's not likely, tbh.
} // TODO - strictly speaking, this isn't necessary here I don't think.
}
// first, check for exact matches
foreach ($this->columnOptions[$type] as $v => $text) {
if (strcasecmp($text, $header) === 0) { // case-INSENSITIVe on purpose!
$this->field_map[$i] = $v;
continue 2; //don't bother with the alias check, go to the next header
}
// first, check for exact matches
foreach ($this->columnOptions[$new_import_type] as $value => $text) {
if (strcasecmp($text, $header) === 0) { // case-INSENSITIVe on purpose!
$this->field_map[$i] = $value;
continue 2; //don't bother with the alias check, go to the next header
}
}
// if you got here, we didn't find a match. Try the $aliases_fields
foreach ($this->aliases_fields as $key => $alias_values) {
foreach ($alias_values as $alias_value) {
if (strcasecmp($alias_value, $header) === 0) { // aLsO CaSe-INSENSitiVE!
// Make *absolutely* sure that this key actually _exists_ in this import type -
// you can trigger this by importing accessories with a 'Warranty' column (which don't exist
// in "Accessories"!)
if (array_key_exists($key, $this->columnOptions[$new_import_type])) {
$this->field_map[$i] = $key;
continue 3; // bust out of both of these loops; as well as the surrounding one - e.g. move on to the next header
}
}
// if you got here, we didn't find a match. Try the $aliases_fields
foreach ($this->aliases_fields as $key => $alias_values) {
foreach ($alias_values as $alias_value) {
if (strcasecmp($alias_value, $header) === 0) { // aLsO CaSe-INSENSitiVE!
// Make *absolutely* sure that this key actually _exists_ in this import type -
// you can trigger this by importing accessories with a 'Warranty' column (which don't exist
// in "Accessories"!)
if (array_key_exists($key, $this->columnOptions[$type])) {
$this->field_map[$i] = $key;
continue 3; // bust out of both of these loops; as well as the surrounding one - e.g. move on to the next header
}
}
}
// and if you got here, we got nothing. Let's recommend 'null'
$this->field_map[$i] = null; // Booooo :(
}
// and if you got here, we got nothing. Let's recommend 'null'
$this->field_map[$i] = null; // Booooo :(
}
}
public function boot() { // FIXME - delete or undelete.
///////$this->activeFile = null; // I do *not* understand why I have to do this, but, well, whatever.
}
public function mount()
{
$this->authorize('import');
$this->progress = -1; // '-1' means 'don't show the progressbar'
$this->progress_bar_class = 'progress-bar-warning';
$this->importTypes = [
'asset' => trans('general.assets'),
'accessory' => trans('general.accessories'),
'asset' => trans('general.assets'),
'accessory' => trans('general.accessories'),
'consumable' => trans('general.consumables'),
'component' => trans('general.components'),
'license' => trans('general.licenses'),
'user' => trans('general.users'),
'location' => trans('general.locations'),
'component' => trans('general.components'),
'license' => trans('general.licenses'),
'user' => trans('general.users'),
'location' => trans('general.locations'),
];
/**
* These are the item-type specific columns
*/
$this->accessories_fields = [
$this->accessories_fields = [
'company' => trans('general.company'),
'location' => trans('general.location'),
'quantity' => trans('general.qty'),
@ -307,7 +287,7 @@ class Importer extends Component
'manufacturer' => trans('general.manufacturer'),
];
$this->users_fields = [
$this->users_fields = [
'id' => trans('general.id'),
'company' => trans('general.company'),
'location' => trans('general.location'),
@ -332,12 +312,12 @@ class Importer extends Component
'website' => trans('general.website'),
'avatar' => trans('general.image'),
'gravatar' => trans('general.importer.gravatar'),
'start_date' => trans('general.start_date'),
'end_date' => trans('general.end_date'),
'employee_num' => trans('general.employee_number'),
'start_date' => trans('general.start_date'),
'end_date' => trans('general.end_date'),
'employee_num' => trans('general.employee_number'),
];
$this->locations_fields = [
$this->locations_fields = [
'name' => trans('general.item_name_var', ['item' => trans('general.location')]),
'address' => trans('general.address'),
'address2' => trans('general.importer.address2'),
@ -510,19 +490,16 @@ class Importer extends Component
];
$this->columnOptions[''] = $this->getColumns(''); //blank mode? I don't know what this is supposed to mean
foreach($this->importTypes AS $type => $name) {
foreach ($this->importTypes as $type => $name) {
$this->columnOptions[$type] = $this->getColumns($type);
}
if ($this->activeFile) {
$this->field_map = $this->activeFile->field_map ? array_values($this->activeFile->field_map) : [];
}
}
public function selectFile($id)
{
$this->clearMessage();
$this->activeFile = Import::find($id);
$this->activeFileId = $id;
if (!$this->activeFile) {
$this->message = trans('admin/hardware/message.import.file_missing');
@ -531,15 +508,17 @@ class Importer extends Component
return;
}
$this->headerRow = $this->activeFile->header_row;
$this->typeOfImport = $this->activeFile->import_type;
$this->field_map = null;
foreach($this->activeFile->header_row as $element) {
if(isset($this->activeFile->field_map[$element])) {
foreach ($this->headerRow as $element) {
if (isset($this->activeFile->field_map[$element])) {
$this->field_map[] = $this->activeFile->field_map[$element];
} else {
$this->field_map[] = null; // re-inject the 'nulls' if a file was imported with some 'Do Not Import' settings
}
}
$this->file_id = $id;
$this->import_errors = null;
$this->statusText = null;
@ -547,21 +526,33 @@ class Importer extends Component
public function destroy($id)
{
// TODO: why don't we just do File::find($id)? This seems dumb.
foreach($this->files as $file) {
if ($id == $file->id) {
if (Storage::delete('private_uploads/imports/'.$file->file_path)) {
$file->delete();
$this->authorize('import');
$this->message = trans('admin/hardware/message.import.file_delete_success');
$this->message_type = 'success';
return;
} else {
$this->message = trans('admin/hardware/message.import.file_delete_error');
$this->message_type = 'danger';
}
}
$import = Import::find($id);
// Check that the import wasn't deleted after while page was already loaded...
// @todo: next up...handle the file being missing for other interactions...
// for example having an import open in two tabs, deleting it, and then changing
// the import type in the other tab. The error message below wouldn't display in that case.
if (!$import) {
$this->message = trans('admin/hardware/message.import.file_already_deleted');
$this->message_type = 'danger';
return;
}
if (Storage::delete('private_uploads/imports/' . $import->file_path)) {
$import->delete();
$this->message = trans('admin/hardware/message.import.file_delete_success');
$this->message_type = 'success';
unset($this->files);
return;
}
$this->message = trans('admin/hardware/message.import.file_delete_error');
$this->message_type = 'danger';
}
public function clearMessage()
@ -570,11 +561,22 @@ class Importer extends Component
$this->message_type = null;
}
#[Computed]
public function files()
{
return Import::orderBy('id', 'desc')->get();
}
#[Computed]
public function activeFile()
{
return Import::find($this->activeFileId);
}
public function render()
{
$this->files = Import::orderBy('id','desc')->get(); //HACK - slows down renders.
return view('livewire.importer')
->extends('layouts.default')
->section('content');
->extends('layouts.default')
->section('content');
}
}

View file

@ -579,6 +579,6 @@ class AssetPresenter extends Presenter
public function glyph()
{
return '<i class="fas fa-barcode" aria-hidden="true"></i>';
return '<x-icon type="assets" />';
}
}

View file

@ -65,40 +65,46 @@ class CompanyPresenter extends Presenter
'field' => 'users_count',
'searchable' => false,
'sortable' => true,
'title' => '<span class="hidden-xs"><i class="fas fa-users"></i></span><span class="hidden-md hidden-lg">'.trans('general.users').'</span></th>',
'title' => trans('general.users'),
'visible' => true,
'class' => 'css-users',
], [
'field' => 'assets_count',
'searchable' => false,
'sortable' => true,
'title' => '<span class="hidden-xs"><i class="fas fa-barcode" aria-hidden="true"></i></span><span class="hidden-md hidden-lg">'.trans('general.assets').'</span>',
'title' => trans('general.assets'),
'visible' => true,
'class' => 'css-barcode',
], [
'field' => 'licenses_count',
'searchable' => false,
'sortable' => true,
'title' => trans('general.licenses'),
'visible' => true,
'title' => ' <span class="hidden-xs"><i class="far fa-save"></i></span><span class="hidden-md hidden-lg">'.trans('general.licenses').'</span>',
'class' => 'css-license',
], [
'field' => 'accessories_count',
'searchable' => false,
'sortable' => true,
'title' => trans('general.accessories'),
'visible' => true,
'title' => ' <span class="hidden-xs"><i class="far fa-keyboard"></i></span><span class="hidden-md hidden-lg">'.trans('general.accessories').'</span>',
'class' => 'css-accessory',
], [
'field' => 'consumables_count',
'searchable' => false,
'sortable' => true,
'title' => trans('general.consumables'),
'visible' => true,
'title' => ' <span class="hidden-xs"><i class="fas fa-tint"></i></span><span class="hidden-md hidden-lg">'.trans('general.consumables').'</span>',
'class' => 'css-consumable',
], [
'field' => 'components_count',
'searchable' => false,
'sortable' => true,
'title' => trans('general.components'),
'visible' => true,
'title' => ' <span class="hidden-xs"><i class="far fa-hdd"></i></span><span class="hidden-md hidden-lg">'.trans('general.components').'</span>',
'class' => 'css-component',
], [
'field' => 'updated_at',
'searchable' => false,

View file

@ -394,6 +394,6 @@ class DepreciationReportPresenter extends Presenter
public function glyph()
{
return '<i class="fas fa-barcode" aria-hidden="true"></i>';
return '<x-icon type="reports" class="text-orange" />';
}
}

View file

@ -235,7 +235,7 @@ class LocationPresenter extends Presenter
public function glyph()
{
return '<i class="fas fa-map-marker-alt" aria-hidden="true"></i>';
return '<x-icon type="locations" />';
}
public function fullName()

View file

@ -94,36 +94,36 @@ class ManufacturerPresenter extends Presenter
'searchable' => false,
'sortable' => true,
'switchable' => true,
'title' => ' <span class="hidden-md hidden-lg">Assets</span>'
.'<span class="hidden-xs"><i class="fas fa-barcode fa-lg"></i></span>',
'title' => trans('general.assets'),
'visible' => true,
'class' => 'css-barcode',
],
[
'field' => 'licenses_count',
'searchable' => false,
'sortable' => true,
'switchable' => true,
'title' => ' <span class="hidden-md hidden-lg">Licenses</span>'
.'<span class="hidden-xs"><i class="far fa-save fa-lg"></i></span>',
'title' => trans('general.licenses'),
'visible' => true,
'class' => 'css-license',
],
[
'field' => 'consumables_count',
'searchable' => false,
'sortable' => true,
'switchable' => true,
'title' => ' <span class="hidden-md hidden-lg">Consumables</span>'
.'<span class="hidden-xs"><i class="fas fa-tint fa-lg"></i></span>',
'title' => trans('general.consumables'),
'visible' => true,
'class' => 'css-consumable',
],
[
'field' => 'accessories_count',
'searchable' => false,
'sortable' => true,
'switchable' => true,
'title' => ' <span class="hidden-md hidden-lg">Accessories</span>'
.'<span class="hidden-xs"><i class="far fa-keyboard fa-lg"></i></span>',
'title' => trans('general.accessories'),
'visible' => true,
'class' => 'css-accessory',
],
[
'field' => 'created_at',

View file

@ -492,6 +492,6 @@ class UserPresenter extends Presenter
public function glyph()
{
return '<i class="fas fa-user" aria-hidden="true"></i>';
return '<x-icon type="user"/>';
}
}

View file

@ -372,7 +372,9 @@ return [
'Google2FA' => PragmaRX\Google2FALaravel\Facade::class,
'Image' => Intervention\Image\ImageServiceProvider::class,
'Carbon' => Carbon\Carbon::class,
'Helper' => App\Helpers\Helper::class, // makes it much easier to use 'Helper::blah' in blades (which is where we usually use this)
'Helper' => App\Helpers\Helper::class,
// makes it much easier to use 'Helper::blah' in blades (which is where we usually use this)
'Icon' => App\Helpers\IconHelper::class,
'Socialite' => Laravel\Socialite\Facades\Socialite::class,

View file

@ -296,6 +296,11 @@ class UserFactory extends Factory
return $this->appendPermission(['reports.view' => '1']);
}
public function canImport()
{
return $this->appendPermission(['import' => '1']);
}
private function appendPermission(array $permission)
{
return $this->state(function ($currentState) use ($permission) {

8
package-lock.json generated
View file

@ -15,7 +15,7 @@
"bootstrap-colorpicker": "^2.5.3",
"bootstrap-datepicker": "^1.10.0",
"bootstrap-less": "^3.3.8",
"bootstrap-table": "1.23.0",
"bootstrap-table": "1.23.2",
"canvas-confetti": "^1.9.3",
"chart.js": "^2.9.4",
"clipboard": "^2.0.11",
@ -3693,9 +3693,9 @@
"license": "MIT"
},
"node_modules/bootstrap-table": {
"version": "1.23.0",
"resolved": "https://registry.npmjs.org/bootstrap-table/-/bootstrap-table-1.23.0.tgz",
"integrity": "sha512-fAIhu2CAqMsZWkzeFxXyh0yQA2DMBdB0tCdr1iF6bKr3c/Hf79cw5PykNt7NdtqLz/a0p192S8EKyT5lG4yrpw==",
"version": "1.23.2",
"resolved": "https://registry.npmjs.org/bootstrap-table/-/bootstrap-table-1.23.2.tgz",
"integrity": "sha512-1IFiWFZzbKlleXgYEHdwHkX6rxlQMEx2N1tA8rJK/j08pI+NjIGnxFeXUL26yQLQ0U135eis/BX3OV1+anY25g==",
"peerDependencies": {
"jquery": "3"
}

View file

@ -35,7 +35,7 @@
"bootstrap-colorpicker": "^2.5.3",
"bootstrap-datepicker": "^1.10.0",
"bootstrap-less": "^3.3.8",
"bootstrap-table": "1.23.0",
"bootstrap-table": "1.23.2",
"canvas-confetti": "^1.9.3",
"chart.js": "^2.9.4",
"clipboard": "^2.0.11",

Binary file not shown.

Binary file not shown.

BIN
public/sounds/lock.mp3 Normal file

Binary file not shown.

View file

@ -718,6 +718,7 @@ th.css-consumable > .th-inner,
th.css-envelope > .th-inner,
th.css-users > .th-inner,
th.css-location > .th-inner,
th.css-component > .th-inner,
th.css-accessory > .th-inner
{
font-size: 0px;
@ -736,6 +737,7 @@ th.css-consumable > .th-inner::before,
th.css-envelope > .th-inner::before,
th.css-users > .th-inner::before,
th.css-location > .th-inner::before,
th.css-component > .th-inner::before,
th.css-accessory > .th-inner::before
{
@ -791,6 +793,11 @@ th.css-location > .th-inner::before {
content: "\f3c5"; font-family: "Font Awesome 5 Free"; font-size: 19px; margin-bottom: 0px;
}
th.css-component > .th-inner::before
{
content: "\f0a0"; font-family: "Font Awesome 5 Free"; font-weight: 500;
}
.small-box .inner {
padding-left: 15px;

View file

@ -58,6 +58,7 @@ return [
'file_delete_success' => 'Your file has been been successfully deleted',
'file_delete_error' => 'The file was unable to be deleted',
'file_missing' => 'The file selected is missing',
'file_already_deleted' => 'The file selected was already deleted',
'header_row_has_malformed_characters' => 'One or more attributes in the header row contain malformed UTF-8 characters',
'content_row_has_malformed_characters' => 'One or more attributes in the first row of content contain malformed UTF-8 characters',
],

View file

@ -8,6 +8,7 @@ return array(
'assoc_child_loc' => 'This location is currently the parent of at least one child location and cannot be deleted. Please update your locations to no longer reference this location and try again. ',
'assigned_assets' => 'Assigned Assets',
'current_location' => 'Current Location',
'open_map' => 'Open in :map_provider_icon Maps',
'create' => array(
@ -20,6 +21,11 @@ return array(
'success' => 'Location updated successfully.'
),
'restore' => array(
'error' => 'Location was not restored, please try again',
'success' => 'Location restored successfully.'
),
'delete' => array(
'confirm' => 'Are you sure you wish to delete this location?',
'error' => 'There was an issue deleting the location. Please try again.',

View file

@ -25,7 +25,7 @@
<li class="active">
<a href="#checkedout" data-toggle="tab">
<span class="hidden-lg hidden-md">
<i class="fas fa-info-circle fa-2x" aria-hidden="true"></i>
<x-icon type="info-circle" class="fa-2x" />
</span>
<span class="hidden-xs hidden-sm">{{ trans('admin/users/general.info') }}</span>
</a>
@ -34,7 +34,8 @@
<li>
<a href="#history" data-toggle="tab">
<span class="hidden-lg hidden-md">
<i class="fas fa-history fa-2x" aria-hidden="true"></i></span>
<x-icon type="history" class="fa-2x" />
</span>
<span class="hidden-xs hidden-sm">{{ trans('general.history') }}</span>
</a>
</li>
@ -43,11 +44,12 @@
@can('accessories.files', $accessory)
<li>
<a href="#files" data-toggle="tab">
<span class="hidden-lg hidden-md">
<i class="far fa-file fa-2x" aria-hidden="true"></i></span>
<span class="hidden-lg hidden-md">
<x-icon type="files" class="fa-2x" />
</span>
<span class="hidden-xs hidden-sm">{{ trans('general.file_uploads') }}
{!! ($accessory->uploads->count() > 0 ) ? '<badge class="badge badge-secondary">'.number_format($accessory->uploads->count()).'</badge>' : '' !!}
</span>
</span>
</a>
</li>
@endcan
@ -55,7 +57,13 @@
@can('update', $accessory)
<li class="pull-right">
<a href="#" data-toggle="modal" data-target="#uploadFileModal">
<i class="fas fa-paperclip" aria-hidden="true"></i> {{ trans('button.upload') }}
<span class="hidden-lg hidden-xl hidden-md">
<x-icon type="paperclip" class="fa-2x" />
</span>
<span class="hidden-xs hidden-sm">
<x-icon type="paperclip" />
{{ trans('button.upload') }}
</span>
</a>
</li>
@endcan
@ -186,6 +194,7 @@
@foreach ($accessory->uploads as $file)
<tr>
<td>
<x-icon type="paperclip" class="fa-2x" />
<i class="{{ Helper::filetype_icon($file->filename) }} icon-med" aria-hidden="true"></i>
<span class="sr-only">{{ Helper::filetype_icon($file->filename) }}</span>
@ -217,7 +226,7 @@
</a>
<a href="{{ route('show.accessoryfile', [$accessory->id, $file->id, 'inline' => 'true']) }}" class="btn btn-sm btn-default" target="_blank">
<i class="fa fa-external-link" aria-hidden="true"></i>
<x-icon type="external-link" />
</a>
@endif
@ -320,33 +329,46 @@
</div>
<div class="col-md-3 pull-right">
@can('update', \App\Models\Accessory::class)
<div class="text-center" style="padding-top:5px;">
<a href="{{ route('accessories.edit', $accessory->id) }}" style="margin-right:5px;" class="btn btn-warning btn-sm btn-social btn-block hidden-print">
<x-icon type="edit" />
{{ trans('admin/accessories/general.edit') }}
</a>
</div>
@endcan
@can('checkout', \App\Models\Accessory::class)
<div class="text-center" style="padding-top:5px;">
<a href="{{ route('accessories.checkout.show', $accessory->id) }}" style="margin-right:5px; width:100%" class="btn btn-primary btn-sm" {{ (($accessory->numRemaining() > 0 ) ? '' : ' disabled') }}>{{ trans('general.checkout') }}</a>
<a href="{{ route('accessories.checkout.show', $accessory->id) }}" style="margin-right:5px; width:100%" class="btn bg-maroon btn-sm btn-social btn-block hidden-print {{ (($accessory->numRemaining() > 0 ) ? '' : ' disabled') }}">
<x-icon type="checkout" />
{{ trans('general.checkout') }}
</a>
</div>
@endcan
@can('update', \App\Models\Accessory::class)
<div class="text-center" style="padding-top:5px;">
<a href="{{ route('accessories.edit', $accessory->id) }}" style="margin-right:5px; width:100%" class="btn btn-primary btn-sm">{{ trans('admin/accessories/general.edit') }}</a>
</div>
@endcan
@can('create', \App\Models\Accessory::class)
<div class="text-center" style="padding-top:5px;">
<a href="{{ route('clone/accessories', $accessory->id) }}" style="margin-right:5px; width:100%" class="btn btn-primary btn-sm">{{ trans('admin/accessories/general.clone') }}</a>
<a href="{{ route('clone/accessories', $accessory->id) }}" style="margin-right:5px; width:100%" class="btn btn-info btn-block btn-sm btn-social hidden-print">
<x-icon type="clone" />
{{ trans('admin/accessories/general.clone') }}</a>
</div>
@endcan
@can('delete', $accessory)
@if ($accessory->checkouts_count == 0)
<div class="text-center" style="padding-top:5px;">
<button class="btn btn-block btn-danger delete-asset" style="padding-top:5px;" data-toggle="modal" data-title="{{ trans('general.delete') }}" data-content="{{ trans('general.delete_confirm_no_undo', ['item' => $accessory->name]) }}" data-target="#dataConfirmModal">
<button class="btn btn-block btn-danger btn-sm btn-social delete-asset" style="padding-top:5px;" data-toggle="modal" data-title="{{ trans('general.delete') }}" data-content="{{ trans('general.delete_confirm_no_undo', ['item' => $accessory->name]) }}" data-target="#dataConfirmModal">
<x-icon type="delete" />
{{ trans('general.delete') }}
</button>
</div>
@else
<div class="text-center" style="padding-top:5px;">
<span data-tooltip="true" title=" {{ trans('admin/accessories/general.delete_disabled') }}">
<a href="#" class="btn btn-block btn-danger disabled">
<a href="#" class="btn btn-block btn-danger btn-sm btn-social delete-asset disabled">
<x-icon type="delete" />
{{ trans('general.delete') }}
</a>
</span>

View file

@ -59,7 +59,7 @@
</div> <!-- .box-body -->
<div class="box-footer text-right">
<a class="btn btn-link" href="{{ URL::previous() }}">{{ trans('button.cancel') }}</a>
<button type="submit" class="btn btn-primary"><i class="fas fa-check icon-white" aria-hidden="true"></i> {{ trans('general.save') }}</button>
<button type="submit" class="btn btn-primary"><x-icon type="checkmark" /> {{ trans('general.save') }}</button>
</div>
</div> <!-- .box-default -->

View file

@ -174,7 +174,7 @@
</div> <!-- .box-body -->
<div class="text-right box-footer">
<a class="btn btn-link" href="{{ URL::previous() }}">{{ trans('button.cancel') }}</a>
<button type="submit" class="btn btn-primary"><i class="fas fa-check icon-white" aria-hidden="true"></i> {{ trans('general.save') }}</button>
<button type="submit" class="btn btn-primary"><x-icon type="checkmark" /> {{ trans('general.save') }}</button>
</div>
</div> <!-- .box-default -->
{{ Form::close() }}

View file

@ -42,7 +42,7 @@
<li>
<a href="#asset" data-toggle="tab">
<span class="hidden-lg hidden-md">
<i class="fas fa-barcode fa-2x" aria-hidden="true"></i>
<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>' : '' !!}
@ -64,7 +64,7 @@
<li>
<a href="#accessories" data-toggle="tab">
<span class="hidden-lg hidden-md">
<i class="far fa-keyboard fa-2x"></i>
<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>' : '' !!}

View file

@ -63,7 +63,7 @@
<div class="input-group col-md-3{{ (Helper::checkIfRequired($item, 'start_date')) ? ' required' : '' }}">
<div class="input-group date" data-provide="datepicker" data-date-format="yyyy-mm-dd" data-autoclose="true" data-date-clear-btn="true">
<input type="text" class="form-control" placeholder="{{ trans('general.select_date') }}" name="start_date" id="start_date" value="{{ old('start_date', $item->start_date) }}">
<span class="input-group-addon"><i class="fas fa-calendar" aria-hidden="true"></i></span>
<span class="input-group-addon"><x-icon type="calendar" /></span>
</div>
{!! $errors->first('start_date', '<span class="alert-msg" aria-hidden="true"><i class="fas fa-times" aria-hidden="true"></i> :message</span>') !!}
</div>
@ -78,7 +78,7 @@
<div class="input-group col-md-3{{ (Helper::checkIfRequired($item, 'completion_date')) ? ' required' : '' }}">
<div class="input-group date" data-date-clear-btn="true" data-provide="datepicker" data-date-format="yyyy-mm-dd" data-autoclose="true">
<input type="text" class="form-control" placeholder="{{ trans('general.select_date') }}" name="completion_date" id="completion_date" value="{{ old('completion_date', $item->completion_date) }}">
<span class="input-group-addon"><i class="fas fa-calendar" aria-hidden="true"></i></span>
<span class="input-group-addon"><x-icon type="calendar" /></span>
</div>
{!! $errors->first('completion_date', '<span class="alert-msg" aria-hidden="true"><i class="fas fa-times" aria-hidden="true"></i> :message</span>') !!}
</div>
@ -123,7 +123,7 @@
</div> <!-- .box-body -->
<div class="box-footer text-right">
<button type="submit" class="btn btn-success"><i class="fas fa-check icon-white" aria-hidden="true"></i> {{ trans('general.save') }}</button>
<button type="submit" class="btn btn-success"><x-icon type="checkmark" /> {{ trans('general.save') }}</button>
</div>
</div> <!-- .box-default -->
</form>

View file

@ -58,7 +58,7 @@
<div class="form-group{{ $errors->has('username') ? ' has-error' : '' }}">
<label for="username">
<i class="fas fa-user" aria-hidden="true"></i>
<x-icon type="user" />
{{ trans('admin/users/table.username') }}
</label>
<input class="form-control" placeholder="{{ trans('admin/users/table.username') }}" name="username" type="text" id="username" autocomplete="{{ (config('auth.login_autocomplete') === true) ? 'on' : 'off' }}" autofocus>
@ -66,7 +66,7 @@
</div>
<div class="form-group{{ $errors->has('password') ? ' has-error' : '' }}">
<label for="password">
<i class="fa fa-key" aria-hidden="true"></i>
<x-icon type="password" />
{{ trans('admin/users/table.password') }}
</label>
<input class="form-control" placeholder="{{ trans('admin/users/table.password') }}" name="password" type="password" id="password" autocomplete="{{ (config('auth.login_autocomplete') === true) ? 'on' : 'off' }}">

View file

@ -37,7 +37,7 @@
<div class="row">
<div class="col-md-12">
<div class="alert alert-info">
<i class="fas fa-info-circle" aria-hidden="true"></i>
<x-icon type="info-circle" />
{!! trans('auth/general.username_help_top') !!}
</div>
</div>
@ -55,7 +55,7 @@
<div class="form-group{{ $errors->has('username') ? ' has-error' : '' }}">
<div class="col-md-12">
<label for="username"><i class="fas fa-user" aria-hidden="true"></i> {{ trans('admin/users/table.username') }} </label>
<label for="username"><x-icon type="user" /> {{ trans('admin/users/table.username') }} </label>
<input type="text" class="form-control" name="username" value="{{ old('username') }}" placeholder="{{ trans('admin/users/table.username') }}" aria-label="username">
{!! $errors->first('username', '<span class="alert-msg"><i class="fas fa-times"></i> :message</span>') !!}
</div>
@ -67,13 +67,13 @@
<br>
<!-- show help text toggle -->
<a href="#" id="show">
<i class="fa fa-caret-right"></i>
<x-icon type="caret-right" />
{{ trans('general.show_help') }}
</a>
<!-- hide help text toggle -->
<a href="#" id="hide" style="display:none">
<i class="fa fa-caret-up"></i>
<x-icon type="caret-up" />
{{ trans('general.hide_help') }}
</a>

View file

@ -11,8 +11,6 @@
<div class="container">
<div class="row">
<div class="col-md-6 col-md-offset-3">
<div class="box login-box" style="width: 100%">
@ -32,7 +30,7 @@
<input type="hidden" name="token" value="{{ $token }}">
<div class="form-group{{ $errors->has('username') ? ' has-error' : '' }}">
<label class="col-md-4 control-label"><i class="fas fa-user" aria-hidden="true"></i> {{ trans('admin/users/table.username') }}</label>
<label class="col-md-4 control-label"><x-icon type="user" /> {{ trans('admin/users/table.username') }}</label>
<div class="col-md-6">
<input type="text" class="form-control" name="username" value="{{ old('username', $username) }}">
@ -42,7 +40,10 @@
</div>
<div class="form-group{{ $errors->has('password') ? ' has-error' : '' }}">
<label class="col-md-4 control-label" for="password"><i class="fa fa-key" aria-hidden="true"></i> {{ trans('admin/users/table.password') }}</label>
<label class="col-md-4 control-label" for="password">
<x-icon type="password" />
{{ trans('admin/users/table.password') }}
</label>
<div class="col-md-6">
<input type="password" class="form-control" name="password" aria-label="password">
@ -51,7 +52,9 @@
</div>
<div class="form-group{{ $errors->has('password_confirmation') ? ' has-error' : '' }}">
<label class="col-md-4 control-label" for="password_confirmation"><i class="fa fa-key" aria-hidden="true"></i> {{ trans('admin/users/table.password_confirm') }}</label>
<label class="col-md-4 control-label" for="password_confirmation">
<x-icon type="password" />
{{ trans('admin/users/table.password_confirm') }}</label>
<div class="col-md-6">
<input type="password" class="form-control" name="password_confirmation" aria-label="password_confirmation">
{!! $errors->first('password_confirmation', '<span class="alert-msg" aria-hidden="true"><i class="fas fa-times" aria-hidden="true"></i> :message</span>') !!}

View file

@ -0,0 +1,10 @@
{{-- IMPORTANT!!! Make sure there is no newline at the end of this file, or it will break the loaders for the tables --}}
@props([
'type' => '',
'class' => false,
'style' => false,
'id' => false,
'title' => false,
])
<i {{ $attributes->merge(['class' => Icon::icon($type).' '.$class]) }} {{ isset($style) ? $attributes->merge(['style' => $style]): '' }} {{ isset($title) ? $attributes->merge(['title' => $title]): '' }} aria-hidden="true"></i>

View file

@ -27,7 +27,7 @@
@endif
<button type="submit" class="btn btn-primary pull-right{{ ($disabled_select ? ' disabled' : '') }}" style="margin-left:5px; border-radius: 3px;"{!! ($disabled_select ? ' data-tooltip="true" title="'.trans('admin/hardware/general.edit').'" disabled' : '') !!}>
<i class="fas fa-check icon-white" aria-hidden="true"></i>
<x-icon type="checkmark" />
{{ $button_label }}
</button>

View file

@ -71,7 +71,7 @@
<li>
<a href="#users_tab" data-toggle="tab">
<span class="hidden-lg hidden-md">
<i class="fas fa-users"></i></span>
<x-icon type="users" /></span>
<span class="hidden-xs hidden-sm">{{ trans('general.people') }}
{!! (($company->users) && ($company->users->count() > 0 )) ? '<badge class="badge badge-secondary">'.number_format($company->users->count()).'</badge>' : '' !!}
</span>

View file

@ -61,7 +61,7 @@
<li class="active">
<a href="#checkedout" data-toggle="tab">
<span class="hidden-lg hidden-md">
<i class="fas fa-info-circle fa-2x" aria-hidden="true"></i>
<x-icon type="info-circle" class="fa-2x" />
</span>
<span class="hidden-xs hidden-sm">{{ trans('admin/users/general.info') }}</span>
</a>
@ -83,7 +83,7 @@
@can('components.files', $component)
<li class="pull-right">
<a href="#" data-toggle="modal" data-target="#uploadFileModal">
<i class="fas fa-paperclip" aria-hidden="true"></i> {{ trans('button.upload') }}
<x-icon type="paperclip" /> {{ trans('button.upload') }}
</a>
</li>
@endcan
@ -203,15 +203,15 @@
</td>
<td>
@if ($file->filename)
<a href="{{ route('show.componentfile', [$component->id, $file->id]) }}" class="btn btn-sm btn-default">
<i class="fas fa-download" aria-hidden="true"></i>
<nobr><a href="{{ route('show.componentfile', [$component->id, $file->id]) }}" class="btn btn-sm btn-default">
<x-icon type="download" />
<span class="sr-only">{{ trans('general.download') }}</span>
</a>
<a href="{{ route('show.componentfile', [$component->id, $file->id, 'inline' => 'true']) }}" class="btn btn-sm btn-default" target="_blank">
<i class="fa fa-external-link" aria-hidden="true"></i>
<x-icon type="external-link" />
</a>
</nobr>
@endif
</td>
<td>{{ $file->created_at }}</td>
@ -284,7 +284,26 @@
</div>
@endif
</div>
@can('update', $component)
<div class="col-md-12 hidden-print" style="padding-top: 5px;">
<a href="{{ route('components.edit', $component->id) }}" class="btn btn-sm btn-warning btn-social btn-block hidden-print">
<x-icon type="edit" />
{{ trans('admin/components/general.edit') }}
</a>
</div>
@endcan
@can('checkout', Component::class)
<div class="col-md-12 hidden-print" style="padding-top: 5px;">
<a href="{{ route('components.checkout.show', $component->id) }}" class="btn btn-sm bg-maroon btn-social btn-block hidden-print">
<x-icon type="checkout" />
{{ trans('admin/components/general.checkout') }}
</a>
</div>
@endcan
</div>
</div> <!-- .row-->
@can('components.files', Component::class)

View file

@ -38,7 +38,7 @@
<li>
<a href="#checkedout" data-toggle="tab">
<span class="hidden-lg hidden-md">
<i class="fas fa-users fa-2x" aria-hidden="true"></i>
<x-icon type="users" class="fa-2x" />
</span>
<span class="hidden-xs hidden-sm">{{ trans('general.assigned') }}
{!! ($consumable->users_consumables > 0 ) ? '<badge class="badge badge-secondary">'.number_format($consumable->users_consumables).'</badge>' : '' !!}
@ -74,7 +74,7 @@
@can('update', $consumable)
<li class="pull-right">
<a href="#" data-toggle="modal" data-target="#uploadFileModal">
<i class="fas fa-paperclip" aria-hidden="true"></i> {{ trans('button.upload') }}
<x-icon type="paperclip" /> {{ trans('button.upload') }}
</a>
</li>
@endcan
@ -97,39 +97,51 @@
@can('update', $consumable)
<div class="col-md-12">
<a href="{{ route('consumables.edit', $consumable->id) }}" style="margin-bottom:5px;" class="btn btn-sm btn-block btn-primary hidden-print">{{ trans('button.edit') }}</a>
<a href="{{ route('consumables.edit', $consumable->id) }}" style="margin-bottom:5px;" class="btn btn-sm btn-block btn-social btn-warning hidden-print">
<x-icon type="edit" />
{{ trans('button.edit') }}
</a>
</div>
@endcan
@can('create', Consumable::class)
@can('checkout', $consumable)
@if ($consumable->numRemaining() > 0)
<div class="col-md-12">
<a href="{{ route('consumables.checkout.show', $consumable->id) }}" style="margin-bottom:5px;" class="btn btn-sm btn-block bg-maroon btn-social hidden-print">
<x-icon type="checkout" />
{{ trans('general.checkout') }}
</a>
</div>
@else
<div class="col-md-12">
<button style="margin-bottom:10px;" class="btn btn-block bg-maroon btn-sm btn-social hidden-print disabled">
<x-icon type="checkout" />
{{ trans('general.checkout') }}
</button>
</div>
@endif
@endif
@can('create', Consumable::class)
<div class="col-md-12">
<a href="{{ route('consumables.clone.create', $consumable->id) }}" style="margin-bottom:5px;" class="btn btn-sm btn-block btn-primary hidden-print">{{ trans('button.var.clone', ['item_type' => trans('general.consumable')]) }}</a>
<a href="{{ route('consumables.clone.create', $consumable->id) }}" style="margin-bottom:5px;" class="btn btn-sm btn-block btn-info btn-social hidden-print">
<x-icon type="clone" />
{{ trans('button.var.clone', ['item_type' => trans('general.consumable')]) }}
</a>
</div>
@endcan
@can('checkout', $consumable)
@if ($consumable->numRemaining() > 0)
<div class="col-md-12">
<a href="{{ route('consumables.checkout.show', $consumable->id) }}" style="margin-bottom:5px;" class="btn btn-sm btn-block btn-primary hidden-print">
{{ trans('general.checkout') }}
</a>
</div>
@else
<div class="col-md-12">
<button style="margin-bottom:10px;" class="btn btn-block btn-primary btn-sm disabled">
{{ trans('general.checkout') }}
</button>
</div>
@endif
@endif
@can('delete', $consumable)
<div class="col-md-12" style="padding-top: 10px; padding-bottom: 20px">
@if ($consumable->deleted_at=='')
<button class="btn btn-sm btn-block btn-danger delete-asset" data-toggle="modal" data-title="{{ trans('general.delete') }}" data-content="{{ trans('general.sure_to_delete_var', ['item' => $consumable->name]) }}" data-target="#dataConfirmModal">{{ trans('general.delete') }}
<button class="btn btn-sm btn-block btn-danger btn-social hidden-print delete-asset" data-toggle="modal" data-title="{{ trans('general.delete') }}" data-content="{{ trans('general.sure_to_delete_var', ['item' => $consumable->name]) }}" data-target="#dataConfirmModal">
<x-icon type="delete" />
{{ trans('general.delete') }}
</button>
<span class="sr-only">{{ trans('general.delete') }}</span>
@endif
@ -487,7 +499,7 @@
</a>
<a href="{{ route('show.consumablefile', [$consumable->id, $file->id, 'inline' => 'true']) }}" class="btn btn-sm btn-default" target="_blank">
<i class="fa fa-external-link" aria-hidden="true"></i>
<x-icon type="external-link" />
</a>
@endif
</td>

View file

@ -143,7 +143,7 @@
</div>
<div class="col-md-9 col-md-offset-3" id="encrypt_warning" style="display:none;">
<div class="callout callout-danger">
<p><i class="fas fa-exclamation-triangle" aria-hidden="true"></i> {{ trans('admin/custom_fields/general.encrypt_field_help') }}</p>
<p><x-icon type="warning" /> {{ trans('admin/custom_fields/general.encrypt_field_help') }}</p>
</div>
</div>
@endif

View file

@ -37,10 +37,12 @@
<p>{{ strtolower(trans('general.assets')) }}</p>
</div>
<div class="icon" aria-hidden="true">
<i class="fas fa-barcode" aria-hidden="true"></i>
<x-icon type="assets" />
</div>
@can('index', \App\Models\Asset::class)
<a href="{{ route('hardware.index') }}" class="small-box-footer">{{ trans('general.view_all') }} <i class="fa fa-arrow-circle-right" aria-hidden="true"></i></a>
<a href="{{ route('hardware.index') }}" class="small-box-footer">{{ trans('general.view_all') }}
<x-icon type="arrow-circle-right" />
</a>
@endcan
</div>
</a>
@ -55,10 +57,12 @@
<p>{{ strtolower(trans('general.licenses')) }}</p>
</div>
<div class="icon" aria-hidden="true">
<i class="far fa-save"></i>
<x-icon type="licenses" />
</div>
@can('view', \App\Models\License::class)
<a href="{{ route('licenses.index') }}" class="small-box-footer">{{ trans('general.view_all') }} <i class="fa fa-arrow-circle-right" aria-hidden="true"></i></a>
<a href="{{ route('licenses.index') }}" class="small-box-footer">{{ trans('general.view_all') }}
<x-icon type="arrow-circle-right" />
</a>
@endcan
</div>
</a>
@ -74,10 +78,12 @@
<p>{{ strtolower(trans('general.accessories')) }}</p>
</div>
<div class="icon" aria-hidden="true">
<i class="far fa-keyboard"></i>
<x-icon type="accessories" />
</div>
@can('index', \App\Models\Accessory::class)
<a href="{{ route('accessories.index') }}" class="small-box-footer">{{ trans('general.view_all') }} <i class="fa fa-arrow-circle-right" aria-hidden="true"></i></a>
<a href="{{ route('accessories.index') }}" class="small-box-footer">{{ trans('general.view_all') }}
<x-icon type="arrow-circle-right" />
</a>
@endcan
</div>
</a>
@ -93,10 +99,12 @@
<p>{{ strtolower(trans('general.consumables')) }}</p>
</div>
<div class="icon" aria-hidden="true">
<i class="fas fa-tint"></i>
<x-icon type="consumables" />
</div>
@can('index', \App\Models\Consumable::class)
<a href="{{ route('consumables.index') }}" class="small-box-footer">{{ trans('general.view_all') }} <i class="fa fa-arrow-circle-right" aria-hidden="true"></i></a>
<a href="{{ route('consumables.index') }}" class="small-box-footer">{{ trans('general.view_all') }}
<x-icon type="arrow-circle-right" />
</a>
@endcan
</div>
</div><!-- ./col -->
@ -110,10 +118,12 @@
<p>{{ strtolower(trans('general.components')) }}</p>
</div>
<div class="icon" aria-hidden="true">
<i class="far fa-hdd"></i>
<x-icon type="components" />
</div>
@can('view', \App\Models\License::class)
<a href="{{ route('components.index') }}" class="small-box-footer">{{ trans('general.view_all') }} <i class="fa fa-arrow-circle-right" aria-hidden="true"></i></a>
<a href="{{ route('components.index') }}" class="small-box-footer">{{ trans('general.view_all') }}
<x-icon type="arrow-circle-right" />
</a>
@endcan
</div>
</a>
@ -128,10 +138,12 @@
<p>{{ strtolower(trans('general.people')) }}</p>
</div>
<div class="icon" aria-hidden="true">
<i class="fas fa-users"></i>
<x-icon type="users" />
</div>
@can('view', \App\Models\License::class)
<a href="{{ route('users.index') }}" class="small-box-footer">{{ trans('general.view_all') }} <i class="fa fa-arrow-circle-right" aria-hidden="true"></i></a>
<a href="{{ route('users.index') }}" class="small-box-footer">{{ trans('general.view_all') }}
<x-icon type="arrow-circle-right" />
</a>
@endcan
</div>
</a>
@ -201,7 +213,7 @@
<h2 class="box-title">{{ trans('general.recent_activity') }}</h2>
<div class="box-tools pull-right">
<button type="button" class="btn btn-box-tool" data-widget="collapse" aria-hidden="true">
<i class="fas fa-minus" aria-hidden="true"></i>
<x-icon type="minus" />
<span class="sr-only">{{ trans('general.collapse') }}</span>
</button>
</div>
@ -253,7 +265,7 @@
</h2>
<div class="box-tools pull-right">
<button type="button" class="btn btn-box-tool" data-widget="collapse" aria-hidden="true">
<i class="fas fa-minus" aria-hidden="true"></i>
<x-icon type="minus" />
<span class="sr-only">{{ trans('general.collapse') }}</span>
</button>
</div>
@ -282,7 +294,7 @@
<h2 class="box-title">{{ trans('general.companies') }}</h2>
<div class="box-tools pull-right">
<button type="button" class="btn btn-box-tool" data-widget="collapse">
<i class="fas fa-minus" aria-hidden="true"></i>
<x-icon type="minus" />
<span class="sr-only">{{ trans('general.collapse') }}</span>
</button>
</div>
@ -307,27 +319,27 @@
<tr>
<th class="col-sm-3" data-visible="true" data-field="name" data-formatter="companiesLinkFormatter" data-sortable="true">{{ trans('general.name') }}</th>
<th class="col-sm-1" data-visible="true" data-field="users_count" data-sortable="true">
<i class="fas fa-users" aria-hidden="true"></i>
<x-icon type="users" />
<span class="sr-only">{{ trans('general.people') }}</span>
</th>
<th class="col-sm-1" data-visible="true" data-field="assets_count" data-sortable="true">
<i class="fas fa-barcode" aria-hidden="true"></i>
<x-icon type="assets" />
<span class="sr-only">{{ trans('general.asset_count') }}</span>
</th>
<th class="col-sm-1" data-visible="true" data-field="accessories_count" data-sortable="true">
<i class="far fa-keyboard" aria-hidden="true"></i>
<x-icon type="accessories" />
<span class="sr-only">{{ trans('general.accessories_count') }}</span>
</th>
<th class="col-sm-1" data-visible="true" data-field="consumables_count" data-sortable="true">
<i class="fas fa-tint" aria-hidden="true"></i>
<x-icon type="consumables" />
<span class="sr-only">{{ trans('general.consumables_count') }}</span>
</th>
<th class="col-sm-1" data-visible="true" data-field="components_count" data-sortable="true">
<i class="far fa-hdd" aria-hidden="true"></i>
<x-icon type="components" />
<span class="sr-only">{{ trans('general.components_count') }}</span>
</th>
<th class="col-sm-1" data-visible="true" data-field="licenses_count" data-sortable="true">
<i class="far fa-save" aria-hidden="true"></i>
<x-icon type="licenses" />
<span class="sr-only">{{ trans('general.licenses_count') }}</span>
</th>
</tr>
@ -350,7 +362,7 @@
<h2 class="box-title">{{ trans('general.locations') }}</h2>
<div class="box-tools pull-right">
<button type="button" class="btn btn-box-tool" data-widget="collapse">
<i class="fas fa-minus" aria-hidden="true"></i>
<x-icon type="minus" />
<span class="sr-only">{{ trans('general.collapse') }}</span>
</button>
</div>
@ -376,7 +388,7 @@
<th class="col-sm-3" data-visible="true" data-field="name" data-formatter="locationsLinkFormatter" data-sortable="true">{{ trans('general.name') }}</th>
<th class="col-sm-1" data-visible="true" data-field="assets_count" data-sortable="true">
<i class="fas fa-barcode" aria-hidden="true"></i>
<x-icon type="assets" />
<span class="sr-only">{{ trans('general.asset_count') }}</span>
</th>
<th class="col-sm-1" data-visible="true" data-field="assigned_assets_count" data-sortable="true">
@ -384,7 +396,7 @@
{{ trans('general.assigned') }}
</th>
<th class="col-sm-1" data-visible="true" data-field="users_count" data-sortable="true">
<i class="fas fa-users" aria-hidden="true"></i>
<x-icon type="users" />
<span class="sr-only">{{ trans('general.people') }}</span>
</th>
@ -413,7 +425,7 @@
<h2 class="box-title">{{ trans('general.asset') }} {{ trans('general.categories') }}</h2>
<div class="box-tools pull-right">
<button type="button" class="btn btn-box-tool" data-widget="collapse">
<i class="fas fa-minus" aria-hidden="true"></i>
<x-icon type="minus" />
<span class="sr-only">{{ trans('general.collapse') }}</span>
</button>
</div>
@ -441,23 +453,23 @@
{{ trans('general.type') }}
</th>
<th class="col-sm-1" data-visible="true" data-field="assets_count" data-sortable="true">
<i class="fas fa-barcode" aria-hidden="true"></i>
<x-icon type="assets" />
<span class="sr-only">{{ trans('general.asset_count') }}</span>
</th>
<th class="col-sm-1" data-visible="true" data-field="accessories_count" data-sortable="true">
<i class="far fa-keyboard" aria-hidden="true"></i>
<x-icon type="licenses" />
<span class="sr-only">{{ trans('general.accessories_count') }}</span>
</th>
<th class="col-sm-1" data-visible="true" data-field="consumables_count" data-sortable="true">
<i class="fas fa-tint" aria-hidden="true"></i>
<x-icon type="consumables" />
<span class="sr-only">{{ trans('general.consumables_count') }}</span>
</th>
<th class="col-sm-1" data-visible="true" data-field="components_count" data-sortable="true">
<i class="far fa-hdd" aria-hidden="true"></i>
<x-icon type="components" />
<span class="sr-only">{{ trans('general.components_count') }}</span>
</th>
<th class="col-sm-1" data-visible="true" data-field="licenses_count" data-sortable="true">
<i class="far fa-save" aria-hidden="true"></i>
<x-icon type="licenses" />
<span class="sr-only">{{ trans('general.licenses_count') }}</span>
</th>
</tr>

View file

@ -18,7 +18,7 @@
<div style="padding-top: 200px">
<img src="{{ config('app.url') }}/img/sad-panda.png" style="width: 200px; height: 200px;" class="pull-left">
<div class="error-content">
<h2><i class="fas fa-exclamation-triangle text-yellow"></i> 403 Forbidden.</h2>
<h2><x-icon type="warning" class="text-yellow" /> 403 Forbidden.</h2>
<p>
{!! trans('general.sad_panda', ['link' => config('app.url')]) !!}
</p>

View file

@ -18,7 +18,7 @@
<div style="padding-top: 200px">
<img src="{{ config('app.url') }}/img/sad-panda.png" style="width: 200px; height: 200px;" class="pull-left">
<div class="error-content">
<h2><i class="fas fa-exclamation-triangle text-yellow"></i> 404 Page not found.</h2>
<h2><x-icon type="warning" class="text-yellow" /> 404 Page not found.</h2>
<p>
Sad panda. We could not find the page you were looking for.
You should maybe <a href="{{ config('app.url') }}">return to the dashboard</a>.

View file

@ -20,7 +20,7 @@
<div class="box-header with-border">
<h1 class="box-title">
<i class="fas fa-exclamation-triangle text-orange" aria-hidden="true"></i>
<x-icon type="warning" class="text-orange" />
{{ trans('general.maintenance_mode_title') }}
</h1>
</div><!-- /.box-header -->

View file

@ -43,7 +43,7 @@
<tr>
<th data-switchable="true" data-sortable="true" data-field="id" data-visible="false">{{ trans('general.id') }}</th>
<th data-switchable="true" data-sortable="true" data-field="name" data-formatter="groupsAdminLinkFormatter" data-visible="true">{{ trans('admin/groups/table.name') }}</th>
<th data-switchable="true" data-sortable="true" data-field="users_count" data-visible="true"><i class="fas fa-user" aria-hidden="true"></i><span class="sr-only">{{ trans('admin/groups/table.users') }}</span></th>
<th data-switchable="true" data-sortable="true" data-field="users_count" data-visible="true"><x-icon type="user" /><span class="sr-only">{{ trans('admin/groups/table.users') }}</span></th>
<th data-switchable="true" data-sortable="true" data-field="created_at" data-visible="true" data-formatter="dateDisplayFormatter">{{ trans('general.created_at') }}</th>
<th data-switchable="false" data-searchable="false" data-sortable="false" data-field="created_by" data-formatter="usersLinkFormatter">{{ trans('general.created_by') }}</th>
<th data-switchable="false" data-searchable="false" data-sortable="false" data-field="actions" data-formatter="groupsActionsFormatter">{{ trans('table.actions') }}</th>

View file

@ -44,7 +44,7 @@
{{ $asset->model->name }}
@else
<span class="text-danger text-bold">
<i class="fas fa-exclamation-triangle" aria-hidden="true"></i>
<x-icon type="warning" />
{{ trans('admin/hardware/general.model_invalid')}}
</span>
{{ trans('admin/hardware/general.model_invalid_fix')}}
@ -109,7 +109,7 @@
<div class="col-md-8">
<div class="input-group date col-md-5" data-provide="datepicker" data-date-format="yyyy-mm-dd" data-date-clear-btn="true">
<input type="text" class="form-control" placeholder="{{ trans('general.next_audit_date') }}" name="next_audit_date" id="next_audit_date" value="{{ old('next_audit_date', $next_audit_date) }}">
<span class="input-group-addon"><i class="fas fa-calendar" aria-hidden="true"></i></span>
<span class="input-group-addon"><x-icon type="calendar" /></span>
</div>
{!! $errors->first('next_audit_date', '<span class="alert-msg" aria-hidden="true"><i class="fas fa-times" aria-hidden="true"></i> :message</span>') !!}
<p class="help-block">{!! trans('general.next_audit_date_help') !!}</p>
@ -136,7 +136,7 @@
<div class="box-footer">
<a class="btn btn-link" href="{{ URL::previous() }}"> {{ trans('button.cancel') }}</a>
<button type="submit" class="btn btn-success pull-right{{ (!$asset->model ? ' disabled' : '') }}"{!! (!$asset->model ? ' data-tooltip="true" title="'.trans('admin/hardware/general.model_invalid_fix').'" disabled' : '') !!}>
<i class="fas fa-check icon-white" aria-hidden="true"></i>
<x-icon type="checkmark" />
{{ trans('general.audit') }}
</button>
</div>

View file

@ -42,7 +42,7 @@
<div class="col-md-8">
<div class="input-group date col-md-5" data-provide="datepicker" data-date-format="yyyy-mm-dd" data-date-end-date="0d" data-date-clear-btn="true">
<input type="text" class="form-control" placeholder="{{ trans('general.select_date') }}" name="checkout_at" id="checkout_at" value="{{ old('checkout_at') }}">
<span class="input-group-addon"><i class="fas fa-calendar" aria-hidden="true"></i></span>
<span class="input-group-addon"><x-icon type="calendar" /></span>
</div>
{!! $errors->first('checkout_at', '<span class="alert-msg" aria-hidden="true"><i class="fas fa-times" aria-hidden="true"></i> :message</span>') !!}
</div>
@ -56,7 +56,7 @@
<div class="col-md-8">
<div class="input-group date col-md-5" data-provide="datepicker" data-date-format="yyyy-mm-dd" data-date-start-date="0d" data-date-clear-btn="true">
<input type="text" class="form-control" placeholder="{{ trans('general.select_date') }}" name="expected_checkin" id="expected_checkin" value="{{ old('expected_checkin') }}">
<span class="input-group-addon"><i class="fas fa-calendar" aria-hidden="true"></i></span>
<span class="input-group-addon"><x-icon type="calendar" /></span>
</div>
{!! $errors->first('expected_checkin', '<span class="alert-msg" aria-hidden="true"><i class="fas fa-times" aria-hidden="true"></i> :message</span>') !!}
</div>
@ -86,7 +86,7 @@
</div> <!--./box-body-->
<div class="box-footer">
<a class="btn btn-link" href="{{ URL::previous() }}"> {{ trans('button.cancel') }}</a>
<button type="submit" class="btn btn-primary pull-right"><i class="fas fa-check icon-white" aria-hidden="true"></i> {{ trans('general.checkout') }}</button>
<button type="submit" class="btn btn-primary pull-right"><x-icon type="checkmark" /> {{ trans('general.checkout') }}</button>
</div>
</div>
</form>

View file

@ -59,7 +59,7 @@
<div class="box-footer text-right">
<a class="btn btn-link" href="{{ URL::previous() }}" method="post" enctype="multipart/form-data">{{ trans('button.cancel') }}</a>
<button type="submit" class="btn btn-success" id="submit-button"><i class="fas fa-check icon-white" aria-hidden="true"></i> {{ trans('button.delete') }}</button>
<button type="submit" class="btn btn-success" id="submit-button"><x-icon type="checkmark" /> {{ trans('button.delete') }}</button>
</div><!-- /.box-footer -->
</div><!-- /.box -->
</form>

View file

@ -53,7 +53,7 @@
<div class="box-footer text-right">
<a class="btn btn-link" href="{{ URL::previous() }}" method="post" enctype="multipart/form-data">{{ trans('button.cancel') }}</a>
<button type="submit" class="btn btn-success" id="submit-button"><i class="fas fa-check icon-white" aria-hidden="true"></i> {{ trans('button.restore') }}</button>
<button type="submit" class="btn btn-success" id="submit-button"><x-icon type="checkmark" /> {{ trans('button.restore') }}</button>
</div><!-- /.box-footer -->
</div><!-- /.box -->
</form>

View file

@ -60,7 +60,7 @@
<div class="col-md-4">
<div class="input-group date" data-provide="datepicker" data-date-format="yyyy-mm-dd" data-autoclose="true">
<input type="text" class="form-control" placeholder="{{ trans('general.select_date') }}" name="purchase_date" id="purchase_date" value="{{ old('purchase_date') }}">
<span class="input-group-addon"><i class="fas fa-calendar" aria-hidden="true"></i></span>
<span class="input-group-addon"><x-icon type="calendar" /></span>
</div>
{!! $errors->first('purchase_date', '<span class="alert-msg"><i class="fas fa-times"></i> :message</span>') !!}
</div>
@ -78,7 +78,7 @@
<div class="col-md-4">
<div class="input-group date" data-provide="datepicker" data-date-format="yyyy-mm-dd" data-autoclose="true">
<input type="text" class="form-control" placeholder="{{ trans('general.select_date') }}" name="expected_checkin" id="expected_checkin" value="{{ old('expected_checkin') }}">
<span class="input-group-addon"><i class="fas fa-calendar" aria-hidden="true"></i></span>
<span class="input-group-addon"><x-icon type="calendar" /></span>
</div>
{!! $errors->first('expected_checkin', '<span class="alert-msg" aria-hidden="true"><i class="fas fa-times" aria-hidden="true"></i> :message</span>') !!}
@ -178,7 +178,7 @@
<div class="col-md-4">
<div class="input-group date" data-provide="datepicker" data-date-format="yyyy-mm-dd" data-autoclose="true">
<input type="text" class="form-control" placeholder="{{ trans('general.select_date') }}" name="next_audit_date" id="next_audit_date" value="{{ old('next_audit_date') }}">
<span class="input-group-addon"><i class="fas fa-calendar" aria-hidden="true"></i></span>
<span class="input-group-addon"><x-icon type="calendar" /></span>
</div>
{!! $errors->first('next_audit_date', '<span class="alert-msg" aria-hidden="true">
@ -226,7 +226,7 @@
</div> <!--/.box-body-->
<div class="text-right box-footer">
<button type="submit" class="btn btn-success"><i class="fas fa-check icon-white" aria-hidden="true"></i> {{ trans('general.save') }}</button>
<button type="submit" class="btn btn-success"><x-icon type="checkmark" /> {{ trans('general.save') }}</button>
</div>
</div> <!--/.box.box-default-->
</form>

View file

@ -53,7 +53,7 @@
{{ $asset->model->name }}
@else
<span class="text-danger text-bold">
<i class="fas fa-exclamation-triangle" aria-hidden="true"></i>
<x-icon type="warning" />
{{ trans('admin/hardware/general.model_invalid')}}
</span>
{{ trans('admin/hardware/general.model_invalid_fix')}}

View file

@ -50,7 +50,7 @@
{{ $asset->model->name }}
@else
<span class="text-danger text-bold">
<i class="fas fa-exclamation-triangle" aria-hidden="true"></i>
<x-icon type="warning" />
{{ trans('admin/hardware/general.model_invalid')}}
</span>
@ -109,8 +109,8 @@
<input type="text" class="form-control"
placeholder="{{ trans('general.select_date') }}" name="checkout_at"
id="checkout_at" value="{{ old('checkout_at', date('Y-m-d')) }}">
<span class="input-group-addon"><i class="fas fa-calendar"
aria-hidden="true"></i></span>
<span class="input-group-addon">
<x-icon type="calendar" /></span>
</div>
{!! $errors->first('checkout_at', '<span class="alert-msg" aria-hidden="true"><i class="fas fa-times" aria-hidden="true"></i> :message</span>') !!}
</div>
@ -128,8 +128,9 @@
<input type="text" class="form-control"
placeholder="{{ trans('general.select_date') }}" name="expected_checkin"
id="expected_checkin" value="{{ old('expected_checkin') }}">
<span class="input-group-addon"><i class="fas fa-calendar"
aria-hidden="true"></i></span>
<span class="input-group-addon">
<x-icon type="calendar" />
</span>
</div>
{!! $errors->first('expected_checkin', '<span class="alert-msg" aria-hidden="true"><i class="fas fa-times" aria-hidden="true"></i> :message</span>') !!}
</div>
@ -153,13 +154,13 @@
<div class="callout callout-info">
@if ($asset->requireAcceptance())
<i class="far fa-envelope" aria-hidden="true"></i>
<x-icon type="email" />
{{ trans('admin/categories/general.required_acceptance') }}
<br>
@endif
@if ($asset->getEula())
<i class="far fa-envelope" aria-hidden="true"></i>
<x-icon type="email" />
{{ trans('admin/categories/general.required_eula') }}
<br>
@endif

View file

@ -44,7 +44,7 @@
</div>
<div class="col-md-2 col-sm-12">
<button class="add_field_button btn btn-default btn-sm">
<i class="fas fa-plus"></i>
<x-icon type="plus" />
</button>
</div>
@endif
@ -103,7 +103,7 @@
<div class="col-md-9 col-sm-9 col-md-offset-3">
<a id="optional_info" class="text-primary">
<i class="fa fa-caret-right fa-2x" id="optional_info_icon"></i>
<x-icon type="caret-right" class="fa-2x" id="optional_info_icon" />
<strong>{{ trans('admin/hardware/form.optional_infos') }}</strong>
</a>
@ -124,7 +124,7 @@
<div class="input-group col-md-4">
<div class="input-group date" data-provide="datepicker" data-date-clear-btn="true" data-date-format="yyyy-mm-dd" data-autoclose="true">
<input type="text" class="form-control" placeholder="{{ trans('general.select_date') }}" name="next_audit_date" id="next_audit_date" value="{{ old('next_audit_date', $item->next_audit_date) }}" readonly style="background-color:inherit" maxlength="10">
<span class="input-group-addon"><i class="fas fa-calendar" aria-hidden="true"></i></span>
<span class="input-group-addon"><x-icon type="calendar" /></span>
</div>
</div>
<div class="col-md-8 col-md-offset-3">
@ -153,7 +153,7 @@
<div class="form-group">
<div class="col-md-9 col-sm-9 col-md-offset-3">
<a id="order_info" class="text-primary">
<i class="fa fa-caret-right fa-2x" id="order_info_icon"></i>
<x-icon type="caret-right" class="fa-2x" id="order_info_icon" />
<strong>{{ trans('admin/hardware/form.order_details') }}</strong>
</a>
@ -255,17 +255,15 @@
$("#assigned_user").show();
$("#selected_status_status").removeClass('text-danger');
$("#selected_status_status").removeClass('text-warning');
$("#selected_status_status").addClass('text-success');
$("#selected_status_status").html('<i class="fas fa-check"></i> {{ trans('admin/hardware/form.asset_deployable')}}');
$("#selected_status_status").html('<x-icon type="checkmark" /> {{ trans('admin/hardware/form.asset_deployable')}}');
} else {
$("#assignto_selector").hide();
$("#selected_status_status").removeClass('text-danger');
$("#selected_status_status").removeClass('text-success');
$("#selected_status_status").addClass('text-warning');
$("#selected_status_status").html('<i class="fas fa-exclamation-triangle"></i> {{ trans('admin/hardware/form.asset_not_deployable')}} ');
$("#selected_status_status").addClass('text-danger');
$("#selected_status_status").html('<x-icon type="warning" /> {{ trans('admin/hardware/form.asset_not_deployable')}} ');
}
}
});
@ -324,7 +322,7 @@
box_html += '<input type="text" class="form-control" name="asset_tags[' + x + ']" value="{{ (($snipeSettings->auto_increment_prefix!='') && ($snipeSettings->auto_increment_assets=='1')) ? $snipeSettings->auto_increment_prefix : '' }}'+ auto_tag +'" required>';
box_html += '</div>';
box_html += '<div class="col-md-2 col-sm-12">';
box_html += '<a href="#" class="remove_field btn btn-default btn-sm"><i class="fas fa-minus"></i></a>';
box_html += '<a href="#" class="remove_field btn btn-default btn-sm"><x-icon type="minus" /></a>';
box_html += '</div>';
box_html += '</div>';
box_html += '</div>';

View file

@ -69,7 +69,7 @@
</div> <!--/.box-body-->
<div class="box-footer">
<a class="btn btn-link" href="{{ route('hardware.index') }}"> {{ trans('button.cancel') }}</a>
<button type="submit" id="checkin_button" class="btn btn-success pull-right"><i class="fas fa-check icon-white" aria-hidden="true"></i> {{ trans('general.checkin') }}</button>
<button type="submit" id="checkin_button" class="btn btn-success pull-right"><x-icon type="checkmark" /> {{ trans('general.checkin') }}</button>
</div>
@ -99,7 +99,7 @@
</tr>
<tr id="checkin-loader" style="display: none;">
<td colspan="3">
<i class="fas fa-spinner spin" aria-hidden="true"></i> {{ trans('general.processing') }}...
<x-icon type="spinner" /> {{ trans('general.processing') }}...
</td>
</tr>
</thead>

View file

@ -51,12 +51,9 @@
<label class="form-control">
<input type="checkbox" value="1" name="update_location" {{ old('update_location') == '1' ? ' checked="checked"' : '' }}>
<span>{{ trans('admin/hardware/form.asset_location') }}
<a href="#" class="text-dark-gray" tabindex="0" role="button" data-toggle="popover" data-trigger="focus" title="<i class='far fa-life-ring'></i> {{ trans('general.more_info') }}" data-html="true" data-content="{{ trans('general.quickscan_bulk_help') }}"><i class="far fa-life-ring"></i></a></span>
<a href="#" class="text-dark-gray" tabindex="0" role="button" data-toggle="popover" data-trigger="focus" title="<i class='far fa-life-ring'></i> {{ trans('general.more_info') }}" data-html="true" data-content="{{ trans('general.quickscan_bulk_help') }}">
<x-icon type="more-info" /></a></span>
</label>
</div>
</div>
@ -67,7 +64,7 @@
<div class="col-md-9">
<div class="input-group date col-md-5" data-provide="datepicker" data-date-format="yyyy-mm-dd" data-date-clear-btn="true">
<input type="text" class="form-control" placeholder="{{ trans('general.next_audit_date') }}" name="next_audit_date" id="next_audit_date" value="{{ old('next_audit_date', $next_audit_date) }}">
<span class="input-group-addon"><i class="fas fa-calendar" aria-hidden="true"></i></span>
<span class="input-group-addon"><x-icon type="calendar" /></span>
</div>
{!! $errors->first('next_audit_date', '<span class="alert-msg" aria-hidden="true"><i class="fas fa-times" aria-hidden="true"></i> :message</span>') !!}
</div>
@ -83,16 +80,14 @@
</div>
</div>
</div> <!--/.box-body-->
<div class="box-footer">
<a class="btn btn-link" href="{{ route('hardware.index') }}"> {{ trans('button.cancel') }}</a>
<button type="submit" id="audit_button" class="btn btn-success pull-right"><i class="fas fa-check icon-white" aria-hidden="true"></i> {{ trans('general.audit') }}</button>
<button type="submit" id="audit_button" class="btn btn-success pull-right">
<x-icon type="checkmark" />
{{ trans('general.audit') }}
</button>
</div>
</div>
@ -116,7 +111,8 @@
</tr>
<tr id="audit-loader" style="display: none;">
<td colspan="3">
<i class="fas fa-spinner spin" aria-hidden="true"></i> {{ trans('admin/hardware/form.processing_spinner') }}
<x-icon type="spinner" />
{{ trans('admin/hardware/form.processing_spinner') }}
</td>
</tr>
</thead>

View file

@ -44,7 +44,7 @@
<li class="active">
<a href="#details" data-toggle="tab">
<span class="hidden-lg hidden-md">
<i class="fas fa-info-circle fa-2x"></i>
<x-icon type="info-circle" class="fa-2x" />
</span>
<span class="hidden-xs hidden-sm">{{ trans('admin/users/general.info') }}</span>
</a>
@ -53,7 +53,7 @@
<li>
<a href="#software" data-toggle="tab">
<span class="hidden-lg hidden-md">
<i class="far fa-save fa-2x" aria-hidden="true"></i>
<x-icon type="licenses" class="fa-2x" />
</span>
<span class="hidden-xs hidden-sm">{{ trans('general.licenses') }}
{!! ($asset->licenses->count() > 0 ) ? '<span class="badge badge-secondary">'.number_format($asset->licenses->count()).'</span>' : '' !!}
@ -64,7 +64,7 @@
<li>
<a href="#components" data-toggle="tab">
<span class="hidden-lg hidden-md">
<i class="far fa-hdd fa-2x" aria-hidden="true"></i>
<x-icon type="components" class="fa-2x" />
</span>
<span class="hidden-xs hidden-sm">{{ trans('general.components') }}
{!! ($asset->components->count() > 0 ) ? '<span class="badge badge-secondary">'.number_format($asset->components->count()).'</span>' : '' !!}
@ -75,7 +75,7 @@
<li>
<a href="#assets" data-toggle="tab">
<span class="hidden-lg hidden-md">
<i class="fas fa-barcode fa-2x" aria-hidden="true"></i>
<x-icon type="assets" class="fa-2x" />
</span>
<span class="hidden-xs hidden-sm">{{ trans('general.assets') }}
{!! ($asset->assignedAssets()->count() > 0 ) ? '<span class="badge badge-secondary">'.number_format($asset->assignedAssets()->count()).'</span>' : '' !!}
@ -88,7 +88,7 @@
<li>
<a href="#history" data-toggle="tab">
<span class="hidden-lg hidden-md">
<i class="fas fa-history fa-2x" aria-hidden="true"></i>
<x-icon type="history" class="fa-2x "/>
</span>
<span class="hidden-xs hidden-sm">{{ trans('general.history') }}
</span>
@ -98,7 +98,7 @@
<li>
<a href="#maintenances" data-toggle="tab">
<span class="hidden-lg hidden-md">
<i class="fas fa-wrench fa-2x" aria-hidden="true"></i>
<x-icon type="maintenances" class="fa-2x" />
</span>
<span class="hidden-xs hidden-sm">{{ trans('general.maintenances') }}
{!! ($asset->assetmaintenances()->count() > 0 ) ? '<span class="badge badge-secondary">'.number_format($asset->assetmaintenances()->count()).'</span>' : '' !!}
@ -109,7 +109,7 @@
<li>
<a href="#files" data-toggle="tab">
<span class="hidden-lg hidden-md">
<i class="far fa-file fa-2x" aria-hidden="true"></i>
<x-icon type="files" class="fa-2x" />
</span>
<span class="hidden-xs hidden-sm">{{ trans('general.files') }}
{!! ($asset->uploads->count() > 0 ) ? '<span class="badge badge-secondary">'.number_format($asset->uploads->count()).'</span>' : '' !!}
@ -121,7 +121,7 @@
<li>
<a href="#modelfiles" data-toggle="tab">
<span class="hidden-lg hidden-md">
<i class="fa-solid fa-laptop-file fa-2x" aria-hidden="true"></i>
<x-icon type="more-files" class="fa-2x" />
</span>
<span class="hidden-xs hidden-sm">
{{ trans('general.additional_files') }}
@ -133,10 +133,15 @@
@can('update', \App\Models\Asset::class)
<li class="pull-right hidden-print">
<li class="pull-right">
<a href="#" data-toggle="modal" data-target="#uploadFileModal">
<i class="fas fa-paperclip" aria-hidden="true"></i>
{{ trans('button.upload') }}
<span class="hidden-lg hidden-xl hidden-md">
<x-icon type="paperclip" class="fa-2x" />
</span>
<span class="hidden-xs hidden-sm">
<x-icon type="paperclip" />
{{ trans('button.upload') }}
</span>
</a>
</li>
@endcan
@ -150,7 +155,7 @@
@if ($asset->deleted_at!='')
<div class="col-md-12">
<div class="callout callout-warning">
<i class="icon fas fa-exclamation-triangle"></i>
<x-icon type="warning" />
{{ trans('admin/users/message.user_deleted_warning') }}
</div>
</div>
@ -172,24 +177,36 @@
</div>
@if ($asset->deleted_at=='')
@can('update', $asset)
<div class="col-md-12 hidden-print" style="padding-top: 5px;">
<a href="{{ route('hardware.edit', $asset->id) }}" class="btn btn-sm btn-warning btn-social btn-block hidden-print">
<x-icon type="edit" />
{{ trans('admin/hardware/general.edit') }}
</a>
</div>
@endcan
@if (($asset->assetstatus) && ($asset->assetstatus->deployable=='1'))
@if (($asset->assigned_to != '') && ($asset->deleted_at==''))
@can('checkin', \App\Models\Asset::class)
<div class="col-md-12 hidden-print">
<div class="col-md-12 hidden-print" style="padding-top: 5px;">
<span class="tooltip-wrapper"{!! (!$asset->model ? ' data-tooltip="true" title="'.trans('admin/hardware/general.model_invalid_fix').'"' : '') !!}>
<a role="button" href="{{ route('hardware.checkin.create', $asset->id) }}" class="btn btn-sm btn-primary btn-block hidden-print{{ (!$asset->model ? ' disabled' : '') }}">
{{ trans('admin/hardware/general.checkin') }}
</a>
<a role="button" href="{{ route('hardware.checkin.create', $asset->id) }}" class="btn btn-sm btn-primary bg-purple btn-social btn-block hidden-print{{ (!$asset->model ? ' disabled' : '') }}">
<x-icon type="checkin" />
{{ trans('admin/hardware/general.checkin') }}
</a>
</span>
</div>
@endcan
@elseif (($asset->assigned_to == '') && ($asset->deleted_at==''))
@can('checkout', \App\Models\Asset::class)
@can('checkout', Asset::class)
<div class="col-md-12 hidden-print" style="padding-top: 5px;">
<span class="tooltip-wrapper"{!! (!$asset->model ? ' data-tooltip="true" title="'.trans('admin/hardware/general.model_invalid_fix').'"' : '') !!}>
<a href="{{ route('hardware.checkout.create', $asset->id) }}" class="btn btn-sm btn-primary btn-block hidden-print{{ (!$asset->model ? ' disabled' : '') }}">
{{ trans('admin/hardware/general.checkout') }}
<a href="{{ route('hardware.checkout.create', $asset->id) }}" class="btn btn-sm bg-maroon btn-social btn-block hidden-print{{ (!$asset->model ? ' disabled' : '') }}">
<x-icon type="checkout" />
{{ trans('admin/hardware/general.checkout') }}
</a>
</span>
</div>
@ -197,19 +214,13 @@
@endif
@endif
@if ($asset->deleted_at=='')
@can('update', $asset)
<div class="col-md-12 hidden-print" style="padding-top: 5px;">
<a href="{{ route('hardware.edit', $asset->id) }}" class="btn btn-sm btn-primary btn-block hidden-print">
{{ trans('admin/hardware/general.edit') }}
</a>
</div>
@endcan
@can('audit', \App\Models\Asset::class)
<div class="col-md-12 hidden-print" style="padding-top: 5px;">
<span class="tooltip-wrapper"{!! (!$asset->model ? ' data-tooltip="true" title="'.trans('admin/hardware/general.model_invalid_fix').'"' : '') !!}>
<a href="{{ route('asset.audit.create', $asset->id) }}" class="btn btn-sm btn-primary btn-block hidden-print{{ (!$asset->model ? ' disabled' : '') }}">
<a href="{{ route('asset.audit.create', $asset->id) }}" class="btn btn-sm btn-primary btn-block btn-social hidden-print{{ (!$asset->model ? ' disabled' : '') }}">
<x-icon type="audit" />
{{ trans('general.audit') }}
</a>
</span>
@ -219,7 +230,8 @@
@can('create', $asset)
<div class="col-md-12 hidden-print" style="padding-top: 5px;">
<a href="{{ route('clone/hardware', $asset->id) }}" class="btn btn-sm btn-primary btn-block hidden-print">
<a href="{{ route('clone/hardware', $asset->id) }}" class="btn btn-sm btn-info btn-block btn-social hidden-print">
<x-icon type="clone" />
{{ trans('admin/hardware/general.clone') }}
</a>
</div>
@ -228,13 +240,19 @@
@can('delete', $asset)
<div class="col-md-12 hidden-print" style="padding-top: 30px; padding-bottom: 30px;">
@if ($asset->deleted_at=='')
<button class="btn btn-sm btn-block btn-danger delete-asset" data-toggle="modal" data-title="{{ trans('general.delete') }}" data-content="{{ trans('general.sure_to_delete_var', ['item' => $asset->asset_tag]) }}" data-target="#dataConfirmModal">{{ trans('general.delete') }}
<button class="btn btn-sm btn-block btn-danger btn-social delete-asset" data-toggle="modal" data-title="{{ trans('general.delete') }}" data-content="{{ trans('general.sure_to_delete_var', ['item' => $asset->asset_tag]) }}" data-target="#dataConfirmModal">
<x-icon type="delete" />
{{ trans('general.delete') }}
</button>
<span class="sr-only">{{ trans('general.delete') }}</span>
@else
<form method="POST" action="{{ route('restore/hardware', ['assetId' => $asset->id]) }}">
@csrf
<button class="btn btn-sm btn-warning btn-block">{{ trans('general.restore') }}</button>
<button class="btn btn-sm btn-block btn-warning btn-social delete-asset">
<x-icon type="restore" />
{{ trans('general.restore') }}
</button>
</form>
@endif
</div>
@ -256,14 +274,14 @@
<ul class="list-unstyled" style="line-height: 25px;">
@if ((isset($asset->assignedTo->email)) && ($asset->assignedTo->email!=''))
<li>
<i class="far fa-envelope" aria-hidden="true"></i>
<x-icon type="email" />
<a href="mailto:{{ $asset->assignedTo->email }}">{{ $asset->assignedTo->email }}</a>
</li>
@endif
@if ((isset($asset->assignedTo)) && ($asset->assignedTo->phone!=''))
<li>
<i class="fas fa-phone" aria-hidden="true"></i>
<x-icon type="phone" />
<a href="tel:{{ $asset->assignedTo->phone }}">{{ $asset->assignedTo->phone }}</a>
</li>
@endif
@ -273,7 +291,9 @@
@endif
@if (isset($asset->location))
<li><i class="fas fa-map-marker-alt" aria-hidden="true"></i> {{ $asset->location->name }}</li>
<li>
<x-icon type="locations" />
{{ $asset->location->name }}</li>
<li>{{ $asset->location->address }}
@if ($asset->location->address2!='')
{{ $asset->location->address2 }}
@ -288,11 +308,13 @@
</li>
@endif
<li>
<i class="fas fa-calendar hidden-print"></i> {{ trans('admin/hardware/form.checkout_date') }}: {{ Helper::getFormattedDateObject($asset->last_checkout, 'date', false) }}
<x-icon type="calendar" />
{{ trans('admin/hardware/form.checkout_date') }}: {{ Helper::getFormattedDateObject($asset->last_checkout, 'date', false) }}
</li>
@if (isset($asset->expected_checkin))
<li>
<i class="fas fa-calendar"></i> {{ trans('admin/hardware/form.expected_checkin') }}: {{ Helper::getFormattedDateObject($asset->expected_checkin, 'date', false) }}
<x-icon type="calendar" />
{{ trans('admin/hardware/form.expected_checkin') }}: {{ Helper::getFormattedDateObject($asset->expected_checkin, 'date', false) }}
</li>
@endif
</ul>
@ -354,20 +376,22 @@
</div>
<div class="col-md-9">
@if (($asset->assignedTo) && ($asset->deleted_at==''))
<i class="fas fa-circle text-blue"></i>
<x-icon type="circle-solid" class="text-blue" />
{{ $asset->assetstatus->name }}
<label class="label label-default">{{ trans('general.deployed') }}</label>
<label class="label label-default">
{{ trans('general.deployed') }}
</label>
<i class="fas fa-long-arrow-alt-right" aria-hidden="true"></i>
<x-icon type="long-arrow-right" class="text-orange" />
{!! $asset->assignedTo->present()->glyph() !!}
{!! $asset->assignedTo->present()->nameUrl() !!}
@else
@if (($asset->assetstatus) && ($asset->assetstatus->deployable=='1'))
<i class="fas fa-circle text-green"></i>
<x-icon type="circle-solid" class="text-green" />
@elseif (($asset->assetstatus) && ($asset->assetstatus->pending=='1'))
<i class="fas fa-circle text-orange"></i>
<x-icon type="circle-solid" class="text-orange" />
@else
<i class="fas fa-times text-red"></i>
<x-icon type="x" class="text-red" />
@endif
<a href="{{ route('statuslabels.show', $asset->assetstatus->id) }}">
{{ $asset->assetstatus->name }}</a>
@ -484,38 +508,39 @@
@if (($asset->model) && ($asset->model->manufacturer) && ($asset->model->manufacturer->url!=''))
<li>
<i class="fas fa-globe-americas" aria-hidden="true"></i>
<x-icon type="globe-us" />
<a href="{{ $asset->present()->dynamicUrl($asset->model->manufacturer->url) }}" target="_blank">
{{ $asset->present()->dynamicUrl($asset->model->manufacturer->url) }}
<i class="fa fa-external-link" aria-hidden="true"></i>
<x-icon type="external-link" />
</a>
</li>
@endif
@if (($asset->model) && ($asset->model->manufacturer) && ($asset->model->manufacturer->support_url!=''))
<li>
<i class="far fa-life-ring" aria-hidden="true"></i>
<x-icon type="more-info" />
<a href="{{ $asset->present()->dynamicUrl($asset->model->manufacturer->support_url) }}" target="_blank">
{{ $asset->present()->dynamicUrl($asset->model->manufacturer->support_url) }}
<i class="fa fa-external-link" aria-hidden="true"></i>
<x-icon type="external-link" />
</a>
</li>
@endif
@if (($asset->model) && ($asset->model->manufacturer) && ($asset->model->manufacturer->warranty_lookup_url!=''))
<li>
<i class="far fa-wrench" aria-hidden="true"></i>
<x-icon type="maintenances" />
<a href="{{ $asset->present()->dynamicUrl($asset->model->manufacturer->warranty_lookup_url) }}" target="_blank">
{{ $asset->present()->dynamicUrl($asset->model->manufacturer->warranty_lookup_url) }}
<i class="fa fa-external-link" aria-hidden="true"><span class="sr-only">{{ trans('admin/hardware/general.mfg_warranty_lookup', ['manufacturer' => $asset->model->manufacturer->name]) }}</span></i>
<x-icon type="external-link" />
<span class="sr-only">{{ trans('admin/hardware/general.mfg_warranty_lookup', ['manufacturer' => $asset->model->manufacturer->name]) }}</span></i>
</a>
</li>
@endif
@if (($asset->model) && ($asset->model->manufacturer->support_phone))
<li>
<i class="fas fa-phone" aria-hidden="true"></i>
<x-icon type="phone" />
<a href="tel:{{ $asset->model->manufacturer->support_phone }}">
{{ $asset->model->manufacturer->support_phone }}
</a>
@ -524,7 +549,7 @@
@if (($asset->model) && ($asset->model->manufacturer->support_email))
<li>
<i class="far fa-envelope" aria-hidden="true"></i>
<x-icon type="email" />
<a href="mailto:{{ $asset->model->manufacturer->support_email }}">
{{ $asset->model->manufacturer->support_email }}
</a>
@ -612,6 +637,7 @@
</div>
<div class="col-md-9{{ (($field->format=='URL') && ($asset->{$field->db_column_name()}!='')) ? ' ellipsis': '' }}">
@if (($field->field_encrypted=='1') && ($asset->{$field->db_column_name()}!=''))
<i class="fas fa-lock" data-tooltip="true" data-placement="top" title="{{ trans('admin/custom_fields/general.value_encrypted') }}" onclick="showHideEncValue(this)" id="text-{{ $field->id }}"></i>
@endif
@ -783,7 +809,8 @@
@if (($asset->model) && ($asset->model->manufacturer) && ($asset->model->manufacturer->warranty_lookup_url!=''))
<a href="{{ $asset->present()->dynamicUrl($asset->model->manufacturer->warranty_lookup_url) }}" target="_blank">
<i class="fa fa-external-link" aria-hidden="true"><span class="sr-only">{{ trans('admin/hardware/general.mfg_warranty_lookup', ['manufacturer' => $asset->model->manufacturer->name]) }}</span></i>
<x-icon type="external-link" />
<span class="sr-only">{{ trans('admin/hardware/general.mfg_warranty_lookup', ['manufacturer' => $asset->model->manufacturer->name]) }}</span></i>
</a>
@endif
</div>
@ -876,14 +903,13 @@
@else
{{ trans('general.na_no_purchase_date') }}
@endif
@if ($asset->eol_explicit)
<i class="fas fa-exclamation-triangle text-orange"
aria-hidden="true"
data-tooltip="true"
data-placement="top"
data-title="Explicit EOL"
title="Explicit EOL">
</i>
@if ($asset->eol_explicit =='1')
<span data-tooltip="true"
data-placement="top"
data-title="Explicit EOL"
title="Explicit EOL">
<x-icon type="warning" class="text-orange" />
</span>
@endif
</div>
</div>
@ -1041,7 +1067,9 @@
'id' => 'bulkForm']) }}
<input type="hidden" name="bulk_actions" value="labels" />
<input type="hidden" name="ids[{{$asset->id}}]" value="{{ $asset->id }}" />
<button class="btn btn-sm btn-default" id="bulkEdit"{{ (!$asset->model ? ' disabled' : '') }}{!! (!$asset->model ? ' data-tooltip="true" title="'.trans('admin/hardware/general.model_invalid').'"' : '') !!}><i class="fas fa-barcode" aria-hidden="true"></i> {{ trans_choice('button.generate_labels', 1) }}</button>
<button class="btn btn-sm btn-default" id="bulkEdit"{{ (!$asset->model ? ' disabled' : '') }}{!! (!$asset->model ? ' data-tooltip="true" title="'.trans('admin/hardware/general.model_invalid').'"' : '') !!}>
<x-icon type="assets" />
{{ trans_choice('button.generate_labels', 1) }}</button>
{{ Form::close() }}
@ -1093,7 +1121,7 @@
@else
<div class="alert alert-info alert-block">
<i class="fas fa-info-circle"></i>
<x-icon type="info-circle" />
{{ trans('general.no_results') }}
</div>
@endif
@ -1148,7 +1176,7 @@
</table>
@else
<div class="alert alert-info alert-block">
<i class="fas fa-info-circle"></i>
<x-icon type="info-circle" />
{{ trans('general.no_results') }}
</div>
@endif
@ -1212,7 +1240,7 @@
@else
<div class="alert alert-info alert-block">
<i class="fas fa-info-circle"></i>
<x-icon type="info-circle" />
{{ trans('general.no_results') }}
</div>
@endif
@ -1372,11 +1400,11 @@
<td>
@if (($file->filename) && (Storage::exists('private_uploads/assets/'.$file->filename)))
<a href="{{ route('show/assetfile', [$asset->id, $file->id, 'download'=>'true']) }}" class="btn btn-sm btn-default">
<i class="fas fa-download" aria-hidden="true"></i>
<x-icon type="download" />
</a>
<a href="{{ route('show/assetfile', [$asset->id, $file->id, 'inline'=>'true']) }}" class="btn btn-sm btn-default" target="_blank">
<i class="fa fa-external-link" aria-hidden="true"></i>
<x-icon type="external-link" />
</a>
@endif
</td>
@ -1387,7 +1415,9 @@
</td>
<td>
@can('update', \App\Models\Asset::class)
<a class="btn delete-asset btn-sm btn-danger btn-sm" href="{{ route('delete/assetfile', [$asset->id, $file->id]) }}" data-tooltip="true" data-title="Delete" data-content="{{ trans('general.delete_confirm', ['item' => $file->filename]) }}"><i class="fas fa-trash icon-white" aria-hidden="true"></i></a>
<a class="btn delete-asset btn-sm btn-danger btn-sm" href="{{ route('delete/assetfile', [$asset->id, $file->id]) }}" data-tooltip="true" data-title="Delete" data-content="{{ trans('general.delete_confirm', ['item' => $file->filename]) }}">
<x-icon type="delete" />
</a>
@endcan
</td>
</tr>
@ -1398,7 +1428,7 @@
@else
<div class="alert alert-info alert-block">
<i class="fas fa-info-circle"></i>
<x-icon type="info-circle" />
{{ trans('general.no_results') }}
</div>
@endif
@ -1474,11 +1504,11 @@
<td>
@if (($file->filename) && (Storage::exists('private_uploads/assetmodels/'.$file->filename)))
<a href="{{ route('show/modelfile', [$asset->model->id, $file->id]) }}" class="btn btn-sm btn-default">
<i class="fas fa-download" aria-hidden="true"></i>
<x-icon type="download" />
</a>
<a href="{{ route('show/modelfile', [$asset->model->id, $file->id, 'inline'=>'true']) }}" class="btn btn-sm btn-default" target="_blank">
<i class="fa fa-external-link" aria-hidden="true"></i>
<x-icon type="external-link" />
</a>
@endif
@ -1490,7 +1520,9 @@
</td>
<td>
@can('update', \App\Models\AssetModel::class)
<a class="btn delete-asset btn-sm btn-danger btn-sm" href="{{ route('delete/modelfile', [$asset->model->id, $file->id]) }}" data-tooltip="true" data-title="Delete" data-content="{{ trans('general.delete_confirm', ['item' => $file->filename]) }}"><i class="fas fa-trash icon-white" aria-hidden="true"></i></a>
<a class="btn delete-asset btn-sm btn-danger btn-sm" href="{{ route('delete/modelfile', [$asset->model->id, $file->id]) }}" data-tooltip="true" data-title="Delete" data-content="{{ trans('general.delete_confirm', ['item' => $file->filename]) }}">
<x-icon type="delete" /></i>
</a>
@endcan
</td>
</tr>
@ -1501,7 +1533,7 @@
@else
<div class="alert alert-info alert-block">
<i class="fas fa-info-circle"></i>
<x-icon type="info-circle" />
{{ trans('general.no_results') }}
</div>
@endif

View file

@ -33,7 +33,7 @@
<div class="col-md-8">
<div class="input-group date col-md-5" data-provide="datepicker" data-date-format="yyyy-mm-dd" data-date-end-date="0d" data-date-clear-btn="true">
<input type="text" class="form-control" placeholder="{{ trans('general.select_date') }}" name="checkout_at" id="checkout_at" value="{{ old('checkout_at') }}">
<span class="input-group-addon"><i class="fas fa-calendar"></i></span>
<span class="input-group-addon"><x-icon type="calendar" /></span>
</div>
{!! $errors->first('checkout_at', '<span class="alert-msg"><i class="fas fa-times"></i> :message</span>') !!}
</div>
@ -47,7 +47,7 @@
<div class="col-md-8">
<div class="input-group date col-md-5" data-provide="datepicker" data-date-format="yyyy-mm-dd" data-date-start-date="0d">
<input type="text" class="form-control" placeholder="{{ trans('general.select_date') }}" name="expected_checkin" id="expected_checkin" value="{{ old('expected_checkin') }}">
<span class="input-group-addon"><i class="fas fa-calendar"></i></span>
<span class="input-group-addon"><x-icon type="calendar" /></span>
</div>
{!! $errors->first('expected_checkin', '<span class="alert-msg"><i class="fas fa-times"></i> :message</span>') !!}
</div>
@ -68,7 +68,7 @@
</div> <!--./box-body-->
<div class="box-footer">
<a class="btn btn-link" href="{{ route('kits.index') }}"> {{ trans('button.cancel') }}</a>
<button type="submit" class="btn btn-success pull-right"><i class="fas fa-check icon-white"></i> {{ trans('general.checkout') }}</button>
<button type="submit" class="btn btn-success pull-right"><x-icon type="checkmark" /> {{ trans('general.checkout') }}</button>
</div>
</div>
</form>

View file

@ -145,7 +145,7 @@ dir="{{ Helper::determineLanguageDirection() }}">
@can('index', \App\Models\Asset::class)
<li aria-hidden="true"{!! (Request::is('hardware*') ? ' class="active"' : '') !!}>
<a href="{{ url('hardware') }}" {{$snipeSettings->shortcuts_enabled == 1 ? "accesskey=1" : ''}} tabindex="-1" data-tooltip="true" data-placement="bottom" data-title="{{ trans('general.assets') }}">
<i class="fas fa-barcode fa-fw"></i>
<x-icon type="assets" class="fa-fw" />
<span class="sr-only">{{ trans('general.assets') }}</span>
</a>
</li>
@ -153,7 +153,7 @@ dir="{{ Helper::determineLanguageDirection() }}">
@can('view', \App\Models\License::class)
<li aria-hidden="true"{!! (Request::is('licenses*') ? ' class="active"' : '') !!}>
<a href="{{ route('licenses.index') }}" {{$snipeSettings->shortcuts_enabled == 1 ? "accesskey=2" : ''}} tabindex="-1" data-tooltip="true" data-placement="bottom" data-title="{{ trans('general.licenses') }}">
<i class="far fa-save fa-fw"></i>
<x-icon type="licenses" class="fa-fw" />
<span class="sr-only">{{ trans('general.licenses') }}</span>
</a>
</li>
@ -161,7 +161,7 @@ dir="{{ Helper::determineLanguageDirection() }}">
@can('index', \App\Models\Accessory::class)
<li aria-hidden="true"{!! (Request::is('accessories*') ? ' class="active"' : '') !!}>
<a href="{{ route('accessories.index') }}" {{$snipeSettings->shortcuts_enabled == 1 ? "accesskey=3" : ''}} tabindex="-1" data-tooltip="true" data-placement="bottom" data-title="{{ trans('general.accessories') }}">
<i class="far fa-keyboard fa-fw"></i>
<x-icon type="accessories" class="fa-fw" />
<span class="sr-only">{{ trans('general.accessories') }}</span>
</a>
</li>
@ -169,7 +169,7 @@ dir="{{ Helper::determineLanguageDirection() }}">
@can('index', \App\Models\Consumable::class)
<li aria-hidden="true"{!! (Request::is('consumables*') ? ' class="active"' : '') !!}>
<a href="{{ url('consumables') }}" {{$snipeSettings->shortcuts_enabled == 1 ? "accesskey=4" : ''}} tabindex="-1" data-tooltip="true" data-placement="bottom" data-title="{{ trans('general.consumables') }}">
<i class="fas fa-tint fa-fw"></i>
<x-icon type="consumables" class="fa-fw" />
<span class="sr-only">{{ trans('general.consumables') }}</span>
</a>
</li>
@ -177,7 +177,7 @@ dir="{{ Helper::determineLanguageDirection() }}">
@can('view', \App\Models\Component::class)
<li aria-hidden="true"{!! (Request::is('components*') ? ' class="active"' : '') !!}>
<a href="{{ route('components.index') }}" {{$snipeSettings->shortcuts_enabled == 1 ? "accesskey=5" : ''}} tabindex="-1" data-tooltip="true" data-placement="bottom" data-title="{{ trans('general.components') }}">
<i class="far fa-hdd fa-fw"></i>
<x-icon type="components" class="fa-fw" />
<span class="sr-only">{{ trans('general.components') }}</span>
</a>
</li>
@ -197,7 +197,7 @@ dir="{{ Helper::determineLanguageDirection() }}">
</div>
<div class="col-xs-1">
<button type="submit" class="btn btn-primary pull-right">
<i class="fas fa-search" aria-hidden="true"></i>
<x-icon type="search" />
<span class="sr-only">{{ trans('general.search') }}</span>
</button>
</div>
@ -216,7 +216,7 @@ dir="{{ Helper::determineLanguageDirection() }}">
@can('create', \App\Models\Asset::class)
<li {!! (Request::is('hardware/create') ? 'class="active>"' : '') !!}>
<a href="{{ route('hardware.create') }}" tabindex="-1">
<i class="fas fa-barcode fa-fw" aria-hidden="true"></i>
<x-icon type="assets" />
{{ trans('general.asset') }}
</a>
</li>
@ -224,7 +224,7 @@ dir="{{ Helper::determineLanguageDirection() }}">
@can('create', \App\Models\License::class)
<li {!! (Request::is('licenses/create') ? 'class="active"' : '') !!}>
<a href="{{ route('licenses.create') }}" tabindex="-1">
<i class="far fa-save fa-fw" aria-hidden="true"></i>
<x-icon type="licenses" />
{{ trans('general.license') }}
</a>
</li>
@ -232,7 +232,7 @@ dir="{{ Helper::determineLanguageDirection() }}">
@can('create', \App\Models\Accessory::class)
<li {!! (Request::is('accessories/create') ? 'class="active"' : '') !!}>
<a href="{{ route('accessories.create') }}" tabindex="-1">
<i class="far fa-keyboard fa-fw" aria-hidden="true"></i>
<x-icon type="accessories" />
{{ trans('general.accessory') }}
</a>
</li>
@ -240,7 +240,7 @@ dir="{{ Helper::determineLanguageDirection() }}">
@can('create', \App\Models\Consumable::class)
<li {!! (Request::is('consunmables/create') ? 'class="active"' : '') !!}>
<a href="{{ route('consumables.create') }}" tabindex="-1">
<i class="fas fa-tint fa-fw" aria-hidden="true"></i>
<x-icon type="consumables" />
{{ trans('general.consumable') }}
</a>
</li>
@ -248,7 +248,7 @@ dir="{{ Helper::determineLanguageDirection() }}">
@can('create', \App\Models\Component::class)
<li {!! (Request::is('components/create') ? 'class="active"' : '') !!}>
<a href="{{ route('components.create') }}" tabindex="-1">
<i class="far fa-hdd fa-fw" aria-hidden="true"></i>
<x-icon type="components" />
{{ trans('general.component') }}
</a>
</li>
@ -256,7 +256,7 @@ dir="{{ Helper::determineLanguageDirection() }}">
@can('create', \App\Models\User::class)
<li {!! (Request::is('users/create') ? 'class="active"' : '') !!}>
<a href="{{ route('users.create') }}" tabindex="-1">
<i class="fas fa-user fa-fw" aria-hidden="true"></i>
<x-icon type="users" />
{{ trans('general.user') }}
</a>
</li>
@ -272,7 +272,7 @@ dir="{{ Helper::determineLanguageDirection() }}">
<li class="dropdown tasks-menu">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<i class="far fa-flag" aria-hidden="true"></i>
<x-icon type="alerts" />
<span class="sr-only">{{ trans('general.alerts') }}</span>
@if (count($alert_items))
<span class="label label-danger">{{ count($alert_items) }}</span>
@ -326,31 +326,33 @@ dir="{{ Helper::determineLanguageDirection() }}">
<img src="{{ Auth::user()->present()->gravatar() }}" class="user-image"
alt="">
@else
<i class="fas fa-user" aria-hidden="true"></i>
<x-icon type="user" />
@endif
<span class="hidden-xs">{{ Auth::user()->getFullNameAttribute() }} <strong
class="caret"></strong></span>
<span class="hidden-xs">
{{ Auth::user()->getFullNameAttribute() }}
<strong class="caret"></strong>
</span>
</a>
<ul class="dropdown-menu">
<!-- User image -->
<li {!! (Request::is('account/profile') ? ' class="active"' : '') !!}>
<a href="{{ route('view-assets') }}">
<i class="fas fa-check fa-fw" aria-hidden="true"></i>
<x-icon type="checkmark" class="fa-fw" />
{{ trans('general.viewassets') }}
</a></li>
@can('viewRequestable', \App\Models\Asset::class)
<li {!! (Request::is('account/requested') ? ' class="active"' : '') !!}>
<a href="{{ route('account.requested') }}">
<i class="fas fa-check fa-disk fa-fw" aria-hidden="true"></i>
<x-icon type="checkmark" class="fa-fw" />
{{ trans('general.requested_assets_menu') }}
</a></li>
@endcan
<li {!! (Request::is('account/accept') ? ' class="active"' : '') !!}>
<a href="{{ route('account.accept') }}">
<i class="fas fa-check fa-disk fa-fw"></i>
<x-icon type="checkmark" class="fa-fw" />
{{ trans('general.accept_assets_menu') }}
</a></li>
@ -358,7 +360,7 @@ dir="{{ Helper::determineLanguageDirection() }}">
@can('self.profile')
<li>
<a href="{{ route('profile') }}">
<i class="fas fa-user fa-fw" aria-hidden="true"></i>
<x-icon type="user" class="fa-fw" />
{{ trans('general.editprofile') }}
</a>
</li>
@ -366,7 +368,7 @@ dir="{{ Helper::determineLanguageDirection() }}">
<li>
<a href="{{ route('account.password.index') }}">
<i class="fa-solid fa-asterisk fa-fw" aria-hidden="true"></i>
<x-icon type="password" class="fa-fw" />
{{ trans('general.changepassword') }}
</a>
</li>
@ -375,8 +377,8 @@ dir="{{ Helper::determineLanguageDirection() }}">
@can('self.api')
<li>
<a href="{{ route('user.api') }}">
<i class="fa-solid fa-user-secret fa-fw"
aria-hidden="true"></i></i> {{ trans('general.manage_api_keys') }}
<x-icon type="api-key" class="fa-fw" />
{{ trans('general.manage_api_keys') }}
</a>
</li>
@endcan
@ -385,7 +387,8 @@ dir="{{ Helper::determineLanguageDirection() }}">
<a href="{{ route('logout.get') }}"
onclick="event.preventDefault(); document.getElementById('logout-form').submit();">
<i class="fa fa-sign-out fa-fw"></i> {{ trans('general.logout') }}
<x-icon type="logout" class="fa-fw" />
{{ trans('general.logout') }}
</a>
<form id="logout-form" action="{{ route('logout.post') }}" method="POST"
@ -402,7 +405,7 @@ dir="{{ Helper::determineLanguageDirection() }}">
@can('superadmin')
<li>
<a href="{{ route('settings.index') }}">
<i class="fa fa-cogs fa-fw" aria-hidden="true"></i>
<x-icon type="admin-settings" />
<span class="sr-only">{{ trans('general.admin') }}</span>
</a>
</li>
@ -413,7 +416,7 @@ dir="{{ Helper::determineLanguageDirection() }}">
<a href="#" style="float:left" class="sidebar-toggle-mobile visible-xs btn" data-toggle="push-menu"
role="button">
<span class="sr-only">{{ trans('general.toggle_navigation') }}</span>
<i class="fas fa-bars"></i>
<x-icon type="nav-toggle" />
</a>
<!-- Sidebar toggle button-->
</header>
@ -427,21 +430,22 @@ dir="{{ Helper::determineLanguageDirection() }}">
@can('admin')
<li {!! (\Request::route()->getName()=='home' ? ' class="active"' : '') !!} class="firstnav">
<a href="{{ route('home') }}">
<i class="fas fa-tachometer-alt fa-fw" aria-hidden="true"></i>
<x-icon type="dashboard" class="fa-fw" />
<span>{{ trans('general.dashboard') }}</span>
</a>
</li>
@endcan
@can('index', \App\Models\Asset::class)
<li class="treeview{{ ((Request::is('statuslabels/*') || Request::is('hardware*')) ? ' active' : '') }}">
<a href="#"><i class="fas fa-barcode fa-fw" aria-hidden="true"></i>
<a href="#">
<x-icon type="assets" class="fa-fw" />
<span>{{ trans('general.assets') }}</span>
<i class="fa fa-angle-left pull-right"></i>
<x-icon type="angle-left" class="pull-right fa-fw"/>
</a>
<ul class="treeview-menu">
<li>
<a href="{{ url('hardware') }}">
<i class="far fa-circle text-grey fa-fw" aria-hidden="true"></i>
<x-icon type="circle" class="text-grey fa-fw"/>
{{ trans('general.list_all') }}
<span class="badge">
{{ (isset($total_assets)) ? $total_assets : '' }}
@ -464,49 +468,48 @@ dir="{{ Helper::determineLanguageDirection() }}">
<li{!! (Request::query('status') == 'Deployed' ? ' class="active"' : '') !!}>
<a href="{{ url('hardware?status=Deployed') }}">
<i class="far fa-circle text-blue fa-fw"></i>
<x-icon type="circle" class="text-blue fa-fw" />
{{ trans('general.deployed') }}
<span class="badge">{{ (isset($total_deployed_sidebar)) ? $total_deployed_sidebar : '' }}</span>
</a>
</li>
<li{!! (Request::query('status') == 'RTD' ? ' class="active"' : '') !!}>
<a href="{{ url('hardware?status=RTD') }}">
<i class="far fa-circle text-green fa-fw"></i>
<x-icon type="circle" class="text-green fa-fw" />
{{ trans('general.ready_to_deploy') }}
<span class="badge">{{ (isset($total_rtd_sidebar)) ? $total_rtd_sidebar : '' }}</span>
</a>
</li>
<li{!! (Request::query('status') == 'Pending' ? ' class="active"' : '') !!}><a
href="{{ url('hardware?status=Pending') }}"><i
class="far fa-circle text-orange fa-fw"></i>
<li{!! (Request::query('status') == 'Pending' ? ' class="active"' : '') !!}><a href="{{ url('hardware?status=Pending') }}">
<x-icon type="circle" class="text-orange fa-fw" />
{{ trans('general.pending') }}
<span class="badge">{{ (isset($total_pending_sidebar)) ? $total_pending_sidebar : '' }}</span>
</a>
</li>
<li{!! (Request::query('status') == 'Undeployable' ? ' class="active"' : '') !!} ><a
href="{{ url('hardware?status=Undeployable') }}"><i
class="fas fa-times text-red fa-fw"></i>
href="{{ url('hardware?status=Undeployable') }}">
<x-icon type="x" class="text-red fa-fw" />
{{ trans('general.undeployable') }}
<span class="badge">{{ (isset($total_undeployable_sidebar)) ? $total_undeployable_sidebar : '' }}</span>
</a>
</li>
<li{!! (Request::query('status') == 'byod' ? ' class="active"' : '') !!}><a
href="{{ url('hardware?status=byod') }}"><i
class="fas fa-times text-red fa-fw"></i>
href="{{ url('hardware?status=byod') }}">
<x-icon type="x" class="text-red fa-fw" />
{{ trans('general.byod') }}
<span class="badge">{{ (isset($total_byod_sidebar)) ? $total_byod_sidebar : '' }}</span>
</a>
</li>
<li{!! (Request::query('status') == 'Archived' ? ' class="active"' : '') !!}><a
href="{{ url('hardware?status=Archived') }}"><i
class="fas fa-times text-red fa-fw"></i>
href="{{ url('hardware?status=Archived') }}">
<x-icon type="x" class="text-red fa-fw" />
{{ trans('admin/hardware/general.archived') }}
<span class="badge">{{ (isset($total_archived_sidebar)) ? $total_archived_sidebar : '' }}</span>
</a>
</li>
<li{!! (Request::query('status') == 'Requestable' ? ' class="active"' : '') !!}><a
href="{{ url('hardware?status=Requestable') }}"><i
class="fas fa-check text-blue fa-fw"></i>
href="{{ url('hardware?status=Requestable') }}">
<x-icon type="checkmark" class="text-blue fa-fw" />
{{ trans('admin/hardware/general.requestable') }}
</a>
</li>
@ -514,7 +517,8 @@ dir="{{ Helper::determineLanguageDirection() }}">
@can('audit', \App\Models\Asset::class)
<li{!! (Request::is('hardware/audit/due') ? ' class="active"' : '') !!}>
<a href="{{ route('assets.audit.due') }}">
<i class="fas fa-history text-yellow fa-fw"></i> {{ trans('general.audit_due') }}
<x-icon type="due" class="text-yellow fa-fw"/>
{{ trans('general.audit_due') }}
<span class="badge">{{ (isset($total_due_and_overdue_for_audit)) ? $total_due_and_overdue_for_audit : '' }}</span>
</a>
</li>
@ -523,7 +527,8 @@ dir="{{ Helper::determineLanguageDirection() }}">
@can('checkin', \App\Models\Asset::class)
<li{!! (Request::is('hardware/checkins/due') ? ' class="active"' : '') !!}>
<a href="{{ route('assets.checkins.due') }}">
<i class="fas fa-history text-yellow fa-fw"></i> {{ trans('general.checkin_due') }}
<x-icon type="due" class="text-orange fa-fw"/>
{{ trans('general.checkin_due') }}
<span class="badge">{{ (isset($total_due_and_overdue_for_checkin)) ? $total_due_and_overdue_for_checkin : '' }}</span>
</a>
</li>
@ -582,7 +587,7 @@ dir="{{ Helper::determineLanguageDirection() }}">
@can('view', \App\Models\License::class)
<li{!! (Request::is('licenses*') ? ' class="active"' : '') !!}>
<a href="{{ route('licenses.index') }}">
<i class="far fa-save fa-fw"></i>
<x-icon type="licenses" class="fa-fw"/>
<span>{{ trans('general.licenses') }}</span>
</a>
</li>
@ -590,7 +595,7 @@ dir="{{ Helper::determineLanguageDirection() }}">
@can('index', \App\Models\Accessory::class)
<li{!! (Request::is('accessories*') ? ' class="active"' : '') !!}>
<a href="{{ route('accessories.index') }}">
<i class="far fa-keyboard fa-fw"></i>
<x-icon type="accessories" class="fa-fw" />
<span>{{ trans('general.accessories') }}</span>
</a>
</li>
@ -598,7 +603,7 @@ dir="{{ Helper::determineLanguageDirection() }}">
@can('view', \App\Models\Consumable::class)
<li{!! (Request::is('consumables*') ? ' class="active"' : '') !!}>
<a href="{{ url('consumables') }}">
<i class="fas fa-tint fa-fw"></i>
<x-icon type="consumables" class="fa-fw" />
<span>{{ trans('general.consumables') }}</span>
</a>
</li>
@ -606,7 +611,7 @@ dir="{{ Helper::determineLanguageDirection() }}">
@can('view', \App\Models\Component::class)
<li{!! (Request::is('components*') ? ' class="active"' : '') !!}>
<a href="{{ route('components.index') }}">
<i class="far fa-hdd fa-fw"></i>
<x-icon type="components" class="fa-fw" />
<span>{{ trans('general.components') }}</span>
</a>
</li>
@ -614,7 +619,7 @@ dir="{{ Helper::determineLanguageDirection() }}">
@can('view', \App\Models\PredefinedKit::class)
<li{!! (Request::is('kits') ? ' class="active"' : '') !!}>
<a href="{{ route('kits.index') }}">
<i class="fa fa-object-group fa-fw"></i>
<x-icon type="kits" class="fa-fw" />
<span>{{ trans('general.kits') }}</span>
</a>
</li>
@ -623,7 +628,7 @@ dir="{{ Helper::determineLanguageDirection() }}">
@can('view', \App\Models\User::class)
<li{!! (Request::is('users*') ? ' class="active"' : '') !!}>
<a href="{{ route('users.index') }}" {{$snipeSettings->shortcuts_enabled == 1 ? "accesskey=6" : ''}}>
<i class="fas fa-users fa-fw"></i>
<x-icon type="users" class="fa-fw" />
<span>{{ trans('general.people') }}</span>
</a>
</li>
@ -631,7 +636,7 @@ dir="{{ Helper::determineLanguageDirection() }}">
@can('import')
<li{!! (Request::is('import/*') ? ' class="active"' : '') !!}>
<a href="{{ route('imports.index') }}">
<i class="fas fa-cloud-upload-alt fa-fw" aria-hidden="true"></i>
<x-icon type="import" class="fa-fw" />
<span>{{ trans('general.import') }}</span>
</a>
</li>
@ -640,9 +645,9 @@ dir="{{ Helper::determineLanguageDirection() }}">
@can('backend.interact')
<li class="treeview {!! in_array(Request::route()->getName(),App\Helpers\Helper::SettingUrls()) ? ' active': '' !!}">
<a href="#" id="settings">
<i class="fas fa-cog" aria-hidden="true"></i>
<x-icon type="settings" />
<span>{{ trans('general.settings') }}</span>
<i class="fa fa-angle-left pull-right"></i>
<x-icon type="angle-left" class="fa-fw"/>
</a>
<ul class="treeview-menu">
@ -732,9 +737,9 @@ dir="{{ Helper::determineLanguageDirection() }}">
@can('reports.view')
<li class="treeview{{ (Request::is('reports*') ? ' active' : '') }}">
<a href="#" class="dropdown-toggle">
<i class="fas fa-chart-bar fa-fw"></i>
<x-icon type="reports" class="fa-fw" />
<span>{{ trans('general.reports') }}</span>
<i class="fa fa-angle-left pull-right"></i>
<x-icon type="angle-left" class="pull-right"/>
</a>
<ul class="treeview-menu">
@ -784,7 +789,7 @@ dir="{{ Helper::determineLanguageDirection() }}">
@can('viewRequestable', \App\Models\Asset::class)
<li{!! (Request::is('account/requestable-assets') ? ' class="active"' : '') !!}>
<a href="{{ route('requestable-assets') }}">
<i class="fa fa-laptop fa-fw"></i>
<x-icon type="requestable" class="fa-fw" />
<span>{{ trans('general.requestable_items') }}</span>
</a>
</li>
@ -805,7 +810,7 @@ dir="{{ Helper::determineLanguageDirection() }}">
<div class="row" style="margin-bottom: 0px; background-color: red; color: white; font-size: 15px;">
<div class="col-md-12"
style="margin-bottom: 0px; background-color: #b50408 ; color: white; padding: 10px 20px 10px 30px; font-size: 16px;">
<i class="fas fa-exclamation-triangle fa-3x pull-left"></i>
<x-icon type="warning" class="fa-3x pull-left"/>
<strong>{{ strtoupper(trans('general.debug_warning')) }}:</strong>
{!! trans('general.debug_warning_text') !!}
</div>
@ -859,9 +864,8 @@ dir="{{ Helper::determineLanguageDirection() }}">
<div class="1hidden-xs pull-left">
<div class="pull-left" >
<a target="_blank" href="https://snipeitapp.com" rel="noopener">Snipe-IT</a> is open source software,
made with <i class="fas fa-heart" style="color: #a94442; font-size: 10px" aria-hidden="true"></i><span
class="sr-only">love</span> by <a href="https://twitter.com/snipeitapp" rel="noopener">@snipeitapp</a>.
<a target="_blank" href="https://snipeitapp.com" rel="noopener">Snipe-IT</a> is open source software, made with <x-icon type="heart" style="color: #a94442; font-size: 10px" />
<span class="sr-only">love</span> by <a href="https://twitter.com/snipeitapp" rel="noopener">@snipeitapp</a>.
</div>
<div class="pull-right">
@if ($snipeSettings->version_footer!='off')
@ -1010,16 +1014,25 @@ dir="{{ Helper::determineLanguageDirection() }}">
// Use element id to find the text element to hide / show
var targetElement = e.id+"-to-show";
var hiddenElement = e.id+"-to-hide";
var audio = new Audio('{{ config('app.url') }}/sounds/lock.mp3');
if($(e).hasClass('fa-lock')) {
@if ((isset($user)) && ($user->enable_sounds))
audio.play()
@endif
$(e).removeClass('fa-lock').addClass('fa-unlock');
// Show the encrypted custom value and hide the element with asterisks
document.getElementById(targetElement).style.fontSize = "100%";
document.getElementById(hiddenElement).style.display = "none";
} else {
@if ((isset($user)) && ($user->enable_sounds))
audio.play()
@endif
$(e).removeClass('fa-unlock').addClass('fa-lock');
// ClipboardJS can't copy display:none elements so use a trick to hide the value
document.getElementById(targetElement).style.fontSize = "0px";
document.getElementById(hiddenElement).style.display = "";
}
}

View file

@ -46,7 +46,7 @@
@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">
<i class="fas fa-check icon-white" aria-hidden="true"></i>
<x-icon type="checkmark" />
{{ trans('general.save') }}
</button>
</div>

View file

@ -87,7 +87,7 @@
<div class="input-group col-md-4">
<div class="input-group date" data-provide="datepicker" data-date-format="yyyy-mm-dd" data-autoclose="true" data-date-clear-btn="true">
<input type="text" class="form-control" placeholder="{{ trans('general.select_date') }}" name="expiration_date" id="expiration_date" value="{{ old('expiration_date', ($item->expiration_date) ? $item->expiration_date->format('Y-m-d') : '') }}" maxlength="10">
<span class="input-group-addon"><i class="fas fa-calendar" aria-hidden="true"></i></span>
<span class="input-group-addon"><x-icon type="calendar" /></span>
</div>
{!! $errors->first('expiration_date', '<span class="alert-msg" aria-hidden="true"><i class="fas fa-times" aria-hidden="true"></i> :message</span>') !!}
</div>
@ -101,7 +101,7 @@
<div class="input-group col-md-4">
<div class="input-group date" data-provide="datepicker" data-date-format="yyyy-mm-dd" data-autoclose="true" data-date-clear-btn="true">
<input type="text" class="form-control" placeholder="{{ trans('general.select_date') }}" name="termination_date" id="termination_date" value="{{ old('termination_date', ($item->termination_date) ? $item->termination_date->format('Y-m-d') : '') }}" maxlength="10">
<span class="input-group-addon"><i class="fas fa-calendar" aria-hidden="true"></i></span>
<span class="input-group-addon"><x-icon type="calendar" /></span>
</div>
{!! $errors->first('termination_date', '<span class="alert-msg" aria-hidden="true"><i class="fas fa-times" aria-hidden="true"></i> :message</span>') !!}
</div>

View file

@ -20,7 +20,7 @@
<li class="active">
<a href="#details" data-toggle="tab">
<span class="hidden-lg hidden-md">
<i class="fas fa-info-circle fa-2x" aria-hidden="true"></i>
<x-icon type="info-circle" class="fa-2x" />
</span>
<span class="hidden-xs hidden-sm">{{ trans('admin/users/general.info') }}</span>
</a>
@ -29,7 +29,7 @@
<li>
<a href="#seats" data-toggle="tab">
<span class="hidden-lg hidden-md">
<i class="far fa-list-alt fa-2x" aria-hidden="true"></i>
<x-icon type="seats" class="fa-2x" />
</span>
<span class="hidden-xs hidden-sm">{{ trans('admin/licenses/form.seats') }}</span>
<span class="badge badge-secondary">{{ number_format($license->availCount()->count()) }} / {{ number_format($license->seats) }}</span>
@ -41,7 +41,8 @@
<li>
<a href="#files" data-toggle="tab">
<span class="hidden-lg hidden-md">
<i class="far fa-file fa-2x" aria-hidden="true"></i></span>
<x-icon type="files" class="fa-2x" />
</span>
<span class="hidden-xs hidden-sm">{{ trans('general.file_uploads') }}
{!! ($license->uploads->count() > 0 ) ? '<badge class="badge badge-secondary">'.number_format($license->uploads->count()).'</badge>' : '' !!}
</span>
@ -52,14 +53,15 @@
<li>
<a href="#history" data-toggle="tab">
<span class="hidden-lg hidden-md">
<i class="fas fa-history fa-2x" aria-hidden="true"></i></span>
<x-icon type="history" class="fa-2x" />
</span>
<span class="hidden-xs hidden-sm">{{ trans('general.history') }}</span>
</a>
</li>
@can('update', \App\Models\License::class)
<li class="pull-right"><a href="#" data-toggle="modal" data-target="#uploadFileModal">
<i class="fas fa-paperclip" aria-hidden="true"></i> {{ trans('button.upload') }}</a>
<x-icon type="paperclip" /> {{ trans('button.upload') }}</a>
</li>
@endcan
</ul>
@ -97,21 +99,21 @@
@endcan
@if ($license->manufacturer->url)
<br><i class="fas fa-globe-americas" aria-hidden="true"></i> <a href="{{ $license->manufacturer->url }}" rel="noopener">{{ $license->manufacturer->url }}</a>
<br><x-icon type="globe-us" /> <a href="{{ $license->manufacturer->url }}" rel="noopener">{{ $license->manufacturer->url }}</a>
@endif
@if ($license->manufacturer->support_url)
<br><i class="far fa-life-ring" aria-hidden="true"></i>
<br><x-icon type="more-info" />
<a href="{{ $license->manufacturer->support_url }}" rel="noopener">{{ $license->manufacturer->support_url }}</a>
@endif
@if ($license->manufacturer->support_phone)
<br><i class="fas fa-phone" aria-hidden="true"></i>
<br><x-icon type="phone" />
<a href="tel:{{ $license->manufacturer->support_phone }}">{{ $license->manufacturer->support_phone }}</a>
@endif
@if ($license->manufacturer->support_email)
<br><i class="far fa-envelope" aria-hidden="true"></i> <a href="mailto:{{ $license->manufacturer->support_email }}">{{ $license->manufacturer->support_email }}</a>
<br><x-icon type="email" /> <a href="mailto:{{ $license->manufacturer->support_email }}">{{ $license->manufacturer->support_email }}</a>
@endif
</div>
</div>
@ -191,16 +193,16 @@
@endcan
@if ($license->supplier->url)
<br><i class="fas fa-globe-americas" aria-hidden="true"></i> <a href="{{ $license->supplier->url }}" rel="noopener">{{ $license->supplier->url }}</a>
<br><x-icon type="globe-us" /> <a href="{{ $license->supplier->url }}" rel="noopener">{{ $license->supplier->url }}</a>
@endif
@if ($license->supplier->phone)
<br><i class="fas fa-phone" aria-hidden="true"></i>
<br><x-icon type="phone" />
<a href="tel:{{ $license->supplier->phone }}">{{ $license->supplier->phone }}</a>
@endif
@if ($license->supplier->email)
<br><i class="far fa-envelope" aria-hidden="true"></i> <a href="mailto:{{ $license->supplier->email }}">{{ $license->supplier->email }}</a>
<br><x-icon type="email" /> <a href="mailto:{{ $license->supplier->email }}">{{ $license->supplier->email }}</a>
@endif
@if ($license->supplier->address)
@ -529,12 +531,12 @@
<td>
@if ($file->filename)
<a href="{{ route('show.licensefile', [$license->id, $file->id]) }}" class="btn btn-sm btn-default">
<i class="fas fa-download" aria-hidden="true"></i>
<x-icon type="download"/>
<span class="sr-only">{{ trans('general.download') }}</span>
</a>
<a href="{{ route('show.licensefile', [$license->id, $file->id, 'inline' => 'true']) }}" class="btn btn-sm btn-default" target="_blank">
<i class="fa fa-external-link" aria-hidden="true"></i>
<x-icon type="external-link" />
</a>
@endif
@ -542,7 +544,7 @@
<td>{{ $file->created_at }}</td>
<td>
<a class="btn delete-asset btn-danger btn-sm" href="{{ route('delete/licensefile', [$license->id, $file->id]) }}" data-content="{{ trans('general.delete_confirm', ['item' => $file->filename]) }}" data-title="{{ trans('general.delete') }}">
<i class="fas fa-trash icon-white" aria-hidden="true"></i>
<x-icon type="delete" />
<span class="sr-only">{{ trans('general.delete') }}</span>
</a>
</td>
@ -610,48 +612,64 @@
<div class="col-md-3">
@can('update', $license)
<a href="{{ route('licenses.edit', $license->id) }}" class="btn btn-block btn-primary" style="margin-bottom: 10px;">{{ trans('admin/licenses/general.edit') }}</a>
<a href="{{ route('clone/license', $license->id) }}" class="btn btn-block btn-primary" style="margin-bottom: 10px;">{{ trans('admin/licenses/general.clone') }}</a>
<a href="{{ route('licenses.edit', $license->id) }}" class="btn btn-warning btn-sm btn-social btn-block hidden-print" style="margin-bottom: 5px;">
<x-icon type="edit" />
{{ trans('admin/licenses/general.edit') }}
</a>
<a href="{{ route('clone/license', $license->id) }}" class="btn btn-info btn-block btn-sm btn-social hidden-print" style="margin-bottom: 5px;">
<x-icon type="clone" />
{{ trans('admin/licenses/general.clone') }}</a>
@endcan
@can('checkout', $license)
@if ($license->availCount()->count() > 0)
<a href="{{ route('licenses.checkout', $license->id) }}" class="btn-block btn bg-maroon" style="margin-bottom: 10px;">
<a href="{{ route('licenses.checkout', $license->id) }}" class="btn bg-maroon btn-sm btn-social btn-block hidden-print" style="margin-bottom: 5px;">
<x-icon type="checkout" />
{{ trans('general.checkout') }}
</a>
<a href="#" class="btn-block btn bg-maroon" style="margin-bottom: 10px;" data-toggle="modal" data-tooltip="true" title="{{ trans('admin/licenses/general.bulk.checkout_all.enabled_tooltip') }}" data-target="#checkoutFromAllModal">
<a href="#" class="btn bg-maroon btn-sm btn-social btn-block hidden-print" style="margin-bottom: 5px;" data-toggle="modal" data-tooltip="true" title="{{ trans('admin/licenses/general.bulk.checkout_all.enabled_tooltip') }}" data-target="#checkoutFromAllModal">
<x-icon type="checkout" />
{{ trans('admin/licenses/general.bulk.checkout_all.button') }}
</a>
@else
<a href="{{ route('licenses.checkout', $license->id) }}" class="btn btn-block bg-maroon disabled" style="margin-bottom: 10px;">
{{ trans('general.checkout') }}
</a>
<span data-tooltip="true" title=" {{ trans('admin/licenses/general.bulk.checkout_all.disabled_tooltip') }}">
<a href="#" class="btn bg-maroon btn-sm btn-social btn-block hidden-print disabled" style="margin-bottom: 5px;" data-tooltip="true" title="{{ trans('general.checkout') }}">
<x-icon type="checkout" />
{{ trans('general.checkout') }}
</a>
</span>
<span data-tooltip="true" title=" {{ trans('admin/licenses/general.bulk.checkout_all.disabled_tooltip') }}">
<a href="#" class="btn btn-block bg-maroon disabled" style="margin-bottom: 10px;" data-tooltip="true" title="{{ trans('general.checkout') }}">
{{ trans('admin/licenses/general.bulk.checkout_all.button') }}
</a>
</span>
<a href="#" class="btn bg-maroon btn-sm btn-social btn-block hidden-print disabled" style="margin-bottom: 5px;" data-tooltip="true" title="{{ trans('general.checkout') }}">
<x-icon type="checkout" />
{{ trans('admin/licenses/general.bulk.checkout_all.button') }}
</a>
</span>
@endif
@endcan
@can('checkin', $license)
@if (($license->seats - $license->availCount()->count()) <= 0 )
<span data-tooltip="true" title=" {{ trans('admin/licenses/general.bulk.checkin_all.disabled_tooltip') }}">
<a href="#" class="btn btn-block bg-purple disabled" style="margin-bottom: 25px;">
<a href="#" class="btn btn-primary bg-purple btn-sm btn-social btn-block hidden-print disabled" style="margin-bottom: 25px;">
<x-icon type="checkin" />
{{ trans('admin/licenses/general.bulk.checkin_all.button') }}
</a>
</span>
@elseif (! $license->reassignable)
<span data-tooltip="true" title=" {{ trans('admin/licenses/general.bulk.checkin_all.disabled_tooltip_reassignable') }}">
<a href="#" class="btn btn-block bg-purple disabled" style="margin-bottom: 25px;">
<a href="#" class="btn btn-primary bg-purple btn-sm btn-social btn-block hidden-print disabled" style="margin-bottom: 25px;">
<x-icon type="checkin" />
{{ trans('admin/licenses/general.bulk.checkin_all.button') }}
</a>
</span>
@else
<a href="#" class="btn btn-block bg-purple" style="margin-bottom: 25px;" data-toggle="modal" data-tooltip="true" data-target="#checkinFromAllModal" data-content="{{ trans('general.sure_to_delete') }} data-title="{{ trans('general.delete') }}" onClick="return false;">
<a href="#" class="btn btn-primary bg-purple btn-sm btn-social btn-block hidden-print" style="margin-bottom: 25px;" data-toggle="modal" data-tooltip="true" data-target="#checkinFromAllModal" data-content="{{ trans('general.sure_to_delete') }} data-title="{{ trans('general.delete') }}" onClick="return false;">
<x-icon type="checkin" />
{{ trans('admin/licenses/general.bulk.checkin_all.button') }}
</a>
@endif
@ -660,12 +678,14 @@
@can('delete', $license)
@if ($license->availCount()->count() == $license->seats)
<button class="btn btn-block btn-danger delete-asset" data-toggle="modal" data-title="{{ trans('general.delete') }}" data-content="{{ trans('general.delete_confirm', ['item' => $license->name]) }}" data-target="#dataConfirmModal">
<button class="btn btn-block btn-danger btn-sm btn-social delete-license" data-toggle="modal" data-title="{{ trans('general.delete') }}" data-content="{{ trans('general.delete_confirm', ['item' => $license->name]) }}" data-target="#dataConfirmModal">
<x-icon type="delete" />
{{ trans('general.delete') }}
</button>
@else
<span data-tooltip="true" title=" {{ trans('admin/licenses/general.delete_disabled') }}">
<a href="#" class="btn btn-block btn-danger disabled">
<a href="#" class="btn btn-block btn-danger btn-sm btn-social delete-license disabled">
<x-icon type="delete" />
{{ trans('general.delete') }}
</a>
</span>

View file

@ -31,7 +31,7 @@
<div class="input-group col-md-4" style="padding-left: 0px;">
<div class="input-group date" data-provide="datepicker" data-date-format="yyyy-mm-dd" data-autoclose="true">
<input type="text" class="form-control" placeholder="{{ trans('general.select_date') }}" name="default_values[{{ $field->id }}]" id="default-value{{ $field->id }}" value="{{ $field->defaultValue($model_id) }}">
<span class="input-group-addon"><i class="fas fa-calendar" aria-hidden="true"></i></span>
<span class="input-group-addon"><x-icon type="calendar" /></span>
</div>
</div>

View file

@ -119,9 +119,9 @@
</th>
</tr>
@foreach($files as $currentFile)
@foreach($this->files as $currentFile)
<tr style="{{ ($activeFile && ($currentFile->id == $activeFile->id)) ? 'font-weight: bold' : '' }}" class="{{ ($activeFile && ($currentFile->id == $activeFile->id)) ? 'warning' : '' }}">
<tr style="{{ ($this->activeFile && ($currentFile->id == $this->activeFile->id)) ? 'font-weight: bold' : '' }}" class="{{ ($this->activeFile && ($currentFile->id == $this->activeFile->id)) ? 'warning' : '' }}">
<td class="col-md-6">{{ $currentFile->file_path }}</td>
<td class="col-md-3">{{ Helper::getFormattedDateObject($currentFile->created_at, 'datetime', false) }}</td>
<td class="col-md-1">{{ Helper::formatFilesizeUnits($currentFile->filesize) }}</td>
@ -130,25 +130,25 @@
<i class="fa-solid fa-list-check" aria-hidden="true"></i>
<span class="sr-only">{{ trans('general.import') }}</span>
</button>
<a href="#" wire:click.prevent="$set('activeFile',null)">
<a href="#" wire:click.prevent="$set('activeFileId',null)">
<button class="btn btn-sm btn-danger" wire:click="destroy({{ $currentFile->id }})">
<i class="fas fa-trash icon-white" aria-hidden="true"></i><span class="sr-only"></span></button>
</a>
</td>
</tr>
@if( $currentFile && $activeFile && ($currentFile->id == $activeFile->id))
@if( $currentFile && $this->activeFile && ($currentFile->id == $this->activeFile->id))
<tr class="warning">
<td colspan="4">
<div class="form-group">
<label for="activeFile.import_type" class="col-md-3 col-xs-12">
<label for="typeOfImport" class="col-md-3 col-xs-12">
{{ trans('general.import_type') }}
</label>
<div class="col-md-9 col-xs-12" wire:ignore>
{{ Form::select('activeFile.import_type', $importTypes, $activeFile->import_type, [
{{ Form::select('typeOfImport', $importTypes, $typeOfImport, [
'id' => 'import_type',
'class' => 'livewire-select2',
'style' => 'min-width: 350px',
@ -157,7 +157,7 @@
'data-minimum-results-for-search' => '-1', // Remove this if the list gets long enough that we need to search
'data-livewire-component' => $this->getId()
]) }}
@if ($activeFile->import_type === 'asset' && $snipeSettings->auto_increment_assets == 0)
@if ($typeOfImport === 'asset' && $snipeSettings->auto_increment_assets == 0)
<p class="help-block">
{{ trans('general.auto_incrementing_asset_tags_disabled_so_tags_required') }}
</p>
@ -170,7 +170,7 @@
<input type="checkbox" name="update" data-livewire-component="{{ $this->getId() }}" wire:model.live="update">
{{ trans('general.update_existing_values') }}
</label>
@if ($activeFile->import_type === 'asset' && $snipeSettings->auto_increment_assets == 1 && $update)
@if ($typeOfImport === 'asset' && $snipeSettings->auto_increment_assets == 1 && $update)
<p class="help-block">
{{ trans('general.auto_incrementing_asset_tags_enabled_so_now_assets_will_be_created') }}
</p>
@ -196,13 +196,13 @@
@endif
@if ($activeFile->import_type)
@if ($typeOfImport)
<div class="form-group col-md-12">
<hr style="border-top: 1px solid lightgray">
<h3>
<i class="{{ Helper::iconTypeByItem($activeFile->import_type) }}">
<i class="{{ Helper::iconTypeByItem($typeOfImport) }}">
</i>
{{ trans('general.map_fields', ['item_type' => ucwords($activeFile->import_type)]) }}
{{ trans('general.map_fields', ['item_type' => ucwords($typeOfImport)]) }}
</h3>
<hr style="border-top: 1px solid lightgray">
</div>
@ -218,16 +218,16 @@
</div>
</div><!-- /div row -->
@if($activeFile->header_row)
@if(! empty($headerRow))
@foreach($activeFile->header_row as $index => $header)
@foreach($headerRow as $index => $header)
<div class="form-group col-md-12" wire:key="header-row-{{ $index }}">
<label for="field_map.{{ $index }}" class="col-md-3 control-label text-right">{{ $header }}</label>
<div class="col-md-4" wire:ignore>
{{ Form::select('field_map.'.$index, $columnOptions[$activeFile->import_type], @$field_map[$index],
{{ Form::select('field_map.'.$index, $columnOptions[$typeOfImport], @$field_map[$index],
[
'class' => 'mappings livewire-select2',
'placeholder' => trans('general.importer.do_not_import'),
@ -238,9 +238,9 @@
])
}}
</div>
@if (($activeFile->first_row) && (array_key_exists($index, $activeFile->first_row)))
@if (($this->activeFile->first_row) && (array_key_exists($index, $this->activeFile->first_row)))
<div class="col-md-5">
<p class="form-control-static">{{ str_limit($activeFile->first_row[$index], 50, '...') }}</p>
<p class="form-control-static">{{ str_limit($this->activeFile->first_row[$index], 50, '...') }}</p>
</div>
@else
@php
@ -256,7 +256,7 @@
<div class="form-group col-md-12">
<div class="col-md-3 text-left">
<a href="#" wire:click.prevent="$set('activeFile',null)">{{ trans('general.cancel') }}</a>
<a href="#" wire:click.prevent="$set('activeFileId',null)">{{ trans('general.cancel') }}</a>
</div>
<div class="col-md-9">
<button type="submit" class="btn btn-primary col-md-5" id="import">{{ trans('admin/hardware/message.import.import_button') }}</button>
@ -272,10 +272,10 @@
@else
<div class="form-group col-md-10">
<div class="col-md-3 text-left">
<a href="#" wire:click.prevent="$set('activeFile',null)">{{ trans('general.cancel') }}</a>
<a href="#" wire:click.prevent="$set('activeFileId',null)">{{ trans('general.cancel') }}</a>
</div>
</div>
@endif {{-- end of if ... activeFile->import_type --}}
@endif {{-- end of if ... $typeOfImport --}}
</div><!-- /div v-show --> </td>
</tr>
@ -333,7 +333,7 @@
// we have to hook up to the `<tr id='importer-file'>` at the root of this display,
// because the #import button isn't visible until you click an import_type
$('#upload-table').on('click', '#import', function () {
if (!$wire.$get('activeFile.import_type')) {
if (!$wire.$get('typeOfImport')) {
$wire.$set('statusType', 'error');
$wire.$set('statusText', "An import type is required... "); //TODO: translate?
return;
@ -345,15 +345,15 @@
// console.warn("Here is the mappings:")
// console.dir(mappings)
// console.warn("Uh, active file id is, I guess: "+$wire.$get('activeFile.id'))
var this_file = $wire.$get('file_id'); // okay, I actually don't know what I'm doing here.
var file_id = $wire.$get('activeFileId');
$.post({
{{-- I want to do something like: route('api.imports.importFile', $activeFile->id) }} --}}
url: "api/v1/imports/process/"+this_file, // maybe? Good a guess as any..FIXME. HARDCODED DUMB FILE
url: "api/v1/imports/process/"+file_id, // maybe? Good a guess as any..FIXME. HARDCODED DUMB FILE
contentType: 'application/json',
data: JSON.stringify({
'import-update': !!$wire.$get('update'),
'send-welcome': !!$wire.$get('send_welcome'),
'import-type': $wire.$get('activeFile.import_type'),
'import-type': $wire.$get('typeOfImport'),
'run-backup': !!$wire.$get('run_backup'),
'column-mappings': mappings
}),
@ -393,7 +393,7 @@
}
}
$wire.$set('activeFile', null); //$wire.$set('hideDetails')
$wire.$set('activeFileId', null); //$wire.$set('hideDetails')
});
})
return false;

View file

@ -3,6 +3,7 @@
<div class="box-header">
<h2 class="box-title">
<x-icon type="oauth"/>
{{ trans('admin/settings/general.oauth_clients') }}
</h2>
@if ($authorizationError)

View file

@ -153,7 +153,7 @@
<button type="submit" {{$isDisabled}} class="btn btn-primary"{{ Helper::isDemoMode() ? ' disabled' : ''}}>
<i class="fas fa-check icon-white" aria-hidden="true"></i> {{ $save_button }}</button>
<x-icon type="checkmark" /> {{ $save_button }}</button>
</div> <!-- /.col-md-12 -->
</div><!--box-footer-->

View file

@ -51,7 +51,7 @@
<div class="box-footer text-right">
<a class="btn btn-link pull-left" href="{{ URL::previous() }}">{{ trans('button.cancel') }}</a>
<button type="submit" class="btn btn-success" id="submit-button"><i class="fas fa-check icon-white" aria-hidden="true"></i> {{ trans('general.delete') }}</button>
<button type="submit" class="btn btn-success" id="submit-button"><x-icon type="checkmark" /> {{ trans('general.delete') }}</button>
</div><!-- /.box-footer -->
</div><!-- /.box -->
</form>

View file

@ -9,6 +9,10 @@
@parent
@stop
@section('header_right')
<a href="{{ route('locations.index') }}" class="btn btn-primary" style="margin-right: 10px;">
{{ trans('general.back') }}</a>
@endsection
{{-- Page content --}}
@section('content')
@ -21,7 +25,7 @@
<li class="active">
<a href="#users" data-toggle="tab">
<span class="hidden-lg hidden-md">
<i class="fas fa-users fa-2x"></i>
<x-icon type="users" class="fa-2x" />
</span>
<span class="hidden-xs hidden-sm">
{{ trans('general.users') }}
@ -34,7 +38,7 @@
<li>
<a href="#assets" data-toggle="tab">
<span class="hidden-lg hidden-md">
<i class="fas fa-barcode fa-2x" aria-hidden="true"></i>
<x-icon type="assets" class="fa-2x" />
</span>
<span class="hidden-xs hidden-sm">
{{ trans('admin/locations/message.current_location') }}
@ -47,7 +51,8 @@
<li>
<a href="#rtd_assets" data-toggle="tab">
<span class="hidden-lg hidden-md">
<i class="fas fa-barcode fa-2x" aria-hidden="true"></i>
<x-icon type="assets" class="fa-2x" />
</span>
<span class="hidden-xs hidden-sm">
{{ trans('admin/hardware/form.default_location') }}
@ -59,7 +64,7 @@
<li>
<a href="#assets_assigned" data-toggle="tab">
<span class="hidden-lg hidden-md">
<i class="fas fa-barcode fa-2x" aria-hidden="true"></i>
<x-icon type="assets" class="fa-2x" />
</span>
<span class="hidden-xs hidden-sm">
{{ trans('admin/locations/message.assigned_assets') }}
@ -72,7 +77,7 @@
<li>
<a href="#accessories" data-toggle="tab">
<span class="hidden-lg hidden-md">
<i class="fas fa-keyboard fa-2x" aria-hidden="true"></i>
<x-icon type="accessories" class="fa-2x "/>
</span>
<span class="hidden-xs hidden-sm">
{{ trans('general.accessories') }}
@ -84,7 +89,7 @@
<li>
<a href="#consumables" data-toggle="tab">
<span class="hidden-lg hidden-md">
<i class="fas fa-tint fa-2x" aria-hidden="true"></i>
<x-icon type="consumables" class="fa-2x "/>
</span>
<span class="hidden-xs hidden-sm">
{{ trans('general.consumables') }}
@ -96,7 +101,7 @@
<li>
<a href="#components" data-toggle="tab">
<span class="hidden-lg hidden-md">
<i class="fas fa-hdd fa-2x" aria-hidden="true"></i>
<x-icon type="components" class="fa-2x "/>
</span>
<span class="hidden-xs hidden-sm">
{{ trans('general.components') }}
@ -108,7 +113,7 @@
<li>
<a href="#history" data-toggle="tab">
<span class="hidden-lg hidden-md">
<i class="fas fa-hdd fa-2x" aria-hidden="true"></i>
<x-icon type="history" class="fa-2x "/>
</span>
<span class="hidden-xs hidden-sm">
{{ trans('general.history') }}
@ -381,65 +386,129 @@
<div class="col-md-3">
<div class="col-md-12">
<a href="{{ route('locations.edit', ['location' => $location->id]) }}" style="width: 100%;" class="btn btn-sm btn-primary pull-left">{{ trans('admin/locations/table.update') }} </a>
</div>
<div class="col-md-12" style="padding-top: 5px;">
<a href="{{ route('locations.print_assigned', ['locationId' => $location->id]) }}" style="width: 100%;" class="btn btn-sm btn-default pull-left">{{ trans('admin/locations/table.print_assigned') }} </a>
</div>
<div class="col-md-12" style="padding-top: 5px; padding-bottom: 20px;">
<a href="{{ route('locations.print_all_assigned', ['locationId' => $location->id]) }}" style="width: 100%;" class="btn btn-sm btn-default pull-left">{{ trans('admin/locations/table.print_all_assigned') }} </a>
</div>
@if ($location->image!='')
<div class="col-md-12 text-center" style="padding-bottom: 20px;">
<img src="{{ Storage::disk('public')->url('locations/'.e($location->image)) }}" class="img-responsive img-thumbnail" style="width:100%" alt="{{ $location->name }}">
</div>
@endif
@if (($location->state!='') && ($location->country!='') && (config('services.google.maps_api_key')))
<div class="col-md-12 text-center" style="padding-bottom: 10px;">
<img src="https://maps.googleapis.com/maps/api/staticmap?markers={{ urlencode($location->address.','.$location->city.' '.$location->state.' '.$location->country.' '.$location->zip) }}&size=700x500&maptype=roadmap&key={{ config('services.google.maps_api_key') }}" class="img-thumbnail" style="width:100%" alt="Map">
</div>
@endif
@if ($location->image!='')
<div class="col-md-12 text-center" style="padding-bottom: 20px;">
<img src="{{ Storage::disk('public')->url('locations/'.e($location->image)) }}" class="img-responsive img-thumbnail" style="width:100%" alt="{{ $location->name }}">
</div>
@endif
<div class="col-md-12">
<ul class="list-unstyled" style="line-height: 25px; padding-bottom: 20px;">
@if ($location->address!='')
<li>{{ $location->address }}</li>
@endif
@if ($location->address2!='')
<li>{{ $location->address2 }}</li>
@endif
@if (($location->city!='') || ($location->state!='') || ($location->zip!=''))
<li>{{ $location->city }} {{ $location->state }} {{ $location->zip }}</li>
@endif
@if ($location->manager)
<li>{{ trans('admin/users/table.manager') }}: {!! $location->manager->present()->nameUrl() !!}</li>
@endif
@if ($location->parent)
<li>{{ trans('admin/locations/table.parent') }}: {!! $location->parent->present()->nameUrl() !!}</li>
@endif
<ul class="list-unstyled" style="line-height: 20px; padding-bottom: 20px;">
@if ($location->address!='')
<li>{{ $location->address }}</li>
@endif
@if ($location->address2!='')
<li>{{ $location->address2 }}</li>
@endif
@if (($location->city!='') || ($location->state!='') || ($location->zip!=''))
<li>{{ $location->city }} {{ $location->state }} {{ $location->zip }}</li>
@endif
@if ($location->manager)
<li>{{ trans('admin/users/table.manager') }}: {!! $location->manager->present()->nameUrl() !!}</li>
@endif
@if ($location->parent)
<li>{{ trans('admin/locations/table.parent') }}: {!! $location->parent->present()->nameUrl() !!}</li>
@endif
@if ($location->ldap_ou)
<li>{{ trans('admin/locations/table.ldap_ou') }}: {{ $location->ldap_ou }}</li>
@endif
</ul>
@if (($location->state!='') && ($location->country!='') && (config('services.google.maps_api_key')))
<div class="col-md-12 text-center">
<img src="https://maps.googleapis.com/maps/api/staticmap?markers={{ urlencode($location->address.','.$location->city.' '.$location->state.' '.$location->country.' '.$location->zip) }}&size=700x500&maptype=roadmap&key={{ config('services.google.maps_api_key') }}" class="img-thumbnail" style="width:100%" alt="Map">
</div>
@endif
@if ((($location->address!='') && ($location->city!='')) || ($location->state!='') || ($location->country!=''))
<li>
<a href="https://maps.google.com/?q={{ urlencode($location->address.','. $location->city.','.$location->state.','.$location->country.','.$location->zip) }}" target="_blank">
{!! trans('admin/locations/message.open_map', ['map_provider_icon' => '<i class="fa-brands fa-google" aria-hidden="true"></i>']) !!}
<x-icon type="external-link"/>
</a>
</li>
<li>
<a href="https://maps.apple.com/?q={{ urlencode($location->address.','. $location->city.','.$location->state.','.$location->country.','.$location->zip) }}" target="_blank">
{!! trans('admin/locations/message.open_map', ['map_provider_icon' => '<i class="fa-brands fa-apple" aria-hidden="true" style="font-size: 18px"></i>']) !!}
<x-icon type="external-link"/></a>
</li>
@endif
</ul>
</div>
@can('update', $location)
<div class="col-md-12">
<a href="{{ route('locations.edit', ['location' => $location->id]) }}" style="width: 100%;" class="btn btn-sm btn-warning btn-social">
<x-icon type="edit" />
{{ trans('admin/locations/table.update') }}
</a>
</div>
@endcan
<div class="col-md-12" style="padding-top: 5px;">
<a href="{{ route('locations.print_assigned', ['locationId' => $location->id]) }}" style="width: 100%;" class="btn btn-sm btn-primary btn-social hidden-print">
<x-icon type="print" />
{{ trans('admin/locations/table.print_assigned') }}
</a>
</div>
<div class="col-md-12" style="padding-top: 5px;">
<a href="{{ route('locations.print_all_assigned', ['locationId' => $location->id]) }}" style="width: 100%;" class="btn btn-sm btn-primary btn-social hidden-print">
<x-icon type="print" />
{{ trans('admin/locations/table.print_all_assigned') }}
</a>
</div>
@can('delete', $location)
<div class="col-md-12 hidden-print" style="padding-top: 10px;">
@if ($location->deleted_at=='')
@if ($location->isDeletable())
<button class="btn btn-sm btn-block btn-danger btn-social delete-location" data-toggle="modal" data-title="{{ trans('general.delete') }}" data-content="{{ trans('general.sure_to_delete_var', ['item' => $location->name]) }}" data-target="#dataConfirmModal">
<x-icon type="delete" />
{{ trans('general.delete') }}
</button>
@else
<a href="#" class="btn btn-block btn-sm btn-danger btn-social hidden-print disabled" data-tooltip="true" data-placement="top" data-title="{{ trans('general.cannot_be_deleted') }}">
<x-icon type="delete" />
{{ trans('general.delete') }}
</a>
@endif
@else
<form method="POST" action="{{ route('locations.restore', ['location' => $location->id]) }}">
@csrf
<button class="btn btn-sm btn-block btn-warning btn-social delete-asset">
<x-icon type="restore" />
{{ trans('general.restore') }}
</button>
</form>
@endif
</div>
@endcan
</div>
</div>
</div>
</div>
@stop
@section('moar_scripts')
<script>
$('#dataConfirmModal').on('show.bs.modal', function (event) {
var content = $(event.relatedTarget).data('content');
var title = $(event.relatedTarget).data('title');
$(this).find(".modal-body").text(content);
$(this).find(".modal-header").text(title);
});
</script>
@include ('partials.bootstrap-table', [
'exportFile' => 'locations-export',
'search' => true
])
'exportFile' => 'locations-export',
'search' => true
])
@stop

View file

@ -35,7 +35,6 @@
<li class="active">
<a href="#assets" data-toggle="tab">
<span class="hidden-lg hidden-md">
<i class="fas fa-barcode fa-2x"></i>
</span>
@ -43,15 +42,13 @@
{{ trans('general.assets') }}
{!! ($manufacturer->assets()->AssetsForShow()->count() > 0 ) ? '<badge class="badge badge-secondary">'.number_format($manufacturer->assets()->AssetsForShow()->count()).'</badge>' : '' !!}
</span>
</a>
</li>
<li>
<a href="#licenses" data-toggle="tab">
<span class="hidden-lg hidden-md">
<i class="far fa-save fa-2x"></i>
<x-icon type="licenses" class="fa-2x" />
</span>
<span class="hidden-xs hidden-sm">
{{ trans('general.licenses') }}
@ -64,20 +61,19 @@
<a href="#accessories" data-toggle="tab">
<span class="hidden-lg hidden-md">
<i class="far fa-keyboard fa-2x"></i>
<x-icon type="accessories" class="fa-2x" />
</span>
<span class="hidden-xs hidden-sm">
{{ trans('general.accessories') }}
{!! ($manufacturer->accessories->count() > 0 ) ? '<badge class="badge badge-secondary">'.number_format($manufacturer->accessories->count()).'</badge>' : '' !!}
</span>
</a>
</li>
<li>
<a href="#consumables" data-toggle="tab">
<span class="hidden-lg hidden-md">
<i class="fas fa-tint fa-2x"></i>
<x-icon type="consumables" class="fa-2x" />
</span>
<span class="hidden-xs hidden-sm">
{{ trans('general.consumables') }}

View file

@ -55,7 +55,7 @@
<div class="box-footer text-right">
<a class="btn btn-link pull-left" href="{{ URL::previous() }}" method="post" enctype="multipart/form-data">{{ trans('button.cancel') }}</a>
<button type="submit" class="btn btn-success" id="submit-button"><i class="fas fa-check icon-white" aria-hidden="true"></i> {{ trans('general.delete') }}</button>
<button type="submit" class="btn btn-success" id="submit-button"><x-icon type="checkmark" /> {{ trans('general.delete') }}</button>
</div><!-- /.box-footer -->
</div><!-- /.box -->
</form>

View file

@ -108,7 +108,7 @@
<div class="box-footer text-right">
<a class="btn btn-link pull-left" href="{{ URL::previous() }}" method="post" enctype="multipart/form-data">{{ trans('button.cancel') }}</a>
<button type="submit" class="btn btn-success" id="submit-button"><i class="fas fa-check icon-white" aria-hidden="true"></i> {{ trans('general.update') }}</button>
<button type="submit" class="btn btn-success" id="submit-button"><x-icon type="checkmark" /> {{ trans('general.update') }}</button>
</div><!-- /.box-footer -->
</div> <!--/.box.box-default-->
</form>

View file

@ -47,7 +47,7 @@
<div class="input-group col-md-5" style="padding-left: 0px;">
<div class="input-group date" data-provide="datepicker" data-date-format="yyyy-mm-dd" data-autoclose="true" data-date-clear-btn="true">
<input type="text" class="form-control" placeholder="{{ trans('general.select_date') }}" name="{{ $field->db_column_name() }}" id="{{ $field->db_column_name() }}" readonly value="{{ old($field->db_column_name(),(isset($item) ? Helper::gracefulDecrypt($field, $item->{$field->db_column_name()}) : $field->defaultValue($model->id))) }}" style="background-color:inherit">
<span class="input-group-addon"><i class="fas fa-calendar" aria-hidden="true"></i></span>
<span class="input-group-addon"><x-icon type="calendar" /></span>
</div>
</div>

View file

@ -63,7 +63,7 @@
<div class="input-group col-md-5" style="padding-left: 0px;">
<div class="input-group date" data-provide="datepicker" data-date-format="yyyy-mm-dd" data-autoclose="true" data-date-clear-btn="true">
<input type="text" class="form-control" placeholder="{{ trans('general.select_date') }}" name="{{ $field->db_column_name() }}" id="{{ $field->db_column_name() }}" readonly value="{{ old($field->db_column_name(),(isset($item) ? Helper::gracefulDecrypt($field, $item->{$field->db_column_name()}) : $field->defaultValue($model->id))) }}" style="background-color:inherit">
<span class="input-group-addon"><i class="fas fa-calendar" aria-hidden="true"></i></span>
<span class="input-group-addon"><x-icon type="calendar" /></span>
</div>
</div>

View file

@ -41,9 +41,9 @@
<span class="hidden-lg hidden-md">
<i class="fas fa-barcode fa-2x"></i>
</span>
<span class="hidden-xs hidden-sm">
{{ trans('general.assets') }}
{!! ($model->assets()->AssetsForShow()->count() > 0 ) ? '<badge class="badge badge-secondary">'.number_format($model->assets()->AssetsForShow()->count()).'</badge>' : '' !!}
<span class="hidden-xs hidden-sm">
{{ trans('general.assets') }}
{!! ($model->assets()->AssetsForShow()->count() > 0 ) ? '<badge class="badge badge-secondary">'.number_format($model->assets()->AssetsForShow()->count()).'</badge>' : '' !!}
</span>
</a>
</li>
@ -62,7 +62,7 @@
</li>
<li class="pull-right">
<a href="#" data-toggle="modal" data-target="#uploadFileModal">
<i class="fas fa-paperclip" aria-hidden="true"></i>
<x-icon type="paperclip" />
{{ trans('button.upload') }}
</a>
</li>
@ -173,7 +173,7 @@
</a>
<a href="{{ route('show/modelfile', [$model->id, $file->id, 'inline'=>'true']) }}" class="btn btn-sm btn-default" target="_blank">
<i class="fa fa-external-link" aria-hidden="true"></i>
<x-icon type="external-link" />
</a>
@endif
@ -268,7 +268,7 @@
@if ($model->manufacturer->support_url)
<li>
<i class="far fa-life-ring"></i> <a href="{{ $model->manufacturer->support_url }}">{{ $model->manufacturer->support_url }}</a>
<x-icon type="more-info" /> <a href="{{ $model->manufacturer->support_url }}">{{ $model->manufacturer->support_url }}</a>
</li>
@endif
@ -332,39 +332,47 @@
</div>
@can('update', \App\Models\AssetModel::class)
<div class="col-md-12" style="padding-bottom: 5px;">
<a href="{{ route('models.edit', $model->id) }}" style="width: 100%;" class="btn btn-sm btn-primary hidden-print">{{ trans('admin/models/table.edit') }}</a>
<a href="{{ route('models.edit', $model->id) }}" style="width: 100%;" class="btn btn-sm btn-warning btn-social hidden-print">
<x-icon type="edit" />
{{ trans('admin/models/table.edit') }}
</a>
</div>
@endcan
@can('create', \App\Models\AssetModel::class)
<div class="col-md-12" style="padding-bottom: 5px;">
<a href="{{ route('models.clone.create', $model->id) }}" style="width: 100%;" class="btn btn-sm btn-primary hidden-print">{{ trans('admin/models/table.clone') }}</a>
<a href="{{ route('models.clone.create', $model->id) }}" style="width: 100%;" class="btn btn-sm btn-info btn-social hidden-print">
<x-icon type="clone" />
{{ trans('admin/models/table.clone') }}
</a>
</div>
@endcan
@can('delete', \App\Models\AssetModel::class)
@if ($model->assets_count > 0)
<div class="col-md-12" style="padding-bottom: 5px;">
<button class="btn btn-block btn-sm btn-primary hidden-print disabled" data-tooltip="true" data-placement="top" data-title="{{ trans('general.cannot_be_deleted') }}">{{ trans('general.delete') }}</button>
</div>
@else
<div class="col-md-12" style="padding-top: 10px;">
@if ($model->deleted_at!='')
<form method="POST" action="{{ route('models.restore.store', $model->id) }}">
@csrf
<button style="width: 100%;" class="btn btn-sm btn-warning btn-social hidden-print">
<x-icon type="restore" />
{{ trans('button.restore') }}
</button>
</form>
@elseif ($model->assets()->count() > 0)
<button class="btn btn-block btn-sm btn-danger btn-social hidden-print disabled" data-tooltip="true" data-placement="top" data-title="{{ trans('general.cannot_be_deleted') }}">
<x-icon type="delete" />
{{ trans('general.delete') }}
</button>
@else
<button class="btn btn-block btn-sm btn-danger btn-social delete-asset" data-toggle="modal" title="{{ trans('general.delete_what', ['item'=> trans('general.asset_model')]) }}" data-content="{{ trans('general.sure_to_delete_var', ['item' => $model->name]) }}" data-target="#dataConfirmModal" data-tooltip="true" data-placement="top" data-title="{{ trans('general.delete_what', ['item'=> trans('general.asset_model')]) }}">
<x-icon type="delete" />
{{ trans('general.delete') }}
</button>
</div>
@endif
<div class="text-center col-md-12" style="padding-top: 30px; padding-bottom: 30px;">
@if ($model->deleted_at!='')
<form method="POST" action="{{ route('models.restore.store', $model->id) }}">
@csrf
<button style="width: 100%;" class="btn btn-sm btn-warning hidden-print">{{ trans('button.restore') }}</button>
</form>
@else
<button class="btn btn-block btn-sm btn-danger delete-asset" data-toggle="modal" title="{{ trans('general.delete_what', ['item'=> trans('general.asset_model')]) }}" data-content="{{ trans('general.sure_to_delete_var', ['item' => $model->name]) }}" data-target="#dataConfirmModal" data-tooltip="true" data-placement="top" data-title="{{ trans('general.delete_what', ['item'=> trans('general.asset_model')]) }}">{{ trans('general.delete') }} </button>
<span class="sr-only">{{ trans('general.delete') }}</span>
@endif
</div>
@endcan
</div>
</div> <!-- /.row -->

View file

@ -78,7 +78,7 @@
return newParams;
},
formatLoadingMessage: function () {
return '<h2><i class="fas fa-spinner fa-spin" aria-hidden="true"></i> {{ trans('general.loading') }} </h2>';
return '<h2><x-icon type="spinner" /> {{ trans('general.loading') }} </h2>';
},
icons: {
advancedSearchIcon: 'fas fa-search-plus',
@ -299,14 +299,14 @@
}
if ((row.available_actions) && (row.available_actions.clone === true)) {
actions += '<a href="{{ config('app.url') }}/' + dest + '/' + row.id + '/clone" class="actions btn btn-sm btn-info" data-tooltip="true" title="{{ trans('general.clone_item') }}"><i class="far fa-clone" aria-hidden="true"></i><span class="sr-only">Clone</span></a>&nbsp;';
actions += '<a href="{{ config('app.url') }}/' + dest + '/' + row.id + '/clone" class="actions btn btn-sm btn-info" data-tooltip="true" title="{{ trans('general.clone_item') }}"><x-icon type="clone" /><span class="sr-only">{{ trans('general.clone_item') }}</span></a>&nbsp;';
}
if ((row.available_actions) && (row.available_actions.update === true)) {
actions += '<a href="{{ config('app.url') }}/' + dest + '/' + row.id + '/edit" class="actions btn btn-sm btn-warning" data-tooltip="true" title="{{ trans('general.update') }}"><i class="fas fa-pencil-alt" aria-hidden="true"></i><span class="sr-only">{{ trans('general.update') }}</span></a>&nbsp;';
actions += '<a href="{{ config('app.url') }}/' + dest + '/' + row.id + '/edit" class="actions btn btn-sm btn-warning" data-tooltip="true" title="{{ trans('general.update') }}"><x-icon type="edit" /><span class="sr-only">{{ trans('general.update') }}</span></a>&nbsp;';
} else {
if ((row.available_actions) && (row.available_actions.update != true)) {
actions += '<span data-tooltip="true" title="{{ trans('general.cannot_be_edited') }}"><a class="btn btn-warning btn-sm disabled" onClick="return false;"><i class="fas fa-pencil-alt"></i></a></span>&nbsp;';
actions += '<span data-tooltip="true" title="{{ trans('general.cannot_be_edited') }}"><a class="btn btn-warning btn-sm disabled" onClick="return false;"><x-icon type="edit" /></a></span>&nbsp;';
}
}
@ -323,11 +323,11 @@
+ ' data-toggle="modal" '
+ ' data-content="{{ trans('general.sure_to_delete') }} ' + name_for_box + '?" '
+ ' data-title="{{ trans('general.delete') }}" onClick="return false;">'
+ '<i class="fas fa-trash" aria-hidden="true"></i><span class="sr-only">{{ trans('general.delete') }}</span></a>&nbsp;';
+ '<x-icon type="delete" /><span class="sr-only">{{ trans('general.delete') }}</span></a>&nbsp;';
} else {
// Do not show the delete button on things that are already deleted
if ((row.available_actions) && (row.available_actions.restore != true)) {
actions += '<span data-tooltip="true" title="{{ trans('general.cannot_be_deleted') }}"><a class="btn btn-danger btn-sm delete-asset disabled" onClick="return false;"><i class="fas fa-trash"></i></a></span>&nbsp;';
actions += '<span data-tooltip="true" title="{{ trans('general.cannot_be_deleted') }}"><a class="btn btn-danger btn-sm delete-asset disabled" onClick="return false;"><x-icon type="delete" /><span class="sr-only">{{ trans('general.cannot_be_deleted') }}</span></a></span>&nbsp;';
}
}
@ -336,7 +336,7 @@
if ((row.available_actions) && (row.available_actions.restore === true)) {
actions += '<form style="display: inline;" method="POST" action="{{ config('app.url') }}/' + dest + '/' + row.id + '/restore"> ';
actions += '@csrf';
actions += '<button class="btn btn-sm btn-warning" data-tooltip="true" title="{{ trans('general.restore') }}"><i class="fas fa-retweet"></i></button>&nbsp;';
actions += '<button class="btn btn-sm btn-warning" data-tooltip="true" title="{{ trans('general.restore') }}"><x-icon type="restore" /><span class="sr-only">{{ trans('general.restore') }}</span></button>&nbsp;';
}
actions +='</nobr>';
@ -556,7 +556,7 @@
} else if (row.custom_fields[field_column_plain].field_format=='BOOLEAN') {
return (row.custom_fields[field_column_plain].value == 1) ? "<span class='fas fa-check-circle' style='color:green'>" : "<span class='fas fa-times-circle' style='color:red' />";
} else if (row.custom_fields[field_column_plain].field_format=='EMAIL') {
return '<a href="mailto:' + row.custom_fields[field_column_plain].value + '" style="white-space: nowrap" data-tooltip="true" title="{{ trans('general.send_email') }}"><i class="fa-regular fa-envelope" aria-hidden="true"></i> ' + row.custom_fields[field_column_plain].value + '</a>';
return '<a href="mailto:' + row.custom_fields[field_column_plain].value + '" style="white-space: nowrap" data-tooltip="true" title="{{ trans('general.send_email') }}"><x-icon type="email" /> ' + row.custom_fields[field_column_plain].value + '</a>';
}
}
return row.custom_fields[field_column_plain].value;
@ -576,7 +576,7 @@
if (value) {
if ((value.indexOf("{") === -1) || (value.indexOf("}") ===-1)) {
return '<nobr><a href="' + value + '" target="_blank" title="{{ trans('general.external_link_tooltip') }} ' + value + '" data-tooltip="true"><i class="fa fa-external-link"></i> ' + value + '</a></nobr>';
return '<nobr><a href="' + value + '" target="_blank" title="{{ trans('general.external_link_tooltip') }} ' + value + '" data-tooltip="true"><x-icon type="external-link" /> ' + value + '</a></nobr>';
}
return value;
}
@ -612,7 +612,7 @@
extra_pretty_index = prettyLog(pretty_index);
result += extra_pretty_index + ': <del>' + value[index].old + '</del> <i class="fas fa-long-arrow-alt-right" aria-hidden="true"></i> ' + value[index].new + '<br>'
result += extra_pretty_index + ': <del>' + value[index].old + '</del> <x-icon type="long-arrow-right" /> ' + value[index].new + '<br>'
}
return result;
@ -643,7 +643,7 @@
// Create a linked phone number in the table list
function phoneFormatter(value) {
if (value) {
return '<span style="white-space: nowrap;"><a href="tel:' + value + '" data-tooltip="true" title="{{ trans('general.call') }}"><i class="fa-solid fa-phone" aria-hidden="true"></i> ' + value + '</a></span>';
return '<span style="white-space: nowrap;"><a href="tel:' + value + '" data-tooltip="true" title="{{ trans('general.call') }}"><x-icon type="phone" /> ' + value + '</a></span>';
}
}
@ -664,7 +664,7 @@
function assetTagLinkFormatter(value, row) {
if ((row.asset) && (row.asset.id)) {
if (row.asset.deleted_at!='') {
return '<span style="white-space: nowrap;"><i class="fas fa-times text-danger"></i><span class="sr-only">{{ trans('admin/hardware/general.deleted') }}</span> <del><a href="{{ config('app.url') }}/hardware/' + row.asset.id + '" data-tooltip="true" title="{{ trans('admin/hardware/general.deleted') }}">' + row.asset.asset_tag + '</a></del></span>';
return '<span style="white-space: nowrap;"><x-icon type="x" class="text-danger" /><span class="sr-only">{{ trans('admin/hardware/general.deleted') }}</span> <del><a href="{{ config('app.url') }}/hardware/' + row.asset.id + '" data-tooltip="true" title="{{ trans('admin/hardware/general.deleted') }}">' + row.asset.asset_tag + '</a></del></span>';
}
return '<a href="{{ config('app.url') }}/hardware/' + row.asset.id + '">' + row.asset.asset_tag + '</a>';
}
@ -689,7 +689,7 @@
if ((row.asset) && (row.asset.serial)) {
if (row.asset.deleted_at!='') {
return '<span style="white-space: nowrap;"><i class="fas fa-times text-danger"></i><span class="sr-only">deleted</span> <del><a href="{{ config('app.url') }}/hardware/' + row.asset.id + '" data-tooltip="true" title="{{ trans('admin/hardware/general.deleted') }}">' + row.asset.serial + '</a></del></span>';
return '<span style="white-space: nowrap;"><x-icon type="x" class="text-danger" /><span class="sr-only">deleted</span> <del><a href="{{ config('app.url') }}/hardware/' + row.asset.id + '" data-tooltip="true" title="{{ trans('admin/hardware/general.deleted') }}">' + row.asset.serial + '</a></del></span>';
}
return '<a href="{{ config('app.url') }}/hardware/' + row.asset.id + '">' + row.asset.serial + '</a>';
}
@ -698,9 +698,9 @@
function trueFalseFormatter(value) {
if ((value) && ((value == 'true') || (value == '1'))) {
return '<i class="fas fa-check text-success"></i><span class="sr-only">{{ trans('general.true') }}</span>';
return '<x-icon type="checkmark" class="text-success" /><span class="sr-only">{{ trans('general.true') }}</span>';
} else {
return '<i class="fas fa-times text-danger"></i><span class="sr-only">{{ trans('general.false') }}</span>';
return '<x-icon type="x" class="text-danger" /><span class="sr-only">{{ trans('general.false') }}</span>';
}
}
@ -718,7 +718,7 @@
function emailFormatter(value) {
if (value) {
return '<a href="mailto:' + value + '" style="white-space: nowrap" data-tooltip="true" title="{{ trans('general.send_email') }}"><i class="fa-regular fa-envelope" aria-hidden="true"></i> ' + value + '</a>';
return '<a href="mailto:' + value + '" style="white-space: nowrap" data-tooltip="true" title="{{ trans('general.send_email') }}"><x-icon type="email" /> ' + value + '</a>';
}
}
@ -787,7 +787,7 @@
}
function downloadFormatter(value) {
if (value) {
return '<a href="' + value + '" target="_blank"><i class="fas fa-download"></i></a>';
return '<a href="' + value + '" target="_blank"><x-icon type="download" /></a>';
}
}
@ -795,7 +795,7 @@
if ((value) && (value.url) && (value.inlineable)) {
return '<a href="' + value.url + '" data-toggle="lightbox" data-type="image"><img src="' + value.url + '" style="max-height: {{ $snipeSettings->thumbnail_max_h }}px; width: auto;" class="img-responsive"></a>';
} else if ((value) && (value.url)) {
return '<a href="' + value.url + '" class="btn btn-default"><i class="fas fa-download"></i></a>';
return '<a href="' + value.url + '" class="btn btn-default"><x-icon type="download" /></a>';
}
}

View file

@ -4,7 +4,7 @@
<div class="btn-group" data-toggle="buttons">
@if ((isset($user_select)) && ($user_select!='false'))
<label class="btn btn-default active">
<input name="checkout_to_type" value="user" aria-label="checkout_to_type" type="radio" checked="checked"><i class="fas fa-user" aria-hidden="true"></i> {{ trans('general.user') }}
<input name="checkout_to_type" value="user" aria-label="checkout_to_type" type="radio" checked="checked"><x-icon type="user" /> {{ trans('general.user') }}
</label>
@endif
@if ((isset($asset_select)) && ($asset_select!='false'))

View file

@ -4,7 +4,7 @@
<div class="input-group col-md-4">
<div class="input-group date" data-provide="datepicker" data-date-clear-btn="true" data-date-format="yyyy-mm-dd" data-autoclose="true">
<input type="text" class="form-control" placeholder="{{ trans('general.select_date') }}" name="{{ $fieldname }}" id="{{ $fieldname }}" value="{{ old($fieldname, ($item->{$fieldname}) ? date('Y-m-d', strtotime($item->{$fieldname})) : '') }}" readonly style="background-color:inherit" maxlength="10">
<span class="input-group-addon"><i class="fas fa-calendar" aria-hidden="true"></i></span>
<span class="input-group-addon"><x-icon type="calendar" /></span>
</div>
{!! $errors->first($fieldname, '<span class="alert-msg" aria-hidden="true"><i class="fas fa-times" aria-hidden="true"></i> :message</span>') !!}
</div>

View file

@ -4,7 +4,7 @@
<div class="input-group col-md-4">
<div class="input-group date" data-provide="datepicker" data-date-clear-btn="true" data-date-format="yyyy-mm-dd" data-autoclose="true">
<input type="text" class="form-control" placeholder="{{ trans('general.select_date') }}" name="asset_eol_date" id="asset_eol_date" readonly value="{{ old('asset_eol_date', optional($item->asset_eol_date)->format('Y-m-d') ?? $item->asset_eol_date ?? '') }}" style="background-color:inherit" />
<span class="input-group-addon"><i class="fas fa-calendar" aria-hidden="true"></i></span>
<span class="input-group-addon"><x-icon type="calendar" /></span>
</div>
{!! $errors->first('asset_eol_date', '<span class="alert-msg" aria-hidden="true"><i class="fas fa-times" aria-hidden="true"></i> :message</span>') !!}
</div>

View file

@ -4,7 +4,7 @@
<div class="input-group col-md-4">
<div class="input-group date" data-provide="datepicker" data-date-clear-btn="true" data-date-format="yyyy-mm-dd" data-autoclose="true">
<input type="text" class="form-control" placeholder="{{ trans('general.select_date') }}" name="purchase_date" id="purchase_date" readonly value="{{ old('purchase_date', ($item->purchase_date) ? $item->purchase_date->format('Y-m-d') : '') }}" style="background-color:inherit">
<span class="input-group-addon"><i class="fas fa-calendar" aria-hidden="true"></i></span>
<span class="input-group-addon"><x-icon type="calendar" /></span>
</div>
{!! $errors->first('purchase_date', '<span class="alert-msg" aria-hidden="true"><i class="fas fa-times" aria-hidden="true"></i> :message</span>') !!}
</div>

View file

@ -1,5 +1,5 @@
<button type="submit" class="btn btn-primary pull-right">
<i class="fas fa-check icon-white"></i>
<x-icon type="checkmark" />
{{ trans('general.save') }}
</button>

View file

@ -2,6 +2,6 @@
<div class="box-footer text-right" style="padding-bottom: 0px;">
<a class="btn btn-link pull-left" href="{{ URL::previous() }}">{{ trans('button.cancel') }}</a>
<button type="submit" {{$snipeSettings->shortcuts_enabled == 1 ? "accesskey=s" : ''}} class="btn btn-primary"><i class="fas fa-check icon-white" aria-hidden="true"></i> {{ trans('general.save') }}</button>
<button type="submit" {{$snipeSettings->shortcuts_enabled == 1 ? "accesskey=s" : ''}} class="btn btn-primary"><x-icon type="checkmark" /> {{ trans('general.save') }}</button>
</div>
<!-- / partials/forms/edit/submit.blade.php -->

View file

@ -1,3 +1,4 @@
<a style="padding-left: 10px; font-size: 18px;" class="text-dark-gray hidden-print" data-trigger="focus" tabindex="0" role="button" data-toggle="popover" title="{{ trans('general.more_info') }}" data-placement="right" data-html="true" data-content="{{ (isset($helpText)) ? $helpText : 'Help Info Missing' }}">
<i class="far fa-life-ring" aria-hidden="true"><span class="sr-only">{{ trans('general.moreinfo') }}</span></i>
<x-icon type="more-info" />
<span class="sr-only">{{ trans('general.moreinfo') }}</span>
</a>

View file

@ -9,7 +9,10 @@
@section('header_right')
{{ Form::open(['method' => 'post', 'class' => 'form-horizontal']) }}
{{csrf_field()}}
<button type="submit" class="btn btn-default"><i class="fas fa-download icon-white" aria-hidden="true"></i> {{ trans('general.download_all') }}</button>
<button type="submit" class="btn btn-default">
<x-icon type="download" />
{{ trans('general.download_all') }}
</button>
{{ Form::close() }}
@stop

View file

@ -32,7 +32,7 @@
<div class="panel box box-default">
<div class="box-header with-border">
<h2 class="box-title">
<i class="fas fa-bell"></i> {{ trans('admin/settings/general.alerts') }}
<x-icon type="bell"/> {{ trans('admin/settings/general.alerts') }}
</h2>
</div>
<div class="box-body">
@ -173,7 +173,7 @@
<a class="btn btn-link text-left" href="{{ route('settings.index') }}">{{ trans('button.cancel') }}</a>
</div>
<div class="text-right col-md-6">
<button type="submit" class="btn btn-primary"><i class="fas fa-check icon-white" aria-hidden="true"></i> {{ trans('general.save') }}</button>
<button type="submit" class="btn btn-primary"><x-icon type="checkmark" /> {{ trans('general.save') }}</button>
</div>
</div>

View file

@ -32,8 +32,8 @@
<div class="panel box box-default">
<div class="box-header with-border">
<h2 class="box-title">
<i class="fas fa-list-ol"></i> {{ trans('general.asset_tags') }}
</h4>
<x-icon type="asset-tags"/> {{ trans('general.asset_tags') }}
</h2>
</div>
<div class="box-body">
@ -98,7 +98,7 @@
<a class="btn btn-link text-left" href="{{ route('settings.index') }}">{{ trans('button.cancel') }}</a>
</div>
<div class="text-right col-md-6">
<button type="submit" class="btn btn-primary"><i class="fas fa-check icon-white" aria-hidden="true"></i> {{ trans('general.save') }}</button>
<button type="submit" class="btn btn-primary"><x-icon type="checkmark" /> {{ trans('general.save') }}</button>
</div>
</div>

View file

@ -113,7 +113,7 @@
<div class="box box-default">
<div class="box-header with-border">
<h2 class="box-title">
<i class="far fa-file-archive" aria-hidden="true"></i>
<x-icon type="backups"/>
{{ trans('admin/settings/general.backups_upload') }}
</h2>
<div class="box-tools pull-right">
@ -144,13 +144,16 @@
<!-- displayed on screen -->
<label class="btn btn-default col-md-12 col-xs-12" aria-hidden="true">
<i class="fas fa-paperclip" aria-hidden="true"></i>
<x-icon type="paperclip" />
{{ trans('button.select_file') }}
<input type="file" name="file" class="js-uploadFile" id="uploadFile" data-maxsize="{{ Helper::file_upload_max_size() }}" accept="application/zip" style="display:none;" aria-label="file" aria-hidden="true">
</label>
</div>
<div class="col-md-4 col-xs-4">
<button class="btn btn-primary col-md-12 col-xs-12" id="uploadButton" disabled>{{ trans('button.upload') }} <span id="uploadIcon"></span></button>
<button class="btn btn-primary col-md-12 col-xs-12" id="uploadButton" disabled>
{{ trans('button.upload') }}
<span id="uploadIcon"></span>
</button>
</div>
<div class="col-md-12">
@ -170,7 +173,8 @@
<div class="box box-warning">
<div class="box-header with-border">
<h2 class="box-title">
<i class="fas fa-exclamation-triangle text-orange" aria-hidden="true"></i> {{ trans('admin/settings/general.backups_restoring') }}</h2>
<x-icon type="warning" class="text-orange"/> {{ trans('admin/settings/general.backups_restoring') }}
</h2>
<div class="box-tools pull-right">
</div>
</div><!-- /.box-header -->

View file

@ -32,7 +32,8 @@
<div class="panel box box-default">
<div class="box-header with-border">
<h2 class="box-title">
<i class="fas fa-barcode" aria-hidden="true"></i> {{ trans('admin/settings/general.barcodes') }}
<x-icon type="assets"/>
{{ trans('admin/settings/general.barcodes') }}
</h2>
</div>
<div class="box-body">
@ -141,7 +142,7 @@
<a class="btn btn-link text-left" href="{{ route('settings.index') }}">{{ trans('button.cancel') }}</a>
</div>
<div class="text-right col-md-6">
<button type="submit" class="btn btn-success"><i class="fas fa-check icon-white" aria-hidden="true"></i> {{ trans('general.save') }}</button>
<button type="submit" class="btn btn-success"><x-icon type="checkmark" /> {{ trans('general.save') }}</button>
</div>
</div>

View file

@ -32,7 +32,8 @@
<div class="panel box box-default">
<div class="box-header with-border">
<h2 class="box-title">
<i class="fas fa-copyright"></i> {{ trans('admin/settings/general.brand') }}
<x-icon type="branding"/>
{{ trans('admin/settings/general.brand') }}
</h2>
</div>
<div class="box-body">
@ -310,7 +311,7 @@
<a class="btn btn-link text-left" href="{{ route('settings.index') }}">{{ trans('button.cancel') }}</a>
</div>
<div class="text-right col-md-6">
<button type="submit" class="btn btn-primary"><i class="fas fa-check icon-white" aria-hidden="true"></i> {{ trans('general.save') }}</button>
<button type="submit" class="btn btn-primary"><x-icon type="checkmark" /> {{ trans('general.save') }}</button>
</div>
</div>

View file

@ -29,7 +29,7 @@
<div class="panel box box-default">
<div class="box-header with-border">
<h2 class="box-title">
<i class="fas fa-wrench" aria-hidden="true"></i>
<x-icon type="general-settings"/>
{{ trans('admin/settings/general.general_settings') }}
</h2>
</div>
@ -395,7 +395,7 @@
<a class="btn btn-link text-left" href="{{ route('settings.index') }}">{{ trans('button.cancel') }}</a>
</div>
<div class="text-right col-md-6">
<button type="submit" class="btn btn-primary"><i class="fas fa-check icon-white" aria-hidden="true"></i> {{ trans('general.save') }}</button>
<button type="submit" class="btn btn-primary"><x-icon type="checkmark" /> {{ trans('general.save') }}</button>
</div>
</div>

View file

@ -27,7 +27,8 @@
<div class="panel box box-default">
<div class="box-header with-border">
<h2 class="box-title">
<i class="fa-brands fa-google"></i> {{ trans('admin/settings/general.google_login') }}
<x-icon type="google"/>
{{ trans('admin/settings/general.google_login') }}
</h2>
</div>
<div class="box-body">
@ -104,7 +105,7 @@
<a class="btn btn-link text-left" href="{{ route('settings.index') }}">{{ trans('button.cancel') }}</a>
</div>
<div class="text-right col-md-6">
<button type="submit" class="btn btn-success"{{ (config('app.lock_passwords')===true) ? ' disabled': '' }}><i class="fas fa-check icon-white" aria-hidden="true"></i> {{ trans('general.save') }}</button>
<button type="submit" class="btn btn-success"{{ (config('app.lock_passwords')===true) ? ' disabled': '' }}><x-icon type="checkmark" /> {{ trans('general.save') }}</button>
</div>
</div>

View file

@ -61,7 +61,7 @@
<div class="box-body text-center">
<h5>
<a href="{{ route('settings.branding.index') }}" class="settings_button">
<i class="fas fa-copyright fa-4x" aria-hidden="true"></i>
<x-icon type="branding" class="fa-4x"/>
<br><br>
<span class="name">{{ trans('admin/settings/general.brand') }}</span>
<span class="keywords" aria-hidden="true" style="display:none">{{ trans('admin/settings/general.brand_keywords') }}</span>
@ -78,7 +78,7 @@
<div class="box-body text-center">
<h5>
<a href="{{ route('settings.general.index') }}" class="settings_button">
<i class="fas fa-wrench fa-4x" aria-hidden="true"></i>
<x-icon type="general-settings" class="fa-4x"/>
<br><br>
<span class="name"> {{ trans('admin/settings/general.general_settings') }}</span>
<span class="keywords" aria-hidden="true" style="display:none">{{ trans('admin/settings/general.general_settings_keywords') }}</span>
@ -95,7 +95,7 @@
<div class="box-body text-center">
<h5>
<a href="{{ route('settings.security.index') }}" class="settings_button">
<i class="fas fa-lock fa-4x" aria-hidden="true"></i>
<x-icon type="locked" class="fa-4x"/>
<br><br>
<span class="name">{{ trans('admin/settings/general.security') }}</span>
<span class="keywords" aria-hidden="true" style="display:none">{{ trans('admin/settings/general.security_keywords') }}</span>
@ -111,7 +111,7 @@
<div class="box-body text-center">
<h5>
<a href="{{ route('groups.index') }}" class="settings_button">
<i class="fas fa-user-friends fa-4x" aria-hidden="true"></i>
<x-icon type="groups" class="fa-4x"/>
<br><br>
<span class="name">{{ trans('general.groups') }}</span>
<span class="keywords" aria-hidden="true" style="display:none"> {{ trans('admin/settings/general.groups_keywords') }}</span>
@ -128,7 +128,7 @@
<div class="box-body text-center">
<h5>
<a href="{{ route('settings.localization.index') }}" class="settings_button">
<i class="fas fa-globe-americas fa-4x" aria-hidden="true"></i>
<x-icon type="globe-us" class="fa-4x"/>
<br><br>
<span class="name">{{ trans('admin/settings/general.localization') }}</span>
<span class="keywords" aria-hidden="true" style="display:none"> {{ trans('admin/settings/general.localization_keywords') }}</span>
@ -146,7 +146,7 @@
<div class="box-body text-center">
<h5>
<a href="{{ route('settings.alerts.index') }}" class="settings_button">
<i class="fas fa-bell fa-4x" aria-hidden="true"></i>
<x-icon type="bell" class="fa-4x"/>
<br><br>
<span class="name">{{ trans('admin/settings/general.notifications') }}</span>
@ -162,7 +162,7 @@
<div class="box-body text-center">
<h5>
<a href="{{ route('settings.slack.index') }}" class="settings_button">
<i class="fa-solid fa-hashtag fa-4x" aria-hidden="true"></i>
<x-icon type="hashtag" class="fa-4x"/>
<br><br>
<span class="name">{{ trans('admin/settings/general.integrations') }}</span>
</a>
@ -177,7 +177,7 @@
<div class="box-body text-center">
<h5>
<a href="{{ route('settings.asset_tags.index') }}" class="settings_button">
<i class="fas fa-list-ol fa-4x" aria-hidden="true"></i>
<x-icon type="asset-tags" class="fa-4x"/>
<br><br>
<span class="name">{{ trans('general.asset_tags') }}</span>
</a>
@ -192,7 +192,7 @@
<div class="box-body text-center">
<h5>
<a href="{{ route('settings.barcodes.index') }}" class="settings_button">
<i class="fas fa-barcode fa-4x" aria-hidden="true"></i>
<x-icon type="assets" class="fa-4x"/>
<br><br>
<span class="name">{{ trans('admin/settings/general.barcodes') }}</span>
</a>
@ -207,7 +207,7 @@
<div class="box-body text-center">
<h5>
<a href="{{ route('settings.labels.index') }}" class="settings_button">
<i class="fas fa-tags fa-4x" aria-hidden="true"></i>
<x-icon type="labels" class="fa-4x"/>
<br><br>
<span class="name">{{ trans('admin/settings/general.labels') }}</span>
</a>
@ -223,7 +223,7 @@
<div class="box-body text-center">
<h5>
<a href="{{ route('settings.ldap.index') }}" class="settings_button">
<i class="fas fa-sitemap fa-4x" aria-hidden="true"></i>
<x-icon type="ldap" class="fa-4x"/>
<br><br>
<span class="name">{{ trans('admin/settings/general.ldap') }}</span>
</a>
@ -238,7 +238,7 @@
<div class="box-body text-center">
<h5>
<a href="{{ route('settings.google.index') }}" class="settings_button">
<i class="fa-brands fa-google fa-4x" aria-hidden="true"></i>
<x-icon type="google" class="fa-4x"/>
<br><br>
<span class="name">Google</span>
</a>
@ -253,7 +253,7 @@
<div class="box-body text-center">
<h5>
<a href="{{ route('settings.saml.index') }}" class="settings_button">
<i class="fas fa-sign-in-alt fa-4x" aria-hidden="true"></i>
<x-icon type="saml" class="fa-4x"/>
<br><br>
<span class="name">{{ trans('admin/settings/general.saml') }}</span>
</a>
@ -268,7 +268,7 @@
<div class="box-body text-center">
<h5>
<a href="{{ route('settings.backups.index') }}" class="settings_button">
<i class="fas fa-file-archive fa-4x" aria-hidden="true"></i>
<x-icon type="backups" class="fa-4x"/>
<br><br>
<span class="name">{{ trans('admin/settings/general.backups') }}</span>
</a>
@ -284,7 +284,7 @@
<div class="box-body text-center">
<h5>
<a href="{{ route('settings.logins.index') }}" class="settings_button">
<i class="fas fa-crosshairs fa-4x" aria-hidden="true"></i>
<x-icon type="logins" class="fa-4x"/>
<br><br>
<span class="name">{{ trans('admin/settings/general.login') }}</span>
</a>
@ -299,7 +299,7 @@
<div class="box-body text-center">
<h5>
<a href="{{ route('settings.oauth.index') }}" class="settings_button">
<i class="fas fa-user-secret fa-4x" aria-hidden="true"></i>
<x-icon type="oauth" class="fa-4x"/>
<br><br>
<span class="name">{{ trans('admin/settings/general.oauth') }}</span>
</a>

View file

@ -27,11 +27,11 @@
<div class="row">
<div class="col-sm-10 col-sm-offset-1 col-md-10">
<div class="panel box box-default">
<div class="box-header with-border">
<h2 class="box-title">
<i class="fas fa-tags"></i> {{ trans('admin/settings/general.labels') }}
<x-icon type="labels"/>
{{ trans('admin/settings/general.labels') }}
</h2>
</div>
<div class="box-body">
@ -417,7 +417,7 @@
<a class="btn btn-link text-left" href="{{ route('settings.index') }}">{{ trans('button.cancel') }}</a>
</div>
<div class="text-right col-md-6">
<button type="submit" class="btn btn-primary"><i class="fas fa-check icon-white" aria-hidden="true"></i> {{ trans('general.save') }}</button>
<button type="submit" class="btn btn-primary"><x-icon type="checkmark" /> {{ trans('general.save') }}</button>
</div>
</div>

View file

@ -60,7 +60,8 @@
<div class="panel box box-default">
<div class="box-header with-border">
<h2 class="box-title">
<i class="fas fa-sitemap"></i> {{ trans('admin/settings/general.ldap_ad') }}
<x-icon type="ldap"/>
{{ trans('admin/settings/general.ldap_ad') }}
</h4>
</div>
<div class="box-body">
@ -594,7 +595,7 @@
<a class="btn btn-link text-left" href="{{ route('settings.index') }}">{{ trans('button.cancel') }}</a>
</div>
<div class="text-right col-md-6">
<button type="submit" class="btn btn-primary"><i class="fas fa-check icon-white" aria-hidden="true"></i> {{ trans('general.save') }}</button>
<button type="submit" class="btn btn-primary"><x-icon type="checkmark" /> {{ trans('general.save') }}</button>
</div>
</div>

View file

@ -32,7 +32,7 @@
<div class="panel box box-default">
<div class="box-header with-border">
<h2 class="box-title">
<i class="fas fa-globe-americas" aria-hidden="true"></i> {{ trans('admin/settings/general.localization') }}
<x-icon type="globe-us" /> {{ trans('admin/settings/general.localization') }}
</h2>
</div>
<div class="box-body">
@ -105,7 +105,7 @@
<a class="btn btn-link text-left" href="{{ route('settings.index') }}">{{ trans('button.cancel') }}</a>
</div>
<div class="text-right col-md-6">
<button type="submit" class="btn btn-primary"><i class="fas fa-check icon-white" aria-hidden="true"></i> {{ trans('general.save') }}</button>
<button type="submit" class="btn btn-primary"><x-icon type="checkmark" /> {{ trans('general.save') }}</button>
</div>
</div>

View file

@ -18,7 +18,9 @@
<div class="col-md-8 col-md-offset-2">
<div class="box box-solid box-danger">
<div class="box-header with-border">
<h2 class="box-title"><i class="fas fa-exclamation-triangle"></i> {{ trans('admin/settings/general.purge') }}</h2>
<h2 class="box-title">
<x-icon type="warning"/>
{{ trans('admin/settings/general.purge') }}</h2>
</div>
{{ Form::open(['method' => 'POST', 'files' => false, 'autocomplete' => 'off', 'class' => 'form-horizontal', 'role' => 'form' ]) }}
<!-- CSRF Token -->

View file

@ -38,7 +38,8 @@
<div class="panel box box-default">
<div class="box-header with-border">
<h2 class="box-title">
<i class="fas fa-sign-in-alt"></i> {{ trans('admin/settings/general.saml') }}
<x-icon type="saml"/>
{{ trans('admin/settings/general.saml') }}
</h2>
</div>
<div class="box-body">
@ -177,7 +178,7 @@
<a class="btn btn-link text-left" href="{{ route('settings.index') }}">{{ trans('button.cancel') }}</a>
</div>
<div class="text-right col-md-6">
<button type="submit" class="btn btn-primary"{{ config('app.lock_passwords') === true ? ' disabled': '' }}><i class="fas fa-check icon-white" aria-hidden="true"></i> {{ trans('general.save') }}</button>
<button type="submit" class="btn btn-primary"{{ config('app.lock_passwords') === true ? ' disabled': '' }}><x-icon type="checkmark" /> {{ trans('general.save') }}</button>
</div>
</div>

View file

@ -27,7 +27,8 @@
<div class="panel box box-default">
<div class="box-header with-border">
<h2 class="box-title">
<i class="fas fa-lock" aria-hidden="true"></i> {{ trans('admin/settings/general.security') }}
<x-icon type="locked"/>
{{ trans('admin/settings/general.security') }}
</h2>
</div>
<div class="box-body">
@ -180,7 +181,7 @@
<a class="btn btn-link text-left" href="{{ route('settings.index') }}">{{ trans('button.cancel') }}</a>
</div>
<div class="text-right col-md-6">
<button type="submit" class="btn btn-success"><i class="fas fa-check icon-white" aria-hidden="true"></i> {{ trans('general.save') }}</button>
<button type="submit" class="btn btn-success"><x-icon type="checkmark" /> {{ trans('general.save') }}</button>
</div>
</div>

View file

@ -31,7 +31,7 @@
<a href="#assets" data-toggle="tab">
<span class="hidden-lg hidden-md">
<i class="fas fa-barcode fa-2x" aria-hidden="true"></i>
<x-icon type="assets" class="fa-2x" />
</span>
<span class="hidden-xs hidden-sm">
{{ trans('general.assets') }}
@ -44,7 +44,7 @@
<li>
<a href="#accessories" data-toggle="tab">
<span class="hidden-lg hidden-md">
<i class="far fa-keyboard fa-2x" aria-hidden="true"></i>
<x-icon type="accessories" class="fa-2x" />
</span>
<span class="hidden-xs hidden-sm">
{{ trans('general.accessories') }}
@ -56,7 +56,7 @@
<li>
<a href="#licenses" data-toggle="tab">
<span class="hidden-lg hidden-md">
<i class="far fa-save fa-2x" aria-hidden="true"></i>
<x-icon type="licenses" class="fa-2x" />
</span>
<span class="hidden-xs hidden-sm">
{{ trans('general.licenses') }}
@ -68,7 +68,7 @@
<li>
<a href="#components" data-toggle="tab">
<span class="hidden-lg hidden-md">
<i class="far fa-save fa-2x" aria-hidden="true"></i>
<x-icon type="components" class="fa-2x" />
</span>
<span class="hidden-xs hidden-sm">
{{ trans('general.components') }}
@ -80,7 +80,7 @@
<li>
<a href="#consumables" data-toggle="tab">
<span class="hidden-lg hidden-md">
<i class="far fa-save fa-2x" aria-hidden="true"></i>
<x-icon type="consumables" class="fa-2x" />
</span>
<span class="hidden-xs hidden-sm">
{{ trans('general.consumables') }}
@ -92,7 +92,7 @@
<li>
<a href="#maintenances" data-toggle="tab">
<span class="hidden-lg hidden-md">
<i class="fas fa-wrench fa-2x"></i>
<x-icon type="maintenances" class="fa-2x" />
</span>
<span class="hidden-xs hidden-sm">
{{ trans('admin/asset_maintenances/general.asset_maintenances') }}
@ -295,7 +295,7 @@
<ul class="list-unstyled" style="line-height: 25px; padding-bottom: 20px; padding-top: 20px;">
@if ($supplier->contact!='')
<li><i class="fas fa-user" aria-hidden="true"></i> {{ $supplier->contact }}</li>
<li><x-icon type="user" /> {{ $supplier->contact }}</li>
@endif
@if ($supplier->phone!='')
<li><i class="fas fa-phone"></i>

View file

@ -230,7 +230,7 @@
<a class="btn btn-link pull-left" href="{{ URL::previous() }}">{{ trans('button.cancel') }}</a>
<button type="submit" class="btn btn-success"{{ (config('app.lock_passwords') ? ' disabled' : '') }}>
<i class="fas fa-check icon-white" aria-hidden="true"></i>
<x-icon type="checkmark" />
{{ trans('general.update') }}
</button>

View file

@ -129,7 +129,7 @@
<div class="box-footer text-right">
<a class="btn btn-link pull-left" href="{{ URL::previous() }}">{{ trans('button.cancel') }}</a>
<button type="submit" class="btn btn-success"{{ (config('app.lock_passwords') ? ' disabled' : '') }} disabled="disabled"><i class="fas fa-check icon-white" aria-hidden="true"></i> {{ trans('button.submit') }}</button>
<button type="submit" class="btn btn-success"{{ (config('app.lock_passwords') ? ' disabled' : '') }} disabled="disabled"><x-icon type="checkmark" /> {{ trans('button.submit') }}</button>
</div><!-- /.box-footer -->
</form>

View file

@ -121,7 +121,7 @@
</div> <!--/box-body-->
<div class="box-footer text-right">
<a class="btn btn-link pull-left" href="{{ URL::previous() }}">{{ trans('button.cancel') }}</a>
<button type="submit" class="btn btn-success"{{ (config('app.lock_passwords') ? ' disabled' : '') }} disabled><i class="fas fa-check icon-white" aria-hidden="true"></i> {{ trans('button.submit') }}</button>
<button type="submit" class="btn btn-success"{{ (config('app.lock_passwords') ? ' disabled' : '') }} disabled><x-icon type="checkmark" /> {{ trans('button.submit') }}</button>
</div><!-- /.box-footer -->
@foreach ($users as $user)

View file

@ -131,7 +131,7 @@
@if (config('app.lock_passwords') && ($user->id))
<!-- disallow changing existing usernames on the demo -->
<div class="col-md-8 col-md-offset-3">
<p class="text-warning"><i class="fas fa-lock"></i> {{ trans('general.feature_disabled') }}</p>
<p class="text-warning"><x-icon type="lock" /> {{ trans('general.feature_disabled') }}</p>
</div>
@endif
@ -215,7 +215,7 @@
{{ trans('admin/users/general.activated_help_text') }}
</label>
<p class="text-warning"><i class="fas fa-lock"></i> {{ trans('general.feature_disabled') }}</p>
<p class="text-warning"><x-icon type="lock" /> {{ trans('general.feature_disabled') }}</p>
@elseif ($user->id === Auth::user()->id)
<!-- disallow the user from editing their own login status -->

View file

@ -19,7 +19,7 @@
<li class="active">
<a href="#details" data-toggle="tab">
<span class="hidden-lg hidden-md">
<i class="fas fa-info-circle fa-2x"></i>
<x-icon type="info-circle" class="fa-2x" />
</span>
<span class="hidden-xs hidden-sm">{{ trans('admin/users/general.info') }}</span>
</a>
@ -28,7 +28,7 @@
<li>
<a href="#asset" data-toggle="tab">
<span class="hidden-lg hidden-md">
<i class="fas fa-barcode fa-2x" aria-hidden="true"></i>
<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>' : '' !!}
@ -39,7 +39,7 @@
<li>
<a href="#licenses" data-toggle="tab">
<span class="hidden-lg hidden-md">
<i class="far fa-save fa-2x"></i>
<x-icon type="licenses" class="fa-2x" />
</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>' : '' !!}
@ -50,7 +50,7 @@
<li>
<a href="#accessories" data-toggle="tab">
<span class="hidden-lg hidden-md">
<i class="far fa-keyboard fa-2x"></i>
<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>' : '' !!}
@ -61,7 +61,7 @@
<li>
<a href="#consumables" data-toggle="tab">
<span class="hidden-lg hidden-md">
<i class="fas fa-tint fa-2x"></i>
<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>' : '' !!}
@ -72,7 +72,7 @@
<li>
<a href="#files" data-toggle="tab">
<span class="hidden-lg hidden-md">
<i class="far fa-file fa-2x"></i>
<x-icon type="files" class="fa-2x" />
</span>
<span class="hidden-xs hidden-sm">{{ trans('general.file_uploads') }}
{!! ($user->uploads->count() > 0 ) ? '<badge class="badge badge-secondary">'.number_format($user->uploads->count()).'</badge>' : '' !!}
@ -83,7 +83,7 @@
<li>
<a href="#history" data-toggle="tab">
<span class="hidden-lg hidden-md">
<i class="fas fa-history fa-2x"></i>
<x-icon type="history" class="fa-2x" />
</span>
<span class="hidden-xs hidden-sm">{{ trans('general.history') }}</span>
</a>
@ -93,7 +93,8 @@
<li>
<a href="#managed-locations" data-toggle="tab">
<span class="hidden-lg hidden-md">
<i class="fas fa-map-marker-alt fa-2x"></i></span>
<x-icon type="locations" class="fa-2x" />
</span>
<span class="hidden-xs hidden-sm">{{ trans('admin/users/table.managed_locations') }}
{!! ($user->managedLocations->count() > 0 ) ? '<badge class="badge badge-secondary">'.number_format($user->managedLocations->count()).'</badge>' : '' !!}
</a>
@ -103,8 +104,9 @@
@if ($user->managesUsers->count() >= 0 )
<li>
<a href="#managed-users" data-toggle="tab">
<span class="hidden-lg hidden-md">
<i class="fa-solid fa-users fa-2x"></i></span>
<span class="hidden-lg hidden-md">
<x-icon type="users" class="fa-2x" />
</span>
<span class="hidden-xs hidden-sm">{{ trans('admin/users/table.managed_users') }}
{!! ($user->managesUsers->count() > 0 ) ? '<badge class="badge badge-secondary">'.number_format($user->managesUsers->count()).'</badge>' : '' !!}
</a>
@ -115,8 +117,8 @@
@can('update', $user)
<li class="dropdown pull-right">
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
<span class="hidden-xs"><i class="fas fa-cog" aria-hidden="true"></i></span>
<span class="hidden-lg hidden-md hidden-xl"><i class="fas fa-cog fa-2x" aria-hidden="true"></i></span>
<span class="hidden-xs"><x-icon type="cog" /></span>
<span class="hidden-lg hidden-md hidden-xl"><x-icon type="cog" class="fa-2x" /></span>
<span class="hidden-xs hidden-sm">
{{ trans('button.actions') }}
@ -136,8 +138,8 @@
@can('update', \App\Models\User::class)
<li class="pull-right">
<a href="#" data-toggle="modal" data-target="#uploadFileModal">
<span class="hidden-xs"><i class="fas fa-paperclip" aria-hidden="true"></i></span>
<span class="hidden-lg hidden-md hidden-xl"><i class="fas fa-paperclip fa-2x" aria-hidden="true"></i></span>
<span class="hidden-xs"><x-icon type="paperclip" /></span>
<span class="hidden-lg hidden-md hidden-xl"><x-icon type="paperclip" class="fa-2x" /></span>
<span class="hidden-xs hidden-sm">{{ trans('button.upload') }}</span>
</a>
</li>
@ -152,7 +154,7 @@
@if ($user->deleted_at!='')
<div class="col-md-12">
<div class="callout callout-warning">
<i class="icon fas fa-exclamation-triangle"></i>
<x-icon type="warning" />
{{ trans('admin/users/message.user_deleted_warning') }}
</div>
</div>
@ -164,10 +166,10 @@
<div class="col-md-12 text-center">
@if (($user->isSuperUser()) || ($user->hasAccess('admin')))
<i class="fas fa-crown fa-2x{{ ($user->isSuperUser()) ? ' text-danger' : ' text-orange'}}"></i>
<div class="{{ ($user->isSuperUser()) ? 'text-danger' : ' text-orange'}}" style="font-weight: bold">{{ ($user->isSuperUser()) ? strtolower(trans('general.superuser')) : strtolower(trans('general.admin')) }}</div>
<x-icon type="superadmin" class="fa-2x {{ ($user->isSuperUser()) ? 'text-danger' : 'text-orange'}}" />
<div class="{{ ($user->isSuperUser()) ? 'text-danger' : ' text-orange'}}" style="font-weight: bold">{{ ($user->isSuperUser()) ? strtolower(trans('general.superuser')) : strtolower(trans('general.admin')) }}</div>
@endif
@ -180,20 +182,20 @@
@can('update', $user)
<div class="col-md-12">
<a href="{{ route('users.edit', $user->id) }}" style="width: 100%;" class="btn btn-sm btn-primary hidden-print">{{ trans('admin/users/general.edit') }}</a>
<a href="{{ route('users.edit', $user->id) }}" style="width: 100%;" class="btn btn-sm btn-warning btn-social hidden-print">
<x-icon type="edit" />
{{ trans('admin/users/general.edit') }}
</a>
</div>
@endcan
@can('create', $user)
<div class="col-md-12" style="padding-top: 5px;">
<a href="{{ route('users.clone.show', $user->id) }}" style="width: 100%;" class="btn btn-sm btn-primary hidden-print">{{ trans('admin/users/general.clone') }}</a>
</div>
@endcan
@can('view', $user)
<div class="col-md-12" style="padding-top: 5px;">
@if($user->allAssignedCount() != '0')
<a href="{{ route('users.print', $user->id) }}" style="width: 100%;" class="btn btn-sm btn-primary hidden-print" target="_blank" rel="noopener">{{ trans('admin/users/general.print_assigned') }}</a>
<a href="{{ route('users.print', $user->id) }}" style="width: 100%;" class="btn btn-sm btn-primary btn-social hidden-print" target="_blank" rel="noopener">
<x-icon type="print" />
{{ trans('admin/users/general.print_assigned') }}
</a>
@else
<button style="width: 100%;" class="btn btn-sm btn-primary hidden-print" rel="noopener" disabled title="{{ trans('admin/users/message.user_has_no_assets_assigned') }}">{{ trans('admin/users/general.print_assigned') }}</button>
@endif
@ -205,12 +207,21 @@
@if(!empty($user->email) && ($user->allAssignedCount() != '0'))
<form action="{{ route('users.email',['userId'=> $user->id]) }}" method="POST">
{{ csrf_field() }}
<button style="width: 100%;" class="btn btn-sm btn-primary hidden-print" rel="noopener">{{ trans('admin/users/general.email_assigned') }}</button>
<button style="width: 100%;" class="btn btn-sm btn-primary btn-social hidden-print" rel="noopener">
<x-icon type="email" />
{{ trans('admin/users/general.email_assigned') }}
</button>
</form>
@elseif(!empty($user->email) && ($user->allAssignedCount() == '0'))
<button style="width: 100%;" class="btn btn-sm btn-primary hidden-print" rel="noopener" disabled title="{{ trans('admin/users/message.user_has_no_assets_assigned') }}">{{ trans('admin/users/general.email_assigned') }}</button>
<button style="width: 100%;" class="btn btn-sm btn-primary btn-social hidden-print" rel="noopener" disabled title="{{ trans('admin/users/message.user_has_no_assets_assigned') }}">
<x-icon type="email" />
{{ trans('admin/users/general.email_assigned') }}
</button>
@else
<button style="width: 100%;" class="btn btn-sm btn-primary hidden-print" rel="noopener" disabled title="{{ trans('admin/users/message.user_has_no_email') }}">{{ trans('admin/users/general.email_assigned') }}</button>
<button style="width: 100%;" class="btn btn-sm btn-primary btn-social hidden-print" rel="noopener" disabled title="{{ trans('admin/users/message.user_has_no_email') }}">
<x-icon type="email" />
{{ trans('admin/users/general.email_assigned') }}
</button>
@endif
</div>
@endcan
@ -221,26 +232,48 @@
@if($user->email != '')
<form action="{{ route('users.password',['userId'=> $user->id]) }}" method="POST">
{{ csrf_field() }}
<button style="width: 100%;" class="btn btn-sm btn-primary hidden-print">{{ trans('button.send_password_link') }}</button>
<button style="width: 100%;" class="btn btn-sm btn-primary btn-social hidden-print">
<x-icon type="password" />
{{ trans('button.send_password_link') }}
</button>
</form>
@else
<button style="width: 100%;" class="btn btn-sm btn-primary hidden-print" rel="noopener" disabled title="{{ trans('admin/users/message.user_has_no_email') }}">{{ trans('button.send_password_link') }}</button>
<button style="width: 100%;" class="btn btn-sm btn-primary btn-social hidden-print" rel="noopener" disabled title="{{ trans('admin/users/message.user_has_no_email') }}">
<x-icon type="email" />
{{ trans('button.send_password_link') }}
</button>
@endif
</div>
@endif
@endcan
@can('delete', $user)
@can('create', $user)
<div class="col-md-12" style="padding-top: 5px;">
<a href="{{ route('users.clone.show', $user->id) }}" style="width: 100%;" class="btn btn-sm btn-info btn-social hidden-print">
<x-icon type="clone" />
{{ trans('admin/users/general.clone') }}
</a>
</div>
@endcan
@can('delete', $user)
@if ($user->deleted_at=='')
<div class="col-md-12" style="padding-top: 30px;">
@if ($user->isDeletable())
<form action="{{route('users.destroy',$user->id)}}" method="POST">
{{csrf_field()}}
{{ method_field("DELETE")}}
<button style="width: 100%;" class="btn btn-sm btn-warning hidden-print">{{ trans('button.delete')}}</button>
<button style="width: 100%;" class="btn btn-sm btn-warning btn-social hidden-print">
<x-icon type="delete" />
{{ trans('button.delete')}}
</button>
</form>
@else
<button style="width: 100%;" class="btn btn-sm btn-warning hidden-print disabled">{{ trans('button.delete')}}</button>
<button style="width: 100%;" class="btn btn-sm btn-warning btn-social hidden-print disabled">
<x-icon type="delete" />
{{ trans('button.delete')}}
</button>
@endif
</div>
<div class="col-md-12" style="padding-top: 5px;">
@ -250,14 +283,20 @@
<input type="hidden" name="bulk_actions" value="delete" />
<input type="hidden" name="ids[{{ $user->id }}]" value="{{ $user->id }}" />
<button style="width: 100%;" class="btn btn-sm btn-danger hidden-print">{{ trans('button.checkin_and_delete') }}</button>
<button style="width: 100%;" class="btn btn-sm btn-danger btn-social hidden-print">
<x-icon type="checkin-and-delete" />
{{ trans('button.checkin_and_delete') }}
</button>
</form>
</div>
@else
<div class="col-md-12" style="padding-top: 5px;">
<form method="POST" action="{{ route('users.restore.store', $user->id) }}">
@csrf
<button style="width: 100%;" class="btn btn-sm btn-warning hidden-print">{{ trans('button.restore') }}</button>
<button style="width: 100%;" class="btn btn-sm btn-warning btn-social hidden-print">
<x-icon type="restore" />
{{ trans('button.restore') }}
</button>
</form>
</div>
@endif
@ -309,9 +348,9 @@
<div class="col-md-9">
@if ($user->isSuperUser())
<label class="label label-danger" data-tooltip="true" title="{{ trans('general.superuser_tooltip') }}"><i class="fas fa-crown" title="{{ trans('general.superuser') }}"></i></label>&nbsp;
<span class="label label-danger" data-tooltip="true" title="{{ trans('general.superuser_tooltip') }}"><x-icon type="superadmin" title="{{ trans('general.superuser') }}" /></span>&nbsp;
@elseif ($user->hasAccess('admin'))
<label class="label label-warning" data-tooltip="true" title="{{ trans('general.admin_tooltip') }}"><i class="fas fa-crown" title="{{ trans('general.admin') }}"></i></label>&nbsp;
<span class="label label-warning" data-tooltip="true" title="{{ trans('general.admin_tooltip') }}"><x-icon type="superadmin" title="{{ trans('general.admin') }}" /></span>&nbsp;
@endif
{{ $user->username }}
@ -447,7 +486,9 @@
{{ trans('admin/users/table.email') }}
</div>
<div class="col-md-9">
<a href="mailto:{{ $user->email }}" data-tooltip="true" title="{{ trans('general.send_email') }}"><i class="fa-regular fa-envelope" aria-hidden="true"></i> {{ $user->email }}</a>
<a href="mailto:{{ $user->email }}" data-tooltip="true" title="{{ trans('general.send_email') }}">
<x-icon type="email" />
{{ $user->email }}</a>
</div>
</div>
@endif
@ -459,7 +500,7 @@
{{ trans('general.website') }}
</div>
<div class="col-md-9">
<a href="{{ $user->website }}" target="_blank"><i class="fa fa-external-link" aria-hidden="true"></i> {{ $user->website }}</a>
<a href="{{ $user->website }}" target="_blank"><x-icon type="external-link" /> {{ $user->website }}</a>
</div>
</div>
@endif
@ -471,7 +512,9 @@
{{ trans('admin/users/table.phone') }}
</div>
<div class="col-md-9">
<a href="tel:{{ $user->phone }}" data-tooltip="true" title="{{ trans('general.call') }}"><i class="fa-solid fa-phone" aria-hidden="true"></i> {{ $user->phone }}</a>
<a href="tel:{{ $user->phone }}" data-tooltip="true" title="{{ trans('general.call') }}">
<x-icon type="phone" />
{{ $user->phone }}</a>
</div>
</div>
@endif
@ -542,7 +585,13 @@
{{ trans('admin/users/general.vip_label') }}
</div>
<div class="col-md-9">
{!! ($user->vip=='1') ? '<i class="fas fa-check fa-fw fa-fw text-success" aria-hidden="true"></i> '.trans('general.yes') : '<i class="fas fa-times fa-fw text-danger" aria-hidden="true"></i> '.trans('general.no') !!}
@if ($user->vip=='1')
<x-icon type="checkmark" class="fa-fw text-success" />
{{ trans('general.yes') }}
@else
<x-icon type="x" class="fa-fw text-danger" />
{{ trans('general.no') }}
@endif
</div>
</div>
@ -552,7 +601,13 @@
{{ trans('admin/users/general.remote') }}
</div>
<div class="col-md-9">
{!! ($user->remote=='1') ? '<i class="fas fa-check fa-fw text-success" aria-hidden="true"></i> '.trans('general.yes') : '<i class="fas fa-times fa-fw text-danger" aria-hidden="true"></i> '.trans('general.no') !!}
@if ($user->remote == '1')
<x-icon type="checkmark" class="fa-fw text-success" />
{{ trans('general.yes') }}
@else
<x-icon type="x" class="fa-fw text-danger" />
{{ trans('general.no') }}
@endif
</div>
</div>
@ -562,7 +617,13 @@
{{ trans('general.login_enabled') }}
</div>
<div class="col-md-9">
{!! ($user->activated=='1') ? '<i class="fas fa-check fa-fw text-success" aria-hidden="true"></i> '.trans('general.yes') : '<i class="fas fa-times fa-fw text-danger" aria-hidden="true"></i> '.trans('general.no') !!}
@if ($user->activated == '1')
<x-icon type="checkmark" class="fa-fw text-success" />
{{ trans('general.yes') }}
@else
<x-icon type="x" class="fa-fw text-danger" />
{{ trans('general.no') }}
@endif
</div>
</div>
@ -572,7 +633,13 @@
{{ trans('general.autoassign_licenses') }}
</div>
<div class="col-md-9">
{!! ($user->autoassign_licenses=='1') ? '<i class="fas fa-check fa-fw text-success" aria-hidden="true"></i> '.trans('general.yes') : '<i class="fas fa-times fa-fw text-danger" aria-hidden="true"></i> '.trans('general.no') !!}
@if ($user->autoassign_licenses == '1')
<x-icon type="checkmark" class="fa-fw text-success" />
{{ trans('general.yes') }}
@else
<x-icon type="x" class="fa-fw text-danger" />
{{ trans('general.no') }}
@endif
</div>
</div>
@ -583,7 +650,13 @@
LDAP
</div>
<div class="col-md-9">
{!! ($user->ldap_import=='1') ? '<i class="fas fa-check fa-fw text-success" aria-hidden="true"></i> '.trans('general.yes') : '<i class="fas fa-times fa-fw text-danger" aria-hidden="true"></i> '.trans('general.no') !!}
@if ($user->ldap_import == '1')
<x-icon type="checkmark" class="fa-fw text-success" />
{{ trans('general.yes') }}
@else
<x-icon type="x" class="fa-fw text-danger" />
{{ trans('general.no') }}
@endif
</div>
</div>
@ -596,8 +669,13 @@
{{ trans('admin/users/general.two_factor_active') }}
</div>
<div class="col-md-9">
{!! ($user->two_factor_active()) ? '<i class="fas fa-check fa-fw text-success" aria-hidden="true"></i> '.trans('general.yes') : '<i class="fas fa-times fa-fw text-danger" aria-hidden="true"></i> '.trans('general.no') !!}
@if ($user->two_factor_active()) == '1')
<x-icon type="checkmark" class="fa-fw text-success" />
{{ trans('general.yes') }}
@else
<x-icon type="x" class="fa-fw text-danger" />
{{ trans('general.no') }}
@endif
</div>
</div>
@ -608,7 +686,13 @@
{{ trans('admin/users/general.two_factor_enrolled') }}
</div>
<div class="col-md-9" id="two_factor_reset_toggle">
{!! ($user->two_factor_active_and_enrolled()) ? '<i class="fas fa-check fa-fw text-success" aria-hidden="true"></i> '.trans('general.yes') : '<i class="fas fa-times fa-fw text-danger" aria-hidden="true"></i> '.trans('general.no') !!}
@if ($user->two_factor_active_and_enrolled()) == '1')
<x-icon type="checkmark" class="fa-fw text-success" />
{{ trans('general.yes') }}
@else
<x-icon type="x" class="fa-fw text-danger" />
{{ trans('general.no') }}
@endif
</div>
</div>
@ -632,7 +716,9 @@
<span id="two_factor_resetstatus">
</span>
<br>
<p class="help-block" style="line-height: 1.6;">{{ trans('admin/settings/general.two_factor_reset_help') }}</p>
<p class="help-block" style="line-height: 1.6;">
{{ trans('admin/settings/general.two_factor_reset_help') }}
</p>
</div>
@ -663,7 +749,7 @@
{{Helper::formatCurrencyOutput($user->getUserTotalCost()->total_user_cost)}}
<a id="optional_info" class="text-primary">
<i class="fa fa-caret-right fa-2x" id="optional_info_icon"></i>
<x-icon type="caret-right" id="optional_info_icon" /></i>
<strong>{{ trans('admin/hardware/form.optional_infos') }}</strong>
</a>
</div>
@ -932,7 +1018,7 @@
{{ trans('general.preview_not_available') }}
@endif
@else
<i class="fa fa-times text-danger" aria-hidden="true"></i>
<x-icon type="x" class="text-danger" />
{{ trans('general.file_not_found') }}
@endif
</td>
@ -952,12 +1038,12 @@
@if ($file->filename)
@if (Storage::exists('private_uploads/users/'.$file->filename))
<a href="{{ route('show/userfile', [$user->id, $file->id]) }}" class="btn btn-sm btn-default">
<i class="fas fa-download" aria-hidden="true"></i>
<x-icon type="download" />
<span class="sr-only">{{ trans('general.download') }}</span>
</a>
<a href="{{ route('show/userfile', [$user->id, $file->id, 'inline' => 'true']) }}" class="btn btn-sm btn-default" target="_blank">
<i class="fa fa-external-link" aria-hidden="true"></i>
<x-icon type="external-link" />
</a>
@endif
@endif
@ -965,14 +1051,13 @@
<td>{{ $file->created_at }}</td>
<td>
<a class="btn delete-asset btn-danger btn-sm hidden-print" href="{{ route('userfile.destroy', [$user->id, $file->id]) }}" data-content="Are you sure you wish to delete this file?" data-title="Delete {{ $file->filename }}?">
<i class="fa fa-trash icon-white" aria-hidden="true"></i>
<a class="btn delete-asset btn-danger btn-sm hidden-print" href="{{ route('userfile.destroy', [$user->id, $file->id]) }}" data-content="Are you sure you wish to delete this file?" data-title="{{ trans('general.delete') }} {{ $file->filename }}?">
<x-icon type="delete" />
<span class="sr-only">{{ trans('general.delete') }}</span>
</a>
</td>
</tr>
@endforeach
@ -1117,7 +1202,7 @@ $(function () {
$("#two_factor_resetrow").removeClass('success');
$("#two_factor_resetrow").removeClass('danger');
$("#two_factor_resetstatus").html('');
$("#two_factor_reseticon").html('<i class="fas fa-spinner spin"></i>');
$("#two_factor_reseticon").html('<x-icon type="spinner" />');
$.ajax({
url: '{{ route('api.users.two_factor_reset', ['id'=> $user->id]) }}',
type: 'POST',
@ -1129,15 +1214,15 @@ $(function () {
dataType: 'json',
success: function (data) {
$("#two_factor_reset_toggle").html('').html('<span class="text-danger"><i class="fas fa-times" aria-hidden="true"></i> {{ trans('general.no') }}</span>');
$("#two_factor_reset_toggle").html('').html('<span class="text-danger"><x-icon type="x" /> {{ trans('general.no') }}</span>');
$("#two_factor_reseticon").html('');
$("#two_factor_resetstatus").html('<span class="text-success"><i class="fas fa-check"></i> ' + data.message + '</span>');
$("#two_factor_resetstatus").html('<span class="text-success"><x-icon type="checkmark" class="fa-2x" /> ' + data.message + '</span>');
},
error: function (data) {
$("#two_factor_reseticon").html('');
$("#two_factor_reseticon").html('<i class="fas fa-exclamation-triangle text-danger"></i>');
$("#two_factor_reseticon").html('<x-icon type="warning" class="text-danger" />');
$('#two_factor_resetstatus').text(data.message);
}
@ -1146,7 +1231,7 @@ $(function () {
});
//binds to onchange event of your input field
// binds to onchange event of your input field
var uploadedFileSize = 0;
$('#fileupload').bind('change', function() {
uploadedFileSize = this.files[0].size;
@ -1179,15 +1264,15 @@ $(function () {
var errorMessage = data.jqXHR.responseJSON.messages["file.0"];
$('#progress-bar-text').html(errorMessage[0]);
$('.progress-bar').removeClass('progress-bar-warning').addClass('progress-bar-danger').css('width','100%');
$('.progress-checkmark').fadeIn('fast').html('<i class="fas fa-times fa-3x icon-white" style="color: #d9534f"></i>');
$('.progress-checkmark').fadeIn('fast').html('<x-icon type="xt" class="fa-3x text-danger" />');
} else {
$('.progress-bar').removeClass('progress-bar-warning').addClass('progress-bar-success').css('width','100%');
$('.progress-checkmark').fadeIn('fast');
$('#progress-container').delay(950).css('visibility', 'visible');
$('.progress-bar-text').html('Finished!');
$('.progress-checkmark').fadeIn('fast').html('<i class="fas fa-check fa-3x icon-white" style="color: green"></i>');
$('.progress-checkmark').fadeIn('fast').html('<x-icon type="checkmark" class="fa-3x text-success" />');
$.each(data.result, function (index, file) {
$('<tr><td>' + file.note + '</td><<td>' + file.filename + '</td></tr>').prependTo("#files-table > tbody");
$('<tr><td>' + file.note + '</td><td>' + file.filename + '</td></tr>').prependTo("#files-table > tbody");
});
}
$('#progress').removeClass('active');

View file

@ -14,7 +14,7 @@
@endif
{{-- Show images in email! --}}
@if (($snipeSettings->show_images_in_email=='1') && ($snipeSettings->email_logo!='') && $snipeSettings->brand != '1'))
@if (($snipeSettings->show_images_in_email=='1') && ($snipeSettings->email_logo!='') && ($snipeSettings->brand != '1'))
{{-- $snipeSettings->brand = 1 = Text --}}
{{-- $snipeSettings->brand = 2 = Logo --}}

View file

@ -66,6 +66,11 @@ Route::group(['middleware' => 'auth'], function () {
[LocationsController::class, 'postBulkDeleteStore']
)->name('locations.bulkdelete.store');
Route::post(
'{location}/restore',
[LocationsController::class, 'postRestore']
)->name('locations.restore');
Route::get('{locationId}/clone',
[LocationsController::class, 'getClone']

View file

@ -0,0 +1,25 @@
<?php
namespace Tests\Feature\Livewire;
use App\Livewire\Importer;
use App\Models\User;
use Livewire\Livewire;
use Tests\TestCase;
class ImporterTest extends TestCase
{
public function testRendersSuccessfully()
{
Livewire::actingAs(User::factory()->canImport()->create())
->test(Importer::class)
->assertStatus(200);
}
public function testRequiresPermission()
{
Livewire::actingAs(User::factory()->create())
->test(Importer::class)
->assertStatus(403);
}
}

Some files were not shown because too many files have changed in this diff Show more