From b7fcb3fcd0cfbd5fce115d2cc381bfd0c9e51adb Mon Sep 17 00:00:00 2001 From: Joe Galluccio Date: Fri, 18 Apr 2025 13:48:28 -0400 Subject: [PATCH 1/5] new content type --- ...override.node.api_service_card.promote.yml | 22 +++ ...d_override.node.api_service_card.title.yml | 18 +++ ..._display.node.api_service_card.default.yml | 149 ++++++++++++++++++ ..._display.node.api_service_card.default.yml | 121 ++++++++++++++ ...w_display.node.api_service_card.teaser.yml | 41 +++++ ...e_card.field_api_serv_card_description.yml | 29 ++++ ..._service_card.field_api_serv_card_link.yml | 23 +++ ..._card.field_api_serv_card_machine_name.yml | 19 +++ ...e_card.field_api_srv_card_idv_ret_urls.yml | 23 +++ ..._card.field_api_srv_card_logout_locale.yml | 23 +++ ...ce_card.field_api_srv_card_logout_urls.yml | 23 +++ ...ice_card.field_api_srv_card_ret_locale.yml | 23 +++ ...service_card.field_api_srv_card_status.yml | 23 +++ ...service_card.field_api_srv_card_tenant.yml | 21 +++ ...ode.api_service_card.field_environment.yml | 23 +++ ...e.node.field_api_serv_card_description.yml | 19 +++ ....storage.node.field_api_serv_card_link.yml | 19 +++ ....node.field_api_serv_card_machine_name.yml | 21 +++ ...e.node.field_api_srv_card_idv_ret_urls.yml | 21 +++ ....node.field_api_srv_card_logout_locale.yml | 18 +++ ...ge.node.field_api_srv_card_logout_urls.yml | 21 +++ ...age.node.field_api_srv_card_ret_locale.yml | 18 +++ ...storage.node.field_api_srv_card_status.yml | 18 +++ ...storage.node.field_api_srv_card_tenant.yml | 27 ++++ .../field.storage.node.field_environment.yml | 27 ++++ ...content_settings.node.api_service_card.yml | 11 ++ .../config/node.type.api_service_card.yml | 26 +++ ...or_settings.node_type_api_service_card.yml | 14 ++ 28 files changed, 841 insertions(+) create mode 100644 conf/drupal/config/core.base_field_override.node.api_service_card.promote.yml create mode 100644 conf/drupal/config/core.base_field_override.node.api_service_card.title.yml create mode 100644 conf/drupal/config/core.entity_form_display.node.api_service_card.default.yml create mode 100644 conf/drupal/config/core.entity_view_display.node.api_service_card.default.yml create mode 100644 conf/drupal/config/core.entity_view_display.node.api_service_card.teaser.yml create mode 100644 conf/drupal/config/field.field.node.api_service_card.field_api_serv_card_description.yml create mode 100644 conf/drupal/config/field.field.node.api_service_card.field_api_serv_card_link.yml create mode 100644 conf/drupal/config/field.field.node.api_service_card.field_api_serv_card_machine_name.yml create mode 100644 conf/drupal/config/field.field.node.api_service_card.field_api_srv_card_idv_ret_urls.yml create mode 100644 conf/drupal/config/field.field.node.api_service_card.field_api_srv_card_logout_locale.yml create mode 100644 conf/drupal/config/field.field.node.api_service_card.field_api_srv_card_logout_urls.yml create mode 100644 conf/drupal/config/field.field.node.api_service_card.field_api_srv_card_ret_locale.yml create mode 100644 conf/drupal/config/field.field.node.api_service_card.field_api_srv_card_status.yml create mode 100644 conf/drupal/config/field.field.node.api_service_card.field_api_srv_card_tenant.yml create mode 100644 conf/drupal/config/field.field.node.api_service_card.field_environment.yml create mode 100644 conf/drupal/config/field.storage.node.field_api_serv_card_description.yml create mode 100644 conf/drupal/config/field.storage.node.field_api_serv_card_link.yml create mode 100644 conf/drupal/config/field.storage.node.field_api_serv_card_machine_name.yml create mode 100644 conf/drupal/config/field.storage.node.field_api_srv_card_idv_ret_urls.yml create mode 100644 conf/drupal/config/field.storage.node.field_api_srv_card_logout_locale.yml create mode 100644 conf/drupal/config/field.storage.node.field_api_srv_card_logout_urls.yml create mode 100644 conf/drupal/config/field.storage.node.field_api_srv_card_ret_locale.yml create mode 100644 conf/drupal/config/field.storage.node.field_api_srv_card_status.yml create mode 100644 conf/drupal/config/field.storage.node.field_api_srv_card_tenant.yml create mode 100644 conf/drupal/config/field.storage.node.field_environment.yml create mode 100644 conf/drupal/config/language.content_settings.node.api_service_card.yml create mode 100644 conf/drupal/config/node.type.api_service_card.yml create mode 100644 conf/drupal/config/rabbit_hole.behavior_settings.node_type_api_service_card.yml diff --git a/conf/drupal/config/core.base_field_override.node.api_service_card.promote.yml b/conf/drupal/config/core.base_field_override.node.api_service_card.promote.yml new file mode 100644 index 0000000000..5ecc002e32 --- /dev/null +++ b/conf/drupal/config/core.base_field_override.node.api_service_card.promote.yml @@ -0,0 +1,22 @@ +uuid: 23bfff67-e5ad-4e21-b2f6-dde75be327f8 +langcode: en +status: true +dependencies: + config: + - node.type.api_service_card +id: node.api_service_card.promote +field_name: promote +entity_type: node +bundle: api_service_card +label: 'Promoted to front page' +description: '' +required: false +translatable: true +default_value: + - + value: 0 +default_value_callback: '' +settings: + on_label: 'On' + off_label: 'Off' +field_type: boolean diff --git a/conf/drupal/config/core.base_field_override.node.api_service_card.title.yml b/conf/drupal/config/core.base_field_override.node.api_service_card.title.yml new file mode 100644 index 0000000000..0277552be7 --- /dev/null +++ b/conf/drupal/config/core.base_field_override.node.api_service_card.title.yml @@ -0,0 +1,18 @@ +uuid: 11227dca-c9b9-4dec-8c2f-91f4bb3d12dc +langcode: en +status: true +dependencies: + config: + - node.type.api_service_card +id: node.api_service_card.title +field_name: title +entity_type: node +bundle: api_service_card +label: 'Service Card Title' +description: '' +required: true +translatable: true +default_value: { } +default_value_callback: '' +settings: { } +field_type: string diff --git a/conf/drupal/config/core.entity_form_display.node.api_service_card.default.yml b/conf/drupal/config/core.entity_form_display.node.api_service_card.default.yml new file mode 100644 index 0000000000..2e85e5ff48 --- /dev/null +++ b/conf/drupal/config/core.entity_form_display.node.api_service_card.default.yml @@ -0,0 +1,149 @@ +uuid: 03493a13-9c42-4e64-b102-a35071b7ca76 +langcode: en +status: true +dependencies: + config: + - field.field.node.api_service_card.field_api_serv_card_description + - field.field.node.api_service_card.field_api_serv_card_link + - field.field.node.api_service_card.field_api_serv_card_machine_name + - field.field.node.api_service_card.field_api_srv_card_idv_ret_urls + - field.field.node.api_service_card.field_api_srv_card_logout_locale + - field.field.node.api_service_card.field_api_srv_card_logout_urls + - field.field.node.api_service_card.field_api_srv_card_ret_locale + - field.field.node.api_service_card.field_api_srv_card_status + - field.field.node.api_service_card.field_api_srv_card_tenant + - field.field.node.api_service_card.field_environment + - node.type.api_service_card + module: + - key_value_field + - link + - text +id: node.api_service_card.default +targetEntityType: node +bundle: api_service_card +mode: default +content: + created: + type: datetime_timestamp + weight: 12 + region: content + settings: { } + third_party_settings: { } + field_api_serv_card_description: + type: text_textarea + weight: 1 + region: content + settings: + rows: 5 + placeholder: '' + third_party_settings: { } + field_api_serv_card_link: + type: link_default + weight: 3 + region: content + settings: + placeholder_url: '' + placeholder_title: '' + third_party_settings: { } + field_api_serv_card_machine_name: + type: string_textfield + weight: 2 + region: content + settings: + size: 60 + placeholder: '' + third_party_settings: { } + field_api_srv_card_idv_ret_urls: + type: key_value_textarea + weight: 6 + region: content + settings: + rows: 5 + placeholder: '' + key_size: 60 + key_label: Key + key_placeholder: '' + value_label: Value + description_enabled: true + description_label: Description + description_rows: 5 + description_placeholder: '' + third_party_settings: { } + field_api_srv_card_logout_locale: + type: boolean_checkbox + weight: 9 + region: content + settings: + display_label: true + third_party_settings: { } + field_api_srv_card_logout_urls: + type: key_value_textarea + weight: 8 + region: content + settings: + rows: 5 + placeholder: '' + key_size: 60 + key_label: Key + key_placeholder: '' + value_label: Value + description_enabled: true + description_label: Description + description_rows: 5 + description_placeholder: '' + third_party_settings: { } + field_api_srv_card_ret_locale: + type: boolean_checkbox + weight: 7 + region: content + settings: + display_label: true + third_party_settings: { } + field_api_srv_card_status: + type: boolean_checkbox + weight: 4 + region: content + settings: + display_label: true + third_party_settings: { } + field_api_srv_card_tenant: + type: options_select + weight: 5 + region: content + settings: { } + third_party_settings: { } + field_environment: + type: options_select + weight: 10 + region: content + settings: { } + third_party_settings: { } + title: + type: string_textfield + weight: 0 + region: content + settings: + size: 60 + placeholder: '' + third_party_settings: { } + uid: + type: entity_reference_autocomplete + weight: 11 + region: content + settings: + match_operator: CONTAINS + match_limit: 10 + size: 60 + placeholder: '' + third_party_settings: { } +hidden: + langcode: true + moderation_state: true + path: true + promote: true + search: true + search_nosnippet: true + simple_sitemap: true + status: true + sticky: true + url_redirects: true diff --git a/conf/drupal/config/core.entity_view_display.node.api_service_card.default.yml b/conf/drupal/config/core.entity_view_display.node.api_service_card.default.yml new file mode 100644 index 0000000000..c1192528e2 --- /dev/null +++ b/conf/drupal/config/core.entity_view_display.node.api_service_card.default.yml @@ -0,0 +1,121 @@ +uuid: c09c7ac3-73e9-4b04-94d3-7b3525417dd8 +langcode: en +status: true +dependencies: + config: + - field.field.node.api_service_card.field_api_serv_card_description + - field.field.node.api_service_card.field_api_serv_card_link + - field.field.node.api_service_card.field_api_serv_card_machine_name + - field.field.node.api_service_card.field_api_srv_card_idv_ret_urls + - field.field.node.api_service_card.field_api_srv_card_logout_locale + - field.field.node.api_service_card.field_api_srv_card_logout_urls + - field.field.node.api_service_card.field_api_srv_card_ret_locale + - field.field.node.api_service_card.field_api_srv_card_status + - field.field.node.api_service_card.field_api_srv_card_tenant + - field.field.node.api_service_card.field_environment + - node.type.api_service_card + module: + - key_value_field + - link + - options + - text + - user +id: node.api_service_card.default +targetEntityType: node +bundle: api_service_card +mode: default +content: + field_api_serv_card_description: + type: text_default + label: above + settings: { } + third_party_settings: { } + weight: 102 + region: content + field_api_serv_card_link: + type: link + label: above + settings: + trim_length: 80 + url_only: false + url_plain: false + rel: '' + target: '' + third_party_settings: { } + weight: 104 + region: content + field_api_serv_card_machine_name: + type: string + label: above + settings: + link_to_entity: false + third_party_settings: { } + weight: 103 + region: content + field_api_srv_card_idv_ret_urls: + type: key_value + label: above + settings: + value_only: false + third_party_settings: { } + weight: 107 + region: content + field_api_srv_card_logout_locale: + type: boolean + label: above + settings: + format: default + format_custom_false: '' + format_custom_true: '' + third_party_settings: { } + weight: 110 + region: content + field_api_srv_card_logout_urls: + type: key_value + label: above + settings: + value_only: false + third_party_settings: { } + weight: 109 + region: content + field_api_srv_card_ret_locale: + type: boolean + label: above + settings: + format: default + format_custom_false: '' + format_custom_true: '' + third_party_settings: { } + weight: 108 + region: content + field_api_srv_card_status: + type: boolean + label: above + settings: + format: default + format_custom_false: '' + format_custom_true: '' + third_party_settings: { } + weight: 105 + region: content + field_api_srv_card_tenant: + type: list_default + label: above + settings: { } + third_party_settings: { } + weight: 106 + region: content + field_environment: + type: list_default + label: above + settings: { } + third_party_settings: { } + weight: 111 + region: content + links: + settings: { } + third_party_settings: { } + weight: 100 + region: content +hidden: + langcode: true diff --git a/conf/drupal/config/core.entity_view_display.node.api_service_card.teaser.yml b/conf/drupal/config/core.entity_view_display.node.api_service_card.teaser.yml new file mode 100644 index 0000000000..aa94ea6f2a --- /dev/null +++ b/conf/drupal/config/core.entity_view_display.node.api_service_card.teaser.yml @@ -0,0 +1,41 @@ +uuid: dee2dee2-e137-4633-94af-dcc63f5b7820 +langcode: en +status: true +dependencies: + config: + - core.entity_view_mode.node.teaser + - field.field.node.api_service_card.field_api_serv_card_description + - field.field.node.api_service_card.field_api_serv_card_link + - field.field.node.api_service_card.field_api_serv_card_machine_name + - field.field.node.api_service_card.field_api_srv_card_idv_ret_urls + - field.field.node.api_service_card.field_api_srv_card_logout_locale + - field.field.node.api_service_card.field_api_srv_card_logout_urls + - field.field.node.api_service_card.field_api_srv_card_ret_locale + - field.field.node.api_service_card.field_api_srv_card_status + - field.field.node.api_service_card.field_api_srv_card_tenant + - field.field.node.api_service_card.field_environment + - node.type.api_service_card + module: + - user +id: node.api_service_card.teaser +targetEntityType: node +bundle: api_service_card +mode: teaser +content: + links: + settings: { } + third_party_settings: { } + weight: 100 + region: content +hidden: + field_api_serv_card_description: true + field_api_serv_card_link: true + field_api_serv_card_machine_name: true + field_api_srv_card_idv_ret_urls: true + field_api_srv_card_logout_locale: true + field_api_srv_card_logout_urls: true + field_api_srv_card_ret_locale: true + field_api_srv_card_status: true + field_api_srv_card_tenant: true + field_environment: true + langcode: true diff --git a/conf/drupal/config/field.field.node.api_service_card.field_api_serv_card_description.yml b/conf/drupal/config/field.field.node.api_service_card.field_api_serv_card_description.yml new file mode 100644 index 0000000000..7e214918e4 --- /dev/null +++ b/conf/drupal/config/field.field.node.api_service_card.field_api_serv_card_description.yml @@ -0,0 +1,29 @@ +uuid: 10a74c99-358c-4de4-ae43-697274399109 +langcode: en +status: true +dependencies: + config: + - field.storage.node.field_api_serv_card_description + - filter.format.plain_text + - node.type.api_service_card + module: + - allowed_formats + - text +third_party_settings: + allowed_formats: + allowed_formats: + - plain_text +id: node.api_service_card.field_api_serv_card_description +field_name: field_api_serv_card_description +entity_type: node +bundle: api_service_card +label: Description +description: 'Short summary of the service.' +required: true +translatable: false +default_value: { } +default_value_callback: '' +settings: + allowed_formats: + - plain_text +field_type: text_long diff --git a/conf/drupal/config/field.field.node.api_service_card.field_api_serv_card_link.yml b/conf/drupal/config/field.field.node.api_service_card.field_api_serv_card_link.yml new file mode 100644 index 0000000000..1df797013d --- /dev/null +++ b/conf/drupal/config/field.field.node.api_service_card.field_api_serv_card_link.yml @@ -0,0 +1,23 @@ +uuid: dcf0d7eb-ac7e-4fce-b443-95ac1549901a +langcode: en +status: true +dependencies: + config: + - field.storage.node.field_api_serv_card_link + - node.type.api_service_card + module: + - link +id: node.api_service_card.field_api_serv_card_link +field_name: field_api_serv_card_link +entity_type: node +bundle: api_service_card +label: Link +description: 'Link to the service page.' +required: true +translatable: false +default_value: { } +default_value_callback: '' +settings: + title: 0 + link_type: 16 +field_type: link diff --git a/conf/drupal/config/field.field.node.api_service_card.field_api_serv_card_machine_name.yml b/conf/drupal/config/field.field.node.api_service_card.field_api_serv_card_machine_name.yml new file mode 100644 index 0000000000..ce8aba7c59 --- /dev/null +++ b/conf/drupal/config/field.field.node.api_service_card.field_api_serv_card_machine_name.yml @@ -0,0 +1,19 @@ +uuid: 0b5431f4-9b35-4fde-9fd8-51b294929faa +langcode: en +status: true +dependencies: + config: + - field.storage.node.field_api_serv_card_machine_name + - node.type.api_service_card +id: node.api_service_card.field_api_serv_card_machine_name +field_name: field_api_serv_card_machine_name +entity_type: node +bundle: api_service_card +label: 'Machine Name' +description: 'Machine-friendly name of the service that is unique within the tenant type (personal/business).' +required: true +translatable: false +default_value: { } +default_value_callback: '' +settings: { } +field_type: string diff --git a/conf/drupal/config/field.field.node.api_service_card.field_api_srv_card_idv_ret_urls.yml b/conf/drupal/config/field.field.node.api_service_card.field_api_srv_card_idv_ret_urls.yml new file mode 100644 index 0000000000..fc4fee533f --- /dev/null +++ b/conf/drupal/config/field.field.node.api_service_card.field_api_srv_card_idv_ret_urls.yml @@ -0,0 +1,23 @@ +uuid: a6236bd0-2201-47ac-8b92-2a17a858e7c8 +langcode: en +status: true +dependencies: + config: + - field.storage.node.field_api_srv_card_idv_ret_urls + - node.type.api_service_card + module: + - key_value_field +id: node.api_service_card.field_api_srv_card_idv_ret_urls +field_name: field_api_srv_card_idv_ret_urls +entity_type: node +bundle: api_service_card +label: 'IDV Return URLs' +description: 'Map of short machine names to the actual URLs' +required: false +translatable: false +default_value: { } +default_value_callback: '' +settings: + default_format: plain_text + allowed_formats: { } +field_type: key_value_long diff --git a/conf/drupal/config/field.field.node.api_service_card.field_api_srv_card_logout_locale.yml b/conf/drupal/config/field.field.node.api_service_card.field_api_srv_card_logout_locale.yml new file mode 100644 index 0000000000..09f80ff3fd --- /dev/null +++ b/conf/drupal/config/field.field.node.api_service_card.field_api_srv_card_logout_locale.yml @@ -0,0 +1,23 @@ +uuid: 38c04f89-f171-4eb9-8850-adbd6de370f0 +langcode: en +status: true +dependencies: + config: + - field.storage.node.field_api_srv_card_logout_locale + - node.type.api_service_card +id: node.api_service_card.field_api_srv_card_logout_locale +field_name: field_api_srv_card_logout_locale +entity_type: node +bundle: api_service_card +label: 'IDV Logout URL Locale' +description: '' +required: false +translatable: false +default_value: + - + value: 0 +default_value_callback: '' +settings: + on_label: 'Yes' + off_label: 'No' +field_type: boolean diff --git a/conf/drupal/config/field.field.node.api_service_card.field_api_srv_card_logout_urls.yml b/conf/drupal/config/field.field.node.api_service_card.field_api_srv_card_logout_urls.yml new file mode 100644 index 0000000000..aeac037664 --- /dev/null +++ b/conf/drupal/config/field.field.node.api_service_card.field_api_srv_card_logout_urls.yml @@ -0,0 +1,23 @@ +uuid: d68c2903-2a66-4789-a57a-827bb0b55fd4 +langcode: en +status: true +dependencies: + config: + - field.storage.node.field_api_srv_card_logout_urls + - node.type.api_service_card + module: + - key_value_field +id: node.api_service_card.field_api_srv_card_logout_urls +field_name: field_api_srv_card_logout_urls +entity_type: node +bundle: api_service_card +label: 'IDV Logout URLs' +description: '' +required: false +translatable: false +default_value: { } +default_value_callback: '' +settings: + default_format: plain_text + allowed_formats: { } +field_type: key_value_long diff --git a/conf/drupal/config/field.field.node.api_service_card.field_api_srv_card_ret_locale.yml b/conf/drupal/config/field.field.node.api_service_card.field_api_srv_card_ret_locale.yml new file mode 100644 index 0000000000..4d1f2b6121 --- /dev/null +++ b/conf/drupal/config/field.field.node.api_service_card.field_api_srv_card_ret_locale.yml @@ -0,0 +1,23 @@ +uuid: e306cda6-754b-4799-a8ee-bad24070473e +langcode: en +status: true +dependencies: + config: + - field.storage.node.field_api_srv_card_ret_locale + - node.type.api_service_card +id: node.api_service_card.field_api_srv_card_ret_locale +field_name: field_api_srv_card_ret_locale +entity_type: node +bundle: api_service_card +label: 'IDV Return URL Locale' +description: 'Whether the return URLs support the locale parameter or not.' +required: false +translatable: false +default_value: + - + value: 0 +default_value_callback: '' +settings: + on_label: 'Yes' + off_label: 'No' +field_type: boolean diff --git a/conf/drupal/config/field.field.node.api_service_card.field_api_srv_card_status.yml b/conf/drupal/config/field.field.node.api_service_card.field_api_srv_card_status.yml new file mode 100644 index 0000000000..23568a0412 --- /dev/null +++ b/conf/drupal/config/field.field.node.api_service_card.field_api_srv_card_status.yml @@ -0,0 +1,23 @@ +uuid: c9b13a47-75bf-43ac-8ecc-6abfd0ac3e22 +langcode: en +status: true +dependencies: + config: + - field.storage.node.field_api_srv_card_status + - node.type.api_service_card +id: node.api_service_card.field_api_srv_card_status +field_name: field_api_srv_card_status +entity_type: node +bundle: api_service_card +label: 'Active?' +description: '' +required: false +translatable: false +default_value: + - + value: 1 +default_value_callback: '' +settings: + on_label: Active + off_label: Inactive +field_type: boolean diff --git a/conf/drupal/config/field.field.node.api_service_card.field_api_srv_card_tenant.yml b/conf/drupal/config/field.field.node.api_service_card.field_api_srv_card_tenant.yml new file mode 100644 index 0000000000..66d6e753d5 --- /dev/null +++ b/conf/drupal/config/field.field.node.api_service_card.field_api_srv_card_tenant.yml @@ -0,0 +1,21 @@ +uuid: 6fce6588-d45a-487c-af31-98e538fba7cd +langcode: en +status: true +dependencies: + config: + - field.storage.node.field_api_srv_card_tenant + - node.type.api_service_card + module: + - options +id: node.api_service_card.field_api_srv_card_tenant +field_name: field_api_srv_card_tenant +entity_type: node +bundle: api_service_card +label: Tenant +description: '' +required: true +translatable: false +default_value: { } +default_value_callback: '' +settings: { } +field_type: list_string diff --git a/conf/drupal/config/field.field.node.api_service_card.field_environment.yml b/conf/drupal/config/field.field.node.api_service_card.field_environment.yml new file mode 100644 index 0000000000..fe0e77bd8d --- /dev/null +++ b/conf/drupal/config/field.field.node.api_service_card.field_environment.yml @@ -0,0 +1,23 @@ +uuid: 001fe2a9-a9f4-4784-a6ed-4cd1e922d4e5 +langcode: en +status: true +dependencies: + config: + - field.storage.node.field_environment + - node.type.api_service_card + module: + - options +id: node.api_service_card.field_environment +field_name: field_environment +entity_type: node +bundle: api_service_card +label: Environment +description: '' +required: true +translatable: false +default_value: + - + value: non_production +default_value_callback: '' +settings: { } +field_type: list_string diff --git a/conf/drupal/config/field.storage.node.field_api_serv_card_description.yml b/conf/drupal/config/field.storage.node.field_api_serv_card_description.yml new file mode 100644 index 0000000000..8f4e3bc77b --- /dev/null +++ b/conf/drupal/config/field.storage.node.field_api_serv_card_description.yml @@ -0,0 +1,19 @@ +uuid: 2f2478ea-4985-428c-91b5-5ca3304c45b4 +langcode: en +status: true +dependencies: + module: + - node + - text +id: node.field_api_serv_card_description +field_name: field_api_serv_card_description +entity_type: node +type: text_long +settings: { } +module: text +locked: false +cardinality: 1 +translatable: true +indexes: { } +persist_with_no_fields: false +custom_storage: false diff --git a/conf/drupal/config/field.storage.node.field_api_serv_card_link.yml b/conf/drupal/config/field.storage.node.field_api_serv_card_link.yml new file mode 100644 index 0000000000..994ce9c857 --- /dev/null +++ b/conf/drupal/config/field.storage.node.field_api_serv_card_link.yml @@ -0,0 +1,19 @@ +uuid: ac5078fb-3b2b-4054-ba2b-0a0e22d4af87 +langcode: en +status: true +dependencies: + module: + - link + - node +id: node.field_api_serv_card_link +field_name: field_api_serv_card_link +entity_type: node +type: link +settings: { } +module: link +locked: false +cardinality: 1 +translatable: true +indexes: { } +persist_with_no_fields: false +custom_storage: false diff --git a/conf/drupal/config/field.storage.node.field_api_serv_card_machine_name.yml b/conf/drupal/config/field.storage.node.field_api_serv_card_machine_name.yml new file mode 100644 index 0000000000..aaa8d492f0 --- /dev/null +++ b/conf/drupal/config/field.storage.node.field_api_serv_card_machine_name.yml @@ -0,0 +1,21 @@ +uuid: 92084866-881b-4cbe-821c-a94296b40cdc +langcode: en +status: true +dependencies: + module: + - node +id: node.field_api_serv_card_machine_name +field_name: field_api_serv_card_machine_name +entity_type: node +type: string +settings: + max_length: 255 + case_sensitive: false + is_ascii: false +module: core +locked: false +cardinality: 1 +translatable: true +indexes: { } +persist_with_no_fields: false +custom_storage: false diff --git a/conf/drupal/config/field.storage.node.field_api_srv_card_idv_ret_urls.yml b/conf/drupal/config/field.storage.node.field_api_srv_card_idv_ret_urls.yml new file mode 100644 index 0000000000..64e03e319d --- /dev/null +++ b/conf/drupal/config/field.storage.node.field_api_srv_card_idv_ret_urls.yml @@ -0,0 +1,21 @@ +uuid: 0c4fb4b9-0c5e-492a-99cf-1428d5519e6e +langcode: en +status: true +dependencies: + module: + - key_value_field + - node +id: node.field_api_srv_card_idv_ret_urls +field_name: field_api_srv_card_idv_ret_urls +entity_type: node +type: key_value_long +settings: + key_max_length: 255 + key_is_ascii: false +module: key_value_field +locked: false +cardinality: -1 +translatable: true +indexes: { } +persist_with_no_fields: false +custom_storage: false diff --git a/conf/drupal/config/field.storage.node.field_api_srv_card_logout_locale.yml b/conf/drupal/config/field.storage.node.field_api_srv_card_logout_locale.yml new file mode 100644 index 0000000000..80ae2f8bdb --- /dev/null +++ b/conf/drupal/config/field.storage.node.field_api_srv_card_logout_locale.yml @@ -0,0 +1,18 @@ +uuid: 9ad83c4a-845e-448a-9e91-765de3e0228b +langcode: en +status: true +dependencies: + module: + - node +id: node.field_api_srv_card_logout_locale +field_name: field_api_srv_card_logout_locale +entity_type: node +type: boolean +settings: { } +module: core +locked: false +cardinality: 1 +translatable: true +indexes: { } +persist_with_no_fields: false +custom_storage: false diff --git a/conf/drupal/config/field.storage.node.field_api_srv_card_logout_urls.yml b/conf/drupal/config/field.storage.node.field_api_srv_card_logout_urls.yml new file mode 100644 index 0000000000..152a8827e2 --- /dev/null +++ b/conf/drupal/config/field.storage.node.field_api_srv_card_logout_urls.yml @@ -0,0 +1,21 @@ +uuid: bd9eecf4-c3b2-43a4-a894-5a48472efd4f +langcode: en +status: true +dependencies: + module: + - key_value_field + - node +id: node.field_api_srv_card_logout_urls +field_name: field_api_srv_card_logout_urls +entity_type: node +type: key_value_long +settings: + key_max_length: 255 + key_is_ascii: false +module: key_value_field +locked: false +cardinality: -1 +translatable: true +indexes: { } +persist_with_no_fields: false +custom_storage: false diff --git a/conf/drupal/config/field.storage.node.field_api_srv_card_ret_locale.yml b/conf/drupal/config/field.storage.node.field_api_srv_card_ret_locale.yml new file mode 100644 index 0000000000..292ba056c8 --- /dev/null +++ b/conf/drupal/config/field.storage.node.field_api_srv_card_ret_locale.yml @@ -0,0 +1,18 @@ +uuid: d2cc51a2-0c85-428c-8e37-bed2cc8be180 +langcode: en +status: true +dependencies: + module: + - node +id: node.field_api_srv_card_ret_locale +field_name: field_api_srv_card_ret_locale +entity_type: node +type: boolean +settings: { } +module: core +locked: false +cardinality: 1 +translatable: true +indexes: { } +persist_with_no_fields: false +custom_storage: false diff --git a/conf/drupal/config/field.storage.node.field_api_srv_card_status.yml b/conf/drupal/config/field.storage.node.field_api_srv_card_status.yml new file mode 100644 index 0000000000..609f40eed6 --- /dev/null +++ b/conf/drupal/config/field.storage.node.field_api_srv_card_status.yml @@ -0,0 +1,18 @@ +uuid: 8046f2e1-d841-418e-b571-063f9cbf613a +langcode: en +status: true +dependencies: + module: + - node +id: node.field_api_srv_card_status +field_name: field_api_srv_card_status +entity_type: node +type: boolean +settings: { } +module: core +locked: false +cardinality: 1 +translatable: true +indexes: { } +persist_with_no_fields: false +custom_storage: false diff --git a/conf/drupal/config/field.storage.node.field_api_srv_card_tenant.yml b/conf/drupal/config/field.storage.node.field_api_srv_card_tenant.yml new file mode 100644 index 0000000000..eff0a13ddc --- /dev/null +++ b/conf/drupal/config/field.storage.node.field_api_srv_card_tenant.yml @@ -0,0 +1,27 @@ +uuid: 2885a0c8-2942-49dc-ad2c-19f7a46da071 +langcode: en +status: true +dependencies: + module: + - node + - options +id: node.field_api_srv_card_tenant +field_name: field_api_srv_card_tenant +entity_type: node +type: list_string +settings: + allowed_values: + - + value: personal + label: Personal + - + value: business + label: Business + allowed_values_function: '' +module: options +locked: false +cardinality: 1 +translatable: true +indexes: { } +persist_with_no_fields: false +custom_storage: false diff --git a/conf/drupal/config/field.storage.node.field_environment.yml b/conf/drupal/config/field.storage.node.field_environment.yml new file mode 100644 index 0000000000..e7c3c4fbc2 --- /dev/null +++ b/conf/drupal/config/field.storage.node.field_environment.yml @@ -0,0 +1,27 @@ +uuid: 58f76f6b-5870-4548-ba92-99badeee1b9f +langcode: en +status: true +dependencies: + module: + - node + - options +id: node.field_environment +field_name: field_environment +entity_type: node +type: list_string +settings: + allowed_values: + - + value: production + label: Production + - + value: non_production + label: Non-Production + allowed_values_function: '' +module: options +locked: false +cardinality: 1 +translatable: true +indexes: { } +persist_with_no_fields: false +custom_storage: false diff --git a/conf/drupal/config/language.content_settings.node.api_service_card.yml b/conf/drupal/config/language.content_settings.node.api_service_card.yml new file mode 100644 index 0000000000..dfcd96c8c7 --- /dev/null +++ b/conf/drupal/config/language.content_settings.node.api_service_card.yml @@ -0,0 +1,11 @@ +uuid: 4634200b-3645-4fef-b1f2-3f5ac9e4fef4 +langcode: en +status: true +dependencies: + config: + - node.type.api_service_card +id: node.api_service_card +target_entity_type_id: node +target_bundle: api_service_card +default_langcode: site_default +language_alterable: false diff --git a/conf/drupal/config/node.type.api_service_card.yml b/conf/drupal/config/node.type.api_service_card.yml new file mode 100644 index 0000000000..3aff08d846 --- /dev/null +++ b/conf/drupal/config/node.type.api_service_card.yml @@ -0,0 +1,26 @@ +uuid: b1718795-5939-40e2-b0ee-9f24d6a954f3 +langcode: en +status: true +dependencies: + module: + - mass_admin_pages + - menu_ui + - node_title_help_text +third_party_settings: + menu_ui: + available_menus: { } + parent: '' + node_title_help_text: + title_help: '' + mass_admin_pages: + node_type_long_description: 'Service Cards are embedded on my.mass.gov via API. They do not render on www.mass.gov.' + node_type_url: '' + node_type_category: other + node_type_thumbnail_path: '' +name: 'API Service Card' +type: api_service_card +description: '

