diff --git a/core/includes/entity.inc b/core/includes/entity.inc index e91eda7..1cfc9e4 100644 --- a/core/includes/entity.inc +++ b/core/includes/entity.inc @@ -622,7 +622,7 @@ function entity_view_multiple(array $entities, $view_mode, $langcode = NULL, $re * hidden on article nodes in the 'default' display. * @code * entity_get_display('node', 'article', 'default') - * ->setComponent('body', array( + * ->setComponent('body', 'field', array( * 'type' => 'text_summary_or_trimmed', * 'settings' => array('trim_length' => '200') * 'weight' => 1, @@ -726,11 +726,11 @@ function entity_get_render_display(EntityInterface $entity, $view_mode) { * 'default' form mode. * @code * entity_get_form_display('node', 'article', 'default') - * ->setComponent('body', array( + * ->setComponent('body', 'field', array( * 'type' => 'text_textarea_with_summary', * 'weight' => 1, * )) - * ->setComponent('field_image', array( + * ->setComponent('field_image', 'field', array( * 'type' => 'hidden', * )) * ->save(); diff --git a/core/modules/block/block.install b/core/modules/block/block.install index ad7d0d7..9cf32b2 100644 --- a/core/modules/block/block.install +++ b/core/modules/block/block.install @@ -304,6 +304,7 @@ function block_update_8008() { // Assign form settings for the 'default' form mode. $form_display = _update_8000_entity_get_form_display('custom_block', 'basic', 'default'); $form_display->set('content.user_picture', array( + 'handler_type' => 'field', 'type' => 'text_textarea_with_summary', )) ->save(); diff --git a/core/modules/block/custom_block/custom_block.module b/core/modules/block/custom_block/custom_block.module index 4cf2e68..faf5eb0 100644 --- a/core/modules/block/custom_block/custom_block.module +++ b/core/modules/block/custom_block/custom_block.module @@ -179,14 +179,14 @@ function custom_block_add_body_field($block_type_id, $label = 'Block body') { // Assign widget settings for the 'default' form mode. entity_get_form_display('custom_block', $block_type_id, 'default') - ->setComponent('body', array( + ->setComponent('body', 'field', array( 'type' => 'text_textarea_with_summary', )) ->save(); // Assign display settings for 'default' view mode. entity_get_display('custom_block', $block_type_id, 'default') - ->setComponent('body', array( + ->setComponent('body', 'field', array( 'label' => 'hidden', 'type' => 'text_default', )) diff --git a/core/modules/block/custom_block/lib/Drupal/custom_block/Tests/CustomBlockFieldTest.php b/core/modules/block/custom_block/lib/Drupal/custom_block/Tests/CustomBlockFieldTest.php index 54b5d6f..67ea7be 100644 --- a/core/modules/block/custom_block/lib/Drupal/custom_block/Tests/CustomBlockFieldTest.php +++ b/core/modules/block/custom_block/lib/Drupal/custom_block/Tests/CustomBlockFieldTest.php @@ -81,12 +81,12 @@ public function testBlockFields() { )); $this->instance->save(); entity_get_form_display('custom_block', 'link', 'default') - ->setComponent($this->field->getFieldName(), array( + ->setComponent($this->field->getFieldName(), 'field', array( 'type' => 'link_default', )) ->save(); entity_get_display('custom_block', 'link', 'default') - ->setComponent($this->field->getFieldName(), array( + ->setComponent($this->field->getFieldName(), 'field', array( 'type' => 'link', 'label' => 'hidden', )) diff --git a/core/modules/comment/comment.install b/core/modules/comment/comment.install index 28b6b9d..c19b588 100644 --- a/core/modules/comment/comment.install +++ b/core/modules/comment/comment.install @@ -586,6 +586,7 @@ function comment_update_8006(&$sandbox) { // Prepare defaults for the default and full view modes. $display_options_default = array( + 'handler_type' => 'field', 'label' => 'hidden', 'type' => 'comment_default', 'settings' => array(), diff --git a/core/modules/comment/lib/Drupal/comment/CommentManager.php b/core/modules/comment/lib/Drupal/comment/CommentManager.php index 3816fc4..96602f8 100644 --- a/core/modules/comment/lib/Drupal/comment/CommentManager.php +++ b/core/modules/comment/lib/Drupal/comment/CommentManager.php @@ -120,7 +120,7 @@ public function addDefaultField($entity_type, $bundle, $field_name = 'comment', // Assign widget settings for the 'default' form mode. entity_get_form_display($entity_type, $bundle, 'default') - ->setComponent($field_name, array( + ->setComponent($field_name, 'field', array( 'type' => 'comment_default', 'weight' => 20, )) @@ -128,7 +128,7 @@ public function addDefaultField($entity_type, $bundle, $field_name = 'comment', // Set default to display comment list. entity_get_display($entity_type, $bundle, 'default') - ->setComponent($field_name, array( + ->setComponent($field_name, 'field', array( 'label' => 'hidden', 'type' => 'comment_default', 'weight' => 20, @@ -171,14 +171,14 @@ public function addBodyField($entity_type, $field_name) { // Assign widget settings for the 'default' form mode. entity_get_form_display('comment', $comment_bundle, 'default') - ->setComponent('comment_body', array( + ->setComponent('comment_body', 'field', array( 'type' => 'text_textarea', )) ->save(); // Assign display settings for the 'default' view mode. entity_get_display('comment', $comment_bundle, 'default') - ->setComponent('comment_body', array( + ->setComponent('comment_body', 'field', array( 'label' => 'hidden', 'type' => 'text_default', 'weight' => 0, diff --git a/core/modules/content_translation/lib/Drupal/content_translation/Tests/ContentTranslationTestBase.php b/core/modules/content_translation/lib/Drupal/content_translation/Tests/ContentTranslationTestBase.php index d1485d2..cdeff28 100644 --- a/core/modules/content_translation/lib/Drupal/content_translation/Tests/ContentTranslationTestBase.php +++ b/core/modules/content_translation/lib/Drupal/content_translation/Tests/ContentTranslationTestBase.php @@ -182,7 +182,7 @@ protected function setupTestFields() { 'label' => 'Test translatable text-field', ))->save(); entity_get_form_display($this->entityType, $this->bundle, 'default') - ->setComponent($this->fieldName, array( + ->setComponent($this->fieldName, 'field', array( 'type' => 'text_textfield', 'weight' => 0, )) diff --git a/core/modules/datetime/lib/Drupal/datetime/Tests/DatetimeFieldTest.php b/core/modules/datetime/lib/Drupal/datetime/Tests/DatetimeFieldTest.php index 5bee2e3..fed40a0 100644 --- a/core/modules/datetime/lib/Drupal/datetime/Tests/DatetimeFieldTest.php +++ b/core/modules/datetime/lib/Drupal/datetime/Tests/DatetimeFieldTest.php @@ -73,7 +73,7 @@ function setUp() { $this->instance->save(); entity_get_form_display($this->instance->entity_type, $this->instance->bundle, 'default') - ->setComponent($this->field->name, array( + ->setComponent($this->field->name, 'field', array( 'type' => 'datetime_default', )) ->save(); @@ -84,7 +84,7 @@ function setUp() { 'settings' => array('format_type' => 'medium'), ); entity_get_display($this->instance->entity_type, $this->instance->bundle, 'full') - ->setComponent($this->field->name, $this->display_options) + ->setComponent($this->field->getFieldName(), 'field', $this->display_options) ->save(); } @@ -130,7 +130,7 @@ function testDateField() { // Update the entity display settings. $this->display_options['settings'] = array($setting => $new_value); entity_get_display($this->instance->entity_type, $this->instance->bundle, 'full') - ->setComponent($field_name, $this->display_options) + ->setComponent($field_name, 'field', $this->display_options) ->save(); $this->renderTestEntity($id); @@ -148,7 +148,7 @@ function testDateField() { // Verify that the plain formatter works. $this->display_options['type'] = 'datetime_plain'; entity_get_display($this->instance->entity_type, $this->instance->bundle, 'full') - ->setComponent($field_name, $this->display_options) + ->setComponent($field_name, 'field', $this->display_options) ->save(); $expected = $date->format(DATETIME_DATE_STORAGE_FORMAT); $this->renderTestEntity($id); @@ -198,7 +198,7 @@ function testDatetimeField() { // Update the entity display settings. $this->display_options['settings'] = array($setting => $new_value); entity_get_display($this->instance->entity_type, $this->instance->bundle, 'full') - ->setComponent($field_name, $this->display_options) + ->setComponent($field_name, 'field', $this->display_options) ->save(); $this->renderTestEntity($id); @@ -216,7 +216,7 @@ function testDatetimeField() { // Verify that the plain formatter works. $this->display_options['type'] = 'datetime_plain'; entity_get_display($this->instance->entity_type, $this->instance->bundle, 'full') - ->setComponent($field_name, $this->display_options) + ->setComponent($field_name, 'field', $this->display_options) ->save(); $expected = $date->format(DATETIME_DATETIME_STORAGE_FORMAT); $this->renderTestEntity($id); @@ -234,7 +234,7 @@ function testDatelistWidget() { // Change the widget to a datelist widget. entity_get_form_display($this->instance->entity_type, $this->instance->bundle, 'default') - ->setComponent($field_name, array( + ->setComponent($field_name, 'field', array( 'type' => 'datetime_datelist', 'settings' => array( 'increment' => 1, diff --git a/core/modules/edit/lib/Drupal/edit/Tests/EditAutocompleteTermTest.php b/core/modules/edit/lib/Drupal/edit/Tests/EditAutocompleteTermTest.php index 2eb3c7d..a5af6f3 100644 --- a/core/modules/edit/lib/Drupal/edit/Tests/EditAutocompleteTermTest.php +++ b/core/modules/edit/lib/Drupal/edit/Tests/EditAutocompleteTermTest.php @@ -102,20 +102,20 @@ function setUp() { ))->save(); entity_get_form_display('node', 'article', 'default') - ->setComponent($this->field_name, array( + ->setComponent($this->field_name, 'field', array( 'type' => 'taxonomy_autocomplete', 'weight' => -4, )) ->save(); entity_get_display('node', 'article', 'default') - ->setComponent($this->field_name, array( + ->setComponent($this->field_name, 'field', array( 'type' => 'taxonomy_term_reference_link', 'weight' => 10, )) ->save(); entity_get_display('node', 'article', 'teaser') - ->setComponent($this->field_name, array( + ->setComponent($this->field_name, 'field', array( 'type' => 'taxonomy_term_reference_link', 'weight' => 10, )) diff --git a/core/modules/edit/lib/Drupal/edit/Tests/EditTestBase.php b/core/modules/edit/lib/Drupal/edit/Tests/EditTestBase.php index eb7fef6..c92a8fc 100644 --- a/core/modules/edit/lib/Drupal/edit/Tests/EditTestBase.php +++ b/core/modules/edit/lib/Drupal/edit/Tests/EditTestBase.php @@ -76,7 +76,7 @@ function createFieldWithInstance($field_name, $type, $cardinality, $label, $inst $this->$instance->save(); entity_get_form_display('entity_test', 'entity_test', 'default') - ->setComponent($field_name, array( + ->setComponent($field_name, 'field', array( 'type' => $widget_type, 'label' => $label, 'settings' => $widget_settings, @@ -84,7 +84,7 @@ function createFieldWithInstance($field_name, $type, $cardinality, $label, $inst ->save(); entity_get_display('entity_test', 'entity_test', 'default') - ->setComponent($field_name, array( + ->setComponent($field_name, 'field', array( 'label' => 'above', 'type' => $formatter_type, 'settings' => $formatter_settings diff --git a/core/modules/email/lib/Drupal/email/Tests/EmailFieldTest.php b/core/modules/email/lib/Drupal/email/Tests/EmailFieldTest.php index ad1ec2e..dbc686a 100644 --- a/core/modules/email/lib/Drupal/email/Tests/EmailFieldTest.php +++ b/core/modules/email/lib/Drupal/email/Tests/EmailFieldTest.php @@ -76,7 +76,7 @@ function testEmailField() { // Create a form display for the default form mode. entity_get_form_display('entity_test', 'entity_test', 'default') - ->setComponent($field_name, array( + ->setComponent($field_name, 'field', array( 'type' => 'email_default', 'settings' => array( 'placeholder' => 'example@example.com', @@ -85,7 +85,7 @@ function testEmailField() { ->save(); // Create a display for the full view mode. entity_get_display('entity_test', 'entity_test', 'full') - ->setComponent($field_name, array( + ->setComponent($field_name, 'field', array( 'type' => 'email_mailto', )) ->save(); diff --git a/core/modules/email/lib/Drupal/email/Tests/EmailItemTest.php b/core/modules/email/lib/Drupal/email/Tests/EmailItemTest.php index 86b0645..126d06b 100644 --- a/core/modules/email/lib/Drupal/email/Tests/EmailItemTest.php +++ b/core/modules/email/lib/Drupal/email/Tests/EmailItemTest.php @@ -48,7 +48,7 @@ public function setUp() { // Create a form display for the default form mode. entity_get_form_display('entity_test', 'entity_test', 'default') - ->setComponent('field_email', array( + ->setComponent('field_email', 'field', array( 'type' => 'email_default', )) ->save(); diff --git a/core/modules/entity/entity.services.yml b/core/modules/entity/entity.services.yml new file mode 100644 index 0000000..81ab979 --- /dev/null +++ b/core/modules/entity/entity.services.yml @@ -0,0 +1,4 @@ +services: + plugin.manager.entity.display_component_handler: + class: Drupal\entity\Plugin\Type\DisplayComponentHandlerPluginManager + parent: default_plugin_manager diff --git a/core/modules/entity/lib/Drupal/entity/Annotation/DisplayComponent.php b/core/modules/entity/lib/Drupal/entity/Annotation/DisplayComponent.php new file mode 100644 index 0000000..7c87043 --- /dev/null +++ b/core/modules/entity/lib/Drupal/entity/Annotation/DisplayComponent.php @@ -0,0 +1,26 @@ +pluginManager = \Drupal::service('plugin.manager.field.formatter'); $this->displayContext = 'display'; parent::__construct($values, $entity_type); } - /** - * {@inheritdoc} - */ - public function getRenderer($field_name) { - if (isset($this->plugins[$field_name])) { - return $this->plugins[$field_name]; - } - - // Instantiate the formatter object from the stored display properties. - if ($configuration = $this->getComponent($field_name)) { - $instance = field_info_instance($this->targetEntityType, $field_name, $this->bundle); - $formatter = $this->pluginManager->getInstance(array( - 'field_definition' => $instance, - 'view_mode' => $this->originalMode, - // No need to prepare, defaults have been merged in setComponent(). - 'prepare' => FALSE, - 'configuration' => $configuration - )); - } - else { - $formatter = NULL; - } - - // Persist the formatter object. - $this->plugins[$field_name] = $formatter; - return $formatter; - } - } diff --git a/core/modules/entity/lib/Drupal/entity/Entity/EntityFormDisplay.php b/core/modules/entity/lib/Drupal/entity/Entity/EntityFormDisplay.php index 461f7ce..04891cb 100644 --- a/core/modules/entity/lib/Drupal/entity/Entity/EntityFormDisplay.php +++ b/core/modules/entity/lib/Drupal/entity/Entity/EntityFormDisplay.php @@ -36,7 +36,6 @@ class EntityFormDisplay extends EntityDisplayBase implements EntityFormDisplayIn * {@inheritdoc} */ public function __construct(array $values, $entity_type) { - $this->pluginManager = \Drupal::service('plugin.manager.field.widget'); $this->displayContext = 'form'; parent::__construct($values, $entity_type); @@ -45,34 +44,6 @@ public function __construct(array $values, $entity_type) { /** * {@inheritdoc} */ - public function getRenderer($field_name) { - if (isset($this->plugins[$field_name])) { - return $this->plugins[$field_name]; - } - - // Instantiate the widget object from the stored display properties. - if ($configuration = $this->getComponent($field_name)) { - $instance = field_info_instance($this->targetEntityType, $field_name, $this->bundle); - $widget = $this->pluginManager->getInstance(array( - 'field_definition' => $instance, - 'form_mode' => $this->originalMode, - // No need to prepare, defaults have been merged in setComponent(). - 'prepare' => FALSE, - 'configuration' => $configuration - )); - } - else { - $widget = NULL; - } - - // Persist the widget object. - $this->plugins[$field_name] = $widget; - return $widget; - } - - /** - * {@inheritdoc} - */ public function serialize() { // Only store the definition, not external objects or derived data. $data = $this->getExportProperties() + array('entityType' => $this->entityType()); diff --git a/core/modules/entity/lib/Drupal/entity/EntityDisplayBase.php b/core/modules/entity/lib/Drupal/entity/EntityDisplayBase.php index 0278c58..ca8cc92 100644 --- a/core/modules/entity/lib/Drupal/entity/EntityDisplayBase.php +++ b/core/modules/entity/lib/Drupal/entity/EntityDisplayBase.php @@ -8,6 +8,7 @@ namespace Drupal\entity; use Drupal\Core\Config\Entity\ConfigEntityBase; +use Drupal\field\Field; /** * Base class for config entity types that store configuration for entity forms @@ -74,11 +75,9 @@ public $originalMode; /** - * The plugin objects used for this display, keyed by field name. - * - * @var array + * The renderer objects used for this display, keyed by component name. */ - protected $plugins = array(); + protected $renderers = array(); /** * Context in which this entity will be used (e.g. 'display', 'form'). @@ -95,9 +94,18 @@ protected $pluginManager; /** + * The display component handler plugin manager. + * + * @var \Drupal\entity\Plugin\Type\DisplayComponentHandlerPluginManager + */ + protected $handlerManager; + + /** * {@inheritdoc} */ public function __construct(array $values, $entity_type) { + parent::__construct($values, $entity_type); + // @todo See http://drupal.org/node/1825044#comment-6847792: contact.module // currently produces invalid entities with a NULL bundle in some cases. // Add the validity checks back when http://drupal.org/node/1856556 is @@ -106,17 +114,20 @@ public function __construct(array $values, $entity_type) { // throw new \InvalidArgumentException('Missing required properties for an EntityDisplay entity.'); // } + $this->handlerManager =\Drupal::service('plugin.manager.entity.display_component_handler'); + // A plugin manager and a context type needs to be set by extending classes. - if (!isset($this->pluginManager)) { - throw new \RuntimeException('Missing plugin manager.'); - } if (!isset($this->displayContext)) { throw new \RuntimeException('Missing display context type.'); } - parent::__construct($values, $entity_type); - $this->originalMode = $this->mode; + + // Let the component handlers add missing components. + $handlers = $this->handlerManager->getDefinitions(); + foreach (array_keys($handlers) as $type) { + $this->getComponentHandler($type)->prepareDisplayComponents($this->content); + } } /** @@ -157,6 +168,7 @@ public function getExportProperties() { foreach ($names as $name) { $properties[$name] = $this->get($name); } + return $properties; } @@ -172,12 +184,15 @@ public function createCopy($mode) { /** * {@inheritdoc} */ - public function getComponents() { + public function getComponents($type = NULL) { $result = array(); foreach ($this->content as $name => $options) { if (!isset($options['visible']) || $options['visible'] == TRUE) { unset($options['visible']); $result[$name] = $options; + if (empty($type) || $options['handler_type'] == $type) { + $result[$name] = $this->getComponent($name); + } } } return $result; @@ -187,64 +202,42 @@ public function getComponents() { * {@inheritdoc} */ public function getComponent($name) { - // We always store 'extra fields', whether they are visible or hidden. - $extra_fields = field_info_extra_fields($this->targetEntityType, $this->bundle, $this->displayContext); - if (isset($extra_fields[$name])) { - // If we have explicit settings, return an array or NULL depending on - // visibility. - if (isset($this->content[$name])) { - if ($this->content[$name]['visible']) { - return array( - 'weight' => $this->content[$name]['weight'], - ); - } - else { - return NULL; - } - } - - // If no explicit settings for the extra field, look at the default - // visibility in its definition. - $definition = $extra_fields[$name]; - if (!isset($definition['visible']) || $definition['visible'] == TRUE) { - return array( - 'weight' => $definition['weight'] - ); - } - else { - return NULL; - } + if (!isset($this->content[$name]['handler_type'])) { + return NULL; } - if (isset($this->content[$name])) { - return $this->content[$name]; + $type = $this->content[$name]['handler_type']; + $options = $this->content[$name]; + + if ($handler = $this->getComponentHandler($type)) { + $options = $handler->massageOut($name, $options); } + + // The 'handler_type' entry is strictly internal. + unset($options['handler_type']); + + return $options; + } /** * {@inheritdoc} */ - public function setComponent($name, array $options = array()) { + public function setComponent($name, $type = 'field', array $options = array()) { // If no weight specified, make sure the field sinks at the bottom. if (!isset($options['weight'])) { $max = $this->getHighestWeight(); $options['weight'] = isset($max) ? $max + 1 : 0; } - if ($instance = field_info_instance($this->targetEntityType, $name, $this->bundle)) { - $options = $this->pluginManager->prepareConfiguration($instance->getFieldType(), $options); - - // Clear the persisted plugin, if any. - unset($this->plugins[$name]); + if ($handler = $this->getComponentHandler($type)) { + $options = $handler->massageIn($name, $options); } - // We always store 'extra fields', whether they are visible or hidden. - $extra_fields = field_info_extra_fields($this->targetEntityType, $this->bundle, $this->displayContext); - if (isset($extra_fields[$name])) { - $options['visible'] = TRUE; - } + $this->content[$name] = array('handler_type' => $type) + $options; - $this->content[$name] = $options; + // Clear the associated renderer object. + unset($this->renderers[$name]); return $this; } @@ -253,21 +246,26 @@ public function setComponent($name, array $options = array()) { * {@inheritdoc} */ public function removeComponent($name) { - $extra_fields = field_info_extra_fields($this->targetEntityType, $this->bundle, $this->displayContext); - if (isset($extra_fields[$name])) { - // 'Extra fields' are exposed in hooks and can appear at any given time. - // Therefore we store extra fields that are explicitly being hidden, so - // that we can differenciate with those that are simply not configured - // yet. - $this->content[$name] = array( - 'visible' => FALSE, - ); + if (empty($this->content[$name])) { + return $this; + } + + $type = $this->content[$name]['handler_type']; + if ($handler = $this->getComponentHandler($type)) { + $options = $handler->massageIn($name); + } + // Some component handlers may need to store their components in display and + // use own logic to manage removed components. For example extra fields. + if (isset($options)) { + $this->content[$name] = array('handler_type' => $type) + $options; } else { unset($this->content[$name]); - unset($this->plugins[$name]); } + // Clear the associated renderer object. + unset($this->renderers[$name]); + return $this; } @@ -285,9 +283,46 @@ public function getHighestWeight() { } // Let other modules feedback about their own additions. - $weights = array_merge($weights, module_invoke_all('field_info_max_weight', $this->targetEntityType, $this->bundle, $this->displayContext, $this->mode)); + $weights = array_merge($weights, \Drupal::moduleHandler()->invokeAll('field_info_max_weight', $this->targetEntityType, $this->bundle, $this->displayContext, $this->mode)); return $weights ? max($weights) : NULL; } + /** + * {@inheritdoc} + */ + public function getComponentHandler($type) { + $handler = $this->handlerManager->getInstance(array('type' => $type)); + if ($handler) { + $handler->setContext(array( + 'entity_type' => $this->targetEntityType, + 'bundle' => $this->bundle, + 'view_mode' => $this->originalMode, + 'display_context' => $this->displayContext, + )); + } + return $handler; + } + + /** + * {@inheritdoc} + */ + public function getRenderer($name) { + if (!isset($this->content[$name]) && !isset($this->content[$name]['handler_type'])) { + return NULL; + } + + if (!array_key_exists($name, $this->renderers)) { + $options = $this->getComponent($name); + if ($handler = $this->getComponentHandler($this->content[$name]['handler_type'])) { + $this->renderers[$name] = $handler->getRenderer($name, $options); + } + else { + $this->renderers[$name] = NULL; + } + } + return $this->renderers[$name]; + } + + } diff --git a/core/modules/entity/lib/Drupal/entity/EntityDisplayBaseInterface.php b/core/modules/entity/lib/Drupal/entity/EntityDisplayBaseInterface.php index 93fa3bb..2ae50a4 100644 --- a/core/modules/entity/lib/Drupal/entity/EntityDisplayBaseInterface.php +++ b/core/modules/entity/lib/Drupal/entity/EntityDisplayBaseInterface.php @@ -31,10 +31,14 @@ public function createCopy($view_mode); /** * Gets the display options for all components. * + * @param string $type + * The type of the component (i.e. the plugin id of its + * display_component_handler). + * * @return array * The array of display options, keyed by component name. */ - public function getComponents(); + public function getComponents($type = ''); /** * Gets the display options set for a component. @@ -53,13 +57,16 @@ public function getComponent($name); * * @param string $name * The name of the component. + * @param string $type + * The type of the component (i.e. the plugin id of its + * display_component_handler). * @param array $options * The display options. * * @return \Drupal\entity\Entity\EntityDisplay * The EntityDisplay object. */ - public function setComponent($name, array $options = array()); + public function setComponent($name, $type = 'field', array $options = array()); /** * Sets a component to be hidden. @@ -82,14 +89,25 @@ public function removeComponent($name); public function getHighestWeight(); /** - * Returns the renderer plugin for a field (e.g. widget, formatter). + * Returns the object responsible for rendering the component. + * + * @param string $name + * The component name. + * + * @return + * If the component is not hidden, the object to use for rendering it. + */ + public function getRenderer($name); + + /** + * Returns the component handler plugin for a given component type. * - * @param string $field_name - * The field name. + * @param string $type + * The component type. * - * @return \Drupal\Core\Field\PluginSettingsInterface|null - * A widget or formatter plugin or NULL if the field does not exist. + * @return \Drupal\entity\Plugin\Type\DisplayComponentHandlerBase + * The component handler plugin if it exists, NULL otherwise. */ - public function getRenderer($field_name); + public function getComponentHandler($type); } diff --git a/core/modules/entity/lib/Drupal/entity/Plugin/DisplayComponent/ExtraFieldDisplayComponentHandler.php b/core/modules/entity/lib/Drupal/entity/Plugin/DisplayComponent/ExtraFieldDisplayComponentHandler.php new file mode 100644 index 0000000..0597003 --- /dev/null +++ b/core/modules/entity/lib/Drupal/entity/Plugin/DisplayComponent/ExtraFieldDisplayComponentHandler.php @@ -0,0 +1,116 @@ +fieldInfo = $field_info; + } + + /** + * {@inheritdoc} + */ + public static function create(ContainerInterface $container, array $configuration, $plugin_id, array $plugin_definition) { + return new static($configuration, $plugin_id, $plugin_definition, + $container->get('field.info') + ); + } + + /** + * {@inheritdoc} + */ + public function prepareDisplayComponents(array &$components) { + // Add extra fields that are not explicitly configured in the display. + $extra_fields = $this->fieldInfo->getBundleExtraFields($this->context['entity_type'], $this->context['bundle']); + $extra_fields = isset($extra_fields[$this->context['display_context']]) ? $extra_fields[$this->context['display_context']] : array(); + foreach ($extra_fields as $name => $definition) { + if (!isset($components[$name])) { + if (!isset($definition['visible']) || $definition['visible'] == TRUE) { + $components[$name] = array( + 'visible' => TRUE, + 'weight' => $definition['weight'], + ); + } + else { + $components[$name] = array( + 'visible' => FALSE, + ); + } + + $components[$name]['handler_type'] = $this->pluginId; + } + } + // @todo : we could add a custom $display->hiddenExtraFields property on the display, and merge them back on save. + } + + /** + * {@inheritdoc} + */ + public function massageOut($name, array $options = null) { + // We always store 'extra fields', whether they are visible or hidden. Only + // return an options array for visible components. + if (!isset($options['visible']) || $options['visible'] == TRUE) { + unset($options['visible']); + return $options; + } + } + + /** + * {@inheritdoc} + */ + public function massageIn($name, array $options = null) { + // 'Extra fields' are exposed in hooks and can appear at any given time. + // Therefore we store extra fields that are explicitly being hidden, so + // that we can differentiate with those that are simply not configured + // yet. + if (is_null($options)) { + $options['visible'] = FALSE; + } + else { + $options['visible'] = TRUE; + } + + return $options; + } + +} diff --git a/core/modules/entity/lib/Drupal/entity/Plugin/Type/DisplayComponentHandlerBase.php b/core/modules/entity/lib/Drupal/entity/Plugin/Type/DisplayComponentHandlerBase.php new file mode 100644 index 0000000..2790ab3 --- /dev/null +++ b/core/modules/entity/lib/Drupal/entity/Plugin/Type/DisplayComponentHandlerBase.php @@ -0,0 +1,72 @@ +context = $context; + } + + /** + * @todo + * + * @param array $components + */ + public function prepareDisplayComponents(array &$components) { + } + + /** + * @todo + * + * @param string $name + * @param array $options + * @return array + */ + public function massageOut($name, array $options = null) { + return $options; + } + + /** + * @todo + * + * @param string $name + * @param array $options + * @return array + */ + public function massageIn($name, array $options = null) { + return $options; + } + + /** + * @todo + * + * @param string $name + * @param array $options + */ + public function getRenderer($name, array $options = null) { + } + +} diff --git a/core/modules/entity/lib/Drupal/entity/Plugin/Type/DisplayComponentHandlerPluginManager.php b/core/modules/entity/lib/Drupal/entity/Plugin/Type/DisplayComponentHandlerPluginManager.php new file mode 100644 index 0000000..5b9b9bf --- /dev/null +++ b/core/modules/entity/lib/Drupal/entity/Plugin/Type/DisplayComponentHandlerPluginManager.php @@ -0,0 +1,65 @@ +alterInfo($module_handler, 'display_component_handler_info'); + $this->setCacheBackend($cache_backend, $language_manager, 'display_component_handlers'); + } + + /** + * {@inheritdoc} + */ + public function getInstance(array $options) { + $plugin_id = $options['type']; + + if (!isset($this->plugins[$plugin_id]) && !array_key_exists($plugin_id, $this->plugins)) { + $this->plugins[$plugin_id] = $this->discovery->getDefinition($plugin_id) ? $this->createInstance($plugin_id) : NULL; + } + + return $this->plugins[$plugin_id]; + } + +} diff --git a/core/modules/entity/lib/Drupal/entity/Tests/EntityDisplayTest.php b/core/modules/entity/lib/Drupal/entity/Tests/EntityDisplayTest.php index 5fe5f89..86c63ff 100644 --- a/core/modules/entity/lib/Drupal/entity/Tests/EntityDisplayTest.php +++ b/core/modules/entity/lib/Drupal/entity/Tests/EntityDisplayTest.php @@ -45,14 +45,14 @@ public function testEntityDisplayCRUD() { // being assigned. $expected['component_1'] = array('weight' => 0); $expected['component_2'] = array('weight' => 1); - $display->setComponent('component_1'); - $display->setComponent('component_2'); + $display->setComponent('component_1', 'default'); + $display->setComponent('component_2', 'default'); $this->assertEqual($display->getComponent('component_1'), $expected['component_1']); $this->assertEqual($display->getComponent('component_2'), $expected['component_2']); // Check that arbitrary options are correctly stored. $expected['component_3'] = array('weight' => 10, 'foo' => 'bar'); - $display->setComponent('component_3', $expected['component_3']); + $display->setComponent('component_3', 'default', $expected['component_3']); $this->assertEqual($display->getComponent('component_3'), $expected['component_3']); // Check that the display can be properly saved and read back. @@ -63,7 +63,7 @@ public function testEntityDisplayCRUD() { } // Check that getComponents() returns options for all components. - $this->assertEqual($display->getComponents(), $expected); + $this->assertEqual($display->getComponents('default'), $expected); // Check that a component can be removed. $display->removeComponent('component_3'); @@ -95,7 +95,7 @@ public function testEntityGetDisplay() { $this->assertTrue($display->isNew()); // Add some components and save the display. - $display->setComponent('component_1', array('weight' => 10)) + $display->setComponent('component_1', 'default', array('weight' => 10)) ->save(); // Check that entity_get_display() returns the correct object. @@ -111,7 +111,7 @@ public function testEntityGetDisplay() { public function testExtraFieldComponent() { $display = entity_create('entity_display', array( 'targetEntityType' => 'entity_test', - 'bundle' => 'entity_test', + 'bundle' => 'bundle_with_extra_fields', 'mode' => 'default', )); @@ -122,7 +122,7 @@ public function testExtraFieldComponent() { // Check that setting explicit options overrides the defaults. $display->removeComponent('display_extra_field'); - $display->setComponent('display_extra_field_hidden', array('weight' => 10)); + $display->setComponent('display_extra_field_hidden', 'extra_field', array('weight' => 10)); $this->assertNull($display->getComponent('display_extra_field')); $this->assertEqual($display->getComponent('display_extra_field_hidden'), array('weight' => 10)); } @@ -167,7 +167,7 @@ public function testFieldComponent() { ); $this->assertEqual($display->getComponent($field_name), $expected); - // Check that the getFormatter() method returns the correct formatter plugin. + // Check that the getRenderer() method returns the correct formatter plugin. $formatter = $display->getRenderer($field_name); $this->assertEqual($formatter->getPluginId(), $default_formatter); $this->assertEqual($formatter->getSettings(), $formatter_settings['settings']); @@ -180,7 +180,7 @@ public function testFieldComponent() { $this->assertEqual($formatter->randomValue, $random_value); // Check that changing the definition creates a new formatter. - $display->setComponent($field_name, array( + $display->setComponent($field_name, 'field', array( 'type' => 'field_test_multiple', )); $formatter = $display->getRenderer($field_name); @@ -190,7 +190,7 @@ public function testFieldComponent() { // Check that specifying an unknown formatter (e.g. case of a disabled // module) gets stored as is in the display, but results in the default // formatter being used. - $display->setComponent($field_name, array( + $display->setComponent($field_name, 'field', array( 'type' => 'unknown_formatter', )); $options = $display->getComponent($field_name); diff --git a/core/modules/entity/lib/Drupal/entity/Tests/EntityFormDisplayTest.php b/core/modules/entity/lib/Drupal/entity/Tests/EntityFormDisplayTest.php index a364b3f..5e56dff 100644 --- a/core/modules/entity/lib/Drupal/entity/Tests/EntityFormDisplayTest.php +++ b/core/modules/entity/lib/Drupal/entity/Tests/EntityFormDisplayTest.php @@ -39,7 +39,7 @@ public function testEntityGetFromDisplay() { $this->assertTrue($form_display->isNew()); // Add some components and save the display. - $form_display->setComponent('component_1', array('weight' => 10)) + $form_display->setComponent('component_1', 'default', array('weight' => 10)) ->save(); // Check that entity_get_form_display() returns the correct object. @@ -101,7 +101,7 @@ public function testFieldComponent() { $this->assertEqual($widget->randomValue, $random_value); // Check that changing the definition creates a new widget. - $form_display->setComponent($field_name, array( + $form_display->setComponent($field_name, 'field', array( 'type' => 'field_test_multiple', )); $widget = $form_display->getRenderer($field_name); @@ -111,7 +111,7 @@ public function testFieldComponent() { // Check that specifying an unknown widget (e.g. case of a disabled module) // gets stored as is in the display, but results in the default widget being // used. - $form_display->setComponent($field_name, array( + $form_display->setComponent($field_name, 'field', array( 'type' => 'unknown_widget', )); $options = $form_display->getComponent($field_name); @@ -146,12 +146,12 @@ public function testDeleteFieldInstance() { 'targetEntityType' => 'entity_test', 'bundle' => 'entity_test', 'mode' => 'default', - ))->setComponent($field_name)->save(); + ))->setComponent($field_name, 'field')->save(); entity_create('entity_form_display', array( 'targetEntityType' => 'entity_test', 'bundle' => 'entity_test', 'mode' => 'compact', - ))->setComponent($field_name)->save(); + ))->setComponent($field_name, 'field')->save(); // Check the component exists. $display = entity_get_form_display('entity_test', 'entity_test', 'default'); diff --git a/core/modules/entity_reference/lib/Drupal/entity_reference/Tests/EntityReferenceAutoCreateTest.php b/core/modules/entity_reference/lib/Drupal/entity_reference/Tests/EntityReferenceAutoCreateTest.php index b2879dc..ab49eef 100644 --- a/core/modules/entity_reference/lib/Drupal/entity_reference/Tests/EntityReferenceAutoCreateTest.php +++ b/core/modules/entity_reference/lib/Drupal/entity_reference/Tests/EntityReferenceAutoCreateTest.php @@ -70,7 +70,7 @@ function setUp() { ->setComponent('test_field') ->save(); entity_get_form_display('node', $referencing->type, 'default') - ->setComponent('test_field', array( + ->setComponent('test_field', 'field', array( 'type' => 'entity_reference_autocomplete', )) ->save(); diff --git a/core/modules/entity_reference/lib/Drupal/entity_reference/Tests/EntityReferenceFormatterTest.php b/core/modules/entity_reference/lib/Drupal/entity_reference/Tests/EntityReferenceFormatterTest.php index 44bcca1..b45df73 100644 --- a/core/modules/entity_reference/lib/Drupal/entity_reference/Tests/EntityReferenceFormatterTest.php +++ b/core/modules/entity_reference/lib/Drupal/entity_reference/Tests/EntityReferenceFormatterTest.php @@ -80,7 +80,7 @@ public function testAccess() { foreach ($formatter_manager->getOptions('entity_reference') as $formatter => $name) { // Set formatter type for the 'full' view mode. entity_get_display($this->entityType, $this->bundle, 'default') - ->setComponent($field_name, array( + ->setComponent($field_name, 'field', array( 'type' => $formatter, )) ->save(); diff --git a/core/modules/field/field.install b/core/modules/field/field.install index 55d6ff4..dacf333 100644 --- a/core/modules/field/field.install +++ b/core/modules/field/field.install @@ -198,6 +198,7 @@ function field_update_8002() { // Migrate 'widget' settings. if (isset($data['widget'])) { $widget_options = $data['widget']; + $widget_options['handler_type'] = 'field'; // Determine name and create initial entry in the $form_displays array. $form_display_id = $record->entity_type . '.' . $record->bundle . '.default'; if (!isset($form_displays[$form_display_id])) { @@ -206,6 +207,7 @@ function field_update_8002() { // We do not need the 'module' key anymore. unset($widget_options['module']); + $widget_options['handler_type'] = 'field'; $form_displays[$form_display_id]->set("content.$record->field_name", $widget_options); } @@ -223,6 +225,7 @@ function field_update_8002() { if ($display_options['type'] != 'hidden') { // We do not need the 'module' key anymore. unset($display_options['module']); + $display_options['handler_type'] = 'field'; $displays[$display_id]->set("content.$record->field_name", $display_options); } } @@ -274,7 +277,10 @@ function field_update_8002() { } // Set options in the display. - $new_options = array('visible' => $display_options['visible']); + $new_options = array( + 'handler_type' => 'extra_field', + 'visible' => $display_options['visible'] + ); // The display object only stores the weight for 'visible' extra // fields. if ($display_options['visible']) { diff --git a/core/modules/field/field.module b/core/modules/field/field.module index 91464f0..008bb25 100644 --- a/core/modules/field/field.module +++ b/core/modules/field/field.module @@ -459,7 +459,7 @@ function field_view_value(EntityInterface $entity, $field_name, $item, $display * - label: (string) Position of the label. The default 'field' theme * implementation supports the values 'inline', 'above' and 'hidden'. * Defaults to 'above'. - * - type: (string) The formatter to use. Defaults to the + * - formatter: (string) The formatter to use. Defaults to the * 'default_formatter' for the field type. The default formatter will also * be used if the requested formatter is not available. * - settings: (array) Settings specific to the formatter. Defaults to the diff --git a/core/modules/field/lib/Drupal/field/Plugin/DisplayComponent/FieldDisplayComponentHandler.php b/core/modules/field/lib/Drupal/field/Plugin/DisplayComponent/FieldDisplayComponentHandler.php new file mode 100644 index 0000000..217e12a --- /dev/null +++ b/core/modules/field/lib/Drupal/field/Plugin/DisplayComponent/FieldDisplayComponentHandler.php @@ -0,0 +1,121 @@ +fieldInfo = $field_info; + $this->formatterPluginManager = $formatter_plugin_manager; + $this->widgetPluginManager = $widget_plugin_manager; + } + + /** + * {@inheritdoc} + */ + public static function create(ContainerInterface $container, array $configuration, $plugin_id, array $plugin_definition) { + return new static($configuration, $plugin_id, $plugin_definition, + $container->get('field.info'), + $container->get('plugin.manager.field.formatter'), + $container->get('plugin.manager.field.widget') + ); + } + + /** + * {@inheritdoc} + */ + public function massageIn($name, array $options = array()) { + $field = $this->fieldInfo->getField($this->context['entity_type'], $name); + if (!$field) { + // The field in process of removal from display. + return $options; + } + if ($this->context['display_context'] == 'display') { + return $this->formatterPluginManager->prepareConfiguration($field->getFieldType(), $options); + } + else { + return $this->widgetPluginManager->prepareConfiguration($field->getFieldType(), $options); + } + } + + /** + * {@inheritdoc} + */ + public function getRenderer($name, array $options = array()) { + if ($this->context['display_context'] == 'display') { + $plugin_manager = $this->formatterPluginManager; + } + else { + $plugin_manager = $this->widgetPluginManager; + } + + return $plugin_manager->getInstance(array( + 'field_definition' => $this->fieldInfo->getInstance($this->context['entity_type'], $this->context['bundle'], $name), + 'view_mode' => $this->context['view_mode'], + 'configuration' => $options, + // No need to prepare, defaults have been merged when the options were + // written in the display. + 'prepare' => FALSE, + )); + } + +} diff --git a/core/modules/field/lib/Drupal/field/Tests/DisplayApiTest.php b/core/modules/field/lib/Drupal/field/Tests/DisplayApiTest.php index 86e723c..22fddce 100644 --- a/core/modules/field/lib/Drupal/field/Tests/DisplayApiTest.php +++ b/core/modules/field/lib/Drupal/field/Tests/DisplayApiTest.php @@ -101,11 +101,11 @@ function setUp() { entity_create('field_instance', $instance)->save(); // Create a display for the default view mode. entity_get_display($instance['entity_type'], $instance['bundle'], 'default') - ->setComponent($this->field_name, $this->display_options['default']) + ->setComponent($this->field_name, 'field', $this->display_options['default']) ->save(); // Create a display for the teaser view mode. entity_get_display($instance['entity_type'], $instance['bundle'], 'teaser') - ->setComponent($this->field_name, $this->display_options['teaser']) + ->setComponent($this->field_name, 'field', $this->display_options['teaser']) ->save(); // Create an entity with values. diff --git a/core/modules/field/lib/Drupal/field/Tests/FieldAttachOtherTest.php b/core/modules/field/lib/Drupal/field/Tests/FieldAttachOtherTest.php index 23e7fd1..24f733b 100644 --- a/core/modules/field/lib/Drupal/field/Tests/FieldAttachOtherTest.php +++ b/core/modules/field/lib/Drupal/field/Tests/FieldAttachOtherTest.php @@ -69,7 +69,7 @@ function testFieldAttachView() { 'test_formatter_setting' => $formatter_setting, ), ); - $display->setComponent($this->field->getFieldName(), $display_options); + $display->setComponent($this->field->getFieldName(), 'field', $display_options); $formatter_setting_2 = $this->randomName(); $display_options_2 = array( @@ -79,7 +79,7 @@ function testFieldAttachView() { 'test_formatter_setting' => $formatter_setting_2, ), ); - $display->setComponent($this->field_2->getFieldName(), $display_options_2); + $display->setComponent($this->field_2->getFieldName(), 'field', $display_options_2); // View all fields. field_attach_prepare_view($entity_type, array($entity->id() => $entity), $displays); @@ -100,7 +100,7 @@ function testFieldAttachView() { // Label hidden. $entity = clone($entity_init); $display_options['label'] = 'hidden'; - $display->setComponent($this->field->getFieldName(), $display_options); + $display->setComponent($this->field->getFieldName(), 'field', $display_options); field_attach_prepare_view($entity_type, array($entity->id() => $entity), $displays); $entity->content = field_attach_view($entity, $display); $output = drupal_render($entity->content); @@ -122,7 +122,7 @@ function testFieldAttachView() { // Multiple formatter. $entity = clone($entity_init); $formatter_setting = $this->randomName(); - $display->setComponent($this->field->getFieldName(), array( + $display->setComponent($this->field->getFieldName(), 'field', array( 'label' => 'above', 'type' => 'field_test_multiple', 'settings' => array( @@ -142,7 +142,7 @@ function testFieldAttachView() { // Test a formatter that uses hook_field_formatter_prepare_view(). $entity = clone($entity_init); $formatter_setting = $this->randomName(); - $display->setComponent($this->field->getFieldName(), array( + $display->setComponent($this->field->getFieldName(), 'field', array( 'label' => 'above', 'type' => 'field_test_with_prepare_view', 'settings' => array( @@ -194,7 +194,7 @@ function testFieldAttachPrepareViewMultiple() { $this->instance2->save(); $display_2 = entity_get_display('entity_test', 'test_bundle_2', 'full') - ->setComponent($this->field->getFieldName(), array( + ->setComponent($this->field->getFieldName(), 'field', array( 'type' => 'field_test_with_prepare_view', 'settings' => array( 'test_formatter_setting_additional' => $formatter_setting, diff --git a/core/modules/field/lib/Drupal/field/Tests/FieldUnitTestBase.php b/core/modules/field/lib/Drupal/field/Tests/FieldUnitTestBase.php index d9a776b..447ab11 100644 --- a/core/modules/field/lib/Drupal/field/Tests/FieldUnitTestBase.php +++ b/core/modules/field/lib/Drupal/field/Tests/FieldUnitTestBase.php @@ -89,7 +89,7 @@ function createFieldWithInstance($suffix = '', $entity_type = 'entity_test', $bu $this->$instance->save(); entity_get_form_display($entity_type, $bundle, 'default') - ->setComponent($this->$field_name, array( + ->setComponent($this->$field_name, 'field', array( 'type' => 'test_field_widget', 'settings' => array( 'test_widget_setting' => $this->randomName(), diff --git a/core/modules/field/lib/Drupal/field/Tests/FormTest.php b/core/modules/field/lib/Drupal/field/Tests/FormTest.php index 0f57fce..6b26b73 100644 --- a/core/modules/field/lib/Drupal/field/Tests/FormTest.php +++ b/core/modules/field/lib/Drupal/field/Tests/FormTest.php @@ -365,7 +365,7 @@ function testFieldFormMultivalueWithRequiredRadio() { ); entity_create('field_instance', $instance)->save(); entity_get_form_display($instance['entity_type'], $instance['bundle'], 'default') - ->setComponent($instance['field_name'], array( + ->setComponent($instance['field_name'], 'field', array( 'type' => 'options_buttons', )) ->save(); @@ -453,7 +453,7 @@ function testFieldFormMultipleWidget() { entity_create('field_entity', $field)->save(); entity_create('field_instance', $this->instance)->save(); entity_get_form_display($this->instance['entity_type'], $this->instance['bundle'], 'default') - ->setComponent($field_name, array( + ->setComponent($field_name, 'field', array( 'type' => 'test_field_widget_multiple', )) ->save(); @@ -615,7 +615,7 @@ function testHiddenField() { $this->instance->default_value = NULL; $this->instance->save(); entity_get_form_display($entity_type, $this->instance->bundle, 'default') - ->setComponent($this->instance->getFieldName(), array( + ->setComponent($this->instance->getFieldName(), 'field', array( 'type' => 'test_field_widget', )) ->save(); diff --git a/core/modules/field/lib/Drupal/field/Tests/reEnableModuleFieldTest.php b/core/modules/field/lib/Drupal/field/Tests/reEnableModuleFieldTest.php index 928adbb..e6b536c 100644 --- a/core/modules/field/lib/Drupal/field/Tests/reEnableModuleFieldTest.php +++ b/core/modules/field/lib/Drupal/field/Tests/reEnableModuleFieldTest.php @@ -63,7 +63,7 @@ function testReEnabledField() { ))->save(); entity_get_form_display('node', 'article', 'default') - ->setComponent('field_telephone', array( + ->setComponent('field_telephone', 'field', array( 'type' => 'telephone_default', 'settings' => array( 'placeholder' => '123-456-7890', @@ -72,7 +72,7 @@ function testReEnabledField() { ->save(); entity_get_display('node', 'article', 'default') - ->setComponent('field_telephone', array( + ->setComponent('field_telephone', 'field', array( 'type' => 'telephone_link', 'weight' => 1, )) diff --git a/core/modules/field_ui/field_ui.api.php b/core/modules/field_ui/field_ui.api.php index 176993d..5dc31f1 100644 --- a/core/modules/field_ui/field_ui.api.php +++ b/core/modules/field_ui/field_ui.api.php @@ -34,7 +34,7 @@ function hook_field_formatter_settings_form_alter(&$element, &$form_state, $cont $element['mysetting'] = array( '#type' => 'checkbox', '#title' => t('My setting'), - '#default_value' => $context['formatter']->getSetting('mysetting'), + '#default_value' => $context['type']->getSetting('mysetting'), ); } } @@ -62,7 +62,7 @@ function hook_field_widget_settings_form_alter(&$element, &$form_state, $context $element['mysetting'] = array( '#type' => 'checkbox', '#title' => t('My setting'), - '#default_value' => $context['formatter']->getSetting('mysetting'), + '#default_value' => $context['type']->getSetting('mysetting'), ); } } @@ -85,9 +85,7 @@ function hook_field_formatter_settings_summary_alter(&$summary, $context) { // Append a message to the summary when an instance of foo_formatter has // mysetting set to TRUE for the current view mode. if ($context['formatter']->getPluginId() == 'foo_formatter') { - if ($context['formatter']->getSetting('mysetting')) { - $summary[] = t('My setting enabled.'); - } + $summary[] = t('My setting enabled.'); } } diff --git a/core/modules/field_ui/lib/Drupal/field_ui/DisplayOverview.php b/core/modules/field_ui/lib/Drupal/field_ui/DisplayOverview.php index 870df32..399b08f 100644 --- a/core/modules/field_ui/lib/Drupal/field_ui/DisplayOverview.php +++ b/core/modules/field_ui/lib/Drupal/field_ui/DisplayOverview.php @@ -49,8 +49,8 @@ public function buildForm(array $form, array &$form_state, $entity_type = NULL, /** * {@inheritdoc} */ - protected function buildFieldRow($field_id, FieldInstanceInterface $instance, EntityDisplayBaseInterface $entity_display, array $form, array &$form_state) { - $field_row = parent::buildFieldRow($field_id, $instance, $entity_display, $form, $form_state); + protected function buildFieldRow($type, $field_id, FieldInstanceInterface $instance, EntityDisplayBaseInterface $entity_display, array $form, array &$form_state) { + $field_row = parent::buildFieldRow($type, $field_id, $instance, $entity_display, $form, $form_state); $display_options = $entity_display->getComponent($field_id); // Insert the label column. @@ -80,8 +80,8 @@ protected function buildFieldRow($field_id, FieldInstanceInterface $instance, En /** * {@inheritdoc} */ - protected function buildExtraFieldRow($field_id, $extra_field, $entity_display) { - $extra_field_row = parent::buildExtraFieldRow($field_id, $extra_field, $entity_display); + protected function buildExtraFieldRow($type, $field_id, $extra_field, $entity_display) { + $extra_field_row = parent::buildExtraFieldRow($type, $field_id, $extra_field, $entity_display); // Insert an empty placeholder for the label column. $label = array( diff --git a/core/modules/field_ui/lib/Drupal/field_ui/DisplayOverviewBase.php b/core/modules/field_ui/lib/Drupal/field_ui/DisplayOverviewBase.php index 06a4bdc..475e1d1 100644 --- a/core/modules/field_ui/lib/Drupal/field_ui/DisplayOverviewBase.php +++ b/core/modules/field_ui/lib/Drupal/field_ui/DisplayOverviewBase.php @@ -128,12 +128,12 @@ public function buildForm(array $form, array &$form_state, $entity_type = NULL, // Field rows. foreach ($instances as $field_id => $instance) { - $table[$field_id] = $this->buildFieldRow($field_id, $instance, $entity_display, $form, $form_state); + $table[$field_id] = $this->buildFieldRow('field', $field_id, $instance, $entity_display, $form, $form_state); } // Non-field elements. foreach ($extra_fields as $field_id => $extra_field) { - $table[$field_id] = $this->buildExtraFieldRow($field_id, $extra_field, $entity_display); + $table[$field_id] = $this->buildExtraFieldRow('extra_field', $field_id, $extra_field, $entity_display); } $form['fields'] = $table; @@ -205,6 +205,8 @@ public function buildForm(array $form, array &$form_state, $entity_type = NULL, /** * Builds the table row structure for a single field. * + * @param string $type + * The component type. * @param string $field_id * The field ID. * @param \Drupal\field\FieldInstanceInterface $instance @@ -219,7 +221,7 @@ public function buildForm(array $form, array &$form_state, $entity_type = NULL, * @return array * A table row array. */ - protected function buildFieldRow($field_id, FieldInstanceInterface $instance, EntityDisplayBaseInterface $entity_display, array $form, array &$form_state) { + protected function buildFieldRow($type, $field_id, FieldInstanceInterface $instance, EntityDisplayBaseInterface $entity_display, array $form, array &$form_state) { $display_options = $entity_display->getComponent($field_id); $label = $instance->getFieldLabel(); @@ -391,7 +393,7 @@ protected function buildFieldRow($field_id, FieldInstanceInterface $instance, En * @return array * A table row array. */ - protected function buildExtraFieldRow($field_id, $extra_field, $entity_display) { + protected function buildExtraFieldRow($type, $field_id, $extra_field, $entity_display) { $display_options = $entity_display->getComponent($field_id); $extra_field_row = array( @@ -491,7 +493,7 @@ public function submitForm(array &$form, array &$form_state) { $component_values['label'] = $values['label']; } - $display->setComponent($field_name, $component_values); + $display->setComponent($field_name, 'field', $component_values); } } @@ -501,7 +503,7 @@ public function submitForm(array &$form, array &$form_state) { $display->removeComponent($name); } else { - $display->setComponent($name, array( + $display->setComponent($name, 'extra_field', array( 'weight' => $form_values['fields'][$name]['weight'], )); } diff --git a/core/modules/field_ui/lib/Drupal/field_ui/FormDisplayOverview.php b/core/modules/field_ui/lib/Drupal/field_ui/FormDisplayOverview.php index 0c4877c..f02455d 100644 --- a/core/modules/field_ui/lib/Drupal/field_ui/FormDisplayOverview.php +++ b/core/modules/field_ui/lib/Drupal/field_ui/FormDisplayOverview.php @@ -49,8 +49,8 @@ public function buildForm(array $form, array &$form_state, $entity_type = NULL, /** * {@inheritdoc} */ - protected function buildFieldRow($field_id, FieldInstanceInterface $instance, EntityDisplayBaseInterface $entity_display, array $form, array &$form_state) { - $field_row = parent::buildFieldRow($field_id, $instance, $entity_display, $form, $form_state); + protected function buildFieldRow($type, $field_id, FieldInstanceInterface $instance, EntityDisplayBaseInterface $entity_display, array $form, array &$form_state) { + $field_row = parent::buildFieldRow($type, $field_id, $instance, $entity_display, $form, $form_state); // Update the (invisible) title of the 'plugin' column. $field_row['plugin']['#title'] = $this->t('Formatter for @title', array('@title' => $instance->getFieldLabel())); diff --git a/core/modules/field_ui/lib/Drupal/field_ui/Tests/ManageFieldsTest.php b/core/modules/field_ui/lib/Drupal/field_ui/Tests/ManageFieldsTest.php index 502aef3..404ff23 100644 --- a/core/modules/field_ui/lib/Drupal/field_ui/Tests/ManageFieldsTest.php +++ b/core/modules/field_ui/lib/Drupal/field_ui/Tests/ManageFieldsTest.php @@ -402,7 +402,7 @@ function testLockedField() { 'bundle' => $this->type, ))->save(); entity_get_form_display('node', $this->type, 'default') - ->setComponent($field->id, array( + ->setComponent($field->id, 'field', array( 'type' => 'test_field_widget', )) ->save(); diff --git a/core/modules/file/lib/Drupal/file/Tests/FileFieldTestBase.php b/core/modules/file/lib/Drupal/file/Tests/FileFieldTestBase.php index 7edeec7..7ddcb13 100644 --- a/core/modules/file/lib/Drupal/file/Tests/FileFieldTestBase.php +++ b/core/modules/file/lib/Drupal/file/Tests/FileFieldTestBase.php @@ -112,7 +112,7 @@ function attachFileField($name, $entity_type, $bundle, $instance_settings = arra entity_create('field_instance', $instance)->save(); entity_get_form_display($entity_type, $bundle, 'default') - ->setComponent($name, array( + ->setComponent($name, 'field', array( 'type' => 'file_generic', 'settings' => $widget_settings, )) @@ -128,7 +128,7 @@ function updateFileField($name, $type_name, $instance_settings = array(), $widge $instance->save(); entity_get_form_display('node', $type_name, 'default') - ->setComponent($name, array( + ->setComponent($name, 'field', array( 'settings' => $widget_settings, )) ->save(); diff --git a/core/modules/forum/config/entity.display.taxonomy_term.forums.default.yml b/core/modules/forum/config/entity.display.taxonomy_term.forums.default.yml index c4d4f8b..fe8dcd4 100644 --- a/core/modules/forum/config/entity.display.taxonomy_term.forums.default.yml +++ b/core/modules/forum/config/entity.display.taxonomy_term.forums.default.yml @@ -6,5 +6,6 @@ mode: default status: 1 content: description: + handler_type: extra_field weight: '0' visible: '1' diff --git a/core/modules/forum/config/entity.form_display.taxonomy_term.forums.default.yml b/core/modules/forum/config/entity.form_display.taxonomy_term.forums.default.yml index f091e30..96a6dce 100644 --- a/core/modules/forum/config/entity.form_display.taxonomy_term.forums.default.yml +++ b/core/modules/forum/config/entity.form_display.taxonomy_term.forums.default.yml @@ -6,8 +6,10 @@ mode: default status: 1 content: name: + handler_type: extra_field weight: '-5' visible: '1' description: + handler_type: extra_field weight: '0' visible: '1' diff --git a/core/modules/forum/forum.install b/core/modules/forum/forum.install index 3f7d02b..150da36 100644 --- a/core/modules/forum/forum.install +++ b/core/modules/forum/forum.install @@ -58,20 +58,20 @@ function forum_install() { // Assign form display settings for the 'default' form mode. entity_get_form_display('node', 'forum', 'default') - ->setComponent('taxonomy_forums', array( + ->setComponent('taxonomy_forums', 'field', array( 'type' => 'options_select', )) ->save(); // Assign display settings for the 'default' and 'teaser' view modes. entity_get_display('node', 'forum', 'default') - ->setComponent('taxonomy_forums', array( + ->setComponent('taxonomy_forums', 'field', array( 'type' => 'taxonomy_term_reference_link', 'weight' => 10, )) ->save(); entity_get_display('node', 'forum', 'teaser') - ->setComponent('taxonomy_forums', array( + ->setComponent('taxonomy_forums', 'field', array( 'type' => 'taxonomy_term_reference_link', 'weight' => 10, )) diff --git a/core/modules/image/lib/Drupal/image/Entity/ImageStyle.php b/core/modules/image/lib/Drupal/image/Entity/ImageStyle.php index baef807..a940040 100644 --- a/core/modules/image/lib/Drupal/image/Entity/ImageStyle.php +++ b/core/modules/image/lib/Drupal/image/Entity/ImageStyle.php @@ -159,7 +159,7 @@ protected static function replaceImageStyle(ImageStyleInterface $style) { // Update display information for any instance using the image // style that was just deleted. $display_options['settings']['image_style'] = $style->id(); - $display->setComponent($field_name, $display_options) + $display->setComponent($field_name, 'field', $display_options) ->save(); } } @@ -167,7 +167,7 @@ protected static function replaceImageStyle(ImageStyleInterface $style) { $widget_configuration = $entity_form_display->getComponent($field_name); if ($widget_configuration['settings']['preview_image_style'] == $style->getOriginalId()) { $widget_options['settings']['preview_image_style'] = $style->id(); - $entity_form_display->setComponent($field_name, $widget_options) + $entity_form_display->setComponent($field_name, 'field', $widget_options) ->save(); } } diff --git a/core/modules/image/lib/Drupal/image/Tests/ImageAdminStylesTest.php b/core/modules/image/lib/Drupal/image/Tests/ImageAdminStylesTest.php index fc7280e..fb6b5bc 100644 --- a/core/modules/image/lib/Drupal/image/Tests/ImageAdminStylesTest.php +++ b/core/modules/image/lib/Drupal/image/Tests/ImageAdminStylesTest.php @@ -264,7 +264,7 @@ function testStyleReplacement() { $field_name = strtolower($this->randomName(10)); $this->createImageField($field_name, 'article'); entity_get_display('node', 'article', 'default') - ->setComponent($field_name, array( + ->setComponent($field_name, 'field', array( 'type' => 'image', 'settings' => array('image_style' => $style_name), )) @@ -398,7 +398,7 @@ function testConfigImport() { $field_name = strtolower($this->randomName(10)); $this->createImageField($field_name, 'article'); entity_get_display('node', 'article', 'default') - ->setComponent($field_name, array( + ->setComponent($field_name, 'field', array( 'type' => 'image', 'settings' => array('image_style' => $style_name), )) diff --git a/core/modules/image/lib/Drupal/image/Tests/ImageFieldDefaultImagesTest.php b/core/modules/image/lib/Drupal/image/Tests/ImageFieldDefaultImagesTest.php index a616a4d..ee4d731 100644 --- a/core/modules/image/lib/Drupal/image/Tests/ImageFieldDefaultImagesTest.php +++ b/core/modules/image/lib/Drupal/image/Tests/ImageFieldDefaultImagesTest.php @@ -100,7 +100,7 @@ public function testDefaultImages() { $widget_settings = entity_get_form_display('node', $instance->bundle, 'default')->getComponent($field_name); entity_get_form_display('node', 'page', 'default') - ->setComponent($field_name, $widget_settings) + ->setComponent($field_name, 'field', $widget_settings) ->save(); entity_get_display('node', 'page', 'default') ->setComponent($field_name) diff --git a/core/modules/image/lib/Drupal/image/Tests/ImageFieldDisplayTest.php b/core/modules/image/lib/Drupal/image/Tests/ImageFieldDisplayTest.php index 9ef2167..e68929f 100644 --- a/core/modules/image/lib/Drupal/image/Tests/ImageFieldDisplayTest.php +++ b/core/modules/image/lib/Drupal/image/Tests/ImageFieldDisplayTest.php @@ -72,7 +72,7 @@ function _testImageFieldFormatters($scheme) { 'settings' => array('image_link' => 'file'), ); $display = entity_get_display('node', $node->getType(), 'default'); - $display->setComponent($field_name, $display_options) + $display->setComponent($field_name, 'field',$display_options) ->save(); $image = array( @@ -103,7 +103,7 @@ function _testImageFieldFormatters($scheme) { // Test the image linked to content formatter. $display_options['settings']['image_link'] = 'content'; - $display->setComponent($field_name, $display_options) + $display->setComponent($field_name, 'field', $display_options) ->save(); $image = array( '#theme' => 'image', @@ -118,7 +118,7 @@ function _testImageFieldFormatters($scheme) { // Test the image style 'thumbnail' formatter. $display_options['settings']['image_link'] = ''; $display_options['settings']['image_style'] = 'thumbnail'; - $display->setComponent($field_name, $display_options) + $display->setComponent($field_name, 'field', $display_options) ->save(); // Ensure the derivative image is generated so we do not have to deal with diff --git a/core/modules/image/lib/Drupal/image/Tests/ImageFieldTestBase.php b/core/modules/image/lib/Drupal/image/Tests/ImageFieldTestBase.php index 64523a1..7872fbd 100644 --- a/core/modules/image/lib/Drupal/image/Tests/ImageFieldTestBase.php +++ b/core/modules/image/lib/Drupal/image/Tests/ImageFieldTestBase.php @@ -88,7 +88,7 @@ function createImageField($name, $type_name, $field_settings = array(), $instanc $field_instance->save(); entity_get_form_display('node', $type_name, 'default') - ->setComponent($field['name'], array( + ->setComponent($field['name'], 'field', array( 'type' => 'image_image', 'settings' => $widget_settings, )) diff --git a/core/modules/link/lib/Drupal/link/Tests/LinkFieldTest.php b/core/modules/link/lib/Drupal/link/Tests/LinkFieldTest.php index e71beac..6e66bef 100644 --- a/core/modules/link/lib/Drupal/link/Tests/LinkFieldTest.php +++ b/core/modules/link/lib/Drupal/link/Tests/LinkFieldTest.php @@ -81,7 +81,7 @@ function testURLValidation() { ), ))->save(); entity_get_form_display('entity_test', 'entity_test', 'default') - ->setComponent($field_name, array( + ->setComponent($field_name, 'field', array( 'type' => 'link_default', 'settings' => array( 'placeholder_url' => 'http://example.com', @@ -89,7 +89,7 @@ function testURLValidation() { )) ->save(); entity_get_display('entity_test', 'entity_test', 'full') - ->setComponent($field_name, array( + ->setComponent($field_name, 'field', array( 'type' => 'link', )) ->save(); @@ -156,7 +156,7 @@ function testLinkTitle() { )); $this->instance->save(); entity_get_form_display('entity_test', 'entity_test', 'default') - ->setComponent($field_name, array( + ->setComponent($field_name, 'field', array( 'type' => 'link_default', 'settings' => array( 'placeholder_url' => 'http://example.com', @@ -165,7 +165,7 @@ function testLinkTitle() { )) ->save(); entity_get_display('entity_test', 'entity_test', 'full') - ->setComponent($field_name, array( + ->setComponent($field_name, 'field', array( 'type' => 'link', 'label' => 'hidden', )) @@ -274,7 +274,7 @@ function testLinkFormatter() { ), ))->save(); entity_get_form_display('entity_test', 'entity_test', 'default') - ->setComponent($field_name, array( + ->setComponent($field_name, 'field', array( 'type' => 'link_default', )) ->save(); @@ -283,7 +283,7 @@ function testLinkFormatter() { 'label' => 'hidden', ); entity_get_display('entity_test', 'entity_test', 'full') - ->setComponent($field_name, $display_options) + ->setComponent($field_name, 'field', $display_options) ->save(); // Create an entity with two link field values: @@ -339,7 +339,7 @@ function testLinkFormatter() { $display_options['settings'] = $new_value; } entity_get_display('entity_test', 'entity_test', 'full') - ->setComponent($field_name, $display_options) + ->setComponent($field_name, 'field', $display_options) ->save(); $this->renderTestEntity($id); @@ -419,12 +419,12 @@ function testLinkSeparateFormatter() { 'label' => 'hidden', ); entity_get_form_display('entity_test', 'entity_test', 'default') - ->setComponent($field_name, array( + ->setComponent($field_name, 'field', array( 'type' => 'link_default', )) ->save(); entity_get_display('entity_test', 'entity_test', 'full') - ->setComponent($field_name, $display_options) + ->setComponent($field_name, 'field', $display_options) ->save(); // Create an entity with two link field values: @@ -460,7 +460,7 @@ function testLinkSeparateFormatter() { // Update the field formatter settings. $display_options['settings'] = array($setting => $new_value); entity_get_display('entity_test', 'entity_test', 'full') - ->setComponent($field_name, $display_options) + ->setComponent($field_name, 'field', $display_options) ->save(); $this->renderTestEntity($id); diff --git a/core/modules/node/lib/Drupal/node/Tests/MultiStepNodeFormBasicOptionsTest.php b/core/modules/node/lib/Drupal/node/Tests/MultiStepNodeFormBasicOptionsTest.php index 25036b9..08350c3 100644 --- a/core/modules/node/lib/Drupal/node/Tests/MultiStepNodeFormBasicOptionsTest.php +++ b/core/modules/node/lib/Drupal/node/Tests/MultiStepNodeFormBasicOptionsTest.php @@ -55,7 +55,7 @@ function testMultiStepNodeFormBasicOptions() { ), ))->save(); entity_get_form_display('node', 'page', 'default') - ->setComponent($this->field_name, array( + ->setComponent($this->field_name, 'field', array( 'type' => 'text_textfield', )) ->save(); diff --git a/core/modules/node/lib/Drupal/node/Tests/PagePreviewTest.php b/core/modules/node/lib/Drupal/node/Tests/PagePreviewTest.php index 8bd1081..35d45d2 100644 --- a/core/modules/node/lib/Drupal/node/Tests/PagePreviewTest.php +++ b/core/modules/node/lib/Drupal/node/Tests/PagePreviewTest.php @@ -88,19 +88,19 @@ function setUp() { ))->save(); entity_get_form_display('node', 'page', 'default') - ->setComponent($this->field_name, array( + ->setComponent($this->field_name, 'field', array( 'type' => 'taxonomy_autocomplete', )) ->save(); // Show on default display and teaser. entity_get_display('node', 'page', 'default') - ->setComponent($this->field_name, array( + ->setComponent($this->field_name, 'field', array( 'type' => 'taxonomy_term_reference_link', )) ->save(); entity_get_display('node', 'page', 'teaser') - ->setComponent($this->field_name, array( + ->setComponent($this->field_name, 'field', array( 'type' => 'taxonomy_term_reference_link', )) ->save(); diff --git a/core/modules/node/lib/Drupal/node/Tests/SummaryLengthTest.php b/core/modules/node/lib/Drupal/node/Tests/SummaryLengthTest.php index 9ad3373..c7f7f40 100644 --- a/core/modules/node/lib/Drupal/node/Tests/SummaryLengthTest.php +++ b/core/modules/node/lib/Drupal/node/Tests/SummaryLengthTest.php @@ -50,7 +50,7 @@ function testSummaryLength() { $display = entity_get_display('node', $node->getType(), 'teaser'); $display_options = $display->getComponent('body'); $display_options['settings']['trim_length'] = 200; - $display->setComponent('body', $display_options) + $display->setComponent('body', 'field', $display_options) ->save(); // Render the node as a teaser again and check that the summary is now only diff --git a/core/modules/node/node.module b/core/modules/node/node.module index a860f3f..d4aa4a4 100644 --- a/core/modules/node/node.module +++ b/core/modules/node/node.module @@ -193,11 +193,9 @@ function node_entity_bundle_info() { function node_entity_display_alter(EntityDisplay $display, $context) { // Hide field labels in search index. if ($context['entity_type'] == 'node' && $context['view_mode'] == 'search_index') { - foreach ($display->getComponents() as $name => $options) { - if (isset($options['label'])) { - $options['label'] = 'hidden'; - $display->setComponent($name, $options); - } + foreach ($display->getComponents('field') as $name => $options) { + $options['label'] = 'hidden'; + $display->setComponent($name, 'field', $options); } } } @@ -415,20 +413,20 @@ function node_add_body_field(NodeTypeInterface $type, $label = 'Body') { // Assign widget settings for the 'default' form mode. entity_get_form_display('node', $type->type, 'default') - ->setComponent('body', array( + ->setComponent('body', 'field', array( 'type' => 'text_textarea_with_summary', )) ->save(); // Assign display settings for the 'default' and 'teaser' view modes. entity_get_display('node', $type->type, 'default') - ->setComponent('body', array( + ->setComponent('body', 'field', array( 'label' => 'hidden', 'type' => 'text_default', )) ->save(); entity_get_display('node', $type->type, 'teaser') - ->setComponent('body', array( + ->setComponent('body', 'field', array( 'label' => 'hidden', 'type' => 'text_summary_or_trimmed', )) diff --git a/core/modules/number/lib/Drupal/number/Tests/NumberFieldTest.php b/core/modules/number/lib/Drupal/number/Tests/NumberFieldTest.php index 8a1d9b2..f964319 100644 --- a/core/modules/number/lib/Drupal/number/Tests/NumberFieldTest.php +++ b/core/modules/number/lib/Drupal/number/Tests/NumberFieldTest.php @@ -78,7 +78,7 @@ function testNumberDecimalField() { ))->save(); entity_get_form_display('entity_test', 'entity_test', 'default') - ->setComponent($field_name, array( + ->setComponent($field_name, 'field', array( 'type' => 'number', 'settings' => array( 'placeholder' => '0.00' @@ -86,7 +86,7 @@ function testNumberDecimalField() { )) ->save(); entity_get_display('entity_test', 'entity_test', 'default') - ->setComponent($field_name, array( + ->setComponent($field_name, 'field', array( 'type' => 'number_decimal', )) ->save(); diff --git a/core/modules/options/lib/Drupal/options/Tests/OptionsDynamicValuesTest.php b/core/modules/options/lib/Drupal/options/Tests/OptionsDynamicValuesTest.php index 6607332..0ff9cbb 100644 --- a/core/modules/options/lib/Drupal/options/Tests/OptionsDynamicValuesTest.php +++ b/core/modules/options/lib/Drupal/options/Tests/OptionsDynamicValuesTest.php @@ -48,7 +48,7 @@ function setUp() { 'required' => TRUE, ))->save(); entity_get_form_display('entity_test_rev', 'entity_test_rev', 'default') - ->setComponent($this->field_name, array( + ->setComponent($this->field_name, 'field', array( 'type' => 'options_select', )) ->save(); diff --git a/core/modules/options/lib/Drupal/options/Tests/OptionsFieldTest.php b/core/modules/options/lib/Drupal/options/Tests/OptionsFieldTest.php index c00cc63..12a06f3 100644 --- a/core/modules/options/lib/Drupal/options/Tests/OptionsFieldTest.php +++ b/core/modules/options/lib/Drupal/options/Tests/OptionsFieldTest.php @@ -88,7 +88,7 @@ function testUpdateAllowedValues() { 'bundle' => 'entity_test', ))->save(); entity_get_form_display('entity_test', 'entity_test', 'default') - ->setComponent($this->fieldName, array( + ->setComponent($this->fieldName, 'field', array( 'type' => 'options_buttons', )) ->save(); diff --git a/core/modules/options/lib/Drupal/options/Tests/OptionsFieldUnitTestBase.php b/core/modules/options/lib/Drupal/options/Tests/OptionsFieldUnitTestBase.php index 2b70634..43daefc 100644 --- a/core/modules/options/lib/Drupal/options/Tests/OptionsFieldUnitTestBase.php +++ b/core/modules/options/lib/Drupal/options/Tests/OptionsFieldUnitTestBase.php @@ -78,7 +78,7 @@ public function setUp() { $this->instance->save(); entity_get_form_display('entity_test', 'entity_test', 'default') - ->setComponent($this->fieldName, array( + ->setComponent($this->fieldName, 'field', array( 'type' => 'options_buttons', )) ->save(); diff --git a/core/modules/options/lib/Drupal/options/Tests/OptionsWidgetsTest.php b/core/modules/options/lib/Drupal/options/Tests/OptionsWidgetsTest.php index 877148c..bbbd1d7 100644 --- a/core/modules/options/lib/Drupal/options/Tests/OptionsWidgetsTest.php +++ b/core/modules/options/lib/Drupal/options/Tests/OptionsWidgetsTest.php @@ -116,7 +116,7 @@ function testRadioButtons() { )); $instance->save(); entity_get_form_display('entity_test', 'entity_test', 'default') - ->setComponent($this->card_1->getFieldName(), array( + ->setComponent($this->card_1->getFieldName(), 'field', array( 'type' => 'options_buttons', )) ->save(); @@ -173,7 +173,7 @@ function testCheckBoxes() { )); $instance->save(); entity_get_form_display('entity_test', 'entity_test', 'default') - ->setComponent($this->card_2->getFieldName(), array( + ->setComponent($this->card_2->getFieldName(), 'field', array( 'type' => 'options_buttons', )) ->save(); @@ -264,7 +264,7 @@ function testSelectListSingle() { )); $instance->save(); entity_get_form_display('entity_test', 'entity_test', 'default') - ->setComponent($this->card_1->getFieldName(), array( + ->setComponent($this->card_1->getFieldName(), 'field', array( 'type' => 'options_select', )) ->save(); @@ -363,7 +363,7 @@ function testSelectListMultiple() { )); $instance->save(); entity_get_form_display('entity_test', 'entity_test', 'default') - ->setComponent($this->card_2->getFieldName(), array( + ->setComponent($this->card_2->getFieldName(), 'field', array( 'type' => 'options_select', )) ->save(); @@ -482,7 +482,7 @@ function testOnOffCheckbox() { 'bundle' => 'entity_test', ))->save(); entity_get_form_display('entity_test', 'entity_test', 'default') - ->setComponent($this->bool->getFieldName(), array( + ->setComponent($this->bool->getFieldName(), 'field', array( 'type' => 'options_onoff', )) ->save(); @@ -548,7 +548,7 @@ function testOnOffCheckboxLabelSetting() { ))->save(); entity_get_form_display('node', 'page', 'default') - ->setComponent($field_name, array( + ->setComponent($field_name, 'field', array( 'type' => 'options_onoff', )) ->save(); diff --git a/core/modules/picture/lib/Drupal/picture/Tests/PictureFieldDisplayTest.php b/core/modules/picture/lib/Drupal/picture/Tests/PictureFieldDisplayTest.php index 7c11a6f..ce798d2 100644 --- a/core/modules/picture/lib/Drupal/picture/Tests/PictureFieldDisplayTest.php +++ b/core/modules/picture/lib/Drupal/picture/Tests/PictureFieldDisplayTest.php @@ -135,11 +135,10 @@ public function _testPictureFieldFormatters($scheme) { // Use the picture formatter linked to file formatter. $display_options = array( 'type' => 'picture', - 'module' => 'picture', 'settings' => array('image_link' => 'file'), ); $display = entity_get_display('node', 'article', 'default'); - $display->setComponent($field_name, $display_options) + $display->setComponent($field_name, 'field', $display_options) ->save(); $image = array( @@ -170,7 +169,7 @@ public function _testPictureFieldFormatters($scheme) { // Use the picture formatter with a picture mapping. $display_options['settings']['picture_mapping'] = 'mapping_one'; - $display->setComponent($field_name, $display_options) + $display->setComponent($field_name, 'field', $display_options) ->save(); // Output should contain all image styles and all breakpoints. @@ -185,7 +184,7 @@ public function _testPictureFieldFormatters($scheme) { // Test the fallback image style. $display_options['settings']['image_link'] = ''; $display_options['settings']['fallback_image_style'] = 'large'; - $display->setComponent($field_name, $display_options) + $display->setComponent($field_name, 'field', $display_options) ->save(); $large_style = entity_load('image_style', 'large'); diff --git a/core/modules/rdf/lib/Drupal/rdf/Tests/Field/FieldRdfaTestBase.php b/core/modules/rdf/lib/Drupal/rdf/Tests/Field/FieldRdfaTestBase.php index 29d4084..ec75166 100644 --- a/core/modules/rdf/lib/Drupal/rdf/Tests/Field/FieldRdfaTestBase.php +++ b/core/modules/rdf/lib/Drupal/rdf/Tests/Field/FieldRdfaTestBase.php @@ -70,7 +70,7 @@ protected function assertFormatterRdfa($formatter, $property, $value, $object_ty // The field formatter will be rendered inside the entity. Set the field // formatter in the entity display options before rendering the entity. entity_get_display('entity_test', 'entity_test', 'default') - ->setComponent($this->fieldName, array('type' => $formatter)) + ->setComponent($this->fieldName, 'field', array('type' => $formatter)) ->save(); $build = entity_view($this->entity, 'default'); $output = drupal_render($build); diff --git a/core/modules/rdf/lib/Drupal/rdf/Tests/FileFieldAttributesTest.php b/core/modules/rdf/lib/Drupal/rdf/Tests/FileFieldAttributesTest.php index cc738e4..1ad79c3 100644 --- a/core/modules/rdf/lib/Drupal/rdf/Tests/FileFieldAttributesTest.php +++ b/core/modules/rdf/lib/Drupal/rdf/Tests/FileFieldAttributesTest.php @@ -60,7 +60,7 @@ public function setUp() { // Set the teaser display to show this field. entity_get_display('node', 'article', 'teaser') - ->setComponent($this->fieldName, array('type' => 'file_default')) + ->setComponent($this->fieldName, 'field', array('type' => 'file_default')) ->save(); // Set the RDF mapping for the new field. diff --git a/core/modules/rdf/lib/Drupal/rdf/Tests/ImageFieldAttributesTest.php b/core/modules/rdf/lib/Drupal/rdf/Tests/ImageFieldAttributesTest.php index 14af8f6..78a3523 100644 --- a/core/modules/rdf/lib/Drupal/rdf/Tests/ImageFieldAttributesTest.php +++ b/core/modules/rdf/lib/Drupal/rdf/Tests/ImageFieldAttributesTest.php @@ -86,7 +86,7 @@ function testNodeTeaser() { 'settings' => array('image_style' => 'medium', 'image_link' => 'content'), ); $display = entity_get_display('node', 'article', 'teaser'); - $display->setComponent($this->fieldName, $display_options) + $display->setComponent($this->fieldName, 'field', $display_options) ->save(); // Render the teaser. diff --git a/core/modules/rdf/lib/Drupal/rdf/Tests/TaxonomyTermFieldAttributesTest.php b/core/modules/rdf/lib/Drupal/rdf/Tests/TaxonomyTermFieldAttributesTest.php index f19cff2..c0802d0 100644 --- a/core/modules/rdf/lib/Drupal/rdf/Tests/TaxonomyTermFieldAttributesTest.php +++ b/core/modules/rdf/lib/Drupal/rdf/Tests/TaxonomyTermFieldAttributesTest.php @@ -80,7 +80,7 @@ public function setUp() { function testNodeTeaser() { // Set the teaser display to show this field. entity_get_display('node', 'article', 'teaser') - ->setComponent($this->fieldName, array('type' => 'taxonomy_term_reference_link')) + ->setComponent($this->fieldName, 'field', array('type' => 'taxonomy_term_reference_link')) ->save(); // Create a term in each vocabulary. @@ -175,10 +175,10 @@ protected function createTaxonomyTermReferenceField($field_name, $vocabulary) { 'bundle' => 'article', ))->save(); entity_get_form_display('node', 'article', 'default') - ->setComponent($field_name, array('type' => 'options_select')) + ->setComponent($field_name, 'field', array('type' => 'options_select')) ->save(); entity_get_display('node', 'article', 'full') - ->setComponent($field_name, array('type' => 'taxonomy_term_reference_link')) + ->setComponent($field_name, 'field', array('type' => 'taxonomy_term_reference_link')) ->save(); } diff --git a/core/modules/system/entity.api.php b/core/modules/system/entity.api.php index f87f5a3..9ff7534 100644 --- a/core/modules/system/entity.api.php +++ b/core/modules/system/entity.api.php @@ -564,11 +564,9 @@ function hook_entity_view_mode_alter(&$view_mode, Drupal\Core\Entity\EntityInter function hook_entity_display_alter(\Drupal\entity\Entity\EntityDisplay $display, array $context) { // Leave field labels out of the search index. if ($context['entity_type'] == 'node' && $context['view_mode'] == 'search_index') { - foreach ($display->getComponents() as $name => $options) { - if (isset($options['label'])) { - $options['label'] = 'hidden'; - $display->setComponent($name, $options); - } + foreach ($display->getComponents('field') as $name => $options) { + $options['label'] = 'hidden'; + $display->setComponent($name, 'field', $options); } } } @@ -613,7 +611,7 @@ function hook_entity_prepare_form(\Drupal\Core\Entity\EntityInterface $entity, $ function hook_entity_form_display_alter(\Drupal\entity\Entity\EntityFormDisplay $form_display, array $context) { // Hide the 'user_picture' field from the register form. if ($context['entity_type'] == 'user' && $context['form_mode'] == 'register') { - $form_display->setComponent('user_picture', array( + $form_display->setComponent('user_picture', 'field', array( 'type' => 'hidden', )); } diff --git a/core/modules/system/lib/Drupal/system/Tests/Ajax/MultiFormTest.php b/core/modules/system/lib/Drupal/system/Tests/Ajax/MultiFormTest.php index 1e3dbd3..cfa6f0d 100644 --- a/core/modules/system/lib/Drupal/system/Tests/Ajax/MultiFormTest.php +++ b/core/modules/system/lib/Drupal/system/Tests/Ajax/MultiFormTest.php @@ -48,7 +48,7 @@ function setUp() { 'bundle' => 'page', ))->save(); entity_get_form_display('node', 'page', 'default') - ->setComponent($field_name, array('type' => 'text_default')) + ->setComponent($field_name, 'field', array('type' => 'text_default')) ->save(); // Login a user who can create 'page' nodes. diff --git a/core/modules/system/lib/Drupal/system/Tests/Entity/EntityViewControllerTest.php b/core/modules/system/lib/Drupal/system/Tests/Entity/EntityViewControllerTest.php index d08d45a..14298c8 100644 --- a/core/modules/system/lib/Drupal/system/Tests/Entity/EntityViewControllerTest.php +++ b/core/modules/system/lib/Drupal/system/Tests/Entity/EntityViewControllerTest.php @@ -75,7 +75,7 @@ function testEntityViewController() { public function testFieldItemAttributes() { // Make sure the test field will be rendered. entity_get_display('entity_test', 'entity_test', 'default') - ->setComponent('field_test_text', array('type' => 'text_default')) + ->setComponent('field_test_text', 'field', array('type' => 'text_default')) ->save(); // Create an entity and save test value in field_test_text. diff --git a/core/modules/system/lib/Drupal/system/Tests/Form/ArbitraryRebuildTest.php b/core/modules/system/lib/Drupal/system/Tests/Form/ArbitraryRebuildTest.php index b09fc9b..9513773 100644 --- a/core/modules/system/lib/Drupal/system/Tests/Form/ArbitraryRebuildTest.php +++ b/core/modules/system/lib/Drupal/system/Tests/Form/ArbitraryRebuildTest.php @@ -47,7 +47,7 @@ function setUp() { 'label' => 'Test a multiple valued field', ))->save(); entity_get_form_display('user', 'user', 'register') - ->setComponent('test_multiple', array( + ->setComponent('test_multiple', 'field', array( 'type' => 'text_textfield', 'weight' => 0, )) diff --git a/core/modules/system/lib/Drupal/system/Tests/Form/RebuildTest.php b/core/modules/system/lib/Drupal/system/Tests/Form/RebuildTest.php index a05e684..de1a205 100644 --- a/core/modules/system/lib/Drupal/system/Tests/Form/RebuildTest.php +++ b/core/modules/system/lib/Drupal/system/Tests/Form/RebuildTest.php @@ -86,7 +86,7 @@ function testPreserveFormActionAfterAJAX() { ); entity_create('field_instance', $instance)->save(); entity_get_form_display('node', 'page', 'default') - ->setComponent($field_name, array('type' => 'text_test')) + ->setComponent($field_name, 'field', array('type' => 'text_test')) ->save(); // Log in a user who can create 'page' nodes. diff --git a/core/modules/system/tests/modules/entity_test/entity_test.install b/core/modules/system/tests/modules/entity_test/entity_test.install index a03acf0..a5ffa50 100644 --- a/core/modules/system/tests/modules/entity_test/entity_test.install +++ b/core/modules/system/tests/modules/entity_test/entity_test.install @@ -32,7 +32,7 @@ function entity_test_install() { ))->save(); entity_get_form_display($entity_type, $entity_type, 'default') - ->setComponent('field_test_text', array('type' => 'text_text')) + ->setComponent('field_test_text', 'field', array('type' => 'text_text')) ->save(); } } diff --git a/core/modules/system/tests/modules/entity_test/entity_test.module b/core/modules/system/tests/modules/entity_test/entity_test.module index 9c2b0b9..09905a1 100644 --- a/core/modules/system/tests/modules/entity_test/entity_test.module +++ b/core/modules/system/tests/modules/entity_test/entity_test.module @@ -195,7 +195,7 @@ function entity_test_entity_form_mode_info_alter(&$form_modes) { * Implements hook_field_extra_fields(). */ function entity_test_field_extra_fields() { - $extra['entity_test']['entity_test'] = array( + $extra['entity_test']['bundle_with_extra_fields'] = array( 'display' => array( // Note: those extra fields do not currently display anything, they are // just used in \Drupal\entity\Tests\EntityDisplayTest to test the @@ -428,7 +428,7 @@ function entity_test_entity_form_display_alter(EntityFormDisplay $form_display, if ($context['entity_type'] == 'entity_test') { if ($component_options = $form_display->getComponent('field_test_text')) { $component_options['settings']['size'] = 42; - $form_display->setComponent('field_test_text', $component_options); + $form_display->setComponent('field_test_text', 'field', $component_options); } } } diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/RssTest.php b/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/RssTest.php index e89c531..ee55a48 100644 --- a/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/RssTest.php +++ b/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/RssTest.php @@ -58,12 +58,12 @@ function setUp() { 'entity_type' => 'node', ))->save(); entity_get_form_display('node', 'article', 'default') - ->setComponent($this->field_name, array( + ->setComponent($this->field_name, 'field', array( 'type' => 'options_select', )) ->save(); entity_get_display('node', 'article', 'default') - ->setComponent($this->field_name, array( + ->setComponent($this->field_name, 'field', array( 'type' => 'taxonomy_term_reference_link', )) ->save(); @@ -88,7 +88,7 @@ function testTaxonomyRss() { // Change the format to 'RSS category'. $this->drupalGet("admin/structure/types/manage/article/display/rss"); $edit = array( - "fields[taxonomy_" . $this->vocabulary->id() . "][type]" => 'taxonomy_term_reference_rss_category', + 'fields[taxonomy_' . $this->vocabulary->id() . '][type]' => 'taxonomy_term_reference_rss_category', ); $this->drupalPostForm(NULL, $edit, t('Save')); diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/TaxonomyImageTest.php b/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/TaxonomyImageTest.php index db00705..d75ef55 100644 --- a/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/TaxonomyImageTest.php +++ b/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/TaxonomyImageTest.php @@ -59,13 +59,13 @@ public function setUp() { 'settings' => array(), ))->save(); entity_get_display($entity_type, $this->vocabulary->id(), 'default') - ->setComponent($name, array( + ->setComponent($name, 'field', array( 'type' => 'image', 'settings' => array(), )) ->save(); entity_get_form_display($entity_type, $this->vocabulary->id(), 'default') - ->setComponent($name, array( + ->setComponent($name, 'field', array( 'type' => 'image_image', 'settings' => array(), )) diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/TermFieldMultipleVocabularyTest.php b/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/TermFieldMultipleVocabularyTest.php index 8007b30..db11fe9 100644 --- a/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/TermFieldMultipleVocabularyTest.php +++ b/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/TermFieldMultipleVocabularyTest.php @@ -66,12 +66,12 @@ function setUp() { 'bundle' => 'entity_test', ))->save(); entity_get_form_display('entity_test', 'entity_test', 'default') - ->setComponent($this->field_name, array( + ->setComponent($this->field_name, 'field', array( 'type' => 'options_select', )) ->save(); entity_get_display('entity_test', 'entity_test', 'full') - ->setComponent($this->field_name, array( + ->setComponent($this->field_name, 'field', array( 'type' => 'taxonomy_term_reference_link', )) ->save(); diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/TermFieldTest.php b/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/TermFieldTest.php index 34250d6..b82f8d6 100644 --- a/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/TermFieldTest.php +++ b/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/TermFieldTest.php @@ -63,12 +63,12 @@ function setUp() { 'bundle' => 'entity_test', ))->save(); entity_get_form_display('entity_test', 'entity_test', 'default') - ->setComponent($this->field_name, array( + ->setComponent($this->field_name, 'field', array( 'type' => 'options_select', )) ->save(); entity_get_display('entity_test', 'entity_test', 'full') - ->setComponent($this->field_name, array( + ->setComponent($this->field_name, 'field', array( 'type' => 'taxonomy_term_reference_link', )) ->save(); diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/TermIndexTest.php b/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/TermIndexTest.php index c7abc5c..f21bb20 100644 --- a/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/TermIndexTest.php +++ b/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/TermIndexTest.php @@ -53,12 +53,12 @@ function setUp() { 'entity_type' => 'node', ))->save(); entity_get_form_display('node', 'article', 'default') - ->setComponent($this->field_name_1, array( + ->setComponent($this->field_name_1, 'field', array( 'type' => 'options_select', )) ->save(); entity_get_display('node', 'article', 'default') - ->setComponent($this->field_name_1, array( + ->setComponent($this->field_name_1, 'field', array( 'type' => 'taxonomy_term_reference_link', )) ->save(); @@ -84,12 +84,12 @@ function setUp() { 'entity_type' => 'node', ))->save(); entity_get_form_display('node', 'article', 'default') - ->setComponent($this->field_name_2, array( + ->setComponent($this->field_name_2, 'field', array( 'type' => 'options_select', )) ->save(); entity_get_display('node', 'article', 'default') - ->setComponent($this->field_name_2, array( + ->setComponent($this->field_name_2, 'field', array( 'type' => 'taxonomy_term_reference_link', )) ->save(); diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/TermTest.php b/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/TermTest.php index dcae350..7c6ceb6 100644 --- a/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/TermTest.php +++ b/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/TermTest.php @@ -52,12 +52,12 @@ function setUp() { )); $this->instance->save(); entity_get_form_display('node', 'article', 'default') - ->setComponent($field_name, array( + ->setComponent($field_name, 'field', array( 'type' => 'options_select', )) ->save(); entity_get_display('node', 'article', 'default') - ->setComponent($field_name, array( + ->setComponent($field_name, 'field', array( 'type' => 'taxonomy_term_reference_link', )) ->save(); @@ -148,7 +148,7 @@ function testNodeTermCreationAndDeletion() { // Enable tags in the vocabulary. $instance = $this->instance; entity_get_form_display($instance->entity_type, $instance->bundle, 'default') - ->setComponent($instance->getFieldName(), array( + ->setComponent($instance->getFieldName(), 'field', array( 'type' => 'taxonomy_autocomplete', 'settings' => array( 'placeholder' => 'Start typing here.', @@ -518,7 +518,7 @@ function testReSavingTags() { // Enable tags in the vocabulary. $instance = $this->instance; entity_get_form_display($instance->entity_type, $instance->bundle, 'default') - ->setComponent($instance->getFieldName(), array( + ->setComponent($instance->getFieldName(), 'field', array( 'type' => 'taxonomy_autocomplete', )) ->save(); diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/TokenReplaceTest.php b/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/TokenReplaceTest.php index be4ed53..0abfa2c 100644 --- a/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/TokenReplaceTest.php +++ b/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/TokenReplaceTest.php @@ -50,12 +50,12 @@ function setUp() { 'entity_type' => 'node', ))->save(); entity_get_form_display('node', 'article', 'default') - ->setComponent($this->field_name, array( + ->setComponent($this->field_name, 'field', array( 'type' => 'options_select', )) ->save(); entity_get_display('node', 'article', 'default') - ->setComponent($this->field_name, array( + ->setComponent($this->field_name, 'field', array( 'type' => 'taxonomy_term_reference_link', )) ->save(); diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/Views/TaxonomyTestBase.php b/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/Views/TaxonomyTestBase.php index b44e6c5..34d201e 100644 --- a/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/Views/TaxonomyTestBase.php +++ b/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/Views/TaxonomyTestBase.php @@ -101,20 +101,20 @@ protected function mockStandardInstall() { ))->save(); entity_get_form_display('node', 'article', 'default') - ->setComponent($this->field_name, array( + ->setComponent($this->field_name, 'field', array( 'type' => 'taxonomy_autocomplete', 'weight' => -4, )) ->save(); entity_get_display('node', 'article', 'default') - ->setComponent($this->field_name, array( + ->setComponent($this->field_name, 'field', array( 'type' => 'taxonomy_term_reference_link', 'weight' => 10, )) ->save(); entity_get_display('node', 'article', 'teaser') - ->setComponent($this->field_name, array( + ->setComponent($this->field_name, 'field', array( 'type' => 'taxonomy_term_reference_link', 'weight' => 10, )) diff --git a/core/modules/telephone/lib/Drupal/telephone/Tests/TelephoneFieldTest.php b/core/modules/telephone/lib/Drupal/telephone/Tests/TelephoneFieldTest.php index 1f5ab23..757e1f7 100644 --- a/core/modules/telephone/lib/Drupal/telephone/Tests/TelephoneFieldTest.php +++ b/core/modules/telephone/lib/Drupal/telephone/Tests/TelephoneFieldTest.php @@ -65,7 +65,7 @@ function testTelephoneField() { ))->save(); entity_get_form_display('node', 'article', 'default') - ->setComponent('field_telephone', array( + ->setComponent('field_telephone', 'field', array( 'type' => 'telephone_default', 'settings' => array( 'placeholder' => '123-456-7890', @@ -74,7 +74,7 @@ function testTelephoneField() { ->save(); entity_get_display('node', 'article', 'default') - ->setComponent('field_telephone', array( + ->setComponent('field_telephone', 'field', array( 'type' => 'telephone_link', 'weight' => 1, )) diff --git a/core/modules/text/lib/Drupal/text/Tests/Formatter/TextPlainUnitTest.php b/core/modules/text/lib/Drupal/text/Tests/Formatter/TextPlainUnitTest.php index 72c0fe9..0a238c0 100644 --- a/core/modules/text/lib/Drupal/text/Tests/Formatter/TextPlainUnitTest.php +++ b/core/modules/text/lib/Drupal/text/Tests/Formatter/TextPlainUnitTest.php @@ -86,7 +86,7 @@ function setUp() { $this->view_mode = 'default'; $this->display = entity_get_display($this->entity_type, $this->bundle, $this->view_mode) - ->setComponent($this->field_name, array( + ->setComponent($this->field_name, 'field', array( 'type' => $this->formatter_type, 'settings' => $this->formatter_settings, )); diff --git a/core/modules/text/lib/Drupal/text/Tests/TextFieldTest.php b/core/modules/text/lib/Drupal/text/Tests/TextFieldTest.php index f209a44..62b3c2c 100644 --- a/core/modules/text/lib/Drupal/text/Tests/TextFieldTest.php +++ b/core/modules/text/lib/Drupal/text/Tests/TextFieldTest.php @@ -107,7 +107,7 @@ function _testTextfieldWidgets($field_type, $widget_type) { ), ))->save(); entity_get_form_display('entity_test', 'entity_test', 'default') - ->setComponent($this->field_name, array( + ->setComponent($this->field_name, 'field', array( 'type' => $widget_type, 'settings' => array( 'placeholder' => 'A placeholder on ' . $widget_type, @@ -174,7 +174,7 @@ function _testTextfieldWidgetsFormatted($field_type, $widget_type) { ), ))->save(); entity_get_form_display('entity_test', 'entity_test', 'default') - ->setComponent($this->field_name, array( + ->setComponent($this->field_name, 'field', array( 'type' => $widget_type, )) ->save(); diff --git a/core/modules/user/lib/Drupal/user/Tests/UserRegistrationTest.php b/core/modules/user/lib/Drupal/user/Tests/UserRegistrationTest.php index d952f8c..3f51f23 100644 --- a/core/modules/user/lib/Drupal/user/Tests/UserRegistrationTest.php +++ b/core/modules/user/lib/Drupal/user/Tests/UserRegistrationTest.php @@ -212,7 +212,7 @@ function testRegistrationWithUserFields() { )); $instance->save(); entity_get_form_display('user', 'user', 'default') - ->setComponent('test_user_field', array('type' => 'test_field_widget')) + ->setComponent('test_user_field', 'field', array('type' => 'test_field_widget')) ->save(); entity_get_form_display('user', 'user', 'register') ->save(); @@ -223,7 +223,7 @@ function testRegistrationWithUserFields() { // Have the field appear on the registration form. entity_get_form_display('user', 'user', 'register') - ->setComponent('test_user_field', array('type' => 'test_field_widget')) + ->setComponent('test_user_field', 'field', array('type' => 'test_field_widget')) ->save(); $this->drupalGet('user/register'); diff --git a/core/modules/user/user.install b/core/modules/user/user.install index 8f6cbe2..a02bd20 100644 --- a/core/modules/user/user.install +++ b/core/modules/user/user.install @@ -659,6 +659,7 @@ function user_update_8011() { // Assign form settings for the 'default' form mode. $form_display = _update_8000_entity_get_form_display('user', 'user', 'default', TRUE); $form_display->set('content.user_picture', array( + 'handler_type' => 'field', 'type' => $widget, 'settings' => array( 'progress_indicator' => 'throbber', @@ -672,6 +673,7 @@ function user_update_8011() { // Assign display settings for the 'default' and 'compact' view modes. $display = _update_8000_entity_get_display('user', 'user', 'default'); $display->set('content.user_picture', array( + 'handler_type' => 'field', 'label' => 'hidden', 'type' => $formatter, 'settings' => array( @@ -685,6 +687,7 @@ function user_update_8011() { $display = _update_8000_entity_get_display('user', 'user', 'compact'); $display->set('content.user_picture', array( + 'handler_type' => 'extra_field', 'label' => 'hidden', 'type' => $formatter, 'settings' => array( diff --git a/core/modules/views/lib/Drupal/views/Tests/Wizard/TaggedWithTest.php b/core/modules/views/lib/Drupal/views/Tests/Wizard/TaggedWithTest.php index 8a04604..6729b8d 100644 --- a/core/modules/views/lib/Drupal/views/Tests/Wizard/TaggedWithTest.php +++ b/core/modules/views/lib/Drupal/views/Tests/Wizard/TaggedWithTest.php @@ -81,19 +81,19 @@ function setUp() { entity_create('field_instance', $this->tag_instance)->save(); entity_get_form_display('node', $this->node_type_with_tags->type, 'default') - ->setComponent('field_views_testing_tags', array( + ->setComponent('field_views_testing_tags', 'field', array( 'type' => 'taxonomy_autocomplete', )) ->save(); - entity_get_display('node', $this->node_type_with_tags->type, 'default') - ->setComponent('field_views_testing_tags', array( + entity_get_display('field', 'node', $this->node_type_with_tags->type, 'default') + ->setComponent('field_views_testing_tags', 'field', array( 'type' => 'taxonomy_term_reference_link', 'weight' => 10, )) ->save(); - entity_get_display('node', $this->node_type_with_tags->type, 'teaser') - ->setComponent('field_views_testing_tags', array( + entity_get_display('field', 'node', $this->node_type_with_tags->type, 'teaser') + ->setComponent('field_views_testing_tags', 'field', array( 'type' => 'taxonomy_term_reference_link', 'weight' => 10, )) @@ -191,7 +191,7 @@ function testTaggedWithByNodeType() { $instance['bundle'] = $this->node_type_without_tags->type; entity_create('field_instance', $instance)->save(); entity_get_form_display('node', $this->node_type_without_tags->type, 'default') - ->setComponent('field_views_testing_tags', array( + ->setComponent('field_views_testing_tags', 'field', array( 'type' => 'taxonomy_autocomplete', )) ->save(); diff --git a/core/profiles/standard/config/entity.display.node.article.default.yml b/core/profiles/standard/config/entity.display.node.article.default.yml index 33d77f0..8492d98 100644 --- a/core/profiles/standard/config/entity.display.node.article.default.yml +++ b/core/profiles/standard/config/entity.display.node.article.default.yml @@ -6,16 +6,19 @@ mode: default status: 1 content: body: + handler_type: field label: hidden type: text_default weight: '0' settings: { } field_tags: + handler_type: field type: taxonomy_term_reference_link weight: '10' label: above settings: { } field_image: + handler_type: field label: hidden type: image settings: diff --git a/core/profiles/standard/config/entity.display.node.article.teaser.yml b/core/profiles/standard/config/entity.display.node.article.teaser.yml index a11caae..3de681b 100644 --- a/core/profiles/standard/config/entity.display.node.article.teaser.yml +++ b/core/profiles/standard/config/entity.display.node.article.teaser.yml @@ -6,17 +6,20 @@ mode: teaser status: 1 content: body: + handler_type: field label: hidden type: text_summary_or_trimmed weight: '0' settings: trim_length: '600' field_tags: + handler_type: field type: taxonomy_term_reference_link weight: '10' label: above settings: { } field_image: + handler_type: field label: hidden type: image settings: diff --git a/core/profiles/standard/config/entity.display.user.user.compact.yml b/core/profiles/standard/config/entity.display.user.user.compact.yml index d83a3dd..971f505 100644 --- a/core/profiles/standard/config/entity.display.user.user.compact.yml +++ b/core/profiles/standard/config/entity.display.user.user.compact.yml @@ -5,6 +5,7 @@ bundle: user mode: compact content: user_picture: + handler_type: field label: hidden type: image settings: diff --git a/core/profiles/standard/config/entity.display.user.user.default.yml b/core/profiles/standard/config/entity.display.user.user.default.yml index b19d602..201c5e4 100644 --- a/core/profiles/standard/config/entity.display.user.user.default.yml +++ b/core/profiles/standard/config/entity.display.user.user.default.yml @@ -5,6 +5,7 @@ bundle: user mode: default content: user_picture: + handler_type: field label: hidden type: image settings: diff --git a/core/profiles/standard/config/entity.form_display.node.article.default.yml b/core/profiles/standard/config/entity.form_display.node.article.default.yml index f3007ac..3cb39f6 100644 --- a/core/profiles/standard/config/entity.form_display.node.article.default.yml +++ b/core/profiles/standard/config/entity.form_display.node.article.default.yml @@ -6,6 +6,7 @@ mode: default status: 1 content: body: + handler_type: field type: text_textarea_with_summary weight: '0' settings: @@ -13,6 +14,7 @@ content: summary_rows: '3' placeholder: '' field_tags: + handler_type: field type: taxonomy_autocomplete weight: '-4' settings: @@ -20,6 +22,7 @@ content: autocomplete_route_name: taxonomy.autocomplete placeholder: '' field_image: + handler_type: field type: image_image settings: progress_indicator: throbber diff --git a/core/profiles/standard/config/entity.form_display.user.user.default.yml b/core/profiles/standard/config/entity.form_display.user.user.default.yml index 0758cf6..07d7c1f 100644 --- a/core/profiles/standard/config/entity.form_display.user.user.default.yml +++ b/core/profiles/standard/config/entity.form_display.user.user.default.yml @@ -5,6 +5,7 @@ bundle: user mode: default content: user_picture: + handler_type: field type: image_image settings: progress_indicator: throbber