Chris@17
|
1 <?php
|
Chris@17
|
2
|
Chris@17
|
3 namespace Drupal\layout_builder;
|
Chris@17
|
4
|
Chris@17
|
5 use Drupal\Core\DependencyInjection\ContainerBuilder;
|
Chris@17
|
6 use Drupal\Core\DependencyInjection\ServiceProviderInterface;
|
Chris@17
|
7 use Drupal\layout_builder\EventSubscriber\SetInlineBlockDependency;
|
Chris@18
|
8 use Drupal\layout_builder\Normalizer\LayoutEntityDisplayNormalizer;
|
Chris@18
|
9 use Symfony\Component\DependencyInjection\ChildDefinition;
|
Chris@17
|
10 use Symfony\Component\DependencyInjection\Definition;
|
Chris@17
|
11 use Symfony\Component\DependencyInjection\Reference;
|
Chris@17
|
12
|
Chris@17
|
13 /**
|
Chris@17
|
14 * Sets the layout_builder.get_block_dependency_subscriber service definition.
|
Chris@17
|
15 *
|
Chris@17
|
16 * This service is dependent on the block_content module so it must be provided
|
Chris@17
|
17 * dynamically.
|
Chris@17
|
18 *
|
Chris@17
|
19 * @internal
|
Chris@18
|
20 * Service providers are internal.
|
Chris@17
|
21 *
|
Chris@17
|
22 * @see \Drupal\layout_builder\EventSubscriber\SetInlineBlockDependency
|
Chris@17
|
23 */
|
Chris@17
|
24 class LayoutBuilderServiceProvider implements ServiceProviderInterface {
|
Chris@17
|
25
|
Chris@17
|
26 /**
|
Chris@17
|
27 * {@inheritdoc}
|
Chris@17
|
28 */
|
Chris@17
|
29 public function register(ContainerBuilder $container) {
|
Chris@17
|
30 $modules = $container->getParameter('container.modules');
|
Chris@17
|
31 if (isset($modules['block_content'])) {
|
Chris@17
|
32 $definition = new Definition(SetInlineBlockDependency::class);
|
Chris@17
|
33 $definition->setArguments([
|
Chris@17
|
34 new Reference('entity_type.manager'),
|
Chris@17
|
35 new Reference('database'),
|
Chris@17
|
36 new Reference('inline_block.usage'),
|
Chris@18
|
37 new Reference('plugin.manager.layout_builder.section_storage'),
|
Chris@17
|
38 ]);
|
Chris@17
|
39 $definition->addTag('event_subscriber');
|
Chris@17
|
40 $container->setDefinition('layout_builder.get_block_dependency_subscriber', $definition);
|
Chris@17
|
41 }
|
Chris@18
|
42 if (isset($modules['serialization'])) {
|
Chris@18
|
43 $definition = (new ChildDefinition('serializer.normalizer.config_entity'))
|
Chris@18
|
44 ->setClass(LayoutEntityDisplayNormalizer::class)
|
Chris@18
|
45 // Ensure that this normalizer takes precedence for Layout Builder data
|
Chris@18
|
46 // over the generic serializer.normalizer.config_entity.
|
Chris@18
|
47 ->addTag('normalizer', ['priority' => 5]);
|
Chris@18
|
48 $container->setDefinition('layout_builder.normalizer.layout_entity_display', $definition);
|
Chris@18
|
49 }
|
Chris@17
|
50 }
|
Chris@17
|
51
|
Chris@17
|
52 }
|