mirror of
https://github.com/snipe/snipe-it.git
synced 2025-03-05 20:52:15 -08:00
Merge branch 'develop' into testing/accessories-ui
This commit is contained in:
commit
6b8c1eb523
|
@ -51,6 +51,8 @@ class SQLStreamer {
|
|||
/* 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
|
||||
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) {
|
||||
|
|
|
@ -75,20 +75,23 @@ class AccessoryCheckoutController extends Controller
|
|||
$accessory->checkout_qty = $request->input('checkout_qty', 1);
|
||||
|
||||
for ($i = 0; $i < $accessory->checkout_qty; $i++) {
|
||||
AccessoryCheckout::create([
|
||||
|
||||
$accessory_checkout = new AccessoryCheckout([
|
||||
'accessory_id' => $accessory->id,
|
||||
'created_at' => Carbon::now(),
|
||||
'created_by' => auth()->id(),
|
||||
'assigned_to' => $target->id,
|
||||
'assigned_type' => $target::class,
|
||||
'note' => $request->input('note'),
|
||||
]);
|
||||
|
||||
$accessory_checkout->created_by = auth()->id();
|
||||
$accessory_checkout->save();
|
||||
}
|
||||
|
||||
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(['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')]);
|
||||
|
||||
|
|
|
@ -13,6 +13,7 @@ use App\Http\Transformers\SelectlistTransformer;
|
|||
use App\Models\Accessory;
|
||||
use App\Models\Company;
|
||||
use App\Models\User;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Carbon\Carbon;
|
||||
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>]
|
||||
* @since [v4.0]
|
||||
* @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);
|
||||
|
||||
$accessory = Accessory::with('lastCheckout')->findOrFail($id);
|
||||
|
||||
$offset = request('offset', 0);
|
||||
$limit = request('limit', 50);
|
||||
|
||||
$accessory_checkouts = $accessory->checkouts;
|
||||
$total = $accessory_checkouts->count();
|
||||
|
||||
if ($total < $offset) {
|
||||
$offset = 0;
|
||||
}
|
||||
|
||||
$accessory_checkouts = $accessory->checkouts()->skip($offset)->take($limit)->get();
|
||||
// Total count of all checkouts for this asset
|
||||
$accessory_checkouts = $accessory->checkouts();
|
||||
|
||||
// Check for search text in the request
|
||||
if ($request->filled('search')) {
|
||||
|
||||
$accessory_checkouts = $accessory->checkouts()->TextSearch($request->input('search'))
|
||||
->get();
|
||||
$total = $accessory_checkouts->count();
|
||||
$accessory_checkouts = $accessory_checkouts->TextSearch($request->input('search'));
|
||||
}
|
||||
|
||||
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]
|
||||
* @param \App\Http\Requests\ImageUploadRequest $request
|
||||
* @param int $id
|
||||
* @return \Illuminate\Http\Response
|
||||
* @return \Illuminate\Http\JsonResponse
|
||||
*/
|
||||
public function update(ImageUploadRequest $request, $id)
|
||||
{
|
||||
|
@ -249,7 +244,7 @@ class AccessoriesController extends Controller
|
|||
* @author [A. Gianotto] [<snipe@snipe.net>]
|
||||
* @since [v4.0]
|
||||
* @param int $id
|
||||
* @return \Illuminate\Http\Response
|
||||
* @return \Illuminate\Http\JsonResponse
|
||||
*/
|
||||
public function destroy($id)
|
||||
{
|
||||
|
@ -284,14 +279,17 @@ class AccessoriesController extends Controller
|
|||
$accessory->checkout_qty = $request->input('checkout_qty', 1);
|
||||
|
||||
for ($i = 0; $i < $accessory->checkout_qty; $i++) {
|
||||
AccessoryCheckout::create([
|
||||
|
||||
$accessory_checkout = new AccessoryCheckout([
|
||||
'accessory_id' => $accessory->id,
|
||||
'created_at' => Carbon::now(),
|
||||
'created_by' => auth()->id(),
|
||||
'assigned_to' => $target->id,
|
||||
'assigned_type' => $target::class,
|
||||
'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
|
||||
|
|
|
@ -6,6 +6,7 @@ use App\Events\CheckoutableCheckedIn;
|
|||
use App\Http\Requests\StoreAssetRequest;
|
||||
use App\Http\Requests\UpdateAssetRequest;
|
||||
use App\Http\Traits\MigratesLegacyAssetLocations;
|
||||
use App\Models\AccessoryCheckout;
|
||||
use App\Models\CheckoutAcceptance;
|
||||
use App\Models\LicenseSeat;
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
|
@ -26,11 +27,9 @@ use App\Models\License;
|
|||
use App\Models\Location;
|
||||
use App\Models\Setting;
|
||||
use App\Models\User;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Http\Request;
|
||||
use App\Http\Requests\ImageUploadRequest;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
use App\View\Label;
|
||||
|
@ -129,6 +128,7 @@ class AssetsController extends Controller
|
|||
|
||||
$assets = Asset::select('assets.*')
|
||||
->with(
|
||||
'model',
|
||||
'location',
|
||||
'assetstatus',
|
||||
'company',
|
||||
|
@ -140,7 +140,7 @@ class AssetsController extends Controller
|
|||
'model.manufacturer',
|
||||
'model.fieldset',
|
||||
'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) {
|
||||
|
@ -1214,6 +1214,27 @@ class AssetsController extends Controller
|
|||
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
|
||||
*
|
||||
|
|
|
@ -3,17 +3,20 @@
|
|||
namespace App\Http\Controllers\Api;
|
||||
|
||||
use App\Helpers\Helper;
|
||||
use App\Http\Requests\ImageUploadRequest;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Requests\ImageUploadRequest;
|
||||
use App\Http\Transformers\AccessoriesTransformer;
|
||||
use App\Http\Transformers\AssetsTransformer;
|
||||
use App\Http\Transformers\LocationsTransformer;
|
||||
use App\Http\Transformers\SelectlistTransformer;
|
||||
use App\Models\Accessory;
|
||||
use App\Models\AccessoryCheckout;
|
||||
use App\Models\Asset;
|
||||
use App\Models\Location;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Pagination\LengthAwarePaginator;
|
||||
use Illuminate\Support\Collection;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
|
||||
class LocationsController extends Controller
|
||||
{
|
||||
|
@ -28,26 +31,28 @@ class LocationsController extends Controller
|
|||
{
|
||||
$this->authorize('view', Location::class);
|
||||
$allowed_columns = [
|
||||
'id',
|
||||
'name',
|
||||
'accessories_count',
|
||||
'address',
|
||||
'address2',
|
||||
'assets_count',
|
||||
'assets_count',
|
||||
'assigned_accessories_count',
|
||||
'assigned_assets_count',
|
||||
'assigned_assets_count',
|
||||
'city',
|
||||
'state',
|
||||
'country',
|
||||
'zip',
|
||||
'created_at',
|
||||
'updated_at',
|
||||
'manager_id',
|
||||
'image',
|
||||
'assigned_assets_count',
|
||||
'users_count',
|
||||
'assets_count',
|
||||
'assigned_assets_count',
|
||||
'assets_count',
|
||||
'rtd_assets_count',
|
||||
'currency',
|
||||
'id',
|
||||
'image',
|
||||
'ldap_ou',
|
||||
'manager_id',
|
||||
'name',
|
||||
'rtd_assets_count',
|
||||
'state',
|
||||
'updated_at',
|
||||
'users_count',
|
||||
'zip',
|
||||
];
|
||||
|
||||
$locations = Location::with('parent', 'manager', 'children')->select([
|
||||
|
@ -68,8 +73,11 @@ class LocationsController extends Controller
|
|||
'locations.image',
|
||||
'locations.ldap_ou',
|
||||
'locations.currency',
|
||||
])->withCount('assignedAssets as assigned_assets_count')
|
||||
])
|
||||
->withCount('assignedAssets as assigned_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('children as children_count')
|
||||
->withCount('users as users_count');
|
||||
|
@ -224,7 +232,17 @@ class LocationsController extends Controller
|
|||
return response()->json(Helper::formatStandardApiResponse('error', null, $location->getErrors()));
|
||||
}
|
||||
|
||||
|
||||
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', $location);
|
||||
|
@ -233,6 +251,20 @@ class LocationsController extends Controller
|
|||
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.
|
||||
*
|
||||
|
|
|
@ -538,7 +538,7 @@ class AssetsController extends Controller
|
|||
if ($settings->qr_code == '1') {
|
||||
$asset = Asset::withTrashed()->find($assetId);
|
||||
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';
|
||||
|
||||
if (isset($asset->id, $asset->asset_tag)) {
|
||||
|
@ -548,7 +548,7 @@ class AssetsController extends Controller
|
|||
return response()->file($qr_file, $header);
|
||||
} else {
|
||||
$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());
|
||||
|
||||
return response($barcode_obj->getPngData())->header('Content-type', 'image/png');
|
||||
|
@ -573,7 +573,7 @@ class AssetsController extends Controller
|
|||
{
|
||||
$settings = Setting::getSettings();
|
||||
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 (file_exists($barcode_file)) {
|
||||
|
@ -586,7 +586,7 @@ class AssetsController extends Controller
|
|||
|
||||
$barcode = new \Com\Tecnick\Barcode\Barcode();
|
||||
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());
|
||||
|
||||
return response($barcode_obj->getPngData())->header('Content-type', 'image/png');
|
||||
|
|
|
@ -50,14 +50,14 @@ class ForgotPasswordController extends Controller
|
|||
*/
|
||||
public function sendResetLinkEmail(Request $request)
|
||||
{
|
||||
|
||||
/**
|
||||
* Let's set a max character count here to prevent potential
|
||||
* 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([
|
||||
'username' => ['required', 'max:255'],
|
||||
'username' => ['required', 'max:255', 'string'],
|
||||
]);
|
||||
|
||||
/**
|
||||
|
|
|
@ -50,7 +50,7 @@ class ConsumablesController extends Controller
|
|||
{
|
||||
$this->authorize('create', Consumable::class);
|
||||
|
||||
return view('consumables/edit')->with('category_type', 'consumable')
|
||||
return view('consumables.edit')->with('category_type', 'consumable')
|
||||
->with('item', new Consumable);
|
||||
}
|
||||
|
||||
|
|
|
@ -104,7 +104,7 @@ class CustomFieldsController extends Controller
|
|||
"auto_add_to_fieldsets" => $request->get("auto_add_to_fieldsets", 0),
|
||||
"show_in_listview" => $request->get("show_in_listview", 0),
|
||||
"show_in_requestable_list" => $request->get("show_in_requestable_list", 0),
|
||||
"user_id" => auth()->id()
|
||||
"created_by" => auth()->id()
|
||||
]);
|
||||
|
||||
|
||||
|
|
|
@ -71,7 +71,7 @@ class LicenseCheckinController extends Controller
|
|||
|
||||
if (! $license->reassignable) {
|
||||
// Not allowed to checkin
|
||||
Session::flash('error', 'License not reassignable.');
|
||||
Session::flash('error', trans('admin/licenses/message.checkin.not_reassignable') . '.');
|
||||
|
||||
return redirect()->back()->withInput();
|
||||
}
|
||||
|
|
|
@ -695,48 +695,6 @@ class SettingsController extends Controller
|
|||
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.
|
||||
*
|
||||
|
@ -762,8 +720,11 @@ class SettingsController extends Controller
|
|||
*/
|
||||
public function getLabels() : View
|
||||
{
|
||||
$is_gd_installed = extension_loaded('gd');
|
||||
|
||||
return view('settings.labels')
|
||||
->with('setting', Setting::getSettings())
|
||||
->with('is_gd_installed', $is_gd_installed)
|
||||
->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_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');
|
||||
|
||||
|
||||
//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')) {
|
||||
$setting->labels_display_name = 1;
|
||||
|
|
|
@ -69,7 +69,7 @@ class AccessoriesTransformer
|
|||
return $array;
|
||||
}
|
||||
|
||||
public function transformCheckedoutAccessory($accessory, $accessory_checkouts, $total)
|
||||
public function transformCheckedoutAccessory($accessory_checkouts, $total)
|
||||
{
|
||||
$array = [];
|
||||
|
||||
|
@ -77,9 +77,13 @@ class AccessoriesTransformer
|
|||
$array[] = [
|
||||
'id' => $checkout->id,
|
||||
'assigned_to' => $this->transformAssignedTo($checkout),
|
||||
'checkout_notes' => e($checkout->note),
|
||||
'last_checkout' => Helper::getFormattedDateObject($checkout->created_at, 'datetime'),
|
||||
'available_actions' => ['checkin' => true],
|
||||
'note' => $checkout->note ? e($checkout->note) : null,
|
||||
'created_by' => $checkout->adminuser ? [
|
||||
'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)
|
||||
{
|
||||
if ($accessoryCheckout->checkedOutToUser()) {
|
||||
return [
|
||||
'id' => (int) $accessoryCheckout->assigned->id,
|
||||
'username' => e($accessoryCheckout->assigned->username),
|
||||
'name' => e($accessoryCheckout->assigned->getFullNameAttribute()),
|
||||
'first_name'=> e($accessoryCheckout->assigned->first_name),
|
||||
'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 (new UsersTransformer)->transformUserCompact($accessoryCheckout->assigned);
|
||||
} elseif ($accessoryCheckout->checkedOutToLocation()) {
|
||||
return (new LocationsTransformer())->transformLocationCompact($accessoryCheckout->assigned);
|
||||
} elseif ($accessoryCheckout->checkedOutToAsset()) {
|
||||
return (new AssetsTransformer())->transformAssetCompact($accessoryCheckout->assigned);
|
||||
}
|
||||
|
||||
return $accessoryCheckout->assigned ? [
|
||||
'id' => $accessoryCheckout->assigned->id,
|
||||
'name' => e($accessoryCheckout->assigned->display_name),
|
||||
'type' => $accessoryCheckout->assignedType(),
|
||||
] : null;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,12 +3,14 @@
|
|||
namespace App\Http\Transformers;
|
||||
|
||||
use App\Helpers\Helper;
|
||||
use App\Models\Accessory;
|
||||
use App\Models\AccessoryCheckout;
|
||||
use App\Models\Asset;
|
||||
use App\Models\Setting;
|
||||
use Illuminate\Support\Facades\Gate;
|
||||
use Illuminate\Database\Eloquent\Collection;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
|
||||
class AssetsTransformer
|
||||
{
|
||||
|
@ -225,7 +227,7 @@ class AssetsTransformer
|
|||
public function transformRequestedAsset(Asset $asset)
|
||||
{
|
||||
$array = [
|
||||
'id' => (int) $asset->id,
|
||||
'id' => (int)$asset->id,
|
||||
'name' => e($asset->name),
|
||||
'asset_tag' => e($asset->asset_tag),
|
||||
'serial' => e($asset->serial),
|
||||
|
@ -234,7 +236,7 @@ class AssetsTransformer
|
|||
'model_number' => (($asset->model) && ($asset->model->model_number)) ? e($asset->model->model_number) : null,
|
||||
'expected_checkin' => Helper::getFormattedDateObject($asset->expected_checkin, 'date'),
|
||||
'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()),
|
||||
];
|
||||
|
||||
|
@ -244,7 +246,7 @@ class AssetsTransformer
|
|||
foreach ($asset->model->fieldset->fields as $field) {
|
||||
|
||||
// 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};
|
||||
if (($field->format == 'DATE') && (!is_null($value)) && ($value != '')) {
|
||||
|
@ -268,7 +270,61 @@ class AssetsTransformer
|
|||
|
||||
$array += $permissions_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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -3,6 +3,8 @@
|
|||
namespace App\Http\Transformers;
|
||||
|
||||
use App\Helpers\Helper;
|
||||
use App\Models\Accessory;
|
||||
use App\Models\AccessoryCheckout;
|
||||
use App\Models\Location;
|
||||
use Illuminate\Support\Facades\Gate;
|
||||
use Illuminate\Database\Eloquent\Collection;
|
||||
|
@ -45,6 +47,8 @@ class LocationsTransformer
|
|||
'zip' => ($location->zip) ? e($location->zip) : null,
|
||||
'phone' => ($location->phone!='') ? e($location->phone): 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,
|
||||
'assets_count' => (int) $location->assets_count,
|
||||
'rtd_assets_count' => (int) $location->rtd_assets_count,
|
||||
|
@ -76,4 +80,75 @@ class LocationsTransformer
|
|||
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;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -3,6 +3,7 @@
|
|||
namespace App\Http\Transformers;
|
||||
|
||||
use App\Helpers\Helper;
|
||||
use App\Models\Asset;
|
||||
use App\Models\PredefinedKit;
|
||||
use App\Models\SnipeModel;
|
||||
use Illuminate\Support\Facades\Gate;
|
||||
|
@ -42,7 +43,7 @@ class PredefinedKitsTransformer
|
|||
$permissions_array['available_actions'] = [
|
||||
'update' => Gate::allows('update', 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),
|
||||
// 'restore' => Gate::allows('create', PredefinedKit::class),
|
||||
];
|
||||
|
|
|
@ -4,8 +4,8 @@ namespace App\Http\Transformers;
|
|||
|
||||
use App\Helpers\Helper;
|
||||
use App\Models\User;
|
||||
use Illuminate\Support\Facades\Gate;
|
||||
use Illuminate\Database\Eloquent\Collection;
|
||||
use Illuminate\Support\Facades\Gate;
|
||||
|
||||
class UsersTransformer
|
||||
{
|
||||
|
@ -106,6 +106,37 @@ class UsersTransformer
|
|||
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)
|
||||
{
|
||||
return (new DatatablesTransformer)->transformDatatables($users);
|
||||
|
|
|
@ -22,7 +22,14 @@ class AccessoryCheckout extends Model
|
|||
{
|
||||
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';
|
||||
|
||||
/**
|
||||
|
@ -34,9 +41,13 @@ class AccessoryCheckout extends Model
|
|||
*/
|
||||
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
|
||||
*
|
||||
|
@ -44,9 +55,9 @@ class AccessoryCheckout extends Model
|
|||
* @since [v7.0.9]
|
||||
* @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
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* @author [A. Kroeger]
|
||||
|
@ -84,7 +95,17 @@ class AccessoryCheckout extends Model
|
|||
*/
|
||||
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
|
||||
|
@ -92,6 +113,16 @@ class AccessoryCheckout extends Model
|
|||
$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.
|
||||
*
|
||||
|
|
|
@ -253,6 +253,18 @@ class Location extends SnipeModel
|
|||
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)
|
||||
{
|
||||
return $this->attributes['ldap_ou'] = empty($ldap_ou) ? null : $ldap_ou;
|
||||
|
|
|
@ -333,6 +333,7 @@ class User extends SnipeModel implements AuthenticatableContract, AuthorizableCo
|
|||
public function accessories()
|
||||
{
|
||||
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');
|
||||
}
|
||||
|
||||
|
|
|
@ -158,7 +158,7 @@ class AccessoryPresenter extends Presenter
|
|||
'title' => trans('general.change'),
|
||||
'formatter' => 'accessoriesInOutFormatter',
|
||||
], [
|
||||
'field' => 'actions',
|
||||
'field' => 'available_actions',
|
||||
'searchable' => false,
|
||||
'sortable' => false,
|
||||
'switchable' => false,
|
||||
|
@ -170,6 +170,74 @@ class AccessoryPresenter extends Presenter
|
|||
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.
|
||||
* @return string
|
||||
|
|
|
@ -18,16 +18,14 @@ class LocationPresenter extends Presenter
|
|||
'field' => 'bulk_selectable',
|
||||
'checkbox' => true,
|
||||
'formatter' => 'checkboxEnabledFormatter',
|
||||
],
|
||||
[
|
||||
], [
|
||||
'field' => 'id',
|
||||
'searchable' => false,
|
||||
'sortable' => true,
|
||||
'switchable' => true,
|
||||
'title' => trans('general.id'),
|
||||
'visible' => false,
|
||||
],
|
||||
[
|
||||
], [
|
||||
'field' => 'name',
|
||||
'searchable' => true,
|
||||
'sortable' => true,
|
||||
|
@ -35,8 +33,7 @@ class LocationPresenter extends Presenter
|
|||
'title' => trans('admin/locations/table.name'),
|
||||
'visible' => true,
|
||||
'formatter' => 'locationsLinkFormatter',
|
||||
],
|
||||
[
|
||||
], [
|
||||
'field' => 'image',
|
||||
'searchable' => false,
|
||||
'sortable' => true,
|
||||
|
@ -44,8 +41,7 @@ class LocationPresenter extends Presenter
|
|||
'title' => trans('general.image'),
|
||||
'visible' => true,
|
||||
'formatter' => 'imageFormatter',
|
||||
],
|
||||
[
|
||||
], [
|
||||
'field' => 'parent',
|
||||
'searchable' => false,
|
||||
'sortable' => true,
|
||||
|
@ -53,100 +49,111 @@ class LocationPresenter extends Presenter
|
|||
'title' => trans('admin/locations/table.parent'),
|
||||
'visible' => true,
|
||||
'formatter' => 'locationsLinkObjFormatter',
|
||||
],
|
||||
|
||||
[
|
||||
], [
|
||||
'field' => 'assets_count',
|
||||
'searchable' => false,
|
||||
'sortable' => true,
|
||||
'switchable' => true,
|
||||
'title' => trans('admin/locations/message.current_location'),
|
||||
'visible' => true,
|
||||
],
|
||||
|
||||
[
|
||||
], [
|
||||
'field' => 'rtd_assets_count',
|
||||
'searchable' => false,
|
||||
'sortable' => true,
|
||||
'switchable' => true,
|
||||
'title' => trans('admin/hardware/form.default_location'),
|
||||
'titleTooltip' => trans('admin/hardware/form.default_location'),
|
||||
'tooltip' => 'true',
|
||||
'visible' => false,
|
||||
],
|
||||
|
||||
[
|
||||
'class' => 'css-house-flag',
|
||||
], [
|
||||
'field' => 'assigned_assets_count',
|
||||
'searchable' => false,
|
||||
'sortable' => true,
|
||||
'switchable' => true,
|
||||
'title' => trans('admin/locations/message.assigned_assets'),
|
||||
'titleTooltip' => trans('admin/locations/message.assigned_assets'),
|
||||
'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',
|
||||
'searchable' => false,
|
||||
'sortable' => true,
|
||||
'switchable' => true,
|
||||
'title' => trans('general.people'),
|
||||
'titleTooltip' => trans('general.people'),
|
||||
'visible' => true,
|
||||
],
|
||||
[
|
||||
'class' => 'css-house-user',
|
||||
// 'data-tooltip' => true, - not working, but I want to try to use regular tooltips here
|
||||
], [
|
||||
'field' => 'currency',
|
||||
'searchable' => true,
|
||||
'sortable' => true,
|
||||
'switchable' => true,
|
||||
'title' => trans('general.currency'),
|
||||
'visible' => true,
|
||||
],
|
||||
[
|
||||
'class' => 'css-currency',
|
||||
], [
|
||||
'field' => 'address',
|
||||
'searchable' => true,
|
||||
'sortable' => true,
|
||||
'switchable' => true,
|
||||
'title' => trans('admin/locations/table.address'),
|
||||
'visible' => true,
|
||||
],
|
||||
[
|
||||
], [
|
||||
'field' => 'address2',
|
||||
'searchable' => true,
|
||||
'sortable' => true,
|
||||
'switchable' => true,
|
||||
'title' => trans('admin/locations/table.address2'),
|
||||
'visible' => false,
|
||||
],
|
||||
[
|
||||
], [
|
||||
'field' => 'city',
|
||||
'searchable' => true,
|
||||
'sortable' => true,
|
||||
'switchable' => true,
|
||||
'title' => trans('admin/locations/table.city'),
|
||||
'visible' => true,
|
||||
],
|
||||
[
|
||||
], [
|
||||
'field' => 'state',
|
||||
'searchable' => true,
|
||||
'sortable' => true,
|
||||
'switchable' => true,
|
||||
'title' => trans('admin/locations/table.state'),
|
||||
'visible' => true,
|
||||
],
|
||||
[
|
||||
], [
|
||||
'field' => 'zip',
|
||||
'searchable' => true,
|
||||
'sortable' => true,
|
||||
'switchable' => true,
|
||||
'title' => trans('admin/locations/table.zip'),
|
||||
'visible' => false,
|
||||
],
|
||||
[
|
||||
], [
|
||||
'field' => 'country',
|
||||
'searchable' => true,
|
||||
'sortable' => true,
|
||||
'switchable' => true,
|
||||
'title' => trans('admin/locations/table.country'),
|
||||
'visible' => false,
|
||||
],
|
||||
[
|
||||
], [
|
||||
'field' => 'phone',
|
||||
'searchable' => true,
|
||||
'sortable' => true,
|
||||
|
@ -154,8 +161,7 @@ class LocationPresenter extends Presenter
|
|||
'title' => trans('admin/users/table.phone'),
|
||||
'visible' => false,
|
||||
'formatter' => 'phoneFormatter',
|
||||
],
|
||||
[
|
||||
], [
|
||||
'field' => 'fax',
|
||||
'searchable' => true,
|
||||
'sortable' => true,
|
||||
|
@ -163,16 +169,14 @@ class LocationPresenter extends Presenter
|
|||
'title' => trans('admin/suppliers/table.fax'),
|
||||
'visible' => false,
|
||||
'formatter' => 'phoneFormatter',
|
||||
],
|
||||
[
|
||||
], [
|
||||
'field' => 'ldap_ou',
|
||||
'searchable' => true,
|
||||
'sortable' => true,
|
||||
'switchable' => true,
|
||||
'title' => trans('admin/locations/table.ldap_ou'),
|
||||
'visible' => false,
|
||||
],
|
||||
[
|
||||
], [
|
||||
'field' => 'manager',
|
||||
'searchable' => false,
|
||||
'sortable' => true,
|
||||
|
@ -180,9 +184,7 @@ class LocationPresenter extends Presenter
|
|||
'title' => trans('admin/users/table.manager'),
|
||||
'visible' => false,
|
||||
'formatter' => 'usersLinkObjFormatter',
|
||||
],
|
||||
|
||||
[
|
||||
], [
|
||||
'field' => 'created_at',
|
||||
'searchable' => true,
|
||||
'sortable' => true,
|
||||
|
@ -190,9 +192,7 @@ class LocationPresenter extends Presenter
|
|||
'title' => trans('general.created_at'),
|
||||
'visible' => false,
|
||||
'formatter' => 'dateDisplayFormatter',
|
||||
],
|
||||
|
||||
[
|
||||
], [
|
||||
'field' => 'actions',
|
||||
'searchable' => false,
|
||||
'sortable' => false,
|
||||
|
@ -206,6 +206,73 @@ class LocationPresenter extends Presenter
|
|||
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
|
||||
* @return string
|
||||
|
|
|
@ -163,7 +163,7 @@ class AccessoryFactory extends Factory
|
|||
$accessory->checkouts()->create([
|
||||
'accessory_id' => $accessory->id,
|
||||
'created_at' => Carbon::now(),
|
||||
'user_id' => 1,
|
||||
'created_by' => 1,
|
||||
'assigned_to' => $user->id,
|
||||
'assigned_type' => User::class,
|
||||
]);
|
||||
|
|
|
@ -23,6 +23,7 @@ class GroupFactory extends Factory
|
|||
{
|
||||
return [
|
||||
'name' => $this->faker->name(),
|
||||
'permissions' => json_encode([]),
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,6 +4,7 @@ namespace Database\Factories;
|
|||
|
||||
use App\Models\Asset;
|
||||
use App\Models\License;
|
||||
use App\Models\LicenseSeat;
|
||||
use App\Models\User;
|
||||
use Illuminate\Database\Eloquent\Factories\Factory;
|
||||
|
||||
|
@ -33,4 +34,18 @@ class LicenseSeatFactory extends Factory
|
|||
];
|
||||
});
|
||||
}
|
||||
|
||||
public function reassignable()
|
||||
{
|
||||
return $this->afterMaking(function (LicenseSeat $seat) {
|
||||
$seat->license->update(['reassignable' => true]);
|
||||
});
|
||||
}
|
||||
|
||||
public function notReassignable()
|
||||
{
|
||||
return $this->afterMaking(function (LicenseSeat $seat) {
|
||||
$seat->license->update(['reassignable' => false]);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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')
|
||||
]);
|
||||
}
|
||||
};
|
|
@ -19,12 +19,12 @@ class SettingsSeeder extends Seeder
|
|||
$settings->logo = 'snipe-logo.png';
|
||||
$settings->alert_email = 'service@snipe-it.io';
|
||||
$settings->header_color = null;
|
||||
$settings->barcode_type = 'QRCODE';
|
||||
$settings->label2_2d_type = 'QRCODE';
|
||||
$settings->default_currency = 'USD';
|
||||
$settings->brand = 3;
|
||||
$settings->ldap_enabled = 0;
|
||||
$settings->full_multiple_companies_support = 0;
|
||||
$settings->alt_barcode = 'C128';
|
||||
$settings->label2_1d_type = 'C128';
|
||||
$settings->skin = '';
|
||||
$settings->email_domain = 'example.org';
|
||||
$settings->email_format = 'filastname';
|
||||
|
|
8
package-lock.json
generated
8
package-lock.json
generated
|
@ -5,7 +5,7 @@
|
|||
"packages": {
|
||||
"": {
|
||||
"dependencies": {
|
||||
"@fortawesome/fontawesome-free": "^6.6.0",
|
||||
"@fortawesome/fontawesome-free": "^6.7.1",
|
||||
"acorn": "^8.12.0",
|
||||
"acorn-import-assertions": "^1.9.0",
|
||||
"admin-lte": "^2.4.18",
|
||||
|
@ -1919,9 +1919,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@fortawesome/fontawesome-free": {
|
||||
"version": "6.6.0",
|
||||
"resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.6.0.tgz",
|
||||
"integrity": "sha512-60G28ke/sXdtS9KZCpZSHHkCbdsOGEhIUGlwq6yhY74UpTiToIh8np7A8yphhM4BWsvNFtIvLpi4co+h9Mr9Ow==",
|
||||
"version": "6.7.1",
|
||||
"resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.7.1.tgz",
|
||||
"integrity": "sha512-ALIk/MOh5gYe1TG/ieS5mVUsk7VUIJTJKPMK9rFFqOgfp0Q3d5QiBXbcOMwUvs37fyZVCz46YjOE6IFeOAXCHA==",
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
}
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
"postcss": "^8.4.5"
|
||||
},
|
||||
"dependencies": {
|
||||
"@fortawesome/fontawesome-free": "^6.6.0",
|
||||
"@fortawesome/fontawesome-free": "^6.7.1",
|
||||
"acorn": "^8.12.0",
|
||||
"acorn-import-assertions": "^1.9.0",
|
||||
"admin-lte": "^2.4.18",
|
||||
|
|
Binary file not shown.
Binary file not shown.
BIN
public/css/build/overrides.css.map
Normal file
BIN
public/css/build/overrides.css.map
Normal file
Binary file not shown.
BIN
public/css/dist/all.css
vendored
BIN
public/css/dist/all.css
vendored
Binary file not shown.
BIN
public/css/dist/bootstrap-table.css
vendored
BIN
public/css/dist/bootstrap-table.css
vendored
Binary file not shown.
BIN
public/css/dist/skins/_all-skins.css.map
vendored
Normal file
BIN
public/css/dist/skins/_all-skins.css.map
vendored
Normal file
Binary file not shown.
BIN
public/css/dist/skins/skin-blue-dark.css.map
vendored
Normal file
BIN
public/css/dist/skins/skin-blue-dark.css.map
vendored
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
public/js/dist/all.js
vendored
BIN
public/js/dist/all.js
vendored
Binary file not shown.
BIN
public/js/dist/bootstrap-table-en-US.min.js
vendored
BIN
public/js/dist/bootstrap-table-en-US.min.js
vendored
Binary file not shown.
BIN
public/js/dist/bootstrap-table-locale-all.min.js
vendored
BIN
public/js/dist/bootstrap-table-locale-all.min.js
vendored
Binary file not shown.
BIN
public/js/dist/bootstrap-table.js
vendored
BIN
public/js/dist/bootstrap-table.js
vendored
Binary file not shown.
|
@ -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/_all-skins.css": "/css/dist/skins/_all-skins.css?id=b1c78591f51b52beab05b52f407ad6e6",
|
||||
"/css/build/overrides.css": "/css/build/overrides.css?id=b1146d30456ed95c3d4a9b60ddc58313",
|
||||
"/css/build/app.css": "/css/build/app.css?id=e5f692af9dd2c217455ad87e520ef32a",
|
||||
"/css/build/overrides.css": "/css/build/overrides.css?id=10d3f63eef985a3df55e66506af9b23f",
|
||||
"/css/build/app.css": "/css/build/app.css?id=6e3067fde8016a951134eee87737b831",
|
||||
"/css/build/AdminLTE.css": "/css/build/AdminLTE.css?id=a67bd93bed52e6a29967fe472de66d6c",
|
||||
"/css/dist/skins/skin-yellow.css": "/css/dist/skins/skin-yellow.css?id=fc7adb943668ac69fe4b646625a7571f",
|
||||
"/css/dist/skins/skin-yellow-dark.css": "/css/dist/skins/skin-yellow-dark.css?id=53edc92eb2d272744bc7404ec259930e",
|
||||
|
@ -19,7 +19,7 @@
|
|||
"/css/dist/skins/skin-blue.css": "/css/dist/skins/skin-blue.css?id=392cc93cfc0be0349bab9697669dd091",
|
||||
"/css/dist/skins/skin-blue-dark.css": "/css/dist/skins/skin-blue-dark.css?id=18787b3f00a3be7be38ee4e26cbd2a07",
|
||||
"/css/dist/skins/skin-black.css": "/css/dist/skins/skin-black.css?id=1f33ca3d860461c1127ec465ab3ebb6b",
|
||||
"/css/dist/all.css": "/css/dist/all.css?id=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.min.css": "/css/dist/signature-pad.min.css?id=6a89d3cd901305e66ced1cf5f13147f7",
|
||||
"/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-v4compatibility.ttf": "/css/webfonts/fa-v4compatibility.ttf?id=51ade19e1b10d7a0031b18568a2b01d5",
|
||||
"/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-en-US.min.js": "/js/dist/bootstrap-table-en-US.min.js?id=0f6e85ae692d03a3b11cab445ff263ab",
|
||||
"/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=d4ef3db8dc9f809258218c187de5ee2a",
|
||||
"/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.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-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/bootstrap-table.css": "/css/dist/bootstrap-table.css?id=c384582a6ba08903af353be861ffe74e",
|
||||
"/js/build/vendor.js": "/js/build/vendor.js?id=89dffa552c6e3abe3a2aac6c9c7b466b",
|
||||
"/js/dist/bootstrap-table.js": "/js/dist/bootstrap-table.js?id=b4c3069f1a292527a96c058b77b28d69",
|
||||
"/js/dist/all.js": "/js/dist/all.js?id=074c4b862b013dbffef2b075b6aae802"
|
||||
"/css/dist/bootstrap-table.css": "/css/dist/bootstrap-table.css?id=393d720a0f9aba560094fbc8d3b0c0f0",
|
||||
"/js/build/vendor.js": "/js/build/vendor.js?id=5269eb5a6beb74f03387c78938cf17b2",
|
||||
"/js/dist/bootstrap-table.js": "/js/dist/bootstrap-table.js?id=6660df122e24940d42d03c06775fec7b",
|
||||
"/js/dist/all.js": "/js/dist/all.js?id=262c933ac5d4c02c006d9bd531896c7b"
|
||||
}
|
||||
|
|
|
@ -729,23 +729,27 @@ h4 {
|
|||
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
|
||||
"title" text as-is.
|
||||
"title" text as-is and hides the icon.
|
||||
|
||||
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-license > .th-inner,
|
||||
th.css-component > .th-inner,
|
||||
th.css-consumable > .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-component > .th-inner,
|
||||
th.css-accessory > .th-inner
|
||||
th.css-users > .th-inner,
|
||||
th.css-currency > .th-inner,
|
||||
th.css-history > .th-inner
|
||||
{
|
||||
font-size: 0px;
|
||||
line-height: .75!important;
|
||||
line-height: 0.75 !important;
|
||||
text-align: left;
|
||||
text-rendering: auto;
|
||||
-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-license > .th-inner::before,
|
||||
th.css-component > .th-inner::before,
|
||||
th.css-consumable > .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-component > .th-inner::before,
|
||||
th.css-accessory > .th-inner::before
|
||||
|
||||
th.css-padlock > .th-inner::before,
|
||||
th.css-users > .th-inner::before,
|
||||
th.css-currency > .th-inner::before,
|
||||
th.css-history > .th-inner::before
|
||||
{
|
||||
display: inline-block;
|
||||
font-size: 20px;
|
||||
|
@ -770,15 +780,6 @@ th.css-accessory > .th-inner::before
|
|||
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
|
||||
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;
|
||||
}
|
||||
|
||||
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 {
|
||||
padding-left: 15px;
|
||||
|
|
|
@ -280,6 +280,8 @@ return [
|
|||
'two_factor_enrollment_text' => "crwdns1791:0crwdne1791:0",
|
||||
'require_accept_signature' => 'crwdns1819:0crwdne1819: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',
|
||||
'right' => 'crwdns1598:0crwdne1598:0',
|
||||
'top' => 'crwdns1599:0crwdne1599:0',
|
||||
|
|
|
@ -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",
|
||||
'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_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',
|
||||
'right' => 'reg',
|
||||
'top' => 'Top',
|
||||
|
|
|
@ -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.',
|
||||
'assigned_to' => 'Toevertrou aan',
|
||||
'best_regards' => 'Beste wense,',
|
||||
'canceled' => 'gekanselleer',
|
||||
'canceled' => 'Gekanselleer',
|
||||
'checkin_date' => 'Incheckdatum',
|
||||
'checkout_date' => 'Checkout Datum',
|
||||
'checkedout_from' => 'Checked out from',
|
||||
|
|
|
@ -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",
|
||||
'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_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',
|
||||
|
|
|
@ -10,8 +10,8 @@ return array(
|
|||
'api_base_url_endpoint' => '/<endpoint>',
|
||||
'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.',
|
||||
'profile_updated' => 'Account successfully updated',
|
||||
'no_tokens' => 'You have not created any personal access tokens.',
|
||||
'enable_sounds' => 'Enable sound effects',
|
||||
'profile_updated' => 'تم تحديث الحساب بنجاح',
|
||||
'no_tokens' => 'لم تقم بإنشاء أي رموز خاصة للوصول الشخصي.',
|
||||
'enable_sounds' => 'تمكين المؤثرات الصوتية',
|
||||
'enable_confetti' => 'Enable confetti effects',
|
||||
);
|
||||
|
|
|
@ -49,5 +49,5 @@ return [
|
|||
'kit_deleted' => 'تم حذف عدة بنجاح',
|
||||
'kit_model_updated' => 'تم تحديث النموذج بنجاح',
|
||||
'kit_model_detached' => 'تم فصل النموذج بنجاح',
|
||||
'model_already_attached' => 'Model already attached to kit',
|
||||
'model_already_attached' => 'يتبين انه النموذج الحالي مرتبط أصلاً مع مجموعة الأدوات',
|
||||
];
|
||||
|
|
|
@ -280,6 +280,8 @@ return [
|
|||
'two_factor_enrollment_text' => "التوثيق ذو العاملين 2FA اجباري، ولكن لم يتم تسجيل جهازك بعد. افتح تطبيق غوغل للتوثيق Google Authenticator وافحص رمز الاستجابة السريعة QR أدناه لتسجيل جهازك. بعد تسجيل جهازك، أدخل الرمز أدناه",
|
||||
'require_accept_signature' => 'يتطلب التوقيع',
|
||||
'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' => 'اليسار',
|
||||
'right' => 'حق',
|
||||
'top' => 'أعلى',
|
||||
|
|
|
@ -11,9 +11,9 @@ return [
|
|||
'activity_report' => 'تقرير الأنشطة',
|
||||
'address' => 'العنوان',
|
||||
'admin' => 'الإدارة',
|
||||
'admin_tooltip' => 'This user has admin privileges',
|
||||
'superuser' => 'Superuser',
|
||||
'superuser_tooltip' => 'This user has superuser privileges',
|
||||
'admin_tooltip' => 'هذا المستخدم لديه صلاحيات المشرف',
|
||||
'superuser' => 'مدير النظام',
|
||||
'superuser_tooltip' => 'هذا المستخدم لديه امتيازات المستخدم المتميز',
|
||||
'administrator' => 'المدير',
|
||||
'add_seats' => 'المقاعد المضافة',
|
||||
'age' => "العمر",
|
||||
|
@ -64,7 +64,7 @@ return [
|
|||
'checkout' => 'ترجيع',
|
||||
'checkouts_count' => 'الخارج',
|
||||
'checkins_count' => 'المٌدخل',
|
||||
'checkin_and_delete' => 'Checkin and Delete',
|
||||
'checkin_and_delete' => 'الإيداع والحذف',
|
||||
'user_requests_count' => 'الطلبات',
|
||||
'city' => 'المدينة',
|
||||
'click_here' => 'انقر هنا',
|
||||
|
@ -99,7 +99,7 @@ return [
|
|||
'debug_warning_text' => 'هذا التطبيق يعمل في وضع الإنتاج مع تمكين التصحيح. هذا يمكن أن يعرض البيانات الحساسة إذا كان التطبيق الخاص بك هو في متناول العالم الخارجي. تعطيل وضع التصحيح عن طريق تعيين قيمة <code>APP_DEBUG</code> في ملف <code>.env</code> إلى <code>false</code>.',
|
||||
'delete' => 'حذف',
|
||||
'delete_confirm' => 'هل أنت متأكد من حذف :المنتج؟',
|
||||
'delete_confirm_no_undo' => 'Are you sure, you wish to delete :item? This cannot be undone.',
|
||||
'delete_confirm_no_undo' => 'هل أنت متأكد من أنك ترغب في حذف :item؟ لا يمكن التراجع بعد الحذف.',
|
||||
'deleted' => 'تم حذفها',
|
||||
'delete_seats' => 'المقاعد المحذوفة',
|
||||
'deletion_failed' => 'فشل الحذف',
|
||||
|
@ -135,7 +135,7 @@ return [
|
|||
'lastname_firstinitial' => 'اللقب والحرف الاول من الاسم (smithj@example.com)',
|
||||
'firstinitial.lastname' => 'الاسم الأخير الأول (jsmith@example.com)',
|
||||
'firstnamelastinitial' => 'اللقب والحرف الاول من الاسم (smithj@example.com)',
|
||||
'lastnamefirstname' => 'Last Name.First Name (smith.jane@example.com)',
|
||||
'lastnamefirstname' => 'الاسم الأخير (smith.jane@example.com)',
|
||||
'first_name' => 'الإسم الأول',
|
||||
'first_name_format' => 'الاسم الأول (jane@example.com)',
|
||||
'files' => 'الملفات',
|
||||
|
@ -158,8 +158,8 @@ return [
|
|||
'include_deleted' => 'تضمين الأصول المحذوفة',
|
||||
'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_size_help' => 'The maximum upload size allowed is :size.',
|
||||
'image_filetypes_help' => 'Accepted Filetypes are jpg, webp, png, gif, svg, and avif. The maximum upload size allowed is :size.',
|
||||
'filetypes_size_help' => 'الحد الأقصى المسموح لحجم التصعيد هو :size.',
|
||||
'image_filetypes_help' => 'أنواع الملفات المسموحة هي jpg، webpp، png، gif، svg، tif. الحد الأقصى لحجم التصعيد المسموح به هو :size.',
|
||||
'unaccepted_image_type' => 'ملف الصورة هذا غير قابل للقراءة. أنواع الملفات المقبولة هي jpg، webpp، png، gif، svg. نوع هذا الملف هو: :mimetype.',
|
||||
'import' => 'استيراد',
|
||||
'import_this_file' => 'حقول الخريطة ومعالجة هذا الملف',
|
||||
|
@ -194,7 +194,7 @@ return [
|
|||
'logout' => 'تسجيل خروج',
|
||||
'lookup_by_tag' => 'البحث عن طريق ترميز الأصل',
|
||||
'maintenances' => 'الصيانة',
|
||||
'manage_api_keys' => 'Manage API keys',
|
||||
'manage_api_keys' => 'إدارة مفاتيح API',
|
||||
'manufacturer' => 'الشركة المصنعة',
|
||||
'manufacturers' => 'الشركات المصنعة',
|
||||
'markdown' => 'يتيح هذا الحقل <a href="https://help.github.com/articles/github-flavored-markdown/">بتطبيق نمط الكتابة من Github</a>.',
|
||||
|
@ -208,7 +208,7 @@ return [
|
|||
'next' => 'التالى',
|
||||
'next_audit_date' => 'تاريخ التدقيق التالي',
|
||||
'next_audit_date_help' => 'If you use auditing in your organization, this is usually automatically calculated based on the asset's last audit date and audit frequency (in <code>Admin Settings > 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' => 'لا يوجد عنوان بريد إلكتروني مرتبط بهذا المستخدم',
|
||||
'last_audit' => 'آخر مراجعة',
|
||||
'new' => 'الجديد!',
|
||||
|
@ -241,13 +241,13 @@ return [
|
|||
'restored' => 'المعاد',
|
||||
'restore' => 'إستعادة',
|
||||
'requestable_models' => 'النماذج المطلوبة',
|
||||
'requestable_items' => 'Requestable Items',
|
||||
'requestable_items' => 'العناصر المطلوبة',
|
||||
'requested' => 'طلب',
|
||||
'requested_date' => 'تاريخ الطلب',
|
||||
'requested_assets' => 'الأصول المطلوبة',
|
||||
'requested_assets_menu' => 'الأصول المطلوبة',
|
||||
'request_canceled' => 'تم إلغاء الطلب',
|
||||
'request_item' => 'Request this item',
|
||||
'request_item' => 'طلب هذا العنصر',
|
||||
'external_link_tooltip' => 'رابط خارجي إلى',
|
||||
'save' => 'حفظ',
|
||||
'select_var' => 'اختر :thing... ', // this will eventually replace all of our other selects
|
||||
|
@ -255,7 +255,7 @@ return [
|
|||
'select_all' => 'اختر الكل',
|
||||
'search' => 'بحث',
|
||||
'select_category' => 'اختر تصنيف',
|
||||
'select_datasource' => 'Select a data source',
|
||||
'select_datasource' => 'اختر مصدر البيانات',
|
||||
'select_department' => 'حدد قسم',
|
||||
'select_depreciation' => 'حدد نوع الاستهلاك',
|
||||
'select_location' => 'حدد موقعا',
|
||||
|
@ -275,7 +275,7 @@ return [
|
|||
'signed_off_by' => 'تم توقيعه من قبل',
|
||||
'skin' => 'المظهر',
|
||||
'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): يتم تعطيل بعض الميزات لهذا التثبيت.',
|
||||
'site_name' => 'إسم الموقع',
|
||||
'state' => 'المنطقة / الولاية',
|
||||
|
@ -283,7 +283,7 @@ return [
|
|||
'status_label' => 'Status Label',
|
||||
'status' => 'الحالة',
|
||||
'accept_eula' => 'اتفاقية القبول',
|
||||
'show_or_hide_eulas' => 'Show/Hide EULAs',
|
||||
'show_or_hide_eulas' => 'مرحبًا! أخبار سعيدة ، يبدو أن نظامك الأن يعمل مع Snipe-IT. ',
|
||||
'supplier' => 'المورد',
|
||||
'suppliers' => 'الموردون',
|
||||
'sure_to_delete' => 'هل تريد بالتأكيد حذفها',
|
||||
|
@ -307,7 +307,7 @@ return [
|
|||
'user' => 'المستخدم',
|
||||
'accepted' => 'قبلت',
|
||||
'declined' => 'رفض',
|
||||
'declined_note' => 'Declined Notes',
|
||||
'declined_note' => 'الملاحظات المرفوضة',
|
||||
'unassigned' => 'غير مسند',
|
||||
'unaccepted_asset_report' => 'الأصول غير المقبولة',
|
||||
'users' => 'المستخدمين',
|
||||
|
@ -342,8 +342,8 @@ return [
|
|||
'view_all' => 'عرض الكل',
|
||||
'hide_deleted' => 'إخفاء المحذوفة',
|
||||
'email' => 'البريد الالكتروني',
|
||||
'do_not_change' => 'Do not change',
|
||||
'bug_report' => 'Report a bug',
|
||||
'do_not_change' => 'الرجاء عدم التغيير',
|
||||
'bug_report' => 'أبلغ عن وجود مشكلة أو خطأ في النظام',
|
||||
'user_manual' => 'دليل المستخدم',
|
||||
'setup_step_1' => 'الخطوة 1',
|
||||
'setup_step_2' => 'الخطوة 2',
|
||||
|
@ -351,7 +351,7 @@ return [
|
|||
'setup_step_4' => 'الخطوة 4',
|
||||
'setup_config_check' => 'التحقق من الاعدادات',
|
||||
'setup_create_database' => 'Create database tables',
|
||||
'setup_create_admin' => 'Create an admin user',
|
||||
'setup_create_admin' => 'تكوين حساب مدير النظام',
|
||||
'setup_done' => 'إنتهى!',
|
||||
'bulk_edit_about_to' => 'أنت على وشك تحرير ما يلي: ',
|
||||
'checked_out' => 'استعارة',
|
||||
|
|
|
@ -280,6 +280,8 @@ return [
|
|||
'two_factor_enrollment_text' => "Двуфакторово удостоверяване се изисква, но вашето устройство не е било регистрирано още. Отворете Google Authenticator и сканирайте QR кода по-долу за да регистрирате вашето устройство. След като сте записани вашето устройство, въведете кода по-долу",
|
||||
'require_accept_signature' => 'Изисква подпис',
|
||||
'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' => 'ляво',
|
||||
'right' => 'дясно',
|
||||
'top' => 'Горе',
|
||||
|
|
|
@ -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",
|
||||
'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_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',
|
||||
|
|
|
@ -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",
|
||||
'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_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',
|
||||
|
|
|
@ -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",
|
||||
'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_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',
|
||||
'right' => 'vpravo',
|
||||
'top' => 'nahoře',
|
||||
|
|
|
@ -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",
|
||||
'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_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',
|
||||
'right' => 'dde',
|
||||
'top' => 'top',
|
||||
|
|
|
@ -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",
|
||||
'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_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',
|
||||
'right' => 'højre',
|
||||
'top' => 'top',
|
||||
|
|
|
@ -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",
|
||||
'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_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',
|
||||
'right' => 'rechts',
|
||||
'top' => 'Oben',
|
||||
|
|
|
@ -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",
|
||||
'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_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',
|
||||
'right' => 'rechts',
|
||||
'top' => 'oben',
|
||||
|
|
|
@ -280,6 +280,8 @@ return [
|
|||
'two_factor_enrollment_text' => "Απαιτείται έλεγχος ταυτότητας δύο παραγόντων, ωστόσο η συσκευή σας δεν έχει εγγραφεί ακόμα. Ανοίξτε την εφαρμογή Google Authenticator και σαρώστε τον παρακάτω κωδικό QR για να εγγραφείτε στη συσκευή σας. Μόλις εγγραφείτε στη συσκευή σας, πληκτρολογήστε τον παρακάτω κώδικα",
|
||||
'require_accept_signature' => 'Απαιτείται υπογραφή',
|
||||
'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' => 'αριστερά',
|
||||
'right' => 'δεξιά',
|
||||
'top' => 'κορυφή',
|
||||
|
|
|
@ -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",
|
||||
'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_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',
|
||||
|
|
|
@ -23,7 +23,7 @@ return [
|
|||
'Item_Requested' => 'Item Requested',
|
||||
'License_Checkin_Notification' => 'License checked in',
|
||||
'License_Checkout_Notification' => 'Licence checked out',
|
||||
'license_for' => 'License for',
|
||||
'license_for' => 'Licence for',
|
||||
'Low_Inventory_Report' => 'Low Inventory Report',
|
||||
'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',
|
||||
|
|
|
@ -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",
|
||||
'require_accept_signature' => 'Membutuhkan Tanda Tangan',
|
||||
'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',
|
||||
'right' => 'kanan',
|
||||
'top' => 'atas',
|
||||
|
|
|
@ -50,6 +50,7 @@ return array(
|
|||
|
||||
'checkin' => array(
|
||||
'error' => 'There was an issue checking in the license. Please try again.',
|
||||
'not_reassignable' => 'License not reassignable',
|
||||
'success' => 'The license was checked in successfully'
|
||||
),
|
||||
|
||||
|
|
|
@ -55,7 +55,7 @@ return [
|
|||
'display_asset_name' => 'Display Asset Name',
|
||||
'display_checkout_date' => 'Display Checkout Date',
|
||||
'display_eol' => 'Display EOL in table view',
|
||||
'display_qr' => 'Display Square Codes',
|
||||
'display_qr' => 'Display 2D barcode',
|
||||
'display_alt_barcode' => 'Display 1D barcode',
|
||||
'email_logo' => 'Email Logo',
|
||||
'barcode_type' => '2D Barcode Type',
|
||||
|
|
|
@ -565,5 +565,6 @@ return [
|
|||
'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.',
|
||||
'countries_manually_entered_help' => 'Values with an asterisk (*) were manually entered and do not match existing ISO 3166 dropdown values',
|
||||
'accessories_assigned' => 'Assigned Accessories',
|
||||
|
||||
];
|
||||
|
|
|
@ -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",
|
||||
'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_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',
|
||||
'right' => 'derecha',
|
||||
'top' => 'arriba',
|
||||
|
|
|
@ -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",
|
||||
'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_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',
|
||||
'right' => 'derecha',
|
||||
'top' => 'arriba',
|
||||
|
|
|
@ -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",
|
||||
'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_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',
|
||||
'right' => 'derecha',
|
||||
'top' => 'arriba',
|
||||
|
|
|
@ -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",
|
||||
'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_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',
|
||||
'right' => 'derecha',
|
||||
'top' => 'arriba',
|
||||
|
|
|
@ -4,8 +4,8 @@ return array(
|
|||
'personal_api_keys' => 'Personal API Keys',
|
||||
'personal_access_token' => 'Personal Access Token',
|
||||
'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.',
|
||||
'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.',
|
||||
'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' => '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_endpoint' => '/<endpoint>',
|
||||
'api_token_expiration_time' => 'API tokens are set to expire in:',
|
||||
|
|
|
@ -28,7 +28,7 @@ return array(
|
|||
'unavailable' => 'Tarvik ei ole väljastamiseks saadaval. Kontrolli laoseisu',
|
||||
'user_does_not_exist' => 'See kasutaja on kehtetu. Palun proovi uuesti.',
|
||||
'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.',
|
||||
),
|
||||
|
||||
),
|
||||
|
|
|
@ -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",
|
||||
'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_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',
|
||||
'right' => 'õige',
|
||||
'top' => 'üleval',
|
||||
|
|
|
@ -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>.',
|
||||
'delete' => 'Kustuta',
|
||||
'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',
|
||||
'delete_seats' => 'Kustutatud istmed',
|
||||
'deletion_failed' => 'Kustutamine ebaõnnestus',
|
||||
|
@ -155,21 +155,21 @@ return [
|
|||
'id' => 'ID',
|
||||
'image' => 'Pilt',
|
||||
'image_delete' => 'Kustuta pilt',
|
||||
'include_deleted' => 'Include Deleted Assets',
|
||||
'include_deleted' => 'Kaasa Kustutatud Varad',
|
||||
'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_size_help' => 'The maximum upload size allowed is :size.',
|
||||
'image_filetypes_help' => 'Accepted Filetypes are jpg, webp, png, gif, svg, and avif. The maximum upload size allowed is :size.',
|
||||
'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.',
|
||||
'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' => 'Maksimaalne lubatud üleslaadimise suurus on: :size.',
|
||||
'image_filetypes_help' => 'Aktsepteeritud failitüübid on jpg, webp, png, gif, svg ja avif. Maksimaalne lubatud üleslaadimise suurus on: :size.',
|
||||
'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_this_file' => 'Map fields and process this file',
|
||||
'import_this_file' => 'Kaardista väljad ja töötle see fail',
|
||||
'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>.',
|
||||
'import-history' => 'Impordi ajalugu',
|
||||
'asset_maintenance' => 'Varade hooldus',
|
||||
'asset_maintenance_report' => 'Varade hooldusaruanne',
|
||||
'asset_maintenances' => 'Vara säilimine',
|
||||
'item' => 'Kirje',
|
||||
'item' => 'Vara',
|
||||
'item_name' => 'Üksuse nimi',
|
||||
'import_file' => 'impordi CSV fail',
|
||||
'import_type' => 'CSV impordi tüüp',
|
||||
|
@ -184,17 +184,17 @@ return [
|
|||
'licenses_available' => 'Vabad litsentsid',
|
||||
'licenses' => 'Litsentsid',
|
||||
'list_all' => 'Kuva kõik',
|
||||
'loading' => 'Loading... please wait...',
|
||||
'loading' => 'Laadimine... palun oota...',
|
||||
'lock_passwords' => 'Selle välja väärtust demoinstallatsioonis ei salvestata.',
|
||||
'feature_disabled' => 'See funktsioon on demo installimisel keelatud.',
|
||||
'location' => 'Asukoht',
|
||||
'location_plural' => 'Location|Locations',
|
||||
'location_plural' => 'Asukoht|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. ',
|
||||
'logout' => 'Logi välja',
|
||||
'lookup_by_tag' => 'Varatüübi järgi otsimine',
|
||||
'maintenances' => 'Hooldus',
|
||||
'manage_api_keys' => 'Manage API keys',
|
||||
'manage_api_keys' => 'Halda API võtmeid',
|
||||
'manufacturer' => 'Tootja',
|
||||
'manufacturers' => 'Tootjad',
|
||||
'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',
|
||||
'next' => 'Järgmine',
|
||||
'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's last audit date and audit frequency (in <code>Admin Settings > 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.',
|
||||
'next_audit_date_help' => 'Kui kasutate oma organisatsioonis auditeerimist, arvutatakse see tavaliselt automaatselt vara' viimase auditi kuupäeva ja auditi sageduse (<code>Administraatori seaded >> 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' => 'Auditipildid leiate vara ajaloo vahekaardilt.',
|
||||
'no_email' => 'Selle kasutajaga ei ole seotud e-posti aadressi',
|
||||
'last_audit' => 'Viimane audit',
|
||||
'new' => 'uus!',
|
||||
|
@ -230,7 +230,7 @@ return [
|
|||
'purchase_date' => 'Ostu kuupäev',
|
||||
'qty' => '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_status' => 'Tagastamise olek',
|
||||
'ready_to_deploy' => 'Kasutamine valmis',
|
||||
|
@ -241,13 +241,13 @@ return [
|
|||
'restored' => 'taastatud',
|
||||
'restore' => 'Taasta',
|
||||
'requestable_models' => 'Taotletavad mudelid',
|
||||
'requestable_items' => 'Requestable Items',
|
||||
'requestable_items' => 'Taotletavad mudelid',
|
||||
'requested' => 'Taotletud',
|
||||
'requested_date' => 'Taotletav kuupäev',
|
||||
'requested_assets' => 'Taotletavad vahendid',
|
||||
'requested_assets_menu' => 'Vaadake taotletud vahendeid',
|
||||
'request_canceled' => 'Taotlus tühistati',
|
||||
'request_item' => 'Request this item',
|
||||
'request_item' => 'Taotle seda vara',
|
||||
'external_link_tooltip' => 'External link to',
|
||||
'save' => 'Salvesta',
|
||||
'select_var' => 'Select :thing... ', // this will eventually replace all of our other selects
|
||||
|
@ -255,7 +255,7 @@ return [
|
|||
'select_all' => 'Vali kõik',
|
||||
'search' => 'Otsi',
|
||||
'select_category' => 'Vali kategooria',
|
||||
'select_datasource' => 'Select a data source',
|
||||
'select_datasource' => 'Vali andmeallikas',
|
||||
'select_department' => 'Valige osakond',
|
||||
'select_depreciation' => 'Vali amortisatsioonitüüp',
|
||||
'select_location' => 'Vali asukoht',
|
||||
|
@ -275,20 +275,20 @@ return [
|
|||
'signed_off_by' => 'Allkiri',
|
||||
'skin' => 'Väljanägemine',
|
||||
'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.',
|
||||
'site_name' => 'Saidi nimi',
|
||||
'state' => 'Maakond',
|
||||
'status_labels' => 'Oleku sildid',
|
||||
'status_label' => 'Status Label',
|
||||
'status_label' => 'Oleku silt',
|
||||
'status' => 'Staatus',
|
||||
'accept_eula' => 'Lõppkasutaja litsentsilepinguga nõustumine',
|
||||
'show_or_hide_eulas' => 'Show/Hide EULAs',
|
||||
'show_or_hide_eulas' => 'Kuva/Peida kasutustingimused',
|
||||
'supplier' => 'Tarnija',
|
||||
'suppliers' => 'Tarnijad',
|
||||
'sure_to_delete' => 'Kas olete kindel, et soovite kustutada',
|
||||
'sure_to_delete_var' => 'Kas olete kindel, et soovite kustutada :item?',
|
||||
'delete_what' => 'Delete :item',
|
||||
'delete_what' => 'Kustuta :item',
|
||||
'submit' => 'Kinnita',
|
||||
'target' => 'Sihtimine',
|
||||
'time_and_date_display' => 'Kellaaja ja kuupäeva kuvamine',
|
||||
|
@ -307,7 +307,7 @@ return [
|
|||
'user' => 'Kasutaja',
|
||||
'accepted' => 'aktsepteeritud',
|
||||
'declined' => 'tagasi lükatud',
|
||||
'declined_note' => 'Declined Notes',
|
||||
'declined_note' => 'Tagasilükatud märkmed',
|
||||
'unassigned' => 'Määramata',
|
||||
'unaccepted_asset_report' => 'Mitteaktsepteeritud varad',
|
||||
'users' => 'Kasutajad',
|
||||
|
@ -320,22 +320,22 @@ return [
|
|||
'yes' => 'Jah',
|
||||
'zip' => 'Postiindeks',
|
||||
'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!',
|
||||
'no_files_uploaded' => 'Faili üleslaadimine õnnestus!',
|
||||
'token_expired' => 'Teie vormi seanss on aegunud. Palun proovi uuesti.',
|
||||
'login_enabled' => 'Sisselogimine lubatud',
|
||||
'audit_due' => 'Audit',
|
||||
'audit_due_days' => 'Assets Due for Audit Within :days Day|Assets Due for Audit Within :days Days',
|
||||
'checkin_due' => 'Due for Checkin',
|
||||
'checkin_overdue' => 'Overdue for Checkin',
|
||||
'audit_due_days' => 'Auditiks vajalikud varad :days päeva jooksulAuditiks vajalikud varad :days päeva jooksul',
|
||||
'checkin_due' => 'Tagastamiseks vajalik',
|
||||
'checkin_overdue' => 'Tagastamise tähtaeg ületatud',
|
||||
'checkin_due_days' => 'Assets Due for Checkin Within :days Day|Assets Due for Checkin Within :days Days',
|
||||
'audit_overdue' => 'Hilinenud audit',
|
||||
'accept' => 'Kinnita :asset',
|
||||
'i_accept' => 'Ma kinnitan',
|
||||
'i_decline' => 'Ma keeldun',
|
||||
'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',
|
||||
'show_help' => 'Näita abi',
|
||||
'hide_help' => 'Peida abi',
|
||||
|
@ -343,15 +343,15 @@ return [
|
|||
'hide_deleted' => 'Peida kustutatud',
|
||||
'email' => 'E-mail',
|
||||
'do_not_change' => 'Do not change',
|
||||
'bug_report' => 'Report a bug',
|
||||
'bug_report' => 'Teata veast',
|
||||
'user_manual' => 'Kasutusjuhend',
|
||||
'setup_step_1' => 'Step 1',
|
||||
'setup_step_2' => 'Step 2',
|
||||
'setup_step_3' => 'Step 3',
|
||||
'setup_step_4' => 'Step 4',
|
||||
'setup_config_check' => 'Configuration Check',
|
||||
'setup_create_database' => 'Create database tables',
|
||||
'setup_create_admin' => 'Create an admin user',
|
||||
'setup_create_database' => 'Loo andmebaasi tabelid',
|
||||
'setup_create_admin' => 'Loo admin kasutaja',
|
||||
'setup_done' => 'Lõpetatud!',
|
||||
'bulk_edit_about_to' => 'Oled muutmas järgnevat: ',
|
||||
'checked_out' => 'Väljastatud',
|
||||
|
@ -360,14 +360,14 @@ return [
|
|||
'last_checkout' => 'Viimati väljastatud',
|
||||
'due_to_checkin' => 'Järgnevad :count üksust tuleb peagi tagastada:',
|
||||
'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',
|
||||
'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>
|
||||
<p>If you would like to export only certain assets, use the options below to fine-tune your results.</p>',
|
||||
'range' => 'Vahemik',
|
||||
'bom_remark' => 'Add a BOM (byte-order mark) to this CSV',
|
||||
'improvements' => 'Improvements',
|
||||
'bom_remark' => 'Lisa sellele CSV-le BOM (baiti järjekorra mark)',
|
||||
'improvements' => 'Täiendused',
|
||||
'information' => 'Informatsioon',
|
||||
'permissions' => 'Õigused',
|
||||
'managed_ldap' => '(Managed via LDAP)',
|
||||
|
|
|
@ -54,9 +54,9 @@ return [
|
|||
'expires' => 'Aegub',
|
||||
'hello' => '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',
|
||||
'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.',
|
||||
'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:',
|
||||
|
|
|
@ -5,7 +5,7 @@ return array(
|
|||
'actions' => 'Tegevused',
|
||||
'action' => 'Tegevus',
|
||||
'by' => 'Kes',
|
||||
'item' => 'Kirje',
|
||||
'item' => 'Vara',
|
||||
'no_matching_records' => 'No matching records found',
|
||||
|
||||
);
|
||||
|
|
|
@ -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.',
|
||||
'active_url' => 'The :attribute field must be a valid URL.',
|
||||
'after' => 'The :attribute field must be a date after :date.',
|
||||
|
|
|
@ -381,6 +381,8 @@ return [
|
|||
'two_factor_enrollment_text' => "احراز هویت دو عامل لازم است، اما دستگاه شما هنوز ثبت نشده است. برنامه Google Authenticator خود را باز کنید و کد QR زیر را برای ثبت نام دستگاه خود اسکن کنید. هنگامی که دستگاه خود را ثبت نام کردید، کد زیر را وارد کنید",
|
||||
'require_accept_signature' => 'امضا لازم است',
|
||||
'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' => 'چپ',
|
||||
'right' => 'راست',
|
||||
'top' => 'بالا',
|
||||
|
|
|
@ -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",
|
||||
'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_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',
|
||||
'right' => 'oikea',
|
||||
'top' => 'ylä',
|
||||
|
|
|
@ -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",
|
||||
'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_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',
|
||||
'right' => 'kanan',
|
||||
'top' => 'itaas',
|
||||
|
|
|
@ -280,6 +280,8 @@ return [
|
|||
'two_factor_enrollment_text' => "L’authentification à deux facteurs est nécessaire, mais votre appareil n’a 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_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',
|
||||
'right' => 'droite',
|
||||
'top' => 'haut',
|
||||
|
|
|
@ -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",
|
||||
'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_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é',
|
||||
'right' => 'ceart',
|
||||
'top' => 'barr',
|
||||
|
|
|
@ -280,6 +280,8 @@ return [
|
|||
'two_factor_enrollment_text' => "יש צורך באימות שני גורמים, אך המכשיר עדיין לא נרשם. פתח את אפליקציית המאמת של Google וסרוק את קוד QR שלהלן כדי לרשום את המכשיר שלך. לאחר שתירשם את המכשיר, הזן את הקוד הבא",
|
||||
'require_accept_signature' => 'דרוש חתימה',
|
||||
'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' => 'שמאלה',
|
||||
'right' => 'ימין',
|
||||
'top' => 'חלק עליון',
|
||||
|
|
|
@ -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",
|
||||
'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_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',
|
||||
'right' => 'pravo',
|
||||
'top' => 'vrh',
|
||||
|
|
|
@ -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",
|
||||
'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_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',
|
||||
'right' => 'jobb',
|
||||
'top' => 'felső',
|
||||
|
|
|
@ -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",
|
||||
'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_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',
|
||||
'right' => 'kanan',
|
||||
'top' => 'atas',
|
||||
|
|
|
@ -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",
|
||||
'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_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',
|
||||
'right' => 'hægri',
|
||||
'top' => 'top',
|
||||
|
|
|
@ -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",
|
||||
'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_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',
|
||||
'right' => 'destra',
|
||||
'top' => 'superiore',
|
||||
|
|
|
@ -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",
|
||||
'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_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',
|
||||
|
|
|
@ -283,6 +283,8 @@ return [
|
|||
'two_factor_enrollment_text' => "二段階認証の登録が必要ですが、あなたのデバイスはまだ登録されていません。Google Authenticatorアプリを開き、下のQRコードをスキャンして端末を登録してください。端末を登録したら以下のコードを入力してください。",
|
||||
'require_accept_signature' => 'シグネチャリクエスト',
|
||||
'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' => '左',
|
||||
'right' => '右',
|
||||
'top' => '上',
|
||||
|
|
|
@ -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",
|
||||
'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_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',
|
||||
|
|
|
@ -280,6 +280,8 @@ return [
|
|||
'two_factor_enrollment_text' => "2중 인증은 필수입니다만, 당신의 장치는 아직 등록되지 않았습니다. 구글 인증 앱을 실행하고 등록할 장치 아래의 QR 코드를 스캔하세요. 당신의 장치가 등록됐다면, 아래 코드를 입력하세요",
|
||||
'require_accept_signature' => '서명 필수',
|
||||
'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' => '왼쪽',
|
||||
'right' => '오른쪽',
|
||||
'top' => '위',
|
||||
|
|
|
@ -43,7 +43,7 @@ return [
|
|||
'redirect_to_type' => 'Eiti į :type',
|
||||
'redirect_to_checked_out_to' => 'Eiti į išduotus',
|
||||
'select_statustype' => 'Pasirinkite būsenos tipą',
|
||||
'serial' => 'Serijos numeris',
|
||||
'serial' => 'Serijinis numeris',
|
||||
'status' => 'Būsena',
|
||||
'tag' => 'Inventorinis numeris',
|
||||
'update' => 'Turto atnaujinimas',
|
||||
|
|
|
@ -9,16 +9,16 @@ return [
|
|||
'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. ',
|
||||
'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.',
|
||||
'error_generating_labels' => 'Error while generating labels.',
|
||||
'no_assets_selected' => 'No assets selected.',
|
||||
'labels_generated' => 'Etiketės sugeneruotos sėkmingai.',
|
||||
'error_generating_labels' => 'Generuojant etiketes įvyko klaida.',
|
||||
'no_assets_selected' => 'Nepasirinktas joks turtas.',
|
||||
|
||||
'create' => [
|
||||
'error' => 'Turto sukurti nepavyko, bandykite dar kartą.',
|
||||
'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>.',
|
||||
'multi_success_linked' => 'Asset with tag :links was created successfully.|:count assets were created succesfully. :links.',
|
||||
'partial_failure' => 'An asset was unable to be created. Reason: :failures|:count assets were unable to be created. Reasons: :failures',
|
||||
'multi_success_linked' => 'Turtas su inventoriniu numeriu :links sukurtas sėkmingai.|:count turto vienetai(-ų) sukurti sėkmingai. :links.',
|
||||
'partial_failure' => 'Nepavyko sukurti turto. Priežastis: :failures|:count turto vienetų nepavyko sukurti. Priežastys: :failures',
|
||||
],
|
||||
|
||||
'update' => [
|
||||
|
|
|
@ -19,7 +19,7 @@ return [
|
|||
'location' => 'Vieta',
|
||||
'purchase_cost' => 'Kaina',
|
||||
'purchase_date' => 'Nupirkta',
|
||||
'serial' => 'Serijos numeris',
|
||||
'serial' => 'Serijinis numeris',
|
||||
'status' => 'Būsena',
|
||||
'title' => 'Turtas ',
|
||||
'image' => 'Įrenginio atvaizdas',
|
||||
|
|
|
@ -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ą",
|
||||
'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_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',
|
||||
'right' => 'dešinėje',
|
||||
'top' => 'viršuje',
|
||||
|
|
|
@ -560,7 +560,7 @@ return [
|
|||
'something_went_wrong' => 'Kažkas negerai su jūsų užklausa.',
|
||||
'close' => 'Uždaryti',
|
||||
'expires' => 'Baigiasi',
|
||||
'map_fields'=> 'Map :item_type Fields',
|
||||
'map_fields'=> 'Susieti :item_type laukus',
|
||||
'remaining_var' => ':count liko',
|
||||
'label' => 'Etiketė',
|
||||
'import_asset_tag_exists' => 'Turtas su inventoriniu numeriu :asset_tag jau yra ir atnaujinimo užklausa nebuvo pateikta. Jokie pakeitimai nebuvo atlikti.',
|
||||
|
|
|
@ -23,7 +23,7 @@ return [
|
|||
'Item_Requested' => 'Daiktas užsakytas',
|
||||
'License_Checkin_Notification' => 'Licencija paimta',
|
||||
'License_Checkout_Notification' => 'Licencija išduota',
|
||||
'license_for' => 'License for',
|
||||
'license_for' => 'Licencija skirta',
|
||||
'Low_Inventory_Report' => 'Ataskaita apie mažas atsargas',
|
||||
'a_user_canceled' => 'Naudotojas svetainėje atšaukė daikto užsakymą',
|
||||
'a_user_requested' => 'Naudotojas svetainėje užsakė daiktą',
|
||||
|
|
|
@ -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",
|
||||
'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_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',
|
||||
'right' => 'pa labi',
|
||||
'top' => 'tops',
|
||||
|
|
|
@ -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",
|
||||
'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_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',
|
||||
'right' => 'tika',
|
||||
'top' => 'runga',
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue