diff --git a/CHANGELOG.md b/CHANGELOG.md index c837136da..f66ff9182 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,18 +6,20 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [Unreleased] +## Unreleased + +## 1.3.0 - [PR-377](https://github.com/itk-dev/os2loop/pull/377) - Security update - Code cleanup -## [1.2.3] +## 1.2.3 - [PR-372](https://github.com/itk-dev/os2loop/pull/372) Migrate to DRUSH_OPTIONS_URI -## [1.2.2] +## 1.2.2 - [PR-371](https://github.com/itk-dev/os2loop/pull/371) Added GitHub action to build release @@ -26,31 +28,31 @@ Versioning](https://semver.org/spec/v2.0.0.html). Added woodpecker to test site deployment - [PR-369](https://github.com/itk-dev/os2loop/pull/369) Update drupal core 10.4.5 -## [1.2.1] +## 1.2.1 - DevOps: Update docker setup to ensure real IPs in logs - [PR-363](https://github.com/itk-dev/os2loop/pull/367) Security update of Drupal core Fixed code error in switch cases -## [1.2.0] +## 1.2.0 - [PR-366](https://github.com/itk-dev/os2loop/pull/366) - Security update - Drupal Core 10.3.6 => 10.4.3 - XLS serialization 1.4.0 => 2.0.0 -## [1.1.4] +## 1.1.4 - [PR-363](https://github.com/itk-dev/os2loop/pull/363) Security update -## [1.1.3] +## 1.1.3 - [PR-363](https://github.com/itk-dev/os2loop/pull/363) Security update -## [1.1.2] +## 1.1.2 - [PR-362](https://github.com/itk-dev/os2loop/pull/362) - Change Share with a friend form @@ -59,18 +61,18 @@ Versioning](https://semver.org/spec/v2.0.0.html). - [PR-361](https://github.com/itk-dev/os2loop/pull/361) Added local OIDC server-mock -## [1.1.1] +## 1.1.1 - [PR-360](https://github.com/itk-dev/os2loop/pull/360) Fix bug in toc -## [1.1.0] +## 1.1.0 - Update config to mach drupal version. - [PR-358](https://github.com/itk-dev/os2loop/pull/358) Update pdf css to ensure display of all paragraphs -## [1.0.0] +## 1.0.0 - Upgrade drupal core (10.3.1) - Switch to dompdf diff --git a/config/sync/views.settings.yml b/config/sync/views.settings.yml index 6c1382b88..0ddd2ef5b 100644 --- a/config/sync/views.settings.yml +++ b/config/sync/views.settings.yml @@ -9,7 +9,7 @@ ui: performance_statistics: false preview_information: true sql_query: - enabled: false + enabled: true where: above display_embed: false always_live_preview: true @@ -44,4 +44,3 @@ field_rewrite_elements: ins: INS q: Q s: S -skip_cache: false diff --git a/config/sync/views.view.content.yml b/config/sync/views.view.content.yml index e61d5e11b..2a82eb48e 100644 --- a/config/sync/views.view.content.yml +++ b/config/sync/views.view.content.yml @@ -1132,6 +1132,72 @@ display: multi_type: separator separator: ', ' field_api_classes: false + nid: + id: nid + table: node_field_data + field: nid + relationship: none + group_type: group + admin_label: '' + entity_type: node + entity_field: nid + plugin_id: field + label: ID + exclude: false + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: true + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + click_sort_column: value + type: number_integer + settings: + thousand_separator: '' + prefix_suffix: true + group_column: value + group_columns: { } + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false style: type: data_export options: @@ -1468,6 +1534,72 @@ display: multi_type: separator separator: ', ' field_api_classes: false + nid: + id: nid + table: node_field_data + field: nid + relationship: none + group_type: group + admin_label: '' + entity_type: node + entity_field: nid + plugin_id: field + label: ID + exclude: false + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: true + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + click_sort_column: value + type: number_integer + settings: + thousand_separator: '' + prefix_suffix: true + group_column: value + group_columns: { } + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false style: type: data_export options: diff --git a/config/sync/views.view.os2loop_documents_collection_item.yml b/config/sync/views.view.os2loop_documents_collection_item.yml new file mode 100644 index 000000000..b4ded522c --- /dev/null +++ b/config/sync/views.view.os2loop_documents_collection_item.yml @@ -0,0 +1,567 @@ +uuid: 03be7ba9-e6fb-473d-9c63-a9db7041ccd3 +langcode: en +status: true +dependencies: + module: + - node + - os2loop_documents + - user +id: os2loop_documents_collection_item +label: os2loop_documents_collection_item +module: views +description: '' +tag: '' +base_table: os2loop_documents_collection_item +base_field: id +display: + default: + id: default + display_title: Default + display_plugin: default + position: 0 + display_options: + title: 'Document collection items' + fields: + title: + id: title + table: node_field_data + field: title + relationship: collection_id + group_type: group + admin_label: '' + entity_type: node + entity_field: title + plugin_id: field + label: Collection + exclude: false + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: true + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + click_sort_column: value + type: string + settings: + link_to_entity: true + group_column: value + group_columns: { } + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false + collection_id: + id: collection_id + table: os2loop_documents_collection_item + field: collection_id + relationship: none + group_type: group + admin_label: '' + entity_type: os2loop_document_collection_item + entity_field: collection_id + plugin_id: field + label: 'Collection ID' + exclude: false + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: true + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + click_sort_column: value + type: number_integer + settings: + thousand_separator: '' + prefix_suffix: true + group_column: value + group_columns: { } + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false + title_2: + id: title_2 + table: node_field_data + field: title + relationship: document_id + group_type: group + admin_label: '' + entity_type: node + entity_field: title + plugin_id: field + label: Document + exclude: false + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: true + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + click_sort_column: value + type: string + settings: + link_to_entity: true + group_column: value + group_columns: { } + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false + document_id: + id: document_id + table: os2loop_documents_collection_item + field: document_id + relationship: none + group_type: group + admin_label: '' + entity_type: os2loop_document_collection_item + entity_field: document_id + plugin_id: field + label: 'Document ID' + exclude: false + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: true + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + click_sort_column: value + type: number_integer + settings: + thousand_separator: '' + prefix_suffix: true + group_column: value + group_columns: { } + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false + title_1: + id: title_1 + table: node_field_data + field: title + relationship: document_id + group_type: group + admin_label: '' + entity_type: node + entity_field: title + plugin_id: field + label: 'Document in collection' + exclude: false + alter: + alter_text: false + text: '' + make_link: true + path: '/node/{{ document_id }}?collection={{ collection_id }}' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: true + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + click_sort_column: value + type: string + settings: + link_to_entity: false + group_column: value + group_columns: { } + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false + parent_document_id: + id: parent_document_id + table: os2loop_documents_collection_item + field: parent_document_id + relationship: none + group_type: group + admin_label: '' + entity_type: os2loop_document_collection_item + entity_field: parent_document_id + plugin_id: field + label: 'Parent document ID' + exclude: false + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: true + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + click_sort_column: value + type: number_integer + settings: + thousand_separator: '' + prefix_suffix: true + group_column: value + group_columns: { } + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false + pager: + type: mini + options: + offset: 0 + pagination_heading_level: h4 + items_per_page: 100 + total_pages: null + id: 0 + tags: + next: ›› + previous: ‹‹ + expose: + items_per_page: false + items_per_page_label: 'Items per page' + items_per_page_options: '5, 10, 25, 50' + items_per_page_options_all: false + items_per_page_options_all_label: '- All -' + offset: false + offset_label: Offset + exposed_form: + type: basic + options: + submit_button: Apply + reset_button: false + reset_button_label: Reset + exposed_sorts_label: 'Sort by' + expose_sort_order: true + sort_asc_label: Asc + sort_desc_label: Desc + access: + type: perm + options: + perm: 'access content overview' + cache: + type: tag + options: { } + empty: { } + sorts: + collection_id: + id: collection_id + table: os2loop_documents_collection_item + field: collection_id + relationship: none + group_type: group + admin_label: '' + entity_type: os2loop_document_collection_item + entity_field: collection_id + plugin_id: standard + order: ASC + expose: + label: '' + field_identifier: '' + exposed: false + weight: + id: weight + table: os2loop_documents_collection_item + field: weight + relationship: none + group_type: group + admin_label: '' + entity_type: os2loop_document_collection_item + entity_field: weight + plugin_id: standard + order: ASC + expose: + label: '' + field_identifier: '' + exposed: false + parent_document_id: + id: parent_document_id + table: os2loop_documents_collection_item + field: parent_document_id + relationship: none + group_type: group + admin_label: '' + entity_type: os2loop_document_collection_item + entity_field: parent_document_id + plugin_id: standard + order: ASC + expose: + label: '' + field_identifier: '' + exposed: false + arguments: { } + filters: { } + style: + type: table + row: + type: fields + query: + type: views_query + options: + query_comment: '' + disable_sql_rewrite: false + distinct: false + replica: false + query_tags: { } + relationships: + collection_id: + id: collection_id + table: os2loop_documents_collection_item + field: collection_id + relationship: none + group_type: group + admin_label: 'Collection node' + entity_type: os2loop_document_collection_item + entity_field: collection_id + plugin_id: standard + required: true + document_id: + id: document_id + table: os2loop_documents_collection_item + field: document_id + relationship: none + group_type: group + admin_label: 'Document node' + entity_type: os2loop_document_collection_item + entity_field: document_id + plugin_id: standard + required: true + header: { } + footer: { } + display_extenders: { } + cache_metadata: + max-age: -1 + contexts: + - 'languages:language_content' + - 'languages:language_interface' + - url.query_args + - user.permissions + tags: { } + page_1: + id: page_1 + display_title: Page + display_plugin: page + position: 1 + display_options: + display_extenders: + views_flag_refresh: + flags: { } + noscrolltop: 0 + path: admin/content/document-collection-items + cache_metadata: + max-age: -1 + contexts: + - 'languages:language_content' + - 'languages:language_interface' + - url.query_args + - user.permissions + tags: { } diff --git a/web/profiles/custom/os2loop/modules/os2loop_documents/src/Entity/DocumentCollectionItem.php b/web/profiles/custom/os2loop/modules/os2loop_documents/src/Entity/DocumentCollectionItem.php index 857305643..6811e857c 100644 --- a/web/profiles/custom/os2loop/modules/os2loop_documents/src/Entity/DocumentCollectionItem.php +++ b/web/profiles/custom/os2loop/modules/os2loop_documents/src/Entity/DocumentCollectionItem.php @@ -22,6 +22,9 @@ * "collection_id" = "collection_id", * "document_id" = "document_id", * }, + * handlers = { + * "views_data" = "Drupal\os2loop_documents\ItemViewsData", + * }, * ) * * @property \Drupal\Core\Field\FieldItemList $collection_id diff --git a/web/profiles/custom/os2loop/modules/os2loop_documents/src/ItemViewsData.php b/web/profiles/custom/os2loop/modules/os2loop_documents/src/ItemViewsData.php new file mode 100644 index 000000000..295da5d71 --- /dev/null +++ b/web/profiles/custom/os2loop/modules/os2loop_documents/src/ItemViewsData.php @@ -0,0 +1,39 @@ + 'node_field_data', + 'base field' => 'nid', + 'id' => 'standard', + 'title' => $this->t('Collection'), + 'help' => $this->t('The document collection'), + ]; + + $data['os2loop_documents_collection_item']['document_id']['relationship'] = [ + 'base' => 'node_field_data', + 'base field' => 'nid', + 'id' => 'standard', + 'title' => $this->t('Document'), + 'help' => $this->t('The document'), + ]; + + return $data; + } + +}