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 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/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/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; } 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/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/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 @@
- @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 - - -
-+ @if (trim($page->meta_description)) + {{str_limit($page->meta_description)}} + @else + {{str_limit(strip_tags($page->content))}} + @endif +
+