From bce98e6eaf833dbeb5d343b6679a0f3ac12e86cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Kv=C3=A1=C4=8Dek?= Date: Fri, 22 Jul 2016 15:30:03 +0200 Subject: [PATCH] FEATURE: Add language into widgets --- .../Controllers/Admin/AssociateWidget.php | 4 +- .../Controllers/Admin/WidgetsOverview.php | 4 +- app/Models/Widget.php | 2 + app/Models/WidgetArea.php | 2 + app/Widgets/Menu/Presenters/Menu.php | 2 + ...16_07_22_130324_AddLanguageIntoWidgets.php | 41 +++++++++++++++++++ .../views/admin/widgets/overview.blade.php | 2 +- 7 files changed, 54 insertions(+), 3 deletions(-) create mode 100644 database/migrations/2016_07_22_130324_AddLanguageIntoWidgets.php diff --git a/app/Http/Controllers/Admin/AssociateWidget.php b/app/Http/Controllers/Admin/AssociateWidget.php index fbb366b8..4bcec19e 100644 --- a/app/Http/Controllers/Admin/AssociateWidget.php +++ b/app/Http/Controllers/Admin/AssociateWidget.php @@ -11,6 +11,7 @@ use App\Models\WidgetArea; use App\Models\WidgetInWidgetArea; use Illuminate\Database\QueryException; use Illuminate\Support\Facades\Event; +use Mcamara\LaravelLocalization\Facades\LaravelLocalization; class AssociateWidget extends Controller { @@ -18,7 +19,8 @@ class AssociateWidget extends Controller { $area = WidgetArea::findOrFail($widgetArea); $associatedWidgetIds = WidgetInWidgetArea::getWidgetIdsFromArea($area->id); - $widgets = Widget::paginate(25); + $widgets = Widget::where('language', LaravelLocalization::getCurrentLocale()) + ->paginate(25); return view('admin.widgets.association', [ 'widgetArea' => $area, diff --git a/app/Http/Controllers/Admin/WidgetsOverview.php b/app/Http/Controllers/Admin/WidgetsOverview.php index 31506334..424c2e84 100644 --- a/app/Http/Controllers/Admin/WidgetsOverview.php +++ b/app/Http/Controllers/Admin/WidgetsOverview.php @@ -2,12 +2,14 @@ namespace App\Http\Controllers\Admin; use App\Models\Widget; +use Mcamara\LaravelLocalization\Facades\LaravelLocalization; class WidgetsOverview extends Controller { public function getOverview() { - $widgets = Widget::paginate(25); + $widgets = Widget::where('language', LaravelLocalization::getCurrentLocale()) + ->paginate(25); return view('admin.widgets.overview', ['widgets' => $widgets]); } diff --git a/app/Models/Widget.php b/app/Models/Widget.php index 1f6a607d..5ed96c28 100644 --- a/app/Models/Widget.php +++ b/app/Models/Widget.php @@ -4,6 +4,7 @@ namespace App\Models; use Illuminate\Database\Eloquent\Model; use Illuminate\Support\Facades\Event; +use Mcamara\LaravelLocalization\Facades\LaravelLocalization; /** * Class Widget @@ -39,6 +40,7 @@ class Widget extends Model // create new widget $widget = new Widget(); $widget->widget_type_handler = $widgetType->handler; + $widget->language = LaravelLocalization::getCurrentLocale(); $widget->user_id = \Auth::user()->id; $widget->name = $data->name; diff --git a/app/Models/WidgetArea.php b/app/Models/WidgetArea.php index 7646b0d0..009e5f32 100644 --- a/app/Models/WidgetArea.php +++ b/app/Models/WidgetArea.php @@ -4,6 +4,7 @@ namespace App\Models; use Illuminate\Database\Eloquent\Model; use Illuminate\Support\Facades\DB; +use Mcamara\LaravelLocalization\Facades\LaravelLocalization; /** * Class WidgetArea @@ -25,6 +26,7 @@ class WidgetArea extends Model ->where('code', $uniqueCode) ->join('widget_in_widget_area', 'widget_in_widget_area.widget_area_id', '=', 'widget_areas.id') ->join('widgets', 'widget_in_widget_area.widget_id', '=', 'widgets.id') + ->where('language', LaravelLocalization::getCurrentLocale()) ->orderBy('widget_in_widget_area.position'); } } \ No newline at end of file diff --git a/app/Widgets/Menu/Presenters/Menu.php b/app/Widgets/Menu/Presenters/Menu.php index 471c5e4d..ded17c35 100644 --- a/app/Widgets/Menu/Presenters/Menu.php +++ b/app/Widgets/Menu/Presenters/Menu.php @@ -8,12 +8,14 @@ use App\Widgets\Contracts\WidgetRenderer; use Illuminate\Support\Facades\App; use Illuminate\Support\Facades\Request; use Illuminate\Support\Facades\Route; +use Mcamara\LaravelLocalization\Facades\LaravelLocalization; class Menu implements WidgetRenderer { protected static function selectContentPages($ids) { $pages = Content::where('status', '!=', Content::STATUS_DELETED) + ->where('language', LaravelLocalization::getCurrentLocale()) ->whereIn('id', $ids) ->get(); $used = []; diff --git a/database/migrations/2016_07_22_130324_AddLanguageIntoWidgets.php b/database/migrations/2016_07_22_130324_AddLanguageIntoWidgets.php new file mode 100644 index 00000000..e183e7cc --- /dev/null +++ b/database/migrations/2016_07_22_130324_AddLanguageIntoWidgets.php @@ -0,0 +1,41 @@ +string('language', 8) + ->after('widget_type_handler') + ->default(\App::getLocale()); + + $table->foreign('language') + ->references('code') + ->on('languages') + ->onDelete('cascade') + ->onUpdate('cascade'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('widgets', function (Blueprint $table) { + $table->dropForeign('widgets_language_foreign'); + $table->dropColumn('language'); + }); + } +} diff --git a/resources/views/admin/widgets/overview.blade.php b/resources/views/admin/widgets/overview.blade.php index fefb34d6..a94cffdd 100644 --- a/resources/views/admin/widgets/overview.blade.php +++ b/resources/views/admin/widgets/overview.blade.php @@ -22,7 +22,7 @@ @endif - @if (!empty($widgets)) + @if (count($widgets))
@lang('admin/widgets.widgetType')