芝麻web文件管理V1.00
编辑当前文件:/home/sditechnicalteam/public_html/app/Http/Controllers/CustomFieldController.php
pageTitle = 'app.menu.customFields'; $this->activeSettingMenu = 'custom_fields'; $this->middleware(function ($request, $next) { abort_403(user()->permission('manage_custom_field_setting') !== 'all'); return $next($request); }); } /** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function index() { if (\request()->ajax()) { $permissions = CustomField::join('custom_field_groups', 'custom_field_groups.id', '=', 'custom_fields.custom_field_group_id') ->select('custom_fields.id', 'custom_field_groups.name as module', 'custom_fields.label', 'custom_fields.name', 'custom_fields.type', 'custom_fields.values', 'custom_fields.required') ->get(); $data = DataTables::of($permissions) ->editColumn( 'values', function ($row) { $ul = '--'; if (isset($row->values) && $row->values != '[null]') { $ul = '
'; foreach (json_decode($row->values) as $key => $value) { $ul .= '
' . $value . '
'; } $ul .= '
'; } return $ul; } ) ->editColumn( 'required', function ($row) { // Edit Button $string = ' - '; $class = 'badge badge-danger disabled color-palette'; if ($row->required === 'yes') { $string = '
' . __('app.' . $row->required) . '
'; } if ($row->required === 'no') { $class = 'badge badge-secondary disabled color-palette'; $string = '
' . __('app.' . $row->required) . '
'; } return $string; } ) ->addColumn( 'action', function ($row) { return '
' . __('app.edit') . '
' . __('app.delete') . '
'; } ) ->rawColumns(['values', 'action', 'required']) ->make(true); return $data; } return view('custom-fields.index', $this->data); } /** * Show the form for creating a new resource. * * @return \Illuminate\Http\Response */ public function create() { $this->customFieldGroups = CustomFieldGroup::all(); $this->types = ['text', 'number', 'password', 'textarea', 'select', 'radio', 'date', 'checkbox']; return view('custom-fields.create-custom-field-modal', $this->data); } /** * @param StoreCustomField $request * @return array */ public function store(StoreCustomField $request) { $group = [ 'fields' => [ [ 'name' => $request->get('name'), 'custom_field_group_id' => $request->module, 'label' => $request->get('label'), 'type' => $request->get('type'), 'required' => $request->get('required'), 'values' => $request->get('value'), 'export' => $request->get('export'), ] ], ]; $this->addCustomField($group); return Reply::success('messages.customFieldCreateSuccess'); } /** * Show the form for editing the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function edit($id) { $this->field = CustomField::findOrFail($id); $this->field->values = json_decode($this->field->values); return view('custom-fields.edit-custom-field-modal', $this->data); } /** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param int $id * @return \Illuminate\Http\Response */ public function update(Request $request, $id) { $field = CustomField::findOrFail($id); $field->label = $request->label; $field->name = $request->name; $field->values = json_encode($request->value); $field->required = $request->required; $field->export = $request->export; $field->save(); return Reply::success('messages.updateSuccess'); } /** * Remove the specified resource from storage. * * @param int $id * @return \Illuminate\Http\Response */ public function destroy($id) { CustomField::destroy($id); return Reply::success('messages.deleteSuccess'); } private function addCustomField($group) { // Add Custom Fields for this group foreach ($group['fields'] as $field) { $insertData = [ 'custom_field_group_id' => $field['custom_field_group_id'], 'label' => $field['label'], 'name' => $field['name'], 'type' => $field['type'], 'export' => $field['export'] ]; if (isset($field['required']) && (in_array(strtolower($field['required']), ['yes', 'on', 1]))) { $insertData['required'] = 'yes'; } else { $insertData['required'] = 'no'; } // Single value should be stored as text (multi value JSON encoded) if (isset($field['values'])) { if (is_array($field['values'])) { $insertData['values'] = \GuzzleHttp\json_encode($field['values']); } else { $insertData['values'] = $field['values']; } } CustomField::create($insertData); } } }