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())
'.str_limit(strip_tags($homepage->content), 200).'
', 'footerClass' => 'text-right', - 'footer' => '' + 'footer' => '' ]) @else'.str_limit(strip_tags($allPages[$pageId]->content), 200).'
', 'footerClass' => 'text-right', 'footer' => ' - + ' ])