From 543cce17fa8af64c078ce6aeaef0831fc50fa9ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Kv=C3=A1=C4=8Dek?= Date: Wed, 6 Apr 2016 18:01:31 +0200 Subject: [PATCH 01/11] FIX: fix exception when debug bar was not installed --- app/Providers/AppServiceProvider.php | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 25243bef..f3329aeb 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -55,8 +55,13 @@ class AppServiceProvider extends ServiceProvider public function register() { if ($this->app->environment() == 'local') { - $this->app->register('Iber\Generator\ModelGeneratorProvider'); - $this->app->register('Barryvdh\Debugbar\ServiceProvider'); + try { + $this->app->register('Barryvdh\Debugbar\ServiceProvider'); + } catch (\Exception $e) { + // this service provider may not exist when switching from other environment than local + // until composer install is run + // just ignore this exception and when no service provider is available, do not use debugbar + } } // register PingPong module extension From fc9f3a403bb7786857c4b645313f71a689dfc2aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Kv=C3=A1=C4=8Dek?= Date: Wed, 6 Apr 2016 18:55:56 +0200 Subject: [PATCH 02/11] FEATURE #1544: add social profile links into settings --- app/Providers/AppServiceProvider.php | 2 ++ resources/lang/en/admin/settings.php | 11 ++++++- .../admin/settings/parts/social.blade.php | 29 +++++++++++++++++++ 3 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 resources/views/admin/settings/parts/social.blade.php diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index f3329aeb..dc872c35 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -134,6 +134,8 @@ class AppServiceProvider extends ServiceProvider $registrator->register('basic', 'admin/settings.basic', 'admin.settings.parts.basic'); $registrator->register('meta', 'admin/settings.meta', 'admin.settings.parts.meta'); + $registrator->register('social', 'admin/settings.socialSites', 'admin.settings.parts.social'); + } /** diff --git a/resources/lang/en/admin/settings.php b/resources/lang/en/admin/settings.php index 4bd27177..ed86914c 100644 --- a/resources/lang/en/admin/settings.php +++ b/resources/lang/en/admin/settings.php @@ -10,5 +10,14 @@ return [ 'author' => 'Page owner', 'successfullySaved' => 'Settings successfully saved', 'nothingToSave' => 'You have submitted unchanged form. Try to change some attribute first.', - 'meta' => 'Meta information' + 'meta' => 'Meta information', + 'socialSites' => 'Social networks', + 'social' => [ + 'facebook' => 'Facebook profile', + 'instagram' => 'Instagram profile', + 'twitter' => 'Twitter profile', + 'pinterest' => 'Pinterest profile', + 'gplus' => 'G+ profile' + ] + ]; \ No newline at end of file diff --git a/resources/views/admin/settings/parts/social.blade.php b/resources/views/admin/settings/parts/social.blade.php new file mode 100644 index 00000000..de02aa6a --- /dev/null +++ b/resources/views/admin/settings/parts/social.blade.php @@ -0,0 +1,29 @@ + + + + + + + + + From de287abf24425287d638cb7425e74d65c1552297 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Kv=C3=A1=C4=8Dek?= Date: Wed, 6 Apr 2016 19:06:03 +0200 Subject: [PATCH 03/11] OPTIMALIZATION: cache widget area content for one pageload --- app/Helpers/WidgetAreas.php | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/app/Helpers/WidgetAreas.php b/app/Helpers/WidgetAreas.php index cf52fe70..27ac6924 100644 --- a/app/Helpers/WidgetAreas.php +++ b/app/Helpers/WidgetAreas.php @@ -5,11 +5,28 @@ use App\Models\WidgetArea; class WidgetAreas { + /** + * @var array list of inicialized widget areas + */ + protected static $widgetAreas = []; + + /** + * Renderer for whole widget area. + * + * @param $uniqueCode + * + * @return mixed + */ public static function render($uniqueCode) { - $widgetArea = new WidgetArea(); + if (isset(self::$widgetAreas[$uniqueCode])) { + echo self::$widgetAreas[$uniqueCode]; + return; + } - $widgets = $widgetArea->getWidgets($uniqueCode)->get(); + $widgetArea = new WidgetArea(); + $widgets = $widgetArea->getWidgets($uniqueCode) + ->get(); $content = ''; foreach ($widgets as $widget) { @@ -19,6 +36,9 @@ class WidgetAreas $content .= call_user_func([$presenter, 'render'], json_decode($widget->settings)); } + // cache this widget area + self::$widgetAreas[$uniqueCode] = $content; + echo $content; } } \ No newline at end of file From d996c4c80077a4b1a28f15d7e3909d1dd11d1de0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Kv=C3=A1=C4=8Dek?= Date: Wed, 6 Apr 2016 19:10:33 +0200 Subject: [PATCH 04/11] FIX: fix menu 'active' status when homepage is displayed --- app/Widgets/Menu/Presenters/Menu.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Widgets/Menu/Presenters/Menu.php b/app/Widgets/Menu/Presenters/Menu.php index 9b0882bd..471c5e4d 100644 --- a/app/Widgets/Menu/Presenters/Menu.php +++ b/app/Widgets/Menu/Presenters/Menu.php @@ -62,7 +62,7 @@ class Menu implements WidgetRenderer $page = $pages[$pageId]; $active = false; - if ($route == 'page.content' && isset($parameters['url']) && $parameters['url'] == $page->url) { + if (($page->is_homepage && $route == 'page.index') || ($route == 'page.content' && isset($parameters['url']) && $parameters['url'] == $page->url)) { $active = true; } From 6690d7423ed5d38f0e0252b7e570e5f930382587 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Kv=C3=A1=C4=8Dek?= Date: Wed, 6 Apr 2016 19:13:46 +0200 Subject: [PATCH 05/11] FEATURE: swap date and action name in log --- resources/views/admin/actionLog/overview.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/views/admin/actionLog/overview.blade.php b/resources/views/admin/actionLog/overview.blade.php index 8e34ff66..b2d0b6fe 100644 --- a/resources/views/admin/actionLog/overview.blade.php +++ b/resources/views/admin/actionLog/overview.blade.php @@ -15,8 +15,8 @@
  • {{$action->email}} - {{date('d.m.Y', strtotime($action->created_at))}} | {{$action->name}} + {{date('d.m.Y', strtotime($action->created_at))}}
    From 85c33e9ada6bacb1de3fbf62c4b9f3813426fba6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Kv=C3=A1=C4=8Dek?= Date: Wed, 6 Apr 2016 20:19:11 +0200 Subject: [PATCH 06/11] FEATURE: make overview in content pages little bit cleaner --- .../Controllers/Admin/ContentOverview.php | 2 +- app/Models/Content.php | 28 ++-- resources/assets/css/admin.css | 49 +++--- resources/lang/en/admin/contents.php | 15 +- .../admin/content/overviewTiles.blade.php | 142 ++++++++++-------- 5 files changed, 129 insertions(+), 107 deletions(-) diff --git a/app/Http/Controllers/Admin/ContentOverview.php b/app/Http/Controllers/Admin/ContentOverview.php index 592b68e7..95954ec4 100644 --- a/app/Http/Controllers/Admin/ContentOverview.php +++ b/app/Http/Controllers/Admin/ContentOverview.php @@ -39,7 +39,7 @@ class ContentOverview extends Controller } // get pages for overview - $pages = $this->content->getOverview($moduleFilterHandler, $status, true) + $pages = $this->content->getOverview($moduleFilterHandler, $status, true, true) ->paginate($perPage); // get homepage - for checking if homepage is set and available diff --git a/app/Models/Content.php b/app/Models/Content.php index 18dbfe40..85db80f5 100644 --- a/app/Models/Content.php +++ b/app/Models/Content.php @@ -96,37 +96,41 @@ class Content extends Model /** * Is current content draft? - * + * * @return bool */ - public function isDraft() { + public function isDraft() + { return $this->status == self::STATUS_DRAFT; } /** * Is current content visible for all visitors? - * + * * @return bool */ - public function isPublic() { + public function isPublic() + { return $this->status == self::STATUS_PUBLIC; } /** * Is current content visible only for logged users? - * + * * @return bool */ - public function isProtected() { + public function isProtected() + { return $this->status == self::STATUS_PROTECTED; } /** * Is current content visible for logged user OR for everyone? - * + * * @return bool */ - public function isVisible() { + public function isVisible() + { return $this->isPublic() || $this->isProtected(); } @@ -157,7 +161,7 @@ class Content extends Model * * @return */ - public function getOverview($handler = false, $status = false, $joinAuthor = false) + public function getOverview($handler = false, $status = false, $joinAuthor = false, $joinParent = false) { $query = DB::table('contents') ->select('contents.*', 'modules.name AS module_name') @@ -177,6 +181,12 @@ class Content extends Model ->addSelect('users.email AS author_email'); } + if ($joinParent) { + $query = $query->join('contents as parent', 'parent.id', '=', 'contents.parent_id') + ->addSelect('parent.title AS parent_title') + ->addSelect('parent.url AS parent_url'); + } + // add filtering by status if (in_array($status, ContentStatuses::getSimple())) { $query = $query->where('contents.status', $status); diff --git a/resources/assets/css/admin.css b/resources/assets/css/admin.css index c5b041ba..cb69e4df 100644 --- a/resources/assets/css/admin.css +++ b/resources/assets/css/admin.css @@ -99,38 +99,31 @@ code { left: 0; } -#static-page-overview .page { - position: relative; - padding-bottom: 3em; -} - -#static-page-overview .page .controls { - position: absolute; - bottom: 0; -} - -#static-page-overview .page .controls .button { - margin-bottom: 10px; -} - -#static-page-overview .date, #static-page-overview .author { - font-size: 80%; - -} - -#static-page-overview .perex { - -} - -#static-page-overview .keywords { - margin-bottom: 0; - font-size: 80%; -} - #appearance .title-photo img { max-height: 10em; } +.page img { + max-height: 7em; +} + +.page .parent, .page .date, .page .author { + font-style: italic; + font-size: 75%; +} + +.page.draft { + opacity: 0.5; +} + +.page.draft:hover { + opacity: 1; +} + +.page.protected { + border-color: orange; +} + .red { color: red; } diff --git a/resources/lang/en/admin/contents.php b/resources/lang/en/admin/contents.php index 1aaf3ae9..7127fffe 100644 --- a/resources/lang/en/admin/contents.php +++ b/resources/lang/en/admin/contents.php @@ -19,11 +19,11 @@ return [ 'field_published_to' => 'Published to', 'successfullyCreated' => 'Page successfully created', 'noPagesAvailable' => 'No static pages available. Try to create one first.', - 'viewPage' => 'View page on web', - 'deletePage' => 'Delete page (ireversible!)', - 'makePublic' => 'Publish page', - 'makeProtected' => 'Publish page only for logged users', - 'makeDraft' => 'Disable page and make it draft', + 'viewPage' => 'View', + 'deletePage' => 'Delete', + 'makePublic' => 'Publish', + 'makeProtected' => 'Logged users only', + 'makeDraft' => 'Make draft', 'invalidStatus' => 'Cannot change status to something undefined.', 'statusChanged' => 'Status successfully changed.', 'invalidPage' => 'Specified page does not exist.', @@ -39,5 +39,8 @@ return [ 'noParentPage' => ' -- No parent page -- ', 'uploadTitleImage' => 'Upload title image', 'noHomepage' => 'You have not set up your homepage yet, or your current homepage is draft! Try to select another one.', - 'homepageProtected' => 'Your homepage is displayed only for logged in users. This may or may not be an error.' + 'homepageProtected' => 'Your homepage is displayed only for logged in users. This may or may not be an error.', + 'parentPage' => 'Parent page', + 'alreadyHomepage' => 'Homepage' + ]; \ No newline at end of file diff --git a/resources/views/admin/content/overviewTiles.blade.php b/resources/views/admin/content/overviewTiles.blade.php index 76f90c11..67c4422d 100644 --- a/resources/views/admin/content/overviewTiles.blade.php +++ b/resources/views/admin/content/overviewTiles.blade.php @@ -1,67 +1,83 @@ -
    - @forelse($pages as $page) -
    -
    - @if ($page->title_photo) - - @endif +@forelse($pages as $page) +
    +
    + @if ($page->parent_id && $page->parent_url) + + @lang('admin/contents.parentPage'): + {{$page->parent_title}}, + + @endif -

    {{$page->title}}

    - {{date('d.m.Y', strtotime($page->created_at))}} - {{$page->author_name}} -
    - @lang($page->module_name) + {{$page->author_name}}, + {{date('d.m.Y', strtotime($page->created_at))}} -

    - @if (trim($page->meta_description)) - {{str_limit($page->meta_description)}} - @else - {{str_limit(strip_tags($page->content))}} - @endif -

    - - @if ($page->meta_keywords) -

    {{$page->meta_keywords}}

    - @endif - -

    - @if($page->is_homepage) - - @else - - @endif - - - - @if($page->status == \App\Models\Content::STATUS_DRAFT) - - - @else - - - @endif - - -

    -
    - @empty - @lang('admin/contents.noPagesAvailable') - @endforelse -
    \ No newline at end of file + +
    + @if ($page->title_photo) + + + + @endif +
    +
    +

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

    + +

    + @if (trim($page->meta_description)) + {{str_limit($page->meta_description)}} + @else + {{str_limit(strip_tags($page->content))}} + @endif +

    +
    + + +
    +@empty + @lang('admin/contents.noPagesAvailable') +@endforelse \ No newline at end of file From a4af5e2bac157dae4aff9b1563705b290b0b6db2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Kv=C3=A1=C4=8Dek?= Date: Wed, 6 Apr 2016 20:23:47 +0200 Subject: [PATCH 07/11] FIX: fix content page overview - changed join to left join --- app/Models/Content.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Models/Content.php b/app/Models/Content.php index 85db80f5..827a6316 100644 --- a/app/Models/Content.php +++ b/app/Models/Content.php @@ -182,7 +182,7 @@ class Content extends Model } if ($joinParent) { - $query = $query->join('contents as parent', 'parent.id', '=', 'contents.parent_id') + $query = $query->leftJoin('contents as parent', 'parent.id', '=', 'contents.parent_id') ->addSelect('parent.title AS parent_title') ->addSelect('parent.url AS parent_url'); } From 43051501bd1ee2ca4cb6a47bead87a6b7a106f16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Kv=C3=A1=C4=8Dek?= Date: Wed, 6 Apr 2016 20:28:16 +0200 Subject: [PATCH 08/11] FIX: when user did not fill his name, use email for content overview --- app/Models/Content.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Models/Content.php b/app/Models/Content.php index 827a6316..176aa9d3 100644 --- a/app/Models/Content.php +++ b/app/Models/Content.php @@ -177,7 +177,7 @@ class Content extends Model // join user email and user name to results when needed if ($joinAuthor) { $query = $query->join('users', 'users.id', '=', 'contents.user_id') - ->addSelect('users.name AS author_name') + ->addSelect('COALESCE(users.name, users.email) AS author_name') ->addSelect('users.email AS author_email'); } From 7fc01fa1ecf5010d41c815975c1fdbc6741b0653 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Kv=C3=A1=C4=8Dek?= Date: Wed, 6 Apr 2016 20:30:55 +0200 Subject: [PATCH 09/11] FIX: fix typo in COALESCE and escaping --- app/Models/Content.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Models/Content.php b/app/Models/Content.php index 176aa9d3..9c60d8c9 100644 --- a/app/Models/Content.php +++ b/app/Models/Content.php @@ -177,7 +177,7 @@ class Content extends Model // join user email and user name to results when needed if ($joinAuthor) { $query = $query->join('users', 'users.id', '=', 'contents.user_id') - ->addSelect('COALESCE(users.name, users.email) AS author_name') + ->addSelect(DB::raw('COALESCE(users.name, users.email) AS author_name')) ->addSelect('users.email AS author_email'); } From 74838f96faba10570ccedafe6804c69dca626413 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Kv=C3=A1=C4=8Dek?= Date: Wed, 6 Apr 2016 20:33:10 +0200 Subject: [PATCH 10/11] FEATURE: remove page name from button in overview --- resources/lang/en/admin/contents.php | 3 ++- resources/views/admin/content/overviewTiles.blade.php | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/resources/lang/en/admin/contents.php b/resources/lang/en/admin/contents.php index 7127fffe..6cc861ca 100644 --- a/resources/lang/en/admin/contents.php +++ b/resources/lang/en/admin/contents.php @@ -6,6 +6,7 @@ return [ 'status_public' => 'Public', 'new' => 'Create new :name', 'edit' => 'Edit :name', + 'editPlain' => 'Edit', 'content' => 'Page content', 'save' => 'Save new page', 'basicInfo' => 'Basic information', @@ -41,6 +42,6 @@ return [ 'noHomepage' => 'You have not set up your homepage yet, or your current homepage is draft! Try to select another one.', 'homepageProtected' => 'Your homepage is displayed only for logged in users. This may or may not be an error.', 'parentPage' => 'Parent page', - 'alreadyHomepage' => 'Homepage' + 'alreadyHomepage' => 'Homepage' ]; \ No newline at end of file diff --git a/resources/views/admin/content/overviewTiles.blade.php b/resources/views/admin/content/overviewTiles.blade.php index 67c4422d..0460632c 100644 --- a/resources/views/admin/content/overviewTiles.blade.php +++ b/resources/views/admin/content/overviewTiles.blade.php @@ -54,7 +54,7 @@ - @lang('admin/contents.edit', ['name' => $page->title]) + @lang('admin/contents.editPlain') @if($page->status == \App\Models\Content::STATUS_DRAFT) From 474405c69d15f85d4849116737d223e5b99d426a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Kv=C3=A1=C4=8Dek?= Date: Wed, 6 Apr 2016 23:55:18 +0200 Subject: [PATCH 11/11] FIX: fix ambiguous module_handler in content overview --- app/Models/Content.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Models/Content.php b/app/Models/Content.php index 9c60d8c9..e7251806 100644 --- a/app/Models/Content.php +++ b/app/Models/Content.php @@ -171,7 +171,7 @@ class Content extends Model // filter results using handler if ($handler) { - $query = $query->where('module_handler', $handler); + $query = $query->where('contents.module_handler', $handler); } // join user email and user name to results when needed @@ -293,4 +293,4 @@ class Content extends Model { return $this->belongsTo('App\Models\User', 'user_id'); } -} \ No newline at end of file +}