Chris@0
|
1 <?php
|
Chris@0
|
2
|
Chris@0
|
3 namespace Drupal\Core\Layout;
|
Chris@0
|
4
|
Chris@0
|
5 use Drupal\Component\Utility\NestedArray;
|
Chris@0
|
6 use Drupal\Core\Plugin\PluginBase;
|
Chris@0
|
7
|
Chris@0
|
8 /**
|
Chris@0
|
9 * Provides a default class for Layout plugins.
|
Chris@0
|
10 */
|
Chris@0
|
11 class LayoutDefault extends PluginBase implements LayoutInterface {
|
Chris@0
|
12
|
Chris@0
|
13 /**
|
Chris@0
|
14 * The layout definition.
|
Chris@0
|
15 *
|
Chris@0
|
16 * @var \Drupal\Core\Layout\LayoutDefinition
|
Chris@0
|
17 */
|
Chris@0
|
18 protected $pluginDefinition;
|
Chris@0
|
19
|
Chris@0
|
20 /**
|
Chris@0
|
21 * {@inheritdoc}
|
Chris@0
|
22 */
|
Chris@0
|
23 public function __construct(array $configuration, $plugin_id, $plugin_definition) {
|
Chris@0
|
24 parent::__construct($configuration, $plugin_id, $plugin_definition);
|
Chris@0
|
25 $this->setConfiguration($configuration);
|
Chris@0
|
26 }
|
Chris@0
|
27
|
Chris@0
|
28 /**
|
Chris@0
|
29 * {@inheritdoc}
|
Chris@0
|
30 */
|
Chris@0
|
31 public function build(array $regions) {
|
Chris@0
|
32 // Ensure $build only contains defined regions and in the order defined.
|
Chris@0
|
33 $build = [];
|
Chris@0
|
34 foreach ($this->getPluginDefinition()->getRegionNames() as $region_name) {
|
Chris@0
|
35 if (array_key_exists($region_name, $regions)) {
|
Chris@0
|
36 $build[$region_name] = $regions[$region_name];
|
Chris@0
|
37 }
|
Chris@0
|
38 }
|
Chris@0
|
39 $build['#settings'] = $this->getConfiguration();
|
Chris@0
|
40 $build['#layout'] = $this->pluginDefinition;
|
Chris@0
|
41 $build['#theme'] = $this->pluginDefinition->getThemeHook();
|
Chris@0
|
42 if ($library = $this->pluginDefinition->getLibrary()) {
|
Chris@0
|
43 $build['#attached']['library'][] = $library;
|
Chris@0
|
44 }
|
Chris@0
|
45 return $build;
|
Chris@0
|
46 }
|
Chris@0
|
47
|
Chris@0
|
48 /**
|
Chris@0
|
49 * {@inheritdoc}
|
Chris@0
|
50 */
|
Chris@0
|
51 public function getConfiguration() {
|
Chris@0
|
52 return $this->configuration;
|
Chris@0
|
53 }
|
Chris@0
|
54
|
Chris@0
|
55 /**
|
Chris@0
|
56 * {@inheritdoc}
|
Chris@0
|
57 */
|
Chris@0
|
58 public function setConfiguration(array $configuration) {
|
Chris@0
|
59 $this->configuration = NestedArray::mergeDeep($this->defaultConfiguration(), $configuration);
|
Chris@0
|
60 }
|
Chris@0
|
61
|
Chris@0
|
62 /**
|
Chris@0
|
63 * {@inheritdoc}
|
Chris@0
|
64 */
|
Chris@0
|
65 public function defaultConfiguration() {
|
Chris@0
|
66 return [];
|
Chris@0
|
67 }
|
Chris@0
|
68
|
Chris@0
|
69 /**
|
Chris@0
|
70 * {@inheritdoc}
|
Chris@0
|
71 */
|
Chris@0
|
72 public function calculateDependencies() {
|
Chris@0
|
73 return [];
|
Chris@0
|
74 }
|
Chris@0
|
75
|
Chris@0
|
76 /**
|
Chris@0
|
77 * {@inheritdoc}
|
Chris@0
|
78 *
|
Chris@0
|
79 * @return \Drupal\Core\Layout\LayoutDefinition
|
Chris@0
|
80 */
|
Chris@0
|
81 public function getPluginDefinition() {
|
Chris@0
|
82 return parent::getPluginDefinition();
|
Chris@0
|
83 }
|
Chris@0
|
84
|
Chris@0
|
85 }
|