FEATURE: minor UI tweaks in template settings + add events into OnePage base template
This commit is contained in:
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
namespace Templates\Base\OnePage\Events;
|
||||
|
||||
use App\Models\Content;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
|
||||
class AddPageIntoHomepage {
|
||||
use SerializesModels;
|
||||
/**
|
||||
* @var Content
|
||||
*/
|
||||
public $page;
|
||||
|
||||
public function __construct(Content $page)
|
||||
{
|
||||
$this->page = $page;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
namespace Templates\Base\OnePage\Events;
|
||||
|
||||
use App\Models\Content;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
|
||||
class RemovePageFromHomepage {
|
||||
use SerializesModels;
|
||||
/**
|
||||
* @var Content
|
||||
*/
|
||||
public $page;
|
||||
|
||||
public function __construct(Content $page)
|
||||
{
|
||||
$this->page = $page;
|
||||
}
|
||||
}
|
||||
@@ -4,6 +4,7 @@ namespace Templates\Base\OnePage\Handlers;
|
||||
use App\Handlers\Contracts\TemplateHandler;
|
||||
use App\Helpers\PageRenderer;
|
||||
use App\Helpers\Settings;
|
||||
use App\Models\ActionLogType;
|
||||
use App\Models\Content;
|
||||
use App\Models\Module;
|
||||
use App\Models\User;
|
||||
@@ -58,13 +59,14 @@ abstract class OnePage implements TemplateHandler
|
||||
// create real content from pages
|
||||
$pagesRaw = $pagesInTemplates = [];
|
||||
foreach ($pages as $page) {
|
||||
// save pages as models only
|
||||
$pagesRaw[$page->url] = $page;
|
||||
|
||||
// save rendered pages
|
||||
$pagesInTemplates[$page->url] = PageRenderer::render($page)
|
||||
->render();
|
||||
}
|
||||
|
||||
// dd($pagesRaw);
|
||||
|
||||
// return pages into template
|
||||
return ['pagesHtml' => $pagesInTemplates, 'pagesRaw' => $pagesRaw];
|
||||
}
|
||||
@@ -74,14 +76,37 @@ abstract class OnePage implements TemplateHandler
|
||||
|
||||
/**
|
||||
* Install module
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public static function install()
|
||||
{
|
||||
// register action log types
|
||||
|
||||
$types = [
|
||||
[
|
||||
'string_id' => 'pageRemovedFromHomepage',
|
||||
'name' => 'template::admin/setHomepage.events.names.removedPage',
|
||||
'value' => 'template::admin/setHomepage.events.descriptions.removedPage',
|
||||
],
|
||||
[
|
||||
'string_id' => 'pageAddedIntoHomepage',
|
||||
'name' => 'template::admin/setHomepage.events.names.addedPage',
|
||||
'value' => 'template::admin/setHomepage.events.descriptions.addedPage',
|
||||
],
|
||||
|
||||
];
|
||||
foreach ($types as $type) {
|
||||
ActionLogType::create($type);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Uninstall template
|
||||
*
|
||||
* @param Module $template
|
||||
*/
|
||||
public static function uninstall(Module $template)
|
||||
{
|
||||
ActionLogType::whereIn('string_id', ['pageRemovedFromHomepage', 'pageAddedIntoHomepage'])
|
||||
->delete();
|
||||
}
|
||||
}
|
||||
@@ -4,7 +4,11 @@ namespace Templates\Base\OnePage\Http\Controllers\Admin;
|
||||
use App\Helpers\Settings;
|
||||
use App\Http\Controllers\Admin\Controller;
|
||||
use App\Models\Content;
|
||||
use App\Models\Settings as SettingsModel;
|
||||
use Illuminate\Support\Facades\Event;
|
||||
use Mcamara\LaravelLocalization\Facades\LaravelLocalization;
|
||||
use Templates\Base\OnePage\Events\AddPageIntoHomepage;
|
||||
use Templates\Base\OnePage\Events\RemovePageFromHomepage;
|
||||
use Templates\Base\OnePage\Handlers\OnePage;
|
||||
|
||||
class SetHomepage extends Controller
|
||||
@@ -79,19 +83,19 @@ class SetHomepage extends Controller
|
||||
{
|
||||
$page = Content::findOrFail($id);
|
||||
|
||||
if ($page->is_template) {
|
||||
if ($page->is_homepage) {
|
||||
return redirect()
|
||||
->back()
|
||||
->with('error', trans('template::admin/setHomepage.cannotSetHomepageAsPartOfHomepage'));
|
||||
}
|
||||
|
||||
// try to get page config
|
||||
$settingsEntry = \App\Models\Settings::where('key', OnePage::HOMEPAGE_PAGES_SETTINGS_KEY)
|
||||
->where('language', LaravelLocalization::getCurrentLocale())
|
||||
->first();
|
||||
$settingsEntry = SettingsModel::where('key', OnePage::HOMEPAGE_PAGES_SETTINGS_KEY)
|
||||
->where('language', LaravelLocalization::getCurrentLocale())
|
||||
->first();
|
||||
|
||||
if (!$settingsEntry) {
|
||||
$settingsEntry = new \App\Models\Settings();
|
||||
$settingsEntry = new SettingsModel();
|
||||
$settingsEntry->language = LaravelLocalization::getCurrentLocale();
|
||||
$settingsEntry->key = OnePage::HOMEPAGE_PAGES_SETTINGS_KEY;
|
||||
$usedPagesIds = [];
|
||||
@@ -99,6 +103,7 @@ class SetHomepage extends Controller
|
||||
$usedPagesIds = (array)json_decode($settingsEntry->value);
|
||||
}
|
||||
|
||||
// add page into list of used pages - if not already there
|
||||
if (!in_array($id, $usedPagesIds)) {
|
||||
$usedPagesIds[] = $id;
|
||||
}
|
||||
@@ -106,6 +111,9 @@ class SetHomepage extends Controller
|
||||
$settingsEntry->value = json_encode($usedPagesIds);
|
||||
$settingsEntry->save();
|
||||
|
||||
// inform other application parts about this event
|
||||
Event::fire(new AddPageIntoHomepage($page));
|
||||
|
||||
return redirect()
|
||||
->back()
|
||||
->with('success', trans('template::admin/setHomepage.successfullyAdded'));
|
||||
@@ -122,6 +130,8 @@ class SetHomepage extends Controller
|
||||
{
|
||||
$pages = (array)json_decode(Settings::get(OnePage::HOMEPAGE_PAGES_SETTINGS_KEY, '{}'));
|
||||
|
||||
$page = Content::findOrFail($id);
|
||||
|
||||
if (!in_array($id, $pages)) {
|
||||
return redirect()
|
||||
->back()
|
||||
@@ -135,9 +145,12 @@ class SetHomepage extends Controller
|
||||
$pages = array_values($pages);
|
||||
|
||||
// update in database
|
||||
\App\Models\Settings::where('key', OnePage::HOMEPAGE_PAGES_SETTINGS_KEY)
|
||||
->where('language', LaravelLocalization::getCurrentLocale())
|
||||
->update(['value' => json_encode($pages)]);
|
||||
SettingsModel::where('key', OnePage::HOMEPAGE_PAGES_SETTINGS_KEY)
|
||||
->where('language', LaravelLocalization::getCurrentLocale())
|
||||
->update(['value' => json_encode($pages)]);
|
||||
|
||||
// inform other application parts about this event
|
||||
Event::fire(new RemovePageFromHomepage($page));
|
||||
|
||||
return redirect()
|
||||
->back()
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
namespace Templates\Base\OnePage\Listeners;
|
||||
|
||||
use App\Listeners\Logger;
|
||||
use Templates\Base\OnePage\Events\AddPageIntoHomepage;
|
||||
|
||||
class LogAddingPage extends Logger
|
||||
{
|
||||
public function handle(AddPageIntoHomepage $event)
|
||||
{
|
||||
$parameters = [
|
||||
'id' => $event->page->id,
|
||||
'title' => $event->page->title
|
||||
];
|
||||
|
||||
$this->saveLog($parameters);
|
||||
}
|
||||
|
||||
protected function getName()
|
||||
{
|
||||
return 'pageAddedIntoHomepage';
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
namespace Templates\Base\OnePage\Listeners;
|
||||
|
||||
use App\Listeners\Logger;
|
||||
use Templates\Base\OnePage\Events\RemovePageFromHomepage;
|
||||
|
||||
class LogRemovingPage extends Logger
|
||||
{
|
||||
public function handle(RemovePageFromHomepage $event)
|
||||
{
|
||||
$parameters = [
|
||||
'id' => $event->page->id,
|
||||
'title' => $event->page->title
|
||||
];
|
||||
|
||||
$this->saveLog($parameters);
|
||||
}
|
||||
|
||||
protected function getName()
|
||||
{
|
||||
return 'pageRemovedFromHomepage';
|
||||
}
|
||||
}
|
||||
@@ -3,11 +3,17 @@ namespace Templates\Base\OnePage\Providers;
|
||||
|
||||
use App\Events\SetHomepage;
|
||||
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
|
||||
use Templates\Base\OnePage\Events\AddPageIntoHomepage;
|
||||
use Templates\Base\OnePage\Events\RemovePageFromHomepage;
|
||||
use Templates\Base\OnePage\Listeners\HomepageChanged;
|
||||
use Templates\Base\OnePage\Listeners\LogAddingPage;
|
||||
use Templates\Base\OnePage\Listeners\LogRemovingPage;
|
||||
|
||||
class EventProvider extends ServiceProvider
|
||||
{
|
||||
protected $listen = [
|
||||
SetHomepage::class => [HomepageChanged::class]
|
||||
SetHomepage::class => [HomepageChanged::class],
|
||||
AddPageIntoHomepage::class => [LogAddingPage::class],
|
||||
RemovePageFromHomepage::class => [LogRemovingPage::class],
|
||||
];
|
||||
}
|
||||
@@ -10,6 +10,16 @@ return [
|
||||
'usedPages' => 'Used pages',
|
||||
'notUsedPages' => 'Not used pages',
|
||||
'reallyRemovePage' => 'Do you really want to remove this page from homepage?',
|
||||
'cannotSetHomepageAsPartOfHomepage' => 'Cannot set currently set homepage as one of homepage pages.'
|
||||
|
||||
'cannotSetHomepageAsPartOfHomepage' => 'Cannot set currently set homepage as one of homepage pages.',
|
||||
'addToHomepage' => 'Add page into homepage',
|
||||
'events' => [
|
||||
'names' => [
|
||||
'removedPage' => 'Removed page from homepage',
|
||||
'addedPage' => 'Added page into homepage'
|
||||
],
|
||||
'descriptions' => [
|
||||
'removedPage' => 'Removed page #:id ":title" from homepage.',
|
||||
'addedPage' => 'Added page #:id ":title" into homepage.'
|
||||
]
|
||||
]
|
||||
];
|
||||
@@ -14,10 +14,8 @@ Improvement: http://www.html5rocks.com/en/tutorials/dnd/basics/
|
||||
|
||||
@include('admin.snippets.card', [
|
||||
'type' => 'primary',
|
||||
'title' => $homepage->title,
|
||||
'body' => '
|
||||
<p><small>'.trans($homepage->module_name).'</small></p>
|
||||
<p>'.str_limit(strip_tags($homepage->content), 200).'</p>',
|
||||
'title' => $homepage->title.' <small>'.trans($homepage->module_name).'</small>',
|
||||
'body' => '<p>'.str_limit(strip_tags($homepage->content), 200).'</p>',
|
||||
'footerClass' => 'text-right',
|
||||
'footer' => '<a href="'.route('content.edit', ['id' => $homepage->id]).'" class="btn btn-secondary btn-sm"><i class="fa fa-fw fa-pencil"></i></a>'
|
||||
])
|
||||
@@ -33,10 +31,8 @@ Improvement: http://www.html5rocks.com/en/tutorials/dnd/basics/
|
||||
|
||||
|
||||
@include('admin.snippets.card', [
|
||||
'title' => $allPages[$pageId]->title,
|
||||
'body' => '
|
||||
<p><small>'.trans($allPages[$pageId]->module_name).'</small></p>
|
||||
<p>'.str_limit(strip_tags($allPages[$pageId]->content), 200).'</p>',
|
||||
'title' => $allPages[$pageId]->title.' <small>'.trans($allPages[$pageId]->module_name).'</small>',
|
||||
'body' => '<p>'.str_limit(strip_tags($allPages[$pageId]->content), 200).'</p>',
|
||||
'footerClass' => 'text-right',
|
||||
'footer' => '
|
||||
<a href="'.route('content.edit', ['id' => $allPages[$pageId]->id]).'" class="btn btn-secondary btn-sm"><i class="fa fa-fw fa-pencil"></i></a>
|
||||
@@ -55,21 +51,25 @@ Improvement: http://www.html5rocks.com/en/tutorials/dnd/basics/
|
||||
<div class="card card-default">
|
||||
<div class="card-header">
|
||||
<div class="header-block">
|
||||
<p class="title">{{$page->title}}</p>
|
||||
<p class="title">{{$page->title}} <small>@lang($page->module_name)</small></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-block">
|
||||
<p>
|
||||
<small>(@lang($page->module_name))</small>
|
||||
</p>
|
||||
<p>{{str_limit(strip_tags($page->content), 100)}}</p>
|
||||
{{str_limit(strip_tags($page->content), 100)}}
|
||||
</div>
|
||||
<div class="card-footer text-right">
|
||||
<a href="{{route('content.edit', ['id' => $page->id])}}"
|
||||
class="btn btn-secondary btn-sm"><i
|
||||
class="fa fa-fw fa-pencil"></i></a>
|
||||
@if(!$page->is_homepage)
|
||||
<a href="{{route('content.setHomepage', ['id' => $page->id])}}"
|
||||
class="btn btn-secondary confirm btn-sm"
|
||||
data-toggle="tooltip" title="@lang('admin/contents.setHomepage')">
|
||||
<i class="fa fa-home"></i>
|
||||
</a>
|
||||
@endif
|
||||
<a href="{{route('template.homepage.addPage', ['id' => $page->id])}}"
|
||||
class="btn btn-sm btn-primary"><i class="fa green fa-fw fa-plus"></i></a>
|
||||
class="btn btn-sm btn-primary" data-toggle="tooltip" title="@lang('template::admin/setHomepage.addToHomepage')"><i class="fa green fa-fw fa-plus"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
@empty
|
||||
|
||||
@@ -31,8 +31,13 @@ class Handler extends OnePage
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Install template
|
||||
*/
|
||||
public static function install()
|
||||
{
|
||||
parent::install();
|
||||
|
||||
try {
|
||||
Artisan::call('install-module', ['name' => 'StaticPages']);
|
||||
} catch (\Exception $e) {
|
||||
|
||||
Reference in New Issue
Block a user