Commit 0eb99c14 authored by mxh's avatar mxh
Browse files

Issue #3303283 by Janner, mxh: Cannot add Conditions as successors

parent fdde7c91
Loading
Loading
Loading
Loading
+30 −2
Original line number Diff line number Diff line
@@ -19,6 +19,9 @@ use Drupal\Core\Routing\RouteMatchInterface;
use Drupal\Core\StringTranslation\StringTranslationTrait;
use Drupal\eca\Entity\Eca;
use Drupal\eca\Plugin\Action\ActionInterface;
use Drupal\eca\PluginManager\Action;
use Drupal\eca\PluginManager\Condition;
use Drupal\eca\PluginManager\Event;
use Drupal\eca_cm\EcaCm;
use Drupal\eca_ui\Service\TokenBrowserService;
use Symfony\Component\DependencyInjection\ContainerInterface;
@@ -51,6 +54,27 @@ abstract class EcaPluginForm implements FormInterface, ContainerInjectionInterfa
   */
  protected EntityTypeManagerInterface $entityTypeManager;

  /**
   * The event plugin manager.
   *
   * @var \Drupal\eca\PluginManager\Event
   */
  protected Event $eventManager;

  /**
   * The condition manager.
   *
   * @var \Drupal\eca\PluginManager\Condition
   */
  protected Condition $conditionManager;

  /**
   * The action manager.
   *
   * @var \Drupal\eca\PluginManager\Action
   */
  protected Action $actionManager;

  /**
   * The messenger.
   *
@@ -175,6 +199,9 @@ abstract class EcaPluginForm implements FormInterface, ContainerInjectionInterfa
  public static function create(ContainerInterface $container, ?Eca $eca = NULL, ?PluginInspectionInterface $plugin = NULL, ?string $config_key = NULL, ?array $config_array = NULL) {
    $instance = new static($container->get('entity_type.manager'), $container->get('messenger'), $container->get('current_route_match'), $container->get('eca_ui.service.token_browser'), $container->get('module_handler'), $eca, $plugin, $config_key, $config_array);
    $instance->setStringTranslation($container->get('string_translation'));
    $instance->eventManager = $container->get('plugin.manager.eca.event');
    $instance->conditionManager = $container->get('plugin.manager.eca.condition');
    $instance->actionManager = $container->get('plugin.manager.eca.action');
    return $instance;
  }

@@ -226,6 +253,7 @@ abstract class EcaPluginForm implements FormInterface, ContainerInjectionInterfa
      '#default_value' => $config_array['label'] ?? '',
    ];
    if ($this->type === 'condition') {
      $form[$this->type]['label']['#default_value'] = $definition['label'];
      $form[$this->type]['label']['#disabled'] = TRUE;
      $form[$this->type]['label']['#description'] = $this->t('Conditions currently don\'t support setting a customized label.');
    }
@@ -320,11 +348,11 @@ abstract class EcaPluginForm implements FormInterface, ContainerInjectionInterfa
      ];
      $action_successor_options = ['_none' => $this->t('- Select -')];
      foreach (($this->eca->get('actions') ?? []) as $action_config_key => $action_config_array) {
        $action_successor_options[$action_config_key] = $action_config_array['label'];
        $action_successor_options[$action_config_key] = ($action_config_array['label'] ?? $this->actionManager->getDefinition($action_config_array['plugin'])['label']) . ' (' . $action_config_key . ')';
      }
      $condition_successor_options = ['_none' => $this->t('- Select -')];
      foreach (($this->eca->get('conditions') ?? []) as $condition_config_key => $condition_config_array) {
        $condition_successor_options[$condition_config_key] = $condition_config_array['label'];
        $condition_successor_options[$condition_config_key] = ($condition_config_array['label'] ?? $this->conditionManager->getDefinition($condition_config_array['plugin'])['label']) . ' (' . $condition_config_key . ')';
      }

      $successors = ($config_array['successors'] ?? []);