189 lines
5.0 KiB
PHP
189 lines
5.0 KiB
PHP
<?php
|
|
|
|
namespace Webkul\CMS\Http\Controllers\Admin;
|
|
|
|
use Webkul\CMS\Http\Controllers\Controller;
|
|
use Webkul\CMS\Repositories\CmsRepository;
|
|
|
|
/**
|
|
* CMS controller
|
|
*
|
|
* @author Jitendra Singh <jitendra@webkul.com>
|
|
* @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com)
|
|
*/
|
|
class PageController extends Controller
|
|
{
|
|
/**
|
|
* To hold the request variables from route file
|
|
*
|
|
* @var array
|
|
*/
|
|
protected $_config;
|
|
|
|
/**
|
|
* To hold the CMSRepository instance
|
|
*
|
|
* @var \Webkul\CMS\Repositories\CmsRepository
|
|
*/
|
|
protected $cmsRepository;
|
|
|
|
/**
|
|
* Create a new controller instance.
|
|
*
|
|
* @param \Webkul\CMS\Repositories\CmsRepository $cmsRepository
|
|
* @return void
|
|
*/
|
|
public function __construct(CmsRepository $cmsRepository)
|
|
{
|
|
$this->middleware('admin');
|
|
|
|
$this->cmsRepository = $cmsRepository;
|
|
|
|
$this->_config = request('_config');
|
|
}
|
|
|
|
/**
|
|
* Loads the index page showing the static pages resources
|
|
*
|
|
* @return \Illuminate\View\View
|
|
*/
|
|
public function index()
|
|
{
|
|
return view($this->_config['view']);
|
|
}
|
|
|
|
/**
|
|
* To create a new CMS page
|
|
*
|
|
* @return \Illuminate\View\View
|
|
*/
|
|
public function create()
|
|
{
|
|
return view($this->_config['view']);
|
|
}
|
|
|
|
/**
|
|
* To store a new CMS page in storage
|
|
*
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function store()
|
|
{
|
|
$data = request()->all();
|
|
|
|
$this->validate(request(), [
|
|
'url_key' => ['required', 'unique:cms_page_translations,url_key', new \Webkul\Core\Contracts\Validations\Slug],
|
|
'page_title' => 'required',
|
|
'channels' => 'required',
|
|
'html_content' => 'required',
|
|
]);
|
|
|
|
$page = $this->cmsRepository->create(request()->all());
|
|
|
|
session()->flash('success', trans('admin::app.response.create-success', ['name' => 'page']));
|
|
|
|
return redirect()->route($this->_config['redirect']);
|
|
}
|
|
|
|
/**
|
|
* To edit a previously created CMS page
|
|
*
|
|
* @param int $id
|
|
* @return \Illuminate\View\View
|
|
*/
|
|
public function edit($id)
|
|
{
|
|
$page = $this->cmsRepository->findOrFail($id);
|
|
|
|
return view($this->_config['view'], compact('page'));
|
|
}
|
|
|
|
/**
|
|
* To update the previously created CMS page in storage
|
|
*
|
|
* @param int $id
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function update($id)
|
|
{
|
|
$locale = request()->get('locale') ?: app()->getLocale();
|
|
|
|
$this->validate(request(), [
|
|
$locale . '.url_key' => ['required', new \Webkul\Core\Contracts\Validations\Slug, function ($attribute, $value, $fail) use ($id) {
|
|
if (! $this->cmsRepository->isUrlKeyUnique($id, $value)) {
|
|
$fail(trans('admin::app.response.already-taken', ['name' => 'Page']));
|
|
}
|
|
}],
|
|
$locale . '.page_title' => 'required',
|
|
$locale . '.html_content' => 'required',
|
|
'channels' => 'required',
|
|
]);
|
|
|
|
$this->cmsRepository->update(request()->all(), $id);
|
|
|
|
session()->flash('success', trans('admin::app.response.update-success', ['name' => 'Page']));
|
|
|
|
return redirect()->route($this->_config['redirect']);
|
|
}
|
|
|
|
/**
|
|
* To delete the previously create CMS page
|
|
*
|
|
* @param int $id
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function delete($id)
|
|
{
|
|
$page = $this->cmsRepository->findOrFail($id);
|
|
|
|
if ($page->delete()) {
|
|
session()->flash('success', trans('admin::app.cms.pages.delete-success'));
|
|
|
|
return response()->json(['message' => true], 200);
|
|
} else {
|
|
session()->flash('success', trans('admin::app.cms.pages.delete-failure'));
|
|
|
|
return response()->json(['message' => false], 200);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* To mass delete the CMS resource from storage
|
|
*
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function massDelete()
|
|
{
|
|
$data = request()->all();
|
|
|
|
if ($data['indexes']) {
|
|
$pageIDs = explode(',', $data['indexes']);
|
|
|
|
$count = 0;
|
|
|
|
foreach ($pageIDs as $pageId) {
|
|
$page = $this->cmsRepository->find($pageId);
|
|
|
|
if ($page) {
|
|
$page->delete();
|
|
|
|
$count++;
|
|
}
|
|
}
|
|
|
|
if (count($pageIDs) == $count) {
|
|
session()->flash('success', trans('admin::app.datagrid.mass-ops.delete-success', [
|
|
'resource' => 'CMS Pages',
|
|
]));
|
|
} else {
|
|
session()->flash('success', trans('admin::app.datagrid.mass-ops.partial-action', [
|
|
'resource' => 'CMS Pages',
|
|
]));
|
|
}
|
|
} else {
|
|
session()->flash('warning', trans('admin::app.datagrid.mass-ops.no-resource'));
|
|
}
|
|
|
|
return redirect()->route('admin.cms.index');
|
|
}
|
|
} |