diff --git a/core/modules/media/src/Entity/Media.php b/core/modules/media/src/Entity/Media.php index d175572450..9aa3a26d3d 100644 --- a/core/modules/media/src/Entity/Media.php +++ b/core/modules/media/src/Entity/Media.php @@ -10,6 +10,7 @@ use Drupal\media\MediaInterface; use Drupal\media\MediaSourceEntityConstraintsInterface; use Drupal\media\MediaSourceFieldConstraintsInterface; +use Drupal\media\MediaViewBuilder; use Drupal\user\UserInterface; /** @@ -30,7 +31,7 @@ * bundle_label = @Translation("Media type"), * handlers = { * "storage" = "Drupal\Core\Entity\Sql\SqlContentEntityStorage", - * "view_builder" = "Drupal\Core\Entity\EntityViewBuilder", + * "view_builder" = "Drupal\media\MediaViewBuilder", * "list_builder" = "Drupal\Core\Entity\EntityListBuilder", * "access" = "Drupal\media\MediaAccessControlHandler", * "form" = { diff --git a/core/modules/media/src/MediaViewBuilder.php b/core/modules/media/src/MediaViewBuilder.php new file mode 100644 index 0000000000..7f4890f152 --- /dev/null +++ b/core/modules/media/src/MediaViewBuilder.php @@ -0,0 +1,39 @@ +isNew()) { + if ($entity->isDefaultRevision()) { + $build['#contextual_links']['media'] = [ + 'route_parameters' => ['media' => $entity->id()], + 'metadata' => ['changed' => $entity->getChangedTime()], + ]; + } + else { + $build['#contextual_links']['media_revision'] = [ + 'route_parameters' => [ + 'media' => $entity->id(), + 'media_revision' => $entity->getRevisionId(), + ], + 'metadata' => ['changed' => $entity->getChangedTime()], + ]; + } + } + } + +} diff --git a/core/modules/media/templates/media.html.twig b/core/modules/media/templates/media.html.twig index 41731992ec..805f61ac70 100644 --- a/core/modules/media/templates/media.html.twig +++ b/core/modules/media/templates/media.html.twig @@ -37,12 +37,11 @@ page title, so we do not display it here. #} {{ title_prefix }} - {% if label and view_mode != 'full' %} + {% if name and view_mode != 'full' %} - {{ label }} + {{ name }} {% endif %} {{ title_suffix }} - {{ content }} diff --git a/core/modules/media/templates/media.html.twig b/core/modules/media/templates/media.html.twig.orig similarity index 100% copy from core/modules/media/templates/media.html.twig copy to core/modules/media/templates/media.html.twig.orig diff --git a/core/modules/media/tests/src/Functional/MediaContextualLinksTest.php b/core/modules/media/tests/src/Functional/MediaContextualLinksTest.php new file mode 100644 index 0000000000..75b04a98e0 --- /dev/null +++ b/core/modules/media/tests/src/Functional/MediaContextualLinksTest.php @@ -0,0 +1,55 @@ +createMediaType(); + + // Create a media item. + $media = Media::create([ + 'bundle' => $mediaType->id(), + 'name' => 'Unnamed', + ]); + $media->save(); + + $user = $this->drupalCreateUser([ + 'administer media', + 'access contextual links', + ]); + $this->drupalLogin($user); + + $this->drupalGet('media/' . $media->id()); + + $this->assertSession()->responseContains('data-contextual-id="media:media=' . $media->id() . ':'); + } + +} diff --git a/core/themes/classy/templates/content/media.html.twig b/core/themes/classy/templates/content/media.html.twig index f36975cb9a..cd263e0afe 100644 --- a/core/themes/classy/templates/content/media.html.twig +++ b/core/themes/classy/templates/content/media.html.twig @@ -20,8 +20,14 @@ view_mode ? 'media--view-mode-' ~ view_mode.id()|clean_class, ] %} + - {% if content %} - {{ content }} + {{ title_prefix }} + {% if name and view_mode != 'full' %} + + {{ name }} + {% endif %} + {{ title_suffix }} + {{ content }} diff --git a/core/themes/stable/templates/content/media.html.twig b/core/themes/stable/templates/content/media.html.twig index 769b7be751..e71bd968b6 100644 --- a/core/themes/stable/templates/content/media.html.twig +++ b/core/themes/stable/templates/content/media.html.twig @@ -13,7 +13,11 @@ */ #} - {% if content %} - {{ content }} + {% if name and view_mode != 'full' %} + + {{ name }} + {% endif %} + {{ title_suffix }} + {{ content }}