From 2f760fd56d9012a315d6b3b69fb247b85d3f94dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Kv=C3=A1=C4=8Dek?= Date: Sat, 24 Sep 2016 19:48:39 +0200 Subject: [PATCH] FEATURE: minor UI tweaks in template settings + add events into OnePage base template --- app/Handlers/Contracts/BaseModuleHandler.php | 7 ++-- .../Admin/Contents/EditContent.php | 6 ++-- resources/assets/admin/css/vendor.css | 8 +++++ resources/views/admin/snippets/card.blade.php | 2 +- .../OnePage/Events/AddPageIntoHomepage.php | 18 ++++++++++ .../OnePage/Events/RemovePageFromHomepage.php | 18 ++++++++++ templates/Base/OnePage/Handlers/OnePage.php | 33 ++++++++++++++++--- .../Http/Controllers/Admin/SetHomepage.php | 29 +++++++++++----- .../Base/OnePage/Listeners/LogAddingPage.php | 23 +++++++++++++ .../OnePage/Listeners/LogRemovingPage.php | 23 +++++++++++++ .../Base/OnePage/Providers/EventProvider.php | 8 ++++- .../Resources/lang/en/admin/setHomepage.php | 14 ++++++-- .../views/admin/homepage/set.blade.php | 28 ++++++++-------- templates/Jednostrankovka/Handler.php | 5 +++ 14 files changed, 185 insertions(+), 37 deletions(-) create mode 100644 templates/Base/OnePage/Events/AddPageIntoHomepage.php create mode 100644 templates/Base/OnePage/Events/RemovePageFromHomepage.php create mode 100644 templates/Base/OnePage/Listeners/LogAddingPage.php create mode 100644 templates/Base/OnePage/Listeners/LogRemovingPage.php diff --git a/app/Handlers/Contracts/BaseModuleHandler.php b/app/Handlers/Contracts/BaseModuleHandler.php index dab8a282..9cd17c6b 100644 --- a/app/Handlers/Contracts/BaseModuleHandler.php +++ b/app/Handlers/Contracts/BaseModuleHandler.php @@ -5,8 +5,6 @@ use App\Models\User; interface BaseModuleHandler { -// public static function getModuleId(); - /** * Register admin menu (or multiple ones) * @@ -18,9 +16,10 @@ interface BaseModuleHandler public static function registerAdminMenu(User $user); /** - * Install module + * Install module. * - * @return mixed + * This method is called after inserting info about module into database. It can be called only using Artisan in + * CLI. */ public static function install(); } \ 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 06f53491..fda4f63e 100644 --- a/app/Http/Controllers/Admin/Contents/EditContent.php +++ b/app/Http/Controllers/Admin/Contents/EditContent.php @@ -300,7 +300,7 @@ class EditContent extends Controller } catch (NotFoundHttpException $e) { // page not found return redirect() - ->route('content.overview') + ->back() ->with('error', trans('admin/contents.invalidPage')); } @@ -315,7 +315,7 @@ class EditContent extends Controller // was something changed? if ($changedColumns == 0) { return redirect() - ->route('content.overview') + ->back() ->with('error', trans('admin/contents.nothingToEdit')); } @@ -324,7 +324,7 @@ class EditContent extends Controller // redirect back to overview with info for user return redirect() - ->route('content.overview') + ->back() ->with('success', trans('admin/contents.homepageSetup', [ 'name' => $page->title, 'url' => $page->url diff --git a/resources/assets/admin/css/vendor.css b/resources/assets/admin/css/vendor.css index 85fc56f3..86aeb782 100644 --- a/resources/assets/admin/css/vendor.css +++ b/resources/assets/admin/css/vendor.css @@ -14382,4 +14382,12 @@ img { .p-tb-15 { padding-top: 15px; padding-bottom: 15px; +} + +.card .card-header .title { + line-height: 1.5em; +} + +.card .card-header .title small { + padding-left: 10px; } \ No newline at end of file diff --git a/resources/views/admin/snippets/card.blade.php b/resources/views/admin/snippets/card.blade.php index 1bf654a4..7b9657be 100644 --- a/resources/views/admin/snippets/card.blade.php +++ b/resources/views/admin/snippets/card.blade.php @@ -1,7 +1,7 @@
-

{{$title}}

+

{!! $title !!}

diff --git a/templates/Base/OnePage/Events/AddPageIntoHomepage.php b/templates/Base/OnePage/Events/AddPageIntoHomepage.php new file mode 100644 index 00000000..82209e0b --- /dev/null +++ b/templates/Base/OnePage/Events/AddPageIntoHomepage.php @@ -0,0 +1,18 @@ +page = $page; + } +} \ No newline at end of file diff --git a/templates/Base/OnePage/Events/RemovePageFromHomepage.php b/templates/Base/OnePage/Events/RemovePageFromHomepage.php new file mode 100644 index 00000000..3a1889a3 --- /dev/null +++ b/templates/Base/OnePage/Events/RemovePageFromHomepage.php @@ -0,0 +1,18 @@ +page = $page; + } +} \ No newline at end of file diff --git a/templates/Base/OnePage/Handlers/OnePage.php b/templates/Base/OnePage/Handlers/OnePage.php index d68b2181..28155fb1 100644 --- a/templates/Base/OnePage/Handlers/OnePage.php +++ b/templates/Base/OnePage/Handlers/OnePage.php @@ -4,6 +4,7 @@ namespace Templates\Base\OnePage\Handlers; use App\Handlers\Contracts\TemplateHandler; use App\Helpers\PageRenderer; use App\Helpers\Settings; +use App\Models\ActionLogType; use App\Models\Content; use App\Models\Module; use App\Models\User; @@ -58,13 +59,14 @@ abstract class OnePage implements TemplateHandler // create real content from pages $pagesRaw = $pagesInTemplates = []; foreach ($pages as $page) { + // save pages as models only $pagesRaw[$page->url] = $page; + + // save rendered pages $pagesInTemplates[$page->url] = PageRenderer::render($page) ->render(); } - // dd($pagesRaw); - // return pages into template return ['pagesHtml' => $pagesInTemplates, 'pagesRaw' => $pagesRaw]; } @@ -74,14 +76,37 @@ abstract class OnePage implements TemplateHandler /** * Install module - * - * @return mixed */ public static function install() { + // register action log types + + $types = [ + [ + 'string_id' => 'pageRemovedFromHomepage', + 'name' => 'template::admin/setHomepage.events.names.removedPage', + 'value' => 'template::admin/setHomepage.events.descriptions.removedPage', + ], + [ + 'string_id' => 'pageAddedIntoHomepage', + 'name' => 'template::admin/setHomepage.events.names.addedPage', + 'value' => 'template::admin/setHomepage.events.descriptions.addedPage', + ], + + ]; + foreach ($types as $type) { + ActionLogType::create($type); + } } + /** + * Uninstall template + * + * @param Module $template + */ public static function uninstall(Module $template) { + ActionLogType::whereIn('string_id', ['pageRemovedFromHomepage', 'pageAddedIntoHomepage']) + ->delete(); } } \ No newline at end of file diff --git a/templates/Base/OnePage/Http/Controllers/Admin/SetHomepage.php b/templates/Base/OnePage/Http/Controllers/Admin/SetHomepage.php index 026e4a1f..b50a2d83 100644 --- a/templates/Base/OnePage/Http/Controllers/Admin/SetHomepage.php +++ b/templates/Base/OnePage/Http/Controllers/Admin/SetHomepage.php @@ -4,7 +4,11 @@ namespace Templates\Base\OnePage\Http\Controllers\Admin; use App\Helpers\Settings; use App\Http\Controllers\Admin\Controller; use App\Models\Content; +use App\Models\Settings as SettingsModel; +use Illuminate\Support\Facades\Event; use Mcamara\LaravelLocalization\Facades\LaravelLocalization; +use Templates\Base\OnePage\Events\AddPageIntoHomepage; +use Templates\Base\OnePage\Events\RemovePageFromHomepage; use Templates\Base\OnePage\Handlers\OnePage; class SetHomepage extends Controller @@ -79,19 +83,19 @@ class SetHomepage extends Controller { $page = Content::findOrFail($id); - if ($page->is_template) { + if ($page->is_homepage) { return redirect() ->back() ->with('error', trans('template::admin/setHomepage.cannotSetHomepageAsPartOfHomepage')); } // try to get page config - $settingsEntry = \App\Models\Settings::where('key', OnePage::HOMEPAGE_PAGES_SETTINGS_KEY) - ->where('language', LaravelLocalization::getCurrentLocale()) - ->first(); + $settingsEntry = SettingsModel::where('key', OnePage::HOMEPAGE_PAGES_SETTINGS_KEY) + ->where('language', LaravelLocalization::getCurrentLocale()) + ->first(); if (!$settingsEntry) { - $settingsEntry = new \App\Models\Settings(); + $settingsEntry = new SettingsModel(); $settingsEntry->language = LaravelLocalization::getCurrentLocale(); $settingsEntry->key = OnePage::HOMEPAGE_PAGES_SETTINGS_KEY; $usedPagesIds = []; @@ -99,6 +103,7 @@ class SetHomepage extends Controller $usedPagesIds = (array)json_decode($settingsEntry->value); } + // add page into list of used pages - if not already there if (!in_array($id, $usedPagesIds)) { $usedPagesIds[] = $id; } @@ -106,6 +111,9 @@ class SetHomepage extends Controller $settingsEntry->value = json_encode($usedPagesIds); $settingsEntry->save(); + // inform other application parts about this event + Event::fire(new AddPageIntoHomepage($page)); + return redirect() ->back() ->with('success', trans('template::admin/setHomepage.successfullyAdded')); @@ -122,6 +130,8 @@ class SetHomepage extends Controller { $pages = (array)json_decode(Settings::get(OnePage::HOMEPAGE_PAGES_SETTINGS_KEY, '{}')); + $page = Content::findOrFail($id); + if (!in_array($id, $pages)) { return redirect() ->back() @@ -135,9 +145,12 @@ class SetHomepage extends Controller $pages = array_values($pages); // update in database - \App\Models\Settings::where('key', OnePage::HOMEPAGE_PAGES_SETTINGS_KEY) - ->where('language', LaravelLocalization::getCurrentLocale()) - ->update(['value' => json_encode($pages)]); + SettingsModel::where('key', OnePage::HOMEPAGE_PAGES_SETTINGS_KEY) + ->where('language', LaravelLocalization::getCurrentLocale()) + ->update(['value' => json_encode($pages)]); + + // inform other application parts about this event + Event::fire(new RemovePageFromHomepage($page)); return redirect() ->back() diff --git a/templates/Base/OnePage/Listeners/LogAddingPage.php b/templates/Base/OnePage/Listeners/LogAddingPage.php new file mode 100644 index 00000000..264bc91d --- /dev/null +++ b/templates/Base/OnePage/Listeners/LogAddingPage.php @@ -0,0 +1,23 @@ + $event->page->id, + 'title' => $event->page->title + ]; + + $this->saveLog($parameters); + } + + protected function getName() + { + return 'pageAddedIntoHomepage'; + } +} \ No newline at end of file diff --git a/templates/Base/OnePage/Listeners/LogRemovingPage.php b/templates/Base/OnePage/Listeners/LogRemovingPage.php new file mode 100644 index 00000000..fd0872de --- /dev/null +++ b/templates/Base/OnePage/Listeners/LogRemovingPage.php @@ -0,0 +1,23 @@ + $event->page->id, + 'title' => $event->page->title + ]; + + $this->saveLog($parameters); + } + + protected function getName() + { + return 'pageRemovedFromHomepage'; + } +} \ No newline at end of file diff --git a/templates/Base/OnePage/Providers/EventProvider.php b/templates/Base/OnePage/Providers/EventProvider.php index 801b4b16..1a4c68b0 100644 --- a/templates/Base/OnePage/Providers/EventProvider.php +++ b/templates/Base/OnePage/Providers/EventProvider.php @@ -3,11 +3,17 @@ namespace Templates\Base\OnePage\Providers; use App\Events\SetHomepage; use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider; +use Templates\Base\OnePage\Events\AddPageIntoHomepage; +use Templates\Base\OnePage\Events\RemovePageFromHomepage; use Templates\Base\OnePage\Listeners\HomepageChanged; +use Templates\Base\OnePage\Listeners\LogAddingPage; +use Templates\Base\OnePage\Listeners\LogRemovingPage; class EventProvider extends ServiceProvider { protected $listen = [ - SetHomepage::class => [HomepageChanged::class] + SetHomepage::class => [HomepageChanged::class], + AddPageIntoHomepage::class => [LogAddingPage::class], + RemovePageFromHomepage::class => [LogRemovingPage::class], ]; } \ No newline at end of file diff --git a/templates/Base/OnePage/Resources/lang/en/admin/setHomepage.php b/templates/Base/OnePage/Resources/lang/en/admin/setHomepage.php index 7da9432c..9b3038ae 100644 --- a/templates/Base/OnePage/Resources/lang/en/admin/setHomepage.php +++ b/templates/Base/OnePage/Resources/lang/en/admin/setHomepage.php @@ -10,6 +10,16 @@ return [ 'usedPages' => 'Used pages', 'notUsedPages' => 'Not used pages', 'reallyRemovePage' => 'Do you really want to remove this page from homepage?', - 'cannotSetHomepageAsPartOfHomepage' => 'Cannot set currently set homepage as one of homepage pages.' - + 'cannotSetHomepageAsPartOfHomepage' => 'Cannot set currently set homepage as one of homepage pages.', + 'addToHomepage' => 'Add page into homepage', + 'events' => [ + 'names' => [ + 'removedPage' => 'Removed page from homepage', + 'addedPage' => 'Added page into homepage' + ], + 'descriptions' => [ + 'removedPage' => 'Removed page #:id ":title" from homepage.', + 'addedPage' => 'Added page #:id ":title" into homepage.' + ] + ] ]; \ No newline at end of file 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 1d7e96a6..7ddc086f 100644 --- a/templates/Base/OnePage/Resources/views/admin/homepage/set.blade.php +++ b/templates/Base/OnePage/Resources/views/admin/homepage/set.blade.php @@ -14,10 +14,8 @@ Improvement: http://www.html5rocks.com/en/tutorials/dnd/basics/ @include('admin.snippets.card', [ 'type' => 'primary', - 'title' => $homepage->title, - 'body' => ' -

