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\Entity\EntityTypeManagerInterface;
use Drupal\Core\Routing\RouteObjectInterface;
use Drupal\Core\Theme\ThemeManagerInterface;
use Symfony\Component\HttpFoundation\RequestStack;
/**
@ -43,6 +44,13 @@ class RegionViewBuilder {
*/
protected $titleResolver;
/**
* The theme manager.
*
* @var \Drupal\Core\Theme\ThemeManagerInterface
*/
protected $themeManager;
/**
* Constructs a RegionViewBuilder object.
*/
@ -50,12 +58,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 +81,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');

6
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);

2
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

Loading…
Cancel
Save