Provides an authoring experience for users with the permission for this type. The content is not rendered on www.mass.gov but is accessed by API by the my.mass.gov team.

' +help: null +new_revision: true +preview_mode: 0 +display_submitted: false diff --git a/conf/drupal/config/rabbit_hole.behavior_settings.node_type_api_service_card.yml b/conf/drupal/config/rabbit_hole.behavior_settings.node_type_api_service_card.yml new file mode 100644 index 0000000000..81dba96b43 --- /dev/null +++ b/conf/drupal/config/rabbit_hole.behavior_settings.node_type_api_service_card.yml @@ -0,0 +1,14 @@ +uuid: 3ffccfcf-2291-414d-a5ae-e49c6486d8c9 +langcode: en +status: true +dependencies: + config: + - node.type.api_service_card +id: node_type_api_service_card +entity_type_id: node_type +entity_id: api_service_card +action: page_not_found +allow_override: 0 +redirect: '' +redirect_code: 301 +redirect_fallback_action: access_denied From cab99fdc9df8c06198cf746a815792c374cb2628 Mon Sep 17 00:00:00 2001 From: Dmytro Storozhuk Date: Fri, 18 Apr 2025 14:39:35 -0500 Subject: [PATCH 2/5] DP-38918: Add API Service Card bundle and content moderation workflow Introduced the `ApiServiceCardBundle` class for managing node entities and updated the `mass_content_entity_bundle_info_alter()` function to register it. Added a content moderation workflow specific to API Service Cards and configured form displays, field groupings, and weights. Additionally, updated language settings and field properties to align with requirements. Signed-off-by: Dmytro Storozhuk --- ..._display.node.api_service_card.default.yml | 172 ++++++++++++++++-- ...content_settings.node.api_service_card.yml | 2 +- .../config/workflows.workflow.api_cards.yml | 47 +++++ .../custom/mass_content/mass_content.module | 4 + .../Bundle/node/ApiServiceCardBundle.php | 10 + 5 files changed, 218 insertions(+), 17 deletions(-) create mode 100644 conf/drupal/config/workflows.workflow.api_cards.yml create mode 100644 docroot/modules/custom/mass_content/src/Entity/Bundle/node/ApiServiceCardBundle.php diff --git a/conf/drupal/config/core.entity_form_display.node.api_service_card.default.yml b/conf/drupal/config/core.entity_form_display.node.api_service_card.default.yml index 2e85e5ff48..c189c4b26e 100644 --- a/conf/drupal/config/core.entity_form_display.node.api_service_card.default.yml +++ b/conf/drupal/config/core.entity_form_display.node.api_service_card.default.yml @@ -14,10 +14,127 @@ dependencies: - field.field.node.api_service_card.field_api_srv_card_tenant - field.field.node.api_service_card.field_environment - node.type.api_service_card + - workflows.workflow.api_cards module: + - content_moderation + - field_group - key_value_field - link + - maxlength - text +third_party_settings: + field_group: + group_tabs: + children: + - group_card_details + - group_card_meta + - group_idv_settings + label: Tabs + region: content + parent_name: '' + weight: 4 + format_type: tabs + format_settings: + classes: '' + show_empty_fields: false + id: '' + direction: vertical + width_breakpoint: 640 + group_card_details: + children: + - field_api_serv_card_description + - field_api_serv_card_machine_name + label: 'Card Details' + region: content + parent_name: group_tabs + weight: 20 + format_type: tab + format_settings: + classes: '' + show_empty_fields: false + id: '' + formatter: closed + description: '' + required_fields: true + group_card_meta: + children: + - field_api_serv_card_link + - field_api_srv_card_tenant + - field_environment + label: 'Card Meta' + region: content + parent_name: group_tabs + weight: 21 + format_type: tab + format_settings: + classes: '' + show_empty_fields: false + id: '' + formatter: closed + description: '' + required_fields: true + group_idv_settings: + children: + - group_idv_details + label: 'IDV Settings' + region: content + parent_name: group_tabs + weight: 23 + format_type: tab + format_settings: + classes: '' + show_empty_fields: false + id: '' + formatter: closed + description: '' + required_fields: true + group_idv_details: + children: + - group_idv_logout_url_locale + - group_idv_return_url + label: 'IDV Details' + region: content + parent_name: group_idv_settings + weight: 7 + format_type: tabs + format_settings: + classes: '' + show_empty_fields: false + id: '' + direction: horizontal + width_breakpoint: 640 + group_idv_logout_url_locale: + children: + - field_api_srv_card_logout_locale + - field_api_srv_card_logout_urls + label: 'IDV Logout URL' + region: content + parent_name: group_idv_details + weight: 20 + format_type: tab + format_settings: + classes: '' + show_empty_fields: false + id: '' + formatter: closed + description: '' + required_fields: true + group_idv_return_url: + children: + - field_api_srv_card_ret_locale + - field_api_srv_card_idv_ret_urls + label: 'IDV Return URL' + region: content + parent_name: group_idv_details + weight: 21 + format_type: tab + format_settings: + classes: '' + show_empty_fields: false + id: '' + formatter: closed + description: '' + required_fields: true id: node.api_service_card.default targetEntityType: node bundle: api_service_card @@ -25,7 +142,7 @@ mode: default content: created: type: datetime_timestamp - weight: 12 + weight: 3 region: content settings: { } third_party_settings: { } @@ -39,7 +156,7 @@ content: third_party_settings: { } field_api_serv_card_link: type: link_default - weight: 3 + weight: 2 region: content settings: placeholder_url: '' @@ -55,7 +172,7 @@ content: third_party_settings: { } field_api_srv_card_idv_ret_urls: type: key_value_textarea - weight: 6 + weight: 11 region: content settings: rows: 5 @@ -64,21 +181,27 @@ content: key_label: Key key_placeholder: '' value_label: Value - description_enabled: true + description_enabled: false description_label: Description description_rows: 5 description_placeholder: '' - third_party_settings: { } + third_party_settings: + maxlength: + maxlength_js: null + maxlength_js_label: 'Content limited to @limit characters, remaining: @remaining' + maxlength_js_summary: null + maxlength_js_label_summary: 'Content limited to @limit characters, remaining: @remaining' + maxlength_js_enforce: false field_api_srv_card_logout_locale: type: boolean_checkbox - weight: 9 + weight: 8 region: content settings: display_label: true third_party_settings: { } field_api_srv_card_logout_urls: type: key_value_textarea - weight: 8 + weight: 9 region: content settings: rows: 5 @@ -87,34 +210,53 @@ content: key_label: Key key_placeholder: '' value_label: Value - description_enabled: true + description_enabled: false description_label: Description description_rows: 5 description_placeholder: '' - third_party_settings: { } + third_party_settings: + maxlength: + maxlength_js: null + maxlength_js_label: 'Content limited to @limit characters, remaining: @remaining' + maxlength_js_summary: null + maxlength_js_label_summary: 'Content limited to @limit characters, remaining: @remaining' + maxlength_js_enforce: false field_api_srv_card_ret_locale: type: boolean_checkbox - weight: 7 + weight: 10 region: content settings: display_label: true third_party_settings: { } field_api_srv_card_status: type: boolean_checkbox - weight: 4 + weight: 1 region: content settings: display_label: true third_party_settings: { } field_api_srv_card_tenant: type: options_select - weight: 5 + weight: 3 region: content settings: { } third_party_settings: { } field_environment: type: options_select - weight: 10 + weight: 4 + region: content + settings: { } + third_party_settings: { } + langcode: + type: language_select + weight: 5 + region: content + settings: + include_locked: true + third_party_settings: { } + moderation_state: + type: moderation_state_default + weight: 6 region: content settings: { } third_party_settings: { } @@ -128,7 +270,7 @@ content: third_party_settings: { } uid: type: entity_reference_autocomplete - weight: 11 + weight: 2 region: content settings: match_operator: CONTAINS @@ -137,8 +279,6 @@ content: placeholder: '' third_party_settings: { } hidden: - langcode: true - moderation_state: true path: true promote: true search: true diff --git a/conf/drupal/config/language.content_settings.node.api_service_card.yml b/conf/drupal/config/language.content_settings.node.api_service_card.yml index dfcd96c8c7..097903c1d5 100644 --- a/conf/drupal/config/language.content_settings.node.api_service_card.yml +++ b/conf/drupal/config/language.content_settings.node.api_service_card.yml @@ -8,4 +8,4 @@ id: node.api_service_card target_entity_type_id: node target_bundle: api_service_card default_langcode: site_default -language_alterable: false +language_alterable: true diff --git a/conf/drupal/config/workflows.workflow.api_cards.yml b/conf/drupal/config/workflows.workflow.api_cards.yml new file mode 100644 index 0000000000..118d53491c --- /dev/null +++ b/conf/drupal/config/workflows.workflow.api_cards.yml @@ -0,0 +1,47 @@ +uuid: 93ecda7b-8a33-473d-806f-abee08266ed4 +langcode: en +status: true +dependencies: + config: + - node.type.api_service_card + module: + - content_moderation +id: api_cards +label: 'API Cards' +type: content_moderation +type_settings: + states: + draft: + label: Draft + weight: 0 + published: false + default_revision: false + published: + label: Published + weight: -2 + published: true + default_revision: true + unpublished: + label: Unpublished + weight: -1 + published: false + default_revision: true + transitions: + publish: + label: Publish + from: + - published + - unpublished + to: published + weight: 1 + unpublish: + label: Unpublish + from: + - published + - unpublished + to: unpublished + weight: 2 + entity_types: + node: + - api_service_card + default_moderation_state: published diff --git a/docroot/modules/custom/mass_content/mass_content.module b/docroot/modules/custom/mass_content/mass_content.module index 04acbe208c..980cc38dfc 100644 --- a/docroot/modules/custom/mass_content/mass_content.module +++ b/docroot/modules/custom/mass_content/mass_content.module @@ -15,6 +15,7 @@ use Drupal\mass_content\Entity\Bundle\media\MediaVideoBundle; use Drupal\mass_content\Entity\Bundle\node\ActionBundle; use Drupal\mass_content\Entity\Bundle\node\AdvisoryBundle; use Drupal\mass_content\Entity\Bundle\node\AlertBundle; +use Drupal\mass_content\Entity\Bundle\node\ApiServiceCardBundle; use Drupal\mass_content\Entity\Bundle\node\BinderBundle; use Drupal\mass_content\Entity\Bundle\node\CampaignLandingBundle; use Drupal\mass_content\Entity\Bundle\node\ContactInformationBundle; @@ -1312,6 +1313,9 @@ function mass_content_views_data() { * Implements hook_entity_bundle_info_alter(). */ function mass_content_entity_bundle_info_alter(array &$bundles): void { + if (isset($bundles['node']['api_service_card'])) { + $bundles['node']['api_service_card']['class'] = ApiServiceCardBundle::class; + } if (isset($bundles['node']['action'])) { $bundles['node']['action']['class'] = ActionBundle::class; } diff --git a/docroot/modules/custom/mass_content/src/Entity/Bundle/node/ApiServiceCardBundle.php b/docroot/modules/custom/mass_content/src/Entity/Bundle/node/ApiServiceCardBundle.php new file mode 100644 index 0000000000..0df793eea8 --- /dev/null +++ b/docroot/modules/custom/mass_content/src/Entity/Bundle/node/ApiServiceCardBundle.php @@ -0,0 +1,10 @@ + Date: Fri, 18 Apr 2025 15:28:53 -0500 Subject: [PATCH 3/5] DP-38918: Add view configuration for API Service Cards Introduced a new view configuration to list and manage API Service Cards. The view includes both administrative and default displays with fields like Title, Created, and Changed, and is accessible via a dedicated admin page at "admin/content/api-service-cards". Signed-off-by: Dmytro Storozhuk --- .../config/views.view.api_service_cards.yml | 407 ++++++++++++++++++ 1 file changed, 407 insertions(+) create mode 100644 conf/drupal/config/views.view.api_service_cards.yml diff --git a/conf/drupal/config/views.view.api_service_cards.yml b/conf/drupal/config/views.view.api_service_cards.yml new file mode 100644 index 0000000000..b2f51ae85a --- /dev/null +++ b/conf/drupal/config/views.view.api_service_cards.yml @@ -0,0 +1,407 @@ +uuid: 7498b991-724e-4342-b1e8-18117a9d3196 +langcode: en +status: true +dependencies: + config: + - node.type.api_service_card + - system.menu.admin + module: + - node + - user +id: api_service_cards +label: 'API Service Cards' +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: 'API Service Cards' + 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 + created: + id: created + table: node_field_data + field: created + relationship: none + group_type: group + admin_label: '' + entity_type: node + entity_field: created + plugin_id: field + label: 'Authored on' + 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: medium + 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 + 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: Changed + 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: medium + 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 + 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: 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 + text: edit + output_url_as_text: false + absolute: false + pager: + type: mini + options: + offset: 0 + pagination_heading_level: h4 + items_per_page: 20 + 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 api_service_card content' + cache: + type: tag + options: { } + empty: { } + sorts: + created: + id: created + table: node_field_data + field: created + relationship: none + group_type: group + admin_label: '' + entity_type: node + entity_field: created + plugin_id: date + order: DESC + expose: + label: '' + field_identifier: '' + exposed: false + granularity: second + arguments: { } + filters: + status: + id: status + table: node_field_data + field: status + entity_type: node + entity_field: status + plugin_id: boolean + value: '1' + group: 1 + expose: + operator: '' + type: + id: type + table: node_field_data + field: type + entity_type: node + entity_field: type + plugin_id: bundle + value: + api_service_card: api_service_card + style: + type: table + row: + type: fields + query: + type: views_query + options: + query_comment: '' + disable_sql_rewrite: false + distinct: false + disable_automatic_base_fields: false + replica: false + query_tags: { } + relationships: { } + 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: { } + page_1: + id: page_1 + display_title: Page + display_plugin: page + position: 1 + display_options: + display_extenders: + metatag_display_extender: + metatags: { } + tokenize: false + path: admin/content/api-service-cards + menu: + type: normal + title: 'API Service Cards' + menu_name: admin + parent: system.admin_content + cache_metadata: + max-age: -1 + contexts: + - 'languages:language_content' + - 'languages:language_interface' + - url.query_args + - 'user.node_grants:view' + - user.permissions + tags: { } From c2b64f7293baa41177fc92dd937b39527a292f5a Mon Sep 17 00:00:00 2001 From: Joe Galluccio Date: Fri, 18 Apr 2025 17:11:33 -0400 Subject: [PATCH 4/5] view enhancements --- .../config/views.view.api_service_cards.yml | 521 +++++++++++++++++- 1 file changed, 511 insertions(+), 10 deletions(-) diff --git a/conf/drupal/config/views.view.api_service_cards.yml b/conf/drupal/config/views.view.api_service_cards.yml index b2f51ae85a..4500c7c5b1 100644 --- a/conf/drupal/config/views.view.api_service_cards.yml +++ b/conf/drupal/config/views.view.api_service_cards.yml @@ -3,11 +3,19 @@ langcode: en status: true dependencies: config: + - field.storage.node.field_api_serv_card_link + - field.storage.node.field_api_srv_card_status + - field.storage.node.field_api_srv_card_tenant + - field.storage.node.field_environment - node.type.api_service_card - system.menu.admin module: + - link - node + - options - user + - views_autocomplete_filters + - views_porter_stemmer id: api_service_cards label: 'API Service Cards' module: views @@ -225,16 +233,272 @@ display: multi_type: separator separator: ', ' field_api_classes: false - edit_node: - id: edit_node + field_api_srv_card_status: + id: field_api_srv_card_status + table: node__field_api_srv_card_status + field: field_api_srv_card_status + relationship: none + group_type: group + admin_label: '' + plugin_id: field + label: 'Active?' + 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: 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 + field_environment: + id: field_environment + table: node__field_environment + field: field_environment + relationship: none + group_type: group + admin_label: '' + plugin_id: field + label: Environment + 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: list_default + settings: { } + 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 + field_api_serv_card_link: + id: field_api_serv_card_link + table: node__field_api_serv_card_link + field: field_api_serv_card_link + relationship: none + group_type: group + admin_label: '' + plugin_id: field + label: Link + 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: uri + type: link + settings: + trim_length: 2000 + url_only: false + url_plain: false + rel: '0' + target: '0' + 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 + field_api_srv_card_tenant: + id: field_api_srv_card_tenant + table: node__field_api_srv_card_tenant + field: field_api_srv_card_tenant + relationship: none + group_type: group + admin_label: '' + plugin_id: field + label: Tenant + 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: list_default + settings: { } + 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: edit_node + field: operations relationship: none group_type: group admin_label: '' entity_type: node - plugin_id: entity_link_edit - label: 'Link to edit Content' + plugin_id: entity_operations + label: 'Operations links' exclude: false alter: alter_text: false @@ -275,9 +539,7 @@ display: hide_empty: false empty_zero: false hide_alter_empty: true - text: edit - output_url_as_text: false - absolute: false + destination: false pager: type: mini options: @@ -354,6 +616,235 @@ display: plugin_id: bundle value: api_service_card: api_service_card + field_api_srv_card_status_value: + id: field_api_srv_card_status_value + table: node__field_api_srv_card_status + field: field_api_srv_card_status_value + relationship: none + group_type: group + admin_label: '' + plugin_id: boolean + operator: '=' + value: All + group: 1 + exposed: true + expose: + operator_id: '' + label: 'Active?' + description: '' + use_operator: false + operator: field_api_srv_card_status_value_op + operator_limit_selection: false + operator_list: { } + identifier: field_api_srv_card_status_value + required: false + remember: false + multiple: false + remember_roles: + authenticated: authenticated + anonymous: '0' + author: '0' + editor: '0' + emergency_alert_publisher: '0' + executive_orders: '0' + redirect_creators: '0' + content_team: '0' + developer: '0' + administrator: '0' + tester: '0' + doc_deletion: '0' + d2d_redirect_manager: '0' + data_administrator: '0' + collection_administrator: '0' + prototype_design_access: '0' + 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_environment_value: + id: field_environment_value + table: node__field_environment + field: field_environment_value + relationship: none + group_type: group + admin_label: '' + plugin_id: list_field + operator: or + value: + all: all + group: 1 + exposed: true + expose: + operator_id: field_environment_value_op + label: Environment + description: '' + use_operator: false + operator: field_environment_value_op + operator_limit_selection: false + operator_list: { } + identifier: field_environment_value + required: false + remember: false + multiple: false + remember_roles: + authenticated: authenticated + anonymous: '0' + author: '0' + editor: '0' + emergency_alert_publisher: '0' + executive_orders: '0' + redirect_creators: '0' + content_team: '0' + developer: '0' + administrator: '0' + tester: '0' + doc_deletion: '0' + d2d_redirect_manager: '0' + data_administrator: '0' + collection_administrator: '0' + prototype_design_access: '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: { } + reduce_duplicates: false + field_api_srv_card_tenant_value: + id: field_api_srv_card_tenant_value + table: node__field_api_srv_card_tenant + field: field_api_srv_card_tenant_value + relationship: none + group_type: group + admin_label: '' + plugin_id: list_field + operator: or + value: + all: all + group: 1 + exposed: true + expose: + operator_id: field_api_srv_card_tenant_value_op + label: Tenant + description: '' + use_operator: false + operator: field_api_srv_card_tenant_value_op + operator_limit_selection: false + operator_list: { } + identifier: field_api_srv_card_tenant_value + required: false + remember: false + multiple: false + remember_roles: + authenticated: authenticated + anonymous: '0' + author: '0' + editor: '0' + emergency_alert_publisher: '0' + executive_orders: '0' + redirect_creators: '0' + content_team: '0' + developer: '0' + administrator: '0' + tester: '0' + doc_deletion: '0' + d2d_redirect_manager: '0' + data_administrator: '0' + collection_administrator: '0' + prototype_design_access: '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: { } + reduce_duplicates: false + title: + id: title + table: node_field_data + field: title + relationship: none + group_type: group + admin_label: '' + entity_type: node + entity_field: title + plugin_id: views_porter_stemmer_autocomplete_string + operator: contains + value: '' + group: 1 + exposed: true + expose: + operator_id: '' + label: 'Title (contains)' + description: '' + use_operator: false + operator: '' + operator_limit_selection: false + operator_list: { } + identifier: title + required: false + remember: false + multiple: false + remember_roles: + authenticated: authenticated + anonymous: '0' + author: '0' + editor: '0' + emergency_alert_publisher: '0' + executive_orders: '0' + redirect_creators: '0' + content_team: '0' + developer: '0' + administrator: '0' + tester: '0' + doc_deletion: '0' + d2d_redirect_manager: '0' + data_administrator: '0' + collection_administrator: '0' + prototype_design_access: '0' + placeholder: '' + autocomplete_filter: 0 + autocomplete_min_chars: '0' + autocomplete_items: '10' + autocomplete_field: title + autocomplete_raw_suggestion: 1 + autocomplete_raw_dropdown: 1 + autocomplete_dependent: 0 + stem_query: 0 + 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 row: @@ -376,10 +867,15 @@ display: contexts: - 'languages:language_content' - 'languages:language_interface' + - url - url.query_args - 'user.node_grants:view' - user.permissions - tags: { } + tags: + - 'config:field.storage.node.field_api_serv_card_link' + - 'config:field.storage.node.field_api_srv_card_status' + - 'config:field.storage.node.field_api_srv_card_tenant' + - 'config:field.storage.node.field_environment' page_1: id: page_1 display_title: Page @@ -401,7 +897,12 @@ display: contexts: - 'languages:language_content' - 'languages:language_interface' + - url - url.query_args - 'user.node_grants:view' - user.permissions - tags: { } + tags: + - 'config:field.storage.node.field_api_serv_card_link' + - 'config:field.storage.node.field_api_srv_card_status' + - 'config:field.storage.node.field_api_srv_card_tenant' + - 'config:field.storage.node.field_environment' From dd3f3dfdaf6fefe7e87660c7a932b2d7df48f53e Mon Sep 17 00:00:00 2001 From: Dmytro Storozhuk Date: Tue, 22 Apr 2025 13:10:18 -0500 Subject: [PATCH 5/5] DP-38918: Update API Service Cards view and add MMG Editor role Renamed menu and updated paths in the API Service Cards view to align with the mass dashboard. Introduced a new MMG Editor role with specific permissions and actions for assigning/removing the role from users. Adjusted language type configurations for consistency. Signed-off-by: Dmytro Storozhuk --- ...action.user_add_role_action.mmg_editor.yml | 14 ++++++++ ...ion.user_remove_role_action.mmg_editor.yml | 14 ++++++++ conf/drupal/config/user.role.mmg_editor.yml | 36 +++++++++++++++++++ .../config/views.view.api_service_cards.yml | 12 ++++--- 4 files changed, 72 insertions(+), 4 deletions(-) create mode 100644 conf/drupal/config/system.action.user_add_role_action.mmg_editor.yml create mode 100644 conf/drupal/config/system.action.user_remove_role_action.mmg_editor.yml create mode 100644 conf/drupal/config/user.role.mmg_editor.yml diff --git a/conf/drupal/config/system.action.user_add_role_action.mmg_editor.yml b/conf/drupal/config/system.action.user_add_role_action.mmg_editor.yml new file mode 100644 index 0000000000..43e23716b8 --- /dev/null +++ b/conf/drupal/config/system.action.user_add_role_action.mmg_editor.yml @@ -0,0 +1,14 @@ +uuid: c690cc75-aac0-4a59-9ad3-b4b1f9ee2f25 +langcode: en +status: true +dependencies: + config: + - user.role.mmg_editor + module: + - user +id: user_add_role_action.mmg_editor +label: 'Add the MMG Editor role to the selected user(s)' +type: user +plugin: user_add_role_action +configuration: + rid: mmg_editor diff --git a/conf/drupal/config/system.action.user_remove_role_action.mmg_editor.yml b/conf/drupal/config/system.action.user_remove_role_action.mmg_editor.yml new file mode 100644 index 0000000000..00037789a1 --- /dev/null +++ b/conf/drupal/config/system.action.user_remove_role_action.mmg_editor.yml @@ -0,0 +1,14 @@ +uuid: 68381dfe-3826-4b94-b3a8-1cc804fc0256 +langcode: en +status: true +dependencies: + config: + - user.role.mmg_editor + module: + - user +id: user_remove_role_action.mmg_editor +label: 'Remove the MMG Editor role from the selected user(s)' +type: user +plugin: user_remove_role_action +configuration: + rid: mmg_editor diff --git a/conf/drupal/config/user.role.mmg_editor.yml b/conf/drupal/config/user.role.mmg_editor.yml new file mode 100644 index 0000000000..5f1747022a --- /dev/null +++ b/conf/drupal/config/user.role.mmg_editor.yml @@ -0,0 +1,36 @@ +uuid: 7b38a845-6a35-4895-91d0-30a6d31e7f0a +langcode: en +status: true +dependencies: + config: + - node.type.api_service_card + - workflows.workflow.api_cards + module: + - content_moderation + - mass_workbench_ui + - node + - quick_node_clone + - rabbit_hole + - system + - toolbar +id: mmg_editor +label: 'MMG Editor' +weight: 8 +is_admin: null +permissions: + - 'access toolbar' + - 'clone api_service_card content' + - 'create api_service_card content' + - 'delete any api_service_card content' + - 'delete api_service_card revisions' + - 'delete own api_service_card content' + - 'edit any api_service_card content' + - 'edit own api_service_card content' + - 'rabbit hole administer node' + - 'rabbit hole bypass node' + - 'revert api_service_card revisions' + - 'use api_cards transition publish' + - 'use api_cards transition unpublish' + - 'view api_service_card revisions' + - 'view current moderation states' + - 'view the administration theme' diff --git a/conf/drupal/config/views.view.api_service_cards.yml b/conf/drupal/config/views.view.api_service_cards.yml index 4500c7c5b1..252fe03160 100644 --- a/conf/drupal/config/views.view.api_service_cards.yml +++ b/conf/drupal/config/views.view.api_service_cards.yml @@ -8,7 +8,7 @@ dependencies: - field.storage.node.field_api_srv_card_tenant - field.storage.node.field_environment - node.type.api_service_card - - system.menu.admin + - system.menu.mass-dashboard module: - link - node @@ -886,12 +886,16 @@ display: metatag_display_extender: metatags: { } tokenize: false - path: admin/content/api-service-cards + path: admin/ma-dash/api-service-cards menu: type: normal title: 'API Service Cards' - menu_name: admin - parent: system.admin_content + description: '' + weight: 0 + expanded: false + menu_name: mass-dashboard + parent: '' + context: '0' cache_metadata: max-age: -1 contexts: