Merge branch 'dev' into test.customwristbands.cz
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
|
||||
+15
-5
@@ -99,7 +99,8 @@ class Content extends Model
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function isDraft() {
|
||||
public function isDraft()
|
||||
{
|
||||
return $this->status == self::STATUS_DRAFT;
|
||||
}
|
||||
|
||||
@@ -108,7 +109,8 @@ class Content extends Model
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function isPublic() {
|
||||
public function isPublic()
|
||||
{
|
||||
return $this->status == self::STATUS_PUBLIC;
|
||||
}
|
||||
|
||||
@@ -117,7 +119,8 @@ class Content extends Model
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function isProtected() {
|
||||
public function isProtected()
|
||||
{
|
||||
return $this->status == self::STATUS_PROTECTED;
|
||||
}
|
||||
|
||||
@@ -126,7 +129,8 @@ class Content extends Model
|
||||
*
|
||||
* @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);
|
||||
|
||||
@@ -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');
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Vendored
+21
-28
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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'
|
||||
|
||||
];
|
||||
@@ -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'
|
||||
]
|
||||
|
||||
];
|
||||
@@ -15,8 +15,8 @@
|
||||
<li class="accordion-item" data-accordion-item>
|
||||
<a class="accordion-title">
|
||||
<img src="{{\App\Helpers\Gravatar::img($action->email, 20)}}" alt="{{$action->email}}" />
|
||||
{{date('d.m.Y', strtotime($action->created_at))}} |
|
||||
<strong>{{$action->name}}</strong>
|
||||
{{date('d.m.Y', strtotime($action->created_at))}}
|
||||
</a>
|
||||
<div class="accordion-content" data-tab-content>
|
||||
<div class="row">
|
||||
|
||||
@@ -1,67 +1,83 @@
|
||||
<div class="row" id="static-page-overview" data-equalizer data-equalize-by-row="true">
|
||||
@forelse($pages as $page)
|
||||
<div class="columns @if(!isset($tileClass)) large-3 @else {{$tileClass}} @endif">
|
||||
<div class="page callout" data-equalizer-watch>
|
||||
@if ($page->title_photo)
|
||||
<img src="{{config('app.upload_url')}}/{{$page->title_photo}}" alt="" />
|
||||
@endif
|
||||
@forelse($pages as $page)
|
||||
<div class="page callout page {{$page->status}} row">
|
||||
|
||||
<div class="row column">
|
||||
@if ($page->parent_id && $page->parent_url)
|
||||
<span class="parent">
|
||||
@lang('admin/contents.parentPage'):
|
||||
<a href="{{route('content.edit', ['id' => $page->parent_id])}}">{{$page->parent_title}}</a>,
|
||||
</span>
|
||||
@endif
|
||||
|
||||
<h4>{{$page->title}}</h4>
|
||||
<span class="date">{{date('d.m.Y', strtotime($page->created_at))}}</span>
|
||||
<span class="author">{{$page->author_name}}</span>
|
||||
<br />
|
||||
<span class="moduleName">@lang($page->module_name)</span>
|
||||
<span class="author">{{$page->author_name}}</span>,
|
||||
<span class="date">{{date('d.m.Y', strtotime($page->created_at))}}</span>
|
||||
|
||||
<p class="perex">
|
||||
@if (trim($page->meta_description))
|
||||
{{str_limit($page->meta_description)}}
|
||||
@else
|
||||
{{str_limit(strip_tags($page->content))}}
|
||||
@endif
|
||||
</p>
|
||||
|
||||
@if ($page->meta_keywords)
|
||||
<p class="keywords">{{$page->meta_keywords}}</p>
|
||||
@endif
|
||||
|
||||
<p class="controls row text-center">
|
||||
@if($page->is_homepage)
|
||||
<a class="button tiny disabled"><i class="fa fa-home"></i></a>
|
||||
@else
|
||||
<a href="{{route('content.setHomepage', ['id' => $page->id])}}"
|
||||
class="button tiny success has-tip" data-tooltip aria-haspopup="true"
|
||||
title="@lang('admin/contents.setHomepage', ['name' => $page->title])"><i
|
||||
class="fa fa-home"></i></a>
|
||||
@endif
|
||||
|
||||
<a href="{{route('content.edit', ['id' => $page->id])}}" class="button tiny success has-tip"
|
||||
data-tooltip aria-haspopup="true"
|
||||
title="@lang('admin/contents.edit', ['name' => $page->title])"><i class="fa fa-edit"></i></a>
|
||||
|
||||
@if($page->status == \App\Models\Content::STATUS_DRAFT)
|
||||
<a href="{{route('content.changeStatus', ['id' => $page->id, 'status' => \App\Models\Content::STATUS_PUBLIC])}}"
|
||||
class="button tiny success confirm has-tip" data-tooltip aria-haspopup="true"
|
||||
title="@lang('admin/contents.makePublic')"><i class="fa fa-eye"></i></a>
|
||||
<a href="{{route('content.changeStatus', ['id' => $page->id, 'status' => \App\Models\Content::STATUS_PROTECTED])}}"
|
||||
class="button tiny warning confirm has-tip" data-tooltip aria-haspopup="true"
|
||||
title="@lang('admin/contents.makeProtected')"><i class="fa fa-lock"></i></a>
|
||||
@else
|
||||
<a href="{{route('page.content', ['url' => $page->url])}}" target="_blank"
|
||||
class="button tiny secondary has-tip" data-tooltip aria-haspopup="true"
|
||||
title="@lang('admin/contents.viewPage')"><i class="fa fa-desktop"></i></a>
|
||||
<a href="{{route('content.changeStatus', ['id' => $page->id, 'status' => \App\Models\Content::STATUS_DRAFT])}}"
|
||||
class="button tiny warning confirm has-tip" data-tooltip aria-haspopup="true"
|
||||
title="@lang('admin/contents.makeDraft')"><i class="fa fa-eye-slash"></i></a>
|
||||
@endif
|
||||
|
||||
<a href="{{route('content.delete', ['id' => $page->id])}}"
|
||||
class="button tiny alert confirm has-tip" data-tooltip aria-haspopup="true"
|
||||
title="@lang('admin/contents.deletePage')"><i class="fa fa-remove"></i></a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
@empty
|
||||
<em>@lang('admin/contents.noPagesAvailable')</em>
|
||||
@endforelse
|
||||
</div>
|
||||
|
||||
<div class="column large-1">
|
||||
@if ($page->title_photo)
|
||||
<a href="{{route('content.edit', ['id' => $page->id])}}">
|
||||
<img src="@upload($page->title_photo)" class="float-left" alt="" />
|
||||
</a>
|
||||
@endif
|
||||
</div>
|
||||
<div class="column large-8">
|
||||
<h4>
|
||||
<a href="{{route('content.edit', ['id' => $page->id])}}">
|
||||
{{$page->title}}
|
||||
<small>(@lang($page->module_name))</small>
|
||||
</a>
|
||||
</h4>
|
||||
|
||||
<p class="perex">
|
||||
@if (trim($page->meta_description))
|
||||
{{str_limit($page->meta_description)}}
|
||||
@else
|
||||
{{str_limit(strip_tags($page->content))}}
|
||||
@endif
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="controls column float-right large-3">
|
||||
@if($page->is_homepage)
|
||||
<a class="button tiny disabled">
|
||||
<i class="fa fa-home"></i>
|
||||
@lang('admin/contents.alreadyHomepage')
|
||||
</a>
|
||||
@else
|
||||
<a href="{{route('content.setHomepage', ['id' => $page->id])}}"
|
||||
class="button tiny success">
|
||||
<i class="fa fa-home"></i>
|
||||
@lang('admin/contents.setHomepage')
|
||||
</a>
|
||||
@endif
|
||||
|
||||
<a href="{{route('content.edit', ['id' => $page->id])}}" class="button tiny success">
|
||||
<i class="fa fa-edit"></i>
|
||||
@lang('admin/contents.edit', ['name' => $page->title])
|
||||
</a>
|
||||
|
||||
@if($page->status == \App\Models\Content::STATUS_DRAFT)
|
||||
<a href="{{route('content.changeStatus', ['id' => $page->id, 'status' => \App\Models\Content::STATUS_PUBLIC])}}"
|
||||
class="button tiny success confirm">
|
||||
<i class="fa fa-eye"></i> @lang('admin/contents.makePublic')</a>
|
||||
<a href="{{route('content.changeStatus', ['id' => $page->id, 'status' => \App\Models\Content::STATUS_PROTECTED])}}"
|
||||
class="button tiny warning confirm">
|
||||
<i class="fa fa-lock"></i> @lang('admin/contents.makeProtected')</a>
|
||||
@else
|
||||
<a href="{{route('page.content', ['url' => $page->url])}}" target="_blank"
|
||||
class="button tiny secondary"><i
|
||||
class="fa fa-desktop"></i> @lang('admin/contents.viewPage')</a>
|
||||
<a href="{{route('content.changeStatus', ['id' => $page->id, 'status' => \App\Models\Content::STATUS_DRAFT])}}"
|
||||
class="button tiny warning confirm"><i
|
||||
class="fa fa-eye-slash"></i> @lang('admin/contents.makeDraft')</a>
|
||||
@endif
|
||||
|
||||
<a href="{{route('content.delete', ['id' => $page->id])}}"
|
||||
class="button tiny alert confirm"><i
|
||||
class="fa fa-remove"></i> @lang('admin/contents.deletePage')</a>
|
||||
</div>
|
||||
</div>
|
||||
@empty
|
||||
<em>@lang('admin/contents.noPagesAvailable')</em>
|
||||
@endforelse
|
||||
@@ -0,0 +1,29 @@
|
||||
<label>
|
||||
@lang('admin/settings.social.facebook')
|
||||
|
||||
<input type="text" name="facebookProfile" value="{{old('facebookProfile', isset($settings->facebookProfile) ? $settings->facebookProfile : '')}}" />
|
||||
</label>
|
||||
|
||||
<label>
|
||||
@lang('admin/settings.social.twitter')
|
||||
|
||||
<input type="text" name="twitterProfile" value="{{old('twitterProfile', isset($settings->twitterProfile) ? $settings->twitterProfile : '')}}" />
|
||||
</label>
|
||||
|
||||
<label>
|
||||
@lang('admin/settings.social.pinterest')
|
||||
|
||||
<input type="text" name="pinterestProfile" value="{{old('pinterestProfile', isset($settings->pinterestProfile) ? $settings->pinterestProfile : '')}}" />
|
||||
</label>
|
||||
|
||||
<label>
|
||||
@lang('admin/settings.social.gplus')
|
||||
|
||||
<input type="text" name="gplusProfile" value="{{old('gplusProfile', isset($settings->gplusProfile) ? $settings->gplusProfile : '')}}" />
|
||||
</label>
|
||||
|
||||
<label>
|
||||
@lang('admin/settings.social.instagram')
|
||||
|
||||
<input type="text" name="instagramProfile" value="{{old('instagramProfile', isset($settings->instagramProfile) ? $settings->instagramProfile : '')}}" />
|
||||
</label>
|
||||
Reference in New Issue
Block a user