From 007502ea0a6b0b93a2c054139afa172e21966df8 Mon Sep 17 00:00:00 2001 From: escuriola Date: Mon, 4 Apr 2022 00:22:33 +0200 Subject: [PATCH 01/55] OEL-1246: Add requirements to composer. --- composer.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/composer.json b/composer.json index 69150254b..44105900a 100644 --- a/composer.json +++ b/composer.json @@ -22,6 +22,8 @@ "drupal/ctools": "^3.7", "drupal/description_list_field": "^1.0@alpha", "drupal/drupal-extension": "~4.1", + "drupal/extra_field": "^2.1", + "drupal/facets": "1.8.0 as 2.0.1", "drupal/file_link": "^2.0.6", "drupal/facets_form": "1.0.0-alpha2", "drupal/pathauto": "^1.8", @@ -38,6 +40,7 @@ "openeuropa/oe_contact_forms": "~1.1", "openeuropa/oe_content": "^2.8.0", "openeuropa/oe_corporate_blocks": "^4.4", + "openeuropa/oe_list_pages": "^0.16", "openeuropa/oe_media": "^1.14", "openeuropa/oe_multilingual": "^1.9", "openeuropa/oe_paragraphs": "^1.13", From 67f62ba4e0cfd3e0365df00942c7e44f4d94afad Mon Sep 17 00:00:00 2001 From: escuriola Date: Mon, 4 Apr 2022 00:25:15 +0200 Subject: [PATCH 02/55] OEL-1246: Whitelabel oe_list_pages integration. --- modules/oe_whitelabel_list_pages/README.md | 3 + ...form_display.node.oe_list_page.default.yml | 96 +++++++++++++++++++ ...view_display.node.oe_list_page.default.yml | 42 ++++++++ .../oe_whitelabel_list_pages.info.yml | 15 +++ .../oe_whitelabel_list_pages.module | 52 ++++++++++ ...item-list--oe-list-pages-results.html.twig | 34 +++++++ .../node--oe-list-page--full.html.twig | 43 +++++++++ .../oe-list-pages-selected-facet.html.twig | 10 ++ 8 files changed, 295 insertions(+) create mode 100644 modules/oe_whitelabel_list_pages/README.md create mode 100644 modules/oe_whitelabel_list_pages/config/install/core.entity_form_display.node.oe_list_page.default.yml create mode 100644 modules/oe_whitelabel_list_pages/config/install/core.entity_view_display.node.oe_list_page.default.yml create mode 100644 modules/oe_whitelabel_list_pages/oe_whitelabel_list_pages.info.yml create mode 100644 modules/oe_whitelabel_list_pages/oe_whitelabel_list_pages.module create mode 100644 modules/oe_whitelabel_list_pages/templates/item-list--oe-list-pages-results.html.twig create mode 100644 modules/oe_whitelabel_list_pages/templates/node--oe-list-page--full.html.twig create mode 100644 modules/oe_whitelabel_list_pages/templates/oe-list-pages-selected-facet.html.twig diff --git a/modules/oe_whitelabel_list_pages/README.md b/modules/oe_whitelabel_list_pages/README.md new file mode 100644 index 000000000..36b8724f1 --- /dev/null +++ b/modules/oe_whitelabel_list_pages/README.md @@ -0,0 +1,3 @@ +# OpenEuropa Whitelabel list pages + +This module provides list page for oe_whitelabel bundles. diff --git a/modules/oe_whitelabel_list_pages/config/install/core.entity_form_display.node.oe_list_page.default.yml b/modules/oe_whitelabel_list_pages/config/install/core.entity_form_display.node.oe_list_page.default.yml new file mode 100644 index 000000000..9d891111c --- /dev/null +++ b/modules/oe_whitelabel_list_pages/config/install/core.entity_form_display.node.oe_list_page.default.yml @@ -0,0 +1,96 @@ +langcode: en +status: true +dependencies: + config: + - node.type.oe_list_page + module: + - user +id: node.oe_list_page.default +targetEntityType: node +bundle: oe_list_page +mode: default +content: + created: + type: datetime_timestamp + weight: 6 + region: content + settings: { } + third_party_settings: { } + langcode: + type: language_select + weight: 4 + region: content + settings: + include_locked: true + third_party_settings: { } + oe_content_legacy_link: + type: link_default + weight: 3 + region: content + settings: + placeholder_url: '' + placeholder_title: '' + third_party_settings: { } + oe_content_navigation_title: + type: string_textfield + weight: 2 + region: content + settings: + size: 60 + placeholder: '' + third_party_settings: { } + oe_content_short_title: + type: string_textfield + weight: 1 + region: content + settings: + size: 60 + placeholder: '' + third_party_settings: { } + path: + type: path + weight: 9 + region: content + settings: { } + third_party_settings: { } + promote: + type: boolean_checkbox + weight: 7 + region: content + settings: + display_label: true + third_party_settings: { } + status: + type: boolean_checkbox + weight: 10 + region: content + settings: + display_label: true + third_party_settings: { } + sticky: + type: boolean_checkbox + weight: 8 + region: content + settings: + display_label: true + third_party_settings: { } + title: + type: string_textfield + weight: 0 + region: content + settings: + size: 60 + placeholder: '' + third_party_settings: { } + uid: + type: entity_reference_autocomplete + weight: 5 + region: content + settings: + match_operator: CONTAINS + match_limit: 10 + size: 60 + placeholder: '' + third_party_settings: { } +hidden: + oe_content_content_owner: true diff --git a/modules/oe_whitelabel_list_pages/config/install/core.entity_view_display.node.oe_list_page.default.yml b/modules/oe_whitelabel_list_pages/config/install/core.entity_view_display.node.oe_list_page.default.yml new file mode 100644 index 000000000..6e7277d63 --- /dev/null +++ b/modules/oe_whitelabel_list_pages/config/install/core.entity_view_display.node.oe_list_page.default.yml @@ -0,0 +1,42 @@ +langcode: en +status: true +dependencies: + config: + - node.type.oe_list_page + module: + - user +id: node.oe_list_page.default +targetEntityType: node +bundle: oe_list_page +mode: default +content: + 'extra_field_oe_list_page_filters:node:oe_list_page': + settings: { } + third_party_settings: { } + weight: 2 + region: content + 'extra_field_oe_list_page_results:node:oe_list_page': + settings: { } + third_party_settings: { } + weight: 1 + region: content + 'extra_field_oe_list_page_selected_filters:node:oe_list_page': + settings: { } + third_party_settings: { } + weight: 3 + region: content + 'extra_field_oe_list_page_total_count:node:oe_list_page': + settings: { } + third_party_settings: { } + weight: 0 + region: content +hidden: + 'extra_field_oe_list_page_pager_info:node:oe_list_page': true + 'extra_field_oe_list_page_rss_link:node:oe_list_page': true + langcode: true + links: true + oe_content_content_owner: true + oe_content_legacy_link: true + oe_content_navigation_title: true + oe_content_short_title: true + search_api_excerpt: true diff --git a/modules/oe_whitelabel_list_pages/oe_whitelabel_list_pages.info.yml b/modules/oe_whitelabel_list_pages/oe_whitelabel_list_pages.info.yml new file mode 100644 index 000000000..bd9a7c763 --- /dev/null +++ b/modules/oe_whitelabel_list_pages/oe_whitelabel_list_pages.info.yml @@ -0,0 +1,15 @@ +name: OpenEuropa Whitelabel List Pages +type: module +description: Provides list pages to Open Whitelabel entities. +package: OpenEuropa Whitelabel Theme +core_version_requirement: ^9.2 + +dependencies: + - extra_field:extra_field + - oe_list_pages:oe_list_page_content_type + - oe_list_pages:oe_list_pages + +config_devel: + install: + - core.entity_form_display.node.oe_list_page.default + - core.entity_view_display.node.oe_list_page.default diff --git a/modules/oe_whitelabel_list_pages/oe_whitelabel_list_pages.module b/modules/oe_whitelabel_list_pages/oe_whitelabel_list_pages.module new file mode 100644 index 000000000..09c1b144f --- /dev/null +++ b/modules/oe_whitelabel_list_pages/oe_whitelabel_list_pages.module @@ -0,0 +1,52 @@ + [ + 'render element' => 'elements', + 'base hook' => 'node', + ], + ]; +} + +/** + * Implements hook_form_FORM_ID_alter() for facets_forms. + */ +function oe_whitelabel_form_oe_list_pages_facets_form_alter(&$form, FormStateInterface $form_state, $form_id) { + if (isset($form['actions'])) { + $action_classes = ['mt-4', 'd-grid', 'gap-4', 'd-md-block']; + foreach ($action_classes as $action_class) { + if (!isset($action_class, $form['actions']['#attributes']['class']) || !in_array($action_class, $form['actions']['#attributes']['class'], TRUE)) { + $form['actions']['#attributes']['class'][] = $action_class; + } + } + } + if (isset($form['actions']['submit'])) { + $submit_classes = ['me-md-3', 'btn', 'btn-primary', 'btn-md']; + foreach ($submit_classes as $submit_class) { + if (!isset($submit_class, $form['actions']['submit']['#attributes']['class']) || !in_array($submit_class, $form['actions']['submit']['#attributes']['class'], TRUE)) { + $form['actions']['submit']['#attributes']['class'][] = $submit_class; + } + } + } + if (isset($form['actions']['reset'])) { + $reset_classes = ['btn', 'btn-light', 'btn-md']; + foreach ($reset_classes as $reset_class) { + if (!isset($form['actions']['reset']['#attributes']['class']) || !in_array($reset_class, $form['actions']['reset']['#attributes']['class'], TRUE)) { + $form['actions']['reset']['#attributes']['class'][] = $reset_class; + } + } + } +} diff --git a/modules/oe_whitelabel_list_pages/templates/item-list--oe-list-pages-results.html.twig b/modules/oe_whitelabel_list_pages/templates/item-list--oe-list-pages-results.html.twig new file mode 100644 index 000000000..8acea4bf0 --- /dev/null +++ b/modules/oe_whitelabel_list_pages/templates/item-list--oe-list-pages-results.html.twig @@ -0,0 +1,34 @@ +{# +/** + * @file + * Item list theme override for a oe_list_pages list template. + * + * Available variables: + * - items: A list of items. Each item contains: + * - attributes: HTML attributes to be applied to each list item. + * - value: The content of the list element. + * - title: The title of the list. + * - list_type: The tag for list element ("ul" or "ol"). + * - wrapper_attributes: HTML attributes to be applied to the list wrapper. + * - attributes: HTML attributes to be applied to the list. + * - empty: A message to display when there are no items. Allowed value is a + * string or render array. + * - context: A list of contextual data associated with the list. May contain: + * - list_style: The custom list style. + * + * @see template_preprocess_item_list() + */ +#} +
+
+
+ {%- if items -%} + {%- for item in items -%} +
{{ item.value }}
+ {%- endfor -%} + {%- else -%} + {{- empty -}} + {%- endif -%} +
+
+
diff --git a/modules/oe_whitelabel_list_pages/templates/node--oe-list-page--full.html.twig b/modules/oe_whitelabel_list_pages/templates/node--oe-list-page--full.html.twig new file mode 100644 index 000000000..08e207cc6 --- /dev/null +++ b/modules/oe_whitelabel_list_pages/templates/node--oe-list-page--full.html.twig @@ -0,0 +1,43 @@ + +
+
+
+ {% set filters = content['extra_field_oe_list_page_filters:node:oe_list_page']|render %} + {{ pattern('offcanvas', { + 'variant': 'search', + 'title': 'Filter options', + 'body': filters, + 'placement': 'start', + 'body_scroll': false, + 'backdrop': true, + 'toggle': { + 'label': 'Filters', + 'variant': 'light', + 'size': 'lg', + 'icon': 'filter', + 'icon_position': 'before', + 'attributes': create_attribute().addClass(['d-lg-none', 'w-100', 'mb-4']), + }, + }) }} +
+
+
+
+

+ {{ label }} ({{ content['extra_field_oe_list_page_total_count:node:oe_list_page'] }}) +

