diff --git a/core/modules/media/src/Plugin/media/Source/Image.php b/core/modules/media/src/Plugin/media/Source/Image.php index f468845cefd..10a538034be 100644 --- a/core/modules/media/src/Plugin/media/Source/Image.php +++ b/core/modules/media/src/Plugin/media/Source/Image.php @@ -144,7 +144,7 @@ class Image extends File { return $uri; case 'thumbnail_alt_value': - return $media->get($this->configuration['source_field'])->alt ?: parent::getMetadata($media, $name); + return $media->get($this->configuration['source_field'])->alt ?? parent::getMetadata($media, $name); } return parent::getMetadata($media, $name); diff --git a/core/modules/media/tests/src/Functional/MediaOverviewPageTest.php b/core/modules/media/tests/src/Functional/MediaOverviewPageTest.php index 9328ef04c26..b756204bda3 100644 --- a/core/modules/media/tests/src/Functional/MediaOverviewPageTest.php +++ b/core/modules/media/tests/src/Functional/MediaOverviewPageTest.php @@ -8,6 +8,9 @@ use Drupal\language\Entity\ConfigurableLanguage; use Drupal\media\Entity\Media; use Drupal\user\Entity\Role; use Drupal\user\RoleInterface; +use Drupal\field\Entity\FieldConfig; +use Drupal\file\Entity\File; +use Drupal\Tests\TestFileCreationTrait; /** * Tests the Media overview page. @@ -16,6 +19,8 @@ use Drupal\user\RoleInterface; */ class MediaOverviewPageTest extends MediaFunctionalTestBase { + use TestFileCreationTrait; + /** * {@inheritdoc} */ @@ -185,4 +190,50 @@ class MediaOverviewPageTest extends MediaFunctionalTestBase { $assert_session->linkByHrefExists('/media/' . $media3->id()); } + /** + * Tests the display of the alt attribute. + */ + public function testImageAltTextDisplay(): void { + $this->drupalLogin($this->adminUser); + $media_type = $this->createMediaType('image'); + $media_type_id = $media_type->id(); + $media_type->setFieldMap(['name' => 'name']); + $media_type->save(); + + /** @var \Drupal\field\FieldConfigInterface $field */ + $field = FieldConfig::load("media.$media_type_id.field_media_image"); + $settings = $field->getSettings(); + $settings['alt_field'] = TRUE; + $settings['alt_field_required'] = FALSE; + $field->set('settings', $settings); + $field->save(); + + $file = File::create([ + 'uri' => $this->getTestFiles('image')[0]->uri, + ]); + $file->save(); + + // Set the alt text to an empty string. + $media = Media::create([ + 'name' => 'Custom name', + 'bundle' => $media_type_id, + 'field_media_image' => [ + [ + 'target_id' => $file->id(), + 'alt' => '', + 'title' => 'default title', + ], + ], + ]); + $media->save(); + + $this->drupalGet('/admin/content/media'); + + // Confirm that the alt text attribute is present. + $assert_session = $this->assertSession(); + $element = $assert_session->elementAttributeExists('css', 'td.views-field-thumbnail__target-id img', 'alt'); + $this->assertSame('', (string) $element->getAttribute('alt')); + + } + }