summaryrefslogtreecommitdiffstatshomepage
path: root/core/modules/media/media.module
diff options
context:
space:
mode:
Diffstat (limited to 'core/modules/media/media.module')
-rw-r--r--core/modules/media/media.module19
1 files changed, 19 insertions, 0 deletions
diff --git a/core/modules/media/media.module b/core/modules/media/media.module
index 5079f0fa9a8..2de628b9c77 100644
--- a/core/modules/media/media.module
+++ b/core/modules/media/media.module
@@ -15,6 +15,7 @@ use Drupal\Core\Session\AccountInterface;
use Drupal\Core\Template\Attribute;
use Drupal\Core\Url;
use Drupal\field\FieldConfigInterface;
+use Drupal\media\Plugin\media\Source\OEmbedInterface;
/**
* Implements hook_help().
@@ -72,6 +73,11 @@ function media_theme() {
'render element' => 'element',
'base hook' => 'field_multiple_value_form',
],
+ 'media_oembed' => [
+ 'variables' => [
+ 'post' => NULL,
+ ],
+ ],
];
}
@@ -92,6 +98,7 @@ function media_entity_access(EntityInterface $entity, $operation, AccountInterfa
*/
function media_theme_suggestions_media(array $variables) {
$suggestions = [];
+ /** @var \Drupal\media\MediaInterface $media */
$media = $variables['elements']['#media'];
$sanitized_view_mode = strtr($variables['elements']['#view_mode'], '.', '_');
@@ -99,6 +106,18 @@ function media_theme_suggestions_media(array $variables) {
$suggestions[] = 'media__' . $media->bundle();
$suggestions[] = 'media__' . $media->bundle() . '__' . $sanitized_view_mode;
+ $source = $media->getSource();
+ if ($source instanceof OEmbedInterface) {
+ $suggestions[] = 'media__oembed';
+
+ $provider_id = $source->getMetadata($media, 'provider_name');
+ if ($provider_id) {
+ $provider_id = \Drupal::transliteration()->transliterate($provider_id);
+ $provider_id = preg_replace('/[^a-z0-9_]+/', '_', mb_strtolower($provider_id));
+ $suggestions[] = "media__oembed__$provider_id";
+ }
+ }
+
return $suggestions;
}