diff --git a/composer.json b/composer.json
index 442bf26ea..7e165fb91 100644
--- a/composer.json
+++ b/composer.json
@@ -79,6 +79,7 @@
"drupal/core-composer-scaffold": "~10.3.0",
"drupal/core-recommended": "~10.3.0",
"drupal/cshs": "^4.0",
+ "drupal/dashboard": "^2.0@alpha",
"drupal/default_content": "^2.0",
"drupal/diff": "^1.0",
"drupal/display_field_copy": "^2.1",
diff --git a/composer.lock b/composer.lock
index 6e57c81ab..eb8b19631 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4588,6 +4588,91 @@
"source": "https://git.drupalcode.org/project/ctools"
}
},
+ {
+ "name": "drupal/dashboard",
+ "version": "2.0.0-alpha1",
+ "source": {
+ "type": "git",
+ "url": "https://git.drupalcode.org/project/dashboard.git",
+ "reference": "2.0.0-alpha1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://ftp.drupal.org/files/projects/dashboard-2.0.0-alpha1.zip",
+ "reference": "2.0.0-alpha1",
+ "shasum": "d0feb638700b5e7aebc6d4ad8293226b9b92529f"
+ },
+ "require": {
+ "drupal/core": "^9 || ^10 || ^11"
+ },
+ "type": "drupal-module",
+ "extra": {
+ "drupal": {
+ "version": "2.0.0-alpha1",
+ "datestamp": "1732126700",
+ "security-coverage": {
+ "status": "not-covered",
+ "message": "Project has not opted into security advisory coverage!"
+ }
+ }
+ },
+ "notification-url": "https://packages.drupal.org/8/downloads",
+ "license": [
+ "GPL-2.0-or-later"
+ ],
+ "authors": [
+ {
+ "name": "See contributors",
+ "homepage": "https://www.drupal.org/node/35094/maintainers"
+ },
+ {
+ "name": "Anonymous",
+ "homepage": "https://www.drupal.org/user/0"
+ },
+ {
+ "name": "ChrisMiller627",
+ "homepage": "https://www.drupal.org/user/274027"
+ },
+ {
+ "name": "ckrina",
+ "homepage": "https://www.drupal.org/user/1206650"
+ },
+ {
+ "name": "dmitrig01",
+ "homepage": "https://www.drupal.org/user/47566"
+ },
+ {
+ "name": "jtsnow",
+ "homepage": "https://www.drupal.org/user/171614"
+ },
+ {
+ "name": "mtift",
+ "homepage": "https://www.drupal.org/user/751908"
+ },
+ {
+ "name": "penyaskito",
+ "homepage": "https://www.drupal.org/user/959536"
+ },
+ {
+ "name": "pingers",
+ "homepage": "https://www.drupal.org/user/56282"
+ },
+ {
+ "name": "plopesc",
+ "homepage": "https://www.drupal.org/user/282415"
+ },
+ {
+ "name": "webchick",
+ "homepage": "https://www.drupal.org/user/24967"
+ }
+ ],
+ "description": "Dashboard (another attempt, yes)",
+ "homepage": "https://www.drupal.org/project/dashboard",
+ "support": {
+ "source": "https://git.drupalcode.org/project/dashboard",
+ "issues": "https://www.drupal.org/project/issues/dashboard"
+ }
+ },
{
"name": "drupal/default_content",
"version": "2.0.0-alpha3",
diff --git a/config/default/core.extension.yml b/config/default/core.extension.yml
index 2098cdab6..8113e84d2 100644
--- a/config/default/core.extension.yml
+++ b/config/default/core.extension.yml
@@ -46,6 +46,7 @@ module:
csv_serialization: 0
ctools: 0
ctools_views: 0
+ dashboard: 0
datetime: 0
datetime_range: 0
default_content: 0
@@ -95,6 +96,7 @@ module:
hs_config_readonly: 0
hs_courses: 0
hs_courses_importer: 0
+ hs_dashboard: 0
hs_entities: 0
hs_event_series: 0
hs_event_series_display: 0
diff --git a/config/default/dashboard.dashboard.dashboard.yml b/config/default/dashboard.dashboard.dashboard.yml
new file mode 100644
index 000000000..ea1ed47b7
--- /dev/null
+++ b/config/default/dashboard.dashboard.dashboard.yml
@@ -0,0 +1,146 @@
+uuid: 9e622af8-2093-42ab-a7fe-0f1408c29a7b
+langcode: en
+status: true
+dependencies:
+ config:
+ - views.view.duplicate_people
+ - views.view.editoria11y_results
+ - views.view.my_latest_edits
+ - views.view.new_default_image_alt_text
+ - views.view.site_dashboard_active_site_editors
+ module:
+ - hs_dashboard
+ - layout_builder
+ - layout_discovery
+ - views
+id: dashboard
+label: Dashboard
+description: ''
+layout:
+ -
+ layout_id: layout_twocol_section
+ layout_settings:
+ label: 'My latest edits / Duplicate People'
+ context_mapping: { }
+ column_widths: 50-50
+ components:
+ 7a14ab89-4e5b-4cb6-92bf-a68bc5e1e51e:
+ uuid: 7a14ab89-4e5b-4cb6-92bf-a68bc5e1e51e
+ region: first
+ configuration:
+ id: 'views_block:my_latest_edits-block_1'
+ label: ''
+ label_display: visible
+ provider: views
+ context_mapping: { }
+ views_label: ''
+ items_per_page: none
+ exposed: { }
+ weight: 0
+ additional: { }
+ 587e2cf4-9e8a-4824-9fbd-7cdecf13b91f:
+ uuid: 587e2cf4-9e8a-4824-9fbd-7cdecf13b91f
+ region: second
+ configuration:
+ id: 'views_block:duplicate_people-block_1'
+ label: ''
+ label_display: visible
+ provider: views
+ context_mapping: { }
+ views_label: ''
+ items_per_page: none
+ exposed: { }
+ weight: 0
+ additional: { }
+ third_party_settings: { }
+ -
+ layout_id: layout_twocol_section
+ layout_settings:
+ label: 'University Policies'
+ context_mapping: { }
+ column_widths: 50-50
+ components:
+ 80cb5a9e-3a39-46c8-a0bb-a980aec29dfe:
+ uuid: 80cb5a9e-3a39-46c8-a0bb-a980aec29dfe
+ region: first
+ configuration:
+ id: hs_university_policies_block
+ label: 'University Policies'
+ label_display: visible
+ provider: hs_dashboard
+ context_mapping: { }
+ weight: 0
+ additional: { }
+ third_party_settings: { }
+ -
+ layout_id: layout_onecol
+ layout_settings:
+ label: 'Section one col'
+ context_mapping: { }
+ components:
+ fdff49bf-c002-4f14-a705-911da9e979a8:
+ uuid: fdff49bf-c002-4f14-a705-911da9e979a8
+ region: content
+ configuration:
+ id: 'views_block:editoria11y_results-block_top_results'
+ label: ''
+ label_display: visible
+ provider: views
+ context_mapping: { }
+ views_label: ''
+ items_per_page: none
+ exposed: { }
+ weight: 8
+ additional: { }
+ c2e96c4c-3687-40e8-baba-030bd9a7ea35:
+ uuid: c2e96c4c-3687-40e8-baba-030bd9a7ea35
+ region: content
+ configuration:
+ id: hs_dashboard_hsdp_announcements
+ label: 'HSDP Announcements'
+ label_display: visible
+ provider: hs_dashboard
+ context_mapping: { }
+ weight: 9
+ additional: { }
+ b393947f-61c3-4752-939e-6c084e51b70f:
+ uuid: b393947f-61c3-4752-939e-6c084e51b70f
+ region: content
+ configuration:
+ id: 'views_block:site_dashboard_active_site_editors-block_1'
+ label: ''
+ label_display: visible
+ provider: views
+ context_mapping: { }
+ views_label: ''
+ items_per_page: none
+ exposed: { }
+ weight: 2
+ additional: { }
+ 50ecf2ae-f119-4527-89bc-78bdb5a63e7b:
+ uuid: 50ecf2ae-f119-4527-89bc-78bdb5a63e7b
+ region: content
+ configuration:
+ id: 'views_block:new_default_image_alt_text-block_1'
+ label: ''
+ label_display: visible
+ provider: views
+ context_mapping: { }
+ views_label: ''
+ items_per_page: none
+ exposed: { }
+ weight: 7
+ additional: { }
+ 639187d0-99c0-40de-a51c-1adfcfc5a258:
+ uuid: 639187d0-99c0-40de-a51c-1adfcfc5a258
+ region: content
+ configuration:
+ id: hs_dashboard_importers
+ label: Importers
+ label_display: visible
+ provider: hs_dashboard
+ context_mapping: { }
+ weight: 3
+ additional: { }
+ third_party_settings: { }
+weight: 0
diff --git a/config/default/views.view.dashboard_content.yml b/config/default/views.view.dashboard_content.yml
new file mode 100644
index 000000000..64e8c3f55
--- /dev/null
+++ b/config/default/views.view.dashboard_content.yml
@@ -0,0 +1,1405 @@
+uuid: 76da3f26-93cb-4f23-8311-9ae53b28d538
+langcode: en
+status: true
+dependencies:
+ module:
+ - node
+ - user
+_core:
+ default_config_hash: VU2B0OjzeHGk32ixG2NpIKv6_TTB5bKou2lMUxFi5hw
+id: dashboard_content
+label: 'Dashboard content blocks'
+module: views
+description: 'Lists of content related to the current user, for being used in the dashboard.'
+tag: dashboard
+base_table: node_field_data
+base_field: nid
+display:
+ default:
+ id: default
+ display_title: Default
+ display_plugin: default
+ position: 0
+ display_options:
+ title: 'My recent content'
+ fields:
+ title:
+ id: title
+ table: node_field_data
+ field: title
+ relationship: none
+ group_type: group
+ admin_label: ''
+ plugin_id: field
+ label: Title
+ 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
+ type:
+ id: type
+ table: node_field_data
+ field: type
+ relationship: none
+ group_type: group
+ admin_label: ''
+ entity_type: node
+ entity_field: type
+ plugin_id: field
+ label: 'Content type'
+ exclude: false
+ alter:
+ alter_text: false
+ text: ''
+ make_link: false
+ path: ''
+ absolute: false
+ external: false
+ replace_spaces: false
+ path_case: none
+ trim_whitespace: false
+ alt: ''
+ rel: ''
+ link_class: ''
+ prefix: ''
+ suffix: ''
+ target: ''
+ nl2br: false
+ max_length: 0
+ word_boundary: true
+ ellipsis: true
+ more_link: false
+ more_link_text: ''
+ more_link_path: ''
+ strip_tags: false
+ trim: false
+ preserve_tags: ''
+ html: false
+ element_type: ''
+ element_class: ''
+ element_label_type: ''
+ element_label_class: ''
+ element_label_colon: true
+ element_wrapper_type: ''
+ element_wrapper_class: ''
+ element_default_classes: true
+ empty: ''
+ hide_empty: false
+ empty_zero: false
+ hide_alter_empty: true
+ click_sort_column: target_id
+ type: entity_reference_label
+ settings:
+ link: true
+ group_column: target_id
+ group_columns: { }
+ group_rows: true
+ delta_limit: 0
+ delta_offset: 0
+ delta_reversed: false
+ delta_first_last: false
+ multi_type: separator
+ separator: ', '
+ field_api_classes: false
+ changed:
+ id: changed
+ table: node_field_data
+ field: changed
+ relationship: none
+ group_type: group
+ admin_label: ''
+ entity_type: node
+ entity_field: changed
+ plugin_id: field
+ label: 'Last update'
+ exclude: false
+ alter:
+ alter_text: false
+ text: ''
+ make_link: false
+ path: ''
+ absolute: false
+ external: false
+ replace_spaces: false
+ path_case: none
+ trim_whitespace: false
+ alt: ''
+ rel: ''
+ link_class: ''
+ prefix: ''
+ suffix: ''
+ target: ''
+ nl2br: false
+ max_length: 0
+ word_boundary: true
+ ellipsis: true
+ more_link: false
+ more_link_text: ''
+ more_link_path: ''
+ strip_tags: false
+ trim: false
+ preserve_tags: ''
+ html: false
+ element_type: ''
+ element_class: ''
+ element_label_type: ''
+ element_label_class: ''
+ element_label_colon: true
+ element_wrapper_type: ''
+ element_wrapper_class: ''
+ element_default_classes: true
+ empty: ''
+ hide_empty: false
+ empty_zero: false
+ hide_alter_empty: true
+ click_sort_column: value
+ type: timestamp_ago
+ settings:
+ future_format: '@interval hence'
+ past_format: '@interval ago'
+ granularity: 2
+ 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
+ operations:
+ id: operations
+ table: node_revision
+ field: operations
+ relationship: none
+ group_type: group
+ admin_label: ''
+ entity_type: node
+ plugin_id: entity_operations
+ label: ''
+ exclude: false
+ alter:
+ alter_text: false
+ text: ''
+ make_link: false
+ path: ''
+ absolute: false
+ external: false
+ replace_spaces: false
+ path_case: none
+ trim_whitespace: false
+ alt: ''
+ rel: ''
+ link_class: ''
+ prefix: ''
+ suffix: ''
+ target: ''
+ nl2br: false
+ max_length: 0
+ word_boundary: true
+ ellipsis: true
+ more_link: false
+ more_link_text: ''
+ more_link_path: ''
+ strip_tags: false
+ trim: false
+ preserve_tags: ''
+ html: false
+ element_type: ''
+ element_class: ''
+ element_label_type: ''
+ element_label_class: ''
+ element_label_colon: false
+ element_wrapper_type: ''
+ element_wrapper_class: ''
+ element_default_classes: true
+ empty: ''
+ hide_empty: false
+ empty_zero: false
+ hide_alter_empty: true
+ destination: false
+ pager:
+ type: some
+ options:
+ offset: 0
+ items_per_page: 10
+ exposed_form:
+ type: basic
+ options:
+ submit_button: Filter
+ reset_button: true
+ 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: 'view own unpublished content'
+ cache:
+ type: tag
+ options: { }
+ empty:
+ area_text_custom:
+ id: area_text_custom
+ table: views
+ field: area_text_custom
+ relationship: none
+ group_type: group
+ admin_label: ''
+ plugin_id: text_custom
+ empty: true
+ content: "You haven't authored any content yet."
+ tokenize: false
+ sorts:
+ changed:
+ id: changed
+ table: node_field_data
+ field: changed
+ relationship: none
+ group_type: group
+ admin_label: ''
+ entity_type: node
+ entity_field: changed
+ plugin_id: date
+ order: DESC
+ expose:
+ label: Changed
+ field_identifier: changed
+ exposed: false
+ granularity: second
+ arguments:
+ uid:
+ id: uid
+ table: node_field_data
+ field: uid
+ relationship: none
+ group_type: group
+ admin_label: ''
+ entity_type: node
+ entity_field: uid
+ plugin_id: numeric
+ default_action: default
+ exception:
+ value: all
+ title_enable: false
+ title: All
+ title_enable: false
+ title: ''
+ default_argument_type: current_user
+ default_argument_options: { }
+ summary_options:
+ base_path: ''
+ count: true
+ override: false
+ items_per_page: 25
+ summary:
+ sort_order: asc
+ number_of_records: 0
+ format: default_summary
+ specify_validation: false
+ validate:
+ type: none
+ fail: 'not found'
+ validate_options: { }
+ break_phrase: false
+ not: false
+ filters:
+ status:
+ id: status
+ table: node_field_data
+ field: status
+ relationship: none
+ group_type: group
+ admin_label: ''
+ entity_type: node
+ entity_field: status
+ plugin_id: boolean
+ operator: '='
+ value: '1'
+ group: 1
+ exposed: false
+ expose:
+ operator_id: ''
+ label: ''
+ description: ''
+ use_operator: false
+ operator: ''
+ operator_limit_selection: false
+ operator_list: { }
+ identifier: ''
+ required: false
+ remember: false
+ multiple: false
+ remember_roles:
+ authenticated: authenticated
+ is_grouped: false
+ group_info:
+ label: ''
+ description: ''
+ identifier: ''
+ optional: true
+ widget: select
+ multiple: false
+ remember: false
+ default_group: All
+ default_group_multiple: { }
+ group_items: { }
+ status_extra:
+ id: status_extra
+ table: node_field_data
+ field: status_extra
+ relationship: none
+ group_type: group
+ admin_label: ''
+ entity_type: node
+ plugin_id: node_status
+ operator: '='
+ value: false
+ group: 1
+ exposed: false
+ expose:
+ operator_id: ''
+ label: ''
+ description: ''
+ use_operator: false
+ operator: ''
+ operator_limit_selection: false
+ operator_list: { }
+ identifier: ''
+ required: false
+ remember: false
+ multiple: false
+ remember_roles:
+ authenticated: authenticated
+ is_grouped: false
+ group_info:
+ label: ''
+ description: ''
+ identifier: ''
+ optional: true
+ widget: select
+ multiple: false
+ remember: false
+ default_group: All
+ default_group_multiple: { }
+ group_items: { }
+ style:
+ type: table
+ options:
+ grouping: { }
+ row_class: ''
+ default_row_class: true
+ columns:
+ title: title
+ type: type
+ changed: changed
+ operations: operations
+ default: '-1'
+ info:
+ title:
+ sortable: false
+ default_sort_order: asc
+ align: ''
+ separator: ''
+ empty_column: false
+ responsive: ''
+ type:
+ sortable: false
+ default_sort_order: asc
+ align: ''
+ separator: ''
+ empty_column: false
+ responsive: ''
+ changed:
+ sortable: false
+ default_sort_order: asc
+ align: ''
+ separator: ''
+ empty_column: false
+ responsive: ''
+ operations:
+ align: ''
+ separator: ''
+ empty_column: false
+ responsive: ''
+ override: true
+ sticky: false
+ summary: ''
+ empty_table: true
+ caption: ''
+ description: ''
+ row:
+ type: fields
+ query:
+ type: views_query
+ options:
+ query_comment: ''
+ disable_sql_rewrite: false
+ distinct: false
+ replica: false
+ query_tags: { }
+ relationships: { }
+ use_more: true
+ use_more_always: true
+ use_more_text: 'See all content'
+ link_display: custom_url
+ link_url: /admin/content
+ header: { }
+ footer: { }
+ display_extenders: { }
+ cache_metadata:
+ max-age: -1
+ contexts:
+ - 'languages:language_content'
+ - 'languages:language_interface'
+ - url
+ - user
+ - 'user.node_grants:view'
+ - user.permissions
+ tags: { }
+ block_edited_content:
+ id: block_edited_content
+ display_title: 'Edited content block'
+ display_plugin: block
+ position: 1
+ display_options:
+ title: 'Content I recently edited'
+ empty:
+ area_text_custom:
+ id: area_text_custom
+ table: views
+ field: area_text_custom
+ relationship: none
+ group_type: group
+ admin_label: ''
+ plugin_id: text_custom
+ empty: true
+ content: "You haven't edited any content."
+ tokenize: false
+ arguments:
+ revision_uid:
+ id: revision_uid
+ table: node_revision
+ field: revision_uid
+ relationship: none
+ group_type: group
+ admin_label: ''
+ entity_type: node
+ entity_field: revision_uid
+ plugin_id: entity_target_id
+ default_action: default
+ exception:
+ value: all
+ title_enable: false
+ title: All
+ title_enable: false
+ title: ''
+ default_argument_type: current_user
+ default_argument_options: { }
+ summary_options:
+ base_path: ''
+ count: true
+ override: false
+ items_per_page: 25
+ summary:
+ sort_order: asc
+ number_of_records: 0
+ format: default_summary
+ specify_validation: false
+ validate:
+ type: none
+ fail: 'not found'
+ validate_options: { }
+ break_phrase: false
+ not: false
+ target_entity_type_id: user
+ uid:
+ id: uid
+ table: node_field_data
+ field: uid
+ relationship: none
+ group_type: group
+ admin_label: ''
+ entity_type: node
+ entity_field: uid
+ plugin_id: entity_target_id
+ default_action: default
+ exception:
+ value: all
+ title_enable: false
+ title: All
+ title_enable: false
+ title: ''
+ default_argument_type: current_user
+ default_argument_options: { }
+ summary_options:
+ base_path: ''
+ count: true
+ override: false
+ items_per_page: 25
+ summary:
+ sort_order: asc
+ number_of_records: 0
+ format: default_summary
+ specify_validation: false
+ validate:
+ type: none
+ fail: 'not found'
+ validate_options: { }
+ break_phrase: false
+ not: true
+ target_entity_type_id: user
+ filters:
+ status_extra:
+ id: status_extra
+ table: node_field_data
+ field: status_extra
+ relationship: none
+ group_type: group
+ admin_label: ''
+ entity_type: node
+ plugin_id: node_status
+ operator: '='
+ value: false
+ group: 1
+ exposed: false
+ expose:
+ operator_id: ''
+ label: ''
+ description: ''
+ use_operator: false
+ operator: ''
+ operator_limit_selection: false
+ operator_list: { }
+ identifier: ''
+ required: false
+ remember: false
+ multiple: false
+ remember_roles:
+ authenticated: authenticated
+ is_grouped: false
+ group_info:
+ label: ''
+ description: ''
+ identifier: ''
+ optional: true
+ widget: select
+ multiple: false
+ remember: false
+ default_group: All
+ default_group_multiple: { }
+ group_items: { }
+ filter_groups:
+ operator: AND
+ groups:
+ 1: AND
+ defaults:
+ empty: false
+ title: false
+ relationships: false
+ fields: true
+ arguments: false
+ filters: false
+ filter_groups: false
+ relationships: { }
+ display_description: 'Content edited by the current user.'
+ display_comment: 'Block of content by other authors that has been edited by the current user, for being used in the dashboard.'
+ display_extenders: { }
+ block_description: 'Content edited by the current user'
+ block_category: 'Content Management'
+ cache_metadata:
+ max-age: -1
+ contexts:
+ - 'languages:language_content'
+ - 'languages:language_interface'
+ - url
+ - user
+ - 'user.node_grants:view'
+ - user.permissions
+ tags: { }
+ block_own_drafts:
+ id: block_own_drafts
+ display_title: 'Drafts block'
+ display_plugin: block
+ position: 1
+ display_options:
+ title: 'My drafts'
+ empty:
+ area_text_custom:
+ id: area_text_custom
+ table: views
+ field: area_text_custom
+ relationship: none
+ group_type: group
+ admin_label: ''
+ plugin_id: text_custom
+ empty: true
+ content: 'You have no pending drafts.'
+ tokenize: false
+ filters:
+ status:
+ id: status
+ table: node_field_data
+ field: status
+ relationship: none
+ group_type: group
+ admin_label: ''
+ entity_type: node
+ entity_field: status
+ plugin_id: boolean
+ operator: '='
+ value: '0'
+ group: 1
+ exposed: false
+ expose:
+ operator_id: ''
+ label: ''
+ description: ''
+ use_operator: false
+ operator: ''
+ operator_limit_selection: false
+ operator_list: { }
+ identifier: ''
+ required: false
+ remember: false
+ multiple: false
+ remember_roles:
+ authenticated: authenticated
+ is_grouped: false
+ group_info:
+ label: ''
+ description: ''
+ identifier: ''
+ optional: true
+ widget: select
+ multiple: false
+ remember: false
+ default_group: All
+ default_group_multiple: { }
+ group_items: { }
+ status_extra:
+ id: status_extra
+ table: node_field_data
+ field: status_extra
+ relationship: none
+ group_type: group
+ admin_label: ''
+ entity_type: node
+ plugin_id: node_status
+ operator: '='
+ value: false
+ group: 1
+ exposed: false
+ expose:
+ operator_id: ''
+ label: ''
+ description: ''
+ use_operator: false
+ operator: ''
+ operator_limit_selection: false
+ operator_list: { }
+ identifier: ''
+ required: false
+ remember: false
+ multiple: false
+ remember_roles:
+ authenticated: authenticated
+ is_grouped: false
+ group_info:
+ label: ''
+ description: ''
+ identifier: ''
+ optional: true
+ widget: select
+ multiple: false
+ remember: false
+ default_group: All
+ default_group_multiple: { }
+ group_items: { }
+ filter_groups:
+ operator: AND
+ groups:
+ 1: AND
+ defaults:
+ empty: false
+ title: false
+ filters: false
+ filter_groups: false
+ display_description: 'Drafts by the current user.'
+ display_comment: "Block of the current user's unpublished content, for being used in the dashboard."
+ display_extenders: { }
+ block_description: "Current user's drafts"
+ block_category: 'Content Management'
+ cache_metadata:
+ max-age: -1
+ contexts:
+ - 'languages:language_content'
+ - 'languages:language_interface'
+ - url
+ - user
+ - 'user.node_grants:view'
+ - user.permissions
+ tags: { }
+ block_own_recent_content:
+ id: block_own_recent_content
+ display_title: 'Recent content block'
+ display_plugin: block
+ position: 1
+ display_options:
+ defaults:
+ title: true
+ display_description: 'Recent content by the current user.'
+ display_comment: 'Block of published content by the current user, for being used in the dashboard.'
+ display_extenders: { }
+ block_description: "Current user's content"
+ block_category: 'Content Management'
+ cache_metadata:
+ max-age: -1
+ contexts:
+ - 'languages:language_content'
+ - 'languages:language_interface'
+ - url
+ - user
+ - 'user.node_grants:view'
+ - user.permissions
+ tags: { }
+ block_site_content:
+ id: block_site_content
+ display_title: 'Site content'
+ display_plugin: block
+ position: 4
+ display_options:
+ title: 'Site Content'
+ fields:
+ node_bulk_form:
+ id: node_bulk_form
+ table: node
+ field: node_bulk_form
+ relationship: none
+ group_type: group
+ admin_label: ''
+ entity_type: node
+ plugin_id: node_bulk_form
+ label: ''
+ exclude: false
+ alter:
+ alter_text: false
+ text: ''
+ make_link: false
+ path: ''
+ absolute: false
+ external: false
+ replace_spaces: false
+ path_case: none
+ trim_whitespace: false
+ alt: ''
+ rel: ''
+ link_class: ''
+ prefix: ''
+ suffix: ''
+ target: ''
+ nl2br: false
+ max_length: 0
+ word_boundary: true
+ ellipsis: true
+ more_link: false
+ more_link_text: ''
+ more_link_path: ''
+ strip_tags: false
+ trim: false
+ preserve_tags: ''
+ html: false
+ element_type: ''
+ element_class: ''
+ element_label_type: ''
+ element_label_class: ''
+ element_label_colon: false
+ element_wrapper_type: ''
+ element_wrapper_class: ''
+ element_default_classes: true
+ empty: ''
+ hide_empty: false
+ empty_zero: false
+ hide_alter_empty: true
+ action_title: Action
+ include_exclude: exclude
+ selected_actions: { }
+ title:
+ id: title
+ table: node_field_data
+ field: title
+ relationship: none
+ group_type: group
+ admin_label: ''
+ plugin_id: field
+ label: Title
+ 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
+ type:
+ id: type
+ table: node_field_data
+ field: type
+ relationship: none
+ group_type: group
+ admin_label: ''
+ entity_type: node
+ entity_field: type
+ plugin_id: field
+ label: 'Content type'
+ exclude: false
+ alter:
+ alter_text: false
+ text: ''
+ make_link: false
+ path: ''
+ absolute: false
+ external: false
+ replace_spaces: false
+ path_case: none
+ trim_whitespace: false
+ alt: ''
+ rel: ''
+ link_class: ''
+ prefix: ''
+ suffix: ''
+ target: ''
+ nl2br: false
+ max_length: 0
+ word_boundary: true
+ ellipsis: true
+ more_link: false
+ more_link_text: ''
+ more_link_path: ''
+ strip_tags: false
+ trim: false
+ preserve_tags: ''
+ html: false
+ element_type: ''
+ element_class: ''
+ element_label_type: ''
+ element_label_class: ''
+ element_label_colon: true
+ element_wrapper_type: ''
+ element_wrapper_class: ''
+ element_default_classes: true
+ empty: ''
+ hide_empty: false
+ empty_zero: false
+ hide_alter_empty: true
+ click_sort_column: target_id
+ type: entity_reference_label
+ settings:
+ link: true
+ group_column: target_id
+ group_columns: { }
+ group_rows: true
+ delta_limit: 0
+ delta_offset: 0
+ delta_reversed: false
+ delta_first_last: false
+ multi_type: separator
+ separator: ', '
+ field_api_classes: false
+ changed:
+ id: changed
+ table: node_field_data
+ field: changed
+ relationship: none
+ group_type: group
+ admin_label: ''
+ entity_type: node
+ entity_field: changed
+ plugin_id: field
+ label: Updated
+ exclude: false
+ alter:
+ alter_text: false
+ text: ''
+ make_link: false
+ path: ''
+ absolute: false
+ external: false
+ replace_spaces: false
+ path_case: none
+ trim_whitespace: false
+ alt: ''
+ rel: ''
+ link_class: ''
+ prefix: ''
+ suffix: ''
+ target: ''
+ nl2br: false
+ max_length: 0
+ word_boundary: true
+ ellipsis: true
+ more_link: false
+ more_link_text: ''
+ more_link_path: ''
+ strip_tags: false
+ trim: false
+ preserve_tags: ''
+ html: false
+ element_type: ''
+ element_class: ''
+ element_label_type: ''
+ element_label_class: ''
+ element_label_colon: true
+ element_wrapper_type: ''
+ element_wrapper_class: ''
+ element_default_classes: true
+ empty: ''
+ hide_empty: false
+ empty_zero: false
+ hide_alter_empty: true
+ click_sort_column: value
+ type: timestamp
+ settings:
+ date_format: short
+ custom_date_format: ''
+ timezone: ''
+ tooltip:
+ date_format: long
+ custom_date_format: ''
+ time_diff:
+ enabled: false
+ future_format: '@interval hence'
+ past_format: '@interval ago'
+ granularity: 2
+ refresh: 60
+ 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
+ operations:
+ id: operations
+ table: node_revision
+ field: operations
+ relationship: none
+ group_type: group
+ admin_label: ''
+ entity_type: node
+ plugin_id: entity_operations
+ label: ''
+ exclude: false
+ alter:
+ alter_text: false
+ text: ''
+ make_link: false
+ path: ''
+ absolute: false
+ external: false
+ replace_spaces: false
+ path_case: none
+ trim_whitespace: false
+ alt: ''
+ rel: ''
+ link_class: ''
+ prefix: ''
+ suffix: ''
+ target: ''
+ nl2br: false
+ max_length: 0
+ word_boundary: true
+ ellipsis: true
+ more_link: false
+ more_link_text: ''
+ more_link_path: ''
+ strip_tags: false
+ trim: false
+ preserve_tags: ''
+ html: false
+ element_type: ''
+ element_class: ''
+ element_label_type: ''
+ element_label_class: ''
+ element_label_colon: false
+ element_wrapper_type: ''
+ element_wrapper_class: ''
+ element_default_classes: true
+ empty: ''
+ hide_empty: false
+ empty_zero: false
+ hide_alter_empty: true
+ destination: false
+ name:
+ id: name
+ table: users_field_data
+ field: name
+ relationship: uid
+ group_type: group
+ admin_label: ''
+ entity_type: user
+ entity_field: name
+ plugin_id: field
+ label: Author
+ exclude: false
+ alter:
+ alter_text: false
+ text: ''
+ make_link: false
+ path: ''
+ absolute: false
+ external: false
+ replace_spaces: false
+ path_case: none
+ trim_whitespace: false
+ alt: ''
+ rel: ''
+ link_class: ''
+ prefix: ''
+ suffix: ''
+ target: ''
+ nl2br: false
+ max_length: 0
+ word_boundary: true
+ ellipsis: true
+ more_link: false
+ more_link_text: ''
+ more_link_path: ''
+ strip_tags: false
+ trim: false
+ preserve_tags: ''
+ html: false
+ element_type: ''
+ element_class: ''
+ element_label_type: ''
+ element_label_class: ''
+ element_label_colon: true
+ element_wrapper_type: ''
+ element_wrapper_class: ''
+ element_default_classes: true
+ empty: ''
+ hide_empty: false
+ empty_zero: false
+ hide_alter_empty: true
+ click_sort_column: value
+ type: user_name
+ 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
+ arguments: { }
+ filters:
+ status:
+ id: status
+ table: node_field_data
+ field: status
+ relationship: none
+ group_type: group
+ admin_label: ''
+ entity_type: node
+ entity_field: status
+ plugin_id: boolean
+ operator: '='
+ value: '1'
+ group: 1
+ exposed: false
+ expose:
+ operator_id: ''
+ label: ''
+ description: ''
+ use_operator: false
+ operator: ''
+ operator_limit_selection: false
+ operator_list: { }
+ identifier: ''
+ required: false
+ remember: false
+ multiple: false
+ remember_roles:
+ authenticated: authenticated
+ is_grouped: false
+ group_info:
+ label: ''
+ description: ''
+ identifier: ''
+ optional: true
+ widget: select
+ multiple: false
+ remember: false
+ default_group: All
+ default_group_multiple: { }
+ group_items: { }
+ status_extra:
+ id: status_extra
+ table: node_field_data
+ field: status_extra
+ relationship: none
+ group_type: group
+ admin_label: ''
+ entity_type: node
+ plugin_id: node_status
+ operator: '='
+ value: false
+ group: 1
+ exposed: false
+ expose:
+ operator_id: ''
+ label: ''
+ description: ''
+ use_operator: false
+ operator: ''
+ operator_limit_selection: false
+ operator_list: { }
+ identifier: ''
+ required: false
+ remember: false
+ multiple: false
+ remember_roles:
+ authenticated: authenticated
+ is_grouped: false
+ group_info:
+ label: ''
+ description: ''
+ identifier: ''
+ optional: true
+ widget: select
+ multiple: false
+ remember: false
+ default_group: All
+ default_group_multiple: { }
+ group_items: { }
+ title:
+ id: title
+ table: node_field_data
+ field: title
+ relationship: none
+ group_type: group
+ admin_label: ''
+ entity_type: node
+ entity_field: title
+ plugin_id: string
+ operator: contains
+ value: ''
+ group: 1
+ exposed: true
+ expose:
+ operator_id: title_op
+ label: Search
+ description: ''
+ use_operator: false
+ operator: title_op
+ operator_limit_selection: false
+ operator_list: { }
+ identifier: title
+ required: false
+ remember: false
+ multiple: false
+ remember_roles:
+ authenticated: authenticated
+ anonymous: '0'
+ content_editor: '0'
+ administrator: '0'
+ placeholder: ''
+ is_grouped: false
+ group_info:
+ label: ''
+ description: ''
+ identifier: ''
+ optional: true
+ widget: select
+ multiple: false
+ remember: false
+ default_group: All
+ default_group_multiple: { }
+ group_items: { }
+ type:
+ id: type
+ table: node_field_data
+ field: type
+ relationship: none
+ group_type: group
+ admin_label: ''
+ entity_type: node
+ entity_field: type
+ plugin_id: bundle
+ operator: in
+ value: { }
+ group: 1
+ exposed: true
+ expose:
+ operator_id: type_op
+ label: 'Content type'
+ description: ''
+ use_operator: false
+ operator: type_op
+ operator_limit_selection: false
+ operator_list: { }
+ identifier: type
+ required: false
+ remember: false
+ multiple: false
+ remember_roles:
+ authenticated: authenticated
+ anonymous: '0'
+ content_editor: '0'
+ administrator: '0'
+ reduce: false
+ is_grouped: false
+ group_info:
+ label: ''
+ description: ''
+ identifier: ''
+ optional: true
+ widget: select
+ multiple: false
+ remember: false
+ default_group: All
+ default_group_multiple: { }
+ group_items: { }
+ filter_groups:
+ operator: AND
+ groups:
+ 1: AND
+ defaults:
+ title: false
+ relationships: false
+ fields: false
+ arguments: false
+ filters: false
+ filter_groups: false
+ relationships:
+ uid:
+ id: uid
+ table: node_field_data
+ field: uid
+ relationship: none
+ group_type: group
+ admin_label: author
+ entity_type: node
+ entity_field: uid
+ plugin_id: standard
+ required: false
+ display_description: ''
+ display_extenders: { }
+ block_description: 'Site Content'
+ block_category: 'Content Management'
+ cache_metadata:
+ max-age: 0
+ contexts:
+ - 'languages:language_content'
+ - 'languages:language_interface'
+ - url
+ - user
+ - 'user.node_grants:view'
+ - user.permissions
+ tags: { }
diff --git a/config/default/views.view.duplicate_people.yml b/config/default/views.view.duplicate_people.yml
new file mode 100644
index 000000000..35f0a80c5
--- /dev/null
+++ b/config/default/views.view.duplicate_people.yml
@@ -0,0 +1,595 @@
+uuid: 354a9557-5f34-464e-8b8b-2c47c379fcd3
+langcode: en
+status: true
+dependencies:
+ config:
+ - node.type.hs_person
+ module:
+ - hs_dashboard
+ - node
+ - publishcontent
+ - user
+id: duplicate_people
+label: 'Duplicate People'
+module: views
+description: ''
+tag: ''
+base_table: node_field_data
+base_field: nid
+display:
+ default:
+ id: default
+ display_title: Default
+ display_plugin: default
+ position: 0
+ display_options:
+ title: 'Duplicate People'
+ fields:
+ title:
+ id: title
+ table: node_field_data
+ field: title
+ relationship: none
+ group_type: group
+ admin_label: ''
+ entity_type: node
+ entity_field: title
+ plugin_id: field
+ label: ''
+ exclude: false
+ alter:
+ alter_text: false
+ make_link: false
+ absolute: false
+ word_boundary: false
+ ellipsis: false
+ strip_tags: false
+ trim: false
+ 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
+ changed:
+ id: changed
+ table: node_field_revision
+ field: changed
+ relationship: none
+ group_type: group
+ admin_label: ''
+ entity_type: node
+ entity_field: changed
+ plugin_id: field
+ label: 'Last Updated'
+ exclude: false
+ alter:
+ alter_text: false
+ text: ''
+ make_link: false
+ path: ''
+ absolute: false
+ external: false
+ replace_spaces: false
+ path_case: none
+ trim_whitespace: false
+ alt: ''
+ rel: ''
+ link_class: ''
+ prefix: ''
+ suffix: ''
+ target: ''
+ nl2br: false
+ max_length: 0
+ word_boundary: true
+ ellipsis: true
+ more_link: false
+ more_link_text: ''
+ more_link_path: ''
+ strip_tags: false
+ trim: false
+ preserve_tags: ''
+ html: false
+ element_type: ''
+ element_class: ''
+ element_label_type: ''
+ element_label_class: ''
+ element_label_colon: false
+ element_wrapper_type: ''
+ element_wrapper_class: ''
+ element_default_classes: true
+ empty: ''
+ hide_empty: false
+ empty_zero: false
+ hide_alter_empty: true
+ click_sort_column: value
+ type: timestamp
+ settings:
+ date_format: standard_date
+ custom_date_format: ''
+ timezone: ''
+ tooltip:
+ date_format: long
+ custom_date_format: ''
+ time_diff:
+ enabled: false
+ future_format: '@interval hence'
+ past_format: '@interval ago'
+ granularity: 2
+ refresh: 60
+ description: ''
+ 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
+ hs_dashboard_source_field:
+ id: hs_dashboard_source_field
+ table: node_field_data
+ field: hs_dashboard_source_field
+ relationship: none
+ group_type: group
+ admin_label: ''
+ entity_type: node
+ plugin_id: hs_dashboard_source_field
+ label: Source
+ 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
+ publishcontent:
+ id: publishcontent
+ table: node
+ field: publishcontent
+ relationship: none
+ group_type: group
+ admin_label: ''
+ entity_type: node
+ plugin_id: publishcontent_node
+ label: Publish/Unpublish
+ exclude: true
+ 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
+ edit_node:
+ id: edit_node
+ table: node
+ field: edit_node
+ relationship: none
+ group_type: group
+ admin_label: ''
+ entity_type: node
+ plugin_id: entity_link_edit
+ label: 'Link to edit Content'
+ exclude: true
+ 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
+ text: Edit
+ output_url_as_text: false
+ absolute: false
+ nothing:
+ id: nothing
+ table: views
+ field: nothing
+ relationship: none
+ group_type: group
+ admin_label: ''
+ plugin_id: custom
+ label: ''
+ exclude: false
+ alter:
+ alter_text: true
+ text: "{{ edit_node }}\r\n
\r\n{{ publishcontent }}"
+ make_link: false
+ path: ''
+ absolute: false
+ external: false
+ replace_spaces: false
+ path_case: none
+ trim_whitespace: false
+ alt: ''
+ rel: ''
+ link_class: ''
+ prefix: ''
+ suffix: ''
+ target: ''
+ nl2br: false
+ max_length: 0
+ word_boundary: true
+ ellipsis: true
+ more_link: false
+ more_link_text: ''
+ more_link_path: ''
+ strip_tags: false
+ trim: false
+ preserve_tags: ''
+ html: false
+ element_type: ''
+ element_class: ''
+ element_label_type: ''
+ element_label_class: ''
+ element_label_colon: false
+ element_wrapper_type: ''
+ element_wrapper_class: ''
+ element_default_classes: true
+ empty: ''
+ hide_empty: false
+ empty_zero: false
+ hide_alter_empty: false
+ pager:
+ type: mini
+ options:
+ offset: 0
+ pagination_heading_level: h4
+ items_per_page: 10
+ 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: 'edit any hs_person content'
+ cache:
+ type: tag
+ options: { }
+ empty:
+ area:
+ id: area
+ table: views
+ field: area
+ relationship: none
+ group_type: group
+ admin_label: ''
+ plugin_id: text
+ empty: true
+ content:
+ value: 'No duplicate people found.'
+ format: basic_html
+ tokenize: false
+ sorts:
+ title:
+ id: title
+ table: node_field_data
+ field: title
+ relationship: none
+ group_type: group
+ admin_label: ''
+ entity_type: node
+ entity_field: title
+ plugin_id: standard
+ order: DESC
+ expose:
+ label: ''
+ field_identifier: ''
+ exposed: false
+ changed:
+ id: changed
+ table: node_field_data
+ field: changed
+ relationship: none
+ group_type: group
+ admin_label: ''
+ entity_type: node
+ entity_field: changed
+ plugin_id: date
+ order: DESC
+ expose:
+ label: ''
+ field_identifier: ''
+ exposed: false
+ granularity: second
+ arguments: { }
+ filters:
+ type:
+ id: type
+ table: node_field_data
+ field: type
+ relationship: none
+ group_type: group
+ admin_label: ''
+ entity_type: node
+ entity_field: type
+ plugin_id: bundle
+ operator: in
+ value:
+ hs_person: hs_person
+ group: 1
+ exposed: false
+ expose:
+ operator_id: ''
+ label: ''
+ description: ''
+ use_operator: false
+ operator: ''
+ operator_limit_selection: false
+ operator_list: { }
+ identifier: ''
+ required: false
+ remember: false
+ multiple: false
+ remember_roles:
+ authenticated: authenticated
+ reduce: false
+ is_grouped: false
+ group_info:
+ label: ''
+ description: ''
+ identifier: ''
+ optional: true
+ widget: select
+ multiple: false
+ remember: false
+ default_group: All
+ default_group_multiple: { }
+ group_items: { }
+ status:
+ id: status
+ table: node_field_data
+ field: status
+ relationship: none
+ group_type: group
+ admin_label: ''
+ entity_type: node
+ entity_field: status
+ plugin_id: boolean
+ operator: '='
+ value: '1'
+ group: 1
+ exposed: false
+ expose:
+ operator_id: ''
+ label: ''
+ description: ''
+ use_operator: false
+ operator: ''
+ operator_limit_selection: false
+ operator_list: { }
+ identifier: ''
+ required: false
+ remember: false
+ multiple: false
+ remember_roles:
+ authenticated: authenticated
+ is_grouped: false
+ group_info:
+ label: ''
+ description: ''
+ identifier: ''
+ optional: true
+ widget: select
+ multiple: false
+ remember: false
+ default_group: All
+ default_group_multiple: { }
+ group_items: { }
+ style:
+ type: table
+ options:
+ grouping: { }
+ row_class: ''
+ default_row_class: true
+ columns:
+ title: title
+ changed: changed
+ default: '-1'
+ info:
+ title:
+ sortable: false
+ default_sort_order: asc
+ align: ''
+ separator: ''
+ empty_column: false
+ responsive: ''
+ changed:
+ sortable: false
+ default_sort_order: asc
+ align: ''
+ separator: ''
+ empty_column: false
+ responsive: ''
+ override: true
+ sticky: false
+ summary: ''
+ empty_table: false
+ caption: ''
+ description: ''
+ row:
+ type: fields
+ options:
+ default_field_elements: true
+ inline: { }
+ separator: ''
+ hide_empty: false
+ query:
+ type: views_query
+ options:
+ query_comment: ''
+ disable_sql_rewrite: false
+ distinct: false
+ replica: false
+ query_tags: { }
+ relationships: { }
+ use_ajax: false
+ header: { }
+ footer: { }
+ display_extenders: { }
+ cache_metadata:
+ max-age: -1
+ contexts:
+ - 'languages:language_content'
+ - 'languages:language_interface'
+ - url.query_args
+ - 'user.node_grants:view'
+ - user.permissions
+ tags: { }
+ block_1:
+ id: block_1
+ display_title: Block
+ display_plugin: block
+ position: 1
+ display_options:
+ display_extenders: { }
+ cache_metadata:
+ max-age: -1
+ contexts:
+ - 'languages:language_content'
+ - 'languages:language_interface'
+ - url.query_args
+ - 'user.node_grants:view'
+ - user.permissions
+ tags: { }
diff --git a/config/default/views.view.editoria11y_results.yml b/config/default/views.view.editoria11y_results.yml
index 43bcc569d..c25028e41 100644
--- a/config/default/views.view.editoria11y_results.yml
+++ b/config/default/views.view.editoria11y_results.yml
@@ -723,7 +723,7 @@ display:
display_plugin: block
position: 2
display_options:
- title: 'Pages with most issues'
+ title: 'Pages with the most accessibility issues'
fields:
page_title:
id: page_title
@@ -956,6 +956,7 @@ display:
use_more_text: 'All pages with issues'
header: { }
display_extenders: { }
+ block_description: 'Pages with the most accessibility issues'
allow:
items_per_page: false
cache_metadata:
diff --git a/config/default/views.view.my_latest_edits.yml b/config/default/views.view.my_latest_edits.yml
new file mode 100644
index 000000000..7733ea46d
--- /dev/null
+++ b/config/default/views.view.my_latest_edits.yml
@@ -0,0 +1,476 @@
+uuid: 0a08d9b8-bf4b-444b-a5e7-c6666539ac89
+langcode: en
+status: true
+dependencies:
+ module:
+ - node
+ - user
+id: my_latest_edits
+label: 'My Latest Edits'
+module: views
+description: ''
+tag: ''
+base_table: node_field_data
+base_field: nid
+display:
+ default:
+ id: default
+ display_title: Default
+ display_plugin: default
+ position: 0
+ display_options:
+ title: 'My Latest Edits'
+ fields:
+ title:
+ id: title
+ table: node_field_data
+ field: title
+ relationship: none
+ group_type: group
+ admin_label: ''
+ entity_type: node
+ entity_field: title
+ plugin_id: field
+ label: Title
+ exclude: false
+ alter:
+ alter_text: false
+ make_link: false
+ absolute: false
+ word_boundary: false
+ ellipsis: false
+ strip_tags: false
+ trim: false
+ 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
+ type:
+ id: type
+ table: node_field_data
+ field: type
+ relationship: none
+ group_type: group
+ admin_label: ''
+ entity_type: node
+ entity_field: type
+ plugin_id: field
+ label: Type
+ exclude: false
+ alter:
+ alter_text: false
+ text: ''
+ make_link: false
+ path: ''
+ absolute: false
+ external: false
+ replace_spaces: false
+ path_case: none
+ trim_whitespace: false
+ alt: ''
+ rel: ''
+ link_class: ''
+ prefix: ''
+ suffix: ''
+ target: ''
+ nl2br: false
+ max_length: 0
+ word_boundary: true
+ ellipsis: true
+ more_link: false
+ more_link_text: ''
+ more_link_path: ''
+ strip_tags: false
+ trim: false
+ preserve_tags: ''
+ html: false
+ element_type: ''
+ element_class: ''
+ element_label_type: ''
+ element_label_class: ''
+ element_label_colon: true
+ element_wrapper_type: ''
+ element_wrapper_class: ''
+ element_default_classes: true
+ empty: ''
+ hide_empty: false
+ empty_zero: false
+ hide_alter_empty: true
+ click_sort_column: target_id
+ type: entity_reference_label
+ settings:
+ link: false
+ group_column: target_id
+ group_columns: { }
+ group_rows: true
+ delta_limit: 0
+ delta_offset: 0
+ delta_reversed: false
+ delta_first_last: false
+ multi_type: separator
+ separator: ', '
+ field_api_classes: false
+ status:
+ id: status
+ table: node_field_data
+ field: status
+ relationship: none
+ group_type: group
+ admin_label: ''
+ entity_type: node
+ entity_field: status
+ plugin_id: field
+ label: Status
+ 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: boolean
+ settings:
+ format: unicode-yes-no
+ format_custom_false: ''
+ format_custom_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
+ changed:
+ id: changed
+ table: node_field_data
+ field: changed
+ relationship: none
+ group_type: group
+ admin_label: ''
+ entity_type: node
+ entity_field: changed
+ plugin_id: field
+ label: Updated
+ exclude: false
+ alter:
+ alter_text: false
+ text: ''
+ make_link: false
+ path: ''
+ absolute: false
+ external: false
+ replace_spaces: false
+ path_case: none
+ trim_whitespace: false
+ alt: ''
+ rel: ''
+ link_class: ''
+ prefix: ''
+ suffix: ''
+ target: ''
+ nl2br: false
+ max_length: 0
+ word_boundary: true
+ ellipsis: true
+ more_link: false
+ more_link_text: ''
+ more_link_path: ''
+ strip_tags: false
+ trim: false
+ preserve_tags: ''
+ html: false
+ element_type: ''
+ element_class: ''
+ element_label_type: ''
+ element_label_class: ''
+ element_label_colon: true
+ element_wrapper_type: ''
+ element_wrapper_class: ''
+ element_default_classes: true
+ empty: ''
+ hide_empty: false
+ empty_zero: false
+ hide_alter_empty: true
+ click_sort_column: value
+ type: timestamp
+ settings:
+ date_format: custom
+ custom_date_format: 'M d, h:i a'
+ timezone: ''
+ tooltip:
+ date_format: long
+ custom_date_format: ''
+ time_diff:
+ enabled: false
+ future_format: '@interval hence'
+ past_format: '@interval ago'
+ granularity: 2
+ refresh: 60
+ description: ''
+ 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
+ operations:
+ id: operations
+ table: node
+ field: operations
+ relationship: none
+ group_type: group
+ admin_label: ''
+ entity_type: node
+ plugin_id: entity_operations
+ label: ''
+ exclude: false
+ alter:
+ alter_text: false
+ text: ''
+ make_link: false
+ path: ''
+ absolute: false
+ external: false
+ replace_spaces: false
+ path_case: none
+ trim_whitespace: false
+ alt: ''
+ rel: ''
+ link_class: ''
+ prefix: ''
+ suffix: ''
+ target: ''
+ nl2br: false
+ max_length: 0
+ word_boundary: true
+ ellipsis: true
+ more_link: false
+ more_link_text: ''
+ more_link_path: ''
+ strip_tags: false
+ trim: false
+ preserve_tags: ''
+ html: false
+ element_type: ''
+ element_class: ''
+ element_label_type: ''
+ element_label_class: ''
+ element_label_colon: false
+ element_wrapper_type: ''
+ element_wrapper_class: ''
+ element_default_classes: true
+ empty: ''
+ hide_empty: false
+ empty_zero: false
+ hide_alter_empty: true
+ destination: false
+ pager:
+ type: some
+ options:
+ offset: 0
+ items_per_page: 10
+ 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'
+ cache:
+ type: tag
+ options: { }
+ empty:
+ area:
+ id: area
+ table: views
+ field: area
+ relationship: none
+ group_type: group
+ admin_label: ''
+ plugin_id: text
+ empty: true
+ content:
+ value: 'You have not created or edited any content.'
+ format: basic_html
+ tokenize: false
+ sorts:
+ changed:
+ id: changed
+ table: node_field_revision
+ field: changed
+ relationship: none
+ group_type: group
+ admin_label: ''
+ entity_type: node
+ entity_field: changed
+ plugin_id: date
+ order: DESC
+ expose:
+ label: ''
+ field_identifier: ''
+ exposed: false
+ granularity: second
+ arguments:
+ revision_uid:
+ id: revision_uid
+ table: node_revision
+ field: revision_uid
+ relationship: none
+ group_type: group
+ admin_label: ''
+ entity_type: node
+ entity_field: revision_uid
+ plugin_id: entity_target_id
+ default_action: default
+ exception:
+ value: all
+ title_enable: false
+ title: All
+ title_enable: false
+ title: ''
+ default_argument_type: current_user
+ default_argument_options: { }
+ summary_options:
+ base_path: ''
+ count: true
+ override: false
+ items_per_page: 25
+ summary:
+ sort_order: asc
+ number_of_records: 0
+ format: default_summary
+ specify_validation: false
+ validate:
+ type: none
+ fail: 'not found'
+ validate_options: { }
+ break_phrase: false
+ not: false
+ 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: { }
+ header: { }
+ footer:
+ area:
+ id: area
+ table: views
+ field: area
+ relationship: none
+ group_type: group
+ admin_label: ''
+ plugin_id: text
+ empty: false
+ content:
+ value: 'View all content'
+ format: basic_html
+ tokenize: false
+ display_extenders: { }
+ cache_metadata:
+ max-age: -1
+ contexts:
+ - 'languages:language_content'
+ - 'languages:language_interface'
+ - url
+ - user
+ - 'user.node_grants:view'
+ - user.permissions
+ tags: { }
+ block_1:
+ id: block_1
+ display_title: Block
+ display_plugin: block
+ position: 1
+ display_options:
+ display_extenders: { }
+ cache_metadata:
+ max-age: -1
+ contexts:
+ - 'languages:language_content'
+ - 'languages:language_interface'
+ - url
+ - user
+ - 'user.node_grants:view'
+ - user.permissions
+ tags: { }
diff --git a/config/default/views.view.new_default_image_alt_text.yml b/config/default/views.view.new_default_image_alt_text.yml
index 0703fd8d1..f3461476a 100644
--- a/config/default/views.view.new_default_image_alt_text.yml
+++ b/config/default/views.view.new_default_image_alt_text.yml
@@ -6,6 +6,7 @@ dependencies:
- field.storage.media.field_media_image
- field.storage.media.field_media_image_caption
- image.style.hs_small_scaled_200px
+ - image.style.thumbnail
- media.type.image
module:
- image
@@ -14,7 +15,7 @@ dependencies:
- user
- views_bulk_operations
id: new_default_image_alt_text
-label: 'Default Image Alt Text'
+label: 'Image Alt Text'
module: views
description: ''
tag: ''
@@ -811,6 +812,330 @@ display:
tags:
- 'config:field.storage.media.field_media_image'
- 'config:field.storage.media.field_media_image_caption'
+ block_1:
+ id: block_1
+ display_title: 'Missing Alt Text'
+ display_plugin: block
+ position: 2
+ display_options:
+ title: 'Missing Alt Text'
+ fields:
+ field_media_image:
+ id: field_media_image
+ table: media__field_media_image
+ field: field_media_image
+ relationship: none
+ group_type: group
+ admin_label: ''
+ plugin_id: field
+ label: Image
+ exclude: false
+ alter:
+ alter_text: false
+ text: ''
+ make_link: false
+ path: ''
+ absolute: false
+ external: false
+ replace_spaces: false
+ path_case: none
+ trim_whitespace: false
+ alt: ''
+ rel: ''
+ link_class: ''
+ prefix: ''
+ suffix: ''
+ target: ''
+ nl2br: false
+ max_length: 0
+ word_boundary: true
+ ellipsis: true
+ more_link: false
+ more_link_text: ''
+ more_link_path: ''
+ strip_tags: false
+ trim: false
+ preserve_tags: ''
+ html: false
+ element_type: ''
+ element_class: ''
+ element_label_type: ''
+ element_label_class: ''
+ element_label_colon: false
+ element_wrapper_type: ''
+ element_wrapper_class: ''
+ element_default_classes: true
+ empty: ''
+ hide_empty: false
+ empty_zero: false
+ hide_alter_empty: true
+ click_sort_column: target_id
+ type: image
+ settings:
+ image_link: ''
+ image_style: thumbnail
+ image_loading:
+ attribute: lazy
+ group_column: ''
+ group_columns: { }
+ group_rows: true
+ delta_limit: 0
+ delta_offset: 0
+ delta_reversed: false
+ delta_first_last: false
+ multi_type: separator
+ separator: ', '
+ field_api_classes: false
+ name_1:
+ id: name_1
+ table: media_field_data
+ field: name
+ relationship: none
+ group_type: group
+ admin_label: ''
+ entity_type: media
+ entity_field: name
+ plugin_id: field
+ label: 'Image Name'
+ exclude: false
+ alter:
+ alter_text: false
+ text: ''
+ make_link: false
+ path: ''
+ absolute: false
+ external: false
+ replace_spaces: false
+ path_case: none
+ trim_whitespace: false
+ alt: ''
+ rel: ''
+ link_class: ''
+ prefix: ''
+ suffix: ''
+ target: ''
+ nl2br: false
+ max_length: 0
+ word_boundary: true
+ ellipsis: true
+ more_link: false
+ more_link_text: ''
+ more_link_path: ''
+ strip_tags: false
+ trim: false
+ preserve_tags: ''
+ html: false
+ element_type: ''
+ element_class: ''
+ element_label_type: ''
+ element_label_class: ''
+ element_label_colon: false
+ 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
+ operations:
+ id: operations
+ table: media
+ field: operations
+ relationship: none
+ group_type: group
+ admin_label: ''
+ entity_type: media
+ plugin_id: entity_operations
+ label: ''
+ exclude: false
+ alter:
+ alter_text: false
+ text: ''
+ make_link: false
+ path: ''
+ absolute: false
+ external: false
+ replace_spaces: false
+ path_case: none
+ trim_whitespace: false
+ alt: ''
+ rel: ''
+ link_class: ''
+ prefix: ''
+ suffix: ''
+ target: ''
+ nl2br: false
+ max_length: 0
+ word_boundary: true
+ ellipsis: true
+ more_link: false
+ more_link_text: ''
+ more_link_path: ''
+ strip_tags: false
+ trim: false
+ preserve_tags: ''
+ html: false
+ element_type: ''
+ element_class: ''
+ element_label_type: ''
+ element_label_class: ''
+ element_label_colon: false
+ element_wrapper_type: ''
+ element_wrapper_class: ''
+ element_default_classes: true
+ empty: ''
+ hide_empty: false
+ empty_zero: false
+ hide_alter_empty: true
+ destination: true
+ pager:
+ type: some
+ options:
+ offset: 0
+ items_per_page: 5
+ empty:
+ area_text_custom:
+ id: area_text_custom
+ table: views
+ field: area_text_custom
+ relationship: none
+ group_type: group
+ admin_label: ''
+ plugin_id: text_custom
+ empty: true
+ content: 'No images with missing alt text found.'
+ tokenize: false
+ filters:
+ bundle_1:
+ id: bundle_1
+ table: media_field_data
+ field: bundle
+ relationship: none
+ group_type: group
+ admin_label: ''
+ entity_type: media
+ entity_field: bundle
+ plugin_id: bundle
+ operator: in
+ value:
+ image: image
+ group: 1
+ exposed: false
+ expose:
+ operator_id: ''
+ label: ''
+ description: ''
+ use_operator: false
+ operator: ''
+ operator_limit_selection: false
+ operator_list: { }
+ identifier: ''
+ required: false
+ remember: false
+ multiple: false
+ remember_roles:
+ authenticated: authenticated
+ reduce: false
+ is_grouped: false
+ group_info:
+ label: ''
+ description: ''
+ identifier: ''
+ optional: true
+ widget: select
+ multiple: false
+ remember: false
+ default_group: All
+ default_group_multiple: { }
+ group_items: { }
+ field_media_image_alt:
+ id: field_media_image_alt
+ table: media__field_media_image
+ field: field_media_image_alt
+ relationship: none
+ group_type: group
+ admin_label: ''
+ plugin_id: string
+ operator: shorterthan
+ value: '1'
+ group: 1
+ exposed: false
+ expose:
+ operator_id: ''
+ label: ''
+ description: ''
+ use_operator: false
+ operator: ''
+ operator_limit_selection: false
+ operator_list: { }
+ identifier: ''
+ required: false
+ remember: false
+ multiple: false
+ remember_roles:
+ authenticated: authenticated
+ placeholder: ''
+ is_grouped: false
+ group_info:
+ label: ''
+ description: ''
+ identifier: ''
+ optional: true
+ widget: select
+ multiple: false
+ remember: false
+ default_group: All
+ default_group_multiple: { }
+ group_items: { }
+ filter_groups:
+ operator: AND
+ groups:
+ 1: AND
+ defaults:
+ empty: false
+ title: false
+ pager: false
+ fields: false
+ filters: false
+ filter_groups: false
+ footer: false
+ display_description: ''
+ footer:
+ area_text_custom:
+ id: area_text_custom
+ table: views
+ field: area_text_custom
+ relationship: none
+ group_type: group
+ admin_label: ''
+ plugin_id: text_custom
+ empty: false
+ content: '
People Importers
There are no people importers configured.'), + ]; + } + + $table_rows = []; + $orphan_action = $this->t('Do nothing'); + + if ($orphan_setting = $this->capxConfig->get('orphan_action')) { + $orphan_labels = [ + EventsSubscriber::ORPHAN_DELETE => $this->t('Delete'), + EventsSubscriber::ORPHAN_UNPUBLISH => $this->t('Unpublish'), + ]; + + $orphan_action = $orphan_labels[$orphan_setting]; + } + + foreach ($capx_importers as $importer) { + /** @var \Drupal\hs_capx\Entity\CapxImporterInterface $importer */ + $table_rows[] = [ + 'data' => [ + ['data' => $importer->label()], + ['data' => $importer->getWorkgroups(TRUE)], + ], + ]; + } + + return [ + '#theme' => 'table', + '#caption' => $this->t('People Importers'), + '#header' => [ + ['data' => $this->t('Importer (migration) name')], + ['data' => $this->t('Org Code and Workgroup')], + ], + '#rows' => $table_rows, + '#suffix' => $this->t( + 'People importer orphan action: @action
', + ['@action' => $orphan_action] + ), + ]; + } + +} diff --git a/docroot/modules/humsci/hs_dashboard/src/Plugin/Block/HsImportersInfoBlock.php b/docroot/modules/humsci/hs_dashboard/src/Plugin/Block/HsImportersInfoBlock.php new file mode 100644 index 000000000..44839070b --- /dev/null +++ b/docroot/modules/humsci/hs_dashboard/src/Plugin/Block/HsImportersInfoBlock.php @@ -0,0 +1,74 @@ +importsInfoManager = $imports_info_manager; + } + + /** + * {@inheritdoc} + */ + public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) { + return new static( + $configuration, + $plugin_id, + $plugin_definition, + $container->get('hs_dashboard.imports_info_manager'), + ); + } + + /** + * {@inheritdoc} + */ + public function build(): array { + $importers = []; + + $importers[] = $this->importsInfoManager->generatePeopleTable(); + + $build = [ + '#theme' => 'hs_importers_info', + '#importers' => $importers, + ]; + return $build; + } + +} diff --git a/docroot/modules/humsci/hs_dashboard/src/Plugin/Block/HsUniversityPoliciesBlock.php b/docroot/modules/humsci/hs_dashboard/src/Plugin/Block/HsUniversityPoliciesBlock.php new file mode 100644 index 000000000..bf6b0d60c --- /dev/null +++ b/docroot/modules/humsci/hs_dashboard/src/Plugin/Block/HsUniversityPoliciesBlock.php @@ -0,0 +1,57 @@ + 'https://adminguide.stanford.edu/chapter-1/subchapter-5/policy-1-5-4', + 'Copyright' => 'https://uit.stanford.edu/security/copyright-infringement', + 'Online Privacy' => 'https://www.stanford.edu/site/privacy/', + 'Accessibility' => 'https://www.stanford.edu/site/accessibility/', + 'Terms of use for Sites' => 'https://www.stanford.edu/site/terms/', + ]; + + // Generate list of links. + $items = []; + foreach ($policies as $title => $url) { + $items[] = [ + '#type' => 'link', + '#title' => $title, + '#url' => Url::fromUri($url, ['attributes' => ['target' => '_blank', 'rel' => 'noopener noreferrer']]), + ]; + } + + return [ + '#theme' => 'item_list', + '#items' => $items, + '#prefix' => '' . $this->t('All site content must comply with the University Policies.') . '
', + ]; + } + +} diff --git a/docroot/modules/humsci/hs_dashboard/src/Plugin/Block/HsdpAnnouncementsBlock.php b/docroot/modules/humsci/hs_dashboard/src/Plugin/Block/HsdpAnnouncementsBlock.php new file mode 100644 index 000000000..a9d7e9cb2 --- /dev/null +++ b/docroot/modules/humsci/hs_dashboard/src/Plugin/Block/HsdpAnnouncementsBlock.php @@ -0,0 +1,78 @@ +announcementsManager = $announcements_manager; + } + + /** + * {@inheritdoc} + */ + public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) { + return new static( + $configuration, + $plugin_id, + $plugin_definition, + $container->get('hs_dashboard.announcements_manager'), + ); + } + + /** + * {@inheritdoc} + */ + public function build(): array { + $rows = $this->announcementsManager->getTableRows(); + + if (!$rows) { + $build['content']['#theme'] = 'markup'; + $build['content']['#markup'] = $this->t('There were no announcements found.'); + } + else { + $build['content']['#theme'] = 'table'; + $build['content']['#header'] = $this->announcementsManager->getTableHeader(); + $build['content']['#rows'] = $rows; + } + + return $build; + } + +} diff --git a/docroot/modules/humsci/hs_dashboard/src/Plugin/views/field/SourceField.php b/docroot/modules/humsci/hs_dashboard/src/Plugin/views/field/SourceField.php new file mode 100644 index 000000000..49104b1e8 --- /dev/null +++ b/docroot/modules/humsci/hs_dashboard/src/Plugin/views/field/SourceField.php @@ -0,0 +1,29 @@ +_entity; + $migration = \Drupal::service('stanford_migrate')->getNodesMigration($node); + return ($migration) ? $this->t('Imported') : $this->t('Local'); + } + +} diff --git a/docroot/modules/humsci/hs_dashboard/templates/hs-importers-info.html.twig b/docroot/modules/humsci/hs_dashboard/templates/hs-importers-info.html.twig new file mode 100644 index 000000000..fb6ec933b --- /dev/null +++ b/docroot/modules/humsci/hs_dashboard/templates/hs-importers-info.html.twig @@ -0,0 +1,3 @@ +{% for importer in importers %} + {{ importer }} +{% endfor %} diff --git a/docroot/modules/humsci/hs_layouts/hs_layouts.info.yml b/docroot/modules/humsci/hs_layouts/hs_layouts.info.yml index a3a79bbd7..9ca2ada66 100644 --- a/docroot/modules/humsci/hs_layouts/hs_layouts.info.yml +++ b/docroot/modules/humsci/hs_layouts/hs_layouts.info.yml @@ -6,6 +6,7 @@ version: 8.2.7 package: 'Humanities & Sciences' dependencies: - layout_discovery + - dashboard:dashboard components: namespaces: diff --git a/docroot/modules/humsci/hs_layouts/hs_layouts.module b/docroot/modules/humsci/hs_layouts/hs_layouts.module index 93f003be4..0b71b7fff 100644 --- a/docroot/modules/humsci/hs_layouts/hs_layouts.module +++ b/docroot/modules/humsci/hs_layouts/hs_layouts.module @@ -6,6 +6,7 @@ */ use Drupal\Component\Utility\Html; +use Drupal\dashboard\Plugin\SectionStorage\DashboardSectionStorage; use Drupal\paragraphs\ParagraphInterface; /** @@ -14,8 +15,22 @@ use Drupal\paragraphs\ParagraphInterface; function hs_layouts_plugin_filter_layout__layout_builder_alter(&$definitions, &$extra, &$consumer) { /** @var \Drupal\Core\Layout\LayoutDefinition $definition */ foreach ($definitions as $id => $definition) { - if ($definition->getProvider() !== 'hs_layouts') { - unset($definitions[$id]); + $provider = $definition->getProvider(); + if ($extra['section_storage'] instanceof DashboardSectionStorage) { + // Define providers to unset for the dashboard. + $providers_to_unset = [ + 'ui_patterns_library', + 'hs_layouts', + 'ds', + ]; + if (in_array($provider, $providers_to_unset)) { + unset($definitions[$id]); + } + } + else { + if ($provider !== 'hs_layouts') { + unset($definitions[$id]); + } } } } diff --git a/docroot/themes/humsci/su_humsci_gin_admin/dist/su_humsci_dashboard.css b/docroot/themes/humsci/su_humsci_gin_admin/dist/su_humsci_dashboard.css new file mode 100644 index 000000000..4d99b886b --- /dev/null +++ b/docroot/themes/humsci/su_humsci_gin_admin/dist/su_humsci_dashboard.css @@ -0,0 +1,179 @@ +/* Dashboard */ +html .dashboard-content.user-logged-in { + --color-dashboard-brick-red: #7d332f; + --color-dashboard-ivory-sand: #f7f4f0; + --color-dashboard-white: #ffffff; +} + +.dashboard-content, +.dashboard-content header.region-sticky { + background: var(--color-dashboard-ivory-sand); +} + +.dashboard-content header.region-sticky #block-su-humsci-gin-admin-local-actions .local-actions .button--primary:not(:focus) { + background: var(--color-dashboard-brick-red); + border-color: var(--color-dashboard-brick-red) !important; +} + +.dashboard-content header.region-sticky #block-su-humsci-gin-admin-local-actions .local-actions .button--primary:hover, +.dashboard-content header.region-sticky #block-su-humsci-gin-admin-local-actions .local-actions .button--primary:focus { + background: transparent; + border-color: var(--color-dashboard-brick-red) !important; + color: var(--color-dashboard-brick-red); +} + +.dashboard-content .is-horizontal .tabs--primary .tabs__link.is-active { + background: var(--color-dashboard-brick-red); + color: var(--color-dashboard-white); +} + +.dashboard-content .is-horizontal .tabs--primary .tabs__link:focus, +.dashboard-content .is-horizontal .tabs--primary .tabs__link:hover { + background: var(--color-dashboard-brick-red); + color: var(--color-dashboard-white); +} + +.dashboard-content .is-horizontal .tabs--primary .tabs__link:focus { + box-shadow: none; +} + +.dashboard-content .layout .layout__region .block { + padding-top: 1rem; + background: var(--color-dashboard-white); + border: 1px solid #d1cfcb; + border-radius: 8px; + box-shadow: 0px 4px 10px 0px rgba(0, 0, 0, 0.1); +} + +/* Add flexbox to make margin-block-end grow equality */ +.dashboard-content .layout--onecol { + display: flex; +} + +.dashboard-content .layout, +.dashboard-content .layout .block { + margin-block-end: 31px; +} + +.dashboard-content .layout .layout__region .block a, +.dashboard-content .layout .layout__region .block li::marker, +.dashboard-content .layout .layout__region .block .more-link a.button--primary:focus, +.dashboard-content .layout .layout__region .block .more-link a.button--primary:hover { + color: var(--color-dashboard-brick-red); +} + +.dashboard-content .layout .layout__region .block li a, +.dashboard-content .layout .layout__region .block .more-link a { + text-decoration: none; +} + +.dashboard-content .layout .layout__region .block .more-link a.button--primary, +.dashboard-content .layout .layout__region .block .more-link a.button--primary:focus, +.dashboard-content .layout .layout__region .block .more-link a.button--primary:hover { + background: transparent; + box-shadow: none; + padding: 0; + border: none !important; + border-radius: 0; + margin: 2rem 0 0; +} + +.dashboard-content .layout .layout__region .block h2:first-of-type { + background: var(--color-dashboard-ivory-sand); + border-radius: 8px; + margin-left: -0.5rem; + margin-right: -0.5rem; + padding: 0.5rem 1.5rem; + font-size: 1.25rem; + font-weight: 500; +} + +.dashboard-content .layout .layout__region .block a:focus, +.dashboard-content .layout .layout__region .block a:hover, +.dashboard-content .layout .layout__region .block .more-link a.button--primary:focus, +.dashboard-content .layout .layout__region .block .more-link a.button--primary:hover { + text-decoration: underline; + border: none !important; +} + +.dashboard-content .layout .layout__region .block .views-field-operations .dropbutton { + border-color: var(--color-dashboard-brick-red); + outline: none; + box-shadow: none; +} + +.dashboard-content .layout .layout__region .block .views-field-operations .dropbutton__item:first-of-type ~ .dropbutton__item { + border-color: var(--color-dashboard-brick-red); +} + +.dashboard-content .layout .layout__region .block .views-field-operations .dropbutton .dropbutton-toggle .dropbutton__toggle { + border-inline-start-color: var(--color-dashboard-brick-red) !important; +} + +.dashboard-content .layout .layout__region .block .views-field-operations .dropbutton .dropbutton-toggle .dropbutton__toggle::before { + background-color: var(--color-dashboard-brick-red); +} + +.dashboard-content .layout .layout__region .block .views-field-operations .dropbutton .dropbutton__item:first-of-type>* { + border: var(--dropbutton-border-size) solid transparent !important; +} + +.dashboard-content .layout .layout__region .block .views-field-operations .dropbutton>.dropbutton__item:first-of-type>a:hover, +.dashboard-content .layout .layout__region .block .views-field-operations .dropbutton>.dropbutton__item:first-of-type>a:focus, +.dashboard-content .layout .layout__region .block .views-field-operations .dropbutton .dropbutton__items>.dropbutton__item>a:hover, +.dashboard-content .layout .layout__region .block .views-field-operations .dropbutton .dropbutton__items>.dropbutton__item>a:focus, +.dashboard-content .layout .layout__region .block .views-field-operations .dropbutton .dropbutton__items>.dropbutton__item~.dropbutton__item>a:hover, +.dashboard-content .layout .layout__region .block .views-field-operations .dropbutton .dropbutton__items>.dropbutton__item~.dropbutton__item>a:focus { + background-color: var(--color-dashboard-brick-red); + color: var(--color-dashboard-white); +} + +.dashboard-content .layout .layout__region .block .views-field-operations .dropbutton .dropbutton-toggle .dropbutton__toggle:hover, +.dashboard-content .layout .layout__region .block .views-field-operations .dropbutton .dropbutton-toggle .dropbutton__toggle:focus { + background-color: var(--color-dashboard-brick-red); +} + +.dashboard-content .layout .layout__region .block .views-field-operations .dropbutton *:focus { + box-shadow: none; +} + +.dashboard-content .layout .layout__region .block .views-field-operations .dropbutton .dropbutton-toggle .dropbutton__toggle:hover::before, +.dashboard-content .layout .layout__region .block .views-field-operations .dropbutton .dropbutton-toggle .dropbutton__toggle:focus::before { + background-color: var(--color-dashboard-white); +} + +.dashboard-content .layout .layout__region .block .views-field-operations .dropbutton .dropbutton__items>.dropbutton__item>a, +.dashboard-content .layout .layout__region .block .views-field-operations .dropbutton .dropbutton__items>.dropbutton__item~.dropbutton__item>a { + color: var(--color-dashboard-brick-red); +} + +.dashboard-content nav.gin-breadcrumb .gin-breadcrumb__list { + padding-bottom: 0.5rem; + border-bottom: 1px solid #dbdbdb; +} + +.dashboard-content nav.tabs-wrapper .tabs--primary { + margin-bottom: 1rem; + padding-bottom: 0; +} + +.dashboard-content .layout .layout__region .block table tbody tr { + border-color: #ddd1c0; +} + +.dashboard-content .layout .layout__region .block table tr:hover { + background: rgba(247, 244, 240, 0.84); +} + +.dashboard-content .view-content.gin-layer-wrapper { + background: var(--color-dashboard-white); + box-shadow: none; + border: none; + padding-left: 0; + padding-right: 0; +} + +.dashboard-content .view-content table thead tr { + color: #414247; + border-color: #414247; +} diff --git a/docroot/themes/humsci/su_humsci_gin_admin/su_humsci_gin_admin.libraries.yml b/docroot/themes/humsci/su_humsci_gin_admin/su_humsci_gin_admin.libraries.yml index eac5bd4ce..15ca9f108 100644 --- a/docroot/themes/humsci/su_humsci_gin_admin/su_humsci_gin_admin.libraries.yml +++ b/docroot/themes/humsci/su_humsci_gin_admin/su_humsci_gin_admin.libraries.yml @@ -19,3 +19,8 @@ paragraph-previews-slideshow-width: js/paragraph-previews-slideshow-width.js: {} dependencies: - core/drupal + +su_humsci_dashboard: + css: + theme: + ./dist/su_humsci_dashboard.css: {} diff --git a/docroot/themes/humsci/su_humsci_gin_admin/su_humsci_gin_admin.theme b/docroot/themes/humsci/su_humsci_gin_admin/su_humsci_gin_admin.theme index 5cda03396..8be355c51 100644 --- a/docroot/themes/humsci/su_humsci_gin_admin/su_humsci_gin_admin.theme +++ b/docroot/themes/humsci/su_humsci_gin_admin/su_humsci_gin_admin.theme @@ -65,3 +65,16 @@ function su_humsci_gin_admin_preprocess_field(&$variables) { $variables['#attached']['library'][] = 'humsci_basic/video-with-caption'; } } + +/** + * Implements hook_preprocess_HOOK(). + */ +function su_humsci_gin_admin_preprocess_html(&$variables, $hook) { + $dashboard_routes = ['dashboard', 'entity.dashboard.canonical', 'entity.dashboard.preview']; + $route_name = \Drupal::routeMatch()->getRouteName(); + if (in_array($route_name, $dashboard_routes)) { + // Add a custom class and attach library to a dashboard. + $variables['attributes']['class'][] = 'dashboard-content'; + $variables['#attached']['library'][] = 'su_humsci_gin_admin/su_humsci_dashboard'; + } +}