middleware('auth'); $this->_service = 'ums'; $this->_module = 'userattribute'; $this->_viewname = 'userattribute'; $this->_title = 'User Attributes'; $this->_base_url = '/userattribute'; } protected function get_list_fields() { return [ 'actions' => ['title' => 'Actions', 'buttons' => ['edit', 'delete']], 'attribute' => ['title' => 'Attribute', 'type' => 'text'], 'code' => ['title' => 'Code', 'type' => 'text'], 'type' => ['title' => 'Type', 'type' => 'text'], 'status' => ['title' => 'Status', 'type' => 'select'], ]; } protected function get_form_fields($type, $values) { $roles_dd = []; $roles = $this->getlambda('get', 'ums', 'roles', 'dropdown'); if (isset($roles->data->items) && is_array($roles->data->items)) { foreach ($roles->data->items as $role) { $roles_dd[$role->id] = $role->name; } } return [ 'attribute' => ['title' => 'Attribute', 'type' => 'text', 'required' => true], 'code' => ['title' => 'Code (small caps without spaces and special chars except "_")', 'type' => 'text', 'required' => true], 'required' => ['title' => 'Is Required', 'type' => 'yesno', 'required' => true], 'editable' => ['title' => 'Is Editable', 'type' => 'yesno', 'required' => true], 'type' => [ 'title' => 'Attribute Type', 'type' => 'select', 'required' => true, 'values' => [ 'text' => 'Text', 'number' => 'Number', 'date' => 'Date', 'email' => 'Email', 'url' => 'Url', 'select' => 'Dropdown', 'multiselect' => 'Multi Select', 'checkbox' => 'Checkbox', 'radio' => 'Radio', ], ], 'roles' => ['title' => 'Roles', 'type' => 'multiselect', 'values' => $roles_dd], 'sort_order' => ['title' => 'Sort Order', 'type' => 'number', 'required' => true], 'status' => ['title' => 'Status', 'type' => 'select', 'required' => true, 'values' => ['active' => 'Active', 'disabled' => 'Disabled']], 'options' => ['title' => 'Options', 'type' => 'mapping', 'fullwidth' => true], ]; } protected function _beforeform($type, $values) { if ($type == 'edit' && is_object($values)) { if (!empty($values->id)) { $this->_request->session()->put('entity_id', $values->id); } if (!isset($values->roles) || !is_array($values->roles)) { $values->roles = []; } if (!isset($values->options) || !is_array($values->options)) { $values->options = []; } if (!isset($values->required)) { $values->required = 'yes'; } if (!isset($values->editable)) { $values->editable = 'yes'; } if (!isset($values->sort_order)) { $values->sort_order = 0; } } else { $this->_request->session()->forget('entity_id'); } return $values; } protected function _beforesave($type, $request) { $data = $request->except('_token'); $data['id'] = $request->session()->get('entity_id'); if (!$data['id']) { unset($data['id']); } $options = []; if (isset($data['option_value'])) { foreach ($data['option_value'] as $k => $ov) { $options[] = ['value' => $ov, 'display' => $data['option_name'][$k]]; } $data['options'] = $options; unset($data['option_value']); unset($data['option_name']); } if (!isset($data['roles']) || !is_array($data['roles'])) { $data['roles'] = []; } $optionTypes = ['select', 'multiselect', 'checkbox', 'radio']; if (!isset($data['type']) || !in_array($data['type'], $optionTypes, true)) { $data['options'] = []; } return $data; } }