parent
8c96bca9b3
commit
bd6e0c9345
|
|
@ -19,13 +19,17 @@ class CMSPageDataGrid extends DataGrid
|
|||
|
||||
public function prepareQueryBuilder()
|
||||
{
|
||||
$queryBuilder = DB::table('cms_pages')->select('id', 'url_key', 'page_title');
|
||||
$queryBuilder = DB::table('cms_pages')->select('id', 'url_key', 'page_title', 'channel_id', 'locale_id');
|
||||
|
||||
$this->setQueryBuilder($queryBuilder);
|
||||
}
|
||||
|
||||
public function addColumns()
|
||||
{
|
||||
$channels = app('Webkul\Core\Repositories\ChannelRepository');
|
||||
|
||||
$locales = app('Webkul\Core\Repositories\LocaleRepository');
|
||||
|
||||
$this->addColumn([
|
||||
'index' => 'id',
|
||||
'label' => trans('admin::app.datagrid.id'),
|
||||
|
|
@ -52,6 +56,34 @@ class CMSPageDataGrid extends DataGrid
|
|||
'sortable' => true,
|
||||
'filterable' => true
|
||||
]);
|
||||
|
||||
$this->addColumn([
|
||||
'index' => 'locale_id',
|
||||
'label' => trans('admin::app.cms.pages.locale'),
|
||||
'type' => 'number',
|
||||
'searchable' => false,
|
||||
'sortable' => true,
|
||||
'filterable' => true,
|
||||
'wrapper' => function($row) use($channels) {
|
||||
$channelCode = $channels->find($row->channel_id)->name;
|
||||
|
||||
return $row->channel_id.' ('. $channelCode. ')';
|
||||
}
|
||||
]);
|
||||
|
||||
$this->addColumn([
|
||||
'index' => 'channel_id',
|
||||
'label' => trans('admin::app.cms.pages.channel'),
|
||||
'type' => 'number',
|
||||
'searchable' => false,
|
||||
'sortable' => true,
|
||||
'filterable' => true,
|
||||
'wrapper' => function($row) use($locales) {
|
||||
$localeCode = $locales->find($row->locale_id)->code;
|
||||
|
||||
return $row->locale_id.' ('. $localeCode. ')';
|
||||
}
|
||||
]);
|
||||
}
|
||||
|
||||
public function prepareActions() {
|
||||
|
|
|
|||
|
|
@ -987,6 +987,8 @@ return [
|
|||
'add-title' => 'Add Page',
|
||||
'content' => 'Content',
|
||||
'url-key' => 'URL Key',
|
||||
'channel' => 'Channel',
|
||||
'locale' => 'Locale',
|
||||
'create-btn-title' => 'Add Page',
|
||||
'edit-title' => 'Edit Page',
|
||||
'edit-btn-title' => 'Save Page',
|
||||
|
|
|
|||
|
|
@ -15,36 +15,6 @@
|
|||
|
||||
{{ __('admin::app.cms.pages.pages') }}
|
||||
</h1>
|
||||
|
||||
<div class="control-group">
|
||||
<select class="control" id="channel-switcher" name="channel">
|
||||
@php
|
||||
$locale = request()->get('locale') ?: app()->getLocale();
|
||||
|
||||
$channel = request()->get('channel') ?: core()->getDefaultChannelCode();
|
||||
@endphp
|
||||
|
||||
@foreach (core()->getAllChannels() as $channelModel)
|
||||
|
||||
<option value="{{ $channelModel->code }}" {{ ($channelModel->code) == $channel ? 'selected' : '' }}>
|
||||
{{ $channelModel->name }}
|
||||
</option>
|
||||
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<select class="control" id="locale-switcher" name="locale">
|
||||
@foreach (core()->getAllLocales() as $localeModel)
|
||||
|
||||
<option value="{{ $localeModel->code }}" {{ ($localeModel->code) == $locale ? 'selected' : '' }}>
|
||||
{{ $localeModel->name }}
|
||||
</option>
|
||||
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="page-action fixed-action">
|
||||
|
|
@ -59,6 +29,14 @@
|
|||
<div class="form-container">
|
||||
@csrf()
|
||||
|
||||
<div class="control-group" :class="[errors.has('page_title') ? 'has-error' : '']">
|
||||
<label for="page_title" class="required">{{ __('admin::app.cms.pages.page-title') }}</label>
|
||||
|
||||
<input type="text" class="control" name="page_title" v-validate="'required'" value="{{ old('page_title') }}" data-vv-as=""{{ __('admin::app.cms.pages.page-title') }}"">
|
||||
|
||||
<span class="control-error" v-if="errors.has('page_title')">@{{ errors.first('page_title') }}</span>
|
||||
</div>
|
||||
|
||||
<div class="control-group" :class="[errors.has('url_key') ? 'has-error' : '']">
|
||||
<label for="url-key" class="required">{{ __('admin::app.cms.pages.url-key') }}</label>
|
||||
|
||||
|
|
@ -67,6 +45,33 @@
|
|||
<span class="control-error" v-if="errors.has('url_key')">@{{ errors.first('url_key') }}</span>
|
||||
</div>
|
||||
|
||||
@inject('channels', 'Webkul\Core\Repositories\ChannelRepository')
|
||||
@inject('locales', 'Webkul\Core\Repositories\LocaleRepository')
|
||||
|
||||
<div class="control-group" :class="[errors.has('channels[]') ? 'has-error' : '']">
|
||||
<label for="url-key" class="required">{{ __('admin::app.cms.pages.channel') }}</label>
|
||||
|
||||
<select type="text" class="control" name="channels[]" v-validate="'required'" value="{{ old('channel[]') }}" data-vv-as=""{{ __('admin::app.cms.pages.channel') }}"" multiple="multiple">
|
||||
@foreach($channels->all() as $channel)
|
||||
<option value="{{ $channel->id }}">{{ $channel->name }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
|
||||
<span class="control-error" v-if="errors.has('channels[]')">@{{ errors.first('channels[]') }}</span>
|
||||
</div>
|
||||
|
||||
<div class="control-group" :class="[errors.has('locales[]') ? 'has-error' : '']">
|
||||
<label for="url-key" class="required">{{ __('admin::app.cms.pages.locale') }}</label>
|
||||
|
||||
<select type="text" class="control" name="locales[]" v-validate="'required'" value="{{ old('locale[]') }}" data-vv-as=""{{ __('admin::app.cms.pages.locale') }}"" multiple="multiple">
|
||||
@foreach($locales->all() as $locale)
|
||||
<option value="{{ $locale->id }}">{{ $locale->name }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
|
||||
<span class="control-error" v-if="errors.has('locales[]')">@{{ errors.first('locales[]') }}</span>
|
||||
</div>
|
||||
|
||||
<div class="control-group" :class="[errors.has('html_content') ? 'has-error' : '']">
|
||||
<label for="html_content" class="required">{{ __('admin::app.cms.pages.content') }}</label>
|
||||
|
||||
|
|
@ -85,14 +90,6 @@
|
|||
<span class="control-error" v-if="errors.has('html_content')">@{{ errors.first('html_content') }}</span>
|
||||
</div>
|
||||
|
||||
<div class="control-group" :class="[errors.has('page_title') ? 'has-error' : '']">
|
||||
<label for="page_title" class="required">{{ __('admin::app.cms.pages.page-title') }}</label>
|
||||
|
||||
<input type="text" class="control" name="page_title" v-validate="'required'" value="{{ old('page_title') }}" data-vv-as=""{{ __('admin::app.cms.pages.page-title') }}"">
|
||||
|
||||
<span class="control-error" v-if="errors.has('page_title')">@{{ errors.first('page_title') }}</span>
|
||||
</div>
|
||||
|
||||
<div class="control-group" :class="[errors.has('meta_title') ? 'has-error' : '']">
|
||||
<label for="meta_title" class="required">{{ __('admin::app.cms.pages.meta_title') }}</label>
|
||||
|
||||
|
|
|
|||
|
|
@ -15,36 +15,6 @@
|
|||
|
||||
{{ __('admin::app.cms.pages.pages') }}
|
||||
</h1>
|
||||
|
||||
<div class="control-group">
|
||||
<select class="control" id="channel-switcher" name="channel">
|
||||
@php
|
||||
$locale = request()->get('locale') ?: app()->getLocale();
|
||||
|
||||
$channel = request()->get('channel') ?: core()->getDefaultChannelCode();
|
||||
@endphp
|
||||
|
||||
@foreach (core()->getAllChannels() as $channelModel)
|
||||
|
||||
<option value="{{ $channelModel->code }}" {{ ($channelModel->code) == $channel ? 'selected' : '' }}>
|
||||
{{ $channelModel->name }}
|
||||
</option>
|
||||
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<select class="control" id="locale-switcher" name="locale">
|
||||
@foreach (core()->getAllLocales() as $localeModel)
|
||||
|
||||
<option value="{{ $localeModel->code }}" {{ ($localeModel->code) == $locale ? 'selected' : '' }}>
|
||||
{{ $localeModel->name }}
|
||||
</option>
|
||||
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="page-action fixed-action">
|
||||
|
|
@ -63,10 +33,18 @@
|
|||
<div class="form-container">
|
||||
@csrf()
|
||||
|
||||
<div class="control-group" :class="[errors.has('page_title') ? 'has-error' : '']">
|
||||
<label for="page_title" class="required">{{ __('admin::app.cms.pages.page-title') }}</label>
|
||||
|
||||
<input type="text" class="control" name="page_title" v-validate="'required'" value="{{ $page->page_title ?? old('page_title') }}" data-vv-as=""{{ __('admin::app.cms.pages.page-title') }}"">
|
||||
|
||||
<span class="control-error" v-if="errors.has('page_title')">@{{ errors.first('page_title') }}</span>
|
||||
</div>
|
||||
|
||||
<div class="control-group" :class="[errors.has('url_key') ? 'has-error' : '']">
|
||||
<label for="url-key" class="required">{{ __('admin::app.cms.pages.url-key') }}</label>
|
||||
|
||||
<input type="text" class="control" name="url_key" v-validate="'required'" value="{{ $page->url_key ?? old('url_key') }}" data-vv-as=""{{ __('admin::app.cms.pages.url-key') }}"" v-slugify>
|
||||
<input type="text" class="control" name="url_key" v-validate="'required'" value="{{ $page->url_key ?? old('url_key') }}" data-vv-as=""{{ __('admin::app.cms.pages.url-key') }}"" disabled>
|
||||
|
||||
<span class="control-error" v-if="errors.has('url_key')">@{{ errors.first('url_key') }}</span>
|
||||
</div>
|
||||
|
|
@ -89,14 +67,6 @@
|
|||
<span class="control-error" v-if="errors.has('html_content')">@{{ errors.first('html_content') }}</span>
|
||||
</div>
|
||||
|
||||
<div class="control-group" :class="[errors.has('page_title') ? 'has-error' : '']">
|
||||
<label for="page_title" class="required">{{ __('admin::app.cms.pages.page-title') }}</label>
|
||||
|
||||
<input type="text" class="control" name="page_title" v-validate="'required'" value="{{ $page->page_title ?? old('page_title') }}" data-vv-as=""{{ __('admin::app.cms.pages.page-title') }}"">
|
||||
|
||||
<span class="control-error" v-if="errors.has('page_title')">@{{ errors.first('page_title') }}</span>
|
||||
</div>
|
||||
|
||||
<div class="control-group" :class="[errors.has('meta_title') ? 'has-error' : '']">
|
||||
<label for="meta_title" class="required">{{ __('admin::app.cms.pages.meta_title') }}</label>
|
||||
|
||||
|
|
@ -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();
|
||||
|
||||
|
|
|
|||
|
|
@ -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');
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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');
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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'));
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue