From 3a3f26ba8b294ae07536aa0cf6a66a63b617d32e Mon Sep 17 00:00:00 2001 From: Brady Wetherington Date: Thu, 21 Sep 2023 14:56:29 +0100 Subject: [PATCH] Clean up the fieldset experience for custom fields for users --- app/Helpers/Helper.php | 2 +- .../Controllers/CustomFieldsController.php | 18 +++++++++++++++--- .../views/custom_fields/fields/edit.blade.php | 6 +++++- resources/views/custom_fields/index.blade.php | 9 +++++++-- 4 files changed, 28 insertions(+), 7 deletions(-) diff --git a/app/Helpers/Helper.php b/app/Helpers/Helper.php index b222bdf5a3..b57c9894f2 100644 --- a/app/Helpers/Helper.php +++ b/app/Helpers/Helper.php @@ -659,7 +659,7 @@ class Helper static $itemtypes_having_custom_fields = [ 0 => \App\Models\Asset::class, 1 => \App\Models\User::class, - 2 => \App\Models\Accessory::class + // 2 => \App\Models\Accessory::class ]; /** diff --git a/app/Http/Controllers/CustomFieldsController.php b/app/Http/Controllers/CustomFieldsController.php index 1c9513d65d..81081a5835 100644 --- a/app/Http/Controllers/CustomFieldsController.php +++ b/app/Http/Controllers/CustomFieldsController.php @@ -6,6 +6,7 @@ use App\Helpers\Helper; use App\Http\Requests\CustomFieldRequest; use App\Models\CustomField; use App\Models\CustomFieldset; +use App\Models\User; use Illuminate\Support\Facades\Auth; use Illuminate\Http\Request; @@ -33,6 +34,10 @@ class CustomFieldsController extends Controller public function index(Request $request) { $this->authorize('view', CustomField::class); + if ($request->input('tab') == 1) { + // Users section, make sure to auto-create the first fieldset if so + CustomFieldset::firstOrCreate(['type' => Helper::$itemtypes_having_custom_fields[1]], ['name' => 'default']); + } $fieldsets = CustomFieldset::with('fields')->where("type", Helper::$itemtypes_having_custom_fields[$request->get('tab', 0)])->get(); //cannot eager-load 'customizable' because it's not a relation $fields = CustomField::with('fieldset')->where("type", Helper::$itemtypes_having_custom_fields[$request->get('tab', 0)])->get(); @@ -68,7 +73,7 @@ class CustomFieldsController extends Controller public function create(Request $request) { $this->authorize('create', CustomField::class); - $fieldsets = CustomFieldset::get(); + $fieldsets = CustomFieldset::where('type', Helper::$itemtypes_having_custom_fields[$request->get('tab')])->get(); return view('custom_fields.fields.edit', [ 'predefinedFormats' => Helper::predefined_formats(), @@ -128,7 +133,10 @@ class CustomFieldsController extends Controller // Sync fields with fieldsets $fieldset_array = $request->input('associate_fieldsets'); - if ($request->has('associate_fieldsets') && (is_array($fieldset_array))) { + if ($request->get('tab') == 1) { + $fieldset_array = [CustomFieldset::firstOrCreate(['type' => User::class], ['name' => 'default'])->id => true]; + } + if (($request->has('associate_fieldsets') || $request->get('tab') == 1) && (is_array($fieldset_array))) { $field->fieldset()->sync(array_keys($fieldset_array)); } else { $field->fieldset()->sync([]); @@ -188,11 +196,15 @@ class CustomFieldsController extends Controller if ($field = CustomField::find($field_id)) { $this->authorize('delete', $field); + if ($field->type == User::class) { + $field->fieldset()->detach(); // remove from 'default' group (and others, if they exist in the future!) + } if (($field->fieldset) && ($field->fieldset->count() > 0)) { return redirect()->back()->withErrors(['message' => 'Field is in-use']); } + $type = $field->type; $field->delete(); - return redirect()->route('fields.index', ['tab' => Request::query('tab', 0)]) + return redirect()->route('fields.index', ['tab' => array_search($type, Helper::$itemtypes_having_custom_fields)]) ->with('success', trans('admin/custom_fields/message.field.delete.success')); } diff --git a/resources/views/custom_fields/fields/edit.blade.php b/resources/views/custom_fields/fields/edit.blade.php index b47a73f3fb..7e10519e4d 100644 --- a/resources/views/custom_fields/fields/edit.blade.php +++ b/resources/views/custom_fields/fields/edit.blade.php @@ -153,12 +153,16 @@ +
+ @if (Request::query('tab') != 1)
+ @endif
@@ -210,7 +214,7 @@
- @if ($fieldsets->count() > 0) + @if ($fieldsets->count() > 0 && Request::query('tab') != 1)
diff --git a/resources/views/custom_fields/index.blade.php b/resources/views/custom_fields/index.blade.php index 9119031d00..1d9804a726 100644 --- a/resources/views/custom_fields/index.blade.php +++ b/resources/views/custom_fields/index.blade.php @@ -33,6 +33,9 @@
+{{-- Do not show fieldsets for Users' customf ields --}} +@if(Request::query('tab') != 1) +
@@ -134,6 +137,7 @@
+@endif @endcan @can('view', \App\Models\CustomField::class)
@@ -222,7 +226,8 @@ {{ Form::open(array('route' => array('fields.destroy', $field->id), 'method' => 'delete', 'style' => 'display:inline-block')) }} @can('update', $field) - + {{ trans('button.edit') }} @@ -230,7 +235,7 @@ @can('delete', $field) - @if($field->fieldset->count()>0) + @if($field->fieldset->count()>0 && Request::query('tab') != 1 )