From 28f67ffe3c521217024ce66b62bc288cb592782f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Kv=C3=A1=C4=8Dek?= Date: Wed, 19 Oct 2016 00:28:44 +0200 Subject: [PATCH] REFACTORING: another ugly commit full of refactored code --- app/CMS/Contracts/Content/ContentTitles.php | 2 +- app/CMS/Contracts/Repositories/Module.php | 13 +- .../Admin/Content/EditContent.php | 16 ++- app/CMS/Repositories/Content/Content.php | 1 + app/CMS/Repositories/Module.php | 64 +++++----- .../Admin/Contents/EditContent.php | 25 ++-- .../Controllers/Admin/Contents/History.php | 1 - app/Http/Controllers/Visitor/ContentPage.php | 8 +- app/Http/Controllers/Visitor/Homepage.php | 8 +- modules/Blog/Article/Handlers/Article.php | 5 +- .../Article/Listeners/LogCommentApproval.php | 2 +- .../Article/Listeners/LogDeletedComment.php | 3 +- .../Blog/Article/Listeners/LogNewComment.php | 5 +- modules/ContactForm/Handlers/ContactForm.php | 2 +- modules/Gallery/Http/Controllers/.gitkeep | 0 .../Controllers/Admin/CreateOrbitSlider.php | 113 ------------------ modules/Gallery/Http/Middleware/.gitkeep | 0 modules/Gallery/Http/Requests/.gitkeep | 0 modules/Gallery/Http/routes.php | 11 -- modules/Gallery/start.php | 13 -- .../StaticPages/Database/Migrations/.gitkeep | 0 modules/StaticPages/Database/Seeders/.gitkeep | 0 .../Seeders/StaticPagesDatabaseSeeder.php | 20 ---- modules/StaticPages/Handlers/StaticPage.php | 3 +- modules/StaticPages/Http/Controllers/.gitkeep | 0 modules/StaticPages/Http/Middleware/.gitkeep | 0 modules/StaticPages/Http/Requests/.gitkeep | 0 modules/StaticPages/Http/routes.php | 1 - modules/StaticPages/Resources/views/.gitkeep | 0 modules/StaticPages/start.php | 14 --- .../views/admin/content/overview.blade.php | 2 +- templates/Base/OnePage/Handlers/OnePage.php | 10 +- .../Http/Controllers/Admin/SetHomepage.php | 13 +- .../views/admin/homepage/set.blade.php | 4 +- 34 files changed, 101 insertions(+), 258 deletions(-) delete mode 100644 modules/Gallery/Http/Controllers/.gitkeep delete mode 100644 modules/Gallery/Http/Controllers/Admin/CreateOrbitSlider.php delete mode 100644 modules/Gallery/Http/Middleware/.gitkeep delete mode 100644 modules/Gallery/Http/Requests/.gitkeep delete mode 100644 modules/Gallery/Http/routes.php delete mode 100644 modules/StaticPages/Database/Migrations/.gitkeep delete mode 100644 modules/StaticPages/Database/Seeders/.gitkeep delete mode 100644 modules/StaticPages/Database/Seeders/StaticPagesDatabaseSeeder.php delete mode 100644 modules/StaticPages/Http/Controllers/.gitkeep delete mode 100644 modules/StaticPages/Http/Middleware/.gitkeep delete mode 100644 modules/StaticPages/Http/Requests/.gitkeep delete mode 100644 modules/StaticPages/Http/routes.php delete mode 100644 modules/StaticPages/Resources/views/.gitkeep diff --git a/app/CMS/Contracts/Content/ContentTitles.php b/app/CMS/Contracts/Content/ContentTitles.php index 675059d5..28831a3f 100644 --- a/app/CMS/Contracts/Content/ContentTitles.php +++ b/app/CMS/Contracts/Content/ContentTitles.php @@ -1,5 +1,5 @@ module = App::make(Module::class); + } + public function handle(Request $request, $parameters) { $page = $parameters[0]; @@ -57,7 +68,10 @@ class EditContent implements Interaction list($revision, $changedColumns) = $page->updateWithHistory($fields, $data); - $changedColumns += call_user_func_array([$page->module_handler, 'edit'], [&$page, $request, $revision]); + $module = $this->module->getByHandler($page->module_handler); + + + $changedColumns += $this->module->call($module, 'edit', [&$page, $request, $revision]); // move to interaction diff --git a/app/CMS/Repositories/Content/Content.php b/app/CMS/Repositories/Content/Content.php index da08eeeb..4270c21f 100644 --- a/app/CMS/Repositories/Content/Content.php +++ b/app/CMS/Repositories/Content/Content.php @@ -39,6 +39,7 @@ class Content extends Repository implements IContent ->orWhereNull('published_to'); }) ->where('language', LaravelLocalization::getCurrentLocale()) + ->whereNull('contents.deleted_at') ->where('modules.enabled', true); } diff --git a/app/CMS/Repositories/Module.php b/app/CMS/Repositories/Module.php index 3da714f7..ac82725f 100644 --- a/app/CMS/Repositories/Module.php +++ b/app/CMS/Repositories/Module.php @@ -2,64 +2,72 @@ namespace App\CMS\Repositories; use App\CMS\Contracts\Repositories\Module as IModule; +use App\Models\Content\Content; use App\Models\Module as ModuleModel; class Module extends Repository implements IModule { - /** - * @var ModuleModel - */ - private $module; - public function __construct(ModuleModel $module) { - $this->module = $module; + $this->model = $module; } public function getOne($id = null) { - if (!is_null($id)) { - - if (is_numeric($id)) { - return ModuleModel::findOrFail($id); - } else { - return ModuleModel::where('alias', $id) - ->firstOrFail(); - } - } else { + if (is_null($id)) { return new ModuleModel(); } + + if (is_numeric($id)) { + return ModuleModel::findOrFail($id); + } else { + return ModuleModel::where('alias', $id) + ->firstOrFail(); + } } public function getCreateContentTitle(ModuleModel $module) { $pageHeading = trans('admin/contents.new', ['name' => trans($module->name)]); - if (is_callable([$module->handler, 'getCreateNewTitle'])) { - $pageHeading = call_user_func([$module->handler, 'getCreateNewTitle']); - } + $moduleHeading = $this->call($module, 'getCreateNewTitle'); - return $pageHeading; + return is_null($moduleHeading) ? $pageHeading : $moduleHeading; } - public function getUpdateContentTitle(ModuleModel $module) + public function getUpdateContentTitle(ModuleModel $module, Content $content = null) { - // TODO: Implement getUpdateContentTitle() method. + $pageHeading = trans('admin/contents.new', ['name' => trans($module->name)]); + $moduleHeading = $this->call($module, 'getEditTitle', $content); + + return is_null($moduleHeading) ? $pageHeading : $moduleHeading; } public function getOverviewTitle(ModuleModel $module) { $pageHeading = 'admin/contents.overview'; + $moduleHeading = $this->call($module, 'getOverviewTitle'); - // does user want to filter results using module? - if (!is_null($module) && is_callable([$module->handler, 'getOverviewTitle'])) { - $pageHeading = call_user_func([$module->handler, 'getOverviewTitle']); - } - - return $pageHeading; + return is_null($moduleHeading) ? $pageHeading : $moduleHeading; } public function all() { - // TODO: Implement all() method. + return ModuleModel::where('enabled', true) + ->get(); + } + + public function getByHandler($handler) + { + return ModuleModel::where('handler', $handler) + ->firstOrFail(); + } + + public function call(ModuleModel $module, $method, ...$parameters) + { + if (!is_null($module) && is_callable([$module->handler, $method])) { + return call_user_func_array([$module->handler, $method], $parameters); + } + + return null; } } \ No newline at end of file diff --git a/app/Http/Controllers/Admin/Contents/EditContent.php b/app/Http/Controllers/Admin/Contents/EditContent.php index 90f2c515..952ed303 100644 --- a/app/Http/Controllers/Admin/Contents/EditContent.php +++ b/app/Http/Controllers/Admin/Contents/EditContent.php @@ -1,6 +1,9 @@ content->getOne($url); // get module ID - $module = Module::where('handler', $page->module_handler) - ->firstOrFail(); - - $pageHeading = $this->module->getUpdateContentTitle($module); + $module = $this->module->getByHandler($page->module_handler); + $pageHeading = $this->module->getUpdateContentTitle($module, $page); $templates = $this->template->getForModule($module); $categories = $this->category->getForModule($module); $history = $this->history->getStructuredHistoryOf($page); - // modify data for edit form according to installed template call_user_func_array([CurrentTemplate::handler(), 'beforePopulatingEditForm'], [&$page]); @@ -106,8 +99,8 @@ class EditContent extends Controller 'categories' => $categories, 'rootPages' => $this->content->getOverview(), 'templates' => $templates, - 'formSectionNames' => call_user_func([$page->module_handler, 'getExtendedFormSections']), - 'formSections' => call_user_func([$page->module_handler, 'getExtendedFormInputsEdit']), + 'formSectionNames' => $this->module->call($module, 'getExtendedFormSections'), + 'formSections' => $this->module->call($module, 'getExtendedFormInputsEdit'), 'historySize' => count($history['changesets']) ]); } @@ -126,7 +119,7 @@ class EditContent extends Controller /** * @var $page Content */ - $page = Content::findOrFail($id); + $page = $this->content->getOne($id); } catch (NotFoundHttpException $e) { // log attempt of invalid edit diff --git a/app/Http/Controllers/Admin/Contents/History.php b/app/Http/Controllers/Admin/Contents/History.php index ff6e390b..28b74412 100644 --- a/app/Http/Controllers/Admin/Contents/History.php +++ b/app/Http/Controllers/Admin/Contents/History.php @@ -43,7 +43,6 @@ class History extends Controller return view('admin/history.diff', [ 'change' => $change, - 'columnName' => 'Page content', 'diff' => $diff ]); } diff --git a/app/Http/Controllers/Visitor/ContentPage.php b/app/Http/Controllers/Visitor/ContentPage.php index 18eea090..01a59d3d 100644 --- a/app/Http/Controllers/Visitor/ContentPage.php +++ b/app/Http/Controllers/Visitor/ContentPage.php @@ -2,9 +2,10 @@ namespace App\Http\Controllers\Visitor; +use App\Models\Content\Content as ContentModel; +use App\CMS\Contracts\Repositories\Content; use App\CMS\Helpers\PageRenderer; use App\Http\Controllers\Controller; -use App\Models\Content\Content; use Illuminate\Support\Facades\Auth; class ContentPage extends Controller @@ -43,11 +44,10 @@ class ContentPage extends Controller * @return mixed * @throws \Exception */ - protected function renderPage(Content $page) + protected function renderPage(ContentModel $page) { // test if loaded page is visible or not - if ($page->status == Content::STATUS_PROTECTED && !Auth::user()) { -// throw new \Exception('Cannot access protected resources'); + if ($page->isProtected() && !Auth::user()) { abort(404); } diff --git a/app/Http/Controllers/Visitor/Homepage.php b/app/Http/Controllers/Visitor/Homepage.php index a40ba1da..eb175636 100644 --- a/app/Http/Controllers/Visitor/Homepage.php +++ b/app/Http/Controllers/Visitor/Homepage.php @@ -2,8 +2,6 @@ namespace App\Http\Controllers\Visitor; -use App\Http\Requests; - class Homepage extends ContentPage { public function getIndex() @@ -17,10 +15,6 @@ class Homepage extends ContentPage } // render page -// try { - return $this->renderPage($page); -// } catch (\Exception $e) { -// return view('errors.homepageNotAvailable', ['exception' => $e, 'reason' => 'exception']); -// } + return $this->renderPage($page); } } diff --git a/modules/Blog/Article/Handlers/Article.php b/modules/Blog/Article/Handlers/Article.php index 123d5a5c..7365f423 100644 --- a/modules/Blog/Article/Handlers/Article.php +++ b/modules/Blog/Article/Handlers/Article.php @@ -2,8 +2,8 @@ namespace Modules\Blog\Article\Handlers; use App\CMS\Contracts\Content\AdvancedContentModifier; +use App\CMS\Contracts\Content\ContentTitles; use App\CMS\Contracts\Modules\InstallableModule; -use App\CMS\Handlers\Contracts\ContentTitles; use App\CMS\Handlers\Handler; use App\Http\Controllers\Admin\Contents\EditContent; use App\Http\Controllers\Controller; @@ -58,8 +58,7 @@ class Article extends Handler implements ContentTitles, AdvancedContentModifier, * @param Content $content * @param Request $request * - * @return mixed - * @internal param Widget $widget + * @return mixed|void */ public static function createNew(Content &$content, Request $request) { diff --git a/modules/Blog/Article/Listeners/LogCommentApproval.php b/modules/Blog/Article/Listeners/LogCommentApproval.php index 24a9e049..2ff4f14b 100644 --- a/modules/Blog/Article/Listeners/LogCommentApproval.php +++ b/modules/Blog/Article/Listeners/LogCommentApproval.php @@ -2,7 +2,7 @@ namespace Modules\Blog\Article\Listeners; -use App\Listeners\Logger; +use App\Listeners\Loggers\Logger; use Modules\Blog\Article\Events\ApprovedComment; class LogCommentApproval extends Logger diff --git a/modules/Blog/Article/Listeners/LogDeletedComment.php b/modules/Blog/Article/Listeners/LogDeletedComment.php index d4cb97ea..0a016e0c 100644 --- a/modules/Blog/Article/Listeners/LogDeletedComment.php +++ b/modules/Blog/Article/Listeners/LogDeletedComment.php @@ -2,8 +2,7 @@ namespace Modules\Blog\Article\Listeners; -use App\Listeners\Logger; -use Modules\Blog\Article\Events\ApprovedComment; +use App\Listeners\Loggers\Logger; use Modules\Blog\Article\Events\DeletedComment; class LogDeletedComment extends Logger diff --git a/modules/Blog/Article/Listeners/LogNewComment.php b/modules/Blog/Article/Listeners/LogNewComment.php index 672a5748..d2e6e313 100644 --- a/modules/Blog/Article/Listeners/LogNewComment.php +++ b/modules/Blog/Article/Listeners/LogNewComment.php @@ -2,7 +2,7 @@ namespace Modules\Blog\Article\Listeners; -use App\Listeners\Logger; +use App\Listeners\Loggers\Logger; use Modules\Blog\Article\Events\CreatedComment; class LogNewComment extends Logger @@ -15,8 +15,9 @@ class LogNewComment extends Logger public function handle(CreatedComment $event) { // log only logged-in users - if (!$event->comment->user_id) + if (!$event->comment->user_id) { return; + } $parameters = [ 'author' => $event->comment->name, diff --git a/modules/ContactForm/Handlers/ContactForm.php b/modules/ContactForm/Handlers/ContactForm.php index 3e114f0d..ee9218d0 100644 --- a/modules/ContactForm/Handlers/ContactForm.php +++ b/modules/ContactForm/Handlers/ContactForm.php @@ -2,8 +2,8 @@ namespace Modules\ContactForm\Handlers; use App\CMS\Contracts\Content\AdvancedContentModifier; +use App\CMS\Contracts\Content\ContentTitles; use App\CMS\Enumerations\ModulesHandlerToId; -use App\CMS\Handlers\Contracts\ContentTitles; use App\CMS\Handlers\Handler; use App\Http\Controllers\Admin\Contents\EditContent; use App\Http\Requests\Request; diff --git a/modules/Gallery/Http/Controllers/.gitkeep b/modules/Gallery/Http/Controllers/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/modules/Gallery/Http/Controllers/Admin/CreateOrbitSlider.php b/modules/Gallery/Http/Controllers/Admin/CreateOrbitSlider.php deleted file mode 100644 index d58287aa..00000000 --- a/modules/Gallery/Http/Controllers/Admin/CreateOrbitSlider.php +++ /dev/null @@ -1,113 +0,0 @@ -widget = $widget; - } - - /** - * Load gallery or redirect user back to content edit form - * - * @param $id - * - * @return mixed - */ - protected function getGallery($id) - { - $content = Content::where('module_handler', config('gallery.handler')) - ->findOrFail($id); - $content->module_settings = json_decode($content->module_settings); - - // check if gallery has assigned some directory id - if (!isset($content->module_settings->directoryId)) { - return redirect() - ->route('content.edit', ['id' => $id]) - ->with('error', trans('gallery::admin/content.invalidGallery')); - } - - return $content; - } - - /** - * Load widget type for Orbit Slider. In case it does not exist, redirect user back to content edit form. - * - * @param $id - * - * @return mixed - */ - protected function getOrbitSliderWidgetType($id) - { - // try to load widget type for slider - $widgetType = WidgetType::where('handler', OrbitSlider::class) - ->first(); - - // check if widget type exists - if (!$widgetType) { - return redirect() - ->route('content.edit', ['id' => $id]) - ->with('error', trans('gallery::admin/content.orbitSliderMissing')); - } - - return $widgetType; - } - - /** - * Method for creating slider from photogallery - * - * @param $id - * - * @return mixed - */ - public function createNew($id) - { - // try to find gallery with specified ID - $content = $this->getGallery($id); - - // load info about orbit slider widget - $widgetType = $this->getOrbitSliderWidgetType($id); - - // create slider basic config - $sliderSettings = (object)[ - 'name' => $content->title, - 'description' => $content->meta_description, - 'directoryId' => $content->module_settings->directoryId, - 'useExistingDirectory' => true, - ]; - - // try to create the slider - try { - $slider = $this->widget->createNew($widgetType, $sliderSettings); - } catch (\Exception $e) { - return redirect() - ->route('content.edit', ['id' => $id]) - ->with('error', trans('gallery::admin/content.sliderFailed', ['message' => $e->getMessage()])); - } - - // update gallery info - $content->module_settings->slider = $slider->id; - $content->module_settings = json_encode($content->module_settings); - $content->save(); - - return redirect() - ->route('content.edit', ['id' => $id]) - ->with('success', trans('gallery::admin/content.sliderCreated')); - } -} \ No newline at end of file diff --git a/modules/Gallery/Http/Middleware/.gitkeep b/modules/Gallery/Http/Middleware/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/modules/Gallery/Http/Requests/.gitkeep b/modules/Gallery/Http/Requests/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/modules/Gallery/Http/routes.php b/modules/Gallery/Http/routes.php deleted file mode 100644 index 258f049b..00000000 --- a/modules/Gallery/Http/routes.php +++ /dev/null @@ -1,11 +0,0 @@ - ['admin'], - 'namespace' => 'Modules\Gallery\Http\Controllers\Admin', - 'prefix' => LaravelLocalization::setLocale() . 'admin/gallery' - ], function () { - - // method for creating slider from photogallery - Route::get('makeSlider/{id}', 'CreateOrbitSlider@createNew') - ->name('gallery.makeSlider'); -}); \ No newline at end of file diff --git a/modules/Gallery/start.php b/modules/Gallery/start.php index 7be329cb..a4abe2da 100644 --- a/modules/Gallery/start.php +++ b/modules/Gallery/start.php @@ -1,15 +1,2 @@ call("OthersTableSeeder"); - } - -} \ No newline at end of file diff --git a/modules/StaticPages/Handlers/StaticPage.php b/modules/StaticPages/Handlers/StaticPage.php index 2e81aad6..e2926855 100644 --- a/modules/StaticPages/Handlers/StaticPage.php +++ b/modules/StaticPages/Handlers/StaticPage.php @@ -1,8 +1,7 @@ @lang('admin/contents.noHomepage') - @elseif(!$homepage->isPublic()) + @elseif($homepage->isProtected())
@lang('admin/contents.homepageProtected')
diff --git a/templates/Base/OnePage/Handlers/OnePage.php b/templates/Base/OnePage/Handlers/OnePage.php index 4a9e8043..7e38c49c 100644 --- a/templates/Base/OnePage/Handlers/OnePage.php +++ b/templates/Base/OnePage/Handlers/OnePage.php @@ -3,6 +3,7 @@ namespace Templates\Base\OnePage\Handlers; use App\CMS\Contracts\Modules\InstallableModule; use App\CMS\Contracts\Modules\TemplateHandler; +use App\CMS\Contracts\Repositories\Content as IContent; use App\CMS\Helpers\CurrentTemplate; use App\CMS\Helpers\PageRenderer; use App\CMS\Helpers\Settings; @@ -60,17 +61,18 @@ abstract class OnePage implements TemplateHandler, InstallableModule $pages = Content::whereIn('id', $pageIds); if (Auth::user()) { - $pages = $pages->where('status', '!=', Content::STATUS_DRAFT); + $pages = $pages->where('status', '!=', IContent::STATUS_DRAFT); } else { - $pages = $pages->where('status', Content::STATUS_PUBLIC); + $pages = $pages->where('status', IContent::STATUS_PUBLIC); } $homepagePages = $pages->get() - ->getDictionary(); + ->getDictionary(); foreach ($pageIds as $pageId) { - if (!isset($homepagePages[$pageId])) + if (!isset($homepagePages[$pageId])) { continue; + } self::$homepagePages[] = $homepagePages[$pageId]; } diff --git a/templates/Base/OnePage/Http/Controllers/Admin/SetHomepage.php b/templates/Base/OnePage/Http/Controllers/Admin/SetHomepage.php index 05c6e0a0..242e5d74 100644 --- a/templates/Base/OnePage/Http/Controllers/Admin/SetHomepage.php +++ b/templates/Base/OnePage/Http/Controllers/Admin/SetHomepage.php @@ -3,7 +3,7 @@ namespace Templates\Base\OnePage\Http\Controllers\Admin; use App\CMS\Helpers\Settings; use App\Http\Controllers\Admin\Controller; -use App\Models\Content\Content; +use App\CMS\Contracts\Repositories\Content as IContent; use App\Models\Settings as SettingsModel; use Illuminate\Support\Facades\Event; use Mcamara\LaravelLocalization\Facades\LaravelLocalization; @@ -14,7 +14,7 @@ use Templates\Base\OnePage\Handlers\OnePage; class SetHomepage extends Controller { /** - * @var Content + * @var IContent */ private $content; @@ -23,7 +23,7 @@ class SetHomepage extends Controller * * @param Content $content */ - public function __construct(Content $content) + public function __construct(IContent $content) { parent::__construct(); @@ -41,8 +41,7 @@ class SetHomepage extends Controller $usedPagesIds = (array)Settings::getJson(OnePage::HOMEPAGE_PAGES_SETTINGS_KEY); // get all pages - they will be separated for used and not used on next lines - $allPages = $this->content->getOverview() - ->get(); + $allPages = $this->content->getOverview(); // separate pages to used and not used - with help of $usedPAgesIds array defined above $pages = $used = $notUsed = []; @@ -81,7 +80,7 @@ class SetHomepage extends Controller */ public function addPage($id) { - $page = Content::findOrFail($id); + $page = $this->content->getOne($id); if ($page->is_homepage) { return redirect() @@ -130,7 +129,7 @@ class SetHomepage extends Controller { $pages = (array)Settings::getJson(OnePage::HOMEPAGE_PAGES_SETTINGS_KEY); - $page = Content::findOrFail($id); + $page = $this->content->getOne($id); if (!in_array($id, $pages)) { return redirect() diff --git a/templates/Base/OnePage/Resources/views/admin/homepage/set.blade.php b/templates/Base/OnePage/Resources/views/admin/homepage/set.blade.php index 74078006..4fa99dc3 100644 --- a/templates/Base/OnePage/Resources/views/admin/homepage/set.blade.php +++ b/templates/Base/OnePage/Resources/views/admin/homepage/set.blade.php @@ -17,7 +17,7 @@ Improvement: http://www.html5rocks.com/en/tutorials/dnd/basics/ 'title' => $homepage->title.' '.trans($homepage->module_name).'', 'body' => '

'.str_limit(strip_tags($homepage->content), 200).'

', 'footerClass' => 'text-right', - 'footer' => '' + 'footer' => '' ]) @else
@lang('template::admin/setHomepage.noHomepageSet')
@@ -38,7 +38,7 @@ Improvement: http://www.html5rocks.com/en/tutorials/dnd/basics/ 'body' => '

'.str_limit(strip_tags($allPages[$pageId]->content), 200).'

', 'footerClass' => 'text-right', 'footer' => ' - + ' ])