From e262473f3658febc2a4833e5eaf843d93cf4d310 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Kv=C3=A1=C4=8Dek?= Date: Mon, 24 Apr 2017 00:01:03 +0200 Subject: [PATCH] FEATURE #2042: refactorize widgets --- app/CMS/Helpers/WidgetAreas.php | 15 ++- app/CMS/Repositories/Widgets/Widget.php | 21 +++- app/CMS/Repositories/Widgets/WidgetArea.php | 55 +++++++++ app/CMS/Widgets/Menu/Presenters/Menu.php | 7 +- app/Events/EditWidgetArea.php | 4 +- .../Widgets/Areas/CreateNewWidgetArea.php | 32 +++-- .../Admin/Widgets/Areas/EditWidgetArea.php | 59 +++++---- .../Admin/Widgets/CreateNewWidget.php | 30 ++--- .../Controllers/Admin/Widgets/EditWidget.php | 54 ++++----- .../Admin/Widgets/WidgetsOverview.php | 2 +- app/Http/Controllers/Visitor/Homepage.php | 2 +- app/Http/routes/admin/widgets.php | 26 ++-- app/Models/Widgets/ModelTraits/Widget.php | 41 ------- app/Models/Widgets/ModelTraits/WidgetArea.php | 24 ---- app/Models/Widgets/Widget.php | 5 + app/Models/Widgets/WidgetArea.php | 11 +- app/Providers/AppServiceProvider.php | 1 - .../admin/widgets/area/overview.blade.php | 112 ++++++++++-------- .../admin/widgets/htmlCode/edit.blade.php | 6 + .../views/admin/widgets/menu/edit.blade.php | 9 +- .../views/admin/widgets/menu/form.blade.php | 6 +- .../views/admin/widgets/overview.blade.php | 97 ++++++++------- .../widgets/snippets/commonForm.blade.php | 6 + 23 files changed, 336 insertions(+), 289 deletions(-) create mode 100644 app/CMS/Repositories/Widgets/WidgetArea.php delete mode 100644 app/Models/Widgets/ModelTraits/Widget.php delete mode 100644 app/Models/Widgets/ModelTraits/WidgetArea.php diff --git a/app/CMS/Helpers/WidgetAreas.php b/app/CMS/Helpers/WidgetAreas.php index 9b277701..d102c94d 100644 --- a/app/CMS/Helpers/WidgetAreas.php +++ b/app/CMS/Helpers/WidgetAreas.php @@ -1,6 +1,8 @@ increment('viewed'); + + $widgets = Cache::remember('widget-area-' . $uniqueCode, setting('widgetCacheLifetime', 5), function () use ($uniqueCode) { $widgetArea = new WidgetArea(); return $widgetArea->getWidgets($uniqueCode) ->get(); }); - WidgetArea::where('code', $uniqueCode) - ->increment('viewed'); - self::saveRenderedWidgetArea($widgets); } @@ -44,7 +47,7 @@ class WidgetAreas } $widgets = Cache::remember('widgets', setting('widgetCacheLifetime', 5), function () { - $widgetArea = new WidgetArea(); + $widgetArea = app(WidgetAreaRepository::class); return $widgetArea->getWidgets() ->get(); }); @@ -58,7 +61,7 @@ class WidgetAreas * * @param $uniqueCode * - * @return mixed + * @return void */ public static function render($uniqueCode) { diff --git a/app/CMS/Repositories/Widgets/Widget.php b/app/CMS/Repositories/Widgets/Widget.php index bb924ce4..84299373 100644 --- a/app/CMS/Repositories/Widgets/Widget.php +++ b/app/CMS/Repositories/Widgets/Widget.php @@ -1,4 +1,5 @@ description = $data['description']; $widget->container_class = $data['containerClass']; $widget->container_id = empty($data['containerId']) ? null : $data['containerId']; - $widget->settings = json_encode(call_user_func([$widgetType->handler, 'save'], $request)); + $widget->settings = call_user_func([$widgetType->handler, 'save'], $request); // save into database $widget->save(); @@ -30,4 +31,22 @@ class Widget return $widget; } + + public function edit(WidgetModel $widget, Request $request) + { + // update name + $widget->name = $request->name; + $widget->container_class = $request->containerClass; + $widget->container_id = empty($request->containerId) ? null : $request->containerId; + $widget->description = $request->description; + + // try to save this widget + $widget->settings = call_user_func([$widget->widget_type_handler, 'save'], $request); + + // save into database + $widget->save(); + + // fire event with editing widget + Event::fire(new \App\Events\EditWidget($widget)); + } } \ No newline at end of file diff --git a/app/CMS/Repositories/Widgets/WidgetArea.php b/app/CMS/Repositories/Widgets/WidgetArea.php new file mode 100644 index 00000000..a278549f --- /dev/null +++ b/app/CMS/Repositories/Widgets/WidgetArea.php @@ -0,0 +1,55 @@ +join('widget_in_widget_area', 'widget_in_widget_area.widget_id', '=', 'widgets.id') + ->join('widget_areas', 'widget_in_widget_area.widget_area_id', '=', 'widget_areas.id') + ->where('language', LaravelLocalization::getCurrentLocale()) + ->orderBy('widget_in_widget_area.position'); + if (!$uniqueCode) { + $widgets = $widgets->where('widget_areas.viewed', '>=', setting('preloadFrequentedWidgetAreasTreshold', 10)); + } else { + $widgets = $widgets->where('code', $uniqueCode); + } + + return $widgets; + } + + public function update(\App\Models\Widgets\WidgetArea $area, Request $request) { + $area->name = $request->name; + $area->description = $request->description; + $area->save(); + + // fire event with new widget area + Event::fire(new \App\Events\EditWidgetArea($area)); + } + + /** + * Create new instance of widget area + * + * @param Request $request + */ + public function create(Request $request) + { + $area = WidgetAreaModel::create([ + 'code' => $request->code, + 'name' => $request->name, + 'description' => $request->description + ]); + + // fire event with new widget area + Event::fire(new CreateNewWidgetArea($area)); + } +} \ No newline at end of file diff --git a/app/CMS/Widgets/Menu/Presenters/Menu.php b/app/CMS/Widgets/Menu/Presenters/Menu.php index c5617773..aa6b9cb3 100644 --- a/app/CMS/Widgets/Menu/Presenters/Menu.php +++ b/app/CMS/Widgets/Menu/Presenters/Menu.php @@ -84,13 +84,12 @@ class Menu implements WidgetRenderer // get list of all pages $pages = $content->getOverview() ->get(); - $widget->settings = new \stdClass(); - $widget->settings->links = []; return view('admin.widgets.menu.new', [ 'type' => $type, 'widget' => $widget, 'pages' => $pages, + 'links' => [] ]); } @@ -124,8 +123,6 @@ class Menu implements WidgetRenderer return $a->order - $b->order; }); - $widget->settings->links = (object)$links; - - return view('admin.widgets.menu.edit', ['widget' => $widget, 'pages' => $pages]); + return view('admin.widgets.menu.edit', ['widget' => $widget, 'pages' => $pages, 'links' => (object)$links]); } } \ No newline at end of file diff --git a/app/Events/EditWidgetArea.php b/app/Events/EditWidgetArea.php index 8aa5642d..c069772c 100644 --- a/app/Events/EditWidgetArea.php +++ b/app/Events/EditWidgetArea.php @@ -2,10 +2,8 @@ namespace App\Events; -use App\Events\Event; -use App\Models\WidgetArea; +use App\Models\Widgets\WidgetArea; use Illuminate\Queue\SerializesModels; -use Illuminate\Contracts\Broadcasting\ShouldBroadcast; class EditWidgetArea extends Event { diff --git a/app/Http/Controllers/Admin/Widgets/Areas/CreateNewWidgetArea.php b/app/Http/Controllers/Admin/Widgets/Areas/CreateNewWidgetArea.php index a9ec44e3..636b469e 100644 --- a/app/Http/Controllers/Admin/Widgets/Areas/CreateNewWidgetArea.php +++ b/app/Http/Controllers/Admin/Widgets/Areas/CreateNewWidgetArea.php @@ -2,19 +2,34 @@ namespace App\Http\Controllers\Admin\Widgets\Areas; +use App\CMS\Repositories\Widgets\WidgetArea as WidgetAreaRepository; use App\Http\Controllers\Admin\Controller; use App\Http\Requests\NewWidgetAreaRequest; use App\Models\Widgets\WidgetArea; -use Illuminate\Support\Facades\Event; class CreateNewWidgetArea extends Controller { + /** + * @var WidgetAreaRepository + */ + private $widgetAreaRepository; + + /** + * CreateNewWidgetArea constructor. + * + * @param WidgetAreaRepository $widgetAreaRepository + */ + public function __construct(WidgetAreaRepository $widgetAreaRepository) + { + $this->widgetAreaRepository = $widgetAreaRepository; + } + /** * Form for new widget area * * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View */ - public function getNew() + public function create() { return view('admin.widgets.area.new', ['area' => new WidgetArea()]); } @@ -24,18 +39,9 @@ class CreateNewWidgetArea extends Controller * * @return \Illuminate\Http\RedirectResponse */ - public function postNew(NewWidgetAreaRequest $request) + public function store(NewWidgetAreaRequest $request) { - $parameters = [ - 'code' => $request->code, - 'name' => $request->name, - 'description' => $request->description - ]; - - $area = WidgetArea::create($parameters); - - // fire event with new widget area - Event::fire(new \App\Events\CreateNewWidgetArea($area)); + $this->widgetAreaRepository->create($request); // redirect with success notification return redirect() diff --git a/app/Http/Controllers/Admin/Widgets/Areas/EditWidgetArea.php b/app/Http/Controllers/Admin/Widgets/Areas/EditWidgetArea.php index a512334c..57529865 100644 --- a/app/Http/Controllers/Admin/Widgets/Areas/EditWidgetArea.php +++ b/app/Http/Controllers/Admin/Widgets/Areas/EditWidgetArea.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers\Admin\Widgets\Areas; +use App\CMS\Repositories\Widgets\WidgetArea as WidgetAreaRepository; use App\Http\Controllers\Admin\Controller; use App\Http\Requests\EditWidgetAreaRequest; use App\Models\Widgets\Widget; @@ -13,22 +14,37 @@ use Mcamara\LaravelLocalization\Facades\LaravelLocalization; class EditWidgetArea extends Controller { + /** + * @var WidgetAreaRepository + */ + private $widgetAreaRepository; + + /** + * EditWidgetArea constructor. + * + * @param WidgetAreaRepository $widgetAreaRepository + */ + public function __construct(WidgetAreaRepository $widgetAreaRepository) + { + $this->widgetAreaRepository = $widgetAreaRepository; + } + /** * Display form for editing given widget area * - * @param $id + * @param WidgetArea $widgetArea * * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View + * */ - public function getEdit($id) + public function edit(WidgetArea $widgetArea) { - $area = WidgetArea::findOrFail($id); - $associatedWidgetIds = WidgetInWidgetArea::getWidgetIdsFromArea($area->id); + $associatedWidgetIds = WidgetInWidgetArea::getWidgetIdsFromArea($widgetArea->id); $widgets = Widget::where('language', LaravelLocalization::getCurrentLocale()) ->paginate(25); return view('admin.widgets.area.edit', [ - 'area' => $area, + 'area' => $widgetArea, 'widgets' => $widgets, 'associatedWidgetIds' => $associatedWidgetIds ]); @@ -36,26 +52,14 @@ class EditWidgetArea extends Controller /** * @param EditWidgetAreaRequest $request - * @param $id + * @param WidgetArea $widgetArea * * @return \Illuminate\Http\RedirectResponse + * */ - public function postEdit(EditWidgetAreaRequest $request, $id) + public function update(EditWidgetAreaRequest $request, WidgetArea $widgetArea) { - try { - $area = WidgetArea::findOrFail($id); - } catch (ModelNotFoundException $e) { - return $this->invalidArea(); - } - - $area->name = $request->name; - $area->description = $request->description; - - $area->timestamps = true; - $area->save(); - - // fire event with new widget area - Event::fire(new \App\Events\EditWidgetArea($area)); + $this->widgetAreaRepository->update($widgetArea, $request); return redirect() ->route('widgetareas.overview') @@ -65,21 +69,14 @@ class EditWidgetArea extends Controller /** * Hard deletes widget area * - * @param $id + * @param WidgetArea $widgetArea * * @return \Illuminate\Http\RedirectResponse */ - public function deleteArea($id) + public function delete(WidgetArea $widgetArea) { - // try to find area - try { - $area = WidgetArea::findOrFail($id); - } catch (ModelNotFoundException $e) { - return $this->invalidArea(); - } - // check if widget area is deletable - if (!$area->deletable) { + if (!$widgetArea->deletable) { return redirect() ->back() ->with('error', trans('admin/widgetAreas.notDeletableArea')); diff --git a/app/Http/Controllers/Admin/Widgets/CreateNewWidget.php b/app/Http/Controllers/Admin/Widgets/CreateNewWidget.php index f50f749b..1195deac 100644 --- a/app/Http/Controllers/Admin/Widgets/CreateNewWidget.php +++ b/app/Http/Controllers/Admin/Widgets/CreateNewWidget.php @@ -23,14 +23,13 @@ class CreateNewWidget extends Controller /** * Form for new widget area * - * @param $type + * @param WidgetType $widgetType * * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View + * */ - public function getNew($type) + public function getNew(WidgetType $widgetType) { - $widgetType = WidgetType::findOrFail($type); - $presenter = call_user_func([$widgetType->handler, 'getPresenter']); return call_user_func([$presenter, 'renderAddForm'], $widgetType); @@ -40,23 +39,22 @@ class CreateNewWidget extends Controller * Create new instance of given widget type * * @param NewWidgetRequest $request - * @param $type + * + * @param WidgetType $widgetType * * @return \Illuminate\Http\RedirectResponse */ - public function postNew(NewWidgetRequest $request, $type) + public function postNew(NewWidgetRequest $request, WidgetType $widgetType) { - $widgetType = WidgetType::findOrFail($type); - // try to save this widget try { $this->widget->createNew($widgetType, $request); } catch (MissingParameterException $e) { // user omitted some value - return $this->invalidWidget($type, $e->getMessage()); - // } catch (\Exception $e) { - // // something went wrong - // return $this->invalidWidget($type, trans('admin/widgets.cannotSave', ['exception' => $e->getMessage()])); + return redirect() + ->back() + ->withInput() + ->with('error', $e->getMessage()); } // redirect with success notification @@ -64,12 +62,4 @@ class CreateNewWidget extends Controller ->route('widgets.overview') ->with('success', trans('admin/widgets.successfullyCreated')); } - - private function invalidWidget($widgetType, $error) - { - return redirect() - ->route('widgets.new', ['type' => $widgetType]) - ->withInput() - ->with('error', $error); - } } diff --git a/app/Http/Controllers/Admin/Widgets/EditWidget.php b/app/Http/Controllers/Admin/Widgets/EditWidget.php index 81ca9ad2..0548b895 100644 --- a/app/Http/Controllers/Admin/Widgets/EditWidget.php +++ b/app/Http/Controllers/Admin/Widgets/EditWidget.php @@ -1,26 +1,39 @@ widgetRepository = $widgetRepository; + } + /** * Render edit form * - * @param $id + * @param Widget $widget * * @return mixed */ - public function getEdit($id) + public function getEdit(Widget $widget) { - $widget = Widget::findOrFail($id); - $widget->settings = json_decode($widget->settings); - $presenter = call_user_func([$widget->widget_type_handler, 'getPresenter']); return call_user_func([$presenter, 'renderEditForm'], $widget); @@ -30,24 +43,14 @@ class EditWidget extends Controller * Save changes into database * * @param EditWidgetRequest $request - * @param $widget + * @param Widget $widget * * @return \Illuminate\Http\RedirectResponse */ - public function postEdit(EditWidgetRequest $request, $widget) + public function postEdit(EditWidgetRequest $request, Widget $widget) { - // create new widget - $widget = Widget::findOrFail($widget); - - // update name - $widget->name = $request->name; - $widget->container_class = $request->containerClass; - $widget->container_id = empty($request->containerId) ? null : $request->containerId; - $widget->description = $request->description; - - // try to save this widget try { - $widget->settings = json_encode(call_user_func([$widget->widget_type_handler, 'save'], $request)); + $this->widgetRepository->edit($widget, $request); } catch (MissingParameterException $e) { // user omitted some value return $this->invalidWidget($e->getMessage()); @@ -56,12 +59,6 @@ class EditWidget extends Controller return $this->invalidWidget(trans('admin/widgets.cannotSave', ['exception' => $e->getMessage()])); } - // save into database - $widget->save(); - - // fire event with editing widget - Event::fire(new \App\Events\EditWidget($widget)); - // redirect with success notification return redirect() ->back() @@ -71,15 +68,12 @@ class EditWidget extends Controller /** * Deletes widget * - * @param $id + * @param Widget $widget * * @return \Illuminate\Http\RedirectResponse */ - public function deleteWidget($id) + public function deleteWidget(Widget $widget) { - // create new widget - $widget = Widget::findOrFail($id); - // check if widget area is deletable if (!$widget->deletable) { return redirect() diff --git a/app/Http/Controllers/Admin/Widgets/WidgetsOverview.php b/app/Http/Controllers/Admin/Widgets/WidgetsOverview.php index 4f95be2c..4f7abf5d 100644 --- a/app/Http/Controllers/Admin/Widgets/WidgetsOverview.php +++ b/app/Http/Controllers/Admin/Widgets/WidgetsOverview.php @@ -7,7 +7,7 @@ use Mcamara\LaravelLocalization\Facades\LaravelLocalization; class WidgetsOverview extends Controller { - public function getOverview() + public function index() { $widgets = Widget::where('language', LaravelLocalization::getCurrentLocale()) ->paginate(25); diff --git a/app/Http/Controllers/Visitor/Homepage.php b/app/Http/Controllers/Visitor/Homepage.php index 38b77969..06e2b6a1 100644 --- a/app/Http/Controllers/Visitor/Homepage.php +++ b/app/Http/Controllers/Visitor/Homepage.php @@ -10,7 +10,7 @@ class Homepage extends ContentPage { // try to find some homepage $contentModel = $this->content; - $page = Cache::remember('hp', setting('homepageCacheLifetime', 5), function () use ($contentModel) { + $page = Cache::remember('homepage', setting('homepageCacheLifetime', 5), function () use ($contentModel) { return $contentModel->getHomepage(); }); diff --git a/app/Http/routes/admin/widgets.php b/app/Http/routes/admin/widgets.php index d10df3fd..a88e0a8f 100644 --- a/app/Http/routes/admin/widgets.php +++ b/app/Http/routes/admin/widgets.php @@ -3,35 +3,35 @@ Route::group(['namespace' => 'Widgets'], function () { // list of all installed widget types - Route::get('widgets/overview', 'WidgetsOverview@getOverview') + Route::get('widgets', 'WidgetsOverview@index') ->name('widgets.overview'); // create new instance of widget of given type - Route::get('widgets/new/{type}', 'CreateNewWidget@getNew') + Route::get('widgets/new/{widgetType}', 'CreateNewWidget@getNew') ->name('widgets.new'); - Route::post('widgets/new/{type}', 'CreateNewWidget@postNew') + Route::post('widgets/new/{widgetType}', 'CreateNewWidget@postNew') ->name('widgets.postNew'); // edit widget settings - Route::get('widgets/edit/{id}', 'EditWidget@getEdit') + Route::get('widgets/edit/{widget}', 'EditWidget@getEdit') ->name('widgets.edit'); // delete widget settings - Route::get('widgets/delete/{id}', 'EditWidget@deleteWidget') + Route::get('widgets/delete/{widget}', 'EditWidget@deleteWidget') ->name('widgets.delete'); - Route::post('widgets/edit/{id}', 'EditWidget@postEdit') + Route::post('widgets/edit/{widget}', 'EditWidget@postEdit') ->name('widgets.postEdit'); // display form for association of widget and widget area Route::get('widgets/associate/{widgetArea}', 'AssociateWidget@getList') ->name('widgets.associate'); - Route::get('widgets/deassociate/{widgetId}/{widgetArea}', 'AssociateWidget@deleteAssociation') + Route::get('widgets/deassociate/{widget}/{widgetArea}', 'AssociateWidget@deleteAssociation') ->name('widgets.deleteAssociation'); - Route::get('widgets/associate/{widgetId}/{widgetArea}', 'AssociateWidget@makeAssociation') + Route::get('widgets/associate/{widget}/{widgetArea}', 'AssociateWidget@makeAssociation') ->name('widgets.makeAssociation'); Route::group(['namespace' => 'Areas'], function () { @@ -39,22 +39,22 @@ Route::group(['namespace' => 'Widgets'], function () { ->name('widgetareas.overview'); // form for new widget area - Route::get('widgets/areas/new', 'CreateNewWidgetArea@getNew') + Route::get('widgets/areas/new', 'CreateNewWidgetArea@create') ->name('widgetareas.new'); // form for new widget area - Route::post('widgets/areas/new', 'CreateNewWidgetArea@postNew') + Route::post('widgets/areas/new', 'CreateNewWidgetArea@store') ->name('widgetareas.postNew'); // edit form for widget area - Route::get('widgets/areas/edit/{id}', 'EditWidgetArea@getEdit') + Route::get('widgets/areas/edit/{widgetArea}', 'EditWidgetArea@edit') ->name('widgetareas.edit'); - Route::post('widgets/areas/edit/{id}', 'EditWidgetArea@postEdit') + Route::post('widgets/areas/edit/{widgetArea}', 'EditWidgetArea@update') ->name('widgetareas.postEdit'); // edit form for widget area - Route::get('widgets/areas/delete/{id}', 'EditWidgetArea@deleteArea') + Route::get('widgets/areas/delete/{widgetArea}', 'EditWidgetArea@delete') ->name('widgetareas.delete'); }); }); diff --git a/app/Models/Widgets/ModelTraits/Widget.php b/app/Models/Widgets/ModelTraits/Widget.php deleted file mode 100644 index 82f1c263..00000000 --- a/app/Models/Widgets/ModelTraits/Widget.php +++ /dev/null @@ -1,41 +0,0 @@ -handler, 'save'], $request); - - // create new widget - $widget = WidgetModel::create([ - 'widget_type_handler' => $widgetType->handler, - 'language' => LaravelLocalization::getCurrentLocale(), - 'user_id' => \Auth::user()->id, - 'name' => $request->name, - 'container_class' => $request->containerClass, - 'container_id' => empty($request->containerId) ? null : $request->containerId, - 'description' => $request->description, - 'settings' => json_encode($settings), - ]); - - // fire event with newly created widget - \Event::fire(new CreateNewWidget($widget)); - - return $widget; - } -} \ No newline at end of file diff --git a/app/Models/Widgets/ModelTraits/WidgetArea.php b/app/Models/Widgets/ModelTraits/WidgetArea.php deleted file mode 100644 index f457fb35..00000000 --- a/app/Models/Widgets/ModelTraits/WidgetArea.php +++ /dev/null @@ -1,24 +0,0 @@ -join('widget_in_widget_area', 'widget_in_widget_area.widget_id', '=', 'widgets.id') - ->join('widget_areas', 'widget_in_widget_area.widget_area_id', '=', 'widget_areas.id') - ->where('language', LaravelLocalization::getCurrentLocale()) - ->orderBy('widget_in_widget_area.position'); - if (!$uniqueCode) { - $widgets = $widgets->where('widget_areas.viewed', '>=', setting('preloadFrequentedWidgetAreasTreshold', 10)); - } else { - $widgets = $widgets->where('code', $uniqueCode); - } - - return $widgets; - } -} \ No newline at end of file diff --git a/app/Models/Widgets/Widget.php b/app/Models/Widgets/Widget.php index fdb27d56..b4f25fff 100644 --- a/app/Models/Widgets/Widget.php +++ b/app/Models/Widgets/Widget.php @@ -22,4 +22,9 @@ class Widget extends Model 'viewed', 'deletable' ]; + + protected $casts = [ + 'settings' => 'object', + 'deletable' => 'boolean', + ]; } \ No newline at end of file diff --git a/app/Models/Widgets/WidgetArea.php b/app/Models/Widgets/WidgetArea.php index 2e32cb5b..d326783a 100644 --- a/app/Models/Widgets/WidgetArea.php +++ b/app/Models/Widgets/WidgetArea.php @@ -3,19 +3,24 @@ namespace App\Models\Widgets; use Illuminate\Database\Eloquent\Model; +use Mcamara\LaravelLocalization\Facades\LaravelLocalization; /** * Class WidgetArea */ class WidgetArea extends Model { - use ModelTraits\WidgetArea; - - public $timestamps = false; + public $timestamps = true; protected $fillable = [ 'name', 'code', 'description', 'deletable' ]; + + public function widgets() + { + return $this->hasMany(Widget::class) + ->where('language', LaravelLocalization::getCurrentLocale()); + } } \ No newline at end of file diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 8e8fa143..e25b2de4 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -122,7 +122,6 @@ 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'); - $registrator->register('recaptcha', 'admin/settings.recaptcha', 'admin.settings.parts.recaptcha'); } /** diff --git a/resources/views/admin/widgets/area/overview.blade.php b/resources/views/admin/widgets/area/overview.blade.php index 6d0d7b65..46b122bd 100644 --- a/resources/views/admin/widgets/area/overview.blade.php +++ b/resources/views/admin/widgets/area/overview.blade.php @@ -6,53 +6,60 @@
@if (count($areas) > 0) - - - - - - - - @foreach($areas as $area) - - - - - + + @endforeach +
@lang('admin/widgetAreas.name')@lang('admin/widgetAreas.uniqueCode')@lang('admin/widgetAreas.description')@lang('admin/widgetAreas.actions')
{{$area->name}}{{$area->code}}{{str_limit($area->description, 100)}} -
- - - - -
-
    -
  • - -
  • -
  • - - -
  • - @if($area->deletable) -
  • - -
  • - @endif +
    +
    + + + + + + + + @foreach($areas as $area) + + + + + - - @endforeach -
    @lang('admin/widgetAreas.name')@lang('admin/widgetAreas.uniqueCode')@lang('admin/widgetAreas.description')@lang('admin/widgetAreas.actions')
    {{$area->name}} + {{$area->code}} + {{str_limit($area->description, 100)}} +
    + + + + +
    +
      +
    • + +
    • +
    • + + +
    • + @if($area->deletable) +
    • + +
    • + @endif -
    -
    -
    -
    +
