+ @inject('channels', 'Webkul\Core\Repositories\ChannelRepository')
+ @inject('locales', 'Webkul\Core\Repositories\LocaleRepository')
+
+
@@ -63,10 +33,18 @@
-
-
-
-
-
- @{{ errors.first('page_title') }}
-
-
@@ -134,7 +104,7 @@
$('#preview').on('click', function(e) {
var form = $('#page-form').serialize();
// var url = '{{ route('admin.cms.preview', $page->id) }}' + '?' + form;
- var url = '{{ route('admin.cms.preview', $page->url_key) }}';
+ var url = '{{ route('admin.cms.preview', $page->id) }}';
window.open(url, '_blank').focus();
diff --git a/packages/Webkul/CMS/src/Database/Migrations/2019_07_30_153530_create_cms_pages_table.php b/packages/Webkul/CMS/src/Database/Migrations/2019_07_30_153530_create_cms_pages_table.php
index f7cba2dcf..1e9d3ef79 100644
--- a/packages/Webkul/CMS/src/Database/Migrations/2019_07_30_153530_create_cms_pages_table.php
+++ b/packages/Webkul/CMS/src/Database/Migrations/2019_07_30_153530_create_cms_pages_table.php
@@ -15,7 +15,7 @@ class CreateCmsPagesTable extends Migration
{
Schema::create('cms_pages', function (Blueprint $table) {
$table->increments('id');
- $table->string('url_key')->unique();
+ $table->string('url_key')->nullable();
$table->longtext('html_content');
$table->string('page_title');
$table->string('meta_title');
diff --git a/packages/Webkul/CMS/src/Http/Controllers/Admin/PageController.php b/packages/Webkul/CMS/src/Http/Controllers/Admin/PageController.php
index 070a7d26d..2899c996b 100644
--- a/packages/Webkul/CMS/src/Http/Controllers/Admin/PageController.php
+++ b/packages/Webkul/CMS/src/Http/Controllers/Admin/PageController.php
@@ -86,8 +86,8 @@ use Webkul\Core\Repositories\LocaleRepository as Locale;
public function store()
{
$this->validate(request(), [
- 'channel' => 'required|string',
- 'locale' => 'required|string',
+ 'channels' => 'required',
+ 'locales' => 'required',
'url_key' => 'required|unique:cms_pages,url_key',
'html_content' => 'required|string',
'page_title' => 'required|string',
@@ -98,15 +98,25 @@ use Webkul\Core\Repositories\LocaleRepository as Locale;
$data = request()->all();
- $data['content']['html'] = $data['html_content'];
- $data['content']['page_title'] = $data['page_title'];
- $data['content']['meta_keywords'] = $data['meta_keywords'];
- $data['content']['meta_title'] = $data['meta_title'];
- $data['content']['meta_description'] = $data['meta_description'];
+ foreach ($data['channels'] as $channel) {
+ foreach ($data['locales'] as $locale) {
+ $data['channel_id'] = $channel;
- $data['content'] = json_encode($data['content']);
+ $data['locale_id'] = $locale;
- $result = $this->cms->create($data);
+ $data['content']['html'] = $data['html_content'];
+ $data['content']['page_title'] = $data['page_title'];
+ $data['content']['meta_keywords'] = $data['meta_keywords'];
+ $data['content']['meta_title'] = $data['meta_title'];
+ $data['content']['meta_description'] = $data['meta_description'];
+
+ $data['content'] = json_encode($data['content']);
+
+ $result = $this->cms->create($data);
+
+ unset($data['content']);
+ }
+ }
if ($result) {
session()->flash('success', trans('admin::app.cms.pages.create-success'));
@@ -126,6 +136,34 @@ use Webkul\Core\Repositories\LocaleRepository as Locale;
{
$page = $this->cms->findOrFail($id);
+ if (request()->has('channel') && request()->has('locale')) {
+ $channel = $this->channel->findOneWhere([
+ 'code' => request()->input('channel')
+ ]);
+
+ $locale = $this->locale->findOneWhere([
+ 'code' => request()->input('locale')
+ ]);
+
+ $page = $this->cms->findOneWhere([
+ 'channel_id' => $channel->id,
+ 'locale_id' => $locale->id,
+ 'url_key' => $page->url_key
+ ]);
+
+ if (! $page) {
+ $page = $this->cms->create([
+ 'url_key' => str_random(8),
+ 'channel' => $channel->code,
+ 'locale' => $locale->code
+ ]);
+
+ return redirect()->route('admin.cms.edit', $page->id);
+ }
+ } else {
+ $page = $this->cms->findOrFail($id);
+ }
+
return view($this->_config['view'])->with('page', $page);
}
@@ -138,25 +176,21 @@ use Webkul\Core\Repositories\LocaleRepository as Locale;
{
$page = $this->cms->findOrFail($id);
+ $data = request()->all();
+
$this->validate(request(), [
- 'channel' => 'required|string',
- 'locale' => 'required|string',
- 'url_key' => 'required|unique:cms_pages,url_key,'.$id,
- 'html_content' => 'required|string',
'page_title' => 'required|string',
+ 'html_content' => 'required|string',
'meta_title' => 'required|string',
'meta_description' => 'string',
'meta_keywords' => 'required|string'
]);
- $data = request()->all();
-
$data['content']['html'] = $data['html_content'];
$data['content']['page_title'] = $data['page_title'];
$data['content']['meta_keywords'] = $data['meta_keywords'];
$data['content']['meta_title'] = $data['meta_title'];
$data['content']['meta_description'] = $data['meta_description'];
-
$data['content'] = json_encode($data['content']);
$result = $this->cms->update($data, $id);
@@ -166,7 +200,6 @@ use Webkul\Core\Repositories\LocaleRepository as Locale;
} else {
session()->flash('success', trans('admin::app.cms.pages.update-failure'));
}
-
return redirect()->route($this->_config['redirect']);
}
@@ -175,11 +208,9 @@ use Webkul\Core\Repositories\LocaleRepository as Locale;
*
* @return mixed
*/
- public function preview($urlKey)
+ public function preview($id)
{
- $page = $this->cms->findOneWhere([
- 'url_key' => $urlKey
- ]);
+ $page = $this->cms->findOrFail($id);
return view('shop::cms.page')->with('page', $page);
}
@@ -203,20 +234,4 @@ use Webkul\Core\Repositories\LocaleRepository as Locale;
return response()->json(['message' => false], 200);
}
}
-
- /**
- * To extract the page content and load it in the respective view file\
- *
- * @return view
- */
- public function presenter($slug)
- {
- $page = $this->cms->findOneWhere([
- 'url_key' => $slug
- ]);
-
- $layout = $page->layout;
-
- return view('shop::cms.page')->with('data', $page);
- }
}
\ No newline at end of file
diff --git a/packages/Webkul/CMS/src/Repositories/CMSRepository.php b/packages/Webkul/CMS/src/Repositories/CMSRepository.php
index 476f0909b..c3b3a84da 100644
--- a/packages/Webkul/CMS/src/Repositories/CMSRepository.php
+++ b/packages/Webkul/CMS/src/Repositories/CMSRepository.php
@@ -46,19 +46,12 @@ class CMSRepository extends Repository
public function create(array $data)
{
- $channel = $this->channel->findOneByField('code', $data['channel']);
-
- $locale = $this->locale->findOneByField('code', $data['locale']);
-
- $data['channel_id'] = $channel->id;
- $data['locale_id'] = $locale->id;
-
$result = $this->model->create($data);
if ($result) {
- return true;
+ return $result;
} else {
- return false;
+ return $result;
}
}
}
\ No newline at end of file
diff --git a/packages/Webkul/Core/src/Http/Controllers/ExchangeRateController.php b/packages/Webkul/Core/src/Http/Controllers/ExchangeRateController.php
index e4f187434..856165a42 100755
--- a/packages/Webkul/Core/src/Http/Controllers/ExchangeRateController.php
+++ b/packages/Webkul/Core/src/Http/Controllers/ExchangeRateController.php
@@ -3,9 +3,9 @@
namespace Webkul\Core\Http\Controllers;
use Illuminate\Http\Request;
-use Illuminate\Http\Response;
use Illuminate\Support\Facades\Event;
use Webkul\Core\Repositories\CurrencyRepository as Currency;
+use Webkul\Core\Repositories\ExchangeRateRepository as ExchangeRate;
/**
* ExchangeRate controller
@@ -22,6 +22,11 @@ class ExchangeRateController extends Controller
*/
protected $_config;
+ /**
+ * ExchangeRateRepository instance
+ */
+ protected $exchangeRate;
+
/**
* CurrencyRepository object
*
@@ -36,10 +41,12 @@ class ExchangeRateController extends Controller
* @param \Webkul\Core\Repositories\CurrencyRepository $currency
* @return void
*/
- public function __construct(Currency $currency)
+ public function __construct(Currency $currency, ExchangeRate $exchangeRate)
{
$this->currency = $currency;
+ $this->exchangeRate = $exchangeRate;
+
$this->_config = request('_config');
}
diff --git a/packages/Webkul/Shop/src/Http/Controllers/HomeController.php b/packages/Webkul/Shop/src/Http/Controllers/HomeController.php
index 4f8e149a1..9fb1d7ec6 100755
--- a/packages/Webkul/Shop/src/Http/Controllers/HomeController.php
+++ b/packages/Webkul/Shop/src/Http/Controllers/HomeController.php
@@ -29,8 +29,8 @@ use Webkul\Core\Repositories\SliderRepository;
*/
public function index()
{
- $currentChannel = core()->getCurrentChannel();
- $sliderData = $this->sliderRepository->findByField('channel_id', $currentChannel->id)->toArray();
+ $currentChannel = core()->getCurrentChannel()->id;
+ $sliderData = $this->sliderRepository->findByField('channel_id', $currentChannel)->toArray();
return view($this->_config['view'], compact('sliderData'));
}