You are here

function webform_menu_links_discovered_alter in Webform 6.x

Same name and namespace in other branches
  1. 8.5 webform.module \webform_menu_links_discovered_alter()

Implements hook_menu_links_discovered_alter().

File

./webform.module, line 503
Enables the creation of webforms and questionnaires.

Code

function webform_menu_links_discovered_alter(&$links) {
  if (\Drupal::config('webform.settings')
    ->get('ui.toolbar_item')) {
    $links['entity.webform.collection']['parent'] = 'system.admin';
    $links['entity.webform.collection']['weight'] = -9;
  }

  // Add webform local tasks as admin menu toolbar menu items.
  // @see admin_toolbar_tools_menu_links_discovered_alter()
  if (\Drupal::moduleHandler()
    ->moduleExists('admin_toolbar_tools')) {

    /** @var \Drupal\Core\Menu\LocalTaskManager $local_task_manager */
    $local_task_manager = \Drupal::service('plugin.manager.menu.local_task');
    $local_tasks = $local_task_manager
      ->getLocalTasks('entity.webform.collection', 0);
    foreach ($local_tasks['tabs'] as $local_task) {
      if (!isset($local_task['#link']['url']) || !$local_task['#link']['url'] instanceof Url) {
        continue;
      }
      $menu_item_title = $local_task['#link']['title'];
      $menu_item_route_name = $local_task['#link']['url']
        ->getRouteName();
      $menu_item_name = $menu_item_route_name . '.item';
      $links[$menu_item_name] = [
        'title' => $menu_item_title,
        'route_name' => $menu_item_route_name,
        'parent' => 'entity.webform.collection',
        'weight' => $local_task['#weight'],
        'provider' => 'webform',
        'menu_name' => 'admin',
      ];
      if (\Drupal::config('webform.settings')
        ->get('ui.toolbar_item')) {
        $local_sub_tasks = $local_task_manager
          ->getLocalTasks($menu_item_route_name, 1);
        foreach ($local_sub_tasks['tabs'] as $local_sub_task) {
          if (!$local_task['#link']['url'] instanceof Url) {
            continue;
          }
          $menu_sub_item_title = $local_sub_task['#link']['title'];
          $menu_sub_item_route_name = $local_sub_task['#link']['url']
            ->getRouteName();
          $menu_sub_item_name = $menu_sub_item_route_name . '.sub_item';
          $links[$menu_sub_item_name] = [
            'title' => $menu_sub_item_title,
            'route_name' => $menu_sub_item_route_name,
            'parent' => $menu_item_name,
            'weight' => $local_sub_task['#weight'],
            'provider' => 'webform',
            'menu_name' => 'admin',
          ];
        }
      }
    }
  }
}