diff --git a/app/AdminModule/CmsModule/Components/DocumentTagsGridControl.php b/app/AdminModule/CmsModule/Components/DocumentTagsGridControl.php index 3871beae8..284e2b616 100644 --- a/app/AdminModule/CmsModule/Components/DocumentTagsGridControl.php +++ b/app/AdminModule/CmsModule/Components/DocumentTagsGridControl.php @@ -20,6 +20,7 @@ use Ublaboo\DataGrid\Exception\DataGridException; use function array_keys; +use function assert; use function count; /** @@ -71,11 +72,11 @@ public function createComponentDocumentTagsGrid(string $name): void $grid->setDefaultSort(['name' => 'ASC']); $grid->setPagination(false); - $grid->addColumnText('name', 'admin.cms.tags_name'); + $grid->addColumnText('name', 'admin.cms.documents.tags.column.name'); - $grid->addColumnText('roles', 'admin.cms.tags_roles', 'rolesText') + $grid->addColumnText('roles', 'admin.cms.documents.tags.column.roles', 'rolesText') ->setRendererOnCondition(function () { - return $this->translator->translate('admin.cms.tags_roles_all'); + return $this->translator->translate('admin.cms.documents.tags.column.roles_all'); }, function (Tag $tag) { return count($this->roleRepository->findAll()) === $tag->getRoles()->count(); }); @@ -84,24 +85,24 @@ public function createComponentDocumentTagsGrid(string $name): void $grid->addInlineAdd()->setPositionTop()->onControlAdd[] = function (Container $container) use ($rolesOptions): void { $container->addText('name', '') - ->addRule(Form::FILLED, 'admin.cms.tags_name_empty') - ->addRule(Form::IS_NOT_IN, 'admin.cms.tags_name_exists', $this->tagRepository->findAllNames()); + ->addRule(Form::FILLED, 'admin.cms.documents.tags.column.name_empty') + ->addRule(Form::IS_NOT_IN, 'admin.cms.documents.tags.column.name_exists', $this->tagRepository->findAllNames()); $container->addMultiSelect('roles', '', $rolesOptions)->setHtmlAttribute('class', 'datagrid-multiselect') ->setDefaultValue(array_keys($rolesOptions)) - ->addRule(Form::FILLED, 'admin.cms.tags_roles_empty'); + ->addRule(Form::FILLED, 'admin.cms.documents.tags.column.roles_empty'); }; $grid->getInlineAdd()->onSubmit[] = [$this, 'add']; $grid->addInlineEdit()->onControlAdd[] = static function (Container $container) use ($rolesOptions): void { $container->addText('name', '') - ->addRule(Form::FILLED, 'admin.cms.tags_name_empty'); + ->addRule(Form::FILLED, 'admin.cms.documents.tags.column.name_empty'); $container->addMultiSelect('roles', '', $rolesOptions)->setHtmlAttribute('class', 'datagrid-multiselect') - ->addRule(Form::FILLED, 'admin.cms.tags_roles_empty'); + ->addRule(Form::FILLED, 'admin.cms.documents.tags.column.roles_empty'); }; $grid->getInlineEdit()->onSetDefaults[] = function (Container $container, Tag $item): void { - /** @var TextInput $nameText */ $nameText = $container['name']; - $nameText->addRule(Form::IS_NOT_IN, 'admin.cms.tags_name_exists', $this->tagRepository->findOthersNames($item->getId())); + assert($nameText instanceof TextInput); + $nameText->addRule(Form::IS_NOT_IN, 'admin.cms.documents.tags.column.name_exists', $this->tagRepository->findOthersNames($item->getId())); $container->setDefaults([ 'name' => $item->getName(), @@ -116,7 +117,7 @@ public function createComponentDocumentTagsGrid(string $name): void ->setClass('btn btn-xs btn-danger') ->addAttributes([ 'data-toggle' => 'confirmation', - 'data-content' => $this->translator->translate('admin.cms.tags_delete_confirm'), + 'data-content' => $this->translator->translate('admin.cms.documents.tags.action.delete_confirm'), ]); } @@ -135,7 +136,7 @@ public function add(stdClass $values): void $this->tagRepository->save($tag); - $this->getPresenter()->flashMessage('admin.cms.tags_saved', 'success'); + $this->getPresenter()->flashMessage('admin.cms.documents.tags.message.save_success', 'success'); $this->redirect('this'); } @@ -155,7 +156,7 @@ public function edit(string $id, stdClass $values): void $this->tagRepository->save($tag); - $this->getPresenter()->flashMessage('admin.cms.tags_saved', 'success'); + $this->getPresenter()->flashMessage('admin.cms.documents.tags.message.save_success', 'success'); $this->redirect('this'); } @@ -171,7 +172,7 @@ public function handleDelete(int $id): void $tag = $this->tagRepository->findById($id); $this->tagRepository->remove($tag); - $this->getPresenter()->flashMessage('admin.cms.tags_deleted', 'success'); + $this->getPresenter()->flashMessage('admin.cms.documents.tags.message.delete_success', 'success'); $this->redirect('this'); } diff --git a/app/AdminModule/CmsModule/Components/DocumentsGridControl.php b/app/AdminModule/CmsModule/Components/DocumentsGridControl.php index d43fcf345..e2a316a9e 100644 --- a/app/AdminModule/CmsModule/Components/DocumentsGridControl.php +++ b/app/AdminModule/CmsModule/Components/DocumentsGridControl.php @@ -18,12 +18,13 @@ use Nette\Http\FileUpload; use Nette\Localization\ITranslator; use Nette\Utils\Html; -use Nette\Utils\Random; -use Nette\Utils\Strings; use stdClass; use Ublaboo\DataGrid\DataGrid; use Ublaboo\DataGrid\Exception\DataGridException; +use function assert; +use function basename; + use const UPLOAD_ERR_OK; /** @@ -75,9 +76,9 @@ public function createComponentDocumentsGrid(string $name): void $grid->setDefaultSort(['name' => 'ASC']); $grid->setPagination(false); - $grid->addColumnText('name', 'admin.cms.documents_name'); + $grid->addColumnText('name', 'admin.cms.documents.column.name'); - $grid->addColumnText('tags', 'admin.cms.documents_tags') + $grid->addColumnText('tags', 'admin.cms.documents.column.tags') ->setRenderer(static function (Document $row) { $tags = Html::el(); foreach ($row->getTags() as $tag) { @@ -90,34 +91,32 @@ public function createComponentDocumentsGrid(string $name): void return $tags; }); - $grid->addColumnText('file', 'admin.cms.documents_file') - ->setRenderer(function (Document $row) { + $grid->addColumnText('file', 'admin.cms.documents.column.file') + ->setRenderer(static function (Document $document) { return Html::el('a') - ->setAttribute('href', $this->getPresenter()->getTemplate()->basePath - . '/files' . $row->getFile()) + ->setAttribute('href', $document->getFile()) ->setAttribute('target', '_blank') ->setAttribute('class', 'btn btn-xs btn-secondary') - ->addHtml( - Html::el('span')->setAttribute('class', 'fa fa-download') - ); + ->addHtml(Html::el('span')->setAttribute('class', 'fa fa-download')) + ->addText(' ' . basename($document->getFile())); }); - $grid->addColumnText('description', 'admin.cms.documents_description'); + $grid->addColumnText('description', 'admin.cms.documents.column.description'); - $grid->addColumnDateTime('timestamp', 'admin.cms.documents_timestamp') + $grid->addColumnDateTime('timestamp', 'admin.cms.documents.column.timestamp') ->setFormat(Helpers::DATETIME_FORMAT); $tagsOptions = $this->tagRepository->getTagsOptions(); $grid->addInlineAdd()->setPositionTop()->onControlAdd[] = static function (Container $container) use ($tagsOptions): void { $container->addText('name', '') - ->addRule(Form::FILLED, 'admin.cms.documents_name_empty'); + ->addRule(Form::FILLED, 'admin.cms.documents.column.name_empty'); $container->addMultiSelect('tags', '', $tagsOptions)->setHtmlAttribute('class', 'datagrid-multiselect') - ->addRule(Form::FILLED, 'admin.cms.documents_tags_empty'); + ->addRule(Form::FILLED, 'admin.cms.documents.column.tags_empty'); $container->addUpload('file', '')->setHtmlAttribute('class', 'datagrid-upload') - ->addRule(Form::FILLED, 'admin.cms.documents_file_empty'); + ->addRule(Form::FILLED, 'admin.cms.documents.column.file_empty'); $container->addText('description', ''); }; @@ -125,10 +124,10 @@ public function createComponentDocumentsGrid(string $name): void $grid->addInlineEdit()->onControlAdd[] = static function (Container $container) use ($tagsOptions): void { $container->addText('name', '') - ->addRule(Form::FILLED, 'admin.cms.documents_name_empty'); + ->addRule(Form::FILLED, 'admin.cms.documents.column.name_empty'); $container->addMultiSelect('tags', '', $tagsOptions)->setHtmlAttribute('class', 'datagrid-multiselect') - ->addRule(Form::FILLED, 'admin.cms.documents_tags_empty'); + ->addRule(Form::FILLED, 'admin.cms.documents.column.tags_empty'); $container->addUpload('file', '')->setHtmlAttribute('class', 'datagrid-upload'); @@ -149,7 +148,7 @@ public function createComponentDocumentsGrid(string $name): void ->setClass('btn btn-xs btn-danger') ->addAttributes([ 'data-toggle' => 'confirmation', - 'data-content' => $this->translator->translate('admin.cms.documents_delete_confirm'), + 'data-content' => $this->translator->translate('admin.cms.documents.action.delete_confirm'), ]); } @@ -162,8 +161,7 @@ public function createComponentDocumentsGrid(string $name): void public function add(stdClass $values): void { $file = $values->file; - $path = $this->generatePath($file); - $this->filesService->save($file, $path); + $path = $this->filesService->save($file, Document::PATH, true, $file->name); $document = new Document(); @@ -175,7 +173,7 @@ public function add(stdClass $values): void $this->documentRepository->save($document); - $this->getPresenter()->flashMessage('admin.cms.documents_saved', 'success'); + $this->getPresenter()->flashMessage('admin.cms.documents.message.save_success', 'success'); $this->redirect('this'); } @@ -190,13 +188,11 @@ public function edit(string $id, stdClass $values): void { $document = $this->documentRepository->findById((int) $id); - /** @var FileUpload $file */ $file = $values->file; + assert($file instanceof FileUpload); if ($file->getError() == UPLOAD_ERR_OK) { $this->filesService->delete($this->documentRepository->findById((int) $id)->getFile()); - $path = $this->generatePath($file); - $this->filesService->save($file, $path); - + $path = $this->filesService->save($file, Document::PATH, true, $file->name); $document->setFile($path); $document->setTimestamp(new DateTimeImmutable()); } @@ -207,7 +203,7 @@ public function edit(string $id, stdClass $values): void $this->documentRepository->save($document); - $this->getPresenter()->flashMessage('admin.cms.documents_saved', 'success'); + $this->getPresenter()->flashMessage('admin.cms.documents.message.save_success', 'success'); $this->redirect('this'); } @@ -224,16 +220,8 @@ public function handleDelete(int $id): void $this->filesService->delete($document->getFile()); $this->documentRepository->remove($document); - $this->getPresenter()->flashMessage('admin.cms.documents_deleted', 'success'); + $this->getPresenter()->flashMessage('admin.cms.documents.message.delete_success', 'success'); $this->redirect('this'); } - - /** - * Vygeneruje cestu dokumentu. - */ - private function generatePath(FileUpload $file): string - { - return Document::PATH . '/' . Random::generate(5) . '/' . Strings::webalize($file->name, '.'); - } } diff --git a/app/AdminModule/CmsModule/Components/FaqGridControl.php b/app/AdminModule/CmsModule/Components/FaqGridControl.php index 676fc8f9f..906a153fe 100644 --- a/app/AdminModule/CmsModule/Components/FaqGridControl.php +++ b/app/AdminModule/CmsModule/Components/FaqGridControl.php @@ -46,7 +46,7 @@ public function render(): void * @throws DataGridColumnStatusException * @throws DataGridException */ - public function createComponentFaqGrid(string $name): void + public function createComponentFaqGrid(string $name): DataGrid { $grid = new DataGrid($this, $name); $grid->setTranslator($this->translator); @@ -55,20 +55,20 @@ public function createComponentFaqGrid(string $name): void $grid->setDataSource($this->faqRepository->createQueryBuilder('f')->orderBy('f.position')); $grid->setPagination(false); - $grid->addColumnText('question', 'admin.cms.faq_question'); + $grid->addColumnText('question', 'admin.cms.faq.common.question'); - $grid->addColumnText('author', 'admin.cms.faq_author', 'author.displayName'); + $grid->addColumnText('author', 'admin.cms.faq.column.author', 'author.displayName'); - $grid->addColumnStatus('public', 'admin.cms.faq_public') - ->addOption(false, 'admin.cms.faq_public_private') + $grid->addColumnStatus('public', 'admin.cms.faq.column.public') + ->addOption(false, 'admin.cms.faq.column.public_private') ->setClass('btn-danger') ->endOption() - ->addOption(true, 'admin.cms.faq_public_public') + ->addOption(true, 'admin.cms.faq.column.public_public') ->setClass('btn-success') ->endOption() ->onChange[] = [$this, 'changeStatus']; - $grid->addColumnText('answered', 'admin.cms.faq_answered') + $grid->addColumnText('answered', 'admin.cms.faq.column.answered') ->setReplacement([ false => $this->translator->translate('admin.common.no'), true => $this->translator->translate('admin.common.yes'), @@ -86,8 +86,10 @@ public function createComponentFaqGrid(string $name): void ->setClass('btn btn-xs btn-danger') ->addAttributes([ 'data-toggle' => 'confirmation', - 'data-content' => $this->translator->translate('admin.cms.faq_delete_confirm'), + 'data-content' => $this->translator->translate('admin.cms.faq.action.delete_confirm'), ]); + + return $grid; } /** @@ -101,7 +103,7 @@ public function handleDelete(int $id): void $faq = $this->faqRepository->findById($id); $this->faqRepository->remove($faq); - $this->getPresenter()->flashMessage('admin.cms.faq_deleted', 'success'); + $this->getPresenter()->flashMessage('admin.cms.faq.message.delete_success', 'success'); $this->redirect('this'); } @@ -117,12 +119,11 @@ public function handleSort(?string $item_id, ?string $prev_id, ?string $next_id) $this->faqRepository->sort((int) $item_id, (int) $prev_id, (int) $next_id); $p = $this->getPresenter(); - $p->flashMessage('admin.cms.faq_order_saved', 'success'); + $p->flashMessage('admin.cms.faq.message.order_save_success', 'success'); if ($p->isAjax()) { $p->redrawControl('flashes'); - /** @var DataGrid $faqGrid */ - $faqGrid = $this['faqGrid']; + $faqGrid = $this->getComponent('faqGrid'); $faqGrid->reload(); } else { $this->redirect('this'); @@ -143,12 +144,11 @@ public function changeStatus(string $id, string $public): void $this->faqRepository->save($faq); $p = $this->getPresenter(); - $p->flashMessage('admin.cms.faq_changed_public', 'success'); + $p->flashMessage('admin.cms.faq.message.public_change_success', 'success'); if ($p->isAjax()) { $p->redrawControl('flashes'); - /** @var DataGrid $faqGrid */ - $faqGrid = $this['faqGrid']; + $faqGrid = $this->getComponent('faqGrid'); $faqGrid->redrawItem($id); } else { $this->redirect('this'); diff --git a/app/AdminModule/CmsModule/Components/NewsGridControl.php b/app/AdminModule/CmsModule/Components/NewsGridControl.php index 3bda9df9b..3a679d976 100644 --- a/app/AdminModule/CmsModule/Components/NewsGridControl.php +++ b/app/AdminModule/CmsModule/Components/NewsGridControl.php @@ -46,7 +46,7 @@ public function render(): void * @throws DataGridColumnStatusException * @throws DataGridException */ - public function createComponentNewsGrid(string $name): void + public function createComponentNewsGrid(string $name): DataGrid { $grid = new DataGrid($this, $name); $grid->setTemplateFile(__DIR__ . '/templates/news_grid_template.latte'); @@ -55,20 +55,20 @@ public function createComponentNewsGrid(string $name): void $grid->setDefaultSort(['published' => 'DESC']); $grid->setPagination(false); - $grid->addColumnDateTime('published', 'admin.cms.news_published') + $grid->addColumnDateTime('published', 'admin.cms.news.common.published') ->setFormat(Helpers::DATETIME_FORMAT); - $columnMandatory = $grid->addColumnStatus('pinned', 'admin.cms.news_pinned'); + $columnMandatory = $grid->addColumnStatus('pinned', 'admin.cms.news.column.pinned'); $columnMandatory - ->addOption(false, 'admin.cms.news_pinned_unpinned') + ->addOption(false, 'admin.cms.news.column.pinned_unpinned') ->setClass('btn-primary') ->endOption() - ->addOption(true, 'admin.cms.news_pinned_pinned') + ->addOption(true, 'admin.cms.news.column.pinned_pinned') ->setClass('btn-warning') ->endOption() ->onChange[] = [$this, 'changePinned']; - $grid->addColumnText('text', 'admin.cms.news_text'); + $grid->addColumnText('text', 'admin.cms.news.common.text'); $grid->addToolbarButton('News:add') ->setIcon('plus') @@ -82,8 +82,10 @@ public function createComponentNewsGrid(string $name): void ->setClass('btn btn-xs btn-danger') ->addAttributes([ 'data-toggle' => 'confirmation', - 'data-content' => $this->translator->translate('admin.cms.news_delete_confirm'), + 'data-content' => $this->translator->translate('admin.cms.news.action.delete_confirm'), ]); + + return $grid; } /** @@ -97,7 +99,7 @@ public function handleDelete(int $id): void $news = $this->newsRepository->findById($id); $this->newsRepository->remove($news); - $this->getPresenter()->flashMessage('admin.cms.news_deleted', 'success'); + $this->getPresenter()->flashMessage('admin.cms.news.message.delete_success', 'success'); $this->redirect('this'); } @@ -115,12 +117,11 @@ public function changePinned(string $id, string $pinned): void $this->newsRepository->save($news); $p = $this->getPresenter(); - $p->flashMessage('admin.cms.news_changed_pinned', 'success'); + $p->flashMessage('admin.cms.news.message.pinned_change_success', 'success'); if ($p->isAjax()) { $p->redrawControl('flashes'); - /** @var DataGrid $newsGrid */ - $newsGrid = $this['newsGrid']; + $newsGrid = $this->getComponent('newsGrid'); $newsGrid->redrawItem($id); } else { $this->redirect('this'); diff --git a/app/AdminModule/CmsModule/Components/PagesGridControl.php b/app/AdminModule/CmsModule/Components/PagesGridControl.php index 5ad038f86..b55a07aef 100644 --- a/app/AdminModule/CmsModule/Components/PagesGridControl.php +++ b/app/AdminModule/CmsModule/Components/PagesGridControl.php @@ -25,6 +25,7 @@ use Ublaboo\DataGrid\Exception\DataGridException; use function array_keys; +use function assert; use function count; /** @@ -73,7 +74,7 @@ public function render(): void * @throws DataGridColumnStatusException * @throws DataGridException */ - public function createComponentPagesGrid(string $name): void + public function createComponentPagesGrid(string $name): DataGrid { $grid = new DataGrid($this, $name); $grid->setTranslator($this->translator); @@ -82,44 +83,44 @@ public function createComponentPagesGrid(string $name): void $grid->setDataSource($this->pageRepository->createQueryBuilder('p')->orderBy('p.position')); $grid->setPagination(false); - $grid->addColumnText('name', 'admin.cms.pages_name'); + $grid->addColumnText('name', 'admin.cms.pages.column.name'); - $grid->addColumnText('slug', 'admin.cms.pages_slug'); + $grid->addColumnText('slug', 'admin.cms.pages.column.slug'); - $grid->addColumnStatus('public', 'admin.cms.pages_public') - ->addOption(false, 'admin.cms.pages_public_private') + $grid->addColumnStatus('public', 'admin.cms.pages.column.public') + ->addOption(false, 'admin.cms.pages.column.public_private') ->setClass('btn-danger') ->endOption() - ->addOption(true, 'admin.cms.pages_public_public') + ->addOption(true, 'admin.cms.pages.column.public_public') ->setClass('btn-success') ->endOption() ->onChange[] = [$this, 'changeStatus']; - $grid->addColumnText('roles', 'admin.cms.pages_roles', 'rolesText') + $grid->addColumnText('roles', 'admin.cms.pages.column.roles', 'rolesText') ->setRendererOnCondition(function () { - return $this->translator->translate('admin.cms.pages_roles_all'); + return $this->translator->translate('admin.cms.pages.column.roles_all'); }, function (Page $page) { return count($this->roleRepository->findAll()) === $page->getRoles()->count(); }); $rolesOptions = $this->aclService->getRolesWithoutRolesOptions([]); $publicOptions = [ - false => 'admin.cms.pages_public_private', - true => 'admin.cms.pages_public_public', + false => 'admin.cms.pages.column.public_private', + true => 'admin.cms.pages.column.public_public', ]; $grid->addInlineAdd()->setPositionTop()->onControlAdd[] = function (Container $container) use ($rolesOptions, $publicOptions): void { $container->addText('name', '') - ->addRule(Form::FILLED, 'admin.cms.pages_name_empty'); + ->addRule(Form::FILLED, 'admin.cms.pages.column.name_empty'); $container->addText('slug', '') - ->addRule(Form::FILLED, 'admin.cms.pages_slug_empty') - ->addRule(Form::PATTERN, 'admin.cms.pages_slug_format', '^[a-z0-9-]*$') - ->addRule(Form::IS_NOT_IN, 'admin.cms.pages_slug_exists', $this->pageRepository->findAllSlugs()); + ->addRule(Form::FILLED, 'admin.cms.pages.column.slug_empty') + ->addRule(Form::PATTERN, 'admin.cms.pages.column.slug_format', '^[a-z0-9-]*$') + ->addRule(Form::IS_NOT_IN, 'admin.cms.pages.column.slug_exists', $this->pageRepository->findAllSlugs()); $container->addMultiSelect('roles', '', $rolesOptions)->setHtmlAttribute('class', 'datagrid-multiselect') ->setDefaultValue(array_keys($rolesOptions)) - ->addRule(Form::FILLED, 'admin.cms.pages_roles_empty'); + ->addRule(Form::FILLED, 'admin.cms.pages.column.roles_empty'); $container->addSelect('public', '', $publicOptions); }; @@ -127,21 +128,21 @@ public function createComponentPagesGrid(string $name): void $grid->addInlineEdit()->onControlAdd[] = static function (Container $container) use ($rolesOptions, $publicOptions): void { $container->addText('name', '') - ->addRule(Form::FILLED, 'admin.cms.pages_name_empty'); + ->addRule(Form::FILLED, 'admin.cms.pages.column.name_empty'); $container->addText('slug', '') - ->addRule(Form::FILLED, 'admin.cms.pages_slug_empty') - ->addRule(Form::PATTERN, 'admin.cms.pages_slug_format', '^([a-z0-9-]*)|/$'); + ->addRule(Form::FILLED, 'admin.cms.pages.column.slug_empty') + ->addRule(Form::PATTERN, 'admin.cms.pages.column.slug_format', '^([a-z0-9-]*)|/$'); $container->addMultiSelect('roles', '', $rolesOptions)->setHtmlAttribute('class', 'datagrid-multiselect') - ->addRule(Form::FILLED, 'admin.cms.pages_roles_empty'); + ->addRule(Form::FILLED, 'admin.cms.pages.column.roles_empty'); $container->addSelect('public', '', $publicOptions); }; $grid->getInlineEdit()->onSetDefaults[] = function (Container $container, Page $item): void { - /** @var TextInput $slugText */ $slugText = $container['slug']; - $slugText->addRule(Form::IS_NOT_IN, 'admin.cms.pages_slug_exists', $this->pageRepository->findOthersSlugs($item->getId())); + assert($slugText instanceof TextInput); + $slugText->addRule(Form::IS_NOT_IN, 'admin.cms.pages.column.slug_exists', $this->pageRepository->findOthersSlugs($item->getId())); $container->setDefaults([ 'name' => $item->getName(), @@ -152,7 +153,7 @@ public function createComponentPagesGrid(string $name): void }; $grid->getInlineEdit()->onSubmit[] = [$this, 'edit']; - $grid->addAction('content', 'admin.cms.pages_edit_content', 'Pages:content') + $grid->addAction('content', 'admin.cms.pages.action.edit_content', 'Pages:content') ->addParameters(['area' => 'main']) ->setClass('btn btn-xs btn-primary'); @@ -162,11 +163,13 @@ public function createComponentPagesGrid(string $name): void ->setClass('btn btn-xs btn-danger') ->addAttributes([ 'data-toggle' => 'confirmation', - 'data-content' => $this->translator->translate('admin.cms.pages_delete_confirm'), + 'data-content' => $this->translator->translate('admin.cms.pages.action.delete_confirm'), ]); $grid->allowRowsAction('delete', static function (Page $item) { return $item->getSlug() !== '/'; }); + + return $grid; } /** @@ -187,7 +190,7 @@ public function add(stdClass $values): void $this->cmsService->savePage($page); $p = $this->getPresenter(); - $p->flashMessage('admin.cms.pages_saved', 'success'); + $p->flashMessage('admin.cms.pages.message.save_success', 'success'); $this->redirect('this'); } @@ -212,7 +215,7 @@ public function edit(string $id, stdClass $values): void $this->cmsService->savePage($page); $p = $this->getPresenter(); - $p->flashMessage('admin.cms.pages_saved', 'success'); + $p->flashMessage('admin.cms.pages.message.save_success', 'success'); $this->redirect('this'); } @@ -230,7 +233,7 @@ public function handleDelete(int $id): void $page = $this->pageRepository->findById($id); $this->cmsService->removePage($page); - $this->getPresenter()->flashMessage('admin.cms.pages_deleted', 'success'); + $this->getPresenter()->flashMessage('admin.cms.pages.message.delete_success', 'success'); $this->redirect('this'); } @@ -247,12 +250,11 @@ public function handleSort(?string $item_id, ?string $prev_id, ?string $next_id) $this->cmsService->sort((int) $item_id, (int) $prev_id, (int) $next_id); $p = $this->getPresenter(); - $p->flashMessage('admin.cms.pages_order_saved', 'success'); + $p->flashMessage('admin.cms.pages.message.order_save_success', 'success'); if ($p->isAjax()) { $p->redrawControl('flashes'); - /** @var DataGrid $pagesGrid */ - $pagesGrid = $this['pagesGrid']; + $pagesGrid = $this->getComponent('pagesGrid'); $pagesGrid->reload(); } else { $this->redirect('this'); @@ -274,18 +276,17 @@ public function changeStatus(string $id, string $public): void $page = $this->pageRepository->findById((int) $id); if ($page->getSlug() === '/' && ! $public) { - $p->flashMessage('admin.cms.pages_change_public_denied', 'danger'); + $p->flashMessage('admin.cms.pages.message.public_change_denied', 'danger'); } else { $page->setPublic((bool) $public); $this->cmsService->savePage($page); - $p->flashMessage('admin.cms.pages_changed_public', 'success'); + $p->flashMessage('admin.cms.pages.message.public_change_success', 'success'); } if ($p->isAjax()) { $p->redrawControl('flashes'); - /** @var DataGrid $pagesGrid */ - $pagesGrid = $this['pagesGrid']; + $pagesGrid = $this->getComponent('pagesGrid'); $pagesGrid->redrawItem($id); } else { $this->redirect('this'); diff --git a/app/AdminModule/CmsModule/Forms/FaqFormFactory.php b/app/AdminModule/CmsModule/Forms/FaqFormFactory.php index 0a1039658..a63b2d8fd 100644 --- a/app/AdminModule/CmsModule/Forms/FaqFormFactory.php +++ b/app/AdminModule/CmsModule/Forms/FaqFormFactory.php @@ -60,13 +60,13 @@ public function create(?int $id, int $userId): Form $form->addHidden('id'); - $form->addTextArea('question', 'admin.cms.faq_question') - ->addRule(Form::FILLED, 'admin.cms.faq_question_empty'); + $form->addTextArea('question', 'admin.cms.faq.common.question') + ->addRule(Form::FILLED, 'admin.cms.faq.form.question_empty'); - $form->addTextArea('answer', 'admin.cms.faq_answer') + $form->addTextArea('answer', 'admin.cms.faq.form.answer') ->setHtmlAttribute('class', 'tinymce-paragraph'); - $form->addCheckbox('public', 'admin.cms.faq_public_form'); + $form->addCheckbox('public', 'admin.cms.faq.form.public'); $form->addSubmit('submit', 'admin.common.save'); diff --git a/app/AdminModule/CmsModule/Forms/NewsFormFactory.php b/app/AdminModule/CmsModule/Forms/NewsFormFactory.php index 59b3be000..80cbd973b 100644 --- a/app/AdminModule/CmsModule/Forms/NewsFormFactory.php +++ b/app/AdminModule/CmsModule/Forms/NewsFormFactory.php @@ -50,14 +50,14 @@ public function create(?int $id): Form $form->addHidden('id'); - $publishedDateTime = new DateTimeControl('admin.cms.news_published'); - $publishedDateTime->addRule(Form::FILLED, 'admin.cms.news_published_empty'); + $publishedDateTime = new DateTimeControl('admin.cms.news.common.published'); + $publishedDateTime->addRule(Form::FILLED, 'admin.cms.news.form.published_empty'); $form->addComponent($publishedDateTime, 'published'); - $form->addCheckbox('pinned', 'admin.cms.news_edit_pinned'); + $form->addCheckbox('pinned', 'admin.cms.news.form.pinned'); - $form->addTextArea('text', 'admin.cms.news_text') - ->addRule(Form::FILLED, 'admin.cms.news_text_empty') + $form->addTextArea('text', 'admin.cms.news.common.text') + ->addRule(Form::FILLED, 'admin.cms.news.form.text_empty') ->setHtmlAttribute('class', 'tinymce-paragraph'); $form->addSubmit('submit', 'admin.common.save'); diff --git a/app/AdminModule/CmsModule/Forms/PageForm.php b/app/AdminModule/CmsModule/Forms/PageForm.php index 9fb07ad7b..163c49bca 100644 --- a/app/AdminModule/CmsModule/Forms/PageForm.php +++ b/app/AdminModule/CmsModule/Forms/PageForm.php @@ -14,6 +14,7 @@ use App\Model\Cms\Page; use App\Model\Cms\Repositories\PageRepository; use App\Model\Cms\Repositories\TagRepository; +use App\Model\Cms\SlideshowContent; use App\Model\Cms\UsersContent; use App\Services\AclService; use App\Services\CmsService; @@ -131,7 +132,7 @@ public function createComponentForm(): Form $form->addHidden('id')->setDefaultValue($this->page->getId()); $form->addHidden('area')->setDefaultValue($this->area); - $form->addSelect('type', 'admin.cms.pages_content_type', $this->prepareContentTypesOptions()); + $form->addSelect('type', 'admin.cms.pages.content.form.type', $this->prepareContentTypesOptions()); foreach ($this->page->getContents($this->area) as $content) { switch (get_class($content)) { @@ -145,6 +146,9 @@ public function createComponentForm(): Form case ImageContent::class: $content->injectFilesService($this->filesService); break; + case SlideshowContent::class: + $content->injectFilesService($this->filesService); + break; case UsersContent::class: $content->injectRoleRepository($this->roleRepository); $content->injectAclService($this->aclService); diff --git a/app/AdminModule/CmsModule/Forms/templates/page_form.latte b/app/AdminModule/CmsModule/Forms/templates/page_form.latte index cc3ee241b..f7063d59c 100644 --- a/app/AdminModule/CmsModule/Forms/templates/page_form.latte +++ b/app/AdminModule/CmsModule/Forms/templates/page_form.latte @@ -2,16 +2,10 @@