Compare commits
11 Commits
custom_val
...
features/i
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
158dc1f8da | ||
|
|
ba51021ce3 | ||
|
|
a605dc16b6 | ||
|
|
36858d1c64 | ||
|
|
3d74e40c44 | ||
|
|
cc7253b29f | ||
|
|
bc185a2848 | ||
|
|
d33829f67a | ||
|
|
d818dc19c1 | ||
|
|
d6769443a9 | ||
|
|
9e0566ca7a |
@@ -2819,6 +2819,15 @@
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "scoo73r",
|
||||
"name": "Scooter Crawford",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/9262438?v=4",
|
||||
"profile": "https://github.com/scoo73r",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
 [](https://crowdin.com/project/snipe-it) [](https://hub.docker.com/r/snipe/snipe-it/) [](https://twitter.com/snipeitapp) [](https://www.codacy.com/app/snipe/snipe-it?utm_source=github.com&utm_medium=referral&utm_content=snipe/snipe-it&utm_campaign=Badge_Grade)
|
||||
[](#contributors) [](https://discord.gg/yZFtShAcKk) [](https://huntr.dev)
|
||||
[](#contributors) [](https://discord.gg/yZFtShAcKk) [](https://huntr.dev)
|
||||
|
||||
## Snipe-IT - Open Source Asset Management System
|
||||
|
||||
@@ -139,7 +139,7 @@ Thanks goes to all of these wonderful people ([emoji key](https://github.com/ken
|
||||
| [<img src="https://avatars.githubusercontent.com/u/97299851?v=4" width="110px;"/><br /><sub>Christian Weirich</sub>](https://github.com/chrisweirich)<br />[💻](https://github.com/snipe/snipe-it/commits?author=chrisweirich "Code") | [<img src="https://avatars.githubusercontent.com/u/1294403?v=4" width="110px;"/><br /><sub>denzfarid</sub>](https://github.com/denzfarid)<br /> | [<img src="https://avatars.githubusercontent.com/u/94018771?v=4" width="110px;"/><br /><sub>ntbutler-nbcs</sub>](https://github.com/ntbutler-nbcs)<br />[💻](https://github.com/snipe/snipe-it/commits?author=ntbutler-nbcs "Code") | [<img src="https://avatars.githubusercontent.com/u/172697?v=4" width="110px;"/><br /><sub>Naveen</sub>](https://naveensrinivasan.dev)<br />[💻](https://github.com/snipe/snipe-it/commits?author=naveensrinivasan "Code") | [<img src="https://avatars.githubusercontent.com/u/55674383?v=4" width="110px;"/><br /><sub>Mike Roquemore</sub>](https://github.com/mikeroq)<br />[💻](https://github.com/snipe/snipe-it/commits?author=mikeroq "Code") | [<img src="https://avatars.githubusercontent.com/u/7991086?v=4" width="110px;"/><br /><sub>Daniel Reeder</sub>](https://github.com/reederda)<br />[🌍](#translation-reederda "Translation") [🌍](#translation-reederda "Translation") [💻](https://github.com/snipe/snipe-it/commits?author=reederda "Code") | [<img src="https://avatars.githubusercontent.com/u/109422491?v=4" width="110px;"/><br /><sub>vickyjaura183</sub>](https://github.com/vickyjaura183)<br />[💻](https://github.com/snipe/snipe-it/commits?author=vickyjaura183 "Code") |
|
||||
| [<img src="https://avatars.githubusercontent.com/u/32363424?v=4" width="110px;"/><br /><sub>Peace</sub>](https://github.com/julian-piehl)<br />[💻](https://github.com/snipe/snipe-it/commits?author=julian-piehl "Code") | [<img src="https://avatars.githubusercontent.com/u/231528?v=4" width="110px;"/><br /><sub>Kyle Gordon</sub>](https://github.com/kylegordon)<br />[💻](https://github.com/snipe/snipe-it/commits?author=kylegordon "Code") | [<img src="https://avatars.githubusercontent.com/u/53009155?v=4" width="110px;"/><br /><sub>Katharina Drexel</sub>](http://www.bfh.ch)<br />[💻](https://github.com/snipe/snipe-it/commits?author=sunflowerbofh "Code") | [<img src="https://avatars.githubusercontent.com/u/1931963?v=4" width="110px;"/><br /><sub>David Sferruzza</sub>](https://david.sferruzza.fr/)<br />[💻](https://github.com/snipe/snipe-it/commits?author=dsferruzza "Code") | [<img src="https://avatars.githubusercontent.com/u/19511639?v=4" width="110px;"/><br /><sub>Rick Nelson</sub>](https://github.com/rnelsonee)<br />[💻](https://github.com/snipe/snipe-it/commits?author=rnelsonee "Code") | [<img src="https://avatars.githubusercontent.com/u/94169344?v=4" width="110px;"/><br /><sub>BasO12</sub>](https://github.com/BasO12)<br />[💻](https://github.com/snipe/snipe-it/commits?author=BasO12 "Code") | [<img src="https://avatars.githubusercontent.com/u/111710123?v=4" width="110px;"/><br /><sub>Vautia</sub>](https://github.com/Vautia)<br />[💻](https://github.com/snipe/snipe-it/commits?author=Vautia "Code") |
|
||||
| [<img src="https://avatars.githubusercontent.com/u/28321?v=4" width="110px;"/><br /><sub>Chris Hartjes</sub>](http://www.littlehart.net/atthekeyboard)<br />[💻](https://github.com/snipe/snipe-it/commits?author=chartjes "Code") | [<img src="https://avatars.githubusercontent.com/u/2404584?v=4" width="110px;"/><br /><sub>geo-chen</sub>](https://github.com/geo-chen)<br />[💻](https://github.com/snipe/snipe-it/commits?author=geo-chen "Code") | [<img src="https://avatars.githubusercontent.com/u/6006620?v=4" width="110px;"/><br /><sub>Phan Nguyen</sub>](https://github.com/nh314)<br />[💻](https://github.com/snipe/snipe-it/commits?author=nh314 "Code") | [<img src="https://avatars.githubusercontent.com/u/115993812?v=4" width="110px;"/><br /><sub>Iisakki Jaakkola</sub>](https://github.com/StarlessNights)<br />[💻](https://github.com/snipe/snipe-it/commits?author=StarlessNights "Code") | [<img src="https://avatars.githubusercontent.com/u/22633385?v=4" width="110px;"/><br /><sub>Ikko Ashimine</sub>](https://bandism.net/)<br />[💻](https://github.com/snipe/snipe-it/commits?author=eltociear "Code") | [<img src="https://avatars.githubusercontent.com/u/56871540?v=4" width="110px;"/><br /><sub>Lukas Fehling</sub>](https://github.com/lukasfehling)<br />[💻](https://github.com/snipe/snipe-it/commits?author=lukasfehling "Code") | [<img src="https://avatars.githubusercontent.com/u/1975990?v=4" width="110px;"/><br /><sub>Fernando Almeida</sub>](https://github.com/fernando-almeida)<br />[💻](https://github.com/snipe/snipe-it/commits?author=fernando-almeida "Code") |
|
||||
| [<img src="https://avatars.githubusercontent.com/u/116301219?v=4" width="110px;"/><br /><sub>akemidx</sub>](https://github.com/akemidx)<br />[💻](https://github.com/snipe/snipe-it/commits?author=akemidx "Code") | [<img src="https://avatars.githubusercontent.com/u/144778?v=4" width="110px;"/><br /><sub>Oguz Bilgic</sub>](http://oguz.site)<br />[💻](https://github.com/snipe/snipe-it/commits?author=oguzbilgic "Code") |
|
||||
| [<img src="https://avatars.githubusercontent.com/u/116301219?v=4" width="110px;"/><br /><sub>akemidx</sub>](https://github.com/akemidx)<br />[💻](https://github.com/snipe/snipe-it/commits?author=akemidx "Code") | [<img src="https://avatars.githubusercontent.com/u/144778?v=4" width="110px;"/><br /><sub>Oguz Bilgic</sub>](http://oguz.site)<br />[💻](https://github.com/snipe/snipe-it/commits?author=oguzbilgic "Code") | [<img src="https://avatars.githubusercontent.com/u/9262438?v=4" width="110px;"/><br /><sub>Scooter Crawford</sub>](https://github.com/scoo73r)<br />[💻](https://github.com/snipe/snipe-it/commits?author=scoo73r "Code") |
|
||||
<!-- ALL-CONTRIBUTORS-LIST:END -->
|
||||
|
||||
This project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. Contributions of any kind welcome!
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
namespace App\Console\Commands;
|
||||
|
||||
use App\Models\Department;
|
||||
use App\Models\Group;
|
||||
use Illuminate\Console\Command;
|
||||
use App\Models\Setting;
|
||||
use App\Models\Ldap;
|
||||
@@ -57,6 +58,7 @@ class LdapSync extends Command
|
||||
$ldap_result_country = Setting::getSettings()->ldap_country;
|
||||
$ldap_result_dept = Setting::getSettings()->ldap_dept;
|
||||
$ldap_result_manager = Setting::getSettings()->ldap_manager;
|
||||
$ldap_default_group = Setting::getSettings()->ldap_default_group;
|
||||
|
||||
try {
|
||||
$ldapconn = Ldap::connectToLdap();
|
||||
@@ -192,6 +194,7 @@ class LdapSync extends Command
|
||||
$item['department'] = isset($results[$i][$ldap_result_dept][0]) ? $results[$i][$ldap_result_dept][0] : '';
|
||||
$item['manager'] = isset($results[$i][$ldap_result_manager][0]) ? $results[$i][$ldap_result_manager][0] : '';
|
||||
|
||||
|
||||
$department = Department::firstOrCreate([
|
||||
'name' => $item['department'],
|
||||
]);
|
||||
@@ -218,6 +221,13 @@ class LdapSync extends Command
|
||||
$user->country = $item['country'];
|
||||
$user->department_id = $department->id;
|
||||
|
||||
if($ldap_default_group != null) {
|
||||
|
||||
$default = Group::select()->where('id', $ldap_default_group)->first();
|
||||
$user->permissions = $default->permissions;
|
||||
|
||||
}
|
||||
|
||||
if($item['manager'] != null) {
|
||||
// Check Cache first
|
||||
if (isset($manager_cache[$item['manager']])) {
|
||||
@@ -326,6 +336,7 @@ class LdapSync extends Command
|
||||
if ($user->save()) {
|
||||
$item['note'] = $item['createorupdate'];
|
||||
$item['status'] = 'success';
|
||||
|
||||
} else {
|
||||
foreach ($user->getErrors()->getMessages() as $key => $err) {
|
||||
$errors .= $err[0];
|
||||
|
||||
@@ -39,33 +39,39 @@ class SyncAssetCounters extends Command
|
||||
public function handle()
|
||||
{
|
||||
$start = microtime(true);
|
||||
|
||||
// We need the whole count of all assets in order to set up the progress bar
|
||||
$assets_count = Asset::withTrashed()->count();
|
||||
$bar = $this->output->createProgressBar($assets_count);
|
||||
|
||||
$assets = Asset::withCount('checkins as checkins_count', 'checkouts as checkouts_count', 'userRequests as user_requests_count')
|
||||
->withTrashed()->get();
|
||||
->withTrashed()->chunk(100, function ($assets) use ($bar) {
|
||||
|
||||
if ($assets) {
|
||||
if ($assets->count() > 0) {
|
||||
$bar = $this->output->createProgressBar($assets->count());
|
||||
if ($assets->count() > 0) {
|
||||
|
||||
foreach ($assets as $asset) {
|
||||
$asset->checkin_counter = (int) $asset->checkins_count;
|
||||
$asset->checkout_counter = (int) $asset->checkouts_count;
|
||||
$asset->requests_counter = (int) $asset->user_requests_count;
|
||||
$asset->unsetEventDispatcher();
|
||||
$asset->save();
|
||||
$output['info'][] = 'Asset: '.$asset->id.' has '.$asset->checkin_counter.' checkins, '.$asset->checkout_counter.' checkouts, and '.$asset->requests_counter.' requests';
|
||||
$bar->advance();
|
||||
}
|
||||
$bar->finish();
|
||||
foreach ($assets as $asset) {
|
||||
|
||||
foreach ($output['info'] as $key => $output_text) {
|
||||
$this->info($output_text);
|
||||
}
|
||||
$asset->checkin_counter = (int) $asset->checkins_count;
|
||||
$asset->checkout_counter = (int) $asset->checkouts_count;
|
||||
$asset->requests_counter = (int) $asset->user_requests_count;
|
||||
$asset->unsetEventDispatcher();
|
||||
$asset->save();
|
||||
$bar->advance();
|
||||
|
||||
\Log::debug('Asset: '.$asset->id.' has '.$asset->checkin_counter.' checkins, '.$asset->checkout_counter.' checkouts, and '.$asset->requests_counter.' requests');
|
||||
|
||||
}
|
||||
|
||||
$time_elapsed_secs = microtime(true) - $start;
|
||||
$this->info('Sync executed in '.$time_elapsed_secs.' seconds');
|
||||
} else {
|
||||
$this->info('No assets to sync');
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
$bar->finish();
|
||||
$time_elapsed_secs = microtime(true) - $start;
|
||||
$this->info("\nSync of ".$assets_count.' assets executed in '.$time_elapsed_secs.' seconds');
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,6 +12,7 @@ use App\Models\Statuslabel;
|
||||
use Crypt;
|
||||
use Illuminate\Contracts\Encryption\DecryptException;
|
||||
use Image;
|
||||
use Carbon\Carbon;
|
||||
|
||||
class Helper
|
||||
{
|
||||
@@ -1125,5 +1126,25 @@ class Helper
|
||||
|
||||
return $settings;
|
||||
}
|
||||
public static function AgeFormat($date) {
|
||||
$year = Carbon::parse($date)
|
||||
->diff(now())->y;
|
||||
$month = Carbon::parse($date)
|
||||
->diff(now())->m;
|
||||
$days = Carbon::parse($date)
|
||||
->diff(now())->d;
|
||||
$age='';
|
||||
if ($year) {
|
||||
$age .= $year.'y ';
|
||||
}
|
||||
if ($month) {
|
||||
$age .= $month.'m ';
|
||||
}
|
||||
if ($days) {
|
||||
$age .= $days.'d';
|
||||
}
|
||||
|
||||
return $age;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -113,8 +113,6 @@ class AcceptanceController extends Controller
|
||||
Storage::makeDirectory('private_uploads/signatures', 775);
|
||||
}
|
||||
|
||||
|
||||
|
||||
$item = $acceptance->checkoutable_type::find($acceptance->checkoutable_id);
|
||||
$display_model = '';
|
||||
$pdf_view_route = '';
|
||||
@@ -140,6 +138,7 @@ class AcceptanceController extends Controller
|
||||
|
||||
// The item was accepted, check for a signature
|
||||
if ($request->filled('signature_output')) {
|
||||
|
||||
$sig_filename = 'siglog-' . Str::uuid() . '-' . date('Y-m-d-his') . '.png';
|
||||
$data_uri = $request->input('signature_output');
|
||||
$encoded_image = explode(',', $data_uri);
|
||||
@@ -151,59 +150,42 @@ class AcceptanceController extends Controller
|
||||
} else {
|
||||
return redirect()->back()->with('error', trans('general.shitty_browser'));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
// this is horrible
|
||||
switch($acceptance->checkoutable_type){
|
||||
// this is now slightly less horrible
|
||||
$assigned_to = User::find($acceptance->assigned_to_id)->present()->fullName;
|
||||
|
||||
switch ($acceptance->checkoutable_type) {
|
||||
|
||||
case 'App\Models\Asset':
|
||||
$pdf_view_route ='account.accept.accept-asset-eula';
|
||||
$asset_model = AssetModel::find($item->model_id);
|
||||
$display_model = $asset_model->name;
|
||||
$assigned_to = User::find($acceptance->assigned_to_id)->present()->fullName;
|
||||
break;
|
||||
|
||||
case 'App\Models\Accessory':
|
||||
$pdf_view_route ='account.accept.accept-accessory-eula';
|
||||
$accessory = Accessory::find($item->id);
|
||||
$display_model = $accessory->name;
|
||||
$assigned_to = User::find($item->assignedTo);
|
||||
break;
|
||||
|
||||
case 'App\Models\LicenseSeat':
|
||||
$pdf_view_route ='account.accept.accept-license-eula';
|
||||
$license = License::find($item->license_id);
|
||||
$display_model = $license->name;
|
||||
$assigned_to = User::find($acceptance->assigned_to_id)->present()->fullName;
|
||||
break;
|
||||
|
||||
case 'App\Models\Component':
|
||||
$pdf_view_route ='account.accept.accept-component-eula';
|
||||
$component = Component::find($item->id);
|
||||
$display_model = $component->name;
|
||||
$assigned_to = User::find($acceptance->assigned_to_id)->present()->fullName;
|
||||
break;
|
||||
|
||||
case 'App\Models\Consumable':
|
||||
$pdf_view_route ='account.accept.accept-consumable-eula';
|
||||
$consumable = Consumable::find($item->id);
|
||||
$display_model = $consumable->name;
|
||||
$assigned_to = User::find($acceptance->assigned_to_id)->present()->fullName;
|
||||
break;
|
||||
|
||||
}
|
||||
// if ($acceptance->checkoutable_type == 'App\Models\Asset') {
|
||||
// $pdf_view_route ='account.accept.accept-asset-eula';
|
||||
// $asset_model = AssetModel::find($item->model_id);
|
||||
// $display_model = $asset_model->name;
|
||||
// $assigned_to = User::find($item->assigned_to)->present()->fullName;
|
||||
//
|
||||
// } elseif ($acceptance->checkoutable_type== 'App\Models\Accessory') {
|
||||
// $pdf_view_route ='account.accept.accept-accessory-eula';
|
||||
// $accessory = Accessory::find($item->id);
|
||||
// $display_model = $accessory->name;
|
||||
// $assigned_to = User::find($item->assignedTo);
|
||||
//
|
||||
// }
|
||||
|
||||
|
||||
/**
|
||||
* Gather the data for the PDF. We fire this whether there is a signature required or not,
|
||||
@@ -233,7 +215,7 @@ class AcceptanceController extends Controller
|
||||
|
||||
if ($pdf_view_route!='') {
|
||||
\Log::debug($pdf_filename.' is the filename, and the route was specified.');
|
||||
$pdf = Pdf::loadView($pdf_view_route, $data);
|
||||
$pdf = Pdf::loadView('account.accept.accept-item', $data);
|
||||
Storage::put('private_uploads/eula-pdfs/' .$pdf_filename, $pdf->output());
|
||||
}
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@ use App\Http\Requests\AssetCheckoutRequest;
|
||||
use App\Models\Asset;
|
||||
use Illuminate\Database\Eloquent\ModelNotFoundException;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class AssetCheckoutController extends Controller
|
||||
{
|
||||
@@ -24,8 +25,9 @@ class AssetCheckoutController extends Controller
|
||||
* @since [v1.0]
|
||||
* @return View
|
||||
*/
|
||||
public function create($assetId)
|
||||
public function create(Request $request, $assetId)
|
||||
{
|
||||
|
||||
// Check if the asset exists
|
||||
if (is_null($asset = Asset::find(e($assetId)))) {
|
||||
return redirect()->route('hardware.index')->with('error', trans('admin/hardware/message.does_not_exist'));
|
||||
@@ -34,10 +36,28 @@ class AssetCheckoutController extends Controller
|
||||
$this->authorize('checkout', $asset);
|
||||
|
||||
if ($asset->availableForCheckout()) {
|
||||
|
||||
/**
|
||||
* Set a session variable here for the possible return url - this may or may not be used
|
||||
* in the store() method below, but we need to set it here, so we know what "back" means.
|
||||
* We set this here so that we don't end up with UX weirdness if our referrer isn't what we're
|
||||
* expecting (for example a checkout that happens from a place we didn't plan for yet.
|
||||
* - @snipe - 2022-12-22
|
||||
*/
|
||||
$request->session()->forget('backto_item_type');
|
||||
$request->session()->forget('backto_item_id');
|
||||
\Log::debug('dropping session data for backto_item_type and backto_item_id');
|
||||
|
||||
// Hard-coding this for now, since we're only workiing with assets, not other first-class items yet
|
||||
$request->session()->put('backto_item_type', '\App\Models\Asset');
|
||||
$request->session()->put('backto_item_id', $assetId);
|
||||
\Log::debug('setting new session data for asset '. $assetId . ' via backto_item_type and backto_item_id');
|
||||
|
||||
return view('hardware/checkout', compact('asset'))
|
||||
->with('statusLabel_list', Helper::deployableStatusLabelList());
|
||||
}
|
||||
|
||||
|
||||
return redirect()->route('hardware.index')->with('error', trans('admin/hardware/message.checkout.not_available'));
|
||||
}
|
||||
|
||||
@@ -52,26 +72,32 @@ class AssetCheckoutController extends Controller
|
||||
*/
|
||||
public function store(AssetCheckoutRequest $request, $assetId)
|
||||
{
|
||||
|
||||
$asset = Asset::find($assetId);
|
||||
$this->authorize('checkout', $asset);
|
||||
|
||||
|
||||
|
||||
try {
|
||||
// Check if the asset exists
|
||||
if (! $asset = Asset::find($assetId)) {
|
||||
if (!$asset) {
|
||||
return redirect()->route('hardware.index')->with('error', trans('admin/hardware/message.does_not_exist'));
|
||||
} elseif (! $asset->availableForCheckout()) {
|
||||
} elseif (!$asset->availableForCheckout()) {
|
||||
return redirect()->route('hardware.index')->with('error', trans('admin/hardware/message.checkout.not_available'));
|
||||
}
|
||||
|
||||
$this->authorize('checkout', $asset);
|
||||
|
||||
$admin = Auth::user();
|
||||
|
||||
$target = $this->determineCheckoutTarget($asset);
|
||||
|
||||
$asset = $this->updateAssetLocation($asset, $target);
|
||||
|
||||
$expected_checkin = '';
|
||||
$checkout_at = date('Y-m-d H:i:s');
|
||||
|
||||
if (($request->filled('checkout_at')) && ($request->get('checkout_at') != date('Y-m-d'))) {
|
||||
$checkout_at = $request->get('checkout_at');
|
||||
}
|
||||
|
||||
$expected_checkin = '';
|
||||
if ($request->filled('expected_checkin')) {
|
||||
$expected_checkin = $request->get('expected_checkin');
|
||||
}
|
||||
@@ -80,20 +106,32 @@ class AssetCheckoutController extends Controller
|
||||
$asset->status_id = $request->get('status_id');
|
||||
}
|
||||
|
||||
if(!empty($asset->licenseseats->all())){
|
||||
if(request('checkout_to_type') == 'user') {
|
||||
if ($request->filled('next_action')) {
|
||||
$back_to_route = $request->get('next_action');
|
||||
}
|
||||
|
||||
if(!empty($asset->licenseseats->all())) {
|
||||
|
||||
if (request('checkout_to_type') == 'user') {
|
||||
foreach ($asset->licenseseats as $seat){
|
||||
$seat->assigned_to = $target->id;
|
||||
$seat->save();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if ($asset->checkOut($target, $admin, $checkout_at, $expected_checkin, e($request->get('note')), $request->get('name'))) {
|
||||
return redirect()->route('hardware.index')->with('success', trans('admin/hardware/message.checkout.success'));
|
||||
|
||||
if ($request->get('accept_in_person')=='1') {
|
||||
return view('hardware/checkout', compact('asset'))
|
||||
->with('statusLabel_list', Helper::deployableStatusLabelList());
|
||||
}
|
||||
|
||||
return redirect()->route($back_to_route)->with('success', trans('admin/hardware/message.checkout.success'));
|
||||
}
|
||||
|
||||
// Redirect to the asset management page with error
|
||||
// Redirect to the asset page with error
|
||||
return redirect()->to("hardware/$assetId/checkout")->with('error', trans('admin/hardware/message.checkout.error').$asset->getErrors());
|
||||
} catch (ModelNotFoundException $e) {
|
||||
return redirect()->back()->with('error', trans('admin/hardware/message.checkout.error'))->withErrors($asset->getErrors());
|
||||
|
||||
@@ -135,9 +135,7 @@ class LoginController extends Controller
|
||||
} else {
|
||||
|
||||
// Better logging
|
||||
if (!$saml->isEnabled()) {
|
||||
\Log::debug("SAML page requested, but SAML does not seem to enabled.");
|
||||
} else {
|
||||
if (empty($samlData)) {
|
||||
\Log::debug("SAML page requested, but samlData seems empty.");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,7 +34,7 @@ class DashboardController extends Controller
|
||||
$counts['license'] = \App\Models\License::assetcount();
|
||||
$counts['consumable'] = \App\Models\Consumable::count();
|
||||
$counts['component'] = \App\Models\Component::count();
|
||||
$counts['user'] = \App\Models\User::count();
|
||||
$counts['user'] = \App\Models\Company::scopeCompanyables(Auth::user())->count();
|
||||
$counts['grand_total'] = $counts['asset'] + $counts['accessory'] + $counts['license'] + $counts['consumable'];
|
||||
|
||||
if ((! file_exists(storage_path().'/oauth-private.key')) || (! file_exists(storage_path().'/oauth-public.key'))) {
|
||||
|
||||
@@ -1110,13 +1110,19 @@ class ReportsController extends Controller
|
||||
$rows[] = implode(',', $header);
|
||||
|
||||
foreach ($assetsForReport as $item) {
|
||||
$row = [ ];
|
||||
$row[] = str_replace(',', '', e($item['assetItem']->model->category->name));
|
||||
$row[] = str_replace(',', '', e($item['assetItem']->model->name));
|
||||
$row[] = str_replace(',', '', e($item['assetItem']->name));
|
||||
$row[] = str_replace(',', '', e($item['assetItem']->asset_tag));
|
||||
$row[] = str_replace(',', '', e(($item['acceptance']->assignedTo) ? $item['acceptance']->assignedTo->present()->name() : trans('admin/reports/general.deleted_user')));
|
||||
$rows[] = implode(',', $row);
|
||||
|
||||
if ($item['assetItem'] != null){
|
||||
|
||||
$row = [ ];
|
||||
$row[] = str_replace(',', '', e($item['assetItem']->model->category->name));
|
||||
$row[] = str_replace(',', '', e($item['assetItem']->model->name));
|
||||
$row[] = str_replace(',', '', e($item['assetItem']->name));
|
||||
$row[] = str_replace(',', '', e($item['assetItem']->asset_tag));
|
||||
$row[] = str_replace(',', '', e(($item['acceptance']->assignedTo) ? $item['acceptance']->assignedTo->present()->name() : trans('admin/reports/general.deleted_user')));
|
||||
$rows[] = implode(',', $row);
|
||||
} else {
|
||||
// Log the error maybe?
|
||||
}
|
||||
}
|
||||
|
||||
// spit out a csv
|
||||
|
||||
@@ -7,6 +7,7 @@ use App\Helpers\StorageHelper;
|
||||
use App\Http\Requests\ImageUploadRequest;
|
||||
use App\Http\Requests\SettingsSamlRequest;
|
||||
use App\Http\Requests\SetupUserRequest;
|
||||
use App\Models\Group;
|
||||
use App\Models\Setting;
|
||||
use App\Models\Asset;
|
||||
use App\Models\User;
|
||||
@@ -911,6 +912,8 @@ class SettingsController extends Controller
|
||||
public function getLdapSettings()
|
||||
{
|
||||
$setting = Setting::getSettings();
|
||||
$groups = Group::pluck('name', 'id');
|
||||
|
||||
|
||||
/**
|
||||
* This validator is only temporary (famous last words.) - @snipe
|
||||
@@ -929,7 +932,7 @@ class SettingsController extends Controller
|
||||
|
||||
|
||||
|
||||
return view('settings.ldap', compact('setting'))->withErrors($validator);
|
||||
return view('settings.ldap', compact('setting', 'groups'))->withErrors($validator);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -956,6 +959,7 @@ class SettingsController extends Controller
|
||||
$setting->ldap_pword = Crypt::encrypt($request->input('ldap_pword'));
|
||||
}
|
||||
$setting->ldap_basedn = $request->input('ldap_basedn');
|
||||
$setting->ldap_default_group = $request->input('ldap_default_group');
|
||||
$setting->ldap_filter = $request->input('ldap_filter');
|
||||
$setting->ldap_username_field = $request->input('ldap_username_field');
|
||||
$setting->ldap_lname_field = $request->input('ldap_lname_field');
|
||||
|
||||
@@ -49,7 +49,7 @@ class ItemImportRequest extends FormRequest
|
||||
$errorMessage = null;
|
||||
|
||||
if (is_null($fieldValue)) {
|
||||
$errorMessage = trans('validation.import_field_empty');
|
||||
$errorMessage = trans('validation.import_field_empty', ['fieldname' => $field]);
|
||||
$this->errorCallback($import, $field, $errorMessage);
|
||||
|
||||
return $this->errors;
|
||||
|
||||
@@ -22,6 +22,22 @@ class AssetModelsTransformer
|
||||
|
||||
public function transformAssetModel(AssetModel $assetmodel)
|
||||
{
|
||||
|
||||
$default_field_values = array();
|
||||
|
||||
// Reach into the custom fields and models_custom_fields pivot table to find the default values for this model
|
||||
if ($assetmodel->fieldset) {
|
||||
foreach($assetmodel->fieldset->fields AS $field) {
|
||||
$default_field_values[] = [
|
||||
'name' => e($field->name),
|
||||
'db_column_name' => e($field->db_column_name()),
|
||||
'default_value' => ($field->defaultValue($assetmodel->id)) ? e($field->defaultValue($assetmodel->id)) : null,
|
||||
'format' => e($field->format),
|
||||
'required' => ($field->pivot->required == '1') ? true : false,
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
$array = [
|
||||
'id' => (int) $assetmodel->id,
|
||||
'name' => e($assetmodel->name),
|
||||
@@ -44,6 +60,7 @@ class AssetModelsTransformer
|
||||
'id' => (int) $assetmodel->fieldset->id,
|
||||
'name'=> e($assetmodel->fieldset->name),
|
||||
] : null,
|
||||
'default_fieldset_values' => $default_field_values,
|
||||
'eol' => ($assetmodel->eol > 0) ? $assetmodel->eol.' months' : 'None',
|
||||
'requestable' => ($assetmodel->requestable == '1') ? true : false,
|
||||
'notes' => e($assetmodel->notes),
|
||||
|
||||
@@ -8,6 +8,7 @@ use App\Models\Setting;
|
||||
use Gate;
|
||||
use Illuminate\Database\Eloquent\Collection;
|
||||
|
||||
|
||||
class AssetsTransformer
|
||||
{
|
||||
public function transformAssets(Collection $assets, $total)
|
||||
@@ -80,6 +81,7 @@ class AssetsTransformer
|
||||
'next_audit_date' => Helper::getFormattedDateObject($asset->next_audit_date, 'date'),
|
||||
'deleted_at' => Helper::getFormattedDateObject($asset->deleted_at, 'datetime'),
|
||||
'purchase_date' => Helper::getFormattedDateObject($asset->purchase_date, 'date'),
|
||||
'age' => $asset->purchase_date ? Helper::AgeFormat($asset->purchase_date) : '',
|
||||
'last_checkout' => Helper::getFormattedDateObject($asset->last_checkout, 'datetime'),
|
||||
'expected_checkin' => Helper::getFormattedDateObject($asset->expected_checkin, 'date'),
|
||||
'purchase_cost' => Helper::formatCurrencyOutput($asset->purchase_cost),
|
||||
|
||||
@@ -77,6 +77,7 @@ abstract class Importer
|
||||
'manager_first_name' => 'manager first name',
|
||||
'manager_last_name' => 'manager last name',
|
||||
'min_amt' => 'minimum quantity',
|
||||
'remote' => 'remote',
|
||||
];
|
||||
/**
|
||||
* Map of item fields->csv names
|
||||
@@ -288,6 +289,7 @@ abstract class Importer
|
||||
'department_id' => '',
|
||||
'username' => $this->findCsvMatch($row, 'username'),
|
||||
'activated' => $this->fetchHumanBoolean($this->findCsvMatch($row, 'activated')),
|
||||
'remote' => $this->fetchHumanBoolean(($this->findCsvMatch($row, 'remote'))),
|
||||
];
|
||||
|
||||
// Maybe we're lucky and the user already exists.
|
||||
|
||||
@@ -57,6 +57,7 @@ class UserImporter extends ItemImporter
|
||||
$this->item['employee_num'] = $this->findCsvMatch($row, 'employee_num');
|
||||
$this->item['department_id'] = $this->createOrFetchDepartment($this->findCsvMatch($row, 'department'));
|
||||
$this->item['manager_id'] = $this->fetchManager($this->findCsvMatch($row, 'manager_first_name'), $this->findCsvMatch($row, 'manager_last_name'));
|
||||
$this->item['remote'] =($this->fetchHumanBoolean($this->findCsvMatch($row, 'remote')) ==1 ) ? '1' : 0;
|
||||
|
||||
$user_department = $this->findCsvMatch($row, 'department');
|
||||
if ($this->shouldUpdateField($user_department)) {
|
||||
|
||||
@@ -73,6 +73,10 @@ final class Company extends SnipeModel
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Scoping table queries, determining if a logged in user is part of a company, and only allows
|
||||
* that user to see items associated with that company
|
||||
*/
|
||||
private static function scopeCompanyablesDirectly($query, $column = 'company_id', $table_name = null)
|
||||
{
|
||||
if (Auth::user()) {
|
||||
@@ -127,6 +131,11 @@ final class Company extends SnipeModel
|
||||
return false;
|
||||
} elseif (! static::isFullMultipleCompanySupportEnabled()) {
|
||||
return true;
|
||||
} elseif (!$companyable instanceof Company && !\Schema::hasColumn($companyable->getModel()->getTable(), 'company_id')) {
|
||||
// This is primary for the gate:allows-check in location->isDeletable()
|
||||
// Locations don't have a company_id so without this it isn't possible to delete locations with FullMultipleCompanySupport enabled
|
||||
// because this function is called by SnipePermissionsPolicy->before()
|
||||
return true;
|
||||
} else {
|
||||
if (Auth::user()) {
|
||||
$current_user_company_id = Auth::user()->company_id;
|
||||
|
||||
@@ -29,7 +29,7 @@ class Department extends SnipeModel
|
||||
];
|
||||
|
||||
protected $rules = [
|
||||
'name' => 'required|max:255',
|
||||
'name' => 'required|max:255|is_unique_department',
|
||||
'location_id' => 'numeric|nullable',
|
||||
'company_id' => 'numeric|nullable',
|
||||
'manager_id' => 'numeric|nullable',
|
||||
|
||||
@@ -123,12 +123,20 @@ class License extends Depreciable
|
||||
static::created(function ($license) {
|
||||
$newSeatCount = $license->getAttributes()['seats'];
|
||||
|
||||
return static::adjustSeatCount($license, $oldSeatCount = 0, $newSeatCount);
|
||||
return static::adjustSeatCount($license, 0, $newSeatCount);
|
||||
});
|
||||
// However, we listen for updating to be able to prevent the edit if we cannot delete enough seats.
|
||||
static::updating(function ($license) {
|
||||
$newSeatCount = $license->getAttributes()['seats'];
|
||||
$oldSeatCount = isset($license->getOriginal()['seats']) ? $license->getOriginal()['seats'] : 0;
|
||||
//$oldSeatCount = isset($license->getOriginal()['seats']) ? $license->getOriginal()['seats'] : 0;
|
||||
/*
|
||||
That previous method *did* mostly work, but if you ever managed to get your $license->seats value out of whack
|
||||
with your actual count of license_seats *records*, you would never manage to get back 'into whack'.
|
||||
The below method actually grabs a count of existing license_seats records, so it will be more accurate.
|
||||
This means that if your license_seats are out of whack, you can change the quantity and hit 'save' and it
|
||||
will manage to 'true up' and make your counts line up correctly.
|
||||
*/
|
||||
$oldSeatCount = $license->license_seats_count;
|
||||
|
||||
return static::adjustSeatCount($license, $oldSeatCount, $newSeatCount);
|
||||
});
|
||||
|
||||
@@ -338,6 +338,24 @@ class User extends SnipeModel implements AuthenticatableContract, AuthorizableCo
|
||||
return $this->belongsToMany(\App\Models\License::class, 'license_seats', 'assigned_to', 'license_id')->withPivot('id');
|
||||
}
|
||||
|
||||
/**
|
||||
* Establishes a count of all items assigned
|
||||
*
|
||||
* @author J. Vinsmoke
|
||||
* @since [v6.1]
|
||||
* @return \Illuminate\Database\Eloquent\Relations\Relation
|
||||
*/
|
||||
Public function allAssignedCount() {
|
||||
$assetsCount = $this->assets()->count();
|
||||
$licensesCount = $this->licenses()->count();
|
||||
$accessoriesCount = $this->accessories()->count();
|
||||
$consumablesCount = $this->consumables()->count();
|
||||
|
||||
$totalCount = $assetsCount + $licensesCount + $accessoriesCount + $consumablesCount;
|
||||
|
||||
return (int) $totalCount;
|
||||
}
|
||||
|
||||
/**
|
||||
* Establishes the user -> actionlogs relationship
|
||||
*
|
||||
|
||||
@@ -140,6 +140,12 @@ class AssetPresenter extends Presenter
|
||||
'visible' => false,
|
||||
'title' => trans('general.purchase_date'),
|
||||
'formatter' => 'dateDisplayFormatter',
|
||||
], [
|
||||
'field' => 'age',
|
||||
'searchable' => true,
|
||||
'sortable' => true,
|
||||
'visible' => false,
|
||||
'title' => trans('general.age'),
|
||||
], [
|
||||
'field' => 'purchase_cost',
|
||||
'searchable' => true,
|
||||
|
||||
@@ -159,6 +159,10 @@ class AuthServiceProvider extends ServiceProvider
|
||||
return $user->hasAccess('self.checkout_assets');
|
||||
});
|
||||
|
||||
Gate::define('self.view_purchase_cost', function ($user) {
|
||||
return $user->hasAccess('self.view_purchase_cost');
|
||||
});
|
||||
|
||||
// This is largely used to determine whether to display the gear icon sidenav
|
||||
// in the left-side navigation
|
||||
Gate::define('backend.interact', function ($user) {
|
||||
|
||||
@@ -2,8 +2,10 @@
|
||||
|
||||
namespace App\Providers;
|
||||
|
||||
use App\Models\Department;
|
||||
use DB;
|
||||
use Illuminate\Support\ServiceProvider;
|
||||
use Illuminate\Validation\Rule;
|
||||
use Validator;
|
||||
|
||||
/**
|
||||
@@ -213,6 +215,23 @@ class ValidationServiceProvider extends ServiceProvider
|
||||
return true;
|
||||
}
|
||||
});
|
||||
|
||||
Validator::extend('is_unique_department', function ($attribute, $value, $parameters, $validator) {
|
||||
$data = $validator->getData();
|
||||
if ((array_key_exists('location_id', $data) && $data['location_id'] != null) && (array_key_exists('company_id', $data) && $data['company_id'] != null)) {
|
||||
$count = Department::where('name', $data['name'])
|
||||
->where('location_id', $data['location_id'])
|
||||
->where('company_id', $data['company_id'])
|
||||
->whereNotNull('company_id')
|
||||
->whereNotNull('location_id')
|
||||
->count('name');
|
||||
|
||||
return $count < 1;
|
||||
}
|
||||
else {
|
||||
return true;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -645,6 +645,13 @@ return [
|
||||
'display' => true,
|
||||
],
|
||||
|
||||
[
|
||||
'permission' => 'self.view_purchase_cost',
|
||||
'label' => 'View Purchase-Cost Column',
|
||||
'note' => 'This user can see the purchase cost column of items assigned to them.',
|
||||
'display' => true,
|
||||
],
|
||||
|
||||
],
|
||||
|
||||
];
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
class AddsLdapDefaultGroupToSettingsTable extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::table('settings', function (Blueprint $table) {
|
||||
$table->integer('ldap_default_group')
|
||||
->after('ldap_basedn')->default(null);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::table('settings', function (Blueprint $table) {
|
||||
$table->dropColumn('ldap_default_group');
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
class FixNullableMigrationForSettings extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::table('settings', function (Blueprint $table) {
|
||||
$table->string('ldap_default_group')->nullable()->default(null)->change();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
// nothing to do here - this is a hotfix
|
||||
}
|
||||
}
|
||||
@@ -24,7 +24,7 @@
|
||||
"vue-template-compiler": "2.4.4"
|
||||
},
|
||||
"dependencies": {
|
||||
"@fortawesome/fontawesome-free": "^6.2.0",
|
||||
"@fortawesome/fontawesome-free": "^6.2.1",
|
||||
"acorn": "^8.8.0",
|
||||
"acorn-import-assertions": "^1.8.0",
|
||||
"admin-lte": "^2.4.18",
|
||||
@@ -36,7 +36,7 @@
|
||||
"bootstrap-less": "^3.3.8",
|
||||
"bootstrap-table": "1.20.2",
|
||||
"chart.js": "^2.9.4",
|
||||
"css-loader": "^3.6.0",
|
||||
"css-loader": "^4.0.0",
|
||||
"ekko-lightbox": "^5.1.1",
|
||||
"icheck": "^1.0.2",
|
||||
"imagemin": "^8.0.1",
|
||||
@@ -47,7 +47,7 @@
|
||||
"jquery.iframe-transport": "^1.0.0",
|
||||
"jspdf-autotable": "^3.5.24",
|
||||
"less": "^4.1.2",
|
||||
"less-loader": "^5.0.0",
|
||||
"less-loader": "^6.0.0",
|
||||
"list.js": "^1.5.0",
|
||||
"papaparse": "^4.3.3",
|
||||
"select2": "4.0.13",
|
||||
|
||||
@@ -968,4 +968,9 @@ th.css-accessory > .th-inner::before {
|
||||
margin-top: 51px;
|
||||
}
|
||||
}
|
||||
.ellipsis {
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
|
||||
@@ -601,4 +601,9 @@ th.css-accessory > .th-inner::before {
|
||||
margin-top: 51px;
|
||||
}
|
||||
}
|
||||
.ellipsis {
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
|
||||
10
public/css/dist/all.css
vendored
10
public/css/dist/all.css
vendored
@@ -23830,6 +23830,11 @@ th.css-accessory > .th-inner::before {
|
||||
margin-top: 51px;
|
||||
}
|
||||
}
|
||||
.ellipsis {
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
|
||||
.select2-container {
|
||||
@@ -24917,4 +24922,9 @@ th.css-accessory > .th-inner::before {
|
||||
margin-top: 51px;
|
||||
}
|
||||
}
|
||||
.ellipsis {
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
|
||||
@@ -426,6 +426,9 @@ var baseUrl = $('meta[name="baseUrl"]').attr('content');
|
||||
}, {
|
||||
id: 'zip',
|
||||
text: 'ZIP'
|
||||
}, {
|
||||
id: 'remote',
|
||||
text: 'Remote'
|
||||
}],
|
||||
customFields: this.customFields
|
||||
},
|
||||
|
||||
3
public/js/dist/all.js
vendored
3
public/js/dist/all.js
vendored
@@ -59555,6 +59555,9 @@ var baseUrl = $('meta[name="baseUrl"]').attr('content');
|
||||
}, {
|
||||
id: 'zip',
|
||||
text: 'ZIP'
|
||||
}, {
|
||||
id: 'remote',
|
||||
text: 'Remote'
|
||||
}],
|
||||
customFields: this.customFields
|
||||
},
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"/js/build/app.js": "/js/build/app.js?id=598b7e88aba2349085422a0986bf1d9e",
|
||||
"/js/build/app.js": "/js/build/app.js?id=f05cc05b9000ba73e1949bcf137d4301",
|
||||
"/css/dist/skins/skin-blue.css": "/css/dist/skins/skin-blue.css?id=f677207c6cf9678eb539abecb408c374",
|
||||
"/css/build/overrides.css": "/css/build/overrides.css?id=f3e3228f6820fe6e5c520627f796af35",
|
||||
"/css/build/app.css": "/css/build/app.css?id=2a56df3a1a81da8eb5d8893e076620b5",
|
||||
"/css/build/overrides.css": "/css/build/overrides.css?id=0465141b9ecb0662ba6790c1460f391f",
|
||||
"/css/build/app.css": "/css/build/app.css?id=c3a896cab26e2093f8be24336b7db1b9",
|
||||
"/css/build/AdminLTE.css": "/css/build/AdminLTE.css?id=dc383f8560a8d4adb51d44fb4043e03b",
|
||||
"/css/dist/skins/skin-orange.css": "/css/dist/skins/skin-orange.css?id=6f0563e726c2fe4fab4026daaa5bfdf2",
|
||||
"/css/dist/skins/skin-orange-dark.css": "/css/dist/skins/skin-orange-dark.css?id=f343f659ca1d45534d2c2c3cc30fb619",
|
||||
@@ -18,7 +18,7 @@
|
||||
"/css/dist/skins/skin-green.css": "/css/dist/skins/skin-green.css?id=0a82a6ae6bb4e58fe62d162c4fb50397",
|
||||
"/css/dist/skins/skin-contrast.css": "/css/dist/skins/skin-contrast.css?id=8e538625ebd4b8096e150d1aa483547b",
|
||||
"/css/dist/skins/skin-red.css": "/css/dist/skins/skin-red.css?id=44bf834f2110504a793dadec132a5898",
|
||||
"/css/dist/all.css": "/css/dist/all.css?id=e3544f9d2342c3d0a07e19b09b183e20",
|
||||
"/css/dist/all.css": "/css/dist/all.css?id=ef030b613d45620b907cf0184a14e868",
|
||||
"/css/blue.png": "/css/blue.png?id=e83a6c29e04fe851f2122815b2e4b150",
|
||||
"/css/blue@2x.png": "/css/blue@2x.png?id=51135dd4d24f88f5de0b2414bd51dac5",
|
||||
"/css/dist/signature-pad.css": "/css/dist/signature-pad.css?id=6a89d3cd901305e66ced1cf5f13147f7",
|
||||
@@ -34,7 +34,7 @@
|
||||
"/css/dist/bootstrap-table.css": "/css/dist/bootstrap-table.css?id=ee4896df8b8f008ce73a9a0c2549aefd",
|
||||
"/js/build/vendor.js": "/js/build/vendor.js?id=47ecbb4bb3b0e02315f391caadbdf971",
|
||||
"/js/dist/bootstrap-table.js": "/js/dist/bootstrap-table.js?id=14d9a2affec7b066d20fcba2e6e67ad2",
|
||||
"/js/dist/all.js": "/js/dist/all.js?id=c281e69bed1a5a386e8cbc611b9bf781",
|
||||
"/js/dist/all.js": "/js/dist/all.js?id=4f9355ac85d380301f6f62e55b1a6e5e",
|
||||
"/css/dist/skins/skin-green.min.css": "/css/dist/skins/skin-green.min.css?id=0a82a6ae6bb4e58fe62d162c4fb50397",
|
||||
"/css/dist/skins/skin-green-dark.min.css": "/css/dist/skins/skin-green-dark.min.css?id=c0d21166315b7c2cdd4819fa4a5e4d1e",
|
||||
"/css/dist/skins/skin-black.min.css": "/css/dist/skins/skin-black.min.css?id=76482123f6c70e866d6b971ba91de7bb",
|
||||
|
||||
@@ -194,6 +194,7 @@
|
||||
{id: 'state', text: 'State' },
|
||||
{id: 'country', text: 'Country' },
|
||||
{id: 'zip', text: 'ZIP' },
|
||||
{id: 'remote', text: 'Remote'},
|
||||
|
||||
],
|
||||
customFields: this.customFields,
|
||||
|
||||
@@ -460,14 +460,14 @@ $(document).ready(function () {
|
||||
$('#assigned_asset').show();
|
||||
$('#assigned_user').hide();
|
||||
$('#assigned_location').hide();
|
||||
$('.notification-callout').fadeOut();
|
||||
$('.notification-callout').fadeOut('fast');
|
||||
|
||||
} else if (assignto_type == 'location') {
|
||||
$('#current_assets_box').fadeOut();
|
||||
$('#assigned_asset').hide();
|
||||
$('#assigned_user').hide();
|
||||
$('#assigned_location').show();
|
||||
$('.notification-callout').fadeOut();
|
||||
$('.notification-callout').fadeOut('fast');
|
||||
} else {
|
||||
|
||||
$('#assigned_asset').hide();
|
||||
@@ -476,7 +476,7 @@ $(document).ready(function () {
|
||||
if (userid) {
|
||||
$('#current_assets_box').fadeIn();
|
||||
}
|
||||
$('.notification-callout').fadeIn();
|
||||
$('.notification-callout').fadeIn('fast');
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
@@ -684,4 +684,10 @@ th.css-accessory > .th-inner::before
|
||||
.sidebar-menu {
|
||||
margin-top:51px
|
||||
}
|
||||
}
|
||||
|
||||
.ellipsis {
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
@@ -44,4 +44,6 @@ return [
|
||||
'db_convert_warning' => 'WARNING. This field is in the custom fields table as <code>:db_column</code> but should be <code>:expected</code>.',
|
||||
'is_unique' => 'This value must be unique across all assets',
|
||||
'unique' => 'Unique',
|
||||
'display_in_user_view' => 'Allow the checked out user to view these values in their View Assigned Assets page',
|
||||
'display_in_user_view_table' => 'Visible to User',
|
||||
];
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
return array(
|
||||
|
||||
'does_not_exist' => 'Departement bestaan nie.',
|
||||
'department_already_exists' => 'A department already exists with that name at this company location. Or choose a more specific name for this department. ',
|
||||
'assoc_users' => 'Hierdie afdeling word tans geassosieer met minstens een gebruiker en kan nie verwyder word nie. Dateer asseblief u gebruikers op om nie meer hierdie departement te verwys nie en probeer weer.',
|
||||
'create' => array(
|
||||
'error' => 'Departement is nie geskep nie, probeer asseblief weer.',
|
||||
|
||||
@@ -6,6 +6,8 @@ return array(
|
||||
'assoc_users' => 'Hierdie ligging is tans gekoppel aan ten minste een gebruiker en kan nie uitgevee word nie. Dateer asseblief u gebruikers op om nie meer hierdie ligging te verwys nie en probeer weer.',
|
||||
'assoc_assets' => 'Hierdie ligging is tans geassosieer met ten minste een bate en kan nie uitgevee word nie. Dateer asseblief jou bates op om nie meer hierdie ligging te verwys nie en probeer weer.',
|
||||
'assoc_child_loc' => 'Hierdie ligging is tans die ouer van ten minste een kind se plek en kan nie uitgevee word nie. Werk asseblief jou liggings by om nie meer hierdie ligging te verwys nie en probeer weer.',
|
||||
'assigned_assets' => 'Assigned Assets',
|
||||
'current_location' => 'Current Location',
|
||||
|
||||
|
||||
'create' => array(
|
||||
|
||||
@@ -21,7 +21,7 @@ return [
|
||||
'allow_user_skin_help_text' => 'Checking this box will allow a user to override the UI skin with a different one.',
|
||||
'asset_ids' => 'Bate ID\'s',
|
||||
'audit_interval' => 'Ouditinterval',
|
||||
'audit_interval_help' => 'If you are required to regularly physically audit your assets, enter the interval in months that you use. If you update this value, all of the "next audit dates" for assets with an upcoming audit date.',
|
||||
'audit_interval_help' => 'If you are required to regularly physically audit your assets, enter the interval in months that you use. If you update this value, all of the "next audit dates" for assets with an upcoming audit date will be updated.',
|
||||
'audit_warning_days' => 'Oudit Waarskuwing Drempel',
|
||||
'audit_warning_days_help' => 'Hoeveel dae vooruit moet ons u waarsku wanneer bates verskuldig is vir ouditering?',
|
||||
'auto_increment_assets' => 'Generate auto-incrementing asset tags',
|
||||
@@ -75,6 +75,8 @@ return [
|
||||
'label_logo_size' => 'Square logos look best - will be displayed in the top right of each asset label. ',
|
||||
'laravel' => 'Laravel Weergawe',
|
||||
'ldap' => 'LDAP',
|
||||
'ldap_default_group' => 'Default Permissions Group',
|
||||
'ldap_default_group_info' => 'Select a group to assign to newly synced users. Remember that a user takes on the permissions of the group they are assigned.',
|
||||
'ldap_help' => 'LDAP/Active Directory',
|
||||
'ldap_client_tls_key' => 'LDAP Client TLS Key',
|
||||
'ldap_client_tls_cert' => 'LDAP Client-Side TLS Certificate',
|
||||
|
||||
@@ -15,6 +15,7 @@ return array(
|
||||
'password_resets_sent' => 'The selected users who are activated and have a valid email addresses have been sent a password reset link.',
|
||||
'password_reset_sent' => 'A password reset link has been sent to :email!',
|
||||
'user_has_no_email' => 'This user does not have an email address in their profile.',
|
||||
'user_has_no_assets_assigned' => 'This user does not have any assets assigned',
|
||||
|
||||
|
||||
'success' => array(
|
||||
@@ -59,4 +60,8 @@ return array(
|
||||
'invalidfiles' => 'Een of meer van jou lêers is te groot of is \'n filetipe wat nie toegelaat word nie. Toegelate filetipes is png, gif, jpg, doc, docx, pdf en txt.',
|
||||
),
|
||||
|
||||
'inventorynotification' => array(
|
||||
'error' => 'This user has no email set.',
|
||||
'success' => 'The user has been notified about their current inventory.'
|
||||
)
|
||||
);
|
||||
@@ -11,6 +11,7 @@ return [
|
||||
'admin' => 'admin',
|
||||
'administrator' => 'Administrator',
|
||||
'add_seats' => 'Bykomende sitplekke',
|
||||
'age' => "Age",
|
||||
'all_assets' => 'Alle bates',
|
||||
'all' => 'Almal',
|
||||
'archived' => 'argief',
|
||||
@@ -280,6 +281,9 @@ return [
|
||||
'yes' => 'Ja',
|
||||
'zip' => 'zip',
|
||||
'noimage' => 'Geen prent opgelaai of prent nie gevind nie.',
|
||||
'file_does_not_exist' => 'The requested file does not exist on the server.',
|
||||
'file_upload_success' => 'File upload success!',
|
||||
'no_files_uploaded' => 'File upload success!',
|
||||
'token_expired' => 'Jou vormsessie het verval. Probeer asseblief weer.',
|
||||
'login_enabled' => 'Login Enabled',
|
||||
'audit_due' => 'Due for Audit',
|
||||
|
||||
@@ -43,12 +43,14 @@ return [
|
||||
'file' => 'Die: Attribuut moet \'n lêer wees.',
|
||||
'filled' => 'Die: Attribuut veld moet \'n waarde hê.',
|
||||
'image' => 'Die: kenmerk moet \'n beeld wees.',
|
||||
'import_field_empty' => 'The value for :fieldname cannot be null.',
|
||||
'in' => 'Die gekose: attribuut is ongeldig.',
|
||||
'in_array' => 'Die: attribuut veld bestaan nie in: ander.',
|
||||
'integer' => 'Die: Attribuut moet \'n heelgetal wees.',
|
||||
'ip' => 'Die: Attribuut moet \'n geldige IP-adres wees.',
|
||||
'ipv4' => 'Die: Attribuut moet \'n geldige IPv4-adres wees.',
|
||||
'ipv6' => 'Die: Attribuut moet \'n geldige IPv6-adres wees.',
|
||||
'is_unique_department' => 'The :attribute must be unique to this Company Location',
|
||||
'json' => 'Die: Attribuut moet \'n geldige JSON-string wees.',
|
||||
'max' => [
|
||||
'numeric' => 'Die: Attribuut mag nie groter wees as: maksimum.',
|
||||
|
||||
@@ -44,4 +44,6 @@ return [
|
||||
'db_convert_warning' => 'WARNING. This field is in the custom fields table as <code>:db_column</code> but should be <code>:expected</code>.',
|
||||
'is_unique' => 'This value must be unique across all assets',
|
||||
'unique' => 'Unique',
|
||||
'display_in_user_view' => 'Allow the checked out user to view these values in their View Assigned Assets page',
|
||||
'display_in_user_view_table' => 'Visible to User',
|
||||
];
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
return array(
|
||||
|
||||
'does_not_exist' => 'Department does not exist.',
|
||||
'department_already_exists' => 'A department already exists with that name at this company location. Or choose a more specific name for this department. ',
|
||||
'assoc_users' => 'This department is currently associated with at least one user and cannot be deleted. Please update your users to no longer reference this department and try again. ',
|
||||
'create' => array(
|
||||
'error' => 'Department was not created, please try again.',
|
||||
|
||||
@@ -6,6 +6,8 @@ return array(
|
||||
'assoc_users' => 'This location is currently associated with at least one user and cannot be deleted. Please update your users to no longer reference this location and try again. ',
|
||||
'assoc_assets' => 'This location is currently associated with at least one asset and cannot be deleted. Please update your assets to no longer reference this location and try again. ',
|
||||
'assoc_child_loc' => 'This location is currently the parent of at least one child location and cannot be deleted. Please update your locations to no longer reference this location and try again. ',
|
||||
'assigned_assets' => 'Assigned Assets',
|
||||
'current_location' => 'Current Location',
|
||||
|
||||
|
||||
'create' => array(
|
||||
|
||||
@@ -21,7 +21,7 @@ return [
|
||||
'allow_user_skin_help_text' => 'Checking this box will allow a user to override the UI skin with a different one.',
|
||||
'asset_ids' => 'Asset IDs',
|
||||
'audit_interval' => 'Audit Interval',
|
||||
'audit_interval_help' => 'If you are required to regularly physically audit your assets, enter the interval in months that you use. If you update this value, all of the "next audit dates" for assets with an upcoming audit date.',
|
||||
'audit_interval_help' => 'If you are required to regularly physically audit your assets, enter the interval in months that you use. If you update this value, all of the "next audit dates" for assets with an upcoming audit date will be updated.',
|
||||
'audit_warning_days' => 'Audit Warning Threshold',
|
||||
'audit_warning_days_help' => 'How many days in advance should we warn you when assets are due for auditing?',
|
||||
'auto_increment_assets' => 'Generate auto-incrementing asset tags',
|
||||
@@ -75,6 +75,8 @@ return [
|
||||
'label_logo_size' => 'Square logos look best - will be displayed in the top right of each asset label. ',
|
||||
'laravel' => 'Laravel Version',
|
||||
'ldap' => 'LDAP',
|
||||
'ldap_default_group' => 'Default Permissions Group',
|
||||
'ldap_default_group_info' => 'Select a group to assign to newly synced users. Remember that a user takes on the permissions of the group they are assigned.',
|
||||
'ldap_help' => 'LDAP/Active Directory',
|
||||
'ldap_client_tls_key' => 'LDAP Client TLS Key',
|
||||
'ldap_client_tls_cert' => 'LDAP Client-Side TLS Certificate',
|
||||
|
||||
@@ -15,6 +15,7 @@ return array(
|
||||
'password_resets_sent' => 'The selected users who are activated and have a valid email addresses have been sent a password reset link.',
|
||||
'password_reset_sent' => 'A password reset link has been sent to :email!',
|
||||
'user_has_no_email' => 'This user does not have an email address in their profile.',
|
||||
'user_has_no_assets_assigned' => 'This user does not have any assets assigned',
|
||||
|
||||
|
||||
'success' => array(
|
||||
@@ -59,4 +60,8 @@ return array(
|
||||
'invalidfiles' => 'One or more of your files is too large or is a filetype that is not allowed. Allowed filetypes are png, gif, jpg, doc, docx, pdf, and txt.',
|
||||
),
|
||||
|
||||
'inventorynotification' => array(
|
||||
'error' => 'This user has no email set.',
|
||||
'success' => 'The user has been notified about their current inventory.'
|
||||
)
|
||||
);
|
||||
@@ -11,6 +11,7 @@ return [
|
||||
'admin' => 'Admin',
|
||||
'administrator' => 'Administrator',
|
||||
'add_seats' => 'Added seats',
|
||||
'age' => "Age",
|
||||
'all_assets' => 'All Assets',
|
||||
'all' => 'All',
|
||||
'archived' => 'Archived',
|
||||
@@ -280,6 +281,9 @@ return [
|
||||
'yes' => 'Yes',
|
||||
'zip' => 'Zip',
|
||||
'noimage' => 'No image uploaded or image not found.',
|
||||
'file_does_not_exist' => 'The requested file does not exist on the server.',
|
||||
'file_upload_success' => 'File upload success!',
|
||||
'no_files_uploaded' => 'File upload success!',
|
||||
'token_expired' => 'Your form session has expired. Please try again.',
|
||||
'login_enabled' => 'Login Enabled',
|
||||
'audit_due' => 'Due for Audit',
|
||||
|
||||
@@ -43,12 +43,14 @@ return [
|
||||
'file' => 'The :attribute must be a file.',
|
||||
'filled' => 'The :attribute field must have a value.',
|
||||
'image' => 'The :attribute must be an image.',
|
||||
'import_field_empty' => 'The value for :fieldname cannot be null.',
|
||||
'in' => 'The selected :attribute is invalid.',
|
||||
'in_array' => 'The :attribute field does not exist in :other.',
|
||||
'integer' => 'The :attribute must be an integer.',
|
||||
'ip' => 'The :attribute must be a valid IP address.',
|
||||
'ipv4' => 'The :attribute must be a valid IPv4 address.',
|
||||
'ipv6' => 'The :attribute must be a valid IPv6 address.',
|
||||
'is_unique_department' => 'The :attribute must be unique to this Company Location',
|
||||
'json' => 'The :attribute must be a valid JSON string.',
|
||||
'max' => [
|
||||
'numeric' => 'The :attribute may not be greater than :max.',
|
||||
|
||||
@@ -44,4 +44,6 @@ return [
|
||||
'db_convert_warning' => 'WARNING. This field is in the custom fields table as <code>:db_column</code> but should be <code>:expected</code>.',
|
||||
'is_unique' => 'يجب أن تكون هذه القيمة فريدة من نوعها عبر جميع الأصول',
|
||||
'unique' => 'غير مكرر',
|
||||
'display_in_user_view' => 'Allow the checked out user to view these values in their View Assigned Assets page',
|
||||
'display_in_user_view_table' => 'Visible to User',
|
||||
];
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
return array(
|
||||
|
||||
'does_not_exist' => 'القسم الاداري غير موجود.',
|
||||
'department_already_exists' => 'A department already exists with that name at this company location. Or choose a more specific name for this department. ',
|
||||
'assoc_users' => 'هذا القسم الإداري مرتبط حاليا مع مستخدم واحد على الأقل ولا يمكن حذفه. الرجاء تحديث تفاصيل المستخدمين حيث لا تحتوي هذا القسم وحاول مرة أخرى. ',
|
||||
'create' => array(
|
||||
'error' => 'لم يتم إنشاء القسم الإداري، الرجاء المحاولة مرة أخرى.',
|
||||
|
||||
@@ -6,6 +6,8 @@ return array(
|
||||
'assoc_users' => 'هذا الموقع مرتبط حاليا بمستخدم واحد على الأقل ولا يمكن حذفه. يرجى تحديث المستخدمين لم يعد يشيروا إلى هذا الموقع ثم أعد المحاولة. ',
|
||||
'assoc_assets' => 'هذا الموقع مرتبط حاليا بمادة عرض واحدة على الأقل ولا يمكن حذفها. يرجى تحديث مواد العرض لم تعد تشير إلى هذا الموقع ثم أعد المحاولة. ',
|
||||
'assoc_child_loc' => 'هذا الموقع هو حاليا أحد الوالدين لموقع طفل واحد على الأقل ولا يمكن حذفه. يرجى تحديث مواقعك لم تعد تشير إلى هذا الموقع ثم أعد المحاولة.',
|
||||
'assigned_assets' => 'Assigned Assets',
|
||||
'current_location' => 'Current Location',
|
||||
|
||||
|
||||
'create' => array(
|
||||
|
||||
@@ -21,7 +21,7 @@ return [
|
||||
'allow_user_skin_help_text' => 'التحقق من هذا المربع سيسمح للمستخدم باستخدام مظهر واجهة المستخدم بمظهر آخر.',
|
||||
'asset_ids' => 'ارقام تعريف الاصول',
|
||||
'audit_interval' => 'مدة التدقيق',
|
||||
'audit_interval_help' => 'إذا كان مطلوبا منك التدقيق المادي بانتظام في الأصول الخاصة بك، قم بإدخال الفاصل الزمني بالأشهر التي تستخدمها. إذا قمت بتحديث هذه القيمة، كل "تواريخ المراجعة التالية" للأصول مع تاريخ مراجعة الحسابات المقبل.',
|
||||
'audit_interval_help' => 'If you are required to regularly physically audit your assets, enter the interval in months that you use. If you update this value, all of the "next audit dates" for assets with an upcoming audit date will be updated.',
|
||||
'audit_warning_days' => 'عتبة تحذير التدقيق',
|
||||
'audit_warning_days_help' => 'كم يوما مقدما يجب أن نحذركم عندما تكون الأصول مستحقة للتدقيق؟',
|
||||
'auto_increment_assets' => 'Generate auto-incrementing asset tags',
|
||||
@@ -75,6 +75,8 @@ return [
|
||||
'label_logo_size' => 'الشعارات المربعة تبدو أفضل - سيتم عرضها في أعلى يمين كل ملصق أصل. ',
|
||||
'laravel' => 'نسخة لارافيل',
|
||||
'ldap' => 'LDAP',
|
||||
'ldap_default_group' => 'Default Permissions Group',
|
||||
'ldap_default_group_info' => 'Select a group to assign to newly synced users. Remember that a user takes on the permissions of the group they are assigned.',
|
||||
'ldap_help' => 'LDAP/Active Directory',
|
||||
'ldap_client_tls_key' => 'LDAP Client TLS Key',
|
||||
'ldap_client_tls_cert' => 'LDAP Client-Side TLS Certificate',
|
||||
|
||||
@@ -15,6 +15,7 @@ return array(
|
||||
'password_resets_sent' => 'تم إرسال رابط إعادة تعيين كلمة المرور للمستخدمين المحددين الذين تم تفعيلهم ولديهم عناوين بريد إلكتروني صالحة.',
|
||||
'password_reset_sent' => 'تم إرسال رابط إعادة تعيين كلمة المرور إلى البريد الإلكتروني!',
|
||||
'user_has_no_email' => 'This user does not have an email address in their profile.',
|
||||
'user_has_no_assets_assigned' => 'This user does not have any assets assigned',
|
||||
|
||||
|
||||
'success' => array(
|
||||
@@ -59,4 +60,8 @@ return array(
|
||||
'invalidfiles' => 'واحد أو أكثر من الملفات كبير جدا أو هو نوع ملف غير مسموح به. أنواع الملفات المسموح بها هي ينغ و جيف و جبغ و دوك و دوك و بدف و تكست.',
|
||||
),
|
||||
|
||||
'inventorynotification' => array(
|
||||
'error' => 'This user has no email set.',
|
||||
'success' => 'The user has been notified about their current inventory.'
|
||||
)
|
||||
);
|
||||
@@ -11,6 +11,7 @@ return [
|
||||
'admin' => 'الإدارة',
|
||||
'administrator' => 'المدير',
|
||||
'add_seats' => 'المقاعد المضافة',
|
||||
'age' => "Age",
|
||||
'all_assets' => 'كل الأصول',
|
||||
'all' => 'الكل',
|
||||
'archived' => 'مؤرشفة',
|
||||
@@ -280,6 +281,9 @@ return [
|
||||
'yes' => 'نعم',
|
||||
'zip' => 'الرمز البريدي',
|
||||
'noimage' => 'لم يتم تحميل أي صورة أو صورة لم يتم العثور عليها.',
|
||||
'file_does_not_exist' => 'The requested file does not exist on the server.',
|
||||
'file_upload_success' => 'File upload success!',
|
||||
'no_files_uploaded' => 'File upload success!',
|
||||
'token_expired' => 'انتهت صلاحية جلسة النموذج. حاول مرة اخرى.',
|
||||
'login_enabled' => 'تسجيل الدخول مفعل',
|
||||
'audit_due' => 'الواجب مراجعته',
|
||||
|
||||
@@ -43,12 +43,14 @@ return [
|
||||
'file' => 'يجب أن تكون :attribute ملف.',
|
||||
'filled' => 'يجب أن يحتوي :attribute على قيمة.',
|
||||
'image' => 'يجب أن تكون :attribute صورة.',
|
||||
'import_field_empty' => 'The value for :fieldname cannot be null.',
|
||||
'in' => ':attribute المحدد غير صالح.',
|
||||
'in_array' => ':attribute غير موجود في :other.',
|
||||
'integer' => 'يجب أن تكون :attribute عدد صحيح.',
|
||||
'ip' => 'يجب أن تكون :attribute عنوان IP صالحا.',
|
||||
'ipv4' => 'يجب أن تكون :attribute عنوان IPv4 صالحا.',
|
||||
'ipv6' => 'يجب أن تكون :attribute عنوان IPv6 صالح.',
|
||||
'is_unique_department' => 'The :attribute must be unique to this Company Location',
|
||||
'json' => 'يجب أن يكون :attribute نص جسون JSON صالح.',
|
||||
'max' => [
|
||||
'numeric' => 'يجب ان يكون :attribute أكبر من :max.',
|
||||
|
||||
@@ -44,4 +44,6 @@ return [
|
||||
'db_convert_warning' => 'WARNING. This field is in the custom fields table as <code>:db_column</code> but should be <code>:expected</code>.',
|
||||
'is_unique' => 'This value must be unique across all assets',
|
||||
'unique' => 'Unique',
|
||||
'display_in_user_view' => 'Allow the checked out user to view these values in their View Assigned Assets page',
|
||||
'display_in_user_view_table' => 'Visible to User',
|
||||
];
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
return array(
|
||||
|
||||
'does_not_exist' => 'Департаментът не съществува.',
|
||||
'department_already_exists' => 'A department already exists with that name at this company location. Or choose a more specific name for this department. ',
|
||||
'assoc_users' => 'Този отдел понастоящем е свързан с поне един потребител и не може да бъде изтрит. Моля, актуализирайте потребителите си, за да не препращате към този отдел и опитайте отново.',
|
||||
'create' => array(
|
||||
'error' => 'Отделът не е създаден, моля, опитайте отново.',
|
||||
|
||||
@@ -6,6 +6,8 @@ return array(
|
||||
'assoc_users' => 'Местоположението е свързано с поне един потребител и не може да бъде изтрито. Моля, актуализирайте потребителите, така че да не са свързани с това местоположение и опитайте отново. ',
|
||||
'assoc_assets' => 'Местоположението е свързано с поне един актив и не може да бъде изтрито. Моля, актуализирайте активите, така че да не са свързани с това местоположение и опитайте отново. ',
|
||||
'assoc_child_loc' => 'В избраното местоположение е присъединено едно или повече местоположения. Моля преместете ги в друго и опитайте отново.',
|
||||
'assigned_assets' => 'Assigned Assets',
|
||||
'current_location' => 'Current Location',
|
||||
|
||||
|
||||
'create' => array(
|
||||
|
||||
@@ -21,7 +21,7 @@ return [
|
||||
'allow_user_skin_help_text' => 'Поставянето на отметка тук, ще позволи на потребителя да ползва различна UI тема от основната.',
|
||||
'asset_ids' => 'ID на активи',
|
||||
'audit_interval' => 'Одитен интервал',
|
||||
'audit_interval_help' => 'If you are required to regularly physically audit your assets, enter the interval in months that you use. If you update this value, all of the "next audit dates" for assets with an upcoming audit date.',
|
||||
'audit_interval_help' => 'If you are required to regularly physically audit your assets, enter the interval in months that you use. If you update this value, all of the "next audit dates" for assets with an upcoming audit date will be updated.',
|
||||
'audit_warning_days' => 'Праг за предупреждение за одит',
|
||||
'audit_warning_days_help' => 'Колко дни предварително трябва да ви предупреждаваме, когато активите са дължими за одит?',
|
||||
'auto_increment_assets' => 'Generate auto-incrementing asset tags',
|
||||
@@ -75,6 +75,8 @@ return [
|
||||
'label_logo_size' => 'Квадратните логота изглеждат най-добре - ще бъдат показани в горния десен ъгъл на всеки артикулен етикет. ',
|
||||
'laravel' => 'Версия на Laravel',
|
||||
'ldap' => 'LDAP',
|
||||
'ldap_default_group' => 'Default Permissions Group',
|
||||
'ldap_default_group_info' => 'Select a group to assign to newly synced users. Remember that a user takes on the permissions of the group they are assigned.',
|
||||
'ldap_help' => 'LDAP/Active Directory',
|
||||
'ldap_client_tls_key' => 'LDAP Client TLS Key',
|
||||
'ldap_client_tls_cert' => 'LDAP Client-Side TLS Certificate',
|
||||
|
||||
@@ -15,6 +15,7 @@ return array(
|
||||
'password_resets_sent' => 'Избраните потребители, които са активирани и имат валиден е-майл адрес им беше изпратен линк за смяна на парола.',
|
||||
'password_reset_sent' => 'A password reset link has been sent to :email!',
|
||||
'user_has_no_email' => 'This user does not have an email address in their profile.',
|
||||
'user_has_no_assets_assigned' => 'This user does not have any assets assigned',
|
||||
|
||||
|
||||
'success' => array(
|
||||
@@ -59,4 +60,8 @@ return array(
|
||||
'invalidfiles' => 'Един или повече файлове са твърде големи или с неразрешен тип. Разрешените типове файлове са png, gif, jpg, doc, docx, pdf, и txt.',
|
||||
),
|
||||
|
||||
'inventorynotification' => array(
|
||||
'error' => 'This user has no email set.',
|
||||
'success' => 'The user has been notified about their current inventory.'
|
||||
)
|
||||
);
|
||||
@@ -11,6 +11,7 @@ return [
|
||||
'admin' => 'Администриране',
|
||||
'administrator' => 'Администратор',
|
||||
'add_seats' => 'Добавени работни места',
|
||||
'age' => "Age",
|
||||
'all_assets' => 'Всички активи',
|
||||
'all' => 'Всички',
|
||||
'archived' => 'Архивирани',
|
||||
@@ -26,7 +27,7 @@ return [
|
||||
'audit' => 'проверка',
|
||||
'audit_report' => 'Отчет за одита',
|
||||
'assets' => 'Активи',
|
||||
'assigned_to' => 'Assigned to :name',
|
||||
'assigned_to' => 'Активи предадени на :name',
|
||||
'avatar_delete' => 'Изтриване на аватар',
|
||||
'avatar_upload' => 'Качване на аватар',
|
||||
'back' => 'Назад',
|
||||
@@ -36,7 +37,7 @@ return [
|
||||
'bulk_checkout' => 'Общо отписване',
|
||||
'bulk_edit' => 'Групово редактиране',
|
||||
'bulk_delete' => 'Групово изтриване',
|
||||
'bulk_actions' => 'Bulk Actions',
|
||||
'bulk_actions' => 'Пакетни действия',
|
||||
'bulk_checkin_delete' => 'Bulk Checkin Items from Users',
|
||||
'bystatus' => 'по Статус',
|
||||
'cancel' => 'Отказ',
|
||||
@@ -280,6 +281,9 @@ return [
|
||||
'yes' => 'Да',
|
||||
'zip' => 'Пощенски код',
|
||||
'noimage' => 'Липсва изображение или не е качено.',
|
||||
'file_does_not_exist' => 'The requested file does not exist on the server.',
|
||||
'file_upload_success' => 'File upload success!',
|
||||
'no_files_uploaded' => 'File upload success!',
|
||||
'token_expired' => 'Вашата сесия за формуляр изтече. Моля опитайте отново.',
|
||||
'login_enabled' => 'Разрешен вход',
|
||||
'audit_due' => 'За Одит',
|
||||
@@ -292,7 +296,7 @@ return [
|
||||
'clear_signature' => 'Изчисти подписа',
|
||||
'show_help' => 'Покажи помощта',
|
||||
'hide_help' => 'Скрий помощта',
|
||||
'view_all' => 'view all',
|
||||
'view_all' => 'виж всички',
|
||||
'hide_deleted' => 'Hide Deleted',
|
||||
'email' => 'Email',
|
||||
'do_not_change' => 'Do Not Change',
|
||||
|
||||
@@ -43,12 +43,14 @@ return [
|
||||
'file' => 'Атрибутът: трябва да е файл.',
|
||||
'filled' => 'Полето на атрибута: трябва да има стойност.',
|
||||
'image' => ':attribute трябва да бъде изображение.',
|
||||
'import_field_empty' => 'The value for :fieldname cannot be null.',
|
||||
'in' => 'Избраният :attribute е невалиден.',
|
||||
'in_array' => 'Полето: atribut не съществува в: други.',
|
||||
'integer' => ':attribute трябва да бъде целочислен.',
|
||||
'ip' => ':attribute трябва да бъде валиден IP адрес.',
|
||||
'ipv4' => 'Атрибутът: трябва да е валиден IPv4 адрес.',
|
||||
'ipv6' => 'Атрибутът: трябва да е валиден IPv6 адрес.',
|
||||
'is_unique_department' => 'The :attribute must be unique to this Company Location',
|
||||
'json' => 'Атрибутът: трябва да е валиден низ на JSON.',
|
||||
'max' => [
|
||||
'numeric' => ':attribute не може да бъде по-дълъг от :max.',
|
||||
|
||||
@@ -44,4 +44,6 @@ return [
|
||||
'db_convert_warning' => 'WARNING. This field is in the custom fields table as <code>:db_column</code> but should be <code>:expected</code>.',
|
||||
'is_unique' => 'This value must be unique across all assets',
|
||||
'unique' => 'Unique',
|
||||
'display_in_user_view' => 'Allow the checked out user to view these values in their View Assigned Assets page',
|
||||
'display_in_user_view_table' => 'Visible to User',
|
||||
];
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
return array(
|
||||
|
||||
'does_not_exist' => 'Department does not exist.',
|
||||
'department_already_exists' => 'A department already exists with that name at this company location. Or choose a more specific name for this department. ',
|
||||
'assoc_users' => 'This department is currently associated with at least one user and cannot be deleted. Please update your users to no longer reference this department and try again. ',
|
||||
'create' => array(
|
||||
'error' => 'Department was not created, please try again.',
|
||||
|
||||
@@ -6,6 +6,8 @@ return array(
|
||||
'assoc_users' => 'This location is currently associated with at least one user and cannot be deleted. Please update your users to no longer reference this location and try again. ',
|
||||
'assoc_assets' => 'This location is currently associated with at least one asset and cannot be deleted. Please update your assets to no longer reference this location and try again. ',
|
||||
'assoc_child_loc' => 'This location is currently the parent of at least one child location and cannot be deleted. Please update your locations to no longer reference this location and try again. ',
|
||||
'assigned_assets' => 'Assigned Assets',
|
||||
'current_location' => 'Current Location',
|
||||
|
||||
|
||||
'create' => array(
|
||||
|
||||
@@ -21,7 +21,7 @@ return [
|
||||
'allow_user_skin_help_text' => 'Checking this box will allow a user to override the UI skin with a different one.',
|
||||
'asset_ids' => 'Asset IDs',
|
||||
'audit_interval' => 'Audit Interval',
|
||||
'audit_interval_help' => 'If you are required to regularly physically audit your assets, enter the interval in months that you use. If you update this value, all of the "next audit dates" for assets with an upcoming audit date.',
|
||||
'audit_interval_help' => 'If you are required to regularly physically audit your assets, enter the interval in months that you use. If you update this value, all of the "next audit dates" for assets with an upcoming audit date will be updated.',
|
||||
'audit_warning_days' => 'Audit Warning Threshold',
|
||||
'audit_warning_days_help' => 'How many days in advance should we warn you when assets are due for auditing?',
|
||||
'auto_increment_assets' => 'Generate auto-incrementing asset tags',
|
||||
@@ -75,6 +75,8 @@ return [
|
||||
'label_logo_size' => 'Square logos look best - will be displayed in the top right of each asset label. ',
|
||||
'laravel' => 'Laravel Version',
|
||||
'ldap' => 'LDAP',
|
||||
'ldap_default_group' => 'Default Permissions Group',
|
||||
'ldap_default_group_info' => 'Select a group to assign to newly synced users. Remember that a user takes on the permissions of the group they are assigned.',
|
||||
'ldap_help' => 'LDAP/Active Directory',
|
||||
'ldap_client_tls_key' => 'LDAP Client TLS Key',
|
||||
'ldap_client_tls_cert' => 'LDAP Client-Side TLS Certificate',
|
||||
|
||||
@@ -15,6 +15,7 @@ return array(
|
||||
'password_resets_sent' => 'The selected users who are activated and have a valid email addresses have been sent a password reset link.',
|
||||
'password_reset_sent' => 'A password reset link has been sent to :email!',
|
||||
'user_has_no_email' => 'This user does not have an email address in their profile.',
|
||||
'user_has_no_assets_assigned' => 'This user does not have any assets assigned',
|
||||
|
||||
|
||||
'success' => array(
|
||||
@@ -59,4 +60,8 @@ return array(
|
||||
'invalidfiles' => 'One or more of your files is too large or is a filetype that is not allowed. Allowed filetypes are png, gif, jpg, doc, docx, pdf, and txt.',
|
||||
),
|
||||
|
||||
'inventorynotification' => array(
|
||||
'error' => 'This user has no email set.',
|
||||
'success' => 'The user has been notified about their current inventory.'
|
||||
)
|
||||
);
|
||||
@@ -11,6 +11,7 @@ return [
|
||||
'admin' => 'Administrador',
|
||||
'administrator' => 'Administrador',
|
||||
'add_seats' => 'Added seats',
|
||||
'age' => "Age",
|
||||
'all_assets' => 'Tots els Recursos',
|
||||
'all' => 'Tots',
|
||||
'archived' => 'Arxivat',
|
||||
@@ -280,6 +281,9 @@ return [
|
||||
'yes' => 'Yes',
|
||||
'zip' => 'Zip',
|
||||
'noimage' => 'No image uploaded or image not found.',
|
||||
'file_does_not_exist' => 'The requested file does not exist on the server.',
|
||||
'file_upload_success' => 'File upload success!',
|
||||
'no_files_uploaded' => 'File upload success!',
|
||||
'token_expired' => 'Your form session has expired. Please try again.',
|
||||
'login_enabled' => 'Login Enabled',
|
||||
'audit_due' => 'Due for Audit',
|
||||
|
||||
@@ -43,12 +43,14 @@ return [
|
||||
'file' => 'The :attribute must be a file.',
|
||||
'filled' => 'The :attribute field must have a value.',
|
||||
'image' => 'The :attribute must be an image.',
|
||||
'import_field_empty' => 'The value for :fieldname cannot be null.',
|
||||
'in' => 'The selected :attribute is invalid.',
|
||||
'in_array' => 'The :attribute field does not exist in :other.',
|
||||
'integer' => 'The :attribute must be an integer.',
|
||||
'ip' => 'The :attribute must be a valid IP address.',
|
||||
'ipv4' => 'The :attribute must be a valid IPv4 address.',
|
||||
'ipv6' => 'The :attribute must be a valid IPv6 address.',
|
||||
'is_unique_department' => 'The :attribute must be unique to this Company Location',
|
||||
'json' => 'The :attribute must be a valid JSON string.',
|
||||
'max' => [
|
||||
'numeric' => 'The :attribute may not be greater than :max.',
|
||||
|
||||
@@ -44,4 +44,6 @@ return [
|
||||
'db_convert_warning' => 'WARNING. This field is in the custom fields table as <code>:db_column</code> but should be <code>:expected</code>.',
|
||||
'is_unique' => 'This value must be unique across all assets',
|
||||
'unique' => 'Unikátní',
|
||||
'display_in_user_view' => 'Allow the checked out user to view these values in their View Assigned Assets page',
|
||||
'display_in_user_view_table' => 'Visible to User',
|
||||
];
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
return array(
|
||||
|
||||
'does_not_exist' => 'Oddělení neexistuje.',
|
||||
'department_already_exists' => 'A department already exists with that name at this company location. Or choose a more specific name for this department. ',
|
||||
'assoc_users' => 'Toto oddělení je momentálně přiřazeno alespoň jednomu uživateli a nelze jej smazat. Aktualizujte své uživatele tak, aby již neodkázali na toto oddělení a zkuste to znovu.',
|
||||
'create' => array(
|
||||
'error' => 'Oddělení nebylo vytvořeno, zkuste to prosím znovu.',
|
||||
|
||||
@@ -6,6 +6,8 @@ return array(
|
||||
'assoc_users' => 'Toto umístění je spojeno s alespoň jedním uživatelem a nemůže být smazáno. Aktualizujte uživatele aby nenáleželi k tomuto umístění a zkuste to znovu. ',
|
||||
'assoc_assets' => 'Toto umístění je spojeno s alespoň jedním majetkem a nemůže být smazáno. Aktualizujte majetky tak aby nenáleželi k tomuto umístění a zkuste to znovu. ',
|
||||
'assoc_child_loc' => 'Toto umístění je nadřazené alespoň jednomu umístění a nelze jej smazat. Aktualizujte své umístění tak, aby na toto umístění již neodkazovalo a zkuste to znovu. ',
|
||||
'assigned_assets' => 'Assigned Assets',
|
||||
'current_location' => 'Current Location',
|
||||
|
||||
|
||||
'create' => array(
|
||||
|
||||
@@ -21,7 +21,7 @@ return [
|
||||
'allow_user_skin_help_text' => 'Zaškrtnutí tohoto políčka umožní uživateli přepsat vzhled uživatelského rozhraní jiným.',
|
||||
'asset_ids' => 'ID majetku',
|
||||
'audit_interval' => 'Interval auditu',
|
||||
'audit_interval_help' => 'If you are required to regularly physically audit your assets, enter the interval in months that you use. If you update this value, all of the "next audit dates" for assets with an upcoming audit date.',
|
||||
'audit_interval_help' => 'If you are required to regularly physically audit your assets, enter the interval in months that you use. If you update this value, all of the "next audit dates" for assets with an upcoming audit date will be updated.',
|
||||
'audit_warning_days' => 'Prah výstrahy auditu',
|
||||
'audit_warning_days_help' => 'Kolik dní předem bychom vás měli varovat, když jsou aktiva splatná pro audit?',
|
||||
'auto_increment_assets' => 'Generate auto-incrementing asset tags',
|
||||
@@ -75,6 +75,8 @@ return [
|
||||
'label_logo_size' => 'Square logos look best - will be displayed in the top right of each asset label. ',
|
||||
'laravel' => 'Verze Laravel',
|
||||
'ldap' => 'LDAP',
|
||||
'ldap_default_group' => 'Default Permissions Group',
|
||||
'ldap_default_group_info' => 'Select a group to assign to newly synced users. Remember that a user takes on the permissions of the group they are assigned.',
|
||||
'ldap_help' => 'LDAP/Active Directory',
|
||||
'ldap_client_tls_key' => 'LDAP Client TLS Key',
|
||||
'ldap_client_tls_cert' => 'LDAP Client-Side TLS Certificate',
|
||||
|
||||
@@ -15,6 +15,7 @@ return array(
|
||||
'password_resets_sent' => 'Vybraným uživatelům, kteří jsou aktivováni a mají platné e-mailové adresy, byl zaslán odkaz pro obnovení hesla.',
|
||||
'password_reset_sent' => 'Odkaz pro obnovení hesla byl odeslán na :email!',
|
||||
'user_has_no_email' => 'This user does not have an email address in their profile.',
|
||||
'user_has_no_assets_assigned' => 'This user does not have any assets assigned',
|
||||
|
||||
|
||||
'success' => array(
|
||||
@@ -59,4 +60,8 @@ return array(
|
||||
'invalidfiles' => 'Jeden nebo více označených souborů je příliš velkých nebo nejsou podporované. Povolenými příponami jsou png, gif, jpg, doc, docx, pdf a txt.',
|
||||
),
|
||||
|
||||
'inventorynotification' => array(
|
||||
'error' => 'This user has no email set.',
|
||||
'success' => 'The user has been notified about their current inventory.'
|
||||
)
|
||||
);
|
||||
@@ -11,6 +11,7 @@ return [
|
||||
'admin' => 'Admin',
|
||||
'administrator' => 'Správce',
|
||||
'add_seats' => 'Přidaná licenční místa',
|
||||
'age' => "Age",
|
||||
'all_assets' => 'Všechna zařízení',
|
||||
'all' => 'Vše',
|
||||
'archived' => 'Archivováno',
|
||||
@@ -280,6 +281,9 @@ return [
|
||||
'yes' => 'Ano',
|
||||
'zip' => 'PSČ',
|
||||
'noimage' => 'Obrázek nebyl nahrán, nebo nebyl nalezen.',
|
||||
'file_does_not_exist' => 'The requested file does not exist on the server.',
|
||||
'file_upload_success' => 'File upload success!',
|
||||
'no_files_uploaded' => 'File upload success!',
|
||||
'token_expired' => 'Platnost relace formuláře vypršela. Prosím zkuste to znovu.',
|
||||
'login_enabled' => 'Login Enabled',
|
||||
'audit_due' => 'Due for Audit',
|
||||
|
||||
@@ -43,12 +43,14 @@ return [
|
||||
'file' => 'Atribut: musí být soubor.',
|
||||
'filled' => 'Pole atributu: musí mít hodnotu.',
|
||||
'image' => ':attribute musí být obrázek.',
|
||||
'import_field_empty' => 'The value for :fieldname cannot be null.',
|
||||
'in' => 'Zvolený :attribute je neplatný.',
|
||||
'in_array' => 'Pole atributu neexistuje v: jiné.',
|
||||
'integer' => ':attribute musí být celočíselný.',
|
||||
'ip' => ':attribute musí být platná IP adresa.',
|
||||
'ipv4' => 'Atribut: musí mít platnou adresu IPv4.',
|
||||
'ipv6' => 'Atribut: musí být platná adresa IPv6.',
|
||||
'is_unique_department' => 'The :attribute must be unique to this Company Location',
|
||||
'json' => 'Atribut: musí být platný řetězec JSON.',
|
||||
'max' => [
|
||||
'numeric' => ':attribute nesmí být větší než :max.',
|
||||
|
||||
@@ -44,4 +44,6 @@ return [
|
||||
'db_convert_warning' => 'WARNING. This field is in the custom fields table as <code>:db_column</code> but should be <code>:expected</code>.',
|
||||
'is_unique' => 'This value must be unique across all assets',
|
||||
'unique' => 'Unique',
|
||||
'display_in_user_view' => 'Allow the checked out user to view these values in their View Assigned Assets page',
|
||||
'display_in_user_view_table' => 'Visible to User',
|
||||
];
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
return array(
|
||||
|
||||
'does_not_exist' => 'Nid yw\'r adran yn bodoli.',
|
||||
'department_already_exists' => 'A department already exists with that name at this company location. Or choose a more specific name for this department. ',
|
||||
'assoc_users' => 'Mae\'r adran yma wedi perthnasu i oleiaf un defnyddiwr a nid yw\'n bosib dileu. Diweddarwch eich defnyddwyr i beidio cyfeirio at yr adran yma ac yna ceisiwch eto. ',
|
||||
'create' => array(
|
||||
'error' => 'Ni crewyd yr adran, ceisiwch eto o. g. y. dd.',
|
||||
|
||||
@@ -6,6 +6,8 @@ return array(
|
||||
'assoc_users' => 'Mae\'r lleoliad yma wedi perthnasu i oleiaf un defnyddiwr a nid yw\'n bosib dileu. Diweddarwch eich defnyddwyr i beidio cyfeirio at y lleoliad yma ac yna ceisiwch eto. ',
|
||||
'assoc_assets' => 'Mae\'r lleoliad yma wedi perthnasu i oleiaf un ased a nid yw\'n bosib dileu. Diweddarwch eich asedau i beidio cyfeirio at y lleoliad yma ac yna ceisiwch eto. ',
|
||||
'assoc_child_loc' => 'Mae\'r lleoliad yma yn rhiant i oleiaf un lleoliad a nid yw\'n bosib dileu. Diweddarwch eich lleoliadau i beidio cyfeirio at y lleoliad yma ac yna ceisiwch eto. ',
|
||||
'assigned_assets' => 'Assigned Assets',
|
||||
'current_location' => 'Current Location',
|
||||
|
||||
|
||||
'create' => array(
|
||||
|
||||
@@ -21,7 +21,7 @@ return [
|
||||
'allow_user_skin_help_text' => 'Checking this box will allow a user to override the UI skin with a different one.',
|
||||
'asset_ids' => 'Rhifau Unigryw Asedau',
|
||||
'audit_interval' => 'Cyfnod Awdit',
|
||||
'audit_interval_help' => 'If you are required to regularly physically audit your assets, enter the interval in months that you use. If you update this value, all of the "next audit dates" for assets with an upcoming audit date.',
|
||||
'audit_interval_help' => 'If you are required to regularly physically audit your assets, enter the interval in months that you use. If you update this value, all of the "next audit dates" for assets with an upcoming audit date will be updated.',
|
||||
'audit_warning_days' => 'Trothwy Rhybuddio Awdit',
|
||||
'audit_warning_days_help' => 'Sawl diwrnod o flaen llaw ddylswn rhybuddio chi o asedau sydd angen awdit?',
|
||||
'auto_increment_assets' => 'Generate auto-incrementing asset tags',
|
||||
@@ -75,6 +75,8 @@ return [
|
||||
'label_logo_size' => 'Square logos look best - will be displayed in the top right of each asset label. ',
|
||||
'laravel' => 'Fersiwn Laravel',
|
||||
'ldap' => 'LDAP',
|
||||
'ldap_default_group' => 'Default Permissions Group',
|
||||
'ldap_default_group_info' => 'Select a group to assign to newly synced users. Remember that a user takes on the permissions of the group they are assigned.',
|
||||
'ldap_help' => 'LDAP/Active Directory',
|
||||
'ldap_client_tls_key' => 'LDAP Client TLS Key',
|
||||
'ldap_client_tls_cert' => 'LDAP Client-Side TLS Certificate',
|
||||
|
||||
@@ -15,6 +15,7 @@ return array(
|
||||
'password_resets_sent' => 'The selected users who are activated and have a valid email addresses have been sent a password reset link.',
|
||||
'password_reset_sent' => 'A password reset link has been sent to :email!',
|
||||
'user_has_no_email' => 'This user does not have an email address in their profile.',
|
||||
'user_has_no_assets_assigned' => 'This user does not have any assets assigned',
|
||||
|
||||
|
||||
'success' => array(
|
||||
@@ -59,4 +60,8 @@ return array(
|
||||
'invalidfiles' => 'Mae un neu mwy o\'r ffeiliau unai yn rhy fawr neu ddim y math cywir. Derbynir png, gif, fjp, doc, docx, pdf a txt.',
|
||||
),
|
||||
|
||||
'inventorynotification' => array(
|
||||
'error' => 'This user has no email set.',
|
||||
'success' => 'The user has been notified about their current inventory.'
|
||||
)
|
||||
);
|
||||
@@ -11,6 +11,7 @@ return [
|
||||
'admin' => 'Gweinyddol',
|
||||
'administrator' => 'Gweinyddwr',
|
||||
'add_seats' => 'Seddi wedi\'i ychwanegu',
|
||||
'age' => "Age",
|
||||
'all_assets' => 'Holl asedau',
|
||||
'all' => 'Pob',
|
||||
'archived' => 'Archifwyd',
|
||||
@@ -280,6 +281,9 @@ return [
|
||||
'yes' => 'Ie',
|
||||
'zip' => 'Côd Post',
|
||||
'noimage' => 'Dim delwedd wedi\'i uwchlwytho neu delwedd heb ei darganfod.',
|
||||
'file_does_not_exist' => 'The requested file does not exist on the server.',
|
||||
'file_upload_success' => 'File upload success!',
|
||||
'no_files_uploaded' => 'File upload success!',
|
||||
'token_expired' => 'Mae eich sesiwn wedi dod i ben. Mewngofnodwch eto os gwelwch yn dda.',
|
||||
'login_enabled' => 'Login Enabled',
|
||||
'audit_due' => 'Due for Audit',
|
||||
|
||||
@@ -43,12 +43,14 @@ return [
|
||||
'file' => 'Rhaid i\'r :attribute bod yn ffeil.',
|
||||
'filled' => 'Rhaid i\'r maes :attribute cael gwerth.',
|
||||
'image' => 'Rhaid i\'r :attribute bod yn delwedd.',
|
||||
'import_field_empty' => 'The value for :fieldname cannot be null.',
|
||||
'in' => 'Mae\'r :attribute a dewisir yn annilys.',
|
||||
'in_array' => 'Nid yw\'r maes :attribute yn bodoli yn :other.',
|
||||
'integer' => 'Rhaid i\'r :attribute bod yn cyfanrif.',
|
||||
'ip' => 'Rhaid i\'r :attribute bod yn cyfeiriad IP dilys.',
|
||||
'ipv4' => 'Rhaid i\'r :attribute bod yn cyfeiriad IPv4 dilys.',
|
||||
'ipv6' => 'Rhaid i\'r :attribute bod yn cyfeiriad IPv6 dilys.',
|
||||
'is_unique_department' => 'The :attribute must be unique to this Company Location',
|
||||
'json' => 'Rhaid i\'r :attribute bod yn llinyn JSON dilys.',
|
||||
'max' => [
|
||||
'numeric' => 'Ni ellir :attribute bod yn fwy na :max.',
|
||||
|
||||
@@ -44,4 +44,6 @@ return [
|
||||
'db_convert_warning' => 'WARNING. This field is in the custom fields table as <code>:db_column</code> but should be <code>:expected</code>.',
|
||||
'is_unique' => 'This value must be unique across all assets',
|
||||
'unique' => 'Unique',
|
||||
'display_in_user_view' => 'Allow the checked out user to view these values in their View Assigned Assets page',
|
||||
'display_in_user_view_table' => 'Visible to User',
|
||||
];
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
return array(
|
||||
|
||||
'does_not_exist' => 'Afdeling findes ikke.',
|
||||
'department_already_exists' => 'A department already exists with that name at this company location. Or choose a more specific name for this department. ',
|
||||
'assoc_users' => 'Denne afdeling er i øjeblikket knyttet til mindst én bruger og kan ikke slettes. Opdater venligst dine brugere for at ikke længere referere til denne afdeling, og prøv igen. ',
|
||||
'create' => array(
|
||||
'error' => 'Afdelingen blev ikke oprettet, prøve igen.',
|
||||
|
||||
@@ -6,6 +6,8 @@ return array(
|
||||
'assoc_users' => 'Denne placering er i øjeblikket forbundet med mindst en bruger og kan ikke slettes. Opdater dine brugere for ikke længere at henvise til denne placering, og prøv igen.',
|
||||
'assoc_assets' => 'Denne placering er i øjeblikket forbundet med mindst ét aktiv og kan ikke slettes. Opdater dine aktiver for ikke længere at henvise til denne placering, og prøv igen.',
|
||||
'assoc_child_loc' => 'Denne placering er for øjeblikket forælder på mindst et barns placering og kan ikke slettes. Opdater dine placeringer for ikke længere at henvise til denne placering, og prøv igen.',
|
||||
'assigned_assets' => 'Assigned Assets',
|
||||
'current_location' => 'Current Location',
|
||||
|
||||
|
||||
'create' => array(
|
||||
|
||||
@@ -21,7 +21,7 @@ return [
|
||||
'allow_user_skin_help_text' => 'Afkrydsning her giver brugeren afgang til at overskrive UI skin med et andet skin.',
|
||||
'asset_ids' => 'Aktiv-id\'er',
|
||||
'audit_interval' => 'Revisionsinterval',
|
||||
'audit_interval_help' => 'If you are required to regularly physically audit your assets, enter the interval in months that you use. If you update this value, all of the "next audit dates" for assets with an upcoming audit date.',
|
||||
'audit_interval_help' => 'If you are required to regularly physically audit your assets, enter the interval in months that you use. If you update this value, all of the "next audit dates" for assets with an upcoming audit date will be updated.',
|
||||
'audit_warning_days' => 'Audit Warning Threshold',
|
||||
'audit_warning_days_help' => 'Hvor mange dage i forvejen skal vi advare dig, når aktiver skal betales for revision?',
|
||||
'auto_increment_assets' => 'Generate auto-incrementing asset tags',
|
||||
@@ -75,6 +75,8 @@ return [
|
||||
'label_logo_size' => 'Firkantede logoer ser bedst ud - vil blive vist øverst til højre på hver aktiv etiket. ',
|
||||
'laravel' => 'Laravel Version',
|
||||
'ldap' => 'LDAP',
|
||||
'ldap_default_group' => 'Default Permissions Group',
|
||||
'ldap_default_group_info' => 'Select a group to assign to newly synced users. Remember that a user takes on the permissions of the group they are assigned.',
|
||||
'ldap_help' => 'LDAP/Active Directory',
|
||||
'ldap_client_tls_key' => 'LDAP Client TLS Key',
|
||||
'ldap_client_tls_cert' => 'LDAP Client-Side TLS Certificate',
|
||||
|
||||
@@ -15,6 +15,7 @@ return array(
|
||||
'password_resets_sent' => 'De valgte brugere, der er aktiveret og har en gyldig e-mail-adresser, har fået tilsendt et link til nulstilling af adgangskode.',
|
||||
'password_reset_sent' => 'A password reset link has been sent to :email!',
|
||||
'user_has_no_email' => 'This user does not have an email address in their profile.',
|
||||
'user_has_no_assets_assigned' => 'This user does not have any assets assigned',
|
||||
|
||||
|
||||
'success' => array(
|
||||
@@ -59,4 +60,8 @@ return array(
|
||||
'invalidfiles' => 'En eller flere af dine filer er for store eller er en filtype, der ikke er tilladt. Tilladte filtyper er png, gif, jpg, doc, docx, pdf og txt.',
|
||||
),
|
||||
|
||||
'inventorynotification' => array(
|
||||
'error' => 'This user has no email set.',
|
||||
'success' => 'The user has been notified about their current inventory.'
|
||||
)
|
||||
);
|
||||
@@ -11,6 +11,7 @@ return [
|
||||
'admin' => 'Admin',
|
||||
'administrator' => 'Administrator',
|
||||
'add_seats' => 'Tilføjede pladser',
|
||||
'age' => "Age",
|
||||
'all_assets' => 'Alle aktiver',
|
||||
'all' => 'Alle',
|
||||
'archived' => 'Arkiveret',
|
||||
@@ -280,6 +281,9 @@ return [
|
||||
'yes' => 'Ja',
|
||||
'zip' => 'Postnummer',
|
||||
'noimage' => 'Intet billede uploadet eller billede ikke fundet.',
|
||||
'file_does_not_exist' => 'The requested file does not exist on the server.',
|
||||
'file_upload_success' => 'File upload success!',
|
||||
'no_files_uploaded' => 'File upload success!',
|
||||
'token_expired' => 'Din form session er udløbet. Prøv igen.',
|
||||
'login_enabled' => 'Login aktiveret',
|
||||
'audit_due' => 'Forfalder til tilsyn',
|
||||
|
||||
@@ -43,12 +43,14 @@ return [
|
||||
'file' => 'Attributten skal være en fil.',
|
||||
'filled' => 'Attributfeltet skal have en værdi.',
|
||||
'image' => ':attribute skal være et billede.',
|
||||
'import_field_empty' => 'The value for :fieldname cannot be null.',
|
||||
'in' => 'Det valgte :attribute er ugyldigt.',
|
||||
'in_array' => 'Attributfeltet findes ikke i: andet.',
|
||||
'integer' => ':attribute skal være et heltal.',
|
||||
'ip' => ':attribute skal være en gyldig IP adresse.',
|
||||
'ipv4' => 'Attributten skal være en gyldig IPv4-adresse.',
|
||||
'ipv6' => 'Attributten skal være en gyldig IPv6-adresse.',
|
||||
'is_unique_department' => 'The :attribute must be unique to this Company Location',
|
||||
'json' => 'Attributten skal være en gyldig JSON-streng.',
|
||||
'max' => [
|
||||
'numeric' => ':attribute må ikke overstige :max.',
|
||||
|
||||
@@ -44,4 +44,6 @@ return [
|
||||
'db_convert_warning' => 'WARNUNG. Dieses Feld befindet sich in der Tabelle mit benutzerdefinierten Feldern als <code>:db_column</code> sollte aber <code>:expected</code> sein.',
|
||||
'is_unique' => 'Dieser Wert muss für jedes Asset einzigartig sein',
|
||||
'unique' => 'Einzigartig',
|
||||
'display_in_user_view' => 'Allow the checked out user to view these values in their View Assigned Assets page',
|
||||
'display_in_user_view_table' => 'Visible to User',
|
||||
];
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
return array(
|
||||
|
||||
'does_not_exist' => 'Diese Abteilung existiert nicht.',
|
||||
'department_already_exists' => 'A department already exists with that name at this company location. Or choose a more specific name for this department. ',
|
||||
'assoc_users' => 'Diese Abteilung ist im Moment mit mindestens einem Benutzer verknüpft und kann nicht gelöscht werden. Bitte Benutzer aktualisieren und erneut versuchen. ',
|
||||
'create' => array(
|
||||
'error' => 'Abteilung wurde nicht erstellt. Bitte versuche es erneut.',
|
||||
|
||||
@@ -6,7 +6,7 @@ return [
|
||||
'bulk_delete_warn' => 'Du bist im Begriff :asset_count Assets zu löschen.',
|
||||
'bulk_update' => 'Massenaktualisierung von Assets',
|
||||
'bulk_update_help' => 'Diese Eingabemaske erlaubt Dir die Aktualisierung von mehreren Assets zugleich. Fülle die Felder aus, die Du ändern möchtest. Alle leeren Felder bleiben unverändert. ',
|
||||
'bulk_update_warn' => 'Sie sind dabei, die Eigenschaften eines einzelnen Assets zu bearbeiten. |Sie sind dabei, die Eigenschaften von :asset_count Assets zu bearbeiten.',
|
||||
'bulk_update_warn' => 'Du bearbeitest die Eigenschaften eines Assets.|Du bearbeitest die Eigenschaften von :asset_count Assets.',
|
||||
'checkedout_to' => 'Herausgegeben an',
|
||||
'checkout_date' => 'Herausgabedatum',
|
||||
'checkin_date' => 'Rücknahmedatum',
|
||||
|
||||
@@ -6,6 +6,8 @@ return array(
|
||||
'assoc_users' => 'Dieser Standort ist mindestens einem Benutzer zugewiesen und kann nicht gelöscht werden. Bitte entferne die Standortzuweisung bei den jeweiligen Benutzern und versuche erneut, diesen Standort zu entfernen. ',
|
||||
'assoc_assets' => 'Dieser Standort ist mindestens einem Gegenstand zugewiesen und kann nicht gelöscht werden. Bitte entferne die Standortzuweisung bei den jeweiligen Gegenständen und versuche erneut, diesen Standort zu entfernen. ',
|
||||
'assoc_child_loc' => 'Dieser Standort ist mindestens einem anderen Ort übergeordnet und kann nicht gelöscht werden. Bitte aktualisiere Deine Standorte, so dass dieser Standort nicht mehr verknüpft ist, und versuche es erneut. ',
|
||||
'assigned_assets' => 'Zugeordnete Assets',
|
||||
'current_location' => 'Aktueller Standort',
|
||||
|
||||
|
||||
'create' => array(
|
||||
|
||||
@@ -21,7 +21,7 @@ return [
|
||||
'allow_user_skin_help_text' => 'Wenn Du dieses Kästchen aktivierst, kann ein Benutzer das Design mit einem anderen überschreiben.',
|
||||
'asset_ids' => 'Asset IDs',
|
||||
'audit_interval' => 'Auditintervall',
|
||||
'audit_interval_help' => 'Wenn Du verpflichtet bist, Deine Assets regelmäßig physisch zu überprüfen, gib den Intervall in Monaten an. Wenn Du diesen Wert aktualisierst, werden alle "nächsten Audittermine" für Assets mit einem anstehenden Prüfungsdatum aktualisiert.',
|
||||
'audit_interval_help' => 'If you are required to regularly physically audit your assets, enter the interval in months that you use. If you update this value, all of the "next audit dates" for assets with an upcoming audit date will be updated.',
|
||||
'audit_warning_days' => 'Audit-Warnschwelle',
|
||||
'audit_warning_days_help' => 'Wie viele Tage im Voraus sollen wir Dich warnen, wenn Assets zur Prüfung fällig werden?',
|
||||
'auto_increment_assets' => 'Erzeugen von fortlaufenden Asset Tags',
|
||||
@@ -75,6 +75,8 @@ return [
|
||||
'label_logo_size' => 'Quadratische Logos sehen am besten aus und werden rechts oben auf jedem Asset-Label angezeigt. ',
|
||||
'laravel' => 'Laravel Version',
|
||||
'ldap' => 'LDAP',
|
||||
'ldap_default_group' => 'Standard-Berechtigungsgruppe',
|
||||
'ldap_default_group_info' => 'Select a group to assign to newly synced users. Remember that a user takes on the permissions of the group they are assigned.',
|
||||
'ldap_help' => 'LDAP/Active Directory',
|
||||
'ldap_client_tls_key' => 'LDAP Client-seitiger TLS-Schlüssel',
|
||||
'ldap_client_tls_cert' => 'LDAP Client-Side TLS Zertifikat',
|
||||
@@ -109,7 +111,7 @@ return [
|
||||
'ldap_auth_filter_query' => 'LDAP-Authentifizierungsabfrage',
|
||||
'ldap_version' => 'LDAP Version',
|
||||
'ldap_active_flag' => 'LDAP Aktiv-Markierung',
|
||||
'ldap_activated_flag_help' => 'This value is used to determine whether a synced user can login to Snipe-IT. <strong>It does not affect the ability to check items in or out to them</strong>, and should be the <strong>attribute name</strong> within your AD/LDAP, <strong>not the value</strong>. <br><br>If this field is set to a field name that does not exist in your AD/LDAP, or the value in the AD/LDAP field is set to <code>0</code> or <code>false</code>, <strong>user login will be disabled</strong>. If the value in the AD/LDAP field is set to <code>1</code> or <code>true</code> or <em>any other text</em> means the user can log in. When the field is blank in your AD, we respect the <code>userAccountControl</code> attribute, which usually allows non-suspended users to log in.',
|
||||
'ldap_activated_flag_help' => 'Dieser Wert wird benutzt um zu entscheiden, ob synchronisierte Nutzer sich in Snipe-IT anmelden können. <strong> Items können unabhängig von ihm zum Nutzer zugewiesen werden</strong>. Der Wert sollte der <strong>Attributname</strong> im AD/LDAP sein <strong>und nicht der Wert</strong>.<br><br>Wenn diesem Feld ein Name zugewiesen wird, der im AD/LDAP nicht existiert bzw. der Wert im AD/LDAP <code>0</code> oder <code>false</code> ist <strong> wird der Nutzerlogin deaktiviert</strong>. Ist der Wert im AD\\LDAP <code>1</code> oder <code>true</code> oder <em>jeder beliebige andere Text</em> dann kann sich der Nutzer anmelden. Wenn das Feld im AD leer ist, dann gilt das <code>userAccountControl</code> Attribut, was normalerweise bedeutet, dass sich nicht deaktivierte Nutzer anmelden können.',
|
||||
'ldap_emp_num' => 'LDAP Mitarbeiternummer',
|
||||
'ldap_email' => 'LDAP E-Mail',
|
||||
'ldap_test' => 'LDAP testen',
|
||||
@@ -176,7 +178,7 @@ return [
|
||||
'saml_idp_metadata_help' => 'Du kannst die IdP-Metadaten über eine URL oder XML-Datei angeben.',
|
||||
'saml_attr_mapping_username' => 'Zuordnung - Benutzername',
|
||||
'saml_attr_mapping_username_help' => 'NamensID wird verwendet, wenn Attribute nicht angegeben oder ungültig sind.',
|
||||
'saml_forcelogin_label' => 'SAML Force Login',
|
||||
'saml_forcelogin_label' => 'SAML Login erzwingen',
|
||||
'saml_forcelogin' => 'SAML zum primären Login machen',
|
||||
'saml_forcelogin_help' => 'Verwende \'/login?nosaml\' um zur normalen Anmeldeseite zu gelangen.',
|
||||
'saml_slo_label' => 'SAML Abmeldung',
|
||||
|
||||
@@ -15,6 +15,7 @@ return array(
|
||||
'password_resets_sent' => 'Den ausgewählten Benutzern, die aktiviert sind und eine gültige E-Mail-Adresse haben, wurde ein Link zum Zurücksetzen des Passworts gesendet.',
|
||||
'password_reset_sent' => 'Der Link zum Zurücksetzen des Passworts wurde an :email gesendet!',
|
||||
'user_has_no_email' => 'Dieser Benutzer hat keine E-Mail-Adresse in seinem Profil.',
|
||||
'user_has_no_assets_assigned' => 'Dieser Benutzer hat keine zugewiesenen Assets',
|
||||
|
||||
|
||||
'success' => array(
|
||||
@@ -59,4 +60,8 @@ return array(
|
||||
'invalidfiles' => 'Eine oder mehrere Deiner Dateien sind zu groß, oder deren Dateityp ist nicht zugelassen. Zugelassene Dateitypen sind png, gif, jpg, doc, docx, pdf, und txt.',
|
||||
),
|
||||
|
||||
'inventorynotification' => array(
|
||||
'error' => 'Für diesen Benutzer ist keine E-Mail-Adresse hinterlegt.',
|
||||
'success' => 'The user has been notified about their current inventory.'
|
||||
)
|
||||
);
|
||||
@@ -11,6 +11,7 @@ return [
|
||||
'admin' => 'Admin',
|
||||
'administrator' => 'Administrator',
|
||||
'add_seats' => 'Lizenzen hinzugefügt',
|
||||
'age' => "Age",
|
||||
'all_assets' => 'Alle Assets',
|
||||
'all' => 'Alle',
|
||||
'archived' => 'Archiviert',
|
||||
@@ -280,6 +281,9 @@ return [
|
||||
'yes' => 'Ja',
|
||||
'zip' => 'Postleitzahl',
|
||||
'noimage' => 'Kein Bild hochgeladen oder kein Bild gefunden.',
|
||||
'file_does_not_exist' => 'The requested file does not exist on the server.',
|
||||
'file_upload_success' => 'File upload success!',
|
||||
'no_files_uploaded' => 'File upload success!',
|
||||
'token_expired' => 'Deine Sitzung ist abgelaufen. Bitte versuche es erneut.',
|
||||
'login_enabled' => 'Login aktiviert',
|
||||
'audit_due' => 'Prüfung fällig',
|
||||
@@ -378,10 +382,10 @@ return [
|
||||
'pie_chart_type' => 'Dashboard Kreisdiagramm Typ',
|
||||
'hello_name' => 'Hallo, :name!',
|
||||
'unaccepted_profile_warning' => 'Du hast :count Gegenstände, die akzeptiert werden müssen. Klicke hier, um sie anzunehmen oder abzulehnen',
|
||||
'start_date' => 'Start Date',
|
||||
'end_date' => 'End Date',
|
||||
'alt_uploaded_image_thumbnail' => 'Uploaded thumbnail',
|
||||
'placeholder_kit' => 'Select a kit'
|
||||
'start_date' => 'Startdatum',
|
||||
'end_date' => 'Enddatum',
|
||||
'alt_uploaded_image_thumbnail' => 'Hochgeladene Miniaturansicht',
|
||||
'placeholder_kit' => 'Kit auswählen'
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -43,12 +43,14 @@ return [
|
||||
'file' => ':attribute muss eine Datei sein.',
|
||||
'filled' => ':attribute muss einen Wert haben.',
|
||||
'image' => ':attribute muss ein Bild sein.',
|
||||
'import_field_empty' => 'The value for :fieldname cannot be null.',
|
||||
'in' => 'Auswahl :attribute ist ungültig.',
|
||||
'in_array' => 'Das Feld :attribute existiert nicht in :other.',
|
||||
'integer' => ':attribute muss eine ganze Zahl sein.',
|
||||
'ip' => ':attribute muss eine gültige IP Adresse sein.',
|
||||
'ipv4' => ':attribute muss eine gültige IPv4 Adresse sein.',
|
||||
'ipv6' => ':attribute muss eine gültige IPv6 Adresse sein.',
|
||||
'is_unique_department' => 'The :attribute must be unique to this Company Location',
|
||||
'json' => 'Das Attribut muss eine gültige JSON-Zeichenfolge sein.',
|
||||
'max' => [
|
||||
'numeric' => ':attribute darf nicht größer als :max sein.',
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user