From f6fe28bed5c5ffda16342c63d01b7ab67f33d9c4 Mon Sep 17 00:00:00 2001 From: mark-casias Date: Wed, 12 Jul 2023 11:15:37 -0600 Subject: [PATCH 1/3] 3374193: Adding theme manager for active theme --- src/View/RegionViewBuilder.php | 16 +++++++++++++--- twig_tweak.services.yml | 2 +- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/View/RegionViewBuilder.php b/src/View/RegionViewBuilder.php index 4533012..5ebbb01 100644 --- a/src/View/RegionViewBuilder.php +++ b/src/View/RegionViewBuilder.php @@ -7,7 +7,9 @@ use Drupal\Core\Cache\CacheableMetadata; use Drupal\Core\Config\ConfigFactoryInterface; use Drupal\Core\Controller\TitleResolverInterface; use Drupal\Core\Entity\EntityTypeManagerInterface; +use Drupal\Core\Extension\ThemeHandlerInterface; use Drupal\Core\Routing\RouteObjectInterface; +use Drupal\Core\Theme\ThemeManagerInterface; use Symfony\Component\HttpFoundation\RequestStack; /** @@ -43,6 +45,13 @@ class RegionViewBuilder { */ protected $titleResolver; + /** + * The theme manager. + * + * @var \Drupal\Core\Theme\ThemeManagerInterface + */ + protected $themeManager; + /** * Constructs a RegionViewBuilder object. */ @@ -50,12 +59,14 @@ class RegionViewBuilder { EntityTypeManagerInterface $entity_type_manager, ConfigFactoryInterface $config_factory, RequestStack $request_stack, - TitleResolverInterface $title_resolver + TitleResolverInterface $title_resolver, + ThemeManagerInterface $theme_manager ) { $this->entityTypeManager = $entity_type_manager; $this->configFactory = $config_factory; $this->requestStack = $request_stack; $this->titleResolver = $title_resolver; + $this->themeManager = $theme_manager; } /** @@ -71,10 +82,9 @@ class RegionViewBuilder { * A render array to display the region content. */ public function build(string $region, string $theme = NULL): array { - $blocks = $this->entityTypeManager->getStorage('block')->loadByProperties([ 'region' => $region, - 'theme' => $theme ?: $this->configFactory->get('system.theme')->get('default'), + 'theme' => $theme ?: $this->themeManager->getActiveTheme()->getName(), ]); $view_builder = $this->entityTypeManager->getViewBuilder('block'); diff --git a/twig_tweak.services.yml b/twig_tweak.services.yml index f5c6ef3..5f47fb1 100644 --- a/twig_tweak.services.yml +++ b/twig_tweak.services.yml @@ -11,7 +11,7 @@ services: twig_tweak.region_view_builder: class: Drupal\twig_tweak\View\RegionViewBuilder - arguments: ['@entity_type.manager', '@config.factory', '@request_stack', '@title_resolver'] + arguments: ['@entity_type.manager', '@config.factory', '@request_stack', '@title_resolver', '@theme.manager'] twig_tweak.entity_view_builder: class: Drupal\twig_tweak\View\EntityViewBuilder From b2ca985100a1253e9224afb9e73e1cba1d714085 Mon Sep 17 00:00:00 2001 From: Mark Casias Date: Mon, 30 Oct 2023 10:15:12 -0600 Subject: [PATCH 2/3] 3374193: Removing unused statement --- src/View/RegionViewBuilder.php | 1 - 1 file changed, 1 deletion(-) diff --git a/src/View/RegionViewBuilder.php b/src/View/RegionViewBuilder.php index 5ebbb01..7672985 100644 --- a/src/View/RegionViewBuilder.php +++ b/src/View/RegionViewBuilder.php @@ -7,7 +7,6 @@ use Drupal\Core\Cache\CacheableMetadata; use Drupal\Core\Config\ConfigFactoryInterface; use Drupal\Core\Controller\TitleResolverInterface; use Drupal\Core\Entity\EntityTypeManagerInterface; -use Drupal\Core\Extension\ThemeHandlerInterface; use Drupal\Core\Routing\RouteObjectInterface; use Drupal\Core\Theme\ThemeManagerInterface; use Symfony\Component\HttpFoundation\RequestStack; From 7842581b570eb12bd55677e7cd63a9c6c9b54560 Mon Sep 17 00:00:00 2001 From: Mark Casias Date: Mon, 30 Oct 2023 10:29:56 -0600 Subject: [PATCH 3/3] 3374193: fixing tests for sidebar --- tests/src/Kernel/RegionViewBuilderTest.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/src/Kernel/RegionViewBuilderTest.php b/tests/src/Kernel/RegionViewBuilderTest.php index 40a1eb8..e49316f 100644 --- a/tests/src/Kernel/RegionViewBuilderTest.php +++ b/tests/src/Kernel/RegionViewBuilderTest.php @@ -62,14 +62,14 @@ final class RegionViewBuilderTest extends AbstractTestCase { $build = $view_builder->build('sidebar_first'); // The build should be empty because 'stark' is not a default theme. - $expected_build = [ + $expected_sidebar_first = [ '#cache' => [ 'contexts' => [], 'tags' => ['config:block_list'], 'max-age' => Cache::PERMANENT, ], ]; - self::assertSame($expected_build, $build); + self::assertSame($expected_sidebar_first, $build); // Specify the theme name explicitly. $build = $view_builder->build('sidebar_first', 'stark'); @@ -137,7 +137,7 @@ final class RegionViewBuilderTest extends AbstractTestCase { ->save(); $build = $view_builder->build('sidebar_first'); - self::assertRenderArray($expected_build, $build); + self::assertRenderArray($expected_sidebar_first, $build); Html::resetSeenIds(); $actual_html = $renderer->renderPlain($expected_build);