Compare commits

...

117 Commits

Author SHA1 Message Date
snipe
1abd669de5 Refactor custom fields handling for storage
Signed-off-by: snipe <snipe@snipe.net>
2024-07-08 14:00:15 +01:00
snipe
ac9df2fc08 Merge pull request #15043 from snipe/fixes/custom_fields_on_audit
Fixed #15037 - Removed custom fieldsets on auditing - it’s not used (yet)
2024-07-08 13:20:59 +01:00
snipe
eba24b9242 Removed custom fieldsets on auditing - it’s not used
Signed-off-by: snipe <snipe@snipe.net>
2024-07-08 13:19:05 +01:00
snipe
edd61705dc Merge pull request #15027 from snipe/feature/sc-26112/allow_default_avatar
Added #15015 - ability for admins to select default avatar
2024-07-04 17:10:10 +01:00
snipe
3f20e29901 Moved gthe settings for remote loading to the branding section
Signed-off-by: snipe <snipe@snipe.net>
2024-07-04 16:55:47 +01:00
snipe
36ae162626 Changed my mind :)
Signed-off-by: snipe <snipe@snipe.net>
2024-07-04 16:48:05 +01:00
snipe
00f7cb9dbb Reverse the order for default gravatar
Signed-off-by: snipe <snipe@snipe.net>
2024-07-04 16:46:12 +01:00
snipe
1ca3dc26eb Removed extra debugging
Signed-off-by: snipe <snipe@snipe.net>
2024-07-04 16:36:48 +01:00
snipe
2f3be267b3 Added some logic around deleting images
Signed-off-by: snipe <snipe@snipe.net>
2024-07-04 16:33:22 +01:00
snipe
5b8f6910fb Marked tests as incomplete :(
Signed-off-by: snipe <snipe@snipe.net>
2024-07-04 16:33:08 +01:00
snipe
9fe26ba814 Reverted the validation - might have an impact on quickstart setup
Signed-off-by: snipe <snipe@snipe.net>
2024-07-04 13:25:39 +01:00
snipe
5e97ed1c7e Added migration
Signed-off-by: snipe <snipe@snipe.net>
2024-07-04 13:24:11 +01:00
snipe
947fb7af7a Added tests
Signed-off-by: snipe <snipe@snipe.net>
2024-07-04 13:24:03 +01:00
snipe
44bcc157e5 Updated icon
Signed-off-by: snipe <snipe@snipe.net>
2024-07-04 13:23:46 +01:00
snipe
278bf3da13 Updated language
Signed-off-by: snipe <snipe@snipe.net>
2024-07-04 13:23:38 +01:00
snipe
446bc81d3a Updated presenter to use new avatar
Signed-off-by: snipe <snipe@snipe.net>
2024-07-04 13:23:31 +01:00
snipe
9527aac242 Make site name required at the model
Signed-off-by: snipe <snipe@snipe.net>
2024-07-04 13:23:17 +01:00
snipe
c57f1f9d7d Use null coalescence
Signed-off-by: snipe <snipe@snipe.net>
2024-07-04 13:22:56 +01:00
snipe
e372527d13 Added default_avatar to settings
Signed-off-by: snipe <snipe@snipe.net>
2024-07-04 13:22:36 +01:00
snipe
96be1e1275 Removed duplicate locale directive
Signed-off-by: snipe <snipe@snipe.net>
2024-07-04 02:14:10 +01:00
snipe
8ce17d0585 Merge pull request #15025 from snipe/security/upgrade_webpack
Upgrade webpack from 5.91.0 to 5.92.0 #15008
2024-07-04 01:08:17 +01:00
snipe
6af1eaa4e4 Updated webpack to 5.92
Signed-off-by: snipe <snipe@snipe.net>
2024-07-04 01:07:26 +01:00
snipe
da01487301 Merge pull request #15023 from snipe/improvements/optimize_queries_for_user_bulk_actions
Added files column to bulk user delete, optimized queries
2024-07-03 23:45:09 +01:00
snipe
708d7b5fc5 Use icons for consistency
Signed-off-by: snipe <snipe@snipe.net>
2024-07-03 23:43:44 +01:00
snipe
62b5a159a9 Added files column
Signed-off-by: snipe <snipe@snipe.net>
2024-07-03 23:31:09 +01:00
snipe
a6d04509a5 Merge pull request #15016 from snipe/improved_user_merge
Fixed #15005 - Improvements  on user merge
2024-07-03 23:19:50 +01:00
snipe
0071596274 Added upload count
Signed-off-by: snipe <snipe@snipe.net>
2024-07-03 23:18:43 +01:00
snipe
59f66051f8 More eager loading
Signed-off-by: snipe <snipe@snipe.net>
2024-07-03 23:18:37 +01:00
snipe
9f1e59cf78 Marcus’ nitpicks
Signed-off-by: snipe <snipe@snipe.net>
2024-07-03 23:01:41 +01:00
snipe
f1f68b8ef6 Merge pull request #15022 from spencerrlongg/livewire-delete-button
Resolved Potential Issue when Deleting Personal Access Tokens
2024-07-03 22:24:25 +01:00
snipe
f22c3cdda9 Merge pull request #15021 from snipe/fixes/removed_non_counts
Removed non-counts from allowed array
2024-07-03 22:21:17 +01:00
snipe
5e15cc3bbe Added markIncompleteIfSqlite() method
Signed-off-by: snipe <snipe@snipe.net>
2024-07-03 22:18:31 +01:00
spencerrlongg
a6690493b0 resolved 2024-07-03 16:12:55 -05:00
snipe
17a6335d13 Added test
Signed-off-by: snipe <snipe@snipe.net>
2024-07-03 22:12:06 +01:00
akemidx
ca57f6de85 adding in item=>asset, missed in first commit 2024-07-03 17:07:50 -04:00
snipe
aefaabdb1a Removed non-counts from allowed array
Signed-off-by: snipe <snipe@snipe.net>
2024-07-03 21:40:43 +01:00
snipe
9211c8d3b1 Fixed test
Signed-off-by: snipe <snipe@snipe.net>
2024-07-03 20:57:21 +01:00
snipe
eff1980df5 Added console test
Signed-off-by: snipe <snipe@snipe.net>
2024-07-03 20:52:22 +01:00
snipe
1553ba5630 Added null coalescence for admin id in case via cli
Signed-off-by: snipe <snipe@snipe.net>
2024-07-03 20:52:12 +01:00
snipe
ec24120d2a Allow admin to be nullable (for cli)
Signed-off-by: snipe <snipe@snipe.net>
2024-07-03 20:50:35 +01:00
snipe
50df750202 Add merge event
Signed-off-by: snipe <snipe@snipe.net>
2024-07-03 20:50:23 +01:00
snipe
dab4aced48 Renamed test
Signed-off-by: snipe <snipe@snipe.net>
2024-07-03 20:50:09 +01:00
snipe
1774952312 Added additional assertions
Signed-off-by: snipe <snipe@snipe.net>
2024-07-03 20:19:12 +01:00
snipe
d66d6e70a6 Added checkedOutToUser factory for consumables
Signed-off-by: snipe <snipe@snipe.net>
2024-07-03 20:18:53 +01:00
snipe
4635e9269d Added user update log factory
Signed-off-by: snipe <snipe@snipe.net>
2024-07-03 20:18:34 +01:00
snipe
574867536d Standardize query for merging
Signed-off-by: snipe <snipe@snipe.net>
2024-07-03 19:41:34 +01:00
snipe
5488a4d118 One more test
Signed-off-by: snipe <snipe@snipe.net>
2024-07-03 14:36:27 +01:00
snipe
e34f3c7c2c Fixed typo
Signed-off-by: snipe <snipe@snipe.net>
2024-07-03 14:32:41 +01:00
snipe
ceaff7b645 Added tests
Signed-off-by: snipe <snipe@snipe.net>
2024-07-03 14:30:11 +01:00
snipe
d27a025347 Added factories
Signed-off-by: snipe <snipe@snipe.net>
2024-07-03 14:30:06 +01:00
snipe
2b2853a183 Added acceptance model
Signed-off-by: snipe <snipe@snipe.net>
2024-07-03 14:29:58 +01:00
snipe
a25263f868 Transfer files and acceptances on merge
Signed-off-by: snipe <snipe@snipe.net>
2024-07-03 14:29:49 +01:00
snipe
4b9727067b Merge pull request #15010 from snipe/fixes/translation_strings
Added missing translations
2024-07-03 12:43:50 +01:00
snipe
00fc392a12 Added missing traslations
Signed-off-by: snipe <snipe@snipe.net>
2024-07-03 12:41:04 +01:00
snipe
1da90fe1ec Bumped version
Signed-off-by: snipe <snipe@snipe.net>
2024-07-02 09:37:05 +01:00
snipe
25ba50d6f7 Merge pull request #14870 from Galaxy102/feature/rotate-labels
Add Label Template: Use with endless 62mm Brother printer rolls
2024-07-02 08:45:42 +01:00
snipe
f22e99aec8 Merge pull request #14983 from snipe/fixes/use_more_modern_request_syntax_in_blades
Use more modern reference for input text
2024-07-02 08:43:34 +01:00
snipe
f027fd5f21 Merge pull request #14986 from marcusmoore/bug/sc-25926
Fixed extension requirement checking in upgrade script
2024-07-02 08:42:45 +01:00
snipe
37a038c24f Merge pull request #15001 from marcusmoore/features/link-user-table-counts-to-section
Added links on user table to tabs on show user page
2024-07-02 08:37:05 +01:00
Marcus Moore
3a8f825de5 Link user table counts to section in user show 2024-07-01 14:06:05 -07:00
snipe
d2df83cf2f Merge pull request #14999 from marcusmoore/fixes/hide-edit-profile-button
Removed "Edit Your Profile" button from View Assets page if user is not able to edit their profile
2024-07-01 18:15:47 +01:00
Marcus Moore
d481850d4c Add @can around Edit Your Profile button on view assets page 2024-07-01 10:11:27 -07:00
Konstantin Köhring
6c55e2bd9d Add a Brother compatible 62mm wide label.
Tested with QL-600. Set print mode to landscape.
2024-06-28 09:49:53 +02:00
Konstantin Köhring
2fd357c346 Add rotation attribute to Label class to allow rotation of the generated label PDF.
This is necessary when printing labels with width = label width.
2024-06-28 09:49:53 +02:00
Marcus Moore
0a5e58201a Correctly account for "or" dependent extensions in upgrade script 2024-06-27 12:38:50 -07:00
snipe
d687b20467 Use more modern reference for input text
Signed-off-by: snipe <snipe@snipe.net>
2024-06-27 15:05:47 +01:00
snipe
7dbcedad40 Merge pull request #14981 from uberbrady/fix_backup_translations
Fixed #14976, #14975, #14973 - Translation strings aren't always working
2024-06-27 14:36:52 +01:00
snipe
b6e8d28ed3 Merge pull request #14982 from snipe/fixes/check_for_user_on_patch_api
Check that the user exists before trying to fill the request
2024-06-27 14:36:21 +01:00
snipe
85ce47f5bb Updated tests
Signed-off-by: snipe <snipe@snipe.net>
2024-06-27 14:21:27 +01:00
snipe
55c98cc27a Check that the user exists before trying to fill the request
Signed-off-by: snipe <snipe@snipe.net>
2024-06-27 14:05:28 +01:00
snipe
422f3ec81e Updated assets
Signed-off-by: snipe <snipe@snipe.net>
2024-06-27 13:53:38 +01:00
snipe
54fb91c03b Merge pull request #14831 from marcusmoore/chore/sc-23725/livewire3
Updated Livewire to v3
2024-06-27 13:21:52 +01:00
Brady Wetherington
6df9742664 Built a workaround for backup notification translations 2024-06-27 13:17:16 +01:00
snipe
f23a221750 Merge pull request #14942 from snipe/updates/start_moving_from_collective_forms
WIP - First start at switching to regular html labels
2024-06-27 13:12:29 +01:00
Marcus Moore
8a562f1d15 Bump Livewire to 3.5.1 2024-06-25 10:16:44 -07:00
Marcus Moore
d4861a74df Merge branch 'develop' into chore/sc-23725/livewire3
# Conflicts:
#	composer.lock
2024-06-25 10:15:50 -07:00
snipe
f47bc5ea7d Updated hardware checkin
Signed-off-by: snipe <snipe@snipe.net>
2024-06-23 19:40:52 +01:00
snipe
427615f627 Fiest start at switching to regular html labels
Signed-off-by: snipe <snipe@snipe.net>
2024-06-23 18:24:23 +01:00
Marcus Moore
30dd8bcf2b Update Livewire 2024-06-18 15:10:59 -07:00
Marcus Moore
f0a11be0b8 Merge branch 'develop' into chore/sc-23725/livewire3
# Conflicts:
#	composer.lock
2024-06-18 15:10:46 -07:00
Marcus Moore
a3dea99bbb Fix category edit form component 2024-06-17 14:24:16 -07:00
Marcus Moore
fc351a1896 Remove .live from oauth clients 2024-06-17 13:03:27 -07:00
Marcus Moore
d9164281ab Merge branch 'develop' into chore/sc-23725/livewire3
# Conflicts:
#	resources/views/livewire/oauth-clients.blade.php
2024-06-17 12:57:04 -07:00
Marcus Moore
c3e6e1144f Merge branch 'develop' into chore/sc-23725/livewire3 2024-06-12 15:12:40 -07:00
Marcus Moore
c51b7d7104 Inline variable 2024-06-10 12:22:23 -07:00
Marcus Moore
9044aa4ed9 Import class 2024-06-05 11:48:47 -07:00
Marcus Moore
60c7efae3c Remove commented code 2024-06-05 11:48:10 -07:00
Marcus Moore
48fc6ca60e Remove commented code 2024-06-05 11:46:57 -07:00
Marcus Moore
b2a0e7958b Inject alpine on label engine page 2024-06-04 17:03:36 -07:00
Marcus Moore
99439f0a5c Define property 2024-06-04 16:14:07 -07:00
Marcus Moore
ef91c8123e Remove unneeded re-render of select2 2024-06-04 15:49:57 -07:00
Marcus Moore
5eb5742b3d Define property 2024-06-04 15:49:39 -07:00
Marcus Moore
296cf3e34b Update OauthClients component 2024-06-04 15:37:41 -07:00
Marcus Moore
5a9a231359 Remove alpinejs 2024-05-30 16:57:20 -07:00
Marcus Moore
1736bf5510 Merge branch 'develop' into chore/sc-23725/livewire3
# Conflicts:
#	app/Livewire/LoginForm.php
#	package.json
#	resources/views/livewire/login-form.blade.php
2024-05-30 16:56:50 -07:00
Marcus Moore
2eaac3d381 Fix select2 re-renders 2024-05-30 16:20:04 -07:00
Marcus Moore
f03249898a Update id syntax in custom fields component 2024-05-30 16:12:52 -07:00
Marcus Moore
e80b80f5d1 Remove manual livewire tags 2024-05-29 16:04:05 -07:00
Marcus Moore
9e35441281 Importer fixes 2024-05-29 15:50:42 -07:00
Marcus Moore
7d95e7765d Add a few .prevents 2024-05-29 14:13:29 -07:00
Marcus Moore
ee75b30683 Enable legacy_model_binding 2024-05-29 14:06:27 -07:00
Marcus Moore
8d924b60d7 Replace references to @this in importer 2024-05-29 13:51:57 -07:00
Marcus Moore
34595c266d Update script tag 2024-05-29 13:16:30 -07:00
Marcus Moore
638ae9bdd5 Use new id method 2024-05-29 13:15:59 -07:00
Marcus Moore
093c6652a8 Update select2 snippet for Livewire 3 2024-05-29 12:58:24 -07:00
Marcus Moore
17f0ac1eae Set view correctly 2024-05-29 12:57:43 -07:00
Marcus Moore
43616d1874 Remove alpine reference from webpack 2024-05-29 12:30:20 -07:00
Marcus Moore
9dc4f2ca80 Migrate config 2024-05-29 12:24:17 -07:00
Marcus Moore
73e3ac7dd8 Migrate to $dispatch 2024-05-29 12:18:31 -07:00
Marcus Moore
8ff639913d Migrate away from dispatchBrowserEvent() 2024-05-29 12:17:36 -07:00
Marcus Moore
45419586fe Migrate away from wire:model.prevent 2024-05-29 12:11:33 -07:00
Marcus Moore
d8a480b2a8 Migrate to wire:model.blur 2024-05-29 12:11:02 -07:00
Marcus Moore
29d87246a2 Migrate away from wire:model.defer 2024-05-29 12:10:46 -07:00
Marcus Moore
58e638d3cb Migrate to wire:model.live 2024-05-29 12:08:25 -07:00
Marcus Moore
b52380f376 Migrate to new namespace 2024-05-29 12:07:48 -07:00
Marcus Moore
4ae74fb7f6 Remove alpinejs from package.json 2024-05-29 12:06:54 -07:00
Marcus Moore
7d1acd3d79 Update Livewire via composer 2024-05-29 12:04:06 -07:00
144 changed files with 22768 additions and 2150 deletions

View File

@@ -2,6 +2,7 @@
namespace App\Console\Commands; namespace App\Console\Commands;
use App\Events\UserMerged;
use App\Models\User; use App\Models\User;
use Carbon\Carbon; use Carbon\Carbon;
use Illuminate\Console\Command; use Illuminate\Console\Command;
@@ -51,7 +52,7 @@ class MergeUsersByUsername extends Command
$bad_users = User::where('username', '=', trim($parts[0])) $bad_users = User::where('username', '=', trim($parts[0]))
->whereNull('deleted_at') ->whereNull('deleted_at')
->with('assets', 'manager', 'userlog', 'licenses', 'consumables', 'accessories', 'managedLocations') ->with('assets', 'manager', 'userlog', 'licenses', 'consumables', 'accessories', 'managedLocations','uploads', 'acceptances')
->get(); ->get();
@@ -105,10 +106,26 @@ class MergeUsersByUsername extends Command
$managedLocation->save(); $managedLocation->save();
} }
foreach ($bad_user->uploads as $upload) {
$this->info('Updating upload log record '.$upload->id.' to user '.$user->id);
$upload->item_id = $user->id;
$upload->save();
}
foreach ($bad_user->acceptances as $acceptance) {
$this->info('Updating acceptance log record '.$acceptance->id.' to user '.$user->id);
$acceptance->item_id = $user->id;
$acceptance->save();
}
// Mark the user as deleted // Mark the user as deleted
$this->info('Marking the user as deleted'); $this->info('Marking the user as deleted');
$bad_user->deleted_at = Carbon::now()->timestamp; $bad_user->deleted_at = Carbon::now()->timestamp;
$bad_user->save(); $bad_user->save();
event(new UserMerged($bad_user, $user, null));
} }
} }
} }

View File

