From dafe353050db84774b9ef482beafb88d190baa52 Mon Sep 17 00:00:00 2001 From: Achmad Fienan Rahardianto Date: Sat, 23 Apr 2022 14:41:38 +0700 Subject: [PATCH 01/12] Implements #8155 to improve the workflow during asset creation - adding 2 options to hide optional information --- resources/lang/en/admin/hardware/form.php | 2 + resources/views/hardware/edit.blade.php | 165 ++++++++++++++-------- 2 files changed, 110 insertions(+), 57 deletions(-) diff --git a/resources/lang/en/admin/hardware/form.php b/resources/lang/en/admin/hardware/form.php index 0c1a3167b..b2d7bab0f 100644 --- a/resources/lang/en/admin/hardware/form.php +++ b/resources/lang/en/admin/hardware/form.php @@ -46,4 +46,6 @@ return [ 'asset_not_deployable' => 'That asset status is not deployable. This asset cannot be checked out.', 'asset_deployable' => 'That status is deployable. This asset can be checked out.', 'processing_spinner' => 'Processing...', + 'optional_infos' => 'Optional Information', + 'order_details' => 'Order Related Information' ]; diff --git a/resources/views/hardware/edit.blade.php b/resources/views/hardware/edit.blade.php index 20e93f067..ac912e190 100755 --- a/resources/views/hardware/edit.blade.php +++ b/resources/views/hardware/edit.blade.php @@ -15,7 +15,6 @@ @include ('partials.forms.edit.company-select', ['translated_name' => trans('general.company'), 'fieldname' => 'company_id']) -
@@ -41,77 +40,103 @@
@endif - @include ('partials.forms.edit.serial', ['fieldname'=> 'serials[1]', 'translated_serial' => trans('admin/hardware/form.serial')]) +
@include ('partials.forms.edit.model-select', ['translated_name' => trans('admin/hardware/form.model'), 'fieldname' => 'model_id', 'field_req' => true]) + @include ('partials.forms.edit.serial', ['fieldname'=> 'serials[1]', 'translated_serial' => trans('admin/hardware/form.serial')]) -
- - @if ($item->model && $item->model->fieldset) - model; ?> - @endif - @if (Request::old('model_id')) - - @elseif (isset($selected_model)) - - @endif - @if (isset($model) && $model) - @include("models/custom_fields_form",["model" => $model]) - @endif -
+ @include ('partials.forms.edit.status', [ 'required' => 'true']) + @if (!$item->id) + @include ('partials.forms.checkout-selector', ['user_select' => 'true','asset_select' => 'true', 'location_select' => 'true', 'style' => 'display:none;']) + @include ('partials.forms.edit.user-select', ['translated_name' => trans('admin/hardware/form.checkout_to'), 'fieldname' => 'assigned_user', 'style' => 'display:none;', 'required' => 'false']) + @include ('partials.forms.edit.asset-select', ['translated_name' => trans('admin/hardware/form.checkout_to'), 'fieldname' => 'assigned_asset', 'style' => 'display:none;', 'required' => 'false']) + @include ('partials.forms.edit.location-select', ['translated_name' => trans('admin/hardware/form.checkout_to'), 'fieldname' => 'assigned_location', 'style' => 'display:none;', 'required' => 'false']) + @elseif (($item->assignedTo) && ($item->deleted_at=='')) + + @include ('partials.forms.edit.datepicker', ['translated_name' => trans('admin/hardware/form.expected_checkin'),'fieldname' => 'expected_checkin']) + @endif - @include ('partials.forms.edit.status', [ 'required' => 'true']) - @if (!$item->id) - @include ('partials.forms.checkout-selector', ['user_select' => 'true','asset_select' => 'true', 'location_select' => 'true', 'style' => 'display:none;']) - @include ('partials.forms.edit.user-select', ['translated_name' => trans('admin/hardware/form.checkout_to'), 'fieldname' => 'assigned_user', 'style' => 'display:none;', 'required' => 'false']) - @include ('partials.forms.edit.asset-select', ['translated_name' => trans('admin/hardware/form.checkout_to'), 'fieldname' => 'assigned_asset', 'style' => 'display:none;', 'required' => 'false']) - @include ('partials.forms.edit.location-select', ['translated_name' => trans('admin/hardware/form.checkout_to'), 'fieldname' => 'assigned_location', 'style' => 'display:none;', 'required' => 'false']) - @elseif (($item->assignedTo) && ($item->deleted_at=='')) - - @include ('partials.forms.edit.datepicker', ['translated_name' => trans('admin/hardware/form.expected_checkin'),'fieldname' => 'expected_checkin']) - @endif + @include ('partials.forms.edit.notes') + @include ('partials.forms.edit.location-select', ['translated_name' => trans('admin/hardware/form.default_location'), 'fieldname' => 'rtd_location_id']) + @include ('partials.forms.edit.requestable', ['requestable_text' => trans('admin/hardware/general.requestable')]) - @include ('partials.forms.edit.name', ['translated_name' => trans('admin/hardware/form.name')]) - @include ('partials.forms.edit.purchase_date') - @include ('partials.forms.edit.supplier-select', ['translated_name' => trans('general.supplier'), 'fieldname' => 'supplier_id']) - @include ('partials.forms.edit.order_number') - id && $item->location) { - $currency_type = $item->location->currency; - } - ?> - @include ('partials.forms.edit.purchase_cost', ['currency_type' => $currency_type]) - @include ('partials.forms.edit.warranty') - @include ('partials.forms.edit.notes') + + @if ($item->image) +
+ +
+ +
+ +
+
+
+ @endif - @include ('partials.forms.edit.location-select', ['translated_name' => trans('admin/hardware/form.default_location'), 'fieldname' => 'rtd_location_id']) + @include ('partials.forms.edit.image-upload') +
+ + @if ($item->model && $item->model->fieldset) + model; ?> + @endif + @if (Request::old('model_id')) + + @elseif (isset($selected_model)) + + @endif + @if (isset($model) && $model) + @include("models/custom_fields_form",["model" => $model]) + @endif +
- @include ('partials.forms.edit.requestable', ['requestable_text' => trans('admin/hardware/general.requestable')]) +
+ +
+ + +
+ +
+ @include ('partials.forms.edit.name', ['translated_name' => trans('admin/hardware/form.name')]) + @include ('partials.forms.edit.warranty') +
+
- - @if ($item->image) -
- -
- -
- -
-
-
- @endif +
+ +
+ + +
-@include ('partials.forms.edit.image-upload') +
+ @include ('partials.forms.edit.order_number') + @include ('partials.forms.edit.purchase_date') + @include ('partials.forms.edit.supplier-select', ['translated_name' => trans('general.supplier'), 'fieldname' => 'supplier_id']) + + id && $item->location) { + $currency_type = $item->location->currency; + } + ?> + @include ('partials.forms.edit.purchase_cost', ['currency_type' => $currency_type]) + +
+
@stop @@ -278,6 +303,32 @@ }) }); + $( document ).ready(function() { + checkOrderDetailOption(); + checkOptionalOption(); + }); + $('#order_info').change(function(){ + checkOrderDetailOption(); + }); + + $('#optional_info').change(function(){ + checkOptionalOption(); + }); + + function checkOptionalOption(){ + if ($("#optional_info").prop('checked')==true) { + $('#optional_details').fadeIn('slow'); + } else { + $('#optional_details').fadeOut('slow'); + } + } + function checkOrderDetailOption(){ + if ($("#order_info").prop('checked')==true) { + $('#order_details').fadeIn('slow'); + } else { + $('#order_details').fadeOut('slow'); + } + } @stop From fe65de1207205d024a8df8185796bd4772fdb47b Mon Sep 17 00:00:00 2001 From: Achmad Fienan Rahardianto Date: Wed, 1 Jun 2022 11:54:05 +0700 Subject: [PATCH 02/12] implements cookie to maintain display preference --- .../Controllers/Assets/AssetsController.php | 21 +++++++- resources/views/hardware/edit.blade.php | 53 +++++++++++-------- 2 files changed, 52 insertions(+), 22 deletions(-) diff --git a/app/Http/Controllers/Assets/AssetsController.php b/app/Http/Controllers/Assets/AssetsController.php index c5063eb59..ed9f01770 100755 --- a/app/Http/Controllers/Assets/AssetsController.php +++ b/app/Http/Controllers/Assets/AssetsController.php @@ -20,6 +20,7 @@ use Gate; use Illuminate\Http\Request; use Illuminate\Support\Facades\Cache; use Illuminate\Support\Facades\Storage; +use Illuminate\Support\Facades\Cookie; use Input; use Intervention\Image\Facades\Image; use League\Csv\Reader; @@ -201,18 +202,36 @@ class AssetsController extends Controller } $success = true; + + // $cookie = Cookie::queue(Cookie::make('optional_info', $_POST['options'],$minutes)); + // $data = $request->session()->all(); + + // dd($_POST['options']); + } } if ($success) { // Redirect to the asset listing page + $minutes = 518400; + // dd( $_POST['options']); + // Cookie::queue(Cookie::make('optional_info', json_decode($_POST['options']), $minutes)); return redirect()->route('hardware.index') - ->with('success', trans('admin/hardware/message.create.success')); + ->with('success', trans('admin/hardware/message.create.success')) + ->withCookie(cookie('optional_info',json_encode($_POST['options']),$minutes,null,null,null,false)); + + } return redirect()->back()->withInput()->withErrors($asset->getErrors()); } + public function getOptionCookie(Request $request){ + $value = $request->cookie('optional_info'); + echo $value; + return $value; + } + /** * Returns a view that presents a form to edit an existing asset. * diff --git a/resources/views/hardware/edit.blade.php b/resources/views/hardware/edit.blade.php index ac912e190..4cc7f5cdd 100755 --- a/resources/views/hardware/edit.blade.php +++ b/resources/views/hardware/edit.blade.php @@ -10,15 +10,16 @@ {{-- Page content --}} - @section('inputFields') @include ('partials.forms.edit.company-select', ['translated_name' => trans('general.company'), 'fieldname' => 'company_id']) + +
- + @if ($item->id)
@@ -101,13 +102,14 @@
- + + >
-
+ @@ -116,13 +118,13 @@
- + >
-
+
@include ('partials.forms.edit.order_number') @include ('partials.forms.edit.purchase_date') @include ('partials.forms.edit.supplier-select', ['translated_name' => trans('general.supplier'), 'fieldname' => 'supplier_id']) @@ -137,7 +139,7 @@
- + @stop @section('moar_scripts') @@ -146,7 +148,6 @@ @stop From 321367b974268f23359ab2ad92284c559c262998 Mon Sep 17 00:00:00 2001 From: Ivan Nieto Vivanco Date: Wed, 22 Jun 2022 21:06:07 -0500 Subject: [PATCH 03/12] Adds validation to custom fields' default values --- .../Controllers/AssetModelsController.php | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/AssetModelsController.php b/app/Http/Controllers/AssetModelsController.php index 9a7c1407b..29d7ceee9 100755 --- a/app/Http/Controllers/AssetModelsController.php +++ b/app/Http/Controllers/AssetModelsController.php @@ -8,6 +8,7 @@ use App\Models\AssetModel; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Input; use Illuminate\Support\Facades\View; +use Illuminate\Support\Facades\Validator; use Redirect; use Request; use Storage; @@ -90,7 +91,9 @@ class AssetModelsController extends Controller // Was it created? if ($model->save()) { if ($this->shouldAddDefaultValues($request->input())) { - $this->assignCustomFieldsDefaultValues($model, $request->input('default_values')); + if (!$this->assignCustomFieldsDefaultValues($model, $request->input('default_values'))){ + return redirect()->back()->withInput()->withErrors($model->getErrors()); + } } // Redirect to the new model page @@ -163,7 +166,9 @@ class AssetModelsController extends Controller $model->fieldset_id = $request->input('custom_fieldset'); if ($this->shouldAddDefaultValues($request->input())) { - $this->assignCustomFieldsDefaultValues($model, $request->input('default_values')); + if (!$this->assignCustomFieldsDefaultValues($model, $request->input('default_values'))){ + return redirect()->back()->withInput()->withErrors("Error"); + } } } @@ -451,6 +456,21 @@ class AssetModelsController extends Controller */ private function assignCustomFieldsDefaultValues(AssetModel $model, array $defaultValues) { + $data = array(); + foreach ($defaultValues as $customFieldId => $defaultValue) { + $customField = \App\Models\CustomField::find($customFieldId); + + $data[$customField->db_column] = $defaultValue; + } + + $rules = $model->fieldset->validation_rules(); + + $validator = Validator::make($data, $rules); + + if($validator->fails()){ + return false; + } + foreach ($defaultValues as $customFieldId => $defaultValue) { if(is_array($defaultValue)){ $model->defaultValues()->attach($customFieldId, ['default_value' => implode(', ', $defaultValue)]); @@ -458,6 +478,7 @@ class AssetModelsController extends Controller $model->defaultValues()->attach($customFieldId, ['default_value' => $defaultValue]); } } + return true; } /** From afdf93ca63b7c5ab375bf00dcd6b1fe43a7e22f7 Mon Sep 17 00:00:00 2001 From: Ivan Nieto Vivanco Date: Wed, 22 Jun 2022 21:37:11 -0500 Subject: [PATCH 04/12] Adds controls for custom fields of type date in the default value form --- ...custom-field-set-default-values-for-model.blade.php | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/resources/views/livewire/custom-field-set-default-values-for-model.blade.php b/resources/views/livewire/custom-field-set-default-values-for-model.blade.php index c1a8373f4..59aab3aee 100644 --- a/resources/views/livewire/custom-field-set-default-values-for-model.blade.php +++ b/resources/views/livewire/custom-field-set-default-values-for-model.blade.php @@ -22,8 +22,14 @@
- - @if ($field->element == "text") + @if ($field->format == "DATE") +
+
+ + +
+
+ @elseif ($field->element == "text") @elseif($field->element == "textarea")
From 7e10abe6052c1b4ffa8a52f6262dda175bb9779b Mon Sep 17 00:00:00 2001 From: Ivan Nieto Vivanco Date: Wed, 22 Jun 2022 21:47:08 -0500 Subject: [PATCH 05/12] Fix the date control in custom fields' default values form to show the selected date --- .../custom-field-set-default-values-for-model.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/views/livewire/custom-field-set-default-values-for-model.blade.php b/resources/views/livewire/custom-field-set-default-values-for-model.blade.php index 59aab3aee..220956115 100644 --- a/resources/views/livewire/custom-field-set-default-values-for-model.blade.php +++ b/resources/views/livewire/custom-field-set-default-values-for-model.blade.php @@ -25,7 +25,7 @@ @if ($field->format == "DATE")
- +
From 7976401aa295dd2989d98c6a90d1f99ab722e186 Mon Sep 17 00:00:00 2001 From: Ivan Nieto Vivanco Date: Wed, 22 Jun 2022 22:17:05 -0500 Subject: [PATCH 06/12] Add error message when the default customfield values can't be validated --- app/Http/Controllers/AssetModelsController.php | 4 ++-- resources/lang/en/admin/custom_fields/message.php | 6 ++++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/AssetModelsController.php b/app/Http/Controllers/AssetModelsController.php index 29d7ceee9..b74be1778 100755 --- a/app/Http/Controllers/AssetModelsController.php +++ b/app/Http/Controllers/AssetModelsController.php @@ -92,7 +92,7 @@ class AssetModelsController extends Controller if ($model->save()) { if ($this->shouldAddDefaultValues($request->input())) { if (!$this->assignCustomFieldsDefaultValues($model, $request->input('default_values'))){ - return redirect()->back()->withInput()->withErrors($model->getErrors()); + return redirect()->back()->withInput()->with('error', trans('admin/custom_fields/message.fieldset_default_value.error')); } } @@ -167,7 +167,7 @@ class AssetModelsController extends Controller if ($this->shouldAddDefaultValues($request->input())) { if (!$this->assignCustomFieldsDefaultValues($model, $request->input('default_values'))){ - return redirect()->back()->withInput()->withErrors("Error"); + return redirect()->back()->withInput()->with('error', trans('admin/custom_fields/message.fieldset_default_value.error')); } } } diff --git a/resources/lang/en/admin/custom_fields/message.php b/resources/lang/en/admin/custom_fields/message.php index ed66a6ba1..43ba82182 100644 --- a/resources/lang/en/admin/custom_fields/message.php +++ b/resources/lang/en/admin/custom_fields/message.php @@ -49,6 +49,12 @@ return array( ), + 'fieldset_default_value' => array( + + 'error' => 'Error validating default fieldset values.', + + ), + From 08525a3c20c3864b132704ef85b5b4d21c5bf0a4 Mon Sep 17 00:00:00 2001 From: snipe Date: Mon, 27 Jun 2022 09:43:32 -0700 Subject: [PATCH 07/12] Few more changes Signed-off-by: snipe --- resources/views/hardware/edit.blade.php | 105 ++++++++++++------------ 1 file changed, 52 insertions(+), 53 deletions(-) diff --git a/resources/views/hardware/edit.blade.php b/resources/views/hardware/edit.blade.php index 55554a2ee..c9405a7c7 100755 --- a/resources/views/hardware/edit.blade.php +++ b/resources/views/hardware/edit.blade.php @@ -57,7 +57,7 @@ @include ('partials.forms.edit.user-select', ['translated_name' => trans('admin/hardware/form.checkout_to'), 'fieldname' => 'assigned_user', 'style' => 'display:none;', 'required' => 'false']) @include ('partials.forms.edit.asset-select', ['translated_name' => trans('admin/hardware/form.checkout_to'), 'fieldname' => 'assigned_asset', 'style' => 'display:none;', 'required' => 'false']) @include ('partials.forms.edit.location-select', ['translated_name' => trans('admin/hardware/form.checkout_to'), 'fieldname' => 'assigned_location', 'style' => 'display:none;', 'required' => 'false']) - @elseif (($item->assignedTo) && ($item->deleted_at=='')) + @elseif (($item->assignedTo) && ($item->deleted_at == '')) @include ('partials.forms.edit.datepicker', ['translated_name' => trans('admin/hardware/form.expected_checkin'),'fieldname' => 'expected_checkin']) @endif @@ -87,26 +87,29 @@
@if ($item->model && $item->model->fieldset) - model; ?> + model; ?> @endif @if (Request::old('model_id')) - + @php + $model = \App\Models\AssetModel::find(Request::old('model_id')); + @endphp @elseif (isset($selected_model)) - + @php + $model = $selected_model; + @endphp @endif @if (isset($model) && $model) @include("models/custom_fields_form",["model" => $model]) @endif
-
- -
+
+ - > -