diff --git a/core/modules/menu_link_content/menu_link_content.module b/core/modules/menu_link_content/menu_link_content.module index 417c63e..77a0245 100644 --- a/core/modules/menu_link_content/menu_link_content.module +++ b/core/modules/menu_link_content/menu_link_content.module @@ -41,17 +41,27 @@ function menu_link_content_menu_delete(MenuInterface $menu) { * Implements hook_path_insert(). */ function menu_link_content_path_insert($path) { + _menu_link_content_update_path_alias($path['alias']); +} + +/** + * Helper function to update plugin definition using user-path scheme. + * + * @param string $path_alias + * The path alias. + * + */ +function _menu_link_content_update_path_alias($path_alias) { /** @var \Drupal\Core\Menu\MenuLinkManagerInterface $menu_link_manager */ $menu_link_manager = \Drupal::service('plugin.manager.menu.link'); // @todo Use link.uri once https://www.drupal.org/node/2391217 is in. /* @var $entities \Drupal\menu_link_content\MenuLinkContentInterface[] */ $entities = \Drupal::entityManager() ->getStorage('menu_link_content') - ->loadByProperties(['link__uri' => 'user-path:' . $path['alias']]); + ->loadByProperties(['link__uri' => 'user-path:' . $path_alias]); foreach ($entities as $menu_link) { $menu_link_manager->updateDefinition($menu_link->getPluginId(), $menu_link->getPluginDefinition(), FALSE); } - } /** @@ -60,6 +70,14 @@ function menu_link_content_path_insert($path) { function menu_link_content_path_update($path) { // if ($path['alias'] != $path['original']['alias']) { - menu_link_content_path_insert($path); + menu_link_content_update_path_alias($path['alias']); + menu_link_content_update_path_alias($path['original']['alias']); } -} \ No newline at end of file +} + +/** + * Implements hook_path_delete(). + */ +function menu_link_content_path_delete($path) { + menu_link_content_update_path_alias($path['alias']); +}