Browse Source

Merge branch '3374193-twig-tweak-does' into '3.x'

3374193: Adding theme manager for active theme

See merge request project/twig_tweak!34
merge-requests/34/merge
Mark Casias 2 years ago
parent
commit
8effc77894
  1. 15
      src/View/RegionViewBuilder.php
  2. 6
      tests/src/Kernel/RegionViewBuilderTest.php
  3. 2
      twig_tweak.services.yml

15
src/View/RegionViewBuilder.php

@ -8,6 +8,7 @@ use Drupal\Core\Config\ConfigFactoryInterface;
use Drupal\Core\Controller\TitleResolverInterface; use Drupal\Core\Controller\TitleResolverInterface;
use Drupal\Core\Entity\EntityTypeManagerInterface; use Drupal\Core\Entity\EntityTypeManagerInterface;
use Drupal\Core\Routing\RouteObjectInterface; use Drupal\Core\Routing\RouteObjectInterface;
use Drupal\Core\Theme\ThemeManagerInterface;
use Symfony\Component\HttpFoundation\RequestStack; use Symfony\Component\HttpFoundation\RequestStack;
/** /**
@ -43,6 +44,13 @@ class RegionViewBuilder {
*/ */
protected $titleResolver; protected $titleResolver;
/**
* The theme manager.
*
* @var \Drupal\Core\Theme\ThemeManagerInterface
*/
protected $themeManager;
/** /**
* Constructs a RegionViewBuilder object. * Constructs a RegionViewBuilder object.
*/ */
@ -50,12 +58,14 @@ class RegionViewBuilder {
EntityTypeManagerInterface $entity_type_manager, EntityTypeManagerInterface $entity_type_manager,
ConfigFactoryInterface $config_factory, ConfigFactoryInterface $config_factory,
RequestStack $request_stack, RequestStack $request_stack,
TitleResolverInterface $title_resolver TitleResolverInterface $title_resolver,
ThemeManagerInterface $theme_manager
) { ) {
$this->entityTypeManager = $entity_type_manager; $this->entityTypeManager = $entity_type_manager;
$this->configFactory = $config_factory; $this->configFactory = $config_factory;
$this->requestStack = $request_stack; $this->requestStack = $request_stack;
$this->titleResolver = $title_resolver; $this->titleResolver = $title_resolver;
$this->themeManager = $theme_manager;
} }
/** /**
@ -71,10 +81,9 @@ class RegionViewBuilder {
* A render array to display the region content. * A render array to display the region content.
*/ */
public function build(string $region, string $theme = NULL): array { public function build(string $region, string $theme = NULL): array {
$blocks = $this->entityTypeManager->getStorage('block')->loadByProperties([ $blocks = $this->entityTypeManager->getStorage('block')->loadByProperties([
'region' => $region, 'region' => $region,
'theme' => $theme ?: $this->configFactory->get('system.theme')->get('default'), 'theme' => $theme ?: $this->themeManager->getActiveTheme()->getName(),
]); ]);
$view_builder = $this->entityTypeManager->getViewBuilder('block'); $view_builder = $this->entityTypeManager->getViewBuilder('block');

6
tests/src/Kernel/RegionViewBuilderTest.php

@ -62,14 +62,14 @@ final class RegionViewBuilderTest extends AbstractTestCase {
$build = $view_builder->build('sidebar_first'); $build = $view_builder->build('sidebar_first');
// The build should be empty because 'stark' is not a default theme. // The build should be empty because 'stark' is not a default theme.
$expected_build = [ $expected_sidebar_first = [
'#cache' => [ '#cache' => [
'contexts' => [], 'contexts' => [],
'tags' => ['config:block_list'], 'tags' => ['config:block_list'],
'max-age' => Cache::PERMANENT, 'max-age' => Cache::PERMANENT,
], ],
]; ];
self::assertSame($expected_build, $build); self::assertSame($expected_sidebar_first, $build);
// Specify the theme name explicitly. // Specify the theme name explicitly.
$build = $view_builder->build('sidebar_first', 'stark'); $build = $view_builder->build('sidebar_first', 'stark');
@ -137,7 +137,7 @@ final class RegionViewBuilderTest extends AbstractTestCase {
->save(); ->save();
$build = $view_builder->build('sidebar_first'); $build = $view_builder->build('sidebar_first');
self::assertRenderArray($expected_build, $build); self::assertRenderArray($expected_sidebar_first, $build);
Html::resetSeenIds(); Html::resetSeenIds();
$actual_html = $renderer->renderPlain($expected_build); $actual_html = $renderer->renderPlain($expected_build);

2
twig_tweak.services.yml

@ -11,7 +11,7 @@ services:
twig_tweak.region_view_builder: twig_tweak.region_view_builder:
class: Drupal\twig_tweak\View\RegionViewBuilder 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: twig_tweak.entity_view_builder:
class: Drupal\twig_tweak\View\EntityViewBuilder class: Drupal\twig_tweak\View\EntityViewBuilder

Loading…
Cancel
Save