betterlt-8.x-1.x-dev/better_local_tasks.module
better_local_tasks.module
<?php /** * @file * This is the module to make fancier local tasks. */ /** * Implements hook_page_attachments_alter(). */ function better_local_tasks_page_attachments_alter(array &$attachments) { if (!\Drupal::currentUser()->hasPermission('access contextual links')) { return; } $admin_context = \Drupal::service('router.admin_context'); if (!$admin_context->isAdminRoute()) { $attachments['#attached']['library'][] = 'better_local_tasks/local-tasks'; } } /** * Implements hook_preprocess_menu_local_task(). * * Add a css class to each local task tab. */ function better_local_tasks_preprocess_menu_local_task(&$variables) { $link_name = $variables['element']['#link']['title']; /** @var \Drupal\Core\Url $url */ $url = $variables['element']['#link']['url']; $route_name = $url->getRouteName(); if (preg_match('/\.canonical$/', $route_name)) { $link_name = 'view'; } elseif (preg_match('/\.edit_form$/', $route_name)) { $link_name = 'edit'; } elseif (preg_match('/\.delete_form$/', $route_name)) { $link_name = 'delete'; } elseif (preg_match('/\.version_history$/', $route_name)) { $link_name = 'revisions'; } elseif (preg_match('/\.devel_load$/', $route_name)) { $link_name = 'devel'; } elseif (preg_match('/\.content_translation_overview$/', $route_name)) { $link_name = 'translate'; } elseif (preg_match('/\.clone_form$/', $route_name)) { $link_name = 'clone'; } elseif ($route_name = 'shortcut.set_switch') { $link_name = 'shortcuts'; } $variables['link']['#attributes']['class'][] = $link_name; } /** * Implements hook_theme_registry_alter(). * * Template overrides for local tasks. */ function better_local_tasks_theme_registry_alter(&$theme_registry) { $admin_context = \Drupal::service('router.admin_context'); if (!$admin_context->isAdminRoute()) { if (!isset($theme_registry['block__local_tasks_block'])) { $theme_registry['block__local_tasks_block'] = $theme_registry['block']; $theme_registry['block__local_tasks_block']['template'] = 'block--local-tasks-block'; } $theme_registry['block__local_tasks_block']['path'] = \Drupal::service('extension.list.module')->getPath('better_local_tasks') . '/templates/block'; $theme_registry['menu_local_tasks']['path'] = \Drupal::service('extension.list.module')->getPath('better_local_tasks') . '/templates/navigation'; } }