Compare commits

..

23 Commits

Author SHA1 Message Date
snipe
6f233bc218 Get more of the select2 ajax lists working 2025-11-03 15:38:43 +00:00
snipe
448f4b94af Remove classes 2025-11-03 14:03:31 +00:00
snipe
7c58fb93a9 Fixed test 2025-11-01 02:53:47 +00:00
snipe
80e4e4a40e Updated more form fields 2025-11-01 02:45:59 +00:00
snipe
7161d56ae2 Prod assets for some reason 2025-10-31 19:07:17 +00:00
snipe
1e85c7b575 Put the form-control-static back since it didn’t cut down the number of files :( 2025-10-31 19:05:36 +00:00
snipe
03130f0947 Try to undo the asset stuff for the PR 2025-10-31 19:03:50 +00:00
snipe
4812e25e5c Added name awareness in child elements 2025-10-31 19:03:19 +00:00
snipe
e6c49da11c Use new blade for textarea 2025-10-31 19:02:54 +00:00
snipe
6f3ee1914a Updated maintenances screen 2025-10-31 19:02:39 +00:00
snipe
9232ee781e Updated validation JS for select2 2025-10-31 19:02:25 +00:00
snipe
3d675d375c Re-add the form static so it’s less noisy for this PR 2025-10-31 19:02:02 +00:00
snipe
d2edc77197 Debugging - remove later 2025-10-31 19:01:42 +00:00
snipe
53716cbe90 Still not working (pre-selecting the ID of the asset) 2025-10-31 19:00:55 +00:00
snipe
8ce3fe0df0 Pass name to input 2025-10-31 16:21:41 +00:00
snipe
affee0a990 Handle unfilled data 2025-10-31 16:21:22 +00:00
snipe
6d5f515f48 Make select2 ajax a little more flexible 2025-10-31 12:23:08 +00:00
snipe
d96844498f This doesn’t actually work yet 2025-10-31 12:22:56 +00:00
snipe
08609d4f56 Moar refactorings 2025-10-30 22:26:21 +00:00
snipe
be344c440f Different approach - rely on nested slots 2025-10-30 21:30:10 +00:00
snipe
96cc2c9ee9 Move form into its own component 2025-10-30 16:35:15 +00:00
snipe
fb1a89442c Removed p-static class 2025-10-30 14:10:06 +00:00
snipe
359e0197bf Start building out the box+form stuff 2025-10-30 14:02:33 +00:00
842 changed files with 3162 additions and 36429 deletions

View File

@@ -142,7 +142,7 @@ class IconHelper
case 'more-files':
return 'fa-solid fa-laptop-file';
case 'maintenances':
return 'fas fa-wrench';
return 'fa-solid fa-screwdriver-wrench';
case 'seats':
return 'far fa-list-alt';
case 'globe-us':

View File

@@ -4,7 +4,6 @@ namespace App\Http\Controllers\Api;
use App\Helpers\Helper;
use App\Http\Controllers\Controller;
use App\Http\Requests\StoreDepartmentRequest;
use App\Http\Transformers\DepartmentsTransformer;
use App\Http\Transformers\SelectlistTransformer;
use App\Models\Department;
@@ -27,19 +26,18 @@ class DepartmentsController extends Controller
$allowed_columns = ['id', 'name', 'image', 'users_count', 'notes'];
$departments = Department::select(
[
'departments.id',
'departments.name',
'departments.phone',
'departments.fax',
'departments.location_id',
'departments.company_id',
'departments.manager_id',
'departments.created_at',
'departments.updated_at',
'departments.image',
'departments.notes'
])->with('users')->with('location')->with('manager')->with('company')->withCount('users as users_count');
'departments.id',
'departments.name',
'departments.phone',
'departments.fax',
'departments.location_id',
'departments.company_id',
'departments.manager_id',
'departments.created_at',
'departments.updated_at',
'departments.image',
'departments.notes',
)->with('users')->with('location')->with('manager')->with('company')->withCount('users as users_count');
if ($request->filled('search')) {
$departments = $departments->TextSearch($request->input('search'));
@@ -96,17 +94,18 @@ class DepartmentsController extends Controller
* @since [v4.0]
* @param \App\Http\Requests\ImageUploadRequest $request
*/
public function store(StoreDepartmentRequest $request): JsonResponse
public function store(ImageUploadRequest $request) : JsonResponse
{
$this->authorize('create', Department::class);
$department = new Department;
$department->fill($request->validated());
$department->fill($request->all());
$department = $request->handleImages($department);
$department->created_by = auth()->id();
$department->manager_id = ($request->filled('manager_id') ? $request->input('manager_id') : null);
if ($department->save()) {
return response()->json(Helper::formatStandardApiResponse('success', (new DepartmentsTransformer)->transformDepartment($department), trans('admin/departments/message.create.success')));
return response()->json(Helper::formatStandardApiResponse('success', $department, trans('admin/departments/message.create.success')));
}
return response()->json(Helper::formatStandardApiResponse('error', null, $department->getErrors()));
@@ -122,7 +121,7 @@ class DepartmentsController extends Controller
public function show($id) : array
{
$this->authorize('view', Department::class);
$department = Department::withCount('users as users_count')->findOrFail($id);
$department = Department::findOrFail($id);
return (new DepartmentsTransformer)->transformDepartment($department);
}
@@ -142,7 +141,7 @@ class DepartmentsController extends Controller
$department = $request->handleImages($department);
if ($department->save()) {
return response()->json(Helper::formatStandardApiResponse('success', (new DepartmentsTransformer)->transformDepartment($department), trans('admin/departments/message.update.success')));
return response()->json(Helper::formatStandardApiResponse('success', $department, trans('admin/departments/message.update.success')));
}
return response()->json(Helper::formatStandardApiResponse('error', null, $department->getErrors()));

View File

@@ -24,7 +24,7 @@ class GroupsController extends Controller
$this->authorize('view', Group::class);
$groups = Group::select(['id', 'name', 'permissions', 'notes', 'created_at', 'updated_at', 'created_by'])->with('adminuser')->withCount('users as users_count');
$groups = Group::select('id', 'name', 'permissions', 'notes', 'created_at', 'updated_at', 'created_by')->with('adminuser')->withCount('users as users_count');
if ($request->filled('search')) {
$groups = $groups->TextSearch($request->input('search'));
@@ -50,7 +50,6 @@ class GroupsController extends Controller
'id',
'name',
'created_at',
'updated_at',
'users_count',
];

View File

@@ -26,11 +26,11 @@ class LicenseSeatsController extends Controller
if ($license = License::find($licenseId)) {
$this->authorize('view', $license);
$seats = LicenseSeat::with('license', 'user', 'asset', 'user.department', 'user.company', 'asset.company')
$seats = LicenseSeat::with('license', 'user', 'asset', 'user.department')
->where('license_seats.license_id', $licenseId);
if ($request->input('status') == 'available') {
$seats->whereNull('license_seats.assigned_to')->whereNull('license_seats.asset_id');
$seats->whereNull('license_seats.assigned_to');
}
if ($request->input('status') == 'assigned') {
@@ -40,10 +40,8 @@ class LicenseSeatsController extends Controller
$order = $request->input('order') === 'asc' ? 'asc' : 'desc';
if ($request->input('sort') == 'assigned_user.department') {
if ($request->input('sort') == 'department') {
$seats->OrderDepartments($order);
} elseif ($request->input('sort') == 'assigned_user.company') {
$seats->OrderCompany($order);
} else {
$seats->orderBy('updated_at', $order);
}
@@ -85,7 +83,7 @@ class LicenseSeatsController extends Controller
return response()->json(Helper::formatStandardApiResponse('error', null, 'Seat not found'));
}
// 2. does the seat belong to the specified license?
if (! $licenseSeat = $licenseSeat->license()->first() || $licenseSeat->id != intval($licenseId)) {
if (! $license = $licenseSeat->license()->first() || $license->id != intval($licenseId)) {
return response()->json(Helper::formatStandardApiResponse('error', null, 'Seat does not belong to the specified license'));
}

View File

@@ -43,12 +43,9 @@ class GroupsController extends Controller
$permissions = config('permissions');
$groupPermissions = Helper::selectedPermissionsArray($permissions, $permissions);
$selectedPermissions = $request->old('permissions', $groupPermissions);
$users = \App\Models\User::orderBy('first_name', 'asc')->orderBy('last_name', 'asc')->get();
// Show the page
return view('groups/edit', compact('permissions', 'selectedPermissions', 'groupPermissions'))
->with('group', $group)
->with('associated_users', [])
->with('unselected_users', $users);
return view('groups/edit', compact('permissions', 'selectedPermissions', 'groupPermissions'))->with('group', $group);
}
/**
@@ -63,23 +60,12 @@ class GroupsController extends Controller
// create a new group instance
$group = new Group();
$group->name = $request->input('name');
if ($request->filled('permission')) {
$group->permissions = json_encode($request->array('permission'));
} else {
$group->permissions = null;
}
$group->permissions = json_encode($request->input('permission'));
$group->created_by = auth()->id();
$group->notes = $request->input('notes');
if ($group->save()) {
if ($request->filled('users_to_sync')) {
$associated_users = explode(',',$request->input('users_to_sync'));
$group->users()->sync($associated_users);
}
$group->users()->sync($request->input('associated_users'));
return redirect()->route('groups.index')->with('success', trans('admin/groups/message.success.create'));
}
@@ -103,12 +89,10 @@ class GroupsController extends Controller
$groupPermissions = [];
}
$selected_array = Helper::selectedPermissionsArray($permissions, $groupPermissions);
$associated_users = $group->users()->orderBy('first_name', 'asc')->orderBy('last_name', 'asc')->get();
$associated_users = $group->users()->get();
// Get the unselected users
$unselected_users = \App\Models\User::whereNotIn('id', $associated_users->pluck('id')->toArray())->orderBy('first_name', 'asc')->orderBy('last_name', 'asc')->get();
return view('groups.edit', compact('group', 'permissions', 'selected_array', 'groupPermissions'))->with('associated_users', $associated_users)->with('unselected_users', $unselected_users);
//dd($associated_users->toArray());
return view('groups.edit', compact('group', 'permissions', 'selected_array', 'groupPermissions'))->with('associated_users', $associated_users);
}
/**
@@ -122,24 +106,13 @@ class GroupsController extends Controller
public function update(Request $request, Group $group) : RedirectResponse
{
$group->name = $request->input('name');
if ($request->filled('permission')) {
$group->permissions = json_encode($request->array('permission'));
} else {
$group->permissions = null;
}
$group->permissions = json_encode($request->input('permission'));
$group->notes = $request->input('notes');
if (! config('app.lock_passwords')) {
if ($group->save()) {
if ($request->filled('users_to_sync')) {
$associated_users = explode(',',$request->input('users_to_sync'));
$group->users()->sync($associated_users);
}
$group->users()->sync($request->input('associated_users'));
return redirect()->route('groups.index')->with('success', trans('admin/groups/message.success.update'));
}

View File

@@ -68,6 +68,12 @@ class MaintenancesController extends Controller
{
$this->authorize('update', Asset::class);
\Log::error(print_r($request->input('selected_assets[]'), true));
if (!$request->filled('selected_assets')) {
return redirect()->back()->withInput()->with('error', 'No assets were selected.');
}
$assets = Asset::whereIn('id', $request->input('selected_assets'))->get();
// Loop through the selected assets

View File

@@ -772,7 +772,6 @@ class SettingsController extends Controller
$setting->label2_asset_logo = $request->input('label2_asset_logo');
$setting->label2_1d_type = $request->input('label2_1d_type');
$setting->label2_2d_type = $request->input('label2_2d_type');
$setting->label2_2d_prefix = $request->input('label2_2d_prefix');
$setting->label2_2d_target = $request->input('label2_2d_target');
$setting->label2_fields = $request->input('label2_fields');
$setting->label2_empty_row_count = $request->input('label2_empty_row_count');

View File

@@ -1,32 +0,0 @@
<?php
namespace App\Http\Requests;
use App\Models\Department;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Support\Facades\Gate;
class StoreDepartmentRequest extends ImageUploadRequest
{
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return Gate::allows('create', new Department);
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
*/
public function rules(): array
{
$modelRules = (new Department)->getRules();
return array_merge(
$modelRules,
);
}
}

View File

@@ -49,7 +49,6 @@ class StoreLabelSettings extends FormRequest
'labels_pagewidth' => 'numeric|nullable',
'labels_pageheight' => 'numeric|nullable',
'qr_text' => 'max:31|nullable',
'label2_2d_prefix' => 'nullable|max:191',
'label2_template' => [
'required',
Rule::in($names),

View File

@@ -28,31 +28,23 @@ class UpdateAssetRequest extends ImageUploadRequest
*/
public function rules()
{
$setting = Setting::getSettings();
$rules = array_merge(
parent::rules(),
(new Asset)->getRules(),
// This overwrites the rulesets that are set at the model level (via Watson) but are not necessarily required at the request level when doing a PATCH update.
// Confusingly, this skips the unique_undeleted validator at the model level (and therefore the UniqueUndeletedTrait), so we have to re-add those
// rules here without the requiredness, since those values will already exist if you're updating an existing asset.
// this is to overwrite rulesets that include required, and rewrite unique_undeleted
[
'model_id' => ['integer', 'exists:models,id,deleted_at,NULL', 'not_array'],
'status_id' => ['integer', 'exists:status_labels,id'],
'asset_tag' => [
'min:1', 'max:255', 'not_array',
Rule::unique('assets', 'asset_tag')->ignore($this->asset)->withoutTrashed(),
],
'serial' => [
'string', 'max:255', 'not_array',
$setting->unique_serial=='1' ? Rule::unique('assets', 'serial')->ignore($this->asset)->withoutTrashed() : 'nullable',
Rule::unique('assets', 'asset_tag')->ignore($this->asset)->withoutTrashed()
],
],
);
// if the purchase cost is passed in as a string **and** the digit_separator is ',' (as is common in the EU)
// then we tweak the purchase_cost rule to make it a string
if ($setting->digit_separator === '1.234,56' && is_string($this->input('purchase_cost'))) {
if (Setting::getSettings()->digit_separator === '1.234,56' && is_string($this->input('purchase_cost'))) {
$rules['purchase_cost'] = ['nullable', 'string'];
}

View File

@@ -43,7 +43,7 @@ class DepartmentsTransformer
'id' => (int) $department->location->id,
'name' => e($department->location->name),
] : null,
'users_count' => (int) ($department->users_count),
'users_count' => e($department->users_count),
'notes' => Helper::parseEscapedMarkedownInline($department->notes),
'created_at' => Helper::getFormattedDateObject($department->created_at, 'datetime'),
'updated_at' => Helper::getFormattedDateObject($department->updated_at, 'datetime'),

View File

@@ -36,12 +36,6 @@ class LicenseSeatsTransformer
'name' => e($seat->user->department->name),
] : null,
'company'=> ($seat->user->company) ?
[
'id' => (int) $seat->user->company->id,
'name' => e($seat->user->company->name),
] : null,
'created_at' => Helper::getFormattedDateObject($seat->created_at, 'datetime'),
] : null,
'assigned_asset' => ($seat->asset) ? [

View File

@@ -2,7 +2,6 @@
namespace App\Livewire;
use Livewire\Attributes\Computed;
use Livewire\Component;
class CategoryEditForm extends Component
@@ -13,25 +12,43 @@ class CategoryEditForm extends Component
public $eulaText;
public $originalSendCheckInEmailValue;
public bool $requireAcceptance;
public bool $sendCheckInEmail;
public bool $useDefaultEula;
public function mount()
{
$this->originalSendCheckInEmailValue = $this->sendCheckInEmail;
if ($this->eulaText || $this->useDefaultEula) {
$this->sendCheckInEmail = 1;
}
}
public function render()
{
return view('livewire.category-edit-form');
}
#[Computed]
public function emailWillBeSendDueToEula(): bool
public function updated($property, $value)
{
if (! in_array($property, ['eulaText', 'useDefaultEula'])) {
return;
}
$this->sendCheckInEmail = $this->eulaText || $this->useDefaultEula ? 1 : $this->originalSendCheckInEmailValue;
}
public function getShouldDisplayEmailMessageProperty(): bool
{
return $this->eulaText || $this->useDefaultEula;
}
#[Computed]
public function emailMessage(): string
public function getEmailMessageProperty(): string
{
if ($this->useDefaultEula) {
return trans('admin/categories/general.email_will_be_sent_due_to_global_eula');
@@ -40,9 +57,13 @@ class CategoryEditForm extends Component
return trans('admin/categories/general.email_will_be_sent_due_to_category_eula');
}
#[Computed]
public function eulaTextDisabled()
public function getEulaTextDisabledProperty()
{
return (bool)$this->useDefaultEula;
}
public function getSendCheckInEmailDisabledProperty()
{
return $this->eulaText || $this->useDefaultEula;
}
}

View File

@@ -159,7 +159,7 @@ class SlackSettingsForm extends Component
]);
try {
$test = $webhook->post($this->webhook_endpoint, ['body' => $payload, 'headers' => ['Content-Type' => 'application/json']]);
$test = $webhook->post($this->webhook_endpoint, ['body' => $payload, ['headers' => ['Content-Type' => 'application/json']]]);
if(($test->getStatusCode() == 302)||($test->getStatusCode() == 301)){
return session()->flash('error' , trans('admin/settings/message.webhook.error_redirect', ['endpoint' => $this->webhook_endpoint]));

View File

@@ -360,7 +360,7 @@ class Actionlog extends SnipeModel
{
$now = Carbon::now();
$last_audit_date = $this->created_at; // this is the action log's created at, not the asset itself
$next_audit = $last_audit_date->addMonth((int) $monthInterval); // this actually *modifies* the $last_audit_date
$next_audit = $last_audit_date->addMonth($monthInterval); // this actually *modifies* the $last_audit_date
$next_audit_days = (int) round($now->diffInDays($next_audit, true));
$override_default_next = $next_audit;

View File

@@ -282,7 +282,7 @@ class Asset extends Depreciable
protected function warrantyExpires(): Attribute
{
return Attribute:: make(
get: fn(mixed $value, array $attributes) => ($attributes['warranty_months'] && $attributes['purchase_date']) ? Carbon::parse($attributes['purchase_date'])->addMonths((int)$attributes['warranty_months']) : null,
get: fn(mixed $value, array $attributes) => ($attributes['warranty_months'] && $attributes['purchase_date']) ? Carbon::parse($attributes['purchase_date'])->addMonths($attributes['warranty_months']) : null,
);
}

View File

@@ -31,13 +31,10 @@ class Department extends SnipeModel
];
protected $rules = [
'name' => 'required|max:255|is_unique_across_company_and_location:departments,name',
'location_id' => 'numeric|nullable|exists:locations,id',
'company_id' => 'numeric|nullable|exists:companies,id',
'manager_id' => 'numeric|nullable|exists:users,id',
'phone' => 'string|max:255|nullable',
'fax' => 'string|max:255|nullable',
'notes' => 'string|max:255|nullable',
'name' => 'required|max:255|is_unique_department',
'location_id' => 'numeric|nullable',
'company_id' => 'numeric|nullable',
'manager_id' => 'numeric|nullable',
];
/**

View File

@@ -4,15 +4,15 @@ namespace App\Models\Labels\Tapes\Brother;
class TZe_24mm_E extends TZe_24mm
{
private const BARCODE_MARGIN = 1.75;
private const BARCODE_MARGIN = 1.50;
private const TAG_SIZE = 2.00;
private const TITLE_SIZE = 2.80;
private const TITLE_MARGIN = 0.50;
private const LABEL_SIZE = 2.00;
private const LABEL_MARGIN = - 0.75;
private const LABEL_MARGIN = - 0.35;
private const FIELD_SIZE = 2.80;
private const FIELD_MARGIN = 0.15;
private const BARCODE1D_SIZE = - 2.25;
private const BARCODE1D_SIZE = - 1.00;
public function getUnit() { return 'mm'; }
public function getWidth() { return 45.0; }

View File

@@ -153,24 +153,17 @@ class LicenseSeat extends SnipeModel implements ICompanyableChild
}
public function scopeOrderCompany($query, $order)
{
return $query->leftJoin('users as license_seat_users', 'license_seats.assigned_to', '=', 'license_seat_users.id')
->leftJoin('companies as license_user_company', 'license_user_company.id', '=', 'license_seat_users.company_id')
->whereNotNull('license_seats.assigned_to')
->orderBy('license_user_company.name', $order);
}
public function scopeByAssigned($query)
{
return $query->where(
function ($query) {
$query->whereNotNull('assigned_to')
->orWhereNotNull('asset_id');
->orWhere(
function ($query) {
$query->whereNotNull('asset_id');
}
);
}
);

View File

@@ -20,6 +20,13 @@ class SnipeModel extends Model
$this->attributes['purchase_date'] = $value;
}
protected function purchaseDateForDatepicker(): Attribute
{
return Attribute:: make(
get: fn(mixed $value, array $attributes) => array_key_exists('purchase_date', $attributes) ? Carbon::parse($attributes['purchase_date'])->format('Y-m-d') : null,
);
}
protected function purchaseDateFormatted(): Attribute
{

View File

@@ -237,14 +237,11 @@ class User extends SnipeModel implements AuthenticatableContract, AuthorizableCo
$permissions = json_decode($this->permissions, true);
}
if (($permissions) && (is_array($permissions))) {
foreach ($permissions as $permission) {
if ($permission != 0) {
return true;
}
foreach ($permissions as $permission) {
if ($permission != 0) {
return true;
}
}
return false;
}

View File

@@ -27,7 +27,7 @@ use Illuminate\Notifications\Notification;
$this->item_model = $params['item_model'];
$this->item_serial = $params['item_serial'];
$this->item_status = $params['item_status'];
$this->accepted_date = $params['accepted_date'];
$this->accepted_date = Helper::getFormattedDateObject($params['accepted_date'], 'datetime', false);
$this->assigned_to = $params['assigned_to'];
$this->company_name = $params['company_name'];
$this->settings = Setting::getSettings();

View File

@@ -25,7 +25,7 @@ class AcceptanceAssetDeclinedNotification extends Notification
$this->item_model = $params['item_model'];
$this->item_serial = $params['item_serial'];
$this->item_status = $params['item_status'];
$this->declined_date = $params['declined_date'];
$this->declined_date = Helper::getFormattedDateObject($params['declined_date'], 'date', false);
$this->note = $params['note'];
$this->assigned_to = $params['assigned_to'];
$this->company_name = $params['company_name'];

View File

@@ -2,12 +2,10 @@
namespace App\Notifications;
use AllowDynamicProperties;
use Illuminate\Bus\Queueable;
use Illuminate\Notifications\Messages\MailMessage;
use Illuminate\Notifications\Notification;
#[AllowDynamicProperties]
class InventoryAlert extends Notification
{
use Queueable;
@@ -34,8 +32,9 @@ class InventoryAlert extends Notification
*/
public function via()
{
return (!empty($this->items) && $this->threshold !== null) ? ['mail'] : [];
$notifyBy = ['mail'];
return $notifyBy;
}
/**

View File

@@ -49,8 +49,7 @@ class UserObserver
'end_date',
'autoassign_licenses',
'vip',
'password',
'permissions'
'password'
];
$changed = [];

View File

@@ -248,20 +248,10 @@ class LicensePresenter extends Presenter
'title' => trans('admin/users/table.email'),
'visible' => true,
'formatter' => 'emailFormatter',
],
[
'field' => 'assigned_user.company',
], [
'field' => 'department',
'searchable' => false,
'sortable' => false,
'switchable' => true,
'title' => trans('general.company'),
'visible' => true,
'formatter' => 'companiesLinkObjFormatter',
],
[
'field' => 'assigned_user.department',
'searchable' => false,
'sortable' => false,
'sortable' => true,
'switchable' => true,
'title' => trans('general.department'),
'visible' => false,

View File

@@ -24,6 +24,7 @@ use Illuminate\Support\Facades\Schema;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\URL;
use Illuminate\Support\Facades\Blade;
/**
* This service provider handles setting the observers on models
@@ -42,6 +43,9 @@ class AppServiceProvider extends ServiceProvider
*/
public function boot(UrlGenerator $url)
{
/**
* This is a workaround for proxies/reverse proxies that don't always pass the proper headers.
*
@@ -76,6 +80,9 @@ class AppServiceProvider extends ServiceProvider
Consumable::observe(ConsumableObserver::class);
License::observe(LicenseObserver::class);
Setting::observe(SettingObserver::class);
// https://laravel.com/docs/11.x/blade#html-entity-encoding
Blade::withoutDoubleEncoding();
}
/**

View File

@@ -283,36 +283,41 @@ class ValidationServiceProvider extends ServiceProvider
}
});
/**
* Check that the 'name' field is unique in the table while within both company_id and location_id
* This is only used by Departments right now, but could be used elsewhere in the future.
*/
Validator::extend('is_unique_across_company_and_location', function ($attribute, $value, $parameters, $validator) {
Validator::extend('is_unique_department', function ($attribute, $value, $parameters, $validator) {
$data = $validator->getData();
$table = array_get($parameters, 0);
$count = DB::table($table)->select($attribute)
->where($attribute, $value)
->whereNull('deleted_at');
if (
array_key_exists('location_id', $data) && $data['location_id'] !== null &&
array_key_exists('company_id', $data) && $data['company_id'] !== null
) {
//for updating existing departments
if(array_key_exists('id', $data) && $data['id'] !== null){
$count = Department::where('name', $data['name'])
->where('location_id', $data['location_id'])
->where('company_id', $data['company_id'])
->whereNotNull('company_id')
->whereNotNull('location_id')
->where('id', '!=', $data['id'])
->count('name');
if (array_key_exists('id', $data) && $data['id'] !== null) {
$count = $count->where('id', '!=', $data['id']);
return $count < 1;
}else // for entering in new departments
{
$count = Department::where('name', $data['name'])
->where('location_id', $data['location_id'])
->where('company_id', $data['company_id'])
->whereNotNull('company_id')
->whereNotNull('location_id')
->count('name');
return $count < 1;
}
if (array_key_exists('location_id', $data) && $data['location_id'] !== null) {
$count = $count->where('location_id', $data['location_id']);
}
if (array_key_exists('company_id', $data) && $data['company_id'] !== null) {
$count = $count->where('company_id', $data['company_id']);
}
$count = $count->count('name');
return $count < 1;
}
else {
return true;
}
});
Validator::extend('not_array', function ($attribute, $value, $parameters, $validator) {
return !is_array($value);
});

View File

@@ -140,32 +140,18 @@ class Label implements View
if ($template->getSupport2DBarcode()) {
$barcode2DType = $settings->label2_2d_type;
if (($barcode2DType != 'none') && (!is_null($barcode2DType))) {
$label2_2d_prefix = $settings->label2_2d_prefix ? e($settings->label2_2d_prefix) : '';
switch ($settings->label2_2d_target) {
case 'ht_tag':
$barcode2DTarget = route('ht/assetTag', $asset->asset_tag);
break;
case 'plain_asset_id':
$barcode2DTarget = $label2_2d_prefix.(string) $asset->id;
$barcode2DTarget = (string) $asset->id;
break;
case 'plain_asset_tag':
$barcode2DTarget = $label2_2d_prefix.$asset->asset_tag;
$barcode2DTarget = $asset->asset_tag;
break;
case 'plain_serial_number':
$barcode2DTarget = $label2_2d_prefix.$asset->serial;
break;
case 'plain_model_number':
$barcode2DTarget = $label2_2d_prefix.$asset->model->model_number ?? '';
break;
case 'plain_model_name':
$barcode2DTarget = $label2_2d_prefix.$asset->model->display_name ?? '';
break;
case 'plain_manufacturer_name':
$barcode2DTarget = $label2_2d_prefix.$asset->model->display_name;
break;
case 'plain_location_name':
$barcode2DTarget = $label2_2d_prefix.$asset->location->name;
$barcode2DTarget = $asset->serial;
break;
case 'location':
$barcode2DTarget = $asset->location_id

View File

@@ -1,10 +1,10 @@
<?php
return array (
'app_version' => 'v8.3.5',
'full_app_version' => 'v8.3.5 - build 20406-gf92f76b48',
'build_version' => '20406',
'app_version' => 'v8.3.4',
'full_app_version' => 'v8.3.4 - build 20218-g3ab2e2011',
'build_version' => '20218',
'prerelease_version' => '',
'hash_version' => 'gf92f76b48',
'full_hash' => 'v8.3.5-183-gf92f76b48',
'hash_version' => 'g3ab2e2011',
'full_hash' => 'v8.3.4-149-g3ab2e2011',
'branch' => 'master',
);

View File

@@ -1,32 +0,0 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('settings', function (Blueprint $table) {
if (!Schema::hasColumn('settings', 'label2_2d_prefix')) {
$table->char('label2_2d_prefix', 191)->after('label2_2d_type')->nullable()->default(null);
}
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('settings', function (Blueprint $table) {
if (Schema::hasColumn('settings', 'label2_2d_prefix')) {
$table->dropColumn('label2_2d_prefix');
}
});
}
};

View File

@@ -68,7 +68,7 @@ class UserSeeder extends Seeder
]))
->create();
User::factory()->count(2000)->viewAssets()
User::factory()->count(50)->viewAssets()
->state(new Sequence(fn($sequence) => [
'company_id' => $companyIds->random(),
'department_id' => $departmentIds->random(),

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,25 +1,25 @@
{
"/js/dist/all.js": "/js/dist/all.js?id=a84550e1cfe57870332e6a2e1b605707",
"/css/dist/skins/skin-black-dark.css": "/css/dist/skins/skin-black-dark.css?id=8d861085664e18a1407cce2d29762fa4",
"/css/dist/skins/_all-skins.css": "/css/dist/skins/_all-skins.css?id=2fea629e70002a51fb241703dd09371c",
"/css/build/overrides.css": "/css/build/overrides.css?id=dee88c73824aa75c0a01ecdc744b3095",
"/css/build/app.css": "/css/build/app.css?id=de48355100918a6ea593b6152964f15e",
"/js/dist/all.js": "/js/dist/all.js?id=6ffdb46d7dcfceb395f453e15cfbc4be",
"/css/dist/skins/skin-black-dark.css": "/css/dist/skins/skin-black-dark.css?id=bf1a348eae3e60c62b8879953f7df14c",
"/css/dist/skins/_all-skins.css": "/css/dist/skins/_all-skins.css?id=f712d11cfca345b58c1d8a35df03d38d",
"/css/build/overrides.css": "/css/build/overrides.css?id=3a3b20a7cde391756b707a67a3e297e4",
"/css/build/app.css": "/css/build/app.css?id=86244e556cc26877415e9ab63e8b7e33",
"/css/build/AdminLTE.css": "/css/build/AdminLTE.css?id=bdf169bc2141f453390614c138cdce95",
"/css/dist/skins/skin-yellow.css": "/css/dist/skins/skin-yellow.css?id=e1e6e1c64cf14fc350585aaeb0e42f6b",
"/css/dist/skins/skin-yellow-dark.css": "/css/dist/skins/skin-yellow-dark.css?id=69b5b9e2ae359f2871b8d6676d0a63f1",
"/css/dist/skins/skin-yellow-dark.css": "/css/dist/skins/skin-yellow-dark.css?id=08ae1b3e66008966ce5d600ea3ad04a2",
"/css/dist/skins/skin-red.css": "/css/dist/skins/skin-red.css?id=fe8365eda6947fae76b6891d8de23e57",
"/css/dist/skins/skin-red-dark.css": "/css/dist/skins/skin-red-dark.css?id=ed73641edda768c85446aef73246e636",
"/css/dist/skins/skin-red-dark.css": "/css/dist/skins/skin-red-dark.css?id=4177acfe78a6a808fa7054cf99a93387",
"/css/dist/skins/skin-purple.css": "/css/dist/skins/skin-purple.css?id=0853b7f7da3d6bfda0738df5574d9892",
"/css/dist/skins/skin-purple-dark.css": "/css/dist/skins/skin-purple-dark.css?id=02ce0e67061be4447046ecb16301050f",
"/css/dist/skins/skin-purple-dark.css": "/css/dist/skins/skin-purple-dark.css?id=4bf29ed9f4b511b23eb9f5647371622c",
"/css/dist/skins/skin-orange.css": "/css/dist/skins/skin-orange.css?id=23f6b19fc0add02e020cbb9e4f6f9272",
"/css/dist/skins/skin-orange-dark.css": "/css/dist/skins/skin-orange-dark.css?id=90f07fa679d35cf937ac5009000f60c7",
"/css/dist/skins/skin-orange-dark.css": "/css/dist/skins/skin-orange-dark.css?id=71905ff04c78d92dc6f0b8354b458ffd",
"/css/dist/skins/skin-green.css": "/css/dist/skins/skin-green.css?id=d68df5bc23ddddc710f7acf2201b2caf",
"/css/dist/skins/skin-green-dark.css": "/css/dist/skins/skin-green-dark.css?id=7e4bd59d35004cb255983e8b282f2870",
"/css/dist/skins/skin-green-dark.css": "/css/dist/skins/skin-green-dark.css?id=436c77b84b2797f9683a7cdc4f8f6b8d",
"/css/dist/skins/skin-contrast.css": "/css/dist/skins/skin-contrast.css?id=fbd34e1e2d119358e781195c3fe26b69",
"/css/dist/skins/skin-blue.css": "/css/dist/skins/skin-blue.css?id=68a92d85c8e351dfb38a835307f126ec",
"/css/dist/skins/skin-blue-dark.css": "/css/dist/skins/skin-blue-dark.css?id=ed9df5188fc923bf67fa194b5dcf5c0c",
"/css/dist/skins/skin-blue-dark.css": "/css/dist/skins/skin-blue-dark.css?id=cbb20ad6182b658f34117bf96a621b63",
"/css/dist/skins/skin-black.css": "/css/dist/skins/skin-black.css?id=84e2ee950ae04444988b37038e5a3951",
"/css/dist/all.css": "/css/dist/all.css?id=09fd1dac7d534c75004d7cd15382f756",
"/css/dist/all.css": "/css/dist/all.css?id=d025bd7724d6b3510b3818f6f120f6ef",
"/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",
@@ -93,21 +93,21 @@
"/js/dist/bootstrap-table-locale-all.min.js": "/js/dist/bootstrap-table-locale-all.min.js?id=d300041b9e5038b45b68e036add83be4",
"/js/dist/bootstrap-table-en-US.min.js": "/js/dist/bootstrap-table-en-US.min.js?id=6d0de12d91548ba2cd80b868838ce5fa",
"/js/dist/Chart.min.js": "/js/dist/Chart.min.js?id=9b1ae20c4c7048d6e4a1b2e1aee7fb31",
"/css/dist/skins/_all-skins.min.css": "/css/dist/skins/_all-skins.min.css?id=2fea629e70002a51fb241703dd09371c",
"/css/dist/skins/skin-black-dark.min.css": "/css/dist/skins/skin-black-dark.min.css?id=8d861085664e18a1407cce2d29762fa4",
"/css/dist/skins/_all-skins.min.css": "/css/dist/skins/_all-skins.min.css?id=f712d11cfca345b58c1d8a35df03d38d",
"/css/dist/skins/skin-black-dark.min.css": "/css/dist/skins/skin-black-dark.min.css?id=bf1a348eae3e60c62b8879953f7df14c",
"/css/dist/skins/skin-black.min.css": "/css/dist/skins/skin-black.min.css?id=84e2ee950ae04444988b37038e5a3951",
"/css/dist/skins/skin-blue-dark.min.css": "/css/dist/skins/skin-blue-dark.min.css?id=ed9df5188fc923bf67fa194b5dcf5c0c",
"/css/dist/skins/skin-blue-dark.min.css": "/css/dist/skins/skin-blue-dark.min.css?id=cbb20ad6182b658f34117bf96a621b63",
"/css/dist/skins/skin-blue.min.css": "/css/dist/skins/skin-blue.min.css?id=68a92d85c8e351dfb38a835307f126ec",
"/css/dist/skins/skin-contrast.min.css": "/css/dist/skins/skin-contrast.min.css?id=fbd34e1e2d119358e781195c3fe26b69",
"/css/dist/skins/skin-green-dark.min.css": "/css/dist/skins/skin-green-dark.min.css?id=7e4bd59d35004cb255983e8b282f2870",
"/css/dist/skins/skin-green-dark.min.css": "/css/dist/skins/skin-green-dark.min.css?id=436c77b84b2797f9683a7cdc4f8f6b8d",
"/css/dist/skins/skin-green.min.css": "/css/dist/skins/skin-green.min.css?id=d68df5bc23ddddc710f7acf2201b2caf",
"/css/dist/skins/skin-orange-dark.min.css": "/css/dist/skins/skin-orange-dark.min.css?id=90f07fa679d35cf937ac5009000f60c7",
"/css/dist/skins/skin-orange-dark.min.css": "/css/dist/skins/skin-orange-dark.min.css?id=71905ff04c78d92dc6f0b8354b458ffd",
"/css/dist/skins/skin-orange.min.css": "/css/dist/skins/skin-orange.min.css?id=23f6b19fc0add02e020cbb9e4f6f9272",
"/css/dist/skins/skin-purple-dark.min.css": "/css/dist/skins/skin-purple-dark.min.css?id=02ce0e67061be4447046ecb16301050f",
"/css/dist/skins/skin-purple-dark.min.css": "/css/dist/skins/skin-purple-dark.min.css?id=4bf29ed9f4b511b23eb9f5647371622c",
"/css/dist/skins/skin-purple.min.css": "/css/dist/skins/skin-purple.min.css?id=0853b7f7da3d6bfda0738df5574d9892",
"/css/dist/skins/skin-red-dark.min.css": "/css/dist/skins/skin-red-dark.min.css?id=ed73641edda768c85446aef73246e636",
"/css/dist/skins/skin-red-dark.min.css": "/css/dist/skins/skin-red-dark.min.css?id=4177acfe78a6a808fa7054cf99a93387",
"/css/dist/skins/skin-red.min.css": "/css/dist/skins/skin-red.min.css?id=fe8365eda6947fae76b6891d8de23e57",
"/css/dist/skins/skin-yellow-dark.min.css": "/css/dist/skins/skin-yellow-dark.min.css?id=69b5b9e2ae359f2871b8d6676d0a63f1",
"/css/dist/skins/skin-yellow-dark.min.css": "/css/dist/skins/skin-yellow-dark.min.css?id=08ae1b3e66008966ce5d600ea3ad04a2",
"/css/dist/skins/skin-yellow.min.css": "/css/dist/skins/skin-yellow.min.css?id=e1e6e1c64cf14fc350585aaeb0e42f6b",
"/css/dist/bootstrap-table.css": "/css/dist/bootstrap-table.css?id=9def0b5d3b891ac3669b3b7aa7e805ce",
"/js/dist/bootstrap-table.js": "/js/dist/bootstrap-table.js?id=ed9dc2e13cf495675067c4c7091b325a"

View File

@@ -625,29 +625,35 @@ $('.header-row input:radio').change(function() {
// Generic toggleable callouts with remember state
$(".remember-toggle").on("click",function(){
var toggleable_callout_id = $(this).attr('id');
var toggle_content_class = 'toggle-content-'+$(this).attr('id');
var toggle_arrow = '#toggle-arrow-' + toggleable_callout_id;
var toggle_cookie_name='toggle_state_'+toggleable_callout_id;
console.log('Callout ID: ' + toggleable_callout_id);
console.log('Content ID: '+toggle_content_class);
console.log('Arrow ID: '+toggle_arrow);
console.log('Cookie Name: '+toggle_cookie_name);
$('.'+toggle_content_class).fadeToggle(100);
$(toggle_arrow).toggleClass('fa-caret-right fa-caret-down');
var toggle_open = $(toggle_arrow).hasClass('fa-caret-down');
console.log('Cookie will set open state to: '+toggle_open);
document.cookie=toggle_cookie_name+"="+toggle_open+';path=/';
});
var all_cookies = document.cookie.split(';')
for (var i in all_cookies) {
var trimmed_cookie = all_cookies[i].trim(' ')
elems = trimmed_cookie.split('=', 2);
elems = all_cookies[i].split('=', 2);
// We have to do more here since we don't know the name of the selector
if (trimmed_cookie.startsWith('toggle_state_')) {
var toggle_selector_name = elems[0].replace('toggle_state_','');
if (elems[1] != "true") {
console.log(trimmed_cookie + ' matches toggle_state_');
var toggle_selector_name = elems[0].replace(' toggle_state_','');
if (elems[1] == 'true') {
console.log('Selector name for cookie click trigger: '+toggle_selector_name);
$('#'+toggle_selector_name+'.remember-toggle').trigger('click')
}
}
@@ -708,80 +714,3 @@ $(".admin").change(function() {
}
});
// Handle the select/deselect of the select boxes with the button from right to left
$(function () {
function moveItems(origin, dest) {
$(origin).find(':selected').appendTo(dest);
$(dest).attr('selected', true);
$(dest).sort_select_box();
}
function moveAllItems(origin, dest) {
$(origin).children("option:visible").appendTo(dest);
$(dest).attr('selected', true);
$(dest).sort_select_box();
}
$('.left').on('click', function () {
var container = $(this).closest('.addremove-multiselect');
moveItems($(container).find('select.multiselect.selected'), $(container).find('select.multiselect.available'));
});
$('.right').on('click', function () {
var container = $(this).closest('.addremove-multiselect');
moveItems($(container).find('select.multiselect.available'), $(container).find('select.multiselect.selected'));
});
$('.leftall').on('click', function () {
var container = $(this).closest('.addremove-multiselect');
moveAllItems($(container).find('select.multiselect.selected'), $(container).find('select.multiselect.available'));
});
$('.rightall').on('click', function () {
var container = $(this).closest('.addremove-multiselect');
moveAllItems($(container).find('select.multiselect.available'), $(container).find('select.multiselect.selected'));
});
$('select.multiselect.selected').on('dblclick keyup',function(e){
if(e.which == 13 || e.type == 'dblclick') {
var container = $(this).closest('.addremove-multiselect');
moveItems($(container).find('select.multiselect.selected'), $(container).find('select.multiselect.available'));
}
});
$('select.multiselect.available').on('dblclick keyup',function(e){
if(e.which == 13 || e.type == 'dblclick') {
var container = $(this).closest('.addremove-multiselect');
moveItems($(container).find('select.multiselect.available'), $(container).find('select.multiselect.selected'));
$('#hidden_ids_box').val($('#selected-select').val());
}
});
});
$.fn.sort_select_box = function(){
// Get options from select box
var selected_options = $(this).children('option');
// sort alphabetically
selected_options.sort(function(a,b) {
if (a.text > b.text) return 1;
else if (a.text < b.text) return -1;
else return 0
})
//replace with sorted my_options;
$(this).empty().append(selected_options);
var selected_in_box = $('#selected-select option').toArray().map(item => item.value).join();
$('#hidden_ids_box').empty().val(selected_in_box);
$('#count_selected_box').html($('#selected-select option').length);
$('#count_unselected_box').html($('#available-select option').length);
// clearing any selections
$("#"+this.attr('id')+" option").attr('selected', true);
}

View File

@@ -1175,6 +1175,7 @@ input[type="radio"]:checked::before {
display: table-row !important;
}
td.text-right.text-padding-number-cell {
padding-right: 30px !important;
white-space: nowrap;
@@ -1360,8 +1361,4 @@ Radio toggle styles for permission settings and check/uncheck all
.remember-toggle {
cursor: pointer;
}
.js-copy-link {
color: grey;
}

View File

@@ -91,9 +91,7 @@
color: #fff;
}
}
.btn-info {
border-color: #fff;
}
/**
The dropdown is white, so use a darker color
*/

View File

@@ -86,9 +86,6 @@
color: #fff;
}
}
.btn-info {
border-color: #fff;
}
/**
The dropdown is white, so use a darker color

View File

@@ -86,9 +86,7 @@
color: #FFF;
}
}
.btn-info {
border-color: #fff;
}
/**
The dropdown is white, so use a darker color
*/

View File

@@ -86,9 +86,7 @@
color: #fff;
}
}
.btn-info {
border-color: #fff;
}
/**
The dropdown is white, so use a darker color
*/

View File

@@ -86,9 +86,7 @@
color: #fff;
}
}
.btn-info {
border-color: #fff;
}
/**
The dropdown is white, so use a darker color

View File

@@ -84,9 +84,7 @@
color: #fff;
}
}
.btn-info {
border-color: #fff;
}
/**
The dropdown is white, so use a darker color

View File

@@ -75,9 +75,6 @@
color: #545454;
}
}
.btn-info {
border-color: #fff;
}
a.actions {
color:#fff !important;
}

View File

@@ -3,15 +3,14 @@
return array(
'asset_categories' => 'crwdns636:0crwdne636:0',
'category_name' => 'crwdns637:0crwdne637:0',
'email_to_user_upon_checkin' => 'crwdns14264:0crwdne14264:0',
'email_to_user_upon_checkin_and_checkout' => 'crwdns14266:0crwdne14266:0',
'checkin_email' => 'crwdns2034:0crwdne2034:0',
'email_to_initiator' => 'crwdns13442:0crwdne13442:0',
'checkin_email_notification' => 'crwdns2035:0crwdne2035:0',
'clone' => 'crwdns1239:0crwdne1239:0',
'create' => 'crwdns638:0crwdne638:0',
'edit' => 'crwdns1240:0crwdne1240:0',
'email_will_be_sent_due_to_global_eula' => 'crwdns14268:0crwdne14268:0',
'email_will_be_sent_due_to_category_eula' => 'crwdns14270:0crwdne14270:0',
'email_will_be_sent_due_to_global_eula' => 'crwdns11697:0crwdne11697:0',
'email_will_be_sent_due_to_category_eula' => 'crwdns11699:0crwdne11699:0',
'eula_text' => 'crwdns1241:0crwdne1241:0',
'eula_text_help' => 'crwdns1242:0crwdne1242:0',
'name' => 'crwdns1835:0crwdne1835:0',

View File

@@ -5,7 +5,7 @@ return [
'manage' => 'crwdns6501:0crwdne6501:0',
'field' => 'crwdns1487:0crwdne1487:0',
'about_fieldsets_title' => 'crwdns1488:0crwdne1488:0',
'about_fieldsets_text' => 'crwdns13896:0crwdne13896:0',
'about_fieldsets_text' => 'crwdns13838:0crwdne13838:0',
'custom_format' => 'crwdns6505:0crwdne6505:0',
'encrypt_field' => 'crwdns1792:0crwdne1792:0',
'encrypt_field_help' => 'crwdns1683:0crwdne1683:0',
@@ -67,5 +67,4 @@ return [
'checkbox' => 'crwdns13266:0crwdne13266:0',
'radio' => 'crwdns13268:0crwdne13268:0',
],
'general_help_text' => 'crwdns13902:0crwdne13902:0',
];

View File

@@ -18,7 +18,7 @@ return [
'alert_email' => 'crwdns1198:0crwdne1198:0',
'alert_email_help' => 'crwdns13160:0crwdne13160:0',
'alerts_enabled' => 'crwdns1623:0crwdne1623:0',
'alert_interval' => 'crwdns13904:0crwdne13904:0',
'alert_interval' => 'crwdns1624:0crwdne1624:0',
'alert_inv_threshold' => 'crwdns1625:0crwdne1625:0',
'allow_user_skin' => 'crwdns6048:0crwdne6048:0',
'allow_user_skin_help_text' => 'crwdns6050:0crwdne6050:0',
@@ -94,12 +94,10 @@ return [
'ldap_settings' => 'crwdns1450:0crwdne1450:0',
'ldap_client_tls_cert_help' => 'crwdns6091:0crwdne6091:0',
'ldap_location' => 'crwdns13698:0crwdne13698:0',
'ldap_location_help' => 'crwdns13700:0crwdne13700:0',
'ldap_location_help' => 'crwdns13700:0crwdne13700:0',
'ldap_login_test_help' => 'crwdns1968:0crwdne1968:0',
'ldap_login_sync_help' => 'crwdns13742:0crwdne13742:0',
'ldap_manager' => 'crwdns13702:0crwdne13702:0',
'ldap_mapping_help' => 'crwdns13898:0crwdne13898:0',
'save_ldap_first' => 'crwdns13900:0crwdne13900:0',
'ldap_server' => 'crwdns1451:0crwdne1451:0',
'ldap_server_help' => 'crwdns12578:0crwdne12578:0',
'ldap_server_cert' => 'crwdns1475:0crwdne1475:0',
@@ -347,7 +345,6 @@ return [
'asset_tags_help' => 'crwdns6457:0crwdne6457:0',
'labels' => 'crwdns6459:0crwdne6459:0',
'labels_title' => 'crwdns6461:0crwdne6461:0',
'labels_title_help' => 'crwdns14274:0crwdne14274:0',
'labels_help' => 'crwdns12840:0crwdne12840:0',
'purge_help' => 'crwdns6469:0crwdne6469:0',
'ldap_extension_warning' => 'crwdns6471:0crwdne6471:0',
@@ -382,17 +379,14 @@ return [
'label2_1d_type_help' => 'crwdns11743:0crwdne11743:0',
'label2_2d_type' => 'crwdns11745:0crwdne11745:0',
'label2_2d_type_help' => 'crwdns11747:0crwdne11747:0',
'label2_2d_prefix' => 'crwdns14276:0crwdne14276:0',
'label2_2d_prefix_help' => 'crwdns14278:0crwdne14278:0',
'label2_2d_target' => 'crwdns14280:0crwdne14280:0',
'label2_2d_target_help' => 'crwdns14282:0crwdne14282:0',
'select_template' => 'crwdns14284:0crwdne14284:0',
'label2_2d_target' => 'crwdns11749:0crwdne11749:0',
'label2_2d_target_help' => 'crwdns12832:0crwdne12832:0',
'label2_fields' => 'crwdns11753:0crwdne11753:0',
'label2_fields_help' => 'crwdns14286:0crwdne14286:0',
'label2_fields_help' => 'crwdns11755:0crwdne11755:0',
'purge_barcodes' => 'crwdns12985:0crwdne12985:0',
'help_asterisk_bold' => 'crwdns11757:0crwdne11757:0',
'help_blank_to_use' => 'crwdns11759:0crwdne11759:0',
'help_default_will_use' => 'crwdns14288:0crwdne14288:0',
'help_default_will_use' => 'crwdns12834:0crwdne12834:0',
'asset_id' => 'crwdns12836:0crwdne12836:0',
'data' => 'crwdns12838:0crwdne12838:0',
'default' => 'crwdns11763:0crwdne11763:0',
@@ -420,9 +414,6 @@ return [
'manager_view' => 'crwdns13418:0crwdne13418:0',
'manager_view_enabled_text' => 'crwdns13420:0crwdne13420:0',
'manager_view_enabled_help' => 'crwdns13422:0crwdne13422:0',
'redirect_url' => 'crwdns14258:0crwdne14258:0',
'client_secret' => 'crwdns14260:0crwdne14260:0',
'client_id' => 'crwdns14262:0crwdne14262:0',
'username_formats' => [
'username_format' => 'crwdns13090:0crwdne13090:0',
@@ -496,7 +487,6 @@ return [
'server' => 'crwdns13740:0crwdne13740:0',
'scoping' => 'crwdns13192:0crwdne13192:0',
'security' => 'crwdns13218:0crwdne13218:0',
'passwords' => 'crwdns13906:0crwdne13906:0',
],

View File

@@ -15,8 +15,7 @@ return [
'info' => 'crwdns1848:0crwdne1848:0',
'restore_user' => 'crwdns1912:0crwdne1912:0',
'last_login' => 'crwdns1130:0crwdne1130:0',
'ldap_config_text' => 'crwdns14248:0crwdne14248:0',
'ldap_sync_intro' => 'crwdns14250:0crwdne14250:0',
'ldap_config_text' => 'crwdns1580:0crwdne1580:0',
'print_assigned' => 'crwdns1993:0crwdne1993:0',
'email_assigned' => 'crwdns10484:0crwdne10484:0',
'user_notified' => 'crwdns10486:0crwdne10486:0',
@@ -54,6 +53,4 @@ return [
'all_assigned_list_generation' => 'crwdns11415:0crwdne11415:0',
'email_user_creds_on_create' => 'crwdns11517:0crwdne11517:0',
'department_manager' => 'crwdns13408:0crwdne13408:0',
'generate_password' => 'crwdns13908:0crwdne13908:0',
'individual_override' => 'crwdns13910:0crwdne13910:0',
];

View File

@@ -2,8 +2,8 @@
return array(
'accepted' => 'crwdns14254:0crwdne14254:0',
'declined' => 'crwdns14256:0crwdne14256:0',
'accepted' => 'crwdns1344:0crwdne1344:0',
'declined' => 'crwdns1345:0crwdne1345:0',
'bulk_manager_warn' => 'crwdns1849:0crwdne1849:0',
'user_exists' => 'crwdns787:0crwdne787:0',
'user_not_found' => 'crwdns12744:0crwdne12744:0',

View File

@@ -350,7 +350,6 @@ return [
'login_disabled' => 'crwdns13618:0crwdne13618:0',
'audit_due' => 'crwdns5986:0crwdne5986:0',
'audit_due_days' => 'crwdns12910:0crwdne12910:0',
'audit_due_days_view_all' => 'crwdns14238:0crwdne14238:0',
'checkin_due' => 'crwdns12176:0crwdne12176:0',
'checkin_overdue' => 'crwdns12178:0crwdne12178:0',
'checkin_due_days' => 'crwdns12912:0crwdne12912:0',
@@ -384,14 +383,6 @@ return [
'bulk_edit_about_to' => 'crwdns6193:0crwdne6193:0',
'checked_out' => 'crwdns6195:0crwdne6195:0',
'checked_out_to' => 'crwdns6197:0crwdne6197:0',
'available_users' => 'crwdns14290:0crwdne14290:0',
'add_users_to_group' => 'crwdns14292:0crwdne14292:0',
'users_to_add_to_group' => 'crwdns14294:0crwdne14294:0',
'add_all_users_to_group' => 'crwdns14296:0crwdne14296:0',
'add_selected_users_to_group' => 'crwdns14298:0crwdne14298:0',
'remove_selected_users_from_group' => 'crwdns14300:0crwdne14300:0',
'remove_all_users_from_group' => 'crwdns14302:0crwdne14302:0',
'add_users_to_group_help' => 'crwdns14304:0crwdne14304:0',
'fields' => 'crwdns6199:0crwdne6199:0',
'last_checkout' => 'crwdns6201:0crwdne6201:0',
'due_to_checkin' => 'crwdns6203:0crwdne6203:0',
@@ -399,7 +390,6 @@ return [
'reminder_checked_out_items' => 'crwdns6207:0crwdne6207:0',
'changed' => 'crwdns6209:0crwdne6209:0',
'to' => 'crwdns6211:0crwdne6211:0',
'to_user' => 'crwdns14244:0crwdne14244:0',
'report_fields_info' => 'crwdns6213:0crwdne6213:0',
'range' => 'crwdns6215:0crwdne6215:0',
'bom_remark' => 'crwdns6217:0crwdne6217:0',
@@ -624,8 +614,6 @@ return [
'user_managed_passwords_allow' => 'crwdns12874:0crwdne12874:0',
'from' => 'crwdns13170:0crwdne13170:0',
'by' => 'crwdns13172:0crwdne13172:0',
'by_user' => 'crwdns14246:0crwdne14246:0',
'ldap_sync_location' => 'crwdns14252:0crwdne14252:0',
'version' => 'crwdns13278:0crwdne13278:0',
'build' => 'crwdns13280:0crwdne13280:0',
'use_cloned_image' => 'crwdns13522:0crwdne13522:0',

View File

@@ -100,8 +100,7 @@ return [
'the_following_item' => 'crwdns1761:0crwdne1761:0',
'to_reset' => 'crwdns1763:0crwdne1763:0',
'type' => 'crwdns1764:0crwdne1764:0',
'upcoming-audits' => 'crwdns14240:0crwdne14240:0',
'upcoming-audits_click' => 'crwdns14242:0crwdne14242:0',
'upcoming-audits' => 'crwdns6002:0crwdne6002:0',
'user' => 'crwdns2032:0crwdne2032:0',
'username' => 'crwdns2033:0crwdne2033:0',
'unaccepted_asset_reminder' => 'crwdns13011:0crwdne13011:0',

View File

@@ -1,424 +0,0 @@
<?php
return array(
/*
|--------------------------------------------------------------------------
| Permissions
|--------------------------------------------------------------------------
| The following language lines are used in the user permissions system.
| Each permission has a 'name' and a 'note' that describes
| the permission in detail.
|
| DO NOT edit the keys (left-hand side) of each permission as these are
| used throughout the system for translations.
|---------------------------------------------------------------------------
*/
"superuser" => [
'name' => 'crwdns13912:0crwdne13912:0',
'note' => 'crwdns13914:0crwdne13914:0',
],
'admin' => [
'name' => 'crwdns13916:0crwdne13916:0',
'note' => 'crwdns13918:0crwdne13918:0',
],
'import' => [
'name' => 'crwdns13920:0crwdne13920:0',
'note' => 'crwdns13922:0crwdne13922:0',
],
'reports' => [
'name' => 'crwdns13924:0crwdne13924:0',
'note' => 'crwdns13926:0crwdne13926:0',
],
'assets' =>
[
'name' => 'crwdns13928:0crwdne13928:0',
'note' => 'crwdns13930:0crwdne13930:0',
],
'assetsview' => [
'name' => 'crwdns13932:0crwdne13932:0',
],
'assetscreate' => [
'name' => 'crwdns13934:0crwdne13934:0',
],
'assetsedit' => [
'name' => 'crwdns13936:0crwdne13936:0',
],
'assetsdelete' => [
'name' => 'crwdns13938:0crwdne13938:0',
],
'assetscheckin' => [
'name' => 'crwdns13940:0crwdne13940:0',
'note' => 'crwdns13942:0crwdne13942:0',
],
'assetscheckout' => [
'name' => 'crwdns13944:0crwdne13944:0',
'note' => 'crwdns13946:0crwdne13946:0',
],
'assetsaudit' => [
'name' => 'crwdns13948:0crwdne13948:0',
'note' => 'crwdns13950:0crwdne13950:0',
],
'assetsviewrequestable' => [
'name' => 'crwdns13952:0crwdne13952:0',
'note' => 'crwdns13954:0crwdne13954:0',
],
'assetsviewencrypted-custom-fields' => [
'name' => 'crwdns13956:0crwdne13956:0',
'note' => 'crwdns13958:0crwdne13958:0',
],
'accessories' => [
'name' => 'crwdns13960:0crwdne13960:0',
'note' => 'crwdns13962:0crwdne13962:0',
],
'accessoriesview' => [
'name' => 'crwdns13964:0crwdne13964:0',
],
'accessoriescreate' => [
'name' => 'crwdns13966:0crwdne13966:0',
],
'accessoriesedit' => [
'name' => 'crwdns13968:0crwdne13968:0',
],
'accessoriesdelete' => [
'name' => 'crwdns13970:0crwdne13970:0',
],
'accessoriescheckout' => [
'name' => 'crwdns13972:0crwdne13972:0',
'note' => 'crwdns13974:0crwdne13974:0',
],
'accessoriescheckin' => [
'name' => 'crwdns13976:0crwdne13976:0',
'note' => 'crwdns13978:0crwdne13978:0',
],
'accessoriesfiles' => [
'name' => 'crwdns13980:0crwdne13980:0',
'note' => 'crwdns13982:0crwdne13982:0',
],
'consumables' => [
'name' => 'crwdns13984:0crwdne13984:0',
'note' => 'crwdns13986:0crwdne13986:0',
],
'consumablesview' => [
'name' => 'crwdns13988:0crwdne13988:0',
],
'consumablescreate' => [
'name' => 'crwdns13990:0crwdne13990:0',
],
'consumablesedit' => [
'name' => 'crwdns13992:0crwdne13992:0',
],
'consumablesdelete' => [
'name' => 'crwdns13994:0crwdne13994:0',
],
'consumablescheckout' => [
'name' => 'crwdns13996:0crwdne13996:0',
'note' => 'crwdns13998:0crwdne13998:0',
],
'consumablesfiles' => [
'name' => 'crwdns14000:0crwdne14000:0',
'note' => 'crwdns14002:0crwdne14002:0',
],
'licenses' => [
'name' => 'crwdns14004:0crwdne14004:0',
'note' => 'crwdns14006:0crwdne14006:0',
],
'licensesview' => [
'name' => 'crwdns14008:0crwdne14008:0',
],
'licensescreate' => [
'name' => 'crwdns14010:0crwdne14010:0',
],
'licensesedit' => [
'name' => 'crwdns14012:0crwdne14012:0',
],
'licensesdelete' => [
'name' => 'crwdns14014:0crwdne14014:0',
],
'licensescheckout' => [
'name' => 'crwdns14016:0crwdne14016:0',
'note' => 'crwdns14018:0crwdne14018:0',
],
'licensescheckin' => [
'name' => 'crwdns14020:0crwdne14020:0',
'note' => 'crwdns14022:0crwdne14022:0',
],
'licensesfiles' => [
'name' => 'crwdns14024:0crwdne14024:0',
'note' => 'crwdns14026:0crwdne14026:0',
],
'licenseskeys' => [
'name' => 'crwdns14028:0crwdne14028:0',
'note' => 'crwdns14030:0crwdne14030:0',
],
'components' => [
'name' => 'crwdns14032:0crwdne14032:0',
'note' => 'crwdns14034:0crwdne14034:0',
],
'componentsview' => [
'name' => 'crwdns14036:0crwdne14036:0',
],
'componentscreate' => [
'name' => 'crwdns14038:0crwdne14038:0',
],
'componentsedit' => [
'name' => 'crwdns14040:0crwdne14040:0',
],
'componentsdelete' => [
'name' => 'crwdns14042:0crwdne14042:0',
],
'componentsfiles' => [
'name' => 'crwdns14044:0crwdne14044:0',
'note' => 'crwdns14046:0crwdne14046:0',
],
'componentscheckout' => [
'name' => 'crwdns14048:0crwdne14048:0',
'note' => 'crwdns14050:0crwdne14050:0',
],
'componentscheckin' => [
'name' => 'crwdns14052:0crwdne14052:0',
'note' => 'crwdns14054:0crwdne14054:0',
],
'kits' => [
'name' => 'crwdns14056:0crwdne14056:0',
'note' => 'crwdns14058:0crwdne14058:0',
],
'kitsview' => [
'name' => 'crwdns14060:0crwdne14060:0',
],
'kitscreate' => [
'name' => 'crwdns14062:0crwdne14062:0',
],
'kitsedit' => [
'name' => 'crwdns14064:0crwdne14064:0',
],
'kitsdelete' => [
'name' => 'crwdns14066:0crwdne14066:0',
],
'users' => [
'name' => 'crwdns14068:0crwdne14068:0',
'note' => 'crwdns14070:0crwdne14070:0',
],
'usersview' => [
'name' => 'crwdns14072:0crwdne14072:0',
],
'userscreate' => [
'name' => 'crwdns14074:0crwdne14074:0',
],
'usersedit' => [
'name' => 'crwdns14076:0crwdne14076:0',
],
'usersdelete' => [
'name' => 'crwdns14078:0crwdne14078:0',
],
'models' => [
'name' => 'crwdns14080:0crwdne14080:0',
'note' => 'crwdns14082:0crwdne14082:0',
],
'modelsview' => [
'name' => 'crwdns14084:0crwdne14084:0',
],
'modelscreate' => [
'name' => 'crwdns14086:0crwdne14086:0',
],
'modelsedit' => [
'name' => 'crwdns14088:0crwdne14088:0',
],
'modelsdelete' => [
'name' => 'crwdns14090:0crwdne14090:0',
],
'categories' => [
'name' => 'crwdns14092:0crwdne14092:0',
'note' => 'crwdns14094:0crwdne14094:0',
],
'categoriesview' => [
'name' => 'crwdns14096:0crwdne14096:0',
],
'categoriescreate' => [
'name' => 'crwdns14098:0crwdne14098:0',
],
'categoriesedit' => [
'name' => 'crwdns14100:0crwdne14100:0',
],
'categoriesdelete' => [
'name' => 'crwdns14102:0crwdne14102:0',
],
'departments' => [
'name' => 'crwdns14104:0crwdne14104:0',
'note' => 'crwdns14106:0crwdne14106:0',
],
'departmentsview' => [
'name' => 'crwdns14108:0crwdne14108:0',
],
'departmentscreate' => [
'name' => 'crwdns14110:0crwdne14110:0',
],
'departmentsedit' => [
'name' => 'crwdns14112:0crwdne14112:0',
],
'departmentsdelete' => [
'name' => 'crwdns14114:0crwdne14114:0',
],
'locations' => [
'name' => 'crwdns14116:0crwdne14116:0',
'note' => 'crwdns14118:0crwdne14118:0',
],
'locationsview' => [
'name' => 'crwdns14120:0crwdne14120:0',
],
'locationscreate' => [
'name' => 'crwdns14122:0crwdne14122:0',
],
'locationsedit' => [
'name' => 'crwdns14124:0crwdne14124:0',
],
'locationsdelete' => [
'name' => 'crwdns14126:0crwdne14126:0',
],
'status-labels' => [
'name' => 'crwdns14128:0crwdne14128:0',
'note' => 'crwdns14130:0crwdne14130:0',
],
'statuslabelsview' => [
'name' => 'crwdns14132:0crwdne14132:0',
],
'statuslabelscreate' => [
'name' => 'crwdns14134:0crwdne14134:0',
],
'statuslabelsedit' => [
'name' => 'crwdns14136:0crwdne14136:0',
],
'statuslabelsdelete' => [
'name' => 'crwdns14138:0crwdne14138:0',
],
'custom-fields' => [
'name' => 'crwdns14140:0crwdne14140:0',
'note' => 'crwdns14142:0crwdne14142:0',
],
'customfieldsview' => [
'name' => 'crwdns14144:0crwdne14144:0',
],
'customfieldscreate' => [
'name' => 'crwdns14146:0crwdne14146:0',
],
'customfieldsedit' => [
'name' => 'crwdns14148:0crwdne14148:0',
],
'customfieldsdelete' => [
'name' => 'crwdns14150:0crwdne14150:0',
],
'suppliers' => [
'name' => 'crwdns14152:0crwdne14152:0',
'note' => 'crwdns14154:0crwdne14154:0',
],
'suppliersview' => [
'name' => 'crwdns14156:0crwdne14156:0',
],
'supplierscreate' => [
'name' => 'crwdns14158:0crwdne14158:0',
],
'suppliersedit' => [
'name' => 'crwdns14160:0crwdne14160:0',
],
'suppliersdelete' => [
'name' => 'crwdns14162:0crwdne14162:0',
],
'manufacturers' => [
'name' => 'crwdns14164:0crwdne14164:0',
'note' => 'crwdns14166:0crwdne14166:0',
],
'manufacturersview' => [
'name' => 'crwdns14168:0crwdne14168:0',
],
'manufacturerscreate' => [
'name' => 'crwdns14170:0crwdne14170:0',
],
'manufacturersedit' => [
'name' => 'crwdns14172:0crwdne14172:0',
],
'manufacturersdelete' => [
'name' => 'crwdns14174:0crwdne14174:0',
],
'companies' => [
'name' => 'crwdns14176:0crwdne14176:0',
'note' => 'crwdns14178:0crwdne14178:0',
],
'companiesview' => [
'name' => 'crwdns14180:0crwdne14180:0',
],
'companiescreate' => [
'name' => 'crwdns14182:0crwdne14182:0',
],
'companiesedit' => [
'name' => 'crwdns14184:0crwdne14184:0',
],
'companiesdelete' => [
'name' => 'crwdns14186:0crwdne14186:0',
],
'user-self-accounts' => [
'name' => 'crwdns14188:0crwdne14188:0',
'note' => 'crwdns14190:0crwdne14190:0',
],
'selftwo-factor' => [
'name' => 'crwdns14192:0crwdne14192:0',
'note' => 'crwdns14194:0crwdne14194:0',
],
'selfapi' => [
'name' => 'crwdns14196:0crwdne14196:0',
'note' => 'crwdns14198:0crwdne14198:0',
],
'selfedit-location' => [
'name' => 'crwdns14200:0crwdne14200:0',
'note' => 'crwdns14202:0crwdne14202:0',
],
'selfcheckout-assets' => [
'name' => 'crwdns14204:0crwdne14204:0',
'note' => 'crwdns14206:0crwdne14206:0',
],
'selfview-purchase-cost' => [
'name' => 'crwdns14208:0crwdne14208:0',
'note' => 'crwdns14210:0crwdne14210:0',
],
'depreciations' => [
'name' => 'crwdns14212:0crwdne14212:0',
'note' => 'crwdns14214:0crwdne14214:0',
],
'depreciationsview' => [
'name' => 'crwdns14216:0crwdne14216:0',
],
'depreciationsedit' => [
'name' => 'crwdns14218:0crwdne14218:0',
],
'depreciationsdelete' => [
'name' => 'crwdns14220:0crwdne14220:0',
],
'depreciationscreate' => [
'name' => 'crwdns14222:0crwdne14222:0',
],
'grant_all' => 'crwdns14224:0crwdne14224:0',
'deny_all' => 'crwdns14226:0crwdne14226:0',
'inherit_all' => 'crwdns14228:0crwdne14228:0',
'grant' => 'crwdns14230:0crwdne14230:0',
'deny' => 'crwdns14232:0crwdne14232:0',
'inherit' => 'crwdns14234:0crwdne14234:0',
'use_groups' => 'crwdns14236:0crwdne14236:0'
);

View File

@@ -174,7 +174,7 @@ return [
'ulid' => 'crwdns12552:0crwdne12552:0',
'uuid' => 'crwdns12554:0crwdne12554:0',
'fmcs_location' => 'crwdns13232:0crwdne13232:0',
'is_unique_across_company_and_location' => 'crwdns14272:0crwdne14272:0',
/*
|--------------------------------------------------------------------------

View File

@@ -3,15 +3,14 @@
return array(
'asset_categories' => 'Bate kategorieë',
'category_name' => 'Kategorie Naam',
'email_to_user_upon_checkin' => 'Send email to user upon checkin.',
'email_to_user_upon_checkin_and_checkout' => 'Send email to user upon checkin/checkout.',
'checkin_email' => 'Stuur e-pos aan gebruiker by aanmelding/afmelding.',
'email_to_initiator' => 'Send email to you when user accepts or declines checkout.',
'checkin_email_notification' => 'Hierdie gebruiker sal \'n e-pos gestuur word by aanmelding/afmelding.',
'clone' => 'Klone Kategorie',
'create' => 'Skep Kategorie',
'edit' => 'Wysig Kategorie',
'email_will_be_sent_due_to_global_eula' => 'An email will be sent to the user upon checkout because the global EULA is being used.',
'email_will_be_sent_due_to_category_eula' => 'An email will be sent to the user upon checkout because a EULA is set for this category.',
'email_will_be_sent_due_to_global_eula' => 'An email will be sent to the user because the global EULA is being used.',
'email_will_be_sent_due_to_category_eula' => 'An email will be sent to the user because a EULA is set for this category.',
'eula_text' => 'Kategorie EULA',
'eula_text_help' => 'Hierdie veld laat u toe om u EULA\'s vir spesifieke soorte bates aan te pas. As u slegs een EULA vir al u bates het, kan u die onderstaande boks selekteer om die primêre standaard te gebruik.',
'name' => 'Kategorie Naam',

View File

@@ -5,7 +5,7 @@ return [
'manage' => 'Manage',
'field' => 'veld',
'about_fieldsets_title' => 'Oor Fieldsets',
'about_fieldsets_text' => 'Fieldsets allow you to create groups of custom fields that are frequently re-used for specific asset model types.',
'about_fieldsets_text' => 'Veldstelle stel jou in staat om groepe van persoonlike velde te skep wat gereeld hergebruik word vir spesifieke tipe bates.',
'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.',
@@ -67,5 +67,4 @@ return [
'checkbox' => 'Checkbox',
'radio' => 'Radio Buttons',
],
'general_help_text' => 'Custom fields store additional information not covered by the default asset fields. <a href="https://snipe-it.readme.io/docs/custom-fields#/"><i class="fa fa-external-link"></i></a>.',
];

View File

@@ -18,7 +18,7 @@ return [
'alert_email' => 'Stuur kennisgewings aan',
'alert_email_help' => 'Email addresses or distribution lists you want alerts to be sent to, comma separated.',
'alerts_enabled' => 'Alerts aangeskakel',
'alert_interval' => 'Expiring Alerts Threshold',
'alert_interval' => 'Uitgaande Alert Drempel (in dae)',
'alert_inv_threshold' => 'Voorraadwaarskuwingsdrempel',
'allow_user_skin' => 'Allow User Skin',
'allow_user_skin_help_text' => 'Checking this box will allow a user to override the UI skin with a different one.',
@@ -94,12 +94,10 @@ return [
'ldap_settings' => 'LDAP-instellings',
'ldap_client_tls_cert_help' => 'Client-Side TLS Certificate and Key for LDAP connections are usually only useful in Google Workspace configurations with "Secure LDAP." Both are required.',
'ldap_location' => 'LDAP Location Field',
'ldap_location_help' => 'The LDAP Location field should be used if <strong>an OU is not being used in the Base Bind DN.</strong> Leave this blank if an OU search is being used.',
'ldap_location_help' => 'The LDAP Location field should be used if <strong>an OU is not being used in the Base Bind DN.</strong> Leave this blank if an OU search is being used.',
'ldap_login_test_help' => 'Enter a valid LDAP username and password from the base DN you specified above to test whether your LDAP login is configured correctly. YOU MUST SAVE YOUR UPDATED LDAP SETTINGS FIRST.',
'ldap_login_sync_help' => 'This only tests that LDAP can sync and that your fields are mapped correctly. If your LDAP Authentication query is not correct, users may still not be able to login. YOU MUST SAVE YOUR UPDATED LDAP SETTINGS FIRST.',
'ldap_manager' => 'LDAP Manager Field',
'ldap_mapping_help' => 'If your fields are not syncing correctly, try using the <strong>lower-case version</strong> of the field names. Display Name (<code>displayName</code>) in your LDAP/AD should be mapped here as <code>displayname</code>, <code>givenName</code> should be <code>givenname</code>, <code>sAMAccountName</code> as <code>samaccountname</code>, etc. <a href="https://snipe-it.readme.io/docs/ldap-sync-login#field-mapping-for-syncing"><i class="fa fa-external-link"></i></a>',
'save_ldap_first' => 'You must save your LDAP settings before testing. Save your settings on this page and then reload to test LDAP login and/or sync.',
'ldap_server' => 'LDAP-bediener',
'ldap_server_help' => 'This should start with ldap:// (for unencrypted) or ldaps:// (for TLS or SSL)',
'ldap_server_cert' => 'LDAP SSL-sertifikaat-validering',
@@ -347,7 +345,6 @@ return [
'asset_tags_help' => 'Incrementing and prefixes',
'labels' => 'Labels',
'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 &amp; label settings',
'purge_help' => 'Verwyder verwyderde rekords',
'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.',
@@ -382,17 +379,14 @@ return [
'label2_1d_type_help' => 'Format for 1D barcodes',
'label2_2d_type' => '2D Barcode Type',
'label2_2d_type_help' => 'Format for 2D barcodes',
'label2_2d_prefix' => '2D Barcode Prefix',
'label2_2d_prefix_help' => 'This text will be prepended to the 2D Barcode Target value selected below when the 2D code is scanned. This can be used to prepend an external URL or any other value that you might need.',
'label2_2d_target' => '2D Barcode Content',
'label2_2d_target_help' => 'The data that will be contained in the 2D barcode. This can link to the asset directly in Snipe-IT or can be one of the non-linked field values. If you use the prefix above, it will be prepended to this value.',
'select_template' => 'Select a Template',
'label2_2d_target' => '2D Barcode Target',
'label2_2d_target_help' => 'The data that will be contained in the 2D barcode',
'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_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.',
'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>',
'help_default_will_use' => 'Note that the value of the barcodes must comply with the respective barcode spec in order to be successfully generated. Please see <a href="https://snipe-it.readme.io/docs/barcodes">the documentation <i class="fa fa-external-link"></i></a> for more details. ',
'help_default_will_use' => '<code>:default</code> will use the value from <code>:setting_name</code>. <br>Note that the value of the barcodes must comply with the respective barcode spec in order to be successfully generated. Please see <a href="https://snipe-it.readme.io/docs/barcodes">the documentation <i class="fa fa-external-link"></i></a> for more details. ',
'asset_id' => 'Asset ID',
'data' => 'Data',
'default' => 'Default',
@@ -420,9 +414,6 @@ return [
'manager_view' => 'Manager View',
'manager_view_enabled_text' => 'Enable Manager View',
'manager_view_enabled_help' => 'Allow managers to view assigned items to their direct and indirect reports in their account view.',
'redirect_url' => 'Redirect URL',
'client_secret' => 'Client Secret',
'client_id' => 'Client ID',
'username_formats' => [
'username_format' => 'Gebruikernaam',
@@ -496,7 +487,6 @@ return [
'server' => 'Server Settings',
'scoping' => 'Scoping',
'security' => 'Security Preferences',
'passwords' => 'Password Security Preferences',
],

View File

@@ -15,8 +15,7 @@ return [
'info' => 'info',
'restore_user' => 'Klik hier om dit te herstel.',
'last_login' => 'Laaste Aanmelding',
'ldap_config_text' => 'The selected location will be set for ALL imported users. This will overwrite their existing location, and is an unusual use-case, so leaving this blank is typically best.',
'ldap_sync_intro' => 'Click on the button below to manually sync your LDAP users. To learn more about configuring LDAP sync to run automatically, please see the <a href=":link" target="_blank">documentation <i class="fa fa-external-link"></i></a> .',
'ldap_config_text' => 'LDAP-konfigurasie-instellings kan Admin> Instellings gevind word. Die (opsionele) gekose ligging sal vir alle ingevoerde gebruikers gestel word.',
'print_assigned' => 'Print All Assigned',
'email_assigned' => 'Email List of All Assigned',
'user_notified' => 'User has been emailed a list of their currently assigned items.',
@@ -54,6 +53,4 @@ return [
'all_assigned_list_generation' => 'Generated on:',
'email_user_creds_on_create' => 'Email this user their credentials?',
'department_manager' => 'Department Manager',
'generate_password' => 'Generate random password',
'individual_override' => 'This user has at least one individual permission set, which may override group permissions.',
];

View File

@@ -2,8 +2,8 @@
return array(
'accepted' => 'You have successfully accepted this item.',
'declined' => 'You have successfully declined this item.',
'accepted' => 'U het hierdie bate suksesvol aanvaar.',
'declined' => 'Jy het hierdie bate suksesvol geweier.',
'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.',

View File

@@ -350,7 +350,6 @@ return [
'login_disabled' => 'Login Disabled',
'audit_due' => 'Due for Audit',
'audit_due_days' => '{}Assets Due or Overdue for Audit|[1]Assets Due or Overdue for Audit Within a Day|[2,*]Assets Due or Overdue for Audit Within :days Days',
'audit_due_days_view_all' => '{}Assets Due or Overdue for Audit|[1]View All Assets Due or Overdue for Audit Within a Day|[2,*]View All Assets Due or Overdue for Audit Within :days Days',
'checkin_due' => 'Due for Checkin',
'checkin_overdue' => 'Overdue for Checkin',
'checkin_due_days' => '{}Due for Checkin|[1]Assets Due for Checkin Within :days Day|[2,*]Assets Due for Checkin Within :days Days',
@@ -384,14 +383,6 @@ return [
'bulk_edit_about_to' => 'You are about to edit the following: ',
'checked_out' => 'Gekontroleer',
'checked_out_to' => 'Checked out to',
'available_users' => 'Available Users to Add',
'add_users_to_group' => 'Add Users to Group',
'users_to_add_to_group' => 'Users to Add',
'add_all_users_to_group' => 'Add all users to group',
'add_selected_users_to_group' => 'Add selected users to group',
'remove_selected_users_from_group' => 'Remove selected users from group',
'remove_all_users_from_group' => 'Remove all users from group',
'add_users_to_group_help' => 'Use the arrows to add or remove users from this group. You can select multiple users by holding down the Ctrl (Windows) or Command (Mac) key while clicking.',
'fields' => 'Fields',
'last_checkout' => 'Last Checkout',
'due_to_checkin' => 'The following :count items are due to be checked in soon:',
@@ -399,7 +390,6 @@ return [
'reminder_checked_out_items' => 'This is a reminder of the items currently checked out to you. If you feel this list is inaccurate (something is missing, or something appears here that you believe you never received), please email :reply_to_name at :reply_to_address.',
'changed' => 'Changed',
'to' => 'To',
'to_user' => 'To',
'report_fields_info' => '<p>Select the fields you would like to include in your custom report, and click Generate. The file (custom-asset-report-YYYY-mm-dd.csv) will download automatically, and you can open it in Excel.</p>
<p>If you would like to export only certain assets, use the options below to fine-tune your results.</p>',
'range' => 'Range',
@@ -625,8 +615,6 @@ return [
'user_managed_passwords_allow' => 'Allow users to manage their own passwords',
'from' => 'From',
'by' => 'deur',
'by_user' => 'deur',
'ldap_sync_location' => 'Sync All Users to This Location (Optional)',
'version' => 'Version',
'build' => 'build',
'use_cloned_image' => 'Clone image from original',

View File

@@ -100,8 +100,7 @@ return [
'the_following_item' => 'Die volgende item is nagegaan:',
'to_reset' => 'Om jou webadres te herstel, voltooi hierdie vorm:',
'type' => 'tipe',
'upcoming-audits' => 'There is :count asset that is coming up for audit within :threshold days.|There are :count assets that are coming up for audit within :threshold days. ',
'upcoming-audits_click' => 'This email may not contain the full list so as not to exceed email size limits. Click on the button below to view all assets due for audit.',
'upcoming-audits' => 'There is :count asset that is coming up for audit within :threshold days.|There are :count assets that are coming up for audit within :threshold days.',
'user' => 'gebruiker',
'username' => 'Gebruikersnaam',
'unaccepted_asset_reminder' => 'Reminder: You have Unaccepted Assets.',

View File

@@ -1,424 +0,0 @@
<?php
return array(
/*
|--------------------------------------------------------------------------
| Permissions
|--------------------------------------------------------------------------
| The following language lines are used in the user permissions system.
| Each permission has a 'name' and a 'note' that describes
| the permission in detail.
|
| DO NOT edit the keys (left-hand side) of each permission as these are
| used throughout the system for translations.
|---------------------------------------------------------------------------
*/
"superuser" => [
'name' => 'Super User',
'note' => 'Determines whether the user has full access to all aspects of the admin. This setting overrides ALL more specific and restrictive permissions throughout the system. ',
],
'admin' => [
'name' => 'Admin Access',
'note' => 'Determines whether the user has access to most aspects of the system EXCEPT the System Admin Settings. These users will be able to manage users, locations, categories, etc, but ARE constrained by Full Multiple Company Support if it is enabled.',
],
'import' => [
'name' => 'CSV Import',
'note' => 'This will allow users to import even if access to users, assets, etc is denied elsewhere.',
],
'reports' => [
'name' => 'Reports Access',
'note' => 'Determines whether the user has access to the Reports section of the application.',
],
'assets' =>
[
'name' => 'bates',
'note' => 'Grants access to the Assets section of the application.',
],
'assetsview' => [
'name' => 'View Assets',
],
'assetscreate' => [
'name' => 'Create New Assets',
],
'assetsedit' => [
'name' => 'Edit Assets',
],
'assetsdelete' => [
'name' => 'Delete Assets',
],
'assetscheckin' => [
'name' => 'Check In',
'note' => 'Check assets back into inventory that are currently checked out.',
],
'assetscheckout' => [
'name' => 'Check Out',
'note' => 'Assign assets in inventory by checking them out.',
],
'assetsaudit' => [
'name' => 'Audit Assets',
'note' => 'Allows the user to mark an asset as physically inventoried.',
],
'assetsviewrequestable' => [
'name' => 'View Requestable Assets',
'note' => 'Allows the user to view assets that are marked as requestable.',
],
'assetsviewencrypted-custom-fields' => [
'name' => 'View Encrypted Custom Fields',
'note' => 'Allows the user to view and modify encrypted custom fields on assets.',
],
'accessories' => [
'name' => 'bykomstighede',
'note' => 'Grants access to the Accessories section of the application.',
],
'accessoriesview' => [
'name' => 'View Accessories',
],
'accessoriescreate' => [
'name' => 'Create New Accessories',
],
'accessoriesedit' => [
'name' => 'Edit Accessories',
],
'accessoriesdelete' => [
'name' => 'Delete Accessories',
],
'accessoriescheckout' => [
'name' => 'Check Out Accessories',
'note' => 'Assign accessories in inventory by checking them out.',
],
'accessoriescheckin' => [
'name' => 'Check In Accessories',
'note' => 'Check accessories back into inventory that are currently checked out.',
],
'accessoriesfiles' => [
'name' => 'Manage Accessory Files',
'note' => 'Allows the user to upload, download, and delete files associated with accessories.',
],
'consumables' => [
'name' => 'Consumables',
'note' => 'Grants access to the Consumables section of the application.',
],
'consumablesview' => [
'name' => 'View Consumables',
],
'consumablescreate' => [
'name' => 'Create New Consumables',
],
'consumablesedit' => [
'name' => 'Edit Consumables',
],
'consumablesdelete' => [
'name' => 'Delete Consumables',
],
'consumablescheckout' => [
'name' => 'Check Out Consumables',
'note' => 'Assign consumables in inventory by checking them out.',
],
'consumablesfiles' => [
'name' => 'Manage Consumable Files',
'note' => 'Allows the user to upload, download, and delete files associated with consumables.',
],
'licenses' => [
'name' => 'lisensies',
'note' => 'Grants access to the Licenses section of the application.',
],
'licensesview' => [
'name' => 'View Licenses',
],
'licensescreate' => [
'name' => 'Create New Licenses',
],
'licensesedit' => [
'name' => 'Edit Licenses',
],
'licensesdelete' => [
'name' => 'Delete Licenses',
],
'licensescheckout' => [
'name' => 'Assign Licenses',
'note' => 'Allows the user to assign licenses to assets or users.',
],
'licensescheckin' => [
'name' => 'Unassign Licenses',
'note' => 'Allows the user to unassign licenses from assets or users.',
],
'licensesfiles' => [
'name' => 'Manage License Files',
'note' => 'Allows the user to upload, download, and delete files associated with licenses.',
],
'licenseskeys' => [
'name' => 'Manage License Keys',
'note' => 'Allows the user to view product keys associated with licenses.',
],
'components' => [
'name' => 'komponente',
'note' => 'Grants access to the Components section of the application.',
],
'componentsview' => [
'name' => 'View Components',
],
'componentscreate' => [
'name' => 'Create New Components',
],
'componentsedit' => [
'name' => 'Edit Components',
],
'componentsdelete' => [
'name' => 'Delete Components',
],
'componentsfiles' => [
'name' => 'Manage Component Files',
'note' => 'Allows the user to upload, download, and delete files associated with components.',
],
'componentscheckout' => [
'name' => 'Check Out Components',
'note' => 'Assign components in inventory by checking them out.',
],
'componentscheckin' => [
'name' => 'Check In Components',
'note' => 'Check components back into inventory that are currently checked out.',
],
'kits' => [
'name' => 'Predefined Kits',
'note' => 'Grants access to the Predefined Kits section of the application.',
],
'kitsview' => [
'name' => 'View Predefined Kits',
],
'kitscreate' => [
'name' => 'Create New Predefined Kits',
],
'kitsedit' => [
'name' => 'Edit Predefined Kits',
],
'kitsdelete' => [
'name' => 'Delete Predefined Kits',
],
'users' => [
'name' => 'gebruikers',
'note' => 'Grants access to the Users section of the application.',
],
'usersview' => [
'name' => 'Bekyk gebruikers',
],
'userscreate' => [
'name' => 'Create New Users',
],
'usersedit' => [
'name' => 'Edit Users',
],
'usersdelete' => [
'name' => 'Delete Users',
],
'models' => [
'name' => 'Models',
'note' => 'Grants access to the Models section of the application.',
],
'modelsview' => [
'name' => 'Kyk Modelle',
],
'modelscreate' => [
'name' => 'Create New Models',
],
'modelsedit' => [
'name' => 'Edit Models',
],
'modelsdelete' => [
'name' => 'Delete Models',
],
'categories' => [
'name' => 'kategorieë',
'note' => 'Grants access to the Categories section of the application.',
],
'categoriesview' => [
'name' => 'View Categories',
],
'categoriescreate' => [
'name' => 'Create New Categories',
],
'categoriesedit' => [
'name' => 'Edit Categories',
],
'categoriesdelete' => [
'name' => 'Delete Categories',
],
'departments' => [
'name' => 'departemente',
'note' => 'Grants access to the Departments section of the application.',
],
'departmentsview' => [
'name' => 'View Departments',
],
'departmentscreate' => [
'name' => 'Create New Departments',
],
'departmentsedit' => [
'name' => 'Edit Departments',
],
'departmentsdelete' => [
'name' => 'Delete Departments',
],
'locations' => [
'name' => 'plekke',
'note' => 'Grants access to the Locations section of the application.',
],
'locationsview' => [
'name' => 'View Locations',
],
'locationscreate' => [
'name' => 'Create New Locations',
],
'locationsedit' => [
'name' => 'Edit Locations',
],
'locationsdelete' => [
'name' => 'Delete Locations',
],
'status-labels' => [
'name' => 'Status etikette',
'note' => 'Grants access to the Status Labels section of the application used by Assets.',
],
'statuslabelsview' => [
'name' => 'View Status Labels',
],
'statuslabelscreate' => [
'name' => 'Create New Status Labels',
],
'statuslabelsedit' => [
'name' => 'Edit Status Labels',
],
'statuslabelsdelete' => [
'name' => 'Delete Status Labels',
],
'custom-fields' => [
'name' => 'Aangepaste velde',
'note' => 'Grants access to the Custom Fields section of the application used by Assets.',
],
'customfieldsview' => [
'name' => 'View Custom Fields',
],
'customfieldscreate' => [
'name' => 'Create New Custom Fields',
],
'customfieldsedit' => [
'name' => 'Edit Custom Fields',
],
'customfieldsdelete' => [
'name' => 'Delete Custom Fields',
],
'suppliers' => [
'name' => 'Verskaffers',
'note' => 'Grants access to the Suppliers section of the application.',
],
'suppliersview' => [
'name' => 'View Suppliers',
],
'supplierscreate' => [
'name' => 'Create New Suppliers',
],
'suppliersedit' => [
'name' => 'Edit Suppliers',
],
'suppliersdelete' => [
'name' => 'Delete Suppliers',
],
'manufacturers' => [
'name' => 'vervaardigers',
'note' => 'Grants access to the Manufacturers section of the application.',
],
'manufacturersview' => [
'name' => 'View Manufacturers',
],
'manufacturerscreate' => [
'name' => 'Create New Manufacturers',
],
'manufacturersedit' => [
'name' => 'Edit Manufacturers',
],
'manufacturersdelete' => [
'name' => 'Delete Manufacturers',
],
'companies' => [
'name' => 'maatskappye',
'note' => 'Grants access to the Companies section of the application.',
],
'companiesview' => [
'name' => 'View Companies',
],
'companiescreate' => [
'name' => 'Create New Companies',
],
'companiesedit' => [
'name' => 'Edit Companies',
],
'companiesdelete' => [
'name' => 'Delete Companies',
],
'user-self-accounts' => [
'name' => 'User Self Accounts',
'note' => 'Grants non-admin users the ability to manage certain aspects of their own user accounts.',
],
'selftwo-factor' => [
'name' => 'Manage Two-Factor Authentication',
'note' => 'Allows users to enable, disable, and manage two-factor authentication for their own accounts.',
],
'selfapi' => [
'name' => 'Manage API Tokens',
'note' => 'Allows users to create, view, and revoke their own API tokens. User tokens will have the same permissions as the user who created them.',
],
'selfedit-location' => [
'name' => 'Edit Location',
'note' => 'Allows users to edit the location associated with their own user account.',
],
'selfcheckout-assets' => [
'name' => 'Self Check Out Assets',
'note' => 'Allows users to check out assets to themselves without admin intervention.',
],
'selfview-purchase-cost' => [
'name' => 'View Purchase Cost',
'note' => 'Allows users to view the purchase cost of items in their account view.',
],
'depreciations' => [
'name' => 'Depreciation Management',
'note' => 'Allows users to manage and view asset depreciation details.',
],
'depreciationsview' => [
'name' => 'View Depreciation Details',
],
'depreciationsedit' => [
'name' => 'Edit Depreciation Settings',
],
'depreciationsdelete' => [
'name' => 'Delete Depreciation Records',
],
'depreciationscreate' => [
'name' => 'Create Depreciation Records',
],
'grant_all' => 'Grant all permissions for :area',
'deny_all' => 'Deny all permissions for :area',
'inherit_all' => 'Inherit all permissions for :area from permission groups',
'grant' => 'Grant Permission for :area',
'deny' => 'Deny Permission for :area',
'inherit' => 'Inherit Permission for :area from permission groups',
'use_groups' => 'We strongly suggest using Permission Groups instead of assigning individual permissions for easier management.'
);

View File

@@ -174,7 +174,7 @@ return [
'ulid' => 'The :attribute field must be a valid ULID.',
'uuid' => 'The :attribute field must be a valid UUID.',
'fmcs_location' => 'Full multiple company support and location scoping is enabled in the Admin Settings, and the selected location and selected company are not compatible.',
'is_unique_across_company_and_location' => 'The :attribute must be unique within the selected company and location.',
/*
|--------------------------------------------------------------------------

View File

@@ -3,15 +3,14 @@
return array(
'asset_categories' => 'Asset Categories',
'category_name' => 'Category Name',
'email_to_user_upon_checkin' => 'Send email to user upon checkin.',
'email_to_user_upon_checkin_and_checkout' => 'Send email to user upon checkin/checkout.',
'checkin_email' => 'Send email to user on checkin/checkout.',
'email_to_initiator' => 'Send email to you when user accepts or declines checkout.',
'checkin_email_notification' => 'This user will be sent an email on checkin/checkout.',
'clone' => 'Clone Category',
'create' => 'Create Category',
'edit' => 'Edit Category',
'email_will_be_sent_due_to_global_eula' => 'An email will be sent to the user upon checkout because the global EULA is being used.',
'email_will_be_sent_due_to_category_eula' => 'An email will be sent to the user upon checkout because a EULA is set for this category.',
'email_will_be_sent_due_to_global_eula' => 'An email will be sent to the user because the global EULA is being used.',
'email_will_be_sent_due_to_category_eula' => 'An email will be sent to the user because a EULA is set for this category.',
'eula_text' => 'Category EULA',
'eula_text_help' => 'This field allows you to customize your EULAs for specific types of assets. If you only have one EULA for all of your assets, you can check the box below to use the primary default.',
'name' => 'Category Name',

View File

@@ -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 for specific asset model types.',
'about_fieldsets_text' => 'Fieldsets allow you to create groups of custom fields that are frequently re-used 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.',
@@ -67,5 +67,4 @@ return [
'checkbox' => 'Checkbox',
'radio' => 'Radio Buttons',
],
'general_help_text' => 'Custom fields store additional information not covered by the default asset fields. <a href="https://snipe-it.readme.io/docs/custom-fields#/"><i class="fa fa-external-link"></i></a>.',
];

View File

@@ -18,7 +18,7 @@ return [
'alert_email' => 'Send alerts to',
'alert_email_help' => 'Email addresses or distribution lists you want alerts to be sent to, comma separated.',
'alerts_enabled' => 'Email Alerts Enabled',
'alert_interval' => 'Expiring Alerts Threshold',
'alert_interval' => 'Expiring Alerts Threshold (in days)',
'alert_inv_threshold' => 'Inventory Alert Threshold',
'allow_user_skin' => 'Allow User Skin',
'allow_user_skin_help_text' => 'Checking this box will allow a user to override the UI skin with a different one.',
@@ -94,12 +94,10 @@ return [
'ldap_settings' => 'LDAP Settings',
'ldap_client_tls_cert_help' => 'Client-Side TLS Certificate and Key for LDAP connections are usually only useful in Google Workspace configurations with "Secure LDAP." Both are required.',
'ldap_location' => 'LDAP Location Field',
'ldap_location_help' => 'The LDAP Location field should be used if <strong>an OU is not being used in the Base Bind DN.</strong> Leave this blank if an OU search is being used.',
'ldap_location_help' => 'The LDAP Location field should be used if <strong>an OU is not being used in the Base Bind DN.</strong> Leave this blank if an OU search is being used.',
'ldap_login_test_help' => 'Enter a valid LDAP username and password from the base DN you specified above to test whether your LDAP login is configured correctly. YOU MUST SAVE YOUR UPDATED LDAP SETTINGS FIRST.',
'ldap_login_sync_help' => 'This only tests that LDAP can sync and that your fields are mapped correctly. If your LDAP Authentication query is not correct, users may still not be able to login. YOU MUST SAVE YOUR UPDATED LDAP SETTINGS FIRST.',
'ldap_manager' => 'LDAP Manager Field',
'ldap_mapping_help' => 'If your fields are not syncing correctly, try using the <strong>lower-case version</strong> of the field names. Display Name (<code>displayName</code>) in your LDAP/AD should be mapped here as <code>displayname</code>, <code>givenName</code> should be <code>givenname</code>, <code>sAMAccountName</code> as <code>samaccountname</code>, etc. <a href="https://snipe-it.readme.io/docs/ldap-sync-login#field-mapping-for-syncing"><i class="fa fa-external-link"></i></a>',
'save_ldap_first' => 'You must save your LDAP settings before testing. Save your settings on this page and then reload to test LDAP login and/or sync.',
'ldap_server' => 'LDAP Server',
'ldap_server_help' => 'This should start with ldap:// (for unencrypted) or ldaps:// (for TLS or SSL)',
'ldap_server_cert' => 'LDAP SSL certificate validation',
@@ -347,7 +345,6 @@ return [
'asset_tags_help' => 'Incrementing and prefixes',
'labels' => 'Labels',
'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 &amp; label settings',
'purge_help' => 'Purge 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.',
@@ -382,17 +379,14 @@ return [
'label2_1d_type_help' => 'Format for 1D barcodes',
'label2_2d_type' => '2D Barcode Type',
'label2_2d_type_help' => 'Format for 2D barcodes',
'label2_2d_prefix' => '2D Barcode Prefix',
'label2_2d_prefix_help' => 'This text will be prepended to the 2D Barcode Target value selected below when the 2D code is scanned. This can be used to prepend an external URL or any other value that you might need.',
'label2_2d_target' => '2D Barcode Content',
'label2_2d_target_help' => 'The data that will be contained in the 2D barcode. This can link to the asset directly in Snipe-IT or can be one of the non-linked field values. If you use the prefix above, it will be prepended to this value.',
'select_template' => 'Select a Template',
'label2_2d_target' => '2D Barcode Target',
'label2_2d_target_help' => 'The data that will be contained in the 2D barcode',
'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_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.',
'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>',
'help_default_will_use' => 'Note that the value of the barcodes must comply with the respective barcode spec in order to be successfully generated. Please see <a href="https://snipe-it.readme.io/docs/barcodes">the documentation <i class="fa fa-external-link"></i></a> for more details. ',
'help_default_will_use' => '<code>:default</code> will use the value from <code>:setting_name</code>. <br>Note that the value of the barcodes must comply with the respective barcode spec in order to be successfully generated. Please see <a href="https://snipe-it.readme.io/docs/barcodes">the documentation <i class="fa fa-external-link"></i></a> for more details. ',
'asset_id' => 'Asset ID',
'data' => 'Data',
'default' => 'Default',
@@ -420,9 +414,6 @@ return [
'manager_view' => 'Manager View',
'manager_view_enabled_text' => 'Enable Manager View',
'manager_view_enabled_help' => 'Allow managers to view assigned items to their direct and indirect reports in their account view.',
'redirect_url' => 'Redirect URL',
'client_secret' => 'Client Secret',
'client_id' => 'Client ID',
'username_formats' => [
'username_format' => 'Username Format',
@@ -496,7 +487,6 @@ return [
'server' => 'Server Settings',
'scoping' => 'Scoping',
'security' => 'Security Preferences',
'passwords' => 'Password Security Preferences',
],

View File

@@ -15,8 +15,7 @@ return [
'info' => 'Info',
'restore_user' => 'Click here to restore them.',
'last_login' => 'Last Login',
'ldap_config_text' => 'The selected location will be set for ALL imported users. This will overwrite their existing location, and is an unusual use-case, so leaving this blank is typically best.',
'ldap_sync_intro' => 'Click on the button below to manually sync your LDAP users. To learn more about configuring LDAP sync to run automatically, please see the <a href=":link" target="_blank">documentation <i class="fa fa-external-link"></i></a> .',
'ldap_config_text' => 'LDAP configuration settings can be found Admin > Settings. The (optional) selected location will be set for all imported users.',
'print_assigned' => 'Print All Assigned',
'email_assigned' => 'Email List of All Assigned',
'user_notified' => 'User has been emailed a list of their currently assigned items.',
@@ -54,6 +53,4 @@ return [
'all_assigned_list_generation' => 'Generated on:',
'email_user_creds_on_create' => 'Email this user their credentials?',
'department_manager' => 'Department Manager',
'generate_password' => 'Generate random password',
'individual_override' => 'This user has at least one individual permission set, which may override group permissions.',
];

View File

@@ -2,8 +2,8 @@
return array(
'accepted' => 'You have successfully accepted this item.',
'declined' => 'You have successfully declined this item.',
'accepted' => 'You have successfully accepted this asset.',
'declined' => 'You have successfully declined this asset.',
'bulk_manager_warn' => 'Your users have been successfully updated, however your manager entry was not saved because the manager you selected was also in the user list to be edited, and users may not be their own manager. Please select your users again, excluding the manager.',
'user_exists' => 'User already exists!',
'user_not_found' => 'User does not exist or you do not have permission view them.',

View File

@@ -350,7 +350,6 @@ return [
'login_disabled' => 'Login Disabled',
'audit_due' => 'Due for Audit',
'audit_due_days' => '{}Assets Due or Overdue for Audit|[1]Assets Due or Overdue for Audit Within a Day|[2,*]Assets Due or Overdue for Audit Within :days Days',
'audit_due_days_view_all' => '{}Assets Due or Overdue for Audit|[1]View All Assets Due or Overdue for Audit Within a Day|[2,*]View All Assets Due or Overdue for Audit Within :days Days',
'checkin_due' => 'Due for Checkin',
'checkin_overdue' => 'Overdue for Checkin',
'checkin_due_days' => '{}Due for Checkin|[1]Assets Due for Checkin Within :days Day|[2,*]Assets Due for Checkin Within :days Days',
@@ -384,14 +383,6 @@ return [
'bulk_edit_about_to' => 'You are about to edit the following: ',
'checked_out' => 'Checked Out',
'checked_out_to' => 'Checked out to',
'available_users' => 'Available Users to Add',
'add_users_to_group' => 'Add Users to Group',
'users_to_add_to_group' => 'Users to Add',
'add_all_users_to_group' => 'Add all users to group',
'add_selected_users_to_group' => 'Add selected users to group',
'remove_selected_users_from_group' => 'Remove selected users from group',
'remove_all_users_from_group' => 'Remove all users from group',
'add_users_to_group_help' => 'Use the arrows to add or remove users from this group. You can select multiple users by holding down the Ctrl (Windows) or Command (Mac) key while clicking.',
'fields' => 'Fields',
'last_checkout' => 'Last Checkout',
'due_to_checkin' => 'The following :count items are due to be checked in soon:',
@@ -399,7 +390,6 @@ return [
'reminder_checked_out_items' => 'This is a reminder of the items currently checked out to you. If you feel this list is inaccurate (something is missing, or something appears here that you believe you never received), please email :reply_to_name at :reply_to_address.',
'changed' => 'Changed',
'to' => 'To',
'to_user' => 'To',
'report_fields_info' => '<p>Select the fields you would like to include in your custom report, and click Generate. The file (custom-asset-report-YYYY-mm-dd.csv) will download automatically, and you can open it in Excel.</p>
<p>If you would like to export only certain assets, use the options below to fine-tune your results.</p>',
'range' => 'Range',
@@ -625,8 +615,6 @@ return [
'user_managed_passwords_allow' => 'Allow users to manage their own passwords',
'from' => 'From',
'by' => 'By',
'by_user' => 'By',
'ldap_sync_location' => 'Sync All Users to This Location (Optional)',
'version' => 'Version',
'build' => 'build',
'use_cloned_image' => 'Clone image from original',

View File

@@ -100,8 +100,7 @@ return [
'the_following_item' => 'The following item has been checked in: ',
'to_reset' => 'To reset your :web password, complete this form:',
'type' => 'Type',
'upcoming-audits' => 'There is :count asset that is coming up for audit within :threshold days.|There are :count assets that are coming up for audit within :threshold days. ',
'upcoming-audits_click' => 'This email may not contain the full list so as not to exceed email size limits. Click on the button below to view all assets due for audit.',
'upcoming-audits' => 'There is :count asset that is coming up for audit within :threshold days.|There are :count assets that are coming up for audit within :threshold days.',
'user' => 'User',
'username' => 'Username',
'unaccepted_asset_reminder' => 'Reminder: You have Unaccepted Assets.',

View File

@@ -1,424 +0,0 @@
<?php
return array(
/*
|--------------------------------------------------------------------------
| Permissions
|--------------------------------------------------------------------------
| The following language lines are used in the user permissions system.
| Each permission has a 'name' and a 'note' that describes
| the permission in detail.
|
| DO NOT edit the keys (left-hand side) of each permission as these are
| used throughout the system for translations.
|---------------------------------------------------------------------------
*/
"superuser" => [
'name' => 'Super User',
'note' => 'Determines whether the user has full access to all aspects of the admin. This setting overrides ALL more specific and restrictive permissions throughout the system. ',
],
'admin' => [
'name' => 'Admin Access',
'note' => 'Determines whether the user has access to most aspects of the system EXCEPT the System Admin Settings. These users will be able to manage users, locations, categories, etc, but ARE constrained by Full Multiple Company Support if it is enabled.',
],
'import' => [
'name' => 'CSV Import',
'note' => 'This will allow users to import even if access to users, assets, etc is denied elsewhere.',
],
'reports' => [
'name' => 'Reports Access',
'note' => 'Determines whether the user has access to the Reports section of the application.',
],
'assets' =>
[
'name' => 'ንብረቶች',
'note' => 'Grants access to the Assets section of the application.',
],
'assetsview' => [
'name' => 'View Assets',
],
'assetscreate' => [
'name' => 'Create New Assets',
],
'assetsedit' => [
'name' => 'Edit Assets',
],
'assetsdelete' => [
'name' => 'Delete Assets',
],
'assetscheckin' => [
'name' => 'Check In',
'note' => 'Check assets back into inventory that are currently checked out.',
],
'assetscheckout' => [
'name' => 'Check Out',
'note' => 'Assign assets in inventory by checking them out.',
],
'assetsaudit' => [
'name' => 'Audit Assets',
'note' => 'Allows the user to mark an asset as physically inventoried.',
],
'assetsviewrequestable' => [
'name' => 'View Requestable Assets',
'note' => 'Allows the user to view assets that are marked as requestable.',
],
'assetsviewencrypted-custom-fields' => [
'name' => 'View Encrypted Custom Fields',
'note' => 'Allows the user to view and modify encrypted custom fields on assets.',
],
'accessories' => [
'name' => 'መለዋወጫዎች',
'note' => 'Grants access to the Accessories section of the application.',
],
'accessoriesview' => [
'name' => 'View Accessories',
],
'accessoriescreate' => [
'name' => 'Create New Accessories',
],
'accessoriesedit' => [
'name' => 'Edit Accessories',
],
'accessoriesdelete' => [
'name' => 'Delete Accessories',
],
'accessoriescheckout' => [
'name' => 'Check Out Accessories',
'note' => 'Assign accessories in inventory by checking them out.',
],
'accessoriescheckin' => [
'name' => 'Check In Accessories',
'note' => 'Check accessories back into inventory that are currently checked out.',
],
'accessoriesfiles' => [
'name' => 'Manage Accessory Files',
'note' => 'Allows the user to upload, download, and delete files associated with accessories.',
],
'consumables' => [
'name' => 'Consumables',
'note' => 'Grants access to the Consumables section of the application.',
],
'consumablesview' => [
'name' => 'View Consumables',
],
'consumablescreate' => [
'name' => 'Create New Consumables',
],
'consumablesedit' => [
'name' => 'Edit Consumables',
],
'consumablesdelete' => [
'name' => 'Delete Consumables',
],
'consumablescheckout' => [
'name' => 'Check Out Consumables',
'note' => 'Assign consumables in inventory by checking them out.',
],
'consumablesfiles' => [
'name' => 'Manage Consumable Files',
'note' => 'Allows the user to upload, download, and delete files associated with consumables.',
],
'licenses' => [
'name' => 'Licenses',
'note' => 'Grants access to the Licenses section of the application.',
],
'licensesview' => [
'name' => 'View Licenses',
],
'licensescreate' => [
'name' => 'Create New Licenses',
],
'licensesedit' => [
'name' => 'Edit Licenses',
],
'licensesdelete' => [
'name' => 'Delete Licenses',
],
'licensescheckout' => [
'name' => 'Assign Licenses',
'note' => 'Allows the user to assign licenses to assets or users.',
],
'licensescheckin' => [
'name' => 'Unassign Licenses',
'note' => 'Allows the user to unassign licenses from assets or users.',
],
'licensesfiles' => [
'name' => 'Manage License Files',
'note' => 'Allows the user to upload, download, and delete files associated with licenses.',
],
'licenseskeys' => [
'name' => 'Manage License Keys',
'note' => 'Allows the user to view product keys associated with licenses.',
],
'components' => [
'name' => 'Components',
'note' => 'Grants access to the Components section of the application.',
],
'componentsview' => [
'name' => 'View Components',
],
'componentscreate' => [
'name' => 'Create New Components',
],
'componentsedit' => [
'name' => 'Edit Components',
],
'componentsdelete' => [
'name' => 'Delete Components',
],
'componentsfiles' => [
'name' => 'Manage Component Files',
'note' => 'Allows the user to upload, download, and delete files associated with components.',
],
'componentscheckout' => [
'name' => 'Check Out Components',
'note' => 'Assign components in inventory by checking them out.',
],
'componentscheckin' => [
'name' => 'Check In Components',
'note' => 'Check components back into inventory that are currently checked out.',
],
'kits' => [
'name' => 'Predefined Kits',
'note' => 'Grants access to the Predefined Kits section of the application.',
],
'kitsview' => [
'name' => 'View Predefined Kits',
],
'kitscreate' => [
'name' => 'Create New Predefined Kits',
],
'kitsedit' => [
'name' => 'Edit Predefined Kits',
],
'kitsdelete' => [
'name' => 'Delete Predefined Kits',
],
'users' => [
'name' => 'Users',
'note' => 'Grants access to the Users section of the application.',
],
'usersview' => [
'name' => 'View Users',
],
'userscreate' => [
'name' => 'Create New Users',
],
'usersedit' => [
'name' => 'Edit Users',
],
'usersdelete' => [
'name' => 'Delete Users',
],
'models' => [
'name' => 'Models',
'note' => 'Grants access to the Models section of the application.',
],
'modelsview' => [
'name' => 'View Models',
],
'modelscreate' => [
'name' => 'Create New Models',
],
'modelsedit' => [
'name' => 'Edit Models',
],
'modelsdelete' => [
'name' => 'Delete Models',
],
'categories' => [
'name' => 'ምድብ',
'note' => 'Grants access to the Categories section of the application.',
],
'categoriesview' => [
'name' => 'View Categories',
],
'categoriescreate' => [
'name' => 'Create New Categories',
],
'categoriesedit' => [
'name' => 'Edit Categories',
],
'categoriesdelete' => [
'name' => 'Delete Categories',
],
'departments' => [
'name' => 'Departments',
'note' => 'Grants access to the Departments section of the application.',
],
'departmentsview' => [
'name' => 'View Departments',
],
'departmentscreate' => [
'name' => 'Create New Departments',
],
'departmentsedit' => [
'name' => 'Edit Departments',
],
'departmentsdelete' => [
'name' => 'Delete Departments',
],
'locations' => [
'name' => 'Locations',
'note' => 'Grants access to the Locations section of the application.',
],
'locationsview' => [
'name' => 'View Locations',
],
'locationscreate' => [
'name' => 'Create New Locations',
],
'locationsedit' => [
'name' => 'Edit Locations',
],
'locationsdelete' => [
'name' => 'Delete Locations',
],
'status-labels' => [
'name' => 'Status Labels',
'note' => 'Grants access to the Status Labels section of the application used by Assets.',
],
'statuslabelsview' => [
'name' => 'View Status Labels',
],
'statuslabelscreate' => [
'name' => 'Create New Status Labels',
],
'statuslabelsedit' => [
'name' => 'Edit Status Labels',
],
'statuslabelsdelete' => [
'name' => 'Delete Status Labels',
],
'custom-fields' => [
'name' => 'Custom Fields',
'note' => 'Grants access to the Custom Fields section of the application used by Assets.',
],
'customfieldsview' => [
'name' => 'View Custom Fields',
],
'customfieldscreate' => [
'name' => 'Create New Custom Fields',
],
'customfieldsedit' => [
'name' => 'Edit Custom Fields',
],
'customfieldsdelete' => [
'name' => 'Delete Custom Fields',
],
'suppliers' => [
'name' => 'Suppliers',
'note' => 'Grants access to the Suppliers section of the application.',
],
'suppliersview' => [
'name' => 'View Suppliers',
],
'supplierscreate' => [
'name' => 'Create New Suppliers',
],
'suppliersedit' => [
'name' => 'Edit Suppliers',
],
'suppliersdelete' => [
'name' => 'Delete Suppliers',
],
'manufacturers' => [
'name' => 'Manufacturers',
'note' => 'Grants access to the Manufacturers section of the application.',
],
'manufacturersview' => [
'name' => 'View Manufacturers',
],
'manufacturerscreate' => [
'name' => 'Create New Manufacturers',
],
'manufacturersedit' => [
'name' => 'Edit Manufacturers',
],
'manufacturersdelete' => [
'name' => 'Delete Manufacturers',
],
'companies' => [
'name' => 'Companies',
'note' => 'Grants access to the Companies section of the application.',
],
'companiesview' => [
'name' => 'View Companies',
],
'companiescreate' => [
'name' => 'Create New Companies',
],
'companiesedit' => [
'name' => 'Edit Companies',
],
'companiesdelete' => [
'name' => 'Delete Companies',
],
'user-self-accounts' => [
'name' => 'User Self Accounts',
'note' => 'Grants non-admin users the ability to manage certain aspects of their own user accounts.',
],
'selftwo-factor' => [
'name' => 'Manage Two-Factor Authentication',
'note' => 'Allows users to enable, disable, and manage two-factor authentication for their own accounts.',
],
'selfapi' => [
'name' => 'Manage API Tokens',
'note' => 'Allows users to create, view, and revoke their own API tokens. User tokens will have the same permissions as the user who created them.',
],
'selfedit-location' => [
'name' => 'Edit Location',
'note' => 'Allows users to edit the location associated with their own user account.',
],
'selfcheckout-assets' => [
'name' => 'Self Check Out Assets',
'note' => 'Allows users to check out assets to themselves without admin intervention.',
],
'selfview-purchase-cost' => [
'name' => 'View Purchase Cost',
'note' => 'Allows users to view the purchase cost of items in their account view.',
],
'depreciations' => [
'name' => 'Depreciation Management',
'note' => 'Allows users to manage and view asset depreciation details.',
],
'depreciationsview' => [
'name' => 'View Depreciation Details',
],
'depreciationsedit' => [
'name' => 'Edit Depreciation Settings',
],
'depreciationsdelete' => [
'name' => 'Delete Depreciation Records',
],
'depreciationscreate' => [
'name' => 'Create Depreciation Records',
],
'grant_all' => 'Grant all permissions for :area',
'deny_all' => 'Deny all permissions for :area',
'inherit_all' => 'Inherit all permissions for :area from permission groups',
'grant' => 'Grant Permission for :area',
'deny' => 'Deny Permission for :area',
'inherit' => 'Inherit Permission for :area from permission groups',
'use_groups' => 'We strongly suggest using Permission Groups instead of assigning individual permissions for easier management.'
);

View File

@@ -174,7 +174,7 @@ return [
'ulid' => 'The :attribute field must be a valid ULID.',
'uuid' => 'The :attribute field must be a valid UUID.',
'fmcs_location' => 'Full multiple company support and location scoping is enabled in the Admin Settings, and the selected location and selected company are not compatible.',
'is_unique_across_company_and_location' => 'The :attribute must be unique within the selected company and location.',
/*
|--------------------------------------------------------------------------

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