diff --git a/core/modules/menu/menu.module b/core/modules/menu/menu.module index 4c65948..23d62e2 100644 --- a/core/modules/menu/menu.module +++ b/core/modules/menu/menu.module @@ -162,66 +162,10 @@ function menu_menu() { } /** - * Entity URI callback. - * - * @param Drupal\system\Plugin\Core\Entity\Menu $menu - * A Menu entity. - */ -function menu_uri(Menu $menu) { - return array( - 'path' => 'admin/structure/menu/manage/' . $menu->id(), - ); -} - -/** - * Implements hook_config_import_create(). - */ -function menu_config_import_create($name, $new_config, $old_config) { - if (strpos($name, 'menu.menu.') !== 0) { - return FALSE; - } - - $menu = entity_create('menu', $new_config->get()); - $menu->save(); - return TRUE; -} - -/** - * Implements hook_config_import_change(). + * Implements hook_entity_info_alter(). */ -function menu_config_import_change($name, $new_config, $old_config) { - if (strpos($name, 'menu.menu.') !== 0) { - return FALSE; - } - - list(, , $id) = explode('.', $name); - $entity = entity_load('menu', $id); - $entity->original = clone $entity; - foreach ($old_config->get() as $property => $value) { - $entity->original->$property = $value; - } - - // Iterate through each property of the new config, copying it to the menu - // object. - foreach ($new_config->get() as $property => $value) { - $entity->$property = $value; - } - - $entity->save(); - return TRUE; -} - -/** - * Implements hook_config_import_delete(). - */ -function menu_config_import_delete($name, $new_config, $old_config) { - if (strpos($name, 'menu.menu.') !== 0) { - return FALSE; - } - - list(, , $id) = explode('.', $name); - entity_delete_multiple('menu', array($id)); - return TRUE; +function menu_entity_info_alter(&$entity_info) { + $entity_info['menu']['list_controller_class'] = 'Drupal\menu\MenuListController'; } /** diff --git a/core/modules/system/lib/Drupal/system/Plugin/Core/Entity/Menu.php b/core/modules/system/lib/Drupal/system/Plugin/Core/Entity/Menu.php index 4cbf898..94f957b 100644 --- a/core/modules/system/lib/Drupal/system/Plugin/Core/Entity/Menu.php +++ b/core/modules/system/lib/Drupal/system/Plugin/Core/Entity/Menu.php @@ -17,10 +17,8 @@ * @Plugin( * id = "menu", * label = @Translation("Menu"), - * module = "menu", + * module = "system", * controller_class = "Drupal\Core\Config\Entity\ConfigStorageController", - * list_controller_class = "Drupal\menu\MenuListController", - * uri_callback = "menu_uri", * config_prefix = "menu.menu", * entity_keys = { * "id" = "id", @@ -59,4 +57,17 @@ class Menu extends ConfigEntityBase { */ public $description; + /** + * Overrides \Drupal\Core\Entity\Entity::uri(). + */ + public function uri() { + return array( + 'path' => 'admin/structure/menu/manage/' . $this->id(), + 'options' => array( + 'entity_type' => $this->entityType, + 'entity' => $this, + ), + ); + } + } diff --git a/core/modules/system/system.module b/core/modules/system/system.module index 6dd33b1..e9b44ae 100644 --- a/core/modules/system/system.module +++ b/core/modules/system/system.module @@ -2144,6 +2144,57 @@ function system_data_type_info() { } /** + * Implements hook_config_import_create(). + */ +function system_config_import_create($name, $new_config, $old_config) { + if (strpos($name, 'menu.menu.') !== 0) { + return FALSE; + } + + $menu = entity_create('menu', $new_config->get()); + $menu->save(); + return TRUE; +} + +/** + * Implements hook_config_import_change(). + */ +function system_config_import_change($name, $new_config, $old_config) { + if (strpos($name, 'menu.menu.') !== 0) { + return FALSE; + } + + list(, , $id) = explode('.', $name); + $entity = entity_load('menu', $id); + $entity->original = clone $entity; + foreach ($old_config->get() as $property => $value) { + $entity->original->$property = $value; + } + + // Iterate through each property of the new config, copying it to the menu + // object. + foreach ($new_config->get() as $property => $value) { + $entity->$property = $value; + } + + $entity->save(); + return TRUE; +} + +/** + * Implements hook_config_import_delete(). + */ +function system_config_import_delete($name, $new_config, $old_config) { + if (strpos($name, 'menu.menu.') !== 0) { + return FALSE; + } + + list(, , $id) = explode('.', $name); + entity_delete_multiple('menu', array($id)); + return TRUE; +} + +/** * Menu item access callback - only enabled themes can be accessed. */ function _system_themes_access($theme) {