From 25dd2712abfd10bbe22835a06545b4471ceee204 Mon Sep 17 00:00:00 2001 From: Ambroise Maupate Date: Thu, 14 Sep 2023 18:25:10 +0200 Subject: [PATCH] feat: Added Custom forms bulk delete actions --- .../config/routing/custom-forms.yml | 5 ++ .../CustomForms/CustomFormsController.php | 42 ++-------- .../src/Resources/translations/messages.xlf | 4 + .../src/Resources/views/admin/base.html.twig | 2 +- .../views/custom-forms/bulk_base.html.twig | 39 ++++++++++ .../views/custom-forms/bulk_delete.html.twig | 20 +++++ .../custom-forms/customform_row.html.twig | 53 +++++++++++++ .../customform_row_header.html.twig | 30 ++++++++ .../views/custom-forms/list.html.twig | 76 +------------------ 9 files changed, 163 insertions(+), 108 deletions(-) create mode 100644 lib/Rozier/src/Resources/views/custom-forms/bulk_base.html.twig create mode 100644 lib/Rozier/src/Resources/views/custom-forms/bulk_delete.html.twig create mode 100644 lib/Rozier/src/Resources/views/custom-forms/customform_row.html.twig create mode 100644 lib/Rozier/src/Resources/views/custom-forms/customform_row_header.html.twig diff --git a/lib/RoadizRozierBundle/config/routing/custom-forms.yml b/lib/RoadizRozierBundle/config/routing/custom-forms.yml index d2f3085a..88f874f8 100644 --- a/lib/RoadizRozierBundle/config/routing/custom-forms.yml +++ b/lib/RoadizRozierBundle/config/routing/custom-forms.yml @@ -27,3 +27,8 @@ customFormsDuplicatePage: requirements: { id : "[0-9]+" } defaults: _controller: Themes\Rozier\Controllers\CustomForms\CustomFormsUtilsController::duplicateAction +customFormsBulkDeletePage: + methods: [GET, POST] + path: /bulk-delete + defaults: + _controller: Themes\Rozier\Controllers\CustomForms\CustomFormsController::bulkDeleteAction diff --git a/lib/Rozier/src/Controllers/CustomForms/CustomFormsController.php b/lib/Rozier/src/Controllers/CustomForms/CustomFormsController.php index bc1186f7..42537ebf 100644 --- a/lib/Rozier/src/Controllers/CustomForms/CustomFormsController.php +++ b/lib/Rozier/src/Controllers/CustomForms/CustomFormsController.php @@ -8,93 +8,60 @@ use RZ\Roadiz\CoreBundle\Entity\CustomForm; use RZ\Roadiz\RozierBundle\Form\CustomFormType; use Symfony\Component\HttpFoundation\Request; -use Themes\Rozier\Controllers\AbstractAdminController; +use Themes\Rozier\Controllers\AbstractAdminWithBulkController; -class CustomFormsController extends AbstractAdminController +class CustomFormsController extends AbstractAdminWithBulkController { - /** - * @inheritDoc - */ protected function supports(PersistableInterface $item): bool { return $item instanceof CustomForm; } - /** - * @inheritDoc - */ protected function getNamespace(): string { return 'custom-form'; } - /** - * @inheritDoc - */ protected function createEmptyItem(Request $request): PersistableInterface { return new CustomForm(); } - /** - * @inheritDoc - */ protected function getTemplateFolder(): string { return '@RoadizRozier/custom-forms'; } - /** - * @inheritDoc - */ protected function getRequiredRole(): string { return 'ROLE_ACCESS_CUSTOMFORMS'; } - /** - * @inheritDoc - */ protected function getEntityClass(): string { return CustomForm::class; } - /** - * @inheritDoc - */ protected function getFormType(): string { return CustomFormType::class; } - /** - * @inheritDoc - */ protected function getDefaultOrder(Request $request): array { return ['createdAt' => 'DESC']; } - /** - * @inheritDoc - */ protected function getDefaultRouteName(): string { return 'customFormsHomePage'; } - /** - * @inheritDoc - */ protected function getEditRouteName(): string { return 'customFormsEditPage'; } - /** - * @inheritDoc - */ protected function getEntityName(PersistableInterface $item): string { if ($item instanceof CustomForm) { @@ -102,4 +69,9 @@ protected function getEntityName(PersistableInterface $item): string } throw new \InvalidArgumentException('Item should be instance of ' . $this->getEntityClass()); } + + protected function getBulkDeleteRouteName(): ?string + { + return 'customFormsBulkDeletePage'; + } } diff --git a/lib/Rozier/src/Resources/translations/messages.xlf b/lib/Rozier/src/Resources/translations/messages.xlf index cb4fd3ee..78f3576d 100644 --- a/lib/Rozier/src/Resources/translations/messages.xlf +++ b/lib/Rozier/src/Resources/translations/messages.xlf @@ -802,6 +802,10 @@ are_you_sure.bulk_delete.redirections redirections.bulk_delete.title + no_custom_forms + are_you_sure.bulk_delete.custom_forms + custom_forms.bulk_delete.title + reset.marker geotag.type_an_address.then_type_enter geographic.coordinates.type diff --git a/lib/Rozier/src/Resources/views/admin/base.html.twig b/lib/Rozier/src/Resources/views/admin/base.html.twig index 9906749a..7588b06b 100644 --- a/lib/Rozier/src/Resources/views/admin/base.html.twig +++ b/lib/Rozier/src/Resources/views/admin/base.html.twig @@ -1,7 +1,7 @@ {% extends "@RoadizRozier/layout.html.twig" %} {% block content %} -
+

