diff --git a/core/profiles/demo_umami/demo_umami.profile b/core/profiles/demo_umami/demo_umami.profile index 02a5853..7fcbce3 100644 --- a/core/profiles/demo_umami/demo_umami.profile +++ b/core/profiles/demo_umami/demo_umami.profile @@ -7,6 +7,8 @@ use Drupal\contact\Entity\ContactForm; use Drupal\Core\Form\FormStateInterface; +use Drupal\Core\Field\FieldConfigInterface; +use Drupal\Core\Entity\Entity\EntityViewDisplay; /** * Implements hook_form_FORM_ID_alter() for install_configure_form(). @@ -49,3 +51,25 @@ function demo_umami_toolbar() { ]; return $items; } + +/** + * Implements hook_field_ui_default_display_field_options_alter(). + */ +function demo_umami_field_ui_default_display_field_options_alter(array &$options, $display_type, FieldConfigInterface $field) { + // When creating media fields, copy media defaults from the `default` display + // into the `full` display configuration. + /** @var \Drupal\Core\Field\FieldTypePluginManager $field_type_manager */ + $field_type_manager = \Drupal::service('plugin.manager.field.field_type'); + $class = $field_type_manager->getPluginClass($field->getType()); + if (!is_a($class, 'Drupal\Core\Field\Plugin\Field\FieldType\EntityReferenceItem', TRUE)) { + return; + } + $is_node_field = ($field->getTargetEntityTypeId() === 'node'); + $refers_to_media = ($field->getSetting('target_type') === 'media'); + $bundle = $field->getTargetBundle(); + $node_full_display = EntityViewDisplay::load("node.{$bundle}.full"); + if ($is_node_field && $refers_to_media && !empty($node_full_display)) { + $node_full_display->setComponent($field->getName(), $options) + ->save(); + } +} diff --git a/core/profiles/demo_umami/tests/src/Functional/DemoUmamiProfileTest.php b/core/profiles/demo_umami/tests/src/Functional/DemoUmamiProfileTest.php index 34aeb63..bb85aa1 100644 --- a/core/profiles/demo_umami/tests/src/Functional/DemoUmamiProfileTest.php +++ b/core/profiles/demo_umami/tests/src/Functional/DemoUmamiProfileTest.php @@ -19,6 +19,13 @@ class DemoUmamiProfileTest extends BrowserTestBase { /** * {@inheritdoc} */ + protected static $modules = [ + 'media', + ]; + + /** + * {@inheritdoc} + */ protected function installParameters() { $parameters = parent::installParameters(); $parameters['forms']['install_configure_form']['site_mail'] = 'admin@example.com';