diff --git a/core/modules/config_translation/config_translation.module b/core/modules/config_translation/config_translation.module index 558841a3067c99f2815c4967ac1b0b003c960c8f..858659a6bec8d92f2545ff307080a7a3d1a9cb58 100644 --- a/core/modules/config_translation/config_translation.module +++ b/core/modules/config_translation/config_translation.module @@ -85,21 +85,29 @@ function config_translation_theme() { } /** - * Implements hook_entity_info(). + * Implements hook_entity_info_alter(). */ -function config_translation_entity_info($entity_info) { +function config_translation_entity_info_alter($entity_info) { /** @var $entity_info \Drupal\Core\Entity\EntityTypeInterface[] */ foreach ($entity_info as $entity_type_id => $entity_type) { - if ($entity_type_id == 'block') { - $class = 'Drupal\config_translation\Controller\ConfigTranslationBlockListController'; - } - elseif ($entity_type_id == 'field_instance') { - $class = 'Drupal\config_translation\Controller\ConfigTranslationFieldInstanceListController'; - } - else { - $class = 'Drupal\config_translation\Controller\ConfigTranslationEntityListController'; + if ($entity_type->isSubclassOf('Drupal\Core\Config\Entity\ConfigEntityInterface')) { + if ($entity_type_id == 'block') { + $class = 'Drupal\config_translation\Controller\ConfigTranslationBlockListController'; + } + elseif ($entity_type_id == 'field_instance') { + $class = 'Drupal\config_translation\Controller\ConfigTranslationFieldInstanceListController'; + // Will be filled in dynamically, see \Drupal\field\Entity\FieldInstance::linkTemplates(). + $entity_type->setLinkTemplate('drupal:config-translation-overview', 'config_translation.item.overview.'); + } + else { + $class = 'Drupal\config_translation\Controller\ConfigTranslationEntityListController'; + } + $entity_type->setControllerClass('config_translation_list', $class); + + if ($entity_type->hasLinkTemplate('edit-form')) { + $entity_type->setLinkTemplate('drupal:config-translation-overview', 'config_translation.item.overview.' . $entity_type->getLinkTemplate('edit-form')); + } } - $entity_type->setControllerClass('config_translation_list', $class); } } @@ -169,13 +177,10 @@ function config_translation_config_translation_info(&$info) { */ function config_translation_entity_operation_alter(array &$operations, EntityInterface $entity) { if (\Drupal::currentUser()->hasPermission('translate configuration')) { - $uri = $entity->urlInfo(); $operations['translate'] = array( 'title' => t('Translate'), - 'href' => $entity->getSystemPath() . '/translate', - 'options' => $uri['options'], 'weight' => 50, - ); + ) + $entity->urlInfo('drupal:config-translation-overview'); } } diff --git a/core/modules/content_translation/lib/Drupal/content_translation/Plugin/views/field/TranslationLink.php b/core/modules/content_translation/lib/Drupal/content_translation/Plugin/views/field/TranslationLink.php index 176d3f615e4b04cbabad78282c3441c57bb06984..999abf45e47a38c9001d07933904acd09f3c0579 100644 --- a/core/modules/content_translation/lib/Drupal/content_translation/Plugin/views/field/TranslationLink.php +++ b/core/modules/content_translation/lib/Drupal/content_translation/Plugin/views/field/TranslationLink.php @@ -64,7 +64,7 @@ protected function renderLink(EntityInterface $entity, ResultRow $values) { $text = !empty($this->options['text']) ? $this->options['text'] : t('translate'); $this->options['alter']['make_link'] = TRUE; - $this->options['alter']['path'] = $entity->getSystemPath() . '/translations'; + $this->options['alter']['path'] = $entity->getSystemPath('drupal:content-translation-overview'); return $text; } diff --git a/core/modules/field/lib/Drupal/field/Entity/FieldInstance.php b/core/modules/field/lib/Drupal/field/Entity/FieldInstance.php index 26c43b6f05a591685ac9b2c991023f456f3fd878..f83e45ac60e0d65dda952a66e2079c84dd61e7ab 100644 --- a/core/modules/field/lib/Drupal/field/Entity/FieldInstance.php +++ b/core/modules/field/lib/Drupal/field/Entity/FieldInstance.php @@ -511,6 +511,9 @@ protected function linkTemplates() { $link_templates = parent::linkTemplates(); if (\Drupal::moduleHandler()->moduleExists('field_ui')) { $link_templates['edit-form'] = 'field_ui.instance_edit_' . $this->entity_type; + if (isset($link_templates['drupal:config-translation-overview'])) { + $link_templates['drupal:config-translation-overview'] .= $link_templates['edit-form']; + } } return $link_templates; } diff --git a/core/modules/system/entity.api.php b/core/modules/system/entity.api.php index 852f7f9e7779ec2f505a29a190ce41447f7caae2..1a3973dd329cafb3a9180633d5b174a1f8af4d25 100644 --- a/core/modules/system/entity.api.php +++ b/core/modules/system/entity.api.php @@ -730,9 +730,8 @@ function hook_entity_field_info_alter(&$info, $entity_type_id) { function hook_entity_operation_alter(array &$operations, \Drupal\Core\Entity\EntityInterface $entity) { $operations['translate'] = array( 'title' => t('Translate'), - 'href' => $entity->getSystemPath() . '/translate', 'weight' => 50, - ); + ) + $entity->urlInfo('my-custom-link-template'); } /**