diff --git a/page_manager.services.yml b/page_manager.services.yml index 15a0772..dc4a473 100644 --- a/page_manager.services.yml +++ b/page_manager.services.yml @@ -6,7 +6,7 @@ services: - { name: 'event_subscriber' } page_manager.current_language_context: class: Drupal\page_manager\EventSubscriber\CurrentLanguageContext - arguments: ['@language_manager'] + arguments: ['@language.current_language_context'] tags: - { name: 'event_subscriber' } page_manager.route_param_context: diff --git a/src/EventSubscriber/CurrentLanguageContext.php b/src/EventSubscriber/CurrentLanguageContext.php index 9eabb48..e0c74da 100644 --- a/src/EventSubscriber/CurrentLanguageContext.php +++ b/src/EventSubscriber/CurrentLanguageContext.php @@ -7,11 +7,9 @@ namespace Drupal\page_manager\EventSubscriber; -use Drupal\Core\Plugin\Context\ContextDefinition; -use Drupal\Core\Language\LanguageManagerInterface; -use Drupal\page_manager\Event\PageManagerContextEvent; -use Drupal\Core\Plugin\Context\Context; +use Drupal\Core\Language\ContextProvider\CurrentLanguageContext as CurrentLanguageContextProvider; use Drupal\Core\StringTranslation\StringTranslationTrait; +use Drupal\page_manager\Event\PageManagerContextEvent; use Drupal\page_manager\Event\PageManagerEvents; use Symfony\Component\EventDispatcher\EventSubscriberInterface; @@ -23,20 +21,20 @@ class CurrentLanguageContext implements EventSubscriberInterface { use StringTranslationTrait; /** - * The language manager. + * The core current language context provider. * - * @var \Drupal\Core\Language\LanguageManagerInterface + * @var \Drupal\Core\Language\ContextProvider\CurrentLanguageContext */ - protected $languageManager; + protected $currentLanguageContextProvider; /** * Constructs a new CurrentLanguageContext. * - * @param \Drupal\Core\Language\LanguageManagerInterface - * The language manager. + * @param \Drupal\Core\Language\ContextProvider\CurrentLanguageContext $current_language_context_provider + * The core current language context provider. */ - public function __construct(LanguageManagerInterface $language_manager) { - $this->languageManager = $language_manager; + public function __construct(CurrentLanguageContextProvider $current_language_context_provider) { + $this->currentLanguageContextProvider = $current_language_context_provider; } /** @@ -46,11 +44,10 @@ public function __construct(LanguageManagerInterface $language_manager) { * The page entity context event. */ public function onPageContext(PageManagerContextEvent $event) { - $current_language = $this->languageManager->getCurrentLanguage(); - - $context = new Context(new ContextDefinition('language', $this->t('Current language')), $current_language); - $context->addCacheableDependency($current_language); - $event->getPage()->addContext('language', $context); + $contexts = $this->currentLanguageContextProvider->getRuntimeContexts([]); + foreach ($contexts as $key => $context) { + $event->getPage()->addContext($key, $context); + } } /**