' . t('About') . ''; $output .= '

' . t('The Custom Menu Links module allows users to create menu links. These links can be translated if multiple languages are used for the site.'); if (\Drupal::moduleHandler()->moduleExists('menu_ui')) { $output .= ' ' . t('It is required by the Menu UI module, which provides an interface for managing menus and menu links. For more information, see the Menu UI module help page and the online documentation for the Custom Menu Links module.', [':menu-help' => \Drupal::url('help.page', ['name' => 'menu_ui']), ':drupal-org-help' => 'https://www.drupal.org/documentation/modules/menu_link']); } else { $output .= ' ' . t('For more information, see the online documentation for the Custom Menu Links module. If you enable the Menu UI module, it provides an interface for managing menus and menu links.', [':drupal-org-help' => 'https://www.drupal.org/documentation/modules/menu_link']); } $output .= '

'; return $output; } } /** * Implements hook_menu_delete(). */ function menu_link_content_menu_delete(MenuInterface $menu) { $storage = \Drupal::entityManager()->getStorage('menu_link_content'); $menu_links = $storage->loadByProperties(['menu_name' => $menu->id()]); $storage->delete($menu_links); } /** * 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 internal scheme. * * @param string $path * The path alias. */ function _menu_link_content_update_path_alias($path) { /** @var \Drupal\Core\Menu\MenuLinkManagerInterface $menu_link_manager */ $menu_link_manager = \Drupal::service('plugin.manager.menu.link'); /** @var \Drupal\menu_link_content\MenuLinkContentInterface[] $entities */ $entities = \Drupal::entityManager() ->getStorage('menu_link_content') ->loadByProperties(['link.uri' => 'internal:' . $path]); foreach ($entities as $menu_link) { $menu_link_manager->updateDefinition($menu_link->getPluginId(), $menu_link->getPluginDefinition(), FALSE); } } /** * Implements hook_path_update(). */ function menu_link_content_path_update($path) { if ($path['alias'] != $path['original']['alias']) { _menu_link_content_update_path_alias($path['alias']); _menu_link_content_update_path_alias($path['original']['alias']); } elseif ($path['source'] != $path['original']['source']) { _menu_link_content_update_path_alias($path['alias']); } } /** * Implements hook_path_delete(). */ function menu_link_content_path_delete($path) { _menu_link_content_update_path_alias($path['alias']); }