'.trans($homepage->module_name).'

-

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

', + 'title' => $homepage->title.' '.trans($homepage->module_name).'', + 'body' => '

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

', 'footerClass' => 'text-right', 'footer' => '' ]) @@ -33,10 +31,8 @@ Improvement: http://www.html5rocks.com/en/tutorials/dnd/basics/ @include('admin.snippets.card', [ - 'title' => $allPages[$pageId]->title, - 'body' => ' -

'.trans($allPages[$pageId]->module_name).'

-

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

', + 'title' => $allPages[$pageId]->title.' '.trans($allPages[$pageId]->module_name).'', + 'body' => '

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

', 'footerClass' => 'text-right', 'footer' => ' @@ -55,21 +51,25 @@ Improvement: http://www.html5rocks.com/en/tutorials/dnd/basics/
-

{{$page->title}}

+

{{$page->title}} @lang($page->module_name)

-

- (@lang($page->module_name)) -

-

{{str_limit(strip_tags($page->content), 100)}}

+ {{str_limit(strip_tags($page->content), 100)}}
@empty diff --git a/templates/Jednostrankovka/Handler.php b/templates/Jednostrankovka/Handler.php index 753a92af..7f5b1db8 100644 --- a/templates/Jednostrankovka/Handler.php +++ b/templates/Jednostrankovka/Handler.php @@ -31,8 +31,13 @@ class Handler extends OnePage { } + /** + * Install template + */ public static function install() { + parent::install(); + try { Artisan::call('install-module', ['name' => 'StaticPages']); } catch (\Exception $e) {