diff --git a/config/sync/core.entity_form_display.node.health_care_local_health_service.default.yml b/config/sync/core.entity_form_display.node.health_care_local_health_service.default.yml index d9471da318..87700b0608 100644 --- a/config/sync/core.entity_form_display.node.health_care_local_health_service.default.yml +++ b/config/sync/core.entity_form_display.node.health_care_local_health_service.default.yml @@ -23,13 +23,10 @@ dependencies: module: - allow_only_one - content_moderation - - entity_browser_entity_form - field_group - - ief_table_view_mode - limited_field_widgets - markup - paragraphs - - textfield_counter third_party_settings: field_group: group_governance: @@ -50,7 +47,6 @@ third_party_settings: group_appointments: children: - field_referral_required - - field_walk_ins_accepted label: Requirements region: content parent_name: group_a @@ -64,12 +60,7 @@ third_party_settings: open: true group_a: children: - - field_appointments_help_text - - field_hservice_appt_intro_select - - field_hservice_appt_leadin - - field_hservices_lead_in_default - group_appointments - - group_scheduling label: Appointments region: content parent_name: '' @@ -91,9 +82,9 @@ third_party_settings: - field_online_scheduling_availabl - field_phone_numbers_paragraph label: Scheduling - region: content - parent_name: group_a - weight: 9 + region: hidden + parent_name: '' + weight: 12 format_type: fieldset format_settings: classes: '' @@ -174,12 +165,6 @@ content: region: content settings: { } third_party_settings: { } - field_appointments_help_text: - type: markup - weight: 4 - region: content - settings: { } - third_party_settings: { } field_enforce_unique_combo: type: allow_only_one_widget weight: 29 @@ -199,62 +184,12 @@ content: region: content settings: { } third_party_settings: { } - field_hservice_appt_intro_select: - type: options_buttons - weight: 5 - region: content - settings: { } - third_party_settings: { } - field_hservice_appt_leadin: - type: string_textarea_with_counter - weight: 6 - region: content - settings: - rows: 3 - placeholder: '' - maxlength: 200 - counter_position: after - js_prevent_submit: true - count_html_characters: false - textcount_status_message: '@remaining_count characters remaining.' - third_party_settings: { } - field_hservices_lead_in_default: - type: markup - weight: 7 - region: content - settings: { } - third_party_settings: { } field_last_saved_by_an_editor: type: datetime_timestamp - weight: 32 - region: content - settings: { } - third_party_settings: { } - field_online_scheduling_availabl: - type: options_select - weight: 0 + weight: 6 region: content settings: { } third_party_settings: { } - field_phone_numbers_paragraph: - type: inline_entity_form_complex_table_view_mode - weight: 1 - region: content - settings: - form_mode: default - override_labels: true - label_singular: 'phone number' - label_plural: 'phone numbers' - allow_new: true - allow_existing: false - match_operator: CONTAINS - allow_duplicate: false - collapsible: false - collapsed: false - revision: false - third_party_settings: - entity_browser_entity_form: - entity_browser_id: _none field_referral_required: type: options_select weight: 27 @@ -287,12 +222,6 @@ content: third_party_settings: limited_field_widgets: limit_values: '3' - field_walk_ins_accepted: - type: options_select - weight: 28 - region: content - settings: { } - third_party_settings: { } moderation_state: type: moderation_state_default weight: 12 @@ -301,6 +230,13 @@ content: third_party_settings: { } hidden: created: true + field_appointments_help_text: true + field_hservice_appt_intro_select: true + field_hservice_appt_leadin: true + field_hservices_lead_in_default: true + field_online_scheduling_availabl: true + field_phone_numbers_paragraph: true + field_walk_ins_accepted: true langcode: true path: true promote: true diff --git a/config/sync/core.entity_form_display.node.service_region.default.yml b/config/sync/core.entity_form_display.node.service_region.default.yml index e8304cad85..dac66a5dd7 100644 --- a/config/sync/core.entity_form_display.node.service_region.default.yml +++ b/config/sync/core.entity_form_display.node.service_region.default.yml @@ -10,6 +10,7 @@ dependencies: - field.field.node.service_region.field_service_location - field.field.node.service_region.field_service_name_and_descripti - field.field.node.service_region.field_vba_region_facility_list + - field.field.node.service_region.field_vba_serv_reg_appt_default - node.type.service_region - workflows.workflow.restricted_archive module: @@ -39,7 +40,6 @@ third_party_settings: description_display: after group_primary_facility: children: - - field_office - field_facility_location - field_service_location label: 'Primary facility' @@ -169,6 +169,7 @@ hidden: body: true created: true field_last_saved_by_an_editor: true + field_vba_serv_reg_appt_default: true langcode: true path: true promote: true diff --git a/config/sync/core.entity_form_display.node.vba_facility_service.default.yml b/config/sync/core.entity_form_display.node.vba_facility_service.default.yml index cd7c258364..e2b45e3535 100644 --- a/config/sync/core.entity_form_display.node.vba_facility_service.default.yml +++ b/config/sync/core.entity_form_display.node.vba_facility_service.default.yml @@ -9,6 +9,7 @@ dependencies: - field.field.node.vba_facility_service.field_office - field.field.node.vba_facility_service.field_service_location - field.field.node.vba_facility_service.field_service_name_and_descripti + - field.field.node.vba_facility_service.field_vba_fac_serv_appt_default - node.type.vba_facility_service - workflows.workflow.editorial module: @@ -27,7 +28,7 @@ third_party_settings: label: 'Section settings' region: content parent_name: '' - weight: 6 + weight: 5 format_type: details_sidebar format_settings: classes: '' @@ -44,7 +45,7 @@ third_party_settings: label: 'Editorial workflow' region: content parent_name: '' - weight: 7 + weight: 6 format_type: fieldset format_settings: classes: '' @@ -98,7 +99,7 @@ content: third_party_settings: { } field_last_saved_by_an_editor: type: datetime_timestamp - weight: 10 + weight: 9 region: content settings: { } third_party_settings: { } @@ -150,7 +151,7 @@ content: third_party_settings: { } status: type: boolean_checkbox - weight: 8 + weight: 7 region: content settings: display_label: true @@ -164,12 +165,13 @@ content: placeholder: '' third_party_settings: { } url_redirects: - weight: 9 + weight: 8 region: content settings: { } third_party_settings: { } hidden: created: true + field_vba_fac_serv_appt_default: true langcode: true path: true promote: true diff --git a/config/sync/core.entity_form_display.node.vba_facility_service.inline_entity_form.yml b/config/sync/core.entity_form_display.node.vba_facility_service.inline_entity_form.yml index e8230ae056..81f67e6628 100644 --- a/config/sync/core.entity_form_display.node.vba_facility_service.inline_entity_form.yml +++ b/config/sync/core.entity_form_display.node.vba_facility_service.inline_entity_form.yml @@ -10,6 +10,7 @@ dependencies: - field.field.node.vba_facility_service.field_office - field.field.node.vba_facility_service.field_service_location - field.field.node.vba_facility_service.field_service_name_and_descripti + - field.field.node.vba_facility_service.field_vba_fac_serv_appt_default - node.type.vba_facility_service module: - field_group @@ -91,6 +92,7 @@ hidden: field_enforce_unique_combo: true field_last_saved_by_an_editor: true field_service_location: true + field_vba_fac_serv_appt_default: true langcode: true moderation_state: true path: true diff --git a/config/sync/core.entity_form_display.node.vha_facility_nonclinical_service.default.yml b/config/sync/core.entity_form_display.node.vha_facility_nonclinical_service.default.yml index aa6fc220ee..c839a23a3d 100644 --- a/config/sync/core.entity_form_display.node.vha_facility_nonclinical_service.default.yml +++ b/config/sync/core.entity_form_display.node.vha_facility_nonclinical_service.default.yml @@ -9,6 +9,7 @@ dependencies: - field.field.node.vha_facility_nonclinical_service.field_last_saved_by_an_editor - field.field.node.vha_facility_nonclinical_service.field_service_location - field.field.node.vha_facility_nonclinical_service.field_service_name_and_descripti + - field.field.node.vha_facility_nonclinical_service.field_vamc_nonclin_appt_default - node.type.vha_facility_nonclinical_service - workflows.workflow.editorial module: @@ -77,7 +78,7 @@ content: third_party_settings: { } field_last_saved_by_an_editor: type: datetime_timestamp - weight: 26 + weight: 8 region: content settings: { } third_party_settings: { } @@ -130,6 +131,7 @@ content: third_party_settings: { } hidden: created: true + field_vamc_nonclin_appt_default: true langcode: true promote: true status: true diff --git a/config/sync/core.entity_form_display.paragraph.service_location.default.yml b/config/sync/core.entity_form_display.paragraph.service_location.default.yml index f9926f097e..6dfa1a9775 100644 --- a/config/sync/core.entity_form_display.paragraph.service_location.default.yml +++ b/config/sync/core.entity_form_display.paragraph.service_location.default.yml @@ -4,12 +4,19 @@ status: true dependencies: config: - field.field.paragraph.service_location.field_additional_hours_info + - field.field.paragraph.service_location.field_appt_intro_text_custom + - field.field.paragraph.service_location.field_appt_intro_text_type - field.field.paragraph.service_location.field_email_contacts - field.field.paragraph.service_location.field_hours - field.field.paragraph.service_location.field_office_hours + - field.field.paragraph.service_location.field_office_visits + - field.field.paragraph.service_location.field_online_scheduling_avail + - field.field.paragraph.service_location.field_other_phone_numbers - field.field.paragraph.service_location.field_phone - field.field.paragraph.service_location.field_service_location_address + - field.field.paragraph.service_location.field_use_facility_phone_number - field.field.paragraph.service_location.field_use_main_facility_phone + - field.field.paragraph.service_location.field_virtual_support - paragraphs.paragraphs_type.service_location module: - entity_browser_entity_form @@ -18,6 +25,7 @@ dependencies: - limited_field_widgets - office_hours - paragraphs + - textfield_counter third_party_settings: field_group: group_service_hours: @@ -28,7 +36,7 @@ third_party_settings: label: Hours region: content parent_name: '' - weight: 1 + weight: 3 format_type: details format_settings: classes: '' @@ -42,7 +50,7 @@ third_party_settings: label: Address region: content parent_name: '' - weight: 0 + weight: 2 format_type: details format_settings: classes: '' @@ -57,7 +65,7 @@ third_party_settings: label: 'Contact info' region: content parent_name: '' - weight: 2 + weight: 4 format_type: details format_settings: classes: '' @@ -94,6 +102,56 @@ third_party_settings: open: true description: '' required_fields: false + group_service_options: + children: + - field_office_visits + - field_virtual_support + label: 'Service options' + region: content + parent_name: '' + weight: 0 + format_type: details + format_settings: + classes: '' + show_empty_fields: false + id: '' + open: false + description: '' + required_fields: true + group_appointments: + children: + - field_appt_intro_text_type + - field_appt_intro_text_custom + - group_phone_number_for_appt + - field_online_scheduling_avail + label: Appointments + region: content + parent_name: '' + weight: 1 + format_type: details + format_settings: + classes: '' + show_empty_fields: false + id: '' + open: false + description: 'Provide information that helps site visitors make an appointment for this service.' + required_fields: true + group_phone_number_for_appt: + children: + - field_use_facility_phone_number + - field_other_phone_numbers + label: 'Phone number for appointments' + region: content + parent_name: group_appointments + weight: 7 + format_type: details + format_settings: + classes: '' + show_empty_fields: false + id: '' + open: true + description: '' + required_fields: true id: paragraph.service_location.default targetEntityType: paragraph bundle: service_location @@ -107,6 +165,26 @@ content: size: 60 placeholder: '' third_party_settings: { } + field_appt_intro_text_custom: + type: string_textarea_with_counter + weight: 6 + region: content + settings: + rows: 5 + placeholder: '' + maxlength: 200 + counter_position: after + js_prevent_submit: true + count_only_mode: false + count_html_characters: true + textcount_status_message: '@remaining_count characters remaining' + third_party_settings: { } + field_appt_intro_text_type: + type: options_buttons + weight: 5 + region: content + settings: { } + third_party_settings: { } field_email_contacts: type: inline_entity_form_complex_table_view_mode weight: 3 @@ -123,6 +201,7 @@ content: collapsible: false collapsed: false revision: false + removed_reference: optional allow_system_delete: false third_party_settings: entity_browser_entity_form: @@ -137,10 +216,46 @@ content: type: office_hours_default weight: 1 region: content - settings: { } + settings: + collapsed: false third_party_settings: limited_field_widgets: limit_values: '0' + field_office_visits: + type: options_buttons + weight: 4 + region: content + settings: { } + third_party_settings: { } + field_online_scheduling_avail: + type: options_select + weight: 8 + region: content + settings: { } + third_party_settings: { } + field_other_phone_numbers: + type: inline_entity_form_complex_table_view_mode + weight: 30 + region: content + settings: + form_mode: default + override_labels: true + label_singular: 'phone number' + label_plural: 'phone numbers' + allow_new: true + allow_existing: false + match_operator: CONTAINS + allow_duplicate: false + collapsible: false + collapsed: false + revision: false + removed_reference: optional + allow_system_delete: 0 + third_party_settings: + entity_browser_entity_form: + entity_browser_id: _none + change_labels: + add_another: '' field_phone: type: inline_entity_form_complex_table_view_mode weight: 5 @@ -157,13 +272,14 @@ content: collapsible: false collapsed: false revision: false + removed_reference: optional allow_system_delete: false third_party_settings: entity_browser_entity_form: entity_browser_id: _none field_service_location_address: type: paragraphs - weight: 25 + weight: 21 region: content settings: title: Address @@ -180,6 +296,13 @@ content: collapse_edit_all: '0' duplicate: '0' third_party_settings: { } + field_use_facility_phone_number: + type: boolean_checkbox + weight: 29 + region: content + settings: + display_label: true + third_party_settings: { } field_use_main_facility_phone: type: boolean_checkbox weight: 4 @@ -187,6 +310,12 @@ content: settings: display_label: true third_party_settings: { } + field_virtual_support: + type: options_buttons + weight: 5 + region: content + settings: { } + third_party_settings: { } hidden: created: true status: true diff --git a/config/sync/core.entity_view_display.node.health_care_local_health_service.default.yml b/config/sync/core.entity_view_display.node.health_care_local_health_service.default.yml index 5f0c5a72ed..cc2a7399da 100644 --- a/config/sync/core.entity_view_display.node.health_care_local_health_service.default.yml +++ b/config/sync/core.entity_view_display.node.health_care_local_health_service.default.yml @@ -23,7 +23,6 @@ dependencies: - allow_only_one - entity_reference_revisions - field_group - - markup - options - user third_party_settings: @@ -33,7 +32,7 @@ third_party_settings: label: 'VHA and VAMC health service description' parent_name: '' region: hidden - weight: 13 + weight: 21 format_type: fieldset format_settings: classes: '' @@ -44,7 +43,7 @@ third_party_settings: label: 'Facility description of service (this field will be no longer be used in 2021)' parent_name: '' region: hidden - weight: 12 + weight: 20 format_type: fieldset format_settings: classes: '' @@ -52,17 +51,11 @@ third_party_settings: description: '' group_appointments: children: - - field_hservice_appt_intro_select - - field_hservice_appt_leadin - - field_hservices_lead_in_default - field_referral_required - - field_walk_ins_accepted - - field_online_scheduling_availabl - - field_phone_numbers_paragraph label: Appointments parent_name: '' region: content - weight: 1 + weight: 2 format_type: fieldset format_settings: classes: '' @@ -78,44 +71,7 @@ content: label: above settings: { } third_party_settings: { } - weight: 3 - region: content - field_hservice_appt_intro_select: - type: list_default - label: above - settings: { } - third_party_settings: { } - weight: 4 - region: content - field_hservice_appt_leadin: - type: basic_string - label: above - settings: { } - third_party_settings: { } - weight: 5 - region: content - field_hservices_lead_in_default: - type: markup - label: above - settings: { } - third_party_settings: { } - weight: 6 - region: content - field_online_scheduling_availabl: - type: list_default - label: above - settings: { } - third_party_settings: { } - weight: 9 - region: content - field_phone_numbers_paragraph: - type: entity_reference_revisions_entity_view - label: above - settings: - view_mode: default - link: '' - third_party_settings: { } - weight: 10 + weight: 1 region: content field_referral_required: type: list_default @@ -140,14 +96,7 @@ content: view_mode: default link: '' third_party_settings: { } - weight: 2 - region: content - field_walk_ins_accepted: - type: list_default - label: above - settings: { } - third_party_settings: { } - weight: 8 + weight: 3 region: content hidden: breadcrumbs: true @@ -156,7 +105,13 @@ hidden: field_appointments_help_text: true field_facility_location: true field_facility_service_loc_help: true + field_hservice_appt_intro_select: true + field_hservice_appt_leadin: true + field_hservices_lead_in_default: true field_last_saved_by_an_editor: true + field_online_scheduling_availabl: true + field_phone_numbers_paragraph: true + field_walk_ins_accepted: true langcode: true links: true search_api_excerpt: true diff --git a/config/sync/core.entity_view_display.node.service_region.default.yml b/config/sync/core.entity_view_display.node.service_region.default.yml index a488c8f01b..6c92ff9c48 100644 --- a/config/sync/core.entity_view_display.node.service_region.default.yml +++ b/config/sync/core.entity_view_display.node.service_region.default.yml @@ -10,10 +10,12 @@ dependencies: - field.field.node.service_region.field_service_location - field.field.node.service_region.field_service_name_and_descripti - field.field.node.service_region.field_vba_region_facility_list + - field.field.node.service_region.field_vba_serv_reg_appt_default - node.type.service_region module: - entity_reference_revisions - field_group + - markup - user third_party_settings: field_group: @@ -92,6 +94,13 @@ content: third_party_settings: { } weight: 2 region: content + field_vba_serv_reg_appt_default: + type: markup + label: above + settings: { } + third_party_settings: { } + weight: 6 + region: content hidden: body: true breadcrumbs: true diff --git a/config/sync/core.entity_view_display.node.service_region.full.yml b/config/sync/core.entity_view_display.node.service_region.full.yml index cd7879a105..82e79ca765 100644 --- a/config/sync/core.entity_view_display.node.service_region.full.yml +++ b/config/sync/core.entity_view_display.node.service_region.full.yml @@ -11,6 +11,7 @@ dependencies: - field.field.node.service_region.field_service_location - field.field.node.service_region.field_service_name_and_descripti - field.field.node.service_region.field_vba_region_facility_list + - field.field.node.service_region.field_vba_serv_reg_appt_default - node.type.service_region module: - entity_reference_revisions @@ -120,6 +121,7 @@ hidden: body: true breadcrumbs: true content_moderation_control: true + field_vba_serv_reg_appt_default: true langcode: true links: true search_api_excerpt: true diff --git a/config/sync/core.entity_view_display.node.service_region.teaser.yml b/config/sync/core.entity_view_display.node.service_region.teaser.yml index 812f580b10..ea7cb771a7 100644 --- a/config/sync/core.entity_view_display.node.service_region.teaser.yml +++ b/config/sync/core.entity_view_display.node.service_region.teaser.yml @@ -11,6 +11,7 @@ dependencies: - field.field.node.service_region.field_service_location - field.field.node.service_region.field_service_name_and_descripti - field.field.node.service_region.field_vba_region_facility_list + - field.field.node.service_region.field_vba_serv_reg_appt_default - node.type.service_region module: - text @@ -46,5 +47,6 @@ hidden: field_service_location: true field_service_name_and_descripti: true field_vba_region_facility_list: true + field_vba_serv_reg_appt_default: true langcode: true search_api_excerpt: true diff --git a/config/sync/core.entity_view_display.node.vba_facility_service.default.yml b/config/sync/core.entity_view_display.node.vba_facility_service.default.yml index 26841c30a1..ee960107c7 100644 --- a/config/sync/core.entity_view_display.node.vba_facility_service.default.yml +++ b/config/sync/core.entity_view_display.node.vba_facility_service.default.yml @@ -9,10 +9,12 @@ dependencies: - field.field.node.vba_facility_service.field_office - field.field.node.vba_facility_service.field_service_location - field.field.node.vba_facility_service.field_service_name_and_descripti + - field.field.node.vba_facility_service.field_vba_fac_serv_appt_default - node.type.vba_facility_service module: - allow_only_one - entity_reference_revisions + - markup - user id: node.vba_facility_service.default targetEntityType: node @@ -32,7 +34,7 @@ content: settings: link: true third_party_settings: { } - weight: 2 + weight: 1 region: content field_service_location: type: entity_reference_revisions_entity_view @@ -49,13 +51,21 @@ content: settings: link: true third_party_settings: { } - weight: 1 + weight: 2 + region: content + field_vba_fac_serv_appt_default: + type: markup + label: above + settings: { } + third_party_settings: { } + weight: 4 region: content hidden: breadcrumbs: true content_moderation_control: true field_administration: true field_last_saved_by_an_editor: true + field_vba_fac_serv_appt_default: true langcode: true links: true search_api_excerpt: true diff --git a/config/sync/core.entity_view_display.node.vba_facility_service.search_index.yml b/config/sync/core.entity_view_display.node.vba_facility_service.search_index.yml index 546d4ed7f4..6c4b30ea44 100644 --- a/config/sync/core.entity_view_display.node.vba_facility_service.search_index.yml +++ b/config/sync/core.entity_view_display.node.vba_facility_service.search_index.yml @@ -10,6 +10,7 @@ dependencies: - field.field.node.vba_facility_service.field_office - field.field.node.vba_facility_service.field_service_location - field.field.node.vba_facility_service.field_service_name_and_descripti + - field.field.node.vba_facility_service.field_vba_fac_serv_appt_default - node.type.vba_facility_service module: - allow_only_one @@ -53,6 +54,7 @@ hidden: field_administration: true field_last_saved_by_an_editor: true field_service_location: true + field_vba_fac_serv_appt_default: true langcode: true links: true search_api_excerpt: true diff --git a/config/sync/core.entity_view_display.node.vba_facility_service.teaser.yml b/config/sync/core.entity_view_display.node.vba_facility_service.teaser.yml index a54411a0d5..006c9abd80 100644 --- a/config/sync/core.entity_view_display.node.vba_facility_service.teaser.yml +++ b/config/sync/core.entity_view_display.node.vba_facility_service.teaser.yml @@ -10,6 +10,7 @@ dependencies: - field.field.node.vba_facility_service.field_office - field.field.node.vba_facility_service.field_service_location - field.field.node.vba_facility_service.field_service_name_and_descripti + - field.field.node.vba_facility_service.field_vba_fac_serv_appt_default - node.type.vba_facility_service module: - user @@ -32,5 +33,6 @@ hidden: field_office: true field_service_location: true field_service_name_and_descripti: true + field_vba_fac_serv_appt_default: true langcode: true search_api_excerpt: true diff --git a/config/sync/core.entity_view_display.node.vha_facility_nonclinical_service.default.yml b/config/sync/core.entity_view_display.node.vha_facility_nonclinical_service.default.yml index af936ae78f..19bc1c8290 100644 --- a/config/sync/core.entity_view_display.node.vha_facility_nonclinical_service.default.yml +++ b/config/sync/core.entity_view_display.node.vha_facility_nonclinical_service.default.yml @@ -9,23 +9,56 @@ dependencies: - field.field.node.vha_facility_nonclinical_service.field_last_saved_by_an_editor - field.field.node.vha_facility_nonclinical_service.field_service_location - field.field.node.vha_facility_nonclinical_service.field_service_name_and_descripti + - field.field.node.vha_facility_nonclinical_service.field_vamc_nonclin_appt_default - node.type.vha_facility_nonclinical_service module: + - allow_only_one + - entity_reference_revisions + - markup - user id: node.vha_facility_nonclinical_service.default targetEntityType: node bundle: vha_facility_nonclinical_service mode: default -content: { } +content: + field_enforce_unique_combo_offic: + type: allow_only_one + label: above + settings: { } + third_party_settings: { } + weight: 0 + region: content + field_facility_location: + type: entity_reference_label + label: above + settings: + link: true + third_party_settings: { } + weight: 2 + region: content + field_service_location: + type: entity_reference_revisions_entity_view + label: above + settings: + view_mode: default + link: '' + third_party_settings: { } + weight: 3 + region: content + field_service_name_and_descripti: + type: entity_reference_label + label: above + settings: + link: true + third_party_settings: { } + weight: 1 + region: content hidden: breadcrumbs: true content_moderation_control: true field_administration: true - field_enforce_unique_combo_offic: true - field_facility_location: true field_last_saved_by_an_editor: true - field_service_location: true - field_service_name_and_descripti: true + field_vamc_nonclin_appt_default: true langcode: true links: true search_api_excerpt: true diff --git a/config/sync/core.entity_view_display.node.vha_facility_nonclinical_service.search_index.yml b/config/sync/core.entity_view_display.node.vha_facility_nonclinical_service.search_index.yml index 01b1f75d19..7f00d08c8a 100644 --- a/config/sync/core.entity_view_display.node.vha_facility_nonclinical_service.search_index.yml +++ b/config/sync/core.entity_view_display.node.vha_facility_nonclinical_service.search_index.yml @@ -10,6 +10,7 @@ dependencies: - field.field.node.vha_facility_nonclinical_service.field_last_saved_by_an_editor - field.field.node.vha_facility_nonclinical_service.field_service_location - field.field.node.vha_facility_nonclinical_service.field_service_name_and_descripti + - field.field.node.vha_facility_nonclinical_service.field_vamc_nonclin_appt_default - node.type.vha_facility_nonclinical_service module: - allow_only_one @@ -48,6 +49,7 @@ hidden: field_facility_location: true field_last_saved_by_an_editor: true field_service_name_and_descripti: true + field_vamc_nonclin_appt_default: true langcode: true links: true search_api_excerpt: true diff --git a/config/sync/core.entity_view_display.node.vha_facility_nonclinical_service.teaser.yml b/config/sync/core.entity_view_display.node.vha_facility_nonclinical_service.teaser.yml index d52e9b5a64..6943cc5b2a 100644 --- a/config/sync/core.entity_view_display.node.vha_facility_nonclinical_service.teaser.yml +++ b/config/sync/core.entity_view_display.node.vha_facility_nonclinical_service.teaser.yml @@ -10,6 +10,7 @@ dependencies: - field.field.node.vha_facility_nonclinical_service.field_last_saved_by_an_editor - field.field.node.vha_facility_nonclinical_service.field_service_location - field.field.node.vha_facility_nonclinical_service.field_service_name_and_descripti + - field.field.node.vha_facility_nonclinical_service.field_vamc_nonclin_appt_default - node.type.vha_facility_nonclinical_service module: - user @@ -36,5 +37,6 @@ hidden: field_last_saved_by_an_editor: true field_service_location: true field_service_name_and_descripti: true + field_vamc_nonclin_appt_default: true langcode: true search_api_excerpt: true diff --git a/config/sync/core.entity_view_display.paragraph.service_location.default.yml b/config/sync/core.entity_view_display.paragraph.service_location.default.yml index a159441c0a..f512bf9ee8 100644 --- a/config/sync/core.entity_view_display.paragraph.service_location.default.yml +++ b/config/sync/core.entity_view_display.paragraph.service_location.default.yml @@ -4,12 +4,19 @@ status: true dependencies: config: - field.field.paragraph.service_location.field_additional_hours_info + - field.field.paragraph.service_location.field_appt_intro_text_custom + - field.field.paragraph.service_location.field_appt_intro_text_type - field.field.paragraph.service_location.field_email_contacts - field.field.paragraph.service_location.field_hours - field.field.paragraph.service_location.field_office_hours + - field.field.paragraph.service_location.field_office_visits + - field.field.paragraph.service_location.field_online_scheduling_avail + - field.field.paragraph.service_location.field_other_phone_numbers - field.field.paragraph.service_location.field_phone - field.field.paragraph.service_location.field_service_location_address + - field.field.paragraph.service_location.field_use_facility_phone_number - field.field.paragraph.service_location.field_use_main_facility_phone + - field.field.paragraph.service_location.field_virtual_support - paragraphs.paragraphs_type.service_location module: - entity_reference_revisions @@ -26,7 +33,7 @@ third_party_settings: label: Hours parent_name: group_service_location region: content - weight: 2 + weight: 23 format_type: fieldset format_settings: classes: '' @@ -41,7 +48,7 @@ third_party_settings: label: 'Contact info' parent_name: group_service_location region: content - weight: 3 + weight: 24 format_type: fieldset format_settings: classes: '' @@ -54,7 +61,7 @@ third_party_settings: label: Address parent_name: group_service_location region: content - weight: 1 + weight: 22 format_type: fieldset format_settings: classes: '' @@ -63,6 +70,8 @@ third_party_settings: open: true group_service_location: children: + - group_service_options + - group_appointments - group_address - group_hours - group_contact_info @@ -75,6 +84,39 @@ third_party_settings: classes: '' id: '' description: '' + group_appointments: + children: + - field_appt_intro_text_type + - field_appt_intro_text_custom + - field_use_facility_phone_number + - field_other_phone_numbers + - field_online_scheduling_avail + label: Appointments + parent_name: group_service_location + region: content + weight: 21 + format_type: fieldset + format_settings: + classes: '' + show_empty_fields: false + id: '' + description: '' + description_display: after + group_service_options: + children: + - field_office_visits + - field_virtual_support + label: 'Service Options' + parent_name: group_service_location + region: content + weight: 20 + format_type: fieldset + format_settings: + classes: '' + show_empty_fields: false + id: '' + description: '' + description_display: after id: paragraph.service_location.default targetEntityType: paragraph bundle: service_location @@ -88,6 +130,20 @@ content: third_party_settings: { } weight: 5 region: content + field_appt_intro_text_custom: + type: basic_string + label: above + settings: { } + third_party_settings: { } + weight: 13 + region: content + field_appt_intro_text_type: + type: list_default + label: above + settings: { } + third_party_settings: { } + weight: 12 + region: content field_email_contacts: type: entity_reference_revisions_entity_view label: visually_hidden @@ -139,6 +195,29 @@ content: third_party_settings: { } weight: 3 region: content + field_office_visits: + type: list_default + label: above + settings: { } + third_party_settings: { } + weight: 10 + region: content + field_online_scheduling_avail: + type: list_default + label: above + settings: { } + third_party_settings: { } + weight: 16 + region: content + field_other_phone_numbers: + type: entity_reference_revisions_entity_view + label: above + settings: + view_mode: default + link: '' + third_party_settings: { } + weight: 15 + region: content field_phone: type: entity_reference_revisions_entity_view label: visually_hidden @@ -157,6 +236,16 @@ content: third_party_settings: { } weight: 7 region: content + field_use_facility_phone_number: + type: boolean + label: above + settings: + format: default + format_custom_false: '' + format_custom_true: '' + third_party_settings: { } + weight: 14 + region: content field_use_main_facility_phone: type: boolean label: above @@ -167,5 +256,12 @@ content: third_party_settings: { } weight: 3 region: content + field_virtual_support: + type: list_default + label: above + settings: { } + third_party_settings: { } + weight: 11 + region: content hidden: search_api_excerpt: true diff --git a/config/sync/field.field.node.service_region.field_vba_serv_reg_appt_default.yml b/config/sync/field.field.node.service_region.field_vba_serv_reg_appt_default.yml new file mode 100644 index 0000000000..e2d5acef11 --- /dev/null +++ b/config/sync/field.field.node.service_region.field_vba_serv_reg_appt_default.yml @@ -0,0 +1,28 @@ +uuid: 58ae6795-1dcb-4ff9-9dee-389f59676ba4 +langcode: en +status: true +dependencies: + config: + - field.storage.node.field_vba_serv_reg_appt_default + - node.type.service_region + module: + - markup + - tmgmt_content +third_party_settings: + tmgmt_content: + excluded: false +id: node.service_region.field_vba_serv_reg_appt_default +field_name: field_vba_serv_reg_appt_default +entity_type: node +bundle: service_region +label: 'Appointment lead-in default' +description: '' +required: false +translatable: false +default_value: { } +default_value_callback: '' +settings: + markup: + value: '
Contact us to schedule, reschedule, or cancel your appointment at our service region.
' + format: rich_text +field_type: markup diff --git a/config/sync/field.field.node.vba_facility_service.field_vba_fac_serv_appt_default.yml b/config/sync/field.field.node.vba_facility_service.field_vba_fac_serv_appt_default.yml new file mode 100644 index 0000000000..f9f05424d2 --- /dev/null +++ b/config/sync/field.field.node.vba_facility_service.field_vba_fac_serv_appt_default.yml @@ -0,0 +1,28 @@ +uuid: 6a047608-0392-4784-987f-ebe107cddf8a +langcode: en +status: true +dependencies: + config: + - field.storage.node.field_vba_fac_serv_appt_default + - node.type.vba_facility_service + module: + - markup + - tmgmt_content +third_party_settings: + tmgmt_content: + excluded: false +id: node.vba_facility_service.field_vba_fac_serv_appt_default +field_name: field_vba_fac_serv_appt_default +entity_type: node +bundle: vba_facility_service +label: 'Appointment lead-in default' +description: '' +required: false +translatable: false +default_value: { } +default_value_callback: '' +settings: + markup: + value: 'Contact us to schedule, reschedule, or cancel your appointment.
' + format: rich_text +field_type: markup diff --git a/config/sync/field.field.node.vha_facility_nonclinical_service.field_vamc_nonclin_appt_default.yml b/config/sync/field.field.node.vha_facility_nonclinical_service.field_vamc_nonclin_appt_default.yml new file mode 100644 index 0000000000..d637a40567 --- /dev/null +++ b/config/sync/field.field.node.vha_facility_nonclinical_service.field_vamc_nonclin_appt_default.yml @@ -0,0 +1,28 @@ +uuid: 84e6b6e5-56e6-4f90-8402-e549c0cd9030 +langcode: en +status: true +dependencies: + config: + - field.storage.node.field_vamc_nonclin_appt_default + - node.type.vha_facility_nonclinical_service + module: + - markup + - tmgmt_content +third_party_settings: + tmgmt_content: + excluded: false +id: node.vha_facility_nonclinical_service.field_vamc_nonclin_appt_default +field_name: field_vamc_nonclin_appt_default +entity_type: node +bundle: vha_facility_nonclinical_service +label: 'Appointment lead-in default' +description: '' +required: false +translatable: false +default_value: { } +default_value_callback: '' +settings: + markup: + value: 'Contact us to schedule, reschedule, or cancel your appointment.
' + format: rich_text +field_type: markup diff --git a/config/sync/field.field.paragraph.service_location.field_appt_intro_text_custom.yml b/config/sync/field.field.paragraph.service_location.field_appt_intro_text_custom.yml new file mode 100644 index 0000000000..e7162a6fd4 --- /dev/null +++ b/config/sync/field.field.paragraph.service_location.field_appt_intro_text_custom.yml @@ -0,0 +1,24 @@ +uuid: 96e55910-7eba-493f-be2d-6908196adceb +langcode: en +status: true +dependencies: + config: + - field.storage.paragraph.field_appt_intro_text_custom + - paragraphs.paragraphs_type.service_location + module: + - tmgmt_content +third_party_settings: + tmgmt_content: + excluded: false +id: paragraph.service_location.field_appt_intro_text_custom +field_name: field_appt_intro_text_custom +entity_type: paragraph +bundle: service_location +label: 'Custom text' +description: '' +required: false +translatable: false +default_value: { } +default_value_callback: '' +settings: { } +field_type: string_long diff --git a/config/sync/field.field.paragraph.service_location.field_appt_intro_text_type.yml b/config/sync/field.field.paragraph.service_location.field_appt_intro_text_type.yml new file mode 100644 index 0000000000..18484b9c16 --- /dev/null +++ b/config/sync/field.field.paragraph.service_location.field_appt_intro_text_type.yml @@ -0,0 +1,27 @@ +uuid: 16342b68-830c-4d90-956e-20f5a52d2a10 +langcode: en +status: true +dependencies: + config: + - field.storage.paragraph.field_appt_intro_text_type + - paragraphs.paragraphs_type.service_location + module: + - options + - tmgmt_content +third_party_settings: + tmgmt_content: + excluded: false +id: paragraph.service_location.field_appt_intro_text_type +field_name: field_appt_intro_text_type +entity_type: paragraph +bundle: service_location +label: 'Appointment introduction text' +description: 'Add additional details about how to make appointments at this location.' +required: true +translatable: false +default_value: + - + value: use_default_text +default_value_callback: '' +settings: { } +field_type: list_string diff --git a/config/sync/field.field.paragraph.service_location.field_office_visits.yml b/config/sync/field.field.paragraph.service_location.field_office_visits.yml new file mode 100644 index 0000000000..cde92b5444 --- /dev/null +++ b/config/sync/field.field.paragraph.service_location.field_office_visits.yml @@ -0,0 +1,25 @@ +uuid: 7ca5d939-6e73-4797-8f19-f622ecce3414 +langcode: en +status: true +dependencies: + config: + - field.storage.paragraph.field_office_visits + - paragraphs.paragraphs_type.service_location + module: + - options + - tmgmt_content +third_party_settings: + tmgmt_content: + excluded: false +id: paragraph.service_location.field_office_visits +field_name: field_office_visits +entity_type: paragraph +bundle: service_location +label: 'Office visits' +description: 'Select whether Veterans can travel to a physical location to receive services.' +required: true +translatable: false +default_value: { } +default_value_callback: '' +settings: { } +field_type: list_string diff --git a/config/sync/field.field.paragraph.service_location.field_online_scheduling_avail.yml b/config/sync/field.field.paragraph.service_location.field_online_scheduling_avail.yml new file mode 100644 index 0000000000..6331f1ac0d --- /dev/null +++ b/config/sync/field.field.paragraph.service_location.field_online_scheduling_avail.yml @@ -0,0 +1,25 @@ +uuid: 2e7310b9-e834-4060-a2b3-8f141cc6c612 +langcode: en +status: true +dependencies: + config: + - field.storage.paragraph.field_online_scheduling_avail + - paragraphs.paragraphs_type.service_location + module: + - options + - tmgmt_content +third_party_settings: + tmgmt_content: + excluded: false +id: paragraph.service_location.field_online_scheduling_avail +field_name: field_online_scheduling_avail +entity_type: paragraph +bundle: service_location +label: 'Is online scheduling available for this service?' +description: '' +required: true +translatable: false +default_value: { } +default_value_callback: '' +settings: { } +field_type: list_string diff --git a/config/sync/field.field.paragraph.service_location.field_other_phone_numbers.yml b/config/sync/field.field.paragraph.service_location.field_other_phone_numbers.yml new file mode 100644 index 0000000000..d1b719058f --- /dev/null +++ b/config/sync/field.field.paragraph.service_location.field_other_phone_numbers.yml @@ -0,0 +1,167 @@ +uuid: d6e438b0-0393-43b1-bf9d-dc61b874680c +langcode: en +status: true +dependencies: + config: + - field.storage.paragraph.field_other_phone_numbers + - paragraphs.paragraphs_type.phone_number + - paragraphs.paragraphs_type.service_location + module: + - entity_reference_revisions + - tmgmt_content +third_party_settings: + tmgmt_content: + excluded: false +id: paragraph.service_location.field_other_phone_numbers +field_name: field_other_phone_numbers +entity_type: paragraph +bundle: service_location +label: 'Other phone numbers' +description: '' +required: false +translatable: false +default_value: { } +default_value_callback: '' +settings: + handler: 'default:paragraph' + handler_settings: + target_bundles: + phone_number: phone_number + negate: 0 + target_bundles_drag_drop: + address: + weight: 46 + enabled: false + alert: + weight: 47 + enabled: false + alert_single: + weight: 48 + enabled: false + audience_topics: + weight: 49 + enabled: false + basic_accordion: + weight: 50 + enabled: false + button: + weight: 51 + enabled: false + centralized_content_descriptor: + weight: 52 + enabled: false + checklist: + weight: 53 + enabled: false + checklist_item: + weight: 54 + enabled: false + collapsible_panel: + weight: 55 + enabled: false + collapsible_panel_item: + weight: 56 + enabled: false + contact_information: + weight: 57 + enabled: false + downloadable_file: + weight: 58 + enabled: false + email_contact: + weight: 59 + enabled: false + embedded_video: + weight: 60 + enabled: false + expandable_text: + weight: 61 + enabled: false + featured_content: + weight: 62 + enabled: false + health_care_local_facility_servi: + weight: 63 + enabled: false + link_teaser: + weight: 64 + enabled: false + link_teaser_with_image: + weight: 65 + enabled: false + list_of_link_teasers: + weight: 68 + enabled: false + list_of_links: + weight: 67 + enabled: false + lists_of_links: + weight: 66 + enabled: false + magichead_group: + weight: 69 + enabled: false + media: + weight: 70 + enabled: false + media_list_images: + weight: 71 + enabled: false + media_list_videos: + weight: 72 + enabled: false + non_reusable_alert: + weight: 73 + enabled: false + number_callout: + weight: 74 + enabled: false + phone_number: + weight: 75 + enabled: true + process: + weight: 76 + enabled: false + q_a: + weight: 77 + enabled: false + q_a_group: + weight: 78 + enabled: false + q_a_section: + weight: 79 + enabled: false + react_widget: + weight: 80 + enabled: false + rich_text_char_limit_1000: + weight: 81 + enabled: false + service_location: + weight: 82 + enabled: false + service_location_address: + weight: 83 + enabled: false + situation_update: + weight: 84 + enabled: false + spanish_translation_summary: + weight: 85 + enabled: false + staff_profile: + weight: 86 + enabled: false + step: + weight: 87 + enabled: false + step_by_step: + weight: 88 + enabled: false + table: + weight: 89 + enabled: false + wysiwyg: + weight: 90 + enabled: false +field_type: entity_reference_revisions diff --git a/config/sync/field.field.paragraph.service_location.field_use_facility_phone_number.yml b/config/sync/field.field.paragraph.service_location.field_use_facility_phone_number.yml new file mode 100644 index 0000000000..b093df23d8 --- /dev/null +++ b/config/sync/field.field.paragraph.service_location.field_use_facility_phone_number.yml @@ -0,0 +1,28 @@ +uuid: 98e2d610-9d03-4475-80e8-483570ed84ac +langcode: en +status: true +dependencies: + config: + - field.storage.paragraph.field_use_facility_phone_number + - paragraphs.paragraphs_type.service_location + module: + - tmgmt_content +third_party_settings: + tmgmt_content: + excluded: false +id: paragraph.service_location.field_use_facility_phone_number +field_name: field_use_facility_phone_number +entity_type: paragraph +bundle: service_location +label: 'Use the facility phone number' +description: '' +required: false +translatable: false +default_value: + - + value: 1 +default_value_callback: '' +settings: + on_label: 'On' + off_label: 'Off' +field_type: boolean diff --git a/config/sync/field.field.paragraph.service_location.field_virtual_support.yml b/config/sync/field.field.paragraph.service_location.field_virtual_support.yml new file mode 100644 index 0000000000..e524d1df32 --- /dev/null +++ b/config/sync/field.field.paragraph.service_location.field_virtual_support.yml @@ -0,0 +1,25 @@ +uuid: 397e5cab-f363-4eb3-926b-010efbabfde6 +langcode: en +status: true +dependencies: + config: + - field.storage.paragraph.field_virtual_support + - paragraphs.paragraphs_type.service_location + module: + - options + - tmgmt_content +third_party_settings: + tmgmt_content: + excluded: false +id: paragraph.service_location.field_virtual_support +field_name: field_virtual_support +entity_type: paragraph +bundle: service_location +label: 'Virtual support' +description: 'Select whether Veterans can receive services by phone or video call. ' +required: true +translatable: false +default_value: { } +default_value_callback: '' +settings: { } +field_type: list_string diff --git a/config/sync/field.storage.node.field_vamc_nonclin_appt_default.yml b/config/sync/field.storage.node.field_vamc_nonclin_appt_default.yml new file mode 100644 index 0000000000..11ffb81775 --- /dev/null +++ b/config/sync/field.storage.node.field_vamc_nonclin_appt_default.yml @@ -0,0 +1,19 @@ +uuid: f892fada-be3e-4019-9bb7-eb23cc7735be +langcode: en +status: true +dependencies: + module: + - markup + - node +id: node.field_vamc_nonclin_appt_default +field_name: field_vamc_nonclin_appt_default +entity_type: node +type: markup +settings: { } +module: markup +locked: false +cardinality: 1 +translatable: true +indexes: { } +persist_with_no_fields: false +custom_storage: false diff --git a/config/sync/field.storage.node.field_vba_fac_serv_appt_default.yml b/config/sync/field.storage.node.field_vba_fac_serv_appt_default.yml new file mode 100644 index 0000000000..43546b83ca --- /dev/null +++ b/config/sync/field.storage.node.field_vba_fac_serv_appt_default.yml @@ -0,0 +1,19 @@ +uuid: 40df6edc-0ab0-4d7c-9646-25a05172fff9 +langcode: en +status: true +dependencies: + module: + - markup + - node +id: node.field_vba_fac_serv_appt_default +field_name: field_vba_fac_serv_appt_default +entity_type: node +type: markup +settings: { } +module: markup +locked: false +cardinality: 1 +translatable: true +indexes: { } +persist_with_no_fields: false +custom_storage: false diff --git a/config/sync/field.storage.node.field_vba_serv_reg_appt_default.yml b/config/sync/field.storage.node.field_vba_serv_reg_appt_default.yml new file mode 100644 index 0000000000..4608ca20db --- /dev/null +++ b/config/sync/field.storage.node.field_vba_serv_reg_appt_default.yml @@ -0,0 +1,19 @@ +uuid: 535ddded-64f2-491e-bb21-dd21d13f686f +langcode: en +status: true +dependencies: + module: + - markup + - node +id: node.field_vba_serv_reg_appt_default +field_name: field_vba_serv_reg_appt_default +entity_type: node +type: markup +settings: { } +module: markup +locked: false +cardinality: 1 +translatable: true +indexes: { } +persist_with_no_fields: false +custom_storage: false diff --git a/config/sync/field.storage.paragraph.field_appt_intro_text_custom.yml b/config/sync/field.storage.paragraph.field_appt_intro_text_custom.yml new file mode 100644 index 0000000000..e13ffa6734 --- /dev/null +++ b/config/sync/field.storage.paragraph.field_appt_intro_text_custom.yml @@ -0,0 +1,19 @@ +uuid: aa95ab71-2c33-47cd-af64-b7a83b669b85 +langcode: en +status: true +dependencies: + module: + - paragraphs +id: paragraph.field_appt_intro_text_custom +field_name: field_appt_intro_text_custom +entity_type: paragraph +type: string_long +settings: + case_sensitive: false +module: core +locked: false +cardinality: 1 +translatable: true +indexes: { } +persist_with_no_fields: false +custom_storage: false diff --git a/config/sync/field.storage.paragraph.field_appt_intro_text_type.yml b/config/sync/field.storage.paragraph.field_appt_intro_text_type.yml new file mode 100644 index 0000000000..925439f7dc --- /dev/null +++ b/config/sync/field.storage.paragraph.field_appt_intro_text_type.yml @@ -0,0 +1,30 @@ +uuid: 6c7b3a37-c14d-4993-9c41-264a3add5058 +langcode: en +status: true +dependencies: + module: + - options + - paragraphs +id: paragraph.field_appt_intro_text_type +field_name: field_appt_intro_text_type +entity_type: paragraph +type: list_string +settings: + allowed_values: + - + value: use_default_text + label: 'Use default text' + - + value: customize_text + label: 'Customize text' + - + value: remove_text + label: 'Remove text' + allowed_values_function: '' +module: options +locked: false +cardinality: 1 +translatable: true +indexes: { } +persist_with_no_fields: false +custom_storage: false diff --git a/config/sync/field.storage.paragraph.field_office_visits.yml b/config/sync/field.storage.paragraph.field_office_visits.yml new file mode 100644 index 0000000000..eef6c7f6a7 --- /dev/null +++ b/config/sync/field.storage.paragraph.field_office_visits.yml @@ -0,0 +1,33 @@ +uuid: be4da6fb-7785-484c-b130-c2127c2a47aa +langcode: en +status: true +dependencies: + module: + - options + - paragraphs +id: paragraph.field_office_visits +field_name: field_office_visits +entity_type: paragraph +type: list_string +settings: + allowed_values: + - + value: 'no' + label: 'No' + - + value: yes_appointment_only + label: 'Yes, by appointment only' + - + value: yes_walk_in_visits_only + label: 'Yes, walk-in visits only' + - + value: yes_with_or_without_appointment + label: 'Yes, with or without an appointment' + allowed_values_function: '' +module: options +locked: false +cardinality: 1 +translatable: true +indexes: { } +persist_with_no_fields: false +custom_storage: false \ No newline at end of file diff --git a/config/sync/field.storage.paragraph.field_online_scheduling_avail.yml b/config/sync/field.storage.paragraph.field_online_scheduling_avail.yml new file mode 100644 index 0000000000..d637a27f5d --- /dev/null +++ b/config/sync/field.storage.paragraph.field_online_scheduling_avail.yml @@ -0,0 +1,27 @@ +uuid: dd260bd2-d9d6-4c88-a904-17a475191269 +langcode: en +status: true +dependencies: + module: + - options + - paragraphs +id: paragraph.field_online_scheduling_avail +field_name: field_online_scheduling_avail +entity_type: paragraph +type: list_string +settings: + allowed_values: + - + value: 'no' + label: 'No' + - + value: 'yes' + label: 'Yes' + allowed_values_function: '' +module: options +locked: false +cardinality: 1 +translatable: true +indexes: { } +persist_with_no_fields: false +custom_storage: false diff --git a/config/sync/field.storage.paragraph.field_other_phone_numbers.yml b/config/sync/field.storage.paragraph.field_other_phone_numbers.yml new file mode 100644 index 0000000000..c9148ae8e4 --- /dev/null +++ b/config/sync/field.storage.paragraph.field_other_phone_numbers.yml @@ -0,0 +1,20 @@ +uuid: 476b0bff-b268-4af8-a67f-8bcd4c7af62e +langcode: en +status: true +dependencies: + module: + - entity_reference_revisions + - paragraphs +id: paragraph.field_other_phone_numbers +field_name: field_other_phone_numbers +entity_type: paragraph +type: entity_reference_revisions +settings: + target_type: paragraph +module: entity_reference_revisions +locked: false +cardinality: 5 +translatable: true +indexes: { } +persist_with_no_fields: false +custom_storage: false diff --git a/config/sync/field.storage.paragraph.field_use_facility_phone_number.yml b/config/sync/field.storage.paragraph.field_use_facility_phone_number.yml new file mode 100644 index 0000000000..267d43fb52 --- /dev/null +++ b/config/sync/field.storage.paragraph.field_use_facility_phone_number.yml @@ -0,0 +1,18 @@ +uuid: 9c969af6-a594-4339-9a8e-2d2bc98fd6c9 +langcode: en +status: true +dependencies: + module: + - paragraphs +id: paragraph.field_use_facility_phone_number +field_name: field_use_facility_phone_number +entity_type: paragraph +type: boolean +settings: { } +module: core +locked: false +cardinality: 1 +translatable: true +indexes: { } +persist_with_no_fields: false +custom_storage: false diff --git a/config/sync/field.storage.paragraph.field_virtual_support.yml b/config/sync/field.storage.paragraph.field_virtual_support.yml new file mode 100644 index 0000000000..6b4f24874b --- /dev/null +++ b/config/sync/field.storage.paragraph.field_virtual_support.yml @@ -0,0 +1,33 @@ +uuid: 1a3585fe-48dd-44b5-9dee-186b1a7478a2 +langcode: en +status: true +dependencies: + module: + - options + - paragraphs +id: paragraph.field_virtual_support +field_name: field_virtual_support +entity_type: paragraph +type: list_string +settings: + allowed_values: + - + value: 'no' + label: 'No' + - + value: yes_appointment_only + label: 'Yes, by appointment only' + - + value: yes_veterans_can_call + label: 'Yes, Veterans can call at their convenience' + - + value: virtual_visits_may_be_available + label: 'Virtual visits may be available' + allowed_values_function: '' +module: options +locked: false +cardinality: 1 +translatable: true +indexes: { } +persist_with_no_fields: false +custom_storage: false diff --git a/config/sync/views.view.right_sidebar_latest_revision.yml b/config/sync/views.view.right_sidebar_latest_revision.yml index 21afc6ccde..1709c3ce4e 100644 --- a/config/sync/views.view.right_sidebar_latest_revision.yml +++ b/config/sync/views.view.right_sidebar_latest_revision.yml @@ -312,22 +312,21 @@ display: options: { } empty: { } sorts: - revision_timestamp: - id: revision_timestamp - table: node_revision - field: revision_timestamp + vid: + id: vid + table: node_field_revision + field: vid relationship: none group_type: group admin_label: '' entity_type: node - entity_field: revision_timestamp - plugin_id: date + entity_field: vid + plugin_id: standard order: DESC expose: label: '' - field_identifier: revision_timestamp + field_identifier: '' exposed: false - granularity: second arguments: nid: id: nid diff --git a/config/sync/views.view.service_locations_audit.yml b/config/sync/views.view.service_locations_audit.yml new file mode 100644 index 0000000000..d9479393c6 --- /dev/null +++ b/config/sync/views.view.service_locations_audit.yml @@ -0,0 +1,3088 @@ +uuid: 06b32350-4dd3-4b03-95b0-879bbdf03851 +langcode: en +status: true +dependencies: + config: + - field.storage.node.field_administration + - field.storage.node.field_hservice_appt_intro_select + - field.storage.node.field_hservice_appt_leadin + - field.storage.node.field_last_saved_by_an_editor + - field.storage.node.field_online_scheduling_availabl + - field.storage.node.field_phone_numbers_paragraph + - field.storage.node.field_walk_ins_accepted + - field.storage.paragraph.field_appt_intro_text_custom + - field.storage.paragraph.field_appt_intro_text_type + - field.storage.paragraph.field_office_visits + - field.storage.paragraph.field_online_scheduling_avail + - field.storage.paragraph.field_other_phone_numbers + - field.storage.paragraph.field_use_facility_phone_number + - node.type.health_care_local_health_service + - node.type.service_region + - node.type.vba_facility_service + - node.type.vha_facility_nonclinical_service + - taxonomy.vocabulary.administration + - user.role.administrator + - user.role.content_admin + module: + - content_moderation + - csv_serialization + - entity_reference_revisions + - node + - options + - paragraphs + - rest + - serialization + - taxonomy + - user + - views_data_export +id: service_locations_audit +label: 'Service locations audit' +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: 'Service locations audit' + 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: '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 + moderation_state_1: + id: moderation_state_1 + table: node_field_data + field: moderation_state + relationship: none + group_type: group + admin_label: '' + entity_type: node + plugin_id: moderation_state_field + label: 'Moderation state' + 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: content_moderation_state + 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 + 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: 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 + field_administration: + id: field_administration + table: node__field_administration + field: field_administration + relationship: none + group_type: group + admin_label: '' + plugin_id: field + label: Section + 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 + revision_log: + id: revision_log + table: node_revision + field: revision_log + relationship: none + group_type: group + admin_label: '' + entity_type: node + entity_field: revision_log + plugin_id: field + label: 'Revision log message' + 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: basic_string + 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_hservice_appt_intro_select: + id: field_hservice_appt_intro_select + table: node__field_hservice_appt_intro_select + field: field_hservice_appt_intro_select + relationship: none + group_type: group + admin_label: '' + plugin_id: field + label: 'OLD: Appointment intro text' + 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_appt_intro_text_type: + id: field_appt_intro_text_type + table: paragraph__field_appt_intro_text_type + field: field_appt_intro_text_type + relationship: field_service_location + group_type: group + admin_label: '' + plugin_id: field + label: 'NEW: Appointment introduction text' + 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_hservice_appt_leadin: + id: field_hservice_appt_leadin + table: node__field_hservice_appt_leadin + field: field_hservice_appt_leadin + relationship: none + group_type: group + admin_label: '' + plugin_id: field + label: 'OLD: Appointment lead-in text' + 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: basic_string + 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_appt_intro_text_custom: + id: field_appt_intro_text_custom + table: paragraph__field_appt_intro_text_custom + field: field_appt_intro_text_custom + relationship: field_service_location + group_type: group + admin_label: '' + plugin_id: field + label: 'NEW: Appt Custom text' + 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: basic_string + 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_walk_ins_accepted: + id: field_walk_ins_accepted + table: node__field_walk_ins_accepted + field: field_walk_ins_accepted + relationship: none + group_type: group + admin_label: '' + plugin_id: field + label: 'OLD: Are walkins accepted?' + 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_office_visits: + id: field_office_visits + table: paragraph__field_office_visits + field: field_office_visits + relationship: field_service_location + group_type: group + admin_label: '' + plugin_id: field + label: 'NEW: Office visits' + 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_online_scheduling_availabl: + id: field_online_scheduling_availabl + table: node__field_online_scheduling_availabl + field: field_online_scheduling_availabl + relationship: none + group_type: group + admin_label: '' + plugin_id: field + label: 'OLD: Is online scheduling available for this service?' + 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_online_scheduling_avail: + id: field_online_scheduling_avail + table: paragraph__field_online_scheduling_avail + field: field_online_scheduling_avail + relationship: field_service_location + group_type: group + admin_label: '' + plugin_id: field + label: 'NEW: Is online scheduling available for this service?' + 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_phone_numbers_paragraph: + id: field_phone_numbers_paragraph + table: node__field_phone_numbers_paragraph + field: field_phone_numbers_paragraph + relationship: none + group_type: group + admin_label: '' + plugin_id: field + label: 'OLD: Phone number for appointments' + 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_revisions_entity_view + settings: + view_mode: default + 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_other_phone_numbers: + id: field_other_phone_numbers + table: paragraph__field_other_phone_numbers + field: field_other_phone_numbers + relationship: field_service_location + group_type: group + admin_label: '' + plugin_id: field + label: 'NEW: Appt: Other phone numbers' + 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_revisions_entity_view + settings: + view_mode: default + group_column: '' + group_columns: { } + group_rows: true + delta_limit: 5 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false + field_use_facility_phone_number: + id: field_use_facility_phone_number + table: paragraph__field_use_facility_phone_number + field: field_use_facility_phone_number + relationship: field_service_location + group_type: group + admin_label: '' + plugin_id: field + label: 'NEW: Use the facility phone number' + 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: default + 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 + nid: + id: nid + table: node_field_data + field: nid + relationship: none + group_type: group + admin_label: '' + entity_type: node + entity_field: nid + plugin_id: field + label: ID + exclude: 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 + click_sort_column: value + type: number_integer + settings: + thousand_separator: '' + prefix_suffix: true + group_column: value + group_columns: { } + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false + field_last_saved_by_an_editor: + id: field_last_saved_by_an_editor + table: node__field_last_saved_by_an_editor + field: field_last_saved_by_an_editor + relationship: none + group_type: group + admin_label: '' + plugin_id: field + label: 'Last Saved by an Editor' + 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 + pager: + type: full + options: + offset: 0 + items_per_page: 100 + total_pages: null + id: 0 + tags: + next: ›› + previous: ‹‹ + first: '« First' + last: 'Last »' + 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 + quantity: 9 + pagination_heading_level: h4 + 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: role + options: + role: + content_admin: content_admin + administrator: administrator + cache: + type: tag + options: { } + empty: { } + 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: '' + field_identifier: '' + exposed: false + granularity: second + arguments: { } + filters: + title: + id: title + table: node_field_revision + 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: 'Facility service name contains' + 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_api_consumer: '0' + content_creator_benefits_hubs: '0' + content_creator_resources_and_support: '0' + office_content_creator: '0' + vamc_content_creator: '0' + content_creator_vba: '0' + content_creator_vet_center: '0' + content_editor: '0' + content_reviewer: '0' + content_publisher: '0' + content_admin: '0' + redirect_administrator: '0' + admnistrator_users: '0' + administrator: '0' + homepage_manager: '0' + next_js: '0' + translation_manager: '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: + service_region: service_region + health_care_local_health_service: health_care_local_health_service + vha_facility_nonclinical_service: vha_facility_nonclinical_service + vba_facility_service: vba_facility_service + group: 1 + exposed: true + expose: + operator_id: type_op + label: 'Content type' + description: '' + use_operator: true + operator: type_op + operator_limit_selection: true + operator_list: + in: in + 'not in': 'not in' + identifier: type + required: false + remember: true + multiple: true + remember_roles: + authenticated: authenticated + anonymous: '0' + content_api_consumer: '0' + content_creator_benefits_hubs: '0' + content_creator_resources_and_support: '0' + office_content_creator: '0' + vamc_content_creator: '0' + content_creator_vba: '0' + content_creator_vet_center: '0' + content_editor: '0' + content_reviewer: '0' + content_publisher: '0' + content_admin: '0' + redirect_administrator: '0' + admnistrator_users: '0' + administrator: '0' + homepage_manager: '0' + next_js: '0' + translation_manager: '0' + reduce: true + is_grouped: false + group_info: + label: '' + description: '' + identifier: '' + optional: true + widget: select + multiple: false + remember: false + default_group: All + default_group_multiple: { } + group_items: { } + moderation_state_multiple_workflow_filter: + id: moderation_state_multiple_workflow_filter + table: node + field: moderation_state_multiple_workflow_filter + relationship: none + group_type: group + admin_label: '' + entity_type: node + plugin_id: moderation_state_multiple_workflow_filter + operator: or + value: { } + group: 1 + exposed: true + expose: + operator_id: moderation_state_multiple_workflow_filter_op + label: 'Moderation state' + description: '' + use_operator: false + operator: moderation_state_multiple_workflow_filter_op + operator_limit_selection: false + operator_list: { } + identifier: moderation_state_multiple_workflow_filter + required: false + remember: false + multiple: false + remember_roles: + authenticated: authenticated + anonymous: '0' + content_api_consumer: '0' + content_creator_benefits_hubs: '0' + content_creator_resources_and_support: '0' + office_content_creator: '0' + vamc_content_creator: '0' + content_creator_vba: '0' + content_creator_vet_center: '0' + content_editor: '0' + content_reviewer: '0' + content_publisher: '0' + content_admin: '0' + redirect_administrator: '0' + admnistrator_users: '0' + administrator: '0' + homepage_manager: '0' + next_js: '0' + translation_manager: '0' + reduce: 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: { } + reduce_duplicates: 0 + field_administration_target_id: + id: field_administration_target_id + table: node__field_administration + field: field_administration_target_id + relationship: none + group_type: group + admin_label: '' + plugin_id: taxonomy_index_tid + operator: or + value: { } + group: 1 + exposed: true + expose: + operator_id: field_administration_target_id_op + label: Section + description: '' + use_operator: false + operator: field_administration_target_id_op + operator_limit_selection: false + operator_list: { } + identifier: field_administration_target_id + required: false + remember: false + multiple: false + remember_roles: + authenticated: authenticated + anonymous: '0' + content_api_consumer: '0' + content_creator_benefits_hubs: '0' + content_creator_resources_and_support: '0' + office_content_creator: '0' + vamc_content_creator: '0' + content_creator_vba: '0' + content_creator_vet_center: '0' + content_editor: '0' + content_reviewer: '0' + content_publisher: '0' + content_admin: '0' + redirect_administrator: '0' + admnistrator_users: '0' + administrator: '0' + homepage_manager: '0' + next_js: '0' + translation_manager: '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 + vid: administration + type: select + hierarchy: false + limit: true + error_message: true + filter_groups: + operator: AND + groups: + 1: AND + style: + type: table + options: + grouping: { } + row_class: '' + default_row_class: true + columns: + title: title + type: type + moderation_state_1: moderation_state_1 + changed: changed + field_administration: field_administration + revision_log: changed + field_hservice_appt_intro_select: field_hservice_appt_intro_select + field_appt_intro_text_type: field_appt_intro_text_type + field_hservice_appt_leadin: field_hservice_appt_leadin + field_appt_intro_text_custom: field_appt_intro_text_custom + field_walk_ins_accepted: field_walk_ins_accepted + field_office_visits: field_office_visits + field_online_scheduling_availabl: field_online_scheduling_availabl + field_online_scheduling_avail: field_online_scheduling_avail + field_phone_numbers_paragraph: field_phone_numbers_paragraph + field_other_phone_numbers: field_other_phone_numbers + field_use_facility_phone_number: field_use_facility_phone_number + nid: nid + field_last_saved_by_an_editor: field_last_saved_by_an_editor + default: '-1' + info: + title: + sortable: false + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + type: + sortable: true + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + moderation_state_1: + sortable: true + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + changed: + sortable: true + default_sort_order: desc + align: '' + separator: '' + empty_column: false + responsive: '' + field_administration: + sortable: true + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + revision_log: + sortable: false + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + field_hservice_appt_intro_select: + sortable: true + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + field_appt_intro_text_type: + sortable: true + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + field_hservice_appt_leadin: + sortable: true + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + field_appt_intro_text_custom: + sortable: true + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + field_walk_ins_accepted: + sortable: true + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + field_office_visits: + sortable: true + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + field_online_scheduling_availabl: + sortable: true + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + field_online_scheduling_avail: + sortable: true + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + field_phone_numbers_paragraph: + align: '' + separator: '' + empty_column: false + responsive: '' + field_other_phone_numbers: + align: '' + separator: '' + empty_column: false + responsive: '' + field_use_facility_phone_number: + sortable: true + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + nid: + sortable: true + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + field_last_saved_by_an_editor: + sortable: true + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + override: true + sticky: true + summary: '' + empty_table: false + caption: 'Service location results' + description: '' + row: + type: fields + query: + type: views_query + options: + query_comment: '' + disable_sql_rewrite: false + distinct: false + replica: false + query_tags: { } + relationships: + field_service_location: + id: field_service_location + table: node__field_service_location + field: field_service_location + relationship: none + group_type: group + admin_label: 'field_service_location: Paragraph' + plugin_id: standard + required: true + header: + result: + id: result + table: views + field: result + relationship: none + group_type: group + admin_label: '' + plugin_id: result + empty: false + content: 'Displaying @start - @end of @total' + footer: { } + display_extenders: { } + cache_metadata: + max-age: -1 + contexts: + - 'languages:language_content' + - 'languages:language_interface' + - url + - url.query_args + - 'user.node_grants:view' + - user.roles + tags: + - 'config:field.storage.node.field_administration' + - 'config:field.storage.node.field_hservice_appt_intro_select' + - 'config:field.storage.node.field_hservice_appt_leadin' + - 'config:field.storage.node.field_last_saved_by_an_editor' + - 'config:field.storage.node.field_online_scheduling_availabl' + - 'config:field.storage.node.field_phone_numbers_paragraph' + - 'config:field.storage.node.field_walk_ins_accepted' + - 'config:field.storage.paragraph.field_appt_intro_text_custom' + - 'config:field.storage.paragraph.field_appt_intro_text_type' + - 'config:field.storage.paragraph.field_office_visits' + - 'config:field.storage.paragraph.field_online_scheduling_avail' + - 'config:field.storage.paragraph.field_other_phone_numbers' + - 'config:field.storage.paragraph.field_use_facility_phone_number' + audit_service_locations: + id: audit_service_locations + display_title: 'Service locations audit' + display_plugin: page + position: 1 + display_options: + display_description: '' + display_extenders: + jsonapi_views: + enabled: true + path: admin/content/audit/service-locations-detailed + menu: + type: tab + title: 'Service locations audit' + description: '' + weight: 0 + expanded: false + menu_name: admin + parent: system.admin_content + context: '0' + as_local_task: true + local_task_link_title: 'Service locations audit' + local_task_parent: 'views_view:view.content.content_audit_page' + local_task_weight: 1005 + local_task_custom_parent_route: '' + cache_metadata: + max-age: -1 + contexts: + - 'languages:language_content' + - 'languages:language_interface' + - url + - url.query_args + - 'user.node_grants:view' + - user.roles + tags: + - 'config:field.storage.node.field_administration' + - 'config:field.storage.node.field_hservice_appt_intro_select' + - 'config:field.storage.node.field_hservice_appt_leadin' + - 'config:field.storage.node.field_last_saved_by_an_editor' + - 'config:field.storage.node.field_online_scheduling_availabl' + - 'config:field.storage.node.field_phone_numbers_paragraph' + - 'config:field.storage.node.field_walk_ins_accepted' + - 'config:field.storage.paragraph.field_appt_intro_text_custom' + - 'config:field.storage.paragraph.field_appt_intro_text_type' + - 'config:field.storage.paragraph.field_office_visits' + - 'config:field.storage.paragraph.field_online_scheduling_avail' + - 'config:field.storage.paragraph.field_other_phone_numbers' + - 'config:field.storage.paragraph.field_use_facility_phone_number' + service_location_audit_export: + id: service_location_audit_export + display_title: 'Service location audit export' + display_plugin: data_export + position: 1 + display_options: + 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: '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 + moderation_state_1: + id: moderation_state_1 + table: node_field_data + field: moderation_state + relationship: none + group_type: group + admin_label: '' + entity_type: node + plugin_id: moderation_state_field + label: 'Moderation state' + 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: content_moderation_state + 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 + 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: 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 + field_administration: + id: field_administration + table: node__field_administration + field: field_administration + relationship: none + group_type: group + admin_label: '' + plugin_id: field + label: Section + 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 + revision_log: + id: revision_log + table: node_revision + field: revision_log + relationship: none + group_type: group + admin_label: '' + entity_type: node + entity_field: revision_log + plugin_id: field + label: 'Revision log message' + 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: basic_string + 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_hservice_appt_intro_select: + id: field_hservice_appt_intro_select + table: node__field_hservice_appt_intro_select + field: field_hservice_appt_intro_select + relationship: none + group_type: group + admin_label: '' + plugin_id: field + label: 'OLD: Appointment intro text' + 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_appt_intro_text_type: + id: field_appt_intro_text_type + table: paragraph__field_appt_intro_text_type + field: field_appt_intro_text_type + relationship: field_service_location + group_type: group + admin_label: '' + plugin_id: field + label: 'NEW: Appointment introduction text' + 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_hservice_appt_leadin: + id: field_hservice_appt_leadin + table: node__field_hservice_appt_leadin + field: field_hservice_appt_leadin + relationship: none + group_type: group + admin_label: '' + plugin_id: field + label: 'OLD: Appointment lead-in text' + 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: basic_string + 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_appt_intro_text_custom: + id: field_appt_intro_text_custom + table: paragraph__field_appt_intro_text_custom + field: field_appt_intro_text_custom + relationship: field_service_location + group_type: group + admin_label: '' + plugin_id: field + label: 'NEW: Appt Custom text' + 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: basic_string + 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_walk_ins_accepted: + id: field_walk_ins_accepted + table: node__field_walk_ins_accepted + field: field_walk_ins_accepted + relationship: none + group_type: group + admin_label: '' + plugin_id: field + label: 'OLD: Are walkins accepted?' + 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_office_visits: + id: field_office_visits + table: paragraph__field_office_visits + field: field_office_visits + relationship: field_service_location + group_type: group + admin_label: '' + plugin_id: field + label: 'NEW: Office visits' + 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_online_scheduling_availabl: + id: field_online_scheduling_availabl + table: node__field_online_scheduling_availabl + field: field_online_scheduling_availabl + relationship: none + group_type: group + admin_label: '' + plugin_id: field + label: 'OLD: Is online scheduling available for this service?' + 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_online_scheduling_avail: + id: field_online_scheduling_avail + table: paragraph__field_online_scheduling_avail + field: field_online_scheduling_avail + relationship: field_service_location + group_type: group + admin_label: '' + plugin_id: field + label: 'NEW: Is online scheduling available for this service?' + 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_phone_numbers_paragraph: + id: field_phone_numbers_paragraph + table: node__field_phone_numbers_paragraph + field: field_phone_numbers_paragraph + relationship: none + group_type: group + admin_label: '' + plugin_id: field + label: 'OLD: Phone number for appointments' + 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_revisions_entity_view + settings: + view_mode: default + 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_other_phone_numbers: + id: field_other_phone_numbers + table: paragraph__field_other_phone_numbers + field: field_other_phone_numbers + relationship: field_service_location + group_type: group + admin_label: '' + plugin_id: field + label: 'NEW: Appt: Other phone numbers' + 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_revisions_entity_view + settings: + view_mode: default + group_column: '' + group_columns: { } + group_rows: true + delta_limit: 5 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false + field_use_facility_phone_number: + id: field_use_facility_phone_number + table: paragraph__field_use_facility_phone_number + field: field_use_facility_phone_number + relationship: field_service_location + group_type: group + admin_label: '' + plugin_id: field + label: 'NEW: Use the facility phone number' + 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: default + 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 + nid: + id: nid + table: node_field_data + field: nid + relationship: none + group_type: group + admin_label: '' + entity_type: node + entity_field: nid + plugin_id: field + label: ID + exclude: 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 + click_sort_column: value + type: number_integer + settings: + thousand_separator: '' + prefix_suffix: true + group_column: value + group_columns: { } + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false + nothing: + id: nothing + table: views + field: nothing + relationship: none + group_type: group + admin_label: '' + plugin_id: custom + label: URL + exclude: false + alter: + alter_text: true + text: 'https://prod.cms.va.gov/node/{{ nid }}' + make_link: false + path: 'https://prod.cms.va.gov/node/{{ nid }}' + 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: false + pager: + type: some + options: + offset: 0 + items_per_page: 0 + style: + type: data_export + options: + formats: + csv: csv + csv_settings: + delimiter: ',' + enclosure: '"' + escape_char: \ + strip_tags: true + trim: true + encoding: utf8 + utf8_bom: '0' + use_serializer_encode_only: false + defaults: + access: true + fields: false + display_description: '' + display_extenders: + jsonapi_views: + enabled: true + path: admin/content/audit/service-locations-detailed-exports + displays: + audit_service_locations: audit_service_locations + default: '0' + filename: va-gov-cms-service-locations.csv + automatic_download: false + redirect_path: /admin/content/audit/service-locations-detailed + export_method: batch + export_batch_size: 500 + export_limit: 0 + store_in_public_file_directory: null + custom_redirect_path: true + redirect_to_display: none + include_query_params: true + cache_metadata: + max-age: -1 + contexts: + - 'languages:language_content' + - 'languages:language_interface' + - request_format + - url + - 'user.node_grants:view' + - user.roles + tags: + - 'config:field.storage.node.field_administration' + - 'config:field.storage.node.field_hservice_appt_intro_select' + - 'config:field.storage.node.field_hservice_appt_leadin' + - 'config:field.storage.node.field_online_scheduling_availabl' + - 'config:field.storage.node.field_phone_numbers_paragraph' + - 'config:field.storage.node.field_walk_ins_accepted' + - 'config:field.storage.paragraph.field_appt_intro_text_custom' + - 'config:field.storage.paragraph.field_appt_intro_text_type' + - 'config:field.storage.paragraph.field_office_visits' + - 'config:field.storage.paragraph.field_online_scheduling_avail' + - 'config:field.storage.paragraph.field_other_phone_numbers' + - 'config:field.storage.paragraph.field_use_facility_phone_number' diff --git a/docroot/modules/custom/va_gov_backend/va_gov_backend.module b/docroot/modules/custom/va_gov_backend/va_gov_backend.module index 166de635c3..b11d1749b5 100644 --- a/docroot/modules/custom/va_gov_backend/va_gov_backend.module +++ b/docroot/modules/custom/va_gov_backend/va_gov_backend.module @@ -380,12 +380,6 @@ function va_gov_backend_form_alter(&$form, FormStateInterface $form_state, $form $form['description']['widget']['#after_build'][] = '_va_gov_backend_allowed_formats_remove_textarea_help'; } - if (isset($form['field_hservice_appt_intro_select'])) { - $form['field_hservice_appt_leadin']['widget'][0]['value']['#title_display'] = 'invisible'; - _va_gov_backend_modify_appt_intro_text_states($form, $form_state); - $form['#validate'][] = '_va_gov_backend_appt_intro_text_validation'; - } - // Disable path alias modification after lc node is published. _va_gov_backend_disable_alias_widget($form, $form_state); @@ -609,39 +603,6 @@ function va_gov_backend_entity_view_alter(array &$build, EntityInterface $entity } } - // Check if correct content bundle and unset fields. - if ($entity instanceof FieldableEntityInterface && $entity->getEntityTypeId() === 'node' && $entity->bundle() === 'health_care_local_health_service') { - foreach (_va_gov_backend_unset_fields($entity) as $appt_intro_field) { - unset($build[$appt_intro_field]); - } - }; - -} - -/** - * Returns the fields that need to be unset. - * - * @return array - * Fields that should be unset. - */ -function _va_gov_backend_unset_fields(FieldableEntityInterface $entity) { - $appt_intro_select = $entity->get('field_hservice_appt_intro_select')->value; - if ($appt_intro_select === 'default_intro_text') { - return [ - 'field_hservice_appt_leadin', - ]; - } - elseif ($appt_intro_select === 'custom_intro_text') { - return [ - 'field_hservices_lead_in_default', - ]; - } - else { - return [ - 'field_hservices_lead_in_default', - 'field_hservice_appt_leadin', - ]; - } } /** @@ -656,49 +617,6 @@ function _va_gov_backend_get_unlocked_alias_bundles() { return ['documentation_page']; } -/** - * Visibility of Appointment Lead-in Text field. - * - * @param array $form - * The node form array. - * @param Drupal\Core\Form\FormStateInterface $form_state - * Instance of FormStateInterface. - */ -function _va_gov_backend_modify_appt_intro_text_states(array &$form, FormStateInterface $form_state) { - if (isset($form['field_hservice_appt_intro_select'])) { - $form['field_hservice_appt_leadin']['#states'] = [ - 'visible' => [ - ':input[name="field_hservice_appt_intro_select"]' => ['value' => 'custom_intro_text'], - ], - ]; - $form['field_hservices_lead_in_default']['#states'] = [ - 'visible' => [ - ':input[name="field_hservice_appt_intro_select"]' => ['value' => 'default_intro_text'], - ], - ]; - } -} - -/** - * Adds Validation to check for an empty Appointment lead-in field. - * - * @param array $form - * The exposed widget form array. - * @param \Drupal\Core\Form\FormStateInterface $form_state - * The form state. - */ -function _va_gov_backend_appt_intro_text_validation(array $form, FormStateInterface $form_state) { - if (!empty($form_state->getValue('field_hservice_appt_leadin')) && !empty($form_state->getValue('field_hservice_appt_intro_select'))) { - $intro_type = $form_state->getValue('field_hservice_appt_intro_select'); - $intro_text_value = $form_state->getValue('field_hservice_appt_leadin'); - if ($intro_type[0]['value'] === 'custom_intro_text') { - if (($intro_text_value[0]['value'] === "")) { - $form_state->setErrorByName("field_hservice_appt_leadin", t('Appointment lead-in text required')); - } - } - } -} - /** * Disable url alias widget after publish. * diff --git a/docroot/modules/custom/va_gov_facilities/src/EventSubscriber/FacilitiesSubscriber.php b/docroot/modules/custom/va_gov_facilities/src/EventSubscriber/FacilitiesSubscriber.php index 6702be4f74..b25f382c27 100644 --- a/docroot/modules/custom/va_gov_facilities/src/EventSubscriber/FacilitiesSubscriber.php +++ b/docroot/modules/custom/va_gov_facilities/src/EventSubscriber/FacilitiesSubscriber.php @@ -24,6 +24,7 @@ use Drupal\field_event_dispatcher\Event\Field\WidgetCompleteFormAlterEvent; use Drupal\field_event_dispatcher\FieldHookEvents; use Drupal\node\NodeInterface; +use Drupal\paragraphs\ParagraphInterface; use Drupal\va_gov_user\Service\UserPermsService; use Symfony\Component\EventDispatcher\EventSubscriberInterface; @@ -220,7 +221,9 @@ public static function createRenderArrayFromFieldOnRefdEntity(NodeInterface $nod */ public function entityPresave(EntityPresaveEvent $event): void { $entity = $event->getEntity(); + $this->clearCustomAppointmentIntroText($entity); $this->clearNormalStatusDetails($entity); + $this->clearUnusedServiceLocationHours($entity); } /** @@ -356,6 +359,51 @@ private function getFacilityHours(array &$widget_complete_form, FormStateInterfa } } + /** + * Clear custom appointment intro text when unused. + * + * @param \Drupal\Core\Entity\EntityInterface $entity + * Entity. + */ + protected function clearCustomAppointmentIntroText(EntityInterface $entity): void { + if ($entity instanceof ParagraphInterface) { + $type = $entity->getType(); + /** @var \Drupal\paragraphs\ParagraphInterface $entity */ + if (($type === 'service_location') + && ($entity->hasField('field_appt_intro_text_type')) + && ($entity->hasField('field_appt_intro_text_custom'))) { + $appt_select = $entity->get('field_appt_intro_text_type')->value; + $appt_leadin = $entity->get('field_appt_intro_text_custom')->value; + if ($appt_select !== 'customize_text' && !empty($appt_leadin)) { + $entity->set('field_appt_intro_text_custom', ''); + } + } + } + } + + /** + * Clear service location hours when unused. + * + * @param \Drupal\Core\Entity\EntityInterface $entity + * Entity. + */ + protected function clearUnusedServiceLocationHours(EntityInterface $entity): void { + if ($entity instanceof ParagraphInterface) { + $type = $entity->getType(); + /** @var \Drupal\paragraphs\ParagraphInterface $entity */ + if (($type === 'service_location') + && ($entity->hasField('field_hours')) + && ($entity->hasField('field_office_hours'))) { + $hours = $entity->get('field_hours')->value; + $office_hours = $entity->get('field_office_hours')->getValue(); + // 2 = Provide specific hours for this service. + if ($hours !== '2' && count($office_hours) > 0) { + $entity->set('field_office_hours', []); + } + } + } + } + /** * Clear status details when operating status is normal. * diff --git a/docroot/modules/custom/va_gov_facilities/va_gov_facilities.info.yml b/docroot/modules/custom/va_gov_facilities/va_gov_facilities.info.yml index 1034cbc4ed..0f1edb4b7b 100644 --- a/docroot/modules/custom/va_gov_facilities/va_gov_facilities.info.yml +++ b/docroot/modules/custom/va_gov_facilities/va_gov_facilities.info.yml @@ -3,3 +3,5 @@ type: module description: 'Tools to improve user experience for VA Facilities.' core_version_requirement: ^9 || ^10 package: 'Custom' +dependencies: + - va_gov_backend \ No newline at end of file diff --git a/docroot/modules/custom/va_gov_facilities/va_gov_facilities.module b/docroot/modules/custom/va_gov_facilities/va_gov_facilities.module index 60104d5049..12079ee8f2 100644 --- a/docroot/modules/custom/va_gov_facilities/va_gov_facilities.module +++ b/docroot/modules/custom/va_gov_facilities/va_gov_facilities.module @@ -5,6 +5,9 @@ * Contains va_gov_facilities.module. */ +use Drupal\Component\Render\FormattableMarkup; + +use Drupal\Core\Form\FormStateInterface; use Drupal\va_gov_facilities\EventSubscriber\FacilitiesSubscriber; /** @@ -38,3 +41,71 @@ function va_gov_facilities_preprocess_field__paragraph__field_hours(&$variables) } } } + +/** + * Populates Service Location form with default appointment text from service. + * + * @param Drupal\Core\Form\FormStateInterface $form_state + * The form state. + * + * @return string + * The default appointment text from the service node type. + */ +function _va_gov_facilities_populate_service_default_appt_text(FormStateInterface $form_state): string { + $default_text = ''; + /** @var \Drupal\Core\Entity\EntityFormInterface $form_object */ + $form_object = $form_state->getFormObject(); + $bundle = $form_object->getEntity()->bundle(); + $entity = $form_object->getEntity(); + $service_types = [ + 'health_care_local_health_service' => 'field_hservices_lead_in_default', + 'service_region' => 'field_vba_serv_reg_appt_default', + 'vba_facility_service' => 'field_vba_fac_serv_appt_default', + 'vha_facility_nonclinical_service' => 'field_vamc_nonclin_appt_default', + ]; + foreach ($service_types as $service_type => $default_field) { + if ($bundle === $service_type) { + if ($entity->$default_field && !$entity->$default_field->isEmpty()) { + $default_text = trim(strip_tags($entity->$default_field->getFieldDefinition()->getSetting('markup')['value'])); + } + } + } + + return $default_text; +} + +/** + * Implements hook_field_widget_single_element_WIDGET_TYPE_form_alter(). + */ +function va_gov_facilities_field_widget_single_element_paragraphs_form_alter(&$element, FormStateInterface $form_state, $context) { + $paragraph_type = $element['#paragraph_type'] ?? ''; + if ($paragraph_type === 'service_location') { + // Set the default text for appointments. + $default_text = _va_gov_facilities_populate_service_default_appt_text($form_state) ?? ''; + $description = new FormattableMarkup($default_text, []); + // Create the form element for the default text for appointments. + // Nest it under the select list about the type of text. + $element['subform']['field_appt_intro_text_type']['temp_default_text'] = [ + '#type' => 'textarea', + '#title' => t('Default text'), + '#value' => $description, + '#weight' => 1, + '#disabled' => TRUE, + ]; + // Hide appointments custom text unless explicitly selected. + $selector = sprintf(':input[name="field_service_location[%d][subform][field_appt_intro_text_type]"]', $element['#delta']); + // The default appointment text shows as a disabled form element. + $element['subform']['field_appt_intro_text_type']['temp_default_text']['#states'] = [ + 'visible' => [ + $selector => ['value' => 'use_default_text'], + ], + ]; + $element['subform']['field_appt_intro_text_custom']['#states'] = [ + 'visible' => [ + $selector => ['value' => 'customize_text'], + ], + ]; + + } + +} diff --git a/docroot/modules/custom/va_gov_post_api/src/Service/PostFacilityServiceVamc.php b/docroot/modules/custom/va_gov_post_api/src/Service/PostFacilityServiceVamc.php index 7da37bf3dc..7effd2a571 100644 --- a/docroot/modules/custom/va_gov_post_api/src/Service/PostFacilityServiceVamc.php +++ b/docroot/modules/custom/va_gov_post_api/src/Service/PostFacilityServiceVamc.php @@ -10,6 +10,55 @@ */ class PostFacilityServiceVamc extends PostFacilityServiceBase { + /** + * The whether and how to make an office visit. + * + * Options: no, yes_appointment_only, yes_first_come_first_served_basis, + * yes_with_or_without_appointment. + * + * @var string + */ + protected $officeVisits = ""; + + /** + * The type of appointment help text. + * + * Options: use_default_text, customize_text, or remove_text. + * + * @var string + */ + protected $apptIntroType = ""; + + /** + * The visitor help text for making appointments. + * + * @var string + */ + protected $apptIntroText = ""; + + /** + * If the "Use facility phone" was ever selected for appts. + * + * Options: Yes, No (which we convert to bools below). + * + * @var bool + */ + protected $facilityPhoneWasSelectedAppt = FALSE; + + /** + * The phone data for appointments. + * + * @var array + */ + protected $apptPhones = []; + + /** + * Whether online scheduling is available. + * + * @var string + */ + protected $isOnlineSchedulingAvail = ""; + /** * Adds facility service data to Post API queue. * @@ -173,21 +222,19 @@ protected function getPayload(bool $forcePush = FALSE) { if (empty($this->errors) && $this->shouldPush($this->facilityService, $forcePush)) { $service = new \stdClass(); + $service->service_locations = $this->getServiceLocations(); $service->name = $this->serviceTerm->getName(); $service->active = ($this->facilityService->isPublished()) ? TRUE : FALSE; $service->description_national = $this->serviceTerm->getDescription(); $service->description_system = $this->getProcessedHtmlFromField('systemService', 'field_body'); $service->service_api_id = $this->serviceTerm->get('field_health_service_api_id')->value; $service->appointment_leadin = $this->getAppointmentLeadin(); - $field_phone_numbers_paragraphs = $this->facilityService->get('field_phone_numbers_paragraph')->referencedEntities(); - $service->appointment_phones = $this->getPhones(FALSE, $field_phone_numbers_paragraphs); + $service->appointment_phones = $this->apptPhones; // These three fields are repeated here to support Facilty API V0 // for Covid-19 Vaccines. $service->referral_required = $this->getReferralRequired(); - $service->walk_ins_accepted = $this->getWalkInsAccepted(); - $service->online_scheduling_available = $this->getOnlineSchedulingAvailable(); - - $service->service_locations = $this->getServiceLocations(); + $service->walk_ins_accepted = $this->officeVisits; + $service->online_scheduling_available = $this->isOnlineSchedulingAvail; $payload = [ 'detailed_services' => [$service], @@ -234,25 +281,64 @@ protected function getPhones($from_facility = FALSE, array $phone_paragraphs = [ return $assembled_phones; } + /** + * Get the type of lead-in text, favoring the most specific. + * + * @param string $lead_in_type + * The lead-in text type selected. + * + * @return string + * The most specific lead-in text. + */ + protected function getAppointmentLeadInType(string $lead_in_type) { + + switch ($lead_in_type) { + + case 'customize_text': + $text = $lead_in_type; + break; + + case 'use_default_text': + $text = ($this->apptIntroType === 'customize_text') + ? $this->apptIntroType + : $lead_in_type; + break; + + case 'remove_text': + $text = ($this->apptIntroType === 'customize_text' + || $this->apptIntroType === 'use_default_text') + ? $this->apptIntroType + : $lead_in_type; + break; + + default: + $text = $lead_in_type; + + break; + } + + return $this->stringNullify($text); + } + /** * Gets the appropriate appointment intro text. * * @return string - * The mapped values of the field. True, False, not applicable, NULL. + * The mapped values of the field. */ protected function getAppointmentLeadin() { - $selection = $this->facilityService->get('field_hservice_appt_intro_select')->value; + $selection = $this->apptIntroType; switch ($selection) { - case 'custom_intro_text': - $text = $this->facilityService->get('field_hservice_appt_leadin')->value; + case 'customize_text': + $text = $this->apptIntroText; break; - case 'no_intro_text': + case 'remove_text': $text = NULL; break; - case 'default_intro_text': + case 'use_default_text': default: $markupField = $this->facilityService->get('field_hservices_lead_in_default'); $text = $markupField->getSetting('markup')['value'] ?? NULL; @@ -263,6 +349,95 @@ protected function getAppointmentLeadin() { return $this->stringNullify($text); } + /** + * Gets the online scheduling value. + * + * @param string $online_scheduling_avail + * The value set by the user about online scheduling availability. + * Options: yes, no. + */ + protected function getOnlineScheduling(string $online_scheduling_avail) { + $map = [ + // Value => Return. + // Lighthouse decided to receive these as strings since non-bool options. + 'no' => 'false', + 'yes' => 'true', + ]; + + return $map[$online_scheduling_avail] ?? NULL; + } + + /** + * Finds the best way to visit, among options chosen. + * + * @param string $office_visits + * The machine value of the Office visits option. + */ + protected function chooseBestOfficeVisitOption(string $office_visits) { + switch ($office_visits) { + + case 'yes_with_or_without_appointment': + $text = $office_visits; + break; + + case 'yes_walk_in_visits_only': + case 'yes_appointment_only': + $text = ($this->officeVisits === 'yes_with_or_without_appointment') + ? $this->officeVisits + : $office_visits; + break; + + case 'no': + $text = ($this->officeVisits === 'yes_with_or_without_appointment' + || $this->officeVisits === 'yes_walk_in_visits_only' + || $this->officeVisits === 'yes_appointment_only') + ? $this->officeVisits + : $office_visits; + break; + + default: + $text = $office_visits; + } + return $this->stringNullify($text); + } + + /** + * Sets all the service-level class properties. + * + * The purpose of setting the class properties from the Service + * location is to ensure that the non-default, most specific or most + * Veteran-friendly value of any of these fields is set at the Service + * level for the payload. + * + * @param \Drupal\paragraphs\Entity\Paragraph $service_location + * The service location. + */ + protected function setServiceLevelProperties(Paragraph $service_location) { + // Set the office visits policy to non-default for the service. + $field_office_visits = $service_location->get('field_office_visits')->value ?? ''; + $this->officeVisits = $this->chooseBestOfficeVisitOption($field_office_visits); + + // Set the appointment text values to the non-default for the service. + $field_appt_intro_text_type = $service_location->get('field_appt_intro_text_type')->value ?? ''; + $this->apptIntroType = $this->getAppointmentLeadInType($field_appt_intro_text_type); + $this->apptIntroText = (!empty($this->apptIntroText)) + ? $this->apptIntroText + : $this->stringNullify($service_location->get('field_appt_intro_text_custom')->value); + + // Get the phones from the first service location for appointments. + $field_appt_phone_type = $service_location->get('field_use_facility_phone_number')->value ?? ''; + $this->apptPhones = (!empty($this->apptPhones)) + ? $this->apptPhones + : $this->getPhones((bool) $field_appt_phone_type, $service_location->get('field_other_phone_numbers')->referencedEntities()); + + // Set the online scheduling value to yes for the service if so chosen. + $this->isOnlineSchedulingAvail = ($this->isOnlineSchedulingAvail !== 'false' + && !empty($this->isOnlineSchedulingAvail)) + ? $this->isOnlineSchedulingAvail + : $this->getOnlineScheduling($service_location->get('field_online_scheduling_avail')->value ?? ''); + + } + /** * Builds the array of service locations. * @@ -287,6 +462,8 @@ protected function getServiceLocations(): array { // We have some locations. foreach ($field_service_locations as $location) { $service_location = new \stdClass(); + $this->setServiceLevelProperties($location); + $field_service_location_address = $location->get('field_service_location_address')->referencedEntities(); $address_paragraph = reset($field_service_location_address); $service_location->office_name = $this->stringNullify($address_paragraph->get('field_clinic_name')->value); @@ -314,8 +491,9 @@ protected function getServiceLocations(): array { // They will eventually be part of the CMS service location, but are // currently sourced from the facility service node. $service_location->referral_required = $this->getReferralRequired(); - $service_location->walk_ins_accepted = $this->getWalkInsAccepted(); - $service_location->online_scheduling_available = $this->getOnlineSchedulingAvailable(); + $service_location->walk_ins_accepted = $location->get('field_office_visits')->value; + $service_location->online_scheduling_available = $this->getOnlineScheduling($location->get('field_online_scheduling_avail')->value ?? ''); + $service_location->virtual_support = $location->get('field_virtual_support')->value ?? ''; $service_locations[] = $service_location; } @@ -400,44 +578,6 @@ protected function getReferralRequired() { return $map[$raw] ?? NULL; } - /** - * Maps and returns the value of walk ins accepted. - * - * @return string - * The mapped values of the field. True, False, not applicable, NULL. - */ - protected function getWalkInsAccepted() { - $raw = $this->facilityService->get('field_walk_ins_accepted')->value; - $map = [ - // Value => Return. - // Lighthouse decided to receive these as strings since non-bool options. - '0' => 'false', - '1' => 'true', - 'not_applicable' => 'not applicable', - ]; - - return $map[$raw] ?? NULL; - } - - /** - * Maps and returns the value of online scheduling. - * - * @return string - * The mapped values of the field. True, False, not applicable, NULL. - */ - protected function getOnlineSchedulingAvailable() { - $raw = $this->facilityService->get('field_online_scheduling_availabl')->value; - $map = [ - // Value => Return. - // Lighthouse decided to receive these as strings since non-bool options. - '0' => 'false', - '1' => 'true', - 'not_applicable' => 'not applicable', - ]; - - return $map[$raw] ?? NULL; - } - /** * Load and set the facility node that this service belongs to. */ diff --git a/docroot/modules/custom/va_gov_vamc/src/EventSubscriber/VAMCEntityEventSubscriber.php b/docroot/modules/custom/va_gov_vamc/src/EventSubscriber/VAMCEntityEventSubscriber.php index d1b51c31a9..5225332876 100644 --- a/docroot/modules/custom/va_gov_vamc/src/EventSubscriber/VAMCEntityEventSubscriber.php +++ b/docroot/modules/custom/va_gov_vamc/src/EventSubscriber/VAMCEntityEventSubscriber.php @@ -14,7 +14,6 @@ use Drupal\core_event_dispatcher\Event\Entity\EntityViewAlterEvent; use Drupal\core_event_dispatcher\Event\Form\FormIdAlterEvent; use Drupal\node\NodeInterface; -use Drupal\paragraphs\ParagraphInterface; use Drupal\va_gov_notifications\Service\NotificationsManager; use Drupal\va_gov_user\Service\UserPermsService; use Drupal\va_gov_vamc\Service\ContentHardeningDeduper; @@ -200,8 +199,6 @@ public function alterAppendedSystemHealthServices(EntityViewAlterEvent $event):v public function entityPresave(EntityPresaveEvent $event): void { $entity = $event->getEntity(); $this->contentHardeningDeduper->removeDuplicate($entity); - $this->clearCustomAppointmentIntroText($entity); - $this->clearUnusedServiceLocationHours($entity); } /** diff --git a/docroot/modules/custom/va_gov_vamc/src/ServiceLocationMigration.php b/docroot/modules/custom/va_gov_vamc/src/ServiceLocationMigration.php new file mode 100644 index 0000000000..cc0e300bf3 --- /dev/null +++ b/docroot/modules/custom/va_gov_vamc/src/ServiceLocationMigration.php @@ -0,0 +1,226 @@ +loadMultiple([$nid_to_load]); + $nid = array_key_first($facility_service); + /** @var \Drupal\node\NodeInterface $facility_service_node */ + $facility_service_node = reset($facility_service); + $this->facilityService = $facility_service_node; + // Gather existing service locations. + $service_locations = $this->facilityService->get('field_service_location')->referencedEntities(); + if (empty($service_locations)) { + // There are no service locations, but we still need to put the old node + // data some place, so we need a new service location. + $new_service_location = Paragraph::create(['type' => 'field_service_location']); + $this->facilityService->field_service_location->appendItem($new_service_location); + $service_locations = [$new_service_location]; + $this->facilityService->field_service_location[] = $new_service_location; + $sandbox['service_locations_created_count'] = (isset($sandbox['service_locations_created_count'])) ? ++$sandbox['service_locations_created_count'] : 1; + } + else { + $sandbox['service_locations_updated_count'] = (isset($sandbox['service_locations_updated_count'])) ? ++$sandbox['service_locations_updated_count'] : 1; + } + + $this->migrateServicesLocationsFromFacility($service_locations); + $message = 'Automated move of Facility Health Service data into Service Locations.'; + // Must grab this before save, because after save it will always be true. + $is_latest_revision = $this->facilityService->isLatestRevision(); + if (!$is_latest_revision) { + // The Facility service we have is the default revision, but if it is + // not the latest, there is a forward draft revision we need to update + // too. Grab it now before saving, or we'll grab the one we just saved. + $forward_revision = get_node_at_latest_revision($nid); + } + save_node_revision($this->facilityService, $message, TRUE); + $status_msg = "Updated {$facility_service_node->getTitle()}. "; + + if (!$is_latest_revision) { + $this->facilityService = $forward_revision; + $this->migrateServicesLocationsFromFacility($service_locations); + // Append new log message to previous log message. + $original_message = $this->facilityService->getRevisionLogMessage(); + $message .= "- Draft revision carried forward."; + $message = "$original_message - $message"; + save_node_revision($this->facilityService, $message, TRUE); + $sandbox['forward_revisions_count'] = (isset($sandbox['forward_revisions_count'])) ? ++$sandbox['forward_revisions_count'] : 1; + $status_msg .= "And a forward revision. "; + } + + unset($sandbox['items_to_process'][_va_gov_stringifynid($nid)]); + + return $status_msg; + } + + /** + * Migrate into each of the service location fields. + * + * @param array $service_locations + * An array of service locations to migrate into. + */ + protected function migrateServicesLocationsFromFacility(array $service_locations): void { + foreach ($service_locations as $service_location) { + /** @var \Drupal\paragraphs\ParagraphInterface $service_location */ + $this->serviceLocation = $service_location; + $this->migrateAppointmentIntroType(); + $this->migrateAppointmentIntroText(); + $this->migrateAppointmentUseFacilityPhone(); + $this->migrateAppointmentPhoneNumbers(); + $this->migrateScheduleOnline(); + $this->migrateWalkinsAccepted(); + $this->serviceLocation->setNewRevision(TRUE); + } + } + + /** + * Move appointment type from the service node to the service location. + */ + protected function migrateAppointmentIntroType(): void { + // Moving from: field_hservice_appt_intro_select. + // Moving to: paragraph.service_location.field_appt_intro_text_type. + $intro_type = $this->facilityService->get('field_hservice_appt_intro_select')->value; + $type_map = [ + 'default_intro_text' => 'use_default_text', + 'custom_intro_text' => 'customize_text', + 'no_intro_text' => 'remove_text', + 'default' => 'use_default_text', + ]; + $new_value = script_libary_map_to_value($intro_type, $type_map); + $this->serviceLocation->set('field_appt_intro_text_type', $new_value); + } + + /** + * Move the appointment text from the service node to the service location. + */ + protected function migrateAppointmentIntroText(): void { + // Moving from: field_hservice_appt_leadin. + // Moving to: paragraph.service_location.field_appointment_intro_text. + $intro_text = $this->facilityService->get('field_hservice_appt_leadin')->value; + $this->serviceLocation->set('field_appt_intro_text_custom', $intro_text); + } + + /** + * Populates the service location based on the presence of apt phone. + */ + protected function migrateAppointmentUseFacilityPhone(): void { + // Based on the presence of data in field_phone_numbers_paragraph. + // To field_use_facility_phone_number. + $has_no_apt_phone = $this->facilityService->get('field_phone_numbers_paragraph')->isEmpty(); + // The assumption is that if there is no existing phone, then it should + // be the main number by default. There is a risk in that they wanted + // the main number and to provide a second, but there is nothing to + // base that decision on to make it cleaner. + $use_main_facility_phone = ($has_no_apt_phone) ? 1 : 0; + $this->serviceLocation->set('field_use_facility_phone_number', $use_main_facility_phone); + } + + /** + * Move the apt phone numbers properties. + */ + protected function migrateAppointmentPhoneNumbers(): void { + // Moving from: field_phone_numbers_paragraph. + // Moving to: field_other_phone_numbers (paragraphs). + $phone_paragraphs = $this->facilityService->get('field_phone_numbers_paragraph')->referencedEntities(); + + foreach ($phone_paragraphs as $phone) { + // Add each one to the service location. + // Need to move Type, Phone number, Extension number, and Label. + $data = [ + 'type' => 'phone_number', + 'field_phone_number_type' => $phone->get('field_phone_number_type')->value, + 'field_phone_number' => $phone->get('field_phone_number')->value, + 'field_phone_extension' => $phone->get('field_phone_extension')->value, + 'field_phone_label' => $phone->get('field_phone_label')->value, + ]; + $new_phone = Paragraph::create($data); + $this->serviceLocation->field_other_phone_numbers[] = $new_phone; + } + } + + /** + * Moves the online scheduling from Service to Service location. + */ + protected function migrateScheduleOnline(): void { + // Moving from: field_online_scheduling_availabl. + // Moving to: field_online_scheduling_avail. + $schedule_online_map = [ + // Schedule online => service location schedule online. + // 'Yes' => 'Yes'. + '1' => 'yes', + // 'No' => 'No'. + '0' => 'no', + // This is the do no harm, option defaulting to no choice. + // 'unspecified' => NULL. + '2' => NULL, + 'not_applicable' => NULL, + 'default' => NULL, + ]; + $lookup = $this->facilityService->get('field_online_scheduling_availabl')->value; + $new_value = script_libary_map_to_value($lookup, $schedule_online_map); + $this->serviceLocation->set('field_online_scheduling_avail', $new_value); + } + + /** + * Move and map the walkins accepted to office visits. + */ + protected function migrateWalkinsAccepted(): void { + // Moving from: node field_walk_ins_accepted. + // Moving to: field_office_visits. + $walkins_accepted_map = [ + // Walkins accepted => office visits. + // 'No' => 'yes by appointment only'. + '0' => 'yes_appointment_only', + // 'Yes' => 'Yes, with or without an appointment'. + '1' => 'yes_with_or_without_appointment', + // This is the do no harm, option defaulting to no choice. + // 'unspecified' => NULL. + '2' => NULL, + 'not_applicable' => NULL, + 'default' => NULL, + ]; + $lookup = $this->facilityService->get('field_walk_ins_accepted')->value; + $new_value = script_libary_map_to_value($lookup, $walkins_accepted_map); + $this->serviceLocation->set('field_office_visits', $new_value); + } + +} diff --git a/docroot/modules/custom/va_gov_vamc/va_gov_vamc.deploy.php b/docroot/modules/custom/va_gov_vamc/va_gov_vamc.deploy.php index 817c241fa7..8136f3747a 100644 --- a/docroot/modules/custom/va_gov_vamc/va_gov_vamc.deploy.php +++ b/docroot/modules/custom/va_gov_vamc/va_gov_vamc.deploy.php @@ -5,13 +5,15 @@ * Post deploy file VA Gov VAMC. */ +require_once __DIR__ . '/../../../../scripts/content/script-library.php'; + /** * Build top VA Police page and menu items for each system. */ function va_gov_vamc_deploy_build_va_police_9001(&$sandbox) { \Drupal::moduleHandler()->loadInclude('va_gov_vamc', 'install'); $build_bundle = 'vamc_system_va_police'; - _va_gov_vamc_sandbox_init($sandbox, '_va_gov_vamc_get_systems_to_process', [$build_bundle]); + script_library_sandbox_init($sandbox, '_va_gov_vamc_get_systems_to_process', [$build_bundle]); _va_gov_vamc_create_system_content_pages($sandbox, $build_bundle, 'draft'); - return _va_gov_vamc_sandbox_complete($sandbox, "Created @total {$build_bundle} nodes."); + return script_library_sandbox_complete($sandbox, "Created @total {$build_bundle} nodes."); } diff --git a/docroot/modules/custom/va_gov_vamc/va_gov_vamc.install b/docroot/modules/custom/va_gov_vamc/va_gov_vamc.install index e95d881a0e..ccac7cc239 100644 --- a/docroot/modules/custom/va_gov_vamc/va_gov_vamc.install +++ b/docroot/modules/custom/va_gov_vamc/va_gov_vamc.install @@ -6,71 +6,12 @@ */ use Drupal\codit_menu_tools\MenuInsert; -use Drupal\Component\Render\FormattableMarkup; -use Drupal\Core\Utility\UpdateException; use Drupal\field\Entity\FieldConfig; use Drupal\node\Entity\Node; use Drupal\va_gov_lovell\LovellOps; use Psr\Log\LogLevel; -/** - * Initializes the basic sandbox values. - * - * @param array $sandbox - * Standard drupal $sandbox var to keep state in hook_update_N. - * @param string $counter_callback - * A function name to call to get the items to process. Must return an array. - * @param array $callback_args - * A flat array of arguments to pass to the counter_callback. - * - * @throws Drupal\Core\Utility\UpdateException - * If the counter callback can not be found. - */ -function _va_gov_vamc_sandbox_init(array &$sandbox, $counter_callback, array $callback_args = []) { - if (empty($sandbox['total'])) { - // Sandbox has not been initiated. - if (is_callable($counter_callback)) { - $sandbox['items_to_process'] = call_user_func_array($counter_callback, $callback_args); - $sandbox['total'] = count($sandbox['items_to_process']); - $sandbox['current'] = 0; - } - else { - // Something went wrong could not use callback. Throw exception. - throw new UpdateException( - "Counter callback {$counter_callback} provided in _va_gov_vamc_sandbox_init() is not callable. Can not proceed." - ); - } - } -} - -/** - * Updates the counts and log if complete. - * - * @param array $sandbox - * Hook_update_n sandbox for keeping state. - * @param string $completed_message - * Message to log when completed. Can use '@completed' and '@total' as tokens. - * - * @return string - * String to be used as update hook messages. - */ -function _va_gov_vamc_sandbox_complete(array &$sandbox, $completed_message) { - // Determine when to stop batching. - $sandbox['current'] = ($sandbox['total'] - count($sandbox['items_to_process'])); - $sandbox['#finished'] = (empty($sandbox['total'])) ? 1 : ($sandbox['current'] / $sandbox['total']); - $vars = [ - '@completed' => $sandbox['current'], - '@total' => $sandbox['total'], - ]; - $message = t('Processing... @completed/@total.', $vars) . PHP_EOL; - // Log the all finished notice. - if ($sandbox['#finished'] === 1) { - Drupal::logger('va_gov_vamc')->log(LogLevel::INFO, $completed_message, $vars); - $logged_message = new FormattableMarkup($completed_message, $vars); - $message = t('Process completed:') . " {$logged_message}" . PHP_EOL; - } - return $message; -} +require_once __DIR__ . '/../../../../scripts/content/script-library.php'; /** * Calculates an array of system nids that need to have a top task page created. @@ -257,9 +198,9 @@ function va_gov_vamc_update_9003() { */ function va_gov_vamc_update_9004(&$sandbox) { $build_bundle = 'vamc_system_billing_insurance'; - _va_gov_vamc_sandbox_init($sandbox, '_va_gov_vamc_get_systems_to_process', [$build_bundle]); + script_library_sandbox_init($sandbox, '_va_gov_vamc_get_systems_to_process', [$build_bundle]); _va_gov_vamc_create_system_content_pages($sandbox, $build_bundle); - return _va_gov_vamc_sandbox_complete($sandbox, "Created @total {$build_bundle} nodes."); + return script_library_sandbox_complete($sandbox, "Created @total {$build_bundle} nodes."); } /** @@ -267,9 +208,9 @@ function va_gov_vamc_update_9004(&$sandbox) { */ function va_gov_vamc_update_9005(&$sandbox) { $build_bundle = 'vamc_system_medical_records_offi'; - _va_gov_vamc_sandbox_init($sandbox, '_va_gov_vamc_get_systems_to_process', [$build_bundle]); + script_library_sandbox_init($sandbox, '_va_gov_vamc_get_systems_to_process', [$build_bundle]); _va_gov_vamc_create_system_content_pages($sandbox, $build_bundle); - return _va_gov_vamc_sandbox_complete($sandbox, "Created @total {$build_bundle} nodes."); + return script_library_sandbox_complete($sandbox, "Created @total {$build_bundle} nodes."); } /** @@ -277,9 +218,9 @@ function va_gov_vamc_update_9005(&$sandbox) { */ function va_gov_vamc_update_9006(&$sandbox) { $build_bundle = 'vamc_system_register_for_care'; - _va_gov_vamc_sandbox_init($sandbox, '_va_gov_vamc_get_systems_to_process', [$build_bundle]); + script_library_sandbox_init($sandbox, '_va_gov_vamc_get_systems_to_process', [$build_bundle]); _va_gov_vamc_create_system_content_pages($sandbox, $build_bundle); - return _va_gov_vamc_sandbox_complete($sandbox, "Created @total {$build_bundle} nodes."); + return script_library_sandbox_complete($sandbox, "Created @total {$build_bundle} nodes."); } /** diff --git a/scripts/content/VACMS-15559-migrate-service-location-from-node-to-paragraph.php b/scripts/content/VACMS-15559-migrate-service-location-from-node-to-paragraph.php new file mode 100644 index 0000000000..a6a9e49e99 --- /dev/null +++ b/scripts/content/VACMS-15559-migrate-service-location-from-node-to-paragraph.php @@ -0,0 +1,54 @@ + 0]; + do { + print(va_gov_vamc_deploy_migrate_service_data_to_service_location($sandbox)); + } while ($sandbox['#finished'] < 1); + // Migration is done. + script_library_skip_post_api_data_check(FALSE); + return "Script run complete."; +} + +/** + * Migrate some facility service data to service location paragraphs. + */ +function va_gov_vamc_deploy_migrate_service_data_to_service_location(&$sandbox) { + $source_bundle = 'health_care_local_health_service'; + script_library_sandbox_init($sandbox, 'get_nids_of_type', [$source_bundle, FALSE]); + $migrator = new ServiceLocationMigration(); + $msg = $migrator->run($sandbox); + $new_service_locations = $sandbox['service_locations_created_count'] ?? 0; + $updated_service_locations = $sandbox['service_locations_updated_count'] ?? 0; + $forward_revisions = $sandbox['forward_revisions_count'] ?? 0; + return $msg . script_library_sandbox_complete($sandbox, "migrated @total {$source_bundle} nodes into {$new_service_locations} new service_location paragraphs, and {$updated_service_locations} updated. Also updated {$forward_revisions} forward revisions."); +} diff --git a/scripts/content/script-library.php b/scripts/content/script-library.php index ac00016965..e7d55cca42 100644 --- a/scripts/content/script-library.php +++ b/scripts/content/script-library.php @@ -388,7 +388,7 @@ function script_library_sandbox_complete(array &$sandbox, $completed_message) { * Whatever the value associated with the key. */ function script_libary_map_to_value(string|null $lookup, array $map, bool $strict = TRUE) : mixed { - if (empty($lookup)) { + if (empty($lookup) && strlen($lookup) === 0) { if (isset($map['default'])) { // There is a default set, so use it. return $map['default']; diff --git a/tests/cypress/integration/features/content_type/facilities/vamc/health_care_local_health_service.feature b/tests/cypress/integration/features/content_type/facilities/vamc/health_care_local_health_service.feature index d74139c8a6..9492a37fc6 100644 --- a/tests/cypress/integration/features/content_type/facilities/vamc/health_care_local_health_service.feature +++ b/tests/cypress/integration/features/content_type/facilities/vamc/health_care_local_health_service.feature @@ -22,9 +22,10 @@ Scenario: Log in and create VAMC Facility Health Service as a Lovell editor Then I select option "Cardiology at Lovell Federal health care - TRICARE" from dropdown with selector "#edit-field-regional-health-service" # Phone number AJAX test - Then I click the "Add new phone number" button + Then I click to expand "Appointments" + And I click the "Add new phone number" button And I wait "20" seconds - Then I should see an element with the selector "[data-drupal-selector*='edit-field-phone-numbers-paragraph-form-']" + Then I should see an element with the selector "[data-drupal-selector*='edit-field-service-location-0-subform-field-other-phone-numbers-wrapper']" # Lovell Federal umbrella test Then I scroll to position "bottom"