sarga/packages/Webkul/CMS/src/Http/Controllers/Admin/PageController.php

189 lines
5.0 KiB
PHP
Raw Normal View History

<?php
namespace Webkul\CMS\Http\Controllers\Admin;
use Webkul\CMS\Http\Controllers\Controller;
2020-01-15 11:38:37 +00:00
use Webkul\CMS\Repositories\CmsRepository;
/**
* CMS controller
*
2020-01-15 11:38:37 +00:00
* @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
2020-01-15 11:38:37 +00:00
*
* @var array
*/
protected $_config;
/**
2020-01-15 11:38:37 +00:00
* To hold the CMSRepository instance
*
2020-03-05 05:34:57 +00:00
* @var \Webkul\CMS\Repositories\CmsRepository
*/
2020-01-15 11:38:37 +00:00
protected $cmsRepository;
/**
2020-01-15 11:38:37 +00:00
* Create a new controller instance.
*
2020-03-05 05:34:57 +00:00
* @param \Webkul\CMS\Repositories\CmsRepository $cmsRepository
2020-01-15 11:38:37 +00:00
* @return void
*/
2020-01-15 11:38:37 +00:00
public function __construct(CmsRepository $cmsRepository)
{
2019-12-11 09:55:19 +00:00
$this->middleware('admin');
2019-08-02 14:21:28 +00:00
2020-01-15 11:38:37 +00:00
$this->cmsRepository = $cmsRepository;
$this->_config = request('_config');
}
/**
* Loads the index page showing the static pages resources
2020-01-15 11:38:37 +00:00
*
* @return \Illuminate\View\View
*/
public function index()
{
return view($this->_config['view']);
}
/**
* To create a new CMS page
*
2020-01-15 11:38:37 +00:00
* @return \Illuminate\View\View
*/
public function create()
{
return view($this->_config['view']);
}
/**
* To store a new CMS page in storage
*
2020-01-15 11:38:37 +00:00
* @return \Illuminate\Http\Response
*/
public function store()
{
2019-08-20 10:37:41 +00:00
$data = request()->all();
$this->validate(request(), [
2020-02-19 12:15:43 +00:00
'url_key' => ['required', 'unique:cms_page_translations,url_key', new \Webkul\Core\Contracts\Validations\Slug],
'page_title' => 'required',
'channels' => 'required',
2020-03-04 06:32:53 +00:00
'html_content' => 'required',
2019-08-21 04:47:16 +00:00
]);
2020-01-15 11:38:37 +00:00
$page = $this->cmsRepository->create(request()->all());
2019-08-20 13:51:20 +00:00
2020-01-15 11:38:37 +00:00
session()->flash('success', trans('admin::app.response.create-success', ['name' => 'page']));
return redirect()->route($this->_config['redirect']);
}
/**
* To edit a previously created CMS page
*
2020-03-05 05:34:57 +00:00
* @param int $id
2020-01-15 11:38:37 +00:00
* @return \Illuminate\View\View
*/
public function edit($id)
{
2020-01-15 11:38:37 +00:00
$page = $this->cmsRepository->findOrFail($id);
2020-01-15 11:38:37 +00:00
return view($this->_config['view'], compact('page'));
}
/**
* To update the previously created CMS page in storage
*
2020-03-05 05:34:57 +00:00
* @param int $id
2020-01-15 11:38:37 +00:00
* @return \Illuminate\Http\Response
*/
public function update($id)
{
2020-01-15 11:38:37 +00:00
$locale = request()->get('locale') ?: app()->getLocale();
$this->validate(request(), [
2020-02-19 12:15:43 +00:00
$locale . '.url_key' => ['required', new \Webkul\Core\Contracts\Validations\Slug, function ($attribute, $value, $fail) use ($id) {
if (! $this->cmsRepository->isUrlKeyUnique($id, $value)) {
2020-01-15 11:38:37 +00:00
$fail(trans('admin::app.response.already-taken', ['name' => 'Page']));
2020-02-19 12:15:43 +00:00
}
2020-01-15 11:38:37 +00:00
}],
2020-02-19 12:15:43 +00:00
$locale . '.page_title' => 'required',
2020-01-15 11:38:37 +00:00
$locale . '.html_content' => 'required',
2020-03-04 06:32:53 +00:00
'channels' => 'required',
]);
2020-01-15 11:38:37 +00:00
$this->cmsRepository->update(request()->all(), $id);
2020-01-15 11:38:37 +00:00
session()->flash('success', trans('admin::app.response.update-success', ['name' => 'Page']));
return redirect()->route($this->_config['redirect']);
}
/**
* To delete the previously create CMS page
*
2020-03-05 05:34:57 +00:00
* @param int $id
2020-01-15 11:38:37 +00:00
* @return \Illuminate\Http\Response
*/
public function delete($id)
{
2020-01-15 11:38:37 +00:00
$page = $this->cmsRepository->findOrFail($id);
if ($page->delete()) {
2019-08-14 08:12:03 +00:00
session()->flash('success', trans('admin::app.cms.pages.delete-success'));
return response()->json(['message' => true], 200);
} else {
2019-08-14 08:12:03 +00:00
session()->flash('success', trans('admin::app.cms.pages.delete-failure'));
return response()->json(['message' => false], 200);
}
}
2019-08-17 10:12:24 +00:00
/**
* To mass delete the CMS resource from storage
*
2020-01-15 11:38:37 +00:00
* @return \Illuminate\Http\Response
2019-08-17 10:12:24 +00:00
*/
public function massDelete()
{
$data = request()->all();
if ($data['indexes']) {
$pageIDs = explode(',', $data['indexes']);
$count = 0;
foreach ($pageIDs as $pageId) {
2020-01-15 11:38:37 +00:00
$page = $this->cmsRepository->find($pageId);
2019-08-17 10:12:24 +00:00
if ($page) {
$page->delete();
$count++;
}
}
2020-01-15 11:38:37 +00:00
if (count($pageIDs) == $count) {
2019-08-17 10:12:24 +00:00
session()->flash('success', trans('admin::app.datagrid.mass-ops.delete-success', [
2020-03-04 06:32:53 +00:00
'resource' => 'CMS Pages',
2019-08-17 10:12:24 +00:00
]));
} else {
session()->flash('success', trans('admin::app.datagrid.mass-ops.partial-action', [
2020-03-04 06:32:53 +00:00
'resource' => 'CMS Pages',
2019-08-17 10:12:24 +00:00
]));
}
} else {
session()->flash('warning', trans('admin::app.datagrid.mass-ops.no-resource'));
}
return redirect()->route('admin.cms.index');
}
}