REFACTORING #1880 @4h30m: another ugly refactoring commit
This commit is contained in:
@@ -7,6 +7,8 @@ use App\CMS\Enumerations\ContentStatuses;
|
||||
use App\CMS\Helpers\CurrentTemplate;
|
||||
use App\Events\EditContent as EditContentEvent;
|
||||
use App\Http\Requests\Request;
|
||||
use App\Models\Content\Content;
|
||||
use App\Models\FileManager\File;
|
||||
use Illuminate\Support\Facades\App;
|
||||
use Illuminate\Support\Facades\Event;
|
||||
use Illuminate\Support\Str;
|
||||
@@ -17,74 +19,59 @@ class EditContent implements Interaction
|
||||
* @var Module
|
||||
*/
|
||||
protected $module;
|
||||
/**
|
||||
* @var File
|
||||
*/
|
||||
protected $file;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->module = App::make(Module::class);
|
||||
$this->file = App::make(File::class);
|
||||
}
|
||||
|
||||
public function handle(Request $request, $parameters)
|
||||
/**
|
||||
* Edit page
|
||||
*
|
||||
* @param array $data
|
||||
* @param array $parameters
|
||||
*
|
||||
* @return mixed|void
|
||||
*/
|
||||
public function handle($data, $parameters)
|
||||
{
|
||||
$page = $parameters[0];
|
||||
|
||||
// upload file - if provided
|
||||
// todo use interaction
|
||||
$file = $page->uploadTitlePhoto($request);
|
||||
/**
|
||||
* @var $page Content
|
||||
*/
|
||||
list($page, $titlePhoto, $relatedFiles) = $parameters;
|
||||
|
||||
// let template to modify request and content page
|
||||
call_user_func_array([CurrentTemplate::handler(), 'beforeSave'], [&$page, $request]);
|
||||
CurrentTemplate::beforeSave($page, $data);
|
||||
|
||||
$request->url = Str::slug($request->url);
|
||||
$request->parentPage = $request->parentPage ? $request->parentPage : null;
|
||||
$request->publishedFrom = empty($request->publishedFrom) ? null : $request->publishedFrom;
|
||||
$request->publishedTo = empty($request->publishedTo) ? null : $request->publishedTo;
|
||||
// upload file - if provided
|
||||
$data['titlePhoto'] = isset($data['existingTitlePhoto']) ? $data['existingTitlePhoto'] : null;
|
||||
|
||||
if (!$file) {
|
||||
$request->titlePhotoFilename = empty($request->existingTitlePhoto) ? null : $request->existingTitlePhoto;
|
||||
} else {
|
||||
$request->titlePhotoFilename = $file['filename'];
|
||||
if (!is_null($titlePhoto)) {
|
||||
$file = $this->file->upload($titlePhoto);
|
||||
$data['titlePhoto'] = $file ? $file['filename'] : null;
|
||||
}
|
||||
|
||||
// array of fields in database and fields from request
|
||||
$fields = [
|
||||
'title' => 'title',
|
||||
'url' => 'url',
|
||||
'template' => 'template',
|
||||
'published_from' => 'publishedFrom',
|
||||
'published_to' => 'publishedTo',
|
||||
'meta_keywords' => 'metaKeywords',
|
||||
'meta_description' => 'metaDescription',
|
||||
'content' => 'pageContent',
|
||||
'parent_id' => 'parentPage',
|
||||
'status' => 'status',
|
||||
'title_photo' => 'titlePhotoFilename',
|
||||
'category_id' => 'category'
|
||||
];
|
||||
|
||||
// save new values with history
|
||||
// todo move this method out of the controller!
|
||||
$data = \App\Http\Controllers\Admin\Contents\EditContent::getFields($request, array_values($fields));
|
||||
|
||||
// todo use Model Observer and model::original attributes
|
||||
|
||||
list($revision, $changedColumns) = $page->updateWithHistory($fields, $data);
|
||||
|
||||
$module = $this->module->getByHandler($page->module_handler);
|
||||
|
||||
|
||||
$changedColumns += $this->module->call($module, 'edit', [&$page, $request, $revision]);
|
||||
|
||||
$page->update($data);
|
||||
$this->module->callOnString($page->moduleHandler, 'edit', [$page, $data]);
|
||||
|
||||
// move to interaction
|
||||
$changedColumns += $page->uploadRelatedFiles($request, $revision);
|
||||
|
||||
if ($changedColumns > 0) {
|
||||
Event::fire(new EditContentEvent($page, $revision));
|
||||
}
|
||||
|
||||
return [$page, $revision, $changedColumns];
|
||||
$keepAssigned = isset($data->keepAssigned) ? $data->keepAssigned : [];
|
||||
$page->uploadRelatedFiles($relatedFiles, $keepAssigned);
|
||||
}
|
||||
|
||||
public function getValidationRules($parameters)
|
||||
/**
|
||||
* Validate this interaction
|
||||
*
|
||||
* @param array $parameters
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getValidationRules($parameters = [])
|
||||
{
|
||||
$id = $parameters[0]->id;
|
||||
|
||||
@@ -97,7 +84,7 @@ class EditContent implements Interaction
|
||||
'url' => 'required|unique:contents,url,' . $id,
|
||||
'publishedFrom' => 'date',
|
||||
'publishedTo' => 'date',
|
||||
'title_photo' => 'exists:files,id',
|
||||
'titlePhoto' => 'exists:files,id',
|
||||
'status' => 'required|in:' . $statuses,
|
||||
'parentPage' => 'exists:contents,id'
|
||||
];
|
||||
|
||||
Reference in New Issue
Block a user