+
@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']);