+
+
+ {{ content['extra_field_oe_list_page_selected_filters:node:oe_list_page'] }} +
+
+
+
+ {{ content['extra_field_oe_list_page_results:node:oe_list_page'] }} +
+
+
+ + + + diff --git a/modules/oe_whitelabel_list_pages/templates/oe-list-pages-selected-facet.html.twig b/modules/oe_whitelabel_list_pages/templates/oe-list-pages-selected-facet.html.twig new file mode 100644 index 000000000..693a506e3 --- /dev/null +++ b/modules/oe_whitelabel_list_pages/templates/oe-list-pages-selected-facet.html.twig @@ -0,0 +1,10 @@ +{% for item in items %} + {{ pattern('badge', { + 'background': 'light', + 'label': item.label, + 'dismissible': true, + 'attributes': create_attribute({'class': ['me-2', 'fs-6']}), + }) }} +{% endfor %} + + From 5d2414edf125a7aa74d285943d09ead66307cd69 Mon Sep 17 00:00:00 2001 From: escuriola Date: Mon, 4 Apr 2022 00:31:18 +0200 Subject: [PATCH 03/55] OEL-1246: Whitelabel oe_list_pages testing WIP. --- .../oe_whitelabel_list_pages_test/README.md | 19 +++++ .../install/facets.facet.oe_sc_news_title.yml | 51 +++++++++++++ ...ce.list_facet_source__node__oe_sc_news.yml | 8 ++ .../install/search_api.index.test_index.yml | 54 ++++++++++++++ .../config/install/search_api.server.test.yml | 14 ++++ .../oe_whitelabel_list_pages_test.info.yml | 10 +++ ...oe_whitelabel_list_pages_test.services.yml | 6 ++ .../ListPageAllowedTypesSubscriber.php | 64 ++++++++++++++++ .../tests/src/Functional/ListPagesTest.php | 74 +++++++++++++++++++ 9 files changed, 300 insertions(+) create mode 100644 modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/README.md create mode 100644 modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/config/install/facets.facet.oe_sc_news_title.yml create mode 100644 modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/config/install/facets.facet_source.list_facet_source__node__oe_sc_news.yml create mode 100644 modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/config/install/search_api.index.test_index.yml create mode 100644 modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/config/install/search_api.server.test.yml create mode 100755 modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/oe_whitelabel_list_pages_test.info.yml create mode 100644 modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/oe_whitelabel_list_pages_test.services.yml create mode 100644 modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/src/EventSubscriber/ListPageAllowedTypesSubscriber.php create mode 100644 modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php diff --git a/modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/README.md b/modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/README.md new file mode 100644 index 000000000..5e9b1af02 --- /dev/null +++ b/modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/README.md @@ -0,0 +1,19 @@ +# OpenEuropa Whitelabel oe_list_page test + +This module provides an environment to test manually oe_whitelabel_list_pages. + +## Requirements + +- Add this line to an override settings.php file: +```json +$settings['extension_discovery_scan_tests'] = TRUE; +``` +- Enable this module. +- Create some oe_sc_news content. +- Create a new List Page and configure: + - Title: "News" + - Source entity type: "Content" + - Source bundle: News + - Override default exposed filters: enabled + - Exposed filters: Enable "Title" +- Save diff --git a/modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/config/install/facets.facet.oe_sc_news_title.yml b/modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/config/install/facets.facet.oe_sc_news_title.yml new file mode 100644 index 000000000..537f3393b --- /dev/null +++ b/modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/config/install/facets.facet.oe_sc_news_title.yml @@ -0,0 +1,51 @@ +langcode: en +status: true +dependencies: { } +id: oe_sc_news_title +name: Title +weight: 0 +min_count: 1 +url_alias: oe_sc_news_title +facet_source_id: 'list_facet_source:node:oe_sc_news' +field_identifier: title +query_operator: or +hard_limit: 0 +exclude: false +use_hierarchy: false +keep_hierarchy_parents_active: false +expand_hierarchy: false +enable_parent_when_child_gets_disabled: true +widget: + type: oe_list_pages_fulltext + config: + fulltext_all_fields: true +empty_behavior: + behavior: none +only_visible_when_facet_source_is_visible: false +show_only_one_result: false +show_title: false +processor_configs: + active_widget_order: + processor_id: active_widget_order + weights: + sort: 20 + settings: + sort: DESC + count_widget_order: + processor_id: count_widget_order + weights: + sort: 30 + settings: + sort: DESC + display_value_widget_order: + processor_id: display_value_widget_order + weights: + sort: 40 + settings: + sort: ASC + url_processor_handler: + processor_id: url_processor_handler + weights: + pre_query: 50 + build: 15 + settings: { } diff --git a/modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/config/install/facets.facet_source.list_facet_source__node__oe_sc_news.yml b/modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/config/install/facets.facet_source.list_facet_source__node__oe_sc_news.yml new file mode 100644 index 000000000..9dee8813f --- /dev/null +++ b/modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/config/install/facets.facet_source.list_facet_source__node__oe_sc_news.yml @@ -0,0 +1,8 @@ +langcode: en +status: true +dependencies: { } +id: list_facet_source__node__oe_sc_news +name: 'list_facet_source:node:oe_sc_news' +filter_key: null +url_processor: query_string +breadcrumb: { } diff --git a/modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/config/install/search_api.index.test_index.yml b/modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/config/install/search_api.index.test_index.yml new file mode 100644 index 000000000..18ab97cba --- /dev/null +++ b/modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/config/install/search_api.index.test_index.yml @@ -0,0 +1,54 @@ +uuid: 2e2efeb1-bc17-4255-baae-682af3d89e1a +langcode: en +status: true +dependencies: + config: + - field.storage.node.body + - search_api.server.test + module: + - node + - search_api +id: test_index +name: test_index +description: '' +read_only: false +field_settings: + body: + label: Content + datasource_id: 'entity:node' + property_path: body + type: text + dependencies: + config: + - field.storage.node.body + title: + label: Title + datasource_id: 'entity:node' + property_path: title + type: string + dependencies: + module: + - node +datasource_settings: + 'entity:node': + bundles: + default: false + selected: + - oe_sc_news + languages: + default: true + selected: { } +processor_settings: + add_url: { } + aggregated_field: { } + entity_type: { } + language_with_fallback: { } + rendered_item: { } +tracker_settings: + default: + indexing_order: fifo +options: + cron_limit: 50 + index_directly: true + track_changes_in_references: true +server: test diff --git a/modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/config/install/search_api.server.test.yml b/modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/config/install/search_api.server.test.yml new file mode 100644 index 000000000..c425130b9 --- /dev/null +++ b/modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/config/install/search_api.server.test.yml @@ -0,0 +1,14 @@ +langcode: en +status: true +dependencies: + module: + - search_api + - search_api_db +id: test +name: test +description: '' +backend: search_api_db +backend_config: + database: 'default:default' + min_chars: 1 + matching: words diff --git a/modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/oe_whitelabel_list_pages_test.info.yml b/modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/oe_whitelabel_list_pages_test.info.yml new file mode 100755 index 000000000..62f12a397 --- /dev/null +++ b/modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/oe_whitelabel_list_pages_test.info.yml @@ -0,0 +1,10 @@ +name: OpenEuropa Whitelabel List Pages Test +type: module +description: The test module for OE Whitelabel List Pages. Provides EventSubscriber, facets, index and content ready. +package: OpenEuropa Whitelabel Theme +core_version_requirement: ^9.2 +dependencies: + - facets + - oe_whitelabel_list_pages + - oe_whitelabel_starter_news + - search_api_db diff --git a/modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/oe_whitelabel_list_pages_test.services.yml b/modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/oe_whitelabel_list_pages_test.services.yml new file mode 100644 index 000000000..8c1407101 --- /dev/null +++ b/modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/oe_whitelabel_list_pages_test.services.yml @@ -0,0 +1,6 @@ +services: + oe_whitelabel_list_pages_test.list_page_allowed_types_subscriber: + class: Drupal\oe_whitelabel_list_pages_test\EventSubscriber\ListPageAllowedTypesSubscriber + arguments: ['@state'] + tags: + - { name: event_subscriber } diff --git a/modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/src/EventSubscriber/ListPageAllowedTypesSubscriber.php b/modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/src/EventSubscriber/ListPageAllowedTypesSubscriber.php new file mode 100644 index 000000000..5c720d789 --- /dev/null +++ b/modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/src/EventSubscriber/ListPageAllowedTypesSubscriber.php @@ -0,0 +1,64 @@ +state = $state; + } + + /** + * {@inheritdoc} + */ + public static function getSubscribedEvents() { + return [ + ListPageEvents::ALTER_ENTITY_TYPES => ['onEntityTypesAlter'], + ListPageEvents::ALTER_BUNDLES => ['onBundlesAlter'], + ]; + } + + /** + * Event handler for limiting the allowed entity types. + * + * @param \Drupal\oe_list_pages\ListPageSourceAlterEvent $event + * The event object. + */ + public function onEntityTypesAlter(ListPageSourceAlterEvent $event): void { + $event->setEntityTypes(['node']); + } + + /** + * Event handler for limiting the allowed bundles. + * + * @param \Drupal\oe_list_pages\ListPageSourceAlterEvent $event + * The event object. + */ + public function onBundlesAlter(ListPageSourceAlterEvent $event): void { + $event->setBundles('node', ['oe_sc_news', 'oe_sc_event']); + } + +} diff --git a/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php b/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php new file mode 100644 index 000000000..779683b6c --- /dev/null +++ b/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php @@ -0,0 +1,74 @@ +drupalLogin($this->rootUser); + $this->drupalGet(''); + $this->drupalGet('/node/add/oe_list_page'); + $page = $this->getSession()->getPage(); + $this->drupalGet('/node/add/oe_list_page'); + $this->clickLink('List Page'); + + $page->selectFieldOption('Source bundle', 'News'); + $this->assertSession()->assertWaitOnAjaxRequest(); + $page->checkField('Override default exposed filters'); + $page->checkField('Title'); + $page->pressButton('Save'); + + // Create some test nodes to index and search in. + for ($i = 0; $i < 6; $i++) { + $date = new DrupalDateTime('20-10-2020'); + $values = [ + 'title' => 'News number ' . $i, + 'type' => 'oe_sc_news', + 'body' => 'This is content number ' . $i, + 'status' => NodeInterface::PUBLISHED, + 'created' => $date->getTimestamp(), + ]; + $node = Node::create($values); + $node->save(); + } + + /** @var \Drupal\search_api\Entity\Index $index */ + $index = Index::load('node'); + // Index the nodes. + $index->indexItems(); + + // Check fields are visible in list nodes. + $node = $this->drupalGetNodeByTitle('Node number 5'); + $this->drupalGet($node->toUrl()); + $this->assertSession()->fieldExists('Title'); + $assert = $this->assertSession(); + $assert->pageTextContains('This is content number 5'); + } + +} From 481b26ec6aaf2bf4b36bee4ce52acb5cece4da31 Mon Sep 17 00:00:00 2001 From: escuriola Date: Mon, 4 Apr 2022 00:31:59 +0200 Subject: [PATCH 04/55] OEL-1246: Enable module on runner. --- runner.yml.dist | 1 + 1 file changed, 1 insertion(+) diff --git a/runner.yml.dist b/runner.yml.dist index 78ae4aaad..f76222308 100644 --- a/runner.yml.dist +++ b/runner.yml.dist @@ -19,6 +19,7 @@ drupal: - "./vendor/bin/drush en field_ui -y" - "./vendor/bin/drush en oe_authentication -y" - "./vendor/bin/drush en oe_corporate_blocks -y" + - "./vendor/bin/drush en oe_whitelabel_list_pages -y" - "./vendor/bin/drush en oe_whitelabel_multilingual -y" - "./vendor/bin/drush en oe_whitelabel_contact_forms -y" - "./vendor/bin/drush en oe_whitelabel_helper -y" From 04aef388a3cc718d1e8131e043aa8b6866e34bd2 Mon Sep 17 00:00:00 2001 From: escuriola Date: Tue, 5 Apr 2022 00:20:09 +0200 Subject: [PATCH 05/55] OEL-1246: Add install file to clear facets cache. --- .../install/search_api.index.test_index.yml | 1 - .../oe_whitelabel_list_pages_test.install | 16 ++++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/oe_whitelabel_list_pages_test.install diff --git a/modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/config/install/search_api.index.test_index.yml b/modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/config/install/search_api.index.test_index.yml index 18ab97cba..2828588fc 100644 --- a/modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/config/install/search_api.index.test_index.yml +++ b/modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/config/install/search_api.index.test_index.yml @@ -1,4 +1,3 @@ -uuid: 2e2efeb1-bc17-4255-baae-682af3d89e1a langcode: en status: true dependencies: diff --git a/modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/oe_whitelabel_list_pages_test.install b/modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/oe_whitelabel_list_pages_test.install new file mode 100644 index 000000000..c6399b14a --- /dev/null +++ b/modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/oe_whitelabel_list_pages_test.install @@ -0,0 +1,16 @@ +clearCachedDefinitions(); +} From 813e54a20728cda994e1000d7c45320b8c6b325c Mon Sep 17 00:00:00 2001 From: escuriola Date: Tue, 5 Apr 2022 00:21:17 +0200 Subject: [PATCH 06/55] OEL-1246: Working testing. --- .../tests/src/Functional/ListPagesTest.php | 53 ++++++++++--------- 1 file changed, 28 insertions(+), 25 deletions(-) diff --git a/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php b/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php index 779683b6c..0527157a6 100644 --- a/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php +++ b/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php @@ -7,7 +7,6 @@ use Drupal\Core\Datetime\DrupalDateTime; use Drupal\node\Entity\Node; use Drupal\node\NodeInterface; -use Drupal\search_api\Entity\Index; use Drupal\Tests\oe_whitelabel\Functional\WhitelabelBrowserTestBase; use Drupal\Tests\sparql_entity_storage\Traits\SparqlConnectionTrait; @@ -22,7 +21,6 @@ class ListPagesTest extends WhitelabelBrowserTestBase { * {@inheritdoc} */ protected static $modules = [ - 'oe_list_pages_content_type', 'oe_whitelabel_list_pages_test', ]; @@ -30,22 +28,14 @@ class ListPagesTest extends WhitelabelBrowserTestBase { * Test fields an oe_whitelabel list page. */ public function testListPage(): void { - // Create list for content type one. - $this->drupalLogin($this->rootUser); - $this->drupalGet(''); - $this->drupalGet('/node/add/oe_list_page'); $page = $this->getSession()->getPage(); - $this->drupalGet('/node/add/oe_list_page'); - $this->clickLink('List Page'); + $assert_session = $this->assertSession(); - $page->selectFieldOption('Source bundle', 'News'); - $this->assertSession()->assertWaitOnAjaxRequest(); - $page->checkField('Override default exposed filters'); - $page->checkField('Title'); - $page->pressButton('Save'); + // Create list for content type one. + $this->drupalLogin($this->rootUser); // Create some test nodes to index and search in. - for ($i = 0; $i < 6; $i++) { + for ($i = 0; $i < 11; $i++) { $date = new DrupalDateTime('20-10-2020'); $values = [ 'title' => 'News number ' . $i, @@ -58,17 +48,30 @@ public function testListPage(): void { $node->save(); } - /** @var \Drupal\search_api\Entity\Index $index */ - $index = Index::load('node'); - // Index the nodes. - $index->indexItems(); - - // Check fields are visible in list nodes. - $node = $this->drupalGetNodeByTitle('Node number 5'); - $this->drupalGet($node->toUrl()); - $this->assertSession()->fieldExists('Title'); - $assert = $this->assertSession(); - $assert->pageTextContains('This is content number 5'); + $list_source_factory = $this->container->get('oe_list_pages.list_source.factory'); + $item_list = $list_source_factory->get('node', 'oe_sc_news'); + $item_list->getIndex()->indexItems(); + + $this->drupalGet('/node/add/oe_list_page'); + + $page->fillField('Title', 'News list page'); + $page->selectFieldOption('Source bundle', 'News'); + $page->pressButton('Save'); + + $list_page = $this->getNodeByTitle('News list page'); + $this->drupalGet('node/' . $list_page->id() . '/edit'); + $page->checkField('Override default exposed filters'); + $page->checkField('emr_plugins_oe_list_page[wrapper][exposed_filters][oe_sc_news_title]'); + $page->pressButton('Save'); + + $assert_session->elementExists('css', 'div.bcl-offcanvas'); + $assert_session->elementExists('css', 'input[name="oe_sc_news_title"]'); + $assert_session->elementExists('css', 'button.btn-light > svg'); + $assert_session->elementExists('css', 'nav > ul.pagination'); + $assert_session->elementsCount('css', 'div.bcl-listing.bcl-listing--default-1-col > div.row > div.col > article > div.listing-item', '10'); + $assert_session->elementsCount('css', 'hr', '2'); + $assert_session->elementsCount('css', 'ul.pagination > li.page-item', '3'); + } } From d7b2989a6af68a5416191c242a1af803c4412a16 Mon Sep 17 00:00:00 2001 From: escuriola Date: Tue, 5 Apr 2022 00:22:22 +0200 Subject: [PATCH 07/55] OEL-1246: Trim, striptags and render listing title. --- .../templates/node--oe-list-page--full.html.twig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/oe_whitelabel_list_pages/templates/node--oe-list-page--full.html.twig b/modules/oe_whitelabel_list_pages/templates/node--oe-list-page--full.html.twig index 08e207cc6..4dfe4bbb8 100644 --- a/modules/oe_whitelabel_list_pages/templates/node--oe-list-page--full.html.twig +++ b/modules/oe_whitelabel_list_pages/templates/node--oe-list-page--full.html.twig @@ -24,7 +24,7 @@

- {{ label }} ({{ content['extra_field_oe_list_page_total_count:node:oe_list_page'] }}) + {{ label|render|striptags|trim }} ({{ content['extra_field_oe_list_page_total_count:node:oe_list_page']|render|trim }})

