module = App::make(Module::class); $this->file = App::make(File::class); } /** * Edit page * * @param array $data * @param array $parameters * * @return mixed|void */ public function handle($data, $parameters) { /** * @var $page Content */ list($page, $titlePhoto, $relatedFiles) = $parameters; // let template to modify request and content page CurrentTemplate::beforeSave($page, $data); // upload file - if provided $data['titlePhoto'] = isset($data['existingTitlePhoto']) ? $data['existingTitlePhoto'] : null; if (!is_null($titlePhoto)) { $file = $this->file->upload($titlePhoto); $data['titlePhoto'] = $file ? $file['filename'] : null; } $page->update($data); $this->module->callOnString($page->moduleHandler, 'edit', [$page, $data]); // move to interaction $keepAssigned = isset($data->keepAssigned) ? $data->keepAssigned : []; $page->uploadRelatedFiles($relatedFiles, $keepAssigned); } /** * Validate this interaction * * @param array $parameters * * @return array */ public function getValidationRules($parameters = []) { $id = $parameters[0]->id; // get all available statuses $statuses = ContentStatuses::getSimple(); $statuses = implode(',', $statuses); return [ 'title' => 'required', 'url' => 'required|unique:contents,url,' . $id, 'publishedFrom' => 'date', 'publishedTo' => 'date', 'titlePhoto' => 'exists:files,id', 'status' => 'required|in:' . $statuses, 'parentPage' => 'exists:contents,id' ]; } }