diff --git a/core/modules/entity/lib/Drupal/entity/EntityDisplayBase.php b/core/modules/entity/lib/Drupal/entity/EntityDisplayBase.php index d337457..88d25a6 100644 --- a/core/modules/entity/lib/Drupal/entity/EntityDisplayBase.php +++ b/core/modules/entity/lib/Drupal/entity/EntityDisplayBase.php @@ -250,7 +250,7 @@ public function setComponent($name, array $options = array()) { $field = field_info_field($instance['field_name']); $options = $this->pluginManager->prepareConfiguration($field['type'], $options); - // Clear the persisted formatter, if any. + // Clear the persisted plugin, if any. unset($this->plugins[$name]); } @@ -315,4 +315,5 @@ public function getHighestWeight() { return $weights ? max($weights) : NULL; } + } diff --git a/core/modules/entity/lib/Drupal/entity/Plugin/Core/Entity/EntityDisplay.php b/core/modules/entity/lib/Drupal/entity/Plugin/Core/Entity/EntityDisplay.php index 4ac601e..ad04bc6 100644 --- a/core/modules/entity/lib/Drupal/entity/Plugin/Core/Entity/EntityDisplay.php +++ b/core/modules/entity/lib/Drupal/entity/Plugin/Core/Entity/EntityDisplay.php @@ -73,4 +73,5 @@ public function getFormatter($field_name) { $this->plugins[$field_name] = $formatter; return $formatter; } + } diff --git a/core/modules/entity/lib/Drupal/entity/Plugin/Core/Entity/EntityFormDisplay.php b/core/modules/entity/lib/Drupal/entity/Plugin/Core/Entity/EntityFormDisplay.php index 96964ed..22dbfd4 100644 --- a/core/modules/entity/lib/Drupal/entity/Plugin/Core/Entity/EntityFormDisplay.php +++ b/core/modules/entity/lib/Drupal/entity/Plugin/Core/Entity/EntityFormDisplay.php @@ -82,4 +82,5 @@ public function getWidget($field_name) { $this->plugins[$field_name] = $widget; return $widget; } + } diff --git a/core/modules/field/field.info.inc b/core/modules/field/field.info.inc index dce5e72..1ca441d 100644 --- a/core/modules/field/field.info.inc +++ b/core/modules/field/field.info.inc @@ -59,8 +59,6 @@ function field_info_cache_clear() { // functions are moved to the entity API. entity_info_cache_clear(); - entity_get_controller('entity_form_display')->resetCache(); - _field_info_collate_types_reset(); _field_info_field_cache()->flush(); } diff --git a/core/modules/field/field.install b/core/modules/field/field.install index f8358a1..4cde970 100644 --- a/core/modules/field/field.install +++ b/core/modules/field/field.install @@ -326,6 +326,7 @@ function field_update_8002() { $variables = array_map('unserialize', db_query("SELECT name, value FROM {variable} WHERE name LIKE '%field_bundle_settings_%'")->fetchAllKeyed()); foreach ($variables as $variable_name => $variable_value) { if (preg_match('/field_bundle_settings_(.*)__(.*)/', $variable_name, $matches)) { + $variable_needs_update = FALSE; $entity_type = $matches[1]; $bundle = $matches[2]; @@ -335,10 +336,14 @@ function field_update_8002() { // array if it does not exist yet. $form_display_id = $record->entity_type . '.' . $record->bundle . '.default'; if (!isset($form_displays[$form_display_id])) { - $form_displays[$form_display_id] = _update_8000_entity_get_display($record->entity_type, $record->bundle, 'default'); + $form_displays[$form_display_id] = _update_8000_entity_get_form_display($record->entity_type, $record->bundle, 'default'); } $form_displays[$form_display_id]->set("content.$field_name", $variable_value['extra_fields']['form']); } + + // Remove the old entry. + unset($variable_value['extra_fields']['form']); + $variable_needs_update = TRUE; } if (isset($variable_value['extra_fields']['display'])) { @@ -359,12 +364,16 @@ function field_update_8002() { $new_options['weight'] = $display_options['weight']; } $displays[$display_id]->set("content.$field_name", $new_options); - - // Remove the old entry. - unset($variable_value['extra_fields']['display']); - variable_set($variable_name, $variable_value); } } + + // Remove the old entry. + unset($variable_value['extra_fields']['display']); + $variable_needs_update = TRUE; + } + + if ($variable_needs_update) { + variable_set($variable_name, $variable_value); } } } diff --git a/core/modules/field/lib/Drupal/field/FieldInfo.php b/core/modules/field/lib/Drupal/field/FieldInfo.php index f9501d0..9b79960 100644 --- a/core/modules/field/lib/Drupal/field/FieldInfo.php +++ b/core/modules/field/lib/Drupal/field/FieldInfo.php @@ -519,7 +519,7 @@ public function prepareInstance($instance, $field_type) { $instance['settings'] += field_info_instance_settings($field_type); // Set a default value for the instance. - if (!isset($instance['default_value']) && field_behaviors_widget('default_value', $instance) == FIELD_BEHAVIOR_DEFAULT) { + if (field_behaviors_widget('default value', $instance) == FIELD_BEHAVIOR_DEFAULT && !isset($instance['default_value'])) { $instance['default_value'] = NULL; } diff --git a/core/modules/field_ui/field_ui.admin.inc b/core/modules/field_ui/field_ui.admin.inc index 663de33..069fd91 100644 --- a/core/modules/field_ui/field_ui.admin.inc +++ b/core/modules/field_ui/field_ui.admin.inc @@ -70,14 +70,11 @@ function field_ui_inactive_message($entity_type, $bundle) { $widget_types = field_info_widget_types(); foreach ($inactive_instances as $field_name => $instance) { - $entity_form_display = entity_get_form_display($instance['entity_type'], $instance['bundle'], 'default'); - $widget = $entity_form_display->getComponent($instance['field_name']); - $widget_definition = $entity_form_display->getWidget($instance['field_name'])->getDefinition(); $list[] = t('%field (@field_name) field requires the %widget_type widget provided by %widget_module module', array( '%field' => $instance['label'], '@field_name' => $instance['field_name'], - '%widget_type' => isset($widget_types[$widget['type']]) ? $widget_types[$widget['type']]['label'] : $widget['type'], - '%widget_module' => $widget_definition['module'], + '%widget_type' => isset($widget_types[$instance['widget']['type']]) ? $widget_types[$instance['widget']['type']]['label'] : $instance['widget']['type'], + '%widget_module' => $instance['widget']['module'], )); } drupal_set_message(t('Inactive fields are not shown unless their providing modules are enabled. The following fields are not enabled: !list', array('!list' => theme('item_list', array('items' => $list)))), 'error');