diff --git a/core/core.services.yml b/core/core.services.yml index c784578..6721015 100644 --- a/core/core.services.yml +++ b/core/core.services.yml @@ -174,7 +174,7 @@ services: arguments: ['@container.namespaces', '@controller_resolver', '@request', '@module_handler'] plugin.manager.menu.local_task: class: Drupal\Core\Menu\LocalTaskManager - arguments: ['@container.namespaces', '@controller_resolver', '@request', '@router.route_provider', '@module_handler', '@cache.cache'] + arguments: ['@container.namespaces', '@controller_resolver', '@request', '@router.route_provider', '@module_handler', '@cache.cache', '@language_manager'] request: class: Symfony\Component\HttpFoundation\Request # @TODO the synthetic setting must be uncommented whenever drupal_session_initialize() diff --git a/core/lib/Drupal/Core/Menu/LocalTaskManager.php b/core/lib/Drupal/Core/Menu/LocalTaskManager.php index 8237a20..42ddbe0 100644 --- a/core/lib/Drupal/Core/Menu/LocalTaskManager.php +++ b/core/lib/Drupal/Core/Menu/LocalTaskManager.php @@ -9,6 +9,7 @@ use Drupal\Core\Cache\CacheBackendInterface; use Drupal\Core\Extension\ModuleHandlerInterface; +use Drupal\Core\Language\LanguageManager; use Drupal\Core\Plugin\DefaultPluginManager; use Drupal\Core\Routing\RouteProviderInterface; use Symfony\Component\HttpFoundation\Request; @@ -52,13 +53,6 @@ class LocalTaskManager extends DefaultPluginManager { protected $routeProvider; /** - * The cache backend. - * - * @var \Drupal\Core\Cache\CacheBackendInterface - */ - protected $cache; - - /** * Constructs a \Drupal\Core\Menu\LocalTaskManager object. * * @param \Traversable $namespaces @@ -74,14 +68,16 @@ class LocalTaskManager extends DefaultPluginManager { * The module handler.u * @param \Drupal\Core\Cache\CacheBackendInterface $cache * The cache backend. + * @param \Drupal\Core\Language\LanguageManager $language_manager */ - public function __construct(\Traversable $namespaces, ControllerResolverInterface $controller_resolver, Request $request, RouteProviderInterface $route_provider, ModuleHandlerInterface $module_handler, CacheBackendInterface $cache) { + public function __construct(\Traversable $namespaces, ControllerResolverInterface $controller_resolver, Request $request, RouteProviderInterface $route_provider, ModuleHandlerInterface $module_handler, CacheBackendInterface $cache, LanguageManager $language_manager) { parent::__construct('Menu\LocalTask', $namespaces, array(), 'Drupal\Core\Annotation\Menu\LocalTask'); $this->controllerResolver = $controller_resolver; $this->request = $request; $this->routeProvider = $route_provider; $this->alterInfo($module_handler, 'local_tasks'); - $this->cache = $cache; + + $this->setCacheBackend($cache, $language_manager, 'local_task'); } /** @@ -130,7 +126,7 @@ public function getLocalTasksForRoute($route_name) { if (!isset($this->instances[$route_name])) { $this->instances[$route_name] = array(); - if ($cache = $this->cache->get('local_task:' . $route_name)) { + if ($cache = $this->cacheBackend->get('local_task:' . $route_name)) { $this->instances[$route_name] = $cache->data; } else { @@ -193,7 +189,7 @@ public function getLocalTasksForRoute($route_name) { } } - $this->cache->set('local_task:' . $route_name, $this->instances[$route_name]); + $this->cacheBackend->set('local_task:' . $route_name, $this->instances[$route_name], CacheBackendInterface::CACHE_PERMANENT, array('local_task')); } } return $this->instances[$route_name];