diff --git a/core/includes/entity.inc b/core/includes/entity.inc index c2f0217..9ada79d 100644 --- a/core/includes/entity.inc +++ b/core/includes/entity.inc @@ -835,8 +835,8 @@ function entity_get_render_form_display(EntityInterface $entity, $form_mode) { $entity->entityType() . '.' . $entity->bundle() . '.default', $entity->entityType() . '.' . $entity->bundle() . '.' . $form_mode, ); - $entity_displays = entity_load_multiple('entity_display', $load); - if (isset($entity_displays[$entity->entityType() . '.' . $entity->bundle() . '.' . $form_mode]) && $entity_displays[$entity->entityType() . '.' . $entity->bundle() . '.' . $form_mode]->status) { + $entity_form_displays = entity_load_multiple('entity_form_display', $load); + if (isset($entity_form_displays[$entity->entityType() . '.' . $entity->bundle() . '.' . $form_mode]) && $entity_form_displays[$entity->entityType() . '.' . $entity->bundle() . '.' . $form_mode]->status) { $render_form_mode = $form_mode; } diff --git a/core/modules/field/field.install b/core/modules/field/field.install index d0e14ed..cad3d32 100644 --- a/core/modules/field/field.install +++ b/core/modules/field/field.install @@ -238,9 +238,9 @@ function field_update_8002() { ->execute(); } - // Migration of 'extra_fields' and 'custom_settings' settings. Avoid calling - // entity_get_info() by fetching the relevant variables directly in the - // variable table. + // Migration of 'extra_fields' and view mode 'custom_settings' settings. + // Avoid calling entity_get_info() by fetching the relevant variables + // directly in the variable table. $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)) { @@ -259,14 +259,12 @@ function field_update_8002() { } } - // Determine name for the $displays array. - $display_id = $entity_type . '.' . $bundle . '.' . $view_mode; - if (isset($variable_value['extra_fields']['display'])) { foreach ($variable_value['extra_fields']['display'] as $field_name => $field_settings) { foreach ($field_settings as $view_mode => $display_options) { - // Create initial entry in $displays array if it doesn't exist yet. - if (!isset($displays[$display_id])) { + // Determine name and create initial entry in the $displays array + // if it does not exist yet. + $display_id = $entity_type . '.' . $bundle . '.' . $view_mode; if (!isset($displays[$display_id])) { $displays[$display_id] = _update_8000_entity_get_display($entity_type, $bundle, $view_mode); } @@ -282,11 +280,16 @@ function field_update_8002() { } } - // Create initial entry in $displays array if it doesn't exist yet. - if (!isset($displays[$display_id])) { - $displays[$display_id] = _update_8000_entity_get_display($entity_type, $bundle, $view_mode); + if (isset($variable_value['view_modes'])) { + foreach ($variable_value['view_modes'] as $view_mode => $view_mode_settings) { + // Determine name and create initial entry in the $displays array + // if it does not exist yet. + if (!isset($displays[$display_id])) { + $displays[$display_id] = _update_8000_entity_get_display($entity_type, $bundle, $view_mode); + } + $displays[$display_id]->set('status', $view_mode_settings['custom_settings']); + } } - $displays[$display_id]->set('status', $variable_value['custom_settings']); // Remove the variable. update_variable_del($variable_name); diff --git a/core/modules/system/tests/upgrade/drupal-7.field.database.php b/core/modules/system/tests/upgrade/drupal-7.field.database.php index cb96034..420dc0b 100644 --- a/core/modules/system/tests/upgrade/drupal-7.field.database.php +++ b/core/modules/system/tests/upgrade/drupal-7.field.database.php @@ -12,19 +12,19 @@ $value = array( 'view_modes' => array( 'teaser' => array( - 'status' => 1, + 'custom_settings' => 1, ), 'full' => array( - 'status' => 0, + 'custom_settings' => 0, ), 'rss' => array( - 'status' => 0, + 'custom_settings' => 0, ), 'search_index' => array( - 'status' => 0, + 'custom_settings' => 0, ), 'search_result' => array( - 'status' => 0, + 'custom_settings' => 0, ), ), 'extra_fields' => array( 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 330de2d..78c65cb 100644 --- a/core/profiles/standard/config/entity.display.node.article.default.yml +++ b/core/profiles/standard/config/entity.display.node.article.default.yml @@ -2,6 +2,7 @@ id: node.article.default targetEntityType: node bundle: article mode: default +status: 1 content: body: label: hidden 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 44add7e..4c61317 100644 --- a/core/profiles/standard/config/entity.display.node.article.teaser.yml +++ b/core/profiles/standard/config/entity.display.node.article.teaser.yml @@ -2,6 +2,7 @@ id: node.article.teaser targetEntityType: node bundle: article mode: teaser +status: 1 content: body: label: hidden 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 cfc95e0..5fc62fa 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 @@ -2,6 +2,7 @@ id: node.article.default targetEntityType: node bundle: article mode: default +status: 1 content: body: type: text_textarea_with_summary