42 private $pageRepository;
56 \
Magento\Cms\Api\PageRepositoryInterface $pageRepository =
null 60 $this->pageFactory = $pageFactory
62 $this->pageRepository = $pageRepository
64 ->get(\
Magento\Cms\Api\PageRepositoryInterface::class);
65 parent::__construct($context);
78 $resultRedirect = $this->resultRedirectFactory->create();
81 if (isset(
$data[
'is_active']) &&
$data[
'is_active'] ===
'true') {
84 if (empty(
$data[
'page_id'])) {
85 $data[
'page_id'] =
null;
89 $model = $this->pageFactory->create();
94 $model = $this->pageRepository->getById(
$id);
95 }
catch (LocalizedException $e) {
96 $this->messageManager->addErrorMessage(
__(
'This page no longer exists.'));
97 return $resultRedirect->setPath(
'*/*/');
103 $this->_eventManager->dispatch(
104 'cms_page_prepare_save',
108 if (!$this->dataProcessor->validate(
$data)) {
109 return $resultRedirect->setPath(
'*/*/edit', [
'page_id' =>
$model->getId(),
'_current' =>
true]);
113 $this->pageRepository->save(
$model);
114 $this->messageManager->addSuccessMessage(
__(
'You saved the page.'));
115 return $this->processResultRedirect(
$model, $resultRedirect,
$data);
116 }
catch (LocalizedException $e) {
117 $this->messageManager->addExceptionMessage($e->getPrevious() ?: $e);
118 }
catch (\Exception $e) {
119 $this->messageManager->addExceptionMessage($e,
__(
'Something went wrong while saving the page.'));
122 $this->dataPersistor->set(
'cms_page',
$data);
123 return $resultRedirect->setPath(
'*/*/edit', [
'page_id' => $this->
getRequest()->getParam(
'page_id')]);
125 return $resultRedirect->setPath(
'*/*/');
137 private function processResultRedirect(
$model, $resultRedirect,
$data)
139 if ($this->
getRequest()->getParam(
'back',
false) ===
'duplicate') {
140 $newPage = $this->pageFactory->create([
'data' =>
$data]);
141 $newPage->setId(
null);
142 $identifier =
$model->getIdentifier() .
'-' . uniqid();
143 $newPage->setIdentifier($identifier);
144 $newPage->setIsActive(
false);
145 $this->pageRepository->save($newPage);
146 $this->messageManager->addSuccessMessage(
__(
'You duplicated the page.'));
147 return $resultRedirect->setPath(
150 'page_id' => $newPage->getId(),
155 $this->dataPersistor->clear(
'cms_page');
157 return $resultRedirect->setPath(
'*/*/edit', [
'page_id' =>
$model->getId(),
'_current' =>
true]);
159 return $resultRedirect->setPath(
'*/*/');
__construct(Action\Context $context, PostDataProcessor $dataProcessor, DataPersistorInterface $dataPersistor, \Magento\Cms\Model\PageFactory $pageFactory=null, \Magento\Cms\Api\PageRepositoryInterface $pageRepository=null)