FEATURE: make overview in content pages little bit cleaner
This commit is contained in:
@@ -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
|
||||
|
||||
+19
-9
@@ -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);
|
||||
|
||||
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'
|
||||
|
||||
];
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user