@@ -15,7 +15,7 @@ class UserMerged
* *
* @return void * @return void
*/ */
public function __construct(User $from_user, User $to_user, User $admin) public function __construct(User $from_user, User $to_user, ?User $admin)
{ {
$this->merged_from = $from_user; $this->merged_from = $from_user;
$this->merged_to = $to_user; $this->merged_to = $to_user;

View File

@@ -585,49 +585,8 @@ class AssetsController extends Controller
} }
$asset = $request->handleImages($asset); $asset = $request->handleImages($asset);
$asset = $asset->handleCustomFieldsForStoring($request);
// Update custom fields in the database.
$model = AssetModel::find($request->input('model_id'));
// Check that it's an object and not a collection
// (Sometimes people send arrays here and they shouldn't
if (($model) && ($model instanceof AssetModel) && ($model->fieldset)) {
foreach ($model->fieldset->fields as $field) {
// Set the field value based on what was sent in the request
$field_val = $request->input($field->db_column, null);
// If input value is null, use custom field's default value
if ($field_val == null) {
Log::debug('Field value for '.$field->db_column.' is null');
$field_val = $field->defaultValue($request->get('model_id'));
Log::debug('Use the default fieldset value of '.$field->defaultValue($request->get('model_id')));
}
// if the field is set to encrypted, make sure we encrypt the value
if ($field->field_encrypted == '1') {
Log::debug('This model field is encrypted in this fieldset.');
if (Gate::allows('admin')) {
// If input value is null, use custom field's default value
if (($field_val == null) && ($request->has('model_id') != '')) {
$field_val = Crypt::encrypt($field->defaultValue($request->get('model_id')));
} else {
$field_val = Crypt::encrypt($request->input($field->db_column));
}
}
}
if ($field->element == 'checkbox') {
if(is_array($field_val)) {
$field_val = implode(',', $field_val);
}
}
$asset->{$field->db_column} = $field_val;
}
}
if ($asset->save()) { if ($asset->save()) {
if ($request->get('assigned_user')) { if ($request->get('assigned_user')) {
@@ -688,32 +647,7 @@ class AssetsController extends Controller
} }
$asset = $request->handleImages($asset); $asset = $request->handleImages($asset);
$model = AssetModel::find($asset->model_id); $asset = $asset->handleCustomFieldsForStoring($request);
// Update custom fields
$problems_updating_encrypted_custom_fields = false;
if (($model) && (isset($model->fieldset))) {
foreach ($model->fieldset->fields as $field) {
$field_val = $request->input($field->db_column, null);
if ($request->has($field->db_column)) {
if ($field->element == 'checkbox') {
if(is_array($field_val)) {
$field_val = implode(',', $field_val);
}
}
if ($field->field_encrypted == '1') {
if (Gate::allows('admin')) {
$field_val = Crypt::encrypt($field_val);
} else {
$problems_updating_encrypted_custom_fields = true;
continue;
}
}
$asset->{$field->db_column} = $field_val;
}
}
}
if ($asset->save()) { if ($asset->save()) {

View File

@@ -247,10 +247,6 @@ class UsersController extends Controller
'jobtitle', 'jobtitle',
'username', 'username',
'employee_num', 'employee_num',
'assets',
'accessories',
'consumables',
'licenses',
'groups', 'groups',
'activated', 'activated',
'created_at', 'created_at',
@@ -437,77 +433,83 @@ class UsersController extends Controller
{ {
$this->authorize('update', User::class); $this->authorize('update', User::class);
$user = User::find($id); if ($user = User::find($id)) {
$this->authorize('update', $user);
/**
* This is a janky hack to prevent people from changing admin demo user data on the public demo.
* The $ids 1 and 2 are special since they are seeded as superadmins in the demo seeder.
* Thanks, jerks. You are why we can't have nice things. - snipe
*
*/
if ((($id == 1) || ($id == 2)) && (config('app.lock_passwords'))) { $this->authorize('update', $user);
return response()->json(Helper::formatStandardApiResponse('error', null, 'Permission denied. You cannot update user information via API on the demo.'));
} /**
* This is a janky hack to prevent people from changing admin demo user data on the public demo.
* The $ids 1 and 2 are special since they are seeded as superadmins in the demo seeder.
* Thanks, jerks. You are why we can't have nice things. - snipe
*
*/
$user->fill($request->all()); if ((($id == 1) || ($id == 2)) && (config('app.lock_passwords'))) {
return response()->json(Helper::formatStandardApiResponse('error', null, 'Permission denied. You cannot update user information via API on the demo.'));
if ($user->id == $request->input('manager_id')) {
return response()->json(Helper::formatStandardApiResponse('error', null, 'You cannot be your own manager'));
}
if ($request->filled('password')) {
$user->password = bcrypt($request->input('password'));
}
// We need to use has() instead of filled()
// here because we need to overwrite permissions
// if someone needs to null them out
if ($request->has('permissions')) {
$permissions_array = $request->input('permissions');
// Strip out the individual superuser permission if the API user isn't a superadmin
if (! Auth::user()->isSuperUser()) {
unset($permissions_array['superuser']);
} }
$user->permissions = $permissions_array;
}
$user->fill($request->all());
// Update the location of any assets checked out to this user if ($user->id == $request->input('manager_id')) {
Asset::where('assigned_type', User::class) return response()->json(Helper::formatStandardApiResponse('error', null, 'You cannot be your own manager'));
->where('assigned_to', $user->id)->update(['location_id' => $request->input('location_id', null)]); }
if ($request->filled('password')) {
app('App\Http\Requests\ImageUploadRequest')->handleImages($user, 600, 'image', 'avatars', 'avatar'); $user->password = bcrypt($request->input('password'));
}
if ($user->save()) {
// Check if the request has groups passed and has a value, AND that the user us a superuser // We need to use has() instead of filled()
if (($request->has('groups')) && (Auth::user()->isSuperUser())) { // here because we need to overwrite permissions
// if someone needs to null them out
if ($request->has('permissions')) {
$permissions_array = $request->input('permissions');
$validator = Validator::make($request->only('groups'), [ // Strip out the individual superuser permission if the API user isn't a superadmin
'groups.*' => 'integer|exists:permission_groups,id', if (!Auth::user()->isSuperUser()) {
]); unset($permissions_array['superuser']);
if ($validator->fails()) {
return response()->json(Helper::formatStandardApiResponse('error', null, $validator->errors()));
} }
// Sync the groups since the user is a superuser and the groups pass validation $user->permissions = $permissions_array;
$user->groups()->sync($request->input('groups'));
} }
return response()->json(Helper::formatStandardApiResponse('success', (new UsersTransformer)->transformUser($user), trans('admin/users/message.success.update')));
// Update the location of any assets checked out to this user
Asset::where('assigned_type', User::class)
->where('assigned_to', $user->id)->update(['location_id' => $request->input('location_id', null)]);
app('App\Http\Requests\ImageUploadRequest')->handleImages($user, 600, 'image', 'avatars', 'avatar');
if ($user->save()) {
// Check if the request has groups passed and has a value, AND that the user us a superuser
if (($request->has('groups')) && (Auth::user()->isSuperUser())) {
$validator = Validator::make($request->only('groups'), [
'groups.*' => 'integer|exists:permission_groups,id',
]);
if ($validator->fails()) {
return response()->json(Helper::formatStandardApiResponse('error', null, $validator->errors()));
}
// Sync the groups since the user is a superuser and the groups pass validation
$user->groups()->sync($request->input('groups'));
}
return response()->json(Helper::formatStandardApiResponse('success', (new UsersTransformer)->transformUser($user), trans('admin/users/message.success.update')));
}
return response()->json(Helper::formatStandardApiResponse('error', null, $user->getErrors()));
} }
return response()->json(Helper::formatStandardApiResponse('error', null, $user->getErrors())); return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/users/message.user_not_found', compact('id'))));
} }
/** /**

View File

@@ -160,29 +160,7 @@ class AssetsController extends Controller
$asset = $request->handleImages($asset); $asset = $request->handleImages($asset);
} }
// Update custom fields in the database. $asset = $asset->handleCustomFieldsForStoring($request);
// Validation for these fields is handled through the AssetRequest form request
$model = AssetModel::find($request->get('model_id'));
if (($model) && ($model->fieldset)) {
foreach ($model->fieldset->fields as $field) {
if ($field->field_encrypted == '1') {
if (Gate::allows('admin')) {
if (is_array($request->input($field->db_column))) {
$asset->{$field->db_column} = Crypt::encrypt(implode(', ', $request->input($field->db_column)));
} else {
$asset->{$field->db_column} = Crypt::encrypt($request->input($field->db_column));
}
}
} else {
if (is_array($request->input($field->db_column))) {
$asset->{$field->db_column} = implode(', ', $request->input($field->db_column));
} else {
$asset->{$field->db_column} = $request->input($field->db_column);
}
}
}
}
// Validate the asset before saving // Validate the asset before saving
if ($asset->isValid() && $asset->save()) { if ($asset->isValid() && $asset->save()) {
@@ -370,32 +348,7 @@ class AssetsController extends Controller
$asset->notes = $request->input('notes'); $asset->notes = $request->input('notes');
$asset = $request->handleImages($asset); $asset = $request->handleImages($asset);
$asset = $asset->handleCustomFieldsForStoring($request);
// Update custom fields in the database.
// Validation for these fields is handlded through the AssetRequest form request
// FIXME: No idea why this is returning a Builder error on db_column_name.
// Need to investigate and fix. Using static method for now.
$model = AssetModel::find($request->get('model_id'));
if (($model) && ($model->fieldset)) {
foreach ($model->fieldset->fields as $field) {
if ($field->field_encrypted == '1') {
if (Gate::allows('admin')) {
if (is_array($request->input($field->db_column))) {
$asset->{$field->db_column} = Crypt::encrypt(implode(', ', $request->input($field->db_column)));
} else {
$asset->{$field->db_column} = Crypt::encrypt($request->input($field->db_column));
}
}
} else {
if (is_array($request->input($field->db_column))) {
$asset->{$field->db_column} = implode(', ', $request->input($field->db_column));
} else {
$asset->{$field->db_column} = $request->input($field->db_column);
}
}
}
}
if ($asset->save()) { if ($asset->save()) {
return redirect()->route('hardware.show', $assetId) return redirect()->route('hardware.show', $assetId)
@@ -905,7 +858,7 @@ class AssetsController extends Controller
if ($request->input('update_location') == '1') { if ($request->input('update_location') == '1') {
$asset->location_id = $request->input('location_id'); $asset->location_id = $request->input('location_id');
} }
/** /**
* Invoke Watson Validating to check the asset itself and check to make sure it saved correctly. * Invoke Watson Validating to check the asset itself and check to make sure it saved correctly.

View File

@@ -348,7 +348,6 @@ class SettingsController extends Controller
} }
$setting->default_eula_text = $request->input('default_eula_text'); $setting->default_eula_text = $request->input('default_eula_text');
$setting->load_remote = $request->input('load_remote', 0);
$setting->thumbnail_max_h = $request->input('thumbnail_max_h'); $setting->thumbnail_max_h = $request->input('thumbnail_max_h');
$setting->privacy_policy_link = $request->input('privacy_policy_link'); $setting->privacy_policy_link = $request->input('privacy_policy_link');
$setting->depreciation_method = $request->input('depreciation_method'); $setting->depreciation_method = $request->input('depreciation_method');
@@ -393,10 +392,11 @@ class SettingsController extends Controller
* *
* @since [v1.0] * @since [v1.0]
* *
* @return View * @return \Illuminate\Contracts\View\View | \Illuminate\Http\RedirectResponse
*/ */
public function postBranding(ImageUploadRequest $request) public function postBranding(ImageUploadRequest $request)
{ {
// Something has gone horribly wrong - no settings record exists!
if (is_null($setting = Setting::getSettings())) { if (is_null($setting = Setting::getSettings())) {
return redirect()->to('admin')->with('error', trans('admin/settings/message.update.error')); return redirect()->to('admin')->with('error', trans('admin/settings/message.update.error'));
} }
@@ -407,51 +407,75 @@ class SettingsController extends Controller
$setting->version_footer = $request->input('version_footer'); $setting->version_footer = $request->input('version_footer');
$setting->footer_text = $request->input('footer_text'); $setting->footer_text = $request->input('footer_text');
$setting->skin = $request->input('skin'); $setting->skin = $request->input('skin');
$setting->allow_user_skin = $request->input('allow_user_skin'); $setting->allow_user_skin = $request->input('allow_user_skin', '0');
$setting->show_url_in_emails = $request->input('show_url_in_emails', '0'); $setting->show_url_in_emails = $request->input('show_url_in_emails', '0');
$setting->logo_print_assets = $request->input('logo_print_assets', '0'); $setting->logo_print_assets = $request->input('logo_print_assets', '0');
$setting->load_remote = $request->input('load_remote', 0);
// Only allow the site name and CSS to be changed if lock_passwords is false // Only allow the site name, images, and CSS to be changed if lock_passwords is false
// Because public demos make people act like dicks // Because public demos make people act like dicks
if (! config('app.lock_passwords')) { if (!config('app.lock_passwords')) {
$request->validate(['site_name' => 'required']);
$setting->site_name = $request->input('site_name'); if ($request->has('site_name')) {
$request->validate(['site_name' => 'required']);
}
$setting->site_name = $request->input('site_name', 'Snipe-IT');
$setting->custom_css = $request->input('custom_css'); $setting->custom_css = $request->input('custom_css');
// Logo upload
$setting = $request->handleImages($setting, 600, 'logo', '', 'logo'); $setting = $request->handleImages($setting, 600, 'logo', '', 'logo');
if ('1' == $request->input('clear_logo')) { if ($request->input('clear_logo') == '1') {
Storage::disk('public')->delete($setting->logo);
if (($setting->logo) && (Storage::exists($setting->logo))) {
Storage::disk('public')->delete($setting->logo);
}
$setting->logo = null; $setting->logo = null;
$setting->brand = 1; $setting->brand = 1;
} }
// Email logo upload
$setting = $request->handleImages($setting, 600, 'email_logo', '', 'email_logo'); $setting = $request->handleImages($setting, 600, 'email_logo', '', 'email_logo');
if ($request->input('clear_email_logo') == '1') {
if (($setting->email_logo) && (Storage::exists($setting->email_logo))) {
if ('1' == $request->input('clear_email_logo')) { Storage::disk('public')->delete($setting->email_logo);
Storage::disk('public')->delete($setting->email_logo); }
$setting->email_logo = null; $setting->email_logo = null;
// If they are uploading an image, validate it and upload it // If they are uploading an image, validate it and upload it
} }
// Label logo upload
$setting = $request->handleImages($setting, 600, 'label_logo', '', 'label_logo'); $setting = $request->handleImages($setting, 600, 'label_logo', '', 'label_logo');
if ($request->input('clear_label_logo') == '1') {
if ('1' == $request->input('clear_label_logo')) { if (($setting->label_logo) && (Storage::exists($setting->label_logo))) {
Storage::disk('public')->delete($setting->label_logo); Storage::disk('public')->delete($setting->label_logo);
}
$setting->label_logo = null; $setting->label_logo = null;
} }
// Favicon upload
$setting = $request->handleImages($setting, 600, 'favicon', '', 'favicon'); $setting = $request->handleImages($setting, 100, 'favicon', '', 'favicon');
// If the user wants to clear the favicon...
if ('1' == $request->input('clear_favicon')) { if ('1' == $request->input('clear_favicon')) {
Storage::disk('public')->delete($setting->favicon);
if (($setting->favicon) && (Storage::exists($setting->favicon))) {
Storage::disk('public')->delete($setting->favicon);
}
$setting->favicon = null; $setting->favicon = null;
} }
// Default avatar upload
$setting = $request->handleImages($setting, 500, 'default_avatar', 'avatars', 'default_avatar');
if ($request->input('clear_default_avatar') == '1') {
if (($setting->default_avatar) && (Storage::exists('avatars/'.$setting->default_avatar))) {
Storage::disk('public')->delete('avatars/'.$setting->default_avatar);
}
$setting->default_avatar = null;
}
} }
if ($setting->save()) { if ($setting->save()) {

View File

@@ -42,7 +42,7 @@ class BulkUsersController extends Controller
// Get the list of affected users // Get the list of affected users
$user_raw_array = request('ids'); $user_raw_array = request('ids');
$users = User::whereIn('id', $user_raw_array) $users = User::whereIn('id', $user_raw_array)
->with('groups', 'assets', 'licenses', 'accessories')->get(); ->with('assets', 'manager', 'userlog', 'licenses', 'consumables', 'accessories', 'managedLocations','uploads', 'acceptances')->get();
// bulk edit, display the bulk edit form // bulk edit, display the bulk edit form
if ($request->input('bulk_actions') == 'edit') { if ($request->input('bulk_actions') == 'edit') {
@@ -317,7 +317,7 @@ class BulkUsersController extends Controller
// Get the users // Get the users
$merge_into_user = User::find($request->input('merge_into_id')); $merge_into_user = User::find($request->input('merge_into_id'));
$users_to_merge = User::whereIn('id', $user_ids_to_merge)->with('assets', 'licenses', 'consumables','accessories')->get(); $users_to_merge = User::whereIn('id', $user_ids_to_merge)->with('assets', 'manager', 'userlog', 'licenses', 'consumables', 'accessories', 'managedLocations','uploads', 'acceptances')->get();
$admin = User::find(Auth::user()->id); $admin = User::find(Auth::user()->id);
// Walk users // Walk users
@@ -344,10 +344,20 @@ class BulkUsersController extends Controller
} }
foreach ($user_to_merge->userlog as $log) { foreach ($user_to_merge->userlog as $log) {
$log->target_id = $user_to_merge->id; $log->target_id = $merge_into_user->id;
$log->save(); $log->save();
} }
foreach ($user_to_merge->uploads as $upload) {
$upload->item_id = $merge_into_user->id;
$upload->save();
}
foreach ($user_to_merge->acceptances as $acceptance) {
$acceptance->item_id = $merge_into_user->id;
$acceptance->save();
}
User::where('manager_id', '=', $user_to_merge->id)->update(['manager_id' => $merge_into_user->id]); User::where('manager_id', '=', $user_to_merge->id)->update(['manager_id' => $merge_into_user->id]);
foreach ($user_to_merge->managedLocations as $managedLocation) { foreach ($user_to_merge->managedLocations as $managedLocation) {
@@ -356,7 +366,6 @@ class BulkUsersController extends Controller
} }
$user_to_merge->delete(); $user_to_merge->delete();
//$user_to_merge->save();
event(new UserMerged($user_to_merge, $merge_into_user, $admin)); event(new UserMerged($user_to_merge, $merge_into_user, $admin));

View File

@@ -96,10 +96,7 @@ class ImageUploadRequest extends Request
$ext = $image->guessExtension(); $ext = $image->guessExtension();
$file_name = $type.'-'.$form_fieldname.'-'.$item->id.'-'.str_random(10).'.'.$ext; $file_name = $type.'-'.$form_fieldname.'-'.$item->id.'-'.str_random(10).'.'.$ext;
Log::info('File name will be: '.$file_name);
Log::debug('File extension is: '.$ext);
if (($image->getMimeType() == 'image/vnd.microsoft.icon') || ($image->getMimeType() == 'image/x-icon') || ($image->getMimeType() == 'image/avif') || ($image->getMimeType() == 'image/webp')) { if (($image->getMimeType() == 'image/vnd.microsoft.icon') || ($image->getMimeType() == 'image/x-icon') || ($image->getMimeType() == 'image/avif') || ($image->getMimeType() == 'image/webp')) {
// If the file is an icon, webp or avif, we need to just move it since gd doesn't support resizing // If the file is an icon, webp or avif, we need to just move it since gd doesn't support resizing
// icons or avif, and webp support and needs to be compiled into gd for resizing to be available // icons or avif, and webp support and needs to be compiled into gd for resizing to be available

View File

@@ -24,7 +24,7 @@ class UsersTransformer
$array = [ $array = [
'id' => (int) $user->id, 'id' => (int) $user->id,
'avatar' => e($user->present()->gravatar), 'avatar' => e($user->present()->gravatar) ?? null,
'name' => e($user->getFullNameAttribute()), 'name' => e($user->getFullNameAttribute()),
'first_name' => e($user->first_name), 'first_name' => e($user->first_name),
'last_name' => e($user->last_name), 'last_name' => e($user->last_name),

View File

@@ -111,7 +111,7 @@ class LogListener
$logaction->target_type = User::class; $logaction->target_type = User::class;
$logaction->action_type = 'merged'; $logaction->action_type = 'merged';
$logaction->note = trans('general.merged_log_this_user_from', $to_from_array); $logaction->note = trans('general.merged_log_this_user_from', $to_from_array);
$logaction->user_id = $event->admin->id; $logaction->user_id = $event->admin->id ?? null;
$logaction->save(); $logaction->save();
// Add a record to the users being merged TO // Add a record to the users being merged TO
@@ -122,7 +122,7 @@ class LogListener
$logaction->item_type = User::class; $logaction->item_type = User::class;
$logaction->action_type = 'merged'; $logaction->action_type = 'merged';
$logaction->note = trans('general.merged_log_this_user_into', $to_from_array); $logaction->note = trans('general.merged_log_this_user_into', $to_from_array);
$logaction->user_id = $event->admin->id; $logaction->user_id = $event->admin->id ?? null;
$logaction->save(); $logaction->save();

View File

@@ -1,6 +1,6 @@
<?php <?php
namespace App\Http\Livewire; namespace App\Livewire;
use Livewire\Component; use Livewire\Component;

View File

@@ -1,6 +1,6 @@
<?php <?php
namespace App\Http\Livewire; namespace App\Livewire;
use Livewire\Component; use Livewire\Component;

View File

@@ -1,6 +1,6 @@
<?php <?php
namespace App\Http\Livewire; namespace App\Livewire;
use App\Models\CustomField; use App\Models\CustomField;
use Livewire\Component; use Livewire\Component;
@@ -59,7 +59,7 @@ class Importer extends Component
]; ];
/** /**
* This is used in resources/views/livewire/importer.blade.php, and we kinda shouldn't need to check for * This is used in resources/views/livewire.importer.blade.php, and we kinda shouldn't need to check for
* activeFile here, but there's some UI goofiness that allows this to crash out on some imports. * activeFile here, but there's some UI goofiness that allows this to crash out on some imports.
* *
* @return string * @return string

View File

@@ -1,6 +1,6 @@
<?php <?php
namespace App\Http\Livewire; namespace App\Livewire;
use Illuminate\Support\Facades\Http; use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
@@ -19,21 +19,11 @@ class OauthClients extends Component
public $authorizationError; public $authorizationError;
protected $clientRepository;
protected $tokenRepository;
public function __construct()
{
$this->clientRepository = app(ClientRepository::class);
$this->tokenRepository = app(TokenRepository::class);
parent::__construct();
}
public function render() public function render()
{ {
return view('livewire.oauth-clients', [ return view('livewire.oauth-clients', [
'clients' => $this->clientRepository->activeForUser(auth()->user()->id), 'clients' => app(ClientRepository::class)->activeForUser(auth()->user()->id),
'authorized_tokens' => $this->tokenRepository->forUser(auth()->user()->id)->where('revoked', false), 'authorized_tokens' => app(TokenRepository::class)->forUser(auth()->user()->id)->where('revoked', false),
]); ]);
} }
@@ -44,13 +34,13 @@ class OauthClients extends Component
'redirect' => 'required|url|max:255', 'redirect' => 'required|url|max:255',
]); ]);
$newClient = $this->clientRepository->create( app(ClientRepository::class)->create(
auth()->user()->id, auth()->user()->id,
$this->name, $this->name,
$this->redirect, $this->redirect,
); );
$this->dispatchBrowserEvent('clientCreated'); $this->dispatch('clientCreated');
} }
public function deleteClient(Client $clientId): void public function deleteClient(Client $clientId): void
@@ -58,7 +48,7 @@ class OauthClients extends Component
// test for safety // test for safety
// ->delete must be of type Client - thus the model binding // ->delete must be of type Client - thus the model binding
if ($clientId->user_id == auth()->user()->id) { if ($clientId->user_id == auth()->user()->id) {
$this->clientRepository->delete($clientId); app(ClientRepository::class)->delete($clientId);
} else { } else {
Log::warning('User ' . auth()->user()->id . ' attempted to delete client ' . $clientId->id . ' which belongs to user ' . $clientId->user_id); Log::warning('User ' . auth()->user()->id . ' attempted to delete client ' . $clientId->id . ' which belongs to user ' . $clientId->user_id);
$this->authorizationError = 'You are not authorized to delete this client.'; $this->authorizationError = 'You are not authorized to delete this client.';
@@ -67,9 +57,9 @@ class OauthClients extends Component
public function deleteToken($tokenId): void public function deleteToken($tokenId): void
{ {
$token = $this->tokenRepository->find($tokenId); $token = app(TokenRepository::class)->find($tokenId);
if ($token->user_id == auth()->user()->id) { if ($token->user_id == auth()->user()->id) {
$this->tokenRepository->revokeAccessToken($tokenId); app(TokenRepository::class)->revokeAccessToken($tokenId);
} else { } else {
Log::warning('User ' . auth()->user()->id . ' attempted to delete token ' . $tokenId . ' which belongs to user ' . $token->user_id); Log::warning('User ' . auth()->user()->id . ' attempted to delete token ' . $tokenId . ' which belongs to user ' . $token->user_id);
$this->authorizationError = 'You are not authorized to delete this token.'; $this->authorizationError = 'You are not authorized to delete this token.';
@@ -83,7 +73,7 @@ class OauthClients extends Component
$this->editClientId = $editClientId->id; $this->editClientId = $editClientId->id;
$this->dispatchBrowserEvent('editClient'); $this->dispatch('editClient');
} }
public function updateClient(Client $editClientId): void public function updateClient(Client $editClientId): void
@@ -93,7 +83,7 @@ class OauthClients extends Component
'editRedirect' => 'required|url|max:255', 'editRedirect' => 'required|url|max:255',
]); ]);
$client = $this->clientRepository->find($editClientId->id); $client = app(ClientRepository::class)->find($editClientId->id);
if ($client->user_id == auth()->user()->id) { if ($client->user_id == auth()->user()->id) {
$client->name = $this->editName; $client->name = $this->editName;
$client->redirect = $this->editRedirect; $client->redirect = $this->editRedirect;
@@ -103,7 +93,7 @@ class OauthClients extends Component
$this->authorizationError = 'You are not authorized to edit this client.'; $this->authorizationError = 'You are not authorized to edit this client.';
} }
$this->dispatchBrowserEvent('clientUpdated'); $this->dispatch('clientUpdated');
} }
} }

View File

@@ -1,6 +1,6 @@
<?php <?php
namespace App\Http\Livewire; namespace App\Livewire;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
@@ -17,7 +17,7 @@ class PersonalAccessTokens extends Component
//this is just an annoying thing to make the modal input autofocus //this is just an annoying thing to make the modal input autofocus
public function autoFocusModalEvent(): void public function autoFocusModalEvent(): void
{ {
$this->dispatchBrowserEvent('autoFocusModal'); $this->dispatch('autoFocusModal');
} }
public function render() public function render()
@@ -42,13 +42,13 @@ class PersonalAccessTokens extends Component
$this->newTokenString = $newToken->accessToken; $this->newTokenString = $newToken->accessToken;
$this->dispatchBrowserEvent('tokenCreated', $newToken->accessToken); $this->dispatch('tokenCreated', token: $newToken->accessToken);
} }
public function deleteToken($tokenId): void public function deleteToken($tokenId): void
{ {
//this needs safety (though the scope of auth::user might kind of do it...) //this needs safety (though the scope of auth::user might kind of do it...)
//seems like it does, test more //seems like it does, test more
Auth::user()->tokens()->find($tokenId)->delete(); Auth::user()->tokens()->find($tokenId)?->delete();
} }
} }

View File

@@ -1,6 +1,6 @@
<?php <?php
namespace App\Http\Livewire; namespace App\Livewire;
use GuzzleHttp\Client; use GuzzleHttp\Client;
use Illuminate\Support\Facades\Http; use Illuminate\Support\Facades\Http;
@@ -23,15 +23,17 @@ class SlackSettingsForm extends Component
public Setting $setting; public Setting $setting;
public $save_button;
public $webhook_test;
public $webhook_endpoint_rules; public $webhook_endpoint_rules;
protected $rules = [ protected $rules = [
'webhook_endpoint' => 'required_with:webhook_channel|starts_with:http://,https://,ftp://,irc://,https://hooks.slack.com/services/|url|nullable', 'webhook_endpoint' => 'required_with:webhook_channel|starts_with:http://,https://,ftp://,irc://,https://hooks.slack.com/services/|url|nullable',
'webhook_channel' => 'required_with:webhook_endpoint|starts_with:#|nullable', 'webhook_channel' => 'required_with:webhook_endpoint|starts_with:#|nullable',
'webhook_botname' => 'string|nullable', 'webhook_botname' => 'string|nullable',
]; ];
public function mount() { public function mount() {
$this->webhook_text= [ $this->webhook_text= [

View File

@@ -13,10 +13,12 @@ use App\Presenters\Presentable;
use App\Presenters\AssetPresenter; use App\Presenters\AssetPresenter;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Carbon\Carbon; use Carbon\Carbon;
use Illuminate\Support\Facades\Crypt;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Support\Facades\Gate;
use Illuminate\Support\Facades\Storage; use Illuminate\Support\Facades\Storage;
use Watson\Validating\ValidatingTrait; use Watson\Validating\ValidatingTrait;
use Illuminate\Database\Eloquent\Casts\Attribute; use Illuminate\Database\Eloquent\Casts\Attribute;
@@ -966,6 +968,46 @@ class Asset extends Depreciable
return $cost; return $cost;
} }
public function handleCustomFieldsForStoring($request) : Asset
{
$model = AssetModel::find($this->model_id);
if (($model) && ($model instanceof AssetModel) && ($model->fieldset)) {
foreach ($model->fieldset->fields as $field) {
/*
* Check if the decrypted existing value is different from one we just submitted
* and if not, pull it out of the object since it shouldn't really be updating at all.
* If we don't do this, it will try to re-encrypt it, and the same value encrypted two
* different times will have different values, so it will *look* like it was updated
* but it wasn't.
*/
if ($request->input($field->db_column)!='') {
if ($field->field_encrypted == '1') {
if (Gate::allows('admin')) {
if (is_array($request->input($field->db_column))) {
$this->{$field->db_column} = Crypt::encrypt(implode(', ', $request->input($field->db_column)));
} else {
$this->{$field->db_column} = Crypt::encrypt($request->input($field->db_column));
}
}
} else {
if (is_array($request->input($field->db_column))) {
$this->{$field->db_column} = implode(', ', $request->input($field->db_column));
} else {
$this->{$field->db_column} = $request->input($field->db_column);
}
}
}
}
}
return $this;
}
/** /**
* ----------------------------------------------- * -----------------------------------------------
* BEGIN MUTATORS * BEGIN MUTATORS

View File

@@ -25,6 +25,17 @@ abstract class Label
*/ */
public abstract function getUnit(); public abstract function getUnit();
/**
* Returns the PDF rotation.
* 0, 90, 180, 270
* 0 is a sane default. Override when necessary.
*
* @return int
*/
public function getRotation() {
return 0;
}
/** /**
* Returns the label's width in getUnit() units * Returns the label's width in getUnit() units
* *

View File

@@ -0,0 +1,23 @@
<?php
namespace App\Models\Labels\Tapes\Brother;
use App\Helpers\Helper;
use App\Models\Labels\Label;
/*
* Rotated Label (print direction = landscape) for 62mm wide labels
*/
abstract class TZe_62mm_Landscape extends Label
{
private const WIDTH = 62.00;
private const MARGIN_SIDES = 1.50;
private const MARGIN_ENDS = 1.50;
public function getWidth() { return Helper::convertUnit(self::WIDTH, 'mm', $this->getUnit()); }
public function getMarginTop() { return Helper::convertUnit(self::MARGIN_SIDES, 'mm', $this->getUnit()); }
public function getMarginBottom() { return Helper::convertUnit(self::MARGIN_SIDES, 'mm', $this->getUnit());}
public function getMarginLeft() { return Helper::convertUnit(self::MARGIN_ENDS, 'mm', $this->getUnit()); }
public function getMarginRight() { return Helper::convertUnit(self::MARGIN_ENDS, 'mm', $this->getUnit()); }
public function getRotation() { return 90; }
}

View File

@@ -0,0 +1,106 @@
<?php
namespace App\Models\Labels\Tapes\Brother;
class TZe_62mm_Landscape_A extends TZe_62mm_Landscape
{
public function getUnit() { return 'mm'; }
public function getHeight() { return 31.50; }
public function getSupportAssetTag() { return true; }
public function getSupport1DBarcode() { return true; }
public function getSupport2DBarcode() { return true; }
public function getSupportFields() { return 2; }
public function getSupportLogo() { return true; }
public function getSupportTitle() { return true; }
private const BARCODE1D_HEIGHT = 3.00;
private const BARCODE1D_MARGIN = 3.00;
private const BARCODE2D_SIZE = 20.00;
private const BARCODE2D_MARGIN = 1.50;
private const TAG_SIZE = 3.00;
private const LOGO_HEIGHT = 10.00;
private const LOGO_MARGIN = 1.50;
private const TITLE_SIZE = 3.00;
private const TITLE_MARGIN = 0.50;
private const LABEL_SIZE = 2.00;
private const LABEL_MARGIN = - 0.35;
private const FIELD_SIZE = 3.00;
private const FIELD_MARGIN = 0.10;
public function preparePDF($pdf) {}
public function write($pdf, $record) {
$pa = $this->getPrintableArea();
$currentX = $pa->x1;
$currentY = $pa->y1;
// Wide 1D barcode on top
if ($record->has('barcode1d')) {
static::write1DBarcode(
$pdf, $record->get('barcode1d')->content, $record->get('barcode1d')->type,
$currentX, $currentY, $pa->w, self::BARCODE1D_HEIGHT
);
$currentY = self::BARCODE1D_HEIGHT + self::BARCODE1D_MARGIN;
}
// Left column
if ($record->has('barcode2d')) {
$columnY = $currentY;
static::write2DBarcode(
$pdf, $record->get('barcode2d')->content, $record->get('barcode2d')->type,
$currentX, $columnY,
self::BARCODE2D_SIZE, self::BARCODE2D_SIZE
);
$columnY += self::BARCODE2D_SIZE + self::BARCODE2D_MARGIN;
static::writeText(
$pdf, $record->get('tag'),
$currentX, $columnY,
'freemono', 'b', self::TAG_SIZE, 'C',
self::BARCODE2D_SIZE, self::TAG_SIZE, true, 0
);
$currentX += self::BARCODE2D_SIZE + self::BARCODE2D_MARGIN;
}
// Right column
if ($record->get('logo')) {
static::writeImage(
$pdf, $record->get('logo'),
$currentX, $currentY,
$pa->w - $currentX, self::LOGO_HEIGHT,
'L', 'T', 300, true, false, 0
);
$currentY += self::LOGO_HEIGHT + self::LOGO_MARGIN;
}
if ($record->has('title')) {
static::writeText(
$pdf, $record->get('title'),
$currentX, $currentY,
'freesans', '', self::TITLE_SIZE, 'L',
$pa->w - $currentX, self::TITLE_SIZE, true, 0
);
$currentY += self::TITLE_SIZE + self::TITLE_MARGIN;
}
foreach ($record->get('fields') as $field) {
static::writeText(
$pdf, $field['label'],
$currentX, $currentY,
'freesans', '', self::LABEL_SIZE, 'L',
$pa->w - $currentX, self::LABEL_SIZE, true, 0, 0
);
$currentY += self::LABEL_SIZE + self::LABEL_MARGIN;
static::writeText(
$pdf, $field['value'],
$currentX, $currentY,
'freemono', 'B', self::FIELD_SIZE, 'L',
$pa->w - $currentX, self::FIELD_SIZE, true, 0, 0.3
);
$currentY += self::FIELD_SIZE + self::FIELD_MARGIN;
}
}
}

View File

@@ -481,8 +481,6 @@ class User extends SnipeModel implements AuthenticatableContract, AuthorizableCo
/** /**
* Establishes the user -> uploads relationship * Establishes the user -> uploads relationship
* *
* @todo I don't think we use this?
*
* @author A. Gianotto <snipe@snipe.net> * @author A. Gianotto <snipe@snipe.net>
* @since [v3.0] * @since [v3.0]
* @return \Illuminate\Database\Eloquent\Relations\Relation * @return \Illuminate\Database\Eloquent\Relations\Relation
@@ -496,6 +494,21 @@ class User extends SnipeModel implements AuthenticatableContract, AuthorizableCo
->orderBy('created_at', 'desc'); ->orderBy('created_at', 'desc');
} }
/**
* Establishes the user -> acceptances relationship
*
* @author A. Gianotto <snipe@snipe.net>
* @since [v7.0.7]
* @return \Illuminate\Database\Eloquent\Relations\Relation
*/
public function acceptances()
{
return $this->hasMany(\App\Models\Actionlog::class, 'target_id')
->where('target_type', self::class)
->where('action_type', '=', 'accepted')
->orderBy('created_at', 'desc');
}
/** /**
* Establishes the user -> requested assets relationship * Establishes the user -> requested assets relationship
* *

View File

@@ -223,6 +223,7 @@ class UserPresenter extends Presenter
'class' => 'css-barcode', 'class' => 'css-barcode',
'title' => trans('general.assets'), 'title' => trans('general.assets'),
'visible' => true, 'visible' => true,
'formatter' => 'linkNumberToUserAssetsFormatter',
], ],
[ [
'field' => 'licenses_count', 'field' => 'licenses_count',
@@ -232,6 +233,7 @@ class UserPresenter extends Presenter
'class' => 'css-license', 'class' => 'css-license',
'title' => trans('general.licenses'), 'title' => trans('general.licenses'),
'visible' => true, 'visible' => true,
'formatter' => 'linkNumberToUserLicensesFormatter',
], ],
[ [
'field' => 'consumables_count', 'field' => 'consumables_count',
@@ -241,6 +243,7 @@ class UserPresenter extends Presenter
'class' => 'css-consumable', 'class' => 'css-consumable',
'title' => trans('general.consumables'), 'title' => trans('general.consumables'),
'visible' => true, 'visible' => true,
'formatter' => 'linkNumberToUserConsumablesFormatter',
], ],
[ [
'field' => 'accessories_count', 'field' => 'accessories_count',
@@ -250,6 +253,7 @@ class UserPresenter extends Presenter
'class' => 'css-accessory', 'class' => 'css-accessory',
'title' => trans('general.accessories'), 'title' => trans('general.accessories'),
'visible' => true, 'visible' => true,
'formatter' => 'linkNumberToUserAccessoriesFormatter',
], ],
[ [
'field' => 'manages_users_count', 'field' => 'manages_users_count',
@@ -259,6 +263,7 @@ class UserPresenter extends Presenter
'class' => 'css-users', 'class' => 'css-users',
'title' => trans('admin/users/table.managed_users'), 'title' => trans('admin/users/table.managed_users'),
'visible' => true, 'visible' => true,
'formatter' => 'linkNumberToUserManagedUsersFormatter',
], ],
[ [
'field' => 'manages_locations_count', 'field' => 'manages_locations_count',
@@ -268,6 +273,7 @@ class UserPresenter extends Presenter
'class' => 'css-location', 'class' => 'css-location',
'title' => trans('admin/users/table.managed_locations'), 'title' => trans('admin/users/table.managed_locations'),
'visible' => true, 'visible' => true,
'formatter' => 'linkNumberToUserManagedLocationsFormatter',
], ],
[ [
'field' => 'notes', 'field' => 'notes',
@@ -426,6 +432,8 @@ class UserPresenter extends Presenter
*/ */
public function gravatar() public function gravatar()
{ {
// User's specific avatar
if ($this->avatar) { if ($this->avatar) {
// Check if it's a google avatar or some external avatar // Check if it's a google avatar or some external avatar
@@ -437,6 +445,12 @@ class UserPresenter extends Presenter
return Storage::disk('public')->url('avatars/'.e($this->avatar)); return Storage::disk('public')->url('avatars/'.e($this->avatar));
} }
// If there is a default avatar
if (Setting::getSettings()->default_avatar!= '') {
return Storage::disk('public')->url('avatars/'.e(Setting::getSettings()->default_avatar));
}
// Fall back to Gravatar if the settings allow loading remote scripts
if (Setting::getSettings()->load_remote == '1') { if (Setting::getSettings()->load_remote == '1') {
if ($this->model->gravatar != '') { if ($this->model->gravatar != '') {
@@ -450,8 +464,8 @@ class UserPresenter extends Presenter
} }
} }
// Set a fun, gender-neutral default icon
return config('app.url').'/img/default-sm.png'; return false;
} }
/** /**

View File

@@ -2,6 +2,7 @@
namespace App\Services; namespace App\Services;
use App\Helpers\Helper;
use Illuminate\Translation\Translator; use Illuminate\Translation\Translator;
/*************************************************************** /***************************************************************
@@ -17,6 +18,10 @@ use Illuminate\Translation\Translator;
***************************************************************/ ***************************************************************/
class SnipeTranslator extends Translator { class SnipeTranslator extends Translator {
static $legacy_translation_namespaces = [
"backup::" //Spatie backup uses 'legacy' locale names
];
//This is copied-and-pasted (almost) verbatim from Illuminate\Translation\Translator //This is copied-and-pasted (almost) verbatim from Illuminate\Translation\Translator
public function choice($key, $number, array $replace = [], $locale = null) public function choice($key, $number, array $replace = [], $locale = null)
{ {
@@ -39,4 +44,28 @@ class SnipeTranslator extends Translator {
); );
} }
public function get($key, array $replace = [], $locale = null, $fallback = true)
{
$modified_locale = $locale;
$changed_fallback = false;
$previous_fallback = $this->fallback;
// 'legacy' translation directories tend to be two-char ('en'), not 5-char ('en-US').
// Here we try our best to handle that.
foreach (self::$legacy_translation_namespaces as $namespace) {
if (preg_match("/^$namespace/", $key)) {
$modified_locale = Helper::mapBackToLegacyLocale($locale);
$changed_fallback = true;
$this->fallback = 'en'; //TODO - should this be 'env-able'? Or do we just put our foot down and say 'en'?
break;
}
}
$result = parent::get($key, $replace, $modified_locale, $fallback);
if ($changed_fallback) {
$this->fallback = $previous_fallback;
}
return $result;
}
} }

View File

@@ -54,7 +54,7 @@ class Label implements View
$pdf = new TCPDF( $pdf = new TCPDF(
$template->getOrientation(), $template->getOrientation(),
$template->getUnit(), $template->getUnit(),
[ $template->getWidth(), $template->getHeight() ] [0 => $template->getWidth(), 1 => $template->getHeight(), 'Rotate' => $template->getRotation()]
); );
// Reset parameters // Reset parameters

View File

@@ -49,7 +49,7 @@
"laravelcollective/html": "^6.2", "laravelcollective/html": "^6.2",
"league/csv": "^9.7", "league/csv": "^9.7",
"league/flysystem-aws-s3-v3": "^3.0", "league/flysystem-aws-s3-v3": "^3.0",
"livewire/livewire": "^2.4", "livewire/livewire": "^3.5",
"neitanod/forceutf8": "^2.0", "neitanod/forceutf8": "^2.0",
"nesbot/carbon": "^2.32", "nesbot/carbon": "^2.32",
"nunomaduro/collision": "^6.1", "nunomaduro/collision": "^6.1",

37
composer.lock generated
View File

@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"content-hash": "1cda72f240f69b641adfb69041ebdf17", "content-hash": "51e716db4ccd70bf942062789f7303ad",
"packages": [ "packages": [
{ {
"name": "alek13/slack", "name": "alek13/slack",
@@ -4454,34 +4454,37 @@
}, },
{ {
"name": "livewire/livewire", "name": "livewire/livewire",
"version": "v2.12.6", "version": "v3.5.1",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/livewire/livewire.git", "url": "https://github.com/livewire/livewire.git",
"reference": "7d3a57b3193299cf1a0639a3935c696f4da2cf92" "reference": "da044261bb5c5449397f18fda3409f14acf47c0a"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/livewire/livewire/zipball/7d3a57b3193299cf1a0639a3935c696f4da2cf92", "url": "https://api.github.com/repos/livewire/livewire/zipball/da044261bb5c5449397f18fda3409f14acf47c0a",
"reference": "7d3a57b3193299cf1a0639a3935c696f4da2cf92", "reference": "da044261bb5c5449397f18fda3409f14acf47c0a",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"illuminate/database": "^7.0|^8.0|^9.0|^10.0", "illuminate/database": "^10.0|^11.0",
"illuminate/support": "^7.0|^8.0|^9.0|^10.0", "illuminate/routing": "^10.0|^11.0",
"illuminate/validation": "^7.0|^8.0|^9.0|^10.0", "illuminate/support": "^10.0|^11.0",
"illuminate/validation": "^10.0|^11.0",
"league/mime-type-detection": "^1.9", "league/mime-type-detection": "^1.9",
"php": "^7.2.5|^8.0", "php": "^8.1",
"symfony/http-kernel": "^5.0|^6.0" "symfony/console": "^6.0|^7.0",
"symfony/http-kernel": "^6.2|^7.0"
}, },
"require-dev": { "require-dev": {
"calebporzio/sushi": "^2.1", "calebporzio/sushi": "^2.1",
"laravel/framework": "^7.0|^8.0|^9.0|^10.0", "laravel/framework": "^10.15.0|^11.0",
"laravel/prompts": "^0.1.6",
"mockery/mockery": "^1.3.1", "mockery/mockery": "^1.3.1",
"orchestra/testbench": "^5.0|^6.0|^7.0|^8.0", "orchestra/testbench": "^8.21.0|^9.0",
"orchestra/testbench-dusk": "^5.2|^6.0|^7.0|^8.0", "orchestra/testbench-dusk": "^8.24|^9.1",
"phpunit/phpunit": "^8.4|^9.0", "phpunit/phpunit": "^10.4",
"psy/psysh": "@stable" "psy/psysh": "^0.11.22|^0.12"
}, },
"type": "library", "type": "library",
"extra": { "extra": {
@@ -4515,7 +4518,7 @@
"description": "A front-end framework for Laravel.", "description": "A front-end framework for Laravel.",
"support": { "support": {
"issues": "https://github.com/livewire/livewire/issues", "issues": "https://github.com/livewire/livewire/issues",
"source": "https://github.com/livewire/livewire/tree/v2.12.6" "source": "https://github.com/livewire/livewire/tree/v3.5.1"
}, },
"funding": [ "funding": [
{ {
@@ -4523,7 +4526,7 @@
"type": "github" "type": "github"
} }
], ],
"time": "2023-08-11T04:02:34+00:00" "time": "2024-06-18T11:10:42+00:00"
}, },
{ {
"name": "masterminds/html5", "name": "masterminds/html5",

View File

@@ -112,7 +112,7 @@ return [
| |
*/ */
'fallback_locale' => env('FALLBACK_APP_LOCALE', 'en'), 'fallback_locale' => env('FALLBACK_APP_LOCALE', 'en-US'),
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------

View File

@@ -3,156 +3,158 @@
return [ return [
/* /*
|-------------------------------------------------------------------------- |---------------------------------------------------------------------------
| Class Namespace | Class Namespace
|-------------------------------------------------------------------------- |---------------------------------------------------------------------------
| |
| This value sets the root namespace for Livewire component classes in | This value sets the root class namespace for Livewire component classes in
| your application. This value affects component auto-discovery and | your application. This value will change where component auto-discovery
| any Livewire file helper commands, like `artisan make:livewire`. | finds components. It's also referenced by the file creation commands.
|
| After changing this item, run: `php artisan livewire:discover`.
| |
*/ */
'class_namespace' => 'App\\Http\\Livewire', 'class_namespace' => 'App\\Livewire',
/* /*
|-------------------------------------------------------------------------- |---------------------------------------------------------------------------
| View Path | View Path
|-------------------------------------------------------------------------- |---------------------------------------------------------------------------
| |
| This value sets the path for Livewire component views. This affects | This value is used to specify where Livewire component Blade templates are
| file manipulation helper commands like `artisan make:livewire`. | stored when running file creation commands like `artisan make:livewire`.
| It is also used if you choose to omit a component's render() method.
| |
*/ */
'view_path' => resource_path('views/livewire'), 'view_path' => resource_path('views/livewire'),
/* /*
|-------------------------------------------------------------------------- |---------------------------------------------------------------------------
| Layout | Layout
|-------------------------------------------------------------------------- |---------------------------------------------------------------------------
| The default layout view that will be used when rendering a component via | The view that will be used as the layout when rendering a single component
| Route::get('/some-endpoint', SomeComponent::class);. In this case the | as an entire page via `Route::get('/post/create', CreatePost::class);`.
| the view returned by SomeComponent will be wrapped in "layouts.app" | In this case, the view returned by CreatePost will render into $slot.
| |
*/ */
'layout' => 'layouts.app', 'layout' => 'components.layouts.app',
/* /*
|-------------------------------------------------------------------------- |---------------------------------------------------------------------------
| Livewire Assets URL | Lazy Loading Placeholder
|-------------------------------------------------------------------------- |---------------------------------------------------------------------------
| | Livewire allows you to lazy load components that would otherwise slow down
| This value sets the path to Livewire JavaScript assets, for cases where | the initial page load. Every component can have a custom placeholder or
| your app's domain root is not the correct path. By default, Livewire | you can define the default placeholder view for all components below.
| will load its JavaScript assets from the app's "relative root".
|
| Examples: "/assets", "myurl.com/app".
| |
*/ */
'asset_url' => env('APP_URL'), 'lazy_placeholder' => null,
/* /*
|-------------------------------------------------------------------------- |---------------------------------------------------------------------------
| Livewire App URL | Temporary File Uploads
|-------------------------------------------------------------------------- |---------------------------------------------------------------------------
|
| This value should be used if livewire assets are served from CDN.
| Livewire will communicate with an app through this url.
|
| Examples: "https://my-app.com", "myurl.com/app".
|
*/
'app_url' => null,
/*
|--------------------------------------------------------------------------
| Livewire Endpoint Middleware Group
|--------------------------------------------------------------------------
|
| This value sets the middleware group that will be applied to the main
| Livewire "message" endpoint (the endpoint that gets hit everytime
| a Livewire component updates). It is set to "web" by default.
|
*/
'middleware_group' => 'web',
/*
|--------------------------------------------------------------------------
| Livewire Temporary File Uploads Endpoint Configuration
|--------------------------------------------------------------------------
| |
| Livewire handles file uploads by storing uploads in a temporary directory | Livewire handles file uploads by storing uploads in a temporary directory
| before the file is validated and stored permanently. All file uploads | before the file is stored permanently. All file uploads are directed to
| are directed to a global endpoint for temporary storage. The config | a global endpoint for temporary storage. You may configure this below:
| items below are used for customizing the way the endpoint works.
| |
*/ */
'temporary_file_upload' => [ 'temporary_file_upload' => [
'disk' => env('PRIVATE_FILESYSTEM_DISK', 'local'), // Example: 'local', 's3' Default: 'default' 'disk' => env('PRIVATE_FILESYSTEM_DISK', 'local'), // Example: 'local', 's3' Default: 'default'
'rules' => null, // Example: ['file', 'mimes:png,jpg'] Default: ['required', 'file', 'max:12288'] (12MB) 'rules' => null, // Example: ['file', 'mimes:png,jpg'] | Default: ['required', 'file', 'max:12288'] (12MB)
'directory' => null, // Example: 'tmp' Default 'livewire-tmp' 'directory' => null, // Example: 'tmp' | Default: 'livewire-tmp'
'middleware' => null, // Example: 'throttle:5,1' Default: 'throttle:60,1' 'middleware' => null, // Example: 'throttle:5,1' | Default: 'throttle:60,1'
'preview_mimes' => [ // Supported file types for temporary pre-signed file URLs. 'preview_mimes' => [ // Supported file types for temporary pre-signed file URLs...
'png', 'gif', 'bmp', 'svg', 'wav', 'mp4', 'png', 'gif', 'bmp', 'svg', 'wav', 'mp4',
'mov', 'avi', 'wmv', 'mp3', 'm4a', 'mov', 'avi', 'wmv', 'mp3', 'm4a',
'jpg', 'jpeg', 'mpga', 'webp', 'wma', 'jpg', 'jpeg', 'mpga', 'webp', 'wma',
], ],
'max_upload_time' => 5, // Max duration (in minutes) before an upload gets invalidated. 'max_upload_time' => 5, // Max duration (in minutes) before an upload is invalidated...
'cleanup' => true, // Should cleanup temporary uploads older than 24 hrs...
], ],
/* /*
|-------------------------------------------------------------------------- |---------------------------------------------------------------------------
| Manifest File Path
|--------------------------------------------------------------------------
|
| This value sets the path to the Livewire manifest file.
| The default should work for most cases (which is
| "<app_root>/bootstrap/cache/livewire-components.php"), but for specific
| cases like when hosting on Laravel Vapor, it could be set to a different value.
|
| Example: for Laravel Vapor, it would be "/tmp/storage/bootstrap/cache/livewire-components.php".
|
*/
'manifest_path' => null,
/*
|--------------------------------------------------------------------------
| Back Button Cache
|--------------------------------------------------------------------------
|
| This value determines whether the back button cache will be used on pages
| that contain Livewire. By disabling back button cache, it ensures that
| the back button shows the correct state of components, instead of
| potentially stale, cached data.
|
| Setting it to "false" (default) will disable back button cache.
|
*/
'back_button_cache' => false,
/*
|--------------------------------------------------------------------------
| Render On Redirect | Render On Redirect
|-------------------------------------------------------------------------- |---------------------------------------------------------------------------
| |
| This value determines whether Livewire will render before it's redirected | This value determines if Livewire will run a component's `render()` method
| or not. Setting it to "false" (default) will mean the render method is | after a redirect has been triggered using something like `redirect(...)`
| skipped when redirecting. And "true" will mean the render method is | Setting this to true will render the view once more before redirecting
| run before redirecting. Browsers bfcache can store a potentially
| stale view if render is skipped on redirect.
| |
*/ */
'render_on_redirect' => false, 'render_on_redirect' => false,
/*
|---------------------------------------------------------------------------
| Eloquent Model Binding
|---------------------------------------------------------------------------
|
| Previous versions of Livewire supported binding directly to eloquent model
| properties using wire:model by default. However, this behavior has been
| deemed too "magical" and has therefore been put under a feature flag.
|
*/
'legacy_model_binding' => true,
/*
|---------------------------------------------------------------------------
| Auto-inject Frontend Assets
|---------------------------------------------------------------------------
|
| By default, Livewire automatically injects its JavaScript and CSS into the
| <head> and <body> of pages containing Livewire components. By disabling
| this behavior, you need to use @livewireStyles and @livewireScripts.
|
*/
'inject_assets' => true,
/*
|---------------------------------------------------------------------------
| Navigate (SPA mode)
|---------------------------------------------------------------------------
|
| By adding `wire:navigate` to links in your Livewire application, Livewire
| will prevent the default link handling and instead request those pages
| via AJAX, creating an SPA-like effect. Configure this behavior here.
|
*/
'navigate' => [
'show_progress_bar' => true,
'progress_bar_color' => '#2299dd',
],
/*
|---------------------------------------------------------------------------
| HTML Morph Markers
|---------------------------------------------------------------------------
|
| Livewire intelligently "morphs" existing HTML into the newly rendered HTML
| after each update. To make this process more reliable, Livewire injects
| "markers" into the rendered Blade surrounding @if, @class & @foreach.
|
*/
'inject_morph_markers' => true,
/*
|---------------------------------------------------------------------------
| Pagination Theme
|---------------------------------------------------------------------------
|
| When enabling Livewire's pagination feature by using the `WithPagination`
| trait, Livewire will use Tailwind templates to render pagination views
| on the page. If you want Bootstrap CSS, you can specify: "bootstrap"
|
*/
'pagination_theme' => 'tailwind',
]; ];

View File

@@ -1,10 +1,10 @@
<?php <?php
return array ( return array (
'app_version' => 'v7.0.6', 'app_version' => 'v7.0.7',
'full_app_version' => 'v7.0.6 - build 14112-ge1a6b441d', 'full_app_version' => 'v7.0.7 - build 14172-ge50296870',
'build_version' => '14112', 'build_version' => '14172',
'prerelease_version' => '', 'prerelease_version' => '',
'hash_version' => 'ge1a6b441d', 'hash_version' => 'ge50296870',
'full_hash' => 'v7.0.6-6-ge1a6b441d', 'full_hash' => 'v7.0.7-53-ge50296870',
'branch' => 'develop', 'branch' => 'develop',
); );

View File

@@ -105,4 +105,64 @@ class ActionlogFactory extends Factory
]; ];
}); });
} }
public function filesUploaded()
{
return $this->state(function () {
return [
'created_at' => $this->faker->dateTimeBetween('-1 years', 'now', date_default_timezone_get()),
'action_type' => 'uploaded',
'item_type' => User::class,
'filename' => $this->faker->unixTime('now'),
];
});
}
public function acceptedSignature()
{
return $this->state(function () {
$asset = Asset::factory()->create();
return [
'created_at' => $this->faker->dateTimeBetween('-1 years', 'now', date_default_timezone_get()),
'action_type' => 'accepted',
'item_id' => $asset->id,
'item_type' => Asset::class,
'target_type' => User::class,
'accept_signature' => $this->faker->unixTime('now'),
];
});
}
public function acceptedEula()
{
return $this->state(function () {
$asset = Asset::factory()->create();
return [
'created_at' => $this->faker->dateTimeBetween('-1 years', 'now', date_default_timezone_get()),
'action_type' => 'accepted',
'item_id' => $asset->id,
'item_type' => Asset::class,
'target_type' => User::class,
'filename' => $this->faker->unixTime('now'),
];
});
}
public function userUpdated()
{
return $this->state(function () {
return [
'created_at' => $this->faker->dateTimeBetween('-1 years', 'now', date_default_timezone_get()),
'action_type' => 'update',
'target_type' => User::class,
'item_type' => User::class,
];
});
}
} }