From e304a994c937d3ca518f54a5ba4ce4ce10b7e013 Mon Sep 17 00:00:00 2001 From: escuriola Date: Tue, 5 Apr 2022 00:22:40 +0200 Subject: [PATCH 08/55] OEL-1246: Installation files for the testing module. --- .../install/facets.facet.oe_sc_news_title.yml | 24 +++++++++---------- .../config/install/search_api.server.test.yml | 1 - .../oe_whitelabel_list_pages_test.info.yml | 3 +-- 3 files changed, 13 insertions(+), 15 deletions(-) diff --git a/modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/config/install/facets.facet.oe_sc_news_title.yml b/modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/config/install/facets.facet.oe_sc_news_title.yml index 537f3393b..d97ea6f7c 100644 --- a/modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/config/install/facets.facet.oe_sc_news_title.yml +++ b/modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/config/install/facets.facet.oe_sc_news_title.yml @@ -3,27 +3,24 @@ status: true dependencies: { } id: oe_sc_news_title name: Title +url_alias: oe_sc_news_title weight: 0 min_count: 1 -url_alias: oe_sc_news_title -facet_source_id: 'list_facet_source:node:oe_sc_news' +show_only_one_result: false field_identifier: title +facet_source_id: 'list_facet_source:node:oe_sc_news' +widget: + type: oe_list_pages_fulltext + config: + fulltext_all_fields: true query_operator: or -hard_limit: 0 -exclude: false use_hierarchy: false keep_hierarchy_parents_active: false expand_hierarchy: false enable_parent_when_child_gets_disabled: true -widget: - type: oe_list_pages_fulltext - config: - fulltext_all_fields: true -empty_behavior: - behavior: none +hard_limit: 0 +exclude: false only_visible_when_facet_source_is_visible: false -show_only_one_result: false -show_title: false processor_configs: active_widget_order: processor_id: active_widget_order @@ -49,3 +46,6 @@ processor_configs: pre_query: 50 build: 15 settings: { } +empty_behavior: + behavior: none +show_title: false diff --git a/modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/config/install/search_api.server.test.yml b/modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/config/install/search_api.server.test.yml index c425130b9..338ea2fb9 100644 --- a/modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/config/install/search_api.server.test.yml +++ b/modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/config/install/search_api.server.test.yml @@ -2,7 +2,6 @@ langcode: en status: true dependencies: module: - - search_api - search_api_db id: test name: test diff --git a/modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/oe_whitelabel_list_pages_test.info.yml b/modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/oe_whitelabel_list_pages_test.info.yml index 62f12a397..b6363cddf 100755 --- a/modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/oe_whitelabel_list_pages_test.info.yml +++ b/modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/oe_whitelabel_list_pages_test.info.yml @@ -4,7 +4,6 @@ description: The test module for OE Whitelabel List Pages. Provides EventSubscri package: OpenEuropa Whitelabel Theme core_version_requirement: ^9.2 dependencies: - - facets - oe_whitelabel_list_pages - oe_whitelabel_starter_news - - search_api_db + - search_api:search_api_db From 9542ba6cef864520205a3d28df4da3db82e7489a Mon Sep 17 00:00:00 2001 From: escuriola Date: Tue, 5 Apr 2022 09:40:35 +0200 Subject: [PATCH 09/55] OEL-1246: Assert errors and facet filters. --- .../tests/src/Functional/ListPagesTest.php | 29 +++++++++++++------ 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php b/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php index 0527157a6..26780be92 100644 --- a/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php +++ b/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php @@ -31,11 +31,10 @@ public function testListPage(): void { $page = $this->getSession()->getPage(); $assert_session = $this->assertSession(); - // Create list for content type one. $this->drupalLogin($this->rootUser); - // Create some test nodes to index and search in. - for ($i = 0; $i < 11; $i++) { + // Create some test nodes. + for ($i = 0; $i < 12; $i++) { $date = new DrupalDateTime('20-10-2020'); $values = [ 'title' => 'News number ' . $i, @@ -48,29 +47,41 @@ public function testListPage(): void { $node->save(); } + // Index content. $list_source_factory = $this->container->get('oe_list_pages.list_source.factory'); $item_list = $list_source_factory->get('node', 'oe_sc_news'); $item_list->getIndex()->indexItems(); + // Create list page for News. $this->drupalGet('/node/add/oe_list_page'); - $page->fillField('Title', 'News list page'); + + // Check that select bundle is required. + $page->pressButton('Save'); + $assert_session->elementTextEquals('css', 'div.alert-content', 'Source bundle field is required.'); + $page->selectFieldOption('Source bundle', 'News'); $page->pressButton('Save'); + $assert_session->pageTextMatchesCount(10, '/News number/'); + $assert_session->elementContains('css', 'h4.mb-0 > span', 'News list page'); + $assert_session->elementContains('css', 'h4.mb-0', '(12)'); + $assert_session->elementExists('css', 'div.bcl-offcanvas'); + $assert_session->elementExists('css', 'nav > ul.pagination'); + $assert_session->elementsCount('css', 'div.bcl-listing.bcl-listing--default-1-col > div.row > div.col > article > div.listing-item', '10'); + $assert_session->elementsCount('css', 'hr', 2); + $assert_session->elementsCount('css', 'ul.pagination > li.page-item', 3); + + // Add facets filters. $list_page = $this->getNodeByTitle('News list page'); $this->drupalGet('node/' . $list_page->id() . '/edit'); $page->checkField('Override default exposed filters'); $page->checkField('emr_plugins_oe_list_page[wrapper][exposed_filters][oe_sc_news_title]'); $page->pressButton('Save'); - $assert_session->elementExists('css', 'div.bcl-offcanvas'); + $assert_session->elementContains('css', 'h4.offcanvas-title', 'Filter options'); $assert_session->elementExists('css', 'input[name="oe_sc_news_title"]'); $assert_session->elementExists('css', 'button.btn-light > svg'); - $assert_session->elementExists('css', 'nav > ul.pagination'); - $assert_session->elementsCount('css', 'div.bcl-listing.bcl-listing--default-1-col > div.row > div.col > article > div.listing-item', '10'); - $assert_session->elementsCount('css', 'hr', '2'); - $assert_session->elementsCount('css', 'ul.pagination > li.page-item', '3'); } From 5d49e2fdc17ee35bd879a7bb7c695a9d5b0b7944 Mon Sep 17 00:00:00 2001 From: escuriola Date: Tue, 5 Apr 2022 12:20:39 +0200 Subject: [PATCH 10/55] OEL-1246: Assert if filters are enabled. --- .../node--oe-list-page--full.html.twig | 38 ++++++++++--------- .../tests/src/Functional/ListPagesTest.php | 9 ++++- 2 files changed, 28 insertions(+), 19 deletions(-) diff --git a/modules/oe_whitelabel_list_pages/templates/node--oe-list-page--full.html.twig b/modules/oe_whitelabel_list_pages/templates/node--oe-list-page--full.html.twig index 4dfe4bbb8..b62bd8ee8 100644 --- a/modules/oe_whitelabel_list_pages/templates/node--oe-list-page--full.html.twig +++ b/modules/oe_whitelabel_list_pages/templates/node--oe-list-page--full.html.twig @@ -1,30 +1,34 @@
+
{% set filters = content['extra_field_oe_list_page_filters:node:oe_list_page']|render %} - {{ pattern('offcanvas', { - 'variant': 'search', - 'title': 'Filter options', - 'body': filters, - 'placement': 'start', - 'body_scroll': false, - 'backdrop': true, - 'toggle': { - 'label': 'Filters', - 'variant': 'light', - 'size': 'lg', - 'icon': 'filter', - 'icon_position': 'before', - 'attributes': create_attribute().addClass(['d-lg-none', 'w-100', 'mb-4']), - }, - }) }} + {% if filters|render is not empty %} + {{ pattern('offcanvas', { + 'variant': 'search', + 'title': 'Filter options', + 'body': filters, + 'placement': 'start', + 'body_scroll': false, + 'backdrop': true, + 'toggle': { + 'label': 'Filters', + 'variant': 'light', + 'size': 'lg', + 'icon': 'filter', + 'icon_position': 'before', + 'attributes': create_attribute().addClass(['d-lg-none', 'w-100', 'mb-4']), + }, + }) }} + {% endif %}

- {{ label|render|striptags|trim }} ({{ content['extra_field_oe_list_page_total_count:node:oe_list_page']|render|trim }}) + {{ label|render|striptags|trim }} + ({{ content['extra_field_oe_list_page_total_count:node:oe_list_page']|render|trim }})

diff --git a/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php b/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php index 26780be92..55b5289c8 100644 --- a/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php +++ b/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php @@ -64,9 +64,9 @@ public function testListPage(): void { $page->pressButton('Save'); $assert_session->pageTextMatchesCount(10, '/News number/'); + $assert_session->elementNotExists('css', 'h4.offcanvas-title'); $assert_session->elementContains('css', 'h4.mb-0 > span', 'News list page'); $assert_session->elementContains('css', 'h4.mb-0', '(12)'); - $assert_session->elementExists('css', 'div.bcl-offcanvas'); $assert_session->elementExists('css', 'nav > ul.pagination'); $assert_session->elementsCount('css', 'div.bcl-listing.bcl-listing--default-1-col > div.row > div.col > article > div.listing-item', '10'); $assert_session->elementsCount('css', 'hr', 2); @@ -79,10 +79,15 @@ public function testListPage(): void { $page->checkField('emr_plugins_oe_list_page[wrapper][exposed_filters][oe_sc_news_title]'); $page->pressButton('Save'); - $assert_session->elementContains('css', 'h4.offcanvas-title', 'Filter options'); + $assert_session->elementTextEquals('css', 'h4.offcanvas-title', 'Filter options'); + $assert_session->elementExists('css', 'div.bcl-offcanvas'); $assert_session->elementExists('css', 'input[name="oe_sc_news_title"]'); $assert_session->elementExists('css', 'button.btn-light > svg'); + $page->fillField('Title', 'number'); + $page->pressButton('Search'); + + $assert_session->elementTextEquals('css', 'span.badge.bg-light', 'number'); } } From 1233b0dff3c09ba8be491aa929b18f8658e500eb Mon Sep 17 00:00:00 2001 From: escuriola Date: Tue, 5 Apr 2022 12:26:01 +0200 Subject: [PATCH 11/55] OEL-1246: Remove EOL extra lines. --- .../templates/node--oe-list-page--full.html.twig | 3 --- .../templates/oe-list-pages-selected-facet.html.twig | 2 -- 2 files changed, 5 deletions(-) diff --git a/modules/oe_whitelabel_list_pages/templates/node--oe-list-page--full.html.twig b/modules/oe_whitelabel_list_pages/templates/node--oe-list-page--full.html.twig index b62bd8ee8..4093a4202 100644 --- a/modules/oe_whitelabel_list_pages/templates/node--oe-list-page--full.html.twig +++ b/modules/oe_whitelabel_list_pages/templates/node--oe-list-page--full.html.twig @@ -42,6 +42,3 @@
- - - diff --git a/modules/oe_whitelabel_list_pages/templates/oe-list-pages-selected-facet.html.twig b/modules/oe_whitelabel_list_pages/templates/oe-list-pages-selected-facet.html.twig index 693a506e3..4206d402b 100644 --- a/modules/oe_whitelabel_list_pages/templates/oe-list-pages-selected-facet.html.twig +++ b/modules/oe_whitelabel_list_pages/templates/oe-list-pages-selected-facet.html.twig @@ -6,5 +6,3 @@ 'attributes': create_attribute({'class': ['me-2', 'fs-6']}), }) }} {% endfor %} - - From 58fcd6e7a51c1891d3161a5ee645ab0310ddcfb1 Mon Sep 17 00:00:00 2001 From: escuriola Date: Wed, 6 Apr 2022 13:28:12 +0200 Subject: [PATCH 12/55] OEL-1246: Fix the prophecy-phpunit version. --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 44105900a..f6ff4b4ea 100644 --- a/composer.json +++ b/composer.json @@ -46,7 +46,7 @@ "openeuropa/oe_paragraphs": "^1.13", "openeuropa/oe_starter_content": "1.x-dev", "openeuropa/task-runner-drupal-project-symlink": "^1.0-beta5", - "phpspec/prophecy-phpunit": "^1 || ^2", + "phpspec/prophecy-phpunit": "^2", "symfony/dom-crawler": "^4.4.12" }, "scripts": { From 07a07146b1ea35f5610d9471ae95519f8d257626 Mon Sep 17 00:00:00 2001 From: escuriola Date: Mon, 11 Apr 2022 13:05:17 +0200 Subject: [PATCH 13/55] OEL-1246: Rename server and index. --- ...ndex.oe_whitelabel_list_page_index_test.yml} | 17 ++++------------- ...whitelabel_list_page_search_server_test.yml} | 4 ++-- 2 files changed, 6 insertions(+), 15 deletions(-) rename modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/config/install/{search_api.index.test_index.yml => search_api.index.oe_whitelabel_list_page_index_test.yml} (72%) rename modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/config/install/{search_api.server.test.yml => search_api.server.oe_whitelabel_list_page_search_server_test.yml} (66%) diff --git a/modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/config/install/search_api.index.test_index.yml b/modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/config/install/search_api.index.oe_whitelabel_list_page_index_test.yml similarity index 72% rename from modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/config/install/search_api.index.test_index.yml rename to modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/config/install/search_api.index.oe_whitelabel_list_page_index_test.yml index 2828588fc..5822254d6 100644 --- a/modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/config/install/search_api.index.test_index.yml +++ b/modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/config/install/search_api.index.oe_whitelabel_list_page_index_test.yml @@ -2,24 +2,15 @@ langcode: en status: true dependencies: config: - - field.storage.node.body - - search_api.server.test + - search_api.server.oe_whitelabel_list_page_search_server_test module: - node - search_api -id: test_index -name: test_index +id: oe_whitelabel_list_page_index_test +name: oe_whitelabel_list_page_index_test description: '' read_only: false field_settings: - body: - label: Content - datasource_id: 'entity:node' - property_path: body - type: text - dependencies: - config: - - field.storage.node.body title: label: Title datasource_id: 'entity:node' @@ -50,4 +41,4 @@ options: cron_limit: 50 index_directly: true track_changes_in_references: true -server: test +server: oe_whitelabel_list_page_search_server_test diff --git a/modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/config/install/search_api.server.test.yml b/modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/config/install/search_api.server.oe_whitelabel_list_page_search_server_test.yml similarity index 66% rename from modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/config/install/search_api.server.test.yml rename to modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/config/install/search_api.server.oe_whitelabel_list_page_search_server_test.yml index 338ea2fb9..b18a91a30 100644 --- a/modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/config/install/search_api.server.test.yml +++ b/modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/config/install/search_api.server.oe_whitelabel_list_page_search_server_test.yml @@ -3,8 +3,8 @@ status: true dependencies: module: - search_api_db -id: test -name: test +id: oe_whitelabel_list_page_search_server_test +name: oe_whitelabel_list_page_search_server_test description: '' backend: search_api_db backend_config: From 6d829eead63a69cbb3518ec79054fc0f0009d9df Mon Sep 17 00:00:00 2001 From: escuriola Date: Mon, 11 Apr 2022 13:06:36 +0200 Subject: [PATCH 14/55] OEL-1246: Move templates to oe_whitelabel list templates. --- .../node--oe-list-page--full.html.twig | 44 ------------------- ...item-list--oe-list-pages-results.html.twig | 0 .../node--oe-list-page--full.html.twig | 41 +++++++++++++++++ .../oe-list-pages-selected-facet.html.twig | 1 + 4 files changed, 42 insertions(+), 44 deletions(-) delete mode 100644 modules/oe_whitelabel_list_pages/templates/node--oe-list-page--full.html.twig rename {modules/oe_whitelabel_list_pages/templates => templates/list_pages}/item-list--oe-list-pages-results.html.twig (100%) create mode 100644 templates/list_pages/node--oe-list-page--full.html.twig rename {modules/oe_whitelabel_list_pages/templates => templates/list_pages}/oe-list-pages-selected-facet.html.twig (90%) diff --git a/modules/oe_whitelabel_list_pages/templates/node--oe-list-page--full.html.twig b/modules/oe_whitelabel_list_pages/templates/node--oe-list-page--full.html.twig deleted file mode 100644 index 4093a4202..000000000 --- a/modules/oe_whitelabel_list_pages/templates/node--oe-list-page--full.html.twig +++ /dev/null @@ -1,44 +0,0 @@ - -
-
- -
- {% set filters = content['extra_field_oe_list_page_filters:node:oe_list_page']|render %} - {% if filters|render is not empty %} - {{ pattern('offcanvas', { - 'variant': 'search', - 'title': 'Filter options', - 'body': filters, - 'placement': 'start', - 'body_scroll': false, - 'backdrop': true, - 'toggle': { - 'label': 'Filters', - 'variant': 'light', - 'size': 'lg', - 'icon': 'filter', - 'icon_position': 'before', - 'attributes': create_attribute().addClass(['d-lg-none', 'w-100', 'mb-4']), - }, - }) }} - {% endif %} -
-
-
-
-

