Commit 5fccca65 authored by webchick's avatar webchick

Issue #2083615 by Gábor Hojtsy, YesCT, tim.plunkett, Schnitzel: Use links...

Issue #2083615 by Gábor Hojtsy, YesCT, tim.plunkett, Schnitzel: Use links annotation for config entity URI like for content entities.
parent 753a5485
......@@ -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;
}
/**
......
......@@ -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}';
}
......@@ -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().
*/
......
......@@ -31,9 +31,6 @@
* "id" = "id",
* "label" = "label",
* "uuid" = "uuid"
* },
* links = {
* "edit-form" = "admin/config/system/actions/configure/{action}"
* }
* )
*/
......
......@@ -28,9 +28,6 @@
* "id" = "id",
* "label" = "label",
* "uuid" = "uuid"
* },
* links = {
* "edit-form" = "admin/structure/menu/manage/{menu}"
* }
* )
*/
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment