From aedd5127cbda8d33480544b6328087350851c7b3 Mon Sep 17 00:00:00 2001 From: Sanjay Date: Thu, 5 May 2022 16:32:33 +0530 Subject: [PATCH] Issue #6357 fixed --- .../Admin/src/DataGrids/CMSPageDataGrid.php | 11 ++++++++-- .../Shop/PagePresenterController.php | 20 +++++++++++++++++++ .../Shop/src/Routes/store-front-routes.php | 4 ++++ 3 files changed, 33 insertions(+), 2 deletions(-) diff --git a/packages/Webkul/Admin/src/DataGrids/CMSPageDataGrid.php b/packages/Webkul/Admin/src/DataGrids/CMSPageDataGrid.php index 992b3596a..81eae7e67 100644 --- a/packages/Webkul/Admin/src/DataGrids/CMSPageDataGrid.php +++ b/packages/Webkul/Admin/src/DataGrids/CMSPageDataGrid.php @@ -57,20 +57,27 @@ class CMSPageDataGrid extends DataGrid public function prepareActions() { + $this->addAction([ + 'title' => trans('admin::app.datagrid.view'), + 'method' => 'GET', + 'route' => 'shop.cms.view.front', + 'icon' => 'icon eye-icon', + ]); + $this->addAction([ 'title' => trans('admin::app.datagrid.edit'), 'method' => 'GET', 'route' => 'admin.cms.edit', 'icon' => 'icon pencil-lg-icon', ]); - + $this->addAction([ 'title' => trans('admin::app.datagrid.delete'), 'method' => 'POST', 'route' => 'admin.cms.delete', 'icon' => 'icon trash-icon', ]); - } + } public function prepareMassActions() { diff --git a/packages/Webkul/CMS/src/Http/Controllers/Shop/PagePresenterController.php b/packages/Webkul/CMS/src/Http/Controllers/Shop/PagePresenterController.php index 1c8eecb08..e97ee5a28 100644 --- a/packages/Webkul/CMS/src/Http/Controllers/Shop/PagePresenterController.php +++ b/packages/Webkul/CMS/src/Http/Controllers/Shop/PagePresenterController.php @@ -15,6 +15,7 @@ class PagePresenterController extends Controller */ public function __construct(protected CmsRepository $cmsRepository) { + $this->_config = request('_config'); } /** @@ -29,4 +30,23 @@ class PagePresenterController extends Controller return view('shop::cms.page')->with('page', $page); } + + /** + * Preview the CMS page from datagrid. + * + * @param int $id + * @return \Illuminate\View\View + */ + public function view($id) + { + $page = $this->cmsRepository->findOrFail($id); + + request()->merge(['url_key' => $page->url_key]); + + if (is_null($page)) { + abort(404); + } + + return view($this->_config['view'], compact('page')); + } } \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Routes/store-front-routes.php b/packages/Webkul/Shop/src/Routes/store-front-routes.php index 369f24361..f752f3bba 100644 --- a/packages/Webkul/Shop/src/Routes/store-front-routes.php +++ b/packages/Webkul/Shop/src/Routes/store-front-routes.php @@ -24,6 +24,10 @@ Route::group(['middleware' => ['web', 'locale', 'theme', 'currency']], function */ Route::get('page/{slug}', [PagePresenterController::class, 'presenter'])->name('shop.cms.page'); + Route::get('preview/{id}', [PagePresenterController::class, 'view'])->defaults('_config', [ + 'view' => 'shop::cms.page', + ])->name('shop.cms.view.front'); + /** * Fallback route. */