/** * Get the fields needed defines by user * * @param string $module Module name * @return array */ public static function getValidFields($module = null) { $options = Setup::getFormConfig(); $availableFields = self::getAvailableFields($module); $remainFields = array('id', 'article', 'uid', 'time_publish', 'time_update', 'time_submit'); $validFields = array_merge($remainFields, array_intersect($availableFields, $options['elements'])); return $validFields; }
/** * Add a config file to initilize draft edit page form type as extended. * * @param Event $e */ public function initDraftEditPageForm(Event $e) { $module = $this->event->getParam('module'); $elements = array('mode' => 'extension'); $filename = Setup::getFilename(false, $module); $result = Pi::config()->write($filename, $elements, true); return $result; }
/** * Update a publish article * * @return ViewModel */ public function updateAction() { // Denied user viewing if no front-end management permission assigned if (!$this->config('enable_front_edit') && 'front' == $this->section) { return $this->jumpTo404(); } $options = Setup::getFormConfig(); $form = $this->getDraftForm('save', $options); $form->setInputFilter(new DraftEditFilter($options)); $form->setValidationGroup(DraftModel::getValidFields()); $form->setData($this->request->getPost()); if (!$form->isValid()) { return array('message' => $form->getMessages()); } $data = $form->getData(); $validate = $this->validateForm($data, $this->params('article', 0), $options['elements']); if (!$validate['status']) { $form->setMessages($validate['message']); return $validate; } $id = $this->saveDraft($data); if (!$id) { return array('message', __('Failed to save draft.')); } $result = $this->update($id); return $result; }