Merge branch 'develop' into testing/license-checkin

This commit is contained in:
snipe 2024-12-19 22:29:31 +00:00 committed by GitHub
commit d49bfb562a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
325 changed files with 3598 additions and 2080 deletions

View file

@ -51,6 +51,8 @@ class SQLStreamer {
/* we *could* have made the ^INSERT INTO blah VALUES$ turn on the capturing state, and closed it with /* we *could* have made the ^INSERT INTO blah VALUES$ turn on the capturing state, and closed it with
a ^(blahblah);$ but it's cleaner to not have to manage the state machine. We're just going to a ^(blahblah);$ but it's cleaner to not have to manage the state machine. We're just going to
assume that (blahblah), or (blahblah); are values for INSERT and are always acceptable. */ assume that (blahblah), or (blahblah); are values for INSERT and are always acceptable. */
"<^/\*!40101 SET NAMES '?[a-zA-Z0-9_-]+'? \*/;$>" => false, //using weird delimiters (<,>) for readability. allow quoted or unquoted charsets
"<^/\*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' \*/;$>" => false, //same, now handle zero-values
]; ];
foreach($allowed_statements as $statement => $statechange) { foreach($allowed_statements as $statement => $statechange) {

View file

@ -75,20 +75,23 @@ class AccessoryCheckoutController extends Controller
$accessory->checkout_qty = $request->input('checkout_qty', 1); $accessory->checkout_qty = $request->input('checkout_qty', 1);
for ($i = 0; $i < $accessory->checkout_qty; $i++) { for ($i = 0; $i < $accessory->checkout_qty; $i++) {
AccessoryCheckout::create([
$accessory_checkout = new AccessoryCheckout([
'accessory_id' => $accessory->id, 'accessory_id' => $accessory->id,
'created_at' => Carbon::now(), 'created_at' => Carbon::now(),
'created_by' => auth()->id(),
'assigned_to' => $target->id, 'assigned_to' => $target->id,
'assigned_type' => $target::class, 'assigned_type' => $target::class,
'note' => $request->input('note'), 'note' => $request->input('note'),
]); ]);
$accessory_checkout->created_by = auth()->id();
$accessory_checkout->save();
} }
event(new CheckoutableCheckedOut($accessory, $target, auth()->user(), $request->input('note'))); event(new CheckoutableCheckedOut($accessory, $target, auth()->user(), $request->input('note')));
// Set this as user since we only allow checkout to user for this item type
$request->request->add(['checkout_to_type' => request('checkout_to_type')]); $request->request->add(['checkout_to_type' => request('checkout_to_type')]);
$request->request->add(['assigned_user' => $target->id]); $request->request->add(['assigned_to' => $target->id]);
session()->put(['redirect_option' => $request->get('redirect_option'), 'checkout_to_type' => $request->get('checkout_to_type')]); session()->put(['redirect_option' => $request->get('redirect_option'), 'checkout_to_type' => $request->get('checkout_to_type')]);

View file

@ -13,6 +13,7 @@ use App\Http\Transformers\SelectlistTransformer;
use App\Models\Accessory; use App\Models\Accessory;
use App\Models\Company; use App\Models\Company;
use App\Models\User; use App\Models\User;
use Illuminate\Http\JsonResponse;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Carbon\Carbon; use Carbon\Carbon;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
@ -184,39 +185,33 @@ class AccessoriesController extends Controller
/** /**
* Display the specified resource. * Get the list of checkouts for a specific accessory
* *
* @author [A. Gianotto] [<snipe@snipe.net>] * @author [A. Gianotto] [<snipe@snipe.net>]
* @since [v4.0] * @since [v4.0]
* @param int $id * @param int $id
* @return \Illuminate\Http\Response * @return | array
*/ */
public function checkedout($id, Request $request) public function checkedout(Request $request, $id)
{ {
$this->authorize('view', Accessory::class); $this->authorize('view', Accessory::class);
$accessory = Accessory::with('lastCheckout')->findOrFail($id); $accessory = Accessory::with('lastCheckout')->findOrFail($id);
$offset = request('offset', 0); $offset = request('offset', 0);
$limit = request('limit', 50); $limit = request('limit', 50);
$accessory_checkouts = $accessory->checkouts; // Total count of all checkouts for this asset
$total = $accessory_checkouts->count(); $accessory_checkouts = $accessory->checkouts();
if ($total < $offset) {
$offset = 0;
}
$accessory_checkouts = $accessory->checkouts()->skip($offset)->take($limit)->get();
// Check for search text in the request
if ($request->filled('search')) { if ($request->filled('search')) {
$accessory_checkouts = $accessory_checkouts->TextSearch($request->input('search'));
$accessory_checkouts = $accessory->checkouts()->TextSearch($request->input('search'))
->get();
$total = $accessory_checkouts->count();
} }
return (new AccessoriesTransformer)->transformCheckedoutAccessory($accessory, $accessory_checkouts, $total); $total = $accessory_checkouts->count();
$accessory_checkouts = $accessory_checkouts->skip($offset)->take($limit)->get();
return (new AccessoriesTransformer)->transformCheckedoutAccessory($accessory_checkouts, $total);
} }
@ -227,7 +222,7 @@ class AccessoriesController extends Controller
* @since [v4.0] * @since [v4.0]
* @param \App\Http\Requests\ImageUploadRequest $request * @param \App\Http\Requests\ImageUploadRequest $request
* @param int $id * @param int $id
* @return \Illuminate\Http\Response * @return \Illuminate\Http\JsonResponse
*/ */
public function update(ImageUploadRequest $request, $id) public function update(ImageUploadRequest $request, $id)
{ {
@ -249,7 +244,7 @@ class AccessoriesController extends Controller
* @author [A. Gianotto] [<snipe@snipe.net>] * @author [A. Gianotto] [<snipe@snipe.net>]
* @since [v4.0] * @since [v4.0]
* @param int $id * @param int $id
* @return \Illuminate\Http\Response * @return \Illuminate\Http\JsonResponse
*/ */
public function destroy($id) public function destroy($id)
{ {
@ -284,14 +279,17 @@ class AccessoriesController extends Controller
$accessory->checkout_qty = $request->input('checkout_qty', 1); $accessory->checkout_qty = $request->input('checkout_qty', 1);
for ($i = 0; $i < $accessory->checkout_qty; $i++) { for ($i = 0; $i < $accessory->checkout_qty; $i++) {
AccessoryCheckout::create([
$accessory_checkout = new AccessoryCheckout([
'accessory_id' => $accessory->id, 'accessory_id' => $accessory->id,
'created_at' => Carbon::now(), 'created_at' => Carbon::now(),
'created_by' => auth()->id(),
'assigned_to' => $target->id, 'assigned_to' => $target->id,
'assigned_type' => $target::class, 'assigned_type' => $target::class,
'note' => $request->input('note'), 'note' => $request->input('note'),
]); ]);
$accessory_checkout->created_by = auth()->id();
$accessory_checkout->save();
} }
// Set this value to be able to pass the qty through to the event // Set this value to be able to pass the qty through to the event

View file

@ -6,6 +6,7 @@ use App\Events\CheckoutableCheckedIn;
use App\Http\Requests\StoreAssetRequest; use App\Http\Requests\StoreAssetRequest;
use App\Http\Requests\UpdateAssetRequest; use App\Http\Requests\UpdateAssetRequest;
use App\Http\Traits\MigratesLegacyAssetLocations; use App\Http\Traits\MigratesLegacyAssetLocations;
use App\Models\AccessoryCheckout;
use App\Models\CheckoutAcceptance; use App\Models\CheckoutAcceptance;
use App\Models\LicenseSeat; use App\Models\LicenseSeat;
use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Builder;
@ -26,11 +27,9 @@ use App\Models\License;
use App\Models\Location; use App\Models\Location;
use App\Models\Setting; use App\Models\Setting;
use App\Models\User; use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Carbon\Carbon; use Carbon\Carbon;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use App\Http\Requests\ImageUploadRequest;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Route; use Illuminate\Support\Facades\Route;
use App\View\Label; use App\View\Label;
@ -129,6 +128,7 @@ class AssetsController extends Controller
$assets = Asset::select('assets.*') $assets = Asset::select('assets.*')
->with( ->with(
'model',
'location', 'location',
'assetstatus', 'assetstatus',
'company', 'company',
@ -140,7 +140,7 @@ class AssetsController extends Controller
'model.manufacturer', 'model.manufacturer',
'model.fieldset', 'model.fieldset',
'supplier' 'supplier'
); //it might be tempting to add 'assetlog' here, but don't. It blows up update-heavy users. ); // it might be tempting to add 'assetlog' here, but don't. It blows up update-heavy users.
if ($filter_non_deprecable_assets) { if ($filter_non_deprecable_assets) {
@ -1214,6 +1214,27 @@ class AssetsController extends Controller
return (new AssetsTransformer)->transformRequestedAssets($assets, $total); return (new AssetsTransformer)->transformRequestedAssets($assets, $total);
} }
public function assignedAssets(Request $request, Asset $asset) : JsonResponse | array
{
return [];
// to do
}
public function assignedAccessories(Request $request, Asset $asset) : JsonResponse | array
{
$this->authorize('view', Asset::class);
$this->authorize('view', $asset);
$accessory_checkouts = AccessoryCheckout::AssetsAssigned()->with('adminuser')->with('accessories');
$offset = ($request->input('offset') > $accessory_checkouts->count()) ? $accessory_checkouts->count() : app('api_offset_value');
$limit = app('api_limit_value');
$total = $accessory_checkouts->count();
$accessory_checkouts = $accessory_checkouts->skip($offset)->take($limit)->get();
return (new AssetsTransformer)->transformCheckedoutAccessories($accessory_checkouts, $total);
}
/** /**
* Generate asset labels by tag * Generate asset labels by tag
* *

View file

@ -3,17 +3,20 @@
namespace App\Http\Controllers\Api; namespace App\Http\Controllers\Api;
use App\Helpers\Helper; use App\Helpers\Helper;
use App\Http\Requests\ImageUploadRequest;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Http\Requests\ImageUploadRequest;
use App\Http\Transformers\AccessoriesTransformer;
use App\Http\Transformers\AssetsTransformer; use App\Http\Transformers\AssetsTransformer;
use App\Http\Transformers\LocationsTransformer; use App\Http\Transformers\LocationsTransformer;
use App\Http\Transformers\SelectlistTransformer; use App\Http\Transformers\SelectlistTransformer;
use App\Models\Accessory;
use App\Models\AccessoryCheckout;
use App\Models\Asset; use App\Models\Asset;
use App\Models\Location; use App\Models\Location;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Pagination\LengthAwarePaginator; use Illuminate\Pagination\LengthAwarePaginator;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
use Illuminate\Http\JsonResponse;
class LocationsController extends Controller class LocationsController extends Controller
{ {
@ -28,26 +31,28 @@ class LocationsController extends Controller
{ {
$this->authorize('view', Location::class); $this->authorize('view', Location::class);
$allowed_columns = [ $allowed_columns = [
'id', 'accessories_count',
'name',
'address', 'address',
'address2', 'address2',
'assets_count',
'assets_count',
'assigned_accessories_count',
'assigned_assets_count',
'assigned_assets_count',
'city', 'city',
'state',
'country', 'country',
'zip',
'created_at', 'created_at',
'updated_at',
'manager_id',
'image',
'assigned_assets_count',
'users_count',
'assets_count',
'assigned_assets_count',
'assets_count',
'rtd_assets_count',
'currency', 'currency',
'id',
'image',
'ldap_ou', 'ldap_ou',
'manager_id',
'name',
'rtd_assets_count',
'state',
'updated_at',
'users_count',
'zip',
]; ];
$locations = Location::with('parent', 'manager', 'children')->select([ $locations = Location::with('parent', 'manager', 'children')->select([
@ -68,8 +73,11 @@ class LocationsController extends Controller
'locations.image', 'locations.image',
'locations.ldap_ou', 'locations.ldap_ou',
'locations.currency', 'locations.currency',
])->withCount('assignedAssets as assigned_assets_count') ])
->withCount('assignedAssets as assigned_assets_count')
->withCount('assets as assets_count') ->withCount('assets as assets_count')
->withCount('assignedAccessories as assigned_accessories_count')
->withCount('accessories as accessories_count')
->withCount('rtd_assets as rtd_assets_count') ->withCount('rtd_assets as rtd_assets_count')
->withCount('children as children_count') ->withCount('children as children_count')
->withCount('users as users_count'); ->withCount('users as users_count');
@ -224,7 +232,17 @@ class LocationsController extends Controller
return response()->json(Helper::formatStandardApiResponse('error', null, $location->getErrors())); return response()->json(Helper::formatStandardApiResponse('error', null, $location->getErrors()));
} }
public function assets(Request $request, Location $location) : JsonResponse | array public function assets(Request $request, Location $location) : JsonResponse | array
{
$this->authorize('view', Asset::class);
$this->authorize('view', $location);
$assets = Asset::where('location_id', '=', $location->id)->with('model', 'model.category', 'assetstatus', 'location', 'company', 'defaultLoc');
$assets = $assets->get();
return (new AssetsTransformer)->transformAssets($assets, $assets->count(), $request);
}
public function assignedAssets(Request $request, Location $location) : JsonResponse | array
{ {
$this->authorize('view', Asset::class); $this->authorize('view', Asset::class);
$this->authorize('view', $location); $this->authorize('view', $location);
@ -233,6 +251,20 @@ class LocationsController extends Controller
return (new AssetsTransformer)->transformAssets($assets, $assets->count(), $request); return (new AssetsTransformer)->transformAssets($assets, $assets->count(), $request);
} }
public function assignedAccessories(Request $request, Location $location) : JsonResponse | array
{
$this->authorize('view', Accessory::class);
$this->authorize('view', $location);
$accessory_checkouts = AccessoryCheckout::LocationAssigned()->with('adminuser')->with('accessories');
$offset = ($request->input('offset') > $accessory_checkouts->count()) ? $accessory_checkouts->count() : app('api_offset_value');
$limit = app('api_limit_value');
$total = $accessory_checkouts->count();
$accessory_checkouts = $accessory_checkouts->skip($offset)->take($limit)->get();
return (new LocationsTransformer)->transformCheckedoutAccessories($accessory_checkouts, $total);
}
/** /**
* Remove the specified resource from storage. * Remove the specified resource from storage.
* *

View file

@ -538,7 +538,7 @@ class AssetsController extends Controller
if ($settings->qr_code == '1') { if ($settings->qr_code == '1') {
$asset = Asset::withTrashed()->find($assetId); $asset = Asset::withTrashed()->find($assetId);
if ($asset) { if ($asset) {
$size = Helper::barcodeDimensions($settings->barcode_type); $size = Helper::barcodeDimensions($settings->label2_2d_type);
$qr_file = public_path().'/uploads/barcodes/qr-'.str_slug($asset->asset_tag).'-'.str_slug($asset->id).'.png'; $qr_file = public_path().'/uploads/barcodes/qr-'.str_slug($asset->asset_tag).'-'.str_slug($asset->id).'.png';
if (isset($asset->id, $asset->asset_tag)) { if (isset($asset->id, $asset->asset_tag)) {
@ -548,7 +548,7 @@ class AssetsController extends Controller
return response()->file($qr_file, $header); return response()->file($qr_file, $header);
} else { } else {
$barcode = new \Com\Tecnick\Barcode\Barcode(); $barcode = new \Com\Tecnick\Barcode\Barcode();
$barcode_obj = $barcode->getBarcodeObj($settings->barcode_type, route('hardware.show', $asset->id), $size['height'], $size['width'], 'black', [-2, -2, -2, -2]); $barcode_obj = $barcode->getBarcodeObj($settings->label2_2d_type, route('hardware.show', $asset->id), $size['height'], $size['width'], 'black', [-2, -2, -2, -2]);
file_put_contents($qr_file, $barcode_obj->getPngData()); file_put_contents($qr_file, $barcode_obj->getPngData());
return response($barcode_obj->getPngData())->header('Content-type', 'image/png'); return response($barcode_obj->getPngData())->header('Content-type', 'image/png');
@ -573,7 +573,7 @@ class AssetsController extends Controller
{ {
$settings = Setting::getSettings(); $settings = Setting::getSettings();
if ($asset = Asset::withTrashed()->find($assetId)) { if ($asset = Asset::withTrashed()->find($assetId)) {
$barcode_file = public_path().'/uploads/barcodes/'.str_slug($settings->alt_barcode).'-'.str_slug($asset->asset_tag).'.png'; $barcode_file = public_path().'/uploads/barcodes/'.str_slug($settings->label2_1d_type).'-'.str_slug($asset->asset_tag).'.png';
if (isset($asset->id, $asset->asset_tag)) { if (isset($asset->id, $asset->asset_tag)) {
if (file_exists($barcode_file)) { if (file_exists($barcode_file)) {
@ -586,7 +586,7 @@ class AssetsController extends Controller
$barcode = new \Com\Tecnick\Barcode\Barcode(); $barcode = new \Com\Tecnick\Barcode\Barcode();
try { try {
$barcode_obj = $barcode->getBarcodeObj($settings->alt_barcode, $asset->asset_tag, ($barcode_width < 300 ? $barcode_width : 300), 50); $barcode_obj = $barcode->getBarcodeObj($settings->label2_1d_type, $asset->asset_tag, ($barcode_width < 300 ? $barcode_width : 300), 50);
file_put_contents($barcode_file, $barcode_obj->getPngData()); file_put_contents($barcode_file, $barcode_obj->getPngData());
return response($barcode_obj->getPngData())->header('Content-type', 'image/png'); return response($barcode_obj->getPngData())->header('Content-type', 'image/png');

View file

@ -50,14 +50,14 @@ class ForgotPasswordController extends Controller
*/ */
public function sendResetLinkEmail(Request $request) public function sendResetLinkEmail(Request $request)
{ {
/** /**
* Let's set a max character count here to prevent potential * Let's set a max character count here to prevent potential
* buffer overflow issues with attackers sending very large * buffer overflow issues with attackers sending very large
* payloads through. * payloads through. The addition of the string rule prevents attackers
* sending arrays through and causing 500s
*/ */
$request->validate([ $request->validate([
'username' => ['required', 'max:255'], 'username' => ['required', 'max:255', 'string'],
]); ]);
/** /**

View file

@ -104,7 +104,7 @@ class CustomFieldsController extends Controller
"auto_add_to_fieldsets" => $request->get("auto_add_to_fieldsets", 0), "auto_add_to_fieldsets" => $request->get("auto_add_to_fieldsets", 0),
"show_in_listview" => $request->get("show_in_listview", 0), "show_in_listview" => $request->get("show_in_listview", 0),
"show_in_requestable_list" => $request->get("show_in_requestable_list", 0), "show_in_requestable_list" => $request->get("show_in_requestable_list", 0),
"user_id" => auth()->id() "created_by" => auth()->id()
]); ]);

View file

@ -695,48 +695,6 @@ class SettingsController extends Controller
return redirect()->back()->withInput()->withErrors($setting->getErrors()); return redirect()->back()->withInput()->withErrors($setting->getErrors());
} }
/**
* Return a form to allow a super admin to update settings.
*
* @author [A. Gianotto] [<snipe@snipe.net>]
*
* @since [v1.0]
*/
public function getBarcodes() : View
{
$setting = Setting::getSettings();
$is_gd_installed = extension_loaded('gd');
return view('settings.barcodes', compact('setting'))->with('is_gd_installed', $is_gd_installed);
}
/**
* Saves settings from form.
*
* @author [A. Gianotto] [<snipe@snipe.net>]
*
* @since [v1.0]
*/
public function postBarcodes(Request $request) : RedirectResponse
{
if (is_null($setting = Setting::getSettings())) {
return redirect()->to('admin')->with('error', trans('admin/settings/message.update.error'));
}
$setting->qr_code = $request->input('qr_code', '0');
$setting->alt_barcode = $request->input('alt_barcode');
$setting->alt_barcode_enabled = $request->input('alt_barcode_enabled', '0');
$setting->barcode_type = $request->input('barcode_type');
$setting->qr_text = $request->input('qr_text');
if ($setting->save()) {
return redirect()->route('settings.index')
->with('success', trans('admin/settings/message.update.success'));
}
return redirect()->back()->withInput()->withErrors($setting->getErrors());
}
/** /**
* Return a form to allow a super admin to update settings. * Return a form to allow a super admin to update settings.
* *
@ -762,8 +720,11 @@ class SettingsController extends Controller
*/ */
public function getLabels() : View public function getLabels() : View
{ {
$is_gd_installed = extension_loaded('gd');
return view('settings.labels') return view('settings.labels')
->with('setting', Setting::getSettings()) ->with('setting', Setting::getSettings())
->with('is_gd_installed', $is_gd_installed)
->with('customFields', CustomField::where('field_encrypted', '=', 0)->get()); ->with('customFields', CustomField::where('field_encrypted', '=', 0)->get());
} }
@ -799,9 +760,13 @@ class SettingsController extends Controller
$setting->labels_pagewidth = $request->input('labels_pagewidth'); $setting->labels_pagewidth = $request->input('labels_pagewidth');
$setting->labels_pageheight = $request->input('labels_pageheight'); $setting->labels_pageheight = $request->input('labels_pageheight');
$setting->labels_display_company_name = $request->input('labels_display_company_name', '0'); $setting->labels_display_company_name = $request->input('labels_display_company_name', '0');
$setting->labels_display_company_name = $request->input('labels_display_company_name', '0');
//Barcodes
$setting->qr_code = $request->input('qr_code', '0');
//1D-Barcode
$setting->alt_barcode_enabled = $request->input('alt_barcode_enabled', '0');
//QR-Code
$setting->qr_text = $request->input('qr_text');
if ($request->filled('labels_display_name')) { if ($request->filled('labels_display_name')) {
$setting->labels_display_name = 1; $setting->labels_display_name = 1;

View file

@ -69,7 +69,7 @@ class AccessoriesTransformer
return $array; return $array;
} }
public function transformCheckedoutAccessory($accessory, $accessory_checkouts, $total) public function transformCheckedoutAccessory($accessory_checkouts, $total)
{ {
$array = []; $array = [];
@ -77,9 +77,13 @@ class AccessoriesTransformer
$array[] = [ $array[] = [
'id' => $checkout->id, 'id' => $checkout->id,
'assigned_to' => $this->transformAssignedTo($checkout), 'assigned_to' => $this->transformAssignedTo($checkout),
'checkout_notes' => e($checkout->note), 'note' => $checkout->note ? e($checkout->note) : null,
'last_checkout' => Helper::getFormattedDateObject($checkout->created_at, 'datetime'), 'created_by' => $checkout->adminuser ? [
'available_actions' => ['checkin' => true], 'id' => (int) $checkout->adminuser->id,
'name'=> e($checkout->adminuser->present()->fullName),
]: null,
'created_at' => Helper::getFormattedDateObject($checkout->created_at, 'datetime'),
'available_actions' => Gate::allows('checkout', Accessory::class) ? ['checkin' => true] : ['checkin' => false],
]; ];
} }
@ -89,22 +93,11 @@ class AccessoriesTransformer
public function transformAssignedTo($accessoryCheckout) public function transformAssignedTo($accessoryCheckout)
{ {
if ($accessoryCheckout->checkedOutToUser()) { if ($accessoryCheckout->checkedOutToUser()) {
return [ return (new UsersTransformer)->transformUserCompact($accessoryCheckout->assigned);
'id' => (int) $accessoryCheckout->assigned->id, } elseif ($accessoryCheckout->checkedOutToLocation()) {
'username' => e($accessoryCheckout->assigned->username), return (new LocationsTransformer())->transformLocationCompact($accessoryCheckout->assigned);
'name' => e($accessoryCheckout->assigned->getFullNameAttribute()), } elseif ($accessoryCheckout->checkedOutToAsset()) {
'first_name'=> e($accessoryCheckout->assigned->first_name), return (new AssetsTransformer())->transformAssetCompact($accessoryCheckout->assigned);
'last_name'=> ($accessoryCheckout->assigned->last_name) ? e($accessoryCheckout->assigned->last_name) : null,
'email'=> ($accessoryCheckout->assigned->email) ? e($accessoryCheckout->assigned->email) : null,
'employee_number' => ($accessoryCheckout->assigned->employee_num) ? e($accessoryCheckout->assigned->employee_num) : null,
'type' => 'user',
];
} }
return $accessoryCheckout->assigned ? [
'id' => $accessoryCheckout->assigned->id,
'name' => e($accessoryCheckout->assigned->display_name),
'type' => $accessoryCheckout->assignedType(),
] : null;
} }
} }

View file

@ -3,12 +3,14 @@
namespace App\Http\Transformers; namespace App\Http\Transformers;
use App\Helpers\Helper; use App\Helpers\Helper;
use App\Models\Accessory;
use App\Models\AccessoryCheckout;
use App\Models\Asset; use App\Models\Asset;
use App\Models\Setting; use App\Models\Setting;
use Illuminate\Support\Facades\Gate; use Illuminate\Support\Facades\Gate;
use Illuminate\Database\Eloquent\Collection; use Illuminate\Database\Eloquent\Collection;
use Carbon\Carbon; use Carbon\Carbon;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Storage;
class AssetsTransformer class AssetsTransformer
{ {
@ -225,7 +227,7 @@ class AssetsTransformer
public function transformRequestedAsset(Asset $asset) public function transformRequestedAsset(Asset $asset)
{ {
$array = [ $array = [
'id' => (int) $asset->id, 'id' => (int)$asset->id,
'name' => e($asset->name), 'name' => e($asset->name),
'asset_tag' => e($asset->asset_tag), 'asset_tag' => e($asset->asset_tag),
'serial' => e($asset->serial), 'serial' => e($asset->serial),
@ -234,7 +236,7 @@ class AssetsTransformer
'model_number' => (($asset->model) && ($asset->model->model_number)) ? e($asset->model->model_number) : null, 'model_number' => (($asset->model) && ($asset->model->model_number)) ? e($asset->model->model_number) : null,
'expected_checkin' => Helper::getFormattedDateObject($asset->expected_checkin, 'date'), 'expected_checkin' => Helper::getFormattedDateObject($asset->expected_checkin, 'date'),
'location' => ($asset->location) ? e($asset->location->name) : null, 'location' => ($asset->location) ? e($asset->location->name) : null,
'status'=> ($asset->assetstatus) ? $asset->present()->statusMeta : null, 'status' => ($asset->assetstatus) ? $asset->present()->statusMeta : null,
'assigned_to_self' => ($asset->assigned_to == auth()->id()), 'assigned_to_self' => ($asset->assigned_to == auth()->id()),
]; ];
@ -244,7 +246,7 @@ class AssetsTransformer
foreach ($asset->model->fieldset->fields as $field) { foreach ($asset->model->fieldset->fields as $field) {
// Only display this if it's allowed via the custom field setting // Only display this if it's allowed via the custom field setting
if (($field->field_encrypted=='0') && ($field->show_in_requestable_list=='1')) { if (($field->field_encrypted == '0') && ($field->show_in_requestable_list == '1')) {
$value = $asset->{$field->db_column}; $value = $asset->{$field->db_column};
if (($field->format == 'DATE') && (!is_null($value)) && ($value != '')) { if (($field->format == 'DATE') && (!is_null($value)) && ($value != '')) {
@ -268,7 +270,61 @@ class AssetsTransformer
$array += $permissions_array; $array += $permissions_array;
return $array; return $array;
} }
public function transformAssetCompact(Asset $asset)
{
$array = [
'id' => (int) $asset->id,
'image' => ($asset->getImageUrl()) ? $asset->getImageUrl() : null,
'type' => 'asset',
'name' => e($asset->present()->fullName()),
'model' => ($asset->model) ? e($asset->model->name) : null,
'model_number' => (($asset->model) && ($asset->model->model_number)) ? e($asset->model->model_number) : null,
'asset_tag' => e($asset->asset_tag),
'serial' => e($asset->serial),
];
return $array;
}
public function transformCheckedoutAccessories($accessory_checkouts, $total)
{
$array = [];
foreach ($accessory_checkouts as $checkout) {
$array[] = self::transformCheckedoutAccessory($checkout);
}
return (new DatatablesTransformer)->transformDatatables($array, $total);
}
public function transformCheckedoutAccessory(AccessoryCheckout $accessory_checkout)
{
$array = [
'id' => $accessory_checkout->id,
'accessory' => [
'id' => $accessory_checkout->accessory->id,
'name' => $accessory_checkout->accessory->name,
],
'image' => ($accessory_checkout->accessory->image) ? Storage::disk('public')->url('accessories/'.e($accessory_checkout->accessory->image)) : null,
'note' => $accessory_checkout->note ? e($accessory_checkout->note) : null,
'created_by' => $accessory_checkout->adminuser ? [
'id' => (int) $accessory_checkout->adminuser->id,
'name'=> e($accessory_checkout->adminuser->present()->fullName),
]: null,
'created_at' => Helper::getFormattedDateObject($accessory_checkout->created_at, 'datetime'),
];
$permissions_array['available_actions'] = [
'checkout' => false,
'checkin' => Gate::allows('checkin', Accessory::class),
];
$array += $permissions_array;
return $array;
}
} }

View file

@ -3,6 +3,8 @@
namespace App\Http\Transformers; namespace App\Http\Transformers;
use App\Helpers\Helper; use App\Helpers\Helper;
use App\Models\Accessory;
use App\Models\AccessoryCheckout;
use App\Models\Location; use App\Models\Location;
use Illuminate\Support\Facades\Gate; use Illuminate\Support\Facades\Gate;
use Illuminate\Database\Eloquent\Collection; use Illuminate\Database\Eloquent\Collection;
@ -45,6 +47,8 @@ class LocationsTransformer
'zip' => ($location->zip) ? e($location->zip) : null, 'zip' => ($location->zip) ? e($location->zip) : null,
'phone' => ($location->phone!='') ? e($location->phone): null, 'phone' => ($location->phone!='') ? e($location->phone): null,
'fax' => ($location->fax!='') ? e($location->fax): null, 'fax' => ($location->fax!='') ? e($location->fax): null,
'accessories_count' => (int) $location->accessories_count,
'assigned_accessories_count' => (int) $location->assigned_accessories_count,
'assigned_assets_count' => (int) $location->assigned_assets_count, 'assigned_assets_count' => (int) $location->assigned_assets_count,
'assets_count' => (int) $location->assets_count, 'assets_count' => (int) $location->assets_count,
'rtd_assets_count' => (int) $location->rtd_assets_count, 'rtd_assets_count' => (int) $location->rtd_assets_count,
@ -76,4 +80,75 @@ class LocationsTransformer
return $array; return $array;
} }
} }
public function transformCheckedoutAccessories($accessory_checkouts, $total)
{
$array = [];
foreach ($accessory_checkouts as $checkout) {
$array[] = self::transformCheckedoutAccessory($checkout);
}
return (new DatatablesTransformer)->transformDatatables($array, $total);
}
public function transformCheckedoutAccessory(AccessoryCheckout $accessory_checkout)
{
$array = [
'id' => $accessory_checkout->id,
'accessory' => [
'id' => $accessory_checkout->accessory->id,
'name' => $accessory_checkout->accessory->name,
],
'image' => ($accessory_checkout->accessory->image) ? Storage::disk('public')->url('accessories/'.e($accessory_checkout->accessory->image)) : null,
'note' => $accessory_checkout->note ? e($accessory_checkout->note) : null,
'created_by' => $accessory_checkout->adminuser ? [
'id' => (int) $accessory_checkout->adminuser->id,
'name'=> e($accessory_checkout->adminuser->present()->fullName),
]: null,
'created_at' => Helper::getFormattedDateObject($accessory_checkout->created_at, 'datetime'),
];
$permissions_array['available_actions'] = [
'checkout' => false,
'checkin' => Gate::allows('checkin', Accessory::class),
];
$array += $permissions_array;
return $array;
}
/**
* This gives a compact view of the location data without any additional relational queries,
* allowing us to 1) deliver a smaller payload and 2) avoid additional queries on relations that
* have not been easy/lazy loaded already
*
* @param Location $location
* @return array
* @throws \Exception
*/
public function transformLocationCompact(Location $location = null)
{
if ($location) {
$array = [
'id' => (int) $location->id,
'image' => ($location->image) ? Storage::disk('public')->url('locations/'.e($location->image)) : null,
'type' => "location",
'name' => e($location->name),
'created_by' => $location->adminuser ? [
'id' => (int) $location->adminuser->id,
'name'=> e($location->adminuser->present()->fullName),
]: null,
'created_at' => Helper::getFormattedDateObject($location->created_at, 'datetime'),
];
return $array;
}
}
} }

View file

@ -3,6 +3,7 @@
namespace App\Http\Transformers; namespace App\Http\Transformers;
use App\Helpers\Helper; use App\Helpers\Helper;
use App\Models\Asset;
use App\Models\PredefinedKit; use App\Models\PredefinedKit;
use App\Models\SnipeModel; use App\Models\SnipeModel;
use Illuminate\Support\Facades\Gate; use Illuminate\Support\Facades\Gate;
@ -42,7 +43,7 @@ class PredefinedKitsTransformer
$permissions_array['available_actions'] = [ $permissions_array['available_actions'] = [
'update' => Gate::allows('update', PredefinedKit::class), 'update' => Gate::allows('update', PredefinedKit::class),
'delete' => Gate::allows('delete', PredefinedKit::class), 'delete' => Gate::allows('delete', PredefinedKit::class),
'checkout' => Gate::allows('checkout', PredefinedKit::class), 'checkout' => Gate::allows('checkout', Asset::class),
// 'clone' => Gate::allows('create', PredefinedKit::class), // 'clone' => Gate::allows('create', PredefinedKit::class),
// 'restore' => Gate::allows('create', PredefinedKit::class), // 'restore' => Gate::allows('create', PredefinedKit::class),
]; ];

View file

@ -4,8 +4,8 @@ namespace App\Http\Transformers;
use App\Helpers\Helper; use App\Helpers\Helper;
use App\Models\User; use App\Models\User;
use Illuminate\Support\Facades\Gate;
use Illuminate\Database\Eloquent\Collection; use Illuminate\Database\Eloquent\Collection;
use Illuminate\Support\Facades\Gate;
class UsersTransformer class UsersTransformer
{ {
@ -106,6 +106,37 @@ class UsersTransformer
return $array; return $array;
} }
/**
* This gives a compact view of the user data without any additional relational queries,
* allowing us to 1) deliver a smaller payload and 2) avoid additional queries on relations that
* have not been easy/lazy loaded already
*
* @param User $user
* @return array
* @throws \Exception
*/
public function transformUserCompact(User $user) : array
{
$array = [
'id' => (int) $user->id,
'image' => e($user->present()->gravatar) ?? null,
'type' => 'user',
'name' => e($user->getFullNameAttribute()),
'first_name' => e($user->first_name),
'last_name' => e($user->last_name),
'username' => e($user->username),
'created_by' => $user->adminuser ? [
'id' => (int) $user->adminuser->id,
'name'=> e($user->adminuser->present()->fullName),
]: null,
'created_at' => Helper::getFormattedDateObject($user->created_at, 'datetime'),
'deleted_at' => ($user->deleted_at) ? Helper::getFormattedDateObject($user->deleted_at, 'datetime') : null,
];
return $array;
}
public function transformUsersDatatable($users) public function transformUsersDatatable($users)
{ {
return (new DatatablesTransformer)->transformDatatables($users); return (new DatatablesTransformer)->transformDatatables($users);

View file

@ -22,7 +22,14 @@ class AccessoryCheckout extends Model
{ {
use Searchable; use Searchable;
protected $fillable = ['created_by', 'accessory_id', 'assigned_to', 'assigned_type', 'note']; protected $fillable = [
'accessory_id',
'assigned_to',
'assigned_type',
'note'
];
protected $presenter = \App\Presenters\AccessoryPresenter::class;
protected $table = 'accessories_checkout'; protected $table = 'accessories_checkout';
/** /**
@ -34,9 +41,13 @@ class AccessoryCheckout extends Model
*/ */
public function accessory() public function accessory()
{ {
return $this->hasOne(\App\Models\Accessory::class, 'accessory_id'); return $this->hasOne(Accessory::class, 'id', 'accessory_id');
} }
public function accessories()
{
return $this->hasMany(Accessory::class, 'id', 'accessory_id');
}
/** /**
* Establishes the accessory checkout -> user relationship * Establishes the accessory checkout -> user relationship
* *
@ -44,9 +55,9 @@ class AccessoryCheckout extends Model
* @since [v7.0.9] * @since [v7.0.9]
* @return \Illuminate\Database\Eloquent\Relations\Relation * @return \Illuminate\Database\Eloquent\Relations\Relation
*/ */
public function user() public function adminuser()
{ {
return $this->hasOne(\App\Models\User::class, 'user_id'); return $this->hasOne(\App\Models\User::class, 'created_by');
} }
/** /**
@ -76,7 +87,7 @@ class AccessoryCheckout extends Model
/** /**
* Determines whether the accessory is checked out to a user * Determines whether the accessory is checked out to a user
* *
* Even though we allow allow for checkout to things beyond users * Even though we allow for checkout to things beyond users
* this method is an easy way of seeing if we are checked out to a user. * this method is an easy way of seeing if we are checked out to a user.
* *
* @author [A. Kroeger] * @author [A. Kroeger]
@ -84,7 +95,17 @@ class AccessoryCheckout extends Model
*/ */
public function checkedOutToUser(): bool public function checkedOutToUser(): bool
{ {
return $this->assignedType() === Asset::USER; return $this->assigned_type == User::class;
}
public function checkedOutToLocation(): bool
{
return $this->assigned_type == Location::class;
}
public function checkedOutToAsset(): bool
{
return $this->assigned_type == Asset::class;
} }
public function scopeUserAssigned(Builder $query): void public function scopeUserAssigned(Builder $query): void
@ -92,6 +113,16 @@ class AccessoryCheckout extends Model
$query->where('assigned_type', '=', User::class); $query->where('assigned_type', '=', User::class);
} }
public function scopeLocationAssigned(Builder $query): void
{
$query->where('assigned_type', '=', Location::class);
}
public function scopeAssetAssigned(Builder $query): void
{
$query->where('assigned_type', '=', Asset::class);
}
/** /**
* Run additional, advanced searches. * Run additional, advanced searches.
* *

View file

@ -253,6 +253,18 @@ class Location extends SnipeModel
return $this->morphMany(\App\Models\Asset::class, 'assigned', 'assigned_type', 'assigned_to')->withTrashed(); return $this->morphMany(\App\Models\Asset::class, 'assigned', 'assigned_type', 'assigned_to')->withTrashed();
} }
/**
* Establishes the accessory -> location assignment relationship
*
* @author A. Gianotto <snipe@snipe.net>
* @since [v3.0]
* @return \Illuminate\Database\Eloquent\Relations\Relation
*/
public function assignedAccessories()
{
return $this->morphMany(\App\Models\AccessoryCheckout::class, 'assigned', 'assigned_type', 'assigned_to');
}
public function setLdapOuAttribute($ldap_ou) public function setLdapOuAttribute($ldap_ou)
{ {
return $this->attributes['ldap_ou'] = empty($ldap_ou) ? null : $ldap_ou; return $this->attributes['ldap_ou'] = empty($ldap_ou) ? null : $ldap_ou;

View file

@ -333,6 +333,7 @@ class User extends SnipeModel implements AuthenticatableContract, AuthorizableCo
public function accessories() public function accessories()
{ {
return $this->belongsToMany(\App\Models\Accessory::class, 'accessories_checkout', 'assigned_to', 'accessory_id') return $this->belongsToMany(\App\Models\Accessory::class, 'accessories_checkout', 'assigned_to', 'accessory_id')
->where('assigned_type', '=', 'App\Models\User')
->withPivot('id', 'created_at', 'note')->withTrashed()->orderBy('accessory_id'); ->withPivot('id', 'created_at', 'note')->withTrashed()->orderBy('accessory_id');
} }

View file

@ -158,7 +158,7 @@ class AccessoryPresenter extends Presenter
'title' => trans('general.change'), 'title' => trans('general.change'),
'formatter' => 'accessoriesInOutFormatter', 'formatter' => 'accessoriesInOutFormatter',
], [ ], [
'field' => 'actions', 'field' => 'available_actions',
'searchable' => false, 'searchable' => false,
'sortable' => false, 'sortable' => false,
'switchable' => false, 'switchable' => false,
@ -170,6 +170,74 @@ class AccessoryPresenter extends Presenter
return json_encode($layout); return json_encode($layout);
} }
public static function assignedDataTableLayout()
{
$layout = [
[
'field' => 'id',
'searchable' => false,
'sortable' => false,
'switchable' => true,
'title' => trans('general.id'),
'visible' => false,
],
[
'field' => 'assigned_to.image',
'searchable' => false,
'sortable' => false,
'switchable' => true,
'title' => trans('general.image'),
'visible' => true,
'formatter' => 'imageFormatter',
],
[
'field' => 'assigned_to',
'searchable' => false,
'sortable' => false,
'switchable' => true,
'title' => trans('general.checked_out_to'),
'visible' => true,
'formatter' => 'polymorphicItemFormatter',
],
[
'field' => 'note',
'searchable' => false,
'sortable' => false,
'switchable' => true,
'title' => trans('general.notes'),
'visible' => true,
],
[
'field' => 'created_at',
'searchable' => false,
'sortable' => false,
'switchable' => true,
'title' => trans('admin/hardware/table.checkout_date'),
'visible' => true,
'formatter' => 'dateDisplayFormatter',
],
[
'field' => 'created_by',
'searchable' => false,
'sortable' => false,
'title' => trans('general.admin'),
'visible' => false,
'formatter' => 'usersLinkObjFormatter',
],
[
'field' => 'available_actions',
'searchable' => false,
'sortable' => false,
'switchable' => false,
'title' => trans('table.actions'),
'formatter' => 'accessoriesInOutFormatter',
],
];
return json_encode($layout);
}
/** /**
* Pregenerated link to this accessories view page. * Pregenerated link to this accessories view page.
* @return string * @return string

View file

@ -18,16 +18,14 @@ class LocationPresenter extends Presenter
'field' => 'bulk_selectable', 'field' => 'bulk_selectable',
'checkbox' => true, 'checkbox' => true,
'formatter' => 'checkboxEnabledFormatter', 'formatter' => 'checkboxEnabledFormatter',
], ], [
[
'field' => 'id', 'field' => 'id',
'searchable' => false, 'searchable' => false,
'sortable' => true, 'sortable' => true,
'switchable' => true, 'switchable' => true,
'title' => trans('general.id'), 'title' => trans('general.id'),
'visible' => false, 'visible' => false,
], ], [
[
'field' => 'name', 'field' => 'name',
'searchable' => true, 'searchable' => true,
'sortable' => true, 'sortable' => true,
@ -35,8 +33,7 @@ class LocationPresenter extends Presenter
'title' => trans('admin/locations/table.name'), 'title' => trans('admin/locations/table.name'),
'visible' => true, 'visible' => true,
'formatter' => 'locationsLinkFormatter', 'formatter' => 'locationsLinkFormatter',
], ], [
[
'field' => 'image', 'field' => 'image',
'searchable' => false, 'searchable' => false,
'sortable' => true, 'sortable' => true,
@ -44,8 +41,7 @@ class LocationPresenter extends Presenter
'title' => trans('general.image'), 'title' => trans('general.image'),
'visible' => true, 'visible' => true,
'formatter' => 'imageFormatter', 'formatter' => 'imageFormatter',
], ], [
[
'field' => 'parent', 'field' => 'parent',
'searchable' => false, 'searchable' => false,
'sortable' => true, 'sortable' => true,
@ -53,100 +49,111 @@ class LocationPresenter extends Presenter
'title' => trans('admin/locations/table.parent'), 'title' => trans('admin/locations/table.parent'),
'visible' => true, 'visible' => true,
'formatter' => 'locationsLinkObjFormatter', 'formatter' => 'locationsLinkObjFormatter',
], ], [
[
'field' => 'assets_count', 'field' => 'assets_count',
'searchable' => false, 'searchable' => false,
'sortable' => true, 'sortable' => true,
'switchable' => true, 'switchable' => true,
'title' => trans('admin/locations/message.current_location'), 'title' => trans('admin/locations/message.current_location'),
'visible' => true, 'visible' => true,
], ], [
[
'field' => 'rtd_assets_count', 'field' => 'rtd_assets_count',
'searchable' => false, 'searchable' => false,
'sortable' => true, 'sortable' => true,
'switchable' => true, 'switchable' => true,
'title' => trans('admin/hardware/form.default_location'), 'title' => trans('admin/hardware/form.default_location'),
'titleTooltip' => trans('admin/hardware/form.default_location'),
'tooltip' => 'true',
'visible' => false, 'visible' => false,
], 'class' => 'css-house-flag',
], [
[
'field' => 'assigned_assets_count', 'field' => 'assigned_assets_count',
'searchable' => false, 'searchable' => false,
'sortable' => true, 'sortable' => true,
'switchable' => true, 'switchable' => true,
'title' => trans('admin/locations/message.assigned_assets'), 'title' => trans('admin/locations/message.assigned_assets'),
'titleTooltip' => trans('admin/locations/message.assigned_assets'),
'visible' => true, 'visible' => true,
], 'class' => 'css-house-laptop',
], [
[ 'field' => 'accessories_count',
'searchable' => false,
'sortable' => true,
'switchable' => true,
'title' => trans('general.accessories'),
'titleTooltip' => trans('general.accessories'),
'visible' => true,
'class' => 'css-accessory',
], [
'field' => 'assigned_accessories_count',
'searchable' => false,
'sortable' => true,
'switchable' => true,
'title' => trans('general.accessories_assigned'),
'titleTooltip' => trans('general.accessories_assigned'),
'visible' => true,
'class' => 'css-accessory-alt',
], [
'field' => 'users_count', 'field' => 'users_count',
'searchable' => false, 'searchable' => false,
'sortable' => true, 'sortable' => true,
'switchable' => true, 'switchable' => true,
'title' => trans('general.people'), 'title' => trans('general.people'),
'titleTooltip' => trans('general.people'),
'visible' => true, 'visible' => true,
], 'class' => 'css-house-user',
[ // 'data-tooltip' => true, - not working, but I want to try to use regular tooltips here
], [
'field' => 'currency', 'field' => 'currency',
'searchable' => true, 'searchable' => true,
'sortable' => true, 'sortable' => true,
'switchable' => true, 'switchable' => true,
'title' => trans('general.currency'), 'title' => trans('general.currency'),
'visible' => true, 'visible' => true,
], 'class' => 'css-currency',
[ ], [
'field' => 'address', 'field' => 'address',
'searchable' => true, 'searchable' => true,
'sortable' => true, 'sortable' => true,
'switchable' => true, 'switchable' => true,
'title' => trans('admin/locations/table.address'), 'title' => trans('admin/locations/table.address'),
'visible' => true, 'visible' => true,
], ], [
[
'field' => 'address2', 'field' => 'address2',
'searchable' => true, 'searchable' => true,
'sortable' => true, 'sortable' => true,
'switchable' => true, 'switchable' => true,
'title' => trans('admin/locations/table.address2'), 'title' => trans('admin/locations/table.address2'),
'visible' => false, 'visible' => false,
], ], [
[
'field' => 'city', 'field' => 'city',
'searchable' => true, 'searchable' => true,
'sortable' => true, 'sortable' => true,
'switchable' => true, 'switchable' => true,
'title' => trans('admin/locations/table.city'), 'title' => trans('admin/locations/table.city'),
'visible' => true, 'visible' => true,
], ], [
[
'field' => 'state', 'field' => 'state',
'searchable' => true, 'searchable' => true,
'sortable' => true, 'sortable' => true,
'switchable' => true, 'switchable' => true,
'title' => trans('admin/locations/table.state'), 'title' => trans('admin/locations/table.state'),
'visible' => true, 'visible' => true,
], ], [
[
'field' => 'zip', 'field' => 'zip',
'searchable' => true, 'searchable' => true,
'sortable' => true, 'sortable' => true,
'switchable' => true, 'switchable' => true,
'title' => trans('admin/locations/table.zip'), 'title' => trans('admin/locations/table.zip'),
'visible' => false, 'visible' => false,
], ], [
[
'field' => 'country', 'field' => 'country',
'searchable' => true, 'searchable' => true,
'sortable' => true, 'sortable' => true,
'switchable' => true, 'switchable' => true,
'title' => trans('admin/locations/table.country'), 'title' => trans('admin/locations/table.country'),
'visible' => false, 'visible' => false,
], ], [
[
'field' => 'phone', 'field' => 'phone',
'searchable' => true, 'searchable' => true,
'sortable' => true, 'sortable' => true,
@ -154,8 +161,7 @@ class LocationPresenter extends Presenter
'title' => trans('admin/users/table.phone'), 'title' => trans('admin/users/table.phone'),
'visible' => false, 'visible' => false,
'formatter' => 'phoneFormatter', 'formatter' => 'phoneFormatter',
], ], [
[
'field' => 'fax', 'field' => 'fax',
'searchable' => true, 'searchable' => true,
'sortable' => true, 'sortable' => true,
@ -163,16 +169,14 @@ class LocationPresenter extends Presenter
'title' => trans('admin/suppliers/table.fax'), 'title' => trans('admin/suppliers/table.fax'),
'visible' => false, 'visible' => false,
'formatter' => 'phoneFormatter', 'formatter' => 'phoneFormatter',
], ], [
[
'field' => 'ldap_ou', 'field' => 'ldap_ou',
'searchable' => true, 'searchable' => true,
'sortable' => true, 'sortable' => true,
'switchable' => true, 'switchable' => true,
'title' => trans('admin/locations/table.ldap_ou'), 'title' => trans('admin/locations/table.ldap_ou'),
'visible' => false, 'visible' => false,
], ], [
[
'field' => 'manager', 'field' => 'manager',
'searchable' => false, 'searchable' => false,
'sortable' => true, 'sortable' => true,
@ -180,9 +184,7 @@ class LocationPresenter extends Presenter
'title' => trans('admin/users/table.manager'), 'title' => trans('admin/users/table.manager'),
'visible' => false, 'visible' => false,
'formatter' => 'usersLinkObjFormatter', 'formatter' => 'usersLinkObjFormatter',
], ], [
[
'field' => 'created_at', 'field' => 'created_at',
'searchable' => true, 'searchable' => true,
'sortable' => true, 'sortable' => true,
@ -190,9 +192,7 @@ class LocationPresenter extends Presenter
'title' => trans('general.created_at'), 'title' => trans('general.created_at'),
'visible' => false, 'visible' => false,
'formatter' => 'dateDisplayFormatter', 'formatter' => 'dateDisplayFormatter',
], ], [
[
'field' => 'actions', 'field' => 'actions',
'searchable' => false, 'searchable' => false,
'sortable' => false, 'sortable' => false,
@ -206,6 +206,73 @@ class LocationPresenter extends Presenter
return json_encode($layout); return json_encode($layout);
} }
public static function assignedAccessoriesDataTableLayout()
{
$layout = [
[
'field' => 'id',
'searchable' => false,
'sortable' => false,
'switchable' => true,
'title' => trans('general.id'),
'visible' => false,
],
[
'field' => 'accessory',
'searchable' => false,
'sortable' => false,
'switchable' => true,
'title' => trans('general.accessory'),
'visible' => true,
'formatter' => 'accessoriesLinkObjFormatter',
],
[
'field' => 'image',
'searchable' => false,
'sortable' => false,
'switchable' => true,
'title' => trans('general.image'),
'visible' => true,
'formatter' => 'imageFormatter',
],
[
'field' => 'note',
'searchable' => false,
'sortable' => false,
'switchable' => true,
'title' => trans('general.notes'),
'visible' => true,
],
[
'field' => 'created_at',
'searchable' => false,
'sortable' => false,
'switchable' => true,
'title' => trans('admin/hardware/table.checkout_date'),
'visible' => true,
'formatter' => 'dateDisplayFormatter',
],
[
'field' => 'created_by',
'searchable' => false,
'sortable' => false,
'title' => trans('general.admin'),
'visible' => false,
'formatter' => 'usersLinkObjFormatter',
],
[
'field' => 'available_actions',
'searchable' => false,
'sortable' => false,
'switchable' => false,
'title' => trans('table.actions'),
'formatter' => 'accessoriesInOutFormatter',
],
];
return json_encode($layout);
}
/** /**
* Link to this locations name * Link to this locations name
* @return string * @return string

View file

@ -163,7 +163,7 @@ class AccessoryFactory extends Factory
$accessory->checkouts()->create([ $accessory->checkouts()->create([
'accessory_id' => $accessory->id, 'accessory_id' => $accessory->id,
'created_at' => Carbon::now(), 'created_at' => Carbon::now(),
'user_id' => 1, 'created_by' => 1,
'assigned_to' => $user->id, 'assigned_to' => $user->id,
'assigned_type' => User::class, 'assigned_type' => User::class,
]); ]);

View file

@ -23,6 +23,7 @@ class GroupFactory extends Factory
{ {
return [ return [
'name' => $this->faker->name(), 'name' => $this->faker->name(),
'permissions' => json_encode([]),
]; ];
} }
} }

View file

@ -0,0 +1,46 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
use Illuminate\Support\Facades\DB;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up()
{
// Copy values if target columns are blank
DB::table('settings')->whereNull('label2_2d_type')->orWhere('label2_2d_type', '')->update([
'label2_2d_type' => DB::raw('barcode_type')
]);
DB::table('settings')->whereNull('label2_1d_type')->orWhere('label2_1d_type', '')->update([
'label2_1d_type' => DB::raw('alt_barcode')
]);
Schema::table('settings', function (Blueprint $table) {
$table->dropColumn(['barcode_type', 'alt_barcode']);
});
}
public function down()
{
Schema::table('settings', function (Blueprint $table) {
// Re-add the columns that were dropped in case of rollback
$table->string('barcode_type')->nullable();
$table->string('alt_barcode')->nullable();
});
DB::table('settings')->whereNull('barcode_type')->orWhere('barcode_type', '')->update([
'barcode_type' => DB::raw('label2_2d_type')
]);
DB::table('settings')->whereNull('alt_barcode')->orWhere('alt_barcode', '')->update([
'alt_barcode' => DB::raw('label2_1d_type')
]);
}
};

View file

@ -19,12 +19,12 @@ class SettingsSeeder extends Seeder
$settings->logo = 'snipe-logo.png'; $settings->logo = 'snipe-logo.png';
$settings->alert_email = 'service@snipe-it.io'; $settings->alert_email = 'service@snipe-it.io';
$settings->header_color = null; $settings->header_color = null;
$settings->barcode_type = 'QRCODE'; $settings->label2_2d_type = 'QRCODE';
$settings->default_currency = 'USD'; $settings->default_currency = 'USD';
$settings->brand = 3; $settings->brand = 3;
$settings->ldap_enabled = 0; $settings->ldap_enabled = 0;
$settings->full_multiple_companies_support = 0; $settings->full_multiple_companies_support = 0;
$settings->alt_barcode = 'C128'; $settings->label2_1d_type = 'C128';
$settings->skin = ''; $settings->skin = '';
$settings->email_domain = 'example.org'; $settings->email_domain = 'example.org';
$settings->email_format = 'filastname'; $settings->email_format = 'filastname';

8
package-lock.json generated
View file

@ -5,7 +5,7 @@
"packages": { "packages": {
"": { "": {
"dependencies": { "dependencies": {
"@fortawesome/fontawesome-free": "^6.6.0", "@fortawesome/fontawesome-free": "^6.7.1",
"acorn": "^8.12.0", "acorn": "^8.12.0",
"acorn-import-assertions": "^1.9.0", "acorn-import-assertions": "^1.9.0",
"admin-lte": "^2.4.18", "admin-lte": "^2.4.18",
@ -1919,9 +1919,9 @@
} }
}, },
"node_modules/@fortawesome/fontawesome-free": { "node_modules/@fortawesome/fontawesome-free": {
"version": "6.6.0", "version": "6.7.1",
"resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.6.0.tgz", "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.7.1.tgz",
"integrity": "sha512-60G28ke/sXdtS9KZCpZSHHkCbdsOGEhIUGlwq6yhY74UpTiToIh8np7A8yphhM4BWsvNFtIvLpi4co+h9Mr9Ow==", "integrity": "sha512-ALIk/MOh5gYe1TG/ieS5mVUsk7VUIJTJKPMK9rFFqOgfp0Q3d5QiBXbcOMwUvs37fyZVCz46YjOE6IFeOAXCHA==",
"engines": { "engines": {
"node": ">=6" "node": ">=6"
} }

View file

@ -25,7 +25,7 @@
"postcss": "^8.4.5" "postcss": "^8.4.5"
}, },
"dependencies": { "dependencies": {
"@fortawesome/fontawesome-free": "^6.6.0", "@fortawesome/fontawesome-free": "^6.7.1",
"acorn": "^8.12.0", "acorn": "^8.12.0",
"acorn-import-assertions": "^1.9.0", "acorn-import-assertions": "^1.9.0",
"admin-lte": "^2.4.18", "admin-lte": "^2.4.18",

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,9 +1,9 @@
{ {
"/js/build/app.js": "/js/build/app.js?id=5572f3bd32a6131651ab3022edd76941", "/js/build/app.js": "/js/build/app.js?id=6d4d575774a1be993efe0598cc6b1c20",
"/css/dist/skins/skin-black-dark.css": "/css/dist/skins/skin-black-dark.css?id=d34ae2483cbe2c77478c45f4006eba55", "/css/dist/skins/skin-black-dark.css": "/css/dist/skins/skin-black-dark.css?id=d34ae2483cbe2c77478c45f4006eba55",
"/css/dist/skins/_all-skins.css": "/css/dist/skins/_all-skins.css?id=b1c78591f51b52beab05b52f407ad6e6", "/css/dist/skins/_all-skins.css": "/css/dist/skins/_all-skins.css?id=b1c78591f51b52beab05b52f407ad6e6",
"/css/build/overrides.css": "/css/build/overrides.css?id=b1146d30456ed95c3d4a9b60ddc58313", "/css/build/overrides.css": "/css/build/overrides.css?id=10d3f63eef985a3df55e66506af9b23f",
"/css/build/app.css": "/css/build/app.css?id=e5f692af9dd2c217455ad87e520ef32a", "/css/build/app.css": "/css/build/app.css?id=6e3067fde8016a951134eee87737b831",
"/css/build/AdminLTE.css": "/css/build/AdminLTE.css?id=a67bd93bed52e6a29967fe472de66d6c", "/css/build/AdminLTE.css": "/css/build/AdminLTE.css?id=a67bd93bed52e6a29967fe472de66d6c",
"/css/dist/skins/skin-yellow.css": "/css/dist/skins/skin-yellow.css?id=fc7adb943668ac69fe4b646625a7571f", "/css/dist/skins/skin-yellow.css": "/css/dist/skins/skin-yellow.css?id=fc7adb943668ac69fe4b646625a7571f",
"/css/dist/skins/skin-yellow-dark.css": "/css/dist/skins/skin-yellow-dark.css?id=53edc92eb2d272744bc7404ec259930e", "/css/dist/skins/skin-yellow-dark.css": "/css/dist/skins/skin-yellow-dark.css?id=53edc92eb2d272744bc7404ec259930e",
@ -19,7 +19,7 @@
"/css/dist/skins/skin-blue.css": "/css/dist/skins/skin-blue.css?id=392cc93cfc0be0349bab9697669dd091", "/css/dist/skins/skin-blue.css": "/css/dist/skins/skin-blue.css?id=392cc93cfc0be0349bab9697669dd091",
"/css/dist/skins/skin-blue-dark.css": "/css/dist/skins/skin-blue-dark.css?id=18787b3f00a3be7be38ee4e26cbd2a07", "/css/dist/skins/skin-blue-dark.css": "/css/dist/skins/skin-blue-dark.css?id=18787b3f00a3be7be38ee4e26cbd2a07",
"/css/dist/skins/skin-black.css": "/css/dist/skins/skin-black.css?id=1f33ca3d860461c1127ec465ab3ebb6b", "/css/dist/skins/skin-black.css": "/css/dist/skins/skin-black.css?id=1f33ca3d860461c1127ec465ab3ebb6b",
"/css/dist/all.css": "/css/dist/all.css?id=fa28de72acfa72bfdd7ad4206a65d4eb", "/css/dist/all.css": "/css/dist/all.css?id=72da33da732e29f66595d0acce3ece3f",
"/css/dist/signature-pad.css": "/css/dist/signature-pad.css?id=6a89d3cd901305e66ced1cf5f13147f7", "/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", "/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", "/js/select2/i18n/af.js": "/js/select2/i18n/af.js?id=4f6fcd73488ce79fae1b7a90aceaecde",
@ -90,8 +90,8 @@
"/css/webfonts/fa-solid-900.woff2": "/css/webfonts/fa-solid-900.woff2?id=541cafc702f56f57de95f3d1f792f428", "/css/webfonts/fa-solid-900.woff2": "/css/webfonts/fa-solid-900.woff2?id=541cafc702f56f57de95f3d1f792f428",
"/css/webfonts/fa-v4compatibility.ttf": "/css/webfonts/fa-v4compatibility.ttf?id=51ade19e1b10d7a0031b18568a2b01d5", "/css/webfonts/fa-v4compatibility.ttf": "/css/webfonts/fa-v4compatibility.ttf?id=51ade19e1b10d7a0031b18568a2b01d5",
"/css/webfonts/fa-v4compatibility.woff2": "/css/webfonts/fa-v4compatibility.woff2?id=1cc408d68a27c3757b4460bbc542433e", "/css/webfonts/fa-v4compatibility.woff2": "/css/webfonts/fa-v4compatibility.woff2?id=1cc408d68a27c3757b4460bbc542433e",
"/js/dist/bootstrap-table-locale-all.min.js": "/js/dist/bootstrap-table-locale-all.min.js?id=c5445e15be5ce91a9ffef05e08ad6898", "/js/dist/bootstrap-table-locale-all.min.js": "/js/dist/bootstrap-table-locale-all.min.js?id=467938d6a524df8e62c4fb8ae5e7f3f1",
"/js/dist/bootstrap-table-en-US.min.js": "/js/dist/bootstrap-table-en-US.min.js?id=0f6e85ae692d03a3b11cab445ff263ab", "/js/dist/bootstrap-table-en-US.min.js": "/js/dist/bootstrap-table-en-US.min.js?id=d4ef3db8dc9f809258218c187de5ee2a",
"/css/dist/skins/_all-skins.min.css": "/css/dist/skins/_all-skins.min.css?id=b1c78591f51b52beab05b52f407ad6e6", "/css/dist/skins/_all-skins.min.css": "/css/dist/skins/_all-skins.min.css?id=b1c78591f51b52beab05b52f407ad6e6",
"/css/dist/skins/skin-black-dark.min.css": "/css/dist/skins/skin-black-dark.min.css?id=d34ae2483cbe2c77478c45f4006eba55", "/css/dist/skins/skin-black-dark.min.css": "/css/dist/skins/skin-black-dark.min.css?id=d34ae2483cbe2c77478c45f4006eba55",
"/css/dist/skins/skin-black.min.css": "/css/dist/skins/skin-black.min.css?id=1f33ca3d860461c1127ec465ab3ebb6b", "/css/dist/skins/skin-black.min.css": "/css/dist/skins/skin-black.min.css?id=1f33ca3d860461c1127ec465ab3ebb6b",
@ -108,8 +108,8 @@
"/css/dist/skins/skin-red.min.css": "/css/dist/skins/skin-red.min.css?id=b9a74ec0cd68f83e7480d5ae39919beb", "/css/dist/skins/skin-red.min.css": "/css/dist/skins/skin-red.min.css?id=b9a74ec0cd68f83e7480d5ae39919beb",
"/css/dist/skins/skin-yellow-dark.min.css": "/css/dist/skins/skin-yellow-dark.min.css?id=53edc92eb2d272744bc7404ec259930e", "/css/dist/skins/skin-yellow-dark.min.css": "/css/dist/skins/skin-yellow-dark.min.css?id=53edc92eb2d272744bc7404ec259930e",
"/css/dist/skins/skin-yellow.min.css": "/css/dist/skins/skin-yellow.min.css?id=fc7adb943668ac69fe4b646625a7571f", "/css/dist/skins/skin-yellow.min.css": "/css/dist/skins/skin-yellow.min.css?id=fc7adb943668ac69fe4b646625a7571f",
"/css/dist/bootstrap-table.css": "/css/dist/bootstrap-table.css?id=c384582a6ba08903af353be861ffe74e", "/css/dist/bootstrap-table.css": "/css/dist/bootstrap-table.css?id=393d720a0f9aba560094fbc8d3b0c0f0",
"/js/build/vendor.js": "/js/build/vendor.js?id=89dffa552c6e3abe3a2aac6c9c7b466b", "/js/build/vendor.js": "/js/build/vendor.js?id=5269eb5a6beb74f03387c78938cf17b2",
"/js/dist/bootstrap-table.js": "/js/dist/bootstrap-table.js?id=b4c3069f1a292527a96c058b77b28d69", "/js/dist/bootstrap-table.js": "/js/dist/bootstrap-table.js?id=6660df122e24940d42d03c06775fec7b",
"/js/dist/all.js": "/js/dist/all.js?id=074c4b862b013dbffef2b075b6aae802" "/js/dist/all.js": "/js/dist/all.js?id=262c933ac5d4c02c006d9bd531896c7b"
} }

View file

@ -729,23 +729,27 @@ h4 {
any HTML used in the UserPresenter "title" attribute breaks the column selector HTML. any HTML used in the UserPresenter "title" attribute breaks the column selector HTML.
Instead, we use CSS to add the icon into the table header, which leaves the column selector Instead, we use CSS to add the icon into the table header, which leaves the column selector
"title" text as-is. "title" text as-is and hides the icon.
See https://github.com/snipe/snipe-it/issues/7989 See https://github.com/snipe/snipe-it/issues/7989
*/ */
th.css-accessory > .th-inner,
th.css-accessory-alt > .th-inner,
th.css-barcode > .th-inner, th.css-barcode > .th-inner,
th.css-license > .th-inner, th.css-component > .th-inner,
th.css-consumable > .th-inner, th.css-consumable > .th-inner,
th.css-envelope > .th-inner, th.css-envelope > .th-inner,
th.css-users > .th-inner, th.css-house-flag > .th-inner,
th.css-house-laptop > .th-inner,
th.css-house-user > .th-inner,
th.css-license > .th-inner,
th.css-location > .th-inner, th.css-location > .th-inner,
th.css-component > .th-inner, th.css-users > .th-inner,
th.css-accessory > .th-inner th.css-currency > .th-inner,
th.css-history > .th-inner
{ {
font-size: 0px; font-size: 0px;
line-height: .75!important; line-height: 0.75 !important;
text-align: left; text-align: left;
text-rendering: auto; text-rendering: auto;
-webkit-font-smoothing: antialiased; -webkit-font-smoothing: antialiased;
@ -753,16 +757,22 @@ th.css-accessory > .th-inner
} }
th.css-padlock > .th-inner::before, th.css-location > .th-inner::before,
th.css-accessory > .th-inner::before,
th.css-accessory-alt > .th-inner::before,
th.css-barcode > .th-inner::before, th.css-barcode > .th-inner::before,
th.css-license > .th-inner::before, th.css-component > .th-inner::before,
th.css-consumable > .th-inner::before, th.css-consumable > .th-inner::before,
th.css-envelope > .th-inner::before, th.css-envelope > .th-inner::before,
th.css-users > .th-inner::before, th.css-house-flag > .th-inner::before,
th.css-house-laptop > .th-inner::before,
th.css-house-user > .th-inner::before,
th.css-license > .th-inner::before,
th.css-location > .th-inner::before, th.css-location > .th-inner::before,
th.css-component > .th-inner::before, th.css-padlock > .th-inner::before,
th.css-accessory > .th-inner::before th.css-users > .th-inner::before,
th.css-currency > .th-inner::before,
th.css-history > .th-inner::before
{ {
display: inline-block; display: inline-block;
font-size: 20px; font-size: 20px;
@ -770,15 +780,6 @@ th.css-accessory > .th-inner::before
font-weight: 900; font-weight: 900;
} }
th.css-padlock > .th-inner::before
{
content: "\f023";
font-family: "Font Awesome 5 Free";
font-weight: 900;
padding-right: 4px;
font-size: 12px;
}
/** /**
BEGIN ICON TABLE HEADERS BEGIN ICON TABLE HEADERS
Set the font-weight css property as 900 (For Solid), 400 (Regular or Brands), 300 (Light for pro icons). Set the font-weight css property as 900 (For Solid), 400 (Regular or Brands), 300 (Light for pro icons).
@ -821,6 +822,50 @@ th.css-component > .th-inner::before
content: "\f0a0"; font-family: "Font Awesome 5 Free"; font-weight: 500; content: "\f0a0"; font-family: "Font Awesome 5 Free"; font-weight: 500;
} }
th.css-padlock > .th-inner::before
{
content: "\f023"; font-family: "Font Awesome 5 Free"; font-weight: 900;
}
th.css-house-user > .th-inner::before {
content: "\e1b0";
font-family: "Font Awesome 5 Free";
font-size: 19px;
margin-bottom: 0px;
}
th.css-house-flag > .th-inner::before {
content: "\e50d";
font-family: "Font Awesome 5 Free";
font-size: 19px;
margin-bottom: 0px;
}
th.css-house-laptop > .th-inner::before {
content: "\e066";
font-family: "Font Awesome 5 Free";
font-size: 19px;
margin-bottom: 0px;
}
th.css-accessory-alt > .th-inner::before {
content: "\f11c";
font-family: "Font Awesome 5 Free";
font-size: 19px;
margin-bottom: 0px;
}
th.css-currency > .th-inner::before {
content: "\24"; // change this to f51e for coins
font-family: "Font Awesome 5 Free";
font-size: 19px;
margin-bottom: 0px;
}
th.css-history > .th-inner::before {
content: "\f1da"; // change this to f51e for coins
font-family: "Font Awesome 5 Free";
font-size: 19px;
margin-bottom: 0px;
}
.small-box .inner { .small-box .inner {
padding-left: 15px; padding-left: 15px;

View file

@ -280,6 +280,8 @@ return [
'two_factor_enrollment_text' => "crwdns1791:0crwdne1791:0", 'two_factor_enrollment_text' => "crwdns1791:0crwdne1791:0",
'require_accept_signature' => 'crwdns1819:0crwdne1819:0', 'require_accept_signature' => 'crwdns1819:0crwdne1819:0',
'require_accept_signature_help_text' => 'crwdns1820:0crwdne1820:0', 'require_accept_signature_help_text' => 'crwdns1820:0crwdne1820:0',
'require_checkinout_notes' => 'crwdns12794:0crwdne12794:0',
'require_checkinout_notes_help_text' => 'crwdns12796:0crwdne12796:0',
'left' => 'crwdns1597:0crwdne1597:0', 'left' => 'crwdns1597:0crwdne1597:0',
'right' => 'crwdns1598:0crwdne1598:0', 'right' => 'crwdns1598:0crwdne1598:0',
'top' => 'crwdns1599:0crwdne1599:0', 'top' => 'crwdns1599:0crwdne1599:0',

View file

@ -280,6 +280,8 @@ return [
'two_factor_enrollment_text' => "Twee faktor verifikasie is nodig, maar jou toestel is nog nie ingeskryf nie. Maak jou Google Authenticator-program oop en scan die QR-kode hieronder om jou toestel in te skryf. Sodra jy jou toestel ingeskryf het, voer die kode hieronder in", 'two_factor_enrollment_text' => "Twee faktor verifikasie is nodig, maar jou toestel is nog nie ingeskryf nie. Maak jou Google Authenticator-program oop en scan die QR-kode hieronder om jou toestel in te skryf. Sodra jy jou toestel ingeskryf het, voer die kode hieronder in",
'require_accept_signature' => 'Vereis Handtekening', 'require_accept_signature' => 'Vereis Handtekening',
'require_accept_signature_help_text' => 'As u hierdie kenmerk aanskakel, sal gebruikers fisies moet afmeld wanneer hulle \'n bate aanvaar.', 'require_accept_signature_help_text' => 'As u hierdie kenmerk aanskakel, sal gebruikers fisies moet afmeld wanneer hulle \'n bate aanvaar.',
'require_checkinout_notes' => 'Require Notes on Checkin/Checkout',
'require_checkinout_notes_help_text' => 'Enabling this feature will require the note fields to be populated when checking in or checking out an asset.',
'left' => 'links', 'left' => 'links',
'right' => 'reg', 'right' => 'reg',
'top' => 'Top', 'top' => 'Top',

View file

@ -39,7 +39,7 @@ return [
'assets_warrantee_alert' => 'There is :count asset with a warranty expiring in the next :threshold days.|There are :count assets with warranties expiring in the next :threshold days.', 'assets_warrantee_alert' => 'There is :count asset with a warranty expiring in the next :threshold days.|There are :count assets with warranties expiring in the next :threshold days.',
'assigned_to' => 'Toevertrou aan', 'assigned_to' => 'Toevertrou aan',
'best_regards' => 'Beste wense,', 'best_regards' => 'Beste wense,',
'canceled' => 'gekanselleer', 'canceled' => 'Gekanselleer',
'checkin_date' => 'Incheckdatum', 'checkin_date' => 'Incheckdatum',
'checkout_date' => 'Checkout Datum', 'checkout_date' => 'Checkout Datum',
'checkedout_from' => 'Checked out from', 'checkedout_from' => 'Checked out from',

View file

@ -280,6 +280,8 @@ return [
'two_factor_enrollment_text' => "Two factor authentication is required, however your device has not been enrolled yet. Open your Google Authenticator app and scan the QR code below to enroll your device. Once you've enrolled your device, enter the code below", 'two_factor_enrollment_text' => "Two factor authentication is required, however your device has not been enrolled yet. Open your Google Authenticator app and scan the QR code below to enroll your device. Once you've enrolled your device, enter the code below",
'require_accept_signature' => 'Require Signature', 'require_accept_signature' => 'Require Signature',
'require_accept_signature_help_text' => 'Enabling this feature will require users to physically sign off on accepting an asset.', 'require_accept_signature_help_text' => 'Enabling this feature will require users to physically sign off on accepting an asset.',
'require_checkinout_notes' => 'Require Notes on Checkin/Checkout',
'require_checkinout_notes_help_text' => 'Enabling this feature will require the note fields to be populated when checking in or checking out an asset.',
'left' => 'left', 'left' => 'left',
'right' => 'right', 'right' => 'right',
'top' => 'top', 'top' => 'top',

View file

@ -10,8 +10,8 @@ return array(
'api_base_url_endpoint' => '/&lt;endpoint&gt;', 'api_base_url_endpoint' => '/&lt;endpoint&gt;',
'api_token_expiration_time' => 'تم تعيين رموز API لانتهاء صلاحيتها في:', 'api_token_expiration_time' => 'تم تعيين رموز API لانتهاء صلاحيتها في:',
'api_reference' => 'Please check the <a href="https://snipe-it.readme.io/reference" target="_blank">API reference</a> to find specific API endpoints and additional API documentation.', 'api_reference' => 'Please check the <a href="https://snipe-it.readme.io/reference" target="_blank">API reference</a> to find specific API endpoints and additional API documentation.',
'profile_updated' => 'Account successfully updated', 'profile_updated' => 'تم تحديث الحساب بنجاح',
'no_tokens' => 'You have not created any personal access tokens.', 'no_tokens' => 'لم تقم بإنشاء أي رموز خاصة للوصول الشخصي.',
'enable_sounds' => 'Enable sound effects', 'enable_sounds' => 'تمكين المؤثرات الصوتية',
'enable_confetti' => 'Enable confetti effects', 'enable_confetti' => 'Enable confetti effects',
); );

View file

@ -49,5 +49,5 @@ return [
'kit_deleted' => 'تم حذف عدة بنجاح', 'kit_deleted' => 'تم حذف عدة بنجاح',
'kit_model_updated' => 'تم تحديث النموذج بنجاح', 'kit_model_updated' => 'تم تحديث النموذج بنجاح',
'kit_model_detached' => 'تم فصل النموذج بنجاح', 'kit_model_detached' => 'تم فصل النموذج بنجاح',
'model_already_attached' => 'Model already attached to kit', 'model_already_attached' => 'يتبين انه النموذج الحالي مرتبط أصلاً مع مجموعة الأدوات',
]; ];

View file

@ -280,6 +280,8 @@ return [
'two_factor_enrollment_text' => "التوثيق ذو العاملين 2FA اجباري، ولكن لم يتم تسجيل جهازك بعد. افتح تطبيق غوغل للتوثيق Google Authenticator وافحص رمز الاستجابة السريعة QR أدناه لتسجيل جهازك. بعد تسجيل جهازك، أدخل الرمز أدناه", 'two_factor_enrollment_text' => "التوثيق ذو العاملين 2FA اجباري، ولكن لم يتم تسجيل جهازك بعد. افتح تطبيق غوغل للتوثيق Google Authenticator وافحص رمز الاستجابة السريعة QR أدناه لتسجيل جهازك. بعد تسجيل جهازك، أدخل الرمز أدناه",
'require_accept_signature' => 'يتطلب التوقيع', 'require_accept_signature' => 'يتطلب التوقيع',
'require_accept_signature_help_text' => 'سيتطلب تمكين هذه الميزة من المستخدمين تسجيل الدخول فعليا عند قبول مادة العرض.', 'require_accept_signature_help_text' => 'سيتطلب تمكين هذه الميزة من المستخدمين تسجيل الدخول فعليا عند قبول مادة العرض.',
'require_checkinout_notes' => 'Require Notes on Checkin/Checkout',
'require_checkinout_notes_help_text' => 'Enabling this feature will require the note fields to be populated when checking in or checking out an asset.',
'left' => 'اليسار', 'left' => 'اليسار',
'right' => 'حق', 'right' => 'حق',
'top' => 'أعلى', 'top' => 'أعلى',

View file

@ -11,9 +11,9 @@ return [
'activity_report' => 'تقرير الأنشطة', 'activity_report' => 'تقرير الأنشطة',
'address' => 'العنوان', 'address' => 'العنوان',
'admin' => 'الإدارة', 'admin' => 'الإدارة',
'admin_tooltip' => 'This user has admin privileges', 'admin_tooltip' => 'هذا المستخدم لديه صلاحيات المشرف',
'superuser' => 'Superuser', 'superuser' => 'مدير النظام',
'superuser_tooltip' => 'This user has superuser privileges', 'superuser_tooltip' => 'هذا المستخدم لديه امتيازات المستخدم المتميز',
'administrator' => 'المدير', 'administrator' => 'المدير',
'add_seats' => 'المقاعد المضافة', 'add_seats' => 'المقاعد المضافة',
'age' => "العمر", 'age' => "العمر",
@ -64,7 +64,7 @@ return [
'checkout' => 'ترجيع', 'checkout' => 'ترجيع',
'checkouts_count' => 'الخارج', 'checkouts_count' => 'الخارج',
'checkins_count' => 'المٌدخل', 'checkins_count' => 'المٌدخل',
'checkin_and_delete' => 'Checkin and Delete', 'checkin_and_delete' => 'الإيداع والحذف',
'user_requests_count' => 'الطلبات', 'user_requests_count' => 'الطلبات',
'city' => 'المدينة', 'city' => 'المدينة',
'click_here' => 'انقر هنا', 'click_here' => 'انقر هنا',
@ -99,7 +99,7 @@ return [
'debug_warning_text' => 'هذا التطبيق يعمل في وضع الإنتاج مع تمكين التصحيح. هذا يمكن أن يعرض البيانات الحساسة إذا كان التطبيق الخاص بك هو في متناول العالم الخارجي. تعطيل وضع التصحيح عن طريق تعيين قيمة <code>APP_DEBUG</code> في ملف <code>.env</code> إلى <code>false</code>.', 'debug_warning_text' => 'هذا التطبيق يعمل في وضع الإنتاج مع تمكين التصحيح. هذا يمكن أن يعرض البيانات الحساسة إذا كان التطبيق الخاص بك هو في متناول العالم الخارجي. تعطيل وضع التصحيح عن طريق تعيين قيمة <code>APP_DEBUG</code> في ملف <code>.env</code> إلى <code>false</code>.',
'delete' => 'حذف', 'delete' => 'حذف',
'delete_confirm' => 'هل أنت متأكد من حذف :المنتج؟', 'delete_confirm' => 'هل أنت متأكد من حذف :المنتج؟',
'delete_confirm_no_undo' => 'Are you sure, you wish to delete :item? This cannot be undone.', 'delete_confirm_no_undo' => 'هل أنت متأكد من أنك ترغب في حذف :item؟ لا يمكن التراجع بعد الحذف.',
'deleted' => 'تم حذفها', 'deleted' => 'تم حذفها',
'delete_seats' => 'المقاعد المحذوفة', 'delete_seats' => 'المقاعد المحذوفة',
'deletion_failed' => 'فشل الحذف', 'deletion_failed' => 'فشل الحذف',
@ -135,7 +135,7 @@ return [
'lastname_firstinitial' => 'اللقب والحرف الاول من الاسم (smithj@example.com)', 'lastname_firstinitial' => 'اللقب والحرف الاول من الاسم (smithj@example.com)',
'firstinitial.lastname' => 'الاسم الأخير الأول (jsmith@example.com)', 'firstinitial.lastname' => 'الاسم الأخير الأول (jsmith@example.com)',
'firstnamelastinitial' => 'اللقب والحرف الاول من الاسم (smithj@example.com)', 'firstnamelastinitial' => 'اللقب والحرف الاول من الاسم (smithj@example.com)',
'lastnamefirstname' => 'Last Name.First Name (smith.jane@example.com)', 'lastnamefirstname' => 'الاسم الأخير (smith.jane@example.com)',
'first_name' => 'الإسم الأول', 'first_name' => 'الإسم الأول',
'first_name_format' => 'الاسم الأول (jane@example.com)', 'first_name_format' => 'الاسم الأول (jane@example.com)',
'files' => 'الملفات', 'files' => 'الملفات',
@ -158,8 +158,8 @@ return [
'include_deleted' => 'تضمين الأصول المحذوفة', 'include_deleted' => 'تضمين الأصول المحذوفة',
'image_upload' => 'رفع صورة', 'image_upload' => 'رفع صورة',
'filetypes_accepted_help' => 'Accepted filetype is :types. The maximum size allowed is :size.|Accepted filetypes are :types. The maximum upload size allowed is :size.', 'filetypes_accepted_help' => 'Accepted filetype is :types. The maximum size allowed is :size.|Accepted filetypes are :types. The maximum upload size allowed is :size.',
'filetypes_size_help' => 'The maximum upload size allowed is :size.', 'filetypes_size_help' => 'الحد الأقصى المسموح لحجم التصعيد هو :size.',
'image_filetypes_help' => 'Accepted Filetypes are jpg, webp, png, gif, svg, and avif. The maximum upload size allowed is :size.', 'image_filetypes_help' => 'أنواع الملفات المسموحة هي jpg، webpp، png، gif، svg، tif. الحد الأقصى لحجم التصعيد المسموح به هو :size.',
'unaccepted_image_type' => 'ملف الصورة هذا غير قابل للقراءة. أنواع الملفات المقبولة هي jpg، webpp، png، gif، svg. نوع هذا الملف هو: :mimetype.', 'unaccepted_image_type' => 'ملف الصورة هذا غير قابل للقراءة. أنواع الملفات المقبولة هي jpg، webpp، png، gif، svg. نوع هذا الملف هو: :mimetype.',
'import' => 'استيراد', 'import' => 'استيراد',
'import_this_file' => 'حقول الخريطة ومعالجة هذا الملف', 'import_this_file' => 'حقول الخريطة ومعالجة هذا الملف',
@ -194,7 +194,7 @@ return [
'logout' => 'تسجيل خروج', 'logout' => 'تسجيل خروج',
'lookup_by_tag' => 'البحث عن طريق ترميز الأصل', 'lookup_by_tag' => 'البحث عن طريق ترميز الأصل',
'maintenances' => 'الصيانة', 'maintenances' => 'الصيانة',
'manage_api_keys' => 'Manage API keys', 'manage_api_keys' => 'إدارة مفاتيح API',
'manufacturer' => 'الشركة المصنعة', 'manufacturer' => 'الشركة المصنعة',
'manufacturers' => 'الشركات المصنعة', 'manufacturers' => 'الشركات المصنعة',
'markdown' => 'يتيح هذا الحقل <a href="https://help.github.com/articles/github-flavored-markdown/">بتطبيق نمط الكتابة من Github</a>.', 'markdown' => 'يتيح هذا الحقل <a href="https://help.github.com/articles/github-flavored-markdown/">بتطبيق نمط الكتابة من Github</a>.',
@ -208,7 +208,7 @@ return [
'next' => 'التالى', 'next' => 'التالى',
'next_audit_date' => 'تاريخ التدقيق التالي', 'next_audit_date' => 'تاريخ التدقيق التالي',
'next_audit_date_help' => 'If you use auditing in your organization, this is usually automatically calculated based on the asset&apos;s last audit date and audit frequency (in <code>Admin Settings &gt; Alerts</code>) and you can leave this blank. You can manually set this date here if you need to, but it must be later than the last audit date. ', 'next_audit_date_help' => 'If you use auditing in your organization, this is usually automatically calculated based on the asset&apos;s last audit date and audit frequency (in <code>Admin Settings &gt; Alerts</code>) and you can leave this blank. You can manually set this date here if you need to, but it must be later than the last audit date. ',
'audit_images_help' => 'You can find audit images in the asset\'s history tab.', 'audit_images_help' => 'يمكنك العثور على صور التدقيق في علامة تبويب التاريخ في صفحة الأصول.',
'no_email' => 'لا يوجد عنوان بريد إلكتروني مرتبط بهذا المستخدم', 'no_email' => 'لا يوجد عنوان بريد إلكتروني مرتبط بهذا المستخدم',
'last_audit' => 'آخر مراجعة', 'last_audit' => 'آخر مراجعة',
'new' => 'الجديد!', 'new' => 'الجديد!',
@ -241,13 +241,13 @@ return [
'restored' => 'المعاد', 'restored' => 'المعاد',
'restore' => 'إستعادة', 'restore' => 'إستعادة',
'requestable_models' => 'النماذج المطلوبة', 'requestable_models' => 'النماذج المطلوبة',
'requestable_items' => 'Requestable Items', 'requestable_items' => 'العناصر المطلوبة',
'requested' => 'طلب', 'requested' => 'طلب',
'requested_date' => 'تاريخ الطلب', 'requested_date' => 'تاريخ الطلب',
'requested_assets' => 'الأصول المطلوبة', 'requested_assets' => 'الأصول المطلوبة',
'requested_assets_menu' => 'الأصول المطلوبة', 'requested_assets_menu' => 'الأصول المطلوبة',
'request_canceled' => 'تم إلغاء الطلب', 'request_canceled' => 'تم إلغاء الطلب',
'request_item' => 'Request this item', 'request_item' => 'طلب هذا العنصر',
'external_link_tooltip' => 'رابط خارجي إلى', 'external_link_tooltip' => 'رابط خارجي إلى',
'save' => 'حفظ', 'save' => 'حفظ',
'select_var' => 'اختر :thing... ', // this will eventually replace all of our other selects 'select_var' => 'اختر :thing... ', // this will eventually replace all of our other selects
@ -255,7 +255,7 @@ return [
'select_all' => 'اختر الكل', 'select_all' => 'اختر الكل',
'search' => 'بحث', 'search' => 'بحث',
'select_category' => 'اختر تصنيف', 'select_category' => 'اختر تصنيف',
'select_datasource' => 'Select a data source', 'select_datasource' => 'اختر مصدر البيانات',
'select_department' => 'حدد قسم', 'select_department' => 'حدد قسم',
'select_depreciation' => 'حدد نوع الاستهلاك', 'select_depreciation' => 'حدد نوع الاستهلاك',
'select_location' => 'حدد موقعا', 'select_location' => 'حدد موقعا',
@ -275,7 +275,7 @@ return [
'signed_off_by' => 'تم توقيعه من قبل', 'signed_off_by' => 'تم توقيعه من قبل',
'skin' => 'المظهر', 'skin' => 'المظهر',
'webhook_msg_note' => 'سيتم إرسال إشعار عبر الربط البرمجي (webhook)', 'webhook_msg_note' => 'سيتم إرسال إشعار عبر الربط البرمجي (webhook)',
'webhook_test_msg' => 'Oh hai! It looks like your :app integration with Snipe-IT is working!', 'webhook_test_msg' => 'مرحبًا! أخبار سعيدة ، يبدو أن نظامك الأن يعمل مع Snipe-IT ',
'some_features_disabled' => 'التثبيت التجريبي (DEMO): يتم تعطيل بعض الميزات لهذا التثبيت.', 'some_features_disabled' => 'التثبيت التجريبي (DEMO): يتم تعطيل بعض الميزات لهذا التثبيت.',
'site_name' => 'إسم الموقع', 'site_name' => 'إسم الموقع',
'state' => 'المنطقة / الولاية', 'state' => 'المنطقة / الولاية',
@ -283,7 +283,7 @@ return [
'status_label' => 'Status Label', 'status_label' => 'Status Label',
'status' => 'الحالة', 'status' => 'الحالة',
'accept_eula' => 'اتفاقية القبول', 'accept_eula' => 'اتفاقية القبول',
'show_or_hide_eulas' => 'Show/Hide EULAs', 'show_or_hide_eulas' => 'مرحبًا! أخبار سعيدة ، يبدو أن نظامك الأن يعمل مع Snipe-IT. ',
'supplier' => 'المورد', 'supplier' => 'المورد',
'suppliers' => 'الموردون', 'suppliers' => 'الموردون',
'sure_to_delete' => 'هل تريد بالتأكيد حذفها', 'sure_to_delete' => 'هل تريد بالتأكيد حذفها',
@ -307,7 +307,7 @@ return [
'user' => 'المستخدم', 'user' => 'المستخدم',
'accepted' => 'قبلت', 'accepted' => 'قبلت',
'declined' => 'رفض', 'declined' => 'رفض',
'declined_note' => 'Declined Notes', 'declined_note' => 'الملاحظات المرفوضة',
'unassigned' => 'غير مسند', 'unassigned' => 'غير مسند',
'unaccepted_asset_report' => 'الأصول غير المقبولة', 'unaccepted_asset_report' => 'الأصول غير المقبولة',
'users' => 'المستخدمين', 'users' => 'المستخدمين',
@ -342,8 +342,8 @@ return [
'view_all' => 'عرض الكل', 'view_all' => 'عرض الكل',
'hide_deleted' => 'إخفاء المحذوفة', 'hide_deleted' => 'إخفاء المحذوفة',
'email' => 'البريد الالكتروني', 'email' => 'البريد الالكتروني',
'do_not_change' => 'Do not change', 'do_not_change' => 'الرجاء عدم التغيير',
'bug_report' => 'Report a bug', 'bug_report' => 'أبلغ عن وجود مشكلة أو خطأ في النظام',
'user_manual' => 'دليل المستخدم', 'user_manual' => 'دليل المستخدم',
'setup_step_1' => 'الخطوة 1', 'setup_step_1' => 'الخطوة 1',
'setup_step_2' => 'الخطوة 2', 'setup_step_2' => 'الخطوة 2',
@ -351,7 +351,7 @@ return [
'setup_step_4' => 'الخطوة 4', 'setup_step_4' => 'الخطوة 4',
'setup_config_check' => 'التحقق من الاعدادات', 'setup_config_check' => 'التحقق من الاعدادات',
'setup_create_database' => 'Create database tables', 'setup_create_database' => 'Create database tables',
'setup_create_admin' => 'Create an admin user', 'setup_create_admin' => 'تكوين حساب مدير النظام',
'setup_done' => 'إنتهى!', 'setup_done' => 'إنتهى!',
'bulk_edit_about_to' => 'أنت على وشك تحرير ما يلي: ', 'bulk_edit_about_to' => 'أنت على وشك تحرير ما يلي: ',
'checked_out' => 'استعارة', 'checked_out' => 'استعارة',

View file

@ -280,6 +280,8 @@ return [
'two_factor_enrollment_text' => "Двуфакторово удостоверяване се изисква, но вашето устройство не е било регистрирано още. Отворете Google Authenticator и сканирайте QR кода по-долу за да регистрирате вашето устройство. След като сте записани вашето устройство, въведете кода по-долу", 'two_factor_enrollment_text' => "Двуфакторово удостоверяване се изисква, но вашето устройство не е било регистрирано още. Отворете Google Authenticator и сканирайте QR кода по-долу за да регистрирате вашето устройство. След като сте записани вашето устройство, въведете кода по-долу",
'require_accept_signature' => 'Изисква подпис', 'require_accept_signature' => 'Изисква подпис',
'require_accept_signature_help_text' => 'Разрешаването на тази функция ще изисква от потребителите да се подпишат физически за приемане на даден актив.', 'require_accept_signature_help_text' => 'Разрешаването на тази функция ще изисква от потребителите да се подпишат физически за приемане на даден актив.',
'require_checkinout_notes' => 'Require Notes on Checkin/Checkout',
'require_checkinout_notes_help_text' => 'Enabling this feature will require the note fields to be populated when checking in or checking out an asset.',
'left' => 'ляво', 'left' => 'ляво',
'right' => 'дясно', 'right' => 'дясно',
'top' => 'Горе', 'top' => 'Горе',

View file

@ -280,6 +280,8 @@ return [
'two_factor_enrollment_text' => "Two factor authentication is required, however your device has not been enrolled yet. Open your Google Authenticator app and scan the QR code below to enroll your device. Once you've enrolled your device, enter the code below", 'two_factor_enrollment_text' => "Two factor authentication is required, however your device has not been enrolled yet. Open your Google Authenticator app and scan the QR code below to enroll your device. Once you've enrolled your device, enter the code below",
'require_accept_signature' => 'Require Signature', 'require_accept_signature' => 'Require Signature',
'require_accept_signature_help_text' => 'Enabling this feature will require users to physically sign off on accepting an asset.', 'require_accept_signature_help_text' => 'Enabling this feature will require users to physically sign off on accepting an asset.',
'require_checkinout_notes' => 'Require Notes on Checkin/Checkout',
'require_checkinout_notes_help_text' => 'Enabling this feature will require the note fields to be populated when checking in or checking out an asset.',
'left' => 'left', 'left' => 'left',
'right' => 'right', 'right' => 'right',
'top' => 'top', 'top' => 'top',

View file

@ -280,6 +280,8 @@ return [
'two_factor_enrollment_text' => "Two factor authentication is required, however your device has not been enrolled yet. Open your Google Authenticator app and scan the QR code below to enroll your device. Once you've enrolled your device, enter the code below", 'two_factor_enrollment_text' => "Two factor authentication is required, however your device has not been enrolled yet. Open your Google Authenticator app and scan the QR code below to enroll your device. Once you've enrolled your device, enter the code below",
'require_accept_signature' => 'Require Signature', 'require_accept_signature' => 'Require Signature',
'require_accept_signature_help_text' => 'Enabling this feature will require users to physically sign off on accepting an asset.', 'require_accept_signature_help_text' => 'Enabling this feature will require users to physically sign off on accepting an asset.',
'require_checkinout_notes' => 'Require Notes on Checkin/Checkout',
'require_checkinout_notes_help_text' => 'Enabling this feature will require the note fields to be populated when checking in or checking out an asset.',
'left' => 'left', 'left' => 'left',
'right' => 'right', 'right' => 'right',
'top' => 'top', 'top' => 'top',

View file

@ -280,6 +280,8 @@ return [
'two_factor_enrollment_text' => "Je vyžadováno dvoufaktorové ověření, nicméně vaše zařízení ještě nebylo zaregistrováno. Otevřete aplikaci Google Authenticator a oskenujte níže uvedený QR kód pro registraci vašeho zařízení. Jakmile zaregistrujete své zařízení, zadejte níže uvedený kód", 'two_factor_enrollment_text' => "Je vyžadováno dvoufaktorové ověření, nicméně vaše zařízení ještě nebylo zaregistrováno. Otevřete aplikaci Google Authenticator a oskenujte níže uvedený QR kód pro registraci vašeho zařízení. Jakmile zaregistrujete své zařízení, zadejte níže uvedený kód",
'require_accept_signature' => 'Požadovat podpis', 'require_accept_signature' => 'Požadovat podpis',
'require_accept_signature_help_text' => 'Aktivace této funkce bude vyžadovat, aby se uživatelé fyzicky přihlásili k přijetí určitého materiálu.', 'require_accept_signature_help_text' => 'Aktivace této funkce bude vyžadovat, aby se uživatelé fyzicky přihlásili k přijetí určitého materiálu.',
'require_checkinout_notes' => 'Require Notes on Checkin/Checkout',
'require_checkinout_notes_help_text' => 'Enabling this feature will require the note fields to be populated when checking in or checking out an asset.',
'left' => 'vlevo', 'left' => 'vlevo',
'right' => 'vpravo', 'right' => 'vpravo',
'top' => 'nahoře', 'top' => 'nahoře',

View file

@ -280,6 +280,8 @@ return [
'two_factor_enrollment_text' => "Mae angen dilysu dau ffactor, ond nid yw'ch dyfais wedi'i chofrestru eto. Agorwch eich app Google Authenticator a sganiwch y cod QR isod i gofrestru'ch dyfais. Ar ôl i chi gofrestru'ch dyfais, nodwch y cod isod", 'two_factor_enrollment_text' => "Mae angen dilysu dau ffactor, ond nid yw'ch dyfais wedi'i chofrestru eto. Agorwch eich app Google Authenticator a sganiwch y cod QR isod i gofrestru'ch dyfais. Ar ôl i chi gofrestru'ch dyfais, nodwch y cod isod",
'require_accept_signature' => 'Angen Llofnod', 'require_accept_signature' => 'Angen Llofnod',
'require_accept_signature_help_text' => 'Bydd galluogi\'r nodwedd hon yn ei gwneud yn ofynnol i ddefnyddwyr lofnodi\'n gorfforol wrth dderbyn ased.', 'require_accept_signature_help_text' => 'Bydd galluogi\'r nodwedd hon yn ei gwneud yn ofynnol i ddefnyddwyr lofnodi\'n gorfforol wrth dderbyn ased.',
'require_checkinout_notes' => 'Require Notes on Checkin/Checkout',
'require_checkinout_notes_help_text' => 'Enabling this feature will require the note fields to be populated when checking in or checking out an asset.',
'left' => 'chwith', 'left' => 'chwith',
'right' => 'dde', 'right' => 'dde',
'top' => 'top', 'top' => 'top',

View file

@ -280,6 +280,8 @@ return [
'two_factor_enrollment_text' => "To faktor godkendelse er påkrævet, men din enhed er endnu ikke blevet tilmeldt. Åbn din Google Authenticator-app og scan QR-koden nedenfor for at tilmelde din enhed. Når du har tilmeldt din enhed, skal du indtaste koden nedenfor", 'two_factor_enrollment_text' => "To faktor godkendelse er påkrævet, men din enhed er endnu ikke blevet tilmeldt. Åbn din Google Authenticator-app og scan QR-koden nedenfor for at tilmelde din enhed. Når du har tilmeldt din enhed, skal du indtaste koden nedenfor",
'require_accept_signature' => 'Kræver Signatur', 'require_accept_signature' => 'Kræver Signatur',
'require_accept_signature_help_text' => 'Aktivering af denne funktion kræver, at brugerne fysisk logger af ved at acceptere et aktiv.', 'require_accept_signature_help_text' => 'Aktivering af denne funktion kræver, at brugerne fysisk logger af ved at acceptere et aktiv.',
'require_checkinout_notes' => 'Require Notes on Checkin/Checkout',
'require_checkinout_notes_help_text' => 'Enabling this feature will require the note fields to be populated when checking in or checking out an asset.',
'left' => 'venstre', 'left' => 'venstre',
'right' => 'højre', 'right' => 'højre',
'top' => 'top', 'top' => 'top',

View file

@ -280,6 +280,8 @@ return [
'two_factor_enrollment_text' => "Zwei-Faktor-Authentifizierung ist erforderlich, Ihr Gerät wurde jedoch noch nicht hinzugefügt. Öffnen Sie die Google Authenticator App und scannen Sie den QR-Code unterhalb um Ihr Gerät hinzuzufügen. Geben Sie anschließend den Code ein", 'two_factor_enrollment_text' => "Zwei-Faktor-Authentifizierung ist erforderlich, Ihr Gerät wurde jedoch noch nicht hinzugefügt. Öffnen Sie die Google Authenticator App und scannen Sie den QR-Code unterhalb um Ihr Gerät hinzuzufügen. Geben Sie anschließend den Code ein",
'require_accept_signature' => 'Signatur erforderlich', 'require_accept_signature' => 'Signatur erforderlich',
'require_accept_signature_help_text' => 'Wenn aktiviert, wird eine physische Unterschrift durch den Benutzer notwendig, der das Asset erhält.', 'require_accept_signature_help_text' => 'Wenn aktiviert, wird eine physische Unterschrift durch den Benutzer notwendig, der das Asset erhält.',
'require_checkinout_notes' => 'Notizen beim Ein-/Auschecken erforderlich',
'require_checkinout_notes_help_text' => 'Wenn Sie diese Funktion aktivieren, müssen die Notizfelder beim Einchecken oder Auschecken eines Assets ausgefüllt werden.',
'left' => 'links', 'left' => 'links',
'right' => 'rechts', 'right' => 'rechts',
'top' => 'Oben', 'top' => 'Oben',

View file

@ -280,6 +280,8 @@ return [
'two_factor_enrollment_text' => "Zwei-Faktor-Authentifizierung ist erforderlich, Dein Gerät wurde jedoch noch nicht hinzugefügt. Öffne die Google Authenticator App und scanne den QR-Code unten, um Dein Gerät hinzuzufügen. Gebe anschließend den Code ein", 'two_factor_enrollment_text' => "Zwei-Faktor-Authentifizierung ist erforderlich, Dein Gerät wurde jedoch noch nicht hinzugefügt. Öffne die Google Authenticator App und scanne den QR-Code unten, um Dein Gerät hinzuzufügen. Gebe anschließend den Code ein",
'require_accept_signature' => 'Unterschrift erforderlich', 'require_accept_signature' => 'Unterschrift erforderlich',
'require_accept_signature_help_text' => 'Wenn aktiviert, wird eine physische Unterschrift durch den Benutzer bei der Annahme des Assets notwendig.', 'require_accept_signature_help_text' => 'Wenn aktiviert, wird eine physische Unterschrift durch den Benutzer bei der Annahme des Assets notwendig.',
'require_checkinout_notes' => 'Notizen beim Ein-/Auschecken erforderlich',
'require_checkinout_notes_help_text' => 'Wenn Du diese Funktion aktivierst, müssen die Notizfelder beim Einchecken oder Auschecken eines Assets ausgefüllt werden.',
'left' => 'links', 'left' => 'links',
'right' => 'rechts', 'right' => 'rechts',
'top' => 'oben', 'top' => 'oben',

View file

@ -280,6 +280,8 @@ return [
'two_factor_enrollment_text' => "Απαιτείται έλεγχος ταυτότητας δύο παραγόντων, ωστόσο η συσκευή σας δεν έχει εγγραφεί ακόμα. Ανοίξτε την εφαρμογή Google Authenticator και σαρώστε τον παρακάτω κωδικό QR για να εγγραφείτε στη συσκευή σας. Μόλις εγγραφείτε στη συσκευή σας, πληκτρολογήστε τον παρακάτω κώδικα", 'two_factor_enrollment_text' => "Απαιτείται έλεγχος ταυτότητας δύο παραγόντων, ωστόσο η συσκευή σας δεν έχει εγγραφεί ακόμα. Ανοίξτε την εφαρμογή Google Authenticator και σαρώστε τον παρακάτω κωδικό QR για να εγγραφείτε στη συσκευή σας. Μόλις εγγραφείτε στη συσκευή σας, πληκτρολογήστε τον παρακάτω κώδικα",
'require_accept_signature' => 'Απαιτείται υπογραφή', 'require_accept_signature' => 'Απαιτείται υπογραφή',
'require_accept_signature_help_text' => 'Η ενεργοποίηση αυτής της λειτουργίας θα απαιτεί από τους χρήστες να αποδεχθούν φυσικά την αποδοχή ενός στοιχείου.', 'require_accept_signature_help_text' => 'Η ενεργοποίηση αυτής της λειτουργίας θα απαιτεί από τους χρήστες να αποδεχθούν φυσικά την αποδοχή ενός στοιχείου.',
'require_checkinout_notes' => 'Require Notes on Checkin/Checkout',
'require_checkinout_notes_help_text' => 'Enabling this feature will require the note fields to be populated when checking in or checking out an asset.',
'left' => 'αριστερά', 'left' => 'αριστερά',
'right' => 'δεξιά', 'right' => 'δεξιά',
'top' => 'κορυφή', 'top' => 'κορυφή',

View file

@ -280,6 +280,8 @@ return [
'two_factor_enrollment_text' => "Two factor authentication is required, however your device has not been enrolled yet. Open your Google Authenticator app and scan the QR code below to enroll your device. Once you've enrolled your device, enter the code below", 'two_factor_enrollment_text' => "Two factor authentication is required, however your device has not been enrolled yet. Open your Google Authenticator app and scan the QR code below to enroll your device. Once you've enrolled your device, enter the code below",
'require_accept_signature' => 'Require Signature', 'require_accept_signature' => 'Require Signature',
'require_accept_signature_help_text' => 'Enabling this feature will require users to physically sign off on accepting an asset.', 'require_accept_signature_help_text' => 'Enabling this feature will require users to physically sign off on accepting an asset.',
'require_checkinout_notes' => 'Require Notes on Checkin/Checkout',
'require_checkinout_notes_help_text' => 'Enabling this feature will require the note fields to be populated when checking in or checking out an asset.',
'left' => 'left', 'left' => 'left',
'right' => 'right', 'right' => 'right',
'top' => 'top', 'top' => 'top',

View file

@ -23,7 +23,7 @@ return [
'Item_Requested' => 'Item Requested', 'Item_Requested' => 'Item Requested',
'License_Checkin_Notification' => 'License checked in', 'License_Checkin_Notification' => 'License checked in',
'License_Checkout_Notification' => 'Licence checked out', 'License_Checkout_Notification' => 'Licence checked out',
'license_for' => 'License for', 'license_for' => 'Licence for',
'Low_Inventory_Report' => 'Low Inventory Report', 'Low_Inventory_Report' => 'Low Inventory Report',
'a_user_canceled' => 'A user has canceled an item request on the website', 'a_user_canceled' => 'A user has canceled an item request on the website',
'a_user_requested' => 'A user has requested an item on the website', 'a_user_requested' => 'A user has requested an item on the website',

View file

@ -280,6 +280,8 @@ return [
'two_factor_enrollment_text' => "Diperlukan dua faktor otentikasi, namun perangkat anda belum terdaftar. Buka aplikasi Google Authenticator anda dan pindai kode QR dibawah ini untuk mendaftarkan perangkat anda. Setelah perangkat anda terdaftar, masukkan kode dibawah ini", 'two_factor_enrollment_text' => "Diperlukan dua faktor otentikasi, namun perangkat anda belum terdaftar. Buka aplikasi Google Authenticator anda dan pindai kode QR dibawah ini untuk mendaftarkan perangkat anda. Setelah perangkat anda terdaftar, masukkan kode dibawah ini",
'require_accept_signature' => 'Membutuhkan Tanda Tangan', 'require_accept_signature' => 'Membutuhkan Tanda Tangan',
'require_accept_signature_help_text' => 'Mengaktifkan fitur ini akan mengharuskan pengguna secara fisik menandatangani untuk menerima aset.', 'require_accept_signature_help_text' => 'Mengaktifkan fitur ini akan mengharuskan pengguna secara fisik menandatangani untuk menerima aset.',
'require_checkinout_notes' => 'Require Notes on Checkin/Checkout',
'require_checkinout_notes_help_text' => 'Enabling this feature will require the note fields to be populated when checking in or checking out an asset.',
'left' => 'kiri', 'left' => 'kiri',
'right' => 'kanan', 'right' => 'kanan',
'top' => 'atas', 'top' => 'atas',

View file

@ -55,7 +55,7 @@ return [
'display_asset_name' => 'Display Asset Name', 'display_asset_name' => 'Display Asset Name',
'display_checkout_date' => 'Display Checkout Date', 'display_checkout_date' => 'Display Checkout Date',
'display_eol' => 'Display EOL in table view', 'display_eol' => 'Display EOL in table view',
'display_qr' => 'Display Square Codes', 'display_qr' => 'Display 2D barcode',
'display_alt_barcode' => 'Display 1D barcode', 'display_alt_barcode' => 'Display 1D barcode',
'email_logo' => 'Email Logo', 'email_logo' => 'Email Logo',
'barcode_type' => '2D Barcode Type', 'barcode_type' => '2D Barcode Type',

View file

@ -565,5 +565,6 @@ return [
'label' => 'Label', 'label' => 'Label',
'import_asset_tag_exists' => 'An asset with the asset tag :asset_tag already exists and an update was not requested. No change was made.', 'import_asset_tag_exists' => 'An asset with the asset tag :asset_tag already exists and an update was not requested. No change was made.',
'countries_manually_entered_help' => 'Values with an asterisk (*) were manually entered and do not match existing ISO 3166 dropdown values', 'countries_manually_entered_help' => 'Values with an asterisk (*) were manually entered and do not match existing ISO 3166 dropdown values',
'accessories_assigned' => 'Assigned Accessories',
]; ];

View file

@ -280,6 +280,8 @@ return [
'two_factor_enrollment_text' => "Se requiere autenticación de dos factores, sin embargo su dispositivo aún no ha sido inscrito. Abra la aplicación Google Authenticator y escanee el código QR que aparece a continuación para registrar su dispositivo. Una vez que haya registrado su dispositivo, introduzca el código en la parte inferior", 'two_factor_enrollment_text' => "Se requiere autenticación de dos factores, sin embargo su dispositivo aún no ha sido inscrito. Abra la aplicación Google Authenticator y escanee el código QR que aparece a continuación para registrar su dispositivo. Una vez que haya registrado su dispositivo, introduzca el código en la parte inferior",
'require_accept_signature' => 'Solicitar firma', 'require_accept_signature' => 'Solicitar firma',
'require_accept_signature_help_text' => 'Al activar esta función, los usuarios tendrán que firmar físicamente la aceptación de un activo.', 'require_accept_signature_help_text' => 'Al activar esta función, los usuarios tendrán que firmar físicamente la aceptación de un activo.',
'require_checkinout_notes' => 'Require Notes on Checkin/Checkout',
'require_checkinout_notes_help_text' => 'Enabling this feature will require the note fields to be populated when checking in or checking out an asset.',
'left' => 'izquierda', 'left' => 'izquierda',
'right' => 'derecha', 'right' => 'derecha',
'top' => 'arriba', 'top' => 'arriba',

View file

@ -280,6 +280,8 @@ return [
'two_factor_enrollment_text' => "Se requiere autenticación de dos factores, sin embargo su dispositivo aún no ha sido inscrito. Abra la aplicación Google Authenticator y escanee el código QR que aparece a continuación para registrar su dispositivo. Una vez que haya registrado su dispositivo, introduzca el código en la parte inferior", 'two_factor_enrollment_text' => "Se requiere autenticación de dos factores, sin embargo su dispositivo aún no ha sido inscrito. Abra la aplicación Google Authenticator y escanee el código QR que aparece a continuación para registrar su dispositivo. Una vez que haya registrado su dispositivo, introduzca el código en la parte inferior",
'require_accept_signature' => 'Solicitar firma', 'require_accept_signature' => 'Solicitar firma',
'require_accept_signature_help_text' => 'Al activar esta función, los usuarios tendrán que firmar físicamente la aceptación de un activo.', 'require_accept_signature_help_text' => 'Al activar esta función, los usuarios tendrán que firmar físicamente la aceptación de un activo.',
'require_checkinout_notes' => 'Require Notes on Checkin/Checkout',
'require_checkinout_notes_help_text' => 'Enabling this feature will require the note fields to be populated when checking in or checking out an asset.',
'left' => 'izquierda', 'left' => 'izquierda',
'right' => 'derecha', 'right' => 'derecha',
'top' => 'arriba', 'top' => 'arriba',

View file

@ -280,6 +280,8 @@ return [
'two_factor_enrollment_text' => "Se requiere autenticación de dos factores, sin embargo su dispositivo aún no ha sido inscrito. Abra la aplicación Google Authenticator y escanee el código QR que aparece a continuación para registrar su dispositivo. Una vez que haya registrado su dispositivo, introduzca el código en la parte inferior", 'two_factor_enrollment_text' => "Se requiere autenticación de dos factores, sin embargo su dispositivo aún no ha sido inscrito. Abra la aplicación Google Authenticator y escanee el código QR que aparece a continuación para registrar su dispositivo. Una vez que haya registrado su dispositivo, introduzca el código en la parte inferior",
'require_accept_signature' => 'Solicitar firma', 'require_accept_signature' => 'Solicitar firma',
'require_accept_signature_help_text' => 'Al activar esta función, los usuarios tendrán que firmar físicamente la aceptación de un activo.', 'require_accept_signature_help_text' => 'Al activar esta función, los usuarios tendrán que firmar físicamente la aceptación de un activo.',
'require_checkinout_notes' => 'Require Notes on Checkin/Checkout',
'require_checkinout_notes_help_text' => 'Enabling this feature will require the note fields to be populated when checking in or checking out an asset.',
'left' => 'izquierda', 'left' => 'izquierda',
'right' => 'derecha', 'right' => 'derecha',
'top' => 'arriba', 'top' => 'arriba',

View file

@ -280,6 +280,8 @@ return [
'two_factor_enrollment_text' => "Se requiere autenticación de dos factores, sin embargo su dispositivo aún no ha sido inscrito. Abra la aplicación Google Authenticator y escanee el código QR que aparece a continuación para registrar su dispositivo. Una vez que haya registrado su dispositivo, introduzca el código en la parte inferior", 'two_factor_enrollment_text' => "Se requiere autenticación de dos factores, sin embargo su dispositivo aún no ha sido inscrito. Abra la aplicación Google Authenticator y escanee el código QR que aparece a continuación para registrar su dispositivo. Una vez que haya registrado su dispositivo, introduzca el código en la parte inferior",
'require_accept_signature' => 'Solicitar firma', 'require_accept_signature' => 'Solicitar firma',
'require_accept_signature_help_text' => 'Al activar esta función, los usuarios tendrán que firmar físicamente la aceptación de un activo.', 'require_accept_signature_help_text' => 'Al activar esta función, los usuarios tendrán que firmar físicamente la aceptación de un activo.',
'require_checkinout_notes' => 'Require Notes on Checkin/Checkout',
'require_checkinout_notes_help_text' => 'Enabling this feature will require the note fields to be populated when checking in or checking out an asset.',
'left' => 'izquierda', 'left' => 'izquierda',
'right' => 'derecha', 'right' => 'derecha',
'top' => 'arriba', 'top' => 'arriba',

View file

@ -4,8 +4,8 @@ return array(
'personal_api_keys' => 'Personal API Keys', 'personal_api_keys' => 'Personal API Keys',
'personal_access_token' => 'Personal Access Token', 'personal_access_token' => 'Personal Access Token',
'personal_api_keys_success' => 'Personal API Key :key created sucessfully', 'personal_api_keys_success' => 'Personal API Key :key created sucessfully',
'here_is_api_key' => 'Here is your new personal access token. This is the only time it will be shown so do not lose it! You may now use this token to make API requests.', 'here_is_api_key' => 'Siin on teie uus isiklik juurdepääsutoken. See on ainus kord, kui see kuvatakse, nii et ärge kaotage seda! Nüüd saate seda tokenit kasutada API päringute tegemiseks.',
'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.', 'api_key_warning' => 'API tokenit genereerides veenduge, et kopeerite selle kohe, kuna see ei ole teile enam pärast nähtav.',
'api_base_url' => 'Your API base url is located at:', 'api_base_url' => 'Your API base url is located at:',
'api_base_url_endpoint' => '/&lt;endpoint&gt;', 'api_base_url_endpoint' => '/&lt;endpoint&gt;',
'api_token_expiration_time' => 'API tokens are set to expire in:', 'api_token_expiration_time' => 'API tokens are set to expire in:',

View file

@ -28,7 +28,7 @@ return array(
'unavailable' => 'Tarvik ei ole väljastamiseks saadaval. Kontrolli laoseisu', 'unavailable' => 'Tarvik ei ole väljastamiseks saadaval. Kontrolli laoseisu',
'user_does_not_exist' => 'See kasutaja on kehtetu. Palun proovi uuesti.', 'user_does_not_exist' => 'See kasutaja on kehtetu. Palun proovi uuesti.',
'checkout_qty' => array( 'checkout_qty' => array(
'lte' => 'There is currently only one available accessory of this type, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.|There are :number_currently_remaining total available accessories, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.', 'lte' => 'Praegu on saadaval ainult üks seda tüüpi lisaseade ja te üritate väljastada :checkout_qty. Palun kohandage väljastatavate lisaseadmete kogust või selle lisaseadme koguarvu ja proovige uuesti.Saadaval on :number_currently_remaining lisaseadet ja te üritate väljastada :checkout_qty. Palun kohandage väljastavate lisaseadmete kogust või selle lisaseadme koguarvu ja proovige uuesti.',
), ),
), ),

View file

@ -280,6 +280,8 @@ return [
'two_factor_enrollment_text' => "Vaja on kahte tegurit, kuid teie seadet ei ole veel registreeritud. Avage oma Google Authenticatori rakendus ja skannige oma seadme registreerimiseks allolevat QR-koodi. Kui olete oma seadme sisestanud, sisestage allolev kood", 'two_factor_enrollment_text' => "Vaja on kahte tegurit, kuid teie seadet ei ole veel registreeritud. Avage oma Google Authenticatori rakendus ja skannige oma seadme registreerimiseks allolevat QR-koodi. Kui olete oma seadme sisestanud, sisestage allolev kood",
'require_accept_signature' => 'Nõuda allkirja', 'require_accept_signature' => 'Nõuda allkirja',
'require_accept_signature_help_text' => 'Selle funktsiooni lubamine nõuab, et kasutajad võtaksid vara füüsiliselt alla.', 'require_accept_signature_help_text' => 'Selle funktsiooni lubamine nõuab, et kasutajad võtaksid vara füüsiliselt alla.',
'require_checkinout_notes' => 'Require Notes on Checkin/Checkout',
'require_checkinout_notes_help_text' => 'Enabling this feature will require the note fields to be populated when checking in or checking out an asset.',
'left' => 'lahkus', 'left' => 'lahkus',
'right' => 'õige', 'right' => 'õige',
'top' => 'üleval', 'top' => 'üleval',

View file

@ -99,7 +99,7 @@ return [
'debug_warning_text' => 'See rakendus töötab tootmisrežiimis, kus silumisvõimalused on lubatud. See võib avaldada tundlikke andmeid, kui teie rakendus on välismaailmale juurdepääsetav. Keela debugrežiim, määrates <code>APP_DEBUG</code> väärtuse oma <code>.env</code> failis <code>false</code>.', 'debug_warning_text' => 'See rakendus töötab tootmisrežiimis, kus silumisvõimalused on lubatud. See võib avaldada tundlikke andmeid, kui teie rakendus on välismaailmale juurdepääsetav. Keela debugrežiim, määrates <code>APP_DEBUG</code> väärtuse oma <code>.env</code> failis <code>false</code>.',
'delete' => 'Kustuta', 'delete' => 'Kustuta',
'delete_confirm' => 'Kas olete kindel, et soovite kustutada :item?', 'delete_confirm' => 'Kas olete kindel, et soovite kustutada :item?',
'delete_confirm_no_undo' => 'Are you sure, you wish to delete :item? This cannot be undone.', 'delete_confirm_no_undo' => 'Kas olete kindel, et soovite kustutada :item? Seda toimingut ei saa tagasi võtta.',
'deleted' => 'Kustutatud', 'deleted' => 'Kustutatud',
'delete_seats' => 'Kustutatud istmed', 'delete_seats' => 'Kustutatud istmed',
'deletion_failed' => 'Kustutamine ebaõnnestus', 'deletion_failed' => 'Kustutamine ebaõnnestus',
@ -155,21 +155,21 @@ return [
'id' => 'ID', 'id' => 'ID',
'image' => 'Pilt', 'image' => 'Pilt',
'image_delete' => 'Kustuta pilt', 'image_delete' => 'Kustuta pilt',
'include_deleted' => 'Include Deleted Assets', 'include_deleted' => 'Kaasa Kustutatud Varad',
'image_upload' => 'Laadi pilt üles', 'image_upload' => 'Laadi pilt üles',
'filetypes_accepted_help' => 'Accepted filetype is :types. The maximum size allowed is :size.|Accepted filetypes are :types. The maximum upload size allowed is :size.', 'filetypes_accepted_help' => 'Aktsepteeritud failitüüp on: :types. Maksimaalne lubatud suurus on: :size." "Aktsepteeritud failitüübid on: :types. Maksimaalne lubatud üleslaadimise suurus on: :size.',
'filetypes_size_help' => 'The maximum upload size allowed is :size.', 'filetypes_size_help' => 'Maksimaalne lubatud üleslaadimise suurus on: :size.',
'image_filetypes_help' => 'Accepted Filetypes are jpg, webp, png, gif, svg, and avif. The maximum upload size allowed is :size.', 'image_filetypes_help' => 'Aktsepteeritud failitüübid on jpg, webp, png, gif, svg ja avif. Maksimaalne lubatud üleslaadimise suurus on: :size.',
'unaccepted_image_type' => 'This image file was not readable. Accepted filetypes are jpg, webp, png, gif, and svg. The mimetype of this file is: :mimetype.', 'unaccepted_image_type' => 'Seda pildifaili ei olnud võimalik lugeda. Aktsepteeritud failitüübid on jpg, webp, png, gif ja svg. Selle faili Mime-tüüp on: :mimetype.',
'import' => 'Impordi', 'import' => 'Impordi',
'import_this_file' => 'Map fields and process this file', 'import_this_file' => 'Kaardista väljad ja töötle see fail',
'importing' => 'Importimine', 'importing' => 'Importimine',
'importing_help' => 'CSV-faili kaudu saate importida vahendeid, tarvikuid, litsentse, komponente, kulumaterjale ja kasutajaid. <br><br>CSV peaks olema komadega eraldatud ja vormindatud päistega, mis ühtivad <a href="https://snipe-it.readme.io/docs/importing" target="_new">CSV-de näidistega dokumentatsioonis</a>.', 'importing_help' => 'CSV-faili kaudu saate importida vahendeid, tarvikuid, litsentse, komponente, kulumaterjale ja kasutajaid. <br><br>CSV peaks olema komadega eraldatud ja vormindatud päistega, mis ühtivad <a href="https://snipe-it.readme.io/docs/importing" target="_new">CSV-de näidistega dokumentatsioonis</a>.',
'import-history' => 'Impordi ajalugu', 'import-history' => 'Impordi ajalugu',
'asset_maintenance' => 'Varade hooldus', 'asset_maintenance' => 'Varade hooldus',
'asset_maintenance_report' => 'Varade hooldusaruanne', 'asset_maintenance_report' => 'Varade hooldusaruanne',
'asset_maintenances' => 'Vara säilimine', 'asset_maintenances' => 'Vara säilimine',
'item' => 'Kirje', 'item' => 'Vara',
'item_name' => 'Üksuse nimi', 'item_name' => 'Üksuse nimi',
'import_file' => 'impordi CSV fail', 'import_file' => 'impordi CSV fail',
'import_type' => 'CSV impordi tüüp', 'import_type' => 'CSV impordi tüüp',
@ -184,17 +184,17 @@ return [
'licenses_available' => 'Vabad litsentsid', 'licenses_available' => 'Vabad litsentsid',
'licenses' => 'Litsentsid', 'licenses' => 'Litsentsid',
'list_all' => 'Kuva kõik', 'list_all' => 'Kuva kõik',
'loading' => 'Loading... please wait...', 'loading' => 'Laadimine... palun oota...',
'lock_passwords' => 'Selle välja väärtust demoinstallatsioonis ei salvestata.', 'lock_passwords' => 'Selle välja väärtust demoinstallatsioonis ei salvestata.',
'feature_disabled' => 'See funktsioon on demo installimisel keelatud.', 'feature_disabled' => 'See funktsioon on demo installimisel keelatud.',
'location' => 'Asukoht', 'location' => 'Asukoht',
'location_plural' => 'Location|Locations', 'location_plural' => 'Asukoht|Asukohad',
'locations' => 'Asukohad', 'locations' => 'Asukohad',
'logo_size' => 'Ruudukujulised logod näevad parimad välja logo + tekstiga. Logo maksimaalne kuvatav suurus on 50 pikslit kõrge x 500 pikslit lai. ', 'logo_size' => 'Ruudukujulised logod näevad parimad välja logo + tekstiga. Logo maksimaalne kuvatav suurus on 50 pikslit kõrge x 500 pikslit lai. ',
'logout' => 'Logi välja', 'logout' => 'Logi välja',
'lookup_by_tag' => 'Varatüübi järgi otsimine', 'lookup_by_tag' => 'Varatüübi järgi otsimine',
'maintenances' => 'Hooldus', 'maintenances' => 'Hooldus',
'manage_api_keys' => 'Manage API keys', 'manage_api_keys' => 'Halda API võtmeid',
'manufacturer' => 'Tootja', 'manufacturer' => 'Tootja',
'manufacturers' => 'Tootjad', 'manufacturers' => 'Tootjad',
'markdown' => 'See väli lubab <a href="https://help.github.com/articles/github-flavored-markdown/">Githubi maitsestatud markdown</a>.', 'markdown' => 'See väli lubab <a href="https://help.github.com/articles/github-flavored-markdown/">Githubi maitsestatud markdown</a>.',
@ -207,8 +207,8 @@ return [
'new_password' => 'Uus parool', 'new_password' => 'Uus parool',
'next' => 'Järgmine', 'next' => 'Järgmine',
'next_audit_date' => 'Järgmine auditi kuupäev', 'next_audit_date' => 'Järgmine auditi kuupäev',
'next_audit_date_help' => 'If you use auditing in your organization, this is usually automatically calculated based on the asset&apos;s last audit date and audit frequency (in <code>Admin Settings &gt; Alerts</code>) and you can leave this blank. You can manually set this date here if you need to, but it must be later than the last audit date. ', 'next_audit_date_help' => 'Kui kasutate oma organisatsioonis auditeerimist, arvutatakse see tavaliselt automaatselt vara&apos; viimase auditi kuupäeva ja auditi sageduse (<code>Administraatori seaded &gt;> Teavitused</code>) alusel ning võite selle tühjaks jätta. Kui teil on vaja, saate selle kuupäeva siin käsitsi määrata, kuid see peab olema hilisem kui viimane auditi kuupäev. ',
'audit_images_help' => 'You can find audit images in the asset\'s history tab.', 'audit_images_help' => 'Auditipildid leiate vara ajaloo vahekaardilt.',
'no_email' => 'Selle kasutajaga ei ole seotud e-posti aadressi', 'no_email' => 'Selle kasutajaga ei ole seotud e-posti aadressi',
'last_audit' => 'Viimane audit', 'last_audit' => 'Viimane audit',
'new' => 'uus!', 'new' => 'uus!',
@ -230,7 +230,7 @@ return [
'purchase_date' => 'Ostu kuupäev', 'purchase_date' => 'Ostu kuupäev',
'qty' => 'Hulk', 'qty' => 'Hulk',
'quantity' => 'Hulk', 'quantity' => 'Hulk',
'quantity_minimum' => 'You have one item below or almost below minimum quantity levels|You have :count items below or almost below minimum quantity levels', 'quantity_minimum' => 'Teil on üks vara allpool või peaaegu allpool minimaalset kogustaset.Teil on :count eset allpool või peaaegu allpool minimaalset kogustaset',
'quickscan_checkin' => 'Kiire check-in (Quick scan)', 'quickscan_checkin' => 'Kiire check-in (Quick scan)',
'quickscan_checkin_status' => 'Tagastamise olek', 'quickscan_checkin_status' => 'Tagastamise olek',
'ready_to_deploy' => 'Kasutamine valmis', 'ready_to_deploy' => 'Kasutamine valmis',
@ -241,13 +241,13 @@ return [
'restored' => 'taastatud', 'restored' => 'taastatud',
'restore' => 'Taasta', 'restore' => 'Taasta',
'requestable_models' => 'Taotletavad mudelid', 'requestable_models' => 'Taotletavad mudelid',
'requestable_items' => 'Requestable Items', 'requestable_items' => 'Taotletavad mudelid',
'requested' => 'Taotletud', 'requested' => 'Taotletud',
'requested_date' => 'Taotletav kuupäev', 'requested_date' => 'Taotletav kuupäev',
'requested_assets' => 'Taotletavad vahendid', 'requested_assets' => 'Taotletavad vahendid',
'requested_assets_menu' => 'Vaadake taotletud vahendeid', 'requested_assets_menu' => 'Vaadake taotletud vahendeid',
'request_canceled' => 'Taotlus tühistati', 'request_canceled' => 'Taotlus tühistati',
'request_item' => 'Request this item', 'request_item' => 'Taotle seda vara',
'external_link_tooltip' => 'External link to', 'external_link_tooltip' => 'External link to',
'save' => 'Salvesta', 'save' => 'Salvesta',
'select_var' => 'Select :thing... ', // this will eventually replace all of our other selects 'select_var' => 'Select :thing... ', // this will eventually replace all of our other selects
@ -255,7 +255,7 @@ return [
'select_all' => 'Vali kõik', 'select_all' => 'Vali kõik',
'search' => 'Otsi', 'search' => 'Otsi',
'select_category' => 'Vali kategooria', 'select_category' => 'Vali kategooria',
'select_datasource' => 'Select a data source', 'select_datasource' => 'Vali andmeallikas',
'select_department' => 'Valige osakond', 'select_department' => 'Valige osakond',
'select_depreciation' => 'Vali amortisatsioonitüüp', 'select_depreciation' => 'Vali amortisatsioonitüüp',
'select_location' => 'Vali asukoht', 'select_location' => 'Vali asukoht',
@ -275,20 +275,20 @@ return [
'signed_off_by' => 'Allkiri', 'signed_off_by' => 'Allkiri',
'skin' => 'Väljanägemine', 'skin' => 'Väljanägemine',
'webhook_msg_note' => 'A notification will be sent via webhook', 'webhook_msg_note' => 'A notification will be sent via webhook',
'webhook_test_msg' => 'Oh hai! It looks like your :app integration with Snipe-IT is working!', 'webhook_test_msg' => 'Juhhuu! Näib, et teie :app integratsioon Snipe-IT-ga töötab!',
'some_features_disabled' => 'DEMOVERSIOON: Selles installatsioonis mõned funktsioonid ei tööta.', 'some_features_disabled' => 'DEMOVERSIOON: Selles installatsioonis mõned funktsioonid ei tööta.',
'site_name' => 'Saidi nimi', 'site_name' => 'Saidi nimi',
'state' => 'Maakond', 'state' => 'Maakond',
'status_labels' => 'Oleku sildid', 'status_labels' => 'Oleku sildid',
'status_label' => 'Status Label', 'status_label' => 'Oleku silt',
'status' => 'Staatus', 'status' => 'Staatus',
'accept_eula' => 'Lõppkasutaja litsentsilepinguga nõustumine', 'accept_eula' => 'Lõppkasutaja litsentsilepinguga nõustumine',
'show_or_hide_eulas' => 'Show/Hide EULAs', 'show_or_hide_eulas' => 'Kuva/Peida kasutustingimused',
'supplier' => 'Tarnija', 'supplier' => 'Tarnija',
'suppliers' => 'Tarnijad', 'suppliers' => 'Tarnijad',
'sure_to_delete' => 'Kas olete kindel, et soovite kustutada', 'sure_to_delete' => 'Kas olete kindel, et soovite kustutada',
'sure_to_delete_var' => 'Kas olete kindel, et soovite kustutada :item?', 'sure_to_delete_var' => 'Kas olete kindel, et soovite kustutada :item?',
'delete_what' => 'Delete :item', 'delete_what' => 'Kustuta :item',
'submit' => 'Kinnita', 'submit' => 'Kinnita',
'target' => 'Sihtimine', 'target' => 'Sihtimine',
'time_and_date_display' => 'Kellaaja ja kuupäeva kuvamine', 'time_and_date_display' => 'Kellaaja ja kuupäeva kuvamine',
@ -307,7 +307,7 @@ return [
'user' => 'Kasutaja', 'user' => 'Kasutaja',
'accepted' => 'aktsepteeritud', 'accepted' => 'aktsepteeritud',
'declined' => 'tagasi lükatud', 'declined' => 'tagasi lükatud',
'declined_note' => 'Declined Notes', 'declined_note' => 'Tagasilükatud märkmed',
'unassigned' => 'Määramata', 'unassigned' => 'Määramata',
'unaccepted_asset_report' => 'Mitteaktsepteeritud varad', 'unaccepted_asset_report' => 'Mitteaktsepteeritud varad',
'users' => 'Kasutajad', 'users' => 'Kasutajad',
@ -320,22 +320,22 @@ return [
'yes' => 'Jah', 'yes' => 'Jah',
'zip' => 'Postiindeks', 'zip' => 'Postiindeks',
'noimage' => 'Pilti pole üles laaditud või pilti ei leitud.', 'noimage' => 'Pilti pole üles laaditud või pilti ei leitud.',
'file_does_not_exist' => 'The requested file does not exist on the server.', 'file_does_not_exist' => 'Nõutud faili ei eksisteeri serveris.',
'file_upload_success' => 'Faili üleslaadimine õnnestus!', 'file_upload_success' => 'Faili üleslaadimine õnnestus!',
'no_files_uploaded' => 'Faili üleslaadimine õnnestus!', 'no_files_uploaded' => 'Faili üleslaadimine õnnestus!',
'token_expired' => 'Teie vormi seanss on aegunud. Palun proovi uuesti.', 'token_expired' => 'Teie vormi seanss on aegunud. Palun proovi uuesti.',
'login_enabled' => 'Sisselogimine lubatud', 'login_enabled' => 'Sisselogimine lubatud',
'audit_due' => 'Audit', 'audit_due' => 'Audit',
'audit_due_days' => 'Assets Due for Audit Within :days Day|Assets Due for Audit Within :days Days', 'audit_due_days' => 'Auditiks vajalikud varad :days päeva jooksulAuditiks vajalikud varad :days päeva jooksul',
'checkin_due' => 'Due for Checkin', 'checkin_due' => 'Tagastamiseks vajalik',
'checkin_overdue' => 'Overdue for Checkin', 'checkin_overdue' => 'Tagastamise tähtaeg ületatud',
'checkin_due_days' => 'Assets Due for Checkin Within :days Day|Assets Due for Checkin Within :days Days', 'checkin_due_days' => 'Assets Due for Checkin Within :days Day|Assets Due for Checkin Within :days Days',
'audit_overdue' => 'Hilinenud audit', 'audit_overdue' => 'Hilinenud audit',
'accept' => 'Kinnita :asset', 'accept' => 'Kinnita :asset',
'i_accept' => 'Ma kinnitan', 'i_accept' => 'Ma kinnitan',
'i_decline' => 'Ma keeldun', 'i_decline' => 'Ma keeldun',
'accept_decline' => 'Aktsepteeri/Keeldu', 'accept_decline' => 'Aktsepteeri/Keeldu',
'sign_tos' => 'Sign below to indicate that you agree to the terms of service:', 'sign_tos' => 'Allkirjasta allpool, et kinnitada oma nõusolekut teenusetingimustega:',
'clear_signature' => 'Puhasta allkirja väli', 'clear_signature' => 'Puhasta allkirja väli',
'show_help' => 'Näita abi', 'show_help' => 'Näita abi',
'hide_help' => 'Peida abi', 'hide_help' => 'Peida abi',
@ -343,15 +343,15 @@ return [
'hide_deleted' => 'Peida kustutatud', 'hide_deleted' => 'Peida kustutatud',
'email' => 'E-mail', 'email' => 'E-mail',
'do_not_change' => 'Do not change', 'do_not_change' => 'Do not change',
'bug_report' => 'Report a bug', 'bug_report' => 'Teata veast',
'user_manual' => 'Kasutusjuhend', 'user_manual' => 'Kasutusjuhend',
'setup_step_1' => 'Step 1', 'setup_step_1' => 'Step 1',
'setup_step_2' => 'Step 2', 'setup_step_2' => 'Step 2',
'setup_step_3' => 'Step 3', 'setup_step_3' => 'Step 3',
'setup_step_4' => 'Step 4', 'setup_step_4' => 'Step 4',
'setup_config_check' => 'Configuration Check', 'setup_config_check' => 'Configuration Check',
'setup_create_database' => 'Create database tables', 'setup_create_database' => 'Loo andmebaasi tabelid',
'setup_create_admin' => 'Create an admin user', 'setup_create_admin' => 'Loo admin kasutaja',
'setup_done' => 'Lõpetatud!', 'setup_done' => 'Lõpetatud!',
'bulk_edit_about_to' => 'Oled muutmas järgnevat: ', 'bulk_edit_about_to' => 'Oled muutmas järgnevat: ',
'checked_out' => 'Väljastatud', 'checked_out' => 'Väljastatud',
@ -360,14 +360,14 @@ return [
'last_checkout' => 'Viimati väljastatud', 'last_checkout' => 'Viimati väljastatud',
'due_to_checkin' => 'Järgnevad :count üksust tuleb peagi tagastada:', 'due_to_checkin' => 'Järgnevad :count üksust tuleb peagi tagastada:',
'expected_checkin' => 'Eeldatav tagastus', 'expected_checkin' => 'Eeldatav tagastus',
'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.', 'reminder_checked_out_items' => 'See on meeldetuletus teile väljastatud varadest. Kui tunnete, et see nimekiri on ebatäpne (midagi on puudu või midagi on siin, mida te usute, et te pole kunagi saanud), siis palun saatke e-kiri aadressile :reply_to_name aadressil :reply_to_address.',
'changed' => 'Muudetud', 'changed' => 'Muudetud',
'to' => 'To', 'to' => '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> '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>', <p>If you would like to export only certain assets, use the options below to fine-tune your results.</p>',
'range' => 'Vahemik', 'range' => 'Vahemik',
'bom_remark' => 'Add a BOM (byte-order mark) to this CSV', 'bom_remark' => 'Lisa sellele CSV-le BOM (baiti järjekorra mark)',
'improvements' => 'Improvements', 'improvements' => 'Täiendused',
'information' => 'Informatsioon', 'information' => 'Informatsioon',
'permissions' => 'Õigused', 'permissions' => 'Õigused',
'managed_ldap' => '(Managed via LDAP)', 'managed_ldap' => '(Managed via LDAP)',

View file

@ -54,9 +54,9 @@ return [
'expires' => 'Aegub', 'expires' => 'Aegub',
'hello' => 'Tere', 'hello' => 'Tere',
'hi' => 'Tere', 'hi' => 'Tere',
'i_have_read' => 'Olen lugenud ja nõustun kasutustingimustega ja saanud selle kirje.', 'i_have_read' => 'Olen lugenud ja nõustun kasutustingimustega ja saanud selle vara.',
'inventory_report' => 'Inventari aruanne', 'inventory_report' => 'Inventari aruanne',
'item' => 'Kirje', 'item' => 'Vara',
'item_checked_reminder' => 'This is a reminder that you currently have :count items checked out to you that you have not accepted or declined. Please click the link below to confirm your decision.', 'item_checked_reminder' => 'This is a reminder that you currently have :count items checked out to you that you have not accepted or declined. Please click the link below to confirm your decision.',
'license_expiring_alert' => ':count litsents aegub järgmise :threshold päeva jooksul.|:count litsentsi aegub järgmise :threshold päeva jooksul.', 'license_expiring_alert' => ':count litsents aegub järgmise :threshold päeva jooksul.|:count litsentsi aegub järgmise :threshold päeva jooksul.',
'link_to_update_password' => 'Klienditeenuse uuendamiseks klõpsake järgmisel lingil:', 'link_to_update_password' => 'Klienditeenuse uuendamiseks klõpsake järgmisel lingil:',

View file

@ -5,7 +5,7 @@ return array(
'actions' => 'Tegevused', 'actions' => 'Tegevused',
'action' => 'Tegevus', 'action' => 'Tegevus',
'by' => 'Kes', 'by' => 'Kes',
'item' => 'Kirje', 'item' => 'Vara',
'no_matching_records' => 'No matching records found', 'no_matching_records' => 'No matching records found',
); );

View file

@ -13,7 +13,7 @@ return [
| |
*/ */
'accepted' => 'The :attribute field must be accepted.', 'accepted' => ':attribute väli peab olema aktsepteeritud.',
'accepted_if' => 'The :attribute field must be accepted when :other is :value.', 'accepted_if' => 'The :attribute field must be accepted when :other is :value.',
'active_url' => 'The :attribute field must be a valid URL.', 'active_url' => 'The :attribute field must be a valid URL.',
'after' => 'The :attribute field must be a date after :date.', 'after' => 'The :attribute field must be a date after :date.',

View file

@ -381,6 +381,8 @@ return [
'two_factor_enrollment_text' => "احراز هویت دو عامل لازم است، اما دستگاه شما هنوز ثبت نشده است. برنامه Google Authenticator خود را باز کنید و کد QR زیر را برای ثبت نام دستگاه خود اسکن کنید. هنگامی که دستگاه خود را ثبت نام کردید، کد زیر را وارد کنید", 'two_factor_enrollment_text' => "احراز هویت دو عامل لازم است، اما دستگاه شما هنوز ثبت نشده است. برنامه Google Authenticator خود را باز کنید و کد QR زیر را برای ثبت نام دستگاه خود اسکن کنید. هنگامی که دستگاه خود را ثبت نام کردید، کد زیر را وارد کنید",
'require_accept_signature' => 'امضا لازم است', 'require_accept_signature' => 'امضا لازم است',
'require_accept_signature_help_text' => 'فعال کردن این ویژگی، کاربران را مجبور به فیزیکی در پذیرش یک دارایی می کند.', 'require_accept_signature_help_text' => 'فعال کردن این ویژگی، کاربران را مجبور به فیزیکی در پذیرش یک دارایی می کند.',
'require_checkinout_notes' => 'Require Notes on Checkin/Checkout',
'require_checkinout_notes_help_text' => 'Enabling this feature will require the note fields to be populated when checking in or checking out an asset.',
'left' => 'چپ', 'left' => 'چپ',
'right' => 'راست', 'right' => 'راست',
'top' => 'بالا', 'top' => 'بالا',

View file

@ -280,6 +280,8 @@ return [
'two_factor_enrollment_text' => "Kaksivaiheinen tunnistautuminen vaaditaan, mutta et ole rekisteröinyt itsellesi laitetta. Avaa Google Authenticator -sovellus ja skannaa alla oleva QR-koodi rekisteröidäksesi laitteesi. Kun olet rekisteröinyt laitteesi, kirjoita koodi", 'two_factor_enrollment_text' => "Kaksivaiheinen tunnistautuminen vaaditaan, mutta et ole rekisteröinyt itsellesi laitetta. Avaa Google Authenticator -sovellus ja skannaa alla oleva QR-koodi rekisteröidäksesi laitteesi. Kun olet rekisteröinyt laitteesi, kirjoita koodi",
'require_accept_signature' => 'Vaadi allekirjoitus', 'require_accept_signature' => 'Vaadi allekirjoitus',
'require_accept_signature_help_text' => 'Tämän ominaisuuden ottaminen käyttöön edellyttää käyttäjiltä allekirjoitusta hyväksymisen yhteydessä.', 'require_accept_signature_help_text' => 'Tämän ominaisuuden ottaminen käyttöön edellyttää käyttäjiltä allekirjoitusta hyväksymisen yhteydessä.',
'require_checkinout_notes' => 'Require Notes on Checkin/Checkout',
'require_checkinout_notes_help_text' => 'Enabling this feature will require the note fields to be populated when checking in or checking out an asset.',
'left' => 'vasen', 'left' => 'vasen',
'right' => 'oikea', 'right' => 'oikea',
'top' => 'ylä', 'top' => 'ylä',

View file

@ -280,6 +280,8 @@ return [
'two_factor_enrollment_text' => "Ang Two factor authentication ay kinakailangan, gayunpaman ang iyong device ay hindi ma na-enroll. Buksan mo ang itong Google Authenticator app at i-scan ang QR code sa ibaba para ma-enroll ang iyong device. Kapag na-enroll na ang device. i-enter ang code sa ibaba", 'two_factor_enrollment_text' => "Ang Two factor authentication ay kinakailangan, gayunpaman ang iyong device ay hindi ma na-enroll. Buksan mo ang itong Google Authenticator app at i-scan ang QR code sa ibaba para ma-enroll ang iyong device. Kapag na-enroll na ang device. i-enter ang code sa ibaba",
'require_accept_signature' => 'Nangangailangan ng Pag-lagda', 'require_accept_signature' => 'Nangangailangan ng Pag-lagda',
'require_accept_signature_help_text' => 'Sa pagpapagana ng katangian nito ay nangangailangan sa mga gumagamit na pisikal na mag-sign off sa pagtanggap ng isang asset.', 'require_accept_signature_help_text' => 'Sa pagpapagana ng katangian nito ay nangangailangan sa mga gumagamit na pisikal na mag-sign off sa pagtanggap ng isang asset.',
'require_checkinout_notes' => 'Require Notes on Checkin/Checkout',
'require_checkinout_notes_help_text' => 'Enabling this feature will require the note fields to be populated when checking in or checking out an asset.',
'left' => 'kaliwa', 'left' => 'kaliwa',
'right' => 'kanan', 'right' => 'kanan',
'top' => 'itaas', 'top' => 'itaas',

View file

@ -280,6 +280,8 @@ return [
'two_factor_enrollment_text' => "Lauthentification à deux facteurs est nécessaire, mais votre appareil na pas encore été inscrit. Ouvrez votre application Google Authenticator et scanner le code QR ci-dessous pour inscrire votre appareil. Une fois que vous avez inscrit votre appareil, saisissez le code ci-dessous", 'two_factor_enrollment_text' => "Lauthentification à deux facteurs est nécessaire, mais votre appareil na pas encore été inscrit. Ouvrez votre application Google Authenticator et scanner le code QR ci-dessous pour inscrire votre appareil. Une fois que vous avez inscrit votre appareil, saisissez le code ci-dessous",
'require_accept_signature' => 'Exiger la signature', 'require_accept_signature' => 'Exiger la signature',
'require_accept_signature_help_text' => 'L\'activation de cette fonctionnalité nécessite que les utilisateurs signent physiquement l\'acceptation de cet actif.', 'require_accept_signature_help_text' => 'L\'activation de cette fonctionnalité nécessite que les utilisateurs signent physiquement l\'acceptation de cet actif.',
'require_checkinout_notes' => 'Require Notes on Checkin/Checkout',
'require_checkinout_notes_help_text' => 'Enabling this feature will require the note fields to be populated when checking in or checking out an asset.',
'left' => 'gauche', 'left' => 'gauche',
'right' => 'droite', 'right' => 'droite',
'top' => 'haut', 'top' => 'haut',

View file

@ -280,6 +280,8 @@ return [
'two_factor_enrollment_text' => "Tá dhá fhíordheimhniú fachtóir ag teastáil, áfach, nach bhfuil do ghléas cláraithe fós. Oscail d'iarratas Google Authenticator agus scrúdaigh an cód QR thíos chun do ghléas a chlárú. Nuair atá tú ag clárú do gléas, cuir isteach an cód thíos", 'two_factor_enrollment_text' => "Tá dhá fhíordheimhniú fachtóir ag teastáil, áfach, nach bhfuil do ghléas cláraithe fós. Oscail d'iarratas Google Authenticator agus scrúdaigh an cód QR thíos chun do ghléas a chlárú. Nuair atá tú ag clárú do gléas, cuir isteach an cód thíos",
'require_accept_signature' => 'A cheangal Síniú', 'require_accept_signature' => 'A cheangal Síniú',
'require_accept_signature_help_text' => 'Éileoidh an chumas seo a chumasú d\'úsáideoirí comhartha a dhéanamh go fisiciúil ar ghlacadh sócmhainne.', 'require_accept_signature_help_text' => 'Éileoidh an chumas seo a chumasú d\'úsáideoirí comhartha a dhéanamh go fisiciúil ar ghlacadh sócmhainne.',
'require_checkinout_notes' => 'Require Notes on Checkin/Checkout',
'require_checkinout_notes_help_text' => 'Enabling this feature will require the note fields to be populated when checking in or checking out an asset.',
'left' => 'ar chlé', 'left' => 'ar chlé',
'right' => 'ceart', 'right' => 'ceart',
'top' => 'barr', 'top' => 'barr',

View file

@ -280,6 +280,8 @@ return [
'two_factor_enrollment_text' => "יש צורך באימות שני גורמים, אך המכשיר עדיין לא נרשם. פתח את אפליקציית המאמת של Google וסרוק את קוד QR שלהלן כדי לרשום את המכשיר שלך. לאחר שתירשם את המכשיר, הזן את הקוד הבא", 'two_factor_enrollment_text' => "יש צורך באימות שני גורמים, אך המכשיר עדיין לא נרשם. פתח את אפליקציית המאמת של Google וסרוק את קוד QR שלהלן כדי לרשום את המכשיר שלך. לאחר שתירשם את המכשיר, הזן את הקוד הבא",
'require_accept_signature' => 'דרוש חתימה', 'require_accept_signature' => 'דרוש חתימה',
'require_accept_signature_help_text' => 'הפעלת תכונה זו תדרוש ממשתמשים להיכנס פיזית בעת קבלת נכס.', 'require_accept_signature_help_text' => 'הפעלת תכונה זו תדרוש ממשתמשים להיכנס פיזית בעת קבלת נכס.',
'require_checkinout_notes' => 'Require Notes on Checkin/Checkout',
'require_checkinout_notes_help_text' => 'Enabling this feature will require the note fields to be populated when checking in or checking out an asset.',
'left' => 'שמאלה', 'left' => 'שמאלה',
'right' => 'ימין', 'right' => 'ימין',
'top' => 'חלק עליון', 'top' => 'חלק עליון',

View file

@ -280,6 +280,8 @@ return [
'two_factor_enrollment_text' => "Potrebna je autentikacija dva faktora, međutim vaš uređaj još nije upisan. Otvorite aplikaciju Google autentifikator i skenirajte QR kôd u nastavku da biste registrirali svoj uređaj. Nakon što upišete uređaj, unesite kôd u nastavku", 'two_factor_enrollment_text' => "Potrebna je autentikacija dva faktora, međutim vaš uređaj još nije upisan. Otvorite aplikaciju Google autentifikator i skenirajte QR kôd u nastavku da biste registrirali svoj uređaj. Nakon što upišete uređaj, unesite kôd u nastavku",
'require_accept_signature' => 'Potražite potpis', 'require_accept_signature' => 'Potražite potpis',
'require_accept_signature_help_text' => 'Ako omogućite tu značajku, korisnici će se morati fizički odjaviti pri prihvaćanju imovine.', 'require_accept_signature_help_text' => 'Ako omogućite tu značajku, korisnici će se morati fizički odjaviti pri prihvaćanju imovine.',
'require_checkinout_notes' => 'Require Notes on Checkin/Checkout',
'require_checkinout_notes_help_text' => 'Enabling this feature will require the note fields to be populated when checking in or checking out an asset.',
'left' => 'lijevo', 'left' => 'lijevo',
'right' => 'pravo', 'right' => 'pravo',
'top' => 'vrh', 'top' => 'vrh',

View file

@ -280,6 +280,8 @@ return [
'two_factor_enrollment_text' => "Két tényező hitelesítésre van szükség, de a készülék még nem került bejegyzésre. Nyissa meg a Google Hitelesítő alkalmazást, és szkennelje be az alábbi QR-kódot a készülék regisztrálásához. Miután beírta a készüléket, adja meg az alábbi kódot", 'two_factor_enrollment_text' => "Két tényező hitelesítésre van szükség, de a készülék még nem került bejegyzésre. Nyissa meg a Google Hitelesítő alkalmazást, és szkennelje be az alábbi QR-kódot a készülék regisztrálásához. Miután beírta a készüléket, adja meg az alábbi kódot",
'require_accept_signature' => 'Aláírásra van szükség', 'require_accept_signature' => 'Aláírásra van szükség',
'require_accept_signature_help_text' => 'Ha engedélyezni szeretné ezt a funkciót, akkor a felhasználóknak fizikailag ki kell jelentkezniük egy eszköz elfogadásáról.', 'require_accept_signature_help_text' => 'Ha engedélyezni szeretné ezt a funkciót, akkor a felhasználóknak fizikailag ki kell jelentkezniük egy eszköz elfogadásáról.',
'require_checkinout_notes' => 'Require Notes on Checkin/Checkout',
'require_checkinout_notes_help_text' => 'Enabling this feature will require the note fields to be populated when checking in or checking out an asset.',
'left' => 'balra', 'left' => 'balra',
'right' => 'jobb', 'right' => 'jobb',
'top' => 'felső', 'top' => 'felső',

View file

@ -280,6 +280,8 @@ return [
'two_factor_enrollment_text' => "Diperlukan dua faktor otentikasi, namun perangkat Anda belum terdaftar. Buka aplikasi Google Authenticator Anda dan pindai kode QR di bawah ini untuk mendaftarkan perangkat Anda. Setelah mendaftarkan perangkat Anda, masukkan kode di bawah ini", 'two_factor_enrollment_text' => "Diperlukan dua faktor otentikasi, namun perangkat Anda belum terdaftar. Buka aplikasi Google Authenticator Anda dan pindai kode QR di bawah ini untuk mendaftarkan perangkat Anda. Setelah mendaftarkan perangkat Anda, masukkan kode di bawah ini",
'require_accept_signature' => 'Membutuhkan tanda tangan', 'require_accept_signature' => 'Membutuhkan tanda tangan',
'require_accept_signature_help_text' => 'Mengaktifkan fitur ini akan mengharuskan pengguna untuk secara fisik menandatangani untuk menerima aset.', 'require_accept_signature_help_text' => 'Mengaktifkan fitur ini akan mengharuskan pengguna untuk secara fisik menandatangani untuk menerima aset.',
'require_checkinout_notes' => 'Require Notes on Checkin/Checkout',
'require_checkinout_notes_help_text' => 'Enabling this feature will require the note fields to be populated when checking in or checking out an asset.',
'left' => 'kiri', 'left' => 'kiri',
'right' => 'kanan', 'right' => 'kanan',
'top' => 'atas', 'top' => 'atas',

View file

@ -280,6 +280,8 @@ return [
'two_factor_enrollment_text' => "Two factor authentication is required, however your device has not been enrolled yet. Open your Google Authenticator app and scan the QR code below to enroll your device. Once you've enrolled your device, enter the code below", 'two_factor_enrollment_text' => "Two factor authentication is required, however your device has not been enrolled yet. Open your Google Authenticator app and scan the QR code below to enroll your device. Once you've enrolled your device, enter the code below",
'require_accept_signature' => 'Krefjast undirskriftar', 'require_accept_signature' => 'Krefjast undirskriftar',
'require_accept_signature_help_text' => 'Enabling this feature will require users to physically sign off on accepting an asset.', 'require_accept_signature_help_text' => 'Enabling this feature will require users to physically sign off on accepting an asset.',
'require_checkinout_notes' => 'Require Notes on Checkin/Checkout',
'require_checkinout_notes_help_text' => 'Enabling this feature will require the note fields to be populated when checking in or checking out an asset.',
'left' => 'vinstri', 'left' => 'vinstri',
'right' => 'hægri', 'right' => 'hægri',
'top' => 'top', 'top' => 'top',

View file

@ -280,6 +280,8 @@ return [
'two_factor_enrollment_text' => "È necessaria l'autenticazione di due fattori, tuttavia il tuo dispositivo non è ancora stato iscritto. Apri l'applicazione Google Authenticator e analizza il codice QR qui sotto per iscriverti al tuo dispositivo. Una volta che hai iscritto il tuo dispositivo, inserisci il codice qui sotto", 'two_factor_enrollment_text' => "È necessaria l'autenticazione di due fattori, tuttavia il tuo dispositivo non è ancora stato iscritto. Apri l'applicazione Google Authenticator e analizza il codice QR qui sotto per iscriverti al tuo dispositivo. Una volta che hai iscritto il tuo dispositivo, inserisci il codice qui sotto",
'require_accept_signature' => 'Richiedi la firma', 'require_accept_signature' => 'Richiedi la firma',
'require_accept_signature_help_text' => 'L\'attivazione di questa funzionalità richiede che gli utenti si connettano fisicamente all\'accettazione di un\'attività.', 'require_accept_signature_help_text' => 'L\'attivazione di questa funzionalità richiede che gli utenti si connettano fisicamente all\'accettazione di un\'attività.',
'require_checkinout_notes' => 'Richiedi note per Assegnazione/Restituzione',
'require_checkinout_notes_help_text' => 'Abilitando questa funzione, sarà obbligo compilare i campi note durante l\'Assegnazione o la Restituzione di un Bene.',
'left' => 'sinistra', 'left' => 'sinistra',
'right' => 'destra', 'right' => 'destra',
'top' => 'superiore', 'top' => 'superiore',

View file

@ -280,6 +280,8 @@ return [
'two_factor_enrollment_text' => "Two factor authentication is required, however your device has not been enrolled yet. Open your Google Authenticator app and scan the QR code below to enroll your device. Once you've enrolled your device, enter the code below", 'two_factor_enrollment_text' => "Two factor authentication is required, however your device has not been enrolled yet. Open your Google Authenticator app and scan the QR code below to enroll your device. Once you've enrolled your device, enter the code below",
'require_accept_signature' => 'Require Signature', 'require_accept_signature' => 'Require Signature',
'require_accept_signature_help_text' => 'Enabling this feature will require users to physically sign off on accepting an asset.', 'require_accept_signature_help_text' => 'Enabling this feature will require users to physically sign off on accepting an asset.',
'require_checkinout_notes' => 'Require Notes on Checkin/Checkout',
'require_checkinout_notes_help_text' => 'Enabling this feature will require the note fields to be populated when checking in or checking out an asset.',
'left' => 'left', 'left' => 'left',
'right' => 'right', 'right' => 'right',
'top' => 'top', 'top' => 'top',

View file

@ -283,6 +283,8 @@ return [
'two_factor_enrollment_text' => "二段階認証の登録が必要ですが、あなたのデバイスはまだ登録されていません。Google Authenticatorアプリを開き、下のQRコードをスキャンして端末を登録してください。端末を登録したら以下のコードを入力してください。", 'two_factor_enrollment_text' => "二段階認証の登録が必要ですが、あなたのデバイスはまだ登録されていません。Google Authenticatorアプリを開き、下のQRコードをスキャンして端末を登録してください。端末を登録したら以下のコードを入力してください。",
'require_accept_signature' => 'シグネチャリクエスト', 'require_accept_signature' => 'シグネチャリクエスト',
'require_accept_signature_help_text' => 'この機能を有効にするには、ユーザーが資産を受け入れる際に物理的にサインオフする必要があります。', 'require_accept_signature_help_text' => 'この機能を有効にするには、ユーザーが資産を受け入れる際に物理的にサインオフする必要があります。',
'require_checkinout_notes' => 'Require Notes on Checkin/Checkout',
'require_checkinout_notes_help_text' => 'Enabling this feature will require the note fields to be populated when checking in or checking out an asset.',
'left' => '左', 'left' => '左',
'right' => '右', 'right' => '右',
'top' => '上', 'top' => '上',

View file

@ -280,6 +280,8 @@ return [
'two_factor_enrollment_text' => "Two factor authentication is required, however your device has not been enrolled yet. Open your Google Authenticator app and scan the QR code below to enroll your device. Once you've enrolled your device, enter the code below", 'two_factor_enrollment_text' => "Two factor authentication is required, however your device has not been enrolled yet. Open your Google Authenticator app and scan the QR code below to enroll your device. Once you've enrolled your device, enter the code below",
'require_accept_signature' => 'Require Signature', 'require_accept_signature' => 'Require Signature',
'require_accept_signature_help_text' => 'Enabling this feature will require users to physically sign off on accepting an asset.', 'require_accept_signature_help_text' => 'Enabling this feature will require users to physically sign off on accepting an asset.',
'require_checkinout_notes' => 'Require Notes on Checkin/Checkout',
'require_checkinout_notes_help_text' => 'Enabling this feature will require the note fields to be populated when checking in or checking out an asset.',
'left' => 'left', 'left' => 'left',
'right' => 'right', 'right' => 'right',
'top' => 'top', 'top' => 'top',

View file

@ -280,6 +280,8 @@ return [
'two_factor_enrollment_text' => "2중 인증은 필수입니다만, 당신의 장치는 아직 등록되지 않았습니다. 구글 인증 앱을 실행하고 등록할 장치 아래의 QR 코드를 스캔하세요. 당신의 장치가 등록됐다면, 아래 코드를 입력하세요", 'two_factor_enrollment_text' => "2중 인증은 필수입니다만, 당신의 장치는 아직 등록되지 않았습니다. 구글 인증 앱을 실행하고 등록할 장치 아래의 QR 코드를 스캔하세요. 당신의 장치가 등록됐다면, 아래 코드를 입력하세요",
'require_accept_signature' => '서명 필수', 'require_accept_signature' => '서명 필수',
'require_accept_signature_help_text' => '이 기능을 활성화하면 자산 수락시에 물리적 서명을 필수로 하게 됩니다.', 'require_accept_signature_help_text' => '이 기능을 활성화하면 자산 수락시에 물리적 서명을 필수로 하게 됩니다.',
'require_checkinout_notes' => 'Require Notes on Checkin/Checkout',
'require_checkinout_notes_help_text' => 'Enabling this feature will require the note fields to be populated when checking in or checking out an asset.',
'left' => '왼쪽', 'left' => '왼쪽',
'right' => '오른쪽', 'right' => '오른쪽',
'top' => '위', 'top' => '위',

View file

@ -43,7 +43,7 @@ return [
'redirect_to_type' => 'Eiti į :type', 'redirect_to_type' => 'Eiti į :type',
'redirect_to_checked_out_to' => 'Eiti į išduotus', 'redirect_to_checked_out_to' => 'Eiti į išduotus',
'select_statustype' => 'Pasirinkite būsenos tipą', 'select_statustype' => 'Pasirinkite būsenos tipą',
'serial' => 'Serijos numeris', 'serial' => 'Serijinis numeris',
'status' => 'Būsena', 'status' => 'Būsena',
'tag' => 'Inventorinis numeris', 'tag' => 'Inventorinis numeris',
'update' => 'Turto atnaujinimas', 'update' => 'Turto atnaujinimas',

View file

@ -9,16 +9,16 @@ return [
'does_not_exist_or_not_requestable' => 'Tokio turto nėra arba jo negalima užsakyti.', 'does_not_exist_or_not_requestable' => 'Tokio turto nėra arba jo negalima užsakyti.',
'assoc_users' => 'Šis turtas šiuo metu yra išduotas naudotojui ir negali būti panaikintas. Pirmiausia paimkite turtą ir tuomet vėl bandykite jį panaikinti. ', 'assoc_users' => 'Šis turtas šiuo metu yra išduotas naudotojui ir negali būti panaikintas. Pirmiausia paimkite turtą ir tuomet vėl bandykite jį panaikinti. ',
'warning_audit_date_mismatch' => 'Šio turto kito audito data (:next_audit_date) yra ankstesnė už paskutinio audito datą (:last_audit_date). Atnaujinkite kito audito datą.', 'warning_audit_date_mismatch' => 'Šio turto kito audito data (:next_audit_date) yra ankstesnė už paskutinio audito datą (:last_audit_date). Atnaujinkite kito audito datą.',
'labels_generated' => 'Labels were successfully generated.', 'labels_generated' => 'Etiketės sugeneruotos sėkmingai.',
'error_generating_labels' => 'Error while generating labels.', 'error_generating_labels' => 'Generuojant etiketes įvyko klaida.',
'no_assets_selected' => 'No assets selected.', 'no_assets_selected' => 'Nepasirinktas joks turtas.',
'create' => [ 'create' => [
'error' => 'Turto sukurti nepavyko, bandykite dar kartą.', 'error' => 'Turto sukurti nepavyko, bandykite dar kartą.',
'success' => 'Turtas sukurtas sėkmingai.', 'success' => 'Turtas sukurtas sėkmingai.',
'success_linked' => 'Turtas su žyma :tag sukurtas sėkmingai. <strong><a href=":link" style="color: white;">Spustelėkite čia, kad peržiūrėtumėte</a></strong>.', 'success_linked' => 'Turtas su žyma :tag sukurtas sėkmingai. <strong><a href=":link" style="color: white;">Spustelėkite čia, kad peržiūrėtumėte</a></strong>.',
'multi_success_linked' => 'Asset with tag :links was created successfully.|:count assets were created succesfully. :links.', 'multi_success_linked' => 'Turtas su inventoriniu numeriu :links sukurtas sėkmingai.|:count turto vienetai(-ų) sukurti sėkmingai. :links.',
'partial_failure' => 'An asset was unable to be created. Reason: :failures|:count assets were unable to be created. Reasons: :failures', 'partial_failure' => 'Nepavyko sukurti turto. Priežastis: :failures|:count turto vienetų nepavyko sukurti. Priežastys: :failures',
], ],
'update' => [ 'update' => [

View file

@ -19,7 +19,7 @@ return [
'location' => 'Vieta', 'location' => 'Vieta',
'purchase_cost' => 'Kaina', 'purchase_cost' => 'Kaina',
'purchase_date' => 'Nupirkta', 'purchase_date' => 'Nupirkta',
'serial' => 'Serijos numeris', 'serial' => 'Serijinis numeris',
'status' => 'Būsena', 'status' => 'Būsena',
'title' => 'Turtas ', 'title' => 'Turtas ',
'image' => 'Įrenginio atvaizdas', 'image' => 'Įrenginio atvaizdas',

View file

@ -280,6 +280,8 @@ return [
'two_factor_enrollment_text' => "Būtina dviejų veiksnių autentifikacija, tačiau jūsų dar nesate užregistravę įrenginio. Norėdami užregistruoti įrenginį, jame atidarykite „Google Authenticator“ programą ir nuskaitykite čia pateiktą QR kodą. Užregistravę įrenginį, įveskite jo ekrane rodomą kodą į žemiau esantį lauką", 'two_factor_enrollment_text' => "Būtina dviejų veiksnių autentifikacija, tačiau jūsų dar nesate užregistravę įrenginio. Norėdami užregistruoti įrenginį, jame atidarykite „Google Authenticator“ programą ir nuskaitykite čia pateiktą QR kodą. Užregistravę įrenginį, įveskite jo ekrane rodomą kodą į žemiau esantį lauką",
'require_accept_signature' => 'Reikalauti parašo', 'require_accept_signature' => 'Reikalauti parašo',
'require_accept_signature_help_text' => 'Jei įjungsite šią funkciją, naudotojai turės fiziškai pasirašyti už jiems išduodamą turtą.', 'require_accept_signature_help_text' => 'Jei įjungsite šią funkciją, naudotojai turės fiziškai pasirašyti už jiems išduodamą turtą.',
'require_checkinout_notes' => 'Reikalauti pastabų paimant/išduodant',
'require_checkinout_notes_help_text' => 'Įjungus šią funkciją, bus būtina užpildyti pastabų laukus paimant ar išduodant turtą.',
'left' => 'kairėje', 'left' => 'kairėje',
'right' => 'dešinėje', 'right' => 'dešinėje',
'top' => 'viršuje', 'top' => 'viršuje',

View file

@ -560,7 +560,7 @@ return [
'something_went_wrong' => 'Kažkas negerai su jūsų užklausa.', 'something_went_wrong' => 'Kažkas negerai su jūsų užklausa.',
'close' => 'Uždaryti', 'close' => 'Uždaryti',
'expires' => 'Baigiasi', 'expires' => 'Baigiasi',
'map_fields'=> 'Map :item_type Fields', 'map_fields'=> 'Susieti :item_type laukus',
'remaining_var' => ':count liko', 'remaining_var' => ':count liko',
'label' => 'Etiketė', 'label' => 'Etiketė',
'import_asset_tag_exists' => 'Turtas su inventoriniu numeriu :asset_tag jau yra ir atnaujinimo užklausa nebuvo pateikta. Jokie pakeitimai nebuvo atlikti.', 'import_asset_tag_exists' => 'Turtas su inventoriniu numeriu :asset_tag jau yra ir atnaujinimo užklausa nebuvo pateikta. Jokie pakeitimai nebuvo atlikti.',

View file

@ -23,7 +23,7 @@ return [
'Item_Requested' => 'Daiktas užsakytas', 'Item_Requested' => 'Daiktas užsakytas',
'License_Checkin_Notification' => 'Licencija paimta', 'License_Checkin_Notification' => 'Licencija paimta',
'License_Checkout_Notification' => 'Licencija išduota', 'License_Checkout_Notification' => 'Licencija išduota',
'license_for' => 'License for', 'license_for' => 'Licencija skirta',
'Low_Inventory_Report' => 'Ataskaita apie mažas atsargas', 'Low_Inventory_Report' => 'Ataskaita apie mažas atsargas',
'a_user_canceled' => 'Naudotojas svetainėje atšaukė daikto užsakymą', 'a_user_canceled' => 'Naudotojas svetainėje atšaukė daikto užsakymą',
'a_user_requested' => 'Naudotojas svetainėje užsakė daiktą', 'a_user_requested' => 'Naudotojas svetainėje užsakė daiktą',

View file

@ -280,6 +280,8 @@ return [
'two_factor_enrollment_text' => "Nepieciešama divu faktoru autentifikācija, tomēr jūsu ierīce vēl nav reģistrēta. Atveriet savu lietotni Google autentifikators un skenējiet zemāk redzamo QR kodu, lai reģistrētu savu ierīci. Kad esat reģistrējies savā ierīcē, ievadiet zemāk redzamo kodu", 'two_factor_enrollment_text' => "Nepieciešama divu faktoru autentifikācija, tomēr jūsu ierīce vēl nav reģistrēta. Atveriet savu lietotni Google autentifikators un skenējiet zemāk redzamo QR kodu, lai reģistrētu savu ierīci. Kad esat reģistrējies savā ierīcē, ievadiet zemāk redzamo kodu",
'require_accept_signature' => 'Pieprasīt parakstu', 'require_accept_signature' => 'Pieprasīt parakstu',
'require_accept_signature_help_text' => 'Iespējojot šo funkciju, lietotājiem būs jāpiesaista aktīva pieņemšana.', 'require_accept_signature_help_text' => 'Iespējojot šo funkciju, lietotājiem būs jāpiesaista aktīva pieņemšana.',
'require_checkinout_notes' => 'Require Notes on Checkin/Checkout',
'require_checkinout_notes_help_text' => 'Enabling this feature will require the note fields to be populated when checking in or checking out an asset.',
'left' => 'pa kreisi', 'left' => 'pa kreisi',
'right' => 'pa labi', 'right' => 'pa labi',
'top' => 'tops', 'top' => 'tops',

View file

@ -280,6 +280,8 @@ return [
'two_factor_enrollment_text' => "E rua nga tohu motuhake e hiahiatia ana, ahakoa kuaore i whakauruhia to whakaaro. Whakatūwherahia tō taupānga Authenticator Google me te matawai i te waehere QR i raro nei hei whakauru i tō pūrere. I te wa i whakauruhia e koe to whakaaro, uruhia te waehere i raro nei", 'two_factor_enrollment_text' => "E rua nga tohu motuhake e hiahiatia ana, ahakoa kuaore i whakauruhia to whakaaro. Whakatūwherahia tō taupānga Authenticator Google me te matawai i te waehere QR i raro nei hei whakauru i tō pūrere. I te wa i whakauruhia e koe to whakaaro, uruhia te waehere i raro nei",
'require_accept_signature' => 'Me tono Waitohu', 'require_accept_signature' => 'Me tono Waitohu',
'require_accept_signature_help_text' => 'Ma te whakahoahoa i tenei ahua ka hiahia nga kaiwhakamahi ki te waitohu i te waahi ki te whakaae i tetahi taonga.', 'require_accept_signature_help_text' => 'Ma te whakahoahoa i tenei ahua ka hiahia nga kaiwhakamahi ki te waitohu i te waahi ki te whakaae i tetahi taonga.',
'require_checkinout_notes' => 'Require Notes on Checkin/Checkout',
'require_checkinout_notes_help_text' => 'Enabling this feature will require the note fields to be populated when checking in or checking out an asset.',
'left' => 'maui', 'left' => 'maui',
'right' => 'tika', 'right' => 'tika',
'top' => 'runga', 'top' => 'runga',

View file

@ -280,6 +280,8 @@ return [
'two_factor_enrollment_text' => "Потребна е автентикација на два фактор, но вашиот уред сè уште не е запишан. Отворете Google Authenticator апликација и скенирајте го QR кодот подолу за да го запишете вашиот уред. Откако ќе го запишате вашиот уред, внесете го кодот подолу", 'two_factor_enrollment_text' => "Потребна е автентикација на два фактор, но вашиот уред сè уште не е запишан. Отворете Google Authenticator апликација и скенирајте го QR кодот подолу за да го запишете вашиот уред. Откако ќе го запишате вашиот уред, внесете го кодот подолу",
'require_accept_signature' => 'Потребен потпис', 'require_accept_signature' => 'Потребен потпис',
'require_accept_signature_help_text' => 'Овозможувањето на оваа функција ќе бара од корисниците физички да се пријават за прифаќање на средства.', 'require_accept_signature_help_text' => 'Овозможувањето на оваа функција ќе бара од корисниците физички да се пријават за прифаќање на средства.',
'require_checkinout_notes' => 'Require Notes on Checkin/Checkout',
'require_checkinout_notes_help_text' => 'Enabling this feature will require the note fields to be populated when checking in or checking out an asset.',
'left' => 'лево', 'left' => 'лево',
'right' => 'десно', 'right' => 'десно',
'top' => 'врв', 'top' => 'врв',

View file

@ -280,6 +280,8 @@ return [
'two_factor_enrollment_text' => "Two factor authentication is required, however your device has not been enrolled yet. Open your Google Authenticator app and scan the QR code below to enroll your device. Once you've enrolled your device, enter the code below", 'two_factor_enrollment_text' => "Two factor authentication is required, however your device has not been enrolled yet. Open your Google Authenticator app and scan the QR code below to enroll your device. Once you've enrolled your device, enter the code below",
'require_accept_signature' => 'Require Signature', 'require_accept_signature' => 'Require Signature',
'require_accept_signature_help_text' => 'Enabling this feature will require users to physically sign off on accepting an asset.', 'require_accept_signature_help_text' => 'Enabling this feature will require users to physically sign off on accepting an asset.',
'require_checkinout_notes' => 'Require Notes on Checkin/Checkout',
'require_checkinout_notes_help_text' => 'Enabling this feature will require the note fields to be populated when checking in or checking out an asset.',
'left' => 'left', 'left' => 'left',
'right' => 'right', 'right' => 'right',
'top' => 'top', 'top' => 'top',

View file

@ -280,6 +280,8 @@ return [
'two_factor_enrollment_text' => "Хоёр хүчин зүйлийг баталгаажуулах шаардлагатай боловч таны төхөөрөмж одоогоор бүртгэгдээгүй байна. Google Authenticator аппликейшнийг нээж, төхөөрөмжөө бүртгүүлэхийн тулд доорх QR кодыг хайна уу. Та төхөөрөмжөө бүртгүүлснийхээ дараа доорх кодыг оруулна уу", 'two_factor_enrollment_text' => "Хоёр хүчин зүйлийг баталгаажуулах шаардлагатай боловч таны төхөөрөмж одоогоор бүртгэгдээгүй байна. Google Authenticator аппликейшнийг нээж, төхөөрөмжөө бүртгүүлэхийн тулд доорх QR кодыг хайна уу. Та төхөөрөмжөө бүртгүүлснийхээ дараа доорх кодыг оруулна уу",
'require_accept_signature' => 'Гарын үсэг зурах шаардлагатай', 'require_accept_signature' => 'Гарын үсэг зурах шаардлагатай',
'require_accept_signature_help_text' => 'Энэ функцийг идэвхжүүлэх нь хэрэглэгчид активыг хүлээн авахдаа биечлэн гарын үсэг зурах шаардлагатай болно.', 'require_accept_signature_help_text' => 'Энэ функцийг идэвхжүүлэх нь хэрэглэгчид активыг хүлээн авахдаа биечлэн гарын үсэг зурах шаардлагатай болно.',
'require_checkinout_notes' => 'Require Notes on Checkin/Checkout',
'require_checkinout_notes_help_text' => 'Enabling this feature will require the note fields to be populated when checking in or checking out an asset.',
'left' => 'үлдсэн', 'left' => 'үлдсэн',
'right' => 'баруун', 'right' => 'баруун',
'top' => 'дээд', 'top' => 'дээд',

View file

@ -280,6 +280,8 @@ return [
'two_factor_enrollment_text' => "Dua faktor pengesahan diperlukan, namun peranti anda belum lagi mendaftar. Buka apl Google Authenticator anda dan imbas kod QR di bawah untuk mendaftarkan peranti anda. Sebaik sahaja anda telah mendaftarkan peranti anda, masukkan kod di bawah", 'two_factor_enrollment_text' => "Dua faktor pengesahan diperlukan, namun peranti anda belum lagi mendaftar. Buka apl Google Authenticator anda dan imbas kod QR di bawah untuk mendaftarkan peranti anda. Sebaik sahaja anda telah mendaftarkan peranti anda, masukkan kod di bawah",
'require_accept_signature' => 'Memerlukan Tandatangan', 'require_accept_signature' => 'Memerlukan Tandatangan',
'require_accept_signature_help_text' => 'Mengaktifkan ciri ini akan menghendaki pengguna menandatangani secara fizikal apabila menerima aset.', 'require_accept_signature_help_text' => 'Mengaktifkan ciri ini akan menghendaki pengguna menandatangani secara fizikal apabila menerima aset.',
'require_checkinout_notes' => 'Require Notes on Checkin/Checkout',
'require_checkinout_notes_help_text' => 'Enabling this feature will require the note fields to be populated when checking in or checking out an asset.',
'left' => 'dibiarkan', 'left' => 'dibiarkan',
'right' => 'betul', 'right' => 'betul',
'top' => 'atas', 'top' => 'atas',

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