.../EntityEmbedDisplay/ImageFieldFormatter.php | 26 ++++++++++++++++------ .../ImageFieldFormatterTest.php | 10 +-------- 2 files changed, 20 insertions(+), 16 deletions(-) diff --git a/src/Plugin/entity_embed/EntityEmbedDisplay/ImageFieldFormatter.php b/src/Plugin/entity_embed/EntityEmbedDisplay/ImageFieldFormatter.php index c4941f5..034e714 100644 --- a/src/Plugin/entity_embed/EntityEmbedDisplay/ImageFieldFormatter.php +++ b/src/Plugin/entity_embed/EntityEmbedDisplay/ImageFieldFormatter.php @@ -8,6 +8,7 @@ use Drupal\Core\Field\FormatterPluginManager; use Drupal\Core\Form\FormStateInterface; use Drupal\Core\Image\ImageFactory; use Drupal\Core\Language\LanguageManagerInterface; +use Drupal\Core\Messenger\MessengerInterface; use Drupal\Core\Session\AccountInterface; use Drupal\Core\TypedData\TypedDataManager; use Symfony\Component\DependencyInjection\ContainerInterface; @@ -35,6 +36,13 @@ class ImageFieldFormatter extends FileFieldFormatter { */ protected $imageFactory; + /** + * The messenger. + * + * @var \Drupal\Core\Messenger\MessengerInterface + */ + protected $messenger; + /** * Constructs an ImageFieldFormatter object. * @@ -54,10 +62,13 @@ class ImageFieldFormatter extends FileFieldFormatter { * The image factory. * @param \Drupal\Core\Language\LanguageManagerInterface $language_manager * The language manager. + * @param \Drupal\Core\Messenger\MessengerInterface $messenger + * The messenger. */ - public function __construct(array $configuration, $plugin_id, $plugin_definition, EntityTypeManagerInterface $entity_type_manager, FormatterPluginManager $formatter_plugin_manager, TypedDataManager $typed_data_manager, ImageFactory $image_factory, LanguageManagerInterface $language_manager) { + public function __construct(array $configuration, $plugin_id, $plugin_definition, EntityTypeManagerInterface $entity_type_manager, FormatterPluginManager $formatter_plugin_manager, TypedDataManager $typed_data_manager, ImageFactory $image_factory, LanguageManagerInterface $language_manager, MessengerInterface $messenger) { parent::__construct($configuration, $plugin_id, $plugin_definition, $entity_type_manager, $formatter_plugin_manager, $typed_data_manager, $language_manager); $this->imageFactory = $image_factory; + $this->messenger = $messenger; } /** @@ -72,7 +83,8 @@ class ImageFieldFormatter extends FileFieldFormatter { $container->get('plugin.manager.field.formatter'), $container->get('typed_data_manager'), $container->get('image.factory'), - $container->get('language_manager') + $container->get('language_manager'), + $container->get('messenger') ); } @@ -117,14 +129,14 @@ class ImageFieldFormatter extends FileFieldFormatter { // Loading large files is slow, make sure it is an image mime type before // doing that. list($type,) = explode('/', $entity->getMimeType(), 2); - $isValidImage = FALSE; + $is_valid_image = FALSE; if ($type == 'image') { - $isValidImage = $this->imageFactory->get($entity->getFileUri())->isValid(); - if (!$isValidImage) { - \Drupal::messenger()->addMessage($this->t('The selected image "@image" is invalid.', ['@image' => $entity->label()]), 'error'); + $is_valid_image = $this->imageFactory->get($entity->getFileUri())->isValid(); + if (!$is_valid_image) { + $this->messenger->addMessage($this->t('The selected image "@image" is invalid.', ['@image' => $entity->label()]), 'error'); } } - $access = AccessResult::allowedIf($type == 'image' && $isValidImage) + $access = AccessResult::allowedIf($type == 'image' && $is_valid_image) // See the above @todo, this is the best we can do for now. ->addCacheableDependency($entity); } diff --git a/tests/src/FunctionalJavascript/ImageFieldFormatterTest.php b/tests/src/FunctionalJavascript/ImageFieldFormatterTest.php index df2f0fa..67182bc 100644 --- a/tests/src/FunctionalJavascript/ImageFieldFormatterTest.php +++ b/tests/src/FunctionalJavascript/ImageFieldFormatterTest.php @@ -14,9 +14,7 @@ use Drupal\filter\Entity\FilterFormat; class ImageFieldFormatterTest extends WebDriverTestBase { /** - * Modules to enable. - * - * @var array + * {@inheritdoc} */ protected static $modules = [ 'field_ui', @@ -82,14 +80,12 @@ class ImageFieldFormatterTest extends WebDriverTestBase { $this->button->save(); - // Create Filtered HTML text format and enable entity_embed filter. $format = FilterFormat::create([ 'format' => 'embed_test', 'name' => 'Embed format', 'filters' => [], ]); $format->save(); - $editor = Editor::create([ 'format' => 'embed_test', 'editor' => 'ckeditor', @@ -101,7 +97,6 @@ class ImageFieldFormatterTest extends WebDriverTestBase { ]); $editor->save(); - // Create a page content type. $this->drupalCreateContentType(['type' => 'page', 'name' => 'Basic page']); $this->adminUser = $this->drupalCreateUser([ @@ -147,16 +142,13 @@ class ImageFieldFormatterTest extends WebDriverTestBase { 'filename' => 'nonexistentimage.jpg', 'status' => 1, ]); - $this->invalidImage->save(); - } /** * Test invalid image error. */ public function testInvalidImageError() { - $this->drupalGet('admin/config/content/formats/manage/embed_test'); $this->assertSession()->buttonExists('Show group names')->press(); $this->assertSession()->waitForElementVisible('css', '.ckeditor-add-new-group');