View File

@@ -7,6 +7,7 @@ use App\Models\Company;
use App\Models\Consumable; use App\Models\Consumable;
use App\Models\Manufacturer; use App\Models\Manufacturer;
use App\Models\User; use App\Models\User;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Factories\Factory; use Illuminate\Database\Eloquent\Factories\Factory;
use App\Models\Supplier; use App\Models\Supplier;
@@ -116,4 +117,16 @@ class ConsumableFactory extends Factory
$consumable->category->update(['require_acceptance' => 1]); $consumable->category->update(['require_acceptance' => 1]);
}); });
} }
public function checkedOutToUser(User $user = null)
{
return $this->afterCreating(function (Consumable $consumable) use ($user) {
$consumable->users()->attach($consumable->id, [
'consumable_id' => $consumable->id,
'created_at' => Carbon::now(),
'user_id' => User::factory()->create()->id,
'assigned_to' => $user->id ?? User::factory()->create()->id,
]);
});
}
} }

View File

@@ -0,0 +1,28 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('settings', function (Blueprint $table) {
$table->string('default_avatar')->after('favicon')->default('default.png')->nullable();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('settings', function (Blueprint $table) {
$table->dropColumn('default_avatar');
});
}
};

47
package-lock.json generated
View File

@@ -10,7 +10,6 @@
"acorn-import-assertions": "^1.9.0", "acorn-import-assertions": "^1.9.0",
"admin-lte": "^2.4.18", "admin-lte": "^2.4.18",
"ajv": "^6.12.6", "ajv": "^6.12.6",
"alpinejs": "^3.13.10",
"blueimp-file-upload": "^9.34.0", "blueimp-file-upload": "^9.34.0",
"bootstrap": "^3.4.1", "bootstrap": "^3.4.1",
"bootstrap-colorpicker": "^2.5.3", "bootstrap-colorpicker": "^2.5.3",
@@ -37,7 +36,7 @@
"signature_pad": "^4.2.0", "signature_pad": "^4.2.0",
"tableexport.jquery.plugin": "1.30.0", "tableexport.jquery.plugin": "1.30.0",
"tether": "^1.4.0", "tether": "^1.4.0",
"webpack": "^5.90.2" "webpack": "^5.92.0"
}, },
"devDependencies": { "devDependencies": {
"all-contributors-cli": "^6.26.1", "all-contributors-cli": "^6.26.1",
@@ -2312,17 +2311,6 @@
"@types/node": "*" "@types/node": "*"
} }
}, },
"node_modules/@vue/reactivity": {
"version": "3.1.5",
"license": "MIT",
"dependencies": {
"@vue/shared": "3.1.5"
}
},
"node_modules/@vue/shared": {
"version": "3.1.5",
"license": "MIT"
},
"node_modules/@webassemblyjs/ast": { "node_modules/@webassemblyjs/ast": {
"version": "1.12.1", "version": "1.12.1",
"license": "MIT", "license": "MIT",
@@ -2509,6 +2497,14 @@
"acorn": "^8" "acorn": "^8"
} }
}, },
"node_modules/acorn-import-attributes": {
"version": "1.9.5",
"resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz",
"integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==",
"peerDependencies": {
"acorn": "^8"
}
},
"node_modules/acorn-node": { "node_modules/acorn-node": {
"version": "1.8.2", "version": "1.8.2",
"license": "Apache-2.0", "license": "Apache-2.0",
@@ -2662,14 +2658,6 @@
"prettier": "^2" "prettier": "^2"
} }
}, },
"node_modules/alpinejs": {
"version": "3.13.10",
"resolved": "https://registry.npmjs.org/alpinejs/-/alpinejs-3.13.10.tgz",
"integrity": "sha512-86RB307VWICex0vG15Eq0x058cNNsvS57ohrjN6n/TJAVSFV+zXOK/E34nNHDHc6Poq+yTNCLqEzPqEkRBTMRQ==",
"dependencies": {
"@vue/reactivity": "~3.1.1"
}
},
"node_modules/ansi-escapes": { "node_modules/ansi-escapes": {
"version": "4.3.2", "version": "4.3.2",
"dev": true, "dev": true,
@@ -5311,8 +5299,9 @@
} }
}, },
"node_modules/enhanced-resolve": { "node_modules/enhanced-resolve": {
"version": "5.16.0", "version": "5.17.0",
"license": "MIT", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz",
"integrity": "sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==",
"dependencies": { "dependencies": {
"graceful-fs": "^4.2.4", "graceful-fs": "^4.2.4",
"tapable": "^2.2.0" "tapable": "^2.2.0"
@@ -10414,7 +10403,8 @@
}, },
"node_modules/tapable": { "node_modules/tapable": {
"version": "2.2.1", "version": "2.2.1",
"license": "MIT", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
"integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
"engines": { "engines": {
"node": ">=6" "node": ">=6"
} }
@@ -10877,8 +10867,9 @@
"license": "BSD-2-Clause" "license": "BSD-2-Clause"
}, },
"node_modules/webpack": { "node_modules/webpack": {
"version": "5.91.0", "version": "5.92.1",
"license": "MIT", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.92.1.tgz",
"integrity": "sha512-JECQ7IwJb+7fgUFBlrJzbyu3GEuNBcdqr1LD7IbSzwkSmIevTm8PF+wej3Oxuz/JFBUZ6O1o43zsPkwm1C4TmA==",
"dependencies": { "dependencies": {
"@types/eslint-scope": "^3.7.3", "@types/eslint-scope": "^3.7.3",
"@types/estree": "^1.0.5", "@types/estree": "^1.0.5",
@@ -10886,10 +10877,10 @@
"@webassemblyjs/wasm-edit": "^1.12.1", "@webassemblyjs/wasm-edit": "^1.12.1",
"@webassemblyjs/wasm-parser": "^1.12.1", "@webassemblyjs/wasm-parser": "^1.12.1",
"acorn": "^8.7.1", "acorn": "^8.7.1",
"acorn-import-assertions": "^1.9.0", "acorn-import-attributes": "^1.9.5",
"browserslist": "^4.21.10", "browserslist": "^4.21.10",
"chrome-trace-event": "^1.0.2", "chrome-trace-event": "^1.0.2",
"enhanced-resolve": "^5.16.0", "enhanced-resolve": "^5.17.0",
"es-module-lexer": "^1.2.1", "es-module-lexer": "^1.2.1",
"eslint-scope": "5.1.1", "eslint-scope": "5.1.1",
"events": "^3.2.0", "events": "^3.2.0",

View File

@@ -30,7 +30,6 @@
"acorn-import-assertions": "^1.9.0", "acorn-import-assertions": "^1.9.0",
"admin-lte": "^2.4.18", "admin-lte": "^2.4.18",
"ajv": "^6.12.6", "ajv": "^6.12.6",
"alpinejs": "^3.13.10",
"blueimp-file-upload": "^9.34.0", "blueimp-file-upload": "^9.34.0",
"bootstrap": "^3.4.1", "bootstrap": "^3.4.1",
"bootstrap-colorpicker": "^2.5.3", "bootstrap-colorpicker": "^2.5.3",
@@ -57,6 +56,6 @@
"signature_pad": "^4.2.0", "signature_pad": "^4.2.0",
"tableexport.jquery.plugin": "1.30.0", "tableexport.jquery.plugin": "1.30.0",
"tether": "^1.4.0", "tether": "^1.4.0",
"webpack": "^5.90.2" "webpack": "^5.92.0"
} }
} }

File diff suppressed because one or more lines are too long

View File

@@ -1,6 +1,6 @@
/** /**
* @author zhixin wen <wenzhixin2010@gmail.com> * @author zhixin wen <wenzhixin2010@gmail.com>
* version: 1.22.6 * version: 1.22.5
* https://github.com/wenzhixin/bootstrap-table/ * https://github.com/wenzhixin/bootstrap-table/
*/ */
/* stylelint-disable annotation-no-unknown, max-line-length */ /* stylelint-disable annotation-no-unknown, max-line-length */

View File

@@ -586,22 +586,27 @@ function htmlEntities(str) {
* *
* 1. Set the class of your select2 elements to 'livewire-select2'). * 1. Set the class of your select2 elements to 'livewire-select2').
* 2. Name your element to match a property in your Livewire component * 2. Name your element to match a property in your Livewire component
* 3. Add an attribute called 'data-livewire-component' that points to $_instance->id (via `{{ }}` if you're in a blade, * 3. Add an attribute called 'data-livewire-component' that points to $this->getId() (via `{{ }}` if you're in a blade,
* or just $_instance->id if not). * or just $this->getId() if not).
*/ */
$(function () { document.addEventListener('livewire:init', function () {
$('.livewire-select2').select2(); $('.livewire-select2').select2();
$(document).on('select2:select', '.livewire-select2', function (event) { $(document).on('select2:select', '.livewire-select2', function (event) {
var target = $(event.target); var target = $(event.target);
if (!event.target.name || !target.data('livewire-component')) { if (!event.target.name || !target.data('livewire-component')) {
console.error("You need to set both name (which should match a Livewire property) and data-livewire-component on your Livewire-ed select2 elements!"); console.error("You need to set both name (which should match a Livewire property) and data-livewire-component on your Livewire-ed select2 elements!");
console.error("For data-livewire-component, you probably want to use $_instance->id or {{ $_instance->id }}, as appropriate"); console.error("For data-livewire-component, you probably want to use $this->getId() or {{ $this->getId() }}, as appropriate");
return false; return false;
} }
window.livewire.find(target.data('livewire-component')).set(event.target.name, this.options[this.selectedIndex].value); Livewire.find(target.data('livewire-component')).set(event.target.name, this.options[this.selectedIndex].value);
}); });
window.livewire.hook('message.processed', function (el, component) { Livewire.hook('request', function (_ref) {
$('.livewire-select2').select2(); var succeed = _ref.succeed;
succeed(function () {
queueMicrotask(function () {
$('.livewire-select2').select2();
});
});
}); });
}); });

19
public/js/dist/all.js vendored
View File

@@ -59777,22 +59777,27 @@ function htmlEntities(str) {
* *
* 1. Set the class of your select2 elements to 'livewire-select2'). * 1. Set the class of your select2 elements to 'livewire-select2').
* 2. Name your element to match a property in your Livewire component * 2. Name your element to match a property in your Livewire component
* 3. Add an attribute called 'data-livewire-component' that points to $_instance->id (via `{{ }}` if you're in a blade, * 3. Add an attribute called 'data-livewire-component' that points to $this->getId() (via `{{ }}` if you're in a blade,
* or just $_instance->id if not). * or just $this->getId() if not).
*/ */
$(function () { document.addEventListener('livewire:init', function () {
$('.livewire-select2').select2(); $('.livewire-select2').select2();
$(document).on('select2:select', '.livewire-select2', function (event) { $(document).on('select2:select', '.livewire-select2', function (event) {
var target = $(event.target); var target = $(event.target);
if (!event.target.name || !target.data('livewire-component')) { if (!event.target.name || !target.data('livewire-component')) {
console.error("You need to set both name (which should match a Livewire property) and data-livewire-component on your Livewire-ed select2 elements!"); console.error("You need to set both name (which should match a Livewire property) and data-livewire-component on your Livewire-ed select2 elements!");
console.error("For data-livewire-component, you probably want to use $_instance->id or {{ $_instance->id }}, as appropriate"); console.error("For data-livewire-component, you probably want to use $this->getId() or {{ $this->getId() }}, as appropriate");
return false; return false;
} }
window.livewire.find(target.data('livewire-component')).set(event.target.name, this.options[this.selectedIndex].value); Livewire.find(target.data('livewire-component')).set(event.target.name, this.options[this.selectedIndex].value);
}); });
window.livewire.hook('message.processed', function (el, component) { Livewire.hook('request', function (_ref) {
$('.livewire-select2').select2(); var succeed = _ref.succeed;
succeed(function () {
queueMicrotask(function () {
$('.livewire-select2').select2();
});
});
}); });
}); });

View File

