From b35149ad6779f8da477ed28b7943afb57eba222f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Kv=C3=A1=C4=8Dek?= Date: Thu, 24 Aug 2017 01:54:58 +0200 Subject: [PATCH] FEATURE: add permissions into widgets and fix few bugs --- app/CMS/Handlers/BaseHandler.php | 9 +- app/CMS/Handlers/Search/Content.php | 10 +- app/CMS/Handlers/Search/Files.php | 7 ++ .../Search/Presenters/AdminContent.php | 6 ++ .../Handlers/Search/Presenters/AdminFiles.php | 6 ++ app/Http/Controllers/Admin/Search.php | 10 +- .../Admin/Widgets/WidgetsOverview.php | 10 +- app/Policies/WidgetAreaPolicy.php | 2 +- app/Policies/WidgetsPolicy.php | 4 +- resources/assets/admin/css/custom.css | 4 + resources/assets/admin/js/app.js | 9 ++ resources/lang/cs/admin/common.php | 1 + resources/lang/cs/admin/widgetAreas.php | 1 + .../views/admin/permissions/index.blade.php | 4 +- resources/views/admin/search/page.blade.php | 12 ++- .../admin/userManagement/overview.blade.php | 31 ++++-- .../userManagement/permissions/form.blade.php | 6 +- .../views/admin/widgets/area/edit.blade.php | 9 +- .../admin/widgets/area/overview.blade.php | 97 ++++++++++++------- .../views/admin/widgets/association.blade.php | 11 +-- .../views/admin/widgets/overview.blade.php | 51 +++++++--- .../widgets/widgetsToAssociate.blade.php | 22 +++-- routes/admin/widgets.php | 27 ++++-- 23 files changed, 239 insertions(+), 110 deletions(-) diff --git a/app/CMS/Handlers/BaseHandler.php b/app/CMS/Handlers/BaseHandler.php index d5245400..a3e2b44c 100644 --- a/app/CMS/Handlers/BaseHandler.php +++ b/app/CMS/Handlers/BaseHandler.php @@ -71,13 +71,14 @@ abstract class BaseHandler implements BaseModuleHandler } }, 10, ['icon' => 'fa fa-fw fa-plus']); } - - $sub->route('widgets.overview', trans('admin/mainMenu.widgetsOverview'), [], 20, ['icon' => 'fa fa-fw fa-list']); + if ($user->can('manage', Widget::class)) { + $sub->route('widgets.overview', trans('admin/mainMenu.widgetsOverview'), [], 20, ['icon' => 'fa fa-fw fa-list']); + } // menu for widget areas if ($user->can('manage', WidgetArea::class)) { $sub->dropdown(trans('admin/mainMenu.widgetAreas'), function ($sub) use ($user) { - if ($user->can('create-widgetareas', WidgetArea::class)) { + if ($user->can('create', WidgetArea::class)) { $sub->route('widgetareas.new', trans('admin/mainMenu.newWidgetArea'), [], 1, ['icon' => 'fa fa-fw fa-plus']); } $sub->route('widgetareas.overview', trans('admin/mainMenu.widgetAreaOverview'), [], 2, ['icon' => 'fa fa-fw fa-list']); @@ -126,7 +127,7 @@ abstract class BaseHandler implements BaseModuleHandler if ($user->can('manage', Settings::class)) { $sub->route('settings.overview', trans('admin/mainMenu.settings'), [], 80, ['icon' => 'fa fa-fw fa-gear']); - $sub->route('permissions.index', trans('admin/mainMenu.permissions'), [], 90, ['icon' => 'fa fa-fw fa-gear']); + $sub->route('permissions.index', trans('admin/mainMenu.permissions'), [], 90, ['icon' => 'fa fa-fw fa-key']); } }, 10000, ['icon' => 'fa fa-fw fa-gears']); }); diff --git a/app/CMS/Handlers/Search/Content.php b/app/CMS/Handlers/Search/Content.php index a4fbf4ed..66902633 100644 --- a/app/CMS/Handlers/Search/Content.php +++ b/app/CMS/Handlers/Search/Content.php @@ -1,7 +1,10 @@ cannot('manage', ContentModel::class)) { + return new Collection(); + } + $token = $this->tokenize($term); return ContentModel::where('pageContent', 'LIKE', $token) diff --git a/app/CMS/Handlers/Search/Files.php b/app/CMS/Handlers/Search/Files.php index 2833a7f2..5568b2be 100644 --- a/app/CMS/Handlers/Search/Files.php +++ b/app/CMS/Handlers/Search/Files.php @@ -1,7 +1,9 @@ cannot('manage', File::class)) { + return new Collection(); + } + $token = $this->tokenize($term); return File::where('original_filename', 'LIKE', $token) diff --git a/app/CMS/Handlers/Search/Presenters/AdminContent.php b/app/CMS/Handlers/Search/Presenters/AdminContent.php index 80768dc3..502c882f 100644 --- a/app/CMS/Handlers/Search/Presenters/AdminContent.php +++ b/app/CMS/Handlers/Search/Presenters/AdminContent.php @@ -3,11 +3,17 @@ namespace App\CMS\Handlers\Search\Presenters; use App\CMS\Enumerations\ContentStatuses; use App\CMS\Handlers\Contracts\SearchPresenterHandler; +use App\Models\Content\Content; class AdminContent implements SearchPresenterHandler { public function render($foundItems) { + if (\Auth::user() + ->cannot('manage', Content::class)) { + return null; + } + return view('admin.search.results.content', [ 'pages' => $foundItems, 'statuses' => ContentStatuses::getWithTranslations(), diff --git a/app/CMS/Handlers/Search/Presenters/AdminFiles.php b/app/CMS/Handlers/Search/Presenters/AdminFiles.php index 5869f731..00eebc3a 100644 --- a/app/CMS/Handlers/Search/Presenters/AdminFiles.php +++ b/app/CMS/Handlers/Search/Presenters/AdminFiles.php @@ -2,6 +2,7 @@ namespace App\CMS\Handlers\Search\Presenters; use App\CMS\Handlers\Contracts\SearchPresenterHandler; +use App\Models\FileManager\File; class AdminFiles implements SearchPresenterHandler { @@ -14,6 +15,11 @@ class AdminFiles implements SearchPresenterHandler */ public function render($foundItems) { + if (\Auth::user() + ->cannot('manage', File::class)) { + return null; + } + return view('admin.fileManager.filesTiles', ['files' => $foundItems, 'hideDelete' => true]); } } \ No newline at end of file diff --git a/app/Http/Controllers/Admin/Search.php b/app/Http/Controllers/Admin/Search.php index 1d93c14f..ffabde36 100644 --- a/app/Http/Controllers/Admin/Search.php +++ b/app/Http/Controllers/Admin/Search.php @@ -13,7 +13,6 @@ class Search extends Controller { /** * Create form for searching - * * @return $this|\Illuminate\Contracts\View\Factory|\Illuminate\View\View */ public function getSearch() @@ -37,7 +36,6 @@ class Search extends Controller /** * Method used for performing search. - * * This method iterates over all registered search engines and returns results for each engine apart. * * @param string $term search text @@ -60,10 +58,16 @@ class Search extends Controller // try to find given term $results = $search->search($term); + $content = $presenter->render($results); + + if (is_null($content)) { + continue; + } + // create result object $resultsParts[$search->getId()] = [ 'name' => $search->getName(), - 'content' => $presenter->render($results), + 'content' => $content, 'count' => count($results) ]; } diff --git a/app/Http/Controllers/Admin/Widgets/WidgetsOverview.php b/app/Http/Controllers/Admin/Widgets/WidgetsOverview.php index 4f7abf5d..e5cd5529 100644 --- a/app/Http/Controllers/Admin/Widgets/WidgetsOverview.php +++ b/app/Http/Controllers/Admin/Widgets/WidgetsOverview.php @@ -1,17 +1,25 @@ paginate(25); - return view('admin.widgets.overview', ['widgets' => $widgets]); + $widgetTypes = WidgetType::all(); + + return view('admin.widgets.overview', compact('widgetTypes', 'widgets')); } } \ No newline at end of file diff --git a/app/Policies/WidgetAreaPolicy.php b/app/Policies/WidgetAreaPolicy.php index f0efc9b4..cb16bd8f 100644 --- a/app/Policies/WidgetAreaPolicy.php +++ b/app/Policies/WidgetAreaPolicy.php @@ -31,6 +31,6 @@ class WidgetAreaPolicy extends BasicPolicy */ public function update(User $user, WidgetArea $widgetArea) { - return $user->hasAbility('edit-widgetareas'); + return $user->id == $widgetArea->user_id || $user->hasAbility('edit-widgetareas'); } } diff --git a/app/Policies/WidgetsPolicy.php b/app/Policies/WidgetsPolicy.php index c818f5f0..9d73f927 100644 --- a/app/Policies/WidgetsPolicy.php +++ b/app/Policies/WidgetsPolicy.php @@ -36,12 +36,12 @@ class WidgetsPolicy extends BasicPolicy return $user->id == $widget->user_id || $user->hasAbility('edit-widgets'); } - public function assign(User $user, Widget $widget) + public function assign(User $user) { return $user->hasAbility('assign-widgets'); } - public function unassign(User $user, Widget $widget) + public function unassign(User $user) { return $user->hasAbility('unassign-widgets'); } diff --git a/resources/assets/admin/css/custom.css b/resources/assets/admin/css/custom.css index 06aadd48..f09877a4 100644 --- a/resources/assets/admin/css/custom.css +++ b/resources/assets/admin/css/custom.css @@ -22,6 +22,10 @@ a:focus { padding-bottom: 20px !important; } +.blur { + -webkit-filter: blur(3px); + filter: blur(3px); +} .text-center { text-align: center; diff --git a/resources/assets/admin/js/app.js b/resources/assets/admin/js/app.js index a544afbd..fa203f89 100644 --- a/resources/assets/admin/js/app.js +++ b/resources/assets/admin/js/app.js @@ -392,12 +392,15 @@ $ (document).ready (function () { $ ('#confirm-modal').modal ('show'); + $('.main-wrapper').addClass('blur'); + e.preventDefault (); }); $ ('#confirm-modal').on ('hidden.bs.modal', function () { $ ('#confirmation-title').text (previousTitle); $ ('#confirmation-message').text (previousMessage); + $('.main-wrapper').removeClass('blur'); }); $ ('#lockUrl').change (function () { @@ -444,4 +447,10 @@ $('.checkbox').change(function() { var id = e.data('id'); $('.child-'+id).prop('checked', checked); + + // check also parent + if (e.hasClass('child-checkbox') && checked){ + var parent = e.data('parent'); + $('#checkbox-parent-'+parent).prop('checked', true); + } }); \ No newline at end of file diff --git a/resources/lang/cs/admin/common.php b/resources/lang/cs/admin/common.php index f2a6a17f..65852498 100644 --- a/resources/lang/cs/admin/common.php +++ b/resources/lang/cs/admin/common.php @@ -7,4 +7,5 @@ return [ "logoutSuccessfull" => "Odhlášení proběhlo úspěšně", "no" => "Ne", "yes" => "Ano", + "noSearchEngine" => 'Není dostupný žádný vyhledávač.' ]; diff --git a/resources/lang/cs/admin/widgetAreas.php b/resources/lang/cs/admin/widgetAreas.php index c601cf81..912cefaa 100644 --- a/resources/lang/cs/admin/widgetAreas.php +++ b/resources/lang/cs/admin/widgetAreas.php @@ -20,4 +20,5 @@ return [ "successfullyCreated" => "Plocha pro widgety úspěšně vytvořena", "successfullyDeleted" => "Úspěšně smazáno", "uniqueCode" => "Unikátní kód", + 'pageDescription' => 'Plochy pro widgety jsou oblasti, do kterých je možné přiřadit widgety a následně je zobrazovat na webu.' ]; diff --git a/resources/views/admin/permissions/index.blade.php b/resources/views/admin/permissions/index.blade.php index c8391b5b..a4733dc0 100644 --- a/resources/views/admin/permissions/index.blade.php +++ b/resources/views/admin/permissions/index.blade.php @@ -12,7 +12,7 @@