Skip to content
Snippets Groups Projects

Issue #3233420: CSSClass option plugin fails to build if there are no options defined.

2 files
+ 20
12
Compare changes
  • Side-by-side
  • Inline
Files
2
@@ -54,19 +54,27 @@ class CssClass extends StyleOptionPluginBase {
*/
public function build(array $build) {
$value = $this->getValue('css_class') ?? NULL;
$option_definition = $this->getConfiguration()['options'];
if (is_array($value)) {
$class = implode(' ',
array_map(function ($index) use ($option_definition) {
return $option_definition[$index]['class'] ?? NULL;
}, $value)
);
$available_options = $this->getConfiguration('options');
// Handle open text field values.
if (!$available_options) {
$classes = $value;
}
else {
$class = $this->getConfiguration()['options'][$value]['class'] ?? NULL;
if (is_array($value)) {
$classes = array_map(function ($index) use ($available_options) {
return $available_options[$index]['class'] ?? NULL;
}, $value);
}
else {
$classes = $available_options[$value]['class'] ?? NULL;
}
}
if (!empty($class)) {
$build['#attributes']['class'][] = $class;
if (!empty($classes)) {
$classes = is_array($classes) ? $classes : explode(' ', $classes);
foreach ($classes as $class) {
$build['#attributes']['class'][] = $class;
}
}
return $build;
}
Loading