Chris@0
|
1 <?php
|
Chris@0
|
2
|
Chris@0
|
3 namespace Drupal\Core\Display;
|
Chris@0
|
4
|
Chris@0
|
5 use Drupal\Core\Cache\RefinableCacheableDependencyTrait;
|
Chris@0
|
6 use Drupal\Core\Form\FormStateInterface;
|
Chris@0
|
7 use Drupal\Core\Plugin\PluginBase;
|
Chris@0
|
8 use Drupal\Core\Plugin\PluginDependencyTrait;
|
Chris@0
|
9 use Drupal\Core\Session\AccountInterface;
|
Chris@0
|
10
|
Chris@0
|
11 /**
|
Chris@0
|
12 * Provides a base class for DisplayVariant plugins.
|
Chris@0
|
13 *
|
Chris@0
|
14 * @see \Drupal\Core\Display\Annotation\DisplayVariant
|
Chris@0
|
15 * @see \Drupal\Core\Display\VariantInterface
|
Chris@0
|
16 * @see \Drupal\Core\Display\VariantManager
|
Chris@0
|
17 * @see plugin_api
|
Chris@0
|
18 */
|
Chris@0
|
19 abstract class VariantBase extends PluginBase implements VariantInterface {
|
Chris@0
|
20
|
Chris@0
|
21 use PluginDependencyTrait;
|
Chris@0
|
22 use RefinableCacheableDependencyTrait;
|
Chris@0
|
23
|
Chris@0
|
24 /**
|
Chris@0
|
25 * {@inheritdoc}
|
Chris@0
|
26 */
|
Chris@0
|
27 public function __construct(array $configuration, $plugin_id, $plugin_definition) {
|
Chris@0
|
28 parent::__construct($configuration, $plugin_id, $plugin_definition);
|
Chris@0
|
29
|
Chris@0
|
30 $this->setConfiguration($configuration);
|
Chris@0
|
31 }
|
Chris@0
|
32
|
Chris@0
|
33 /**
|
Chris@0
|
34 * {@inheritdoc}
|
Chris@0
|
35 */
|
Chris@0
|
36 public function label() {
|
Chris@0
|
37 return $this->configuration['label'];
|
Chris@0
|
38 }
|
Chris@0
|
39
|
Chris@0
|
40 /**
|
Chris@0
|
41 * {@inheritdoc}
|
Chris@0
|
42 */
|
Chris@0
|
43 public function adminLabel() {
|
Chris@0
|
44 return $this->pluginDefinition['admin_label'];
|
Chris@0
|
45 }
|
Chris@0
|
46
|
Chris@0
|
47 /**
|
Chris@0
|
48 * {@inheritdoc}
|
Chris@0
|
49 */
|
Chris@0
|
50 public function id() {
|
Chris@0
|
51 return $this->configuration['uuid'];
|
Chris@0
|
52 }
|
Chris@0
|
53
|
Chris@0
|
54 /**
|
Chris@0
|
55 * {@inheritdoc}
|
Chris@0
|
56 */
|
Chris@0
|
57 public function getWeight() {
|
Chris@0
|
58 return (int) $this->configuration['weight'];
|
Chris@0
|
59 }
|
Chris@0
|
60
|
Chris@0
|
61 /**
|
Chris@0
|
62 * {@inheritdoc}
|
Chris@0
|
63 */
|
Chris@0
|
64 public function setWeight($weight) {
|
Chris@0
|
65 $this->configuration['weight'] = (int) $weight;
|
Chris@0
|
66 }
|
Chris@0
|
67
|
Chris@0
|
68 /**
|
Chris@0
|
69 * {@inheritdoc}
|
Chris@0
|
70 */
|
Chris@0
|
71 public function getConfiguration() {
|
Chris@0
|
72 return [
|
Chris@0
|
73 'id' => $this->getPluginId(),
|
Chris@0
|
74 ] + $this->configuration;
|
Chris@0
|
75 }
|
Chris@0
|
76
|
Chris@0
|
77 /**
|
Chris@0
|
78 * {@inheritdoc}
|
Chris@0
|
79 */
|
Chris@0
|
80 public function setConfiguration(array $configuration) {
|
Chris@0
|
81 $this->configuration = $configuration + $this->defaultConfiguration();
|
Chris@0
|
82 return $this;
|
Chris@0
|
83 }
|
Chris@0
|
84
|
Chris@0
|
85 /**
|
Chris@0
|
86 * {@inheritdoc}
|
Chris@0
|
87 */
|
Chris@0
|
88 public function defaultConfiguration() {
|
Chris@0
|
89 return [
|
Chris@0
|
90 'label' => '',
|
Chris@0
|
91 'uuid' => '',
|
Chris@0
|
92 'weight' => 0,
|
Chris@0
|
93 ];
|
Chris@0
|
94 }
|
Chris@0
|
95
|
Chris@0
|
96 /**
|
Chris@0
|
97 * {@inheritdoc}
|
Chris@0
|
98 */
|
Chris@0
|
99 public function calculateDependencies() {
|
Chris@0
|
100 return $this->dependencies;
|
Chris@0
|
101 }
|
Chris@0
|
102
|
Chris@0
|
103 /**
|
Chris@0
|
104 * {@inheritdoc}
|
Chris@0
|
105 */
|
Chris@0
|
106 public function buildConfigurationForm(array $form, FormStateInterface $form_state) {
|
Chris@0
|
107 $form['label'] = [
|
Chris@0
|
108 '#type' => 'textfield',
|
Chris@0
|
109 '#title' => $this->t('Label'),
|
Chris@0
|
110 '#description' => $this->t('The label for this display variant.'),
|
Chris@0
|
111 '#default_value' => $this->label(),
|
Chris@0
|
112 '#maxlength' => '255',
|
Chris@0
|
113 ];
|
Chris@0
|
114 return $form;
|
Chris@0
|
115 }
|
Chris@0
|
116
|
Chris@0
|
117 /**
|
Chris@0
|
118 * {@inheritdoc}
|
Chris@0
|
119 */
|
Chris@0
|
120 public function validateConfigurationForm(array &$form, FormStateInterface $form_state) {
|
Chris@0
|
121 }
|
Chris@0
|
122
|
Chris@0
|
123 /**
|
Chris@0
|
124 * {@inheritdoc}
|
Chris@0
|
125 */
|
Chris@0
|
126 public function submitConfigurationForm(array &$form, FormStateInterface $form_state) {
|
Chris@0
|
127 $this->configuration['label'] = $form_state->getValue('label');
|
Chris@0
|
128 }
|
Chris@0
|
129
|
Chris@0
|
130 /**
|
Chris@0
|
131 * {@inheritdoc}
|
Chris@0
|
132 */
|
Chris@0
|
133 public function access(AccountInterface $account = NULL) {
|
Chris@0
|
134 return TRUE;
|
Chris@0
|
135 }
|
Chris@0
|
136
|
Chris@0
|
137 }
|