@@ -5285,7 +5285,7 @@
} }
}; };
var VERSION = '1.22.6'; var VERSION = '1.22.5';
var bootstrapVersion = Utils.getBootstrapVersion(); var bootstrapVersion = Utils.getBootstrapVersion();
var CONSTANTS = { var CONSTANTS = {
3: { 3: {
@@ -16840,7 +16840,7 @@
if (!this.options.cookie) { if (!this.options.cookie) {
return; return;
} }
UtilsCookie.setCookie(this, UtilsCookie.cookieIds.pageList, this.options.pageSize === this.options.formatAllRows() ? 'all' : this.options.pageSize); UtilsCookie.setCookie(this, UtilsCookie.cookieIds.pageList, this.options.pageSize);
UtilsCookie.setCookie(this, UtilsCookie.cookieIds.pageNumber, this.options.pageNumber); UtilsCookie.setCookie(this, UtilsCookie.cookieIds.pageNumber, this.options.pageNumber);
} }
}, { }, {
@@ -17013,7 +17013,7 @@
// pageNumber // pageNumber
this.options.pageNumber = pageNumberCookie ? +pageNumberCookie : this.options.pageNumber; this.options.pageNumber = pageNumberCookie ? +pageNumberCookie : this.options.pageNumber;
// pageSize // pageSize
this.options.pageSize = pageListCookie ? pageListCookie === 'all' ? this.options.formatAllRows() : +pageListCookie : this.options.pageSize; this.options.pageSize = pageListCookie ? pageListCookie === this.options.formatAllRows() ? pageListCookie : +pageListCookie : this.options.pageSize;
// searchText // searchText
if (UtilsCookie.isCookieEnabled(this, UtilsCookie.cookieIds.searchText) && this.options.searchText === '') { if (UtilsCookie.isCookieEnabled(this, UtilsCookie.cookieIds.searchText) && this.options.searchText === '') {
this.options.searchText = searchTextCookie ? searchTextCookie : ''; this.options.searchText = searchTextCookie ? searchTextCookie : '';
@@ -27350,7 +27350,7 @@ if(xr(e,"index.xml"))throw new Error("Unsupported NUMBERS 09 file");throw new Er
}, },
classes: {}, classes: {},
html: { html: {
modal: "\n <div id=\"avdSearchModal_%s\" class=\"modal fade\" tabindex=\"-1\" role=\"dialog\" aria-hidden=\"true\">\n <div class=\"modal-dialog modal-xs\">\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <button class=\"close toolbar-modal-close\" data-dismiss=\"modal\" aria-label=\"Close\">\n <span aria-hidden=\"true\">&times;</span>\n </button>\n <h4 class=\"modal-title toolbar-modal-title\"></h4>\n </div>\n <div class=\"modal-body toolbar-modal-body\"></div>\n <div class=\"modal-footer toolbar-modal-footer\">\n <button class=\"btn btn-%s toolbar-modal-close\"></button>\n </div>\n </div>\n </div>\n </div>\n " modal: "\n <div id=\"avdSearchModal_%s\" class=\"modal fade\" tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"mySmallModalLabel\" aria-hidden=\"true\">\n <div class=\"modal-dialog modal-xs\">\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Close\">\n <span aria-hidden=\"true\">&times;</span>\n </button>\n <h4 class=\"modal-title\">%s</h4>\n </div>\n <div class=\"modal-body modal-body-custom\">\n <div class=\"container-fluid\" id=\"avdSearchModalContent_%s\"\n style=\"padding-right: 0px; padding-left: 0px;\" >\n </div>\n </div>\n <div class=\"modal-footer\">\n <button type=\"button\" id=\"btnCloseAvd_%s\" class=\"btn btn-%s\">%s</button>\n </div>\n </div>\n </div>\n </div>\n "
} }
}, },
bootstrap4: { bootstrap4: {
@@ -27359,7 +27359,7 @@ if(xr(e,"index.xml"))throw new Error("Unsupported NUMBERS 09 file");throw new Er
}, },
classes: {}, classes: {},
html: { html: {
modal: "\n <div id=\"avdSearchModal_%s\" class=\"modal fade\" tabindex=\"-1\" role=\"dialog\" aria-hidden=\"true\">\n <div class=\"modal-dialog modal-xs\">\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <h4 class=\"modal-title toolbar-modal-title\"></h4>\n <button class=\"close toolbar-modal-close\" data-dismiss=\"modal\" aria-label=\"Close\">\n <span aria-hidden=\"true\">&times;</span>\n </button>\n </div>\n <div class=\"modal-body toolbar-modal-body\"></div>\n <div class=\"modal-footer toolbar-modal-footer\">\n <button class=\"btn btn-%s toolbar-modal-close\"></button>\n </div>\n </div>\n </div>\n </div>\n " modal: "\n <div id=\"avdSearchModal_%s\" class=\"modal fade\" tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"mySmallModalLabel\" aria-hidden=\"true\">\n <div class=\"modal-dialog modal-xs\">\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <h4 class=\"modal-title\">%s</h4>\n <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Close\">\n <span aria-hidden=\"true\">&times;</span>\n </button>\n </div>\n <div class=\"modal-body modal-body-custom\">\n <div class=\"container-fluid\" id=\"avdSearchModalContent_%s\"\n style=\"padding-right: 0; padding-left: 0;\" >\n </div>\n </div>\n <div class=\"modal-footer\">\n <button type=\"button\" id=\"btnCloseAvd_%s\" class=\"btn btn-%s\">%s</button>\n </div>\n </div>\n </div>\n </div>\n "
} }
}, },
bootstrap5: { bootstrap5: {
@@ -27370,7 +27370,7 @@ if(xr(e,"index.xml"))throw new Error("Unsupported NUMBERS 09 file");throw new Er
formGroup: 'mb-3' formGroup: 'mb-3'
}, },
html: { html: {
modal: "\n <div id=\"avdSearchModal_%s\" class=\"modal fade\" tabindex=\"-1\" aria-hidden=\"true\">\n <div class=\"modal-dialog modal-xs\">\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <h5 class=\"modal-title toolbar-modal-title\"></h5>\n <button class=\"btn-close toolbar-modal-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"></button>\n </div>\n <div class=\"modal-body toolbar-modal-body\"></div>\n <div class=\"modal-footer toolbar-modal-footer\">\n <button class=\"btn btn-%s toolbar-modal-close\"></button>\n </div>\n </div>\n </div>\n </div>\n " modal: "\n <div id=\"avdSearchModal_%s\" class=\"modal fade\" tabindex=\"-1\" aria-labelledby=\"mySmallModalLabel\" aria-hidden=\"true\">\n <div class=\"modal-dialog modal-xs\">\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">%s</h5>\n <button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"></button>\n </div>\n <div class=\"modal-body modal-body-custom\">\n <div class=\"container-fluid\" id=\"avdSearchModalContent_%s\"\n style=\"padding-right: 0; padding-left: 0;\" >\n </div>\n </div>\n <div class=\"modal-footer\">\n <button type=\"button\" id=\"btnCloseAvd_%s\" class=\"btn btn-%s\">%s</button>\n </div>\n </div>\n </div>\n </div>\n "
} }
}, },
bulma: { bulma: {
@@ -27379,7 +27379,7 @@ if(xr(e,"index.xml"))throw new Error("Unsupported NUMBERS 09 file");throw new Er
}, },
classes: {}, classes: {},
html: { html: {
modal: "\n <div class=\"modal\" id=\"avdSearchModal_%s\">\n <div class=\"modal-background\"></div>\n <div class=\"modal-card\">\n <header class=\"modal-card-head\">\n <p class=\"modal-card-title toolbar-modal-title\"></p>\n <button class=\"delete toolbar-modal-close\"></button>\n </header>\n <section class=\"modal-card-body toolbar-modal-body\"></section>\n <footer class=\"modal-card-foot toolbar-modal-footer\">\n <button class=\"button button-%s toolbar-modal-close\"></button>\n </footer>\n </div>\n </div>\n " modal: "\n <div class=\"modal\" id=\"avdSearchModal_%s\">\n <div class=\"modal-background\"></div>\n <div class=\"modal-card\">\n <header class=\"modal-card-head\">\n <p class=\"modal-card-title\">%s</p>\n <button class=\"delete\" aria-label=\"close\"></button>\n </header>\n <section class=\"modal-card-body\" id=\"avdSearchModalContent_%s\"></section>\n <footer class=\"modal-card-foot\">\n <button class=\"button\" id=\"btnCloseAvd_%s\" data-close=\"btn btn-%s\">%s</button>\n </footer>\n </div>\n </div>\n "
} }
}, },
foundation: { foundation: {
@@ -27388,7 +27388,7 @@ if(xr(e,"index.xml"))throw new Error("Unsupported NUMBERS 09 file");throw new Er
}, },
classes: {}, classes: {},
html: { html: {
modal: "\n <div class=\"reveal\" id=\"avdSearchModal_%s\" data-reveal>\n <h1 class=\"toolbar-modal-title\"></h1>\n <div class=\"toolbar-modal-body\"></div>\n <button class=\"close-button toolbar-modal-close\" data-close aria-label=\"Close modal\">\n <span aria-hidden=\"true\">&times;</span>\n </button>\n <div class=\"toolbar-modal-footer\">\n <button class=\"button button-%s toolbar-modal-close\"></button>\n </div>\n </div>\n " modal: "\n <div class=\"reveal\" id=\"avdSearchModal_%s\" data-reveal>\n <h1>%s</h1>\n <div id=\"avdSearchModalContent_%s\">\n\n </div>\n <button class=\"close-button\" data-close aria-label=\"Close modal\" type=\"button\">\n <span aria-hidden=\"true\">&times;</span>\n </button>\n\n <button id=\"btnCloseAvd_%s\" class=\"%s\" type=\"button\">%s</button>\n </div>\n "
} }
}, },
materialize: { materialize: {
@@ -27397,7 +27397,7 @@ if(xr(e,"index.xml"))throw new Error("Unsupported NUMBERS 09 file");throw new Er
}, },
classes: {}, classes: {},
html: { html: {
modal: "\n <div id=\"avdSearchModal_%s\" class=\"modal\">\n <div class=\"modal-content\">\n <h4 class=\"toolbar-modal-title\"></h4>\n <div class=\"toolbar-modal-body\"></div>\n </div>\n <div class=\"modal-footer toolbar-modal-footer\">\n <a href=\"javascript:void(0)\" class=\"modal-close waves-effect waves-green btn-flat btn-%s toolbar-modal-close\"></a>\n </div>\n </div>\n " modal: "\n <div id=\"avdSearchModal_%s\" class=\"modal\">\n <div class=\"modal-content\">\n <h4>%s</h4>\n <div id=\"avdSearchModalContent_%s\">\n\n </div>\n </div>\n <div class=\"modal-footer\">\n <a href=\"javascript:void(0)\"\" id=\"btnCloseAvd_%s\" class=\"modal-close waves-effect waves-green btn-flat %s\">%s</a>\n </div>\n </div>\n "
} }
}, },
semantic: { semantic: {
@@ -27406,7 +27406,7 @@ if(xr(e,"index.xml"))throw new Error("Unsupported NUMBERS 09 file");throw new Er
}, },
classes: {}, classes: {},
html: { html: {
modal: "\n <div class=\"ui modal\" id=\"avdSearchModal_%s\">\n <i class=\"close icon toolbar-modal-close\"></i>\n <div class=\"header toolbar-modal-title\"\"></div>\n <div class=\"image content ui form toolbar-modal-body\"></div>\n <div class=\"actions toolbar-modal-footer\">\n <div class=\"ui black deny button button-%s toolbar-modal-close\"></div>\n </div>\n </div>\n " modal: "\n <div class=\"ui modal\" id=\"avdSearchModal_%s\">\n <i class=\"close icon\"></i>\n <div class=\"header\">\n %s\n </div>\n <div class=\"image content ui form\" id=\"avdSearchModalContent_%s\"></div>\n <div class=\"actions\">\n <div id=\"btnCloseAvd_%s\" class=\"ui black deny button %s\">%s</div>\n </div>\n </div>\n "
} }
} }
}[$$b.fn.bootstrapTable.theme]; }[$$b.fn.bootstrapTable.theme];
@@ -27444,91 +27444,101 @@ if(xr(e,"index.xml"))throw new Error("Unsupported NUMBERS 09 file");throw new Er
return _createClass(_class, [{ return _createClass(_class, [{
key: "initToolbar", key: "initToolbar",
value: function initToolbar() { value: function initToolbar() {
this.showToolbar = this.showToolbar || this.options.search && this.options.advancedSearch && this.options.idTable; var o = this.options;
if (this.showToolbar) { this.showToolbar = this.showToolbar || o.search && o.advancedSearch && o.idTable;
if (o.search && o.advancedSearch && o.idTable) {
this.buttons = Object.assign(this.buttons, { this.buttons = Object.assign(this.buttons, {
advancedSearch: { advancedSearch: {
text: this.options.formatAdvancedSearch(), text: this.options.formatAdvancedSearch(),
icon: this.options.icons.advancedSearchIcon, icon: this.options.icons.advancedSearchIcon,
event: this.showAdvancedSearch, event: this.showAvdSearch,
attributes: { attributes: {
'aria-label': this.options.formatAdvancedSearch(), 'aria-label': this.options.formatAdvancedSearch(),
title: this.options.formatAdvancedSearch() title: this.options.formatAdvancedSearch()
} }
} }
}); });
if (Utils.isEmptyObject(this.filterColumnsPartial)) {
this.filterColumnsPartial = {};
}
} }
_get(_getPrototypeOf(_class.prototype), "initToolbar", this).call(this); _get(_getPrototypeOf(_class.prototype), "initToolbar", this).call(this);
} }
}, { }, {
key: "showAdvancedSearch", key: "showAvdSearch",
value: function showAdvancedSearch() { value: function showAvdSearch() {
var _this = this; var _this = this;
this.$toolbarModal = $$b("#avdSearchModal_".concat(this.options.idTable)); var o = this.options;
if (this.$toolbarModal.length <= 0) { var modalSelector = "#avdSearchModal_".concat(o.idTable);
$$b('body').append(Utils.sprintf(theme.html.modal, this.options.idTable, this.options.buttonsClass)); if ($$b(modalSelector).length <= 0) {
this.$toolbarModal = $$b("#avdSearchModal_".concat(this.options.idTable)); $$b('body').append(Utils.sprintf(theme.html.modal, o.idTable, o.formatAdvancedSearch(), o.idTable, o.idTable, o.buttonsClass, o.formatAdvancedCloseButton()));
this.$toolbarModal.find('.toolbar-modal-close').off('click').on('click', function () { var timeoutId = 0;
return _this.hideToolbarModal(); $$b("#avdSearchModalContent_".concat(o.idTable)).append(this.createFormAvd().join(''));
$$b("#".concat(o.idForm)).off('keyup blur', 'input').on('keyup blur', 'input', function (e) {
if (o.sidePagination === 'server') {
_this.onColumnAdvancedSearch(e);
} else {
clearTimeout(timeoutId);
timeoutId = setTimeout(function () {
_this.onColumnAdvancedSearch(e);
}, o.searchTimeOut);
}
}); });
$$b("#btnCloseAvd_".concat(o.idTable)).click(function () {
return _this.hideModal();
});
if ($$b.fn.bootstrapTable.theme === 'bulma') {
$$b(modalSelector).find('.delete').off('click').on('click', function () {
return _this.hideModal();
});
}
this.showModal();
} else {
this.showModal();
} }
this.initToolbarModalBody();
this.showToolbarModal();
} }
}, { }, {
key: "initToolbarModalBody", key: "showModal",
value: function initToolbarModalBody() { value: function showModal() {
var _this2 = this; var modalSelector = "#avdSearchModal_".concat(this.options.idTable);
this.$toolbarModal.find('.toolbar-modal-title').html(this.options.formatAdvancedSearch()); if ($$b.inArray($$b.fn.bootstrapTable.theme, ['bootstrap3', 'bootstrap4']) !== -1) {
this.$toolbarModal.find('.toolbar-modal-footer .toolbar-modal-close').html(this.options.formatAdvancedCloseButton()); $$b(modalSelector).modal();
this.$toolbarModal.find('.toolbar-modal-body').html(this.createToolbarForm()).off('keyup blur', 'input').on('keyup blur', 'input', function (e) { } else if ($$b.fn.bootstrapTable.theme === 'bootstrap5') {
_this2.onColumnAdvancedSearch(e);
});
}
}, {
key: "showToolbarModal",
value: function showToolbarModal() {
var theme = $$b.fn.bootstrapTable.theme;
if (['bootstrap3', 'bootstrap4'].includes(theme)) {
this.$toolbarModal.modal();
} else if (theme === 'bootstrap5') {
if (!this.toolbarModal) { if (!this.toolbarModal) {
this.toolbarModal = new window.bootstrap.Modal(this.$toolbarModal[0], {}); // eslint-disable-next-line no-undef
this.toolbarModal = new bootstrap.Modal(document.getElementById("avdSearchModal_".concat(this.options.idTable)), {});
} }
this.toolbarModal.show(); this.toolbarModal.show();
} else if (theme === 'bulma') { } else if ($$b.fn.bootstrapTable.theme === 'bulma') {
this.$toolbarModal.toggleClass('is-active'); $$b(modalSelector).toggleClass('is-active');
} else if (theme === 'foundation') { } else if ($$b.fn.bootstrapTable.theme === 'foundation') {
if (!this.toolbarModal) { if (!this.toolbarModal) {
this.toolbarModal = new window.Foundation.Reveal(this.$toolbarModal); // eslint-disable-next-line no-undef
this.toolbarModal = new Foundation.Reveal($$b(modalSelector));
} }
this.toolbarModal.open(); this.toolbarModal.open();
} else if (theme === 'materialize') { } else if ($$b.fn.bootstrapTable.theme === 'materialize') {
this.$toolbarModal.modal().modal('open'); $$b(modalSelector).modal();
} else if (theme === 'semantic') { $$b(modalSelector).modal('open');
this.$toolbarModal.modal('show'); } else if ($$b.fn.bootstrapTable.theme === 'semantic') {
$$b(modalSelector).modal('show');
} }
} }
}, { }, {
key: "hideToolbarModal", key: "hideModal",
value: function hideToolbarModal() { value: function hideModal() {
var theme = $$b.fn.bootstrapTable.theme; var $closeModalButton = $$b("#avdSearchModal_".concat(this.options.idTable));
if (['bootstrap3', 'bootstrap4'].includes(theme)) { var modalSelector = "#avdSearchModal_".concat(this.options.idTable);
this.$toolbarModal.modal('hide'); if ($$b.inArray($$b.fn.bootstrapTable.theme, ['bootstrap3', 'bootstrap4']) !== -1) {
} else if (theme === 'bootstrap5') { $closeModalButton.modal('hide');
} else if ($$b.fn.bootstrapTable.theme === 'bootstrap5') {
this.toolbarModal.hide(); this.toolbarModal.hide();
} else if (theme === 'bulma') { } else if ($$b.fn.bootstrapTable.theme === 'bulma') {
$$b('html').toggleClass('is-clipped'); $$b('html').toggleClass('is-clipped');
this.$toolbarModal.toggleClass('is-active'); $$b(modalSelector).toggleClass('is-active');
} else if (theme === 'foundation') { } else if ($$b.fn.bootstrapTable.theme === 'foundation') {
this.toolbarModal.close(); this.toolbarModal.close();
} else if (theme === 'materialize') { } else if ($$b.fn.bootstrapTable.theme === 'materialize') {
this.$toolbarModal.modal('open'); $$b(modalSelector).modal('open');
} else if (theme === 'semantic') { } else if ($$b.fn.bootstrapTable.theme === 'semantic') {
this.$toolbarModal.modal('close'); $$b(modalSelector).modal('close');
} }
if (this.options.sidePagination === 'server') { if (this.options.sidePagination === 'server') {
this.options.pageNumber = 1; this.options.pageNumber = 1;
@@ -27537,18 +27547,17 @@ if(xr(e,"index.xml"))throw new Error("Unsupported NUMBERS 09 file");throw new Er
} }
} }
}, { }, {
key: "createToolbarForm", key: "createFormAvd",
value: function createToolbarForm() { value: function createFormAvd() {
var html = ["<form class=\"form-horizontal toolbar-model-form\" action=\"".concat(this.options.actionForm, "\">")]; var o = this.options;
var html = ["<form class=\"form-horizontal\" id=\"".concat(o.idForm, "\" action=\"").concat(o.actionForm, "\">")];
var _iterator = _createForOfIteratorHelper(this.columns), var _iterator = _createForOfIteratorHelper(this.columns),
_step; _step;
try { try {
for (_iterator.s(); !(_step = _iterator.n()).done;) { for (_iterator.s(); !(_step = _iterator.n()).done;) {
var column = _step.value; var column = _step.value;
if (!column.checkbox && column.visible && column.searchable) { if (!column.checkbox && column.visible && column.searchable) {
var title = $$b('<div/>').html(column.title).text().trim(); html.push("\n <div class=\"form-group row ".concat(theme.classes.formGroup || '', "\">\n <label class=\"col-sm-4 control-label\">").concat(column.title, "</label>\n <div class=\"col-sm-6\">\n <input type=\"text\" class=\"form-control ").concat(this.constants.classes.input, "\" name=\"").concat(column.field, "\" placeholder=\"").concat(column.title, "\" id=\"").concat(column.field, "\">\n </div>\n </div>\n "));
var value = this.filterColumnsPartial[column.field] || '';
html.push("\n <div class=\"form-group row ".concat(theme.classes.formGroup || '', "\">\n <label class=\"col-sm-4 control-label\">").concat(title, "</label>\n <div class=\"col-sm-6\">\n <input type=\"text\" class=\"form-control ").concat(this.constants.classes.input, "\"\n name=\"").concat(column.field, "\" placeholder=\"").concat(title, "\" value=\"").concat(value, "\">\n </div>\n </div>\n "));
} }
} }
} catch (err) { } catch (err) {
@@ -27557,17 +27566,17 @@ if(xr(e,"index.xml"))throw new Error("Unsupported NUMBERS 09 file");throw new Er
_iterator.f(); _iterator.f();
} }
html.push('</form>'); html.push('</form>');
return html.join(''); return html;
} }
}, { }, {
key: "initSearch", key: "initSearch",
value: function initSearch() { value: function initSearch() {
var _this3 = this; var _this2 = this;
_get(_getPrototypeOf(_class.prototype), "initSearch", this).call(this); _get(_getPrototypeOf(_class.prototype), "initSearch", this).call(this);
if (!this.options.advancedSearch || this.options.sidePagination === 'server') { if (!this.options.advancedSearch || this.options.sidePagination === 'server') {
return; return;
} }
var fp = Utils.isEmptyObject(this.filterColumnsPartial) ? null : this.filterColumnsPartial; var fp = $$b.isEmptyObject(this.filterColumnsPartial) ? null : this.filterColumnsPartial;
this.data = fp ? this.data.filter(function (item, i) { this.data = fp ? this.data.filter(function (item, i) {
for (var _i = 0, _Object$entries = Object.entries(fp); _i < _Object$entries.length; _i++) { for (var _i = 0, _Object$entries = Object.entries(fp); _i < _Object$entries.length; _i++) {
var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2), var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2),
@@ -27575,8 +27584,8 @@ if(xr(e,"index.xml"))throw new Error("Unsupported NUMBERS 09 file");throw new Er
v = _Object$entries$_i[1]; v = _Object$entries$_i[1];
var val = v.toLowerCase(); var val = v.toLowerCase();
var value = item[key]; var value = item[key];
var index = _this3.header.fields.indexOf(key); var index = _this2.header.fields.indexOf(key);
value = Utils.calculateObjectValue(_this3.header, _this3.header.formatters[index], [value, item, i], value); value = Utils.calculateObjectValue(_this2.header, _this2.header.formatters[index], [value, item, i], value);
if (!(index !== -1 && (typeof value === 'string' || typeof value === 'number') && "".concat(value).toLowerCase().includes(val))) { if (!(index !== -1 && (typeof value === 'string' || typeof value === 'number') && "".concat(value).toLowerCase().includes(val))) {
return false; return false;
} }
@@ -27589,17 +27598,20 @@ if(xr(e,"index.xml"))throw new Error("Unsupported NUMBERS 09 file");throw new Er
key: "onColumnAdvancedSearch", key: "onColumnAdvancedSearch",
value: function onColumnAdvancedSearch(e) { value: function onColumnAdvancedSearch(e) {
var text = $$b(e.currentTarget).val().trim(); var text = $$b(e.currentTarget).val().trim();
var field = $$b(e.currentTarget).attr('name'); var $field = $$b(e.currentTarget)[0].id;
if ($$b.isEmptyObject(this.filterColumnsPartial)) {
this.filterColumnsPartial = {};
}
if (text) { if (text) {
this.filterColumnsPartial[field] = text; this.filterColumnsPartial[$field] = text;
} else { } else {
delete this.filterColumnsPartial[field]; delete this.filterColumnsPartial[$field];
} }
if (this.options.sidePagination !== 'server') { if (this.options.sidePagination !== 'server') {
this.options.pageNumber = 1; this.options.pageNumber = 1;
this.initSearch(); this.initSearch();
this.updatePagination(); this.updatePagination();
this.trigger('column-advanced-search', field, text); this.trigger('column-advanced-search', $field, text);
} }
} }
}]); }]);

View File

@@ -1,5 +1,5 @@
{ {
"/js/build/app.js": "/js/build/app.js?id=337bd2424ba19bb3c8f200e266caa513", "/js/build/app.js": "/js/build/app.js?id=d47043e03f80612693d9b9034d94e28f",
"/css/dist/skins/skin-red.css": "/css/dist/skins/skin-red.css?id=44bf834f2110504a793dadec132a5898", "/css/dist/skins/skin-red.css": "/css/dist/skins/skin-red.css?id=44bf834f2110504a793dadec132a5898",
"/css/dist/skins/skin-blue.css": "/css/dist/skins/skin-blue.css?id=f677207c6cf9678eb539abecb408c374", "/css/dist/skins/skin-blue.css": "/css/dist/skins/skin-blue.css?id=f677207c6cf9678eb539abecb408c374",
"/css/build/overrides.css": "/css/build/overrides.css?id=004835e70ed3ae2e2340162b7a37c752", "/css/build/overrides.css": "/css/build/overrides.css?id=004835e70ed3ae2e2340162b7a37c752",
@@ -18,7 +18,7 @@
"/css/dist/skins/skin-green-dark.css": "/css/dist/skins/skin-green-dark.css?id=553ee68741b5a392037abcf04da80adc", "/css/dist/skins/skin-green-dark.css": "/css/dist/skins/skin-green-dark.css?id=553ee68741b5a392037abcf04da80adc",
"/css/dist/skins/skin-green.css": "/css/dist/skins/skin-green.css?id=0a82a6ae6bb4e58fe62d162c4fb50397", "/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=da6c7997d9de2f8329142399f0ce50da", "/css/dist/skins/skin-contrast.css": "/css/dist/skins/skin-contrast.css?id=da6c7997d9de2f8329142399f0ce50da",
"/css/dist/all.css": "/css/dist/all.css?id=c18576427f178a39b395c950a130233e", "/css/dist/all.css": "/css/dist/all.css?id=0f9956c66f93c6417f69f0134c6ae128",
"/css/dist/signature-pad.css": "/css/dist/signature-pad.css?id=6a89d3cd901305e66ced1cf5f13147f7", "/css/dist/signature-pad.css": "/css/dist/signature-pad.css?id=6a89d3cd901305e66ced1cf5f13147f7",
"/css/dist/signature-pad.min.css": "/css/dist/signature-pad.min.css?id=6a89d3cd901305e66ced1cf5f13147f7", "/css/dist/signature-pad.min.css": "/css/dist/signature-pad.min.css?id=6a89d3cd901305e66ced1cf5f13147f7",
"/css/webfonts/fa-brands-400.ttf": "/css/webfonts/fa-brands-400.ttf?id=0141634c24336be626e05c8b77d1fa27", "/css/webfonts/fa-brands-400.ttf": "/css/webfonts/fa-brands-400.ttf?id=0141634c24336be626e05c8b77d1fa27",
@@ -29,11 +29,10 @@
"/css/webfonts/fa-solid-900.woff2": "/css/webfonts/fa-solid-900.woff2?id=96d16b1bdb177fd796c810b9e706c780", "/css/webfonts/fa-solid-900.woff2": "/css/webfonts/fa-solid-900.woff2?id=96d16b1bdb177fd796c810b9e706c780",
"/css/webfonts/fa-v4compatibility.ttf": "/css/webfonts/fa-v4compatibility.ttf?id=8994b282f9f3b7a00380bb1e2731a4bf", "/css/webfonts/fa-v4compatibility.ttf": "/css/webfonts/fa-v4compatibility.ttf?id=8994b282f9f3b7a00380bb1e2731a4bf",
"/css/webfonts/fa-v4compatibility.woff2": "/css/webfonts/fa-v4compatibility.woff2?id=111e341dba724e1df946e8d1f406a7bd", "/css/webfonts/fa-v4compatibility.woff2": "/css/webfonts/fa-v4compatibility.woff2?id=111e341dba724e1df946e8d1f406a7bd",
"/css/dist/bootstrap-table.css": "/css/dist/bootstrap-table.css?id=56d8ef58cbae76d63d504ff8d69cf382", "/css/dist/bootstrap-table.css": "/css/dist/bootstrap-table.css?id=5f79123a6750afd34dbf565faec3dda3",
"/js/build/vendor.js": "/js/build/vendor.js?id=179bfe20e8767f7df32658c6b5a10ca3", "/js/build/vendor.js": "/js/build/vendor.js?id=179bfe20e8767f7df32658c6b5a10ca3",
"/js/dist/bootstrap-table.js": "/js/dist/bootstrap-table.js?id=1635e7bbab779359c9b97121a8203521", "/js/dist/bootstrap-table.js": "/js/dist/bootstrap-table.js?id=e5918703a22f8992c4c98f1dbbecb8f7",
"/js/dist/all.js": "/js/dist/all.js?id=e37ce44903f83119fe3d52717200022e", "/js/dist/all.js": "/js/dist/all.js?id=a5164c1c20074421f561fade29d392c3",
"/js/dist/all-defer.js": "/js/dist/all-defer.js?id=75d841799f917cbcacf6b87698379726",
"/css/dist/skins/skin-green.min.css": "/css/dist/skins/skin-green.min.css?id=0a82a6ae6bb4e58fe62d162c4fb50397", "/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=553ee68741b5a392037abcf04da80adc", "/css/dist/skins/skin-green-dark.min.css": "/css/dist/skins/skin-green-dark.min.css?id=553ee68741b5a392037abcf04da80adc",
"/css/dist/skins/skin-black.min.css": "/css/dist/skins/skin-black.min.css?id=76482123f6c70e866d6b971ba91de7bb", "/css/dist/skins/skin-black.min.css": "/css/dist/skins/skin-black.min.css?id=76482123f6c70e866d6b971ba91de7bb",

10792
public/vendor/livewire/livewire.esm.js vendored Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

103
public/vendor/livewire/livewire.min.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1 +1,2 @@
{"/livewire.js":"/livewire.js?id=90730a3b0e7144480175"}
{"/livewire.js":"87e1046f"}

View File

@@ -610,24 +610,27 @@ function htmlEntities(str) {
* *
* 1. Set the class of your select2 elements to 'livewire-select2'). * 1. Set the class of your select2 elements to 'livewire-select2').
* 2. Name your element to match a property in your Livewire component * 2. Name your element to match a property in your Livewire component
* 3. Add an attribute called 'data-livewire-component' that points to $_instance->id (via `{{ }}` if you're in a blade, * 3. Add an attribute called 'data-livewire-component' that points to $this->getId() (via `{{ }}` if you're in a blade,
* or just $_instance->id if not). * or just $this->getId() if not).
*/ */
$(function () { document.addEventListener('livewire:init', () => {
$('.livewire-select2').select2() $('.livewire-select2').select2()
$(document).on('select2:select', '.livewire-select2', function (event) { $(document).on('select2:select', '.livewire-select2', function (event) {
var target = $(event.target) var target = $(event.target)
if(!event.target.name || !target.data('livewire-component')) { if(!event.target.name || !target.data('livewire-component')) {
console.error("You need to set both name (which should match a Livewire property) and data-livewire-component on your Livewire-ed select2 elements!") console.error("You need to set both name (which should match a Livewire property) and data-livewire-component on your Livewire-ed select2 elements!")
console.error("For data-livewire-component, you probably want to use $_instance->id or {{ $_instance->id }}, as appropriate") console.error("For data-livewire-component, you probably want to use $this->getId() or {{ $this->getId() }}, as appropriate")
return false return false
} }
window.livewire.find(target.data('livewire-component')).set(event.target.name, this.options[this.selectedIndex].value) Livewire.find(target.data('livewire-component')).set(event.target.name, this.options[this.selectedIndex].value)
})
window.livewire.hook('message.processed', function (el,component) {
$('.livewire-select2').select2();
}); });
}) Livewire.hook('request', ({succeed}) => {
succeed(() => {
queueMicrotask(() => {
$('.livewire-select2').select2();
});
});
});
});

View File

@@ -122,8 +122,8 @@ return [
'ldap_test' => 'Test LDAP', 'ldap_test' => 'Test LDAP',
'ldap_test_sync' => 'Test LDAP Synchronization', 'ldap_test_sync' => 'Test LDAP Synchronization',
'license' => 'Software License', 'license' => 'Software License',
'load_remote' => 'Use Gravatar', 'load_remote' => 'Load Remote Avatars',
'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load images from Gravatar.', 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load avatars from Gravatar or other outside sources.',
'login' => 'Login Attempts', 'login' => 'Login Attempts',
'login_attempt' => 'Login Attempt', 'login_attempt' => 'Login Attempt',
'login_ip' => 'IP Address', 'login_ip' => 'IP Address',
@@ -375,5 +375,6 @@ return [
'timezone' => 'Timezone', 'timezone' => 'Timezone',
'profile_edit' => 'Edit Profile', 'profile_edit' => 'Edit Profile',
'profile_edit_help' => 'Allow users to edit their own profiles.', 'profile_edit_help' => 'Allow users to edit their own profiles.',
'default_avatar' => 'Upload default avatar',
]; ];

View File

@@ -549,6 +549,8 @@ return [
'license_seats' => ':count License Seat|:count License Seats', 'license_seats' => ':count License Seat|:count License Seats',
'consumables' => ':count Consumable|:count Consumables', 'consumables' => ':count Consumable|:count Consumables',
'components' => ':count Component|:count Components', 'components' => ':count Component|:count Components',
] ],
'more_info' => 'More Info',
'quickscan_bulk_help' => 'Checking this box will edit the asset record to reflect this new location. Leaving it unchecked will simply note the location in the audit log. Note that if this asset is checked out, it will not change the location of the person, asset or location it is checked out to.',
]; ];

View File

@@ -1,45 +0,0 @@
<?php
return [
'exception_message' => 'رسالة استثناء: :message',
'exception_trace' => 'تتبع الإستثناء: :trace',
'exception_message_title' => 'رسالة استثناء',
'exception_trace_title' => 'تتبع الإستثناء',
'backup_failed_subject' => 'أخفق النسخ الاحتياطي لل :application_name',
'backup_failed_body' => 'مهم: حدث خطأ أثناء النسخ الاحتياطي :application_name',
'backup_successful_subject' => 'نسخ احتياطي جديد ناجح ل :application_name',
'backup_successful_subject_title' => 'نجاح النسخ الاحتياطي الجديد!',
'backup_successful_body' => 'أخبار عظيمة، نسخة احتياطية جديدة ل :application_name تم إنشاؤها بنجاح على القرص المسمى :disk_name.',
'cleanup_failed_subject' => 'فشل تنظيف النسخ الاحتياطي للتطبيق :application_name .',
'cleanup_failed_body' => 'حدث خطأ أثناء تنظيف النسخ الاحتياطية ل :application_name',
'cleanup_successful_subject' => 'تنظيف النسخ الاحتياطية ل :application_name تمت بنجاح',
'cleanup_successful_subject_title' => 'تنظيف النسخ الاحتياطية تم بنجاح!',
'cleanup_successful_body' => 'تنظيف النسخ الاحتياطية ل :application_name على القرص المسمى :disk_name تم بنجاح.',
'healthy_backup_found_subject' => 'النسخ الاحتياطية ل :application_name على القرص :disk_name صحية',
'healthy_backup_found_subject_title' => 'النسخ الاحتياطية ل :application_name صحية',
'healthy_backup_found_body' => 'تعتبر النسخ الاحتياطية ل :application_name صحية. عمل جيد!',
'unhealthy_backup_found_subject' => 'مهم: النسخ الاحتياطية ل :application_name غير صحية',
'unhealthy_backup_found_subject_title' => 'مهم: النسخ الاحتياطية ل :application_name غير صحية. :problem',
'unhealthy_backup_found_body' => 'النسخ الاحتياطية ل :application_name على القرص :disk_name غير صحية.',
'unhealthy_backup_found_not_reachable' => 'لا يمكن الوصول إلى وجهة النسخ الاحتياطي. :error',
'unhealthy_backup_found_empty' => 'لا توجد نسخ احتياطية لهذا التطبيق على الإطلاق.',
'unhealthy_backup_found_old' => 'تم إنشاء أحدث النسخ الاحتياطية في :date وتعتبر قديمة جدا.',
'unhealthy_backup_found_unknown' => 'عذرا، لا يمكن تحديد سبب دقيق.',
'unhealthy_backup_found_full' => 'النسخ الاحتياطية تستخدم الكثير من التخزين. الاستخدام الحالي هو :disk_usage وهو أعلى من الحد المسموح به من :disk_limit.',
'no_backups_info' => 'لم يتم عمل نسخ احتياطية حتى الآن',
'application_name' => 'اسم التطبيق',
'backup_name' => 'اسم النسخ الاحتياطي',
'disk' => 'القرص',
'newest_backup_size' => 'أحدث حجم للنسخ الاحتياطي',
'number_of_backups' => 'عدد النسخ الاحتياطية',
'total_storage_used' => 'إجمالي مساحة التخزين المستخدمة',
'newest_backup_date' => 'أحدث تاريخ النسخ الاحتياطي',
'oldest_backup_date' => 'أقدم تاريخ نسخ احتياطي',
];

View File

@@ -1,45 +0,0 @@
<?php
return [
'exception_message' => 'Съобщение за изключение: :message',
'exception_trace' => 'Проследяване на изключение: :trace',
'exception_message_title' => 'Съобщение за изключение',
'exception_trace_title' => 'Проследяване на изключение',
'backup_failed_subject' => 'Неуспешно резервно копие на :application_name',
'backup_failed_body' => 'Важно: Възникна грешка при архивиране на :application_name',
'backup_successful_subject' => 'Успешно ново резервно копие на :application_name',
'backup_successful_subject_title' => 'Успешно ново резервно копие!',
'backup_successful_body' => 'Чудесни новини, ново резервно копие на :application_name беше успешно създадено на диска с име :disk_name.',
'cleanup_failed_subject' => 'Почистването на резервните копия на :application_name не бе успешно.',
'cleanup_failed_body' => 'Възникна грешка при почистването на резервните копия на :application_name',
'cleanup_successful_subject' => 'Почистването на архивите на :application_name е успешно',
'cleanup_successful_subject_title' => 'Почистването на резервните копия е успешно!',
'cleanup_successful_body' => 'Почистването на резервни копия на :application_name на диска с име :disk_name беше успешно.',
'healthy_backup_found_subject' => 'Резервните копия за :application_name на диск :disk_name са здрави',
'healthy_backup_found_subject_title' => 'Резервните копия за :application_name са здрави',
'healthy_backup_found_body' => 'Резервните копия за :application_name се считат за здрави. Добра работа!',
'unhealthy_backup_found_subject' => 'Важно: Резервните копия за :application_name не са здрави',
'unhealthy_backup_found_subject_title' => 'Важно: Резервните копия за :application_name не са здрави. :проблем',
'unhealthy_backup_found_body' => 'Резервните копия за :application_name на диск :disk_name не са здрави.',
'unhealthy_backup_found_not_reachable' => 'Дестинацията за резервни копия не може да бъде достигната. :грешка',
'unhealthy_backup_found_empty' => 'Изобщо няма резервни копия на това приложение.',
'unhealthy_backup_found_old' => 'Последното резервно копие, направено на :date, се счита за твърде старо.',
'unhealthy_backup_found_unknown' => 'За съжаление не може да се определи точна причина.',
'unhealthy_backup_found_full' => 'Резервните копия използват твърде много място за съхранение. Текущото използване е :disk_usage, което е по-високо от разрешеното ограничение на :disk_limit.',
'no_backups_info' => 'Все още не са правени резервни копия',
'application_name' => 'Име на приложението',
'backup_name' => 'Име на резервно копие',
'disk' => 'Диск',
'newest_backup_size' => 'Най-новият размер на резервно копие',
'number_of_backups' => 'Брой резервни копия',
'total_storage_used' => 'Общо използвано дисково пространство',
'newest_backup_date' => 'Най-нова дата на резервно копие',
'oldest_backup_date' => 'Най-старата дата на резервно копие',
];

View File

@@ -1,45 +0,0 @@
<?php
return [
'exception_message' => 'এক্সসেপশন বার্তা: :message',
'exception_trace' => 'এক্সসেপশন ট্রেস: :trace',
'exception_message_title' => 'এক্সসেপশন message',
'exception_trace_title' => 'এক্সসেপশন ট্রেস',
'backup_failed_subject' => ':application_name এর ব্যাকআপ ব্যর্থ হয়েছে।',
'backup_failed_body' => 'গুরুত্বপূর্ণঃ :application_name ব্যাক আপ করার সময় একটি ত্রুটি ঘটেছে।',
'backup_successful_subject' => ':application_name এর নতুন ব্যাকআপ সফল হয়েছে।',
'backup_successful_subject_title' => 'নতুন ব্যাকআপ সফল হয়েছে!',
'backup_successful_body' => 'খুশির খবর, :application_name এর নতুন ব্যাকআপ :disk_name ডিস্কে সফলভাবে তৈরি হয়েছে।',
'cleanup_failed_subject' => ':application_name ব্যাকআপগুলি সাফ করতে ব্যর্থ হয়েছে।',
'cleanup_failed_body' => ':application_name ব্যাকআপগুলি সাফ করার সময় একটি ত্রুটি ঘটেছে।',
'cleanup_successful_subject' => ':application_name এর ব্যাকআপগুলি সফলভাবে সাফ করা হয়েছে।',
'cleanup_successful_subject_title' => 'ব্যাকআপগুলি সফলভাবে সাফ করা হয়েছে!',
'cleanup_successful_body' => ':application_name এর ব্যাকআপগুলি :disk_name ডিস্ক থেকে সফলভাবে সাফ করা হয়েছে।',
'healthy_backup_found_subject' => ':application_name এর ব্যাকআপগুলি :disk_name ডিস্কে স্বাস্থ্যকর অবস্থায় আছে।',
'healthy_backup_found_subject_title' => ':application_name এর ব্যাকআপগুলি স্বাস্থ্যকর অবস্থায় আছে।',
'healthy_backup_found_body' => ':application_name এর ব্যাকআপগুলি স্বাস্থ্যকর বিবেচনা করা হচ্ছে। Good job!',
'unhealthy_backup_found_subject' => 'গুরুত্বপূর্ণঃ :application_name এর ব্যাকআপগুলি অস্বাস্থ্যকর অবস্থায় আছে।',
'unhealthy_backup_found_subject_title' => 'গুরুত্বপূর্ণঃ :application_name এর ব্যাকআপগুলি অস্বাস্থ্যকর অবস্থায় আছে। :problem',
'unhealthy_backup_found_body' => ':disk_name ডিস্কের :application_name এর ব্যাকআপগুলি অস্বাস্থ্যকর অবস্থায় আছে।',
'unhealthy_backup_found_not_reachable' => 'ব্যাকআপ গন্তব্যে পৌঁছানো যায় নি। :error',
'unhealthy_backup_found_empty' => 'এই অ্যাপ্লিকেশনটির কোনও ব্যাকআপ নেই।',
'unhealthy_backup_found_old' => 'সর্বশেষ ব্যাকআপ যেটি :date এই তারিখে করা হয়েছে, সেটি খুব পুরানো।',
'unhealthy_backup_found_unknown' => 'দুঃখিত, সঠিক কারণ নির্ধারণ করা সম্ভব হয়নি।',
'unhealthy_backup_found_full' => 'ব্যাকআপগুলি অতিরিক্ত স্টোরেজ ব্যবহার করছে। বর্তমান ব্যবহারের পরিমান :disk_usage যা অনুমোদিত সীমা :disk_limit এর বেশি।',
'no_backups_info' => 'কোনো ব্যাকআপ এখনও তৈরি হয়নি',
'application_name' => 'আবেদনের নাম',
'backup_name' => 'ব্যাকআপের নাম',
'disk' => 'ডিস্ক',
'newest_backup_size' => 'নতুন ব্যাকআপ আকার',
'number_of_backups' => 'ব্যাকআপের সংখ্যা',
'total_storage_used' => 'ব্যবহৃত মোট সঞ্চয়স্থান',
'newest_backup_date' => 'নতুন ব্যাকআপের তারিখ',
'oldest_backup_date' => 'পুরানো ব্যাকআপের তারিখ',
];

View File

@@ -1,45 +0,0 @@
<?php
return [
'exception_message' => 'Zpráva výjimky: :message',
'exception_trace' => 'Stopa výjimky: :trace',
'exception_message_title' => 'Zpráva výjimky',
'exception_trace_title' => 'Stopa výjimky',
'backup_failed_subject' => 'Záloha :application_name neuspěla',
'backup_failed_body' => 'Důležité: Při záloze :application_name se vyskytla chyba',
'backup_successful_subject' => 'Úspěšná nová záloha :application_name',
'backup_successful_subject_title' => 'Úspěšná nová záloha!',
'backup_successful_body' => 'Dobrá zpráva, na disku jménem :disk_name byla úspěšně vytvořena nová záloha :application_name.',
'cleanup_failed_subject' => 'Vyčištění záloh :application_name neuspělo.',
'cleanup_failed_body' => 'Při čištění záloh :application_name se vyskytla chyba',
'cleanup_successful_subject' => 'Vyčištění záloh :application_name úspěšné',
'cleanup_successful_subject_title' => 'Vyčištění záloh bylo úspěšné!',
'cleanup_successful_body' => 'Vyčištění záloh :application_name na disku jménem :disk_name bylo úspěšné.',
'healthy_backup_found_subject' => 'Zálohy pro :application_name na disku :disk_name jsou zdravé',
'healthy_backup_found_subject_title' => 'Zálohy pro :application_name jsou zdravé',
'healthy_backup_found_body' => 'Zálohy pro :application_name jsou považovány za zdravé. Dobrá práce!',
'unhealthy_backup_found_subject' => 'Důležité: Zálohy pro :application_name jsou nezdravé',
'unhealthy_backup_found_subject_title' => 'Důležité: Zálohy pro :application_name jsou nezdravé. :problem',
'unhealthy_backup_found_body' => 'Zálohy pro :application_name na disku :disk_name jsou nezdravé.',
'unhealthy_backup_found_not_reachable' => 'Nelze se dostat k cíli zálohy. :error',
'unhealthy_backup_found_empty' => 'Tato aplikace nemá vůbec žádné zálohy.',
'unhealthy_backup_found_old' => 'Poslední záloha vytvořená dne :date je považována za příliš starou.',
'unhealthy_backup_found_unknown' => 'Omlouváme se, nemůžeme určit přesný důvod.',
'unhealthy_backup_found_full' => 'Zálohy zabírají příliš mnoho místa na disku. Aktuální využití disku je :disk_usage, což je vyšší než povolený limit :disk_limit.',
'no_backups_info' => 'Zatím nebyly vytvořeny žádné zálohy',
'application_name' => 'Název aplikace',
'backup_name' => 'Název zálohy',
'disk' => 'Disk',
'newest_backup_size' => 'Velikost nejnovější zálohy',
'number_of_backups' => 'Počet záloh',
'total_storage_used' => 'Celková využitá kapacita úložiště',
'newest_backup_date' => 'Datum nejnovější zálohy',
'oldest_backup_date' => 'Datum nejstarší zálohy',
];

View File

@@ -1,45 +0,0 @@
<?php
return [
'exception_message' => 'Fejlbesked: :message',
'exception_trace' => 'Fejl trace: :trace',
'exception_message_title' => 'Fejlbesked',
'exception_trace_title' => 'Fejl trace',
'backup_failed_subject' => 'Backup af :application_name fejlede',
'backup_failed_body' => 'Vigtigt: Der skete en fejl under backup af :application_name',
'backup_successful_subject' => 'Ny backup af :application_name oprettet',
'backup_successful_subject_title' => 'Ny backup!',
'backup_successful_body' => 'Gode nyheder - der blev oprettet en ny backup af :application_name på disken :disk_name.',
'cleanup_failed_subject' => 'Oprydning af backups for :application_name fejlede.',
'cleanup_failed_body' => 'Der skete en fejl under oprydning af backups for :application_name',
'cleanup_successful_subject' => 'Oprydning af backups for :application_name gennemført',
'cleanup_successful_subject_title' => 'Backup oprydning gennemført!',
'cleanup_successful_body' => 'Oprydningen af backups for :application_name på disken :disk_name er gennemført.',
'healthy_backup_found_subject' => 'Alle backups for :application_name på disken :disk_name er OK',
'healthy_backup_found_subject_title' => 'Alle backups for :application_name er OK',
'healthy_backup_found_body' => 'Alle backups for :application_name er ok. Godt gået!',
'unhealthy_backup_found_subject' => 'Vigtigt: Backups for :application_name fejlbehæftede',
'unhealthy_backup_found_subject_title' => 'Vigtigt: Backups for :application_name er fejlbehæftede. :problem',
'unhealthy_backup_found_body' => 'Backups for :application_name på disken :disk_name er fejlbehæftede.',
'unhealthy_backup_found_not_reachable' => 'Backup destinationen kunne ikke findes. :error',
'unhealthy_backup_found_empty' => 'Denne applikation har ingen backups overhovedet.',
'unhealthy_backup_found_old' => 'Den seneste backup fra :date er for gammel.',
'unhealthy_backup_found_unknown' => 'Beklager, en præcis årsag kunne ikke findes.',
'unhealthy_backup_found_full' => 'Backups bruger for meget plads. Nuværende disk forbrug er :disk_usage, hvilket er mere end den tilladte grænse på :disk_limit.',
'no_backups_info' => 'Der blev ikke foretaget nogen sikkerhedskopier endnu',
'application_name' => 'Ansøgningens navn',
'backup_name' => 'Backup navn',
'disk' => 'Disk',
'newest_backup_size' => 'Nyeste backup-størrelse',
'number_of_backups' => 'Antal sikkerhedskopier',
'total_storage_used' => 'Samlet lagerplads brugt',
'newest_backup_date' => 'Nyeste backup-størrelse',
'oldest_backup_date' => 'Ældste backup-størrelse',
];

View File

@@ -1,45 +0,0 @@
<?php
return [
'exception_message' => 'Fehlermeldung: :message',
'exception_trace' => 'Fehlerverfolgung: :trace',
'exception_message_title' => 'Fehlermeldung',
'exception_trace_title' => 'Fehlerverfolgung',
'backup_failed_subject' => 'Backup von :application_name konnte nicht erstellt werden',
'backup_failed_body' => 'Wichtig: Beim Backup von :application_name ist ein Fehler aufgetreten',
'backup_successful_subject' => 'Erfolgreiches neues Backup von :application_name',
'backup_successful_subject_title' => 'Erfolgreiches neues Backup!',
'backup_successful_body' => 'Gute Nachrichten, ein neues Backup von :application_name wurde erfolgreich erstellt und in :disk_name gepeichert.',
'cleanup_failed_subject' => 'Aufräumen der Backups von :application_name schlug fehl.',
'cleanup_failed_body' => 'Beim aufräumen der Backups von :application_name ist ein Fehler aufgetreten',
'cleanup_successful_subject' => 'Aufräumen der Backups von :application_name backups erfolgreich',
'cleanup_successful_subject_title' => 'Aufräumen der Backups erfolgreich!',
'cleanup_successful_body' => 'Aufräumen der Backups von :application_name in :disk_name war erfolgreich.',
'healthy_backup_found_subject' => 'Die Backups von :application_name in :disk_name sind gesund',
'healthy_backup_found_subject_title' => 'Die Backups von :application_name sind Gesund',
'healthy_backup_found_body' => 'Die Backups von :application_name wurden als gesund eingestuft. Gute Arbeit!',
'unhealthy_backup_found_subject' => 'Wichtig: Die Backups für :application_name sind nicht gesund',
'unhealthy_backup_found_subject_title' => 'Wichtig: Die Backups für :application_name sind ungesund. :problem',
'unhealthy_backup_found_body' => 'Die Backups für :application_name in :disk_name sind ungesund.',
'unhealthy_backup_found_not_reachable' => 'Das Backup Ziel konnte nicht erreicht werden. :error',
'unhealthy_backup_found_empty' => 'Es gibt für die Anwendung noch gar keine Backups.',
'unhealthy_backup_found_old' => 'Das letzte Backup am :date ist zu lange her.',
'unhealthy_backup_found_unknown' => 'Sorry, ein genauer Grund konnte nicht gefunden werden.',
'unhealthy_backup_found_full' => 'Die Backups verbrauchen zu viel Platz. Aktuell wird :disk_usage belegt, dass ist höher als das erlaubte Limit von :disk_limit.',
'no_backups_info' => 'Bisher keine Backups vorhanden',
'application_name' => 'Applikationsname',
'backup_name' => 'Backup Name',
'disk' => 'Speicherort',
'newest_backup_size' => 'Neuste Backup-Größe',
'number_of_backups' => 'Anzahl Backups',
'total_storage_used' => 'Gesamter genutzter Speicherplatz',
'newest_backup_date' => 'Neustes Backup',
'oldest_backup_date' => 'Ältestes Backup',
];

View File

@@ -1,45 +0,0 @@
<?php
return [
'exception_message' => 'Exception message: :message',
'exception_trace' => 'Exception trace: :trace',
'exception_message_title' => 'Exception message',
'exception_trace_title' => 'Exception trace',
'backup_failed_subject' => 'Failed backup of :application_name',
'backup_failed_body' => 'Important: An error occurred while backing up :application_name',
'backup_successful_subject' => 'Successful new backup of :application_name',
'backup_successful_subject_title' => 'Successful new backup!',
'backup_successful_body' => 'Great news, a new backup of :application_name was successfully created on the disk named :disk_name.',
'cleanup_failed_subject' => 'Cleaning up the backups of :application_name failed.',
'cleanup_failed_body' => 'An error occurred while cleaning up the backups of :application_name',
'cleanup_successful_subject' => 'Clean up of :application_name backups successful',
'cleanup_successful_subject_title' => 'Clean up of backups successful!',
'cleanup_successful_body' => 'The clean up of the :application_name backups on the disk named :disk_name was successful.',
'healthy_backup_found_subject' => 'The backups for :application_name on disk :disk_name are healthy',
'healthy_backup_found_subject_title' => 'The backups for :application_name are healthy',
'healthy_backup_found_body' => 'The backups for :application_name are considered healthy. Good job!',
'unhealthy_backup_found_subject' => 'Important: The backups for :application_name are unhealthy',
'unhealthy_backup_found_subject_title' => 'Important: The backups for :application_name are unhealthy. :problem',
'unhealthy_backup_found_body' => 'The backups for :application_name on disk :disk_name are unhealthy.',
'unhealthy_backup_found_not_reachable' => 'The backup destination cannot be reached. :error',
'unhealthy_backup_found_empty' => 'There are no backups of this application at all.',
'unhealthy_backup_found_old' => 'The latest backup made on :date is considered too old.',
'unhealthy_backup_found_unknown' => 'Sorry, an exact reason cannot be determined.',
'unhealthy_backup_found_full' => 'The backups are using too much storage. Current usage is :disk_usage which is higher than the allowed limit of :disk_limit.',
'no_backups_info' => 'No backups were made yet',
'application_name' => 'Application name',
'backup_name' => 'Backup name',
'disk' => 'Disk',
'newest_backup_size' => 'Newest backup size',
'number_of_backups' => 'Number of backups',
'total_storage_used' => 'Total storage used',
'newest_backup_date' => 'Newest backup date',
'oldest_backup_date' => 'Oldest backup date',
];

View File

@@ -1,45 +0,0 @@
<?php
return [
'exception_message' => 'Mensaje de la excepción: :message',
'exception_trace' => 'Traza de la excepción: :trace',
'exception_message_title' => 'Mensaje de la excepción',
'exception_trace_title' => 'Traza de la excepción',
'backup_failed_subject' => 'Copia de seguridad de :application_name fallida',
'backup_failed_body' => 'Importante: Ocurrió un error al realizar la copia de seguridad de :application_name',
'backup_successful_subject' => 'Se completó con éxito la copia de seguridad de :application_name',
'backup_successful_subject_title' => '¡Nueva copia de seguridad creada con éxito!',
'backup_successful_body' => 'Buenas noticias, una nueva copia de seguridad de :application_name fue creada con éxito en el disco llamado :disk_name.',
'cleanup_failed_subject' => 'La limpieza de copias de seguridad de :application_name falló.',
'cleanup_failed_body' => 'Ocurrió un error mientras se realizaba la limpieza de copias de seguridad de :application_name',
'cleanup_successful_subject' => 'La limpieza de copias de seguridad de :application_name se completó con éxito',
'cleanup_successful_subject_title' => '!Limpieza de copias de seguridad completada con éxito!',
'cleanup_successful_body' => 'La limpieza de copias de seguridad de :application_name en el disco llamado :disk_name se completo con éxito.',
'healthy_backup_found_subject' => 'Las copias de seguridad de :application_name en el disco :disk_name están en buen estado',
'healthy_backup_found_subject_title' => 'Las copias de seguridad de :application_name están en buen estado',
'healthy_backup_found_body' => 'Las copias de seguridad de :application_name se consideran en buen estado. ¡Buen trabajo!',
'unhealthy_backup_found_subject' => 'Importante: Las copias de seguridad de :application_name están en mal estado',
'unhealthy_backup_found_subject_title' => 'Importante: Las copias de seguridad de :application_name están en mal estado. :problem',
'unhealthy_backup_found_body' => 'Las copias de seguridad de :application_name en el disco :disk_name están en mal estado.',
'unhealthy_backup_found_not_reachable' => 'No se puede acceder al destino de la copia de seguridad. :error',
'unhealthy_backup_found_empty' => 'No existe ninguna copia de seguridad de esta aplicación.',
'unhealthy_backup_found_old' => 'La última copia de seguriad hecha en :date es demasiado antigua.',
'unhealthy_backup_found_unknown' => 'Lo siento, no es posible determinar la razón exacta.',
'unhealthy_backup_found_full' => 'Las copias de seguridad están ocupando demasiado espacio. El espacio utilizado actualmente es :disk_usage el cual es mayor que el límite permitido de :disk_limit.',
'no_backups_info' => 'Aún no se hicieron copias de seguridad',
'application_name' => 'Nombre de la aplicación',
'backup_name' => 'Nombre de la copia de seguridad',
'disk' => 'Disco',
'newest_backup_size' => 'Tamaño de copia de seguridad más reciente',
'number_of_backups' => 'Número de copias de seguridad',
'total_storage_used' => 'Almacenamiento total utilizado',
'newest_backup_date' => 'Fecha de la copia de seguridad más reciente',
'oldest_backup_date' => 'Fecha de la copia de seguridad más antigua',
];

View File

@@ -1,45 +0,0 @@
<?php
return [
'exception_message' => 'پیغام خطا: :message',
'exception_trace' => 'جزییات خطا: :trace',
'exception_message_title' => 'پیغام خطا',
'exception_trace_title' => 'جزییات خطا',
'backup_failed_subject' => 'پشتیبان‌گیری :application_name با خطا مواجه شد.',
'backup_failed_body' => 'پیغام مهم: هنگام پشتیبان‌گیری از :application_name خطایی رخ داده است. ',
'backup_successful_subject' => 'نسخه پشتیبان جدید :application_name با موفقیت ساخته شد.',
'backup_successful_subject_title' => 'پشتیبان‌گیری موفق!',
'backup_successful_body' => 'خبر خوب، به تازگی نسخه پشتیبان :application_name روی دیسک :disk_name با موفقیت ساخته شد. ',
'cleanup_failed_subject' => 'پاک‌‌سازی نسخه پشتیبان :application_name انجام نشد.',
'cleanup_failed_body' => 'هنگام پاک‌سازی نسخه پشتیبان :application_name خطایی رخ داده است.',
'cleanup_successful_subject' => 'پاک‌سازی نسخه پشتیبان :application_name با موفقیت انجام شد.',
'cleanup_successful_subject_title' => 'پاک‌سازی نسخه پشتیبان!',
'cleanup_successful_body' => 'پاک‌سازی نسخه پشتیبان :application_name روی دیسک :disk_name با موفقیت انجام شد.',
'healthy_backup_found_subject' => 'نسخه پشتیبان :application_name روی دیسک :disk_name سالم بود.',
'healthy_backup_found_subject_title' => 'نسخه پشتیبان :application_name سالم بود.',
'healthy_backup_found_body' => 'نسخه پشتیبان :application_name به نظر سالم میاد. دمت گرم!',
'unhealthy_backup_found_subject' => 'خبر مهم: نسخه پشتیبان :application_name سالم نبود.',
'unhealthy_backup_found_subject_title' => 'خبر مهم: نسخه پشتیبان :application_name سالم نبود. :problem',
'unhealthy_backup_found_body' => 'نسخه پشتیبان :application_name روی دیسک :disk_name سالم نبود.',
'unhealthy_backup_found_not_reachable' => 'مقصد پشتیبان‌گیری در دسترس نبود. :error',
'unhealthy_backup_found_empty' => 'برای این برنامه هیچ نسخه پشتیبانی وجود ندارد.',
'unhealthy_backup_found_old' => 'آخرین نسخه پشتیبان برای تاریخ :date است، که به نظر خیلی قدیمی میاد. ',
'unhealthy_backup_found_unknown' => 'متاسفانه دلیل دقیقی قابل تعیین نیست.',
'unhealthy_backup_found_full' => 'نسخه‌های پشتیبان حجم زیادی اشغال کرده‌اند. میزان دیسک استفاده‌شده :disk_usage است که از میزان مجاز :disk_limit فراتر رفته است. ',
'no_backups_info' => 'هنوز نسخه پشتیبان تهیه نشده است',
'application_name' => 'نام نرم‌افزار',
'backup_name' => 'نام نسخه پشتیبان',
'disk' => 'دیسک',
'newest_backup_size' => 'اندازه جدیدترین نسخه پشتیبان',
'number_of_backups' => 'تعداد نسخه‌های پشتیبان',
'total_storage_used' => 'کل فضای ذخیره‌سازی استفاده‌شده',
'newest_backup_date' => 'تاریخ جدیدترین نسخه پشتیبان',
'oldest_backup_date' => 'تاریخ قدیمی‌ترین نسخه پشتیبان',
];

View File

@@ -1,45 +0,0 @@
<?php
return [
'exception_message' => 'Virheilmoitus: :message',
'exception_trace' => 'Virhe, jäljitys: :trace',
'exception_message_title' => 'Virheilmoitus',
'exception_trace_title' => 'Virheen jäljitys',
'backup_failed_subject' => ':application_name varmuuskopiointi epäonnistui',
'backup_failed_body' => 'HUOM!: :application_name varmuuskoipionnissa tapahtui virhe',
'backup_successful_subject' => ':application_name varmuuskopioitu onnistuneesti',
'backup_successful_subject_title' => 'Uusi varmuuskopio!',
'backup_successful_body' => 'Hyviä uutisia! :application_name on varmuuskopioitu levylle :disk_name.',
'cleanup_failed_subject' => ':application_name varmuuskopioiden poistaminen epäonnistui.',
'cleanup_failed_body' => ':application_name varmuuskopioiden poistamisessa tapahtui virhe.',
'cleanup_successful_subject' => ':application_name varmuuskopiot poistettu onnistuneesti',
'cleanup_successful_subject_title' => 'Varmuuskopiot poistettu onnistuneesti!',
'cleanup_successful_body' => ':application_name varmuuskopiot poistettu onnistuneesti levyltä :disk_name.',
'healthy_backup_found_subject' => ':application_name varmuuskopiot levyllä :disk_name ovat kunnossa',
'healthy_backup_found_subject_title' => ':application_name varmuuskopiot ovat kunnossa',
'healthy_backup_found_body' => ':application_name varmuuskopiot ovat kunnossa. Hieno homma!',
'unhealthy_backup_found_subject' => 'HUOM!: :application_name varmuuskopiot ovat vialliset',
'unhealthy_backup_found_subject_title' => 'HUOM!: :application_name varmuuskopiot ovat vialliset. :problem',
'unhealthy_backup_found_body' => ':application_name varmuuskopiot levyllä :disk_name ovat vialliset.',
'unhealthy_backup_found_not_reachable' => 'Varmuuskopioiden kohdekansio ei ole saatavilla. :error',
'unhealthy_backup_found_empty' => 'Tästä sovelluksesta ei ole varmuuskopioita.',
'unhealthy_backup_found_old' => 'Viimeisin varmuuskopio, luotu :date, on liian vanha.',
'unhealthy_backup_found_unknown' => 'Virhe, tarkempaa tietoa syystä ei valitettavasti ole saatavilla.',
'unhealthy_backup_found_full' => 'Varmuuskopiot vievät liikaa levytilaa. Tällä hetkellä käytössä :disk_usage, mikä on suurempi kuin sallittu tilavuus (:disk_limit).',
'no_backups_info' => 'Varmuuskopioita ei vielä tehty',
'application_name' => 'Sovelluksen nimi',
'backup_name' => 'Varmuuskopion nimi',
'disk' => 'Levy',
'newest_backup_size' => 'Uusin varmuuskopion koko',
'number_of_backups' => 'Varmuuskopioiden määrä',
'total_storage_used' => 'Käytetty tallennustila yhteensä',
'newest_backup_date' => 'Uusin varmuuskopion koko',
'oldest_backup_date' => 'Vanhin varmuuskopion koko',
];

View File

@@ -1,45 +0,0 @@
<?php
return [
'exception_message' => 'Message de l\'exception : :message',
'exception_trace' => 'Trace de l\'exception : :trace',
'exception_message_title' => 'Message de l\'exception',
'exception_trace_title' => 'Trace de l\'exception',
'backup_failed_subject' => 'Échec de la sauvegarde de :application_name',
'backup_failed_body' => 'Important : Une erreur est survenue lors de la sauvegarde de :application_name',
'backup_successful_subject' => 'Succès de la sauvegarde de :application_name',
'backup_successful_subject_title' => 'Sauvegarde créée avec succès !',
'backup_successful_body' => 'Bonne nouvelle, une nouvelle sauvegarde de :application_name a été créée avec succès sur le disque nommé :disk_name.',
'cleanup_failed_subject' => 'Le nettoyage des sauvegardes de :application_name a echoué.',
'cleanup_failed_body' => 'Une erreur est survenue lors du nettoyage des sauvegardes de :application_name',
'cleanup_successful_subject' => 'Succès du nettoyage des sauvegardes de :application_name',
'cleanup_successful_subject_title' => 'Sauvegardes nettoyées avec succès !',
'cleanup_successful_body' => 'Le nettoyage des sauvegardes de :application_name sur le disque nommé :disk_name a été effectué avec succès.',
'healthy_backup_found_subject' => 'Les sauvegardes pour :application_name sur le disque :disk_name sont saines',
'healthy_backup_found_subject_title' => 'Les sauvegardes pour :application_name sont saines',
'healthy_backup_found_body' => 'Les sauvegardes pour :application_name sont considérées saines. Bon travail !',
'unhealthy_backup_found_subject' => 'Important : Les sauvegardes pour :application_name sont corrompues',
'unhealthy_backup_found_subject_title' => 'Important : Les sauvegardes pour :application_name sont corrompues. :problem',
'unhealthy_backup_found_body' => 'Les sauvegardes pour :application_name sur le disque :disk_name sont corrompues.',
'unhealthy_backup_found_not_reachable' => 'La destination de la sauvegarde n\'est pas accessible. :error',
'unhealthy_backup_found_empty' => 'Il n\'y a aucune sauvegarde pour cette application.',
'unhealthy_backup_found_old' => 'La dernière sauvegarde du :date est considérée trop vieille.',
'unhealthy_backup_found_unknown' => 'Désolé, une raison exacte ne peut être déterminée.',
'unhealthy_backup_found_full' => 'Les sauvegardes utilisent trop d\'espace disque. L\'utilisation actuelle est de :disk_usage alors que la limite autorisée est de :disk_limit.',
'no_backups_info' => 'Aucune sauvegarde n\'a encore été effectuée',
'application_name' => 'Nom de l\'application',
'backup_name' => 'Nom de la sauvegarde',
'disk' => 'Disque',
'newest_backup_size' => 'Taille de la sauvegarde la plus récente',
'number_of_backups' => 'Nombre de sauvegardes',
'total_storage_used' => 'Stockage total utilisé',
'newest_backup_date' => 'Date de la sauvegarde la plus récente',
'oldest_backup_date' => 'Date de la sauvegarde la plus ancienne',
];

View File

@@ -1,45 +0,0 @@
<?php
return [
'exception_message' => 'הודעת חריגה: :message',
'exception_trace' => 'מעקב חריגה: :trace',
'exception_message_title' => 'הודעת חריגה',
'exception_trace_title' => 'מעקב חריגה',
'backup_failed_subject' => 'כשל בגיבוי של :application_name',
'backup_failed_body' => 'חשוב: אירעה שגיאה במהלך גיבוי היישום :application_name',
'backup_successful_subject' => 'גיבוי חדש מוצלח של :application_name',
'backup_successful_subject_title' => 'גיבוי חדש מוצלח!',
'backup_successful_body' => 'חדשות טובות, גיבוי חדש של :application_name נוצר בהצלחה על הדיסק בשם :disk_name.',
'cleanup_failed_subject' => 'נכשל בניקוי הגיבויים של :application_name',
'cleanup_failed_body' => 'אירעה שגיאה במהלך ניקוי הגיבויים של :application_name',
'cleanup_successful_subject' => 'ניקוי הגיבויים של :application_name בוצע בהצלחה',
'cleanup_successful_subject_title' => 'ניקוי הגיבויים בוצע בהצלחה!',
'cleanup_successful_body' => 'ניקוי הגיבויים של :application_name על הדיסק בשם :disk_name בוצע בהצלחה.',
'healthy_backup_found_subject' => 'הגיבויים של :application_name על הדיסק :disk_name תקינים',
'healthy_backup_found_subject_title' => 'הגיבויים של :application_name תקינים',
'healthy_backup_found_body' => 'הגיבויים של :application_name נחשבים לתקינים. עבודה טובה!',
'unhealthy_backup_found_subject' => 'חשוב: הגיבויים של :application_name אינם תקינים',
'unhealthy_backup_found_subject_title' => 'חשוב: הגיבויים של :application_name אינם תקינים. :problem',
'unhealthy_backup_found_body' => 'הגיבויים של :application_name על הדיסק :disk_name אינם תקינים.',
'unhealthy_backup_found_not_reachable' => 'לא ניתן להגיע ליעד הגיבוי. :error',
'unhealthy_backup_found_empty' => 'אין גיבויים של היישום הזה בכלל.',
'unhealthy_backup_found_old' => 'הגיבוי האחרון שנעשה בתאריך :date נחשב כישן מדי.',
'unhealthy_backup_found_unknown' => 'מצטערים, לא ניתן לקבוע סיבה מדויקת.',
'unhealthy_backup_found_full' => 'הגיבויים משתמשים בשטח אחסון רב מידי. שימוש הנוכחי הוא :disk_usage, שגבול המותר הוא :disk_limit.',
'no_backups_info' => 'לא נעשו עדיין גיבויים',
'application_name' => 'שם היישום',
'backup_name' => 'שם הגיבוי',
'disk' => 'דיסק',
'newest_backup_size' => 'גודל הגיבוי החדש ביותר',
'number_of_backups' => 'מספר הגיבויים',
'total_storage_used' => 'סך האחסון המופעל',
'newest_backup_date' => 'תאריך הגיבוי החדש ביותר',
'oldest_backup_date' => 'תאריך הגיבוי הישן ביותר',
];

View File

@@ -1,45 +0,0 @@
<?php
return [
'exception_message' => 'अपवाद संदेश: :message',
'exception_trace' => 'अपवाद निशान: :trace',
'exception_message_title' => 'अपवादी संदेश',
'exception_trace_title' => 'अपवाद निशान',
'backup_failed_subject' => ':application_name का बैकअप असफल रहा',
'backup_failed_body' => 'जरूरी सुचना: :application_name का बैकअप लेते समय असफल रहे',
'backup_successful_subject' => ':application_name का बैकअप सफल रहा',
'backup_successful_subject_title' => 'बैकअप सफल रहा!',
'backup_successful_body' => 'खुशखबर, :application_name का बैकअप :disk_name पर संग्रहित करने मे सफल रहे.',
'cleanup_failed_subject' => ':application_name के बैकअप की सफाई असफल रही.',
'cleanup_failed_body' => ':application_name के बैकअप की सफाई करते समय कुछ बाधा आयी है.',
'cleanup_successful_subject' => ':application_name के बैकअप की सफाई सफल रही',
'cleanup_successful_subject_title' => 'बैकअप की सफाई सफल रही!',
'cleanup_successful_body' => ':application_name का बैकअप जो :disk_name नाम की डिस्क पर संग्रहित है, उसकी सफाई सफल रही.',
'healthy_backup_found_subject' => ':disk_name नाम की डिस्क पर संग्रहित :application_name के बैकअप स्वस्थ है',
'healthy_backup_found_subject_title' => ':application_name के सभी बैकअप स्वस्थ है',
'healthy_backup_found_body' => 'बहुत बढ़िया! :application_name के सभी बैकअप स्वस्थ है.',
'unhealthy_backup_found_subject' => 'जरूरी सुचना : :application_name के बैकअप अस्वस्थ है',
'unhealthy_backup_found_subject_title' => 'जरूरी सुचना : :application_name के बैकअप :problem के बजेसे अस्वस्थ है',
'unhealthy_backup_found_body' => ':disk_name नाम की डिस्क पर संग्रहित :application_name के बैकअप अस्वस्थ है',
'unhealthy_backup_found_not_reachable' => ':error के बजेसे बैकअप की मंजिल तक पोहोच नहीं सकते.',
'unhealthy_backup_found_empty' => 'इस एप्लीकेशन का कोई भी बैकअप नहीं है.',
'unhealthy_backup_found_old' => 'हालहीमें :date को लिया हुआ बैकअप बहुत पुराना है.',
'unhealthy_backup_found_unknown' => 'माफ़ कीजिये, सही कारण निर्धारित नहीं कर सकते.',
'unhealthy_backup_found_full' => 'सभी बैकअप बहुत ज्यादा जगह का उपयोग कर रहे है. फ़िलहाल सभी बैकअप :disk_usage जगह का उपयोग कर रहे है, जो की :disk_limit अनुमति सीमा से अधिक का है.',
'no_backups_info' => 'अभी तक कोई बैकअप नहीं बनाया गया था',
'application_name' => 'आवेदन का नाम',
'backup_name' => 'बैकअप नाम',
'disk' => 'डिस्क',
'newest_backup_size' => 'नवीनतम बैकअप आकार',
'number_of_backups' => 'बैकअप की संख्या',
'total_storage_used' => 'उपयोग किया गया कुल संग्रहण',
'newest_backup_date' => 'नवीनतम बैकअप आकार',
'oldest_backup_date' => 'सबसे पुराना बैकअप आकार',
];

View File

@@ -1,45 +0,0 @@
<?php
return [
'exception_message' => 'Greška: :message',
'exception_trace' => 'Praćenje greške: :trace',
'exception_message_title' => 'Greška',
'exception_trace_title' => 'Praćenje greške',
'backup_failed_subject' => 'Neuspješno sigurnosno kopiranje za :application_name',
'backup_failed_body' => 'Važno: Došlo je do greške prilikom sigurnosnog kopiranja za :application_name',
'backup_successful_subject' => 'Uspješno sigurnosno kopiranje za :application_name',
'backup_successful_subject_title' => 'Uspješno sigurnosno kopiranje!',
'backup_successful_body' => 'Nova sigurnosna kopija za :application_name je uspješno spremljena na disk :disk_name.',
'cleanup_failed_subject' => 'Neuspješno čišćenje sigurnosnih kopija za :application_name',
'cleanup_failed_body' => 'Došlo je do greške prilikom čišćenja sigurnosnih kopija za :application_name',
'cleanup_successful_subject' => 'Uspješno čišćenje sigurnosnih kopija za :application_name',
'cleanup_successful_subject_title' => 'Uspješno čišćenje sigurnosnih kopija!',
'cleanup_successful_body' => 'Sigurnosne kopije za :application_name su uspješno očišćene s diska :disk_name.',
'healthy_backup_found_subject' => 'Sigurnosne kopije za :application_name na disku :disk_name su zdrave',
'healthy_backup_found_subject_title' => 'Sigurnosne kopije za :application_name su zdrave',
'healthy_backup_found_body' => 'Sigurnosne kopije za :application_name se smatraju zdravima. Svaka čast!',
'unhealthy_backup_found_subject' => 'Važno: Sigurnosne kopije za :application_name su nezdrave',
'unhealthy_backup_found_subject_title' => 'Važno: Sigurnosne kopije za :application_name su nezdrave. :problem',
'unhealthy_backup_found_body' => 'Sigurnosne kopije za :application_name na disku :disk_name su nezdrave.',
'unhealthy_backup_found_not_reachable' => 'Destinacija sigurnosne kopije nije dohvatljiva. :error',
'unhealthy_backup_found_empty' => 'Nijedna sigurnosna kopija ove aplikacije ne postoji.',
'unhealthy_backup_found_old' => 'Zadnja sigurnosna kopija generirana na datum :date smatra se prestarom.',
'unhealthy_backup_found_unknown' => 'Isprike, ali nije moguće odrediti razlog.',
'unhealthy_backup_found_full' => 'Sigurnosne kopije zauzimaju previše prostora. Trenutno zauzeće je :disk_usage što je više od dozvoljenog ograničenja od :disk_limit.',
'no_backups_info' => 'Nema sigurnosnih kopija',
'application_name' => 'Naziv aplikacije',
'backup_name' => 'Naziv sigurnosne kopije',
'disk' => 'Disk',
'newest_backup_size' => 'Veličina najnovije sigurnosne kopije',
'number_of_backups' => 'Broj sigurnosnih kopija',
'total_storage_used' => 'Ukupno zauzeće',
'newest_backup_date' => 'Najnovija kopija na datum',
'oldest_backup_date' => 'Najstarija kopija na datum',
];

View File

@@ -1,45 +0,0 @@
<?php
return [
'exception_message' => 'Pesan pengecualian: :message',
'exception_trace' => 'Jejak pengecualian: :trace',
'exception_message_title' => 'Pesan pengecualian',
'exception_trace_title' => 'Jejak pengecualian',
'backup_failed_subject' => 'Gagal backup :application_name',
'backup_failed_body' => 'Penting: Sebuah error terjadi ketika membackup :application_name',
'backup_successful_subject' => 'Backup baru sukses dari :application_name',
'backup_successful_subject_title' => 'Backup baru sukses!',
'backup_successful_body' => 'Kabar baik, sebuah backup baru dari :application_name sukses dibuat pada disk bernama :disk_name.',
'cleanup_failed_subject' => 'Membersihkan backup dari :application_name yang gagal.',
'cleanup_failed_body' => 'Sebuah error teradi ketika membersihkan backup dari :application_name',
'cleanup_successful_subject' => 'Sukses membersihkan backup :application_name',
'cleanup_successful_subject_title' => 'Sukses membersihkan backup!',
'cleanup_successful_body' => 'Pembersihan backup :application_name pada disk bernama :disk_name telah sukses.',
'healthy_backup_found_subject' => 'Backup untuk :application_name pada disk :disk_name sehat',
'healthy_backup_found_subject_title' => 'Backup untuk :application_name sehat',
'healthy_backup_found_body' => 'Backup untuk :application_name dipertimbangkan sehat. Kerja bagus!',
'unhealthy_backup_found_subject' => 'Penting: Backup untuk :application_name tidak sehat',
'unhealthy_backup_found_subject_title' => 'Penting: Backup untuk :application_name tidak sehat. :problem',
'unhealthy_backup_found_body' => 'Backup untuk :application_name pada disk :disk_name tidak sehat.',
'unhealthy_backup_found_not_reachable' => 'Tujuan backup tidak dapat terjangkau. :error',
'unhealthy_backup_found_empty' => 'Tidak ada backup pada aplikasi ini sama sekali.',
'unhealthy_backup_found_old' => 'Backup terakhir dibuat pada :date dimana dipertimbahkan sudah sangat lama.',
'unhealthy_backup_found_unknown' => 'Maaf, sebuah alasan persisnya tidak dapat ditentukan.',
'unhealthy_backup_found_full' => 'Backup menggunakan terlalu banyak kapasitas penyimpanan. Penggunaan terkini adalah :disk_usage dimana lebih besar dari batas yang diperbolehkan yaitu :disk_limit.',
'no_backups_info' => 'Belum ada backup yang dibuat',
'application_name' => 'Nama aplikasi',
'backup_name' => 'Nama cadangan',
'disk' => 'Disk',
'newest_backup_size' => 'Ukuran cadangan terbaru',
'number_of_backups' => 'Jumlah cadangan',
'total_storage_used' => 'Total penyimpanan yang digunakan',
'newest_backup_date' => 'Ukuran cadangan terbaru',
'oldest_backup_date' => 'Ukuran cadangan tertua',
];

View File

@@ -1,45 +0,0 @@
<?php
return [
'exception_message' => 'Messaggio dell\'eccezione: :message',
'exception_trace' => 'Traccia dell\'eccezione: :trace',
'exception_message_title' => 'Messaggio dell\'eccezione',
'exception_trace_title' => 'Traccia dell\'eccezione',
'backup_failed_subject' => 'Fallito il backup di :application_name',
'backup_failed_body' => 'Importante: Si è verificato un errore durante il backup di :application_name',
'backup_successful_subject' => 'Creato nuovo backup di :application_name',
'backup_successful_subject_title' => 'Nuovo backup creato!',
'backup_successful_body' => 'Grande notizia, un nuovo backup di :application_name è stato creato con successo sul disco :disk_name.',
'cleanup_failed_subject' => 'Pulizia dei backup di :application_name fallita.',
'cleanup_failed_body' => 'Si è verificato un errore durante la pulizia dei backup di :application_name',
'cleanup_successful_subject' => 'Pulizia dei backup di :application_name avvenuta con successo',
'cleanup_successful_subject_title' => 'Pulizia dei backup avvenuta con successo!',
'cleanup_successful_body' => 'La pulizia dei backup di :application_name sul disco :disk_name è avvenuta con successo.',
'healthy_backup_found_subject' => 'I backup per :application_name sul disco :disk_name sono sani',
'healthy_backup_found_subject_title' => 'I backup per :application_name sono sani',
'healthy_backup_found_body' => 'I backup per :application_name sono considerati sani. Bel Lavoro!',
'unhealthy_backup_found_subject' => 'Importante: i backup per :application_name sono corrotti',
'unhealthy_backup_found_subject_title' => 'Importante: i backup per :application_name sono corrotti. :problem',
'unhealthy_backup_found_body' => 'I backup per :application_name sul disco :disk_name sono corrotti.',
'unhealthy_backup_found_not_reachable' => 'Impossibile raggiungere la destinazione di backup. :error',
'unhealthy_backup_found_empty' => 'Non esiste alcun backup di questa applicazione.',
'unhealthy_backup_found_old' => 'L\'ultimo backup fatto il :date è considerato troppo vecchio.',
'unhealthy_backup_found_unknown' => 'Spiacenti, non è possibile determinare una ragione esatta.',
'unhealthy_backup_found_full' => 'I backup utilizzano troppa memoria. L\'utilizzo corrente è :disk_usage che è superiore al limite consentito di :disk_limit.',
'no_backups_info' => 'Non sono stati ancora effettuati backup',
'application_name' => 'Nome dell\'applicazione',
'backup_name' => 'Nome di backup',
'disk' => 'Disco',
'newest_backup_size' => 'Dimensione backup più recente',
'number_of_backups' => 'Numero di backup',
'total_storage_used' => 'Spazio di archiviazione totale utilizzato',
'newest_backup_date' => 'Data del backup più recente',
'oldest_backup_date' => 'Data del backup più vecchio',
];

View File

@@ -1,45 +0,0 @@
<?php
return [
'exception_message' => '例外のメッセージ: :message',
'exception_trace' => '例外の追跡: :trace',
'exception_message_title' => '例外のメッセージ',
'exception_trace_title' => '例外の追跡',
'backup_failed_subject' => ':application_name のバックアップに失敗しました。',
'backup_failed_body' => '重要: :application_name のバックアップ中にエラーが発生しました。',
'backup_successful_subject' => ':application_name のバックアップに成功しました。',
'backup_successful_subject_title' => 'バックアップに成功しました!',
'backup_successful_body' => '朗報です。ディスク :disk_name へ :application_name のバックアップが成功しました。',
'cleanup_failed_subject' => ':application_name のバックアップ削除に失敗しました。',
'cleanup_failed_body' => ':application_name のバックアップ削除中にエラーが発生しました。',
'cleanup_successful_subject' => ':application_name のバックアップ削除に成功しました。',
'cleanup_successful_subject_title' => 'バックアップ削除に成功しました!',
'cleanup_successful_body' => 'ディスク :disk_name に保存された :application_name のバックアップ削除に成功しました。',
'healthy_backup_found_subject' => 'ディスク :disk_name への :application_name のバックアップは正常です。',
'healthy_backup_found_subject_title' => ':application_name のバックアップは正常です。',
'healthy_backup_found_body' => ':application_name へのバックアップは正常です。いい仕事してますね!',
'unhealthy_backup_found_subject' => '重要: :application_name のバックアップに異常があります。',
'unhealthy_backup_found_subject_title' => '重要: :application_name のバックアップに異常があります。 :problem',
'unhealthy_backup_found_body' => ':disk_name への :application_name のバックアップに異常があります。',
'unhealthy_backup_found_not_reachable' => 'バックアップ先にアクセスできませんでした。 :error',
'unhealthy_backup_found_empty' => 'このアプリケーションのバックアップは見つかりませんでした。',
'unhealthy_backup_found_old' => ':date に保存された直近のバックアップが古すぎます。',
'unhealthy_backup_found_unknown' => '申し訳ございません。予期せぬエラーです。',
'unhealthy_backup_found_full' => 'バックアップがディスク容量を圧迫しています。現在の使用量 :disk_usage は、許可された限界値 :disk_limit を超えています。',
'no_backups_info' => 'バックアップはまだ作成されていません',
'application_name' => 'アプリケーション名',
'backup_name' => 'バックアップ名',
'disk' => 'ディスク',
'newest_backup_size' => '最新のバックアップサイズ',
'number_of_backups' => 'バックアップ数',
'total_storage_used' => '使用された合計ストレージ',
'newest_backup_date' => '最新のバックアップ日時',
'oldest_backup_date' => '最も古いバックアップ日時',
];

View File

@@ -1,45 +0,0 @@
<?php
return [
'exception_message' => '예외 메시지: :message',
'exception_trace' => '예외 추적: :trace',
'exception_message_title' => '예외 메시지',
'exception_trace_title' => '예외 추적',
'backup_failed_subject' => ':application_name 백업 실패',
'backup_failed_body' => '중요: :application_name 백업 중 오류 발생',
'backup_successful_subject' => ':application_name 백업 성공',
'backup_successful_subject_title' => '백업이 성공적으로 완료되었습니다!',
'backup_successful_body' => '좋은 소식입니다. :disk_name 디스크에 :application_name 백업이 성공적으로 완료되었습니다.',
'cleanup_failed_subject' => ':application_name 백업 정리 실패',
'cleanup_failed_body' => ':application_name 백업 정리 중 오류 발생',
'cleanup_successful_subject' => ':application_name 백업 정리 성공',
'cleanup_successful_subject_title' => '백업 정리가 성공적으로 완료되었습니다!',
'cleanup_successful_body' => ':disk_name 디스크에 저장된 :application_name 백업 정리가 성공적으로 완료되었습니다.',
'healthy_backup_found_subject' => ':application_name 백업은 정상입니다.',
'healthy_backup_found_subject_title' => ':application_name 백업은 정상입니다.',
'healthy_backup_found_body' => ':application_name 백업은 정상입니다. 수고하셨습니다!',
'unhealthy_backup_found_subject' => '중요: :application_name 백업에 문제가 있습니다.',
'unhealthy_backup_found_subject_title' => '중요: :application_name 백업에 문제가 있습니다. :problem',
'unhealthy_backup_found_body' => ':disk_name 디스크에 :application_name 백업에 문제가 있습니다.',
'unhealthy_backup_found_not_reachable' => '백업 위치에 액세스할 수 없습니다. :error',
'unhealthy_backup_found_empty' => '이 애플리케이션에는 백업이 없습니다.',
'unhealthy_backup_found_old' => ':date에 저장된 최신 백업이 너무 오래되었습니다.',
'unhealthy_backup_found_unknown' => '죄송합니다. 예기치 않은 오류가 발생했습니다.',
'unhealthy_backup_found_full' => '백업이 디스크 공간을 다 차지하고 있습니다. 현재 사용량 :disk_usage는 허용 한도 :disk_limit을 초과합니다.',
'no_backups_info' => '아직 백업이 생성되지 않았습니다.',
'application_name' => '애플리케이션 이름',
'backup_name' => '백업 이름',
'disk' => '디스크',
'newest_backup_size' => '최신 백업 크기',
'number_of_backups' => '백업 수',
'total_storage_used' => '총 사용 스토리지',
'newest_backup_date' => '최신 백업 날짜',
'oldest_backup_date' => '가장 오래된 백업 날짜',
];

View File

@@ -1,45 +0,0 @@
<?php
return [
'exception_message' => 'Fout bericht: :message',
'exception_trace' => 'Fout trace: :trace',
'exception_message_title' => 'Fout bericht',
'exception_trace_title' => 'Fout trace',
'backup_failed_subject' => 'Back-up van :application_name mislukt',
'backup_failed_body' => 'Belangrijk: Er ging iets fout tijdens het maken van een back-up van :application_name',
'backup_successful_subject' => 'Succesvolle nieuwe back-up van :application_name',
'backup_successful_subject_title' => 'Succesvolle nieuwe back-up!',
'backup_successful_body' => 'Goed nieuws, een nieuwe back-up van :application_name was succesvol aangemaakt op de schijf genaamd :disk_name.',
'cleanup_failed_subject' => 'Het opschonen van de back-ups van :application_name is mislukt.',
'cleanup_failed_body' => 'Er ging iets fout tijdens het opschonen van de back-ups van :application_name',
'cleanup_successful_subject' => 'Opschonen van :application_name back-ups was succesvol.',
'cleanup_successful_subject_title' => 'Opschonen van back-ups was succesvol!',
'cleanup_successful_body' => 'Het opschonen van de :application_name back-ups op de schijf genaamd :disk_name was succesvol.',
'healthy_backup_found_subject' => 'De back-ups voor :application_name op schijf :disk_name zijn gezond',
'healthy_backup_found_subject_title' => 'De back-ups voor :application_name zijn gezond',
'healthy_backup_found_body' => 'De back-ups voor :application_name worden als gezond beschouwd. Goed gedaan!',
'unhealthy_backup_found_subject' => 'Belangrijk: De back-ups voor :application_name zijn niet meer gezond',
'unhealthy_backup_found_subject_title' => 'Belangrijk: De back-ups voor :application_name zijn niet gezond. :problem',
'unhealthy_backup_found_body' => 'De back-ups voor :application_name op schijf :disk_name zijn niet gezond.',
'unhealthy_backup_found_not_reachable' => 'De back-upbestemming kon niet worden bereikt. :error',
'unhealthy_backup_found_empty' => 'Er zijn geen back-ups van deze applicatie beschikbaar.',
'unhealthy_backup_found_old' => 'De laatste back-up gemaakt op :date is te oud.',
'unhealthy_backup_found_unknown' => 'Sorry, een exacte reden kon niet worden bepaald.',
'unhealthy_backup_found_full' => 'De back-ups gebruiken te veel opslagruimte. Momenteel wordt er :disk_usage gebruikt wat hoger is dan de toegestane limiet van :disk_limit.',
'no_backups_info' => 'Er zijn nog geen back-ups gemaakt',
'application_name' => 'Naam van de toepassing',
'backup_name' => 'Back-upnaam',
'disk' => 'Schijf',
'newest_backup_size' => 'Nieuwste back-upgrootte',
'number_of_backups' => 'Aantal back-ups',
'total_storage_used' => 'Totale gebruikte opslagruimte',
'newest_backup_date' => 'Datum nieuwste back-up',
'oldest_backup_date' => 'Datum oudste back-up',
];

View File

@@ -1,45 +0,0 @@
<?php
return [
'exception_message' => 'Exception: :message',
'exception_trace' => 'Exception trace: :trace',
'exception_message_title' => 'Exception',
'exception_trace_title' => 'Exception trace',
'backup_failed_subject' => 'Backup feilet for :application_name',
'backup_failed_body' => 'Viktg: En feil oppstod under backing av :application_name',
'backup_successful_subject' => 'Gjennomført backup av :application_name',
'backup_successful_subject_title' => 'Gjennomført backup!',
'backup_successful_body' => 'Gode nyheter, en ny backup av :application_name ble opprettet på disken :disk_name.',
'cleanup_failed_subject' => 'Opprydding av backup for :application_name feilet.',
'cleanup_failed_body' => 'En feil oppstod under opprydding av backups for :application_name',
'cleanup_successful_subject' => 'Opprydding av backup for :application_name gjennomført',
'cleanup_successful_subject_title' => 'Opprydding av backup gjennomført!',
'cleanup_successful_body' => 'Oppryddingen av backup for :application_name på disken :disk_name har blitt gjennomført.',
'healthy_backup_found_subject' => 'Alle backups for :application_name på disken :disk_name er OK',
'healthy_backup_found_subject_title' => 'Alle backups for :application_name er OK',
'healthy_backup_found_body' => 'Alle backups for :application_name er ok. Godt jobba!',
'unhealthy_backup_found_subject' => 'Viktig: Backups for :application_name ikke OK',
'unhealthy_backup_found_subject_title' => 'Viktig: Backups for :application_name er ikke OK. :problem',
'unhealthy_backup_found_body' => 'Backups for :application_name på disken :disk_name er ikke OK.',
'unhealthy_backup_found_not_reachable' => 'Kunne ikke finne backup-destinasjonen. :error',
'unhealthy_backup_found_empty' => 'Denne applikasjonen mangler backups.',
'unhealthy_backup_found_old' => 'Den siste backupem fra :date er for gammel.',
'unhealthy_backup_found_unknown' => 'Beklager, kunne ikke finne nøyaktig årsak.',
'unhealthy_backup_found_full' => 'Backups bruker for mye lagringsplass. Nåværende diskbruk er :disk_usage, som er mer enn den tillatte grensen på :disk_limit.',
'no_backups_info' => 'Ingen sikkerhetskopier ble gjort ennå',
'application_name' => 'Programnavn',
'backup_name' => 'Navn på sikkerhetskopi',
'disk' => 'Disk',
'newest_backup_size' => 'Nyeste backup-størrelse',
'number_of_backups' => 'Antall sikkerhetskopier',
'total_storage_used' => 'Total lagring brukt',
'newest_backup_date' => 'Nyeste backup-størrelse',
'oldest_backup_date' => 'Eldste sikkerhetskopistørrelse',
];

View File

@@ -1,45 +0,0 @@
<?php
return [
'exception_message' => 'Błąd: :message',
'exception_trace' => 'Zrzut błędu: :trace',
'exception_message_title' => 'Błąd',
'exception_trace_title' => 'Zrzut błędu',
'backup_failed_subject' => 'Tworzenie kopii zapasowej aplikacji :application_name nie powiodło się',
'backup_failed_body' => 'Ważne: Wystąpił błąd podczas tworzenia kopii zapasowej aplikacji :application_name',
'backup_successful_subject' => 'Pomyślnie utworzono kopię zapasową aplikacji :application_name',
'backup_successful_subject_title' => 'Nowa kopia zapasowa!',
'backup_successful_body' => 'Wspaniała wiadomość, nowa kopia zapasowa aplikacji :application_name została pomyślnie utworzona na dysku o nazwie :disk_name.',
'cleanup_failed_subject' => 'Czyszczenie kopii zapasowych aplikacji :application_name nie powiodło się.',
'cleanup_failed_body' => 'Wystąpił błąd podczas czyszczenia kopii zapasowej aplikacji :application_name',
'cleanup_successful_subject' => 'Kopie zapasowe aplikacji :application_name zostały pomyślnie wyczyszczone',
'cleanup_successful_subject_title' => 'Kopie zapasowe zostały pomyślnie wyczyszczone!',
'cleanup_successful_body' => 'Czyszczenie kopii zapasowych aplikacji :application_name na dysku :disk_name zakończone sukcesem.',
'healthy_backup_found_subject' => 'Kopie zapasowe aplikacji :application_name na dysku :disk_name są poprawne',
'healthy_backup_found_subject_title' => 'Kopie zapasowe aplikacji :application_name są poprawne',
'healthy_backup_found_body' => 'Kopie zapasowe aplikacji :application_name są poprawne. Dobra robota!',
'unhealthy_backup_found_subject' => 'Ważne: Kopie zapasowe aplikacji :application_name są niepoprawne',
'unhealthy_backup_found_subject_title' => 'Ważne: Kopie zapasowe aplikacji :application_name są niepoprawne. :problem',
'unhealthy_backup_found_body' => 'Kopie zapasowe aplikacji :application_name na dysku :disk_name są niepoprawne.',
'unhealthy_backup_found_not_reachable' => 'Miejsce docelowe kopii zapasowej nie jest osiągalne. :error',
'unhealthy_backup_found_empty' => 'W aplikacji nie ma żadnej kopii zapasowych tej aplikacji.',
'unhealthy_backup_found_old' => 'Ostatnia kopia zapasowa wykonania dnia :date jest zbyt stara.',
'unhealthy_backup_found_unknown' => 'Niestety, nie można ustalić dokładnego błędu.',
'unhealthy_backup_found_full' => 'Kopie zapasowe zajmują zbyt dużo miejsca. Obecne użycie dysku :disk_usage jest większe od ustalonego limitu :disk_limit.',
'no_backups_info' => 'Nie utworzono jeszcze kopii zapasowych',
'application_name' => 'Nazwa aplikacji',
'backup_name' => 'Nazwa kopii zapasowej',
'disk' => 'Dysk',
'newest_backup_size' => 'Najnowszy rozmiar kopii zapasowej',
'number_of_backups' => 'Liczba kopii zapasowych',
'total_storage_used' => 'Całkowite wykorzystane miejsce',
'newest_backup_date' => 'Najnowszy rozmiar kopii zapasowej',
'oldest_backup_date' => 'Najstarszy rozmiar kopii zapasowej',
];

View File

@@ -1,45 +0,0 @@
<?php
return [
'exception_message' => 'Mensagem de exceção: :message',
'exception_trace' => 'Rastreamento de exceção: :trace',
'exception_message_title' => 'Mensagem de exceção',
'exception_trace_title' => 'Rastreamento de exceção',
'backup_failed_subject' => 'Falha no backup da aplicação :application_name',
'backup_failed_body' => 'Importante: Ocorreu um erro ao fazer o backup da aplicação :application_name',
'backup_successful_subject' => 'Backup realizado com sucesso: :application_name',
'backup_successful_subject_title' => 'Backup Realizado com sucesso!',
'backup_successful_body' => 'Boas notícias, um novo backup da aplicação :application_name foi criado no disco :disk_name.',
'cleanup_failed_subject' => 'Falha na limpeza dos backups da aplicação :application_name.',
'cleanup_failed_body' => 'Um erro ocorreu ao fazer a limpeza dos backups da aplicação :application_name',
'cleanup_successful_subject' => 'Limpeza dos backups da aplicação :application_name concluída!',
'cleanup_successful_subject_title' => 'Limpeza dos backups concluída!',
'cleanup_successful_body' => 'A limpeza dos backups da aplicação :application_name no disco :disk_name foi concluída.',
'healthy_backup_found_subject' => 'Os backups da aplicação :application_name no disco :disk_name estão em dia',
'healthy_backup_found_subject_title' => 'Os backups da aplicação :application_name estão em dia',
'healthy_backup_found_body' => 'Os backups da aplicação :application_name estão em dia. Bom trabalho!',
'unhealthy_backup_found_subject' => 'Importante: Os backups da aplicação :application_name não estão em dia',
'unhealthy_backup_found_subject_title' => 'Importante: Os backups da aplicação :application_name não estão em dia. :problem',
'unhealthy_backup_found_body' => 'Os backups da aplicação :application_name no disco :disk_name não estão em dia.',
'unhealthy_backup_found_not_reachable' => 'O destino dos backups não pode ser alcançado. :error',
'unhealthy_backup_found_empty' => 'Não existem backups para essa aplicação.',
'unhealthy_backup_found_old' => 'O último backup realizado em :date é considerado muito antigo.',
'unhealthy_backup_found_unknown' => 'Desculpe, a exata razão não pode ser encontrada.',
'unhealthy_backup_found_full' => 'Os backups estão usando muito espaço de armazenamento. A utilização atual é de :disk_usage, o que é maior que o limite permitido de :disk_limit.',
'no_backups_info' => 'Nenhum backup foi feito ainda',
'application_name' => 'Nome da Aplicação',
'backup_name' => 'Nome de backup',
'disk' => 'Disco',
'newest_backup_size' => 'Tamanho do backup mais recente',
'number_of_backups' => 'Número de backups',
'total_storage_used' => 'Armazenamento total usado',
'newest_backup_date' => 'Data do backup mais recente',
'oldest_backup_date' => 'Data do backup mais antigo',
];

View File

@@ -1,45 +0,0 @@
<?php
return [
'exception_message' => 'Mensagem de exceção: :message',
'exception_trace' => 'Rasto da exceção: :trace',
'exception_message_title' => 'Mensagem de exceção',
'exception_trace_title' => 'Rasto da exceção',
'backup_failed_subject' => 'Falha no backup da aplicação :application_name',
'backup_failed_body' => 'Importante: Ocorreu um erro ao executar o backup da aplicação :application_name',
'backup_successful_subject' => 'Backup realizado com sucesso: :application_name',
'backup_successful_subject_title' => 'Backup Realizado com Sucesso!',
'backup_successful_body' => 'Boas notícias, foi criado um novo backup no disco :disk_name referente à aplicação :application_name.',
'cleanup_failed_subject' => 'Falha na limpeza dos backups da aplicação :application_name.',
'cleanup_failed_body' => 'Ocorreu um erro ao executar a limpeza dos backups da aplicação :application_name',
'cleanup_successful_subject' => 'Limpeza dos backups da aplicação :application_name concluída!',
'cleanup_successful_subject_title' => 'Limpeza dos backups concluída!',
'cleanup_successful_body' => 'Concluída a limpeza dos backups da aplicação :application_name no disco :disk_name.',
'healthy_backup_found_subject' => 'Os backups da aplicação :application_name no disco :disk_name estão em dia',
'healthy_backup_found_subject_title' => 'Os backups da aplicação :application_name estão em dia',
'healthy_backup_found_body' => 'Os backups da aplicação :application_name estão em dia. Bom trabalho!',
'unhealthy_backup_found_subject' => 'Importante: Os backups da aplicação :application_name não estão em dia',
'unhealthy_backup_found_subject_title' => 'Importante: Os backups da aplicação :application_name não estão em dia. :problem',
'unhealthy_backup_found_body' => 'Os backups da aplicação :application_name no disco :disk_name não estão em dia.',
'unhealthy_backup_found_not_reachable' => 'O destino dos backups não pode ser alcançado. :error',
'unhealthy_backup_found_empty' => 'Não existem backups para essa aplicação.',
'unhealthy_backup_found_old' => 'O último backup realizado em :date é demasiado antigo.',
'unhealthy_backup_found_unknown' => 'Desculpe, impossível determinar a razão exata.',
'unhealthy_backup_found_full' => 'Os backups estão a utilizar demasiado espaço de armazenamento. A utilização atual é de :disk_usage, o que é maior que o limite permitido de :disk_limit.',
'no_backups_info' => 'Nenhum backup foi feito ainda',
'application_name' => 'Nome da Aplicação',
'backup_name' => 'Nome de backup',
'disk' => 'Disco',
'newest_backup_size' => 'Tamanho de backup mais recente',
'number_of_backups' => 'Número de backups',
'total_storage_used' => 'Armazenamento total usado',
'newest_backup_date' => 'Data de backup mais recente',
'oldest_backup_date' => 'Data de backup mais antiga',
];

View File

@@ -1,45 +0,0 @@
<?php
return [
'exception_message' => 'Cu excepția mesajului: :message',
'exception_trace' => 'Urmă excepţie: :trace',
'exception_message_title' => 'Mesaj de excepție',
'exception_trace_title' => 'Urmă excepţie',
'backup_failed_subject' => 'Nu s-a putut face copie de rezervă pentru :application_name',
'backup_failed_body' => 'Important: A apărut o eroare în timpul generării copiei de rezervă pentru :application_name',
'backup_successful_subject' => 'Copie de rezervă efectuată cu succes pentru :application_name',
'backup_successful_subject_title' => 'O nouă copie de rezervă a fost efectuată cu succes!',
'backup_successful_body' => 'Vești bune, o nouă copie de rezervă pentru :application_name a fost creată cu succes pe discul cu numele :disk_name.',
'cleanup_failed_subject' => 'Curățarea copiilor de rezervă pentru :application_name nu a reușit.',
'cleanup_failed_body' => 'A apărut o eroare în timpul curățirii copiilor de rezervă pentru :application_name',
'cleanup_successful_subject' => 'Curățarea copiilor de rezervă pentru :application_name a fost făcută cu succes',
'cleanup_successful_subject_title' => 'Curățarea copiilor de rezervă a fost făcută cu succes!',
'cleanup_successful_body' => 'Curățarea copiilor de rezervă pentru :application_name de pe discul cu numele :disk_name a fost făcută cu succes.',
'healthy_backup_found_subject' => 'Copiile de rezervă pentru :application_name de pe discul :disk_name sunt în regulă',
'healthy_backup_found_subject_title' => 'Copiile de rezervă pentru :application_name sunt în regulă',
'healthy_backup_found_body' => 'Copiile de rezervă pentru :application_name sunt considerate în regulă. Bună treabă!',
'unhealthy_backup_found_subject' => 'Important: Copiile de rezervă pentru :application_name nu sunt în regulă',
'unhealthy_backup_found_subject_title' => 'Important: Copiile de rezervă pentru :application_name nu sunt în regulă. :problem',
'unhealthy_backup_found_body' => 'Copiile de rezervă pentru :application_name de pe discul :disk_name nu sunt în regulă.',
'unhealthy_backup_found_not_reachable' => 'Nu se poate ajunge la destinația copiilor de rezervă. :error',
'unhealthy_backup_found_empty' => 'Nu există copii de rezervă ale acestei aplicații.',
'unhealthy_backup_found_old' => 'Cea mai recentă copie de rezervă făcută la :date este considerată prea veche.',
'unhealthy_backup_found_unknown' => 'Ne pare rău, un motiv exact nu poate fi determinat.',
'unhealthy_backup_found_full' => 'Copiile de rezervă folosesc prea mult spațiu de stocare. Utilizarea curentă este de :disk_usage care este mai mare decât limita permisă de :disk_limit.',
'no_backups_info' => 'Nu s-au făcut încă copii de rezervă',
'application_name' => 'Numele aplicatiei',
'backup_name' => 'Numele de rezervă',
'disk' => 'Disc',
'newest_backup_size' => 'Cea mai nouă dimensiune de rezervă',
'number_of_backups' => 'Număr de copii de rezervă',
'total_storage_used' => 'Spațiu total de stocare utilizat',
'newest_backup_date' => 'Cea mai nouă dimensiune de rezervă',
'oldest_backup_date' => 'Cea mai veche dimensiune de rezervă',
];

View File

@@ -1,45 +0,0 @@
<?php
return [
'exception_message' => 'Сообщение об ошибке: :message',
'exception_trace' => 'Сведения об ошибке: :trace',
'exception_message_title' => 'Сообщение об ошибке',
'exception_trace_title' => 'Сведения об ошибке',
'backup_failed_subject' => 'Не удалось сделать резервную копию :application_name',
'backup_failed_body' => 'Внимание: Произошла ошибка во время резервного копирования :application_name',
'backup_successful_subject' => 'Успешно создана новая резервная копия :application_name',
'backup_successful_subject_title' => 'Успешно создана новая резервная копия!',
'backup_successful_body' => 'Отличная новость, новая резервная копия :application_name успешно создана и сохранена на диск :disk_name.',
'cleanup_failed_subject' => 'Не удалось очистить резервные копии :application_name',
'cleanup_failed_body' => 'Произошла ошибка при очистке резервных копий :application_name',
'cleanup_successful_subject' => 'Очистка от резервных копий :application_name прошла успешно',
'cleanup_successful_subject_title' => 'Очистка резервных копий прошла успешно!',
'cleanup_successful_body' => 'Очистка от старых резервных копий :application_name на диске :disk_name прошла успешно.',
'healthy_backup_found_subject' => 'Резервные копии :application_name с диска :disk_name исправны',
'healthy_backup_found_subject_title' => 'Резервные копии :application_name исправны',
'healthy_backup_found_body' => 'Резервные копии :application_name считаются исправными. Хорошая работа!',
'unhealthy_backup_found_subject' => 'Внимание: резервные копии :application_name неисправны',
'unhealthy_backup_found_subject_title' => 'Внимание: резервные копии для :application_name неисправны. :problem',
'unhealthy_backup_found_body' => 'Резервные копии для :application_name на диске :disk_name неисправны.',
'unhealthy_backup_found_not_reachable' => 'Не удается достичь места назначения резервной копии. :error',
'unhealthy_backup_found_empty' => 'Резервные копии для этого приложения отсутствуют.',
'unhealthy_backup_found_old' => 'Последнее резервное копирование созданное :date является устаревшим.',
'unhealthy_backup_found_unknown' => 'Извините, точная причина не может быть определена.',
'unhealthy_backup_found_full' => 'Резервные копии используют слишком много памяти. Используется :disk_usage что выше допустимого предела: :disk_limit.',
'no_backups_info' => 'Резервных копий еще не было',
'application_name' => 'Имя приложения',
'backup_name' => 'Имя резервной копии',
'disk' => 'Диск',
'newest_backup_size' => 'Размер последней резервной копии',
'number_of_backups' => 'Количество резервных копий',
'total_storage_used' => 'Общий объем используемого хранилища',
'newest_backup_date' => 'Дата последней резервной копии',
'oldest_backup_date' => 'Дата самой старой резервной копии',
];

View File

@@ -1,45 +0,0 @@
<?php
return [
'exception_message' => 'Hata mesajı: :message',
'exception_trace' => 'Hata izleri: :trace',
'exception_message_title' => 'Hata mesajı',
'exception_trace_title' => 'Hata izleri',
'backup_failed_subject' => 'Yedeklenemedi :application_name',
'backup_failed_body' => 'Önemli: Yedeklenirken bir hata oluştu :application_name',
'backup_successful_subject' => 'Başarılı :application_name yeni yedeklemesi',
'backup_successful_subject_title' => 'Başarılı bir yeni yedekleme!',
'backup_successful_body' => 'Harika bir haber, :application_name ait yeni bir yedekleme :disk_name adlı diskte başarıyla oluşturuldu.',
'cleanup_failed_subject' => ':application_name yedeklemeleri temizlenmesi başarısız.',
'cleanup_failed_body' => ':application_name yedeklerini temizlerken bir hata oluştu ',
'cleanup_successful_subject' => ':application_name yedeklemeleri temizlenmesi başarılı.',
'cleanup_successful_subject_title' => 'Yedeklerin temizlenmesi başarılı!',
'cleanup_successful_body' => ':application_name yedeklemeleri temizlenmesi, :disk_name diskinden silindi',
'healthy_backup_found_subject' => ':application_name yedeklenmesi, :disk_name adlı diskte sağlıklı',
'healthy_backup_found_subject_title' => ':application_name yedeklenmesi sağlıklı',
'healthy_backup_found_body' => ':application_name için yapılan yedeklemeler sağlıklı sayılır. Aferin!',
'unhealthy_backup_found_subject' => 'Önemli: :application_name için yedeklemeler sağlıksız',
'unhealthy_backup_found_subject_title' => 'Önemli: :application_name için yedeklemeler sağlıksız. :problem',
'unhealthy_backup_found_body' => 'Yedeklemeler: :application_name disk: :disk_name sağlıksız.',
'unhealthy_backup_found_not_reachable' => 'Yedekleme hedefine ulaşılamıyor. :error',
'unhealthy_backup_found_empty' => 'Bu uygulamanın yedekleri yok.',
'unhealthy_backup_found_old' => ':date tarihinde yapılan en son yedekleme çok eski kabul ediliyor.',
'unhealthy_backup_found_unknown' => 'Üzgünüm, kesin bir sebep belirlenemiyor.',
'unhealthy_backup_found_full' => 'Yedeklemeler çok fazla depolama alanı kullanıyor. Şu anki kullanım: :disk_usage, izin verilen sınırdan yüksek: :disk_limit.',
'no_backups_info' => 'Henüz yedekleme yapılmadı',
'application_name' => 'Uygulama Adı',
'backup_name' => 'Yedek adı',
'disk' => 'Disk',
'newest_backup_size' => 'En yeni yedekleme boyutu',
'number_of_backups' => 'Yedekleme sayısı',
'total_storage_used' => 'Kullanılan toplam depolama alanı',
'newest_backup_date' => 'En yeni yedekleme tarihi',
'oldest_backup_date' => 'En eski yedekleme tarihi',
];

View File

@@ -1,45 +0,0 @@
<?php
return [
'exception_message' => 'Повідомлення про помилку: :message',
'exception_trace' => 'Деталі помилки: :trace',
'exception_message_title' => 'Повідомлення помилки',
'exception_trace_title' => 'Деталі помилки',
'backup_failed_subject' => 'Не вдалось зробити резервну копію :application_name',
'backup_failed_body' => 'Увага: Трапилась помилка під час резервного копіювання :application_name',
'backup_successful_subject' => 'Успішне резервне копіювання :application_name',
'backup_successful_subject_title' => 'Успішно створена резервна копія!',
'backup_successful_body' => 'Чудова новина, нова резервна копія :application_name успішно створена і збережена на диск :disk_name.',
'cleanup_failed_subject' => 'Не вдалось очистити резервні копії :application_name',
'cleanup_failed_body' => 'Сталася помилка під час очищення резервних копій :application_name',
'cleanup_successful_subject' => 'Успішне очищення від резервних копій :application_name',
'cleanup_successful_subject_title' => 'Очищення резервних копій пройшло вдало!',
'cleanup_successful_body' => 'Очищенно від старих резервних копій :application_name на диску :disk_name пойшло успішно.',
'healthy_backup_found_subject' => 'Резервна копія :application_name з диску :disk_name установлена',
'healthy_backup_found_subject_title' => 'Резервна копія :application_name установлена',
'healthy_backup_found_body' => 'Резервна копія :application_name успішно установлена. Хороша робота!',
'unhealthy_backup_found_subject' => 'Увага: резервна копія :application_name не установилась',
'unhealthy_backup_found_subject_title' => 'Увага: резервна копія для :application_name не установилась. :problem',
'unhealthy_backup_found_body' => 'Резервна копія для :application_name на диску :disk_name не установилась.',
'unhealthy_backup_found_not_reachable' => 'Резервна копія не змогла установитись. :error',
'unhealthy_backup_found_empty' => 'Резервні копії для цього додатку відсутні.',
'unhealthy_backup_found_old' => 'Останнє резервне копіювання створено :date є застарілим.',
'unhealthy_backup_found_unknown' => 'Вибачте, але ми не змогли визначити точну причину.',
'unhealthy_backup_found_full' => 'Резервні копії використовують занадто багато пам`яті. Використовується :disk_usage що вище за допустиму межу :disk_limit.',
'no_backups_info' => 'Резервних копій ще не було зроблено',
'application_name' => 'Назва програми',
'backup_name' => 'Резервне ім’я',
'disk' => 'Диск',
'newest_backup_size' => 'Найновіший розмір резервної копії',
'number_of_backups' => 'Кількість резервних копій',
'total_storage_used' => 'Загальний обсяг використаного сховища',
'newest_backup_date' => 'Найновіший розмір резервної копії',
'oldest_backup_date' => 'Найстаріший розмір резервної копії',
];

View File

@@ -1,45 +0,0 @@
<?php
return [
'exception_message' => '异常信息: :message',
'exception_trace' => '异常跟踪: :trace',
'exception_message_title' => '异常信息',
'exception_trace_title' => '异常跟踪',
'backup_failed_subject' => ':application_name 备份失败',
'backup_failed_body' => '重要说明:备份 :application_name 时发生错误',
'backup_successful_subject' => ':application_name 备份成功',
'backup_successful_subject_title' => '备份成功!',
'backup_successful_body' => '好消息, :application_name 备份成功,位于磁盘 :disk_name 中。',
'cleanup_failed_subject' => '清除 :application_name 的备份失败。',
'cleanup_failed_body' => '清除备份 :application_name 时发生错误',
'cleanup_successful_subject' => '成功清除 :application_name 的备份',
'cleanup_successful_subject_title' => '成功清除备份!',
'cleanup_successful_body' => '成功清除 :disk_name 磁盘上 :application_name 的备份。',
'healthy_backup_found_subject' => ':disk_name 磁盘上 :application_name 的备份是健康的',
'healthy_backup_found_subject_title' => ':application_name 的备份是健康的',
'healthy_backup_found_body' => ':application_name 的备份是健康的。干的好!',
'unhealthy_backup_found_subject' => '重要说明::application_name 的备份不健康',
'unhealthy_backup_found_subject_title' => '重要说明::application_name 备份不健康。 :problem',
'unhealthy_backup_found_body' => ':disk_name 磁盘上 :application_name 的备份不健康。',
'unhealthy_backup_found_not_reachable' => '无法访问备份目标。 :error',
'unhealthy_backup_found_empty' => '根本没有此应用程序的备份。',
'unhealthy_backup_found_old' => '最近的备份创建于 :date ,太旧了。',
'unhealthy_backup_found_unknown' => '对不起,确切原因无法确定。',
'unhealthy_backup_found_full' => '备份占用了太多存储空间。当前占用了 :disk_usage ,高于允许的限制 :disk_limit。',
'no_backups_info' => '尚未进行任何备份',
'application_name' => '应用名称',
'backup_name' => '备份名称',
'disk' => '磁盘',
'newest_backup_size' => '最新备份大小',
'number_of_backups' => '备份数量',
'total_storage_used' => '使用的总存储量',
'newest_backup_date' => '最新备份大小',
'oldest_backup_date' => '最旧的备份大小',
];

View File

@@ -1,45 +0,0 @@
<?php
return [
'exception_message' => '異常訊息: :message',
'exception_trace' => '異常追蹤: :trace',
'exception_message_title' => '異常訊息',
'exception_trace_title' => '異常追蹤',
'backup_failed_subject' => ':application_name 備份失敗',
'backup_failed_body' => '重要說明:備份 :application_name 時發生錯誤',
'backup_successful_subject' => ':application_name 備份成功',
'backup_successful_subject_title' => '備份成功!',
'backup_successful_body' => '好消息, :application_name 備份成功,位於磁碟 :disk_name 中。',
'cleanup_failed_subject' => '清除 :application_name 的備份失敗。',
'cleanup_failed_body' => '清除備份 :application_name 時發生錯誤',
'cleanup_successful_subject' => '成功清除 :application_name 的備份',
'cleanup_successful_subject_title' => '成功清除備份!',
'cleanup_successful_body' => '成功清除 :disk_name 磁碟上 :application_name 的備份。',
'healthy_backup_found_subject' => ':disk_name 磁碟上 :application_name 的備份是健康的',
'healthy_backup_found_subject_title' => ':application_name 的備份是健康的',
'healthy_backup_found_body' => ':application_name 的備份是健康的。幹的好!',
'unhealthy_backup_found_subject' => '重要說明::application_name 的備份不健康',
'unhealthy_backup_found_subject_title' => '重要說明::application_name 備份不健康。 :problem',
'unhealthy_backup_found_body' => ':disk_name 磁碟上 :application_name 的備份不健康。',
'unhealthy_backup_found_not_reachable' => '無法訪問備份目標。 :error',
'unhealthy_backup_found_empty' => '根本沒有此應用程序的備份。',
'unhealthy_backup_found_old' => '最近的備份創建於 :date ,太舊了。',
'unhealthy_backup_found_unknown' => '對不起,確切原因無法確定。',
'unhealthy_backup_found_full' => '備份佔用了太多存儲空間。當前佔用了 :disk_usage ,高於允許的限制 :disk_limit。',
'no_backups_info' => '尚未進行任何備份',
'application_name' => '應用名稱',
'backup_name' => '備份名稱',
'disk' => '磁碟',
'newest_backup_size' => '最新備份大小',
'number_of_backups' => '備份數量',
'total_storage_used' => '使用的總存儲量',
'newest_backup_date' => '最新備份大小',
'oldest_backup_date' => '最早的備份大小',
];

View File

@@ -37,7 +37,9 @@
@if ($accessory->name) @if ($accessory->name)
<!-- accessory name --> <!-- accessory name -->
<div class="form-group"> <div class="form-group">
<label class="col-sm-3 control-label">{{ trans('admin/hardware/form.name') }}</label> <label class="col-sm-3 control-label">
{{ trans('admin/hardware/form.name') }}
</label>
<div class="col-md-6"> <div class="col-md-6">
<p class="form-control-static">{{ $accessory->name }}</p> <p class="form-control-static">{{ $accessory->name }}</p>
</div> </div>
@@ -54,11 +56,13 @@
</div> </div>
<!-- Checkout/Checkin Date --> <!-- Checkout/Checkin Date -->
<div class="form-group{{ $errors->has('checkin_at') ? ' has-error' : '' }}"> <div class="form-group{{ $errors->has('checkin_at') ? ' has-error' : '' }}">
{{ Form::label('checkin_at', trans('admin/hardware/form.checkin_date'), array('class' => 'col-md-3 control-label')) }} <label for="checkin_at" class="col-md-3 control-label">
{{ trans('admin/hardware/form.checkin_date') }}
</label>
<div class="col-md-7"> <div class="col-md-7">
<div class="input-group col-md-5 required" style="padding-left: 0px;"> <div class="input-group col-md-5 required" style="padding-left: 0px;">
<div class="input-group date" data-date-clear-btn="true" data-provide="datepicker" data-date-format="yyyy-mm-dd" data-date-end-date="0d" data-autoclose="true"> <div class="input-group date" data-date-clear-btn="true" data-provide="datepicker" data-date-format="yyyy-mm-dd" data-date-end-date="0d" data-autoclose="true">
<input type="text" class="form-control" placeholder="{{ trans('general.select_date') }}" name="checkin_at" id="checkin_at" value="{{ Request::old('checkin_at', date('Y-m-d')) }}"> <input type="text" class="form-control" placeholder="{{ trans('general.select_date') }}" name="checkin_at" id="checkin_at" value="{{ old('checkin_at', date('Y-m-d')) }}">
<span class="input-group-addon"><i class="fas fa-calendar"></i></span> <span class="input-group-addon"><i class="fas fa-calendar"></i></span>
</div> </div>
{!! $errors->first('checkin_at', '<span class="alert-msg"><i class="fas fa-times"></i> :message</span>') !!} {!! $errors->first('checkin_at', '<span class="alert-msg"><i class="fas fa-times"></i> :message</span>') !!}

View File

@@ -61,7 +61,9 @@
@if ($snipeSettings->allow_user_skin=='1') @if ($snipeSettings->allow_user_skin=='1')
<!-- Skin --> <!-- Skin -->
<div class="form-group {{ $errors->has('skin') ? 'error' : '' }}"> <div class="form-group {{ $errors->has('skin') ? 'error' : '' }}">
<label for="website" class="col-md-3 control-label">{{ Form::label('skin', trans('general.skin')) }}</label> <label for="skin" class="col-md-3 control-label">
{{ trans('general.skin') }}
</label>
<div class="col-md-8"> <div class="col-md-8">
{!! Form::user_skin('skin', old('skin', $user->skin), 'select2') !!} {!! Form::user_skin('skin', old('skin', $user->skin), 'select2') !!}
{!! $errors->first('skin', '<span class="alert-msg">:message</span>') !!} {!! $errors->first('skin', '<span class="alert-msg">:message</span>') !!}

View File

@@ -101,13 +101,13 @@
<div class="col-md-12 text-center"> <div class="col-md-12 text-center">
<img src="{{ $user->present()->gravatar() }}" class=" img-thumbnail hidden-print" style="margin-bottom: 20px;" alt="{{ $user->present()->fullName() }}"> <img src="{{ $user->present()->gravatar() }}" class=" img-thumbnail hidden-print" style="margin-bottom: 20px;" alt="{{ $user->present()->fullName() }}">
</div> </div>
@can('self.profile')
<div class="col-md-12"> <div class="col-md-12">
<a href="{{ route('profile') }}" style="width: 100%;" class="btn btn-sm btn-primary hidden-print"> <a href="{{ route('profile') }}" style="width: 100%;" class="btn btn-sm btn-primary hidden-print">
{{ trans('general.editprofile') }} {{ trans('general.editprofile') }}
</a> </a>
</div> </div>
@endcan
<div class="col-md-12" style="padding-top: 5px;"> <div class="col-md-12" style="padding-top: 5px;">
<a href="{{ route('account.password.index') }}" style="width: 100%;" class="btn btn-sm btn-primary hidden-print" target="_blank" rel="noopener"> <a href="{{ route('account.password.index') }}" style="width: 100%;" class="btn btn-sm btn-primary hidden-print" target="_blank" rel="noopener">
{{ trans('general.changepassword') }} {{ trans('general.changepassword') }}

View File

@@ -137,7 +137,7 @@
<!-- Encrypted --> <!-- Encrypted -->
<div class="col-md-9 col-md-offset-3" id="encryption_section"> <div class="col-md-9 col-md-offset-3" id="encryption_section">
<label class="form-control"> <label class="form-control">
<input type="checkbox" value="1" name="field_encrypted" id="field_encrypted"{{ (Request::old('field_encrypted') || $field->field_encrypted) ? ' checked="checked"' : '' }}> <input type="checkbox" value="1" name="field_encrypted" id="field_encrypted"{{ (old('field_encrypted') || $field->field_encrypted) ? ' checked="checked"' : '' }}>
{{ trans('admin/custom_fields/general.encrypt_field') }} {{ trans('admin/custom_fields/general.encrypt_field') }}
</label> </label>
</div> </div>

View File

@@ -17,7 +17,7 @@
</label> </label>
<div class="col-md-7 col-sm-12 {{ (Helper::checkIfRequired($item, 'months')) ? ' required' : '' }}"> <div class="col-md-7 col-sm-12 {{ (Helper::checkIfRequired($item, 'months')) ? ' required' : '' }}">
<div class="col-md-7" style="padding-left:0px"> <div class="col-md-7" style="padding-left:0px">
<input class="form-control" type="text" name="months" id="months" value="{{ Request::old('months', $item->months) }}" style="width: 80px;"{!! (\App\Helpers\Helper::checkIfRequired($item, 'months')) ? ' required' : '' !!} /> <input class="form-control" type="text" name="months" id="months" value="{{ old('months', $item->months) }}" style="width: 80px;"{!! (\App\Helpers\Helper::checkIfRequired($item, 'months')) ? ' required' : '' !!} />
{!! $errors->first('months', '<span class="alert-msg" aria-hidden="true"><i class="fa fa-times" aria-hidden="true"></i> :message</span>') !!} {!! $errors->first('months', '<span class="alert-msg" aria-hidden="true"><i class="fa fa-times" aria-hidden="true"></i> :message</span>') !!}
</div> </div>
</div> </div>
@@ -29,7 +29,7 @@
{{ trans('admin/depreciations/general.depreciation_min') }} {{ trans('admin/depreciations/general.depreciation_min') }}
</label> </label>
<div class="col-md-2" style="padding-left:0px"> <div class="col-md-2" style="padding-left:0px">
<input class="form-control" name="depreciation_min" id="depreciation_min" value="{{ Request::old('depreciation_min', $item->depreciation_min) }}" style="width: 80px; margin-left:15px" /> <input class="form-control" name="depreciation_min" id="depreciation_min" value="{{ old('depreciation_min', $item->depreciation_min) }}" style="width: 80px; margin-left:15px" />
</div> </div>
{!! $errors->first('depreciation_min', '<span class="alert-msg" aria-hidden="true"><i class="fas fa-times" aria-hidden="true"></i> :message</span>') !!} {!! $errors->first('depreciation_min', '<span class="alert-msg" aria-hidden="true"><i class="fas fa-times" aria-hidden="true"></i> :message</span>') !!}
</div> </div>

View File

@@ -35,7 +35,9 @@
<!-- Asset model --> <!-- Asset model -->
<div class="form-group{{ $errors->has('name') ? ' has-error' : '' }}"> <div class="form-group{{ $errors->has('name') ? ' has-error' : '' }}">
{{ Form::label('name', trans('admin/hardware/form.model'), array('class' => 'col-md-3 control-label')) }} <label class="col-sm-3 control-label">
{{ trans('admin/hardware/form.model') }}
</label>
<div class="col-md-8"> <div class="col-md-8">
<p class="form-control-static"> <p class="form-control-static">
@if (($asset->model) && ($asset->model->name)) @if (($asset->model) && ($asset->model->name))
@@ -57,7 +59,9 @@
<!-- Asset Name --> <!-- Asset Name -->
<div class="form-group{{ $errors->has('name') ? ' has-error' : '' }}"> <div class="form-group{{ $errors->has('name') ? ' has-error' : '' }}">
{{ Form::label('name', trans('admin/hardware/form.name'), array('class' => 'col-md-3 control-label')) }} <label for="name" class="col-sm-3 control-label">
{{ trans('general.name') }}
</label>
<div class="col-md-8"> <div class="col-md-8">
<p class="form-control-static">{{ $asset->name }}</p> <p class="form-control-static">{{ $asset->name }}</p>
</div> </div>
@@ -71,7 +75,7 @@
<div class="col-md-8 col-md-offset-3"> <div class="col-md-8 col-md-offset-3">
<label class="form-control"> <label class="form-control">
<input type="checkbox" value="1" name="update_location" {{ Request::old('update_location') == '1' ? ' checked="checked"' : '' }}> {{ trans('admin/hardware/form.asset_location') }} <input type="checkbox" value="1" name="update_location" {{ old('update_location') == '1' ? ' checked="checked"' : '' }}> {{ trans('admin/hardware/form.asset_location') }}
</label> </label>
<p class="help-block">{!! trans('help.audit_help') !!}</p> <p class="help-block">{!! trans('help.audit_help') !!}</p>
</div> </div>
@@ -99,7 +103,9 @@
<!-- Next Audit --> <!-- Next Audit -->
<div class="form-group{{ $errors->has('next_audit_date') ? ' has-error' : '' }}"> <div class="form-group{{ $errors->has('next_audit_date') ? ' has-error' : '' }}">
{{ Form::label('name', trans('general.next_audit_date'), array('class' => 'col-md-3 control-label')) }} <label for="next_audit_date" class="col-sm-3 control-label">
{{ trans('general.next_audit_date') }}
</label>
<div class="col-md-8"> <div class="col-md-8">
<div class="input-group date col-md-5" data-provide="datepicker" data-date-format="yyyy-mm-dd" data-date-clear-btn="true"> <div class="input-group date col-md-5" data-provide="datepicker" data-date-format="yyyy-mm-dd" data-date-clear-btn="true">
<input type="text" class="form-control" placeholder="{{ trans('general.next_audit_date') }}" name="next_audit_date" id="next_audit_date" value="{{ old('next_audit_date', $next_audit_date) }}"> <input type="text" class="form-control" placeholder="{{ trans('general.next_audit_date') }}" name="next_audit_date" id="next_audit_date" value="{{ old('next_audit_date', $next_audit_date) }}">
@@ -113,7 +119,9 @@
<!-- Note --> <!-- Note -->
<div class="form-group{{ $errors->has('note') ? ' has-error' : '' }}"> <div class="form-group{{ $errors->has('note') ? ' has-error' : '' }}">
{{ Form::label('note', trans('admin/hardware/form.notes'), array('class' => 'col-md-3 control-label')) }} <label for="note" class="col-sm-3 control-label">
{{ trans('general.notes') }}
</label>
<div class="col-md-8"> <div class="col-md-8">
<textarea class="col-md-6 form-control" id="note" name="note">{{ old('note', $asset->note) }}</textarea> <textarea class="col-md-6 form-control" id="note" name="note">{{ old('note', $asset->note) }}</textarea>
{!! $errors->first('note', '<span class="alert-msg" aria-hidden="true"><i class="fas fa-times" aria-hidden="true"></i> :message</span>') !!} {!! $errors->first('note', '<span class="alert-msg" aria-hidden="true"><i class="fas fa-times" aria-hidden="true"></i> :message</span>') !!}

View File

@@ -36,7 +36,9 @@
<!-- Checkout/Checkin Date --> <!-- Checkout/Checkin Date -->
<div class="form-group {{ $errors->has('checkout_at') ? 'error' : '' }}"> <div class="form-group {{ $errors->has('checkout_at') ? 'error' : '' }}">
{{ Form::label('checkout_at', trans('admin/hardware/form.checkout_date'), array('class' => 'col-md-3 control-label')) }} <label for="checkout_at" class="col-sm-3 control-label">
{{ trans('admin/hardware/form.checkout_date') }}
</label>
<div class="col-md-8"> <div class="col-md-8">
<div class="input-group date col-md-5" data-provide="datepicker" data-date-format="yyyy-mm-dd" data-date-end-date="0d" data-date-clear-btn="true"> <div class="input-group date col-md-5" data-provide="datepicker" data-date-format="yyyy-mm-dd" data-date-end-date="0d" data-date-clear-btn="true">
<input type="text" class="form-control" placeholder="{{ trans('general.select_date') }}" name="checkout_at" id="checkout_at" value="{{ old('checkout_at') }}"> <input type="text" class="form-control" placeholder="{{ trans('general.select_date') }}" name="checkout_at" id="checkout_at" value="{{ old('checkout_at') }}">
@@ -48,7 +50,9 @@
<!-- Expected Checkin Date --> <!-- Expected Checkin Date -->
<div class="form-group {{ $errors->has('expected_checkin') ? 'error' : '' }}"> <div class="form-group {{ $errors->has('expected_checkin') ? 'error' : '' }}">
{{ Form::label('expected_checkin', trans('admin/hardware/form.expected_checkin'), array('class' => 'col-md-3 control-label')) }} <label for="expected_checkin" class="col-sm-3 control-label">
{{ trans('admin/hardware/form.expected_checkin') }}
</label>
<div class="col-md-8"> <div class="col-md-8">
<div class="input-group date col-md-5" data-provide="datepicker" data-date-format="yyyy-mm-dd" data-date-start-date="0d" data-date-clear-btn="true"> <div class="input-group date col-md-5" data-provide="datepicker" data-date-format="yyyy-mm-dd" data-date-start-date="0d" data-date-clear-btn="true">
<input type="text" class="form-control" placeholder="{{ trans('general.select_date') }}" name="expected_checkin" id="expected_checkin" value="{{ old('expected_checkin') }}"> <input type="text" class="form-control" placeholder="{{ trans('general.select_date') }}" name="expected_checkin" id="expected_checkin" value="{{ old('expected_checkin') }}">
@@ -61,7 +65,9 @@
<!-- Note --> <!-- Note -->
<div class="form-group {{ $errors->has('note') ? 'error' : '' }}"> <div class="form-group {{ $errors->has('note') ? 'error' : '' }}">
{{ Form::label('note', trans('admin/hardware/form.notes'), array('class' => 'col-md-3 control-label')) }} <label for="note" class="col-sm-3 control-label">
{{ trans('general.notes') }}
</label>
<div class="col-md-8"> <div class="col-md-8">
<textarea class="col-md-6 form-control" id="note" name="note">{{ old('note') }}</textarea> <textarea class="col-md-6 form-control" id="note" name="note">{{ old('note') }}</textarea>
{!! $errors->first('note', '<span class="alert-msg" aria-hidden="true"><i class="fas fa-times" aria-hidden="true"></i> :message</span>') !!} {!! $errors->first('note', '<span class="alert-msg" aria-hidden="true"><i class="fas fa-times" aria-hidden="true"></i> :message</span>') !!}

View File

@@ -33,15 +33,16 @@
@if ($backto == 'user') @if ($backto == 'user')
<form class="form-horizontal" method="post" action="{{ route('hardware.checkin.store', array('assetId'=> $asset->id, 'backto'=>'user')) }}" autocomplete="off"> <form class="form-horizontal" method="post" action="{{ route('hardware.checkin.store', array('assetId'=> $asset->id, 'backto'=>'user')) }}" autocomplete="off">
@else @else
<form class="form-horizontal" method="post" <form class="form-horizontal" method="post" action="{{ route('hardware.checkin.store', array('assetId'=> $asset->id)) }}" autocomplete="off">
action="{{ route('hardware.checkin.store', array('assetId'=> $asset->id)) }}" autocomplete="off">
@endif @endif
{{csrf_field()}} {{csrf_field()}}
<!-- AssetModel name --> <!-- AssetModel name -->
<div class="form-group"> <div class="form-group">
{{ Form::label('model', trans('admin/hardware/form.model'), array('class' => 'col-md-3 control-label')) }} <label for="model" class="col-sm-3 control-label">
<div class="col-md-8"> {{ trans('admin/hardware/form.model') }}
</label>
<div class="col-md-8">
<p class="form-control-static"> <p class="form-control-static">
@if (($asset->model) && ($asset->model->name)) @if (($asset->model) && ($asset->model->name))
@@ -63,16 +64,20 @@
<!-- Asset Name --> <!-- Asset Name -->
<div class="form-group {{ $errors->has('name') ? 'error' : '' }}"> <div class="form-group {{ $errors->has('name') ? 'error' : '' }}">
{{ Form::label('name', trans('admin/hardware/form.name'), array('class' => 'col-md-3 control-label')) }} <label for="name" class="col-sm-3 control-label">
<div class="col-md-8"> {{ trans('general.name') }}
<input class="form-control" type="text" name="name" aria-label="name" id="name" value="{{ old('name', $asset->name) }}"/> </label>
{!! $errors->first('name', '<span class="alert-msg" aria-hidden="true"><i class="fas fa-times" aria-hidden="true"></i> :message</span>') !!} <div class="col-md-8">
</div> <input class="form-control" type="text" name="name" aria-label="name" id="name" value="{{ old('name', $asset->name) }}"/>
{!! $errors->first('name', '<span class="alert-msg" aria-hidden="true"><i class="fas fa-times" aria-hidden="true"></i> :message</span>') !!}
</div>
</div> </div>
<!-- Status --> <!-- Status -->
<div class="form-group {{ $errors->has('status_id') ? 'error' : '' }}"> <div class="form-group {{ $errors->has('status_id') ? 'error' : '' }}">
{{ Form::label('status_id', trans('admin/hardware/form.status'), array('class' => 'col-md-3 control-label')) }} <label for="status_id" class="col-sm-3 control-label">
{{ trans('admin/hardware/form.status') }}
</label>
<div class="col-md-8 required"> <div class="col-md-8 required">
{{ Form::select('status_id', $statusLabel_list, '', array('class'=>'select2', 'style'=>'width:100%','id' =>'modal-statuslabel_types', 'aria-label'=>'status_id')) }} {{ Form::select('status_id', $statusLabel_list, '', array('class'=>'select2', 'style'=>'width:100%','id' =>'modal-statuslabel_types', 'aria-label'=>'status_id')) }}
{!! $errors->first('status_id', '<span class="alert-msg" aria-hidden="true"><i class="fas fa-times" aria-hidden="true"></i> :message</span>') !!} {!! $errors->first('status_id', '<span class="alert-msg" aria-hidden="true"><i class="fas fa-times" aria-hidden="true"></i> :message</span>') !!}
@@ -83,8 +88,9 @@
<!-- Checkout/Checkin Date --> <!-- Checkout/Checkin Date -->
<div class="form-group{{ $errors->has('checkin_at') ? ' has-error' : '' }}"> <div class="form-group{{ $errors->has('checkin_at') ? ' has-error' : '' }}">
<label for="checkin_at" class="col-sm-3 control-label">
{{ Form::label('checkin_at', trans('admin/hardware/form.checkin_date'), array('class' => 'col-md-3 control-label')) }} {{ trans('admin/hardware/form.checkin_date') }}
</label>
<div class="col-md-8"> <div class="col-md-8">
<div class="input-group col-md-5 required"> <div class="input-group col-md-5 required">
@@ -99,7 +105,9 @@
<!-- Note --> <!-- Note -->
<div class="form-group {{ $errors->has('note') ? 'error' : '' }}"> <div class="form-group {{ $errors->has('note') ? 'error' : '' }}">
{{ Form::label('note', trans('admin/hardware/form.notes'), array('class' => 'col-md-3 control-label')) }} <label for="note" class="col-sm-3 control-label">
{{ trans('general.notes') }}
</label>
<div class="col-md-8"> <div class="col-md-8">
<textarea class="col-md-6 form-control" id="note" name="note">{{ old('note', $asset->note) }}</textarea> <textarea class="col-md-6 form-control" id="note" name="note">{{ old('note', $asset->note) }}</textarea>
{!! $errors->first('note', '<span class="alert-msg" aria-hidden="true"><i class="fas fa-times" aria-hidden="true"></i> :message</span>') !!} {!! $errors->first('note', '<span class="alert-msg" aria-hidden="true"><i class="fas fa-times" aria-hidden="true"></i> :message</span>') !!}

View File

@@ -28,7 +28,9 @@
{{csrf_field()}} {{csrf_field()}}
@if ($asset->company && $asset->company->name) @if ($asset->company && $asset->company->name)
<div class="form-group"> <div class="form-group">
{{ Form::label('model', trans('general.company'), array('class' => 'col-md-3 control-label')) }} <label for="company" class="col-md-3 control-label">
{{ trans('general.company') }}
</label>
<div class="col-md-8"> <div class="col-md-8">
<p class="form-control-static"> <p class="form-control-static">
{{ $asset->company->name }} {{ $asset->company->name }}
@@ -39,7 +41,9 @@
<!-- AssetModel name --> <!-- AssetModel name -->
<div class="form-group"> <div class="form-group">
{{ Form::label('model', trans('admin/hardware/form.model'), array('class' => 'col-md-3 control-label')) }} <label for="model" class="col-md-3 control-label">
{{ trans('general.company') }}
</label>
<div class="col-md-8"> <div class="col-md-8">
<p class="form-control-static"> <p class="form-control-static">
@if (($asset->model) && ($asset->model->name)) @if (($asset->model) && ($asset->model->name))
@@ -61,7 +65,10 @@
<!-- Asset Name --> <!-- Asset Name -->
<div class="form-group {{ $errors->has('name') ? 'error' : '' }}"> <div class="form-group {{ $errors->has('name') ? 'error' : '' }}">
{{ Form::label('name', trans('admin/hardware/form.name'), array('class' => 'col-md-3 control-label')) }} <label for="name" class="col-md-3 control-label">
{{ trans('admin/hardware/form.name') }}
</label>
<div class="col-md-8"> <div class="col-md-8">
<input class="form-control" type="text" name="name" id="name" value="{{ old('name', $asset->name) }}" tabindex="1"> <input class="form-control" type="text" name="name" id="name" value="{{ old('name', $asset->name) }}" tabindex="1">
{!! $errors->first('name', '<span class="alert-msg" aria-hidden="true"><i class="fas fa-times" aria-hidden="true"></i> :message</span>') !!} {!! $errors->first('name', '<span class="alert-msg" aria-hidden="true"><i class="fas fa-times" aria-hidden="true"></i> :message</span>') !!}
@@ -70,7 +77,9 @@
<!-- Status --> <!-- Status -->
<div class="form-group {{ $errors->has('status_id') ? 'error' : '' }}"> <div class="form-group {{ $errors->has('status_id') ? 'error' : '' }}">
{{ Form::label('status_id', trans('admin/hardware/form.status'), array('class' => 'col-md-3 control-label')) }} <label for="status_id" class="col-md-3 control-label">
{{ trans('admin/hardware/form.status') }}
</label>
<div class="col-md-7 required"> <div class="col-md-7 required">
{{ Form::select('status_id', $statusLabel_list, $asset->status_id, array('class'=>'select2', 'style'=>'width:100%','', 'aria-label'=>'status_id')) }} {{ Form::select('status_id', $statusLabel_list, $asset->status_id, array('class'=>'select2', 'style'=>'width:100%','', 'aria-label'=>'status_id')) }}
{!! $errors->first('status_id', '<span class="alert-msg" aria-hidden="true"><i class="fas fa-times" aria-hidden="true"></i> :message</span>') !!} {!! $errors->first('status_id', '<span class="alert-msg" aria-hidden="true"><i class="fas fa-times" aria-hidden="true"></i> :message</span>') !!}
@@ -90,7 +99,9 @@
<!-- Checkout/Checkin Date --> <!-- Checkout/Checkin Date -->
<div class="form-group {{ $errors->has('checkout_at') ? 'error' : '' }}"> <div class="form-group {{ $errors->has('checkout_at') ? 'error' : '' }}">
{{ Form::label('checkout_at', trans('admin/hardware/form.checkout_date'), array('class' => 'col-md-3 control-label')) }} <label for="checkout_at" class="col-md-3 control-label">
{{ trans('admin/hardware/form.checkout_date') }}
</label>
<div class="col-md-8"> <div class="col-md-8">
<div class="input-group date col-md-7" data-provide="datepicker" data-date-format="yyyy-mm-dd" data-date-end-date="0d" data-date-clear-btn="true"> <div class="input-group date col-md-7" data-provide="datepicker" data-date-format="yyyy-mm-dd" data-date-end-date="0d" data-date-clear-btn="true">
<input type="text" class="form-control" placeholder="{{ trans('general.select_date') }}" name="checkout_at" id="checkout_at" value="{{ old('checkout_at', date('Y-m-d')) }}"> <input type="text" class="form-control" placeholder="{{ trans('general.select_date') }}" name="checkout_at" id="checkout_at" value="{{ old('checkout_at', date('Y-m-d')) }}">
@@ -102,7 +113,10 @@
<!-- Expected Checkin Date --> <!-- Expected Checkin Date -->
<div class="form-group {{ $errors->has('expected_checkin') ? 'error' : '' }}"> <div class="form-group {{ $errors->has('expected_checkin') ? 'error' : '' }}">
{{ Form::label('expected_checkin', trans('admin/hardware/form.expected_checkin'), array('class' => 'col-md-3 control-label')) }} <label for="expected_checkin" class="col-md-3 control-label">
{{ trans('admin/hardware/form.expected_checkin') }}
</label>
<div class="col-md-8"> <div class="col-md-8">
<div class="input-group date col-md-7" data-provide="datepicker" data-date-format="yyyy-mm-dd" data-date-start-date="0d" data-date-clear-btn="true"> <div class="input-group date col-md-7" data-provide="datepicker" data-date-format="yyyy-mm-dd" data-date-start-date="0d" data-date-clear-btn="true">
<input type="text" class="form-control" placeholder="{{ trans('general.select_date') }}" name="expected_checkin" id="expected_checkin" value="{{ old('expected_checkin') }}"> <input type="text" class="form-control" placeholder="{{ trans('general.select_date') }}" name="expected_checkin" id="expected_checkin" value="{{ old('expected_checkin') }}">
@@ -114,7 +128,9 @@
<!-- Note --> <!-- Note -->
<div class="form-group {{ $errors->has('note') ? 'error' : '' }}"> <div class="form-group {{ $errors->has('note') ? 'error' : '' }}">
{{ Form::label('note', trans('admin/hardware/form.notes'), array('class' => 'col-md-3 control-label')) }} <label for="note" class="col-md-3 control-label">
{{ trans('general.notes') }}
</label>
<div class="col-md-8"> <div class="col-md-8">
<textarea class="col-md-6 form-control" id="note" name="note">{{ old('note', $asset->note) }}</textarea> <textarea class="col-md-6 form-control" id="note" name="note">{{ old('note', $asset->note) }}</textarea>
{!! $errors->first('note', '<span class="alert-msg" aria-hidden="true"><i class="fas fa-times" aria-hidden="true"></i> :message</span>') !!} {!! $errors->first('note', '<span class="alert-msg" aria-hidden="true"><i class="fas fa-times" aria-hidden="true"></i> :message</span>') !!}

View File

@@ -78,7 +78,7 @@
@if ($item->model && $item->model->fieldset) @if ($item->model && $item->model->fieldset)
<?php $model = $item->model; ?> <?php $model = $item->model; ?>
@endif @endif
@if (Request::old('model_id')) @if (old('model_id'))
@php @php
$model = \App\Models\AssetModel::find(old('model_id')); $model = \App\Models\AssetModel::find(old('model_id'));
@endphp @endphp

View File

@@ -87,7 +87,7 @@
<div class="form-group"> <div class="form-group">
<div class="col-sm-10 col-md-offset-2"> <div class="col-sm-10 col-md-offset-2">
<label class="form-control"> <label class="form-control">
{{ Form::checkbox('match_firstnamelastname', '1', Request::old('match_firstnamelastname')) }} {{ Form::checkbox('match_firstnamelastname', '1', old('match_firstnamelastname')) }}
<!-- enclosing span needed for the checkbox CSS to work properly, since there's HTML in the label text --> <!-- enclosing span needed for the checkbox CSS to work properly, since there's HTML in the label text -->
<span> <span>
{!! trans('admin/hardware/general.csv_import_match_f-l') !!} {!! trans('admin/hardware/general.csv_import_match_f-l') !!}
@@ -100,7 +100,7 @@
<div class="form-group"> <div class="form-group">
<div class="col-sm-10 col-md-offset-2"> <div class="col-sm-10 col-md-offset-2">
<label class="form-control"> <label class="form-control">
{{ Form::checkbox('match_flastname', '1', Request::old('match_flastname')) }} {{ Form::checkbox('match_flastname', '1', old('match_flastname')) }}
<!-- enclosing span needed for the checkbox CSS to work properly, since there's HTML in the label text --> <!-- enclosing span needed for the checkbox CSS to work properly, since there's HTML in the label text -->
<span> <span>
{!! trans('admin/hardware/general.csv_import_match_initial_last') !!} {!! trans('admin/hardware/general.csv_import_match_initial_last') !!}
@@ -113,7 +113,7 @@
<div class="form-group"> <div class="form-group">
<div class="col-sm-10 col-md-offset-2"> <div class="col-sm-10 col-md-offset-2">
<label class="form-control"> <label class="form-control">
{{ Form::checkbox('match_firstname', '1', Request::old('match_firstname')) }} {{ Form::checkbox('match_firstname', '1', old('match_firstname')) }}
<!-- enclosing span needed for the checkbox CSS to work properly, since there's HTML in the label text --> <!-- enclosing span needed for the checkbox CSS to work properly, since there's HTML in the label text -->
<span> <span>
{!! trans('admin/hardware/general.csv_import_match_first') !!} {!! trans('admin/hardware/general.csv_import_match_first') !!}
@@ -126,7 +126,7 @@
<div class="form-group"> <div class="form-group">
<div class="col-sm-10 col-md-offset-2"> <div class="col-sm-10 col-md-offset-2">
<label class="form-control"> <label class="form-control">
{{ Form::checkbox('match_email', '1', Request::old('match_email')) }} {{ Form::checkbox('match_email', '1', old('match_email')) }}
<!-- enclosing span needed for the checkbox CSS to work properly, since there's HTML in the label text --> <!-- enclosing span needed for the checkbox CSS to work properly, since there's HTML in the label text -->
<span> <span>
{!! trans('admin/hardware/general.csv_import_match_email') !!} {!! trans('admin/hardware/general.csv_import_match_email') !!}
@@ -139,7 +139,7 @@
<div class="form-group"> <div class="form-group">
<div class="col-sm-10 col-md-offset-2"> <div class="col-sm-10 col-md-offset-2">
<label class="form-control"> <label class="form-control">
{{ Form::checkbox('match_username', '1', Request::old('match_username')) }} {{ Form::checkbox('match_username', '1', old('match_username')) }}
<!-- enclosing span needed for the checkbox CSS to work properly, since there's HTML in the label text --> <!-- enclosing span needed for the checkbox CSS to work properly, since there's HTML in the label text -->
<span> <span>
{!! trans('admin/hardware/general.csv_import_match_username') !!} {!! trans('admin/hardware/general.csv_import_match_username') !!}

View File

@@ -34,7 +34,7 @@
{{ Form::label('asset_tag', trans('general.asset_tag'), array('class' => 'col-md-3 control-label', 'id' => 'checkin_tag')) }} {{ Form::label('asset_tag', trans('general.asset_tag'), array('class' => 'col-md-3 control-label', 'id' => 'checkin_tag')) }}
<div class="col-md-9"> <div class="col-md-9">
<div class="input-group date col-md-5" data-date-format="yyyy-mm-dd"> <div class="input-group date col-md-5" data-date-format="yyyy-mm-dd">
<input type="text" class="form-control" name="asset_tag" id="asset_tag" value="{{ Request::old('asset_tag') }}"> <input type="text" class="form-control" name="asset_tag" id="asset_tag" value="{{ old('asset_tag') }}">
</div> </div>
{!! $errors->first('asset_tag', '<span class="alert-msg" aria-hidden="true"><i class="fas fa-times" aria-hidden="true"></i> :message</span>') !!} {!! $errors->first('asset_tag', '<span class="alert-msg" aria-hidden="true"><i class="fas fa-times" aria-hidden="true"></i> :message</span>') !!}

View File

@@ -32,7 +32,7 @@
{{ Form::label('asset_tag', trans('general.asset_tag'), array('class' => 'col-md-3 control-label', 'id' => 'audit_tag')) }} {{ Form::label('asset_tag', trans('general.asset_tag'), array('class' => 'col-md-3 control-label', 'id' => 'audit_tag')) }}
<div class="col-md-9"> <div class="col-md-9">
<div class="input-group date col-md-5" data-date-format="yyyy-mm-dd"> <div class="input-group date col-md-5" data-date-format="yyyy-mm-dd">
<input type="text" class="form-control" name="asset_tag" id="asset_tag" value="{{ Request::old('asset_tag') }}"> <input type="text" class="form-control" name="asset_tag" id="asset_tag" value="{{ old('asset_tag') }}">
</div> </div>
{!! $errors->first('asset_tag', '<span class="alert-msg" aria-hidden="true"><i class="fas fa-times" aria-hidden="true"></i> :message</span>') !!} {!! $errors->first('asset_tag', '<span class="alert-msg" aria-hidden="true"><i class="fas fa-times" aria-hidden="true"></i> :message</span>') !!}
@@ -52,7 +52,7 @@
<input type="checkbox" value="1" name="update_location" {{ old('update_location') == '1' ? ' checked="checked"' : '' }}> {{ trans('admin/hardware/form.asset_location') }} <input type="checkbox" value="1" name="update_location" {{ old('update_location') == '1' ? ' checked="checked"' : '' }}> {{ trans('admin/hardware/form.asset_location') }}
</label> </label>
<a href="#" class="text-dark-gray" tabindex="0" role="button" data-toggle="popover" data-trigger="focus" title="<i class='far fa-life-ring'></i> More Info" data-html="true" data-content="Checking this box will edit the asset record to reflect this new location. Leaving it unchecked will simply note the location in the audit log.<br><br>Note that if this asset is checked out, it will not change the location of the person, asset or location it is checked out to."><i class="far fa-life-ring"></i></a> <a href="#" class="text-dark-gray" tabindex="0" role="button" data-toggle="popover" data-trigger="focus" title="<i class='far fa-life-ring'></i>"{{ trans('general.more_info') }} data-html="true" data-content="{{ trans('general.quickscan_bulk_help') }}"><i class="far fa-life-ring"></i></a>
</div> </div>
</div> </div>

View File

@@ -11,13 +11,13 @@
<label for="quantity" class="col-md-3 control-label">{{ trans('general.quantity') }}</label> <label for="quantity" class="col-md-3 control-label">{{ trans('general.quantity') }}</label>
<div class="col-md-7 required"> <div class="col-md-7 required">
<div class="col-md-2" style="padding-left:0px"> <div class="col-md-2" style="padding-left:0px">
<input class="form-control" type="text" name="quantity" id="quantity" value="{{ Request::old('quantity', $item->quantity) }}" /> <input class="form-control" type="text" name="quantity" id="quantity" value="{{ old('quantity', $item->quantity) }}" />
</div> </div>
{!! $errors->first('quantity', '<span class="alert-msg"><i class="fas fa-times"></i> :message</span>') !!} {!! $errors->first('quantity', '<span class="alert-msg"><i class="fas fa-times"></i> :message</span>') !!}
</div> </div>
</div> </div>
<input type="hidden" name="pivot_id" value="{{$item->id}}"> <input type="hidden" name="pivot_id" value="{{$item->id}}">
{{-- <input class="form-control" type="text" name="quantity" id="quantity" value="{{ Request::old('quantity', $item->quantity) }}" /> --}} {{-- <input class="form-control" type="text" name="quantity" id="quantity" value="{{ old('quantity', $item->quantity) }}" /> --}}
@stop @stop

View File

@@ -27,10 +27,12 @@
<!-- Checkout/Checkin Date --> <!-- Checkout/Checkin Date -->
<div class="form-group {{ $errors->has('checkout_at') ? 'error' : '' }}"> <div class="form-group {{ $errors->has('checkout_at') ? 'error' : '' }}">
{{ Form::label('name', trans('admin/hardware/form.checkout_date'), array('class' => 'col-md-3 control-label')) }} <label for="checkout_at" class="col-md-3 control-label">
{{ trans('admin/hardware/form.checkout_date') }}
</label>
<div class="col-md-8"> <div class="col-md-8">
<div class="input-group date col-md-5" data-provide="datepicker" data-date-format="yyyy-mm-dd" data-date-end-date="0d" data-date-clear-btn="true"> <div class="input-group date col-md-5" data-provide="datepicker" data-date-format="yyyy-mm-dd" data-date-end-date="0d" data-date-clear-btn="true">
<input type="text" class="form-control" placeholder="{{ trans('general.select_date') }}" name="checkout_at" id="checkout_at" value="{{ Request::old('checkout_at') }}"> <input type="text" class="form-control" placeholder="{{ trans('general.select_date') }}" name="checkout_at" id="checkout_at" value="{{ old('checkout_at') }}">
<span class="input-group-addon"><i class="fas fa-calendar"></i></span> <span class="input-group-addon"><i class="fas fa-calendar"></i></span>
</div> </div>
{!! $errors->first('checkout_at', '<span class="alert-msg"><i class="fas fa-times"></i> :message</span>') !!} {!! $errors->first('checkout_at', '<span class="alert-msg"><i class="fas fa-times"></i> :message</span>') !!}
@@ -39,10 +41,12 @@
<!-- Expected Checkin Date --> <!-- Expected Checkin Date -->
<div class="form-group {{ $errors->has('expected_checkin') ? 'error' : '' }}"> <div class="form-group {{ $errors->has('expected_checkin') ? 'error' : '' }}">
{{ Form::label('name', trans('admin/hardware/form.expected_checkin'), array('class' => 'col-md-3 control-label')) }} <label for="expected_checkin" class="col-md-3 control-label">
{{ trans('admin/hardware/form.expected_checkin') }}
</label>
<div class="col-md-8"> <div class="col-md-8">
<div class="input-group date col-md-5" data-provide="datepicker" data-date-format="yyyy-mm-dd" data-date-start-date="0d"> <div class="input-group date col-md-5" data-provide="datepicker" data-date-format="yyyy-mm-dd" data-date-start-date="0d">
<input type="text" class="form-control" placeholder="{{ trans('general.select_date') }}" name="expected_checkin" id="expected_checkin" value="{{ Request::old('expected_checkin') }}"> <input type="text" class="form-control" placeholder="{{ trans('general.select_date') }}" name="expected_checkin" id="expected_checkin" value="{{ old('expected_checkin') }}">
<span class="input-group-addon"><i class="fas fa-calendar"></i></span> <span class="input-group-addon"><i class="fas fa-calendar"></i></span>
</div> </div>
{!! $errors->first('expected_checkin', '<span class="alert-msg"><i class="fas fa-times"></i> :message</span>') !!} {!! $errors->first('expected_checkin', '<span class="alert-msg"><i class="fas fa-times"></i> :message</span>') !!}
@@ -52,9 +56,11 @@
<!-- Note --> <!-- Note -->
<div class="form-group {{ $errors->has('note') ? 'error' : '' }}"> <div class="form-group {{ $errors->has('note') ? 'error' : '' }}">
{{ Form::label('note', trans('admin/hardware/form.notes'), array('class' => 'col-md-3 control-label')) }} <label for="note" class="col-md-3 control-label">
{{ trans('general.notes') }}
</label>
<div class="col-md-8"> <div class="col-md-8">
<textarea class="col-md-6 form-control" id="note" name="note">{{ Request::old('note') }}</textarea> <textarea class="col-md-6 form-control" id="note" name="note">{{ old('note') }}</textarea>
{!! $errors->first('note', '<span class="alert-msg"><i class="fas fa-times"></i> :message</span>') !!} {!! $errors->first('note', '<span class="alert-msg"><i class="fas fa-times"></i> :message</span>') !!}
</div> </div>
</div> </div>

View File

@@ -12,13 +12,13 @@
<label for="quantity" class="col-md-3 control-label">{{ trans('general.quantity') }}</label> <label for="quantity" class="col-md-3 control-label">{{ trans('general.quantity') }}</label>
<div class="col-md-7 required"> <div class="col-md-7 required">
<div class="col-md-2" style="padding-left:0px"> <div class="col-md-2" style="padding-left:0px">
<input class="form-control" type="text" name="quantity" id="quantity" value="{{ Request::old('quantity', $item->quantity) }}" /> <input class="form-control" type="text" name="quantity" id="quantity" value="{{ old('quantity', $item->quantity) }}" />
</div> </div>
{!! $errors->first('quantity', '<span class="alert-msg"><i class="fas fa-times"></i> :message</span>') !!} {!! $errors->first('quantity', '<span class="alert-msg"><i class="fas fa-times"></i> :message</span>') !!}
</div> </div>
</div> </div>
<input type="hidden" name="pivot_id" value="{{$item->id}}"> <input type="hidden" name="pivot_id" value="{{$item->id}}">
{{-- <input class="form-control" type="text" name="quantity" id="quantity" value="{{ Request::old('quantity', $item->quantity) }}" /> --}} {{-- <input class="form-control" type="text" name="quantity" id="quantity" value="{{ old('quantity', $item->quantity) }}" /> --}}
@stop @stop

View File

@@ -11,13 +11,13 @@
<label for="quantity" class="col-md-3 control-label">{{ trans('general.quantity') }}</label> <label for="quantity" class="col-md-3 control-label">{{ trans('general.quantity') }}</label>
<div class="col-md-7 required"> <div class="col-md-7 required">
<div class="col-md-2" style="padding-left:0px"> <div class="col-md-2" style="padding-left:0px">
<input class="form-control" type="text" name="quantity" id="quantity" value="{{ Request::old('quantity', $item->quantity) }}" /> <input class="form-control" type="text" name="quantity" id="quantity" value="{{ old('quantity', $item->quantity) }}" />
</div> </div>
{!! $errors->first('quantity', '<span class="alert-msg"><i class="fas fa-times"></i> :message</span>') !!} {!! $errors->first('quantity', '<span class="alert-msg"><i class="fas fa-times"></i> :message</span>') !!}
</div> </div>
</div> </div>
<input type="hidden" name="pivot_id" value="{{$item->id}}"> <input type="hidden" name="pivot_id" value="{{$item->id}}">
{{-- <input class="form-control" type="text" name="quantity" id="quantity" value="{{ Request::old('quantity', $item->quantity) }}" /> --}} {{-- <input class="form-control" type="text" name="quantity" id="quantity" value="{{ old('quantity', $item->quantity) }}" /> --}}
@stop @stop

View File

@@ -11,13 +11,13 @@
<label for="quantity" class="col-md-3 control-label">{{ trans('general.quantity') }}</label> <label for="quantity" class="col-md-3 control-label">{{ trans('general.quantity') }}</label>
<div class="col-md-7 required"> <div class="col-md-7 required">
<div class="col-md-2" style="padding-left:0px"> <div class="col-md-2" style="padding-left:0px">
<input class="form-control" type="text" name="quantity" id="quantity" value="{{ Request::old('quantity', $item->quantity) }}" /> <input class="form-control" type="text" name="quantity" id="quantity" value="{{ old('quantity', $item->quantity) }}" />
</div> </div>
{!! $errors->first('quantity', '<span class="alert-msg"><i class="fas fa-times"></i> :message</span>') !!} {!! $errors->first('quantity', '<span class="alert-msg"><i class="fas fa-times"></i> :message</span>') !!}
</div> </div>
</div> </div>
<input type="hidden" name="pivot_id" value="{{$item->id}}"> <input type="hidden" name="pivot_id" value="{{$item->id}}">
{{-- <input class="form-control" type="text" name="quantity" id="quantity" value="{{ Request::old('quantity', $item->quantity) }}" /> --}} {{-- <input class="form-control" type="text" name="quantity" id="quantity" value="{{ old('quantity', $item->quantity) }}" /> --}}
@stop @stop

View File

@@ -19,7 +19,6 @@
} }
}; };
</script> </script>
@livewireStyles
@if (($snipeSettings) && ($snipeSettings->header_color)) @if (($snipeSettings) && ($snipeSettings->header_color))
@@ -74,7 +73,6 @@
@stack('js') @stack('js')
@livewireScripts
</body> </body>
</html> </html>

