From 694724945da961e16e5abf0d9352f20e12fcfd04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Kv=C3=A1=C4=8Dek?= Date: Tue, 20 Sep 2016 14:16:33 +0200 Subject: [PATCH] FEATURE: make widget areas not deletable --- app/Http/Controllers/Admin/EditWidgetArea.php | 8 ++- ..._20_113806_AddTemplateSupportToWidgets.php | 55 +++++++++++++++++++ ..._MakeWidgetsAndWidgetAreasNotDeletable.php | 44 +++++++++++++++ resources/lang/cs/admin/widgetAreas.php | 2 + resources/lang/en/admin/widgetAreas.php | 6 +- .../admin/widgets/area/overview.blade.php | 22 +++++--- 6 files changed, 127 insertions(+), 10 deletions(-) create mode 100644 database/migrations/2016_09_20_113806_AddTemplateSupportToWidgets.php create mode 100644 database/migrations/2016_09_20_114930_MakeWidgetsAndWidgetAreasNotDeletable.php diff --git a/app/Http/Controllers/Admin/EditWidgetArea.php b/app/Http/Controllers/Admin/EditWidgetArea.php index b163308d..7f960984 100644 --- a/app/Http/Controllers/Admin/EditWidgetArea.php +++ b/app/Http/Controllers/Admin/EditWidgetArea.php @@ -3,7 +3,6 @@ namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; -use App\Http\Requests; use App\Http\Requests\EditWidgetAreaRequest; use App\Models\WidgetArea; use Illuminate\Database\Eloquent\ModelNotFoundException; @@ -61,6 +60,13 @@ class EditWidgetArea extends Controller return $this->invalidArea(); } + // check if widget area is deletable + if (!$area->deletable) { + return redirect() + ->back() + ->with('error', trans('admin/widgetAreas.notDeletableArea')); + } + // delete area $area->delete(); diff --git a/database/migrations/2016_09_20_113806_AddTemplateSupportToWidgets.php b/database/migrations/2016_09_20_113806_AddTemplateSupportToWidgets.php new file mode 100644 index 00000000..ff448074 --- /dev/null +++ b/database/migrations/2016_09_20_113806_AddTemplateSupportToWidgets.php @@ -0,0 +1,55 @@ +integer('template_id') + ->comment('Commes this widget with template?') + ->after('handler') + ->nullable(true) + ->default(null); + $table->integer('module_id') + ->comment('Commes this widget with some module?') + ->after('template_id') + ->nullable(true) + ->default(null); + + $table->foreign('template_id') + ->references('id') + ->on('modules') + ->onDelete('cascade') + ->onUpdate('cascade'); + + $table->foreign('module_id') + ->references('id') + ->on('modules') + ->onDelete('cascade') + ->onUpdate('cascade'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('widget_types', function (Blueprint $table) { + $table->dropForeign('widget_types_module_id_foreign'); + $table->dropForeign('widget_types_template_id_foreign'); + $table->dropColumn(['template_id', 'module_id']); + }); + } +} diff --git a/database/migrations/2016_09_20_114930_MakeWidgetsAndWidgetAreasNotDeletable.php b/database/migrations/2016_09_20_114930_MakeWidgetsAndWidgetAreasNotDeletable.php new file mode 100644 index 00000000..b68636cf --- /dev/null +++ b/database/migrations/2016_09_20_114930_MakeWidgetsAndWidgetAreasNotDeletable.php @@ -0,0 +1,44 @@ +boolean('deletable') + ->default(true) + ->comment('Can this widget be deleted?'); + }); + + Schema::table('widget_areas', function (Blueprint $table) { + $table->boolean('deletable') + ->default(true) + ->comment('Can this widget area be deleted?'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('widgets', function (Blueprint $table) { + $table->dropColumn('deletable'); + }); + + Schema::table('widget_areas', function (Blueprint $table) { + $table->dropColumn('deletable'); + }); + } +} diff --git a/resources/lang/cs/admin/widgetAreas.php b/resources/lang/cs/admin/widgetAreas.php index fcf89fd5..4d794fcf 100644 --- a/resources/lang/cs/admin/widgetAreas.php +++ b/resources/lang/cs/admin/widgetAreas.php @@ -12,6 +12,8 @@ return [ "new" => "Nová plocha pro widgety", "noEntries" => "Zatím nebyla definována žádná plocha pro widgety.", "overview" => "Seznam všech ploch pro widgety", +"save" => "Uložit", "successfullyCreated" => "Plocha pro widgety úspěšně vytvořena", "successfullyDeleted" => "Úspěšně smazáno", +"uniqueCode" => "Unikátní kód", ]; diff --git a/resources/lang/en/admin/widgetAreas.php b/resources/lang/en/admin/widgetAreas.php index ed9b76ae..0e335df1 100644 --- a/resources/lang/en/admin/widgetAreas.php +++ b/resources/lang/en/admin/widgetAreas.php @@ -13,7 +13,11 @@ return [ 'actions' => 'Actions', 'noEntries' => 'No widget areas defined yet. Try to create some first.', 'editButton' => 'Edit', - 'save' => 'Save', + 'save' => 'Save', 'edit' => 'Editing widget area :name', + 'editTooltip' => 'Edit widget area', + 'associateWidgets' => 'Associate widgets with this widget area', + 'delete' => 'Delete widget area', + 'notDeletableArea' => 'Cannot delete desired widget area. This area is essential part of installed template and therefore cannot be deleted.', 'editSuccessfull' => 'Successfully edited' ]; \ No newline at end of file diff --git a/resources/views/admin/widgets/area/overview.blade.php b/resources/views/admin/widgets/area/overview.blade.php index ae1bd8e8..483d0022 100644 --- a/resources/views/admin/widgets/area/overview.blade.php +++ b/resources/views/admin/widgets/area/overview.blade.php @@ -27,18 +27,24 @@