FEATURE #2354 @2h30m: add pipeline for edit and create new content

This commit is contained in:
Michal Kváček
2017-03-10 09:52:12 +01:00
parent 55f9c0a679
commit 9bec808d38
32 changed files with 381 additions and 319 deletions
@@ -37,32 +37,18 @@ class EditContent implements Interaction
* @param array $data
* @param array $parameters
*
* @return mixed|void
* @return mixed
*/
public function handle($data, $parameters)
{
/**
* @var $page Content
*/
list($page, $titlePhoto, $relatedFiles) = $parameters;
list($page) = $parameters;
// let template to modify request and content page
CurrentTemplate::beforeSave($page, $data);
app('saveContentPipeline')->run($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);
return $page;
}
/**
@@ -43,29 +43,14 @@ class NewContent implements Interaction
*/
public function handle($data, $parameters)
{
list($moduleHandler, $titlePhoto, $relatedFiles) = $parameters;
// upload file - if provided
$file = !is_null($titlePhoto) ? $this->file->upload($titlePhoto) : null;
list($moduleHandler) = $parameters;
$data['userId'] = \Auth::user()->id;
$data['language'] = LaravelLocalization::getCurrentLocale();
$data['titlePhoto'] = $file ? $file['filename'] : null;
$data['moduleHandler'] = $moduleHandler;
$page = Content::create($data);
// save module-specific stuff
$this->module->callOnString($moduleHandler, 'createNew', [&$page, $data]);
// let template to modify data and content page
CurrentTemplate::beforeSave($page, $data);
// save content of page before (possible) uploading related files
$page->save();
// upload files assigned to content page
$page->uploadRelatedFiles($relatedFiles);
$page = new Content();
app('saveContentPipeline')->run($page, $data);
return $page;
}