View File

@@ -83,7 +83,7 @@ dir="{{ in_array(app()->getLocale(),['ar-SA','fa-IR', 'he-IL']) ? 'rtl' : 'ltr'
<script src="{{ url(asset('js/html5shiv.js')) }}" nonce="{{ csrf_token() }}"></script> <script src="{{ url(asset('js/html5shiv.js')) }}" nonce="{{ csrf_token() }}"></script>
<script src="{{ url(asset('js/respond.js')) }}" nonce="{{ csrf_token() }}"></script> <script src="{{ url(asset('js/respond.js')) }}" nonce="{{ csrf_token() }}"></script>
@livewireStyles
</head> </head>
@@ -324,7 +324,7 @@ dir="{{ in_array(app()->getLocale(),['ar-SA','fa-IR', 'he-IL']) ? 'rtl' : 'ltr'
<img src="{{ Auth::user()->present()->gravatar() }}" class="user-image" <img src="{{ Auth::user()->present()->gravatar() }}" class="user-image"
alt=""> alt="">
@else @else
<i class="fas fa-users" aria-hidden="true"></i> <i class="fas fa-user" aria-hidden="true"></i>
@endif @endif
<span class="hidden-xs">{{ Auth::user()->getFullNameAttribute() }} <strong <span class="hidden-xs">{{ Auth::user()->getFullNameAttribute() }} <strong
@@ -949,7 +949,6 @@ dir="{{ in_array(app()->getLocale(),['ar-SA','fa-IR', 'he-IL']) ? 'rtl' : 'ltr'
{{-- Javascript files --}} {{-- Javascript files --}}
<script src="{{ url(mix('js/dist/all.js')) }}" nonce="{{ csrf_token() }}"></script> <script src="{{ url(mix('js/dist/all.js')) }}" nonce="{{ csrf_token() }}"></script>
<script defer src="{{ url(mix('js/dist/all-defer.js')) }}" nonce="{{ csrf_token() }}"></script>
<!-- v5-beta: This pGenerator call must remain here for v5 - until fixed - so that the JS password generator works for the user create modal. --> <!-- v5-beta: This pGenerator call must remain here for v5 - until fixed - so that the JS password generator works for the user create modal. -->
<script src="{{ url('js/pGenerator.jquery.js') }}"></script> <script src="{{ url('js/pGenerator.jquery.js') }}"></script>
@@ -1128,7 +1127,6 @@ dir="{{ in_array(app()->getLocale(),['ar-SA','fa-IR', 'he-IL']) ? 'rtl' : 'ltr'
@include('partials.bpay') @include('partials.bpay')
@livewireScripts
</body> </body>
</html> </html>

