diff --git a/core/misc/icons/333333/grid.svg b/core/misc/icons/333333/grid.svg new file mode 100644 index 0000000000..502bf1c142 --- /dev/null +++ b/core/misc/icons/333333/grid.svg @@ -0,0 +1 @@ + diff --git a/core/misc/icons/333333/table.svg b/core/misc/icons/333333/table.svg new file mode 100644 index 0000000000..98ada644c6 --- /dev/null +++ b/core/misc/icons/333333/table.svg @@ -0,0 +1 @@ + diff --git a/core/modules/media_library/config/install/views.view.media_library.yml b/core/modules/media_library/config/install/views.view.media_library.yml index 1079e8644f..8c501199b6 100644 --- a/core/modules/media_library/config/install/views.view.media_library.yml +++ b/core/modules/media_library/config/install/views.view.media_library.yml @@ -421,7 +421,7 @@ display: widget: display_plugin: page id: widget - display_title: 'Widget (grid)' + display_title: Widget position: 2 display_options: display_extenders: { } @@ -611,8 +611,8 @@ display: identifier: '' optional: true widget: select - multiple: true - remember: true + multiple: false + remember: false default_group: All default_group_multiple: { } group_items: { } @@ -658,7 +658,7 @@ display: validate_options: { } glossary: false limit: 0 - cas: none + case: none path_case: none transform_dash: false break_phrase: false @@ -670,24 +670,18 @@ display: id: display_link_grid table: views field: display_link - relationship: none - group_type: group - admin_label: '' - empty: true display_id: widget label: 'Show as grid' plugin_id: display_link + empty: true display_link_table: id: display_link_table table: views field: display_link - relationship: none - group_type: group - admin_label: '' - empty: true display_id: widget_table label: 'Show as table' plugin_id: display_link + empty: true cache_metadata: max-age: -1 contexts: @@ -705,330 +699,84 @@ display: display_options: display_extenders: { } path: admin/content/media-widget-table + style: + type: table + options: + row_class: 'media-library-item js-media-library-item js-click-to-select' + default_row_class: true + defaults: + style: false + row: false + fields: false + access: false + filters: false + filter_groups: false + arguments: false + header: false + row: + type: fields fields: media_library_select_form: id: media_library_select_form + label: '' table: media field: media_library_select_form relationship: none - group_type: group - admin_label: '' - label: '' - exclude: false - alter: - alter_text: false - text: '' - make_link: false - path: '' - absolute: false - external: false - replace_spaces: false - path_case: none - trim_whitespace: false - alt: '' - rel: '' - link_class: '' - prefix: '' - suffix: '' - target: '' - nl2br: false - max_length: 0 - word_boundary: true - ellipsis: true - more_link: false - more_link_text: '' - more_link_path: '' - strip_tags: false - trim: false - preserve_tags: '' - html: false - element_type: '' - element_class: '' - element_label_type: '' - element_label_class: '' - element_label_colon: false - element_wrapper_type: '' - element_wrapper_class: js-click-to-select-checkbox - element_default_classes: true - empty: '' - hide_empty: false - empty_zero: false - hide_alter_empty: true entity_type: media plugin_id: media_library_select_form + element_wrapper_class: js-click-to-select-checkbox + element_class: '' thumbnail__target_id: id: thumbnail__target_id + label: Thumbnail table: media_field_data field: thumbnail__target_id relationship: none - group_type: group - admin_label: '' - label: Thumbnail - exclude: false - alter: - alter_text: false - text: '' - make_link: false - path: '' - absolute: false - external: false - replace_spaces: false - path_case: none - trim_whitespace: false - alt: '' - rel: '' - link_class: '' - prefix: '' - suffix: '' - target: '' - nl2br: false - max_length: 0 - word_boundary: true - ellipsis: true - more_link: false - more_link_text: '' - more_link_path: '' - strip_tags: false - trim: false - preserve_tags: '' - html: false - element_type: '' - element_class: '' - element_label_type: '' - element_label_class: '' - element_label_colon: true - element_wrapper_type: '' - element_wrapper_class: '' - element_default_classes: true - empty: '' - hide_empty: false - empty_zero: false - hide_alter_empty: true - click_sort_column: target_id type: image - settings: - image_style: thumbnail - image_link: '' - group_column: '' - group_columns: { } - group_rows: true - delta_limit: 0 - delta_offset: 0 - delta_reversed: false - delta_first_last: false - multi_type: separator - separator: ', ' - field_api_classes: false entity_type: media entity_field: thumbnail plugin_id: field + settings: + image_style: thumbnail + image_link: '' name: id: name + label: Name table: media_field_data field: name relationship: none - group_type: group - admin_label: '' - label: Name - exclude: false - alter: - alter_text: false - text: '' - make_link: false - path: '' - absolute: false - external: false - replace_spaces: false - path_case: none - trim_whitespace: false - alt: '' - rel: '' - link_class: '' - prefix: '' - suffix: '' - target: '' - nl2br: false - max_length: 0 - word_boundary: true - ellipsis: true - more_link: false - more_link_text: '' - more_link_path: '' - strip_tags: false - trim: false - preserve_tags: '' - html: false - element_type: '' - element_class: '' - element_label_type: '' - element_label_class: '' - element_label_colon: true - element_wrapper_type: '' - element_wrapper_class: '' - element_default_classes: true - empty: '' - hide_empty: false - empty_zero: false - hide_alter_empty: true - click_sort_column: value type: string - settings: - link_to_entity: false - group_column: value - group_columns: { } - group_rows: true - delta_limit: 0 - delta_offset: 0 - delta_reversed: false - delta_first_last: false - multi_type: separator - separator: ', ' - field_api_classes: false entity_type: media entity_field: name plugin_id: field + settings: + link_to_entity: false uid: id: uid + label: Author table: media_field_revision field: uid relationship: none - group_type: group - admin_label: '' - label: Author - exclude: false - alter: - alter_text: false - text: '' - make_link: false - path: '' - absolute: false - external: false - replace_spaces: false - path_case: none - trim_whitespace: false - alt: '' - rel: '' - link_class: '' - prefix: '' - suffix: '' - target: '' - nl2br: false - max_length: 0 - word_boundary: true - ellipsis: true - more_link: false - more_link_text: '' - more_link_path: '' - strip_tags: false - trim: false - preserve_tags: '' - html: false - element_type: '' - element_class: '' - element_label_type: '' - element_label_class: '' - element_label_colon: true - element_wrapper_type: '' - element_wrapper_class: '' - element_default_classes: true - empty: '' - hide_empty: false - empty_zero: false - hide_alter_empty: true - click_sort_column: target_id type: entity_reference_label - settings: - link: true - group_column: target_id - group_columns: { } - group_rows: true - delta_limit: 0 - delta_offset: 0 - delta_reversed: false - delta_first_last: false - multi_type: separator - separator: ', ' - field_api_classes: false entity_type: media entity_field: uid plugin_id: field + settings: + link: true changed: id: changed + label: Updated table: media_field_data field: changed relationship: none - group_type: group - admin_label: '' - label: Updated - exclude: false - alter: - alter_text: false - text: '' - make_link: false - path: '' - absolute: false - external: false - replace_spaces: false - path_case: none - trim_whitespace: false - alt: '' - rel: '' - link_class: '' - prefix: '' - suffix: '' - target: '' - nl2br: false - max_length: 0 - word_boundary: true - ellipsis: true - more_link: false - more_link_text: '' - more_link_path: '' - strip_tags: false - trim: false - preserve_tags: '' - html: false - element_type: '' - element_class: '' - element_label_type: '' - element_label_class: '' - element_label_colon: true - element_wrapper_type: '' - element_wrapper_class: '' - element_default_classes: true - empty: '' - hide_empty: false - empty_zero: false - hide_alter_empty: true - click_sort_column: value type: timestamp + entity_type: media + entity_field: changed + plugin_id: field settings: date_format: short custom_date_format: '' timezone: '' - group_column: value - group_columns: { } - group_rows: true - delta_limit: 0 - delta_offset: 0 - delta_reversed: false - delta_first_last: false - multi_type: separator - separator: ', ' - field_api_classes: false - entity_type: media - entity_field: changed - plugin_id: field - defaults: - fields: false - access: false - filters: false - filter_groups: false - arguments: false - style: false - row: false - header: false - display_description: '' access: type: perm options: @@ -1064,8 +812,8 @@ display: identifier: '' optional: true widget: select - multiple: true - remember: true + multiple: false + remember: false default_group: All default_group_multiple: { } group_items: { } @@ -1104,8 +852,8 @@ display: identifier: '' optional: true widget: select - multiple: true - remember: true + multiple: false + remember: false default_group: All default_group_multiple: { } group_items: { } @@ -1158,65 +906,23 @@ display: entity_type: media entity_field: bundle plugin_id: string - style: - type: table - options: - grouping: { } - row_class: 'media-library-item js-media-library-item js-click-to-select' - default_row_class: true - override: true - sticky: false - caption: '' - summary: '' - description: '' - columns: - rendered_entity: rendered_entity - media_library_select_form: media_library_select_form - info: - rendered_entity: - sortable: false - default_sort_order: asc - align: '' - separator: '' - empty_column: false - responsive: '' - media_library_select_form: - align: '' - separator: '' - empty_column: false - responsive: '' - default: '-1' - empty_table: false - row: - type: fields - options: - default_field_elements: true - inline: { } - separator: '' - hide_empty: false header: display_link_grid: id: display_link_grid table: views field: display_link - relationship: none - group_type: group - admin_label: '' - empty: true display_id: widget label: 'Show as grid' plugin_id: display_link + empty: true display_link_table: id: display_link_table table: views field: display_link - relationship: none - group_type: group - admin_label: '' - empty: true display_id: widget_table label: 'Show as table' plugin_id: display_link + empty: true cache_metadata: max-age: -1 contexts: diff --git a/core/modules/media_library/css/media_library.theme.css b/core/modules/media_library/css/media_library.theme.css index 61be1a7507..67b17ab5b6 100644 --- a/core/modules/media_library/css/media_library.theme.css +++ b/core/modules/media_library/css/media_library.theme.css @@ -87,8 +87,33 @@ margin-right: 8px; } -#drupal-modal .view-header { +.media-library-view.view-display-id-widget .view-header, +.media-library-view.view-display-id-widget_table .view-header { margin: 16px 0; + text-align: right; +} + +.media-library-view.view-display-id-widget .view-header .button--primary, +.media-library-view.view-display-id-widget_table .view-header .button--primary { + float: left; +} + +.media-library-view.view-display-id-widget .views-display-link, +.media-library-view.view-display-id-widget_table .views-display-link { + line-height: 16px; + padding-left: 20px; + color: #333; +} + +.media-library-view.view-display-id-widget .views-display-link-widget, +.media-library-view.view-display-id-widget_table .views-display-link-widget { + background: url(../../../misc/icons/333333/grid.svg) 0 0 no-repeat; + margin-right: 10px; +} + +.media-library-view.view-display-id-widget .views-display-link-widget_table, +.media-library-view.view-display-id-widget_table .views-display-link-widget_table{ + background: url(../../../misc/icons/333333/table.svg) 0 0 no-repeat; } .media-library-item { diff --git a/core/modules/media_library/js/media_library.ui.es6.js b/core/modules/media_library/js/media_library.ui.es6.js index c6776f719e..5ed4469057 100644 --- a/core/modules/media_library/js/media_library.ui.es6.js +++ b/core/modules/media_library/js/media_library.ui.es6.js @@ -139,7 +139,7 @@ */ Drupal.behaviors.MediaLibraryViewsDisplay = { attach(context) { - $('.js-media-library-view .views-display-link', context) + $('.js-media-library-view-display-link', context) .once('media-library-views-display-link') .on('click', e => { e.preventDefault(); diff --git a/core/modules/media_library/js/media_library.ui.js b/core/modules/media_library/js/media_library.ui.js index a8ffd0b070..780fe3b788 100644 --- a/core/modules/media_library/js/media_library.ui.js +++ b/core/modules/media_library/js/media_library.ui.js @@ -71,7 +71,7 @@ Drupal.behaviors.MediaLibraryViewsDisplay = { attach: function attach(context) { - $('.js-media-library-view .views-display-link', context).once('media-library-views-display-link').on('click', function (e) { + $('.js-media-library-view-display-link', context).once('media-library-views-display-link').on('click', function (e) { e.preventDefault(); e.stopPropagation(); diff --git a/core/modules/media_library/media_library.module b/core/modules/media_library/media_library.module index ae4d9add5c..41d276b2c5 100644 --- a/core/modules/media_library/media_library.module +++ b/core/modules/media_library/media_library.module @@ -53,7 +53,26 @@ function media_library_theme() { } /** - * Implements hook_preprocess_view(). + * Implements hook_preprocess_container(). + */ +function media_library_preprocess_container(&$variables) { + if (isset($variables['element']['#view_id']) && $variables['element']['#view_id'] === 'media_library' && in_array($variables['element']['#display_id'], ['widget', 'widget_table'])) { + $variables['attributes']['id'] = 'media-library-view'; + } +} + +/** + * Implements hook_link_alter(). + */ +function media_library_link_alter(&$variables) { + $is_view_display_link = isset($variables['options']['view'], $variables['options']['target_display_id']); + if ($is_view_display_link && $variables['options']['view']->id() === 'media_library' && in_array($variables['options']['view']->current_display, ['widget', 'widget_table'])) { + $variables['options']['attributes']['class'][] = 'js-media-library-view-display-link'; + } +} + +/** + * Implements hook_preprocess_views_view(). * * Adds a link to add media above the view. */ @@ -80,9 +99,6 @@ function media_library_preprocess_views_view(&$variables) { ], ]; } - // Add ID to the views container to allow the content to be updated via - // AJAX. - $variables['attributes']['id'] = 'media-library-view'; } } @@ -92,7 +108,7 @@ function media_library_preprocess_views_view(&$variables) { function media_library_views_post_render(ViewExecutable $view, &$output, CachePluginBase $cache) { if ($view->id() === 'media_library') { $output['#attached']['library'][] = 'media_library/view'; - if ($view->current_display === 'widget') { + if (in_array($view->current_display, ['widget', 'widget_table'])) { $query = MediaLibraryState::fromRequest(\Drupal::request())->all(); // If the current query contains any parameters we use to contextually // filter the view, ensure they persist across AJAX rebuilds. diff --git a/core/modules/media_library/media_library.post_update.php b/core/modules/media_library/media_library.post_update.php index 48f2820abb..cbf64c6986 100644 --- a/core/modules/media_library/media_library.post_update.php +++ b/core/modules/media_library/media_library.post_update.php @@ -6,6 +6,7 @@ */ use Drupal\media\Entity\MediaType; +use Drupal\views\Views; /** * Create and configure Media Library form and view displays for media types. @@ -28,3 +29,133 @@ function media_library_post_update_display_modes() { ]); } } + +/** + * Add a table display to the media library view and link grid/table displays. + */ +function media_library_post_update_table_display() { + $view = Views::getView('media_library'); + + $view->setDisplay('widget'); + $grid_display = $view->getDisplay('widget'); + + $table_display = $view->newDisplay('page', 'Widget (table)', 'widget_table'); + $table_display->setOption('path', 'admin/content/media-widget-table'); + + // Set table as the display style. + $table_display->overrideOption('style', [ + 'type' => 'table', + 'options' => [ + 'row_class' => 'media-library-item js-media-library-item js-click-to-select', + 'default_row_class' => TRUE, + ], + ]); + + // Set fields for table display. + $table_display->overrideOption('row', [ + 'type' => 'fields', + ]); + $table_display->overrideOption('fields', [ + 'media_library_select_form' => [ + 'id' => 'media_library_select_form', + 'label' => '', + 'table' => 'media', + 'field' => 'media_library_select_form', + 'relationship' => 'none', + 'entity_type' => 'media', + 'plugin_id' => 'media_library_select_form', + 'element_wrapper_class' => 'js-click-to-select-checkbox', + 'element_class' => '', + ], + 'thumbnail__target_id' => [ + 'id' => 'thumbnail__target_id', + 'label' => 'Thumbnail', + 'table' => 'media_field_data', + 'field' => 'thumbnail__target_id', + 'relationship' => 'none', + 'type' => 'image', + 'entity_type' => 'media', + 'entity_field' => 'thumbnail', + 'plugin_id' => 'field', + 'settings' => [ + 'image_style' => 'thumbnail', + 'image_link' => '', + ], + ], + 'name' => [ + 'id' => 'name', + 'label' => 'Name', + 'table' => 'media_field_data', + 'field' => 'name', + 'relationship' => 'none', + 'type' => 'string', + 'entity_type' => 'media', + 'entity_field' => 'name', + 'plugin_id' => 'field', + 'settings' => [ + 'link_to_entity' => FALSE, + ], + ], + 'uid' => [ + 'id' => 'uid', + 'label' => 'Author', + 'table' => 'media_field_revision', + 'field' => 'uid', + 'relationship' => 'none', + 'type' => 'entity_reference_label', + 'entity_type' => 'media', + 'entity_field' => 'uid', + 'plugin_id' => 'field', + 'settings' => [ + 'link' => TRUE, + ], + ], + 'changed' => [ + 'id' => 'changed', + 'label' => 'Updated', + 'table' => 'media_field_data', + 'field' => 'changed', + 'relationship' => 'none', + 'type' => 'timestamp', + 'entity_type' => 'media', + 'entity_field' => 'changed', + 'plugin_id' => 'field', + 'settings' => [ + 'date_format' => 'short', + 'custom_date_format' => '', + 'timezone' => '', + ], + ], + ]); + + // Override the table display options in the same way as the grid display. + $table_display->overrideOption('access', $grid_display->getOption('access')); + $table_display->overrideOption('filters', $grid_display->getOption('filters')); + $table_display->overrideOption('arguments', $grid_display->getOption('arguments')); + + // Add display links to both widget and widget table displays. + $display_links = [ + 'display_link_grid' => [ + 'id' => 'display_link_grid', + 'table' => 'views', + 'field' => 'display_link', + 'display_id' => 'widget', + 'label' => 'Show as grid', + 'plugin_id' => 'display_link', + 'empty' => TRUE, + ], + 'display_link_table' => [ + 'id' => 'display_link_table', + 'table' => 'views', + 'field' => 'display_link', + 'display_id' => 'widget_table', + 'label' => 'Show as table', + 'plugin_id' => 'display_link', + 'empty' => TRUE, + ], + ]; + $grid_display->overrideOption('header', $display_links); + $table_display->overrideOption('header', $display_links); + + $view->save(); +} diff --git a/core/modules/media_library/tests/fixtures/update/drupal-8.media_library-update-view-table-display-2981044.php b/core/modules/media_library/tests/fixtures/update/drupal-8.media_library-update-view-table-display-2981044.php new file mode 100644 index 0000000000..c115449755 --- /dev/null +++ b/core/modules/media_library/tests/fixtures/update/drupal-8.media_library-update-view-table-display-2981044.php @@ -0,0 +1,111 @@ +merge('key_value') + ->fields([ + 'value' => 'i:8000;', + 'name' => 'media_library', + 'collection' => 'system.schema', + ]) + ->condition('collection', 'system.schema') + ->condition('name', 'media_library') + ->execute(); + +// Update core.extension. +$extensions = $connection->select('config') + ->fields('config', ['data']) + ->condition('collection', '') + ->condition('name', 'core.extension') + ->execute() + ->fetchField(); +$extensions = unserialize($extensions); +$extensions['module']['media_library'] = 0; +$connection->update('config') + ->fields([ + 'data' => serialize($extensions), + 'collection' => '', + 'name' => 'core.extension', + ]) + ->condition('collection', '') + ->condition('name', 'core.extension') + ->execute(); + +// Insert media library config objects. +$connection->insert('config') +->fields(array( + 'collection', + 'name', + 'data', +)) +->values(array( + 'collection' => '', + 'name' => 'core.entity_form_display.media.file.media_library', + 'data' => 'a:11:{s:4:"uuid";s:36:"86ab9619-c970-4416-971d-e5c8614b3368";s:8:"langcode";s:2:"en";s:6:"status";b:1;s:12:"dependencies";a:1:{s:6:"config";a:3:{i:0;s:41:"core.entity_form_mode.media.media_library";i:1;s:39:"field.field.media.file.field_media_file";i:2;s:15:"media.type.file";}}s:5:"_core";a:1:{s:19:"default_config_hash";s:43:"RFmywOcuem167havmD4VLgBTO1Swq9hyA-_f5aYTi8c";}s:2:"id";s:24:"media.file.media_library";s:16:"targetEntityType";s:5:"media";s:6:"bundle";s:4:"file";s:4:"mode";s:13:"media_library";s:7:"content";a:1:{s:4:"name";a:5:{s:4:"type";s:16:"string_textfield";s:6:"weight";i:0;s:6:"region";s:7:"content";s:8:"settings";a:2:{s:4:"size";i:60;s:11:"placeholder";s:0:"";}s:20:"third_party_settings";a:0:{}}}s:6:"hidden";a:5:{s:7:"created";b:1;s:16:"field_media_file";b:1;s:4:"path";b:1;s:6:"status";b:1;s:3:"uid";b:1;}}', +)) +->values(array( + 'collection' => '', + 'name' => 'core.entity_form_display.media.image.media_library', + 'data' => 'a:11:{s:4:"uuid";s:36:"2bbea060-3cd8-4881-a3aa-c898d6619b16";s:8:"langcode";s:2:"en";s:6:"status";b:1;s:12:"dependencies";a:2:{s:6:"config";a:4:{i:0;s:41:"core.entity_form_mode.media.media_library";i:1;s:41:"field.field.media.image.field_media_image";i:2;s:21:"image.style.thumbnail";i:3;s:16:"media.type.image";}s:6:"module";a:1:{i:0;s:5:"image";}}s:5:"_core";a:1:{s:19:"default_config_hash";s:43:"PlyfyVZfALLkP7nbxLpaVKIDUWRioZghWpFDv0_rJ68";}s:2:"id";s:25:"media.image.media_library";s:16:"targetEntityType";s:5:"media";s:6:"bundle";s:5:"image";s:4:"mode";s:13:"media_library";s:7:"content";a:2:{s:17:"field_media_image";a:5:{s:4:"type";s:11:"image_image";s:6:"weight";i:1;s:6:"region";s:7:"content";s:8:"settings";a:2:{s:18:"progress_indicator";s:8:"throbber";s:19:"preview_image_style";s:9:"thumbnail";}s:20:"third_party_settings";a:0:{}}s:4:"name";a:5:{s:4:"type";s:16:"string_textfield";s:6:"weight";i:0;s:6:"region";s:7:"content";s:8:"settings";a:2:{s:4:"size";i:60;s:11:"placeholder";s:0:"";}s:20:"third_party_settings";a:0:{}}}s:6:"hidden";a:4:{s:7:"created";b:1;s:4:"path";b:1;s:6:"status";b:1;s:3:"uid";b:1;}}', +)) +->values(array( + 'collection' => '', + 'name' => 'core.entity_view_display.media.file.media_library', + 'data' => 'a:11:{s:4:"uuid";s:36:"67e6d857-8ecb-49f5-95e1-6b1c4306c31f";s:8:"langcode";s:2:"en";s:6:"status";b:1;s:12:"dependencies";a:2:{s:6:"config";a:4:{i:0;s:41:"core.entity_view_mode.media.media_library";i:1;s:39:"field.field.media.file.field_media_file";i:2;s:21:"image.style.thumbnail";i:3;s:15:"media.type.file";}s:6:"module";a:1:{i:0;s:5:"image";}}s:5:"_core";a:1:{s:19:"default_config_hash";s:43:"vhAK2lCOWK2paUpJawj7yiSLFO9wwsx6WE8_oDmvbwU";}s:2:"id";s:24:"media.file.media_library";s:16:"targetEntityType";s:5:"media";s:6:"bundle";s:4:"file";s:4:"mode";s:13:"media_library";s:7:"content";a:1:{s:9:"thumbnail";a:6:{s:4:"type";s:5:"image";s:6:"weight";i:0;s:6:"region";s:7:"content";s:5:"label";s:6:"hidden";s:8:"settings";a:2:{s:11:"image_style";s:9:"thumbnail";s:10:"image_link";s:0:"";}s:20:"third_party_settings";a:0:{}}}s:6:"hidden";a:4:{s:7:"created";b:1;s:16:"field_media_file";b:1;s:4:"name";b:1;s:3:"uid";b:1;}}', +)) +->values(array( + 'collection' => '', + 'name' => 'core.entity_view_display.media.image.media_library', + 'data' => 'a:11:{s:4:"uuid";s:36:"277ca98b-2ada-4251-ad69-aa73e72d60fe";s:8:"langcode";s:2:"en";s:6:"status";b:1;s:12:"dependencies";a:2:{s:6:"config";a:4:{i:0;s:41:"core.entity_view_mode.media.media_library";i:1;s:41:"field.field.media.image.field_media_image";i:2;s:18:"image.style.medium";i:3;s:16:"media.type.image";}s:6:"module";a:1:{i:0;s:5:"image";}}s:5:"_core";a:1:{s:19:"default_config_hash";s:43:"PaGXvzRcL9eII--JV4eCVfObjrNo0l-u1dB_WJtB9ig";}s:2:"id";s:25:"media.image.media_library";s:16:"targetEntityType";s:5:"media";s:6:"bundle";s:5:"image";s:4:"mode";s:13:"media_library";s:7:"content";a:1:{s:9:"thumbnail";a:6:{s:4:"type";s:5:"image";s:6:"weight";i:0;s:6:"region";s:7:"content";s:5:"label";s:6:"hidden";s:8:"settings";a:2:{s:11:"image_style";s:6:"medium";s:10:"image_link";s:0:"";}s:20:"third_party_settings";a:0:{}}}s:6:"hidden";a:4:{s:7:"created";b:1;s:17:"field_media_image";b:1;s:4:"name";b:1;s:3:"uid";b:1;}}', +)) +->values(array( + 'collection' => '', + 'name' => 'core.entity_view_mode.media.media_library', + 'data' => 'a:9:{s:4:"uuid";s:36:"20b2f1f7-a864-4d41-a15f-32f66789f73d";s:8:"langcode";s:2:"en";s:6:"status";b:1;s:12:"dependencies";a:2:{s:8:"enforced";a:1:{s:6:"module";a:1:{i:0;s:13:"media_library";}}s:6:"module";a:1:{i:0;s:5:"media";}}s:5:"_core";a:1:{s:19:"default_config_hash";s:43:"pkq0uj-IoqEQRBOP_ddUDV0ZJ-dKQ_fLcppsEDF2UO8";}s:2:"id";s:19:"media.media_library";s:5:"label";s:13:"Media library";s:16:"targetEntityType";s:5:"media";s:5:"cache";b:1;}', +)) +->values(array( + 'collection' => '', + 'name' => 'views.view.media_library', + 'data' => 'a:14:{s:4:"uuid";s:36:"3bc9cf0f-cb66-4dbe-8d7e-862cb85e5932";s:8:"langcode";s:2:"en";s:6:"status";b:1;s:12:"dependencies";a:3:{s:6:"config";a:1:{i:0;s:41:"core.entity_view_mode.media.media_library";}s:8:"enforced";a:1:{s:6:"module";a:1:{i:0;s:13:"media_library";}}s:6:"module";a:3:{i:0;s:5:"media";i:1;s:13:"media_library";i:2;s:4:"user";}}s:5:"_core";a:1:{s:19:"default_config_hash";s:43:"1F1cSZ5MlvxdwjdyrwnH2I8CWngOp8Pu2SXDzix2QUc";}s:2:"id";s:13:"media_library";s:5:"label";s:13:"Media library";s:6:"module";s:5:"views";s:11:"description";s:0:"";s:3:"tag";s:0:"";s:10:"base_table";s:16:"media_field_data";s:10:"base_field";s:3:"mid";s:4:"core";s:3:"8.x";s:7:"display";a:3:{s:7:"default";a:6:{s:14:"display_plugin";s:7:"default";s:2:"id";s:7:"default";s:13:"display_title";s:6:"Master";s:8:"position";i:0;s:15:"display_options";a:18:{s:6:"access";a:2:{s:4:"type";s:4:"perm";s:7:"options";a:1:{s:4:"perm";s:21:"access media overview";}}s:5:"cache";a:2:{s:4:"type";s:3:"tag";s:7:"options";a:0:{}}s:5:"query";a:2:{s:4:"type";s:11:"views_query";s:7:"options";a:5:{s:19:"disable_sql_rewrite";b:0;s:8:"distinct";b:0;s:7:"replica";b:0;s:13:"query_comment";s:0:"";s:10:"query_tags";a:0:{}}}s:12:"exposed_form";a:2:{s:4:"type";s:5:"basic";s:7:"options";a:7:{s:13:"submit_button";s:13:"Apply Filters";s:12:"reset_button";b:0;s:18:"reset_button_label";s:5:"Reset";s:19:"exposed_sorts_label";s:7:"Sort by";s:17:"expose_sort_order";b:0;s:14:"sort_asc_label";s:3:"Asc";s:15:"sort_desc_label";s:4:"Desc";}}s:5:"pager";a:2:{s:4:"type";s:4:"mini";s:7:"options";a:6:{s:14:"items_per_page";i:25;s:6:"offset";i:0;s:2:"id";i:0;s:11:"total_pages";N;s:6:"expose";a:7:{s:14:"items_per_page";b:0;s:20:"items_per_page_label";s:14:"Items per page";s:22:"items_per_page_options";s:13:"5, 10, 25, 50";s:26:"items_per_page_options_all";b:0;s:32:"items_per_page_options_all_label";s:7:"- All -";s:6:"offset";b:0;s:12:"offset_label";s:6:"Offset";}s:4:"tags";a:2:{s:8:"previous";s:6:"‹‹";s:4:"next";s:6:"››";}}}s:5:"style";a:2:{s:4:"type";s:7:"default";s:7:"options";a:3:{s:8:"grouping";a:0:{}s:9:"row_class";s:59:"media-library-item js-media-library-item js-click-to-select";s:17:"default_row_class";b:1;}}s:3:"row";a:2:{s:4:"type";s:6:"fields";s:7:"options";a:4:{s:22:"default_field_elements";b:1;s:6:"inline";a:0:{}s:9:"separator";s:0:"";s:10:"hide_empty";b:0;}}s:6:"fields";a:2:{s:15:"media_bulk_form";a:26:{s:2:"id";s:15:"media_bulk_form";s:5:"table";s:5:"media";s:5:"field";s:15:"media_bulk_form";s:12:"relationship";s:4:"none";s:10:"group_type";s:5:"group";s:11:"admin_label";s:0:"";s:5:"label";s:0:"";s:7:"exclude";b:0;s:5:"alter";a:26:{s:10:"alter_text";b:0;s:4:"text";s:0:"";s:9:"make_link";b:0;s:4:"path";s:0:"";s:8:"absolute";b:0;s:8:"external";b:0;s:14:"replace_spaces";b:0;s:9:"path_case";s:4:"none";s:15:"trim_whitespace";b:0;s:3:"alt";s:0:"";s:3:"rel";s:0:"";s:10:"link_class";s:0:"";s:6:"prefix";s:0:"";s:6:"suffix";s:0:"";s:6:"target";s:0:"";s:5:"nl2br";b:0;s:10:"max_length";i:0;s:13:"word_boundary";b:1;s:8:"ellipsis";b:1;s:9:"more_link";b:0;s:14:"more_link_text";s:0:"";s:14:"more_link_path";s:0:"";s:10:"strip_tags";b:0;s:4:"trim";b:0;s:13:"preserve_tags";s:0:"";s:4:"html";b:0;}s:12:"element_type";s:0:"";s:13:"element_class";s:27:"js-click-to-select-checkbox";s:18:"element_label_type";s:0:"";s:19:"element_label_class";s:0:"";s:19:"element_label_colon";b:0;s:20:"element_wrapper_type";s:0:"";s:21:"element_wrapper_class";s:0:"";s:23:"element_default_classes";b:1;s:5:"empty";s:0:"";s:10:"hide_empty";b:0;s:10:"empty_zero";b:0;s:16:"hide_alter_empty";b:1;s:12:"action_title";s:6:"Action";s:15:"include_exclude";s:7:"exclude";s:16:"selected_actions";a:0:{}s:11:"entity_type";s:5:"media";s:9:"plugin_id";s:9:"bulk_form";}s:15:"rendered_entity";a:24:{s:2:"id";s:15:"rendered_entity";s:5:"table";s:5:"media";s:5:"field";s:15:"rendered_entity";s:12:"relationship";s:4:"none";s:10:"group_type";s:5:"group";s:11:"admin_label";s:0:"";s:5:"label";s:0:"";s:7:"exclude";b:0;s:5:"alter";a:26:{s:10:"alter_text";b:0;s:4:"text";s:0:"";s:9:"make_link";b:0;s:4:"path";s:0:"";s:8:"absolute";b:0;s:8:"external";b:0;s:14:"replace_spaces";b:0;s:9:"path_case";s:4:"none";s:15:"trim_whitespace";b:0;s:3:"alt";s:0:"";s:3:"rel";s:0:"";s:10:"link_class";s:0:"";s:6:"prefix";s:0:"";s:6:"suffix";s:0:"";s:6:"target";s:0:"";s:5:"nl2br";b:0;s:10:"max_length";i:0;s:13:"word_boundary";b:1;s:8:"ellipsis";b:1;s:9:"more_link";b:0;s:14:"more_link_text";s:0:"";s:14:"more_link_path";s:0:"";s:10:"strip_tags";b:0;s:4:"trim";b:0;s:13:"preserve_tags";s:0:"";s:4:"html";b:0;}s:12:"element_type";s:0:"";s:13:"element_class";s:27:"media-library-item__content";s:18:"element_label_type";s:0:"";s:19:"element_label_class";s:0:"";s:19:"element_label_colon";b:0;s:20:"element_wrapper_type";s:0:"";s:21:"element_wrapper_class";s:0:"";s:23:"element_default_classes";b:1;s:5:"empty";s:0:"";s:10:"hide_empty";b:0;s:10:"empty_zero";b:0;s:16:"hide_alter_empty";b:1;s:9:"view_mode";s:13:"media_library";s:11:"entity_type";s:5:"media";s:9:"plugin_id";s:15:"rendered_entity";}}s:7:"filters";a:3:{s:6:"status";a:16:{s:2:"id";s:6:"status";s:5:"table";s:16:"media_field_data";s:5:"field";s:6:"status";s:12:"relationship";s:4:"none";s:10:"group_type";s:5:"group";s:11:"admin_label";s:0:"";s:8:"operator";s:1:"=";s:5:"value";s:1:"1";s:5:"group";i:1;s:7:"exposed";b:1;s:6:"expose";a:10:{s:11:"operator_id";s:0:"";s:5:"label";s:17:"Publishing status";s:11:"description";N;s:12:"use_operator";b:0;s:8:"operator";s:9:"status_op";s:10:"identifier";s:6:"status";s:8:"required";b:1;s:8:"remember";b:0;s:8:"multiple";b:0;s:14:"remember_roles";a:1:{s:13:"authenticated";s:13:"authenticated";}}s:10:"is_grouped";b:1;s:10:"group_info";a:10:{s:5:"label";s:9:"Published";s:11:"description";s:0:"";s:10:"identifier";s:6:"status";s:8:"optional";b:1;s:6:"widget";s:6:"select";s:8:"multiple";b:0;s:8:"remember";b:0;s:13:"default_group";s:3:"All";s:22:"default_group_multiple";a:0:{}s:11:"group_items";a:2:{i:1;a:3:{s:5:"title";s:9:"Published";s:8:"operator";s:1:"=";s:5:"value";s:1:"1";}i:2;a:3:{s:5:"title";s:11:"Unpublished";s:8:"operator";s:1:"=";s:5:"value";s:1:"0";}}}s:9:"plugin_id";s:7:"boolean";s:11:"entity_type";s:5:"media";s:12:"entity_field";s:6:"status";}s:4:"name";a:16:{s:2:"id";s:4:"name";s:5:"table";s:16:"media_field_data";s:5:"field";s:4:"name";s:12:"relationship";s:4:"none";s:10:"group_type";s:5:"group";s:11:"admin_label";s:0:"";s:8:"operator";s:8:"contains";s:5:"value";s:0:"";s:5:"group";i:1;s:7:"exposed";b:1;s:6:"expose";a:10:{s:11:"operator_id";s:7:"name_op";s:5:"label";s:4:"Name";s:11:"description";s:0:"";s:12:"use_operator";b:0;s:8:"operator";s:7:"name_op";s:10:"identifier";s:4:"name";s:8:"required";b:0;s:8:"remember";b:0;s:8:"multiple";b:0;s:14:"remember_roles";a:3:{s:13:"authenticated";s:13:"authenticated";s:9:"anonymous";s:1:"0";s:13:"administrator";s:1:"0";}}s:10:"is_grouped";b:0;s:10:"group_info";a:10:{s:5:"label";s:0:"";s:11:"description";s:0:"";s:10:"identifier";s:0:"";s:8:"optional";b:1;s:6:"widget";s:6:"select";s:8:"multiple";b:0;s:8:"remember";b:0;s:13:"default_group";s:3:"All";s:22:"default_group_multiple";a:0:{}s:11:"group_items";a:0:{}}s:11:"entity_type";s:5:"media";s:12:"entity_field";s:4:"name";s:9:"plugin_id";s:6:"string";}s:6:"bundle";a:16:{s:2:"id";s:6:"bundle";s:5:"table";s:16:"media_field_data";s:5:"field";s:6:"bundle";s:12:"relationship";s:4:"none";s:10:"group_type";s:5:"group";s:11:"admin_label";s:0:"";s:8:"operator";s:2:"in";s:5:"value";a:0:{}s:5:"group";i:1;s:7:"exposed";b:1;s:6:"expose";a:11:{s:11:"operator_id";s:9:"bundle_op";s:5:"label";s:10:"Media type";s:11:"description";s:0:"";s:12:"use_operator";b:0;s:8:"operator";s:9:"bundle_op";s:10:"identifier";s:4:"type";s:8:"required";b:0;s:8:"remember";b:0;s:8:"multiple";b:0;s:14:"remember_roles";a:3:{s:13:"authenticated";s:13:"authenticated";s:9:"anonymous";s:1:"0";s:13:"administrator";s:1:"0";}s:6:"reduce";b:0;}s:10:"is_grouped";b:0;s:10:"group_info";a:10:{s:5:"label";s:10:"Media type";s:11:"description";N;s:10:"identifier";s:6:"bundle";s:8:"optional";b:1;s:6:"widget";s:6:"select";s:8:"multiple";b:0;s:8:"remember";b:0;s:13:"default_group";s:3:"All";s:22:"default_group_multiple";a:0:{}s:11:"group_items";a:3:{i:1;a:0:{}i:2;a:0:{}i:3;a:0:{}}}s:11:"entity_type";s:5:"media";s:12:"entity_field";s:6:"bundle";s:9:"plugin_id";s:6:"bundle";}}s:5:"sorts";a:3:{s:7:"created";a:13:{s:2:"id";s:7:"created";s:5:"table";s:16:"media_field_data";s:5:"field";s:7:"created";s:12:"relationship";s:4:"none";s:10:"group_type";s:5:"group";s:11:"admin_label";s:0:"";s:5:"order";s:4:"DESC";s:7:"exposed";b:1;s:6:"expose";a:1:{s:5:"label";s:12:"Newest first";}s:11:"granularity";s:6:"second";s:11:"entity_type";s:5:"media";s:12:"entity_field";s:7:"created";s:9:"plugin_id";s:4:"date";}s:4:"name";a:12:{s:2:"id";s:4:"name";s:5:"table";s:16:"media_field_data";s:5:"field";s:4:"name";s:12:"relationship";s:4:"none";s:10:"group_type";s:5:"group";s:11:"admin_label";s:0:"";s:5:"order";s:3:"ASC";s:7:"exposed";b:1;s:6:"expose";a:1:{s:5:"label";s:10:"Name (A-Z)";}s:11:"entity_type";s:5:"media";s:12:"entity_field";s:4:"name";s:9:"plugin_id";s:8:"standard";}s:6:"name_1";a:12:{s:2:"id";s:6:"name_1";s:5:"table";s:16:"media_field_data";s:5:"field";s:4:"name";s:12:"relationship";s:4:"none";s:10:"group_type";s:5:"group";s:11:"admin_label";s:0:"";s:5:"order";s:4:"DESC";s:7:"exposed";b:1;s:6:"expose";a:1:{s:5:"label";s:10:"Name (Z-A)";}s:11:"entity_type";s:5:"media";s:12:"entity_field";s:4:"name";s:9:"plugin_id";s:8:"standard";}}s:5:"title";s:5:"Media";s:6:"header";a:0:{}s:6:"footer";a:0:{}s:5:"empty";a:1:{s:16:"area_text_custom";a:10:{s:2:"id";s:16:"area_text_custom";s:5:"table";s:5:"views";s:5:"field";s:16:"area_text_custom";s:12:"relationship";s:4:"none";s:10:"group_type";s:5:"group";s:11:"admin_label";s:0:"";s:5:"empty";b:1;s:8:"tokenize";b:0;s:7:"content";s:19:"No media available.";s:9:"plugin_id";s:11:"text_custom";}}s:13:"relationships";a:0:{}s:17:"display_extenders";a:0:{}s:8:"use_ajax";b:1;s:9:"css_class";s:40:"media-library-view js-media-library-view";}s:14:"cache_metadata";a:3:{s:7:"max-age";i:0;s:8:"contexts";a:5:{i:0;s:28:"languages:language_interface";i:1;s:3:"url";i:2;s:14:"url.query_args";i:3;s:22:"url.query_args:sort_by";i:4;s:16:"user.permissions";}s:4:"tags";a:5:{i:0;s:51:"config:core.entity_view_display.media.audio.default";i:1;s:50:"config:core.entity_view_display.media.file.default";i:2;s:51:"config:core.entity_view_display.media.image.default";i:3;s:58:"config:core.entity_view_display.media.remote_video.default";i:4;s:51:"config:core.entity_view_display.media.video.default";}}}s:4:"page";a:6:{s:14:"display_plugin";s:4:"page";s:2:"id";s:4:"page";s:13:"display_title";s:4:"Page";s:8:"position";i:1;s:15:"display_options";a:3:{s:17:"display_extenders";a:0:{}s:4:"path";s:19:"admin/content/media";s:4:"menu";a:8:{s:4:"type";s:3:"tab";s:5:"title";s:5:"Media";s:11:"description";s:49:"Allows users to browse and administer media items";s:8:"expanded";b:0;s:6:"parent";s:20:"system.admin_content";s:6:"weight";i:5;s:7:"context";s:1:"0";s:9:"menu_name";s:5:"admin";}}s:14:"cache_metadata";a:3:{s:7:"max-age";i:0;s:8:"contexts";a:5:{i:0;s:28:"languages:language_interface";i:1;s:3:"url";i:2;s:14:"url.query_args";i:3;s:22:"url.query_args:sort_by";i:4;s:16:"user.permissions";}s:4:"tags";a:5:{i:0;s:51:"config:core.entity_view_display.media.audio.default";i:1;s:50:"config:core.entity_view_display.media.file.default";i:2;s:51:"config:core.entity_view_display.media.image.default";i:3;s:58:"config:core.entity_view_display.media.remote_video.default";i:4;s:51:"config:core.entity_view_display.media.video.default";}}}s:6:"widget";a:6:{s:14:"display_plugin";s:4:"page";s:2:"id";s:6:"widget";s:13:"display_title";s:6:"Widget";s:8:"position";i:2;s:15:"display_options";a:6:{s:17:"display_extenders";a:0:{}s:4:"path";s:26:"admin/content/media-widget";s:6:"fields";a:2:{s:15:"rendered_entity";a:24:{s:2:"id";s:15:"rendered_entity";s:5:"table";s:5:"media";s:5:"field";s:15:"rendered_entity";s:12:"relationship";s:4:"none";s:10:"group_type";s:5:"group";s:11:"admin_label";s:0:"";s:5:"label";s:0:"";s:7:"exclude";b:0;s:5:"alter";a:26:{s:10:"alter_text";b:0;s:4:"text";s:0:"";s:9:"make_link";b:0;s:4:"path";s:0:"";s:8:"absolute";b:0;s:8:"external";b:0;s:14:"replace_spaces";b:0;s:9:"path_case";s:4:"none";s:15:"trim_whitespace";b:0;s:3:"alt";s:0:"";s:3:"rel";s:0:"";s:10:"link_class";s:0:"";s:6:"prefix";s:0:"";s:6:"suffix";s:0:"";s:6:"target";s:0:"";s:5:"nl2br";b:0;s:10:"max_length";i:0;s:13:"word_boundary";b:1;s:8:"ellipsis";b:1;s:9:"more_link";b:0;s:14:"more_link_text";s:0:"";s:14:"more_link_path";s:0:"";s:10:"strip_tags";b:0;s:4:"trim";b:0;s:13:"preserve_tags";s:0:"";s:4:"html";b:0;}s:12:"element_type";s:0:"";s:13:"element_class";s:27:"media-library-item__content";s:18:"element_label_type";s:0:"";s:19:"element_label_class";s:0:"";s:19:"element_label_colon";b:0;s:20:"element_wrapper_type";s:0:"";s:21:"element_wrapper_class";s:0:"";s:23:"element_default_classes";b:1;s:5:"empty";s:0:"";s:10:"hide_empty";b:0;s:10:"empty_zero";b:0;s:16:"hide_alter_empty";b:1;s:9:"view_mode";s:13:"media_library";s:11:"entity_type";s:5:"media";s:9:"plugin_id";s:15:"rendered_entity";}s:25:"media_library_select_form";a:23:{s:2:"id";s:25:"media_library_select_form";s:5:"table";s:5:"media";s:5:"field";s:25:"media_library_select_form";s:12:"relationship";s:4:"none";s:10:"group_type";s:5:"group";s:11:"admin_label";s:0:"";s:5:"label";s:0:"";s:7:"exclude";b:0;s:5:"alter";a:26:{s:10:"alter_text";b:0;s:4:"text";s:0:"";s:9:"make_link";b:0;s:4:"path";s:0:"";s:8:"absolute";b:0;s:8:"external";b:0;s:14:"replace_spaces";b:0;s:9:"path_case";s:4:"none";s:15:"trim_whitespace";b:0;s:3:"alt";s:0:"";s:3:"rel";s:0:"";s:10:"link_class";s:0:"";s:6:"prefix";s:0:"";s:6:"suffix";s:0:"";s:6:"target";s:0:"";s:5:"nl2br";b:0;s:10:"max_length";i:0;s:13:"word_boundary";b:1;s:8:"ellipsis";b:1;s:9:"more_link";b:0;s:14:"more_link_text";s:0:"";s:14:"more_link_path";s:0:"";s:10:"strip_tags";b:0;s:4:"trim";b:0;s:13:"preserve_tags";s:0:"";s:4:"html";b:0;}s:12:"element_type";s:0:"";s:13:"element_class";s:0:"";s:18:"element_label_type";s:0:"";s:19:"element_label_class";s:0:"";s:19:"element_label_colon";b:0;s:20:"element_wrapper_type";s:0:"";s:21:"element_wrapper_class";s:27:"js-click-to-select-checkbox";s:23:"element_default_classes";b:1;s:5:"empty";s:0:"";s:10:"hide_empty";b:0;s:10:"empty_zero";b:0;s:16:"hide_alter_empty";b:1;s:11:"entity_type";s:5:"media";s:9:"plugin_id";s:25:"media_library_select_form";}}s:8:"defaults";a:2:{s:6:"fields";b:0;s:6:"access";b:0;}s:19:"display_description";s:0:"";s:6:"access";a:2:{s:4:"type";s:4:"perm";s:7:"options";a:1:{s:4:"perm";s:10:"view media";}}}s:14:"cache_metadata";a:3:{s:7:"max-age";i:-1;s:8:"contexts";a:5:{i:0;s:28:"languages:language_interface";i:1;s:3:"url";i:2;s:14:"url.query_args";i:3;s:22:"url.query_args:sort_by";i:4;s:16:"user.permissions";}s:4:"tags";a:5:{i:0;s:51:"config:core.entity_view_display.media.audio.default";i:1;s:50:"config:core.entity_view_display.media.file.default";i:2;s:51:"config:core.entity_view_display.media.image.default";i:3;s:58:"config:core.entity_view_display.media.remote_video.default";i:4;s:51:"config:core.entity_view_display.media.video.default";}}}}}', +)) +->execute(); + +// Insert media library key_value entries. +$connection->insert('key_value') +->fields(array( + 'collection', + 'name', + 'value', +)) +->values(array( + 'collection' => 'config.entity.key_store.entity_view_display', + 'name' => 'uuid:67e6d857-8ecb-49f5-95e1-6b1c4306c31f', + 'value' => 'a:1:{i:0;s:49:"core.entity_view_display.media.file.media_library";}', +)) +->values(array( + 'collection' => 'config.entity.key_store.entity_view_display', + 'name' => 'uuid:277ca98b-2ada-4251-ad69-aa73e72d60fe', + 'value' => 'a:1:{i:0;s:50:"core.entity_view_display.media.image.media_library";}', +)) +->values(array( + 'collection' => 'config.entity.key_store.entity_view_mode', + 'name' => 'uuid:20b2f1f7-a864-4d41-a15f-32f66789f73d', + 'value' => 'a:1:{i:0;s:41:"core.entity_view_mode.media.media_library";}', +)) +->values(array( + 'collection' => 'config.entity.key_store.view', + 'name' => 'uuid:3bc9cf0f-cb66-4dbe-8d7e-862cb85e5932', + 'value' => 'a:1:{i:0;s:24:"views.view.media_library";}', +)) +->execute(); diff --git a/core/modules/media_library/tests/src/FunctionalJavascript/MediaLibraryTest.php b/core/modules/media_library/tests/src/FunctionalJavascript/MediaLibraryTest.php index 64f3ff59b3..ddc92a77b9 100644 --- a/core/modules/media_library/tests/src/FunctionalJavascript/MediaLibraryTest.php +++ b/core/modules/media_library/tests/src/FunctionalJavascript/MediaLibraryTest.php @@ -267,6 +267,36 @@ public function testWidget() { $page->find('css', '.ui-dialog-titlebar-close')->click(); $assert_session->assertWaitOnAjaxRequest(); + // Assert the media library contains header links to switch between the grid + // and table display. + $assert_session->elementExists('css', '.media-library-open-button[href*="field_unlimited_media"]')->click(); + $assert_session->assertWaitOnAjaxRequest(); + $assert_session->elementExists('css', '.media-library-view .media-library-item article'); + $assert_session->elementNotExists('css', '.media-library-view table tr.media-library-item'); + $assert_session->elementExists('named', ['link', 'Show as grid']); + $assert_session->elementExists('named', ['link', 'Show as table'])->click(); + $assert_session->pageTextContains('Dog'); + $assert_session->pageTextContains('Bear'); + $assert_session->pageTextNotContains('Turtle'); + $assert_session->assertWaitOnAjaxRequest(); + $assert_session->elementNotExists('css', '.media-library-view .media-library-item article'); + $assert_session->elementExists('css', '.media-library-view table tr.media-library-item'); + $assert_session->pageTextContains('Dog'); + $assert_session->pageTextContains('Bear'); + $assert_session->pageTextNotContains('Turtle'); + $assert_session->elementExists('named', ['link', 'Show as table']); + $assert_session->elementExists('named', ['link', 'Show as grid'])->click(); + $assert_session->assertWaitOnAjaxRequest(); + $assert_session->elementExists('css', '.media-library-view .media-library-item article'); + $assert_session->elementNotExists('css', '.media-library-view table tr.media-library-item'); + $assert_session->pageTextContains('Dog'); + $assert_session->pageTextContains('Bear'); + $assert_session->pageTextNotContains('Turtle'); + $assert_session->elementExists('named', ['link', 'Show as grid']); + $assert_session->elementExists('named', ['link', 'Show as table']); + $page->find('css', '.ui-dialog-titlebar-close')->click(); + $assert_session->assertWaitOnAjaxRequest(); + // Assert the exposed name filter of the view. $assert_session->elementExists('css', '.media-library-open-button[href*="field_unlimited_media"]')->click(); $assert_session->assertWaitOnAjaxRequest();