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