* @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'); } }