{%- block content_title -%}{%- endblock -%}

{%- block content_count_filters -%} diff --git a/lib/Rozier/src/Resources/views/custom-forms/bulk_base.html.twig b/lib/Rozier/src/Resources/views/custom-forms/bulk_base.html.twig new file mode 100644 index 00000000..65147632 --- /dev/null +++ b/lib/Rozier/src/Resources/views/custom-forms/bulk_base.html.twig @@ -0,0 +1,39 @@ +{% extends '@RoadizRozier/admin/base.html.twig' %} + +{% block title %}{{ block('bulk_title') }} | {{ parent() }}{% endblock %} +{% block content_title %}{% block bulk_title %}{% endblock %}{% endblock %} + +{% block content_count_filters %} + {% include '@RoadizRozier/widgets/countFiltersBar.html.twig' %} +{% endblock %} + +{% block content_header_nav %} + +{% endblock %} + +{% block content_body %} +
+
+ + + + {% include '@RoadizRozier/custom-forms/customform_row_header.html.twig' with { no_sort: true } %} + + + + {% for item in items %} + + {% include '@RoadizRozier/custom-forms/customform_row.html.twig' %} + + {% else %} + + {% endfor %} + +
{% trans %}no_custom_forms{% endtrans %}
+
+ {% block bulk_form %}{% endblock %} +
+{% endblock %} diff --git a/lib/Rozier/src/Resources/views/custom-forms/bulk_delete.html.twig b/lib/Rozier/src/Resources/views/custom-forms/bulk_delete.html.twig new file mode 100644 index 00000000..0aac9a4c --- /dev/null +++ b/lib/Rozier/src/Resources/views/custom-forms/bulk_delete.html.twig @@ -0,0 +1,20 @@ +{% extends '@RoadizRozier/custom-forms/bulk_base.html.twig' %} +{% block bulk_title %}{% trans %}custom_forms.bulk_delete.title{% endtrans %}{% endblock %} +{% block bulk_form %} + {% if form %} +
+ {% form_theme form '@RoadizRozier/forms.html.twig' %} + {{ form_start(form, { + 'attr': { + 'class': 'uk-form uk-form-stacked' + } + }) }}{{ form_widget(form) }} +
+ {% trans %}are_you_sure.bulk_delete.custom_forms{% endtrans %} + {% trans %}cancel{% endtrans %} + +
+ {{ form_end(form) }} +
+ {% endif %} +{% endblock %} diff --git a/lib/Rozier/src/Resources/views/custom-forms/customform_row.html.twig b/lib/Rozier/src/Resources/views/custom-forms/customform_row.html.twig new file mode 100644 index 00000000..ac51d634 --- /dev/null +++ b/lib/Rozier/src/Resources/views/custom-forms/customform_row.html.twig @@ -0,0 +1,53 @@ + + {{ item.displayName }} + +{{ item.createdAt|format_datetime('medium', 'short', locale=app.request.locale) }} +{{ item.closeDate|format_datetime('medium', 'short', locale=app.request.locale) }} +
{% transchoice item.getFields|length %}{0} no.customFormField|{1} 1.customFormField|]1,Inf] %count%.customFormFields{% endtranschoice %}
+ + {% apply spaceless %} + {% if hasBulkActions %} +
+ +
+ {% endif %} + + + + + + + + + + + + + + + + + + {% endapply %} + diff --git a/lib/Rozier/src/Resources/views/custom-forms/customform_row_header.html.twig b/lib/Rozier/src/Resources/views/custom-forms/customform_row_header.html.twig new file mode 100644 index 00000000..0e3bf71c --- /dev/null +++ b/lib/Rozier/src/Resources/views/custom-forms/customform_row_header.html.twig @@ -0,0 +1,30 @@ + + {% trans %}customForm.displayName{% endtrans %} + {% include '@RoadizRozier/includes/column_ordering.html.twig' with { + 'field': 'displayName', + 'filters': filters, + } only %} + + + {% trans %}createdAt{% endtrans %} + {% include '@RoadizRozier/includes/column_ordering.html.twig' with { + 'field': 'createdAt', + 'filters': filters, + } only %} + + + {% trans %}customForm.closeDate{% endtrans %} + {% include '@RoadizRozier/includes/column_ordering.html.twig' with { + 'field': 'closeDate', + 'filters': filters, + } only %} + + + + {% if hasBulkActions %} +
+ +
+ {% endif %} + {% trans %}actions{% endtrans %} + diff --git a/lib/Rozier/src/Resources/views/custom-forms/list.html.twig b/lib/Rozier/src/Resources/views/custom-forms/list.html.twig index 913ae0ac..c17cc98e 100644 --- a/lib/Rozier/src/Resources/views/custom-forms/list.html.twig +++ b/lib/Rozier/src/Resources/views/custom-forms/list.html.twig @@ -12,6 +12,7 @@ {%- block content_filters -%} {% include '@RoadizRozier/widgets/filtersBar.html.twig' %} + {% include '@RoadizRozier/admin/bulk_actions.html.twig' %} {%- endblock -%} {%- block content_body -%} @@ -21,82 +22,13 @@ - - - - - + {% include '@RoadizRozier/custom-forms/customform_row_header.html.twig' %} - {% for type in items %} + {% for item in items %} - - - - - + {% include '@RoadizRozier/custom-forms/customform_row.html.twig' %} {% endfor %}
- {% trans %}customForm.displayName{% endtrans %} - {% include '@RoadizRozier/includes/column_ordering.html.twig' with { - 'field': 'displayName', - 'filters': filters, - } only %} - - {% trans %}createdAt{% endtrans %} - {% include '@RoadizRozier/includes/column_ordering.html.twig' with { - 'field': 'createdAt', - 'filters': filters, - } only %} - - {% trans %}customForm.closeDate{% endtrans %} - {% include '@RoadizRozier/includes/column_ordering.html.twig' with { - 'field': 'closeDate', - 'filters': filters, - } only %} - {% trans %}actions{% endtrans %}
- {{ type.displayName }} - {{ type.createdAt|format_datetime('medium', 'short', locale=app.request.locale) }}{{ type.closeDate|format_datetime('medium', 'short', locale=app.request.locale) }}
{% transchoice type.getFields|length %}{0} no.customFormField|{1} 1.customFormField|]1,Inf] %count%.customFormFields{% endtranschoice %}
- {% apply spaceless %} - - - - - - - - - - - - - - - - - - {% endapply %} -