diff --git a/config/schema/page_manager.schema.yml b/config/schema/page_manager.schema.yml index 649a25f..b2f4159 100644 --- a/config/schema/page_manager.schema.yml +++ b/config/schema/page_manager.schema.yml @@ -101,6 +101,12 @@ page_manager.block_plugin.*: label: 'Context assignments' sequence: - type: string + css_classes: + type: string + label: 'CSS classes' + css_id: + type: string + label: 'CSS id' display_variant.plugin.block_display: type: display_variant.plugin diff --git a/page_manager_ui/src/Form/VariantPluginConfigureBlockFormBase.php b/page_manager_ui/src/Form/VariantPluginConfigureBlockFormBase.php index 59de6c6..2b46363 100644 --- a/page_manager_ui/src/Form/VariantPluginConfigureBlockFormBase.php +++ b/page_manager_ui/src/Form/VariantPluginConfigureBlockFormBase.php @@ -142,6 +142,19 @@ abstract class VariantPluginConfigureBlockFormBase extends FormBase { $form['context_mapping'] = $this->addContextAssignmentElement($this->block, $this->getVariantPlugin()->getContexts()); } + $settings = $this->block->getConfiguration(); + $form['css_classes'] = [ + '#title' => $this->t('Css classes'), + '#type' => 'textfield', + '#default_value' => !empty($settings['css_classes']) ? $settings['css_classes'] : NULL, + ]; + + $form['css_id'] = [ + '#title' => $this->t('Css ID'), + '#type' => 'textfield', + '#default_value' => !empty($settings['css_id']) ? $settings['css_id'] : NULL, + ]; + $form['actions']['submit'] = [ '#type' => 'submit', '#value' => $this->submitText(), @@ -180,7 +193,12 @@ abstract class VariantPluginConfigureBlockFormBase extends FormBase { $this->block->setContextMapping($form_state->getValue('context_mapping', [])); } - $this->getVariantPlugin()->updateBlock($this->block->getConfiguration()['uuid'], ['region' => $form_state->getValue('region')]); + $block_settings = [ + 'region' => $form_state->getValue('region'), + 'css_classes' => $form_state->getValue('css_classes'), + 'css_id' => $form_state->getValue('css_id'), + ]; + $this->getVariantPlugin()->updateBlock($this->block->getConfiguration()['uuid'], $block_settings); $cached_values = $this->getTempstore()->get($form_state->get('variant_id')); $cached_values['plugin'] = $this->getVariantPlugin(); diff --git a/src/Plugin/DisplayVariant/PageBlockDisplayVariant.php b/src/Plugin/DisplayVariant/PageBlockDisplayVariant.php index 49c4a3a..00d512d 100644 --- a/src/Plugin/DisplayVariant/PageBlockDisplayVariant.php +++ b/src/Plugin/DisplayVariant/PageBlockDisplayVariant.php @@ -153,6 +153,19 @@ class PageBlockDisplayVariant extends BlockDisplayVariant implements PluginWizar ], ]; + // Add css classes. + $css_classes = !empty($this->configuration['blocks'][$block_id]['css_classes']) ? $this->configuration['blocks'][$block_id]['css_classes'] : ''; + $classes_array = explode(' ', $css_classes); + foreach ($classes_array as $class) { + $block_build['#attributes']['class'][] = Html::cleanCssIdentifier($class); + } + + // Add css id. + $css_id = !empty($this->configuration['blocks'][$block_id]['css_id']) ? $this->configuration['blocks'][$block_id]['css_id'] : ''; + if (!empty($css_id)) { + $block_build['#attributes']['id'] = Html::getId($css_id); + } + // Merge the cacheability metadata of blocks into the page. This helps // to avoid cache redirects if the blocks have more cache contexts than // the page, which the page must respect as well.