- {{ label|render|striptags|trim }} - ({{ content['extra_field_oe_list_page_total_count:node:oe_list_page']|render|trim }}) -

-
-
- {{ content['extra_field_oe_list_page_selected_filters:node:oe_list_page'] }} -
-
-
-
- {{ content['extra_field_oe_list_page_results:node:oe_list_page'] }} -
-
-
- diff --git a/modules/oe_whitelabel_list_pages/templates/item-list--oe-list-pages-results.html.twig b/templates/list_pages/item-list--oe-list-pages-results.html.twig similarity index 100% rename from modules/oe_whitelabel_list_pages/templates/item-list--oe-list-pages-results.html.twig rename to templates/list_pages/item-list--oe-list-pages-results.html.twig diff --git a/templates/list_pages/node--oe-list-page--full.html.twig b/templates/list_pages/node--oe-list-page--full.html.twig new file mode 100644 index 000000000..a6a505163 --- /dev/null +++ b/templates/list_pages/node--oe-list-page--full.html.twig @@ -0,0 +1,41 @@ + +
+
+ {% set filters = content['extra_field_oe_list_page_filters:node:oe_list_page']|render %} + {% if filters|render is not empty %} + {{ pattern('offcanvas', { + 'variant': 'search', + 'title': 'Filter options', + 'body': filters, + 'placement': 'start', + 'body_scroll': false, + 'backdrop': true, + 'toggle': { + 'label': 'Filters', + 'variant': 'light', + 'size': 'lg', + 'icon': 'filter', + 'icon_position': 'before', + 'attributes': create_attribute().addClass(['d-lg-none', 'w-100', 'mb-4']), + }, + }) }} + {% endif %} +
+
+
+
+

+ {{ label|render|striptags|trim }} + ({{ content['extra_field_oe_list_page_total_count:node:oe_list_page']|render|trim }}) +

