diff --git a/focal_point.module b/focal_point.module index 52d1061..df255aa 100644 --- a/focal_point.module +++ b/focal_point.module @@ -75,3 +75,13 @@ function focal_point_entity_update(EntityInterface $entity) { } } } + +/** + * Implements hook_field_widget_form_alter(). + */ +function focal_point_field_widget_form_alter(&$element, FormStateInterface $form_state, $context) { + if (get_class($context['widget']) === 'Drupal\image\Plugin\Field\FieldWidget\ImageWidget') { + $element['#process'][] = array('Drupal\focal_point\Plugin\Field\FieldWidget\FocalPointImageWidget', 'process'); + $element['#value_callback'] = array('Drupal\focal_point\Plugin\Field\FieldWidget\FocalPointImageWidget', 'value'); + } +} diff --git a/src/Plugin/Field/FieldWidget/FocalPointImageWidget.php b/src/Plugin/Field/FieldWidget/FocalPointImageWidget.php index c0eb137..5201cb1 100644 --- a/src/Plugin/Field/FieldWidget/FocalPointImageWidget.php +++ b/src/Plugin/Field/FieldWidget/FocalPointImageWidget.php @@ -127,7 +127,16 @@ class FocalPointImageWidget extends ImageWidget { 'focal_point' => 'focal-point-' . implode('-', $element['#parents']), ]; - $default_focal_point_value = isset($item['focal_point']) ? $item['focal_point'] : $element['#focal_point']['offsets']; + $focal_point_settings = \Drupal::service('config.factory')->getEditable('focal_point.settings'); + $default_focal_point_value = $focal_point_settings->get('default_value'); + + if (isset($item['focal_point'])) { + $default_focal_point_value = $item['focal_point']; + } + elseif (isset($element['#focal_point']) + && isset($element['#focal_point']['offsets'])) { + $default_focal_point_value = $element['#focal_point']['offsets']; + } // Add the focal point indicator to preview. if (isset($element['preview'])) { @@ -139,7 +148,7 @@ class FocalPointImageWidget extends ImageWidget { // Even for image fields with a cardinality higher than 1 the correct fid // can always be found in $item['fids'][0]. $fid = isset($item['fids'][0]) ? $item['fids'][0] : ''; - if ($element['#focal_point']['preview_link'] && !empty($fid)) { + if (!empty($fid)) { $preview['preview_link'] = self::createPreviewLink($fid, $element['#field_name'], $element_selectors, $default_focal_point_value); } @@ -341,5 +350,4 @@ class FocalPointImageWidget extends ImageWidget { return $preview_link; } - }