View File

@@ -28,7 +28,7 @@
<label for="seats" class="col-md-3 control-label">{{ trans('admin/licenses/form.seats') }}</label> <label for="seats" class="col-md-3 control-label">{{ trans('admin/licenses/form.seats') }}</label>
<div class="col-md-7 col-sm-12 required"> <div class="col-md-7 col-sm-12 required">
<div class="col-md-2" style="padding-left:0px"> <div class="col-md-2" style="padding-left:0px">
<input class="form-control" type="text" name="seats" id="seats" value="{{ Request::old('seats', $item->seats) }}" /> <input class="form-control" type="text" name="seats" id="seats" value="{{ old('seats', $item->seats) }}" />
</div> </div>
</div> </div>
{!! $errors->first('seats', '<div class="col-md-8 col-md-offset-3"><span class="alert-msg" aria-hidden="true"><i class="fas fa-times" aria-hidden="true"></i> :message</span></div>') !!} {!! $errors->first('seats', '<div class="col-md-8 col-md-offset-3"><span class="alert-msg" aria-hidden="true"><i class="fas fa-times" aria-hidden="true"></i> :message</span></div>') !!}

View File

@@ -3,13 +3,13 @@
<div class="form-group {{ $errors->has('eula_text') ? 'error' : '' }}"> <div class="form-group {{ $errors->has('eula_text') ? 'error' : '' }}">
<label for="eula_text" class="col-md-3 control-label">{{ trans('admin/categories/general.eula_text') }}</label> <label for="eula_text" class="col-md-3 control-label">{{ trans('admin/categories/general.eula_text') }}</label>
<div class="col-md-7"> <div class="col-md-7">
{{ Form::textarea('eula_text', null, ['wire:model' => 'eulaText', 'class' => 'form-control', 'aria-label'=>'eula_text', 'disabled' => $this->eulaTextDisabled]) }} {{ Form::textarea('eula_text', null, ['wire:model.live' => 'eulaText', 'class' => 'form-control', 'aria-label'=>'eula_text', 'disabled' => $this->eulaTextDisabled]) }}
<p class="help-block">{!! trans('admin/categories/general.eula_text_help') !!} </p> <p class="help-block">{!! trans('admin/categories/general.eula_text_help') !!} </p>
<p class="help-block">{!! trans('admin/settings/general.eula_markdown') !!} </p> <p class="help-block">{!! trans('admin/settings/general.eula_markdown') !!} </p>
{!! $errors->first('eula_text', '<span class="alert-msg" aria-hidden="true">:message</span>') !!} {!! $errors->first('eula_text', '<span class="alert-msg" aria-hidden="true">:message</span>') !!}
</div> </div>
@if ($this->eulaTextDisabled) @if ($this->eulaTextDisabled)
<input type="hidden" name="eula_text" wire:model="eulaText" /> <input type="hidden" name="eula_text" wire:model.live="eulaText" />
@endif @endif
</div> </div>
@@ -18,12 +18,12 @@
<div class="col-md-9 col-md-offset-3"> <div class="col-md-9 col-md-offset-3">
@if ($defaultEulaText!='') @if ($defaultEulaText!='')
<label class="form-control"> <label class="form-control">
{{ Form::checkbox('use_default_eula', '1', null, ['wire:model' => 'useDefaultEula', 'aria-label'=>'use_default_eula']) }} {{ Form::checkbox('use_default_eula', '1', $useDefaultEula, ['wire:model.live' => 'useDefaultEula', 'aria-label'=>'use_default_eula']) }}
<span>{!! trans('admin/categories/general.use_default_eula') !!}</span> <span>{!! trans('admin/categories/general.use_default_eula') !!}</span>
</label> </label>
@else @else
<label class="form-control form-control--disabled"> <label class="form-control form-control--disabled">
{{ Form::checkbox('use_default_eula', '0', null, ['wire:model' => 'useDefaultEula', 'class'=>'disabled','disabled' => 'disabled', 'aria-label'=>'use_default_eula']) }} {{ Form::checkbox('use_default_eula', '0', $useDefaultEula, ['wire:model.live' => 'useDefaultEula', 'class'=>'disabled','disabled' => 'disabled', 'aria-label'=>'use_default_eula']) }}
<span>{!! trans('admin/categories/general.use_default_eula_disabled') !!}</span> <span>{!! trans('admin/categories/general.use_default_eula_disabled') !!}</span>
</label> </label>
@endif @endif
@@ -34,7 +34,7 @@
<div class="form-group"> <div class="form-group">
<div class="col-md-9 col-md-offset-3"> <div class="col-md-9 col-md-offset-3">
<label class="form-control"> <label class="form-control">
{{ Form::checkbox('require_acceptance', '1', null, ['wire:model' => 'requireAcceptance', 'aria-label'=>'require_acceptance']) }} {{ Form::checkbox('require_acceptance', '1', $requireAcceptance, ['wire:model.live' => 'requireAcceptance', 'aria-label'=>'require_acceptance']) }}
{{ trans('admin/categories/general.require_acceptance') }} {{ trans('admin/categories/general.require_acceptance') }}
</label> </label>
</div> </div>
@@ -44,7 +44,7 @@
<div class="form-group"> <div class="form-group">
<div class="col-md-9 col-md-offset-3"> <div class="col-md-9 col-md-offset-3">
<label class="form-control"> <label class="form-control">
{{ Form::checkbox('checkin_email', '1', null, ['wire:model' => 'sendCheckInEmail', 'aria-label'=>'checkin_email', 'disabled' => $this->sendCheckInEmailDisabled]) }} {{ Form::checkbox('checkin_email', '1', $sendCheckInEmail, ['wire:model.live' => 'sendCheckInEmail', 'aria-label'=>'checkin_email', 'disabled' => $this->sendCheckInEmailDisabled]) }}
{{ trans('admin/categories/general.checkin_email') }} {{ trans('admin/categories/general.checkin_email') }}
</label> </label>
@if ($this->shouldDisplayEmailMessage) @if ($this->shouldDisplayEmailMessage)
@@ -54,7 +54,7 @@
</div> </div>
@endif @endif
@if ($this->sendCheckInEmailDisabled) @if ($this->sendCheckInEmailDisabled)
<input type="hidden" name="checkin_email" wire:model="sendCheckInEmail" /> <input type="hidden" name="checkin_email" wire:model.live="sendCheckInEmail" />
@endif @endif
</div> </div>
</div> </div>