+
+
+ {{ content['extra_field_oe_list_page_selected_filters:node:oe_list_page'] }} +
+
+
+
+ {{ content['extra_field_oe_list_page_results:node:oe_list_page'] }} +
+
+ diff --git a/modules/oe_whitelabel_list_pages/templates/oe-list-pages-selected-facet.html.twig b/templates/list_pages/oe-list-pages-selected-facet.html.twig similarity index 90% rename from modules/oe_whitelabel_list_pages/templates/oe-list-pages-selected-facet.html.twig rename to templates/list_pages/oe-list-pages-selected-facet.html.twig index 4206d402b..803f56b3f 100644 --- a/modules/oe_whitelabel_list_pages/templates/oe-list-pages-selected-facet.html.twig +++ b/templates/list_pages/oe-list-pages-selected-facet.html.twig @@ -2,6 +2,7 @@ {{ pattern('badge', { 'background': 'light', 'label': item.label, + 'url': item.url, 'dismissible': true, 'attributes': create_attribute({'class': ['me-2', 'fs-6']}), }) }} From 3644a31453048f7155e3ffdb6f969e9df447a3d3 Mon Sep 17 00:00:00 2001 From: escuriola Date: Mon, 11 Apr 2022 13:07:40 +0200 Subject: [PATCH 15/55] OEL-1246: Improve testing. Work in progress. --- .../tests/src/Functional/ListPagesTest.php | 77 +++++++++++-------- 1 file changed, 45 insertions(+), 32 deletions(-) diff --git a/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php b/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php index 55b5289c8..dac1105ce 100644 --- a/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php +++ b/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php @@ -31,8 +31,6 @@ public function testListPage(): void { $page = $this->getSession()->getPage(); $assert_session = $this->assertSession(); - $this->drupalLogin($this->rootUser); - // Create some test nodes. for ($i = 0; $i < 12; $i++) { $date = new DrupalDateTime('20-10-2020'); @@ -48,42 +46,57 @@ public function testListPage(): void { } // Index content. - $list_source_factory = $this->container->get('oe_list_pages.list_source.factory'); - $item_list = $list_source_factory->get('node', 'oe_sc_news'); - $item_list->getIndex()->indexItems(); - - // Create list page for News. - $this->drupalGet('/node/add/oe_list_page'); - $page->fillField('Title', 'News list page'); - - // Check that select bundle is required. - $page->pressButton('Save'); - $assert_session->elementTextEquals('css', 'div.alert-content', 'Source bundle field is required.'); - - $page->selectFieldOption('Source bundle', 'News'); - $page->pressButton('Save'); + $this->indexItems('oe_whitelabel_list_page_index_test'); + + $list_page = Node::create([ + 'type' => 'oe_list_page', + 'title' => 'News list page', + ]); + + /** @var \Drupal\emr\Entity\EntityMetaInterface $list_page_entity_meta */ + $list_page_entity_meta = $list_page->get('emr_entity_metas')->getEntityMeta('oe_list_page'); + /** @var \Drupal\oe_list_pages\ListPageWrapper $list_page_entity_meta_wrapper */ + $list_page_entity_meta_wrapper = $list_page_entity_meta->getWrapper(); + $list_page_entity_meta_wrapper->setSource('node', 'oe_sc_news'); + $list_page_entity_meta_wrapper->setConfiguration([ + 'override_exposed_filters' => 1, + 'exposed_filters' => [ + 'oe_sc_news_title' => 'oe_sc_news_title', + ], + 'preset_filters' => [], + 'limit' => 10, + 'sort' => [], + ]); + $list_page->get('emr_entity_metas')->attach($list_page_entity_meta); + $list_page->save(); + + $this->drupalGet('node/' . $list_page->id()); + + // Assert the left column. + $assert_session->elementExists('css', 'article > div.row > div.col-12.col-lg-3'); + // Assert offcanvas. + $assert_session->elementExists('css', 'div.bcl-offcanvas'); + $assert_session->elementTextEquals('css', 'h4.offcanvas-title', 'Filter options'); + $assert_session->elementExists('css', 'button.btn-light > svg'); + $assert_session->elementTextEquals('css', 'button[data-bs-toggle="offcanvas"]', 'Filters'); + // Assert Filters. + $assert_session->elementExists('css', 'input[name="oe_sc_news_title"]'); + $assert_session->elementExists('css', 'input.btn-primary'); + $assert_session->fieldValueEquals('input.btn-primary', 'Search'); + $assert_session->elementExists('css', 'input.btn-secondary'); + $assert_session->fieldValueEquals('input.btn-secondary', 'Clear filters'); - $assert_session->pageTextMatchesCount(10, '/News number/'); - $assert_session->elementNotExists('css', 'h4.offcanvas-title'); + // Assert right column. + $assert_session->elementExists('css', 'article > div.row > div.col-12 col-lg-9 col-xxl-8'); $assert_session->elementContains('css', 'h4.mb-0 > span', 'News list page'); $assert_session->elementContains('css', 'h4.mb-0', '(12)'); - $assert_session->elementExists('css', 'nav > ul.pagination'); - $assert_session->elementsCount('css', 'div.bcl-listing.bcl-listing--default-1-col > div.row > div.col > article > div.listing-item', '10'); + // Assert listing. $assert_session->elementsCount('css', 'hr', 2); + $assert_session->elementsCount('css', 'div.bcl-listing.bcl-listing--default-1-col > div.row > div.col > article > div.listing-item', '10'); + // Assert pagination. + $assert_session->elementExists('css', 'nav > ul.pagination'); $assert_session->elementsCount('css', 'ul.pagination > li.page-item', 3); - // Add facets filters. - $list_page = $this->getNodeByTitle('News list page'); - $this->drupalGet('node/' . $list_page->id() . '/edit'); - $page->checkField('Override default exposed filters'); - $page->checkField('emr_plugins_oe_list_page[wrapper][exposed_filters][oe_sc_news_title]'); - $page->pressButton('Save'); - - $assert_session->elementTextEquals('css', 'h4.offcanvas-title', 'Filter options'); - $assert_session->elementExists('css', 'div.bcl-offcanvas'); - $assert_session->elementExists('css', 'input[name="oe_sc_news_title"]'); - $assert_session->elementExists('css', 'button.btn-light > svg'); - $page->fillField('Title', 'number'); $page->pressButton('Search'); From 240e766e1a4f04a88efd08a55d4766d980a25e92 Mon Sep 17 00:00:00 2001 From: escuriola Date: Mon, 11 Apr 2022 13:08:35 +0200 Subject: [PATCH 16/55] OEL-1246: Improve testing work in progress. --- .../oe_whitelabel_list_pages_test.info.yml | 7 +++++++ .../tests/src/Functional/ListPagesTest.php | 16 ++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/oe_whitelabel_list_pages_test.info.yml b/modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/oe_whitelabel_list_pages_test.info.yml index b6363cddf..dfa0c83c4 100755 --- a/modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/oe_whitelabel_list_pages_test.info.yml +++ b/modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/oe_whitelabel_list_pages_test.info.yml @@ -7,3 +7,10 @@ dependencies: - oe_whitelabel_list_pages - oe_whitelabel_starter_news - search_api:search_api_db + +config_devel: + install: + - facets.facet.oe_sc_news_title + - facets.facet_source.list_facet_source__node__oe_sc_news + - search_api.index.oe_whitelabel_list_page_index_test + - search_api.server.oe_whitelabel_list_page_search_server_test diff --git a/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php b/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php index dac1105ce..9c4ff7beb 100644 --- a/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php +++ b/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php @@ -9,6 +9,7 @@ use Drupal\node\NodeInterface; use Drupal\Tests\oe_whitelabel\Functional\WhitelabelBrowserTestBase; use Drupal\Tests\sparql_entity_storage\Traits\SparqlConnectionTrait; +use Drupal\search_api\Entity\Index; /** * Tests the whitelabel oe_list_pages. @@ -103,4 +104,19 @@ public function testListPage(): void { $assert_session->elementTextEquals('css', 'span.badge.bg-light', 'number'); } + /** + * Indexes all (unindexed) items on the specified index. + * + * @param string $index_id + * The ID of the index on which items should be indexed. + * + * @return int + * The number of successfully indexed items. + */ + protected function indexItems($index_id) { + /** @var \Drupal\search_api\IndexInterface $index */ + $index = Index::load($index_id); + return $index->indexItems(); + } + } From 233e674e9b7dc5ba4bc1f4aecc5489d2dad5601d Mon Sep 17 00:00:00 2001 From: Sergio Elvira Perez Date: Mon, 11 Apr 2022 16:35:25 +0200 Subject: [PATCH 17/55] OEL-1246: Fix tests for listing pages. --- ...i.index.oe_whitelabel_list_page_index_test.yml | 9 ++++++++- .../tests/src/Functional/ListPagesTest.php | 15 +++++++-------- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/config/install/search_api.index.oe_whitelabel_list_page_index_test.yml b/modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/config/install/search_api.index.oe_whitelabel_list_page_index_test.yml index 5822254d6..73b2ed06e 100644 --- a/modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/config/install/search_api.index.oe_whitelabel_list_page_index_test.yml +++ b/modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/config/install/search_api.index.oe_whitelabel_list_page_index_test.yml @@ -15,7 +15,7 @@ field_settings: label: Title datasource_id: 'entity:node' property_path: title - type: string + type: text dependencies: module: - node @@ -32,6 +32,13 @@ processor_settings: add_url: { } aggregated_field: { } entity_type: { } + ignorecase: + weights: + preprocess_index: -20 + preprocess_query: -20 + all_fields: false + fields: + - title language_with_fallback: { } rendered_item: { } tracker_settings: diff --git a/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php b/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php index 9c4ff7beb..234422931 100644 --- a/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php +++ b/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php @@ -82,13 +82,11 @@ public function testListPage(): void { $assert_session->elementTextEquals('css', 'button[data-bs-toggle="offcanvas"]', 'Filters'); // Assert Filters. $assert_session->elementExists('css', 'input[name="oe_sc_news_title"]'); - $assert_session->elementExists('css', 'input.btn-primary'); - $assert_session->fieldValueEquals('input.btn-primary', 'Search'); - $assert_session->elementExists('css', 'input.btn-secondary'); - $assert_session->fieldValueEquals('input.btn-secondary', 'Clear filters'); + $assert_session->elementExists('css', 'input[data-drupal-selector="edit-submit"]'); + $assert_session->elementExists('css', 'input[data-drupal-selector="edit-reset"]'); // Assert right column. - $assert_session->elementExists('css', 'article > div.row > div.col-12 col-lg-9 col-xxl-8'); + $assert_session->elementExists('css', 'article > div.row > div.col-12.col-lg-9.col-xxl-8'); $assert_session->elementContains('css', 'h4.mb-0 > span', 'News list page'); $assert_session->elementContains('css', 'h4.mb-0', '(12)'); // Assert listing. @@ -98,10 +96,11 @@ public function testListPage(): void { $assert_session->elementExists('css', 'nav > ul.pagination'); $assert_session->elementsCount('css', 'ul.pagination > li.page-item', 3); - $page->fillField('Title', 'number'); + // Assert search. + $page->fillField('Title', 'News number 8'); $page->pressButton('Search'); - - $assert_session->elementTextEquals('css', 'span.badge.bg-light', 'number'); + $assert_session->elementContains('css', 'h4.mb-0', '(1)'); + $assert_session->elementTextEquals('css', 'span.badge.bg-light', 'News number 8'); } /** From 16db19d2dd2093ac72d18f4117c7d15beacc520b Mon Sep 17 00:00:00 2001 From: Sergio Elvira Perez Date: Mon, 11 Apr 2022 16:42:13 +0200 Subject: [PATCH 18/55] OEL-1246: Remove readme uneeded. --- .../oe_whitelabel_list_pages_test/README.md | 19 ------------------- 1 file changed, 19 deletions(-) delete mode 100644 modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/README.md diff --git a/modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/README.md b/modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/README.md deleted file mode 100644 index 5e9b1af02..000000000 --- a/modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/README.md +++ /dev/null @@ -1,19 +0,0 @@ -# OpenEuropa Whitelabel oe_list_page test - -This module provides an environment to test manually oe_whitelabel_list_pages. - -## Requirements - -- Add this line to an override settings.php file: -```json -$settings['extension_discovery_scan_tests'] = TRUE; -``` -- Enable this module. -- Create some oe_sc_news content. -- Create a new List Page and configure: - - Title: "News" - - Source entity type: "Content" - - Source bundle: News - - Override default exposed filters: enabled - - Exposed filters: Enable "Title" -- Save From cd2ad677862b6b39c6c77f6d0cec7554af467ff0 Mon Sep 17 00:00:00 2001 From: Sergio Elvira Perez Date: Tue, 12 Apr 2022 10:36:09 +0200 Subject: [PATCH 19/55] OEL-1246: Update readme. --- modules/oe_whitelabel_list_pages/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/oe_whitelabel_list_pages/README.md b/modules/oe_whitelabel_list_pages/README.md index 36b8724f1..9ece78b45 100644 --- a/modules/oe_whitelabel_list_pages/README.md +++ b/modules/oe_whitelabel_list_pages/README.md @@ -1,3 +1,3 @@ # OpenEuropa Whitelabel list pages -This module provides list page for oe_whitelabel bundles. +This module is a theming companion module to the [OpenEuropa List Pages](https://github.com/openeuropa/oe_list_pages) component. It provides the logic needed to theme the list pages.. From 4a1ed059e64bb44b6de2dd323e7f90f9274f0357 Mon Sep 17 00:00:00 2001 From: Sergio Elvira Perez Date: Tue, 12 Apr 2022 10:46:36 +0200 Subject: [PATCH 20/55] OEL-1246: Improve module form hooks. --- .../oe_whitelabel_list_pages.module | 32 +++---------------- 1 file changed, 4 insertions(+), 28 deletions(-) diff --git a/modules/oe_whitelabel_list_pages/oe_whitelabel_list_pages.module b/modules/oe_whitelabel_list_pages/oe_whitelabel_list_pages.module index 09c1b144f..0c691b507 100644 --- a/modules/oe_whitelabel_list_pages/oe_whitelabel_list_pages.module +++ b/modules/oe_whitelabel_list_pages/oe_whitelabel_list_pages.module @@ -9,44 +9,20 @@ declare(strict_types = 1); use Drupal\Core\Form\FormStateInterface; -/** - * Implements hook_theme(). - */ -function oe_whitelabel_list_pages_theme() { - return [ - 'node__oe_list_page__full' => [ - 'render element' => 'elements', - 'base hook' => 'node', - ], - ]; -} - /** * Implements hook_form_FORM_ID_alter() for facets_forms. */ -function oe_whitelabel_form_oe_list_pages_facets_form_alter(&$form, FormStateInterface $form_state, $form_id) { +function oe_whitelabel_list_pages_form_oe_list_pages_facets_form_alter(&$form, FormStateInterface $form_state, $form_id) { if (isset($form['actions'])) { $action_classes = ['mt-4', 'd-grid', 'gap-4', 'd-md-block']; - foreach ($action_classes as $action_class) { - if (!isset($action_class, $form['actions']['#attributes']['class']) || !in_array($action_class, $form['actions']['#attributes']['class'], TRUE)) { - $form['actions']['#attributes']['class'][] = $action_class; - } - } + $form['actions']['#attributes']['class'] = array_unique(array_merge($form['actions']['#attributes']['class'] ?? [], $action_classes)); } if (isset($form['actions']['submit'])) { $submit_classes = ['me-md-3', 'btn', 'btn-primary', 'btn-md']; - foreach ($submit_classes as $submit_class) { - if (!isset($submit_class, $form['actions']['submit']['#attributes']['class']) || !in_array($submit_class, $form['actions']['submit']['#attributes']['class'], TRUE)) { - $form['actions']['submit']['#attributes']['class'][] = $submit_class; - } - } + $form['actions']['submit']['#attributes']['class'] = array_unique(array_merge($form['actions']['submit']['#attributes']['class'] ?? [], $submit_classes)); } if (isset($form['actions']['reset'])) { $reset_classes = ['btn', 'btn-light', 'btn-md']; - foreach ($reset_classes as $reset_class) { - if (!isset($form['actions']['reset']['#attributes']['class']) || !in_array($reset_class, $form['actions']['reset']['#attributes']['class'], TRUE)) { - $form['actions']['reset']['#attributes']['class'][] = $reset_class; - } - } + $form['actions']['reset']['#attributes']['class'] = array_unique(array_merge($form['actions']['reset']['#attributes']['class'] ?? [], $reset_classes)); } } From 2898758631a449e899045fc346919b63e5fe4b41 Mon Sep 17 00:00:00 2001 From: Sergio Elvira Perez Date: Tue, 12 Apr 2022 10:47:36 +0200 Subject: [PATCH 21/55] OEL-1246: Improve testing. --- .../tests/src/Functional/ListPagesTest.php | 24 ++++--------------- 1 file changed, 5 insertions(+), 19 deletions(-) diff --git a/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php b/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php index 234422931..44b8bdfa5 100644 --- a/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php +++ b/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php @@ -8,14 +8,15 @@ use Drupal\node\Entity\Node; use Drupal\node\NodeInterface; use Drupal\Tests\oe_whitelabel\Functional\WhitelabelBrowserTestBase; +use Drupal\Tests\search_api\Functional\ExampleContentTrait; use Drupal\Tests\sparql_entity_storage\Traits\SparqlConnectionTrait; -use Drupal\search_api\Entity\Index; /** * Tests the whitelabel oe_list_pages. */ class ListPagesTest extends WhitelabelBrowserTestBase { + use ExampleContentTrait; use SparqlConnectionTrait; /** @@ -74,7 +75,7 @@ public function testListPage(): void { $this->drupalGet('node/' . $list_page->id()); // Assert the left column. - $assert_session->elementExists('css', 'article > div.row > div.col-12.col-lg-3'); + $assert_session->elementExists('css', 'div.row > div.col-12.col-lg-3'); // Assert offcanvas. $assert_session->elementExists('css', 'div.bcl-offcanvas'); $assert_session->elementTextEquals('css', 'h4.offcanvas-title', 'Filter options'); @@ -86,12 +87,12 @@ public function testListPage(): void { $assert_session->elementExists('css', 'input[data-drupal-selector="edit-reset"]'); // Assert right column. - $assert_session->elementExists('css', 'article > div.row > div.col-12.col-lg-9.col-xxl-8'); + $assert_session->elementExists('css', 'div.row > div.col-12.col-lg-9.col-xxl-8'); $assert_session->elementContains('css', 'h4.mb-0 > span', 'News list page'); $assert_session->elementContains('css', 'h4.mb-0', '(12)'); // Assert listing. $assert_session->elementsCount('css', 'hr', 2); - $assert_session->elementsCount('css', 'div.bcl-listing.bcl-listing--default-1-col > div.row > div.col > article > div.listing-item', '10'); + $assert_session->elementsCount('css', 'div.listing-item', '10'); // Assert pagination. $assert_session->elementExists('css', 'nav > ul.pagination'); $assert_session->elementsCount('css', 'ul.pagination > li.page-item', 3); @@ -103,19 +104,4 @@ public function testListPage(): void { $assert_session->elementTextEquals('css', 'span.badge.bg-light', 'News number 8'); } - /** - * Indexes all (unindexed) items on the specified index. - * - * @param string $index_id - * The ID of the index on which items should be indexed. - * - * @return int - * The number of successfully indexed items. - */ - protected function indexItems($index_id) { - /** @var \Drupal\search_api\IndexInterface $index */ - $index = Index::load($index_id); - return $index->indexItems(); - } - } From c2e074a530e0aea8bdd69355b1a7b650506cf90f Mon Sep 17 00:00:00 2001 From: Sergio Elvira Perez Date: Tue, 12 Apr 2022 10:48:12 +0200 Subject: [PATCH 22/55] OEL-1246: Remove article from the template. --- .../node--oe-list-page--full.html.twig | 74 +++++++++---------- 1 file changed, 36 insertions(+), 38 deletions(-) diff --git a/templates/list_pages/node--oe-list-page--full.html.twig b/templates/list_pages/node--oe-list-page--full.html.twig index a6a505163..c63ec5a8e 100644 --- a/templates/list_pages/node--oe-list-page--full.html.twig +++ b/templates/list_pages/node--oe-list-page--full.html.twig @@ -1,41 +1,39 @@ - -
-
- {% set filters = content['extra_field_oe_list_page_filters:node:oe_list_page']|render %} - {% if filters|render is not empty %} - {{ pattern('offcanvas', { - 'variant': 'search', - 'title': 'Filter options', - 'body': filters, - 'placement': 'start', - 'body_scroll': false, - 'backdrop': true, - 'toggle': { - 'label': 'Filters', - 'variant': 'light', - 'size': 'lg', - 'icon': 'filter', - 'icon_position': 'before', - 'attributes': create_attribute().addClass(['d-lg-none', 'w-100', 'mb-4']), - }, - }) }} - {% endif %} -
-
-
-
-

- {{ label|render|striptags|trim }} - ({{ content['extra_field_oe_list_page_total_count:node:oe_list_page']|render|trim }}) -

-
-
- {{ content['extra_field_oe_list_page_selected_filters:node:oe_list_page'] }} -
-
-
+
+
+ {% set filters = content['extra_field_oe_list_page_filters:node:oe_list_page']|render %} + {% if filters|render is not empty %} + {{ pattern('offcanvas', { + 'variant': 'search', + 'title': 'Filter options', + 'body': filters, + 'placement': 'start', + 'body_scroll': false, + 'backdrop': true, + 'toggle': { + 'label': 'Filters', + 'variant': 'light', + 'size': 'lg', + 'icon': 'filter', + 'icon_position': 'before', + 'attributes': create_attribute().addClass(['d-lg-none', 'w-100', 'mb-4']), + }, + }) }} + {% endif %} +
+
+
+
+

+ {{ label|render|striptags|trim }} + ({{ content['extra_field_oe_list_page_total_count:node:oe_list_page']|render|trim }}) +

+
+
+ {{ content['extra_field_oe_list_page_selected_filters:node:oe_list_page'] }} +
+
- {{ content['extra_field_oe_list_page_results:node:oe_list_page'] }}
+ {{ content['extra_field_oe_list_page_results:node:oe_list_page'] }}
- +
From b5d738755c72e815e94a9eb145fb88c2743e9c2d Mon Sep 17 00:00:00 2001 From: Sergio Elvira Perez Date: Tue, 12 Apr 2022 13:42:47 +0200 Subject: [PATCH 23/55] OEL-1246: Export the entity form display. --- ...form_display.node.oe_list_page.default.yml | 43 +++++-------------- 1 file changed, 11 insertions(+), 32 deletions(-) diff --git a/modules/oe_whitelabel_list_pages/config/install/core.entity_form_display.node.oe_list_page.default.yml b/modules/oe_whitelabel_list_pages/config/install/core.entity_form_display.node.oe_list_page.default.yml index 9d891111c..9d3dd4c95 100644 --- a/modules/oe_whitelabel_list_pages/config/install/core.entity_form_display.node.oe_list_page.default.yml +++ b/modules/oe_whitelabel_list_pages/config/install/core.entity_form_display.node.oe_list_page.default.yml @@ -4,7 +4,7 @@ dependencies: config: - node.type.oe_list_page module: - - user + - path id: node.oe_list_page.default targetEntityType: node bundle: oe_list_page @@ -12,64 +12,40 @@ mode: default content: created: type: datetime_timestamp - weight: 6 + weight: 3 region: content settings: { } third_party_settings: { } langcode: type: language_select - weight: 4 - region: content - settings: - include_locked: true - third_party_settings: { } - oe_content_legacy_link: - type: link_default - weight: 3 - region: content - settings: - placeholder_url: '' - placeholder_title: '' - third_party_settings: { } - oe_content_navigation_title: - type: string_textfield - weight: 2 - region: content - settings: - size: 60 - placeholder: '' - third_party_settings: { } - oe_content_short_title: - type: string_textfield weight: 1 region: content settings: - size: 60 - placeholder: '' + include_locked: true third_party_settings: { } path: type: path - weight: 9 + weight: 6 region: content settings: { } third_party_settings: { } promote: type: boolean_checkbox - weight: 7 + weight: 4 region: content settings: display_label: true third_party_settings: { } status: type: boolean_checkbox - weight: 10 + weight: 7 region: content settings: display_label: true third_party_settings: { } sticky: type: boolean_checkbox - weight: 8 + weight: 5 region: content settings: display_label: true @@ -84,7 +60,7 @@ content: third_party_settings: { } uid: type: entity_reference_autocomplete - weight: 5 + weight: 2 region: content settings: match_operator: CONTAINS @@ -94,3 +70,6 @@ content: third_party_settings: { } hidden: oe_content_content_owner: true + oe_content_legacy_link: true + oe_content_navigation_title: true + oe_content_short_title: true From b28f22ee432ded40ea91fa654724c73bb3880dea Mon Sep 17 00:00:00 2001 From: Sergio Elvira Perez Date: Wed, 13 Apr 2022 08:58:04 +0200 Subject: [PATCH 24/55] OEL-1246: Order runner list. --- runner.yml.dist | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/runner.yml.dist b/runner.yml.dist index f76222308..073d90cd2 100644 --- a/runner.yml.dist +++ b/runner.yml.dist @@ -19,14 +19,14 @@ drupal: - "./vendor/bin/drush en field_ui -y" - "./vendor/bin/drush en oe_authentication -y" - "./vendor/bin/drush en oe_corporate_blocks -y" - - "./vendor/bin/drush en oe_whitelabel_list_pages -y" - - "./vendor/bin/drush en oe_whitelabel_multilingual -y" - - "./vendor/bin/drush en oe_whitelabel_contact_forms -y" - "./vendor/bin/drush en oe_whitelabel_helper -y" + - "./vendor/bin/drush en oe_whitelabel_contact_forms -y" + - "./vendor/bin/drush en oe_whitelabel_multilingual -y" + - "./vendor/bin/drush en oe_whitelabel_paragraphs -y" - "./vendor/bin/drush en oe_whitelabel_search -y" - - "./vendor/bin/drush en oe_whitelabel_starter_news -y" + - "./vendor/bin/drush en oe_whitelabel_list_pages -y" - "./vendor/bin/drush en oe_whitelabel_starter_event -y" - - "./vendor/bin/drush en oe_whitelabel_paragraphs -y" + - "./vendor/bin/drush en oe_whitelabel_starter_news -y" - "./vendor/bin/drush en toolbar -y" - "./vendor/bin/drush theme:enable oe_whitelabel -y" - "./vendor/bin/drush theme:enable seven -y" From c9aa4e5b2bdfceb70356a7feeb9b93b999b96b78 Mon Sep 17 00:00:00 2001 From: Sergio Elvira Perez Date: Wed, 13 Apr 2022 10:18:52 +0200 Subject: [PATCH 25/55] OEL-1246: Export entity form display. --- ...e.entity_form_display.node.oe_list_page.default.yml | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/modules/oe_whitelabel_list_pages/config/install/core.entity_form_display.node.oe_list_page.default.yml b/modules/oe_whitelabel_list_pages/config/install/core.entity_form_display.node.oe_list_page.default.yml index 9d3dd4c95..559217547 100644 --- a/modules/oe_whitelabel_list_pages/config/install/core.entity_form_display.node.oe_list_page.default.yml +++ b/modules/oe_whitelabel_list_pages/config/install/core.entity_form_display.node.oe_list_page.default.yml @@ -3,8 +3,6 @@ status: true dependencies: config: - node.type.oe_list_page - module: - - path id: node.oe_list_page.default targetEntityType: node bundle: oe_list_page @@ -23,12 +21,6 @@ content: settings: include_locked: true third_party_settings: { } - path: - type: path - weight: 6 - region: content - settings: { } - third_party_settings: { } promote: type: boolean_checkbox weight: 4 @@ -38,7 +30,7 @@ content: third_party_settings: { } status: type: boolean_checkbox - weight: 7 + weight: 6 region: content settings: display_label: true From 74b997f503ce26ee886c713dcf88f27cd8e39ab2 Mon Sep 17 00:00:00 2001 From: Andreas Hennings Date: Tue, 24 May 2022 19:24:24 +0200 Subject: [PATCH 26/55] OEL-1450: Remove duplicate
, no longer needed after merging 1.x. In 1.x, a
was added via pager.html.twig. In list pages epic, a
was added via item-list--oe-list-pages-results.html.twig. After merging, there are now two
that separate the list from the pager. One of them needed to be removed. --- templates/list_pages/item-list--oe-list-pages-results.html.twig | 1 - 1 file changed, 1 deletion(-) diff --git a/templates/list_pages/item-list--oe-list-pages-results.html.twig b/templates/list_pages/item-list--oe-list-pages-results.html.twig index 8acea4bf0..a18164bf7 100644 --- a/templates/list_pages/item-list--oe-list-pages-results.html.twig +++ b/templates/list_pages/item-list--oe-list-pages-results.html.twig @@ -31,4 +31,3 @@ {%- endif -%}
-
From 1d4694844e4d978750e5a5fdc66d30d6481fdb31 Mon Sep 17 00:00:00 2001 From: Andreas Hennings Date: Tue, 24 May 2022 19:47:48 +0200 Subject: [PATCH 27/55] OEL-1450: Update pager link count to include link to last page. --- .../tests/src/Functional/ListPagesTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php b/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php index 44b8bdfa5..38a9f5db3 100644 --- a/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php +++ b/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php @@ -95,7 +95,7 @@ public function testListPage(): void { $assert_session->elementsCount('css', 'div.listing-item', '10'); // Assert pagination. $assert_session->elementExists('css', 'nav > ul.pagination'); - $assert_session->elementsCount('css', 'ul.pagination > li.page-item', 3); + $assert_session->elementsCount('css', 'ul.pagination > li.page-item', 4); // Assert search. $page->fillField('Title', 'News number 8'); From 65485e4fb580f5bc5edc784948150343027b51dd Mon Sep 17 00:00:00 2001 From: Sergio Elvira Prez Date: Thu, 12 May 2022 15:12:39 +0200 Subject: [PATCH 28/55] OEL-1514: Update readme. --- modules/oe_whitelabel_list_pages/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/oe_whitelabel_list_pages/README.md b/modules/oe_whitelabel_list_pages/README.md index 9ece78b45..3149aaec1 100644 --- a/modules/oe_whitelabel_list_pages/README.md +++ b/modules/oe_whitelabel_list_pages/README.md @@ -1,3 +1,3 @@ # OpenEuropa Whitelabel list pages -This module is a theming companion module to the [OpenEuropa List Pages](https://github.com/openeuropa/oe_list_pages) component. It provides the logic needed to theme the list pages.. +This module is a theming companion module to the [OpenEuropa List Pages](https://github.com/openeuropa/oe_list_pages) component. It provides the logic needed to theme the list pages. From 908e9d7f4ccdb5bf16a7e7d27300ba9b67774da2 Mon Sep 17 00:00:00 2001 From: Sergio Elvira Prez Date: Thu, 12 May 2022 15:14:24 +0200 Subject: [PATCH 29/55] OEL-1514: Remove uneeded subscriber and service. --- ...oe_whitelabel_list_pages_test.services.yml | 6 -- .../ListPageAllowedTypesSubscriber.php | 64 ------------------- 2 files changed, 70 deletions(-) delete mode 100644 modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/oe_whitelabel_list_pages_test.services.yml delete mode 100644 modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/src/EventSubscriber/ListPageAllowedTypesSubscriber.php diff --git a/modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/oe_whitelabel_list_pages_test.services.yml b/modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/oe_whitelabel_list_pages_test.services.yml deleted file mode 100644 index 8c1407101..000000000 --- a/modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/oe_whitelabel_list_pages_test.services.yml +++ /dev/null @@ -1,6 +0,0 @@ -services: - oe_whitelabel_list_pages_test.list_page_allowed_types_subscriber: - class: Drupal\oe_whitelabel_list_pages_test\EventSubscriber\ListPageAllowedTypesSubscriber - arguments: ['@state'] - tags: - - { name: event_subscriber } diff --git a/modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/src/EventSubscriber/ListPageAllowedTypesSubscriber.php b/modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/src/EventSubscriber/ListPageAllowedTypesSubscriber.php deleted file mode 100644 index 5c720d789..000000000 --- a/modules/oe_whitelabel_list_pages/tests/modules/oe_whitelabel_list_pages_test/src/EventSubscriber/ListPageAllowedTypesSubscriber.php +++ /dev/null @@ -1,64 +0,0 @@ -state = $state; - } - - /** - * {@inheritdoc} - */ - public static function getSubscribedEvents() { - return [ - ListPageEvents::ALTER_ENTITY_TYPES => ['onEntityTypesAlter'], - ListPageEvents::ALTER_BUNDLES => ['onBundlesAlter'], - ]; - } - - /** - * Event handler for limiting the allowed entity types. - * - * @param \Drupal\oe_list_pages\ListPageSourceAlterEvent $event - * The event object. - */ - public function onEntityTypesAlter(ListPageSourceAlterEvent $event): void { - $event->setEntityTypes(['node']); - } - - /** - * Event handler for limiting the allowed bundles. - * - * @param \Drupal\oe_list_pages\ListPageSourceAlterEvent $event - * The event object. - */ - public function onBundlesAlter(ListPageSourceAlterEvent $event): void { - $event->setBundles('node', ['oe_sc_news', 'oe_sc_event']); - } - -} From 6d029c3c9d898048a6200596e965c7742c7204a0 Mon Sep 17 00:00:00 2001 From: Sergio Elvira Prez Date: Thu, 12 May 2022 15:15:05 +0200 Subject: [PATCH 30/55] OEL-1514: Update whitelabel list pages info description. --- .../oe_whitelabel_list_pages/oe_whitelabel_list_pages.info.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/oe_whitelabel_list_pages/oe_whitelabel_list_pages.info.yml b/modules/oe_whitelabel_list_pages/oe_whitelabel_list_pages.info.yml index bd9a7c763..d51f660c8 100644 --- a/modules/oe_whitelabel_list_pages/oe_whitelabel_list_pages.info.yml +++ b/modules/oe_whitelabel_list_pages/oe_whitelabel_list_pages.info.yml @@ -1,6 +1,6 @@ name: OpenEuropa Whitelabel List Pages type: module -description: Provides list pages to Open Whitelabel entities. +description: Companion module for the OE List Pages module. package: OpenEuropa Whitelabel Theme core_version_requirement: ^9.2 From b497276e21a9eeec0d2e7913eb532b6de4711463 Mon Sep 17 00:00:00 2001 From: Sergio Elvira Prez Date: Thu, 12 May 2022 15:15:22 +0200 Subject: [PATCH 31/55] OEL-1514: Update templates to check if selected filters are empty. --- .../item-list--oe-list-pages-results.html.twig | 13 ------------- .../list_pages/node--oe-list-page--full.html.twig | 9 ++++++--- 2 files changed, 6 insertions(+), 16 deletions(-) diff --git a/templates/list_pages/item-list--oe-list-pages-results.html.twig b/templates/list_pages/item-list--oe-list-pages-results.html.twig index a18164bf7..028cb8a38 100644 --- a/templates/list_pages/item-list--oe-list-pages-results.html.twig +++ b/templates/list_pages/item-list--oe-list-pages-results.html.twig @@ -3,19 +3,6 @@ * @file * Item list theme override for a oe_list_pages list template. * - * Available variables: - * - items: A list of items. Each item contains: - * - attributes: HTML attributes to be applied to each list item. - * - value: The content of the list element. - * - title: The title of the list. - * - list_type: The tag for list element ("ul" or "ol"). - * - wrapper_attributes: HTML attributes to be applied to the list wrapper. - * - attributes: HTML attributes to be applied to the list. - * - empty: A message to display when there are no items. Allowed value is a - * string or render array. - * - context: A list of contextual data associated with the list. May contain: - * - list_style: The custom list style. - * * @see template_preprocess_item_list() */ #} diff --git a/templates/list_pages/node--oe-list-page--full.html.twig b/templates/list_pages/node--oe-list-page--full.html.twig index c63ec5a8e..7053bcf09 100644 --- a/templates/list_pages/node--oe-list-page--full.html.twig +++ b/templates/list_pages/node--oe-list-page--full.html.twig @@ -1,5 +1,5 @@
-
+
{% set filters = content['extra_field_oe_list_page_filters:node:oe_list_page']|render %} {% if filters|render is not empty %} {{ pattern('offcanvas', { @@ -20,7 +20,7 @@ }) }} {% endif %}
-
+

@@ -29,7 +29,10 @@

- {{ content['extra_field_oe_list_page_selected_filters:node:oe_list_page'] }} + {% set selected_filters = content['extra_field_oe_list_page_selected_filters:node:oe_list_page'] %} + {% if selected_filters[0]|length > 1 %} + {{ selected_filters }} + {% endif %}
From 7c3457f274bcdcfe195aae30bf971a622a2e1ed2 Mon Sep 17 00:00:00 2001 From: Sergio Elvira Prez Date: Fri, 13 May 2022 10:58:55 +0200 Subject: [PATCH 32/55] OEL-1514: Remove entity form display moved it to oe_showcase. --- ...form_display.node.oe_list_page.default.yml | 67 ------------------- .../oe_whitelabel_list_pages.info.yml | 1 - 2 files changed, 68 deletions(-) delete mode 100644 modules/oe_whitelabel_list_pages/config/install/core.entity_form_display.node.oe_list_page.default.yml diff --git a/modules/oe_whitelabel_list_pages/config/install/core.entity_form_display.node.oe_list_page.default.yml b/modules/oe_whitelabel_list_pages/config/install/core.entity_form_display.node.oe_list_page.default.yml deleted file mode 100644 index 559217547..000000000 --- a/modules/oe_whitelabel_list_pages/config/install/core.entity_form_display.node.oe_list_page.default.yml +++ /dev/null @@ -1,67 +0,0 @@ -langcode: en -status: true -dependencies: - config: - - node.type.oe_list_page -id: node.oe_list_page.default -targetEntityType: node -bundle: oe_list_page -mode: default -content: - created: - type: datetime_timestamp - weight: 3 - region: content - settings: { } - third_party_settings: { } - langcode: - type: language_select - weight: 1 - region: content - settings: - include_locked: true - third_party_settings: { } - promote: - type: boolean_checkbox - weight: 4 - region: content - settings: - display_label: true - third_party_settings: { } - status: - type: boolean_checkbox - weight: 6 - region: content - settings: - display_label: true - third_party_settings: { } - sticky: - type: boolean_checkbox - weight: 5 - region: content - settings: - display_label: true - third_party_settings: { } - title: - type: string_textfield - weight: 0 - region: content - settings: - size: 60 - placeholder: '' - third_party_settings: { } - uid: - type: entity_reference_autocomplete - weight: 2 - region: content - settings: - match_operator: CONTAINS - match_limit: 10 - size: 60 - placeholder: '' - third_party_settings: { } -hidden: - oe_content_content_owner: true - oe_content_legacy_link: true - oe_content_navigation_title: true - oe_content_short_title: true diff --git a/modules/oe_whitelabel_list_pages/oe_whitelabel_list_pages.info.yml b/modules/oe_whitelabel_list_pages/oe_whitelabel_list_pages.info.yml index d51f660c8..aa09e958d 100644 --- a/modules/oe_whitelabel_list_pages/oe_whitelabel_list_pages.info.yml +++ b/modules/oe_whitelabel_list_pages/oe_whitelabel_list_pages.info.yml @@ -11,5 +11,4 @@ dependencies: config_devel: install: - - core.entity_form_display.node.oe_list_page.default - core.entity_view_display.node.oe_list_page.default From fe68198a4f66473008e45024eb195db7db54c3bb Mon Sep 17 00:00:00 2001 From: drishu Date: Tue, 17 May 2022 17:19:10 +0300 Subject: [PATCH 33/55] OEL-1514: Improve list page test comments. --- .../tests/src/Functional/ListPagesTest.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php b/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php index 38a9f5db3..deb9f4e34 100644 --- a/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php +++ b/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php @@ -12,7 +12,7 @@ use Drupal\Tests\sparql_entity_storage\Traits\SparqlConnectionTrait; /** - * Tests the whitelabel oe_list_pages. + * Tests the list pages rendering. */ class ListPagesTest extends WhitelabelBrowserTestBase { @@ -27,7 +27,7 @@ class ListPagesTest extends WhitelabelBrowserTestBase { ]; /** - * Test fields an oe_whitelabel list page. + * Tests a list page node rendering. */ public function testListPage(): void { $page = $this->getSession()->getPage(); From 191f83b0232569c0ce560a8a3be1c01e79a268c6 Mon Sep 17 00:00:00 2001 From: drishu Date: Tue, 17 May 2022 17:20:07 +0300 Subject: [PATCH 34/55] OEL-1514: Improve function signature in list page test. --- .../tests/src/Functional/ListPagesTest.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php b/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php index deb9f4e34..9b578b856 100644 --- a/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php +++ b/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php @@ -29,8 +29,7 @@ class ListPagesTest extends WhitelabelBrowserTestBase { /** * Tests a list page node rendering. */ - public function testListPage(): void { - $page = $this->getSession()->getPage(); + public function testListPageRendering(): void { $assert_session = $this->assertSession(); // Create some test nodes. From a1710d121a937677e854ea38f48924c995390cdc Mon Sep 17 00:00:00 2001 From: drishu Date: Tue, 17 May 2022 17:21:06 +0300 Subject: [PATCH 35/55] OEL-1514: Improve readability in list page test. --- .../tests/src/Functional/ListPagesTest.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php b/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php index 9b578b856..d7aa18ec3 100644 --- a/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php +++ b/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php @@ -50,8 +50,8 @@ public function testListPageRendering(): void { $this->indexItems('oe_whitelabel_list_page_index_test'); $list_page = Node::create([ - 'type' => 'oe_list_page', - 'title' => 'News list page', + 'type' => 'oe_list_page', + 'title' => 'News list page', ]); /** @var \Drupal\emr\Entity\EntityMetaInterface $list_page_entity_meta */ From a30a7ebb95798ed4ea43f545b82aeb56fe99bebf Mon Sep 17 00:00:00 2001 From: drishu Date: Tue, 17 May 2022 17:22:17 +0300 Subject: [PATCH 36/55] OEL-1514: Remove redundant filter call. --- templates/list_pages/node--oe-list-page--full.html.twig | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/templates/list_pages/node--oe-list-page--full.html.twig b/templates/list_pages/node--oe-list-page--full.html.twig index 7053bcf09..378166227 100644 --- a/templates/list_pages/node--oe-list-page--full.html.twig +++ b/templates/list_pages/node--oe-list-page--full.html.twig @@ -1,7 +1,7 @@
{% set filters = content['extra_field_oe_list_page_filters:node:oe_list_page']|render %} - {% if filters|render is not empty %} + {% if filters %} {{ pattern('offcanvas', { 'variant': 'search', 'title': 'Filter options', @@ -24,8 +24,8 @@

- {{ label|render|striptags|trim }} - ({{ content['extra_field_oe_list_page_total_count:node:oe_list_page']|render|trim }}) + {{ label }} + ({{ content['extra_field_oe_list_page_total_count:node:oe_list_page'] }})

From 007b45b17289d1aec91d06dcdaab0d571391a76c Mon Sep 17 00:00:00 2001 From: drishu Date: Tue, 17 May 2022 17:26:15 +0300 Subject: [PATCH 37/55] OEL-1514: Wrap facet summary in condition. --- templates/list_pages/node--oe-list-page--full.html.twig | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/templates/list_pages/node--oe-list-page--full.html.twig b/templates/list_pages/node--oe-list-page--full.html.twig index 378166227..cf684fcdb 100644 --- a/templates/list_pages/node--oe-list-page--full.html.twig +++ b/templates/list_pages/node--oe-list-page--full.html.twig @@ -28,14 +28,12 @@ ({{ content['extra_field_oe_list_page_total_count:node:oe_list_page'] }})
+ {% set selected_filters = content['extra_field_oe_list_page_selected_filters:node:oe_list_page'] %} + {% if selected_filters[0]|length > 1 %}
- {% set selected_filters = content['extra_field_oe_list_page_selected_filters:node:oe_list_page'] %} - {% if selected_filters[0]|length > 1 %} {{ selected_filters }} - {% endif %} -
-
+ {% endif %}
{{ content['extra_field_oe_list_page_results:node:oe_list_page'] }}
From d31fc772a49d9101806c8f9dbff8189e27a8f8a1 Mon Sep 17 00:00:00 2001 From: drishu Date: Tue, 17 May 2022 17:27:04 +0300 Subject: [PATCH 38/55] OEL-1514: Call content without to ensure cache bubbling in list page. --- templates/list_pages/node--oe-list-page--full.html.twig | 1 + 1 file changed, 1 insertion(+) diff --git a/templates/list_pages/node--oe-list-page--full.html.twig b/templates/list_pages/node--oe-list-page--full.html.twig index cf684fcdb..2a3a2e4a5 100644 --- a/templates/list_pages/node--oe-list-page--full.html.twig +++ b/templates/list_pages/node--oe-list-page--full.html.twig @@ -36,5 +36,6 @@ {% endif %}
{{ content['extra_field_oe_list_page_results:node:oe_list_page'] }} + {{ content|without('extra_field_oe_list_page_filters:node:oe_list_page', 'extra_field_oe_list_page_results:node:oe_list_page', 'extra_field_oe_list_page_selected_filters:node:oe_list_page', 'extra_field_oe_list_page_total_count:node:oe_list_page') }}
From e33ca3ccaf49509f97f6cb170166dfc3bb51070e Mon Sep 17 00:00:00 2001 From: drishu Date: Tue, 17 May 2022 19:32:09 +0300 Subject: [PATCH 39/55] OEL-1514: Remove semantic identifier attempt. --- .../tests/src/Functional/ListPagesTest.php | 2 +- templates/list_pages/node--oe-list-page--full.html.twig | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php b/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php index d7aa18ec3..9e5f94a90 100644 --- a/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php +++ b/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php @@ -2,7 +2,7 @@ declare(strict_types = 1); -namespace Drupal\Tests\oe_whitelabel_list_pages_test\FunctionalJavascript; +namespace Drupal\Tests\oe_whitelabel_list_pages\Functional; use Drupal\Core\Datetime\DrupalDateTime; use Drupal\node\Entity\Node; diff --git a/templates/list_pages/node--oe-list-page--full.html.twig b/templates/list_pages/node--oe-list-page--full.html.twig index 2a3a2e4a5..d2df2baf9 100644 --- a/templates/list_pages/node--oe-list-page--full.html.twig +++ b/templates/list_pages/node--oe-list-page--full.html.twig @@ -1,5 +1,5 @@
-
+
{% set filters = content['extra_field_oe_list_page_filters:node:oe_list_page']|render %} {% if filters %} {{ pattern('offcanvas', { @@ -20,7 +20,7 @@ }) }} {% endif %}
-
+

From 28fd8a412ee86d8f9aff22429946a7a68d4ad9b3 Mon Sep 17 00:00:00 2001 From: drishu Date: Sun, 29 May 2022 15:57:49 +0300 Subject: [PATCH 40/55] OEL-1514: Date object not needed in creating test nodes. --- .../tests/src/Functional/ListPagesTest.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php b/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php index 9e5f94a90..e0f795738 100644 --- a/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php +++ b/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php @@ -4,7 +4,7 @@ namespace Drupal\Tests\oe_whitelabel_list_pages\Functional; -use Drupal\Core\Datetime\DrupalDateTime; +use Behat\Mink\Element\ElementInterface; use Drupal\node\Entity\Node; use Drupal\node\NodeInterface; use Drupal\Tests\oe_whitelabel\Functional\WhitelabelBrowserTestBase; @@ -34,13 +34,12 @@ public function testListPageRendering(): void { // Create some test nodes. for ($i = 0; $i < 12; $i++) { - $date = new DrupalDateTime('20-10-2020'); $values = [ 'title' => 'News number ' . $i, 'type' => 'oe_sc_news', 'body' => 'This is content number ' . $i, 'status' => NodeInterface::PUBLISHED, - 'created' => $date->getTimestamp(), + 'created' => '2020-10-20', ]; $node = Node::create($values); $node->save(); From 6914dfa6731f0f79eb1bc22251063752a0862ee9 Mon Sep 17 00:00:00 2001 From: drishu Date: Sun, 29 May 2022 16:12:36 +0300 Subject: [PATCH 41/55] OEL-1514: Add createListPage helper for readability. --- .../tests/src/Functional/ListPagesTest.php | 44 ++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php b/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php index e0f795738..48e13aedd 100644 --- a/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php +++ b/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php @@ -47,7 +47,48 @@ public function testListPageRendering(): void { // Index content. $this->indexItems('oe_whitelabel_list_page_index_test'); + $list_page = $this->createListPage(); + $this->drupalGet('node/' . $list_page->id()); + + // Assert the left column. + $left_column = $assert_session->elementExists('css', 'div.row > .col-lg-3'); + + // Assert offcanvas. + $offcanvas = $left_column->find('css', 'div.bcl-offcanvas'); + $title = $offcanvas->find('css', 'h4.offcanvas-title'); + $this->assertSame('Filter options', $title->getText()); + $offcanvas->hasField('Title'); + $offcanvas->hasButton('Search'); + $offcanvas->hasButton('Clear filters'); + $offcanvas->hasButton('Filters'); + + // Assert right column. + $right_column = $assert_session->elementExists('css', 'div.row > .col-lg-9'); + $assert_session->elementsCount('css', 'hr', 2, $right_column); + + $this->assertFacetsSummaryTitle(12, $right_column); + $this->assertActiveFilterBadges([], $right_column); + $this->assertListing(10, $right_column); + $this->assertPager(4, $right_column); + + // Use a filter to get a badge. + $page->fillField('Title', 'News number 8'); + $page->pressButton('Search'); + + $this->assertFacetsSummaryTitle(1, $right_column); + $this->assertActiveFilterBadges(['News number 8'], $right_column); + $this->assertListing(1, $right_column); + $this->assertPager(0, $right_column); + } + + /** + * Create a list page node with filters configured. + * + * @return \Drupal\node\NodeInterface + * The list page node created. + */ + protected function createListPage(): NodeInterface { $list_page = Node::create([ 'type' => 'oe_list_page', 'title' => 'News list page', @@ -70,7 +111,8 @@ public function testListPageRendering(): void { $list_page->get('emr_entity_metas')->attach($list_page_entity_meta); $list_page->save(); - $this->drupalGet('node/' . $list_page->id()); + return $list_page; + } // Assert the left column. $assert_session->elementExists('css', 'div.row > div.col-12.col-lg-3'); From 0b53f45f3fe0a9c0ebd55e2b308ae99cdb06aa83 Mon Sep 17 00:00:00 2001 From: drishu Date: Sun, 29 May 2022 16:14:17 +0300 Subject: [PATCH 42/55] OEL-1514: Fix call to missing page variable. --- .../tests/src/Functional/ListPagesTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php b/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php index 48e13aedd..fa4077378 100644 --- a/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php +++ b/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php @@ -30,6 +30,7 @@ class ListPagesTest extends WhitelabelBrowserTestBase { * Tests a list page node rendering. */ public function testListPageRendering(): void { + $page = $this->getSession()->getPage(); $assert_session = $this->assertSession(); // Create some test nodes. @@ -45,7 +46,6 @@ public function testListPageRendering(): void { $node->save(); } - // Index content. $this->indexItems('oe_whitelabel_list_page_index_test'); $list_page = $this->createListPage(); From d098610db14456442d3e84b80a4147072bcf00f6 Mon Sep 17 00:00:00 2001 From: drishu Date: Sun, 29 May 2022 16:19:09 +0300 Subject: [PATCH 43/55] OEL-1514: Add helpers for readability. --- .../tests/src/Functional/ListPagesTest.php | 98 ++++++++++++++----- 1 file changed, 71 insertions(+), 27 deletions(-) diff --git a/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php b/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php index fa4077378..567df6291 100644 --- a/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php +++ b/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php @@ -114,34 +114,78 @@ protected function createListPage(): NodeInterface { return $list_page; } - // Assert the left column. - $assert_session->elementExists('css', 'div.row > div.col-12.col-lg-3'); - // Assert offcanvas. - $assert_session->elementExists('css', 'div.bcl-offcanvas'); - $assert_session->elementTextEquals('css', 'h4.offcanvas-title', 'Filter options'); - $assert_session->elementExists('css', 'button.btn-light > svg'); - $assert_session->elementTextEquals('css', 'button[data-bs-toggle="offcanvas"]', 'Filters'); - // Assert Filters. - $assert_session->elementExists('css', 'input[name="oe_sc_news_title"]'); - $assert_session->elementExists('css', 'input[data-drupal-selector="edit-submit"]'); - $assert_session->elementExists('css', 'input[data-drupal-selector="edit-reset"]'); + /** + * Asserts the title in the facets summary. + * + * @param int $expected_count + * Expected number of results to be reported in the title. + * @param \Behat\Mink\Element\ElementInterface $container + * Document to check against. + */ + protected function assertFacetsSummaryTitle(int $expected_count, ElementInterface $container): void { + $facets_summary = $container->find('css', 'div.col-md-6.col-lg-8'); + $title = $facets_summary->find('css', 'h4'); + $text = $title->find('css', 'span.text-capitalize'); + + $this->assertSame( + sprintf('%s (%s)', $text->getText(), $expected_count), + $title->getText() + ); + } - // Assert right column. - $assert_session->elementExists('css', 'div.row > div.col-12.col-lg-9.col-xxl-8'); - $assert_session->elementContains('css', 'h4.mb-0 > span', 'News list page'); - $assert_session->elementContains('css', 'h4.mb-0', '(12)'); - // Assert listing. - $assert_session->elementsCount('css', 'hr', 2); - $assert_session->elementsCount('css', 'div.listing-item', '10'); - // Assert pagination. - $assert_session->elementExists('css', 'nav > ul.pagination'); - $assert_session->elementsCount('css', 'ul.pagination > li.page-item', 4); - - // Assert search. - $page->fillField('Title', 'News number 8'); - $page->pressButton('Search'); - $assert_session->elementContains('css', 'h4.mb-0', '(1)'); - $assert_session->elementTextEquals('css', 'span.badge.bg-light', 'News number 8'); + /** + * Asserts badges for active filters. + * + * @param string[] $expected + * Expected badge labels. + * @param \Behat\Mink\Element\ElementInterface $container + * Document to check against. + */ + protected function assertActiveFilterBadges(array $expected, ElementInterface $container): void { + $badges = $container->findAll('css', '.badge'); + $this->assertElementsTexts($expected, $badges); + } + + /** + * Asserts link text on pager links. + * + * @param int $expected_count + * Expected number of links in the pager. + * @param \Behat\Mink\Element\ElementInterface $container + * Document to check against. + */ + protected function assertPager(int $expected_count, ElementInterface $container): void { + $links = $container->findAll('css', 'ul.pagination > li.page-item'); + $this->assertCount($expected_count, $links); + } + + /** + * Asserts listing items. + * + * @param int $expected_count + * Expected number of results in the listing. + * @param \Behat\Mink\Element\ElementInterface $container + * Document to check against. + */ + protected function assertListing(int $expected_count, ElementInterface $container): void { + $listing = $container->find('css', 'div.bcl-listing'); + $this->assertSession()->elementsCount('css', 'div.listing-item', $expected_count, $listing); + } + + /** + * Asserts text contents for multiple elements at once. + * + * @param string[] $expected + * Expected element texts. + * @param \Behat\Mink\Element\NodeElement[] $elements + * Elements to compare. + */ + protected function assertElementsTexts(array $expected, array $elements): void { + $actual = []; + foreach ($elements as $element) { + $actual[] = $element->getText(); + } + $this->assertSame($expected, $actual); } } From 0a354f37c681ddf38c6516f2fe0e1e96cd9d4f93 Mon Sep 17 00:00:00 2001 From: drishu Date: Sun, 29 May 2022 16:36:50 +0300 Subject: [PATCH 44/55] OEL-1514: Remove unused SparqlConnectionTrait. --- .../tests/src/Functional/ListPagesTest.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php b/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php index 567df6291..3bcd4fc66 100644 --- a/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php +++ b/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php @@ -9,7 +9,6 @@ use Drupal\node\NodeInterface; use Drupal\Tests\oe_whitelabel\Functional\WhitelabelBrowserTestBase; use Drupal\Tests\search_api\Functional\ExampleContentTrait; -use Drupal\Tests\sparql_entity_storage\Traits\SparqlConnectionTrait; /** * Tests the list pages rendering. @@ -17,7 +16,6 @@ class ListPagesTest extends WhitelabelBrowserTestBase { use ExampleContentTrait; - use SparqlConnectionTrait; /** * {@inheritdoc} From 81bb527cccece4e7fb3abd02b3649c19cc234bed Mon Sep 17 00:00:00 2001 From: drishu Date: Sun, 29 May 2022 19:26:57 +0300 Subject: [PATCH 45/55] OEL-1514: Move facet summary wrapper into own template. --- .../node--oe-list-page--full.html.twig | 7 +----- .../oe-list-pages-selected-facet.html.twig | 22 +++++++++++-------- 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/templates/list_pages/node--oe-list-page--full.html.twig b/templates/list_pages/node--oe-list-page--full.html.twig index d2df2baf9..10bbb47c3 100644 --- a/templates/list_pages/node--oe-list-page--full.html.twig +++ b/templates/list_pages/node--oe-list-page--full.html.twig @@ -28,12 +28,7 @@ ({{ content['extra_field_oe_list_page_total_count:node:oe_list_page'] }})

- {% set selected_filters = content['extra_field_oe_list_page_selected_filters:node:oe_list_page'] %} - {% if selected_filters[0]|length > 1 %} -
- {{ selected_filters }} -
- {% endif %} + {{ content['extra_field_oe_list_page_selected_filters:node:oe_list_page'] }}
{{ content['extra_field_oe_list_page_results:node:oe_list_page'] }} {{ content|without('extra_field_oe_list_page_filters:node:oe_list_page', 'extra_field_oe_list_page_results:node:oe_list_page', 'extra_field_oe_list_page_selected_filters:node:oe_list_page', 'extra_field_oe_list_page_total_count:node:oe_list_page') }} diff --git a/templates/list_pages/oe-list-pages-selected-facet.html.twig b/templates/list_pages/oe-list-pages-selected-facet.html.twig index 803f56b3f..49879a8df 100644 --- a/templates/list_pages/oe-list-pages-selected-facet.html.twig +++ b/templates/list_pages/oe-list-pages-selected-facet.html.twig @@ -1,9 +1,13 @@ -{% for item in items %} - {{ pattern('badge', { - 'background': 'light', - 'label': item.label, - 'url': item.url, - 'dismissible': true, - 'attributes': create_attribute({'class': ['me-2', 'fs-6']}), - }) }} -{% endfor %} +{% if items or empty -%} +
+ {%- for item in items -%} + {{ pattern('badge', { + 'background': 'light', + 'label': item.label, + 'url': item.url, + 'dismissible': true, + 'attributes': create_attribute({'class': ['me-2', 'fs-6']}), + }) }} + {%- endfor -%} +
+{%- endif %} From 4a1b65e659217cd8609357339fb5a2e3787a1fa7 Mon Sep 17 00:00:00 2001 From: drishu Date: Mon, 30 May 2022 09:17:36 +0300 Subject: [PATCH 46/55] OEL-1514: Remove undefiend variable. --- templates/list_pages/oe-list-pages-selected-facet.html.twig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/list_pages/oe-list-pages-selected-facet.html.twig b/templates/list_pages/oe-list-pages-selected-facet.html.twig index 49879a8df..1175b4178 100644 --- a/templates/list_pages/oe-list-pages-selected-facet.html.twig +++ b/templates/list_pages/oe-list-pages-selected-facet.html.twig @@ -1,4 +1,4 @@ -{% if items or empty -%} +{% if items -%}
{%- for item in items -%} {{ pattern('badge', { From 096cbc695bf0919191dc825070f61377962937aa Mon Sep 17 00:00:00 2001 From: drishu Date: Mon, 30 May 2022 09:22:57 +0300 Subject: [PATCH 47/55] OEL-1514: Move additional content above in list pages. --- templates/list_pages/node--oe-list-page--full.html.twig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/list_pages/node--oe-list-page--full.html.twig b/templates/list_pages/node--oe-list-page--full.html.twig index 10bbb47c3..d284ba8c3 100644 --- a/templates/list_pages/node--oe-list-page--full.html.twig +++ b/templates/list_pages/node--oe-list-page--full.html.twig @@ -1,3 +1,4 @@ +{{ content|without('extra_field_oe_list_page_filters:node:oe_list_page', 'extra_field_oe_list_page_results:node:oe_list_page', 'extra_field_oe_list_page_selected_filters:node:oe_list_page', 'extra_field_oe_list_page_total_count:node:oe_list_page') }}
{% set filters = content['extra_field_oe_list_page_filters:node:oe_list_page']|render %} @@ -31,6 +32,5 @@ {{ content['extra_field_oe_list_page_selected_filters:node:oe_list_page'] }}
{{ content['extra_field_oe_list_page_results:node:oe_list_page'] }} - {{ content|without('extra_field_oe_list_page_filters:node:oe_list_page', 'extra_field_oe_list_page_results:node:oe_list_page', 'extra_field_oe_list_page_selected_filters:node:oe_list_page', 'extra_field_oe_list_page_total_count:node:oe_list_page') }}
From 494d5cb59b7385ade08e3dd95c695cbf6f09d856 Mon Sep 17 00:00:00 2001 From: drishu Date: Wed, 1 Jun 2022 21:10:50 +0300 Subject: [PATCH 48/55] OEL-1514: Improve item list template comment. --- templates/list_pages/item-list--oe-list-pages-results.html.twig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/list_pages/item-list--oe-list-pages-results.html.twig b/templates/list_pages/item-list--oe-list-pages-results.html.twig index 028cb8a38..5a185290d 100644 --- a/templates/list_pages/item-list--oe-list-pages-results.html.twig +++ b/templates/list_pages/item-list--oe-list-pages-results.html.twig @@ -3,7 +3,7 @@ * @file * Item list theme override for a oe_list_pages list template. * - * @see template_preprocess_item_list() + * @see ./core/modules/system/templates/item-list.html.twig */ #}
From a40a9e3d62092bd55efd804ab686c256ddc8739e Mon Sep 17 00:00:00 2001 From: drishu Date: Wed, 8 Jun 2022 16:02:35 +0300 Subject: [PATCH 49/55] OEL-1514: Improve item-list results template comment. --- templates/list_pages/item-list--oe-list-pages-results.html.twig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/list_pages/item-list--oe-list-pages-results.html.twig b/templates/list_pages/item-list--oe-list-pages-results.html.twig index 5a185290d..357694b7b 100644 --- a/templates/list_pages/item-list--oe-list-pages-results.html.twig +++ b/templates/list_pages/item-list--oe-list-pages-results.html.twig @@ -1,7 +1,7 @@ {# /** * @file - * Item list theme override for a oe_list_pages list template. + * Override for item list wrapping items in a bcl-listing. * * @see ./core/modules/system/templates/item-list.html.twig */ From a9683daefd7fc158d34731e1b68df3026d76ed51 Mon Sep 17 00:00:00 2001 From: drishu Date: Wed, 8 Jun 2022 17:15:40 +0300 Subject: [PATCH 50/55] OEL-1514: Simplify assertFacetsSummaryTitle(). --- .../tests/src/Functional/ListPagesTest.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php b/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php index 3bcd4fc66..d7ee086ec 100644 --- a/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php +++ b/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php @@ -121,8 +121,7 @@ protected function createListPage(): NodeInterface { * Document to check against. */ protected function assertFacetsSummaryTitle(int $expected_count, ElementInterface $container): void { - $facets_summary = $container->find('css', 'div.col-md-6.col-lg-8'); - $title = $facets_summary->find('css', 'h4'); + $title = $container->find('css', 'div.col-md-6.col-lg-8 h4'); $text = $title->find('css', 'span.text-capitalize'); $this->assertSame( From 855a2655a0ebc73fa814bce44de2376b36f2cfbb Mon Sep 17 00:00:00 2001 From: drishu Date: Wed, 8 Jun 2022 17:16:33 +0300 Subject: [PATCH 51/55] OEL-1514: Revert selected filters wrapping to former logic due to side effects. --- .../node--oe-list-page--full.html.twig | 7 +++++- .../oe-list-pages-selected-facet.html.twig | 22 ++++++++----------- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/templates/list_pages/node--oe-list-page--full.html.twig b/templates/list_pages/node--oe-list-page--full.html.twig index d284ba8c3..dcf7c867b 100644 --- a/templates/list_pages/node--oe-list-page--full.html.twig +++ b/templates/list_pages/node--oe-list-page--full.html.twig @@ -29,7 +29,12 @@ ({{ content['extra_field_oe_list_page_total_count:node:oe_list_page'] }})
- {{ content['extra_field_oe_list_page_selected_filters:node:oe_list_page'] }} + {% set selected_filters = content['extra_field_oe_list_page_selected_filters:node:oe_list_page'] %} + {% if selected_filters[0]|length > 1 %} +
+ {{ selected_filters }} +
+ {% endif %}
{{ content['extra_field_oe_list_page_results:node:oe_list_page'] }}
diff --git a/templates/list_pages/oe-list-pages-selected-facet.html.twig b/templates/list_pages/oe-list-pages-selected-facet.html.twig index 1175b4178..ed4102d68 100644 --- a/templates/list_pages/oe-list-pages-selected-facet.html.twig +++ b/templates/list_pages/oe-list-pages-selected-facet.html.twig @@ -1,13 +1,9 @@ -{% if items -%} -
- {%- for item in items -%} - {{ pattern('badge', { - 'background': 'light', - 'label': item.label, - 'url': item.url, - 'dismissible': true, - 'attributes': create_attribute({'class': ['me-2', 'fs-6']}), - }) }} - {%- endfor -%} -
-{%- endif %} +{%- for item in items -%} + {{ pattern('badge', { + 'background': 'light', + 'label': item.label, + 'url': item.url, + 'dismissible': true, + 'attributes': create_attribute({'class': ['me-2', 'fs-6']}), + }) }} +{%- endfor -%} From c6ede5e855a68f056bfadf8309166a7e2dadbc1f Mon Sep 17 00:00:00 2001 From: drishu Date: Thu, 9 Jun 2022 14:32:19 +0300 Subject: [PATCH 52/55] OEL-1514: Improve list page test helper DocBlock. --- .../tests/src/Functional/ListPagesTest.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php b/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php index d7ee086ec..678be2370 100644 --- a/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php +++ b/modules/oe_whitelabel_list_pages/tests/src/Functional/ListPagesTest.php @@ -118,7 +118,7 @@ protected function createListPage(): NodeInterface { * @param int $expected_count * Expected number of results to be reported in the title. * @param \Behat\Mink\Element\ElementInterface $container - * Document to check against. + * Container with the expected elements. */ protected function assertFacetsSummaryTitle(int $expected_count, ElementInterface $container): void { $title = $container->find('css', 'div.col-md-6.col-lg-8 h4'); @@ -136,7 +136,7 @@ protected function assertFacetsSummaryTitle(int $expected_count, ElementInterfac * @param string[] $expected * Expected badge labels. * @param \Behat\Mink\Element\ElementInterface $container - * Document to check against. + * Container with the expected elements. */ protected function assertActiveFilterBadges(array $expected, ElementInterface $container): void { $badges = $container->findAll('css', '.badge'); @@ -149,7 +149,7 @@ protected function assertActiveFilterBadges(array $expected, ElementInterface $c * @param int $expected_count * Expected number of links in the pager. * @param \Behat\Mink\Element\ElementInterface $container - * Document to check against. + * Container with the expected elements. */ protected function assertPager(int $expected_count, ElementInterface $container): void { $links = $container->findAll('css', 'ul.pagination > li.page-item'); @@ -162,7 +162,7 @@ protected function assertPager(int $expected_count, ElementInterface $container) * @param int $expected_count * Expected number of results in the listing. * @param \Behat\Mink\Element\ElementInterface $container - * Document to check against. + * Container with the expected elements. */ protected function assertListing(int $expected_count, ElementInterface $container): void { $listing = $container->find('css', 'div.bcl-listing'); From 8ef772b6c7a8f34ac8076e1e1a1cb056b2893152 Mon Sep 17 00:00:00 2001 From: drishu Date: Thu, 9 Jun 2022 14:33:01 +0300 Subject: [PATCH 53/55] OEL-1514: Improve Selected filters conditional. --- .../list_pages/node--oe-list-page--full.html.twig | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/templates/list_pages/node--oe-list-page--full.html.twig b/templates/list_pages/node--oe-list-page--full.html.twig index dcf7c867b..323a3abed 100644 --- a/templates/list_pages/node--oe-list-page--full.html.twig +++ b/templates/list_pages/node--oe-list-page--full.html.twig @@ -29,11 +29,14 @@ ({{ content['extra_field_oe_list_page_total_count:node:oe_list_page'] }})
- {% set selected_filters = content['extra_field_oe_list_page_selected_filters:node:oe_list_page'] %} - {% if selected_filters[0]|length > 1 %} -
- {{ selected_filters }} -
+ {% set selected_filters %} + {{ content['extra_field_oe_list_page_selected_filters:node:oe_list_page']|merge({'#theme': 'field__bare'}) }} + {% endset %} + + {% if selected_filters is not empty %} +
+ {{ selected_filters }} +
{% endif %}
{{ content['extra_field_oe_list_page_results:node:oe_list_page'] }} From 6d0b8b9a70c5d61f702d263d02cdb00e5c52186c Mon Sep 17 00:00:00 2001 From: drishu Date: Thu, 9 Jun 2022 15:25:20 +0300 Subject: [PATCH 54/55] OEL-1514: Fix empty check in list page template. --- templates/list_pages/node--oe-list-page--full.html.twig | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/templates/list_pages/node--oe-list-page--full.html.twig b/templates/list_pages/node--oe-list-page--full.html.twig index 323a3abed..b600f4e0d 100644 --- a/templates/list_pages/node--oe-list-page--full.html.twig +++ b/templates/list_pages/node--oe-list-page--full.html.twig @@ -32,8 +32,7 @@ {% set selected_filters %} {{ content['extra_field_oe_list_page_selected_filters:node:oe_list_page']|merge({'#theme': 'field__bare'}) }} {% endset %} - - {% if selected_filters is not empty %} + {% if selected_filters|trim is not empty %}
{{ selected_filters }}
From 828ea59f122913b991baf2472c2e8c58141f5e6f Mon Sep 17 00:00:00 2001 From: drishu Date: Thu, 9 Jun 2022 15:26:11 +0300 Subject: [PATCH 55/55] OEL-1514: Wrap template in spaceless filter. --- .../node--oe-list-page--full.html.twig | 82 ++++++++++--------- 1 file changed, 42 insertions(+), 40 deletions(-) diff --git a/templates/list_pages/node--oe-list-page--full.html.twig b/templates/list_pages/node--oe-list-page--full.html.twig index b600f4e0d..9a65ef877 100644 --- a/templates/list_pages/node--oe-list-page--full.html.twig +++ b/templates/list_pages/node--oe-list-page--full.html.twig @@ -1,43 +1,45 @@ -{{ content|without('extra_field_oe_list_page_filters:node:oe_list_page', 'extra_field_oe_list_page_results:node:oe_list_page', 'extra_field_oe_list_page_selected_filters:node:oe_list_page', 'extra_field_oe_list_page_total_count:node:oe_list_page') }} -
-
- {% set filters = content['extra_field_oe_list_page_filters:node:oe_list_page']|render %} - {% if filters %} - {{ pattern('offcanvas', { - 'variant': 'search', - 'title': 'Filter options', - 'body': filters, - 'placement': 'start', - 'body_scroll': false, - 'backdrop': true, - 'toggle': { - 'label': 'Filters', - 'variant': 'light', - 'size': 'lg', - 'icon': 'filter', - 'icon_position': 'before', - 'attributes': create_attribute().addClass(['d-lg-none', 'w-100', 'mb-4']), - }, - }) }} - {% endif %} -
-
-
-
-

- {{ label }} - ({{ content['extra_field_oe_list_page_total_count:node:oe_list_page'] }}) -

-
- {% set selected_filters %} - {{ content['extra_field_oe_list_page_selected_filters:node:oe_list_page']|merge({'#theme': 'field__bare'}) }} - {% endset %} - {% if selected_filters|trim is not empty %} -
- {{ selected_filters }} -
+{% apply spaceless %} + {{ content|without('extra_field_oe_list_page_filters:node:oe_list_page', 'extra_field_oe_list_page_results:node:oe_list_page', 'extra_field_oe_list_page_selected_filters:node:oe_list_page', 'extra_field_oe_list_page_total_count:node:oe_list_page') }} +
+
+ {% set filters = content['extra_field_oe_list_page_filters:node:oe_list_page']|render %} + {% if filters %} + {{ pattern('offcanvas', { + 'variant': 'search', + 'title': 'Filter options', + 'body': filters, + 'placement': 'start', + 'body_scroll': false, + 'backdrop': true, + 'toggle': { + 'label': 'Filters', + 'variant': 'light', + 'size': 'lg', + 'icon': 'filter', + 'icon_position': 'before', + 'attributes': create_attribute().addClass(['d-lg-none', 'w-100', 'mb-4']), + }, + }) }} {% endif %}
- {{ content['extra_field_oe_list_page_results:node:oe_list_page'] }} +
+
+
+

+ {{ label }} + ({{ content['extra_field_oe_list_page_total_count:node:oe_list_page'] }}) +

+
+ {% set selected_filters %} + {{ content['extra_field_oe_list_page_selected_filters:node:oe_list_page']|merge({'#theme': 'field__bare'}) }} + {% endset %} + {% if selected_filters|trim is not empty %} +
+ {{ selected_filters }} +
+ {% endif %} +
+ {{ content['extra_field_oe_list_page_results:node:oe_list_page'] }} +
-
+{% endapply %}