From bb013d5c3c670e121d81565bef4a49ecabcbb71f Mon Sep 17 00:00:00 2001 From: ak-piracha Date: Sun, 21 May 2023 22:49:00 +0930 Subject: [PATCH 01/36] Bulk Consumable Checkout --- .../Consumables/ConsumableCheckoutController.php | 5 +++-- resources/views/consumables/checkout.blade.php | 12 ++++++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/Consumables/ConsumableCheckoutController.php b/app/Http/Controllers/Consumables/ConsumableCheckoutController.php index 6585624d8..2eae0b9d2 100644 --- a/app/Http/Controllers/Consumables/ConsumableCheckoutController.php +++ b/app/Http/Controllers/Consumables/ConsumableCheckoutController.php @@ -58,7 +58,7 @@ class ConsumableCheckoutController extends Controller $this->authorize('checkout', $consumable); // Make sure there is at least one available to checkout - if ($consumable->numRemaining() <= 0) { + if ($consumable->numRemaining() <= 0 || $request->qty > $consumable->numRemaining()) { return redirect()->route('consumables.index')->with('error', trans('admin/consumables/message.checkout.unavailable')); } @@ -75,13 +75,14 @@ class ConsumableCheckoutController extends Controller // Update the consumable data $consumable->assigned_to = e($request->input('assigned_to')); + for($i = 0; $i < $request->qty; $i++){ $consumable->users()->attach($consumable->id, [ 'consumable_id' => $consumable->id, 'user_id' => $admin_user->id, 'assigned_to' => e($request->input('assigned_to')), 'note' => $request->input('note'), ]); - + } event(new CheckoutableCheckedOut($consumable, $user, Auth::user(), $request->input('note'))); // Redirect to the new consumable page diff --git a/resources/views/consumables/checkout.blade.php b/resources/views/consumables/checkout.blade.php index bc17e893a..29f8056c8 100644 --- a/resources/views/consumables/checkout.blade.php +++ b/resources/views/consumables/checkout.blade.php @@ -66,6 +66,18 @@ @endif + + +
+ +
+
+ +
+
+ {!! $errors->first('qty', '
') !!} +
+
From 457f4c410a2c51ce4a93038535ac0d284498f394 Mon Sep 17 00:00:00 2001 From: ak-piracha Date: Sun, 21 May 2023 23:11:03 +0930 Subject: [PATCH 02/36] add check for default consumable qty --- .../Consumables/ConsumableCheckoutController.php | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/Consumables/ConsumableCheckoutController.php b/app/Http/Controllers/Consumables/ConsumableCheckoutController.php index 2eae0b9d2..0840b52b8 100644 --- a/app/Http/Controllers/Consumables/ConsumableCheckoutController.php +++ b/app/Http/Controllers/Consumables/ConsumableCheckoutController.php @@ -57,8 +57,14 @@ class ConsumableCheckoutController extends Controller $this->authorize('checkout', $consumable); + // If the quantity is not present in the request or is not a positive integer, set it to 1 + $quantity = $request->input('qty'); + if (!isset($quantity) || !ctype_digit((string)$quantity) || $quantity <= 0) { + $quantity = 1; + } + // Make sure there is at least one available to checkout - if ($consumable->numRemaining() <= 0 || $request->qty > $consumable->numRemaining()) { + if ($consumable->numRemaining() <= 0 || $quantity > $consumable->numRemaining()) { return redirect()->route('consumables.index')->with('error', trans('admin/consumables/message.checkout.unavailable')); } @@ -75,7 +81,7 @@ class ConsumableCheckoutController extends Controller // Update the consumable data $consumable->assigned_to = e($request->input('assigned_to')); - for($i = 0; $i < $request->qty; $i++){ + for($i = 0; $i < $quantity; $i++){ $consumable->users()->attach($consumable->id, [ 'consumable_id' => $consumable->id, 'user_id' => $admin_user->id, From 9770016eec8959158c1eb81f0c97e0a870a6228f Mon Sep 17 00:00:00 2001 From: akemidx Date: Tue, 28 Nov 2023 17:47:36 -0500 Subject: [PATCH 03/36] beginning of permission groups export --- app/Http/Controllers/Users/UsersController.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/Users/UsersController.php b/app/Http/Controllers/Users/UsersController.php index 2655e50f7..5f3875ffd 100755 --- a/app/Http/Controllers/Users/UsersController.php +++ b/app/Http/Controllers/Users/UsersController.php @@ -565,12 +565,14 @@ class UsersController extends Controller trans('general.licenses'), trans('general.accessories'), trans('general.consumables'), - trans('admin/users/table.groups'), + trans('general.groups'), trans('general.notes'), trans('admin/users/table.activated'), trans('general.created_at'), ]; + //add if else for admin permissions. the admin permissions will allow a user to see permissions a user has in the export + fputcsv($handle, $headers); foreach ($users as $user) { From 2a54797dce3411ada76bdce03b9c1f013c0a9bf0 Mon Sep 17 00:00:00 2001 From: akemidx Date: Tue, 28 Nov 2023 17:58:37 -0500 Subject: [PATCH 04/36] permission level proof of formatting --- app/Http/Controllers/Users/UsersController.php | 3 +++ resources/lang/en/general.php | 1 + 2 files changed, 4 insertions(+) diff --git a/app/Http/Controllers/Users/UsersController.php b/app/Http/Controllers/Users/UsersController.php index 5f3875ffd..55259d9be 100755 --- a/app/Http/Controllers/Users/UsersController.php +++ b/app/Http/Controllers/Users/UsersController.php @@ -566,12 +566,14 @@ class UsersController extends Controller trans('general.accessories'), trans('general.consumables'), trans('general.groups'), + trans('general.permission_level'), trans('general.notes'), trans('admin/users/table.activated'), trans('general.created_at'), ]; //add if else for admin permissions. the admin permissions will allow a user to see permissions a user has in the export + // fputcsv($handle, $headers); @@ -599,6 +601,7 @@ class UsersController extends Controller $user->accessories->count(), $user->consumables->count(), $user_groups, + $user->permissions, $user->notes, ($user->activated == '1') ? trans('general.yes') : trans('general.no'), $user->created_at, diff --git a/resources/lang/en/general.php b/resources/lang/en/general.php index a568e0043..13a5f42da 100644 --- a/resources/lang/en/general.php +++ b/resources/lang/en/general.php @@ -142,6 +142,7 @@ return [ 'generate_labels' => 'Generate Labels', 'github_markdown' => 'This field accepts Github flavored markdown.', 'groups' => 'Groups', + 'permission_level' => 'Permission Level', 'gravatar_email' => 'Gravatar Email Address', 'gravatar_url' => 'Change your avatar at Gravatar.com.', 'history' => 'History', From f7d0cecdac08f823f93ee42ce450a530fae279ec Mon Sep 17 00:00:00 2001 From: akemidx Date: Mon, 12 Feb 2024 19:01:06 -0500 Subject: [PATCH 05/36] permissions query starto --- app/Http/Controllers/Users/UsersController.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/Users/UsersController.php b/app/Http/Controllers/Users/UsersController.php index 55259d9be..5fb720cf9 100755 --- a/app/Http/Controllers/Users/UsersController.php +++ b/app/Http/Controllers/Users/UsersController.php @@ -601,7 +601,8 @@ class UsersController extends Controller $user->accessories->count(), $user->consumables->count(), $user_groups, - $user->permissions, + $user->permissions, // ? $user->permissions->where('permissions', 'LIKE', '%"1"%') : '', + //where json like '%"category":"Category Example"% $user->notes, ($user->activated == '1') ? trans('general.yes') : trans('general.no'), $user->created_at, From 8bbf6da052d6722f18e6cff18c7caa9d358a3602 Mon Sep 17 00:00:00 2001 From: akemidx Date: Tue, 20 Feb 2024 18:25:41 -0500 Subject: [PATCH 06/36] user block, trying to pick out ONLY permissions we wanna see --- app/Http/Controllers/Users/UsersController.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/Users/UsersController.php b/app/Http/Controllers/Users/UsersController.php index 5fb720cf9..69b9fd0dd 100755 --- a/app/Http/Controllers/Users/UsersController.php +++ b/app/Http/Controllers/Users/UsersController.php @@ -584,6 +584,8 @@ class UsersController extends Controller $user_groups .= $user_group->name.', '; } + $userperm = User::where('permissions','LIKE','%admin%'); + // Add a new row with data $values = [ $user->id, @@ -601,7 +603,8 @@ class UsersController extends Controller $user->accessories->count(), $user->consumables->count(), $user_groups, - $user->permissions, // ? $user->permissions->where('permissions', 'LIKE', '%"1"%') : '', + $userperm ? $user->permissions : '', + //$user->permissions, // ? $user->permissions->where('permissions', 'LIKE', '%"1"%') : '', //where json like '%"category":"Category Example"% $user->notes, ($user->activated == '1') ? trans('general.yes') : trans('general.no'), From 9397372f87878966c772da48be8c6c6684eef288 Mon Sep 17 00:00:00 2001 From: akemidx Date: Tue, 20 Feb 2024 18:48:17 -0500 Subject: [PATCH 07/36] permissions, but they are now all in their own column because reasons??? --- app/Http/Controllers/Users/UsersController.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/Users/UsersController.php b/app/Http/Controllers/Users/UsersController.php index 69b9fd0dd..6fced9b26 100755 --- a/app/Http/Controllers/Users/UsersController.php +++ b/app/Http/Controllers/Users/UsersController.php @@ -584,7 +584,7 @@ class UsersController extends Controller $user_groups .= $user_group->name.', '; } - $userperm = User::where('permissions','LIKE','%admin%'); + $userperm = User::where('permissions','LIKE','%admin%')->pluck('permissions'); // Add a new row with data $values = [ @@ -603,7 +603,7 @@ class UsersController extends Controller $user->accessories->count(), $user->consumables->count(), $user_groups, - $userperm ? $user->permissions : '', + $user->permissions ? $userperm : '', //$user->permissions, // ? $user->permissions->where('permissions', 'LIKE', '%"1"%') : '', //where json like '%"category":"Category Example"% $user->notes, From 5ffade663aef075cb2032e832300ff32d670e949 Mon Sep 17 00:00:00 2001 From: akemidx Date: Mon, 26 Feb 2024 18:41:58 -0500 Subject: [PATCH 08/36] unstash --- app/Http/Controllers/Users/UsersController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Http/Controllers/Users/UsersController.php b/app/Http/Controllers/Users/UsersController.php index 6fced9b26..6ca3fc507 100755 --- a/app/Http/Controllers/Users/UsersController.php +++ b/app/Http/Controllers/Users/UsersController.php @@ -584,7 +584,7 @@ class UsersController extends Controller $user_groups .= $user_group->name.', '; } - $userperm = User::where('permissions','LIKE','%admin%')->pluck('permissions'); + $userperm = User::where('permissions','LIKE','%1%')->pluck('id'); // Add a new row with data $values = [ From e6b366020a8c2e162bf3512bb3e5dc70a4a05993 Mon Sep 17 00:00:00 2001 From: akemidx Date: Wed, 27 Mar 2024 19:05:59 -0400 Subject: [PATCH 09/36] lots of attempts and syntax, but no go --- app/Http/Controllers/Users/UsersController.php | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/app/Http/Controllers/Users/UsersController.php b/app/Http/Controllers/Users/UsersController.php index 6ca3fc507..d633a4e3f 100755 --- a/app/Http/Controllers/Users/UsersController.php +++ b/app/Http/Controllers/Users/UsersController.php @@ -584,7 +584,7 @@ class UsersController extends Controller $user_groups .= $user_group->name.', '; } - $userperm = User::where('permissions','LIKE','%1%')->pluck('id'); + $userperm = User::whereJSONContains('permissions','admin')->get(); // Add a new row with data $values = [ @@ -603,8 +603,9 @@ class UsersController extends Controller $user->accessories->count(), $user->consumables->count(), $user_groups, - $user->permissions ? $userperm : '', - //$user->permissions, // ? $user->permissions->where('permissions', 'LIKE', '%"1"%') : '', + $user->permissions ? $user->permission->where('permissions', 'LIKE', '%1%') : '', + //$user->permissions->where("json_data_column->>'admin'", '1'), + // ? $user->permissions->where('permissions', 'LIKE', '%"1"%') : '', //where json like '%"category":"Category Example"% $user->notes, ($user->activated == '1') ? trans('general.yes') : trans('general.no'), From 721902c2d416038b04c6b5d479c224a8bdce17fd Mon Sep 17 00:00:00 2001 From: akemidx Date: Thu, 28 Mar 2024 16:44:44 -0400 Subject: [PATCH 10/36] committed for later --- app/Http/Controllers/Users/UsersController.php | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/app/Http/Controllers/Users/UsersController.php b/app/Http/Controllers/Users/UsersController.php index d633a4e3f..a6af58456 100755 --- a/app/Http/Controllers/Users/UsersController.php +++ b/app/Http/Controllers/Users/UsersController.php @@ -584,7 +584,9 @@ class UsersController extends Controller $user_groups .= $user_group->name.', '; } - $userperm = User::whereJSONContains('permissions','admin')->get(); + $perm = $user->permissions; + $userperm = json_decode($perm); + // $user->permission->wherejsoncontains('permissions', 'LIKE', '%1%'); // Add a new row with data $values = [ @@ -603,8 +605,8 @@ class UsersController extends Controller $user->accessories->count(), $user->consumables->count(), $user_groups, - $user->permissions ? $user->permission->where('permissions', 'LIKE', '%1%') : '', - //$user->permissions->where("json_data_column->>'admin'", '1'), + //$user->permissions ? $user->permission->where('permissions', 'LIKE', '%1%') : '', + $userperm, // ? $user->permissions->where('permissions', 'LIKE', '%"1"%') : '', //where json like '%"category":"Category Example"% $user->notes, From e8d9701a269c80eccc5bf7b9e9c4d91f9b6809b4 Mon Sep 17 00:00:00 2001 From: akemidx Date: Wed, 17 Apr 2024 19:16:25 -0400 Subject: [PATCH 11/36] array key existing --- app/Http/Controllers/Users/UsersController.php | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/app/Http/Controllers/Users/UsersController.php b/app/Http/Controllers/Users/UsersController.php index a6af58456..a6ceb3a67 100755 --- a/app/Http/Controllers/Users/UsersController.php +++ b/app/Http/Controllers/Users/UsersController.php @@ -572,9 +572,6 @@ class UsersController extends Controller trans('general.created_at'), ]; - //add if else for admin permissions. the admin permissions will allow a user to see permissions a user has in the export - // - fputcsv($handle, $headers); foreach ($users as $user) { @@ -584,9 +581,13 @@ class UsersController extends Controller $user_groups .= $user_group->name.', '; } - $perm = $user->permissions; - $userperm = json_decode($perm); - // $user->permission->wherejsoncontains('permissions', 'LIKE', '%1%'); + $permissionstring = ""; + if(array_key_exists("superuser", json_decode($user->permissions, true))) { + $permissionstring = "Superuser"; + } + if(array_key_exists("admin", json_decode($user->permissions, true))) { + $permissionstring = "Admin"; + } // Add a new row with data $values = [ @@ -605,10 +606,7 @@ class UsersController extends Controller $user->accessories->count(), $user->consumables->count(), $user_groups, - //$user->permissions ? $user->permission->where('permissions', 'LIKE', '%1%') : '', - $userperm, - // ? $user->permissions->where('permissions', 'LIKE', '%"1"%') : '', - //where json like '%"category":"Category Example"% + $permissionstring, $user->notes, ($user->activated == '1') ? trans('general.yes') : trans('general.no'), $user->created_at, From 01c24ab4cd6e70934118d8c510597de399a652b2 Mon Sep 17 00:00:00 2001 From: akemidx Date: Mon, 22 Apr 2024 19:16:14 -0400 Subject: [PATCH 12/36] translating text --- app/Http/Controllers/Users/UsersController.php | 9 ++++++--- resources/lang/en/general.php | 1 + 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/app/Http/Controllers/Users/UsersController.php b/app/Http/Controllers/Users/UsersController.php index a6ceb3a67..65d175b9a 100755 --- a/app/Http/Controllers/Users/UsersController.php +++ b/app/Http/Controllers/Users/UsersController.php @@ -583,10 +583,13 @@ class UsersController extends Controller $permissionstring = ""; if(array_key_exists("superuser", json_decode($user->permissions, true))) { - $permissionstring = "Superuser"; + $permissionstring = trans('general.superuser'); } - if(array_key_exists("admin", json_decode($user->permissions, true))) { - $permissionstring = "Admin"; + elseif(array_key_exists("admin", json_decode($user->permissions, true))) { + $permissionstring = trans('general.admin'); + } + else { + $permissionstring = trans('general.user'); } // Add a new row with data diff --git a/resources/lang/en/general.php b/resources/lang/en/general.php index 13a5f42da..34c44148e 100644 --- a/resources/lang/en/general.php +++ b/resources/lang/en/general.php @@ -268,6 +268,7 @@ return [ 'status_labels' => 'Status Labels', 'status' => 'Status', 'accept_eula' => 'Acceptance Agreement', + 'superuser' => 'Superuser', 'supplier' => 'Supplier', 'suppliers' => 'Suppliers', 'sure_to_delete' => 'Are you sure you wish to delete', From 0d049a0be785d49f877d3b9fb1892fb871040a5a Mon Sep 17 00:00:00 2001 From: akemidx Date: Mon, 22 Apr 2024 20:09:40 -0400 Subject: [PATCH 13/36] conflict resolution --- app/Http/Controllers/Users/UsersController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Http/Controllers/Users/UsersController.php b/app/Http/Controllers/Users/UsersController.php index 65d175b9a..05b0ba656 100755 --- a/app/Http/Controllers/Users/UsersController.php +++ b/app/Http/Controllers/Users/UsersController.php @@ -565,7 +565,7 @@ class UsersController extends Controller trans('general.licenses'), trans('general.accessories'), trans('general.consumables'), - trans('general.groups'), + trans('admin/users/table.groups'), trans('general.permission_level'), trans('general.notes'), trans('admin/users/table.activated'), From 0bc93c6a1e059b7950266fbd681737150fcc7bef Mon Sep 17 00:00:00 2001 From: akemidx Date: Tue, 23 Apr 2024 15:31:37 -0400 Subject: [PATCH 14/36] space --- app/Http/Controllers/Users/UsersController.php | 1 + 1 file changed, 1 insertion(+) diff --git a/app/Http/Controllers/Users/UsersController.php b/app/Http/Controllers/Users/UsersController.php index 05b0ba656..432213a93 100755 --- a/app/Http/Controllers/Users/UsersController.php +++ b/app/Http/Controllers/Users/UsersController.php @@ -581,6 +581,7 @@ class UsersController extends Controller $user_groups .= $user_group->name.', '; } + $permissionstring = ""; if(array_key_exists("superuser", json_decode($user->permissions, true))) { $permissionstring = trans('general.superuser'); From c94a7613ca0a806a93770fd90ff0b86f66c27707 Mon Sep 17 00:00:00 2001 From: Godfrey M Date: Thu, 2 May 2024 12:16:20 -0700 Subject: [PATCH 15/36] dropdown redirect options, helper function and session variable added --- app/Helpers/Helper.php | 24 +++++++++++++++++++ .../Assets/AssetCheckoutController.php | 10 +++++--- resources/views/hardware/checkout.blade.php | 11 +++++++++ 3 files changed, 42 insertions(+), 3 deletions(-) diff --git a/app/Helpers/Helper.php b/app/Helpers/Helper.php index e3f2b036e..8687be1e7 100644 --- a/app/Helpers/Helper.php +++ b/app/Helpers/Helper.php @@ -14,6 +14,7 @@ use App\Models\Statuslabel; use App\Models\License; use Crypt; use Illuminate\Contracts\Encryption\DecryptException; +use Illuminate\Support\Facades\Session; use Image; use Carbon\Carbon; @@ -1459,4 +1460,27 @@ class Helper return $new_locale; // better that you have some weird locale that doesn't fit into our mappings anywhere than 'void' } + + static public function getRedirectOption($request, $assetId) + { + $redirect_option = session::get('redirect_option'); + + if ($redirect_option == '0') { + return redirect()->route('hardware.index')->with('success', trans('admin/hardware/message.checkout.success')); + } + if ($redirect_option == '1') { + return redirect()->route('hardware.show', $assetId)->with('success', trans('admin/hardware/message.checkout.success')); + } + if ($redirect_option == '2') { + if ($request->assigned_location != null) { + return redirect()->route('users.show', $request->assigned_user)->with('success', trans('admin/hardware/message.checkout.success')); + } + } + if ($redirect_option == '3') { + if ($request->assigned_location != null) { + + return redirect()->route('locations.show', $request->assigned_location)->with('success', trans('admin/hardware/message.checkout.success')); + } + } + } } diff --git a/app/Http/Controllers/Assets/AssetCheckoutController.php b/app/Http/Controllers/Assets/AssetCheckoutController.php index a096f1667..e5f069c41 100644 --- a/app/Http/Controllers/Assets/AssetCheckoutController.php +++ b/app/Http/Controllers/Assets/AssetCheckoutController.php @@ -10,6 +10,7 @@ use App\Http\Requests\AssetCheckoutRequest; use App\Models\Asset; use Illuminate\Database\Eloquent\ModelNotFoundException; use Illuminate\Support\Facades\Auth; +use Illuminate\Support\Facades\Session; class AssetCheckoutController extends Controller { @@ -97,11 +98,14 @@ class AssetCheckoutController extends Controller return redirect()->to("hardware/$assetId/checkout")->with('error', trans('general.error_user_company')); } } - - if ($asset->checkOut($target, $admin, $checkout_at, $expected_checkin, $request->get('note'), $request->get('name'))) { - return redirect()->route('hardware.index')->with('success', trans('admin/hardware/message.checkout.success')); + $redirect_option = $request->get('redirect_option'); + if($redirect_option != Session::get('redirect_option')) { + Session::put('redirect_option', $redirect_option); } + if ($asset->checkOut($target, $admin, $checkout_at, $expected_checkin, $request->get('note'), $request->get('name'))) { + return Helper::getRedirectOption($request, $assetId); + } // Redirect to the asset management page with error return redirect()->to("hardware/$assetId/checkout")->with('error', trans('admin/hardware/message.checkout.error').$asset->getErrors()); } catch (ModelNotFoundException $e) { diff --git a/resources/views/hardware/checkout.blade.php b/resources/views/hardware/checkout.blade.php index 9f91dace1..c731fa88a 100755 --- a/resources/views/hardware/checkout.blade.php +++ b/resources/views/hardware/checkout.blade.php @@ -144,6 +144,17 @@
From 15cc4345abbfb6187b69daa7369bf1c1115ff6c7 Mon Sep 17 00:00:00 2001 From: Godfrey M Date: Tue, 14 May 2024 13:25:52 -0700 Subject: [PATCH 16/36] adds dynamic redirects to Assets --- app/Helpers/Helper.php | 12 ++++++++---- .../Controllers/Assets/AssetCheckinController.php | 9 ++------- .../Controllers/Assets/AssetCheckoutController.php | 5 +++-- resources/lang/en-US/admin/hardware/form.php | 3 +++ resources/views/hardware/checkin.blade.php | 6 ++++++ resources/views/hardware/checkout.blade.php | 12 ++++-------- 6 files changed, 26 insertions(+), 21 deletions(-) diff --git a/app/Helpers/Helper.php b/app/Helpers/Helper.php index 8687be1e7..b839b287e 100644 --- a/app/Helpers/Helper.php +++ b/app/Helpers/Helper.php @@ -1464,6 +1464,7 @@ class Helper static public function getRedirectOption($request, $assetId) { $redirect_option = session::get('redirect_option'); + $checkout_to_type = session::get('checkout_to_type'); if ($redirect_option == '0') { return redirect()->route('hardware.index')->with('success', trans('admin/hardware/message.checkout.success')); @@ -1472,15 +1473,18 @@ class Helper return redirect()->route('hardware.show', $assetId)->with('success', trans('admin/hardware/message.checkout.success')); } if ($redirect_option == '2') { - if ($request->assigned_location != null) { + + if ($checkout_to_type == 'user') { return redirect()->route('users.show', $request->assigned_user)->with('success', trans('admin/hardware/message.checkout.success')); } - } - if ($redirect_option == '3') { - if ($request->assigned_location != null) { + if ($checkout_to_type == 'location') { return redirect()->route('locations.show', $request->assigned_location)->with('success', trans('admin/hardware/message.checkout.success')); } + if ($checkout_to_type == 'asset') { + return redirect()->route('hardware.show', $request->assigned_asset)->with('success', trans('admin/hardware/message.checkout.success')); + } } + return redirect()->back()->with('error', trans('admin/hardware/message.checkout.error')); } } diff --git a/app/Http/Controllers/Assets/AssetCheckinController.php b/app/Http/Controllers/Assets/AssetCheckinController.php index 30ffd8bba..0be355c7a 100644 --- a/app/Http/Controllers/Assets/AssetCheckinController.php +++ b/app/Http/Controllers/Assets/AssetCheckinController.php @@ -45,7 +45,7 @@ class AssetCheckinController extends Controller return redirect()->route('hardware.index')->with('error', trans('admin/hardware/message.checkin.already_checked_in')); } - return view('hardware/checkin', compact('asset'))->with('statusLabel_list', Helper::statusLabelList())->with('backto', $backto); + return view('hardware/checkin', compact('asset'))->with('statusLabel_list', Helper::statusLabelList())->with('backto', $backto)->with('table_name', 'Assets'); } /** @@ -125,12 +125,7 @@ class AssetCheckinController extends Controller // Was the asset updated? if ($asset->save()) { event(new CheckoutableCheckedIn($asset, $target, Auth::user(), $request->input('note'), $checkin_at, $originalValues)); - - if ((isset($user)) && ($backto == 'user')) { - return redirect()->route('users.show', $user->id)->with('success', trans('admin/hardware/message.checkin.success')); - } - - return redirect()->route('hardware.index')->with('success', trans('admin/hardware/message.checkin.success')); + return Helper::getRedirectOption($request, $assetId); } // Redirect to the asset management page with error return redirect()->route('hardware.index')->with('error', trans('admin/hardware/message.checkin.error').$asset->getErrors()); diff --git a/app/Http/Controllers/Assets/AssetCheckoutController.php b/app/Http/Controllers/Assets/AssetCheckoutController.php index e5f069c41..8e54474a4 100644 --- a/app/Http/Controllers/Assets/AssetCheckoutController.php +++ b/app/Http/Controllers/Assets/AssetCheckoutController.php @@ -36,7 +36,8 @@ class AssetCheckoutController extends Controller if ($asset->availableForCheckout()) { return view('hardware/checkout', compact('asset')) - ->with('statusLabel_list', Helper::deployableStatusLabelList()); + ->with('statusLabel_list', Helper::deployableStatusLabelList()) + ->with('table_name', 'Assets'); } return redirect()->route('hardware.index')->with('error', trans('admin/hardware/message.checkout.not_available')); @@ -100,7 +101,7 @@ class AssetCheckoutController extends Controller } $redirect_option = $request->get('redirect_option'); if($redirect_option != Session::get('redirect_option')) { - Session::put('redirect_option', $redirect_option); + Session::put(['redirect_option' => $redirect_option, 'checkout_to_type' => $request->get('checkout_to_type')]); } if ($asset->checkOut($target, $admin, $checkout_at, $expected_checkin, $request->get('note'), $request->get('name'))) { diff --git a/resources/lang/en-US/admin/hardware/form.php b/resources/lang/en-US/admin/hardware/form.php index a7aba0813..edec54363 100644 --- a/resources/lang/en-US/admin/hardware/form.php +++ b/resources/lang/en-US/admin/hardware/form.php @@ -39,6 +39,9 @@ return [ 'order' => 'Order Number', 'qr' => 'QR Code', 'requestable' => 'Users may request this asset', + 'redirect_to_all' => 'Return to all :type', + 'redirect_to_type' => 'Go to :type', + 'redirect_to_checked_out_to' => 'Go to Checked Out to', 'select_statustype' => 'Select Status Type', 'serial' => 'Serial', 'status' => 'Status', diff --git a/resources/views/hardware/checkin.blade.php b/resources/views/hardware/checkin.blade.php index dd6237b1b..7651f22e2 100755 --- a/resources/views/hardware/checkin.blade.php +++ b/resources/views/hardware/checkin.blade.php @@ -104,6 +104,12 @@ diff --git a/resources/views/hardware/checkout.blade.php b/resources/views/hardware/checkout.blade.php index c731fa88a..a67c19b47 100755 --- a/resources/views/hardware/checkout.blade.php +++ b/resources/views/hardware/checkout.blade.php @@ -145,15 +145,11 @@ {{ trans('button.cancel') }}
- -
From dc418a70331bc351e110e64febdb67f1b73972d4 Mon Sep 17 00:00:00 2001 From: Godfrey M Date: Tue, 14 May 2024 14:09:54 -0700 Subject: [PATCH 17/36] need to make variables names uniform --- app/Helpers/Helper.php | 33 ++-- .../Licenses/LicenseCheckoutController.php | 13 +- resources/views/licenses/checkout.blade.php | 177 +++++++++--------- .../forms/redirect_submit_options.blade.php | 13 ++ 4 files changed, 130 insertions(+), 106 deletions(-) create mode 100644 resources/views/partials/forms/redirect_submit_options.blade.php diff --git a/app/Helpers/Helper.php b/app/Helpers/Helper.php index b839b287e..ff6798509 100644 --- a/app/Helpers/Helper.php +++ b/app/Helpers/Helper.php @@ -1461,27 +1461,34 @@ class Helper } - static public function getRedirectOption($request, $assetId) - { + static public function getRedirectOption($request, $Id, $table) + { dd($request); $redirect_option = session::get('redirect_option'); $checkout_to_type = session::get('checkout_to_type'); if ($redirect_option == '0') { - return redirect()->route('hardware.index')->with('success', trans('admin/hardware/message.checkout.success')); + switch ($table) { + case "Assets": + return redirect()->route('hardware.index')->with('success', trans('admin/hardware/message.checkout.success')); + case "Licenses": + return redirect()->route('licenses.index')->with('success', trans('admin/hardware/message.checkout.success')); + } } if ($redirect_option == '1') { - return redirect()->route('hardware.show', $assetId)->with('success', trans('admin/hardware/message.checkout.success')); + switch ($table) { + case "Assets": + return redirect()->route('hardware.show', $Id)->with('success', trans('admin/hardware/message.checkout.success')); + case "Licenses": + return redirect()->route('licenses.show', $Id)->with('success', trans('admin/hardware/message.checkout.success')); + } } if ($redirect_option == '2') { - - if ($checkout_to_type == 'user') { - return redirect()->route('users.show', $request->assigned_user)->with('success', trans('admin/hardware/message.checkout.success')); - } - if ($checkout_to_type == 'location') { - - return redirect()->route('locations.show', $request->assigned_location)->with('success', trans('admin/hardware/message.checkout.success')); - } - if ($checkout_to_type == 'asset') { + switch ($checkout_to_type) { + case 'user': + return redirect()->route('users.show', $request->assigned_user)->with('success', trans('admin/hardware/message.checkout.success')); + case 'location': + return redirect()->route('locations.show', $request->assigned_location)->with('success', trans('admin/hardware/message.checkout.success')); + case 'asset': return redirect()->route('hardware.show', $request->assigned_asset)->with('success', trans('admin/hardware/message.checkout.success')); } } diff --git a/app/Http/Controllers/Licenses/LicenseCheckoutController.php b/app/Http/Controllers/Licenses/LicenseCheckoutController.php index d61a1ad81..aa2a32e69 100644 --- a/app/Http/Controllers/Licenses/LicenseCheckoutController.php +++ b/app/Http/Controllers/Licenses/LicenseCheckoutController.php @@ -3,6 +3,7 @@ namespace App\Http\Controllers\Licenses; use App\Events\CheckoutableCheckedOut; +use App\Helpers\Helper; use App\Http\Controllers\Controller; use App\Http\Requests\LicenseCheckoutRequest; use App\Models\Accessory; @@ -11,6 +12,7 @@ use App\Models\License; use App\Models\LicenseSeat; use App\Models\User; use Illuminate\Support\Facades\Auth; +use Illuminate\Support\Facades\Session; class LicenseCheckoutController extends Controller { @@ -41,7 +43,7 @@ class LicenseCheckoutController extends Controller } // Return the checkout view - return view('licenses/checkout', compact('license')); + return view('licenses/checkout', compact('license'))->with('table_name' , 'Licenses'); } // Invalid category @@ -77,11 +79,15 @@ class LicenseCheckoutController extends Controller $licenseSeat = $this->findLicenseSeatToCheckout($license, $seatId); $licenseSeat->user_id = Auth::id(); $licenseSeat->notes = $request->input('notes'); - $checkoutMethod = 'checkoutTo'.ucwords(request('checkout_to_type')); + $redirect_option = $request->get('redirect_option'); + Session::put('checkout_to_type', $request->input('checkout_to_type')); + if($redirect_option != Session::get('redirect_option')) { + Session::put(['redirect_option' => $redirect_option]); + } if ($this->$checkoutMethod($licenseSeat)) { - return redirect()->route('licenses.index')->with('success', trans('admin/licenses/message.checkout.success')); + return Helper::getRedirectOption($request, $licenseId, 'Licenses'); } return redirect()->route('licenses.index')->with('error', trans('Something went wrong handling this checkout.')); @@ -112,7 +118,6 @@ class LicenseCheckoutController extends Controller return redirect()->route('licenses.index')->with('error', trans('admin/licenses/message.asset_does_not_exist')); } $licenseSeat->asset_id = request('asset_id'); - // Override asset's assigned user if available if ($target->checkedOutToUser()) { $licenseSeat->assigned_to = $target->assigned_to; diff --git a/resources/views/licenses/checkout.blade.php b/resources/views/licenses/checkout.blade.php index e85c67742..3bf635073 100755 --- a/resources/views/licenses/checkout.blade.php +++ b/resources/views/licenses/checkout.blade.php @@ -2,8 +2,8 @@ {{-- Page title --}} @section('title') - {{ trans('admin/licenses/general.checkout') }} -@parent + {{ trans('admin/licenses/general.checkout') }} + @parent @stop @section('header_right') @@ -13,105 +13,104 @@ {{-- Page content --}} @section('content') -
+
-
-
- {{csrf_field()}} +
+ + {{csrf_field()}} -
-
-

{{ $license->name }} ({{ trans('admin/licenses/message.seats_available', ['seat_count' => $license->availCount()->count()]) }})

-
-
- - - -
- -
-

{{ $license->name }}

-
+
+
+

{{ $license->name }} + ({{ trans('admin/licenses/message.seats_available', ['seat_count' => $license->availCount()->count()]) }} + )

- -
- -
-

{{ $license->category->name }}

+
+ + + +
+ +
+

{{ $license->name }}

+
-
- - -
- -
-

- @can('viewKeys', $license) - {{ $license->serial }} - @else - ------------ - @endcan -

+ +
+ +
+

{{ $license->category->name }}

+
-
- @include ('partials.forms.checkout-selector', ['user_select' => 'true','asset_select' => 'true', 'location_select' => 'false']) - - @include ('partials.forms.edit.user-select', ['translated_name' => trans('general.user'), 'fieldname' => 'assigned_to', 'required'=>'true']) - - @include ('partials.forms.edit.asset-select', ['translated_name' => trans('admin/licenses/form.asset'), 'fieldname' => 'asset_id', 'style' => 'display:none;']) - - - -
- -
- - {!! $errors->first('note', '') !!} + +
+ +
+

+ @can('viewKeys', $license) + {{ $license->serial }} + @else + ------------ + @endcan +

+
-
-
+ + @include ('partials.forms.checkout-selector', ['user_select' => 'true','asset_select' => 'true', 'location_select' => 'false']) + + @include ('partials.forms.edit.user-select', ['translated_name' => trans('general.user'), 'fieldname' => 'assigned_to', 'required'=>'true']) + + @include ('partials.forms.edit.asset-select', ['translated_name' => trans('admin/licenses/form.asset'), 'fieldname' => 'asset_id', 'style' => 'display:none;']) - @if ($license->requireAcceptance() || $license->getEula() || ($snipeSettings->webhook_endpoint!='')) -
-
-
- - @if ($license->requireAcceptance()) - - {{ trans('admin/categories/general.required_acceptance') }} -
- @endif - - @if ($license->getEula()) - - {{ trans('admin/categories/general.required_eula') }} -
- @endif - - @if (($license->category) && ($license->category->checkin_email)) - - {{ trans('admin/categories/general.checkin_email_notification') }} -
- @endif - - @if ($snipeSettings->webhook_endpoint!='') - - {{ trans('general.webhook_msg_note') }} - @endif + +
+ +
+ + {!! $errors->first('note', '') !!}
- @endif - -
- -
-
+ + @if ($license->requireAcceptance() || $license->getEula() || ($snipeSettings->webhook_endpoint!='')) +
+
+
+ + @if ($license->requireAcceptance()) + + {{ trans('admin/categories/general.required_acceptance') }} +
+ @endif + + @if ($license->getEula()) + + {{ trans('admin/categories/general.required_eula') }} +
+ @endif + + @if (($license->category) && ($license->category->checkin_email)) + + {{ trans('admin/categories/general.checkin_email_notification') }} +
+ @endif + + @if ($snipeSettings->webhook_endpoint!='') + + {{ trans('general.webhook_msg_note') }} + @endif +
+
+
+ @endif + @include ('partials.forms.redirect_submit_options', ['translated_name' => trans('admin/licenses/form.asset'), 'table_name' => $table_name, 'type' => $license->name]) + +
+
@stop diff --git a/resources/views/partials/forms/redirect_submit_options.blade.php b/resources/views/partials/forms/redirect_submit_options.blade.php new file mode 100644 index 000000000..0b9893325 --- /dev/null +++ b/resources/views/partials/forms/redirect_submit_options.blade.php @@ -0,0 +1,13 @@ + +
\ No newline at end of file From 786799225c02ecc91f49a3f2b75a9ab4d943a7c2 Mon Sep 17 00:00:00 2001 From: Godfrey M Date: Wed, 15 May 2024 10:37:07 -0700 Subject: [PATCH 18/36] remove dd --- app/Helpers/Helper.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Helpers/Helper.php b/app/Helpers/Helper.php index ff6798509..573c1792e 100644 --- a/app/Helpers/Helper.php +++ b/app/Helpers/Helper.php @@ -1462,7 +1462,7 @@ class Helper static public function getRedirectOption($request, $Id, $table) - { dd($request); + { $redirect_option = session::get('redirect_option'); $checkout_to_type = session::get('checkout_to_type'); From fb9a5f928fe713ef8256449ae16187ea8f27087d Mon Sep 17 00:00:00 2001 From: Godfrey M Date: Wed, 15 May 2024 16:39:26 -0700 Subject: [PATCH 19/36] removed license changes --- app/Helpers/Helper.php | 8 ++------ .../Controllers/Licenses/LicenseCheckoutController.php | 2 +- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/app/Helpers/Helper.php b/app/Helpers/Helper.php index 573c1792e..8599fd3e0 100644 --- a/app/Helpers/Helper.php +++ b/app/Helpers/Helper.php @@ -1461,7 +1461,7 @@ class Helper } - static public function getRedirectOption($request, $Id, $table) + static public function getRedirectOption($request, $id, $table) { $redirect_option = session::get('redirect_option'); $checkout_to_type = session::get('checkout_to_type'); @@ -1470,16 +1470,12 @@ class Helper switch ($table) { case "Assets": return redirect()->route('hardware.index')->with('success', trans('admin/hardware/message.checkout.success')); - case "Licenses": - return redirect()->route('licenses.index')->with('success', trans('admin/hardware/message.checkout.success')); } } if ($redirect_option == '1') { switch ($table) { case "Assets": - return redirect()->route('hardware.show', $Id)->with('success', trans('admin/hardware/message.checkout.success')); - case "Licenses": - return redirect()->route('licenses.show', $Id)->with('success', trans('admin/hardware/message.checkout.success')); + return redirect()->route('hardware.show', $id)->with('success', trans('admin/hardware/message.checkout.success')); } } if ($redirect_option == '2') { diff --git a/app/Http/Controllers/Licenses/LicenseCheckoutController.php b/app/Http/Controllers/Licenses/LicenseCheckoutController.php index aa2a32e69..ca2bfd1ad 100644 --- a/app/Http/Controllers/Licenses/LicenseCheckoutController.php +++ b/app/Http/Controllers/Licenses/LicenseCheckoutController.php @@ -43,7 +43,7 @@ class LicenseCheckoutController extends Controller } // Return the checkout view - return view('licenses/checkout', compact('license'))->with('table_name' , 'Licenses'); + return view('licenses/checkout', compact('license')); } // Invalid category From e70fb42f8788d33dcac34a80afed5f7e53be1ca6 Mon Sep 17 00:00:00 2001 From: Godfrey M Date: Mon, 20 May 2024 10:22:01 -0700 Subject: [PATCH 20/36] remove license redirects --- .../Controllers/Licenses/LicenseCheckoutController.php | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/app/Http/Controllers/Licenses/LicenseCheckoutController.php b/app/Http/Controllers/Licenses/LicenseCheckoutController.php index ca2bfd1ad..a9030d63d 100644 --- a/app/Http/Controllers/Licenses/LicenseCheckoutController.php +++ b/app/Http/Controllers/Licenses/LicenseCheckoutController.php @@ -81,13 +81,9 @@ class LicenseCheckoutController extends Controller $licenseSeat->notes = $request->input('notes'); $checkoutMethod = 'checkoutTo'.ucwords(request('checkout_to_type')); - $redirect_option = $request->get('redirect_option'); - Session::put('checkout_to_type', $request->input('checkout_to_type')); - if($redirect_option != Session::get('redirect_option')) { - Session::put(['redirect_option' => $redirect_option]); - } + if ($this->$checkoutMethod($licenseSeat)) { - return Helper::getRedirectOption($request, $licenseId, 'Licenses'); + return redirect()->route('licenses.index')->with('success', trans('admin/licenses/message.checkout.success')); } return redirect()->route('licenses.index')->with('error', trans('Something went wrong handling this checkout.')); From 280c03dcad1561e58bbaabf596acc9e6acad776d Mon Sep 17 00:00:00 2001 From: Godfrey M Date: Mon, 20 May 2024 10:25:59 -0700 Subject: [PATCH 21/36] remove license checkout changes --- .../Licenses/LicenseCheckoutController.php | 2 - resources/views/licenses/checkout.blade.php | 175 +++++++++--------- 2 files changed, 88 insertions(+), 89 deletions(-) diff --git a/app/Http/Controllers/Licenses/LicenseCheckoutController.php b/app/Http/Controllers/Licenses/LicenseCheckoutController.php index a9030d63d..7b3ad7e5c 100644 --- a/app/Http/Controllers/Licenses/LicenseCheckoutController.php +++ b/app/Http/Controllers/Licenses/LicenseCheckoutController.php @@ -3,7 +3,6 @@ namespace App\Http\Controllers\Licenses; use App\Events\CheckoutableCheckedOut; -use App\Helpers\Helper; use App\Http\Controllers\Controller; use App\Http\Requests\LicenseCheckoutRequest; use App\Models\Accessory; @@ -12,7 +11,6 @@ use App\Models\License; use App\Models\LicenseSeat; use App\Models\User; use Illuminate\Support\Facades\Auth; -use Illuminate\Support\Facades\Session; class LicenseCheckoutController extends Controller { diff --git a/resources/views/licenses/checkout.blade.php b/resources/views/licenses/checkout.blade.php index 3bf635073..e85c67742 100755 --- a/resources/views/licenses/checkout.blade.php +++ b/resources/views/licenses/checkout.blade.php @@ -2,8 +2,8 @@ {{-- Page title --}} @section('title') - {{ trans('admin/licenses/general.checkout') }} - @parent + {{ trans('admin/licenses/general.checkout') }} +@parent @stop @section('header_right') @@ -13,104 +13,105 @@ {{-- Page content --}} @section('content') -
+
-
-
- {{csrf_field()}} +
+ + {{csrf_field()}} -
-
-

{{ $license->name }} - ({{ trans('admin/licenses/message.seats_available', ['seat_count' => $license->availCount()->count()]) }} - )

+
+
+

{{ $license->name }} ({{ trans('admin/licenses/message.seats_available', ['seat_count' => $license->availCount()->count()]) }})

+
+
+ + + +
+ +
+

{{ $license->name }}

+
-
- - - -
- -
-

{{ $license->name }}

-
-
- -
- -
-

{{ $license->category->name }}

-
-
- - -
- -
-

- @can('viewKeys', $license) - {{ $license->serial }} - @else - ------------ - @endcan -

-
-
- - @include ('partials.forms.checkout-selector', ['user_select' => 'true','asset_select' => 'true', 'location_select' => 'false']) - - @include ('partials.forms.edit.user-select', ['translated_name' => trans('general.user'), 'fieldname' => 'assigned_to', 'required'=>'true']) - - @include ('partials.forms.edit.asset-select', ['translated_name' => trans('admin/licenses/form.asset'), 'fieldname' => 'asset_id', 'style' => 'display:none;']) - - - -
- -
- - {!! $errors->first('note', '') !!} -
+ +
+ +
+

{{ $license->category->name }}

+ +
+ +
+

+ @can('viewKeys', $license) + {{ $license->serial }} + @else + ------------ + @endcan +

+
+
- @if ($license->requireAcceptance() || $license->getEula() || ($snipeSettings->webhook_endpoint!='')) -
-
-
+ @include ('partials.forms.checkout-selector', ['user_select' => 'true','asset_select' => 'true', 'location_select' => 'false']) - @if ($license->requireAcceptance()) - - {{ trans('admin/categories/general.required_acceptance') }} -
- @endif + @include ('partials.forms.edit.user-select', ['translated_name' => trans('general.user'), 'fieldname' => 'assigned_to', 'required'=>'true']) - @if ($license->getEula()) - - {{ trans('admin/categories/general.required_eula') }} -
- @endif + @include ('partials.forms.edit.asset-select', ['translated_name' => trans('admin/licenses/form.asset'), 'fieldname' => 'asset_id', 'style' => 'display:none;']) - @if (($license->category) && ($license->category->checkin_email)) - - {{ trans('admin/categories/general.checkin_email_notification') }} -
- @endif - @if ($snipeSettings->webhook_endpoint!='') - - {{ trans('general.webhook_msg_note') }} - @endif -
+ +
+ +
+ + {!! $errors->first('note', '') !!} +
+
+
+ + + @if ($license->requireAcceptance() || $license->getEula() || ($snipeSettings->webhook_endpoint!='')) +
+
+
+ + @if ($license->requireAcceptance()) + + {{ trans('admin/categories/general.required_acceptance') }} +
+ @endif + + @if ($license->getEula()) + + {{ trans('admin/categories/general.required_eula') }} +
+ @endif + + @if (($license->category) && ($license->category->checkin_email)) + + {{ trans('admin/categories/general.checkin_email_notification') }} +
+ @endif + + @if ($snipeSettings->webhook_endpoint!='') + + {{ trans('general.webhook_msg_note') }} + @endif
+
@endif - @include ('partials.forms.redirect_submit_options', ['translated_name' => trans('admin/licenses/form.asset'), 'table_name' => $table_name, 'type' => $license->name]) - -
-
+ + +
+ +
+
@stop From a53f89cd2c486c79a7515e29abeb5c53019e7c77 Mon Sep 17 00:00:00 2001 From: Godfrey M Date: Mon, 20 May 2024 10:26:45 -0700 Subject: [PATCH 22/36] remove license checkout changes p2 --- app/Http/Controllers/Licenses/LicenseCheckoutController.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/Licenses/LicenseCheckoutController.php b/app/Http/Controllers/Licenses/LicenseCheckoutController.php index 7b3ad7e5c..d61a1ad81 100644 --- a/app/Http/Controllers/Licenses/LicenseCheckoutController.php +++ b/app/Http/Controllers/Licenses/LicenseCheckoutController.php @@ -77,9 +77,9 @@ class LicenseCheckoutController extends Controller $licenseSeat = $this->findLicenseSeatToCheckout($license, $seatId); $licenseSeat->user_id = Auth::id(); $licenseSeat->notes = $request->input('notes'); + $checkoutMethod = 'checkoutTo'.ucwords(request('checkout_to_type')); - if ($this->$checkoutMethod($licenseSeat)) { return redirect()->route('licenses.index')->with('success', trans('admin/licenses/message.checkout.success')); } @@ -112,6 +112,7 @@ class LicenseCheckoutController extends Controller return redirect()->route('licenses.index')->with('error', trans('admin/licenses/message.asset_does_not_exist')); } $licenseSeat->asset_id = request('asset_id'); + // Override asset's assigned user if available if ($target->checkedOutToUser()) { $licenseSeat->assigned_to = $target->assigned_to; From 4d6f4303f5ad8ec2d3dc26986d7d7d2617cdd8fc Mon Sep 17 00:00:00 2001 From: Godfrey M Date: Tue, 21 May 2024 10:11:01 -0700 Subject: [PATCH 23/36] fixed partial up --- resources/views/hardware/checkin.blade.php | 11 +---------- resources/views/hardware/checkout.blade.php | 12 +----------- .../partials/forms/redirect_submit_options.blade.php | 7 +++---- 3 files changed, 5 insertions(+), 25 deletions(-) diff --git a/resources/views/hardware/checkin.blade.php b/resources/views/hardware/checkin.blade.php index 7651f22e2..a4556f70c 100755 --- a/resources/views/hardware/checkin.blade.php +++ b/resources/views/hardware/checkin.blade.php @@ -101,16 +101,7 @@ {!! $errors->first('note', '') !!}
- + @include ('partials.forms.redirect_submit_options', ['route' => 'hardware.index', 'table_name' => $table_name, 'type'=> $asset->model->name, 'hidden' => true])
diff --git a/resources/views/hardware/checkout.blade.php b/resources/views/hardware/checkout.blade.php index a67c19b47..db0dbb03b 100755 --- a/resources/views/hardware/checkout.blade.php +++ b/resources/views/hardware/checkout.blade.php @@ -141,17 +141,7 @@ @endif
- + @include ('partials.forms.redirect_submit_options', ['route' => 'hardware.index', 'table_name' => $table_name, 'type'=> $asset->model->name, 'hidden' => false])
diff --git a/resources/views/partials/forms/redirect_submit_options.blade.php b/resources/views/partials/forms/redirect_submit_options.blade.php index 0b9893325..f817c5484 100644 --- a/resources/views/partials/forms/redirect_submit_options.blade.php +++ b/resources/views/partials/forms/redirect_submit_options.blade.php @@ -1,12 +1,11 @@
- @include ('partials.forms.redirect_submit_options', ['route' => 'hardware.index', 'table_name' => $table_name, 'type'=> $asset->model->name, 'hidden' => true]) + @include ('partials.forms.redirect_submit_options', ['route' => 'hardware.index', 'table_name' => $table_name, 'type'=> $asset->model->name, 'checkin' => true])
diff --git a/resources/views/hardware/checkout.blade.php b/resources/views/hardware/checkout.blade.php index db0dbb03b..bb0299281 100755 --- a/resources/views/hardware/checkout.blade.php +++ b/resources/views/hardware/checkout.blade.php @@ -141,7 +141,7 @@ @endif
- @include ('partials.forms.redirect_submit_options', ['route' => 'hardware.index', 'table_name' => $table_name, 'type'=> $asset->model->name, 'hidden' => false]) + @include ('partials.forms.redirect_submit_options', ['route' => 'hardware.index', 'table_name' => $table_name, 'type'=> $asset->model->name, 'checkin' => false])
diff --git a/resources/views/partials/forms/redirect_submit_options.blade.php b/resources/views/partials/forms/redirect_submit_options.blade.php index f817c5484..b7a1e52eb 100644 --- a/resources/views/partials/forms/redirect_submit_options.blade.php +++ b/resources/views/partials/forms/redirect_submit_options.blade.php @@ -5,7 +5,7 @@ From 9f02be0823ae8f7cfc6a7f8844b6331e390e9870 Mon Sep 17 00:00:00 2001 From: Godfrey M Date: Tue, 21 May 2024 10:15:18 -0700 Subject: [PATCH 25/36] removed extra div --- resources/views/partials/forms/redirect_submit_options.blade.php | 1 - 1 file changed, 1 deletion(-) diff --git a/resources/views/partials/forms/redirect_submit_options.blade.php b/resources/views/partials/forms/redirect_submit_options.blade.php index b7a1e52eb..2b67540c5 100644 --- a/resources/views/partials/forms/redirect_submit_options.blade.php +++ b/resources/views/partials/forms/redirect_submit_options.blade.php @@ -8,5 +8,4 @@ - \ No newline at end of file From 69c2cf2c4fb911d35f2e7666af48af4d84375631 Mon Sep 17 00:00:00 2001 From: Godfrey M Date: Tue, 21 May 2024 13:13:25 -0700 Subject: [PATCH 26/36] fixed assetcheckin test, created redirect option test --- app/Helpers/Helper.php | 7 ++- tests/Feature/Checkins/AssetCheckinTest.php | 5 +- tests/Unit/Helpers/HelperTest.php | 63 +++++++++++++++++++++ 3 files changed, 70 insertions(+), 5 deletions(-) diff --git a/app/Helpers/Helper.php b/app/Helpers/Helper.php index 8599fd3e0..cbbef02e4 100644 --- a/app/Helpers/Helper.php +++ b/app/Helpers/Helper.php @@ -1463,21 +1463,24 @@ class Helper static public function getRedirectOption($request, $id, $table) { - $redirect_option = session::get('redirect_option'); - $checkout_to_type = session::get('checkout_to_type'); + $redirect_option = Session::get('redirect_option'); + $checkout_to_type = Session::get('checkout_to_type'); + //return to index if ($redirect_option == '0') { switch ($table) { case "Assets": return redirect()->route('hardware.index')->with('success', trans('admin/hardware/message.checkout.success')); } } + //return to thing being assigned if ($redirect_option == '1') { switch ($table) { case "Assets": return redirect()->route('hardware.show', $id)->with('success', trans('admin/hardware/message.checkout.success')); } } + //return to thing being assigned to if ($redirect_option == '2') { switch ($checkout_to_type) { case 'user': diff --git a/tests/Feature/Checkins/AssetCheckinTest.php b/tests/Feature/Checkins/AssetCheckinTest.php index 1e6d2b995..7734d4831 100644 --- a/tests/Feature/Checkins/AssetCheckinTest.php +++ b/tests/Feature/Checkins/AssetCheckinTest.php @@ -51,14 +51,13 @@ class AssetCheckinTest extends TestCase $this->actingAs(User::factory()->checkinAssets()->create()) ->post( - route('hardware.checkin.store', ['assetId' => $asset->id, 'backto' => 'user']), + route('hardware.checkin.store', ['assetId' => $asset->id]), [ 'name' => 'Changed Name', 'status_id' => $status->id, 'location_id' => $location->id, ], - ) - ->assertRedirect(route('users.show', $user)); + ); $this->assertNull($asset->refresh()->assignedTo); $this->assertNull($asset->expected_checkin); diff --git a/tests/Unit/Helpers/HelperTest.php b/tests/Unit/Helpers/HelperTest.php index cfc8c7fac..00d8f1f5d 100644 --- a/tests/Unit/Helpers/HelperTest.php +++ b/tests/Unit/Helpers/HelperTest.php @@ -3,6 +3,9 @@ namespace Tests\Unit\Helpers; use App\Helpers\Helper; +use Illuminate\Http\RedirectResponse; +use Illuminate\Support\Facades\Redirect; +use Illuminate\Support\Facades\Session; use Tests\TestCase; class HelperTest extends TestCase @@ -25,4 +28,64 @@ class HelperTest extends TestCase $this->settings->set(['digit_separator' => '1.234,56']); $this->assertSame(12.34, Helper::ParseCurrency('12,34')); } + public function testGetRedirectOptionMethod(){ + $test_data = [ + [ + 'request' =>(object) ['assigned_user' => 22], + 'id' => 1, + 'checkout_to_type' => 'user', + 'redirect_option' => 2, + 'table' => 'Assets', + 'route' => route('users.show', 22), + 'message' => 'redirect option 2 for user assigned to failed.' + ], + [ + 'request' =>(object) ['assigned_location' => 10], + 'id' => 2, + 'checkout_to_type' => 'location', + 'redirect_option' => 2, + 'table' => 'Locations', + 'route' => route('locations.show', 10), + 'message' => 'redirect option 2 location assigned to failed.' + ], + [ + 'request' =>(object) ['assigned_asset' => 101], + 'id' => 3, + 'checkout_to_type' => 'asset', + 'redirect_option' => 2, + 'table' => 'Assets', + 'route' => route('hardware.show', 101), + 'message' => 'redirect option 2 back to asset assigned to failed.' + ], + [ + 'request' =>(object) ['assigned_asset' => null], + 'id' => 999, + 'checkout_to_type' => null, + 'redirect_option' => 1, + 'table' => 'Assets', + 'route' => route('hardware.show', 999), + 'message' => 'redirect option 1 back to asset failed.' + ], + [ + 'request' =>(object) ['assigned_asset' => null], + 'id' => null, + 'checkout_to_type' => null, + 'redirect_option' => 0, + 'table' => 'Assets', + 'route' => route('hardware.index'), + 'message' => 'redirect option 0 back to index failed.' + ], + ]; + + foreach ($test_data as $data) { + + Session::put('redirect_option', $data['redirect_option']); + Session::put('checkout_to_type', $data['checkout_to_type']); + + $redirect = Helper::getRedirectOption($data['request'],$data['id'], $data['table']); + + $this->assertInstanceOf(RedirectResponse::class, $redirect); + $this->assertEquals($data['route'], $redirect->getTargetUrl(), $data['message']); + } + } } From 0327e71f0f7fee210415ddd88454e786a3f60135 Mon Sep 17 00:00:00 2001 From: Godfrey M Date: Tue, 21 May 2024 13:26:29 -0700 Subject: [PATCH 27/36] made message the keys, cleaned up array --- tests/Unit/Helpers/HelperTest.php | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/tests/Unit/Helpers/HelperTest.php b/tests/Unit/Helpers/HelperTest.php index 00d8f1f5d..3ef114b79 100644 --- a/tests/Unit/Helpers/HelperTest.php +++ b/tests/Unit/Helpers/HelperTest.php @@ -28,56 +28,52 @@ class HelperTest extends TestCase $this->settings->set(['digit_separator' => '1.234,56']); $this->assertSame(12.34, Helper::ParseCurrency('12,34')); } - public function testGetRedirectOptionMethod(){ + public function testGetRedirectOptionMethod() + { $test_data = [ - [ + 'Option 2: redirect for user assigned to ' => [ 'request' =>(object) ['assigned_user' => 22], 'id' => 1, 'checkout_to_type' => 'user', 'redirect_option' => 2, 'table' => 'Assets', 'route' => route('users.show', 22), - 'message' => 'redirect option 2 for user assigned to failed.' ], - [ + 'Option 2: redirect location assigned to ' => [ 'request' =>(object) ['assigned_location' => 10], 'id' => 2, 'checkout_to_type' => 'location', 'redirect_option' => 2, 'table' => 'Locations', 'route' => route('locations.show', 10), - 'message' => 'redirect option 2 location assigned to failed.' ], - [ + 'Option 2: redirect back to asset assigned to ' => [ 'request' =>(object) ['assigned_asset' => 101], 'id' => 3, 'checkout_to_type' => 'asset', 'redirect_option' => 2, 'table' => 'Assets', 'route' => route('hardware.show', 101), - 'message' => 'redirect option 2 back to asset assigned to failed.' ], - [ + 'Option 1: redirect back to asset ' => [ 'request' =>(object) ['assigned_asset' => null], 'id' => 999, 'checkout_to_type' => null, 'redirect_option' => 1, 'table' => 'Assets', 'route' => route('hardware.show', 999), - 'message' => 'redirect option 1 back to asset failed.' ], - [ + 'Option 0: redirect back to index ' => [ 'request' =>(object) ['assigned_asset' => null], 'id' => null, 'checkout_to_type' => null, 'redirect_option' => 0, 'table' => 'Assets', 'route' => route('hardware.index'), - 'message' => 'redirect option 0 back to index failed.' ], ]; - foreach ($test_data as $data) { + foreach ($test_data as $scenario => $data ) { Session::put('redirect_option', $data['redirect_option']); Session::put('checkout_to_type', $data['checkout_to_type']); @@ -85,7 +81,7 @@ class HelperTest extends TestCase $redirect = Helper::getRedirectOption($data['request'],$data['id'], $data['table']); $this->assertInstanceOf(RedirectResponse::class, $redirect); - $this->assertEquals($data['route'], $redirect->getTargetUrl(), $data['message']); + $this->assertEquals($data['route'], $redirect->getTargetUrl(), $scenario.'failed.'); } } } From f2693ee957dc4eceb232fc65393457227283d9b1 Mon Sep 17 00:00:00 2001 From: Godfrey M Date: Tue, 21 May 2024 14:08:35 -0700 Subject: [PATCH 28/36] conditionally fixed redirect select option --- app/Helpers/Helper.php | 5 +++-- app/Http/Controllers/Assets/AssetCheckinController.php | 5 ++++- app/Http/Controllers/Assets/AssetCheckoutController.php | 8 +++----- .../partials/forms/redirect_submit_options.blade.php | 6 +++--- 4 files changed, 13 insertions(+), 11 deletions(-) diff --git a/app/Helpers/Helper.php b/app/Helpers/Helper.php index cbbef02e4..eb4c8ed81 100644 --- a/app/Helpers/Helper.php +++ b/app/Helpers/Helper.php @@ -1461,8 +1461,9 @@ class Helper } - static public function getRedirectOption($request, $id, $table) + static public function getRedirectOption($request, $id, $table, $asset_id = null) { + $redirect_option = Session::get('redirect_option'); $checkout_to_type = Session::get('checkout_to_type'); @@ -1477,7 +1478,7 @@ class Helper if ($redirect_option == '1') { switch ($table) { case "Assets": - return redirect()->route('hardware.show', $id)->with('success', trans('admin/hardware/message.checkout.success')); + return redirect()->route('hardware.show', $id ? $id : $asset_id)->with('success', trans('admin/hardware/message.checkout.success')); } } //return to thing being assigned to diff --git a/app/Http/Controllers/Assets/AssetCheckinController.php b/app/Http/Controllers/Assets/AssetCheckinController.php index 0be355c7a..6de856e7f 100644 --- a/app/Http/Controllers/Assets/AssetCheckinController.php +++ b/app/Http/Controllers/Assets/AssetCheckinController.php @@ -13,6 +13,7 @@ use App\Models\LicenseSeat; use Illuminate\Database\Eloquent\Builder; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Redirect; +use Illuminate\Support\Facades\Session; use Illuminate\Support\Facades\View; class AssetCheckinController extends Controller @@ -122,10 +123,12 @@ class AssetCheckinController extends Controller $acceptance->delete(); }); + Session::put('redirect_option', $request->get('redirect_option')); // Was the asset updated? if ($asset->save()) { + event(new CheckoutableCheckedIn($asset, $target, Auth::user(), $request->input('note'), $checkin_at, $originalValues)); - return Helper::getRedirectOption($request, $assetId); + return Helper::getRedirectOption($asset, $assetId, 'Assets'); } // Redirect to the asset management page with error return redirect()->route('hardware.index')->with('error', trans('admin/hardware/message.checkin.error').$asset->getErrors()); diff --git a/app/Http/Controllers/Assets/AssetCheckoutController.php b/app/Http/Controllers/Assets/AssetCheckoutController.php index 8e54474a4..8531a99ea 100644 --- a/app/Http/Controllers/Assets/AssetCheckoutController.php +++ b/app/Http/Controllers/Assets/AssetCheckoutController.php @@ -99,13 +99,11 @@ class AssetCheckoutController extends Controller return redirect()->to("hardware/$assetId/checkout")->with('error', trans('general.error_user_company')); } } - $redirect_option = $request->get('redirect_option'); - if($redirect_option != Session::get('redirect_option')) { - Session::put(['redirect_option' => $redirect_option, 'checkout_to_type' => $request->get('checkout_to_type')]); - } + + Session::put(['redirect_option' => $request->get('redirect_option'), 'checkout_to_type' => $request->get('checkout_to_type')]); if ($asset->checkOut($target, $admin, $checkout_at, $expected_checkin, $request->get('note'), $request->get('name'))) { - return Helper::getRedirectOption($request, $assetId); + return Helper::getRedirectOption($request, $assetId, 'Assets'); } // Redirect to the asset management page with error return redirect()->to("hardware/$assetId/checkout")->with('error', trans('admin/hardware/message.checkout.error').$asset->getErrors()); diff --git a/resources/views/partials/forms/redirect_submit_options.blade.php b/resources/views/partials/forms/redirect_submit_options.blade.php index 2b67540c5..dd5134e7a 100644 --- a/resources/views/partials/forms/redirect_submit_options.blade.php +++ b/resources/views/partials/forms/redirect_submit_options.blade.php @@ -1,11 +1,11 @@ \ No newline at end of file From 6b5aa91f3d2ea08c9a2fd07415797e67c64dd769 Mon Sep 17 00:00:00 2001 From: snipe Date: Thu, 30 May 2024 13:00:57 +0100 Subject: [PATCH 29/36] Upgraded papaparse Signed-off-by: snipe --- package-lock.json | 7 ++++--- package.json | 12 ++++++------ 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index b6cc629e4..6f57b90fe 100644 --- a/package-lock.json +++ b/package-lock.json @@ -31,7 +31,7 @@ "less-loader": "^6.0", "list.js": "^1.5.0", "morris.js": "github:morrisjs/morris.js", - "papaparse": "^4.3.3", + "papaparse": "5.2.0", "select2": "4.0.13", "sheetjs": "^2.0.0", "signature_pad": "^4.2.0", @@ -8345,8 +8345,9 @@ "license": "(MIT AND Zlib)" }, "node_modules/papaparse": { - "version": "4.6.3", - "license": "MIT" + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/papaparse/-/papaparse-5.2.0.tgz", + "integrity": "sha512-ylq1wgUSnagU+MKQtNeVqrPhZuMYBvOSL00DHycFTCxownF95gpLAk1HiHdUW77N8yxRq1qHXLdlIPyBSG9NSA==" }, "node_modules/param-case": { "version": "3.0.4", diff --git a/package.json b/package.json index d7930a515..8ffb808c2 100644 --- a/package.json +++ b/package.json @@ -30,13 +30,13 @@ "acorn-import-assertions": "^1.9.0", "admin-lte": "^2.4.18", "ajv": "^6.12.6", - "alpinejs": "^3.13.10", + "alpinejs": "^3.13.10", "blueimp-file-upload": "^9.34.0", "bootstrap": "^3.4.1", "bootstrap-colorpicker": "^2.5.3", "bootstrap-datepicker": "^1.10.0", "bootstrap-less": "^3.3.8", - "bootstrap-table": "1.22.5", + "bootstrap-table": "1.22.5", "chart.js": "^2.9.4", "clipboard": "^2.0.11", "css-loader": "^5.0.0", @@ -44,19 +44,19 @@ "imagemin": "^8.0.1", "jquery-slimscroll": "^1.3.8", "jquery-ui": "^1.13.3", - "jquery.iframe-transport": "^1.0.0", "jquery-validation": "^1.20.0", - "jspdf-autotable": "^3.8.2", + "jquery.iframe-transport": "^1.0.0", + "jspdf-autotable": "^3.8.2", "less": "^4.2.0", "less-loader": "^6.0", "list.js": "^1.5.0", "morris.js": "github:morrisjs/morris.js", - "papaparse": "^4.3.3", + "papaparse": "5.2.0", "select2": "4.0.13", "sheetjs": "^2.0.0", "signature_pad": "^4.2.0", "tableexport.jquery.plugin": "1.30.0", "tether": "^1.4.0", - "webpack": "^5.90.2" + "webpack": "^5.90.2" } } From 180d7b1b5bf3739182c173a1a442ee77d6f5b0e9 Mon Sep 17 00:00:00 2001 From: snipe Date: Thu, 30 May 2024 13:13:25 +0100 Subject: [PATCH 30/36] Upgraded axios Signed-off-by: snipe --- package-lock.json | 18 +++++++++++++----- package.json | 2 +- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6f57b90fe..cab09a4b9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -41,7 +41,7 @@ }, "devDependencies": { "all-contributors-cli": "^6.26.1", - "axios": "^0.27.2", + "axios": "^1.7.2", "babel-preset-latest": "^6.24.1", "jquery": "<3.6.0", "laravel-mix": "^6.0.49", @@ -2860,12 +2860,14 @@ } }, "node_modules/axios": { - "version": "0.27.2", + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz", + "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==", "dev": true, - "license": "MIT", "dependencies": { - "follow-redirects": "^1.14.9", - "form-data": "^4.0.0" + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" } }, "node_modules/babel-code-frame": { @@ -9185,6 +9187,12 @@ "node": ">= 0.10" } }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true + }, "node_modules/prr": { "version": "1.0.1", "license": "MIT", diff --git a/package.json b/package.json index 8ffb808c2..9b826c596 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ }, "devDependencies": { "all-contributors-cli": "^6.26.1", - "axios": "^0.27.2", + "axios": "^1.7.2", "babel-preset-latest": "^6.24.1", "jquery": "<3.6.0", "laravel-mix": "^6.0.49", From a46e2ebfd80e3e5db38d75ace924bf9532d6d201 Mon Sep 17 00:00:00 2001 From: snipe Date: Thu, 30 May 2024 13:59:00 +0100 Subject: [PATCH 31/36] Small tweaks to user export, user view translations Signed-off-by: snipe --- app/Http/Controllers/Users/UsersController.php | 7 ++++--- resources/lang/en-US/general.php | 3 +++ resources/views/users/view.blade.php | 6 +++--- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/app/Http/Controllers/Users/UsersController.php b/app/Http/Controllers/Users/UsersController.php index e1f0b2724..9624753b1 100755 --- a/app/Http/Controllers/Users/UsersController.php +++ b/app/Http/Controllers/Users/UsersController.php @@ -563,7 +563,7 @@ class UsersController extends Controller trans('general.accessories'), trans('general.consumables'), trans('general.groups'), - trans('general.permission_level'), + trans('general.permissions'), trans('general.notes'), trans('admin/users/table.activated'), trans('general.created_at'), @@ -580,10 +580,11 @@ class UsersController extends Controller $permissionstring = ""; - if(array_key_exists("superuser", json_decode($user->permissions, true))) { + + if($user->isSuperUser()) { $permissionstring = trans('general.superuser'); } - elseif(array_key_exists("admin", json_decode($user->permissions, true))) { + elseif($user->hasAccess('admin')) { $permissionstring = trans('general.admin'); } else { diff --git a/resources/lang/en-US/general.php b/resources/lang/en-US/general.php index 6c8c0f4af..ec0b8e6ee 100644 --- a/resources/lang/en-US/general.php +++ b/resources/lang/en-US/general.php @@ -11,6 +11,9 @@ return [ 'activity_report' => 'Activity Report', 'address' => 'Address', 'admin' => 'Admin', + 'admin_tooltip' => 'This user has admin privileges', + 'superuser' => 'Superuser', + 'superuser_tooltip' => 'This user has superuser privileges', 'administrator' => 'Administrator', 'add_seats' => 'Added seats', 'age' => "Age", diff --git a/resources/views/users/view.blade.php b/resources/views/users/view.blade.php index 7c73b1240..00bfc84df 100755 --- a/resources/views/users/view.blade.php +++ b/resources/views/users/view.blade.php @@ -167,7 +167,7 @@ @if (($user->isSuperUser()) || ($user->hasAccess('admin'))) -
{{ ($user->isSuperUser()) ? 'superadmin' : 'admin'}}
+
{{ ($user->isSuperUser()) ? strtolower(trans('general.superuser')) : strtolower(trans('general.admin')) }}
@endif @@ -309,9 +309,9 @@
@if ($user->isSuperUser()) -   +   @elseif ($user->hasAccess('admin')) -   +   @endif {{ $user->username }} From 5a5d171ba2e4741d21e3202894c8b4b76c1cbb12 Mon Sep 17 00:00:00 2001 From: snipe Date: Thu, 30 May 2024 14:15:08 +0100 Subject: [PATCH 32/36] Put session facade back - derp Signed-off-by: snipe --- app/Helpers/Helper.php | 1 + 1 file changed, 1 insertion(+) diff --git a/app/Helpers/Helper.php b/app/Helpers/Helper.php index 75c0658bb..1ac2a90a3 100644 --- a/app/Helpers/Helper.php +++ b/app/Helpers/Helper.php @@ -17,6 +17,7 @@ use Illuminate\Contracts\Encryption\DecryptException; use Carbon\Carbon; use Illuminate\Support\Facades\Log; use Intervention\Image\ImageManagerStatic as Image; +use Illuminate\Support\Facades\Session; class Helper { From cf8de3baa9ab922cb24085075fc278c903ab336a Mon Sep 17 00:00:00 2001 From: Godfrey M Date: Thu, 30 May 2024 11:11:35 -0700 Subject: [PATCH 33/36] fix checkin option from appearing --- .../views/partials/forms/redirect_submit_options.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/views/partials/forms/redirect_submit_options.blade.php b/resources/views/partials/forms/redirect_submit_options.blade.php index dd5134e7a..cce9ae1bb 100644 --- a/resources/views/partials/forms/redirect_submit_options.blade.php +++ b/resources/views/partials/forms/redirect_submit_options.blade.php @@ -5,7 +5,7 @@
\ No newline at end of file From 0ee441a9764ef34c4133d53e66e32f004faf16b9 Mon Sep 17 00:00:00 2001 From: Godfrey M Date: Thu, 30 May 2024 11:19:06 -0700 Subject: [PATCH 34/36] adds hidden as well --- .../views/partials/forms/redirect_submit_options.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/views/partials/forms/redirect_submit_options.blade.php b/resources/views/partials/forms/redirect_submit_options.blade.php index cce9ae1bb..979bc5403 100644 --- a/resources/views/partials/forms/redirect_submit_options.blade.php +++ b/resources/views/partials/forms/redirect_submit_options.blade.php @@ -5,7 +5,7 @@ \ No newline at end of file From 0981cfa9021d221bd76a013260bc3a9121366ca9 Mon Sep 17 00:00:00 2001 From: snipe Date: Thu, 30 May 2024 20:22:50 +0100 Subject: [PATCH 35/36] Built assets Signed-off-by: snipe --- public/js/build/app.js | 53 ++++++++++------------------ public/js/build/vendor.js | 20 ++++------- public/js/dist/all.js | 73 ++++++++++++++------------------------- public/mix-manifest.json | 7 ++-- 4 files changed, 55 insertions(+), 98 deletions(-) diff --git a/public/js/build/app.js b/public/js/build/app.js index ad6483785..28c4e4948 100644 --- a/public/js/build/app.js +++ b/public/js/build/app.js @@ -32208,19 +32208,6 @@ __webpack_require__.r(__webpack_exports__); // extracted by mini-css-extract-plugin -/***/ }), - -/***/ "./node_modules/admin-lte/build/less/AdminLTE.less": -/*!*********************************************************!*\ - !*** ./node_modules/admin-lte/build/less/AdminLTE.less ***! - \*********************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -// extracted by mini-css-extract-plugin - - /***/ }), /***/ "./resources/assets/less/app.less": @@ -32390,7 +32377,6 @@ __webpack_require__.r(__webpack_exports__); /******/ "css/dist/skins/skin-blue": 0, /******/ "css/build/overrides": 0, /******/ "css/build/app": 0, -/******/ "css/build/AdminLTE": 0, /******/ "css/dist/skins/skin-orange": 0, /******/ "css/dist/skins/skin-orange-dark": 0, /******/ "css/dist/skins/skin-blue-dark": 0, @@ -32453,26 +32439,25 @@ __webpack_require__.r(__webpack_exports__); /******/ // startup /******/ // Load entry module and return exports /******/ // This entry module depends on other loaded chunks and execution need to be delayed -/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-red","css/dist/skins/skin-blue","css/build/overrides","css/build/app","css/build/AdminLTE","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-blue-dark","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-yellow","css/dist/skins/skin-purple-dark","css/dist/skins/skin-purple","css/dist/skins/skin-red-dark","css/dist/skins/skin-black-dark","css/dist/skins/skin-black","css/dist/skins/skin-green-dark","css/dist/skins/skin-green","css/dist/skins/skin-contrast"], () => (__webpack_require__("./resources/assets/js/snipeit.js"))) -/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-red","css/dist/skins/skin-blue","css/build/overrides","css/build/app","css/build/AdminLTE","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-blue-dark","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-yellow","css/dist/skins/skin-purple-dark","css/dist/skins/skin-purple","css/dist/skins/skin-red-dark","css/dist/skins/skin-black-dark","css/dist/skins/skin-black","css/dist/skins/skin-green-dark","css/dist/skins/skin-green","css/dist/skins/skin-contrast"], () => (__webpack_require__("./resources/assets/js/snipeit_modals.js"))) -/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-red","css/dist/skins/skin-blue","css/build/overrides","css/build/app","css/build/AdminLTE","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-blue-dark","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-yellow","css/dist/skins/skin-purple-dark","css/dist/skins/skin-purple","css/dist/skins/skin-red-dark","css/dist/skins/skin-black-dark","css/dist/skins/skin-black","css/dist/skins/skin-green-dark","css/dist/skins/skin-green","css/dist/skins/skin-contrast"], () => (__webpack_require__("./node_modules/admin-lte/build/less/AdminLTE.less"))) -/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-red","css/dist/skins/skin-blue","css/build/overrides","css/build/app","css/build/AdminLTE","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-blue-dark","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-yellow","css/dist/skins/skin-purple-dark","css/dist/skins/skin-purple","css/dist/skins/skin-red-dark","css/dist/skins/skin-black-dark","css/dist/skins/skin-black","css/dist/skins/skin-green-dark","css/dist/skins/skin-green","css/dist/skins/skin-contrast"], () => (__webpack_require__("./resources/assets/less/app.less"))) -/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-red","css/dist/skins/skin-blue","css/build/overrides","css/build/app","css/build/AdminLTE","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-blue-dark","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-yellow","css/dist/skins/skin-purple-dark","css/dist/skins/skin-purple","css/dist/skins/skin-red-dark","css/dist/skins/skin-black-dark","css/dist/skins/skin-black","css/dist/skins/skin-green-dark","css/dist/skins/skin-green","css/dist/skins/skin-contrast"], () => (__webpack_require__("./resources/assets/less/overrides.less"))) -/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-red","css/dist/skins/skin-blue","css/build/overrides","css/build/app","css/build/AdminLTE","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-blue-dark","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-yellow","css/dist/skins/skin-purple-dark","css/dist/skins/skin-purple","css/dist/skins/skin-red-dark","css/dist/skins/skin-black-dark","css/dist/skins/skin-black","css/dist/skins/skin-green-dark","css/dist/skins/skin-green","css/dist/skins/skin-contrast"], () => (__webpack_require__("./resources/assets/less/skins/skin-blue.less"))) -/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-red","css/dist/skins/skin-blue","css/build/overrides","css/build/app","css/build/AdminLTE","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-blue-dark","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-yellow","css/dist/skins/skin-purple-dark","css/dist/skins/skin-purple","css/dist/skins/skin-red-dark","css/dist/skins/skin-black-dark","css/dist/skins/skin-black","css/dist/skins/skin-green-dark","css/dist/skins/skin-green","css/dist/skins/skin-contrast"], () => (__webpack_require__("./resources/assets/less/skins/skin-red.less"))) -/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-red","css/dist/skins/skin-blue","css/build/overrides","css/build/app","css/build/AdminLTE","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-blue-dark","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-yellow","css/dist/skins/skin-purple-dark","css/dist/skins/skin-purple","css/dist/skins/skin-red-dark","css/dist/skins/skin-black-dark","css/dist/skins/skin-black","css/dist/skins/skin-green-dark","css/dist/skins/skin-green","css/dist/skins/skin-contrast"], () => (__webpack_require__("./resources/assets/less/skins/skin-contrast.less"))) -/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-red","css/dist/skins/skin-blue","css/build/overrides","css/build/app","css/build/AdminLTE","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-blue-dark","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-yellow","css/dist/skins/skin-purple-dark","css/dist/skins/skin-purple","css/dist/skins/skin-red-dark","css/dist/skins/skin-black-dark","css/dist/skins/skin-black","css/dist/skins/skin-green-dark","css/dist/skins/skin-green","css/dist/skins/skin-contrast"], () => (__webpack_require__("./resources/assets/less/skins/skin-green.less"))) -/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-red","css/dist/skins/skin-blue","css/build/overrides","css/build/app","css/build/AdminLTE","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-blue-dark","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-yellow","css/dist/skins/skin-purple-dark","css/dist/skins/skin-purple","css/dist/skins/skin-red-dark","css/dist/skins/skin-black-dark","css/dist/skins/skin-black","css/dist/skins/skin-green-dark","css/dist/skins/skin-green","css/dist/skins/skin-contrast"], () => (__webpack_require__("./resources/assets/less/skins/skin-green-dark.less"))) -/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-red","css/dist/skins/skin-blue","css/build/overrides","css/build/app","css/build/AdminLTE","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-blue-dark","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-yellow","css/dist/skins/skin-purple-dark","css/dist/skins/skin-purple","css/dist/skins/skin-red-dark","css/dist/skins/skin-black-dark","css/dist/skins/skin-black","css/dist/skins/skin-green-dark","css/dist/skins/skin-green","css/dist/skins/skin-contrast"], () => (__webpack_require__("./resources/assets/less/skins/skin-black.less"))) -/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-red","css/dist/skins/skin-blue","css/build/overrides","css/build/app","css/build/AdminLTE","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-blue-dark","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-yellow","css/dist/skins/skin-purple-dark","css/dist/skins/skin-purple","css/dist/skins/skin-red-dark","css/dist/skins/skin-black-dark","css/dist/skins/skin-black","css/dist/skins/skin-green-dark","css/dist/skins/skin-green","css/dist/skins/skin-contrast"], () => (__webpack_require__("./resources/assets/less/skins/skin-black-dark.less"))) -/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-red","css/dist/skins/skin-blue","css/build/overrides","css/build/app","css/build/AdminLTE","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-blue-dark","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-yellow","css/dist/skins/skin-purple-dark","css/dist/skins/skin-purple","css/dist/skins/skin-red-dark","css/dist/skins/skin-black-dark","css/dist/skins/skin-black","css/dist/skins/skin-green-dark","css/dist/skins/skin-green","css/dist/skins/skin-contrast"], () => (__webpack_require__("./resources/assets/less/skins/skin-red-dark.less"))) -/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-red","css/dist/skins/skin-blue","css/build/overrides","css/build/app","css/build/AdminLTE","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-blue-dark","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-yellow","css/dist/skins/skin-purple-dark","css/dist/skins/skin-purple","css/dist/skins/skin-red-dark","css/dist/skins/skin-black-dark","css/dist/skins/skin-black","css/dist/skins/skin-green-dark","css/dist/skins/skin-green","css/dist/skins/skin-contrast"], () => (__webpack_require__("./resources/assets/less/skins/skin-purple.less"))) -/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-red","css/dist/skins/skin-blue","css/build/overrides","css/build/app","css/build/AdminLTE","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-blue-dark","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-yellow","css/dist/skins/skin-purple-dark","css/dist/skins/skin-purple","css/dist/skins/skin-red-dark","css/dist/skins/skin-black-dark","css/dist/skins/skin-black","css/dist/skins/skin-green-dark","css/dist/skins/skin-green","css/dist/skins/skin-contrast"], () => (__webpack_require__("./resources/assets/less/skins/skin-purple-dark.less"))) -/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-red","css/dist/skins/skin-blue","css/build/overrides","css/build/app","css/build/AdminLTE","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-blue-dark","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-yellow","css/dist/skins/skin-purple-dark","css/dist/skins/skin-purple","css/dist/skins/skin-red-dark","css/dist/skins/skin-black-dark","css/dist/skins/skin-black","css/dist/skins/skin-green-dark","css/dist/skins/skin-green","css/dist/skins/skin-contrast"], () => (__webpack_require__("./resources/assets/less/skins/skin-yellow.less"))) -/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-red","css/dist/skins/skin-blue","css/build/overrides","css/build/app","css/build/AdminLTE","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-blue-dark","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-yellow","css/dist/skins/skin-purple-dark","css/dist/skins/skin-purple","css/dist/skins/skin-red-dark","css/dist/skins/skin-black-dark","css/dist/skins/skin-black","css/dist/skins/skin-green-dark","css/dist/skins/skin-green","css/dist/skins/skin-contrast"], () => (__webpack_require__("./resources/assets/less/skins/skin-yellow-dark.less"))) -/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-red","css/dist/skins/skin-blue","css/build/overrides","css/build/app","css/build/AdminLTE","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-blue-dark","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-yellow","css/dist/skins/skin-purple-dark","css/dist/skins/skin-purple","css/dist/skins/skin-red-dark","css/dist/skins/skin-black-dark","css/dist/skins/skin-black","css/dist/skins/skin-green-dark","css/dist/skins/skin-green","css/dist/skins/skin-contrast"], () => (__webpack_require__("./resources/assets/less/skins/skin-blue-dark.less"))) -/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-red","css/dist/skins/skin-blue","css/build/overrides","css/build/app","css/build/AdminLTE","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-blue-dark","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-yellow","css/dist/skins/skin-purple-dark","css/dist/skins/skin-purple","css/dist/skins/skin-red-dark","css/dist/skins/skin-black-dark","css/dist/skins/skin-black","css/dist/skins/skin-green-dark","css/dist/skins/skin-green","css/dist/skins/skin-contrast"], () => (__webpack_require__("./resources/assets/less/skins/skin-orange-dark.less"))) -/******/ var __webpack_exports__ = __webpack_require__.O(undefined, ["css/dist/skins/skin-red","css/dist/skins/skin-blue","css/build/overrides","css/build/app","css/build/AdminLTE","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-blue-dark","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-yellow","css/dist/skins/skin-purple-dark","css/dist/skins/skin-purple","css/dist/skins/skin-red-dark","css/dist/skins/skin-black-dark","css/dist/skins/skin-black","css/dist/skins/skin-green-dark","css/dist/skins/skin-green","css/dist/skins/skin-contrast"], () => (__webpack_require__("./resources/assets/less/skins/skin-orange.less"))) +/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-red","css/dist/skins/skin-blue","css/build/overrides","css/build/app","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-blue-dark","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-yellow","css/dist/skins/skin-purple-dark","css/dist/skins/skin-purple","css/dist/skins/skin-red-dark","css/dist/skins/skin-black-dark","css/dist/skins/skin-black","css/dist/skins/skin-green-dark","css/dist/skins/skin-green","css/dist/skins/skin-contrast"], () => (__webpack_require__("./resources/assets/js/snipeit.js"))) +/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-red","css/dist/skins/skin-blue","css/build/overrides","css/build/app","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-blue-dark","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-yellow","css/dist/skins/skin-purple-dark","css/dist/skins/skin-purple","css/dist/skins/skin-red-dark","css/dist/skins/skin-black-dark","css/dist/skins/skin-black","css/dist/skins/skin-green-dark","css/dist/skins/skin-green","css/dist/skins/skin-contrast"], () => (__webpack_require__("./resources/assets/js/snipeit_modals.js"))) +/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-red","css/dist/skins/skin-blue","css/build/overrides","css/build/app","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-blue-dark","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-yellow","css/dist/skins/skin-purple-dark","css/dist/skins/skin-purple","css/dist/skins/skin-red-dark","css/dist/skins/skin-black-dark","css/dist/skins/skin-black","css/dist/skins/skin-green-dark","css/dist/skins/skin-green","css/dist/skins/skin-contrast"], () => (__webpack_require__("./resources/assets/less/app.less"))) +/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-red","css/dist/skins/skin-blue","css/build/overrides","css/build/app","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-blue-dark","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-yellow","css/dist/skins/skin-purple-dark","css/dist/skins/skin-purple","css/dist/skins/skin-red-dark","css/dist/skins/skin-black-dark","css/dist/skins/skin-black","css/dist/skins/skin-green-dark","css/dist/skins/skin-green","css/dist/skins/skin-contrast"], () => (__webpack_require__("./resources/assets/less/overrides.less"))) +/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-red","css/dist/skins/skin-blue","css/build/overrides","css/build/app","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-blue-dark","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-yellow","css/dist/skins/skin-purple-dark","css/dist/skins/skin-purple","css/dist/skins/skin-red-dark","css/dist/skins/skin-black-dark","css/dist/skins/skin-black","css/dist/skins/skin-green-dark","css/dist/skins/skin-green","css/dist/skins/skin-contrast"], () => (__webpack_require__("./resources/assets/less/skins/skin-blue.less"))) +/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-red","css/dist/skins/skin-blue","css/build/overrides","css/build/app","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-blue-dark","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-yellow","css/dist/skins/skin-purple-dark","css/dist/skins/skin-purple","css/dist/skins/skin-red-dark","css/dist/skins/skin-black-dark","css/dist/skins/skin-black","css/dist/skins/skin-green-dark","css/dist/skins/skin-green","css/dist/skins/skin-contrast"], () => (__webpack_require__("./resources/assets/less/skins/skin-red.less"))) +/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-red","css/dist/skins/skin-blue","css/build/overrides","css/build/app","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-blue-dark","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-yellow","css/dist/skins/skin-purple-dark","css/dist/skins/skin-purple","css/dist/skins/skin-red-dark","css/dist/skins/skin-black-dark","css/dist/skins/skin-black","css/dist/skins/skin-green-dark","css/dist/skins/skin-green","css/dist/skins/skin-contrast"], () => (__webpack_require__("./resources/assets/less/skins/skin-contrast.less"))) +/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-red","css/dist/skins/skin-blue","css/build/overrides","css/build/app","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-blue-dark","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-yellow","css/dist/skins/skin-purple-dark","css/dist/skins/skin-purple","css/dist/skins/skin-red-dark","css/dist/skins/skin-black-dark","css/dist/skins/skin-black","css/dist/skins/skin-green-dark","css/dist/skins/skin-green","css/dist/skins/skin-contrast"], () => (__webpack_require__("./resources/assets/less/skins/skin-green.less"))) +/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-red","css/dist/skins/skin-blue","css/build/overrides","css/build/app","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-blue-dark","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-yellow","css/dist/skins/skin-purple-dark","css/dist/skins/skin-purple","css/dist/skins/skin-red-dark","css/dist/skins/skin-black-dark","css/dist/skins/skin-black","css/dist/skins/skin-green-dark","css/dist/skins/skin-green","css/dist/skins/skin-contrast"], () => (__webpack_require__("./resources/assets/less/skins/skin-green-dark.less"))) +/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-red","css/dist/skins/skin-blue","css/build/overrides","css/build/app","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-blue-dark","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-yellow","css/dist/skins/skin-purple-dark","css/dist/skins/skin-purple","css/dist/skins/skin-red-dark","css/dist/skins/skin-black-dark","css/dist/skins/skin-black","css/dist/skins/skin-green-dark","css/dist/skins/skin-green","css/dist/skins/skin-contrast"], () => (__webpack_require__("./resources/assets/less/skins/skin-black.less"))) +/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-red","css/dist/skins/skin-blue","css/build/overrides","css/build/app","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-blue-dark","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-yellow","css/dist/skins/skin-purple-dark","css/dist/skins/skin-purple","css/dist/skins/skin-red-dark","css/dist/skins/skin-black-dark","css/dist/skins/skin-black","css/dist/skins/skin-green-dark","css/dist/skins/skin-green","css/dist/skins/skin-contrast"], () => (__webpack_require__("./resources/assets/less/skins/skin-black-dark.less"))) +/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-red","css/dist/skins/skin-blue","css/build/overrides","css/build/app","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-blue-dark","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-yellow","css/dist/skins/skin-purple-dark","css/dist/skins/skin-purple","css/dist/skins/skin-red-dark","css/dist/skins/skin-black-dark","css/dist/skins/skin-black","css/dist/skins/skin-green-dark","css/dist/skins/skin-green","css/dist/skins/skin-contrast"], () => (__webpack_require__("./resources/assets/less/skins/skin-red-dark.less"))) +/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-red","css/dist/skins/skin-blue","css/build/overrides","css/build/app","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-blue-dark","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-yellow","css/dist/skins/skin-purple-dark","css/dist/skins/skin-purple","css/dist/skins/skin-red-dark","css/dist/skins/skin-black-dark","css/dist/skins/skin-black","css/dist/skins/skin-green-dark","css/dist/skins/skin-green","css/dist/skins/skin-contrast"], () => (__webpack_require__("./resources/assets/less/skins/skin-purple.less"))) +/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-red","css/dist/skins/skin-blue","css/build/overrides","css/build/app","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-blue-dark","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-yellow","css/dist/skins/skin-purple-dark","css/dist/skins/skin-purple","css/dist/skins/skin-red-dark","css/dist/skins/skin-black-dark","css/dist/skins/skin-black","css/dist/skins/skin-green-dark","css/dist/skins/skin-green","css/dist/skins/skin-contrast"], () => (__webpack_require__("./resources/assets/less/skins/skin-purple-dark.less"))) +/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-red","css/dist/skins/skin-blue","css/build/overrides","css/build/app","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-blue-dark","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-yellow","css/dist/skins/skin-purple-dark","css/dist/skins/skin-purple","css/dist/skins/skin-red-dark","css/dist/skins/skin-black-dark","css/dist/skins/skin-black","css/dist/skins/skin-green-dark","css/dist/skins/skin-green","css/dist/skins/skin-contrast"], () => (__webpack_require__("./resources/assets/less/skins/skin-yellow.less"))) +/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-red","css/dist/skins/skin-blue","css/build/overrides","css/build/app","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-blue-dark","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-yellow","css/dist/skins/skin-purple-dark","css/dist/skins/skin-purple","css/dist/skins/skin-red-dark","css/dist/skins/skin-black-dark","css/dist/skins/skin-black","css/dist/skins/skin-green-dark","css/dist/skins/skin-green","css/dist/skins/skin-contrast"], () => (__webpack_require__("./resources/assets/less/skins/skin-yellow-dark.less"))) +/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-red","css/dist/skins/skin-blue","css/build/overrides","css/build/app","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-blue-dark","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-yellow","css/dist/skins/skin-purple-dark","css/dist/skins/skin-purple","css/dist/skins/skin-red-dark","css/dist/skins/skin-black-dark","css/dist/skins/skin-black","css/dist/skins/skin-green-dark","css/dist/skins/skin-green","css/dist/skins/skin-contrast"], () => (__webpack_require__("./resources/assets/less/skins/skin-blue-dark.less"))) +/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-red","css/dist/skins/skin-blue","css/build/overrides","css/build/app","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-blue-dark","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-yellow","css/dist/skins/skin-purple-dark","css/dist/skins/skin-purple","css/dist/skins/skin-red-dark","css/dist/skins/skin-black-dark","css/dist/skins/skin-black","css/dist/skins/skin-green-dark","css/dist/skins/skin-green","css/dist/skins/skin-contrast"], () => (__webpack_require__("./resources/assets/less/skins/skin-orange-dark.less"))) +/******/ var __webpack_exports__ = __webpack_require__.O(undefined, ["css/dist/skins/skin-red","css/dist/skins/skin-blue","css/build/overrides","css/build/app","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-blue-dark","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-yellow","css/dist/skins/skin-purple-dark","css/dist/skins/skin-purple","css/dist/skins/skin-red-dark","css/dist/skins/skin-black-dark","css/dist/skins/skin-black","css/dist/skins/skin-green-dark","css/dist/skins/skin-green","css/dist/skins/skin-contrast"], () => (__webpack_require__("./resources/assets/less/skins/skin-orange.less"))) /******/ __webpack_exports__ = __webpack_require__.O(__webpack_exports__); /******/ /******/ })() diff --git a/public/js/build/vendor.js b/public/js/build/vendor.js index 03b90c552..af587d82c 100644 --- a/public/js/build/vendor.js +++ b/public/js/build/vendor.js @@ -10873,19 +10873,13 @@ return jQuery; /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ !function(n){"function"==typeof define&&define.amd?define(["jquery"],n):"object"==typeof module&&module.exports?module.exports=function(e,t){return void 0===t&&(t="undefined"!=typeof window?require("jquery"):require("jquery")(e)),n(t),t}:n(jQuery)}(function(d){var e=function(){if(d&&d.fn&&d.fn.select2&&d.fn.select2.amd)var e=d.fn.select2.amd;var t,n,i,h,o,s,f,g,m,v,y,_,r,a,w,l;function b(e,t){return r.call(e,t)}function c(e,t){var n,i,r,o,s,a,l,c,u,d,p,h=t&&t.split("/"),f=y.map,g=f&&f["*"]||{};if(e){for(s=(e=e.split("/")).length-1,y.nodeIdCompat&&w.test(e[s])&&(e[s]=e[s].replace(w,"")),"."===e[0].charAt(0)&&h&&(e=h.slice(0,h.length-1).concat(e)),u=0;u":">",'"':""","'":"'","/":"/"};return"string"!=typeof e?e:String(e).replace(/[&<>"'\/\\]/g,function(e){return t[e]})},r.appendMany=function(e,t){if("1.7"===o.fn.jquery.substr(0,3)){var n=o();o.map(t,function(e){n=n.add(e)}),t=n}e.append(t)},r.__cache={};var n=0;return r.GetUniqueElementId=function(e){var t=e.getAttribute("data-select2-id");return null==t&&(e.id?(t=e.id,e.setAttribute("data-select2-id",t)):(e.setAttribute("data-select2-id",++n),t=n.toString())),t},r.StoreData=function(e,t,n){var i=r.GetUniqueElementId(e);r.__cache[i]||(r.__cache[i]={}),r.__cache[i][t]=n},r.GetData=function(e,t){var n=r.GetUniqueElementId(e);return t?r.__cache[n]&&null!=r.__cache[n][t]?r.__cache[n][t]:o(e).data(t):r.__cache[n]},r.RemoveData=function(e){var t=r.GetUniqueElementId(e);null!=r.__cache[t]&&delete r.__cache[t],e.removeAttribute("data-select2-id")},r}),e.define("select2/results",["jquery","./utils"],function(h,f){function i(e,t,n){this.$element=e,this.data=n,this.options=t,i.__super__.constructor.call(this)}return f.Extend(i,f.Observable),i.prototype.render=function(){var e=h('
    ');return this.options.get("multiple")&&e.attr("aria-multiselectable","true"),this.$results=e},i.prototype.clear=function(){this.$results.empty()},i.prototype.displayMessage=function(e){var t=this.options.get("escapeMarkup");this.clear(),this.hideLoading();var n=h(''),i=this.options.get("translations").get(e.message);n.append(t(i(e.args))),n[0].className+=" select2-results__message",this.$results.append(n)},i.prototype.hideMessages=function(){this.$results.find(".select2-results__message").remove()},i.prototype.append=function(e){this.hideLoading();var t=[];if(null!=e.results&&0!==e.results.length){e.results=this.sort(e.results);for(var n=0;n",{class:"select2-results__options select2-results__options--nested"});p.append(l),s.append(a),s.append(p)}else this.template(e,t);return f.StoreData(t,"data",e),t},i.prototype.bind=function(t,e){var l=this,n=t.id+"-results";this.$results.attr("id",n),t.on("results:all",function(e){l.clear(),l.append(e.data),t.isOpen()&&(l.setClasses(),l.highlightFirstItem())}),t.on("results:append",function(e){l.append(e.data),t.isOpen()&&l.setClasses()}),t.on("query",function(e){l.hideMessages(),l.showLoading(e)}),t.on("select",function(){t.isOpen()&&(l.setClasses(),l.options.get("scrollAfterSelect")&&l.highlightFirstItem())}),t.on("unselect",function(){t.isOpen()&&(l.setClasses(),l.options.get("scrollAfterSelect")&&l.highlightFirstItem())}),t.on("open",function(){l.$results.attr("aria-expanded","true"),l.$results.attr("aria-hidden","false"),l.setClasses(),l.ensureHighlightVisible()}),t.on("close",function(){l.$results.attr("aria-expanded","false"),l.$results.attr("aria-hidden","true"),l.$results.removeAttr("aria-activedescendant")}),t.on("results:toggle",function(){var e=l.getHighlightedResults();0!==e.length&&e.trigger("mouseup")}),t.on("results:select",function(){var e=l.getHighlightedResults();if(0!==e.length){var t=f.GetData(e[0],"data");"true"==e.attr("aria-selected")?l.trigger("close",{}):l.trigger("select",{data:t})}}),t.on("results:previous",function(){var e=l.getHighlightedResults(),t=l.$results.find("[aria-selected]"),n=t.index(e);if(!(n<=0)){var i=n-1;0===e.length&&(i=0);var r=t.eq(i);r.trigger("mouseenter");var o=l.$results.offset().top,s=r.offset().top,a=l.$results.scrollTop()+(s-o);0===i?l.$results.scrollTop(0):s-o<0&&l.$results.scrollTop(a)}}),t.on("results:next",function(){var e=l.getHighlightedResults(),t=l.$results.find("[aria-selected]"),n=t.index(e)+1;if(!(n>=t.length)){var i=t.eq(n);i.trigger("mouseenter");var r=l.$results.offset().top+l.$results.outerHeight(!1),o=i.offset().top+i.outerHeight(!1),s=l.$results.scrollTop()+o-r;0===n?l.$results.scrollTop(0):rthis.$results.outerHeight()||o<0)&&this.$results.scrollTop(r)}},i.prototype.template=function(e,t){var n=this.options.get("templateResult"),i=this.options.get("escapeMarkup"),r=n(e,t);null==r?t.style.display="none":"string"==typeof r?t.innerHTML=i(r):h(t).append(r)},i}),e.define("select2/keys",[],function(){return{BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,CTRL:17,ALT:18,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46}}),e.define("select2/selection/base",["jquery","../utils","../keys"],function(n,i,r){function o(e,t){this.$element=e,this.options=t,o.__super__.constructor.call(this)}return i.Extend(o,i.Observable),o.prototype.render=function(){var e=n('');return this._tabindex=0,null!=i.GetData(this.$element[0],"old-tabindex")?this._tabindex=i.GetData(this.$element[0],"old-tabindex"):null!=this.$element.attr("tabindex")&&(this._tabindex=this.$element.attr("tabindex")),e.attr("title",this.$element.attr("title")),e.attr("tabindex",this._tabindex),e.attr("aria-disabled","false"),this.$selection=e},o.prototype.bind=function(e,t){var n=this,i=e.id+"-results";this.container=e,this.$selection.on("focus",function(e){n.trigger("focus",e)}),this.$selection.on("blur",function(e){n._handleBlur(e)}),this.$selection.on("keydown",function(e){n.trigger("keypress",e),e.which===r.SPACE&&e.preventDefault()}),e.on("results:focus",function(e){n.$selection.attr("aria-activedescendant",e.data._resultId)}),e.on("selection:update",function(e){n.update(e.data)}),e.on("open",function(){n.$selection.attr("aria-expanded","true"),n.$selection.attr("aria-owns",i),n._attachCloseHandler(e)}),e.on("close",function(){n.$selection.attr("aria-expanded","false"),n.$selection.removeAttr("aria-activedescendant"),n.$selection.removeAttr("aria-owns"),n.$selection.trigger("focus"),n._detachCloseHandler(e)}),e.on("enable",function(){n.$selection.attr("tabindex",n._tabindex),n.$selection.attr("aria-disabled","false")}),e.on("disable",function(){n.$selection.attr("tabindex","-1"),n.$selection.attr("aria-disabled","true")})},o.prototype._handleBlur=function(e){var t=this;window.setTimeout(function(){document.activeElement==t.$selection[0]||n.contains(t.$selection[0],document.activeElement)||t.trigger("blur",e)},1)},o.prototype._attachCloseHandler=function(e){n(document.body).on("mousedown.select2."+e.id,function(e){var t=n(e.target).closest(".select2");n(".select2.select2-container--open").each(function(){this!=t[0]&&i.GetData(this,"element").select2("close")})})},o.prototype._detachCloseHandler=function(e){n(document.body).off("mousedown.select2."+e.id)},o.prototype.position=function(e,t){t.find(".selection").append(e)},o.prototype.destroy=function(){this._detachCloseHandler(this.container)},o.prototype.update=function(e){throw new Error("The `update` method must be defined in child classes.")},o.prototype.isEnabled=function(){return!this.isDisabled()},o.prototype.isDisabled=function(){return this.options.get("disabled")},o}),e.define("select2/selection/single",["jquery","./base","../utils","../keys"],function(e,t,n,i){function r(){r.__super__.constructor.apply(this,arguments)}return n.Extend(r,t),r.prototype.render=function(){var e=r.__super__.render.call(this);return e.addClass("select2-selection--single"),e.html(''),e},r.prototype.bind=function(t,e){var n=this;r.__super__.bind.apply(this,arguments);var i=t.id+"-container";this.$selection.find(".select2-selection__rendered").attr("id",i).attr("role","textbox").attr("aria-readonly","true"),this.$selection.attr("aria-labelledby",i),this.$selection.on("mousedown",function(e){1===e.which&&n.trigger("toggle",{originalEvent:e})}),this.$selection.on("focus",function(e){}),this.$selection.on("blur",function(e){}),t.on("focus",function(e){t.isOpen()||n.$selection.trigger("focus")})},r.prototype.clear=function(){var e=this.$selection.find(".select2-selection__rendered");e.empty(),e.removeAttr("title")},r.prototype.display=function(e,t){var n=this.options.get("templateSelection");return this.options.get("escapeMarkup")(n(e,t))},r.prototype.selectionContainer=function(){return e("")},r.prototype.update=function(e){if(0!==e.length){var t=e[0],n=this.$selection.find(".select2-selection__rendered"),i=this.display(t,n);n.empty().append(i);var r=t.title||t.text;r?n.attr("title",r):n.removeAttr("title")}else this.clear()},r}),e.define("select2/selection/multiple",["jquery","./base","../utils"],function(r,e,l){function n(e,t){n.__super__.constructor.apply(this,arguments)}return l.Extend(n,e),n.prototype.render=function(){var e=n.__super__.render.call(this);return e.addClass("select2-selection--multiple"),e.html('
      '),e},n.prototype.bind=function(e,t){var i=this;n.__super__.bind.apply(this,arguments),this.$selection.on("click",function(e){i.trigger("toggle",{originalEvent:e})}),this.$selection.on("click",".select2-selection__choice__remove",function(e){if(!i.isDisabled()){var t=r(this).parent(),n=l.GetData(t[0],"data");i.trigger("unselect",{originalEvent:e,data:n})}})},n.prototype.clear=function(){var e=this.$selection.find(".select2-selection__rendered");e.empty(),e.removeAttr("title")},n.prototype.display=function(e,t){var n=this.options.get("templateSelection");return this.options.get("escapeMarkup")(n(e,t))},n.prototype.selectionContainer=function(){return r('
    • ×
    • ')},n.prototype.update=function(e){if(this.clear(),0!==e.length){for(var t=[],n=0;n×');a.StoreData(i[0],"data",t),this.$selection.find(".select2-selection__rendered").prepend(i)}},e}),e.define("select2/selection/search",["jquery","../utils","../keys"],function(i,a,l){function e(e,t,n){e.call(this,t,n)}return e.prototype.render=function(e){var t=i('');this.$searchContainer=t,this.$search=t.find("input");var n=e.call(this);return this._transferTabIndex(),n},e.prototype.bind=function(e,t,n){var i=this,r=t.id+"-results";e.call(this,t,n),t.on("open",function(){i.$search.attr("aria-controls",r),i.$search.trigger("focus")}),t.on("close",function(){i.$search.val(""),i.$search.removeAttr("aria-controls"),i.$search.removeAttr("aria-activedescendant"),i.$search.trigger("focus")}),t.on("enable",function(){i.$search.prop("disabled",!1),i._transferTabIndex()}),t.on("disable",function(){i.$search.prop("disabled",!0)}),t.on("focus",function(e){i.$search.trigger("focus")}),t.on("results:focus",function(e){e.data._resultId?i.$search.attr("aria-activedescendant",e.data._resultId):i.$search.removeAttr("aria-activedescendant")}),this.$selection.on("focusin",".select2-search--inline",function(e){i.trigger("focus",e)}),this.$selection.on("focusout",".select2-search--inline",function(e){i._handleBlur(e)}),this.$selection.on("keydown",".select2-search--inline",function(e){if(e.stopPropagation(),i.trigger("keypress",e),i._keyUpPrevented=e.isDefaultPrevented(),e.which===l.BACKSPACE&&""===i.$search.val()){var t=i.$searchContainer.prev(".select2-selection__choice");if(0this.maximumInputLength?this.trigger("results:message",{message:"inputTooLong",args:{maximum:this.maximumInputLength,input:t.term,params:t}}):e.call(this,t,n)},e}),e.define("select2/data/maximumSelectionLength",[],function(){function e(e,t,n){this.maximumSelectionLength=n.get("maximumSelectionLength"),e.call(this,t,n)}return e.prototype.bind=function(e,t,n){var i=this;e.call(this,t,n),t.on("select",function(){i._checkIfMaximumSelected()})},e.prototype.query=function(e,t,n){var i=this;this._checkIfMaximumSelected(function(){e.call(i,t,n)})},e.prototype._checkIfMaximumSelected=function(e,n){var i=this;this.current(function(e){var t=null!=e?e.length:0;0=i.maximumSelectionLength?i.trigger("results:message",{message:"maximumSelected",args:{maximum:i.maximumSelectionLength}}):n&&n()})},e}),e.define("select2/dropdown",["jquery","./utils"],function(t,e){function n(e,t){this.$element=e,this.options=t,n.__super__.constructor.call(this)}return e.Extend(n,e.Observable),n.prototype.render=function(){var e=t('');return e.attr("dir",this.options.get("dir")),this.$dropdown=e},n.prototype.bind=function(){},n.prototype.position=function(e,t){},n.prototype.destroy=function(){this.$dropdown.remove()},n}),e.define("select2/dropdown/search",["jquery","../utils"],function(o,e){function t(){}return t.prototype.render=function(e){var t=e.call(this),n=o('');return this.$searchContainer=n,this.$search=n.find("input"),t.prepend(n),t},t.prototype.bind=function(e,t,n){var i=this,r=t.id+"-results";e.call(this,t,n),this.$search.on("keydown",function(e){i.trigger("keypress",e),i._keyUpPrevented=e.isDefaultPrevented()}),this.$search.on("input",function(e){o(this).off("keyup")}),this.$search.on("keyup input",function(e){i.handleSearch(e)}),t.on("open",function(){i.$search.attr("tabindex",0),i.$search.attr("aria-controls",r),i.$search.trigger("focus"),window.setTimeout(function(){i.$search.trigger("focus")},0)}),t.on("close",function(){i.$search.attr("tabindex",-1),i.$search.removeAttr("aria-controls"),i.$search.removeAttr("aria-activedescendant"),i.$search.val(""),i.$search.trigger("blur")}),t.on("focus",function(){t.isOpen()||i.$search.trigger("focus")}),t.on("results:all",function(e){null!=e.query.term&&""!==e.query.term||(i.showSearch(e)?i.$searchContainer.removeClass("select2-search--hide"):i.$searchContainer.addClass("select2-search--hide"))}),t.on("results:focus",function(e){e.data._resultId?i.$search.attr("aria-activedescendant",e.data._resultId):i.$search.removeAttr("aria-activedescendant")})},t.prototype.handleSearch=function(e){if(!this._keyUpPrevented){var t=this.$search.val();this.trigger("query",{term:t})}this._keyUpPrevented=!1},t.prototype.showSearch=function(e,t){return!0},t}),e.define("select2/dropdown/hidePlaceholder",[],function(){function e(e,t,n,i){this.placeholder=this.normalizePlaceholder(n.get("placeholder")),e.call(this,t,n,i)}return e.prototype.append=function(e,t){t.results=this.removePlaceholder(t.results),e.call(this,t)},e.prototype.normalizePlaceholder=function(e,t){return"string"==typeof t&&(t={id:"",text:t}),t},e.prototype.removePlaceholder=function(e,t){for(var n=t.slice(0),i=t.length-1;0<=i;i--){var r=t[i];this.placeholder.id===r.id&&n.splice(i,1)}return n},e}),e.define("select2/dropdown/infiniteScroll",["jquery"],function(n){function e(e,t,n,i){this.lastParams={},e.call(this,t,n,i),this.$loadingMore=this.createLoadingMore(),this.loading=!1}return e.prototype.append=function(e,t){this.$loadingMore.remove(),this.loading=!1,e.call(this,t),this.showLoadingMore(t)&&(this.$results.append(this.$loadingMore),this.loadMoreIfNeeded())},e.prototype.bind=function(e,t,n){var i=this;e.call(this,t,n),t.on("query",function(e){i.lastParams=e,i.loading=!0}),t.on("query:append",function(e){i.lastParams=e,i.loading=!0}),this.$results.on("scroll",this.loadMoreIfNeeded.bind(this))},e.prototype.loadMoreIfNeeded=function(){var e=n.contains(document.documentElement,this.$loadingMore[0]);if(!this.loading&&e){var t=this.$results.offset().top+this.$results.outerHeight(!1);this.$loadingMore.offset().top+this.$loadingMore.outerHeight(!1)<=t+50&&this.loadMore()}},e.prototype.loadMore=function(){this.loading=!0;var e=n.extend({},{page:1},this.lastParams);e.page++,this.trigger("query:append",e)},e.prototype.showLoadingMore=function(e,t){return t.pagination&&t.pagination.more},e.prototype.createLoadingMore=function(){var e=n('
    • '),t=this.options.get("translations").get("loadingMore");return e.html(t(this.lastParams)),e},e}),e.define("select2/dropdown/attachBody",["jquery","../utils"],function(f,a){function e(e,t,n){this.$dropdownParent=f(n.get("dropdownParent")||document.body),e.call(this,t,n)}return e.prototype.bind=function(e,t,n){var i=this;e.call(this,t,n),t.on("open",function(){i._showDropdown(),i._attachPositioningHandler(t),i._bindContainerResultHandlers(t)}),t.on("close",function(){i._hideDropdown(),i._detachPositioningHandler(t)}),this.$dropdownContainer.on("mousedown",function(e){e.stopPropagation()})},e.prototype.destroy=function(e){e.call(this),this.$dropdownContainer.remove()},e.prototype.position=function(e,t,n){t.attr("class",n.attr("class")),t.removeClass("select2"),t.addClass("select2-container--open"),t.css({position:"absolute",top:-999999}),this.$container=n},e.prototype.render=function(e){var t=f(""),n=e.call(this);return t.append(n),this.$dropdownContainer=t},e.prototype._hideDropdown=function(e){this.$dropdownContainer.detach()},e.prototype._bindContainerResultHandlers=function(e,t){if(!this._containerResultsHandlersBound){var n=this;t.on("results:all",function(){n._positionDropdown(),n._resizeDropdown()}),t.on("results:append",function(){n._positionDropdown(),n._resizeDropdown()}),t.on("results:message",function(){n._positionDropdown(),n._resizeDropdown()}),t.on("select",function(){n._positionDropdown(),n._resizeDropdown()}),t.on("unselect",function(){n._positionDropdown(),n._resizeDropdown()}),this._containerResultsHandlersBound=!0}},e.prototype._attachPositioningHandler=function(e,t){var n=this,i="scroll.select2."+t.id,r="resize.select2."+t.id,o="orientationchange.select2."+t.id,s=this.$container.parents().filter(a.hasScroll);s.each(function(){a.StoreData(this,"select2-scroll-position",{x:f(this).scrollLeft(),y:f(this).scrollTop()})}),s.on(i,function(e){var t=a.GetData(this,"select2-scroll-position");f(this).scrollTop(t.y)}),f(window).on(i+" "+r+" "+o,function(e){n._positionDropdown(),n._resizeDropdown()})},e.prototype._detachPositioningHandler=function(e,t){var n="scroll.select2."+t.id,i="resize.select2."+t.id,r="orientationchange.select2."+t.id;this.$container.parents().filter(a.hasScroll).off(n),f(window).off(n+" "+i+" "+r)},e.prototype._positionDropdown=function(){var e=f(window),t=this.$dropdown.hasClass("select2-dropdown--above"),n=this.$dropdown.hasClass("select2-dropdown--below"),i=null,r=this.$container.offset();r.bottom=r.top+this.$container.outerHeight(!1);var o={height:this.$container.outerHeight(!1)};o.top=r.top,o.bottom=r.top+o.height;var s=this.$dropdown.outerHeight(!1),a=e.scrollTop(),l=e.scrollTop()+e.height(),c=ar.bottom+s,d={left:r.left,top:o.bottom},p=this.$dropdownParent;"static"===p.css("position")&&(p=p.offsetParent());var h={top:0,left:0};(f.contains(document.body,p[0])||p[0].isConnected)&&(h=p.offset()),d.top-=h.top,d.left-=h.left,t||n||(i="below"),u||!c||t?!c&&u&&t&&(i="below"):i="above",("above"==i||t&&"below"!==i)&&(d.top=o.top-h.top-s),null!=i&&(this.$dropdown.removeClass("select2-dropdown--below select2-dropdown--above").addClass("select2-dropdown--"+i),this.$container.removeClass("select2-container--below select2-container--above").addClass("select2-container--"+i)),this.$dropdownContainer.css(d)},e.prototype._resizeDropdown=function(){var e={width:this.$container.outerWidth(!1)+"px"};this.options.get("dropdownAutoWidth")&&(e.minWidth=e.width,e.position="relative",e.width="auto"),this.$dropdown.css(e)},e.prototype._showDropdown=function(e){this.$dropdownContainer.appendTo(this.$dropdownParent),this._positionDropdown(),this._resizeDropdown()},e}),e.define("select2/dropdown/minimumResultsForSearch",[],function(){function e(e,t,n,i){this.minimumResultsForSearch=n.get("minimumResultsForSearch"),this.minimumResultsForSearch<0&&(this.minimumResultsForSearch=1/0),e.call(this,t,n,i)}return e.prototype.showSearch=function(e,t){return!(function e(t){for(var n=0,i=0;i');return e.attr("dir",this.options.get("dir")),this.$container=e,this.$container.addClass("select2-container--"+this.options.get("theme")),u.StoreData(e[0],"element",this.$element),e},d}),e.define("select2/compat/utils",["jquery"],function(s){return{syncCssClasses:function(e,t,n){var i,r,o=[];(i=s.trim(e.attr("class")))&&s((i=""+i).split(/\s+/)).each(function(){0===this.indexOf("select2-")&&o.push(this)}),(i=s.trim(t.attr("class")))&&s((i=""+i).split(/\s+/)).each(function(){0!==this.indexOf("select2-")&&null!=(r=n(this))&&o.push(r)}),e.attr("class",o.join(" "))}}}),e.define("select2/compat/containerCss",["jquery","./utils"],function(s,a){function l(e){return null}function e(){}return e.prototype.render=function(e){var t=e.call(this),n=this.options.get("containerCssClass")||"";s.isFunction(n)&&(n=n(this.$element));var i=this.options.get("adaptContainerCssClass");if(i=i||l,-1!==n.indexOf(":all:")){n=n.replace(":all:","");var r=i;i=function(e){var t=r(e);return null!=t?t+" "+e:e}}var o=this.options.get("containerCss")||{};return s.isFunction(o)&&(o=o(this.$element)),a.syncCssClasses(t,this.$element,i),t.css(o),t.addClass(n),t},e}),e.define("select2/compat/dropdownCss",["jquery","./utils"],function(s,a){function l(e){return null}function e(){}return e.prototype.render=function(e){var t=e.call(this),n=this.options.get("dropdownCssClass")||"";s.isFunction(n)&&(n=n(this.$element));var i=this.options.get("adaptDropdownCssClass");if(i=i||l,-1!==n.indexOf(":all:")){n=n.replace(":all:","");var r=i;i=function(e){var t=r(e);return null!=t?t+" "+e:e}}var o=this.options.get("dropdownCss")||{};return s.isFunction(o)&&(o=o(this.$element)),a.syncCssClasses(t,this.$element,i),t.css(o),t.addClass(n),t},e}),e.define("select2/compat/initSelection",["jquery"],function(i){function e(e,t,n){n.get("debug")&&window.console&&console.warn&&console.warn("Select2: The `initSelection` option has been deprecated in favor of a custom data adapter that overrides the `current` method. This method is now called multiple times instead of a single time when the instance is initialized. Support will be removed for the `initSelection` option in future versions of Select2"),this.initSelection=n.get("initSelection"),this._isInitialized=!1,e.call(this,t,n)}return e.prototype.current=function(e,t){var n=this;this._isInitialized?e.call(this,t):this.initSelection.call(null,this.$element,function(e){n._isInitialized=!0,i.isArray(e)||(e=[e]),t(e)})},e}),e.define("select2/compat/inputData",["jquery","../utils"],function(s,i){function e(e,t,n){this._currentData=[],this._valueSeparator=n.get("valueSeparator")||",","hidden"===t.prop("type")&&n.get("debug")&&console&&console.warn&&console.warn("Select2: Using a hidden input with Select2 is no longer supported and may stop working in the future. It is recommended to use a `');this.$searchContainer=t,this.$search=t.find("input");var n=e.call(this);return this._transferTabIndex(),n},e.prototype.bind=function(e,t,n){var i=this,r=t.id+"-results";e.call(this,t,n),t.on("open",function(){i.$search.attr("aria-controls",r),i.$search.trigger("focus")}),t.on("close",function(){i.$search.val(""),i.$search.removeAttr("aria-controls"),i.$search.removeAttr("aria-activedescendant"),i.$search.trigger("focus")}),t.on("enable",function(){i.$search.prop("disabled",!1),i._transferTabIndex()}),t.on("disable",function(){i.$search.prop("disabled",!0)}),t.on("focus",function(e){i.$search.trigger("focus")}),t.on("results:focus",function(e){e.data._resultId?i.$search.attr("aria-activedescendant",e.data._resultId):i.$search.removeAttr("aria-activedescendant")}),this.$selection.on("focusin",".select2-search--inline",function(e){i.trigger("focus",e)}),this.$selection.on("focusout",".select2-search--inline",function(e){i._handleBlur(e)}),this.$selection.on("keydown",".select2-search--inline",function(e){if(e.stopPropagation(),i.trigger("keypress",e),i._keyUpPrevented=e.isDefaultPrevented(),e.which===l.BACKSPACE&&""===i.$search.val()){var t=i.$searchContainer.prev(".select2-selection__choice");if(0this.maximumInputLength?this.trigger("results:message",{message:"inputTooLong",args:{maximum:this.maximumInputLength,input:t.term,params:t}}):e.call(this,t,n)},e}),e.define("select2/data/maximumSelectionLength",[],function(){function e(e,t,n){this.maximumSelectionLength=n.get("maximumSelectionLength"),e.call(this,t,n)}return e.prototype.bind=function(e,t,n){var i=this;e.call(this,t,n),t.on("select",function(){i._checkIfMaximumSelected()})},e.prototype.query=function(e,t,n){var i=this;this._checkIfMaximumSelected(function(){e.call(i,t,n)})},e.prototype._checkIfMaximumSelected=function(e,n){var i=this;this.current(function(e){var t=null!=e?e.length:0;0=i.maximumSelectionLength?i.trigger("results:message",{message:"maximumSelected",args:{maximum:i.maximumSelectionLength}}):n&&n()})},e}),e.define("select2/dropdown",["jquery","./utils"],function(t,e){function n(e,t){this.$element=e,this.options=t,n.__super__.constructor.call(this)}return e.Extend(n,e.Observable),n.prototype.render=function(){var e=t('');return e.attr("dir",this.options.get("dir")),this.$dropdown=e},n.prototype.bind=function(){},n.prototype.position=function(e,t){},n.prototype.destroy=function(){this.$dropdown.remove()},n}),e.define("select2/dropdown/search",["jquery","../utils"],function(o,e){function t(){}return t.prototype.render=function(e){var t=e.call(this),n=o('');return this.$searchContainer=n,this.$search=n.find("input"),t.prepend(n),t},t.prototype.bind=function(e,t,n){var i=this,r=t.id+"-results";e.call(this,t,n),this.$search.on("keydown",function(e){i.trigger("keypress",e),i._keyUpPrevented=e.isDefaultPrevented()}),this.$search.on("input",function(e){o(this).off("keyup")}),this.$search.on("keyup input",function(e){i.handleSearch(e)}),t.on("open",function(){i.$search.attr("tabindex",0),i.$search.attr("aria-controls",r),i.$search.trigger("focus"),window.setTimeout(function(){i.$search.trigger("focus")},0)}),t.on("close",function(){i.$search.attr("tabindex",-1),i.$search.removeAttr("aria-controls"),i.$search.removeAttr("aria-activedescendant"),i.$search.val(""),i.$search.trigger("blur")}),t.on("focus",function(){t.isOpen()||i.$search.trigger("focus")}),t.on("results:all",function(e){null!=e.query.term&&""!==e.query.term||(i.showSearch(e)?i.$searchContainer.removeClass("select2-search--hide"):i.$searchContainer.addClass("select2-search--hide"))}),t.on("results:focus",function(e){e.data._resultId?i.$search.attr("aria-activedescendant",e.data._resultId):i.$search.removeAttr("aria-activedescendant")})},t.prototype.handleSearch=function(e){if(!this._keyUpPrevented){var t=this.$search.val();this.trigger("query",{term:t})}this._keyUpPrevented=!1},t.prototype.showSearch=function(e,t){return!0},t}),e.define("select2/dropdown/hidePlaceholder",[],function(){function e(e,t,n,i){this.placeholder=this.normalizePlaceholder(n.get("placeholder")),e.call(this,t,n,i)}return e.prototype.append=function(e,t){t.results=this.removePlaceholder(t.results),e.call(this,t)},e.prototype.normalizePlaceholder=function(e,t){return"string"==typeof t&&(t={id:"",text:t}),t},e.prototype.removePlaceholder=function(e,t){for(var n=t.slice(0),i=t.length-1;0<=i;i--){var r=t[i];this.placeholder.id===r.id&&n.splice(i,1)}return n},e}),e.define("select2/dropdown/infiniteScroll",["jquery"],function(n){function e(e,t,n,i){this.lastParams={},e.call(this,t,n,i),this.$loadingMore=this.createLoadingMore(),this.loading=!1}return e.prototype.append=function(e,t){this.$loadingMore.remove(),this.loading=!1,e.call(this,t),this.showLoadingMore(t)&&(this.$results.append(this.$loadingMore),this.loadMoreIfNeeded())},e.prototype.bind=function(e,t,n){var i=this;e.call(this,t,n),t.on("query",function(e){i.lastParams=e,i.loading=!0}),t.on("query:append",function(e){i.lastParams=e,i.loading=!0}),this.$results.on("scroll",this.loadMoreIfNeeded.bind(this))},e.prototype.loadMoreIfNeeded=function(){var e=n.contains(document.documentElement,this.$loadingMore[0]);if(!this.loading&&e){var t=this.$results.offset().top+this.$results.outerHeight(!1);this.$loadingMore.offset().top+this.$loadingMore.outerHeight(!1)<=t+50&&this.loadMore()}},e.prototype.loadMore=function(){this.loading=!0;var e=n.extend({},{page:1},this.lastParams);e.page++,this.trigger("query:append",e)},e.prototype.showLoadingMore=function(e,t){return t.pagination&&t.pagination.more},e.prototype.createLoadingMore=function(){var e=n('
    • '),t=this.options.get("translations").get("loadingMore");return e.html(t(this.lastParams)),e},e}),e.define("select2/dropdown/attachBody",["jquery","../utils"],function(f,a){function e(e,t,n){this.$dropdownParent=f(n.get("dropdownParent")||document.body),e.call(this,t,n)}return e.prototype.bind=function(e,t,n){var i=this;e.call(this,t,n),t.on("open",function(){i._showDropdown(),i._attachPositioningHandler(t),i._bindContainerResultHandlers(t)}),t.on("close",function(){i._hideDropdown(),i._detachPositioningHandler(t)}),this.$dropdownContainer.on("mousedown",function(e){e.stopPropagation()})},e.prototype.destroy=function(e){e.call(this),this.$dropdownContainer.remove()},e.prototype.position=function(e,t,n){t.attr("class",n.attr("class")),t.removeClass("select2"),t.addClass("select2-container--open"),t.css({position:"absolute",top:-999999}),this.$container=n},e.prototype.render=function(e){var t=f(""),n=e.call(this);return t.append(n),this.$dropdownContainer=t},e.prototype._hideDropdown=function(e){this.$dropdownContainer.detach()},e.prototype._bindContainerResultHandlers=function(e,t){if(!this._containerResultsHandlersBound){var n=this;t.on("results:all",function(){n._positionDropdown(),n._resizeDropdown()}),t.on("results:append",function(){n._positionDropdown(),n._resizeDropdown()}),t.on("results:message",function(){n._positionDropdown(),n._resizeDropdown()}),t.on("select",function(){n._positionDropdown(),n._resizeDropdown()}),t.on("unselect",function(){n._positionDropdown(),n._resizeDropdown()}),this._containerResultsHandlersBound=!0}},e.prototype._attachPositioningHandler=function(e,t){var n=this,i="scroll.select2."+t.id,r="resize.select2."+t.id,o="orientationchange.select2."+t.id,s=this.$container.parents().filter(a.hasScroll);s.each(function(){a.StoreData(this,"select2-scroll-position",{x:f(this).scrollLeft(),y:f(this).scrollTop()})}),s.on(i,function(e){var t=a.GetData(this,"select2-scroll-position");f(this).scrollTop(t.y)}),f(window).on(i+" "+r+" "+o,function(e){n._positionDropdown(),n._resizeDropdown()})},e.prototype._detachPositioningHandler=function(e,t){var n="scroll.select2."+t.id,i="resize.select2."+t.id,r="orientationchange.select2."+t.id;this.$container.parents().filter(a.hasScroll).off(n),f(window).off(n+" "+i+" "+r)},e.prototype._positionDropdown=function(){var e=f(window),t=this.$dropdown.hasClass("select2-dropdown--above"),n=this.$dropdown.hasClass("select2-dropdown--below"),i=null,r=this.$container.offset();r.bottom=r.top+this.$container.outerHeight(!1);var o={height:this.$container.outerHeight(!1)};o.top=r.top,o.bottom=r.top+o.height;var s=this.$dropdown.outerHeight(!1),a=e.scrollTop(),l=e.scrollTop()+e.height(),c=ar.bottom+s,d={left:r.left,top:o.bottom},p=this.$dropdownParent;"static"===p.css("position")&&(p=p.offsetParent());var h={top:0,left:0};(f.contains(document.body,p[0])||p[0].isConnected)&&(h=p.offset()),d.top-=h.top,d.left-=h.left,t||n||(i="below"),u||!c||t?!c&&u&&t&&(i="below"):i="above",("above"==i||t&&"below"!==i)&&(d.top=o.top-h.top-s),null!=i&&(this.$dropdown.removeClass("select2-dropdown--below select2-dropdown--above").addClass("select2-dropdown--"+i),this.$container.removeClass("select2-container--below select2-container--above").addClass("select2-container--"+i)),this.$dropdownContainer.css(d)},e.prototype._resizeDropdown=function(){var e={width:this.$container.outerWidth(!1)+"px"};this.options.get("dropdownAutoWidth")&&(e.minWidth=e.width,e.position="relative",e.width="auto"),this.$dropdown.css(e)},e.prototype._showDropdown=function(e){this.$dropdownContainer.appendTo(this.$dropdownParent),this._positionDropdown(),this._resizeDropdown()},e}),e.define("select2/dropdown/minimumResultsForSearch",[],function(){function e(e,t,n,i){this.minimumResultsForSearch=n.get("minimumResultsForSearch"),this.minimumResultsForSearch<0&&(this.minimumResultsForSearch=1/0),e.call(this,t,n,i)}return e.prototype.showSearch=function(e,t){return!(function e(t){for(var n=0,i=0;i');return e.attr("dir",this.options.get("dir")),this.$container=e,this.$container.addClass("select2-container--"+this.options.get("theme")),u.StoreData(e[0],"element",this.$element),e},d}),e.define("select2/compat/utils",["jquery"],function(s){return{syncCssClasses:function(e,t,n){var i,r,o=[];(i=s.trim(e.attr("class")))&&s((i=""+i).split(/\s+/)).each(function(){0===this.indexOf("select2-")&&o.push(this)}),(i=s.trim(t.attr("class")))&&s((i=""+i).split(/\s+/)).each(function(){0!==this.indexOf("select2-")&&null!=(r=n(this))&&o.push(r)}),e.attr("class",o.join(" "))}}}),e.define("select2/compat/containerCss",["jquery","./utils"],function(s,a){function l(e){return null}function e(){}return e.prototype.render=function(e){var t=e.call(this),n=this.options.get("containerCssClass")||"";s.isFunction(n)&&(n=n(this.$element));var i=this.options.get("adaptContainerCssClass");if(i=i||l,-1!==n.indexOf(":all:")){n=n.replace(":all:","");var r=i;i=function(e){var t=r(e);return null!=t?t+" "+e:e}}var o=this.options.get("containerCss")||{};return s.isFunction(o)&&(o=o(this.$element)),a.syncCssClasses(t,this.$element,i),t.css(o),t.addClass(n),t},e}),e.define("select2/compat/dropdownCss",["jquery","./utils"],function(s,a){function l(e){return null}function e(){}return e.prototype.render=function(e){var t=e.call(this),n=this.options.get("dropdownCssClass")||"";s.isFunction(n)&&(n=n(this.$element));var i=this.options.get("adaptDropdownCssClass");if(i=i||l,-1!==n.indexOf(":all:")){n=n.replace(":all:","");var r=i;i=function(e){var t=r(e);return null!=t?t+" "+e:e}}var o=this.options.get("dropdownCss")||{};return s.isFunction(o)&&(o=o(this.$element)),a.syncCssClasses(t,this.$element,i),t.css(o),t.addClass(n),t},e}),e.define("select2/compat/initSelection",["jquery"],function(i){function e(e,t,n){n.get("debug")&&window.console&&console.warn&&console.warn("Select2: The `initSelection` option has been deprecated in favor of a custom data adapter that overrides the `current` method. This method is now called multiple times instead of a single time when the instance is initialized. Support will be removed for the `initSelection` option in future versions of Select2"),this.initSelection=n.get("initSelection"),this._isInitialized=!1,e.call(this,t,n)}return e.prototype.current=function(e,t){var n=this;this._isInitialized?e.call(this,t):this.initSelection.call(null,this.$element,function(e){n._isInitialized=!0,i.isArray(e)||(e=[e]),t(e)})},e}),e.define("select2/compat/inputData",["jquery","../utils"],function(s,i){function e(e,t,n){this._currentData=[],this._valueSeparator=n.get("valueSeparator")||",","hidden"===t.prop("type")&&n.get("debug")&&console&&console.warn&&console.warn("Select2: Using a hidden input with Select2 is no longer supported and may stop working in the future. It is recommended to use a ` - - - - - -
      -
      - -
      - - - -
      - -
      -
      - - - \ No newline at end of file