|
6 | 6 | use App\Http\Requests\CustomFieldRequest; |
7 | 7 | use App\Models\CustomField; |
8 | 8 | use App\Models\CustomFieldset; |
| 9 | +use App\Models\User; |
9 | 10 | use Illuminate\Support\Facades\Auth; |
10 | 11 | use Illuminate\Http\Request; |
11 | 12 | use Redirect; |
@@ -34,6 +35,10 @@ class CustomFieldsController extends Controller |
34 | 35 | public function index(Request $request) |
35 | 36 | { |
36 | 37 | $this->authorize('view', CustomField::class); |
| 38 | + if ( $request->input('tab') == 1 ) { |
| 39 | + // Users section, make sure to auto-create the first fieldset if so |
| 40 | + CustomFieldset::firstOrCreate(['type' => Helper::$itemtypes_having_custom_fields[1]], ['name' => 'default']); |
| 41 | + } |
37 | 42 |
|
38 | 43 | $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 |
39 | 44 | $fields = CustomField::with('fieldset')->where("type", Helper::$itemtypes_having_custom_fields[$request->get('tab',0)])->get(); |
@@ -69,7 +74,7 @@ public function show() |
69 | 74 | public function create(Request $request) |
70 | 75 | { |
71 | 76 | $this->authorize('create', CustomField::class); |
72 | | - $fieldsets = CustomFieldset::get(); |
| 77 | + $fieldsets = CustomFieldset::where('type', Helper::$itemtypes_having_custom_fields[$request->get('tab')])->get(); |
73 | 78 |
|
74 | 79 | return view('custom_fields.fields.edit', [ |
75 | 80 | 'predefinedFormats' => Helper::predefined_formats(), |
@@ -128,7 +133,10 @@ public function store(CustomFieldRequest $request) |
128 | 133 |
|
129 | 134 | // Sync fields with fieldsets |
130 | 135 | $fieldset_array = $request->input('associate_fieldsets'); |
131 | | - if ($request->has('associate_fieldsets') && (is_array($fieldset_array))) { |
| 136 | + if ($request->get('tab') == 1 ) { |
| 137 | + $fieldset_array = [CustomFieldset::firstOrCreate(['type' => User::class],['name' => 'default'])->id => true]; |
| 138 | + } |
| 139 | + if (($request->has('associate_fieldsets') || $request->get('tab') == 1) && (is_array($fieldset_array))) { |
132 | 140 | $field->fieldset()->sync(array_keys($fieldset_array)); |
133 | 141 | } else { |
134 | 142 | $field->fieldset()->sync([]); |
@@ -188,11 +196,16 @@ public function destroy($field_id) |
188 | 196 | if ($field = CustomField::find($field_id)) { |
189 | 197 | $this->authorize('delete', $field); |
190 | 198 |
|
| 199 | + if ($field->type == User::class) { |
| 200 | + $field->fieldset()->detach(); // remove from 'default' group (and others, if they exist in the future!) |
| 201 | + } |
191 | 202 | if (($field->fieldset) && ($field->fieldset->count() > 0)) { |
192 | 203 | return redirect()->back()->withErrors(['message' => 'Field is in-use']); |
193 | 204 | } |
| 205 | + $type = $field->type; |
194 | 206 | $field->delete(); |
195 | | - return redirect()->route('fields.index',['tab' => Request::query('tab',0)]) |
| 207 | + return redirect()->route('fields.index',['tab' => array_search($type, Helper::$itemtypes_having_custom_fields)]) |
| 208 | + |
196 | 209 | ->with('success', trans('admin/custom_fields/message.field.delete.success')); |
197 | 210 | } |
198 | 211 |
|
|
0 commit comments