From 884b945c8bcf695bda774b67e948ac7ff2395a3a Mon Sep 17 00:00:00 2001 From: Devansh Date: Mon, 21 Dec 2020 10:38:19 +0530 Subject: [PATCH 1/6] Store And Update Channel Front End Comleted --- .../views/settings/channels/edit.blade.php | 62 ++++++++++++------- .../Core/src/Contracts/ChannelTranslation.php | 7 +++ ...0200_create_channel_translations_table.php | 42 +++++++++++++ packages/Webkul/Core/src/Models/Channel.php | 13 +++- .../Core/src/Models/ChannelTranslation.php | 11 ++++ .../src/Models/ChannelTranslationProxy.php | 10 +++ .../src/Repositories/ChannelRepository.php | 12 +++- 7 files changed, 131 insertions(+), 26 deletions(-) create mode 100644 packages/Webkul/Core/src/Contracts/ChannelTranslation.php create mode 100644 packages/Webkul/Core/src/Database/Migrations/2020_12_21_000200_create_channel_translations_table.php create mode 100644 packages/Webkul/Core/src/Models/ChannelTranslation.php create mode 100644 packages/Webkul/Core/src/Models/ChannelTranslationProxy.php diff --git a/packages/Webkul/Admin/src/Resources/views/settings/channels/edit.blade.php b/packages/Webkul/Admin/src/Resources/views/settings/channels/edit.blade.php index 32e86354f..eec83259f 100755 --- a/packages/Webkul/Admin/src/Resources/views/settings/channels/edit.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/settings/channels/edit.blade.php @@ -6,6 +6,7 @@ @section('content')
+ @php $locale = request()->get('locale') ?: app()->getLocale(); @endphp
@@ -25,6 +38,7 @@
+
@csrf() @@ -42,15 +56,15 @@ @{{ errors.first('code') }}
-
+
- - @{{ errors.first('name') }} + + @{{ errors.first('{!!$locale!!}[page_title]') }}
- +
@@ -97,9 +111,9 @@ locales->pluck('id')->toArray() ?> @@ -110,9 +124,9 @@ default_locale_id ?> @@ -167,12 +181,12 @@
- +
- +
@@ -191,32 +205,34 @@ @php - $seo = json_decode($channel->home_seo); + $seo = json_decode($channel->translate($locale)['home_seo']); @endphp {{-- home page seo --}}
-
+
- - @{{ errors.first('seo_title') }} + + + + @{{ errors.first('{!!$locale!!}[page_title]') }}
-
+
- + - @{{ errors.first('seo_description') }} + @{{ errors.first('{!!$locale!!}[page_title]') }}
-
+
- + - @{{ errors.first('seo_keywords') }} + @{{ errors.first('{!!$locale!!}[page_title]') }}
@@ -235,7 +251,7 @@
- +
diff --git a/packages/Webkul/Core/src/Contracts/ChannelTranslation.php b/packages/Webkul/Core/src/Contracts/ChannelTranslation.php new file mode 100644 index 000000000..b9ca88ae6 --- /dev/null +++ b/packages/Webkul/Core/src/Contracts/ChannelTranslation.php @@ -0,0 +1,7 @@ +id(); + $table->integer('channel_id')->unsigned(); + $table->string('locale')->index(); + $table->string('name'); + $table->text('description')->nullable(); + $table->text('home_page_content')->nullable(); + $table->text('footer_content')->nullable(); + $table->text('maintenance_mode_text')->nullable(); + $table->json('home_seo')->nullable(); + $table->timestamps(); + + $table->unique(['channel_id', 'locale']); + $table->foreign('channel_id')->references('id')->on('channels')->onDelete('cascade'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('channel_translations'); + } +} diff --git a/packages/Webkul/Core/src/Models/Channel.php b/packages/Webkul/Core/src/Models/Channel.php index 21e36e813..45741f123 100755 --- a/packages/Webkul/Core/src/Models/Channel.php +++ b/packages/Webkul/Core/src/Models/Channel.php @@ -2,13 +2,13 @@ namespace Webkul\Core\Models; -use Illuminate\Database\Eloquent\Model; use Illuminate\Support\Facades\Storage; use Webkul\Category\Models\CategoryProxy; +use Webkul\Core\Eloquent\TranslatableModel; use Webkul\Inventory\Models\InventorySourceProxy; use Webkul\Core\Contracts\Channel as ChannelContract; -class Channel extends Model implements ChannelContract +class Channel extends TranslatableModel implements ChannelContract { protected $fillable = [ 'code', @@ -27,6 +27,15 @@ class Channel extends Model implements ChannelContract 'allowed_ips' ]; + public $translatedAttributes = [ + 'name', + 'description', + 'home_page_content', + 'footer_content', + 'maintenance_mode_text', + 'home_seo', + ]; + /** * Get the channel locales. */ diff --git a/packages/Webkul/Core/src/Models/ChannelTranslation.php b/packages/Webkul/Core/src/Models/ChannelTranslation.php new file mode 100644 index 000000000..864be3de3 --- /dev/null +++ b/packages/Webkul/Core/src/Models/ChannelTranslation.php @@ -0,0 +1,11 @@ +model->create($data); + $model = $this->getModel(); + + foreach (core()->getAllLocales() as $locale) { + foreach ($model->translatedAttributes as $attribute) { + if (isset($data[$attribute])) { + $data[$locale->code][$attribute] = $data[$attribute]; + } + } + } + + $channel = parent::create($data); $channel->locales()->sync($data['locales']); From 2b6438b5670734c2c1ac9aae6c3c8f949b731ff2 Mon Sep 17 00:00:00 2001 From: devansh bawari Date: Mon, 21 Dec 2020 13:58:22 +0530 Subject: [PATCH 2/6] Channel Translation Completed --- .../Admin/src/DataGrids/ChannelDataGrid.php | 33 +++- .../views/settings/channels/edit.blade.php | 2 +- .../Http/Controllers/ChannelController.php | 157 ++++++++++++------ .../src/Repositories/ChannelRepository.php | 2 +- 4 files changed, 136 insertions(+), 58 deletions(-) diff --git a/packages/Webkul/Admin/src/DataGrids/ChannelDataGrid.php b/packages/Webkul/Admin/src/DataGrids/ChannelDataGrid.php index 8547237f6..379199470 100755 --- a/packages/Webkul/Admin/src/DataGrids/ChannelDataGrid.php +++ b/packages/Webkul/Admin/src/DataGrids/ChannelDataGrid.php @@ -2,18 +2,47 @@ namespace Webkul\Admin\DataGrids; -use Illuminate\Support\Facades\DB; use Webkul\Ui\DataGrid\DataGrid; +use Webkul\Core\Repositories\ChannelRepository; class ChannelDataGrid extends DataGrid { + /** + * Assign primary key. + */ protected $index = 'id'; + /** + * Sort order. + */ protected $sortOrder = 'desc'; + /** + * ChannelRepository $channelRepository + * + * @var \Webkul\Core\Repositories\ChannelRepository + */ + protected $channelRepository; + + /** + * Create a new datagrid instance. + * + * @param \Webkul\Core\Repositories\ChannelRepository $channelRepository + * @return void + */ + public function __construct( + ChannelRepository $channelRepository + ) + { + parent::__construct(); + + $this->channelRepository = $channelRepository; + } + public function prepareQueryBuilder() { - $queryBuilder = DB::table('channels')->addSelect('id', 'code', 'name', 'hostname'); + $queryBuilder = $this->channelRepository->query() + ->addSelect('id', 'code', 'name', 'hostname'); $this->setQueryBuilder($queryBuilder); } diff --git a/packages/Webkul/Admin/src/Resources/views/settings/channels/edit.blade.php b/packages/Webkul/Admin/src/Resources/views/settings/channels/edit.blade.php index eec83259f..dae7864b7 100755 --- a/packages/Webkul/Admin/src/Resources/views/settings/channels/edit.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/settings/channels/edit.blade.php @@ -8,7 +8,7 @@
@php $locale = request()->get('locale') ?: app()->getLocale(); @endphp - +