diff --git a/core/lib/Drupal/Core/Entity/Entity.php b/core/lib/Drupal/Core/Entity/Entity.php index 6d41d1304ef7cff4451f727bde5119b4f0acc10a..fd1dc389999b528c242c2e52769050a8f5e61385 100644 --- a/core/lib/Drupal/Core/Entity/Entity.php +++ b/core/lib/Drupal/Core/Entity/Entity.php @@ -163,8 +163,9 @@ public function label($langcode = NULL) { * @code * uri_callback = "contact_category_uri", * @endcode - * If looking for the canonical URI, and it was not set in the links array - * or in a uri_callback function, the path is set using the default template: + * If the path is not set in the links array, the uri_callback function is + * used for setting the path. If this does not exist and the link relationship + * type is canonical, the path is set using the default template: * entity/entityType/id. * * @param string $rel @@ -198,36 +199,38 @@ public function uri($rel = 'canonical') { return $uri; } + $bundle = $this->bundle(); + // A bundle-specific callback takes precedence over the generic one for + // the entity type. + $bundles = entity_get_bundles($this->entityType); + if (isset($bundles[$bundle]['uri_callback'])) { + $uri_callback = $bundles[$bundle]['uri_callback']; + } + elseif (isset($entity_info['uri_callback'])) { + $uri_callback = $entity_info['uri_callback']; + } + + // Invoke the callback to get the URI. If there is no callback, use the + // default URI format. + if (isset($uri_callback) && function_exists($uri_callback)) { + $uri = $uri_callback($this); + } // Only use these defaults for a canonical link (that is, a link to self). // Other relationship types are not supported by this logic. - if ($rel == 'canonical') { - $bundle = $this->bundle(); - // A bundle-specific callback takes precedence over the generic one for - // the entity type. - $bundles = entity_get_bundles($this->entityType); - if (isset($bundles[$bundle]['uri_callback'])) { - $uri_callback = $bundles[$bundle]['uri_callback']; - } - elseif (isset($entity_info['uri_callback'])) { - $uri_callback = $entity_info['uri_callback']; - } - - // Invoke the callback to get the URI. If there is no callback, use the - // default URI format. - if (isset($uri_callback) && function_exists($uri_callback)) { - $uri = $uri_callback($this); - } - else { - $uri = array( - 'path' => 'entity/' . $this->entityType . '/' . $this->id(), - ); - } - // Pass the entity data to url() so that alter functions do not need to - // look up this entity again. - $uri['options']['entity_type'] = $this->entityType; - $uri['options']['entity'] = $this; - return $uri; + elseif ($rel == 'canonical') { + $uri = array( + 'path' => 'entity/' . $this->entityType . '/' . $this->id(), + ); + } + else { + return array(); } + + // Pass the entity data to url() so that alter functions do not need to + // look up this entity again. + $uri['options']['entity_type'] = $this->entityType; + $uri['options']['entity'] = $this; + return $uri; } /** diff --git a/core/modules/action/action.module b/core/modules/action/action.module index 5c0e3500bb33a9e9e059de858f7bb9acf4c8395b..4dc9a3b652e812546e3b8e41c97a116fd80c09a6 100644 --- a/core/modules/action/action.module +++ b/core/modules/action/action.module @@ -84,4 +84,5 @@ function action_entity_info(&$entity_info) { $entity_info['action']['controllers']['form']['edit'] = 'Drupal\action\ActionEditFormController'; $entity_info['action']['controllers']['form']['delete'] = 'Drupal\action\Form\ActionDeleteForm'; $entity_info['action']['controllers']['list'] = 'Drupal\action\ActionListController'; + $entity_info['action']['links']['edit-form'] = 'admin/config/system/actions/configure/{action}'; } diff --git a/core/modules/menu/menu.module b/core/modules/menu/menu.module index 1689d35bf0d794241c990ed1ebe1971bbab0e7b8..70cf6e61b84caa40f3f943def1763e41dd2d517f 100644 --- a/core/modules/menu/menu.module +++ b/core/modules/menu/menu.module @@ -121,7 +121,7 @@ function menu_menu() { */ function menu_entity_info(&$entity_info) { $entity_info['menu']['controllers']['list'] = 'Drupal\menu\MenuListController'; - $entity_info['menu']['uri_callback'] = 'menu_uri'; + $entity_info['menu']['links']['edit-form'] = 'admin/structure/menu/manage/{menu}'; $entity_info['menu']['controllers']['form'] = array( 'add' => 'Drupal\menu\MenuFormController', 'edit' => 'Drupal\menu\MenuFormController', @@ -148,18 +148,6 @@ function menu_entity_bundle_info() { return $bundles; } -/** - * Entity URI callback. - * - * @param \Drupal\system\Entity\Menu $menu - * A Menu entity. - */ -function menu_uri(Menu $menu) { - return array( - 'path' => 'admin/structure/menu/manage/' . $menu->id(), - ); -} - /** * Implements hook_theme(). */ diff --git a/core/modules/system/lib/Drupal/system/Entity/Action.php b/core/modules/system/lib/Drupal/system/Entity/Action.php index ac73e40fe99a929ffe756be81e5b8cef9f814151..ac68e3e8a676b1e0bbf33d8877ae5389a5982a02 100644 --- a/core/modules/system/lib/Drupal/system/Entity/Action.php +++ b/core/modules/system/lib/Drupal/system/Entity/Action.php @@ -31,9 +31,6 @@ * "id" = "id", * "label" = "label", * "uuid" = "uuid" - * }, - * links = { - * "edit-form" = "admin/config/system/actions/configure/{action}" * } * ) */ diff --git a/core/modules/system/lib/Drupal/system/Entity/Menu.php b/core/modules/system/lib/Drupal/system/Entity/Menu.php index 0898744ec30e8ad63a9e2e9f0c444c52322a8396..4727f8aed768e661264b4ad22d8657119dc152bf 100644 --- a/core/modules/system/lib/Drupal/system/Entity/Menu.php +++ b/core/modules/system/lib/Drupal/system/Entity/Menu.php @@ -28,9 +28,6 @@ * "id" = "id", * "label" = "label", * "uuid" = "uuid" - * }, - * links = { - * "edit-form" = "admin/structure/menu/manage/{menu}" * } * ) */