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 1/5] 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 2/5] 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 3/5] 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 4/5] 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 5/5] 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