diff --git a/paragraphs_admin.routing.yml b/paragraphs_admin.routing.yml index aa0afc0..a40b602 100644 --- a/paragraphs_admin.routing.yml +++ b/paragraphs_admin.routing.yml @@ -1,11 +1,8 @@ paragraphs_admin.delete_paragraph: path: '/paragraph/{paragraph}/delete' defaults: - _title: 'Delete paragraph' - _controller: '\Drupal\paragraphs_admin\Controller\ParagraphController::deleteParagraph' - options: - _node_operation_route: TRUE + _form: '\Drupal\paragraphs_admin\Form\ConfirmParagraphDeleteForm' + _title: 'Confirm Deletion' requirements: _permission: 'administer paragraphs' paragraph: \d+ - _csrf_token: 'TRUE' diff --git a/paragraphs_admin.services.yml b/paragraphs_admin.services.yml new file mode 100644 index 0000000..6bbaed3 --- /dev/null +++ b/paragraphs_admin.services.yml @@ -0,0 +1,4 @@ +services: + paragraphs_admin.delete: + class: Drupal\paragraphs_admin\Controller\ParagraphController + arguments: ['@messenger'] diff --git a/src/Form/ConfirmParagraphDeleteForm.php b/src/Form/ConfirmParagraphDeleteForm.php new file mode 100644 index 0000000..e9e876b --- /dev/null +++ b/src/Form/ConfirmParagraphDeleteForm.php @@ -0,0 +1,64 @@ +paragraph = $paragraph; + return parent::buildForm($form, $form_state); + } + + /** + * {@inheritdoc} + */ + public function submitForm(array &$form, FormStateInterface $form_state) { + // @todo: Do the deletion. + \Drupal::service('paragraphs_admin.delete')->deleteParagraph($this->paragraph); + $form_state->setRedirect('view.paragraphs.page_admin_paragraphs'); + } + + /** + * {@inheritdoc} + */ + public function getFormId() : string { + return "confirm_paragraph_delete_form"; + } + + /** + * {@inheritdoc} + */ + public function getCancelUrl() { + return new Url('view.paragraphs.page_admin_paragraphs'); + } + + /** + * {@inheritdoc} + */ + public function getQuestion() { + return $this->t( + 'Are you sure you want to delete the @entity-type %label?', + ['%label' => $this->paragraph->label(), '@entity-type' => 'paragraph'] + ); + } + +}