diff --git a/app/Http/Controllers/CustomFieldsController.php b/app/Http/Controllers/CustomFieldsController.php index f25d96020c..7dbc534e39 100644 --- a/app/Http/Controllers/CustomFieldsController.php +++ b/app/Http/Controllers/CustomFieldsController.php @@ -64,14 +64,16 @@ class CustomFieldsController extends Controller * @return \Illuminate\Support\Facades\View * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function create() + public function create(Request $request) { $this->authorize('create', CustomField::class); + $fieldsets = CustomFieldset::get(); return view('custom_fields.fields.edit', [ 'predefinedFormats' => Helper::predefined_formats(), - 'customFormat' => '', - ])->with('field', new CustomField()); + 'customFormat' => '']) + ->with('fieldsets', $fieldsets) + ->with('field', new CustomField()); } /** @@ -80,7 +82,7 @@ class CustomFieldsController extends Controller * @see CustomFieldsController::createField() * @author [Brady Wetherington] [] * @since [v1.8] - * @return Redirect + * @return \Illuminate\Http\RedirectResponse * @throws \Illuminate\Auth\Access\AuthorizationException */ public function store(CustomFieldRequest $request) @@ -105,6 +107,7 @@ class CustomFieldsController extends Controller "show_in_email" => $show_in_email, "is_unique" => $request->get("is_unique", 0), "display_in_user_view" => $display_in_user_view, + "auto_add_to_fieldsets" => $request->get("auto_add_to_fieldsets", 0), "user_id" => Auth::id() ]); @@ -116,10 +119,17 @@ class CustomFieldsController extends Controller } if ($field->save()) { + + // Sync fields with fieldsets + if ($request->has('associate_fieldsets') && (count($request->get('associate_fieldsets')) > 0)) { + $field->fieldset()->sync(array_keys($request->get('associate_fieldsets'))); + } + + return redirect()->route('fields.index')->with('success', trans('admin/custom_fields/message.field.create.success')); } - return redirect()->back()->withInput() + return redirect()->back()->with('selected_fieldsets', $request->input('associate_fieldsets'))->withInput() ->with('error', trans('admin/custom_fields/message.field.create.error')); } @@ -129,7 +139,7 @@ class CustomFieldsController extends Controller * * @author [A. Gianotto] [] * @since [v3.0] - * @return Redirect + * @return \Illuminate\Http\RedirectResponse * @throws \Illuminate\Auth\Access\AuthorizationException */ public function deleteFieldFromFieldset($field_id, $fieldset_id) @@ -148,8 +158,7 @@ class CustomFieldsController extends Controller ->with('success', trans('admin/custom_fields/message.field.delete.success')); } else { return redirect()->back()->withErrors(['message' => "Field is in use and cannot be deleted."]); - } - + } } return redirect()->back()->withErrors(['message' => "Error deleting field from fieldset"]); @@ -162,7 +171,7 @@ class CustomFieldsController extends Controller * * @author [Brady Wetherington] [] * @since [v1.8] - * @return Redirect + * @return \Illuminate\Http\RedirectResponse * @throws \Illuminate\Auth\Access\AuthorizationException */ public function destroy($field_id) @@ -191,12 +200,12 @@ class CustomFieldsController extends Controller * @return \Illuminate\Support\Facades\View * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function edit($id) + public function edit(Request $request, $id) { if ($field = CustomField::find($id)) { $this->authorize('update', $field); - + $fieldsets = CustomFieldset::get(); $customFormat = ''; if ((stripos($field->format, 'regex') === 0) && ($field->format !== CustomField::PREDEFINED_FORMATS['MAC'])) { $customFormat = $field->format; @@ -205,6 +214,7 @@ class CustomFieldsController extends Controller return view('custom_fields.fields.edit', [ 'field' => $field, 'customFormat' => $customFormat, + 'fieldsets' => $fieldsets, 'predefinedFormats' => Helper::predefined_formats(), ]); } @@ -223,7 +233,7 @@ class CustomFieldsController extends Controller * @author [A. Gianotto] [] * @param int $id * @since [v4.0] - * @return Redirect + * @return \Illuminate\Http\RedirectResponse * @throws \Illuminate\Auth\Access\AuthorizationException */ public function update(CustomFieldRequest $request, $id) @@ -250,6 +260,7 @@ class CustomFieldsController extends Controller $field->show_in_email = $show_in_email; $field->is_unique = $request->get("is_unique", 0); $field->display_in_user_view = $display_in_user_view; + $field->auto_add_to_fieldsets = $request->get("auto_add_to_fieldsets", 0); if ($request->get('format') == 'CUSTOM REGEX') { $field->format = e($request->get('custom_format')); @@ -257,11 +268,13 @@ class CustomFieldsController extends Controller $field->format = e($request->get('format')); } - if($field->element == 'checkbox' || $field->element == 'radio'){ + if ($field->element == 'checkbox' || $field->element == 'radio'){ $field->format = 'ANY'; } if ($field->save()) { + // Sync fields with fieldsets + $field->fieldset()->sync(array_keys($request->get('associate_fieldsets'))); return redirect()->route('fields.index')->with('success', trans('admin/custom_fields/message.field.update.success')); }