diff --git a/core/modules/file/file.install b/core/modules/file/file.install index fa5d9a6..6cfe56d 100644 --- a/core/modules/file/file.install +++ b/core/modules/file/file.install @@ -134,7 +134,7 @@ function file_update_8001() { /** @var EntityViewDisplay $display */ $fields_settings = $display->get('content'); foreach ($fields_settings as $field_name => $settings) { - if ($settings['type'] == 'file_table') { + if (!empty($settings['type']) && $settings['type'] == 'file_table') { $fields_settings[$field_name]['settings']['show_description'] = FALSE; } } diff --git a/core/modules/file/src/Tests/Update/FileUpdateTest.php b/core/modules/file/src/Tests/Update/FileUpdateTest.php new file mode 100644 index 0000000..9643d65 --- /dev/null +++ b/core/modules/file/src/Tests/Update/FileUpdateTest.php @@ -0,0 +1,57 @@ +databaseDumpFiles = [ + __DIR__ . '/../../../../system/tests/fixtures/update/drupal-8.bare.standard.php.gz', + __DIR__ . '/../../../tests/fixtures/update/drupal-8.file_formatters_update_2677990.php', + ]; + } + + /** + * Tests file_update_8001(). + */ + public function testPostUpdate8001() { + $view = 'core.entity_view_display.node.article.default'; + + // Check that field_file_generic formatter has no show_description setting. + $formatter_settings = $this->config($view)->get('content.field_file_generic_2677990.settings'); + $this->assertTrue(!isset($formatter_settings['show_description'])); + + // Check that field_file_table formatter has no show_description setting. + $formatter_settings = $this->config($view)->get('content.field_file_table_2677990.settings'); + $this->assertTrue(!isset($formatter_settings['show_description'])); + + // Run updates. + $this->runUpdates(); + + // Check that field_file_generic formatter still has no show_description + // setting. + $formatter_settings = $this->config($view)->get('content.field_file_generic_2677990.settings'); + $this->assertTrue(!isset($formatter_settings['show_description'])); + + // Check that field_file_table formatter has a show_description setting + // which value is FALSE. + $formatter_settings = $this->config($view)->get('content.field_file_table_2677990.settings'); + $this->assertEqual($formatter_settings, ['show_description' => FALSE]); + } + +} diff --git a/core/modules/file/tests/fixtures/update/core.entity_view_display.node.article.default_2677990.yml b/core/modules/file/tests/fixtures/update/core.entity_view_display.node.article.default_2677990.yml new file mode 100644 index 0000000..fae6ade --- /dev/null +++ b/core/modules/file/tests/fixtures/update/core.entity_view_display.node.article.default_2677990.yml @@ -0,0 +1,71 @@ +uuid: 9ca49b35-b49d-4014-9337-965cdf15b61e +langcode: en +status: true +dependencies: + config: + - field.field.node.article.body + - field.field.node.article.comment + - field.field.node.article.field_file_generic_2677990 + - field.field.node.article.field_file_table_2677990 + - field.field.node.article.field_image + - field.field.node.article.field_tags + - image.style.large + - node.type.article + module: + - comment + - file + - image + - text + - user +_core: + default_config_hash: JtAg_-waIt1quMtdDtHIaXJMxvTuSmxW7bWyO6Zd68E +id: node.article.default +targetEntityType: node +bundle: article +mode: default +content: + body: + type: text_default + weight: 0 + settings: { } + third_party_settings: { } + label: hidden + comment: + label: above + type: comment_default + weight: 20 + settings: + pager_id: 0 + third_party_settings: { } + field_file_generic_2677990: + weight: 101 + label: above + settings: { } + third_party_settings: { } + type: file_default + field_file_table_2677990: + weight: 102 + label: above + settings: { } + third_party_settings: { } + type: file_table + field_image: + type: image + weight: -1 + settings: + image_style: large + image_link: '' + third_party_settings: { } + label: hidden + field_tags: + type: entity_reference_label + weight: 10 + label: above + settings: + link: true + third_party_settings: { } + links: + weight: 100 + settings: { } + third_party_settings: { } +hidden: { } diff --git a/core/modules/file/tests/fixtures/update/drupal-8.file_formatters_update_2677990.php b/core/modules/file/tests/fixtures/update/drupal-8.file_formatters_update_2677990.php new file mode 100644 index 0000000..6423142 --- /dev/null +++ b/core/modules/file/tests/fixtures/update/drupal-8.file_formatters_update_2677990.php @@ -0,0 +1,88 @@ +insert('config') + ->fields([ + 'collection', + 'name', + 'data', + ]) + ->values([ + 'collection' => '', + 'name' => 'field.storage.' . $field_file_generic_2677990['id'], + 'data' => serialize($field_file_generic_2677990), + ]) + ->values([ + 'collection' => '', + 'name' => 'field.storage.' . $field_file_table_2677990['id'], + 'data' => serialize($field_file_table_2677990), + ]) + ->execute(); +// We need to Update the registry of "last installed" field definitions. +$installed = $connection->select('key_value') + ->fields('key_value', ['value']) + ->condition('collection', 'entity.definitions.installed') + ->condition('name', 'node.field_storage_definitions') + ->execute() + ->fetchField(); +$installed = unserialize($installed); +$installed['field_file_generic_2677990'] = new FieldStorageConfig($field_file_generic_2677990); +$installed['field_file_table_2677990'] = new FieldStorageConfig($field_file_table_2677990); +$connection->update('key_value') + ->condition('collection', 'entity.definitions.installed') + ->condition('name', 'node.field_storage_definitions') + ->fields([ + 'value' => serialize($installed) + ]) + ->execute(); + +// Configuration for a file field storage for generic display. +$field_file_generic_2677990 = Yaml::decode(file_get_contents(__DIR__ . '/field.field.node.article.field_file_generic_2677990.yml')); + +// Configuration for a file field storage for table display. +$field_file_table_2677990 = Yaml::decode(file_get_contents(__DIR__ . '/field.field.node.article.field_file_table_2677990.yml')); + +$connection->insert('config') + ->fields([ + 'collection', + 'name', + 'data', + ]) + ->values([ + 'collection' => '', + 'name' => 'field.field.' . $field_file_generic_2677990['id'], + 'data' => serialize($field_file_generic_2677990), + ]) + ->values([ + 'collection' => '', + 'name' => 'field.field.' . $field_file_table_2677990['id'], + 'data' => serialize($field_file_table_2677990), + ]) + ->execute(); + +// Configuration of the view mode to set the proper formatters. +$view_mode_2677990 = Yaml::decode(file_get_contents(__DIR__ . '/core.entity_view_display.node.article.default_2677990.yml')); + +$connection->update('config') + ->fields([ + 'data' => serialize($view_mode_2677990), + ]) + ->condition('name', 'core.entity_view_display.' . $view_mode_2677990['id']) + ->execute(); diff --git a/core/modules/file/tests/fixtures/update/field.field.node.article.field_file_generic_2677990.yml b/core/modules/file/tests/fixtures/update/field.field.node.article.field_file_generic_2677990.yml new file mode 100644 index 0000000..140a9f3 --- /dev/null +++ b/core/modules/file/tests/fixtures/update/field.field.node.article.field_file_generic_2677990.yml @@ -0,0 +1,27 @@ +uuid: d352a831-c267-4ecc-9b4e-7ae1896b2241 +langcode: en +status: true +dependencies: + config: + - field.storage.node.field_file_generic_2677990 + - node.type.article + module: + - file +id: node.article.field_file_generic_2677990 +field_name: field_file_generic_2677990 +entity_type: node +bundle: article +label: 'File generic' +description: '' +required: false +translatable: false +default_value: { } +default_value_callback: '' +settings: + file_directory: '[date:custom:Y]-[date:custom:m]' + file_extensions: txt + max_filesize: '' + description_field: true + handler: 'default:file' + handler_settings: { } +field_type: file diff --git a/core/modules/file/tests/fixtures/update/field.field.node.article.field_file_table_2677990.yml b/core/modules/file/tests/fixtures/update/field.field.node.article.field_file_table_2677990.yml new file mode 100644 index 0000000..ba40a9f --- /dev/null +++ b/core/modules/file/tests/fixtures/update/field.field.node.article.field_file_table_2677990.yml @@ -0,0 +1,27 @@ +uuid: 44c7a590-ffcc-4534-b01c-b17b8d57ed48 +langcode: en +status: true +dependencies: + config: + - field.storage.node.field_file_table_2677990 + - node.type.article + module: + - file +id: node.article.field_file_table_2677990 +field_name: field_file_table_2677990 +entity_type: node +bundle: article +label: 'File table' +description: '' +required: false +translatable: false +default_value: { } +default_value_callback: '' +settings: + file_directory: '[date:custom:Y]-[date:custom:m]' + file_extensions: txt + max_filesize: '' + description_field: true + handler: 'default:file' + handler_settings: { } +field_type: file diff --git a/core/modules/file/tests/fixtures/update/field.storage.node.field_file_generic_2677990.yml b/core/modules/file/tests/fixtures/update/field.storage.node.field_file_generic_2677990.yml new file mode 100644 index 0000000..2c4a297 --- /dev/null +++ b/core/modules/file/tests/fixtures/update/field.storage.node.field_file_generic_2677990.yml @@ -0,0 +1,23 @@ +uuid: a7eb470d-e538-4221-a8ac-57f989d92d8e +langcode: en +status: true +dependencies: + module: + - file + - node +id: node.field_file_generic_2677990 +field_name: field_file_generic_2677990 +entity_type: node +type: file +settings: + display_field: false + display_default: false + uri_scheme: public + target_type: file +module: file +locked: false +cardinality: 1 +translatable: true +indexes: { } +persist_with_no_fields: false +custom_storage: false diff --git a/core/modules/file/tests/fixtures/update/field.storage.node.field_file_table_2677990.yml b/core/modules/file/tests/fixtures/update/field.storage.node.field_file_table_2677990.yml new file mode 100644 index 0000000..bf93af8 --- /dev/null +++ b/core/modules/file/tests/fixtures/update/field.storage.node.field_file_table_2677990.yml @@ -0,0 +1,23 @@ +uuid: 43113a5e-3e07-4234-b045-4aa4cd217dca +langcode: en +status: true +dependencies: + module: + - file + - node +id: node.field_file_table_2677990 +field_name: field_file_table_2677990 +entity_type: node +type: file +settings: + display_field: false + display_default: false + uri_scheme: public + target_type: file +module: file +locked: false +cardinality: 1 +translatable: true +indexes: { } +persist_with_no_fields: false +custom_storage: false