diff --git a/entity_embed.install b/entity_embed.install index 57f83ca..901671c 100644 --- a/entity_embed.install +++ b/entity_embed.install @@ -48,6 +48,8 @@ function entity_embed_update_8001() { * Updates the default mode settings. */ function entity_embed_update_8002() { - $config = \Drupal::service('config.factory')->getEditable('entity_embed.settings'); - $config->set('rendered_entity_mode', TRUE)->save(); + \Drupal::configFactory() + ->getEditable('entity_embed.settings') + ->set('rendered_entity_mode', TRUE) + ->save(); } diff --git a/src/Annotation/EntityEmbedDisplay.php b/src/Annotation/EntityEmbedDisplay.php index c453f18..776ef82 100644 --- a/src/Annotation/EntityEmbedDisplay.php +++ b/src/Annotation/EntityEmbedDisplay.php @@ -1,10 +1,5 @@ formatterManager->getOptions($base_plugin_definition['field_type']) as $formatter => $label) { $this->derivatives[$formatter] = $base_plugin_definition; $this->derivatives[$formatter]['label'] = $label; + // Don't show entity_reference_entity_view in the UI if the rendered + // entity mode is FALSE. In that case we show view modes from + // ViewModeDeriver, entity_reference_entity_view is kept for backwards + // compatibility. if ($formatter == 'entity_reference_entity_view' && $mode == FALSE) { - $this->derivatives[$formatter]['expose_in_ui'] = FALSE; + $this->derivatives[$formatter]['no_ui'] = TRUE; } } return $this->derivatives; diff --git a/src/Plugin/Derivative/ViewModeDeriver.php b/src/Plugin/Derivative/ViewModeDeriver.php index 2f7fb37..76cfd82 100644 --- a/src/Plugin/Derivative/ViewModeDeriver.php +++ b/src/Plugin/Derivative/ViewModeDeriver.php @@ -64,7 +64,7 @@ class ViewModeDeriver extends DeriverBase implements ContainerDeriverInterface { $this->derivatives[$definition['id']]['label'] = new TranslatableMarkup($definition['label']); $this->derivatives[$definition['id']]['view_mode'] = $view_mode; $this->derivatives[$definition['id']]['entity_types'] = $definition['targetEntityType']; - $this->derivatives[$definition['id']]['expose_in_ui'] = $mode ? FALSE : TRUE; + $this->derivatives[$definition['id']]['no_ui'] = $mode ? TRUE : FALSE; } } return $this->derivatives; diff --git a/src/Tests/EntityEmbedUpdateHookTest.php b/src/Tests/EntityEmbedUpdateHookTest.php new file mode 100644 index 0000000..5830a93 --- /dev/null +++ b/src/Tests/EntityEmbedUpdateHookTest.php @@ -0,0 +1,43 @@ +databaseDumpFiles = [ + DRUPAL_ROOT . '/core/modules/system/tests/fixtures/update/drupal-8.bare.standard.php.gz', + __DIR__ . '/../../tests/fixtures/update/entity_embed.update-hook-test.php', + ]; + } + + /** + * {@inheritdoc} + */ + protected function doSelectionTest() { + parent::doSelectionTest(); + $this->assertRaw('8002 - Updates the default mode settings.'); + } + + /** + * Tests hook_post_update_NAME(). + */ + public function testPostUpdate() { + $this->runUpdates(); + $mode = $this->container->get('config.factory') + ->get('entity_embed.settings') + ->get('rendered_entity_mode'); + $this->assertTrue($mode, 'Render entity mode settings after update is correct.'); + } + +} diff --git a/tests/fixtures/update/entity_embed.update-hook-test.php b/tests/fixtures/update/entity_embed.update-hook-test.php new file mode 100644 index 0000000..6c4c33d --- /dev/null +++ b/tests/fixtures/update/entity_embed.update-hook-test.php @@ -0,0 +1,33 @@ +merge('key_value') + ->condition('collection', 'system.schema') + ->condition('name', 'entity_embed') + ->fields([ + 'collection' => 'system.schema', + 'name' => 'entity_embed', + 'value' => 's:4:"8001";', + ]) + ->execute(); + +// Update core.extension. +$extensions = $connection->select('config') + ->fields('config', ['data']) + ->condition('collection', '') + ->condition('name', 'core.extension') + ->execute() + ->fetchField(); +$extensions = unserialize($extensions); +$extensions['module']['entity_embed'] = 8001; +$connection->update('config') + ->fields([ + 'data' => serialize($extensions), + ]) + ->condition('collection', '') + ->condition('name', 'core.extension') + ->execute();