diff --git a/core/modules/field_ui/src/FieldUI.php b/core/modules/field_ui/src/FieldUI.php index d2867b7..e3f557e 100644 --- a/core/modules/field_ui/src/FieldUI.php +++ b/core/modules/field_ui/src/FieldUI.php @@ -29,7 +29,7 @@ class FieldUI { public static function getOverviewRouteInfo($entity_type_id, $bundle) { $entity_type = \Drupal::entityManager()->getDefinition($entity_type_id); if ($entity_type->get('field_ui_base_route')) { - return new Url("entity.$entity_type_id.field_ui_fields", array( + return new Url("entity.{$entity_type->getBundleEntityType()}.field_ui_fields", array( $entity_type->getBundleEntityType() => $bundle, )); } diff --git a/core/modules/field_ui/src/Plugin/Derivative/FieldUiLocalTask.php b/core/modules/field_ui/src/Plugin/Derivative/FieldUiLocalTask.php index c579841..397e366 100644 --- a/core/modules/field_ui/src/Plugin/Derivative/FieldUiLocalTask.php +++ b/core/modules/field_ui/src/Plugin/Derivative/FieldUiLocalTask.php @@ -70,41 +70,42 @@ public function getDerivativeDefinitions($base_plugin_definition) { foreach ($this->entityManager->getDefinitions() as $entity_type_id => $entity_type) { if ($entity_type->isFieldable() && $entity_type->get('field_ui_base_route')) { - $this->derivatives["overview_$entity_type_id"] = array( - 'route_name' => "entity.$entity_type_id.field_ui_fields", + $field_entity_type = $entity_type->getBundleEntityType() ?: $entity_type_id; + $this->derivatives["overview_$field_entity_type"] = array( + 'route_name' => "entity.$field_entity_type.field_ui_fields", 'weight' => 1, 'title' => $this->t('Manage fields'), - 'base_route' => "entity.$entity_type_id.field_ui_fields", + 'base_route' => "entity.$field_entity_type.field_ui_fields", ); // 'Manage form display' tab. - $this->derivatives["form_display_overview_$entity_type_id"] = array( - 'route_name' => "entity.{$entity_type_id}.field_ui_form_display", + $this->derivatives["form_display_overview_$field_entity_type"] = array( + 'route_name' => "entity.{$field_entity_type}.field_ui_form_display", 'weight' => 2, 'title' => $this->t('Manage form display'), - 'base_route' => "entity.$entity_type_id.field_ui_fields", + 'base_route' => "entity.$field_entity_type.field_ui_fields", ); // 'Manage display' tab. - $this->derivatives["display_overview_$entity_type_id"] = array( - 'route_name' => "entity.{$entity_type_id}.field_ui_display", + $this->derivatives["display_overview_$field_entity_type"] = array( + 'route_name' => "entity.{$field_entity_type}.field_ui_display", 'weight' => 3, 'title' => $this->t('Manage display'), - 'base_route' => "entity.$entity_type_id.field_ui_fields", + 'base_route' => "entity.$field_entity_type.field_ui_fields", ); // Field instance edit tab. - $this->derivatives["instance_edit_$entity_type_id"] = array( - 'route_name' => "field_ui.instance_edit_$entity_type_id", + $this->derivatives["instance_edit_$field_entity_type"] = array( + 'route_name' => "field_ui.instance_edit_$field_entity_type", 'title' => $this->t('Edit'), - 'base_route' => "field_ui.instance_edit_$entity_type_id", + 'base_route' => "field_ui.instance_edit_$field_entity_type", ); // Field settings tab. - $this->derivatives["field_edit_$entity_type_id"] = array( - 'route_name' => "field_ui.storage_edit_$entity_type_id", + $this->derivatives["field_edit_$field_entity_type"] = array( + 'route_name' => "field_ui.storage_edit_$field_entity_type", 'title' => $this->t('Field settings'), - 'base_route' => "field_ui.instance_edit_$entity_type_id", + 'base_route' => "field_ui.instance_edit_$field_entity_type", ); // View and form modes secondary tabs. @@ -114,43 +115,43 @@ public function getDerivativeDefinitions($base_plugin_definition) { // modes available for customisation. So we define menu items for all // view modes, and use a route requirement to determine which ones are // actually visible for a given bundle. - $this->derivatives['field_form_display_default_' . $entity_type_id] = array( + $this->derivatives['field_form_display_default_' . $field_entity_type] = array( 'title' => 'Default', - 'route_name' => "entity.{$entity_type_id}.field_ui_form_display", - 'parent_id' => "field_ui.fields:form_display_overview_$entity_type_id", + 'route_name' => "entity.{$field_entity_type}.field_ui_form_display", + 'parent_id' => "field_ui.fields:form_display_overview_$field_entity_type", 'weight' => -1, ); - $this->derivatives['field_display_default_' . $entity_type_id] = array( + $this->derivatives['field_display_default_' . $field_entity_type] = array( 'title' => 'Default', - 'route_name' => "entity.{$entity_type_id}.field_ui_display", - 'parent_id' => "field_ui.fields:display_overview_$entity_type_id", + 'route_name' => "entity.{$field_entity_type}.field_ui_display", + 'parent_id' => "field_ui.fields:display_overview_$field_entity_type", 'weight' => -1, ); // One local task for each form mode. $weight = 0; foreach ($this->entityManager->getFormModes($entity_type_id) as $form_mode => $form_mode_info) { - $this->derivatives['field_form_display_' . $form_mode . '_' . $entity_type_id] = array( + $this->derivatives['field_form_display_' . $form_mode . '_' . $field_entity_type] = array( 'title' => $form_mode_info['label'], - 'route_name' => "field_ui.form_display_overview_form_mode_$entity_type_id", + 'route_name' => "field_ui.form_display_overview_form_mode_$field_entity_type", 'route_parameters' => array( 'form_mode_name' => $form_mode, ), - 'parent_id' => "field_ui.fields:form_display_overview_$entity_type_id", + 'parent_id' => "field_ui.fields:form_display_overview_$field_entity_type", 'weight' => $weight++, ); } // One local task for each view mode. $weight = 0; - foreach ($this->entityManager->getViewModes($entity_type_id) as $view_mode => $form_mode_info) { - $this->derivatives['field_display_' . $view_mode . '_' . $entity_type_id] = array( + foreach ($this->entityManager->getViewModes($field_entity_type) as $view_mode => $form_mode_info) { + $this->derivatives['field_display_' . $view_mode . '_' . $field_entity_type] = array( 'title' => $form_mode_info['label'], - 'route_name' => "field_ui.display_overview_view_mode_$entity_type_id", + 'route_name' => "field_ui.display_overview_view_mode_$field_entity_type", 'route_parameters' => array( 'view_mode_name' => $view_mode, ), - 'parent_id' => "field_ui.fields:display_overview_$entity_type_id", + 'parent_id' => "field_ui.fields:display_overview_$field_entity_type", 'weight' => $weight++, ); } @@ -172,19 +173,20 @@ public function getDerivativeDefinitions($base_plugin_definition) { */ public function alterLocalTasks(&$local_tasks) { foreach ($this->entityManager->getDefinitions() as $entity_type_id => $entity_type) { + $field_entity_type = $entity_type->getBundleEntityType() ?: $entity_type_id; if ($entity_type->isFieldable() && $route_name = $entity_type->get('field_ui_base_route')) { - $local_tasks["field_ui.fields:overview_$entity_type_id"]['base_route'] = $route_name; - $local_tasks["field_ui.fields:form_display_overview_$entity_type_id"]['base_route'] = $route_name; - $local_tasks["field_ui.fields:display_overview_$entity_type_id"]['base_route'] = $route_name; - $local_tasks["field_ui.fields:field_form_display_default_$entity_type_id"]['base_route'] = $route_name; - $local_tasks["field_ui.fields:field_display_default_$entity_type_id"]['base_route'] = $route_name; + $local_tasks["field_ui.fields:overview_$field_entity_type"]['base_route'] = $route_name; + $local_tasks["field_ui.fields:form_display_overview_$field_entity_type"]['base_route'] = $route_name; + $local_tasks["field_ui.fields:display_overview_$field_entity_type"]['base_route'] = $route_name; + $local_tasks["field_ui.fields:field_form_display_default_$field_entity_type"]['base_route'] = $route_name; + $local_tasks["field_ui.fields:field_display_default_$field_entity_type"]['base_route'] = $route_name; foreach ($this->entityManager->getFormModes($entity_type_id) as $form_mode => $form_mode_info) { - $local_tasks['field_ui.fields:field_form_display_' . $form_mode . '_' . $entity_type_id]['base_route'] = $route_name; + $local_tasks['field_ui.fields:field_form_display_' . $form_mode . '_' . $field_entity_type]['base_route'] = $route_name; } foreach ($this->entityManager->getViewModes($entity_type_id) as $view_mode => $form_mode_info) { - $local_tasks['field_ui.fields:field_display_' . $view_mode . '_' . $entity_type_id]['base_route'] = $route_name; + $local_tasks['field_ui.fields:field_display_' . $view_mode . '_' . $field_entity_type]['base_route'] = $route_name; } } } diff --git a/core/modules/field_ui/src/Routing/RouteSubscriber.php b/core/modules/field_ui/src/Routing/RouteSubscriber.php index 5673f82..871d451 100644 --- a/core/modules/field_ui/src/Routing/RouteSubscriber.php +++ b/core/modules/field_ui/src/Routing/RouteSubscriber.php @@ -64,7 +64,7 @@ protected function alterRoutes(RouteCollection $collection) { array('_entity_access' => 'field_instance_config.update'), $options ); - $collection->add("field_ui.instance_edit_$entity_type_id", $route); + $collection->add("entity.field_ui.instance_edit_$entity_type_id", $route); $route = new Route( "$path/fields/{field_instance_config}/storage", @@ -96,7 +96,7 @@ protected function alterRoutes(RouteCollection $collection) { array('_permission' => 'administer ' . $entity_type_id . ' fields'), $options ); - $collection->add("entity.$entity_type_id.field_ui_fields", $route); + $collection->add("entity.$bundle_entity_type.field_ui_fields", $route); $route = new Route( "$path/form-display", @@ -107,7 +107,7 @@ protected function alterRoutes(RouteCollection $collection) { array('_field_ui_form_mode_access' => 'administer ' . $entity_type_id . ' form display'), $options ); - $collection->add("entity.{$entity_type_id}.field_ui_form_display", $route); + $collection->add("entity.{$bundle_entity_type}.field_ui_form_display", $route); $route = new Route( "$path/form-display/{form_mode_name}", @@ -118,7 +118,7 @@ protected function alterRoutes(RouteCollection $collection) { array('_field_ui_form_mode_access' => 'administer ' . $entity_type_id . ' form display'), $options ); - $collection->add("field_ui.form_display_overview_form_mode_$entity_type_id", $route); + $collection->add("field_ui.form_display_overview_form_mode_$bundle_entity_type", $route); $route = new Route( "$path/display", @@ -129,7 +129,7 @@ protected function alterRoutes(RouteCollection $collection) { array('_field_ui_view_mode_access' => 'administer ' . $entity_type_id . ' display'), $options ); - $collection->add("entity.{$entity_type_id}.field_ui_display", $route); + $collection->add("entity.{$bundle_entity_type}.field_ui_display", $route); $route = new Route( "$path/display/{view_mode_name}", @@ -140,7 +140,7 @@ protected function alterRoutes(RouteCollection $collection) { array('_field_ui_view_mode_access' => 'administer ' . $entity_type_id . ' display'), $options ); - $collection->add("field_ui.display_overview_view_mode_$entity_type_id", $route); + $collection->add("field_ui.display_overview_view_mode_$bundle_entity_type", $route); } } }