From ead8765e3707e9d4a0599fb8863ecb3bc69ee402 Mon Sep 17 00:00:00 2001 From: itamair <itamair@me.com> Date: Sat, 20 Jun 2020 22:28:25 +0200 Subject: [PATCH] LayoutParagraphsWidget: correct definition of $target_bundles, with more accurate handle of use case of no choices for include and exclude. --- .../FieldWidget/LayoutParagraphsWidget.php | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/Plugin/Field/FieldWidget/LayoutParagraphsWidget.php b/src/Plugin/Field/FieldWidget/LayoutParagraphsWidget.php index a1cce608..cd908880 100644 --- a/src/Plugin/Field/FieldWidget/LayoutParagraphsWidget.php +++ b/src/Plugin/Field/FieldWidget/LayoutParagraphsWidget.php @@ -223,11 +223,13 @@ class LayoutParagraphsWidget extends WidgetBase implements ContainerFactoryPlugi $this->itemFormWrapperId = trim(Html::getId(implode('-', $parents) . '-' . $this->fieldName . '-form'), '-'); $handler_settings = $items->getSetting('handler_settings'); - $target_bundles = $handler_settings['target_bundles'] ?? []; - - if (!empty($handler_settings['negate'])) { - $target_bundles_options = array_keys($handler_settings['target_bundles_drag_drop']); - $target_bundles = array_diff($target_bundles_options, $target_bundles); + $bundles = array_keys($handler_settings["target_bundles_drag_drop"]); + $selected_bundles = !empty($handler_settings['target_bundles']) ? $handler_settings['target_bundles'] : []; + if (!$handler_settings["negate"]) { + $target_bundles = empty($selected_bundles) ? $bundles : array_intersect($bundles, $selected_bundles); + } + else { + $target_bundles = empty($selected_bundles) ? [] : array_diff($bundles, $selected_bundles); } $title = $this->fieldDefinition->getLabel(); $description = FieldFilteredMarkup::create(\Drupal::token()->replace($this->fieldDefinition->getDescription())); @@ -1843,11 +1845,10 @@ class LayoutParagraphsWidget extends WidgetBase implements ContainerFactoryPlugi $bundles = array_keys($handler_settings["target_bundles_drag_drop"]); $selected_bundles = !empty($handler_settings['target_bundles']) ? $handler_settings['target_bundles'] : []; if (!$handler_settings["negate"]) { - $selected_bundles = empty($selected_bundles) ? [] : $selected_bundles; - $target_bundles = array_intersect($bundles, $selected_bundles); + $target_bundles = empty($selected_bundles) ? $bundles : array_intersect($bundles, $selected_bundles); } else { - $target_bundles = array_diff($bundles, $selected_bundles); + $target_bundles = empty($selected_bundles) ? [] : array_diff($bundles, $selected_bundles); } $definition = $this->entityTypeManager->getDefinition($entity_type); $storage = $this->entityTypeManager->getStorage($definition->getBundleEntityType()); -- GitLab