Compare commits
125 Commits
viclou-patch-1
...
v8.4.0
| Author | SHA1 | Date | |
|---|---|---|---|
| 8d0fda88b7 | |||
| 9188f89a2a | |||
| 91a95dbc66 | |||
| a86ffc29d1 | |||
| a15adc806b | |||
| 9ed5540c49 | |||
| 3a7e00ccc3 | |||
| f328da37bc | |||
| f82cdabccd | |||
| b9c9cc0046 | |||
| 27ece84d52 | |||
| 3adc8f279b | |||
| 1299186fb8 | |||
| d837e4845b | |||
| 39be0c5590 | |||
| 41c75022a9 | |||
| d2bb10e96d | |||
| f139a616c7 | |||
| 84924a68b7 | |||
| d5099d973b | |||
| 82b18a3207 | |||
| 5a3a63e0a4 | |||
| 10aee6bb5f | |||
| 980cc5704f | |||
| 28054a9112 | |||
| c1b11ab9bf | |||
| c226a061f5 | |||
| c0be738aef | |||
| 7a312f5868 | |||
| e6987ec148 | |||
| 973fa7a58b | |||
| 5ce493180d | |||
| b6195ba3ae | |||
| d3bd213f29 | |||
| bbdc78a13c | |||
| 9502dd8bd7 | |||
| 43971b9625 | |||
| 3c3ccae7c9 | |||
| f27a3a2c61 | |||
| b96d0d55c9 | |||
| 9789ca42f8 | |||
| da26bc5165 | |||
| 0b67626961 | |||
| 546c8ce7d5 | |||
| c76a888d11 | |||
| 38c495a4ac | |||
| f699935f5f | |||
| d0ce5e0c57 | |||
| 7a0e5b57db | |||
| 8336cf5baa | |||
| c31f1d2cce | |||
| d3d90abba7 | |||
| ea98ee07e5 | |||
| a38bfada57 | |||
| bdaf13da4c | |||
| e5ff19aec4 | |||
| 65e6519f97 | |||
| e92e550e9c | |||
| b751fe7903 | |||
| a6e34522eb | |||
| 735e6f3471 | |||
| c9f41c950a | |||
| 091c710940 | |||
| 276f412a3c | |||
| 6f6e5c847a | |||
| 6ef0274bb3 | |||
| 7ef6a72ec4 | |||
| e2b8c69cf6 | |||
| 1254d12d83 | |||
| b68642a827 | |||
| c5214b976b | |||
| e611121244 | |||
| 3aa7f0b7fe | |||
| 3d38eee71d | |||
| 90e6e309f9 | |||
| 885314b87a | |||
| ef013a7026 | |||
| 0353ade90e | |||
| d90c9282ac | |||
| d56970eaa3 | |||
| 8b3f18ec59 | |||
| 170d20ddb5 | |||
| 70407dac85 | |||
| c2334d87de | |||
| 0662e3351e | |||
| 6b90b3743e | |||
| dd1d456106 | |||
| dceead8302 | |||
| 832f449868 | |||
| 33a104f142 | |||
| 28f19689ec | |||
| ce6ee32e89 | |||
| fdf42ba321 | |||
| aadd158108 | |||
| d6592819e8 | |||
| 8f34c06196 | |||
| 9cdc73917b | |||
| 2976159499 | |||
| e302ccf985 | |||
| 08915e8607 | |||
| 32b2131bff | |||
| 50cf15fb71 | |||
| f07ef6d7c5 | |||
| 666025d7f6 | |||
| 671601365c | |||
| 263b04cd69 | |||
| 57b98ca782 | |||
| 46df19d7cd | |||
| fa18524223 | |||
| 3ebc0532ca | |||
| 4f59752b8b | |||
| 668ab221cc | |||
| ad90e005c4 | |||
| 952b3d6884 | |||
| 19ca1f7578 | |||
| ef02fab94b | |||
| 144b5e7558 | |||
| aff0a60138 | |||
| 92a641f01a | |||
| 5b6951b88d | |||
| 56313e4436 | |||
| 7810ae74d1 | |||
| 3ac1012757 | |||
| 91aec08ce0 | |||
| 68dad1d3ae |
@@ -113,7 +113,7 @@ class MoveUploadsToNewDisk extends Command
|
||||
$filename = basename($private_upload[$x]);
|
||||
|
||||
try {
|
||||
Storage::put($private_type . '/' . $filename, file_get_contents($private_upload[$i]));
|
||||
Storage::put($private_type . '/' . $filename, file_get_contents($private_upload[$x]));
|
||||
$new_url = Storage::url($private_type . '/' . $filename, $filename);
|
||||
$this->info($type_count . '. PRIVATE: ' . $filename . ' was copied to ' . $new_url);
|
||||
} catch (\Exception $e) {
|
||||
|
||||
+3
-40
@@ -775,11 +775,11 @@ class Helper
|
||||
public static function checkLowInventory()
|
||||
{
|
||||
$alert_threshold = \App\Models\Setting::getSettings()->alert_threshold;
|
||||
$consumables = Consumable::withCount('consumableAssignments as consumable_assignments_count')->whereNotNull('min_amt')->get();
|
||||
$consumables = Consumable::withCount('consumableAssignments as consumables_users_count')->whereNotNull('min_amt')->get();
|
||||
$accessories = Accessory::withCount('checkouts as checkouts_count')->whereNotNull('min_amt')->get();
|
||||
$components = Component::whereNotNull('min_amt')->get();
|
||||
$components = Component::withCount('assets as sum_unconstrained_assets')->whereNotNull('min_amt')->get();
|
||||
$asset_models = AssetModel::where('min_amt', '>', 0)->withCount(['availableAssets', 'assets'])->get();
|
||||
$licenses = License::where('min_amt', '>', 0)->get();
|
||||
$licenses = License::withCount('availCount as licenses_available')->where('min_amt', '>', 0)->get();
|
||||
|
||||
$items_array = [];
|
||||
$all_count = 0;
|
||||
@@ -1404,43 +1404,6 @@ class Helper
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Generic helper (largely used by livewire right now) that returns the font-awesome icon
|
||||
* for the object type.
|
||||
*
|
||||
* @author A. Gianotto <snipe@snipe.net>
|
||||
* @since 6.1.0
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function iconTypeByItem($item) {
|
||||
|
||||
switch ($item) {
|
||||
case 'asset':
|
||||
return 'fas fa-barcode';
|
||||
case 'accessory':
|
||||
return 'fas fa-keyboard';
|
||||
case 'component':
|
||||
return 'fas fa-hdd';
|
||||
case 'consumable':
|
||||
return 'fas fa-tint';
|
||||
case 'license':
|
||||
return 'far fa-save';
|
||||
case 'location':
|
||||
return 'fas fa-map-marker-alt';
|
||||
case 'user':
|
||||
return 'fas fa-user';
|
||||
case 'supplier':
|
||||
return 'fa-solid fa-store';
|
||||
case 'manufacturer':
|
||||
return 'fa-solid fa-building';
|
||||
case 'category':
|
||||
return 'fa-solid fa-table-columns';
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* This is a shorter way to see if the app is in demo mode.
|
||||
*
|
||||
|
||||
@@ -36,6 +36,8 @@ class IconHelper
|
||||
return 'fa-solid fa-user';
|
||||
case 'users':
|
||||
return 'fas fa-users';
|
||||
case 'supplier':
|
||||
return 'fa-solid fa-store';
|
||||
case 'restore':
|
||||
return 'fa-solid fa-trash-arrow-up';
|
||||
case 'external-link':
|
||||
@@ -87,8 +89,11 @@ class IconHelper
|
||||
case 'licenses':
|
||||
case 'license':
|
||||
return 'far fa-save';
|
||||
case 'requests':
|
||||
case 'requestable':
|
||||
return 'fas fa-laptop';
|
||||
case 'request':
|
||||
case 'requested':
|
||||
return 'fa-solid fa-bell-concierge';
|
||||
case 'reports':
|
||||
return 'fas fa-chart-bar';
|
||||
case 'heart':
|
||||
@@ -254,6 +259,8 @@ class IconHelper
|
||||
case 'min-qty':
|
||||
return 'fa-solid fa-chart-pie';
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -74,16 +74,16 @@ class AcceptanceController extends Controller
|
||||
*/
|
||||
public function store(Request $request, $id) : RedirectResponse
|
||||
{
|
||||
$acceptance = CheckoutAcceptance::find($id);
|
||||
|
||||
if (!$acceptance = CheckoutAcceptance::find($id)) {
|
||||
return redirect()->route('account.accept')->with('error', trans('admin/hardware/message.does_not_exist'));
|
||||
}
|
||||
|
||||
$assigned_user = User::find($acceptance->assigned_to_id);
|
||||
$settings = Setting::getSettings();
|
||||
$sig_filename='';
|
||||
|
||||
|
||||
if (is_null($acceptance)) {
|
||||
return redirect()->route('account.accept')->with('error', trans('admin/hardware/message.does_not_exist'));
|
||||
}
|
||||
|
||||
if (! $acceptance->isPending()) {
|
||||
return redirect()->route('account.accept')->with('error', trans('admin/users/message.error.asset_already_accepted'));
|
||||
}
|
||||
|
||||
@@ -53,6 +53,7 @@ class AccessoriesController extends Controller
|
||||
'company_id',
|
||||
'notes',
|
||||
'checkouts_count',
|
||||
'order_number',
|
||||
'qty',
|
||||
// These are *relationships* so we wouldn't normally include them in this array,
|
||||
// since they would normally create a `column not found` error,
|
||||
@@ -91,6 +92,10 @@ class AccessoriesController extends Controller
|
||||
$accessories->where('accessories.company_id', '=', $request->input('company_id'));
|
||||
}
|
||||
|
||||
if ($request->filled('order_number')) {
|
||||
$accessories->where('accessories.order_number', '=', $request->input('order_number'));
|
||||
}
|
||||
|
||||
if ($request->filled('category_id')) {
|
||||
$accessories->where('category_id', '=', $request->input('category_id'));
|
||||
}
|
||||
|
||||
@@ -154,15 +154,15 @@ class AssetsController extends Controller
|
||||
}
|
||||
|
||||
$assets = Asset::select('assets.*')
|
||||
->addSelect([
|
||||
'first_checkout_at' => Actionlog::query()
|
||||
->select('created_at')
|
||||
->whereColumn('item_id', 'assets.id')
|
||||
->where('item_type', Asset::class)
|
||||
->where('action_type', 'checkout')
|
||||
->orderBy('created_at')
|
||||
->limit(1),
|
||||
])
|
||||
// ->addSelect([
|
||||
// 'first_checkout_at' => Actionlog::query()
|
||||
// ->select('created_at')
|
||||
// ->whereColumn('item_id', 'assets.id')
|
||||
// ->where('item_type', Asset::class)
|
||||
// ->where('action_type', 'checkout')
|
||||
// ->orderBy('created_at')
|
||||
// ->limit(1),
|
||||
// ])
|
||||
->with(
|
||||
'model',
|
||||
'location',
|
||||
@@ -1148,7 +1148,9 @@ class AssetsController extends Controller
|
||||
$payload = [
|
||||
'id' => $asset->id,
|
||||
'asset_tag' => $asset->asset_tag,
|
||||
'note' => $request->input('note'),
|
||||
'note' => e($request->input('note')),
|
||||
'status_label' => e($asset->assetstatus->display_name),
|
||||
'status_type' => $asset->assetstatus->getStatuslabelType(),
|
||||
'next_audit_date' => Helper::getFormattedDateObject($asset->next_audit_date),
|
||||
];
|
||||
|
||||
|
||||
@@ -87,6 +87,10 @@ class ComponentsController extends Controller
|
||||
$components->where('components.company_id', '=', $request->input('company_id'));
|
||||
}
|
||||
|
||||
if ($request->filled('order_number')) {
|
||||
$components->where('components.order_number', '=', $request->input('order_number'));
|
||||
}
|
||||
|
||||
if ($request->filled('category_id')) {
|
||||
$components->where('category_id', '=', $request->input('category_id'));
|
||||
}
|
||||
|
||||
@@ -86,6 +86,10 @@ class ConsumablesController extends Controller
|
||||
$consumables->where('consumables.company_id', '=', $request->input('company_id'));
|
||||
}
|
||||
|
||||
if ($request->filled('order_number')) {
|
||||
$consumables->where('consumables.order_number', '=', $request->input('order_number'));
|
||||
}
|
||||
|
||||
if ($request->filled('category_id')) {
|
||||
$consumables->where('category_id', '=', $request->input('category_id'));
|
||||
}
|
||||
|
||||
@@ -32,7 +32,7 @@ class LicensesController extends Controller
|
||||
$licenses->ExpiredLicenses();
|
||||
} elseif ($request->input('status')=='expiring') {
|
||||
$licenses->ExpiringLicenses($settings->alert_interval);
|
||||
} else {
|
||||
} elseif ($request->input('status')=='active') {
|
||||
$licenses->ActiveLicenses();
|
||||
}
|
||||
|
||||
|
||||
@@ -7,8 +7,8 @@ use App\Http\Requests\ImageUploadRequest;
|
||||
use App\Models\Company;
|
||||
use App\Models\Component;
|
||||
use App\Helpers\Helper;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\Input;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Illuminate\Http\RedirectResponse;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
@@ -226,6 +226,20 @@ class ComponentsController extends Controller
|
||||
public function show(Component $component)
|
||||
{
|
||||
$this->authorize('view', $component);
|
||||
return view('components/view', compact('component'));
|
||||
return view('components/view', compact('component'))->with('snipe_component', $component);
|
||||
}
|
||||
|
||||
public function getClone(Component $component) : View | RedirectResponse
|
||||
{
|
||||
$this->authorize('create', Component::class);
|
||||
|
||||
$cloned_component = clone $component;
|
||||
$cloned_component->id = null;
|
||||
$cloned_component->deleted_at = null;
|
||||
|
||||
// Show the page
|
||||
return view('components/edit')
|
||||
->with('item', $cloned_component)
|
||||
->with('component', $cloned_component);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -403,24 +403,23 @@ class SettingsController extends Controller
|
||||
return redirect()->to('admin')->with('error', trans('admin/settings/message.update.error'));
|
||||
}
|
||||
|
||||
// Check if the audit interval has changed - if it has, we want to update ALL of the assets audit dates
|
||||
if ($request->input('audit_interval') != $setting->audit_interval) {
|
||||
|
||||
// This could be a negative number if the user is trying to set the audit interval to a lower number than it was before
|
||||
$audit_diff_months = ((int)$request->input('audit_interval') - (int)($setting->audit_interval));
|
||||
// Check if the audit interval has changed - if it has, check if we should update all of the assets audit dates
|
||||
if ((($request->input('audit_interval') != $setting->audit_interval)) && ($request->input('update_existing_dates') == 1)) {
|
||||
|
||||
// Batch update the dates. We have to use this method to avoid time limit exceeded errors on very large datasets,
|
||||
// but it DOES mean this change doesn't get logged in the action logs, since it skips the observer.
|
||||
// @see https://stackoverflow.com/questions/54879160/laravel-observer-not-working-on-bulk-insert
|
||||
$affected = Asset::whereNotNull('next_audit_date')
|
||||
->whereNull('deleted_at')
|
||||
->update(
|
||||
['next_audit_date' => DB::raw('DATE_ADD(next_audit_date, INTERVAL '.$audit_diff_months.' MONTH)')]
|
||||
);
|
||||
|
||||
Log::debug($affected .' assets affected by audit interval update');
|
||||
// This could be a negative number if the user is trying to set the audit interval to a lower number than it was before
|
||||
$audit_diff_months = ((int)$request->input('audit_interval') - (int)($setting->audit_interval));
|
||||
|
||||
// Batch update the dates. We have to use this method to avoid time limit exceeded errors on very large datasets,
|
||||
// but it DOES mean this change doesn't get logged in the action logs, since it skips the observer.
|
||||
// @see https://stackoverflow.com/questions/54879160/laravel-observer-not-working-on-bulk-insert
|
||||
$affected = Asset::whereNotNull('next_audit_date')
|
||||
->whereNull('deleted_at')
|
||||
->update(
|
||||
['next_audit_date' => DB::raw('DATE_ADD(next_audit_date, INTERVAL ' . $audit_diff_months . ' MONTH)')]
|
||||
);
|
||||
|
||||
Log::debug($affected . ' assets affected by audit interval update');
|
||||
}
|
||||
|
||||
$alert_email = rtrim($request->input('alert_email'), ',');
|
||||
|
||||
@@ -104,7 +104,7 @@ class AssetsTransformer
|
||||
'next_audit_date' => Helper::getFormattedDateObject($asset->next_audit_date, 'date'),
|
||||
'deleted_at' => Helper::getFormattedDateObject($asset->deleted_at, 'datetime'),
|
||||
'purchase_date' => Helper::getFormattedDateObject($asset->purchase_date, 'date'),
|
||||
'first_checkout' => Helper::getFormattedDateObject($asset->first_checkout_at, 'datetime'),
|
||||
// 'first_checkout' => Helper::getFormattedDateObject($asset->first_checkout_at, 'datetime'),
|
||||
'age' => $asset->purchase_date ? $asset->purchase_date->locale(app()->getLocale())->diffForHumans() : '',
|
||||
'last_checkout' => Helper::getFormattedDateObject($asset->last_checkout, 'datetime'),
|
||||
'last_checkin' => Helper::getFormattedDateObject($asset->last_checkin, 'datetime'),
|
||||
|
||||
@@ -74,6 +74,7 @@ class ComponentsTransformer
|
||||
'checkout' => Gate::allows('checkout', Component::class),
|
||||
'checkin' => Gate::allows('checkin', Component::class),
|
||||
'update' => Gate::allows('update', Component::class),
|
||||
'clone' => Gate::allows('create', Component::class),
|
||||
'delete' => $component->isDeletable(),
|
||||
];
|
||||
$array += $permissions_array;
|
||||
|
||||
@@ -44,6 +44,7 @@ class CustomFieldsTransformer
|
||||
'db_column_name' => e($field->db_column_name()),
|
||||
'format' => e($field->format),
|
||||
'field_values' => ($field->field_values) ? e($field->field_values) : null,
|
||||
'field_encrypted' => $field->field_encrypted,
|
||||
'field_values_array' => ($field->field_values) ? explode("\r\n", e($field->field_values)) : null,
|
||||
'type' => e($field->element),
|
||||
'required' => (($field->pivot) && ($field->pivot->required=='1')) ? true : false,
|
||||
|
||||
@@ -40,7 +40,7 @@ class StatuslabelsTransformer
|
||||
|
||||
$permissions_array['available_actions'] = [
|
||||
'update' => Gate::allows('update', Statuslabel::class) ? true : false,
|
||||
'delete' => (Gate::allows('delete', Statuslabel::class) && ($statuslabel->assets_count == 0)) ? true : false,
|
||||
'delete' => (Gate::allows('delete', Statuslabel::class) && ($statuslabel->isDeletable())) ? true : false,
|
||||
];
|
||||
$array += $permissions_array;
|
||||
|
||||
|
||||
@@ -56,7 +56,7 @@ class SuppliersTransformer
|
||||
|
||||
$permissions_array['available_actions'] = [
|
||||
'update' => Gate::allows('update', Supplier::class),
|
||||
'delete' => (Gate::allows('delete', Supplier::class) && ($supplier->assets_count == 0) && ($supplier->licenses_count == 0) && ($supplier->accessories_count == 0)),
|
||||
'delete' => (Gate::allows('delete', Supplier::class) && ($supplier->isDeletable())),
|
||||
];
|
||||
|
||||
$array += $permissions_array;
|
||||
|
||||
@@ -70,6 +70,7 @@ class CategoryImporter extends ItemImporter
|
||||
$this->item['use_default_eula'] = trim(($this->fetchHumanBoolean($this->findCsvMatch($row, 'use_default_eula'))) == 1) ? 1 : 0;
|
||||
$this->item['require_acceptance'] = trim(($this->fetchHumanBoolean($this->findCsvMatch($row, 'require_acceptance'))) == 1) ? 1 : 0;
|
||||
$this->item['checkin_email'] = trim(($this->fetchHumanBoolean($this->findCsvMatch($row, 'checkin_email'))) == 1) ? 1 : 0;
|
||||
$this->item['tag_color'] = trim($this->findCsvMatch($row, 'tag_color'));
|
||||
|
||||
|
||||
Log::debug('Item array is: ');
|
||||
|
||||
@@ -72,6 +72,7 @@ class ManufacturerImporter extends ItemImporter
|
||||
$this->item['support_url'] = trim($this->findCsvMatch($row, 'support_url'));
|
||||
$this->item['warranty_lookup_url'] = trim($this->findCsvMatch($row, 'warranty_lookup_url'));
|
||||
$this->item['notes'] = trim($this->findCsvMatch($row, 'notes'));
|
||||
$this->item['tag_color'] = trim($this->findCsvMatch($row, 'tag_color'));
|
||||
|
||||
|
||||
Log::debug('Item array is: ');
|
||||
|
||||
@@ -76,6 +76,7 @@ class SupplierImporter extends ItemImporter
|
||||
$this->item['contact'] = trim($this->findCsvMatch($row, 'contact'));
|
||||
$this->item['url'] = trim($this->findCsvMatch($row, 'url'));
|
||||
$this->item['notes'] = trim($this->findCsvMatch($row, 'notes'));
|
||||
$this->item['tag_color'] = trim($this->findCsvMatch($row, 'tag_color'));
|
||||
|
||||
|
||||
Log::debug('Item array is: ');
|
||||
|
||||
+41
-17
@@ -150,10 +150,15 @@ class Importer extends Component
|
||||
// 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) {
|
||||
|
||||
// Trim off any trailing spaces
|
||||
$key = trim($key);
|
||||
$header = trim($header);
|
||||
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 and the surrounding one - e.g. move on to the next header
|
||||
@@ -262,7 +267,7 @@ class Importer extends Component
|
||||
'order_number' => trans('general.order_number'),
|
||||
'purchase_cost' => trans('general.purchase_cost'),
|
||||
'purchase_date' => trans('general.purchase_date'),
|
||||
'quantity' => trans('general.qty'),
|
||||
'qty' => trans('general.qty'),
|
||||
'supplier' => trans('general.supplier'),
|
||||
];
|
||||
|
||||
@@ -278,7 +283,7 @@ class Importer extends Component
|
||||
'order_number' => trans('general.order_number'),
|
||||
'purchase_cost' => trans('general.purchase_cost'),
|
||||
'purchase_date' => trans('general.purchase_date'),
|
||||
'quantity' => trans('general.qty'),
|
||||
'qty' => trans('general.qty'),
|
||||
'serial' => trans('general.serial_number'),
|
||||
'supplier' => trans('general.supplier'),
|
||||
];
|
||||
@@ -372,12 +377,14 @@ class Importer extends Component
|
||||
'city' => trans('general.city'),
|
||||
'notes' => trans('general.notes'),
|
||||
'state' => trans('general.state'),
|
||||
'country' => trans('general.country'),
|
||||
'zip' => trans('general.zip'),
|
||||
'phone' => trans('general.phone'),
|
||||
'fax' => trans('general.fax'),
|
||||
'url' => trans('general.url'),
|
||||
'contact' => trans('general.contact'),
|
||||
'email' => trans('general.email'),
|
||||
'tag_color' => trans('general.tag_color'),
|
||||
];
|
||||
|
||||
$this->manufacturers_fields = [
|
||||
@@ -389,6 +396,7 @@ class Importer extends Component
|
||||
'support_email' => trans('admin/manufacturers/table.support_email'),
|
||||
'warranty_lookup_url' => trans('admin/manufacturers/table.warranty_lookup_url'),
|
||||
'url' => trans('general.url'),
|
||||
'tag_color' => trans('general.tag_color'),
|
||||
];
|
||||
|
||||
$this->categories_fields = [
|
||||
@@ -400,6 +408,8 @@ class Importer extends Component
|
||||
'use_default_eula' => trans('admin/categories/general.use_default_eula_column'),
|
||||
'require_acceptance' => trans('admin/categories/general.import_require_acceptance'),
|
||||
'checkin_email' => trans('admin/categories/general.import_checkin_email'),
|
||||
'alert_on_response' => trans('admin/categories/general.import_alert_on_response'),
|
||||
'tag_color' => trans('general.tag_color'),
|
||||
];
|
||||
|
||||
|
||||
@@ -409,16 +419,25 @@ class Importer extends Component
|
||||
'category' => trans('general.category'),
|
||||
'eol' => trans('general.eol'),
|
||||
'fieldset' => trans('admin/models/general.fieldset'),
|
||||
'name' => trans('general.item_name_var', ['item' => trans('general.asset_model')]),
|
||||
'name' => trans('general.name'),
|
||||
'manufacturer' => trans('general.manufacturer'),
|
||||
'min_amt' => trans('mail.min_QTY'),
|
||||
'model_number' => trans('general.model_no'),
|
||||
'notes' => trans('general.item_notes', ['item' => trans('admin/hardware/form.model')]),
|
||||
'requestable' => trans('admin/models/general.requestable'),
|
||||
'notes' => trans('general.notes'),
|
||||
'requestable' => trans('general.requestable'),
|
||||
'require_serial' => trans('admin/hardware/general.require_serial'),
|
||||
'tag_color' => trans('general.tag_color'),
|
||||
'depreciation' => trans('general.depreciation'),
|
||||
];
|
||||
|
||||
// "real fieldnames" to a list of aliases for that field
|
||||
/**
|
||||
* These are the "real fieldnames" with a list of possible aliases,
|
||||
* like misspellings, slight mis-phrasings, user-specific language, etc. that
|
||||
* could be in the imported file header.
|
||||
* This just makes the user's experience a little better when they're using
|
||||
* their own CSV template.
|
||||
*/
|
||||
|
||||
$this->aliases_fields = [
|
||||
'item_name' =>
|
||||
[
|
||||
@@ -439,6 +458,20 @@ class Importer extends Component
|
||||
'item no.',
|
||||
'item #',
|
||||
],
|
||||
'order_number' => [
|
||||
'order #',
|
||||
'order no.',
|
||||
'order num',
|
||||
'order number',
|
||||
'order',
|
||||
],
|
||||
'eula_text' => [
|
||||
'eula',
|
||||
],
|
||||
|
||||
'checkin_email' => [
|
||||
'checkin email',
|
||||
],
|
||||
'asset_model' =>
|
||||
[
|
||||
'model name',
|
||||
@@ -456,16 +489,6 @@ class Importer extends Component
|
||||
'EOL',
|
||||
'eol months',
|
||||
],
|
||||
'depreciation' =>
|
||||
[
|
||||
'Depreciation',
|
||||
'depreciation',
|
||||
],
|
||||
'requestable' =>
|
||||
[
|
||||
'requestable',
|
||||
'Requestable',
|
||||
],
|
||||
'gravatar' =>
|
||||
[
|
||||
'gravatar',
|
||||
@@ -542,7 +565,8 @@ class Importer extends Component
|
||||
],
|
||||
'require_serial' =>
|
||||
[
|
||||
'serial required',
|
||||
trans('admin/models/general.importer.require_serial'),
|
||||
trans('admin/models/general.importer.serial_reqiured'),
|
||||
],
|
||||
'model_number' =>
|
||||
[
|
||||
|
||||
@@ -25,7 +25,7 @@ class CheckoutAssetMail extends BaseMailable
|
||||
* Create a new message instance.
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function __construct(Asset $asset, $checkedOutTo, User $checkedOutBy, $acceptance, $note, bool $firstTimeSending = true)
|
||||
public function __construct(Asset $asset, $checkedOutTo, ?User $checkedOutBy, $acceptance, $note, bool $firstTimeSending = true)
|
||||
{
|
||||
$this->item = $asset;
|
||||
$this->admin = $checkedOutBy;
|
||||
|
||||
@@ -119,6 +119,9 @@ class Accessory extends SnipeModel
|
||||
}
|
||||
|
||||
|
||||
public function isDeletable() {
|
||||
return $this->checkouts_count === 0;
|
||||
}
|
||||
/**
|
||||
* Sets the requestable attribute on the accessory
|
||||
*
|
||||
@@ -268,7 +271,7 @@ class Accessory extends SnipeModel
|
||||
*/
|
||||
public function adminuser()
|
||||
{
|
||||
return $this->belongsTo(\App\Models\User::class, 'created_by');
|
||||
return $this->belongsTo(\App\Models\User::class, 'created_by')->withTrashed();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -58,7 +58,7 @@ class AccessoryCheckout extends Model
|
||||
*/
|
||||
public function adminuser()
|
||||
{
|
||||
return $this->belongsTo(User::class, 'created_by');
|
||||
return $this->belongsTo(User::class, 'created_by')->withTrashed();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -907,7 +907,7 @@ class Asset extends Depreciable
|
||||
*/
|
||||
public function adminuser()
|
||||
{
|
||||
return $this->belongsTo(\App\Models\User::class, 'created_by');
|
||||
return $this->belongsTo(\App\Models\User::class, 'created_by')->withTrashed();
|
||||
}
|
||||
|
||||
|
||||
@@ -1271,6 +1271,7 @@ class Asset extends Depreciable
|
||||
$query = $query
|
||||
->orWhere('assets_users.first_name', 'LIKE', '%'.$term.'%')
|
||||
->orWhere('assets_users.last_name', 'LIKE', '%'.$term.'%')
|
||||
->orWhere('assets_users.display_name', 'LIKE', '%'.$term.'%')
|
||||
->orWhere('assets_users.jobtitle', 'LIKE', '%'.$term.'%')
|
||||
->orWhere('assets_users.username', 'LIKE', '%'.$term.'%')
|
||||
->orWhere('assets_users.employee_num', 'LIKE', '%'.$term.'%')
|
||||
|
||||
@@ -234,7 +234,7 @@ class AssetModel extends SnipeModel
|
||||
public function isDeletable()
|
||||
{
|
||||
return Gate::allows('delete', $this)
|
||||
&& ($this->assets_count == 0)
|
||||
&& (($this->assets_count ?? $this->assets()->count()) === 0)
|
||||
&& ($this->deleted_at == '');
|
||||
}
|
||||
|
||||
|
||||
@@ -242,7 +242,7 @@ class Category extends SnipeModel
|
||||
|
||||
public function adminuser()
|
||||
{
|
||||
return $this->belongsTo(\App\Models\User::class, 'created_by');
|
||||
return $this->belongsTo(\App\Models\User::class, 'created_by')->withTrashed();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -46,7 +46,7 @@ class Checkoutable
|
||||
$category = optional($unaccepted_row->license?->category?->present())->nameUrl() ?? '';
|
||||
$company = optional($unaccepted_row->license?->company?->present())?->nameUrl() ?? '';
|
||||
$model = '';
|
||||
$name = $unaccepted_row->license->present()->nameUrl() ?? '';
|
||||
$name = $unaccepted_row->license?->present()->nameUrl() ?? '';
|
||||
}
|
||||
if($unaccepted_row instanceof Consumable){
|
||||
$category = optional($unaccepted_row->category?->present())->nameUrl() ?? '';
|
||||
|
||||
@@ -320,7 +320,7 @@ final class Company extends SnipeModel
|
||||
|
||||
public function adminuser()
|
||||
{
|
||||
return $this->belongsTo(\App\Models\User::class, 'created_by');
|
||||
return $this->belongsTo(\App\Models\User::class, 'created_by')->withTrashed();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -167,7 +167,7 @@ class Component extends SnipeModel
|
||||
*/
|
||||
public function adminuser()
|
||||
{
|
||||
return $this->belongsTo(\App\Models\User::class, 'created_by');
|
||||
return $this->belongsTo(\App\Models\User::class, 'created_by')->withTrashed();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -264,14 +264,21 @@ class Component extends SnipeModel
|
||||
// In case there are elements checked out to assets that belong to a different company
|
||||
// than this asset and full multiple company support is on we'll remove the global scope,
|
||||
// so they are included in the count.
|
||||
if (is_null($this->sum_unconstrained_assets) || $recalculate) {
|
||||
// This, in a components-listing context, is mostly important for when it sets a 'zero' which
|
||||
// is *not* null - so we don't have to keep recalculating for un-checked-out components
|
||||
|
||||
// the 'sum' query returns NULL when there are zero checkouts - which can inadvertently re-trigger the following query
|
||||
// for un-checked-out components. So we have to do this very careful process of fetching the 'attributes'
|
||||
// of the component, then see if sum_unconstrained_assets exists as an attribute. If it doesn't, we run the
|
||||
// query. But if it *does* exist as an attribute - even a null - we skip the query, because that means that this
|
||||
// component was fetched using withCount() - and that count *is* accurate, even if null. We just do a quick
|
||||
// null-coalesce at the end to zero for the null case.
|
||||
$raw_attributes = $this->getAttributes();
|
||||
if (!array_key_exists('sum_unconstrained_assets', $raw_attributes) || $recalculate) {
|
||||
// This part should *only* run if the component was fetched *without* withCount() (or you've asked to recalculate)
|
||||
// NOTE: doing this will add a 'pseudo-attribute' to the component in question, so we need to _remove_ this
|
||||
// before we save - so that gets handled in the 'saving' callback defined in the 'booted' method, above.
|
||||
$this->sum_unconstrained_assets = $this->unconstrainedAssets()->sum('assigned_qty') ?? 0;
|
||||
}
|
||||
return $this->sum_unconstrained_assets;
|
||||
return $this->sum_unconstrained_assets ?? 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -13,6 +13,7 @@ use App\Presenters\Presentable;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Relations\Relation;
|
||||
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||
use Illuminate\Support\Facades\Gate;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
use Watson\Validating\ValidatingTrait;
|
||||
|
||||
@@ -131,6 +132,13 @@ class Consumable extends SnipeModel
|
||||
$this->attributes['requestable'] = filter_var($value, FILTER_VALIDATE_BOOLEAN);
|
||||
}
|
||||
|
||||
public function isDeletable()
|
||||
{
|
||||
return Gate::allows('delete', $this)
|
||||
&& ($this->numCheckedOut() === 0)
|
||||
&& ($this->deleted_at == '');
|
||||
}
|
||||
|
||||
/**
|
||||
* Establishes the consumable -> admin user relationship
|
||||
*
|
||||
@@ -140,7 +148,7 @@ class Consumable extends SnipeModel
|
||||
*/
|
||||
public function adminuser()
|
||||
{
|
||||
return $this->belongsTo(User::class, 'created_by');
|
||||
return $this->belongsTo(User::class, 'created_by')->withTrashed();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -29,6 +29,6 @@ class ConsumableAssignment extends Model
|
||||
|
||||
public function adminuser()
|
||||
{
|
||||
return $this->belongsTo(\App\Models\User::class, 'created_by');
|
||||
return $this->belongsTo(\App\Models\User::class, 'created_by')->withTrashed();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ use App\Models\Traits\CompanyableTrait;
|
||||
use App\Models\Traits\Searchable;
|
||||
use App\Presenters\Presentable;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Support\Facades\Gate;
|
||||
use Watson\Validating\ValidatingTrait;
|
||||
|
||||
class Department extends SnipeModel
|
||||
@@ -77,6 +78,13 @@ class Department extends SnipeModel
|
||||
*/
|
||||
protected $searchableRelations = [];
|
||||
|
||||
|
||||
public function isDeletable()
|
||||
{
|
||||
return Gate::allows('delete', $this) && (($this->users_count ?? $this->users()->count()) === 0);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Establishes the department -> company relationship
|
||||
*
|
||||
|
||||
@@ -108,7 +108,7 @@ class Depreciation extends SnipeModel
|
||||
*/
|
||||
public function adminuser()
|
||||
{
|
||||
return $this->belongsTo(\App\Models\User::class, 'created_by');
|
||||
return $this->belongsTo(\App\Models\User::class, 'created_by')->withTrashed();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -68,7 +68,7 @@ class Group extends SnipeModel
|
||||
*/
|
||||
public function adminuser()
|
||||
{
|
||||
return $this->belongsTo(\App\Models\User::class, 'created_by');
|
||||
return $this->belongsTo(\App\Models\User::class, 'created_by')->withTrashed();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -24,6 +24,6 @@ class Import extends Model
|
||||
*/
|
||||
public function adminuser()
|
||||
{
|
||||
return $this->belongsTo(\App\Models\User::class, 'created_by');
|
||||
return $this->belongsTo(\App\Models\User::class, 'created_by')->withTrashed();
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -195,7 +195,7 @@ class Ldap extends Model
|
||||
$connection = self::connectToLdap();
|
||||
$ldap_username_field = $settings->ldap_username_field;
|
||||
$baseDn = $settings->ldap_basedn;
|
||||
$userDn = $ldap_username_field.'='.$username.','.$settings->ldap_basedn;
|
||||
$userDn = $ldap_username_field . '=' . ldap_escape($username, '', LDAP_ESCAPE_DN) . ',' . $settings->ldap_basedn;
|
||||
|
||||
if ($settings->is_ad == '1') {
|
||||
// Check if they are using the userprincipalname for the username field.
|
||||
@@ -213,7 +213,7 @@ class Ldap extends Model
|
||||
}
|
||||
}
|
||||
|
||||
$filterQuery = $settings->ldap_auth_filter_query.$username;
|
||||
$filterQuery = $settings->ldap_auth_filter_query . ldap_escape($username, '', LDAP_ESCAPE_FILTER);
|
||||
$filter = Setting::getSettings()->ldap_filter; //FIXME - this *does* respect the ldap filter, but I believe that AdLdap2 did *not*.
|
||||
$filterQuery = "({$filter}({$filterQuery}))";
|
||||
|
||||
|
||||
@@ -389,7 +389,7 @@ class License extends Depreciable
|
||||
*/
|
||||
public function category()
|
||||
{
|
||||
return $this->belongsTo(\App\Models\Category::class, 'category_id');
|
||||
return $this->belongsTo(\App\Models\Category::class, 'category_id')->withTrashed();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -401,7 +401,7 @@ class License extends Depreciable
|
||||
*/
|
||||
public function manufacturer()
|
||||
{
|
||||
return $this->belongsTo(\App\Models\Manufacturer::class, 'manufacturer_id');
|
||||
return $this->belongsTo(\App\Models\Manufacturer::class, 'manufacturer_id')->withTrashed();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -478,7 +478,7 @@ class License extends Depreciable
|
||||
*/
|
||||
public function adminuser()
|
||||
{
|
||||
return $this->belongsTo(\App\Models\User::class, 'created_by');
|
||||
return $this->belongsTo(\App\Models\User::class, 'created_by')->withTrashed();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -69,7 +69,7 @@ class LicenseSeat extends SnipeModel implements ICompanyableChild
|
||||
protected function name(): Attribute
|
||||
{
|
||||
return Attribute:: make(
|
||||
get: fn(mixed $value) => $this->license->name,
|
||||
get: fn(mixed $value) => $this->license?->name,
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -149,7 +149,7 @@ class Location extends SnipeModel
|
||||
*/
|
||||
public function adminuser()
|
||||
{
|
||||
return $this->belongsTo(\App\Models\User::class, 'created_by');
|
||||
return $this->belongsTo(\App\Models\User::class, 'created_by')->withTrashed();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -10,7 +10,9 @@ use App\Models\Traits\Searchable;
|
||||
use App\Presenters\Presentable;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||
use Illuminate\Support\Facades\Gate;
|
||||
use Watson\Validating\ValidatingTrait;
|
||||
use App\Presenters\MaintenancesPresenter;
|
||||
|
||||
/**
|
||||
* Model for Asset Maintenances.
|
||||
@@ -27,7 +29,7 @@ class Maintenance extends SnipeModel implements ICompanyableChild
|
||||
use Loggable, Presentable;
|
||||
|
||||
|
||||
|
||||
protected $presenter = MaintenancesPresenter::class;
|
||||
protected $table = 'maintenances';
|
||||
protected $rules = [
|
||||
'asset_id' => 'required|integer',
|
||||
@@ -118,6 +120,12 @@ class Maintenance extends SnipeModel implements ICompanyableChild
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
public function isDeletable()
|
||||
{
|
||||
return Gate::allows('delete', $this);
|
||||
}
|
||||
|
||||
public function setIsWarrantyAttribute($value)
|
||||
{
|
||||
if ($value == '') {
|
||||
|
||||
@@ -116,7 +116,7 @@ class Manufacturer extends SnipeModel
|
||||
|
||||
public function adminuser()
|
||||
{
|
||||
return $this->belongsTo(\App\Models\User::class, 'created_by');
|
||||
return $this->belongsTo(\App\Models\User::class, 'created_by')->withTrashed();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -4,21 +4,27 @@ namespace App\Models;
|
||||
|
||||
use App\Http\Traits\UniqueUndeletedTrait;
|
||||
use App\Models\Traits\Searchable;
|
||||
use App\Presenters\Presentable;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||
use Illuminate\Support\Facades\Gate;
|
||||
use Watson\Validating\ValidatingTrait;
|
||||
|
||||
|
||||
class Statuslabel extends SnipeModel
|
||||
{
|
||||
use HasFactory;
|
||||
use SoftDeletes;
|
||||
use ValidatingTrait;
|
||||
use UniqueUndeletedTrait;
|
||||
use Presentable;
|
||||
|
||||
protected $injectUniqueIdentifier = true;
|
||||
|
||||
protected $table = 'status_labels';
|
||||
protected $hidden = ['user_id', 'deleted_at'];
|
||||
protected $presenter = \App\Presenters\StatusLabelPresenter::class;
|
||||
|
||||
|
||||
protected $rules = [
|
||||
'name' => 'required|max:255|string|unique_undeleted',
|
||||
@@ -52,6 +58,13 @@ class Statuslabel extends SnipeModel
|
||||
*/
|
||||
protected $searchableRelations = [];
|
||||
|
||||
public function isDeletable()
|
||||
{
|
||||
return Gate::allows('delete', $this)
|
||||
&& (($this->assets_count ?? $this->assets()->count()) === 0)
|
||||
&& ($this->deleted_at == '');
|
||||
}
|
||||
|
||||
/**
|
||||
* Establishes the status label -> assets relationship
|
||||
*
|
||||
@@ -66,7 +79,7 @@ class Statuslabel extends SnipeModel
|
||||
|
||||
public function adminuser()
|
||||
{
|
||||
return $this->belongsTo(\App\Models\User::class, 'created_by');
|
||||
return $this->belongsTo(\App\Models\User::class, 'created_by')->withTrashed();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -158,7 +158,7 @@ class Supplier extends SnipeModel
|
||||
*/
|
||||
public function adminuser()
|
||||
{
|
||||
return $this->belongsTo(\App\Models\User::class, 'created_by');
|
||||
return $this->belongsTo(\App\Models\User::class, 'created_by')->withTrashed();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -304,10 +304,10 @@ class AssetModelPresenter extends Presenter
|
||||
|
||||
public function formattedNameLink() {
|
||||
|
||||
if (auth()->user()->can('models.view', $this)) {
|
||||
return '<a href="'.route('models.show', e($this->id)).'">'.e($this->name).'</a>';
|
||||
if (auth()->user()->can('view', ['\App\Models\AssetModel', $this])) {
|
||||
return '<a href="'.route('models.show', e($this->id)).'" class="'. (($this->deleted_at!='') ? 'deleted' : '').'">'.e($this->display_name).'</a>';
|
||||
}
|
||||
|
||||
return $this->name;
|
||||
return '<span class="'. (($this->deleted_at!='') ? 'deleted' : '').'">'.e($this->display_name).'</span>';
|
||||
}
|
||||
}
|
||||
|
||||
@@ -151,14 +151,15 @@ class AssetPresenter extends Presenter
|
||||
'visible' => false,
|
||||
'title' => trans('general.purchase_date'),
|
||||
'formatter' => 'dateDisplayFormatter',
|
||||
], [
|
||||
'field' => 'first_checkout',
|
||||
'searchable' => true,
|
||||
'sortable' => true,
|
||||
'visible' => false,
|
||||
'title' => trans('general.first_checkout'),
|
||||
'formatter' => 'dateDisplayFormatter',
|
||||
],
|
||||
// [
|
||||
// 'field' => 'first_checkout',
|
||||
// 'searchable' => true,
|
||||
// 'sortable' => true,
|
||||
// 'visible' => false,
|
||||
// 'title' => trans('general.first_checkout'),
|
||||
// 'formatter' => 'dateDisplayFormatter',
|
||||
// ],
|
||||
[
|
||||
'field' => 'age',
|
||||
'searchable' => false,
|
||||
|
||||
@@ -157,10 +157,16 @@ class CategoryPresenter extends Presenter
|
||||
|
||||
public function formattedNameLink() {
|
||||
|
||||
if (auth()->user()->can('view', ['\App\Models\Category', $this])) {
|
||||
return ($this->tag_color ? "<i class='fa-solid fa-fw fa-square' style='color: ".e($this->tag_color)."' aria-hidden='true'></i>" : '').'<a href="'.route('categories.show', e($this->id)).'">'.e($this->name).'</a>';
|
||||
// We use soft-deletes for categories, but we don't give you a way to restore them right now. This would be the method we'd use when that happens
|
||||
// if (auth()->user()->can('view', ['\App\Models\Category', $this])) {
|
||||
// return ($this->tag_color ? "<i class='fa-solid fa-fw fa-square' style='color: ".e($this->tag_color)."' aria-hidden='true'></i>" : '').'<a href="'.route('models.show', e($this->id)).'" class="'. (($this->deleted_at!='') ? 'deleted' : '').'">'.e($this->display_name).'</a>';
|
||||
// }
|
||||
|
||||
if ((auth()->user()->can('view', ['\App\Models\Category', $this])) && ($this->deleted_at=='')) {
|
||||
return ($this->tag_color ? "<i class='fa-solid fa-fw fa-square' style='color: ".e($this->tag_color)."' aria-hidden='true'></i>" : '').'<a href="'.route('categories.show', e($this->id)).'">'.e($this->name).'</a>';
|
||||
}
|
||||
|
||||
return ($this->tag_color ? "<i class='fa-solid fa-fw fa-square' style='color: ".e($this->tag_color)."' aria-hidden='true'></i>" : '').e($this->name);
|
||||
return ($this->tag_color ? "<i class='fa-solid fa-fw fa-square' style='color: ".e($this->tag_color)."' aria-hidden='true'></i>" : '').'<span class="'. (($this->deleted_at!='') ? 'deleted' : '').'">'.e($this->display_name).'</span>';
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -191,6 +191,63 @@ class ComponentPresenter extends Presenter
|
||||
return json_encode($layout);
|
||||
}
|
||||
|
||||
public static function checkedOut() {
|
||||
$layout = [
|
||||
[
|
||||
'field' => 'id',
|
||||
'searchable' => false,
|
||||
'sortable' => true,
|
||||
'switchable' => true,
|
||||
'title' => trans('general.id'),
|
||||
'visible' => false,
|
||||
],
|
||||
[
|
||||
'field' => 'name',
|
||||
'searchable' => true,
|
||||
'sortable' => true,
|
||||
'title' => trans('general.name'),
|
||||
'visible' => true,
|
||||
'formatter' => 'hardwareLinkFormatter',
|
||||
],
|
||||
[
|
||||
'field' => 'qty',
|
||||
'searchable' => true,
|
||||
'sortable' => true,
|
||||
'switchable' => true,
|
||||
'title' => trans('general.qty'),
|
||||
'visible' => true,
|
||||
],
|
||||
[
|
||||
'field' => 'note',
|
||||
'searchable' => true,
|
||||
'sortable' => true,
|
||||
'visible' => true,
|
||||
'title' => trans('general.notes'),
|
||||
'formatter' => 'notesFormatter',
|
||||
],[
|
||||
'field' => 'created_at',
|
||||
'searchable' => false,
|
||||
'sortable' => true,
|
||||
'visible' => false,
|
||||
'title' => trans('general.created_at'),
|
||||
'formatter' => 'dateDisplayFormatter',
|
||||
],
|
||||
$layout[] = [
|
||||
'field' => 'available_actions',
|
||||
'searchable' => false,
|
||||
'sortable' => false,
|
||||
'switchable' => false,
|
||||
'title' => trans('general.checkin').'/'.trans('general.checkout'),
|
||||
'visible' => true,
|
||||
'formatter' => 'componentsInOutFormatter',
|
||||
'printIgnore' => true,
|
||||
|
||||
],
|
||||
];
|
||||
|
||||
return json_encode($layout);
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate html link to this items name.
|
||||
* @return string
|
||||
|
||||
@@ -187,6 +187,58 @@ class ConsumablePresenter extends Presenter
|
||||
return json_encode($layout);
|
||||
}
|
||||
|
||||
public static function checkedOut()
|
||||
{
|
||||
$layout = [
|
||||
|
||||
[
|
||||
'field' => 'avatar',
|
||||
'searchable' => false,
|
||||
'sortable' => false,
|
||||
'title' => trans('general.image'),
|
||||
'visible' => true,
|
||||
'formatter' => 'imageFormatter',
|
||||
],
|
||||
[
|
||||
'field' => 'user',
|
||||
'searchable' => false,
|
||||
'sortable' => false,
|
||||
'title' => trans('general.name'),
|
||||
'visible' => true,
|
||||
'formatter' => 'usersLinkObjFormatter',
|
||||
],
|
||||
[
|
||||
'field' => 'created_at',
|
||||
'searchable' => false,
|
||||
'sortable' => false,
|
||||
'title' => trans('general.date'),
|
||||
'visible' => true,
|
||||
'formatter' => 'dateDisplayFormatter',
|
||||
],
|
||||
|
||||
[
|
||||
'field' => 'note',
|
||||
'searchable' => false,
|
||||
'sortable' => false,
|
||||
'title' => trans('general.notes'),
|
||||
'visible' => true,
|
||||
],
|
||||
|
||||
[
|
||||
'field' => 'created_by',
|
||||
'searchable' => false,
|
||||
'sortable' => false,
|
||||
'title' => trans('general.created_by'),
|
||||
'visible' => true,
|
||||
'formatter' => 'usersLinkObjFormatter',
|
||||
],
|
||||
|
||||
|
||||
];
|
||||
|
||||
return json_encode($layout);
|
||||
}
|
||||
|
||||
/**
|
||||
* Url to view this item.
|
||||
* @return string
|
||||
|
||||
@@ -551,9 +551,9 @@ class UserPresenter extends Presenter
|
||||
public function formattedNameLink() {
|
||||
|
||||
if (auth()->user()->can('view', ['\App\Models\User', $this])) {
|
||||
return ($this->tag_color ? "<i class='fa-solid fa-fw fa-square' style='color: ".e($this->tag_color)."' aria-hidden='true'></i>" : '').'<a href="'.route('users.show', e($this->id)).'">'.e($this->display_name).'</a>';
|
||||
return '<a href="'.route('users.show', e($this->id)).'" class="'. (($this->deleted_at!='') ? 'deleted' : '').'">'.e($this->display_name).'</a>';
|
||||
}
|
||||
|
||||
return ($this->tag_color ? "<i class='fa-solid fa-fw fa-square' style='color: ".e($this->tag_color)."' aria-hidden='true'></i>" : '').e($this->display_name);
|
||||
return '<span class="'. (($this->deleted_at!='') ? 'deleted' : '').'">'.e($this->display_name).'</span>';
|
||||
}
|
||||
}
|
||||
|
||||
@@ -214,6 +214,12 @@ class BreadcrumbsServiceProvider extends ServiceProvider
|
||||
->push(trans('general.breadcrumb_button_actions.edit_item', ['name' => $component->name]), route('components.edit', $component))
|
||||
);
|
||||
|
||||
Breadcrumbs::for('components.clone.create', fn (Trail $trail, Component $component) =>
|
||||
$trail->parent('components.index', route('components.index'))
|
||||
->push($component->display_name, route('components.show', $component))
|
||||
->push(trans('general.clone'), route('components.create'))
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
* Consumables Breadcrumbs
|
||||
@@ -262,9 +268,10 @@ class BreadcrumbsServiceProvider extends ServiceProvider
|
||||
|
||||
Breadcrumbs::for('fieldsets.create', fn (Trail $trail) =>
|
||||
$trail->parent('fields.index', route('fields.index'))
|
||||
->push(trans('general.create'), route('fieldsets.create'))
|
||||
->push(trans('admin/custom_fields/general.create_fieldset'), route('fieldsets.create'))
|
||||
);
|
||||
|
||||
|
||||
Breadcrumbs::for('fieldsets.show', fn (Trail $trail, CustomFieldset $fieldset) =>
|
||||
$trail->parent('fields.index', route('fields.index'))
|
||||
->push($fieldset->name, route('fields.index'))
|
||||
|
||||
+5
-5
@@ -1,10 +1,10 @@
|
||||
<?php
|
||||
return array (
|
||||
'app_version' => 'v8.3.7',
|
||||
'full_app_version' => 'v8.3.7 - build 21025-ga8c268760',
|
||||
'build_version' => '21025',
|
||||
'app_version' => 'v8.4.0',
|
||||
'full_app_version' => 'v8.4.0 - build 21280-g91a95dbc6',
|
||||
'build_version' => '21280',
|
||||
'prerelease_version' => '',
|
||||
'hash_version' => 'ga8c268760',
|
||||
'full_hash' => 'v8.3.7-220-ga8c268760',
|
||||
'hash_version' => 'g91a95dbc6',
|
||||
'full_hash' => 'v8.4.0-475-g91a95dbc6',
|
||||
'branch' => 'master',
|
||||
);
|
||||
@@ -28,10 +28,10 @@ class AssetModelFactory extends Factory
|
||||
public function definition()
|
||||
{
|
||||
return [
|
||||
'created_by' => User::factory()->superuser(),
|
||||
'name' => $this->faker->catchPhrase(),
|
||||
'category_id' => Category::factory(),
|
||||
'created_by' => User::factory()->superuser(),
|
||||
'model_number' => $this->faker->creditCardNumber(),
|
||||
'name' => $this->faker->catchPhrase(),
|
||||
'notes' => 'Created by demo seeder',
|
||||
'require_serial' => 0,
|
||||
|
||||
|
||||
@@ -23,15 +23,15 @@ class CategoryFactory extends Factory
|
||||
public function definition()
|
||||
{
|
||||
return [
|
||||
'name' => $this->faker->catchPhrase(),
|
||||
'category_type' => 'asset',
|
||||
'checkin_email' => true,
|
||||
'eula_text' => $this->faker->paragraph(),
|
||||
'require_acceptance' => false,
|
||||
'use_default_eula' => false,
|
||||
'created_by' => User::factory()->superuser(),
|
||||
'eula_text' => $this->faker->paragraph(),
|
||||
'name' => $this->faker->catchPhrase(),
|
||||
'notes' => 'Created by DB seeder',
|
||||
'require_acceptance' => false,
|
||||
'tag_color' => $this->faker->hexColor(),
|
||||
'use_default_eula' => false,
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
@@ -33,18 +33,19 @@ class ComponentFactory extends Factory
|
||||
{
|
||||
|
||||
return [
|
||||
'name' => $this->faker->text(20),
|
||||
'category_id' => Category::factory(),
|
||||
'location_id' => Location::factory(),
|
||||
'serial' => $this->faker->uuid(),
|
||||
'qty' => $this->faker->numberBetween(3, 10),
|
||||
'order_number' => $this->faker->numberBetween(1000000, 50000000),
|
||||
'purchase_date' => $this->faker->dateTime()->format('Y-m-d'),
|
||||
'purchase_cost' => $this->faker->randomFloat(2),
|
||||
'min_amt' => $this->faker->numberBetween($min = 1, $max = 2),
|
||||
'company_id' => Company::factory(),
|
||||
'supplier_id' => Supplier::factory(),
|
||||
'created_by' => User::factory()->superuser(),
|
||||
'location_id' => Location::factory(),
|
||||
'min_amt' => $this->faker->numberBetween($min = 1, $max = 2),
|
||||
'model_number' => $this->faker->numberBetween(1000000, 50000000),
|
||||
'name' => $this->faker->text(20),
|
||||
'order_number' => $this->faker->numberBetween(1000000, 50000000),
|
||||
'purchase_cost' => $this->faker->randomFloat(2),
|
||||
'purchase_date' => $this->faker->dateTime()->format('Y-m-d'),
|
||||
'qty' => $this->faker->numberBetween(3, 10),
|
||||
'serial' => $this->faker->uuid(),
|
||||
'supplier_id' => Supplier::factory(),
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
@@ -28,16 +28,16 @@ class ConsumableFactory extends Factory
|
||||
public function definition()
|
||||
{
|
||||
return [
|
||||
'name' => $this->faker->words(3, true),
|
||||
'category_id' => Category::factory(),
|
||||
'company_id' => Company::factory(),
|
||||
'created_by' => User::factory()->superuser(),
|
||||
'item_no' => $this->faker->numberBetween(1000000, 50000000),
|
||||
'order_number' => $this->faker->numberBetween(1000000, 50000000),
|
||||
'purchase_date' => $this->faker->dateTimeBetween('-1 years', 'now', date_default_timezone_get())->format('Y-m-d'),
|
||||
'purchase_cost' => $this->faker->randomFloat(2, 1, 50),
|
||||
'qty' => $this->faker->numberBetween(5, 10),
|
||||
'min_amt' => $this->faker->numberBetween($min = 1, $max = 2),
|
||||
'company_id' => Company::factory(),
|
||||
'name' => $this->faker->words(3, true),
|
||||
'order_number' => $this->faker->numberBetween(1000000, 50000000),
|
||||
'purchase_cost' => $this->faker->randomFloat(2, 1, 50),
|
||||
'purchase_date' => $this->faker->dateTimeBetween('-1 years', 'now', date_default_timezone_get())->format('Y-m-d'),
|
||||
'qty' => $this->faker->numberBetween(5, 10),
|
||||
'supplier_id' => Supplier::factory(),
|
||||
];
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
namespace Database\Factories;
|
||||
|
||||
use App\Models\CustomField;
|
||||
use App\Models\User;
|
||||
use Illuminate\Database\Eloquent\Factories\Factory;
|
||||
|
||||
class CustomFieldFactory extends Factory
|
||||
@@ -27,6 +28,7 @@ class CustomFieldFactory extends Factory
|
||||
'element' => 'text',
|
||||
'auto_add_to_fieldsets' => '0',
|
||||
'show_in_requestable_list' => '0',
|
||||
'created_by' => User::factory()->superuser(),
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
@@ -24,9 +24,9 @@ class DepartmentFactory extends Factory
|
||||
public function definition()
|
||||
{
|
||||
return [
|
||||
'name' => $this->faker->unique()->word() . ' Department',
|
||||
'created_by' => User::factory()->superuser(),
|
||||
'location_id' => Location::factory(),
|
||||
'name' => $this->faker->unique()->word() . ' Department',
|
||||
'notes' => 'Created by DB seeder',
|
||||
'tag_color' => $this->faker->hexColor(),
|
||||
];
|
||||
|
||||
@@ -23,9 +23,9 @@ class DepreciationFactory extends Factory
|
||||
public function definition()
|
||||
{
|
||||
return [
|
||||
'name' => $this->faker->unique()->catchPhrase(),
|
||||
'created_by' => User::factory()->superuser(),
|
||||
'months' => 36,
|
||||
'name' => $this->faker->unique()->catchPhrase(),
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
namespace Database\Factories;
|
||||
|
||||
use App\Models\Group;
|
||||
use App\Models\User;
|
||||
use Illuminate\Database\Eloquent\Factories\Factory;
|
||||
|
||||
class GroupFactory extends Factory
|
||||
@@ -22,9 +23,10 @@ class GroupFactory extends Factory
|
||||
public function definition()
|
||||
{
|
||||
return [
|
||||
'created_by' => User::factory()->superuser(),
|
||||
'name' => $this->faker->name(),
|
||||
'permissions' => json_encode([]),
|
||||
'notes' => 'Created by DB seeder',
|
||||
'permissions' => json_encode([]),
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,19 +25,19 @@ class LicenseFactory extends Factory
|
||||
public function definition()
|
||||
{
|
||||
return [
|
||||
'created_by' => User::factory()->superuser(),
|
||||
'name' => $this->faker->name(),
|
||||
'license_email' => $this->faker->safeEmail(),
|
||||
'serial' => $this->faker->uuid(),
|
||||
'notes' => 'Created by DB seeder',
|
||||
'seats' => $this->faker->numberBetween(1, 10),
|
||||
'purchase_date' => $this->faker->dateTimeBetween('-1 years', 'now', date_default_timezone_get())->format('Y-m-d'),
|
||||
'order_number' => $this->faker->numberBetween(1000000, 50000000),
|
||||
'expiration_date' => null,
|
||||
'reassignable' => $this->faker->boolean(),
|
||||
'termination_date' => null,
|
||||
'supplier_id' => Supplier::factory(),
|
||||
'category_id' => Category::factory(),
|
||||
'created_by' => User::factory()->superuser(),
|
||||
'expiration_date' => null,
|
||||
'license_email' => $this->faker->safeEmail(),
|
||||
'name' => $this->faker->name(),
|
||||
'notes' => 'Created by DB seeder',
|
||||
'order_number' => $this->faker->numberBetween(1000000, 50000000),
|
||||
'purchase_date' => $this->faker->dateTimeBetween('-1 years', 'now', date_default_timezone_get())->format('Y-m-d'),
|
||||
'reassignable' => $this->faker->boolean(),
|
||||
'seats' => $this->faker->numberBetween(1, 10),
|
||||
'serial' => $this->faker->uuid(),
|
||||
'supplier_id' => Supplier::factory(),
|
||||
'termination_date' => null,
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
namespace Database\Factories;
|
||||
|
||||
use App\Models\User;
|
||||
use Illuminate\Database\Eloquent\Factories\Factory;
|
||||
|
||||
class LocationFactory extends Factory
|
||||
@@ -14,17 +15,18 @@ class LocationFactory extends Factory
|
||||
public function definition()
|
||||
{
|
||||
return [
|
||||
'name' => $this->faker->city(),
|
||||
'address' => $this->faker->streetAddress(),
|
||||
'address2' => $this->faker->secondaryAddress(),
|
||||
'city' => $this->faker->city(),
|
||||
'state' => $this->faker->stateAbbr(),
|
||||
'country' => $this->faker->countryCode(),
|
||||
'created_by' => User::factory()->superuser(),
|
||||
'currency' => $this->faker->currencyCode(),
|
||||
'zip' => $this->faker->postcode(),
|
||||
'image' => rand(1, 9).'.jpg',
|
||||
'name' => $this->faker->city(),
|
||||
'notes' => 'Created by DB seeder',
|
||||
'state' => $this->faker->stateAbbr(),
|
||||
'tag_color' => $this->faker->hexColor(),
|
||||
'zip' => $this->faker->postcode(),
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
@@ -23,13 +23,13 @@ class ManufacturerFactory extends Factory
|
||||
public function definition()
|
||||
{
|
||||
return [
|
||||
'name' => $this->faker->unique()->company(),
|
||||
'created_by' => User::factory()->superuser(),
|
||||
'support_phone' => $this->faker->phoneNumber(),
|
||||
'url' => $this->faker->url(),
|
||||
'support_email' => $this->faker->safeEmail(),
|
||||
'name' => $this->faker->unique()->company(),
|
||||
'notes' => 'Created by DB seeder',
|
||||
'support_email' => $this->faker->safeEmail(),
|
||||
'support_phone' => $this->faker->phoneNumber(),
|
||||
'tag_color' => $this->faker->hexColor(),
|
||||
'url' => $this->faker->url(),
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
@@ -23,15 +23,15 @@ class StatuslabelFactory extends Factory
|
||||
public function definition()
|
||||
{
|
||||
return [
|
||||
'name' => $this->faker->sentence(),
|
||||
'archived' => 0,
|
||||
'created_at' => $this->faker->dateTime(),
|
||||
'updated_at' => $this->faker->dateTime(),
|
||||
'created_by' => User::factory()->superuser(),
|
||||
'deleted_at' => null,
|
||||
'deployable' => 0,
|
||||
'pending' => 0,
|
||||
'archived' => 0,
|
||||
'name' => $this->faker->sentence(),
|
||||
'notes' => '',
|
||||
'pending' => 0,
|
||||
'updated_at' => $this->faker->dateTime(),
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
namespace Database\Factories;
|
||||
|
||||
use App\Models\Supplier;
|
||||
use App\Models\User;
|
||||
use Illuminate\Database\Eloquent\Factories\Factory;
|
||||
|
||||
class SupplierFactory extends Factory
|
||||
@@ -22,20 +23,21 @@ class SupplierFactory extends Factory
|
||||
public function definition()
|
||||
{
|
||||
return [
|
||||
'name' => $this->faker->company(),
|
||||
'address' => $this->faker->streetAddress(),
|
||||
'address2' => $this->faker->secondaryAddress(),
|
||||
'city' => $this->faker->city(),
|
||||
'state' => $this->faker->stateAbbr(),
|
||||
'zip' => $this->faker->postCode(),
|
||||
'country' => $this->faker->countryCode(),
|
||||
'contact' => $this->faker->name(),
|
||||
'phone' => $this->faker->phoneNumber(),
|
||||
'fax' => $this->faker->phoneNumber(),
|
||||
'country' => $this->faker->countryCode(),
|
||||
'created_by' => User::factory()->superuser(),
|
||||
'email' => $this->faker->safeEmail(),
|
||||
'url' => $this->faker->url(),
|
||||
'fax' => $this->faker->phoneNumber(),
|
||||
'name' => $this->faker->company(),
|
||||
'notes' => $this->faker->text(191), // Supplier notes can be a max of 255 characters.
|
||||
'phone' => $this->faker->phoneNumber(),
|
||||
'state' => $this->faker->stateAbbr(),
|
||||
'tag_color' => $this->faker->hexColor(),
|
||||
'url' => $this->faker->url(),
|
||||
'zip' => $this->faker->postCode(),
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,22 +25,22 @@ class UserFactory extends Factory
|
||||
'city' => $this->faker->city(),
|
||||
'company_id' => Company::factory(),
|
||||
'country' => $this->faker->country(),
|
||||
'created_by' => 1,
|
||||
'display_name' => null,
|
||||
'email' => $this->faker->safeEmail(),
|
||||
'employee_num' => $this->faker->numberBetween(3500, 35050),
|
||||
'first_name' => $this->faker->firstName(),
|
||||
'last_name' => $this->faker->lastName(),
|
||||
'display_name' => null,
|
||||
'jobtitle' => $this->faker->jobTitle(),
|
||||
'last_name' => $this->faker->lastName(),
|
||||
'locale' => 'en-US',
|
||||
'mobile' => $this->faker->phoneNumber(),
|
||||
'notes' => 'Created by DB seeder',
|
||||
'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password
|
||||
'permissions' => '{}',
|
||||
'phone' => $this->faker->phoneNumber(),
|
||||
'mobile' => $this->faker->phoneNumber(),
|
||||
'state' => $this->faker->stateAbbr(),
|
||||
'username' => $this->faker->unique()->username(),
|
||||
'zip' => $this->faker->postcode(),
|
||||
'created_by' => 1,
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
Generated
+4
-4
@@ -6816,11 +6816,11 @@
|
||||
}
|
||||
},
|
||||
"node_modules/jspdf-autotable": {
|
||||
"version": "5.0.2",
|
||||
"resolved": "https://registry.npmjs.org/jspdf-autotable/-/jspdf-autotable-5.0.2.tgz",
|
||||
"integrity": "sha512-YNKeB7qmx3pxOLcNeoqAv3qTS7KuvVwkFe5AduCawpop3NOkBUtqDToxNc225MlNecxT4kP2Zy3z/y/yvGdXUQ==",
|
||||
"version": "5.0.7",
|
||||
"resolved": "https://registry.npmjs.org/jspdf-autotable/-/jspdf-autotable-5.0.7.tgz",
|
||||
"integrity": "sha512-2wr7H6liNDBYNwt25hMQwXkEWFOEopgKIvR1Eukuw6Zmprm/ZcnmLTQEjW7Xx3FCbD3v7pflLcnMAv/h1jFDQw==",
|
||||
"peerDependencies": {
|
||||
"jspdf": "^2 || ^3"
|
||||
"jspdf": "^2 || ^3 || ^4"
|
||||
}
|
||||
},
|
||||
"node_modules/jspdf/node_modules/core-js": {
|
||||
|
||||
+1
-5413
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1
-1573
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1
-1201
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Vendored
+6
-24574
File diff suppressed because one or more lines are too long
Vendored
+1
-414
File diff suppressed because one or more lines are too long
+1
-135
@@ -1,135 +1 @@
|
||||
|
||||
#signature-pad {
|
||||
padding-top: 250px;
|
||||
margin: auto;
|
||||
}
|
||||
.m-signature-pad {
|
||||
|
||||
position: relative;
|
||||
font-size: 10px;
|
||||
width: 100%;
|
||||
height: 300px;
|
||||
border: 1px solid #e8e8e8;
|
||||
background-color: #fff;
|
||||
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.27), 0 0 40px rgba(0, 0, 0, 0.08) inset;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.m-signature-pad:before, .m-signature-pad:after {
|
||||
position: absolute;
|
||||
z-index: -1;
|
||||
content: "";
|
||||
width: 40%;
|
||||
height: 10px;
|
||||
left: 20px;
|
||||
bottom: 10px;
|
||||
background: transparent;
|
||||
-webkit-transform: skew(-3deg) rotate(-3deg);
|
||||
-moz-transform: skew(-3deg) rotate(-3deg);
|
||||
-ms-transform: skew(-3deg) rotate(-3deg);
|
||||
-o-transform: skew(-3deg) rotate(-3deg);
|
||||
transform: skew(-3deg) rotate(-3deg);
|
||||
box-shadow: 0 8px 12px rgba(0, 0, 0, 0.4);
|
||||
}
|
||||
|
||||
.m-signature-pad:after {
|
||||
left: auto;
|
||||
right: 20px;
|
||||
-webkit-transform: skew(3deg) rotate(3deg);
|
||||
-moz-transform: skew(3deg) rotate(3deg);
|
||||
-ms-transform: skew(3deg) rotate(3deg);
|
||||
-o-transform: skew(3deg) rotate(3deg);
|
||||
transform: skew(3deg) rotate(3deg);
|
||||
}
|
||||
|
||||
.m-signature-pad--body {
|
||||
position: absolute;
|
||||
top: 20px;
|
||||
bottom: 60px;
|
||||
border: 1px solid #f4f4f4;
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
.m-signature-pad--body
|
||||
canvas {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
border-radius: 4px;
|
||||
box-shadow: 0 0 5px rgba(0, 0, 0, 0.02) inset;
|
||||
}
|
||||
|
||||
.m-signature-pad--footer {
|
||||
position: absolute;
|
||||
left: 20px;
|
||||
right: 20px;
|
||||
bottom: 20px;
|
||||
height: 40px;
|
||||
}
|
||||
|
||||
.m-signature-pad--footer
|
||||
.description {
|
||||
color: #C3C3C3;
|
||||
text-align: center;
|
||||
font-size: 1.2em;
|
||||
margin-top: 1.8em;
|
||||
}
|
||||
|
||||
.m-signature-pad--footer
|
||||
.button {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
}
|
||||
|
||||
.m-signature-pad--footer
|
||||
.button.clear {
|
||||
left: 0;
|
||||
}
|
||||
|
||||
.m-signature-pad--footer
|
||||
.button.save {
|
||||
right: 0;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 1024px) {
|
||||
.m-signature-pad {
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
width: auto;
|
||||
height: auto;
|
||||
min-width: 250px;
|
||||
min-height: 140px;
|
||||
margin: 5%;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@media screen and (min-device-width: 768px) and (max-device-width: 1024px) {
|
||||
.m-signature-pad {
|
||||
margin: 10%;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-height: 320px) {
|
||||
.m-signature-pad--body {
|
||||
left: 0;
|
||||
right: 0;
|
||||
top: 0;
|
||||
bottom: 32px;
|
||||
}
|
||||
.m-signature-pad--footer {
|
||||
left: 20px;
|
||||
right: 20px;
|
||||
bottom: 4px;
|
||||
height: 28px;
|
||||
}
|
||||
.m-signature-pad--footer
|
||||
.description {
|
||||
font-size: 1em;
|
||||
margin-top: 1em;
|
||||
}
|
||||
}
|
||||
#signature-pad{padding-top:250px;margin:auto}.m-signature-pad{position:relative;font-size:10px;width:100%;height:300px;border:1px solid #e8e8e8;background-color:#fff;box-shadow:0 1px 4px rgba(0,0,0,.27),0 0 40px rgba(0,0,0,.08) inset;border-radius:4px}.m-signature-pad:after,.m-signature-pad:before{position:absolute;z-index:-1;content:"";width:40%;height:10px;left:20px;bottom:10px;background:0 0;-webkit-transform:skew(-3deg) rotate(-3deg);-moz-transform:skew(-3deg) rotate(-3deg);-ms-transform:skew(-3deg) rotate(-3deg);-o-transform:skew(-3deg) rotate(-3deg);transform:skew(-3deg) rotate(-3deg);box-shadow:0 8px 12px rgba(0,0,0,.4)}.m-signature-pad:after{left:auto;right:20px;-webkit-transform:skew(3deg) rotate(3deg);-moz-transform:skew(3deg) rotate(3deg);-ms-transform:skew(3deg) rotate(3deg);-o-transform:skew(3deg) rotate(3deg);transform:skew(3deg) rotate(3deg)}.m-signature-pad--body{position:absolute;top:20px;bottom:60px;border:1px solid #f4f4f4;background-color:#fff}.m-signature-pad--body canvas{position:absolute;left:0;top:0;width:100%;height:100%;border-radius:4px;box-shadow:0 0 5px rgba(0,0,0,.02) inset}.m-signature-pad--footer{position:absolute;left:20px;right:20px;bottom:20px;height:40px}.m-signature-pad--footer .description{color:#c3c3c3;text-align:center;font-size:1.2em;margin-top:1.8em}.m-signature-pad--footer .button{position:absolute;bottom:0}.m-signature-pad--footer .button.clear{left:0}.m-signature-pad--footer .button.save{right:0}@media screen and (max-width:1024px){.m-signature-pad{top:0;left:0;right:0;bottom:0;width:auto;height:auto;min-width:250px;min-height:140px;margin:5%}}@media screen and (min-device-width:768px) and (max-device-width:1024px){.m-signature-pad{margin:10%}}@media screen and (max-height:320px){.m-signature-pad--body{left:0;right:0;top:0;bottom:32px}.m-signature-pad--footer{left:20px;right:20px;bottom:4px;height:28px}.m-signature-pad--footer .description{font-size:1em;margin-top:1em}}
|
||||
|
||||
Vendored
+2
-53350
File diff suppressed because one or more lines are too long
Vendored
+3
-17
@@ -28,17 +28,6 @@
|
||||
* https://github.com/select2/select2/blob/master/LICENSE.md
|
||||
*/
|
||||
|
||||
/*!
|
||||
* Sizzle CSS Selector Engine v2.3.5
|
||||
* https://sizzlejs.com/
|
||||
*
|
||||
* Copyright JS Foundation and other contributors
|
||||
* Released under the MIT license
|
||||
* https://js.foundation/
|
||||
*
|
||||
* Date: 2020-03-14
|
||||
*/
|
||||
|
||||
/*!
|
||||
* clipboard.js v2.0.11
|
||||
* https://clipboardjs.com/
|
||||
@@ -47,17 +36,14 @@
|
||||
*/
|
||||
|
||||
/*!
|
||||
* jQuery JavaScript Library v3.5.1
|
||||
* jQuery JavaScript Library v3.7.1
|
||||
* https://jquery.com/
|
||||
*
|
||||
* Includes Sizzle.js
|
||||
* https://sizzlejs.com/
|
||||
*
|
||||
* Copyright JS Foundation and other contributors
|
||||
* Copyright OpenJS Foundation and other contributors
|
||||
* Released under the MIT license
|
||||
* https://jquery.org/license
|
||||
*
|
||||
* Date: 2020-05-04T22:49Z
|
||||
* Date: 2023-08-28T13:37Z
|
||||
*/
|
||||
|
||||
/*!
|
||||
|
||||
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-38849
File diff suppressed because one or more lines are too long
@@ -1,9 +1,9 @@
|
||||
{
|
||||
"/js/dist/all.js": "/js/dist/all.js?id=584e7af6b28899d4794d25aef996d231",
|
||||
"/css/build/overrides.css": "/css/build/overrides.css?id=69b145f1bb0fb5c3de63350ef73207b4",
|
||||
"/css/build/app.css": "/css/build/app.css?id=ca045cda8d9164ddb2f7a0ec6fd92a40",
|
||||
"/css/build/AdminLTE.css": "/css/build/AdminLTE.css?id=ee0ed88465dd878588ed044eefb67723",
|
||||
"/css/dist/all.css": "/css/dist/all.css?id=6b276946025b2c383b315d655683db02",
|
||||
"/js/dist/all.js": "/js/dist/all.js?id=2dd258bb47be82b0a9237c513bddf2d1",
|
||||
"/css/build/overrides.css": "/css/build/overrides.css?id=955f1204631dbea12cd1b6cdf5c12b50",
|
||||
"/css/build/app.css": "/css/build/app.css?id=92f5873bc1425b14b040c51ad53db7a3",
|
||||
"/css/build/AdminLTE.css": "/css/build/AdminLTE.css?id=bdf169bc2141f453390614c138cdce95",
|
||||
"/css/dist/all.css": "/css/dist/all.css?id=16a8374df57adb2112750e84644c6aaa",
|
||||
"/css/dist/signature-pad.css": "/css/dist/signature-pad.css?id=6a89d3cd901305e66ced1cf5f13147f7",
|
||||
"/css/dist/signature-pad.min.css": "/css/dist/signature-pad.min.css?id=6a89d3cd901305e66ced1cf5f13147f7",
|
||||
"/js/select2/i18n/af.js": "/js/select2/i18n/af.js?id=4f6fcd73488ce79fae1b7a90aceaecde",
|
||||
|
||||
@@ -5,7 +5,7 @@ return [
|
||||
'manage' => 'crwdns6501:0crwdne6501:0',
|
||||
'field' => 'crwdns1487:0crwdne1487:0',
|
||||
'about_fieldsets_title' => 'crwdns1488:0crwdne1488:0',
|
||||
'about_fieldsets_text' => 'crwdns14306:0crwdne14306:0',
|
||||
'about_fieldsets_text' => 'crwdns14356:0crwdne14356:0',
|
||||
'custom_format' => 'crwdns6505:0crwdne6505:0',
|
||||
'encrypt_field' => 'crwdns1792:0crwdne1792:0',
|
||||
'encrypt_field_help' => 'crwdns1683:0crwdne1683:0',
|
||||
|
||||
@@ -16,7 +16,7 @@ return array(
|
||||
'seats' => 'crwdns917:0crwdne917:0',
|
||||
'termination_date' => 'crwdns1146:0crwdne1146:0',
|
||||
'to_email' => 'crwdns919:0crwdne919:0',
|
||||
'to_name' => 'crwdns920:0crwdne920:0',
|
||||
'to_name' => 'crwdns14498:0crwdne14498:0',
|
||||
'update' => 'crwdns921:0crwdne921:0',
|
||||
'checkout_help' => 'crwdns922:0crwdne922:0'
|
||||
);
|
||||
|
||||
@@ -41,6 +41,9 @@ return [
|
||||
'backups_logged_out' => 'crwdns6774:0crwdne6774:0',
|
||||
'backups_large' => 'crwdns6335:0crwdne6335:0',
|
||||
'barcode_settings' => 'crwdns1295:0crwdne1295:0',
|
||||
'color_preferences' => 'crwdns14456:0crwdne14456:0',
|
||||
'color_settings_help' => 'crwdns14458:0crwdne14458:0',
|
||||
'color_reset' => 'crwdns14460:0crwdne14460:0',
|
||||
'confirm_purge' => 'crwdns1611:0crwdne1611:0',
|
||||
'confirm_purge_help' => 'crwdns5852:0crwdne5852:0',
|
||||
'custom_css' => 'crwdns1419:0crwdne1419:0',
|
||||
@@ -75,11 +78,19 @@ return [
|
||||
'footer_text_help' => 'crwdns1988:0crwdne1988:0',
|
||||
'footer_text_placeholder' => 'crwdns12965:0crwdne12965:0',
|
||||
'general_settings' => 'crwdns1297:0crwdne1297:0',
|
||||
'api_url' => 'crwdns14464:0crwdne14464:0',
|
||||
'scim_url' => 'crwdns14466:0crwdne14466:0',
|
||||
'general_settings_help' => 'crwdns6341:0crwdne6341:0',
|
||||
'generate_backup' => 'crwdns1427:0crwdne1427:0',
|
||||
'google_workspaces' => 'crwdns12080:0crwdne12080:0',
|
||||
'header_color' => 'crwdns1196:0crwdne1196:0',
|
||||
'header_color_help' => 'crwdns14334:0crwdne14334:0',
|
||||
'header_color' => 'crwdns14366:0crwdne14366:0',
|
||||
'header_color_help' => 'crwdns14368:0crwdne14368:0',
|
||||
'link_dark_color' => 'crwdns14370:0crwdne14370:0',
|
||||
'nav_link_color' => 'crwdns14372:0crwdne14372:0',
|
||||
'nav_link_color_help' => 'crwdns14374:0crwdne14374:0',
|
||||
'link_dark_color_help' => 'crwdns14376:0crwdne14376:0',
|
||||
'link_light_color' => 'crwdns14378:0crwdne14378:0',
|
||||
'link_light_color_help' => 'crwdns14380:0crwdne14380:0',
|
||||
'info' => 'crwdns831:0crwdne831:0',
|
||||
'label_logo_size' => 'crwdns5866:0crwdne5866:0',
|
||||
'laravel' => 'crwdns1119:0crwdne1119:0',
|
||||
@@ -350,7 +361,7 @@ return [
|
||||
'labels_title' => 'crwdns6461:0crwdne6461:0',
|
||||
'labels_title_help' => 'crwdns14274:0crwdne14274:0',
|
||||
'labels_help' => 'crwdns12840:0crwdne12840:0',
|
||||
'purge_help' => 'crwdns6469:0crwdne6469:0',
|
||||
'purge_help' => 'crwdns14390:0crwdne14390:0',
|
||||
'ldap_extension_warning' => 'crwdns6471:0crwdne6471:0',
|
||||
'ldap_ad' => 'crwdns6473:0crwdne6473:0',
|
||||
'ldap_test_label' => 'crwdns12892:0crwdne12892:0',
|
||||
@@ -360,13 +371,14 @@ return [
|
||||
'employee_number' => 'crwdns6475:0crwdne6475:0',
|
||||
'create_admin_user' => 'crwdns6477:0crwdne6477:0',
|
||||
'create_admin_success' => 'crwdns6479:0crwdne6479:0',
|
||||
'create_admin_redirect' => 'crwdns6481:0crwdne6481:0',
|
||||
'create_admin_redirect' => 'crwdns14408:0crwdne14408:0',
|
||||
'setup_migrations' => 'crwdns6483:0crwdne6483:0',
|
||||
'setup_no_migrations' => 'crwdns6485:0crwdne6485:0',
|
||||
'setup_successful_migrations' => 'crwdns6487:0crwdne6487:0',
|
||||
'setup_migration_output' => 'crwdns6489:0crwdne6489:0',
|
||||
'setup_migration_create_user' => 'crwdns6491:0crwdne6491:0',
|
||||
'setup_migration_create_user' => 'crwdns14410:0crwdne14410:0',
|
||||
'ldap_settings_link' => 'crwdns6493:0crwdne6493:0',
|
||||
'setup_create_user_page_explanation' => 'crwdns14412:0crwdne14412:0',
|
||||
'slack_test' => 'crwdns6495:0crwdne6495:0',
|
||||
'status_label_name' => 'crwdns12969:0crwdne12969:0',
|
||||
'super_admin_only' => 'crwdns12971:0crwdne12971:0',
|
||||
@@ -375,7 +387,7 @@ return [
|
||||
'label2_template' => 'crwdns11727:0crwdne11727:0',
|
||||
'label2_template_help' => 'crwdns11729:0crwdne11729:0',
|
||||
'label2_title' => 'crwdns11731:0crwdne11731:0',
|
||||
'label2_title_help' => 'crwdns11733:0crwdne11733:0',
|
||||
'label2_title_help' => 'crwdns14486:0crwdne14486:0',
|
||||
'label2_title_help_phold' => 'crwdns11767:0{COMPANY}crwdne11767:0',
|
||||
'label2_asset_logo' => 'crwdns11737:0crwdne11737:0',
|
||||
'label2_asset_logo_help' => 'crwdns11739:0crwdne11739:0',
|
||||
@@ -390,6 +402,7 @@ return [
|
||||
'select_template' => 'crwdns14284:0crwdne14284:0',
|
||||
'label2_fields' => 'crwdns11753:0crwdne11753:0',
|
||||
'label2_fields_help' => 'crwdns14286:0crwdne14286:0',
|
||||
"label2_label_preview" => 'crwdns14494:0crwdne14494:0',
|
||||
'purge_barcodes' => 'crwdns12985:0crwdne12985:0',
|
||||
'help_asterisk_bold' => 'crwdns11757:0crwdne11757:0',
|
||||
'help_blank_to_use' => 'crwdns11759:0crwdne11759:0',
|
||||
@@ -490,11 +503,13 @@ return [
|
||||
'general' => 'crwdns13220:0crwdne13220:0',
|
||||
'intervals' => 'crwdns13222:0crwdne13222:0',
|
||||
'logos' => 'crwdns13212:0crwdne13212:0',
|
||||
'display' => 'crwdns14382:0crwdne14382:0',
|
||||
'mapping' => 'crwdns13736:0crwdne13736:0',
|
||||
'test' => 'crwdns13738:0crwdne13738:0',
|
||||
'misc' => 'crwdns13208:0crwdne13208:0',
|
||||
'misc_display' => 'crwdns13200:0crwdne13200:0',
|
||||
'profiles' => 'crwdns13196:0crwdne13196:0',
|
||||
'your_details' => 'crwdns14384:0crwdne14384:0',
|
||||
'server' => 'crwdns13740:0crwdne13740:0',
|
||||
'scoping' => 'crwdns13192:0crwdne13192:0',
|
||||
'security' => 'crwdns13218:0crwdne13218:0',
|
||||
|
||||
@@ -37,7 +37,7 @@ return [
|
||||
'superadmin_permission_warning' => 'crwdns6751:0crwdne6751:0',
|
||||
'admin_permission_warning' => 'crwdns6753:0crwdne6753:0',
|
||||
'remove_group_memberships' => 'crwdns6755:0crwdne6755:0',
|
||||
'warning_deletion_information' => 'crwdns10534:0crwdne10534:0',
|
||||
'warning_deletion_information' => 'crwdns14444:0crwdne14444:0',
|
||||
'update_user_assets_status' => 'crwdns10488:0crwdne10488:0',
|
||||
'checkin_user_properties' => 'crwdns6763:0crwdne6763:0',
|
||||
'remote_label' => 'crwdns6828:0crwdne6828:0',
|
||||
|
||||
@@ -6,7 +6,8 @@ return array(
|
||||
'declined' => 'crwdns14256:0crwdne14256:0',
|
||||
'bulk_manager_warn' => 'crwdns1849:0crwdne1849:0',
|
||||
'user_exists' => 'crwdns787:0crwdne787:0',
|
||||
'user_not_found' => 'crwdns12744:0crwdne12744:0',
|
||||
'cannot_delete' => 'crwdns14468:0crwdne14468:0',
|
||||
'user_not_found' => 'crwdns14470:0crwdne14470:0',
|
||||
'user_login_required' => 'crwdns789:0crwdne789:0',
|
||||
'user_has_no_assets_assigned' => 'crwdns11868:0crwdne11868:0',
|
||||
'user_password_required' => 'crwdns790:0crwdne790:0',
|
||||
|
||||
@@ -22,6 +22,7 @@ return [
|
||||
'add_maintenance' => 'crwdns6307:0crwdne6307:0',
|
||||
'append' => 'crwdns6309:0crwdne6309:0',
|
||||
'new' => 'crwdns6311:0crwdne6311:0',
|
||||
'show_hide_info' => 'crwdns14496:0crwdne14496:0',
|
||||
'var' => [
|
||||
'clone' => 'crwdns12598:0crwdne12598:0',
|
||||
'edit' => 'crwdns12600:0crwdne12600:0',
|
||||
|
||||
@@ -100,7 +100,11 @@ return [
|
||||
'created_at' => 'crwdns10458:0crwdne10458:0',
|
||||
'created_by' => 'crwdns10460:0crwdne10460:0',
|
||||
'record_created' => 'crwdns5946:0crwdne5946:0',
|
||||
'updated_at' => 'crwdns1856:0crwdne1856:0',
|
||||
'updated_at' => 'crwdns14488:0crwdne14488:0',
|
||||
'updated_plain' => 'crwdns14490:0crwdne14490:0',
|
||||
'deleted_plain' => 'crwdns14500:0crwdne14500:0',
|
||||
'purchased_plain' => 'crwdns14502:0crwdne14502:0',
|
||||
'created_plain' => 'crwdns14492:0crwdne14492:0',
|
||||
'currency' => 'crwdns1043:0crwdne1043:0', // this is deprecated
|
||||
'currency_text' => 'crwdns12935:0crwdne12935:0', //
|
||||
'current' => 'crwdns1044:0crwdne1044:0',
|
||||
@@ -116,7 +120,7 @@ return [
|
||||
'debug_warning_text' => 'crwdns1828:0crwdne1828:0',
|
||||
'delete' => 'crwdns1046:0crwdne1046:0',
|
||||
'delete_confirm' => 'crwdns2020:0crwdne2020:0',
|
||||
'delete_confirm_no_undo' => 'crwdns14308:0crwdne14308:0',
|
||||
'delete_confirm_no_undo' => 'crwdns14358:0crwdne14358:0',
|
||||
'deleted' => 'crwdns1047:0crwdne1047:0',
|
||||
'delete_seats' => 'crwdns1430:0crwdne1430:0',
|
||||
'deletion_failed' => 'crwdns6117:0crwdne6117:0',
|
||||
@@ -129,7 +133,7 @@ return [
|
||||
'details' => 'crwdns1994:0crwdne1994:0',
|
||||
'download' => 'crwdns1181:0crwdne1181:0',
|
||||
'download_all' => 'crwdns6032:0crwdne6032:0',
|
||||
'editprofile' => 'crwdns1051:0crwdne1051:0',
|
||||
'editprofile' => 'crwdns14392:0crwdne14392:0',
|
||||
'eol' => 'crwdns1052:0crwdne1052:0',
|
||||
'email_domain' => 'crwdns1642:0crwdne1642:0',
|
||||
'employee_number' => 'crwdns6776:0crwdne6776:0',
|
||||
@@ -138,13 +142,13 @@ return [
|
||||
'exclude_archived' => 'crwdns10514:0crwdne10514:0',
|
||||
'exclude_deleted' => 'crwdns10516:0crwdne10516:0',
|
||||
'example' => 'crwdns10462:0crwdne10462:0',
|
||||
|
||||
'files' => 'crwdns1996:0crwdne1996:0',
|
||||
'file_name' => 'crwdns13518:0crwdne13518:0',
|
||||
'file_type' => 'crwdns5970:0crwdne5970:0',
|
||||
'filesize' => 'crwdns6788:0crwdne6788:0',
|
||||
'file_uploads' => 'crwdns1154:0crwdne1154:0',
|
||||
'file_upload' => 'crwdns6123:0crwdne6123:0',
|
||||
'first_checkout' => 'crwdns14484:0crwdne14484:0',
|
||||
'generate' => 'crwdns1140:0crwdne1140:0',
|
||||
'generate_labels' => 'crwdns6125:0crwdne6125:0',
|
||||
'github_markdown' => 'crwdns1981:0crwdne1981:0',
|
||||
@@ -160,12 +164,13 @@ return [
|
||||
'image_upload' => 'crwdns1058:0crwdne1058:0',
|
||||
'filetypes_accepted_help' => 'crwdns12622:0crwdne12622:0',
|
||||
'filetypes_size_help' => 'crwdns12624:0crwdne12624:0',
|
||||
'image_filetypes_help' => 'crwdns14310:0crwdne14310:0',
|
||||
'image_filetypes_help' => 'crwdns14360:0crwdne14360:0',
|
||||
'unaccepted_image_type' => 'crwdns11365:0crwdne11365:0',
|
||||
'import' => 'crwdns1411:0crwdne1411:0',
|
||||
'documentation' => 'crwdns14462:0crwdne14462:0',
|
||||
'import_this_file' => 'crwdns11922:0crwdne11922:0',
|
||||
'importing' => 'crwdns6034:0crwdne6034:0',
|
||||
'importing_help' => 'crwdns13750:0crwdne13750:0',
|
||||
'importing_help' => 'crwdns14450:0crwdne14450:0',
|
||||
'import-history' => 'crwdns1694:0crwdne1694:0',
|
||||
'asset_maintenance' => 'crwdns1335:0crwdne1335:0',
|
||||
'asset_maintenance_report' => 'crwdns1336:0crwdne1336:0',
|
||||
@@ -205,7 +210,7 @@ return [
|
||||
'manufacturers' => 'crwdns1068:0crwdne1068:0',
|
||||
'markdown' => 'crwdns1574:0crwdne1574:0',
|
||||
'min_amt' => 'crwdns1575:0crwdne1575:0',
|
||||
'min_amt_help' => 'crwdns6139:0crwdne6139:0',
|
||||
'min_amt_help' => 'crwdns14472:0crwdne14472:0',
|
||||
'model_no' => 'crwdns1069:0crwdne1069:0',
|
||||
'months' => 'crwdns1070:0crwdne1070:0',
|
||||
'moreinfo' => 'crwdns1071:0crwdne1071:0',
|
||||
@@ -241,7 +246,7 @@ return [
|
||||
'previous' => 'crwdns1278:0crwdne1278:0',
|
||||
'previous_page' => 'crwdns13476:0crwdne13476:0',
|
||||
'processing' => 'crwdns1279:0crwdne1279:0',
|
||||
'profile' => 'crwdns14342:0crwdne14342:0',
|
||||
'profile' => 'crwdns14476:0crwdne14476:0',
|
||||
'purchase_cost' => 'crwdns1830:0crwdne1830:0',
|
||||
'purchase_date' => 'crwdns1831:0crwdne1831:0',
|
||||
'qty' => 'crwdns1328:0crwdne1328:0',
|
||||
@@ -263,7 +268,7 @@ return [
|
||||
'rtd' => 'crwdns14338:0crwdne14338:0',
|
||||
'requested_date' => 'crwdns6149:0crwdne6149:0',
|
||||
'requested_assets' => 'crwdns6151:0crwdne6151:0',
|
||||
'requested_assets_menu' => 'crwdns14312:0crwdne14312:0',
|
||||
'requested_assets_menu' => 'crwdns14474:0crwdne14474:0',
|
||||
'request_canceled' => 'crwdns1703:0crwdne1703:0',
|
||||
'request_item' => 'crwdns12204:0crwdne12204:0',
|
||||
'external_link_tooltip' => 'crwdns12206:0crwdne12206:0',
|
||||
@@ -331,6 +336,7 @@ return [
|
||||
'password' => 'crwdns13512:0crwdne13512:0',
|
||||
'accepted' => 'crwdns1342:0crwdne1342:0',
|
||||
'declined' => 'crwdns1343:0crwdne1343:0',
|
||||
'declined_date' => 'crwdns14478:0crwdne14478:0',
|
||||
'declined_note' => 'crwdns12184:0crwdne12184:0',
|
||||
'unassigned' => 'crwdns11769:0crwdne11769:0',
|
||||
'unaccepted_asset_report' => 'crwdns14314:0crwdne14314:0',
|
||||
@@ -350,7 +356,7 @@ return [
|
||||
'file_not_inlineable' => 'crwdns13624:0crwdne13624:0',
|
||||
'open_new_window' => 'crwdns13520:0crwdne13520:0',
|
||||
'file_upload_success' => 'crwdns11187:0crwdne11187:0',
|
||||
'no_files_uploaded' => 'crwdns11189:0crwdne11189:0',
|
||||
'no_files_uploaded' => 'crwdns14480:0crwdne14480:0',
|
||||
'token_expired' => 'crwdns1578:0crwdne1578:0',
|
||||
'login_enabled' => 'crwdns5984:0crwdne5984:0',
|
||||
'login_disabled' => 'crwdns13618:0crwdne13618:0',
|
||||
@@ -384,9 +390,10 @@ return [
|
||||
'setup_step_3' => 'crwdns6181:0crwdne6181:0',
|
||||
'setup_step_4' => 'crwdns6183:0crwdne6183:0',
|
||||
'setup_config_check' => 'crwdns6185:0crwdne6185:0',
|
||||
'setup_create_database' => 'crwdns12640:0crwdne12640:0',
|
||||
'setup_create_admin' => 'crwdns12676:0crwdne12676:0',
|
||||
'setup_done' => 'crwdns6191:0crwdne6191:0',
|
||||
'setup_create_database' => 'crwdns14400:0crwdne14400:0',
|
||||
'setup_create_admin' => 'crwdns14402:0crwdne14402:0',
|
||||
'setup_next' => 'crwdns14404:0crwdne14404:0',
|
||||
'setup_done' => 'crwdns14406:0crwdne14406:0',
|
||||
'bulk_edit_about_to' => 'crwdns6193:0crwdne6193:0',
|
||||
'checked_out' => 'crwdns6195:0crwdne6195:0',
|
||||
'checked_out_to' => 'crwdns6197:0crwdne6197:0',
|
||||
@@ -452,6 +459,7 @@ return [
|
||||
'accessory_information' => 'crwdns6289:0crwdne6289:0',
|
||||
'accessory_name' => 'crwdns6291:0crwdne6291:0',
|
||||
'clone_item' => 'crwdns6293:0crwdne6293:0',
|
||||
'clone' => 'crwdns14504:0crwdne14504:0',
|
||||
'checkout_tooltip' => 'crwdns6295:0crwdne6295:0',
|
||||
'checkin_tooltip' => 'crwdns12208:0crwdne12208:0',
|
||||
'checkout_user_tooltip' => 'crwdns6299:0crwdne6299:0',
|
||||
@@ -463,7 +471,7 @@ return [
|
||||
'backup_delete_not_allowed' => 'crwdns10468:0crwdne10468:0',
|
||||
'additional_files' => 'crwdns10470:0crwdne10470:0',
|
||||
'shitty_browser' => 'crwdns10508:0crwdne10508:0',
|
||||
'bulk_soft_delete' =>'crwdns10524:0crwdne10524:0',
|
||||
'bulk_soft_delete' =>'crwdns14446:0crwdne14446:0',
|
||||
'bulk_checkin_delete_success' => 'crwdns10526:0crwdne10526:0',
|
||||
'bulk_checkin_success' => 'crwdns10528:0crwdne10528:0',
|
||||
'set_to_null' => 'crwdns12738:0crwdne12738:0',
|
||||
@@ -535,6 +543,12 @@ return [
|
||||
'serial_number' => 'crwdns11633:0crwdne11633:0',
|
||||
'item_notes' => 'crwdns11635:0crwdne11635:0',
|
||||
'item_name_var' => 'crwdns11637:0crwdne11637:0',
|
||||
'light_mode' => 'crwdns14362:0crwdne14362:0',
|
||||
'dark_mode' => 'crwdns14364:0crwdne14364:0',
|
||||
'light_dark' => 'crwdns14394:0crwdne14394:0',
|
||||
'system_default' => 'crwdns14452:0crwdne14452:0',
|
||||
'system_default_help' => 'crwdns14454:0crwdne14454:0',
|
||||
'theme' => 'crwdns14398:0crwdne14398:0',
|
||||
'error_user_company' => 'crwdns11833:0crwdne11833:0',
|
||||
'error_user_company_multiple' => 'crwdns13828:0crwdne13828:0',
|
||||
'error_user_company_accept_view' => 'crwdns11787:0crwdne11787:0',
|
||||
@@ -619,6 +633,7 @@ return [
|
||||
'something_went_wrong' => 'crwdns12306:0crwdne12306:0',
|
||||
'close' => 'crwdns12308:0crwdne12308:0',
|
||||
'expires' => 'crwdns12310:0crwdne12310:0',
|
||||
'filename' => 'crwdns14482:0crwdne14482:0',
|
||||
'map_fields'=> 'crwdns12784:0crwdne12784:0',
|
||||
'remaining_var' => 'crwdns12612:0crwdne12612:0',
|
||||
'label' => 'crwdns12690:0crwdne12690:0',
|
||||
@@ -637,10 +652,12 @@ return [
|
||||
'use_cloned_image' => 'crwdns13522:0crwdne13522:0',
|
||||
'use_cloned_image_help' => 'crwdns13524:0crwdne13524:0',
|
||||
'use_cloned_no_image_help' => 'crwdns13526:0crwdne13526:0',
|
||||
'footer_credit' => 'crwdns13282:0crwdne13282:0',
|
||||
'footer_credit' => 'crwdns14414:0crwdne14414:0',
|
||||
'set_password' => 'crwdns13494:0crwdne13494:0',
|
||||
'upload_deleted' => 'crwdns13768:0crwdne13768:0',
|
||||
'child_locations' => 'crwdns13796:0crwdne13796:0',
|
||||
'append' => 'crwdns14416:0crwdne14416:0',
|
||||
'optional' => 'crwdns14448:0crwdne14448:0',
|
||||
|
||||
// Add form placeholders here
|
||||
'placeholders' => [
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
return array(
|
||||
|
||||
'disabled_assoc' => [
|
||||
'accessory' => 'crwdns14418:0crwdne14418:0',
|
||||
'asset' => 'crwdns14420:0crwdne14420:0',
|
||||
'category' => 'crwdns14422:0crwdne14422:0',
|
||||
'company' => 'crwdns14424:0crwdne14424:0',
|
||||
'component' => 'crwdns14426:0crwdne14426:0',
|
||||
'custom_field' => 'crwdns14428:0crwdne14428:0',
|
||||
'department' => 'crwdns14430:0crwdne14430:0',
|
||||
'location' => 'crwdns14432:0crwdne14432:0',
|
||||
'manufacturer' => 'crwdns14434:0crwdne14434:0',
|
||||
'supplier' => 'crwdns14436:0crwdne14436:0',
|
||||
'user' => 'crwdns14438:0crwdne14438:0',
|
||||
'user_self' => 'crwdns14440:0crwdne14440:0',
|
||||
],
|
||||
|
||||
'checkin_all' => [
|
||||
'user' => 'crwdns14442:0crwdne14442:0'
|
||||
],
|
||||
|
||||
);
|
||||
@@ -230,7 +230,10 @@ return [
|
||||
|
|
||||
*/
|
||||
|
||||
'attributes' => [],
|
||||
'attributes' => [
|
||||
'serials.*' => 'crwdns14386:0crwdne14386:0',
|
||||
'asset_tags.*' => 'crwdns14388:0crwdne14388:0',
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
|
||||
@@ -5,7 +5,7 @@ return [
|
||||
'manage' => 'Manage',
|
||||
'field' => 'veld',
|
||||
'about_fieldsets_title' => 'Oor Fieldsets',
|
||||
'about_fieldsets_text' => 'Veldstelle stel jou in staat om groepe van persoonlike velde te skep wat gereeld hergebruik word vir spesifieke tipe bates.',
|
||||
'about_fieldsets_text' => 'Fieldsets allow you to create groups of custom fields that are frequently re-used for specific asset model types.',
|
||||
'custom_format' => 'Custom Regex format...',
|
||||
'encrypt_field' => 'Enkripteer die waarde van hierdie veld in die databasis',
|
||||
'encrypt_field_help' => 'WAARSKUWING: Om \'n veld te enkripteer, maak dit onondersoekbaar.',
|
||||
|
||||
@@ -16,7 +16,7 @@ return array(
|
||||
'seats' => 'sitplekke',
|
||||
'termination_date' => 'Termyn Datum',
|
||||
'to_email' => 'Gelisensieer om te e-pos',
|
||||
'to_name' => 'Gelisensieer om te Noem',
|
||||
'to_name' => 'Gelisensieer om',
|
||||
'update' => 'Update Lisensie',
|
||||
'checkout_help' => 'U moet \'n lisensie na \'n hardeware bate of \'n persoon nagaan. Jy kan albei kies, maar die eienaar van die bate moet ooreenstem met die persoon waarna jy die bate nagaan.'
|
||||
);
|
||||
|
||||
@@ -41,6 +41,9 @@ return [
|
||||
'backups_logged_out' => 'All existing users, including you, will be logged out once your restore is complete.',
|
||||
'backups_large' => 'Very large backups may time out on the restore attempt and may still need to be run via command line. ',
|
||||
'barcode_settings' => 'Barcode-instellings',
|
||||
'color_preferences' => 'Color & Theme Settings',
|
||||
'color_settings_help' => 'These settings will be used throughout Snipe-IT. Users are able to override the link colors by editing their account preferences to meet their individual readability requirements.',
|
||||
'color_reset' => 'Reset to Default',
|
||||
'confirm_purge' => 'Bevestig skoonmaak',
|
||||
'confirm_purge_help' => 'Enter the text "DELETE" in the box below to purge your deleted records. This action cannot be undone and will PERMANENTLY delete all soft-deleted items and users. (You should make a backup first, just to be safe.)',
|
||||
'custom_css' => 'Aangepaste CSS',
|
||||
@@ -75,11 +78,19 @@ return [
|
||||
'footer_text_help' => 'This text will appear in the right-side footer. Links are allowed using <a href="https://help.github.com/articles/github-flavored-markdown/">Github flavored markdown</a>. Line breaks, headers, images, etc may result in unpredictable results.',
|
||||
'footer_text_placeholder' => 'Optional footer text',
|
||||
'general_settings' => 'Algemene instellings',
|
||||
'api_url' => 'API Base URL',
|
||||
'scim_url' => 'SCIM Base URL',
|
||||
'general_settings_help' => 'Default EULA and more',
|
||||
'generate_backup' => 'Genereer rugsteun',
|
||||
'google_workspaces' => 'Google Workspaces',
|
||||
'header_color' => 'Opskrif Kleur',
|
||||
'header_color_help' => 'Scroll up to the top of the screen to preview the header color.',
|
||||
'header_color' => 'Primary Theme Color',
|
||||
'header_color_help' => 'Selecting a new color here will let you preview the color with your logo selection (if you have a site logo uploaded) in the header, however it will not be saved until you click the Save button.',
|
||||
'link_dark_color' => 'Link Color for Dark Mode',
|
||||
'nav_link_color' => 'Header Nav Link Color',
|
||||
'nav_link_color_help' => 'Select a color for the links in your top level navigation. This color should be high enough contrast against your header color to be easily readable.',
|
||||
'link_dark_color_help' => 'Select a color that will provide enough contrast for people that use Snipe-IT in dark mode.',
|
||||
'link_light_color' => 'Link Color for Light Mode',
|
||||
'link_light_color_help' => 'Select a color that will provide enough contrast for people that use Snipe-IT in light mode.',
|
||||
'info' => 'Met hierdie instellings kan u sekere aspekte van u installasie aanpas.',
|
||||
'label_logo_size' => 'Square logos look best - will be displayed in the top right of each asset label. ',
|
||||
'laravel' => 'Laravel Weergawe',
|
||||
@@ -350,7 +361,7 @@ return [
|
||||
'labels_title' => 'Update Label Settings',
|
||||
'labels_title_help' => 'Changes made here must be saved before they will be reflected in the labels or the preview below.',
|
||||
'labels_help' => 'Barcodes & label settings',
|
||||
'purge_help' => 'Verwyder verwyderde rekords',
|
||||
'purge_help' => 'Permanently delete soft-deleted records',
|
||||
'ldap_extension_warning' => 'It does not look like the LDAP extension is installed or enabled on this server. You can still save your settings, but you will need to enable the LDAP extension for PHP before LDAP syncing or login will work.',
|
||||
'ldap_ad' => 'LDAP/AD',
|
||||
'ldap_test_label' => 'Test LDAP Sync',
|
||||
@@ -360,13 +371,14 @@ return [
|
||||
'employee_number' => 'Employee Number',
|
||||
'create_admin_user' => 'Create a User ::',
|
||||
'create_admin_success' => 'Success! Your admin user has been added!',
|
||||
'create_admin_redirect' => 'Click here to go to your app login!',
|
||||
'create_admin_redirect' => 'Go To Dashboard',
|
||||
'setup_migrations' => 'Database Migrations ::',
|
||||
'setup_no_migrations' => 'There was nothing to migrate. Your database tables were already set up!',
|
||||
'setup_successful_migrations' => 'Your database tables have been created',
|
||||
'setup_migration_output' => 'Migration output:',
|
||||
'setup_migration_create_user' => 'Next: Create User',
|
||||
'setup_migration_create_user' => 'Save User and Finish',
|
||||
'ldap_settings_link' => 'LDAP Settings Page',
|
||||
'setup_create_user_page_explanation' => 'Here you will create your first superadmin user and set some basic application setting defaults. (These can always be changed later in the Admin Settings section.) ',
|
||||
'slack_test' => 'Test <i class="fab fa-slack"></i> Integration',
|
||||
'status_label_name' => 'Status Label Name',
|
||||
'super_admin_only' => 'Super Admin Only',
|
||||
@@ -375,7 +387,7 @@ return [
|
||||
'label2_template' => 'Template',
|
||||
'label2_template_help' => 'Select which template to use for label generation',
|
||||
'label2_title' => 'Titel',
|
||||
'label2_title_help' => 'The title to show on labels that support it',
|
||||
'label2_title_help' => 'The title to show on labels that support it. <br>This will occupy the first Label Field row.',
|
||||
'label2_title_help_phold' => 'The placeholder <code>{COMPANY}</code> will be replaced with the asset's company name',
|
||||
'label2_asset_logo' => 'Use Asset Logo',
|
||||
'label2_asset_logo_help' => 'Use the logo of the asset's assigned company, rather than the value at <code>:setting_name</code>',
|
||||
@@ -390,6 +402,7 @@ return [
|
||||
'select_template' => 'Select a Template',
|
||||
'label2_fields' => 'Field Definitions',
|
||||
'label2_fields_help' => 'Fields can be added, removed, and reordered in the left column. For each field, multiple options for Label and DataSource can be added, removed, and reordered in the right column. Field changes made here will be reflected immediately in the preview below but must be saved for them to apply to new labels.',
|
||||
"label2_label_preview" => 'Label Preview',
|
||||
'purge_barcodes' => 'Purge Barcodes',
|
||||
'help_asterisk_bold' => 'Text entered as <code>**text**</code> will be displayed as bold',
|
||||
'help_blank_to_use' => 'Leave blank to use the value from <code>:setting_name</code>',
|
||||
@@ -490,11 +503,13 @@ return [
|
||||
'general' => 'General',
|
||||
'intervals' => 'Intervals & Thresholds',
|
||||
'logos' => 'Logos & Display',
|
||||
'display' => 'Display Preferences',
|
||||
'mapping' => 'LDAP Field Mapping',
|
||||
'test' => 'Test LDAP Connection',
|
||||
'misc' => 'Miscellaneous',
|
||||
'misc_display' => 'Miscellaneous Display Options',
|
||||
'profiles' => 'User Profiles',
|
||||
'your_details' => 'Your Details',
|
||||
'server' => 'Server Settings',
|
||||
'scoping' => 'Scoping',
|
||||
'security' => 'Security Preferences',
|
||||
|
||||
@@ -37,7 +37,7 @@ return [
|
||||
'superadmin_permission_warning' => 'Only superadmins may grant a user superadmin access.',
|
||||
'admin_permission_warning' => 'Only users with admins rights or greater may grant a user admin access.',
|
||||
'remove_group_memberships' => 'Remove Group Memberships',
|
||||
'warning_deletion_information' => 'You are about to checkin ALL items from the :count user(s) listed below. Super admin names are highlighted in red.',
|
||||
'warning_deletion_information' => 'You are about to checkin ALL items from the :count user(s) listed below.',
|
||||
'update_user_assets_status' => 'Update all assets for these users to this status',
|
||||
'checkin_user_properties' => 'Check in all properties associated with these users',
|
||||
'remote_label' => 'This is a remote user',
|
||||
|
||||
@@ -6,7 +6,8 @@ return array(
|
||||
'declined' => 'You have successfully declined this item.',
|
||||
'bulk_manager_warn' => 'Jou gebruikers is suksesvol opgedateer, maar jou bestuurderinskrywing is nie gestoor nie, want die bestuurder wat jy gekies het, was ook in die gebruikerslys om geredigeer te word, en gebruikers mag nie hul eie bestuurder wees nie. Kies asseblief u gebruikers weer, behalwe die bestuurder.',
|
||||
'user_exists' => 'Gebruiker bestaan reeds!',
|
||||
'user_not_found' => 'User does not exist or you do not have permission view them.',
|
||||
'cannot_delete' => 'User does not exist or you do not have permission to delete them.',
|
||||
'user_not_found' => 'User does not exist or you do not have permission to view them.',
|
||||
'user_login_required' => 'Die aanmeldingsveld is nodig',
|
||||
'user_has_no_assets_assigned' => 'No assets currently assigned to user.',
|
||||
'user_password_required' => 'Die wagwoord is nodig.',
|
||||
|
||||
@@ -22,6 +22,7 @@ return [
|
||||
'add_maintenance' => 'Add Maintenance',
|
||||
'append' => 'Append',
|
||||
'new' => 'Nuwe',
|
||||
'show_hide_info' => 'Show/Hide More Information',
|
||||
'var' => [
|
||||
'clone' => 'Clone :item_type',
|
||||
'edit' => 'Edit :item_type',
|
||||
|
||||
@@ -100,7 +100,11 @@ return [
|
||||
'created_at' => 'Created At',
|
||||
'created_by' => 'Created By',
|
||||
'record_created' => 'Record Created',
|
||||
'updated_at' => 'Opgedateer op',
|
||||
'updated_at' => 'Updated At',
|
||||
'updated_plain' => 'Updated',
|
||||
'deleted_plain' => 'geskrap',
|
||||
'purchased_plain' => 'gekoop',
|
||||
'created_plain' => 'Geskep',
|
||||
'currency' => '$', // this is deprecated
|
||||
'currency_text' => 'Currency', //
|
||||
'current' => 'Huidige',
|
||||
@@ -116,7 +120,7 @@ return [
|
||||
'debug_warning_text' => 'Hierdie program word uitgevoer in die produksiemodus met debugging aangeskakel. Dit kan sensitiewe data blootstel indien u aansoek vir die buitewêreld toeganklik is. Deaktiveer debug-modus deur die <code>APP_DEBUG</code>-waarde in jou <code>.env</code>-lêer te stel na <code>false</code>.',
|
||||
'delete' => 'verwyder',
|
||||
'delete_confirm' => 'Are you sure you wish to delete :item?',
|
||||
'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This cannot be undone.',
|
||||
'delete_confirm_no_undo' => 'Are you sure, you wish to delete :item? This cannot be undone.',
|
||||
'deleted' => 'geskrap',
|
||||
'delete_seats' => 'Plekke verwyder',
|
||||
'deletion_failed' => 'Deletion failed',
|
||||
@@ -129,7 +133,7 @@ return [
|
||||
'details' => 'Details',
|
||||
'download' => 'Aflaai',
|
||||
'download_all' => 'Download All',
|
||||
'editprofile' => 'Wysig jou profiel',
|
||||
'editprofile' => 'Edit Profile',
|
||||
'eol' => 'EOL',
|
||||
'email_domain' => 'E-pos Domein',
|
||||
'employee_number' => 'Employee Number',
|
||||
@@ -138,13 +142,13 @@ return [
|
||||
'exclude_archived' => 'Exclude Archived Assets',
|
||||
'exclude_deleted' => 'Exclude Deleted Assets',
|
||||
'example' => 'Example: ',
|
||||
|
||||
'files' => 'Files',
|
||||
'file_name' => 'File Name',
|
||||
'file_type' => 'File Type',
|
||||
'filesize' => 'File Size',
|
||||
'file_uploads' => 'Lêeroplaaie',
|
||||
'file_upload' => 'File Upload',
|
||||
'first_checkout' => '1<sup>st</sup> Checkout',
|
||||
'generate' => 'genereer',
|
||||
'generate_labels' => 'Generate Labels',
|
||||
'github_markdown' => 'This field accepts <a href="https://help.github.com/articles/github-flavored-markdown/">Github flavored markdown</a>.',
|
||||
@@ -160,12 +164,13 @@ return [
|
||||
'image_upload' => 'Laai prent op',
|
||||
'filetypes_accepted_help' => 'Accepted filetype is :types. The maximum size allowed is :size.|Accepted filetypes are :types. The maximum upload size allowed is :size.',
|
||||
'filetypes_size_help' => 'The maximum upload size allowed is :size.',
|
||||
'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. The maximum upload size allowed is :size.',
|
||||
'image_filetypes_help' => 'Accepted Filetypes are jpg, webp, png, gif, svg, and avif. The maximum upload size allowed is :size.',
|
||||
'unaccepted_image_type' => 'This image file was not readable. Accepted filetypes are jpg, webp, png, gif, and svg. The mimetype of this file is: :mimetype.',
|
||||
'import' => 'invoer',
|
||||
'documentation' => 'Open documentation in a new link',
|
||||
'import_this_file' => 'Map fields and process this file',
|
||||
'importing' => 'Importing',
|
||||
'importing_help' => 'The CSV should be comma-delimited and formatted with headers that match the ones in the <a href="https://snipe-it.readme.io/docs/importing" target="_new">sample CSVs in the documentation</a>.',
|
||||
'importing_help' => 'The CSV should be comma-delimited and formatted with headers that match the ones in the <a href="https://snipe-it.readme.io/docs/importing" target="_new">sample CSVs in the documentation <i class="fa fa-external-link"></i></a>.',
|
||||
'import-history' => 'Invoer Geskiedenis',
|
||||
'asset_maintenance' => 'Bate Onderhoud',
|
||||
'asset_maintenance_report' => 'Asset Maintenance Report',
|
||||
@@ -205,7 +210,7 @@ return [
|
||||
'manufacturers' => 'vervaardigers',
|
||||
'markdown' => 'Hierdie veld laat <a href="https://help.github.com/articles/github-flavored-markdown/">Gitub-gegeurde markdown</a> toe.',
|
||||
'min_amt' => 'Min. HOEV',
|
||||
'min_amt_help' => 'Minimum number of items that should be available before an alert gets triggered. Leave Min. QTY blank if you do not want to receive alerts for low inventory.',
|
||||
'min_amt_help' => 'Minimum number of this item that should be available for checkout before an alert gets triggered. Leave blank if you do not wish to receive alerts for low inventory.',
|
||||
'model_no' => 'Model Nr.',
|
||||
'months' => 'maande',
|
||||
'moreinfo' => 'Meer inligting',
|
||||
@@ -241,7 +246,7 @@ return [
|
||||
'previous' => 'vorige',
|
||||
'previous_page' => 'Previous Page',
|
||||
'processing' => 'verwerking',
|
||||
'profile' => 'Your Profile',
|
||||
'profile' => 'View Profile',
|
||||
'purchase_cost' => 'Aankoopskoste',
|
||||
'purchase_date' => 'Aankoop datum',
|
||||
'qty' => 'HOEV',
|
||||
@@ -263,7 +268,7 @@ return [
|
||||
'rtd' => 'Klaar om te implementeer',
|
||||
'requested_date' => 'Requested Date',
|
||||
'requested_assets' => 'Requested Assets',
|
||||
'requested_assets_menu' => 'Requestable Items',
|
||||
'requested_assets_menu' => 'Requested Items',
|
||||
'request_canceled' => 'Versoek gekanselleer',
|
||||
'request_item' => 'Request this item',
|
||||
'external_link_tooltip' => 'External link to',
|
||||
@@ -331,6 +336,7 @@ return [
|
||||
'password' => 'wagwoord',
|
||||
'accepted' => 'aanvaarde',
|
||||
'declined' => 'afgeneem',
|
||||
'declined_date' => 'Date Declined',
|
||||
'declined_note' => 'Declined Notes',
|
||||
'unassigned' => 'Unassigned',
|
||||
'unaccepted_asset_report' => 'Unaccepted Items',
|
||||
@@ -350,7 +356,7 @@ return [
|
||||
'file_not_inlineable' => 'The requested file cannot be opened inline in your browser. You can download it instead.',
|
||||
'open_new_window' => 'Open this file in a new window',
|
||||
'file_upload_success' => 'File upload success!',
|
||||
'no_files_uploaded' => 'File upload success!',
|
||||
'no_files_uploaded' => 'No files were uploaded.',
|
||||
'token_expired' => 'Jou vormsessie het verval. Probeer asseblief weer.',
|
||||
'login_enabled' => 'Login Enabled',
|
||||
'login_disabled' => 'Login Disabled',
|
||||
@@ -384,9 +390,10 @@ return [
|
||||
'setup_step_3' => 'Step 3',
|
||||
'setup_step_4' => 'Step 4',
|
||||
'setup_config_check' => 'Configuration Check',
|
||||
'setup_create_database' => 'Create database tables',
|
||||
'setup_create_admin' => 'Create an admin user',
|
||||
'setup_done' => 'Finished!',
|
||||
'setup_create_database' => 'Create Database Tables',
|
||||
'setup_create_admin' => 'Create an Admin User',
|
||||
'setup_next' => 'volgende',
|
||||
'setup_done' => 'Setup Complete!',
|
||||
'bulk_edit_about_to' => 'You are about to edit the following: ',
|
||||
'checked_out' => 'Gekontroleer',
|
||||
'checked_out_to' => 'Checked out to',
|
||||
@@ -453,6 +460,7 @@ return [
|
||||
'accessory_information' => 'Accessory Information:',
|
||||
'accessory_name' => 'Toebehore Naam:',
|
||||
'clone_item' => 'Clone Item',
|
||||
'clone' => 'Clone',
|
||||
'checkout_tooltip' => 'Check this item out',
|
||||
'checkin_tooltip' => 'Check this item in so that it is available for re-issue, re-imaging, etc',
|
||||
'checkout_user_tooltip' => 'Check this item out to a user',
|
||||
@@ -464,7 +472,7 @@ return [
|
||||
'backup_delete_not_allowed' => 'Deleting backups has been disabled in the .env file. Contact support or your systems administrator.',
|
||||
'additional_files' => 'Additional Files',
|
||||
'shitty_browser' => 'No signature detected. If you are using an older browser, please use a more modern browser to complete your asset acceptance.',
|
||||
'bulk_soft_delete' =>'Also soft-delete these users. Their asset history will remain intact unless/until you purge deleted records in the Admin Settings.',
|
||||
'bulk_soft_delete' =>'Also soft-delete these users. Their item history will remain intact unless/until you purge deleted records in the Admin Settings.',
|
||||
'bulk_checkin_delete_success' => 'Your selected users have been deleted and their items have been checked in.',
|
||||
'bulk_checkin_success' => 'The items for the selected users have been checked in.',
|
||||
'set_to_null' => 'Delete values for this selection|Delete values for all :selection_count selections ',
|
||||
@@ -536,6 +544,12 @@ return [
|
||||
'serial_number' => 'Serial Number',
|
||||
'item_notes' => ':item Notes',
|
||||
'item_name_var' => ':item Name',
|
||||
'light_mode' => 'Light Mode',
|
||||
'dark_mode' => 'Dark Mode',
|
||||
'light_dark' => 'Light/Dark Mode',
|
||||
'system_default' => 'Use System Settings',
|
||||
'system_default_help' => 'This will reset your light/dark mode preferences to use the defaults set in your computer operating system preferences.',
|
||||
'theme' => 'Theme',
|
||||
'error_user_company' => 'Checkout target company and asset company do not match',
|
||||
'error_user_company_multiple' => 'One or more of the checkout target company and asset company do not match',
|
||||
'error_user_company_accept_view' => 'An Asset assigned to you belongs to a different company so you can\'t accept nor deny it, please check with your manager',
|
||||
@@ -620,6 +634,7 @@ return [
|
||||
'something_went_wrong' => 'Something went wrong with your request.',
|
||||
'close' => 'Close',
|
||||
'expires' => 'verstryk',
|
||||
'filename' => 'File Name',
|
||||
'map_fields'=> 'Map :item_type Fields',
|
||||
'remaining_var' => ':count Remaining',
|
||||
'label' => 'Label',
|
||||
@@ -638,10 +653,12 @@ return [
|
||||
'use_cloned_image' => 'Clone image from original',
|
||||
'use_cloned_image_help' => 'You may clone the original image or you can upload a new one using the upload field below.',
|
||||
'use_cloned_no_image_help' => 'This item does not have an associated image and instead inherits from the model or category it belongs to. If you would like to use a specific image for this item, you can upload a new one below.',
|
||||
'footer_credit' => '<a target="_blank" href="https://snipeitapp.com" rel="noopener">Snipe-IT</a> is open source software, made with <i class="fa fa-heart" aria-hidden="true" style="color: #a94442; font-size: 10px" /></i><span class="sr-only">love</span> by <a href="https://bsky.app/profile/snipeitapp.com" rel="noopener">@snipeitapp.com</a>.',
|
||||
'footer_credit' => '<a target="_blank" href="https://snipeitapp.com" rel="noopener">Snipe-IT</a> is open source software, made with <i class="fa fa-heart" aria-hidden="true" style="color: #a94442; font-size: 10px" /></i><span class="sr-only">love</span> by Grokability, Inc.',
|
||||
'set_password' => 'Set a Password',
|
||||
'upload_deleted' => 'Upload Deleted',
|
||||
'child_locations' => 'Child Locations',
|
||||
'append' => 'Append',
|
||||
'optional' => 'OPTIONAL',
|
||||
|
||||
// Add form placeholders here
|
||||
'placeholders' => [
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
return array(
|
||||
|
||||
'disabled_assoc' => [
|
||||
'accessory' => 'This accessory cannot be deleted because it still has items, users, or locations associated with it',
|
||||
'asset' => 'This asset cannot be deleted because it still has items associated with it',
|
||||
'category' => 'This category cannot be deleted because it still has items associated with it',
|
||||
'company' => 'This company cannot be deleted because it still has items or users associated with it',
|
||||
'component' => 'This component cannot be deleted because it still has items associated with it',
|
||||
'custom_field' => 'This custom field cannot be deleted because it is still associated with at least one fieldset',
|
||||
'department' => 'This department cannot be deleted because it still has users associated with it',
|
||||
'location' => 'This location cannot be deleted because it still has items or users associated with it',
|
||||
'manufacturer' => 'This manufacturer cannot be deleted because it still has items associated with it',
|
||||
'supplier' => 'This supplier cannot be deleted because it still has items associated with it',
|
||||
'user' => 'This user cannot be deleted because it still has items associated with it',
|
||||
'user_self' => 'You cannot delete yourself',
|
||||
],
|
||||
|
||||
'checkin_all' => [
|
||||
'user' => 'Checkin all items for this user and optionally delete them. You will be able to confirm this on the next page.'
|
||||
],
|
||||
|
||||
);
|
||||
@@ -230,7 +230,10 @@ return [
|
||||
|
|
||||
*/
|
||||
|
||||
'attributes' => [],
|
||||
'attributes' => [
|
||||
'serials.*' => 'Serial Number',
|
||||
'asset_tags.*' => 'Bate-tag',
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
|
||||
@@ -5,7 +5,7 @@ return [
|
||||
'manage' => 'Manage',
|
||||
'field' => 'Field',
|
||||
'about_fieldsets_title' => 'About Fieldsets',
|
||||
'about_fieldsets_text' => 'Fieldsets allow you to create groups of custom fields that are frequently re-used used for specific asset model types.',
|
||||
'about_fieldsets_text' => 'Fieldsets allow you to create groups of custom fields that are frequently re-used for specific asset model types.',
|
||||
'custom_format' => 'Custom Regex format...',
|
||||
'encrypt_field' => 'Encrypt the value of this field in the database',
|
||||
'encrypt_field_help' => 'WARNING: Encrypting a field makes it unsearchable.',
|
||||
|
||||
@@ -16,7 +16,7 @@ return array(
|
||||
'seats' => 'Seats',
|
||||
'termination_date' => 'Termination Date',
|
||||
'to_email' => 'Licensed to Email',
|
||||
'to_name' => 'Licensed to Name',
|
||||
'to_name' => 'Licensed To',
|
||||
'update' => 'Update License',
|
||||
'checkout_help' => 'You must check a license out to a hardware asset or a person. You can select both, but the owner of the asset must match the person you\'re checking the asset out to.'
|
||||
);
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user