View File

@@ -5,12 +5,12 @@
{{ trans('admin/models/general.fieldset') }} {{ trans('admin/models/general.fieldset') }}
</label> </label>
<div class="col-md-5"> <div class="col-md-5">
{{ Form::select('fieldset_id', Helper::customFieldsetList(), old('fieldset_id', $fieldset_id), array('class'=>'select2 js-fieldset-field livewire-select2', 'style'=>'width:100%; min-width:350px', 'aria-label'=>'custom_fieldset', 'data-livewire-component' => $_instance->id)) }} {{ Form::select('fieldset_id', Helper::customFieldsetList(), old('fieldset_id', $fieldset_id), array('class'=>'select2 js-fieldset-field livewire-select2', 'style'=>'width:100%; min-width:350px', 'aria-label'=>'custom_fieldset', 'data-livewire-component' => $this->getId())) }}
{!! $errors->first('custom_fieldset', '<span class="alert-msg" aria-hidden="true"><br><i class="fas fa-times"></i> :message</span>') !!} {!! $errors->first('custom_fieldset', '<span class="alert-msg" aria-hidden="true"><br><i class="fas fa-times"></i> :message</span>') !!}
</div> </div>
<div class="col-md-3"> <div class="col-md-3">
<label class="form-control"> <label class="form-control">
{{ Form::checkbox('add_default_values', 1, old('add_default_values', $add_default_values), ['data-livewire-component' => $_instance->id, 'id' => 'add_default_values', 'wire:model' => 'add_default_values']) }} {{ Form::checkbox('add_default_values', 1, old('add_default_values', $add_default_values), ['data-livewire-component' => $this->getId(), 'id' => 'add_default_values', 'wire:model.live' => 'add_default_values']) }}
{{ trans('admin/models/general.add_default_values') }} {{ trans('admin/models/general.add_default_values') }}
</label> </label>
</div> </div>

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