From 9bceaeb114a3a85874c29379f1063c0a8ff00c5a Mon Sep 17 00:00:00 2001 From: Antonio De Marco <antonio@nuvole.org> Date: Sat, 6 Oct 2018 18:58:17 +0200 Subject: [PATCH] Issue #18: Integrate variant with Display Suite field templates. --- .../src/FieldTemplateProcessor.php | 32 +++++++++++++++++-- .../src/Plugin/DsFieldTemplate/Pattern.php | 3 +- src/Form/PatternDisplayFormTrait.php | 5 +-- 3 files changed, 34 insertions(+), 6 deletions(-) diff --git a/modules/ui_patterns_ds/src/FieldTemplateProcessor.php b/modules/ui_patterns_ds/src/FieldTemplateProcessor.php index 85d655136..3f946791a 100644 --- a/modules/ui_patterns_ds/src/FieldTemplateProcessor.php +++ b/modules/ui_patterns_ds/src/FieldTemplateProcessor.php @@ -34,6 +34,7 @@ class FieldTemplateProcessor implements FieldTemplateProcessorInterface { $content['pattern_' . $delta] = [ '#type' => 'pattern', '#id' => $this->getPatternId(), + '#variant' => $this->getVariant(), '#fields' => $fields, '#context' => $this->getContext(), '#multiple_sources' => TRUE, @@ -81,17 +82,42 @@ class FieldTemplateProcessor implements FieldTemplateProcessorInterface { * Pattern ID. */ protected function getPatternId() { - return $this->variables['ds-config']['settings']['pattern']; + return $this->getSetting('pattern'); } /** * Get mapping settings. * - * @return mixed + * @return array * Mapping settings. */ protected function getMapping() { - return $this->variables['ds-config']['settings']['pattern_mapping']; + return $this->getSetting('pattern_mapping', []); + } + + /** + * Get mapping settings. + * + * @return string + * Mapping settings. + */ + protected function getVariant() { + return $this->getSetting('pattern_variant'); + } + + /** + * Get setting value or default to given value if none set. + * + * @param string $name + * Setting name. + * @param string $default + * Setting default value. + * + * @return mixed + * Setting value. + */ + protected function getSetting($name, $default = '') { + return isset($this->variables['ds-config']['settings'][$name]) ? $this->variables['ds-config']['settings'][$name] : $default; } /** diff --git a/modules/ui_patterns_ds/src/Plugin/DsFieldTemplate/Pattern.php b/modules/ui_patterns_ds/src/Plugin/DsFieldTemplate/Pattern.php index 741159b5c..c0d3c31ba 100644 --- a/modules/ui_patterns_ds/src/Plugin/DsFieldTemplate/Pattern.php +++ b/modules/ui_patterns_ds/src/Plugin/DsFieldTemplate/Pattern.php @@ -131,7 +131,8 @@ class Pattern extends DsFieldTemplateBase implements ContainerFactoryPluginInter public function defaultConfiguration() { return [ 'pattern' => '', - 'pattern_mapping' => '', + 'pattern_variant' => '', + 'pattern_mapping' => [], ]; } diff --git a/src/Form/PatternDisplayFormTrait.php b/src/Form/PatternDisplayFormTrait.php index d43377488..6e3522080 100644 --- a/src/Form/PatternDisplayFormTrait.php +++ b/src/Form/PatternDisplayFormTrait.php @@ -43,10 +43,11 @@ trait PatternDisplayFormTrait { /** @var \Drupal\ui_patterns\Definition\PatternDefinition $definition */ foreach ($this->patternsManager->getDefinitions() as $pattern_id => $definition) { if ($definition->hasVariants()) { - $form['pattern_variants'] = [ + $form['pattern_variant'] = [ '#type' => 'select', - '#title' => $this->t('Variants'), + '#title' => $this->t('Variant'), '#options' => $definition->getVariantsAsOptions(), + '#default_value' => isset($configuration['pattern_variant']) ? $configuration['pattern_variant'] : NULL, '#weight' => 0, '#states' => [ 'visible' => [ -- GitLab