From 35d971392a7d0736653e5bf65f4e8e6419048c31 Mon Sep 17 00:00:00 2001
From: eiriksm <eiriksm@1014468.no-reply.drupal.org>
Date: Mon, 8 Oct 2018 13:36:07 +0200
Subject: [PATCH] Issue #3005051 by eiriksm: Bundle can be wrong if using
 standard image field

---
 .../FieldWidget/ImageCanvasEditorWidget.php   | 20 ++++++++++++++++++-
 1 file changed, 19 insertions(+), 1 deletion(-)

diff --git a/src/Plugin/Field/FieldWidget/ImageCanvasEditorWidget.php b/src/Plugin/Field/FieldWidget/ImageCanvasEditorWidget.php
index 71ae99b..62178a8 100644
--- a/src/Plugin/Field/FieldWidget/ImageCanvasEditorWidget.php
+++ b/src/Plugin/Field/FieldWidget/ImageCanvasEditorWidget.php
@@ -4,6 +4,7 @@ namespace Drupal\image_canvas_editor_api\Plugin\Field\FieldWidget;
 
 use Drupal\Component\Serialization\Json;
 use Drupal\Component\Utility\NestedArray;
+use Drupal\Core\Entity\ContentEntityForm;
 use Drupal\Core\Field\FieldDefinitionInterface;
 use Drupal\Core\Form\FormStateInterface;
 use Drupal\Core\Render\ElementInfoManagerInterface;
@@ -125,11 +126,12 @@ class ImageCanvasEditorWidget extends ImageWidget {
         $inline_form = NestedArray::getValue($form, array_slice($element['#array_parents'], 0, 4));
         $form_mode = $inline_form['#form_mode'];
       }
+      $bundle = self::getBundle($element, $form_state);
       $link = [
         '#attached' => ['library' => ['core/drupal.ajax']],
         '#type' => 'link',
         '#url' => Url::fromRoute('image_canvas_editor_api.editor', [
-          'bundle' => $element['#bundle'],
+          'bundle' => $bundle,
           'field_name' => $field_name,
           'form_mode' => $form_mode,
           'entity_type' => $element['#entity_type'],
@@ -156,4 +158,20 @@ class ImageCanvasEditorWidget extends ImageWidget {
     return $element;
   }
 
+  /**
+   * Get the bundle from the element, somehow.
+   */
+  public static function getBundle($element, FormStateInterface $form_state) {
+    $bundle = NULL;
+    if (isset($element['#bundle'])) {
+      return $element['#bundle'];
+    }
+    if ($form_object = $form_state->getFormObject()) {
+      if ($form_object instanceof ContentEntityForm) {
+        return $form_object->getEntity()->bundle();
+      }
+    }
+    return $bundle;
+  }
+
 }
-- 
GitLab