From 94e76f431b8fcedd0dc5423bba0b9cbb3348b1e3 Mon Sep 17 00:00:00 2001 From: Jeroen Desloovere Date: Tue, 13 Jun 2017 15:08:03 +0200 Subject: [PATCH] Using Domain structure for ContentBlocks module --- .../Actions/{Add.php => ContentBlockAdd.php} | 68 ++++--- .../Actions/ContentBlockDelete.php | 69 +++++++ .../Actions/ContentBlockEdit.php | 131 +++++++++++++ .../Actions/ContentBlockIndex.php | 28 +++ .../Modules/ContentBlocks/Actions/Delete.php | 60 ------ .../Modules/ContentBlocks/Actions/Edit.php | 176 ------------------ .../Modules/ContentBlocks/Actions/Index.php | 56 ------ .../CopyContentBlocksToOtherLocaleHandler.php | 60 ------ .../Command/CreateContentBlock.php | 60 ------ .../Command/CreateContentBlockHandler.php | 44 ----- .../Command/UpdateContentBlock.php | 56 ------ .../Command/UpdateContentBlockHandler.php | 30 --- src/Backend/Modules/ContentBlocks/Config.php | 6 + .../DataGrid/ContentBlockDataGrid.php | 23 --- .../DataGrid/ContentBlockRevisionDataGrid.php | 25 --- .../ContentBlocksExtension.php | 3 +- .../CopyContentBlocksToOtherLocale.php | 2 +- .../CopyContentBlocksToOtherLocaleHandler.php | 68 +++++++ .../Command/CreateContentBlock.php | 22 +++ .../Command/CreateContentBlockHandler.php | 39 ++++ .../Command/DeleteContentBlock.php | 8 +- .../Command/DeleteContentBlockHandler.php | 6 +- .../Command/UpdateContentBlock.php | 15 ++ .../Command/UpdateContentBlockHandler.php | 25 +++ .../ContentBlock}/ContentBlock.php | 71 +++---- .../ContentBlock/ContentBlockDataGrid.php | 44 +++++ .../ContentBlockDataTransferObject.php | 107 +++++++++++ .../ContentBlock}/ContentBlockRepository.php | 41 +++- .../ContentBlockRevisionDataGrid.php | 72 +++++++ .../ContentBlock}/ContentBlockType.php | 6 +- .../Event/ContentBlockCreated.php | 2 +- .../Event/ContentBlockDeleted.php | 2 +- .../ContentBlock}/Event/ContentBlockEvent.php | 4 +- .../Event/ContentBlockUpdated.php | 2 +- .../Exception/ContentBlockNotFound.php | 28 +++ .../ContentBlock/Status.php} | 4 +- .../ContentBlock/StatusDBALType.php} | 12 +- .../ContentBlocks/Installer/Data/locale.xml | 98 ++++++---- .../ContentBlocks/Installer/Installer.php | 14 +- ...dd.html.twig => ContentBlockAdd.html.twig} | 0 ...t.html.twig => ContentBlockEdit.html.twig} | 8 +- ....html.twig => ContentBlockIndex.html.twig} | 4 +- .../config/{command.yml => commands.yml} | 16 +- .../Resources/config/doctrine.yml | 10 +- .../ContentBlocks/Resources/config/events.yml | 7 + .../Resources/config/repositories.yml | 6 + .../Resources/config/repository.yml | 6 - .../Resources/config/services.yml | 3 + 48 files changed, 890 insertions(+), 757 deletions(-) rename src/Backend/Modules/ContentBlocks/Actions/{Add.php => ContentBlockAdd.php} (58%) create mode 100644 src/Backend/Modules/ContentBlocks/Actions/ContentBlockDelete.php create mode 100644 src/Backend/Modules/ContentBlocks/Actions/ContentBlockEdit.php create mode 100644 src/Backend/Modules/ContentBlocks/Actions/ContentBlockIndex.php delete mode 100644 src/Backend/Modules/ContentBlocks/Actions/Delete.php delete mode 100644 src/Backend/Modules/ContentBlocks/Actions/Edit.php delete mode 100644 src/Backend/Modules/ContentBlocks/Actions/Index.php delete mode 100644 src/Backend/Modules/ContentBlocks/Command/CopyContentBlocksToOtherLocaleHandler.php delete mode 100644 src/Backend/Modules/ContentBlocks/Command/CreateContentBlock.php delete mode 100644 src/Backend/Modules/ContentBlocks/Command/CreateContentBlockHandler.php delete mode 100644 src/Backend/Modules/ContentBlocks/Command/UpdateContentBlock.php delete mode 100644 src/Backend/Modules/ContentBlocks/Command/UpdateContentBlockHandler.php delete mode 100644 src/Backend/Modules/ContentBlocks/DataGrid/ContentBlockDataGrid.php delete mode 100644 src/Backend/Modules/ContentBlocks/DataGrid/ContentBlockRevisionDataGrid.php rename src/Backend/Modules/ContentBlocks/{ => Domain/ContentBlock}/Command/CopyContentBlocksToOtherLocale.php (89%) create mode 100644 src/Backend/Modules/ContentBlocks/Domain/ContentBlock/Command/CopyContentBlocksToOtherLocaleHandler.php create mode 100644 src/Backend/Modules/ContentBlocks/Domain/ContentBlock/Command/CreateContentBlock.php create mode 100644 src/Backend/Modules/ContentBlocks/Domain/ContentBlock/Command/CreateContentBlockHandler.php rename src/Backend/Modules/ContentBlocks/{ => Domain/ContentBlock}/Command/DeleteContentBlock.php (53%) rename src/Backend/Modules/ContentBlocks/{ => Domain/ContentBlock}/Command/DeleteContentBlockHandler.php (75%) create mode 100644 src/Backend/Modules/ContentBlocks/Domain/ContentBlock/Command/UpdateContentBlock.php create mode 100644 src/Backend/Modules/ContentBlocks/Domain/ContentBlock/Command/UpdateContentBlockHandler.php rename src/Backend/Modules/ContentBlocks/{Entity => Domain/ContentBlock}/ContentBlock.php (77%) create mode 100644 src/Backend/Modules/ContentBlocks/Domain/ContentBlock/ContentBlockDataGrid.php create mode 100644 src/Backend/Modules/ContentBlocks/Domain/ContentBlock/ContentBlockDataTransferObject.php rename src/Backend/Modules/ContentBlocks/{Repository => Domain/ContentBlock}/ContentBlockRepository.php (55%) create mode 100644 src/Backend/Modules/ContentBlocks/Domain/ContentBlock/ContentBlockRevisionDataGrid.php rename src/Backend/Modules/ContentBlocks/{Form => Domain/ContentBlock}/ContentBlockType.php (92%) rename src/Backend/Modules/ContentBlocks/{ => Domain/ContentBlock}/Event/ContentBlockCreated.php (77%) rename src/Backend/Modules/ContentBlocks/{ => Domain/ContentBlock}/Event/ContentBlockDeleted.php (77%) rename src/Backend/Modules/ContentBlocks/{ => Domain/ContentBlock}/Event/ContentBlockEvent.php (73%) rename src/Backend/Modules/ContentBlocks/{ => Domain/ContentBlock}/Event/ContentBlockUpdated.php (77%) create mode 100644 src/Backend/Modules/ContentBlocks/Domain/ContentBlock/Exception/ContentBlockNotFound.php rename src/Backend/Modules/ContentBlocks/{ValueObject/ContentBlockStatus.php => Domain/ContentBlock/Status.php} (93%) rename src/Backend/Modules/ContentBlocks/{DBALType/ContentBlockStatusDBALType.php => Domain/ContentBlock/StatusDBALType.php} (62%) rename src/Backend/Modules/ContentBlocks/Layout/Templates/{Add.html.twig => ContentBlockAdd.html.twig} (100%) rename src/Backend/Modules/ContentBlocks/Layout/Templates/{Edit.html.twig => ContentBlockEdit.html.twig} (91%) rename src/Backend/Modules/ContentBlocks/Layout/Templates/{Index.html.twig => ContentBlockIndex.html.twig} (66%) rename src/Backend/Modules/ContentBlocks/Resources/config/{command.yml => commands.yml} (55%) create mode 100644 src/Backend/Modules/ContentBlocks/Resources/config/events.yml create mode 100644 src/Backend/Modules/ContentBlocks/Resources/config/repositories.yml delete mode 100644 src/Backend/Modules/ContentBlocks/Resources/config/repository.yml create mode 100644 src/Backend/Modules/ContentBlocks/Resources/config/services.yml diff --git a/src/Backend/Modules/ContentBlocks/Actions/Add.php b/src/Backend/Modules/ContentBlocks/Actions/ContentBlockAdd.php similarity index 58% rename from src/Backend/Modules/ContentBlocks/Actions/Add.php rename to src/Backend/Modules/ContentBlocks/Actions/ContentBlockAdd.php index 7d83a4f91c..375ea06d90 100644 --- a/src/Backend/Modules/ContentBlocks/Actions/Add.php +++ b/src/Backend/Modules/ContentBlocks/Actions/ContentBlockAdd.php @@ -12,26 +12,22 @@ use Backend\Core\Engine\Authentication; use Backend\Core\Engine\Base\ActionAdd as BackendBaseActionAdd; use Backend\Core\Engine\Model as BackendModel; -use Backend\Modules\ContentBlocks\Command\CreateContentBlock; -use Backend\Modules\ContentBlocks\Event\ContentBlockCreated; -use Backend\Modules\ContentBlocks\Form\ContentBlockType; +use Backend\Modules\ContentBlocks\Domain\ContentBlock\Command\CreateContentBlock; +use Backend\Modules\ContentBlocks\Domain\ContentBlock\Event\ContentBlockCreated; +use Backend\Modules\ContentBlocks\Domain\ContentBlock\ContentBlockType; +use Symfony\Component\Form\Form; /** * This is the add-action, it will display a form to create a new item */ -class Add extends BackendBaseActionAdd +class ContentBlockAdd extends BackendBaseActionAdd { public function execute(): void { parent::execute(); - $form = $this->createForm( - ContentBlockType::class, - null, - ['theme' => $this->get('fork.settings')->get('Core', 'theme', 'Core')] - ); - - $form->handleRequest($this->get('request')); + /** @var Form $form */ + $form = $this->getForm(); if (!$form->isValid()) { $this->tpl->assign('form', $form->createView()); @@ -43,27 +39,55 @@ public function execute(): void } /** @var CreateContentBlock $createContentBlock */ - $createContentBlock = $form->getData(); - $createContentBlock->userId = Authentication::getUser()->getUserId(); - - // The command bus will handle the saving of the content block in the database. - $this->get('command_bus')->handle($createContentBlock); + $createContentBlock = $this->createContentBlock($form); $this->get('event_dispatcher')->dispatch( ContentBlockCreated::EVENT_NAME, - new ContentBlockCreated($createContentBlock->contentBlock) + new ContentBlockCreated($createContentBlock->getContentBlockEntity()) ); $this->redirect( - BackendModel::createURLForAction( - 'Index', - null, - null, + $this->getBackLink( [ - 'report' => 'added', + 'report' => 'content-block-added', 'var' => $createContentBlock->title, ] ) ); } + + private function createContentBlock(Form $form): CreateContentBlock + { + /** @var CreateContentBlock $createContentBlock */ + $createContentBlock = $form->getData(); + $createContentBlock->userId = Authentication::getUser()->getUserId(); + + // The command bus will handle the saving of the content block in the database. + $this->get('command_bus')->handle($createContentBlock); + + return $createContentBlock; + } + + private function getBackLink(array $parameters = []): string + { + return BackendModel::createURLForAction( + 'ContentBlockIndex', + null, + null, + $parameters + ); + } + + private function getForm(): Form + { + $form = $this->createForm( + ContentBlockType::class, + new CreateContentBlock(), + ['theme' => $this->get('fork.settings')->get('Core', 'theme', 'Core')] + ); + + $form->handleRequest($this->get('request')); + + return $form; + } } diff --git a/src/Backend/Modules/ContentBlocks/Actions/ContentBlockDelete.php b/src/Backend/Modules/ContentBlocks/Actions/ContentBlockDelete.php new file mode 100644 index 0000000000..9fe0560ca0 --- /dev/null +++ b/src/Backend/Modules/ContentBlocks/Actions/ContentBlockDelete.php @@ -0,0 +1,69 @@ +getContentBlock(); + + // The command bus will handle the saving of the content block in the database. + $this->get('command_bus')->handle(new DeleteContentBlock($contentBlock)); + + $this->get('event_dispatcher')->dispatch( + ContentBlockDeleted::EVENT_NAME, + new ContentBlockDeleted($contentBlock) + ); + + $this->redirect( + $this->getBackLink( + [ + 'report' => 'content-block-deleted', + 'var' => $contentBlock->getTitle(), + ] + ) + ); + } + + private function getBackLink(array $parameters = []): string + { + return BackendModel::createURLForAction( + 'ContentBlockIndex', + null, + null, + $parameters + ); + } + + private function getContentBlock(): ContentBlock + { + try { + return $this->get('content_blocks.repository.content_block')->findOneByIdAndLocale( + $this->getParameter('id', 'int'), + Locale::workingLocale() + ); + } catch (ContentBlockNotFound $e) { + $this->redirect($this->getBackLink(['error' => 'non-existing'])); + } + } +} diff --git a/src/Backend/Modules/ContentBlocks/Actions/ContentBlockEdit.php b/src/Backend/Modules/ContentBlocks/Actions/ContentBlockEdit.php new file mode 100644 index 0000000000..a31eb33a5c --- /dev/null +++ b/src/Backend/Modules/ContentBlocks/Actions/ContentBlockEdit.php @@ -0,0 +1,131 @@ +getContentBlock(); + + /** @var Form $form */ + $form = $this->getForm($contentBlock); + + if (!$form->isValid()) { + $this->tpl->assign('form', $form->createView()); + $this->tpl->assign('contentBlock', $contentBlock); + $this->tpl->assign('revisions', ContentBlockRevisionDataGrid::getHtml($contentBlock, Locale::workingLocale())); + + $this->parse(); + $this->display(); + + return; + } + + /** @var UpdateContentBlock $updateContentBlock */ + $updateContentBlock = $this->updateContentBlock($form); + + $this->get('event_dispatcher')->dispatch( + ContentBlockUpdated::EVENT_NAME, + new ContentBlockUpdated($updateContentBlock->getContentBlockEntity()) + ); + + $this->redirect( + $this->getBackLink( + [ + 'report' => 'content-block-edited', + 'var' => $updateContentBlock->title, + 'highlight' => 'row-' . $contentBlock->getId(), + ] + ) + ); + } + + private function getBackLink(array $parameters = []): string + { + return BackendModel::createURLForAction( + 'ContentBlockIndex', + null, + null, + $parameters + ); + } + + private function getContentBlock(): ContentBlock + { + /** @var ContentBlockRepository $contentBlockRepository */ + $contentBlockRepository = $this->get('content_blocks.repository.content_block'); + + // specific revision? + $revisionId = $this->getParameter('revision', 'int'); + + if ($revisionId !== null) { + $this->tpl->assign('usingRevision', true); + + try { + return $contentBlockRepository->findOneByRevisionIdAndLocale($revisionId, Locale::workingLocale()); + } catch (ContentBlockNotFound $e) { + $this->redirect($this->getBackLink(['error' => 'non-existing'])); + } + } + + try { + return $contentBlockRepository->findOneByIdAndLocale($this->getParameter('id', 'int'), Locale::workingLocale()); + } catch (ContentBlockNotFound $e) { + $this->redirect($this->getBackLink(['error' => 'non-existing'])); + } + } + + private function getForm(ContentBlock $contentBlock): Form + { + $form = $this->createForm( + ContentBlockType::class, + new UpdateContentBlock($contentBlock), + [ + 'theme' => $this->get('fork.settings')->get('Core', 'theme', 'Core'), + ] + ); + + $form->handleRequest($this->get('request')); + + return $form; + } + + private function updateContentBlock(Form $form): UpdateContentBlock + { + /** @var UpdateContentBlock $updateContentBlock */ + $updateContentBlock = $form->getData(); + $updateContentBlock->userId = Authentication::getUser()->getUserId(); + + // The command bus will handle the saving of the content block in the database. + $this->get('command_bus')->handle($updateContentBlock); + + return $updateContentBlock; + } +} diff --git a/src/Backend/Modules/ContentBlocks/Actions/ContentBlockIndex.php b/src/Backend/Modules/ContentBlocks/Actions/ContentBlockIndex.php new file mode 100644 index 0000000000..f2d3128e75 --- /dev/null +++ b/src/Backend/Modules/ContentBlocks/Actions/ContentBlockIndex.php @@ -0,0 +1,28 @@ +tpl->assign('dataGrid', ContentBlockDataGrid::getHtml(Locale::workingLocale())); + $this->parse(); + $this->display(); + } +} diff --git a/src/Backend/Modules/ContentBlocks/Actions/Delete.php b/src/Backend/Modules/ContentBlocks/Actions/Delete.php deleted file mode 100644 index eb76ad28e2..0000000000 --- a/src/Backend/Modules/ContentBlocks/Actions/Delete.php +++ /dev/null @@ -1,60 +0,0 @@ -get('content_blocks.repository.content_block'); - - $contentBlock = $contentBlockRepository->findOneByIdAndLocale( - $this->getParameter('id', 'int'), - Locale::workingLocale() - ); - - if ($contentBlock === null) { - $this->redirect(BackendModel::createURLForAction('Index', null, null, ['error' => 'non-existing'])); - - return; - } - - // The command bus will handle the saving of the content block in the database. - $this->get('command_bus')->handle(new DeleteContentBlock($contentBlock)); - - $this->get('event_dispatcher')->dispatch( - ContentBlockDeleted::EVENT_NAME, - new ContentBlockDeleted($contentBlock) - ); - - $this->redirect( - BackendModel::createURLForAction( - 'Index', - null, - null, - [ - 'report' => 'deleted', - 'var' => $contentBlock->getTitle(), - ] - ) - ); - } -} diff --git a/src/Backend/Modules/ContentBlocks/Actions/Edit.php b/src/Backend/Modules/ContentBlocks/Actions/Edit.php deleted file mode 100644 index ef11bd180c..0000000000 --- a/src/Backend/Modules/ContentBlocks/Actions/Edit.php +++ /dev/null @@ -1,176 +0,0 @@ -contentBlock = $this->getContentBlock(); - - if ($this->contentBlock === null) { - $this->redirect(BackendModel::createURLForAction('Index', null, null, ['error' => 'non-existing'])); - - return; - } - - $form = $this->createForm( - ContentBlockType::class, - new UpdateContentBlock($this->contentBlock), - [ - 'theme' => $this->get('fork.settings')->get('Core', 'theme', 'Core'), - 'data_class' => UpdateContentBlock::class, - ] - ); - - $form->handleRequest($this->get('request')); - - if (!$form->isValid()) { - $this->tpl->assign('form', $form->createView()); - - $this->parse(); - $this->display(); - - return; - } - - /** @var UpdateContentBlock $updateContentBlock */ - $updateContentBlock = $form->getData(); - $updateContentBlock->userId = Authentication::getUser()->getUserId(); - - // The command bus will handle the saving of the content block in the database. - $this->get('command_bus')->handle($updateContentBlock); - - $this->get('event_dispatcher')->dispatch( - ContentBlockUpdated::EVENT_NAME, - new ContentBlockUpdated($updateContentBlock->contentBlock) - ); - - $this->redirect( - BackendModel::createURLForAction( - 'Index', - null, - null, - [ - 'report' => 'edited', - 'var' => $updateContentBlock->title, - 'highlight' => 'row-' . $this->contentBlock->getId(), - ] - ) - ); - } - - /** - * @return ContentBlock|null - */ - private function getContentBlock(): ?ContentBlock - { - /** @var ContentBlockRepository $contentBlockRepository */ - $contentBlockRepository = $this->get('content_blocks.repository.content_block'); - - // specific revision? - $revisionId = $this->getParameter('revision', 'int'); - - if ($revisionId !== null) { - $this->tpl->assign('usingRevision', true); - - return $contentBlockRepository->findOneByRevisionIdAndLocale($revisionId, Locale::workingLocale()); - } - - return $contentBlockRepository->findOneByIdAndLocale($this->getParameter('id', 'int'), Locale::workingLocale()); - } - - /** - * Parses a data grid with the revisions in the template - */ - private function parseRevisionsDataGrid(): void - { - // create datagrid - $revisions = new ContentBlockRevisionDataGrid($this->contentBlock, Locale::workingLocale()); - - // hide columns - $revisions->setColumnsHidden(['id', 'revision_id']); - - // disable paging - $revisions->setPaging(false); - - // set headers - $revisions->setHeaderLabels( - [ - 'user_id' => SpoonFilter::ucfirst(Language::lbl('By')), - 'edited_on' => SpoonFilter::ucfirst(Language::lbl('LastEditedOn')), - ] - ); - - // set column-functions - $revisions->setColumnFunction([DataGridFunctions::class, 'getUser'], ['[user_id]'], 'user_id'); - $revisions->setColumnFunction([DataGridFunctions::class, 'getTimeAgo'], ['[edited_on]'], 'edited_on'); - - // check if this action is allowed - if (Authentication::isAllowedAction('Edit')) { - $editRevisionUrl = BackendModel::createURLForAction( - 'Edit', - null, - null, - ['id' => '[id]', 'revision' => '[revision_id]'], - false - ); - // set column URLs - $revisions->setColumnURL('title', $editRevisionUrl); - - // add use column - $revisions->addColumn( - 'use_revision', - null, - Language::lbl('UseThisVersion'), - $editRevisionUrl, - Language::lbl('UseThisVersion') - ); - } - - $this->tpl->assign('revisions', (string) $revisions->getContent()); - } - - /** - * Parse the content block and the revisions - */ - protected function parse(): void - { - parent::parse(); - - $this->tpl->assign('id', $this->contentBlock->getId()); - $this->tpl->assign('title', $this->contentBlock->getTitle()); - $this->tpl->assign('revision_id', $this->contentBlock->getRevisionId()); - - $this->parseRevisionsDataGrid(); - } -} diff --git a/src/Backend/Modules/ContentBlocks/Actions/Index.php b/src/Backend/Modules/ContentBlocks/Actions/Index.php deleted file mode 100644 index e0b78d43cf..0000000000 --- a/src/Backend/Modules/ContentBlocks/Actions/Index.php +++ /dev/null @@ -1,56 +0,0 @@ -loadDataGrid(); - $this->parse(); - $this->display(); - } - - private function loadDataGrid(): void - { - $this->dataGrid = new ContentBlockDataGrid(Locale::workingLocale()); - $this->dataGrid->setSortingColumns(['title']); - - // show the hidden status - $this->dataGrid->addColumn('isHidden', ucfirst(BL::lbl('VisibleOnSite')), '[hidden]'); - $this->dataGrid->setColumnFunction([TemplateModifiers::class, 'showBool'], ['[hidden]', true], 'isHidden'); - - // check if this action is allowed - if (BackendAuthentication::isAllowedAction('Edit')) { - $editUrl = BackendModel::createURLForAction('Edit', null, null, ['id' => '[id]'], false); - $this->dataGrid->setColumnURL('title', $editUrl); - $this->dataGrid->addColumn('edit', null, BL::lbl('Edit'), $editUrl, BL::lbl('Edit')); - } - } - - protected function parse(): void - { - parent::parse(); - - $this->tpl->assign('dataGrid', (string) $this->dataGrid->getContent()); - } -} diff --git a/src/Backend/Modules/ContentBlocks/Command/CopyContentBlocksToOtherLocaleHandler.php b/src/Backend/Modules/ContentBlocks/Command/CopyContentBlocksToOtherLocaleHandler.php deleted file mode 100644 index 711abe4875..0000000000 --- a/src/Backend/Modules/ContentBlocks/Command/CopyContentBlocksToOtherLocaleHandler.php +++ /dev/null @@ -1,60 +0,0 @@ -contentBlockRepository = $contentBlockRepository; - } - - public function handle(CopyContentBlocksToOtherLocale $copyContentBlocksToOtherLocale): void - { - $fromLocaleContentBlocks = (array) $this->contentBlockRepository->findBy( - ['locale' => $copyContentBlocksToOtherLocale->fromLocale, 'status' => ContentBlockStatus::active()] - ); - - $id = $this->contentBlockRepository->getNextIdForLanguage($copyContentBlocksToOtherLocale->toLocale); - array_map( - function (ContentBlock $contentBlock) use ($copyContentBlocksToOtherLocale, &$id) { - $copyContentBlocksToOtherLocale->extraIdMap[$contentBlock->getExtraId()] = $this->getNewExtraId(); - - $otherLocaleContentBlock = ContentBlock::create( - $id++, - $contentBlock->getUserId(), - $copyContentBlocksToOtherLocale->extraIdMap[$contentBlock->getExtraId()], - $copyContentBlocksToOtherLocale->toLocale, - $contentBlock->getTitle(), - $contentBlock->getText(), - $contentBlock->isHidden(), - $contentBlock->getTemplate() - ); - - $this->contentBlockRepository->add($otherLocaleContentBlock); - }, - $fromLocaleContentBlocks - ); - } - - /** - * @return int - */ - private function getNewExtraId(): int - { - return Model::insertExtra( - ModuleExtraType::widget(), - 'ContentBlocks', - 'Detail' - ); - } -} diff --git a/src/Backend/Modules/ContentBlocks/Command/CreateContentBlock.php b/src/Backend/Modules/ContentBlocks/Command/CreateContentBlock.php deleted file mode 100644 index f777a4bdd5..0000000000 --- a/src/Backend/Modules/ContentBlocks/Command/CreateContentBlock.php +++ /dev/null @@ -1,60 +0,0 @@ -language = $language; - } -} diff --git a/src/Backend/Modules/ContentBlocks/Command/CreateContentBlockHandler.php b/src/Backend/Modules/ContentBlocks/Command/CreateContentBlockHandler.php deleted file mode 100644 index 5090101ec7..0000000000 --- a/src/Backend/Modules/ContentBlocks/Command/CreateContentBlockHandler.php +++ /dev/null @@ -1,44 +0,0 @@ -contentBlockRepository = $contentBlockRepository; - } - - public function handle(CreateContentBlock $createContentBlock): void - { - $createContentBlock->contentBlock = ContentBlock::create( - $this->contentBlockRepository->getNextIdForLanguage($createContentBlock->language), - $createContentBlock->userId, - $this->getNewExtraId(), - $createContentBlock->language, - $createContentBlock->title, - $createContentBlock->text, - !$createContentBlock->isVisible, - $createContentBlock->template - ); - - $this->contentBlockRepository->add($createContentBlock->contentBlock); - } - - private function getNewExtraId(): int - { - return Model::insertExtra( - ModuleExtraType::widget(), - 'ContentBlocks', - 'Detail' - ); - } -} diff --git a/src/Backend/Modules/ContentBlocks/Command/UpdateContentBlock.php b/src/Backend/Modules/ContentBlocks/Command/UpdateContentBlock.php deleted file mode 100644 index 5c28c380c2..0000000000 --- a/src/Backend/Modules/ContentBlocks/Command/UpdateContentBlock.php +++ /dev/null @@ -1,56 +0,0 @@ -contentBlock = $contentBlock; - - $this->isVisible = !$contentBlock->isHidden(); - $this->title = $contentBlock->getTitle(); - $this->text = $contentBlock->getText(); - $this->template = $contentBlock->getTemplate(); - $this->userId = $contentBlock->getUserId(); - } -} diff --git a/src/Backend/Modules/ContentBlocks/Command/UpdateContentBlockHandler.php b/src/Backend/Modules/ContentBlocks/Command/UpdateContentBlockHandler.php deleted file mode 100644 index 9ad77d26bc..0000000000 --- a/src/Backend/Modules/ContentBlocks/Command/UpdateContentBlockHandler.php +++ /dev/null @@ -1,30 +0,0 @@ -contentBlockRepository = $contentBlockRepository; - } - - public function handle(UpdateContentBlock $updateContentBlock): void - { - $updateContentBlock->contentBlock = $updateContentBlock->contentBlock->update( - $updateContentBlock->title, - $updateContentBlock->text, - !$updateContentBlock->isVisible, - $updateContentBlock->template, - $updateContentBlock->userId - ); - - $this->contentBlockRepository->add($updateContentBlock->contentBlock); - } -} diff --git a/src/Backend/Modules/ContentBlocks/Config.php b/src/Backend/Modules/ContentBlocks/Config.php index b3075af957..0c1fe4f47a 100644 --- a/src/Backend/Modules/ContentBlocks/Config.php +++ b/src/Backend/Modules/ContentBlocks/Config.php @@ -16,4 +16,10 @@ */ class Config extends BackendBaseConfig { + /** + * The default action + * + * @var string + */ + protected $defaultAction = 'ContentBlockIndex'; } diff --git a/src/Backend/Modules/ContentBlocks/DataGrid/ContentBlockDataGrid.php b/src/Backend/Modules/ContentBlocks/DataGrid/ContentBlockDataGrid.php deleted file mode 100644 index c8c74a52f8..0000000000 --- a/src/Backend/Modules/ContentBlocks/DataGrid/ContentBlockDataGrid.php +++ /dev/null @@ -1,23 +0,0 @@ - ContentBlockStatus::active(), 'language' => $locale] - ); - } -} diff --git a/src/Backend/Modules/ContentBlocks/DataGrid/ContentBlockRevisionDataGrid.php b/src/Backend/Modules/ContentBlocks/DataGrid/ContentBlockRevisionDataGrid.php deleted file mode 100644 index 466a947ab6..0000000000 --- a/src/Backend/Modules/ContentBlocks/DataGrid/ContentBlockRevisionDataGrid.php +++ /dev/null @@ -1,25 +0,0 @@ - ContentBlockStatus::archived(), 'language' => $locale, 'id' => $contentBlock->getId()] - ); - } -} diff --git a/src/Backend/Modules/ContentBlocks/DependencyInjection/ContentBlocksExtension.php b/src/Backend/Modules/ContentBlocks/DependencyInjection/ContentBlocksExtension.php index a694395665..df56052f92 100644 --- a/src/Backend/Modules/ContentBlocks/DependencyInjection/ContentBlocksExtension.php +++ b/src/Backend/Modules/ContentBlocks/DependencyInjection/ContentBlocksExtension.php @@ -18,8 +18,7 @@ class ContentBlocksExtension extends Extension implements PrependExtensionInterf public function load(array $configs, ContainerBuilder $container): void { $loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config')); - $loader->load('command.yml'); - $loader->load('repository.yml'); + $loader->load('services.yml'); } public function prepend(ContainerBuilder $container): void diff --git a/src/Backend/Modules/ContentBlocks/Command/CopyContentBlocksToOtherLocale.php b/src/Backend/Modules/ContentBlocks/Domain/ContentBlock/Command/CopyContentBlocksToOtherLocale.php similarity index 89% rename from src/Backend/Modules/ContentBlocks/Command/CopyContentBlocksToOtherLocale.php rename to src/Backend/Modules/ContentBlocks/Domain/ContentBlock/Command/CopyContentBlocksToOtherLocale.php index 80a2e52611..676f56a837 100644 --- a/src/Backend/Modules/ContentBlocks/Command/CopyContentBlocksToOtherLocale.php +++ b/src/Backend/Modules/ContentBlocks/Domain/ContentBlock/Command/CopyContentBlocksToOtherLocale.php @@ -1,6 +1,6 @@ contentBlockRepository = $contentBlockRepository; + } + + public function handle(CopyContentBlocksToOtherLocale $copyContentBlocksToOtherLocale): void + { + /** @var array $contentBlocksToCopy */ + $contentBlocksToCopy = $this->getContentBlocksToCopy($copyContentBlocksToOtherLocale->fromLocale); + + /** @var int $id */ + $id = $this->contentBlockRepository->getNextIdForLanguage($copyContentBlocksToOtherLocale->toLocale); + + array_map( + function (ContentBlock $contentBlock) use ($copyContentBlocksToOtherLocale, &$id) { + $copyContentBlocksToOtherLocale->extraIdMap[$contentBlock->getExtraId()] = $this->getNewExtraId(); + $dataTransferObject = $contentBlock->getDataTransferObject(); + + // Overwrite some variables + $dataTransferObject->id = $id++; + $dataTransferObject->extraId = $copyContentBlocksToOtherLocale->extraIdMap[$contentBlock->getExtraId()]; + $dataTransferObject->revisionId = null; + $dataTransferObject->locale = $copyContentBlocksToOtherLocale->toLocale; + + $this->contentBlockRepository->add(ContentBlock::fromDataTransferObject($dataTransferObject)); + }, + $contentBlocksToCopy + ); + } + + private function getContentBlocksToCopy(Locale $locale): array + { + return (array) $this->contentBlockRepository->findBy( + [ + 'locale' => $locale, + 'status' => Status::active() + ] + ); + } + + /** + * @return int + */ + private function getNewExtraId(): int + { + return Model::insertExtra( + ModuleExtraType::widget(), + 'ContentBlocks', + 'Detail' + ); + } +} diff --git a/src/Backend/Modules/ContentBlocks/Domain/ContentBlock/Command/CreateContentBlock.php b/src/Backend/Modules/ContentBlocks/Domain/ContentBlock/Command/CreateContentBlock.php new file mode 100644 index 0000000000..5b89261266 --- /dev/null +++ b/src/Backend/Modules/ContentBlocks/Domain/ContentBlock/Command/CreateContentBlock.php @@ -0,0 +1,22 @@ +locale = $locale; + } +} diff --git a/src/Backend/Modules/ContentBlocks/Domain/ContentBlock/Command/CreateContentBlockHandler.php b/src/Backend/Modules/ContentBlocks/Domain/ContentBlock/Command/CreateContentBlockHandler.php new file mode 100644 index 0000000000..3a47658f38 --- /dev/null +++ b/src/Backend/Modules/ContentBlocks/Domain/ContentBlock/Command/CreateContentBlockHandler.php @@ -0,0 +1,39 @@ +contentBlockRepository = $contentBlockRepository; + } + + public function handle(CreateContentBlock $createContentBlock): void + { + $createContentBlock->extraId = $this->getNewExtraId(); + $createContentBlock->id = $this->contentBlockRepository->getNextIdForLanguage($createContentBlock->locale); + + $contentBlock = ContentBlock::fromDataTransferObject($createContentBlock); + $this->contentBlockRepository->add($contentBlock); + + $createContentBlock->setContentBlockEntity($contentBlock); + } + + private function getNewExtraId(): int + { + return Model::insertExtra( + ModuleExtraType::widget(), + 'ContentBlocks', + 'Detail' + ); + } +} diff --git a/src/Backend/Modules/ContentBlocks/Command/DeleteContentBlock.php b/src/Backend/Modules/ContentBlocks/Domain/ContentBlock/Command/DeleteContentBlock.php similarity index 53% rename from src/Backend/Modules/ContentBlocks/Command/DeleteContentBlock.php rename to src/Backend/Modules/ContentBlocks/Domain/ContentBlock/Command/DeleteContentBlock.php index 62941b3ce2..c6b5be8550 100644 --- a/src/Backend/Modules/ContentBlocks/Command/DeleteContentBlock.php +++ b/src/Backend/Modules/ContentBlocks/Domain/ContentBlock/Command/DeleteContentBlock.php @@ -1,14 +1,12 @@ contentBlockRepository = $contentBlockRepository; + } + + public function handle(UpdateContentBlock $updateContentBlock): void + { + $contentBlock = ContentBlock::fromDataTransferObject($updateContentBlock); + $this->contentBlockRepository->add($contentBlock); + + $updateContentBlock->setContentBlockEntity($contentBlock); + } +} diff --git a/src/Backend/Modules/ContentBlocks/Entity/ContentBlock.php b/src/Backend/Modules/ContentBlocks/Domain/ContentBlock/ContentBlock.php similarity index 77% rename from src/Backend/Modules/ContentBlocks/Entity/ContentBlock.php rename to src/Backend/Modules/ContentBlocks/Domain/ContentBlock/ContentBlock.php index 12571bd4c0..7d07e5053f 100644 --- a/src/Backend/Modules/ContentBlocks/Entity/ContentBlock.php +++ b/src/Backend/Modules/ContentBlocks/Domain/ContentBlock/ContentBlock.php @@ -1,16 +1,15 @@ id = $id; $this->userId = $userId; @@ -125,26 +124,29 @@ private function __construct( $this->status = $status; } - public static function create( - int $id, - int $userId, - int $extraId, - Locale $locale, - string $title, - string $text, - bool $isHidden, - string $template = self::DEFAULT_TEMPLATE - ) : self { + public static function fromDataTransferObject(ContentBlockDataTransferObject $dataTransferObject) + { + if ($dataTransferObject->hasExistingContentBlock()) { + $dataTransferObject->getContentBlockEntity()->status = Status::archived(); + + return self::create($dataTransferObject); + } + + return self::create($dataTransferObject); + } + + private static function create(ContentBlockDataTransferObject $dataTransferObject): self + { return new self( - $id, - $userId, - $extraId, - $template, - $locale, - $title, - $text, - $isHidden, - ContentBlockStatus::active() + $dataTransferObject->id, + $dataTransferObject->userId, + $dataTransferObject->extraId, + $dataTransferObject->template, + $dataTransferObject->locale, + $dataTransferObject->title, + $dataTransferObject->text, + !$dataTransferObject->isVisible, + $dataTransferObject->status ); } @@ -193,7 +195,7 @@ public function isHidden(): bool return $this->isHidden; } - public function getStatus(): ContentBlockStatus + public function getStatus(): Status { return $this->status; } @@ -249,24 +251,13 @@ private function updateWidget() Model::updateExtra($this->extraId, 'data', $data); } - public function update(string $title, string $text, bool $isHidden, string $template, int $userId): ContentBlock + public function archive() { - $this->status = ContentBlockStatus::archived(); - - return self::create( - $this->id, - $userId, - $this->extraId, - $this->locale, - $title, - $text, - $isHidden, - $template - ); + $this->status = Status::archived(); } - public function archive() + public function getDataTransferObject(): ContentBlockDataTransferObject { - $this->status = ContentBlockStatus::archived(); + return new ContentBlockDataTransferObject($this); } } diff --git a/src/Backend/Modules/ContentBlocks/Domain/ContentBlock/ContentBlockDataGrid.php b/src/Backend/Modules/ContentBlocks/Domain/ContentBlock/ContentBlockDataGrid.php new file mode 100644 index 0000000000..36e14b4f41 --- /dev/null +++ b/src/Backend/Modules/ContentBlocks/Domain/ContentBlock/ContentBlockDataGrid.php @@ -0,0 +1,44 @@ + Status::active(), 'language' => $locale] + ); + + $this->setSortingColumns(['title']); + + // show the hidden status + $this->addColumn('isHidden', ucfirst(Language::lbl('VisibleOnSite')), '[hidden]'); + $this->setColumnFunction([TemplateModifiers::class, 'showBool'], ['[hidden]', true], 'isHidden'); + + // check if this action is allowed + if (BackendAuthentication::isAllowedAction('ContentBlockEdit')) { + $editUrl = Model::createURLForAction('ContentBlockEdit', null, null, ['id' => '[id]'], false); + $this->setColumnURL('title', $editUrl); + $this->addColumn('edit', null, Language::lbl('Edit'), $editUrl, Language::lbl('Edit')); + } + } + + public static function getHtml(Locale $locale): string + { + return (string) (new self($locale))->getContent(); + } +} diff --git a/src/Backend/Modules/ContentBlocks/Domain/ContentBlock/ContentBlockDataTransferObject.php b/src/Backend/Modules/ContentBlocks/Domain/ContentBlock/ContentBlockDataTransferObject.php new file mode 100644 index 0000000000..fe7507b563 --- /dev/null +++ b/src/Backend/Modules/ContentBlocks/Domain/ContentBlock/ContentBlockDataTransferObject.php @@ -0,0 +1,107 @@ +contentBlockEntity = $contentBlock; + + if (!$this->hasExistingContentBlock()) { + $this->status = Status::active(); + + return; + } + + $this->id = $contentBlock->getId(); + $this->extraId = $contentBlock->getExtraId(); + $this->isVisible = !$contentBlock->isHidden(); + $this->title = $contentBlock->getTitle(); + $this->text = $contentBlock->getText(); + $this->template = $contentBlock->getTemplate(); + $this->userId = $contentBlock->getUserId(); + $this->locale = $contentBlock->getLocale(); + $this->status = $contentBlock->getStatus(); + $this->revisionId = $contentBlock->getRevisionId(); + } + + public function getContentBlockEntity(): ContentBlock + { + return $this->contentBlockEntity; + } + + public function hasExistingContentBlock(): bool + { + return $this->contentBlockEntity instanceof ContentBlock; + } + + public function setContentBlockEntity(ContentBlock $contentBlockEntity): void + { + $this->contentBlockEntity = $contentBlockEntity; + } +} diff --git a/src/Backend/Modules/ContentBlocks/Repository/ContentBlockRepository.php b/src/Backend/Modules/ContentBlocks/Domain/ContentBlock/ContentBlockRepository.php similarity index 55% rename from src/Backend/Modules/ContentBlocks/Repository/ContentBlockRepository.php rename to src/Backend/Modules/ContentBlocks/Domain/ContentBlock/ContentBlockRepository.php index 7cf8877612..bb3a7e9955 100644 --- a/src/Backend/Modules/ContentBlocks/Repository/ContentBlockRepository.php +++ b/src/Backend/Modules/ContentBlocks/Domain/ContentBlock/ContentBlockRepository.php @@ -1,9 +1,10 @@ getEntityManager()->persist($contentBlock); - // We don't flush here, see http://disq.us/p/okjc6b + $this->getEntityManager()->persist($contentBlock); } public function getNextIdForLanguage(Locale $locale): int @@ -38,20 +38,43 @@ public function getNextIdForLanguage(Locale $locale): int ->getSingleScalarResult() + 1; } - public function findOneByIdAndLocale($id, Locale $locale): ?ContentBlock + public function findOneByIdAndLocale(int $id = null, Locale $locale): ?ContentBlock { - return $this->findOneBy(['id' => $id, 'status' => ContentBlockStatus::active(), 'locale' => $locale]); + if ($id === null) { + throw ContentBlockNotFound::forEmptyId(); + } + + /** @var ContentBlock $contentBlock */ + $contentBlock = $this->findOneBy(['id' => $id, 'status' => Status::active(), 'locale' => $locale]); + + if ($contentBlock === null) { + throw ContentBlockNotFound::forId($id); + } + + return $contentBlock; } - public function findOneByRevisionIdAndLocale($revisionId, Locale $locale): ?ContentBlock + public function findOneByRevisionIdAndLocale(int $revisionId = null, Locale $locale): ContentBlock { - return $this->findOneBy( + if ($revisionId === null) { + throw ContentBlockNotFound::forEmptyRevisionId(); + } + + /** @var ContentBlock|null ContentBlock */ + $contentBlock = $this->findOneBy( ['revisionId' => $revisionId, 'locale' => $locale] ); + + if ($contentBlock === null) { + throw ContentBlockNotFound::forRevisionId($revisionId); + } + + return $contentBlock; } public function removeByIdAndLocale($id, Locale $locale): void { + // We don't flush here, see http://disq.us/p/okjc6b array_map( function (ContentBlock $contentBlock) { $this->getEntityManager()->remove($contentBlock); diff --git a/src/Backend/Modules/ContentBlocks/Domain/ContentBlock/ContentBlockRevisionDataGrid.php b/src/Backend/Modules/ContentBlocks/Domain/ContentBlock/ContentBlockRevisionDataGrid.php new file mode 100644 index 0000000000..fcee55fe1d --- /dev/null +++ b/src/Backend/Modules/ContentBlocks/Domain/ContentBlock/ContentBlockRevisionDataGrid.php @@ -0,0 +1,72 @@ + Status::archived(), 'language' => $locale, 'id' => $contentBlock->getId()] + ); + + // hide columns + $this->setColumnsHidden(['id', 'revision_id']); + + // disable paging + $this->setPaging(false); + + // set headers + $this->setHeaderLabels( + [ + 'user_id' => ucfirst(Language::lbl('By')), + 'edited_on' => ucfirst(Language::lbl('LastEditedOn')), + ] + ); + + // set column-functions + $this->setColumnFunction([DataGridFunctions::class, 'getUser'], ['[user_id]'], 'user_id'); + $this->setColumnFunction([DataGridFunctions::class, 'getTimeAgo'], ['[edited_on]'], 'edited_on'); + + // check if this action is allowed + if (Authentication::isAllowedAction('Edit')) { + $editRevisionUrl = Model::createURLForAction( + 'ContentBlockEdit', + null, + null, + ['id' => '[id]', 'revision' => '[revision_id]'], + false + ); + // set column URLs + $this->setColumnURL('title', $editRevisionUrl); + + // add use column + $this->addColumn( + 'use_revision', + null, + Language::lbl('UseThisVersion'), + $editRevisionUrl, + Language::lbl('UseThisVersion') + ); + } + } + + public static function getHtml(ContentBlock $contentBlock, Locale $locale): string + { + return (string) (new self($contentBlock, $locale))->getContent(); + } +} diff --git a/src/Backend/Modules/ContentBlocks/Form/ContentBlockType.php b/src/Backend/Modules/ContentBlocks/Domain/ContentBlock/ContentBlockType.php similarity index 92% rename from src/Backend/Modules/ContentBlocks/Form/ContentBlockType.php rename to src/Backend/Modules/ContentBlocks/Domain/ContentBlock/ContentBlockType.php index a2a9669fb1..2e96d6c7ac 100644 --- a/src/Backend/Modules/ContentBlocks/Form/ContentBlockType.php +++ b/src/Backend/Modules/ContentBlocks/Domain/ContentBlock/ContentBlockType.php @@ -1,9 +1,9 @@ setRequired('theme'); - $resolver->setDefaults(['data_class' => CreateContentBlock::class]); + $resolver->setDefaults(['data_class' => ContentBlockDataTransferObject::class]); } public function getBlockPrefix(): string diff --git a/src/Backend/Modules/ContentBlocks/Event/ContentBlockCreated.php b/src/Backend/Modules/ContentBlocks/Domain/ContentBlock/Event/ContentBlockCreated.php similarity index 77% rename from src/Backend/Modules/ContentBlocks/Event/ContentBlockCreated.php rename to src/Backend/Modules/ContentBlocks/Domain/ContentBlock/Event/ContentBlockCreated.php index d21c44a74f..d516676085 100644 --- a/src/Backend/Modules/ContentBlocks/Event/ContentBlockCreated.php +++ b/src/Backend/Modules/ContentBlocks/Domain/ContentBlock/Event/ContentBlockCreated.php @@ -1,6 +1,6 @@ - - - - - - - - - - - - - - - @@ -31,20 +16,22 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + - + @@ -57,20 +44,20 @@ - - - - - - - - - - - - + + + + + + + + + + + + - + @@ -83,6 +70,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Backend/Modules/ContentBlocks/Installer/Installer.php b/src/Backend/Modules/ContentBlocks/Installer/Installer.php index a6bc9d0240..6b654d1424 100644 --- a/src/Backend/Modules/ContentBlocks/Installer/Installer.php +++ b/src/Backend/Modules/ContentBlocks/Installer/Installer.php @@ -11,7 +11,7 @@ use Backend\Core\Engine\Model; use Backend\Core\Installer\ModuleInstaller; -use Backend\Modules\ContentBlocks\Entity\ContentBlock; +use Backend\Modules\ContentBlocks\Domain\ContentBlock\ContentBlock; /** * Installer for the content blocks module @@ -35,8 +35,8 @@ private function configureBackendNavigation(): void $this->setNavigation( $navigationModulesId, $this->getModule(), - 'content_blocks/index', - ['content_blocks/add', 'content_blocks/edit'] + 'content_blocks/content_block_index', + ['content_blocks/content_block_add', 'content_blocks/content_block_edit'] ); } @@ -44,10 +44,10 @@ private function configureBackendRights(): void { $this->setModuleRights(1, $this->getModule()); - $this->setActionRights(1, $this->getModule(), 'Add'); - $this->setActionRights(1, $this->getModule(), 'Delete'); - $this->setActionRights(1, $this->getModule(), 'Edit'); - $this->setActionRights(1, $this->getModule(), 'Index'); + $this->setActionRights(1, $this->getModule(), 'ContentBlockAdd'); + $this->setActionRights(1, $this->getModule(), 'ContentBlockDelete'); + $this->setActionRights(1, $this->getModule(), 'ContentBlockEdit'); + $this->setActionRights(1, $this->getModule(), 'ContentBlockIndex'); } private function configureEntities(): void diff --git a/src/Backend/Modules/ContentBlocks/Layout/Templates/Add.html.twig b/src/Backend/Modules/ContentBlocks/Layout/Templates/ContentBlockAdd.html.twig similarity index 100% rename from src/Backend/Modules/ContentBlocks/Layout/Templates/Add.html.twig rename to src/Backend/Modules/ContentBlocks/Layout/Templates/ContentBlockAdd.html.twig diff --git a/src/Backend/Modules/ContentBlocks/Layout/Templates/Edit.html.twig b/src/Backend/Modules/ContentBlocks/Layout/Templates/ContentBlockEdit.html.twig similarity index 91% rename from src/Backend/Modules/ContentBlocks/Layout/Templates/Edit.html.twig rename to src/Backend/Modules/ContentBlocks/Layout/Templates/ContentBlockEdit.html.twig index 909a5e6df2..b0b16ff135 100644 --- a/src/Backend/Modules/ContentBlocks/Layout/Templates/Edit.html.twig +++ b/src/Backend/Modules/ContentBlocks/Layout/Templates/ContentBlockEdit.html.twig @@ -51,7 +51,7 @@
- {% if showContentBlocksDelete %} + {% if showContentBlocksContentBlockDelete %}
- {% if showContentBlocksDelete %} + {% if showContentBlocksContentBlockDelete %}