Loading entity_legal.routing.yml +8 −0 Original line number Diff line number Diff line Loading @@ -54,6 +54,14 @@ entity.entity_legal_document_version.edit_form: requirements: _entity_access: 'entity_legal_document_version.update' entity.entity_legal_document_version.delete_form: path: '/admin/structure/legal/document/{entity_legal_document_version}/delete' defaults: _entity_form: 'entity_legal_document_version.delete' _title: 'Delete' requirements: _entity_access: 'entity_legal_document_version.delete' entity.entity_legal_document_version.canonical: path: '/admin/structure/legal/document/{entity_legal_document_version}' defaults: Loading src/Entity/EntityLegalDocumentVersion.php +3 −1 Original line number Diff line number Diff line Loading @@ -22,7 +22,8 @@ use Drupal\entity_legal\EntityLegalDocumentVersionInterface; * "views_data" = "Drupal\views\EntityViewsData", * "form" = { * "default" = "Drupal\entity_legal\Form\EntityLegalDocumentVersionForm", * "edit" = "Drupal\entity_legal\Form\EntityLegalDocumentVersionForm" * "edit" = "Drupal\entity_legal\Form\EntityLegalDocumentVersionForm", * "delete" = "Drupal\entity_legal\Form\EntityLegalDocumentVersionDeleteForm", * }, * "translation" = "Drupal\entity_legal\EntityLegalDocumentVersionTranslationHandler" * }, Loading @@ -39,6 +40,7 @@ use Drupal\entity_legal\EntityLegalDocumentVersionInterface; * "bundle" = "document_name" * }, * links = { * "delete-form" = "/admin/structure/legal/document/{entity_legal_document_version}/delete", * "canonical" = "/admin/structure/legal/document/{entity_legal_document_version}", * "edit-form" = "/admin/structure/legal/document/{entity_legal_document_version}/edit", * }, Loading src/Form/EntityLegalDocumentForm.php +8 −0 Original line number Diff line number Diff line Loading @@ -153,6 +153,14 @@ class EntityLegalDocumentForm extends EntityForm implements ContainerInjectionIn 'entity_legal_document_version' => $version->id(), ]), ]; $links['delete'] = [ 'title' => $this->t('Delete'), 'url' => Url::fromRoute('entity.entity_legal_document_version.delete_form', [ 'entity_legal_document_version' => $version->id(), ]), ]; if ($version->isTranslatable()) { try { $links['translate'] = [ Loading src/Form/EntityLegalDocumentVersionDeleteForm.php 0 → 100644 +64 −0 Original line number Diff line number Diff line <?php namespace Drupal\entity_legal\Form; use Drupal\Core\Entity\ContentEntityConfirmFormBase; use Drupal\Core\Form\FormStateInterface; use Drupal\Core\StringTranslation\TranslatableMarkup; use Drupal\Core\Url; /** * Provides a form for deleting a entity_legal_document_version entity. * * @ingroup entity_legal */ class EntityLegalDocumentVersionDeleteForm extends ContentEntityConfirmFormBase { /** * {@inheritdoc} */ public function getQuestion(): TranslatableMarkup { return $this->t('Are you sure you want to delete the legal document version %name?', ['%name' => $this->entity->label()]); } /** * {@inheritdoc} * * If the delete command is canceled, return to the legal document versions. */ public function getCancelUrl(): Url { return new Url('entity.entity_legal_document.edit_form', [ 'entity_legal_document' => $this->entity->document_name->target_id, ]); } /** * {@inheritdoc} */ public function getConfirmText(): TranslatableMarkup { return $this->t('Delete'); } /** * {@inheritdoc} * * Delete the entity and log the event. logger() replaces the watchdog. * * @throws \Drupal\Core\Entity\EntityStorageException */ public function submitForm(array &$form, FormStateInterface $form_state) { $entity = $this->getEntity(); $entity->delete(); $this->messenger()->addStatus($this->t('%title document version has been deleted from @type.', [ '@type' => $this->entity->bundle(), '%title' => $this->entity->label(), ])); $form_state->setRedirect('entity.entity_legal_document.edit_form', [ 'entity_legal_document' => $this->entity->document_name->target_id, ]); } } tests/src/Kernel/DocumentDeleteTest.php 0 → 100644 +81 −0 Original line number Diff line number Diff line <?php namespace Drupal\Tests\entity_legal\Kernel; use Drupal\entity_legal\Controller\EntityLegalController; use Drupal\entity_legal\Entity\EntityLegalDocument; use Drupal\entity_legal\Entity\EntityLegalDocumentVersion; use Drupal\KernelTests\KernelTestBase; /** * Tests the 'entity_legal_document_version' entity type. * * @group entity_legal */ class DocumentDeleteTest extends KernelTestBase { /** * {@inheritdoc} */ public static $modules = [ 'entity_legal', 'field', 'system', 'text', 'user', ]; /** * Tests the canonical route title callback. */ public function testDeleteDocumentVersion() { $class_resolver = $this->container->get('class_resolver'); $this->installConfig(['entity_legal']); $this->installEntitySchema(ENTITY_LEGAL_DOCUMENT_VERSION_ENTITY_NAME); $this->installEntitySchema(ENTITY_LEGAL_DOCUMENT_ACCEPTANCE_ENTITY_NAME); /** @var \Drupal\entity_legal\Controller\EntityLegalController $controller */ $controller = $class_resolver->getInstanceFromDefinition(EntityLegalController::class); $document = EntityLegalDocument::create([ 'id' => 'new_notice', 'label' => 'New notice', ]); $document->save(); $version = EntityLegalDocumentVersion::create([ 'document_name' => $document->id(), 'label' => 'v1.0.0', ]); $version->validate(); $version_2 = EntityLegalDocumentVersion::create([ 'document_name' => $document->id(), 'label' => 'v2.0.0', ]); $version_2->validate(); $document->setPublishedVersion($version); $settings = $document->get('settings'); // Check that the default title pattern [entity_legal_document:label]. $title = $controller->documentPageTitle($document); $this->assertEquals('New notice', $title); // Check a custom pattern. $settings['title_pattern'] = '[entity_legal_document:label] (version [entity_legal_document:published-version:label])'; $document->set('settings', $settings)->save(); $title = $controller->documentPageTitle($document); $this->assertEquals('New notice (version v1.0.0)', $title); // Delete version 1. $doc_v1 = EntityLegalDocumentVersion::load($version->id()); $doc_v1->delete(); $document->setPublishedVersion($version_2); $title = $controller->documentPageTitle($document); $this->assertEquals('New notice (version v2.0.0)', $title); } } Loading
entity_legal.routing.yml +8 −0 Original line number Diff line number Diff line Loading @@ -54,6 +54,14 @@ entity.entity_legal_document_version.edit_form: requirements: _entity_access: 'entity_legal_document_version.update' entity.entity_legal_document_version.delete_form: path: '/admin/structure/legal/document/{entity_legal_document_version}/delete' defaults: _entity_form: 'entity_legal_document_version.delete' _title: 'Delete' requirements: _entity_access: 'entity_legal_document_version.delete' entity.entity_legal_document_version.canonical: path: '/admin/structure/legal/document/{entity_legal_document_version}' defaults: Loading
src/Entity/EntityLegalDocumentVersion.php +3 −1 Original line number Diff line number Diff line Loading @@ -22,7 +22,8 @@ use Drupal\entity_legal\EntityLegalDocumentVersionInterface; * "views_data" = "Drupal\views\EntityViewsData", * "form" = { * "default" = "Drupal\entity_legal\Form\EntityLegalDocumentVersionForm", * "edit" = "Drupal\entity_legal\Form\EntityLegalDocumentVersionForm" * "edit" = "Drupal\entity_legal\Form\EntityLegalDocumentVersionForm", * "delete" = "Drupal\entity_legal\Form\EntityLegalDocumentVersionDeleteForm", * }, * "translation" = "Drupal\entity_legal\EntityLegalDocumentVersionTranslationHandler" * }, Loading @@ -39,6 +40,7 @@ use Drupal\entity_legal\EntityLegalDocumentVersionInterface; * "bundle" = "document_name" * }, * links = { * "delete-form" = "/admin/structure/legal/document/{entity_legal_document_version}/delete", * "canonical" = "/admin/structure/legal/document/{entity_legal_document_version}", * "edit-form" = "/admin/structure/legal/document/{entity_legal_document_version}/edit", * }, Loading
src/Form/EntityLegalDocumentForm.php +8 −0 Original line number Diff line number Diff line Loading @@ -153,6 +153,14 @@ class EntityLegalDocumentForm extends EntityForm implements ContainerInjectionIn 'entity_legal_document_version' => $version->id(), ]), ]; $links['delete'] = [ 'title' => $this->t('Delete'), 'url' => Url::fromRoute('entity.entity_legal_document_version.delete_form', [ 'entity_legal_document_version' => $version->id(), ]), ]; if ($version->isTranslatable()) { try { $links['translate'] = [ Loading
src/Form/EntityLegalDocumentVersionDeleteForm.php 0 → 100644 +64 −0 Original line number Diff line number Diff line <?php namespace Drupal\entity_legal\Form; use Drupal\Core\Entity\ContentEntityConfirmFormBase; use Drupal\Core\Form\FormStateInterface; use Drupal\Core\StringTranslation\TranslatableMarkup; use Drupal\Core\Url; /** * Provides a form for deleting a entity_legal_document_version entity. * * @ingroup entity_legal */ class EntityLegalDocumentVersionDeleteForm extends ContentEntityConfirmFormBase { /** * {@inheritdoc} */ public function getQuestion(): TranslatableMarkup { return $this->t('Are you sure you want to delete the legal document version %name?', ['%name' => $this->entity->label()]); } /** * {@inheritdoc} * * If the delete command is canceled, return to the legal document versions. */ public function getCancelUrl(): Url { return new Url('entity.entity_legal_document.edit_form', [ 'entity_legal_document' => $this->entity->document_name->target_id, ]); } /** * {@inheritdoc} */ public function getConfirmText(): TranslatableMarkup { return $this->t('Delete'); } /** * {@inheritdoc} * * Delete the entity and log the event. logger() replaces the watchdog. * * @throws \Drupal\Core\Entity\EntityStorageException */ public function submitForm(array &$form, FormStateInterface $form_state) { $entity = $this->getEntity(); $entity->delete(); $this->messenger()->addStatus($this->t('%title document version has been deleted from @type.', [ '@type' => $this->entity->bundle(), '%title' => $this->entity->label(), ])); $form_state->setRedirect('entity.entity_legal_document.edit_form', [ 'entity_legal_document' => $this->entity->document_name->target_id, ]); } }
tests/src/Kernel/DocumentDeleteTest.php 0 → 100644 +81 −0 Original line number Diff line number Diff line <?php namespace Drupal\Tests\entity_legal\Kernel; use Drupal\entity_legal\Controller\EntityLegalController; use Drupal\entity_legal\Entity\EntityLegalDocument; use Drupal\entity_legal\Entity\EntityLegalDocumentVersion; use Drupal\KernelTests\KernelTestBase; /** * Tests the 'entity_legal_document_version' entity type. * * @group entity_legal */ class DocumentDeleteTest extends KernelTestBase { /** * {@inheritdoc} */ public static $modules = [ 'entity_legal', 'field', 'system', 'text', 'user', ]; /** * Tests the canonical route title callback. */ public function testDeleteDocumentVersion() { $class_resolver = $this->container->get('class_resolver'); $this->installConfig(['entity_legal']); $this->installEntitySchema(ENTITY_LEGAL_DOCUMENT_VERSION_ENTITY_NAME); $this->installEntitySchema(ENTITY_LEGAL_DOCUMENT_ACCEPTANCE_ENTITY_NAME); /** @var \Drupal\entity_legal\Controller\EntityLegalController $controller */ $controller = $class_resolver->getInstanceFromDefinition(EntityLegalController::class); $document = EntityLegalDocument::create([ 'id' => 'new_notice', 'label' => 'New notice', ]); $document->save(); $version = EntityLegalDocumentVersion::create([ 'document_name' => $document->id(), 'label' => 'v1.0.0', ]); $version->validate(); $version_2 = EntityLegalDocumentVersion::create([ 'document_name' => $document->id(), 'label' => 'v2.0.0', ]); $version_2->validate(); $document->setPublishedVersion($version); $settings = $document->get('settings'); // Check that the default title pattern [entity_legal_document:label]. $title = $controller->documentPageTitle($document); $this->assertEquals('New notice', $title); // Check a custom pattern. $settings['title_pattern'] = '[entity_legal_document:label] (version [entity_legal_document:published-version:label])'; $document->set('settings', $settings)->save(); $title = $controller->documentPageTitle($document); $this->assertEquals('New notice (version v1.0.0)', $title); // Delete version 1. $doc_v1 = EntityLegalDocumentVersion::load($version->id()); $doc_v1->delete(); $document->setPublishedVersion($version_2); $title = $controller->documentPageTitle($document); $this->assertEquals('New notice (version v2.0.0)', $title); } }