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
|
// get pages for overview
|
||||||
$pages = $this->content->getOverview($moduleFilterHandler, $status, true)
|
$pages = $this->content->getOverview($moduleFilterHandler, $status, true, true)
|
||||||
->paginate($perPage);
|
->paginate($perPage);
|
||||||
|
|
||||||
// get homepage - for checking if homepage is set and available
|
// get homepage - for checking if homepage is set and available
|
||||||
|
|||||||
+19
-9
@@ -96,37 +96,41 @@ class Content extends Model
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Is current content draft?
|
* Is current content draft?
|
||||||
*
|
*
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
public function isDraft() {
|
public function isDraft()
|
||||||
|
{
|
||||||
return $this->status == self::STATUS_DRAFT;
|
return $this->status == self::STATUS_DRAFT;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Is current content visible for all visitors?
|
* Is current content visible for all visitors?
|
||||||
*
|
*
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
public function isPublic() {
|
public function isPublic()
|
||||||
|
{
|
||||||
return $this->status == self::STATUS_PUBLIC;
|
return $this->status == self::STATUS_PUBLIC;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Is current content visible only for logged users?
|
* Is current content visible only for logged users?
|
||||||
*
|
*
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
public function isProtected() {
|
public function isProtected()
|
||||||
|
{
|
||||||
return $this->status == self::STATUS_PROTECTED;
|
return $this->status == self::STATUS_PROTECTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Is current content visible for logged user OR for everyone?
|
* Is current content visible for logged user OR for everyone?
|
||||||
*
|
*
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
public function isVisible() {
|
public function isVisible()
|
||||||
|
{
|
||||||
return $this->isPublic() || $this->isProtected();
|
return $this->isPublic() || $this->isProtected();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -157,7 +161,7 @@ class Content extends Model
|
|||||||
*
|
*
|
||||||
* @return
|
* @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')
|
$query = DB::table('contents')
|
||||||
->select('contents.*', 'modules.name AS module_name')
|
->select('contents.*', 'modules.name AS module_name')
|
||||||
@@ -177,6 +181,12 @@ class Content extends Model
|
|||||||
->addSelect('users.email AS author_email');
|
->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
|
// add filtering by status
|
||||||
if (in_array($status, ContentStatuses::getSimple())) {
|
if (in_array($status, ContentStatuses::getSimple())) {
|
||||||
$query = $query->where('contents.status', $status);
|
$query = $query->where('contents.status', $status);
|
||||||
|
|||||||
Vendored
+21
-28
@@ -99,38 +99,31 @@ code {
|
|||||||
left: 0;
|
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 {
|
#appearance .title-photo img {
|
||||||
max-height: 10em;
|
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 {
|
.red {
|
||||||
color: red;
|
color: red;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,11 +19,11 @@ return [
|
|||||||
'field_published_to' => 'Published to',
|
'field_published_to' => 'Published to',
|
||||||
'successfullyCreated' => 'Page successfully created',
|
'successfullyCreated' => 'Page successfully created',
|
||||||
'noPagesAvailable' => 'No static pages available. Try to create one first.',
|
'noPagesAvailable' => 'No static pages available. Try to create one first.',
|
||||||
'viewPage' => 'View page on web',
|
'viewPage' => 'View',
|
||||||
'deletePage' => 'Delete page (ireversible!)',
|
'deletePage' => 'Delete',
|
||||||
'makePublic' => 'Publish page',
|
'makePublic' => 'Publish',
|
||||||
'makeProtected' => 'Publish page only for logged users',
|
'makeProtected' => 'Logged users only',
|
||||||
'makeDraft' => 'Disable page and make it draft',
|
'makeDraft' => 'Make draft',
|
||||||
'invalidStatus' => 'Cannot change status to something undefined.',
|
'invalidStatus' => 'Cannot change status to something undefined.',
|
||||||
'statusChanged' => 'Status successfully changed.',
|
'statusChanged' => 'Status successfully changed.',
|
||||||
'invalidPage' => 'Specified page does not exist.',
|
'invalidPage' => 'Specified page does not exist.',
|
||||||
@@ -39,5 +39,8 @@ return [
|
|||||||
'noParentPage' => ' -- No parent page -- ',
|
'noParentPage' => ' -- No parent page -- ',
|
||||||
'uploadTitleImage' => 'Upload title image',
|
'uploadTitleImage' => 'Upload title image',
|
||||||
'noHomepage' => 'You have not set up your homepage yet, or your current homepage is draft! Try to select another one.',
|
'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)
|
||||||
@forelse($pages as $page)
|
<div class="page callout page {{$page->status}} row">
|
||||||
<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
|
|
||||||
|
|
||||||
|
<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="author">{{$page->author_name}}</span>,
|
||||||
<span class="date">{{date('d.m.Y', strtotime($page->created_at))}}</span>
|
<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>
|
|
||||||
|
|
||||||
<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>
|
</div>
|
||||||
@empty
|
|
||||||
<em>@lang('admin/contents.noPagesAvailable')</em>
|
<div class="column large-1">
|
||||||
@endforelse
|
@if ($page->title_photo)
|
||||||
</div>
|
<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