diff --git a/core/modules/path/path.module b/core/modules/path/path.module index 307a08b..24309b7 100644 --- a/core/modules/path/path.module +++ b/core/modules/path/path.module @@ -83,7 +83,9 @@ function path_entity_base_field_info(EntityTypeInterface $entity_type) { * Implements hook_entity_translation_delete(). */ function path_entity_translation_delete(EntityInterface $translation) { - $path = $translation->urlInfo()->getInternalPath(); - $conditions = array('source' => '/' . $path, 'langcode' => $translation->language()->getId()); - \Drupal::service('path.alias_storage')->delete($conditions); + if ($translation->hasLinkTemplate('canonical')) { + $path = $translation->urlInfo()->getInternalPath(); + $conditions = array('source' => '/' . $path, 'langcode' => $translation->language()->getId()); + \Drupal::service('path.alias_storage')->delete($conditions); + } } diff --git a/core/modules/path/tests/src/Kernel/PathNoCanonicalLinkTest.php b/core/modules/path/tests/src/Kernel/PathNoCanonicalLinkTest.php new file mode 100644 index 0000000..5e6d209 --- /dev/null +++ b/core/modules/path/tests/src/Kernel/PathNoCanonicalLinkTest.php @@ -0,0 +1,64 @@ +installEntitySchema('entity_test'); + $this->installEntitySchema('entity_test_mul'); + $this->installSchema('system', 'router'); + \Drupal::service('router.builder')->rebuild(); + + // Adding german language. + ConfigurableLanguage::create(['id' => 'de'])->save(); + + $this->config('language.types')->setData([ + 'configurable' => ['language_interface'], + 'negotiation' => ['language_interface' => ['enabled' => ['language-url' => 0]]], + ])->save(); + } + + /** + * Tests for no canonical link templates. + */ + public function testNoCanonicalLinkTemplate() { + $entity_type = EntityTestTranslatableUISkip::create([ + 'name' => 'name english', + 'language' => 'en' + ]); + $entity_type->save(); + + $entity_type->addTranslation('de', ['name' => 'name german']); + $entity_type->save(); + $this->assertEqual(count($entity_type->getTranslationLanguages()), 2); + + $entity_type->removeTranslation('de'); + $entity_type->save(); + $this->assertEqual(count($entity_type->getTranslationLanguages()), 1); + } + +}