From 40918cb2d3f53743c1c61272992250647f40af91 Mon Sep 17 00:00:00 2001
From: Alan Stanley <astanley@upei.ca>
Date: Fri, 3 Jan 2020 09:49:02 -0400
Subject: [PATCH 1/3] added filter

---
 .../ContextReaction/DerivativeReaction.php    | 30 ++++++++++++++++++-
 1 file changed, 29 insertions(+), 1 deletion(-)

diff --git a/src/Plugin/ContextReaction/DerivativeReaction.php b/src/Plugin/ContextReaction/DerivativeReaction.php
index 7ddaed4f..f953c024 100644
--- a/src/Plugin/ContextReaction/DerivativeReaction.php
+++ b/src/Plugin/ContextReaction/DerivativeReaction.php
@@ -2,6 +2,8 @@
 
 namespace Drupal\islandora\Plugin\ContextReaction;
 
+use Drupal\Core\Form\FormStateInterface;
+use Drupal\islandora\Plugin\Action\AbstractGenerateDerivative;
 use Drupal\islandora\PresetReaction\PresetReaction;
 
 /**
@@ -12,4 +14,30 @@ use Drupal\islandora\PresetReaction\PresetReaction;
  *   label = @Translation("Derivative")
  * )
  */
-class DerivativeReaction extends PresetReaction {}
+class DerivativeReaction extends PresetReaction {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function buildConfigurationForm(array $form, FormStateInterface $form_state) {
+    $actions = $this->actionStorage->loadMultiple();
+    foreach ($actions as $action) {
+      $plugin = $action->getPlugin();
+      if ($plugin instanceof AbstractGenerateDerivative) {
+        $options[ucfirst($action->getType())][$action->id()] = $action->label();
+      }
+    }
+    $config = $this->getConfiguration();
+    $form['actions'] = [
+      '#title' => $this->t('Actions'),
+      '#description' => $this->t('Pre-configured actions to execute. Multiple actions may be selected by shift or ctrl clicking.'),
+      '#type' => 'select',
+      '#multiple' => TRUE,
+      '#options' => $options,
+      '#default_value' => isset($config['actions']) ? $config['actions'] : '',
+      '#size' => 15,
+    ];
+
+    return $form;
+  }
+}

From f2c76e1281a5cb5a6b15bdff2293337870487631 Mon Sep 17 00:00:00 2001
From: Alan Stanley <astanley@upei.ca>
Date: Fri, 3 Jan 2020 11:14:47 -0400
Subject: [PATCH 2/3] coder

---
 src/Plugin/ContextReaction/DerivativeReaction.php | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/Plugin/ContextReaction/DerivativeReaction.php b/src/Plugin/ContextReaction/DerivativeReaction.php
index f953c024..8f403d4b 100644
--- a/src/Plugin/ContextReaction/DerivativeReaction.php
+++ b/src/Plugin/ContextReaction/DerivativeReaction.php
@@ -40,4 +40,5 @@ class DerivativeReaction extends PresetReaction {
 
     return $form;
   }
+
 }

From 7f0b8a9fd433a2ef0cecb205f5b1a94f1218b2c0 Mon Sep 17 00:00:00 2001
From: Alan Stanley <astanley@upei.ca>
Date: Fri, 3 Jan 2020 12:03:45 -0400
Subject: [PATCH 3/3] Explicit declaration

---
 src/Plugin/ContextReaction/DerivativeReaction.php | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/Plugin/ContextReaction/DerivativeReaction.php b/src/Plugin/ContextReaction/DerivativeReaction.php
index 8f403d4b..52ae41c5 100644
--- a/src/Plugin/ContextReaction/DerivativeReaction.php
+++ b/src/Plugin/ContextReaction/DerivativeReaction.php
@@ -21,6 +21,7 @@ class DerivativeReaction extends PresetReaction {
    */
   public function buildConfigurationForm(array $form, FormStateInterface $form_state) {
     $actions = $this->actionStorage->loadMultiple();
+    $options = [];
     foreach ($actions as $action) {
       $plugin = $action->getPlugin();
       if ($plugin instanceof AbstractGenerateDerivative) {