+
+
+
+
+
@else
@lang('admin/widgetAreas.noEntries') @@ -60,9 +67,16 @@ @endif
-

@lang('admin/widgetAreas.new')

- - @include('admin.widgets.area.form', ['action' => route('widgetareas.postNew'), 'area' => new \App\Models\Widgets\WidgetArea()]) +
+
+
+

@lang('admin/widgetAreas.new')

+
+
+
+ @include('admin.widgets.area.form', ['action' => route('widgetareas.postNew'), 'area' => new \App\Models\Widgets\WidgetArea()]) +
+
diff --git a/resources/views/admin/widgets/htmlCode/edit.blade.php b/resources/views/admin/widgets/htmlCode/edit.blade.php index e91e4a74..71ac1a11 100644 --- a/resources/views/admin/widgets/htmlCode/edit.blade.php +++ b/resources/views/admin/widgets/htmlCode/edit.blade.php @@ -2,6 +2,12 @@ @section('pageHeading', @trans('widgets/htmlCode.edit', ['name' => $widget->name])) +@section('headerButtons') + + + +@endsection + @section('content')
@include('admin.widgets.htmlCode.form', ['action' => route('widgets.postEdit', ['id' => $widget->id])]) diff --git a/resources/views/admin/widgets/menu/edit.blade.php b/resources/views/admin/widgets/menu/edit.blade.php index 5b21f9e9..e5c396ed 100644 --- a/resources/views/admin/widgets/menu/edit.blade.php +++ b/resources/views/admin/widgets/menu/edit.blade.php @@ -2,11 +2,16 @@ @section('pageHeading', @trans('widgets/menu.edit', ['name' => $widget->name])) +@section('headerButtons') + + + +@endsection + @section('content')
@include('admin.widgets.menu.form', ['formAction' => route('widgets.postEdit', ['id' => $widget->id])]) -

@lang('widgets/menu.preview')

@@ -14,5 +19,5 @@ @widgetPreview($widget)
-@stop +@endsection diff --git a/resources/views/admin/widgets/menu/form.blade.php b/resources/views/admin/widgets/menu/form.blade.php index ad5ffece..9d9a1215 100644 --- a/resources/views/admin/widgets/menu/form.blade.php +++ b/resources/views/admin/widgets/menu/form.blade.php @@ -1,5 +1,5 @@
- + @include('admin.widgets.snippets.commonForm') @@ -8,7 +8,7 @@

@lang('widgets/menu.addedPages')

+ +
- {!! $widgets->render() !!} @else
@lang('admin/widgets.noEntries') diff --git a/resources/views/admin/widgets/snippets/commonForm.blade.php b/resources/views/admin/widgets/snippets/commonForm.blade.php index 7224649b..f4dab661 100644 --- a/resources/views/admin/widgets/snippets/commonForm.blade.php +++ b/resources/views/admin/widgets/snippets/commonForm.blade.php @@ -1,4 +1,6 @@ {!! csrf_field() !!} + + @@ -20,6 +22,8 @@ + + @include('admin.snippets.hasError', ['field' => 'containerClass'])