diff --git a/composer.json b/composer.json index 6dd88b1574..b1d0a4e4ea 100644 --- a/composer.json +++ b/composer.json @@ -229,7 +229,7 @@ "symfony/phpunit-bridge": "^5.1", "symfony/process": "^6.3", "symfony/routing": "^6.3", - "va-gov/content-build": "^0.0.3611", + "va-gov/content-build": "^0.0.3612", "vlucas/phpdotenv": "^5.6", "webflo/drupal-finder": "1.2.2", "webmozart/path-util": "^2.3", diff --git a/composer.lock b/composer.lock index 55ec0bf8ce..f670089395 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "d611d7b804b8f2f4f8ea07a4a3a3cd55", + "content-hash": "09f17de1694170b346fd43b8b022d5bf", "packages": [ { "name": "asm89/stack-cors", @@ -26644,16 +26644,16 @@ }, { "name": "va-gov/content-build", - "version": "v0.0.3611", + "version": "v0.0.3612", "source": { "type": "git", "url": "https://github.com/department-of-veterans-affairs/content-build.git", - "reference": "f44a4ade749e41ae1d98afd735e29ea7fcf619d4" + "reference": "895da1620d56d11772955b6aa2d872810a16771f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/department-of-veterans-affairs/content-build/zipball/f44a4ade749e41ae1d98afd735e29ea7fcf619d4", - "reference": "f44a4ade749e41ae1d98afd735e29ea7fcf619d4", + "url": "https://api.github.com/repos/department-of-veterans-affairs/content-build/zipball/895da1620d56d11772955b6aa2d872810a16771f", + "reference": "895da1620d56d11772955b6aa2d872810a16771f", "shasum": "" }, "type": "node-project", @@ -26680,9 +26680,9 @@ "description": "Front-end for VA.gov. This repository contains the code that generates the www.va.gov website. It contains a Metalsmith static site builder that uses a Drupal CMS for content. This file is here to publish releases to https://packagist.org/packages/va-gov/content-build, so that the CMS CI system can install it and update it using standard composer processes, and so that we can run tests across both systems. See https://github.com/department-of-veterans-affairs/va.gov-cms for the CMS repo, and stand by for more documentation.", "support": { "issues": "https://github.com/department-of-veterans-affairs/content-build/issues", - "source": "https://github.com/department-of-veterans-affairs/content-build/tree/v0.0.3611" + "source": "https://github.com/department-of-veterans-affairs/content-build/tree/v0.0.3612" }, - "time": "2024-10-07T22:27:44+00:00" + "time": "2024-10-09T21:01:11+00:00" }, { "name": "vlucas/phpdotenv", @@ -27673,6 +27673,7 @@ "drupal/fieldhelptext": 10, "drupal/flag": 10, "drupal/graphql_menu": 15, + "drupal/html_tag_usage": 10, "drupal/image_style_warmer": 5, "drupal/jsonapi_resources": 10, "drupal/limited_field_widgets": 15, @@ -27692,13 +27693,12 @@ "drupal/simplesamlphp_auth": 5, "drupal/styleguide": 10, "drupal/user_history": 15, - "drupal/viewfield": 10, - "drupal/html_tag_usage": 10 + "drupal/viewfield": 10 }, "prefer-stable": true, "prefer-lowest": false, - "platform": [], - "platform-dev": [], + "platform": {}, + "platform-dev": {}, "platform-overrides": { "php": "8.1" }, diff --git a/config/sync/core.entity_form_display.node.health_care_local_facility.default.yml b/config/sync/core.entity_form_display.node.health_care_local_facility.default.yml index 28204b937b..db9fb178fa 100644 --- a/config/sync/core.entity_form_display.node.health_care_local_facility.default.yml +++ b/config/sync/core.entity_form_display.node.health_care_local_facility.default.yml @@ -50,7 +50,7 @@ third_party_settings: label: 'Section settings' region: content parent_name: '' - weight: 9 + weight: 10 format_type: details_sidebar format_settings: classes: '' @@ -66,7 +66,7 @@ third_party_settings: label: 'Editorial Workflow' region: content parent_name: '' - weight: 10 + weight: 11 format_type: fieldset format_settings: classes: '' @@ -79,7 +79,7 @@ third_party_settings: label: '"Prepare for your visit"' region: content parent_name: '' - weight: 7 + weight: 8 format_type: details format_settings: classes: '' @@ -94,7 +94,7 @@ third_party_settings: label: 'VAMC system' region: content parent_name: '' - weight: 3 + weight: 4 format_type: fieldset format_settings: classes: '' @@ -108,7 +108,7 @@ third_party_settings: label: 'Title and summary' region: content parent_name: '' - weight: 4 + weight: 5 format_type: fieldset format_settings: classes: '' @@ -120,7 +120,7 @@ third_party_settings: label: 'Social Media' region: content parent_name: '' - weight: 6 + weight: 7 format_type: fieldset format_settings: classes: '' @@ -134,7 +134,7 @@ third_party_settings: label: 'Operating status' region: content parent_name: '' - weight: 2 + weight: 3 format_type: fieldset format_settings: classes: '' @@ -149,7 +149,7 @@ third_party_settings: label: 'Meta Tags' region: content parent_name: '' - weight: 5 + weight: 6 format_type: fieldset format_settings: classes: '' @@ -159,6 +159,7 @@ third_party_settings: group_locations_and_contact_info: children: - group_facility_data_from_vast + - field_mental_health_phone label: 'Locations and contact information' region: content parent_name: '' @@ -232,7 +233,7 @@ content: third_party_settings: { } field_administration: type: options_select - weight: 13 + weight: 14 region: content settings: { } third_party_settings: { } @@ -288,7 +289,7 @@ content: third_party_settings: { } field_last_saved_by_an_editor: type: datetime_timestamp - weight: 11 + weight: 12 region: content settings: { } third_party_settings: { } @@ -306,7 +307,7 @@ content: third_party_settings: { } field_main_location: type: boolean_checkbox - weight: 21 + weight: 22 region: content settings: display_label: true @@ -318,6 +319,13 @@ content: settings: media_types: { } third_party_settings: { } + field_mental_health_phone: + type: telephone_default + weight: 21 + region: content + settings: + placeholder: '' + third_party_settings: { } field_mobile: type: boolean_checkbox weight: 26 @@ -410,7 +418,7 @@ content: third_party_settings: { } path: type: path - weight: 8 + weight: 9 region: content settings: { } third_party_settings: { } @@ -432,7 +440,6 @@ content: hidden: created: true field_local_health_care_service_: true - field_mental_health_phone: true field_meta_tags: true field_supplemental_status: true field_supplemental_status_more_i: true diff --git a/config/sync/core.entity_form_display.node.health_care_local_facility.inline_entity_form.yml b/config/sync/core.entity_form_display.node.health_care_local_facility.inline_entity_form.yml index 0a1185a15f..192365774c 100644 --- a/config/sync/core.entity_form_display.node.health_care_local_facility.inline_entity_form.yml +++ b/config/sync/core.entity_form_display.node.health_care_local_facility.inline_entity_form.yml @@ -31,6 +31,8 @@ dependencies: - node.type.health_care_local_facility module: - field_group + - ief_table_view_mode + - telephone - textfield_counter third_party_settings: field_group: @@ -40,7 +42,7 @@ third_party_settings: label: 'Section settings' region: hidden parent_name: '' - weight: 25 + weight: 31 format_type: details_sidebar format_settings: classes: '' @@ -50,13 +52,13 @@ third_party_settings: weight: -10 group_editorial_workflow: children: - - revision_log - moderation_state + - revision_log - flag label: 'Editorial Workflow' region: hidden parent_name: '' - weight: 27 + weight: 32 format_type: fieldset format_settings: classes: '' @@ -69,7 +71,7 @@ third_party_settings: label: 'Facility Locator' region: hidden parent_name: '' - weight: 23 + weight: 29 format_type: fieldset format_settings: classes: '' @@ -83,7 +85,7 @@ third_party_settings: label: 'Location services' region: hidden parent_name: '' - weight: 24 + weight: 30 format_type: details format_settings: classes: '' @@ -98,7 +100,7 @@ third_party_settings: label: Region region: hidden parent_name: '' - weight: 22 + weight: 28 format_type: fieldset format_settings: classes: '' @@ -110,6 +112,13 @@ targetEntityType: node bundle: health_care_local_facility mode: inline_entity_form content: + field_mental_health_phone: + type: telephone_default + weight: 22 + region: content + settings: + placeholder: '' + third_party_settings: { } field_operating_status_facility: type: options_select weight: 1 @@ -126,9 +135,29 @@ content: maxlength: 300 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_telephone: + type: inline_entity_form_complex_table_view_mode + weight: 3 + region: content + settings: + form_mode: default + override_labels: false + label_singular: '' + label_plural: '' + allow_new: true + allow_existing: false + match_operator: CONTAINS + allow_duplicate: false + collapsible: false + collapsed: false + revision: false + removed_reference: optional + allow_system_delete: false + third_party_settings: { } title: type: string_textfield weight: 0 @@ -151,7 +180,6 @@ hidden: field_location_services: true field_main_location: true field_media: true - field_mental_health_phone: true field_meta_tags: true field_mobile: true field_office_hours: true @@ -159,7 +187,6 @@ hidden: field_region_page: true field_supplemental_status: true field_supplemental_status_more_i: true - field_telephone: true field_timezone: true flag: true langcode: true diff --git a/config/sync/core.entity_form_display.node.person_profile.default.yml b/config/sync/core.entity_form_display.node.person_profile.default.yml index 186d053e10..a7215a2a60 100644 --- a/config/sync/core.entity_form_display.node.person_profile.default.yml +++ b/config/sync/core.entity_form_display.node.person_profile.default.yml @@ -29,6 +29,7 @@ dependencies: - media_library - paragraphs - path + - telephone - text - textfield_counter third_party_settings: @@ -54,7 +55,7 @@ third_party_settings: label: 'Editorial workflow' region: content parent_name: '' - weight: 9 + weight: 10 format_type: fieldset format_settings: classes: '' @@ -80,6 +81,7 @@ third_party_settings: group_contact_info: children: - field_email_address + - field_phone_number - field_telephone label: 'Contact info' region: content @@ -148,7 +150,7 @@ content: third_party_settings: { } field_body: type: text_textarea - weight: 9 + weight: 13 region: content settings: rows: 5 @@ -156,14 +158,14 @@ content: third_party_settings: { } field_complete_biography: type: file_generic - weight: 11 + weight: 14 region: content settings: progress_indicator: throbber third_party_settings: { } field_complete_biography_create: type: boolean_checkbox - weight: 7 + weight: 11 region: content settings: display_label: true @@ -186,7 +188,7 @@ content: third_party_settings: { } field_intro_text: type: string_textarea_with_counter - weight: 8 + weight: 12 region: content settings: rows: 5 @@ -208,7 +210,7 @@ content: third_party_settings: { } field_last_saved_by_an_editor: type: datetime_timestamp - weight: 10 + weight: 11 region: content settings: { } third_party_settings: { } @@ -233,6 +235,13 @@ content: region: content settings: { } third_party_settings: { } + field_phone_number: + type: telephone_default + weight: 6 + region: content + settings: + placeholder: '' + third_party_settings: { } field_photo_allow_hires_download: type: boolean_checkbox weight: 7 @@ -250,7 +259,7 @@ content: third_party_settings: { } field_telephone: type: paragraphs - weight: 6 + weight: 7 region: content settings: title: Paragraph @@ -294,7 +303,6 @@ content: hidden: created: true field_meta_tags: true - field_phone_number: true langcode: true promote: true status: true diff --git a/config/sync/core.entity_form_display.node.person_profile.inline_entity_form.yml b/config/sync/core.entity_form_display.node.person_profile.inline_entity_form.yml index 8021f8e269..4920f18e2b 100644 --- a/config/sync/core.entity_form_display.node.person_profile.inline_entity_form.yml +++ b/config/sync/core.entity_form_display.node.person_profile.inline_entity_form.yml @@ -25,6 +25,7 @@ dependencies: module: - field_group - media_library + - paragraphs - telephone - text third_party_settings: @@ -79,6 +80,7 @@ third_party_settings: children: - field_email_address - field_phone_number + - field_telephone label: 'Contact info' region: content parent_name: '' @@ -178,7 +180,8 @@ content: type: media_library_widget weight: 4 region: content - settings: { } + settings: + media_types: { } third_party_settings: { } field_name_first: type: string_textfield @@ -220,9 +223,27 @@ content: size: 60 placeholder: '' third_party_settings: { } + field_telephone: + type: paragraphs + weight: 8 + region: content + settings: + title: Paragraph + title_plural: Paragraphs + edit_mode: open + closed_mode: summary + autocollapse: none + closed_mode_threshold: 0 + add_mode: dropdown + form_display_mode: default + default_paragraph_type: '' + features: + collapse_edit_all: collapse_edit_all + duplicate: duplicate + third_party_settings: { } moderation_state: type: string_textfield - weight: 0 + weight: 10 region: content settings: size: 60 @@ -242,7 +263,6 @@ hidden: field_complete_biography_create: true field_last_saved_by_an_editor: true field_meta_tags: true - field_telephone: true langcode: true path: true promote: true diff --git a/config/sync/core.entity_form_display.node.vamc_system_billing_insurance.default.yml b/config/sync/core.entity_form_display.node.vamc_system_billing_insurance.default.yml index 51a35af72d..36c3a150ea 100644 --- a/config/sync/core.entity_form_display.node.vamc_system_billing_insurance.default.yml +++ b/config/sync/core.entity_form_display.node.vamc_system_billing_insurance.default.yml @@ -26,6 +26,7 @@ dependencies: - field_group - office_hours - paragraphs + - telephone - viewfield third_party_settings: field_group: @@ -104,6 +105,7 @@ third_party_settings: attributes: '' group_inquiries_about_copay: children: + - field_phone_number - field_telephone - field_office_hours label: 'For inquiries by phone about copay balance' @@ -174,7 +176,7 @@ content: third_party_settings: { } field_cc_bottom_of_page_content: type: entity_field_fetch_widget - weight: 14 + weight: 9 region: content settings: show_field_label: 0 @@ -183,7 +185,7 @@ content: third_party_settings: { } field_cc_related_links: type: entity_field_fetch_widget - weight: 15 + weight: 10 region: content settings: show_field_label: '1' @@ -192,7 +194,7 @@ content: third_party_settings: { } field_cc_top_of_page_content: type: entity_field_fetch_widget - weight: 14 + weight: 9 region: content settings: show_field_label: 0 @@ -238,6 +240,13 @@ content: settings: collapsed: false third_party_settings: { } + field_phone_number: + type: telephone_default + weight: 8 + region: content + settings: + placeholder: '' + third_party_settings: { } field_telephone: type: paragraphs weight: 9 @@ -279,7 +288,6 @@ content: third_party_settings: { } hidden: created: true - field_phone_number: true field_service_name_and_descripti: true langcode: true path: true diff --git a/config/sync/core.entity_form_display.taxonomy_term.va_benefits_taxonomy.default.yml b/config/sync/core.entity_form_display.taxonomy_term.va_benefits_taxonomy.default.yml index 1709f61bb8..688d269b3e 100644 --- a/config/sync/core.entity_form_display.taxonomy_term.va_benefits_taxonomy.default.yml +++ b/config/sync/core.entity_form_display.taxonomy_term.va_benefits_taxonomy.default.yml @@ -3,6 +3,7 @@ langcode: en status: true dependencies: config: + - field.field.taxonomy_term.va_benefits_taxonomy.field_application_process - field.field.taxonomy_term.va_benefits_taxonomy.field_enforce_unique_id - field.field.taxonomy_term.va_benefits_taxonomy.field_enforce_unique_value - field.field.taxonomy_term.va_benefits_taxonomy.field_va_benefit_after_applying @@ -108,6 +109,7 @@ third_party_settings: children: - field_va_benefit_app_form - field_va_benefit_app_preparation + - field_application_process - field_va_benefit_app_help label: 'How to apply' region: content @@ -173,6 +175,14 @@ targetEntityType: taxonomy_term bundle: va_benefits_taxonomy mode: default content: + field_application_process: + type: text_textarea + weight: 8 + region: content + settings: + rows: 5 + placeholder: '' + third_party_settings: { } field_enforce_unique_id: type: allow_only_one_widget weight: 5 @@ -206,6 +216,7 @@ content: maxlength: 60 counter_position: after js_prevent_submit: false + count_only_mode: false count_html_characters: false textcount_status_message: '@remaining_count characters remaining' third_party_settings: { } @@ -225,7 +236,7 @@ content: add_another: 'Add another form' field_va_benefit_app_help: type: text_textarea - weight: 8 + weight: 9 region: content settings: rows: 5 @@ -255,6 +266,7 @@ content: maxlength: 500 counter_position: after js_prevent_submit: false + count_only_mode: false count_html_characters: false textcount_status_message: '@remaining_count characters remaining' third_party_settings: @@ -347,6 +359,7 @@ content: maxlength: 300 counter_position: after js_prevent_submit: false + count_only_mode: false count_html_characters: false textcount_status_message: '@remaining_count characters remaining' third_party_settings: { } @@ -375,6 +388,7 @@ content: maxlength: 255 counter_position: after js_prevent_submit: false + count_only_mode: false count_html_characters: false textcount_status_message: '@remaining_count characters remaining' third_party_settings: { } diff --git a/config/sync/core.entity_view_display.node.health_care_local_facility.default.yml b/config/sync/core.entity_view_display.node.health_care_local_facility.default.yml index 673bf63284..7882b68f4f 100644 --- a/config/sync/core.entity_view_display.node.health_care_local_facility.default.yml +++ b/config/sync/core.entity_view_display.node.health_care_local_facility.default.yml @@ -111,6 +111,7 @@ third_party_settings: - field_address - field_phone_number - field_mobile + - field_mental_health_phone - field_telephone - field_office_hours - field_timezone @@ -201,6 +202,14 @@ content: third_party_settings: { } weight: 0 region: content + field_mental_health_phone: + type: telephone_link + label: inline + settings: + title: '' + third_party_settings: { } + weight: 19 + region: content field_mobile: type: boolean label: inline @@ -303,7 +312,6 @@ hidden: field_last_saved_by_an_editor: true field_local_health_care_service_: true field_main_location: true - field_mental_health_phone: true field_meta_tags: true field_region_page: true field_supplemental_status: true diff --git a/config/sync/core.entity_view_display.node.vamc_system_billing_insurance.default.yml b/config/sync/core.entity_view_display.node.vamc_system_billing_insurance.default.yml index 3414250df9..823bf69b33 100644 --- a/config/sync/core.entity_view_display.node.vamc_system_billing_insurance.default.yml +++ b/config/sync/core.entity_view_display.node.vamc_system_billing_insurance.default.yml @@ -24,6 +24,7 @@ dependencies: - entity_reference_revisions - field_group - office_hours + - telephone - user - viewfield third_party_settings: @@ -69,6 +70,7 @@ third_party_settings: attributes: '' group_inquiries_about_copay: children: + - field_phone_number - field_telephone - field_office_hours label: 'For inquiries by phone about copay balance' @@ -184,7 +186,15 @@ content: schema: enabled: false third_party_settings: { } - weight: 10 + weight: 2 + region: content + field_phone_number: + type: telephone_link + label: above + settings: + title: '' + third_party_settings: { } + weight: 0 region: content field_telephone: type: entity_reference_revisions_entity_view @@ -193,7 +203,7 @@ content: view_mode: default link: '' third_party_settings: { } - weight: 9 + weight: 1 region: content flag_email_node: settings: { } @@ -217,7 +227,6 @@ hidden: field_enforce_unique_combo: true field_last_saved_by_an_editor: true field_office: true - field_phone_number: true field_service_name_and_descripti: true langcode: true search_api_excerpt: true diff --git a/config/sync/core.entity_view_display.taxonomy_term.va_benefits_taxonomy.default.yml b/config/sync/core.entity_view_display.taxonomy_term.va_benefits_taxonomy.default.yml index b5b126b152..5ed5e347b5 100644 --- a/config/sync/core.entity_view_display.taxonomy_term.va_benefits_taxonomy.default.yml +++ b/config/sync/core.entity_view_display.taxonomy_term.va_benefits_taxonomy.default.yml @@ -3,6 +3,7 @@ langcode: en status: true dependencies: config: + - field.field.taxonomy_term.va_benefits_taxonomy.field_application_process - field.field.taxonomy_term.va_benefits_taxonomy.field_enforce_unique_id - field.field.taxonomy_term.va_benefits_taxonomy.field_enforce_unique_value - field.field.taxonomy_term.va_benefits_taxonomy.field_va_benefit_after_applying @@ -81,6 +82,7 @@ third_party_settings: children: - field_va_benefit_app_form - field_va_benefit_app_preparation + - field_application_process - field_va_benefit_app_help label: 'How to apply' parent_name: '' @@ -142,6 +144,13 @@ content: third_party_settings: { } weight: 8 region: content + field_application_process: + type: text_default + label: above + settings: { } + third_party_settings: { } + weight: 11 + region: content field_enforce_unique_id: type: allow_only_one label: hidden @@ -184,7 +193,7 @@ content: label: above settings: { } third_party_settings: { } - weight: 11 + weight: 12 region: content field_va_benefit_app_preparation: type: text_default @@ -276,5 +285,6 @@ content: weight: 11 region: content hidden: + breadcrumbs: true langcode: true search_api_excerpt: true diff --git a/config/sync/feature_toggle.features.yml b/config/sync/feature_toggle.features.yml index f8bedb77c0..26292b8adc 100644 --- a/config/sync/feature_toggle.features.yml +++ b/config/sync/feature_toggle.features.yml @@ -59,3 +59,4 @@ features: feature_next_build_content_vha_facility_nonclinical_service: FEATURE_NEXT_BUILD_CONTENT_VHA_FACILITY_NONCLINICAL_SERVICE feature_next_build_content_vet_center_mobile_vet_center: FEATURE_NEXT_BUILD_CONTENT_VET_CENTER_MOBILE_VET_CENTER feature_next_build_content_vet_center_outstation: FEATURE_NEXT_BUILD_CONTENT_VET_CENTER_OUTSTATION + feature_telephone_migration_v1: FEATURE_TELEPHONE_MIGRATION_V1 diff --git a/config/sync/field.field.taxonomy_term.va_benefits_taxonomy.field_application_process.yml b/config/sync/field.field.taxonomy_term.va_benefits_taxonomy.field_application_process.yml new file mode 100644 index 0000000000..84043bc412 --- /dev/null +++ b/config/sync/field.field.taxonomy_term.va_benefits_taxonomy.field_application_process.yml @@ -0,0 +1,28 @@ +uuid: d6af1a31-8bc6-49c1-89c4-72ecf28bd423 +langcode: en +status: true +dependencies: + config: + - field.storage.taxonomy_term.field_application_process + - filter.format.rich_text_limited + - taxonomy.vocabulary.va_benefits_taxonomy + module: + - text + - tmgmt_content +third_party_settings: + tmgmt_content: + excluded: false +id: taxonomy_term.va_benefits_taxonomy.field_application_process +field_name: field_application_process +entity_type: taxonomy_term +bundle: va_benefits_taxonomy +label: 'Application process' +description: 'Briefly describe the benefit application process, including which form(s) are required or optional.' +required: false +translatable: true +default_value: { } +default_value_callback: '' +settings: + allowed_formats: + - rich_text_limited +field_type: text_long diff --git a/config/sync/field.storage.taxonomy_term.field_application_process.yml b/config/sync/field.storage.taxonomy_term.field_application_process.yml new file mode 100644 index 0000000000..19133b02a4 --- /dev/null +++ b/config/sync/field.storage.taxonomy_term.field_application_process.yml @@ -0,0 +1,19 @@ +uuid: d1ac49a1-a5b9-453c-ab7d-d638335da6f4 +langcode: en +status: true +dependencies: + module: + - taxonomy + - text +id: taxonomy_term.field_application_process +field_name: field_application_process +entity_type: taxonomy_term +type: text_long +settings: { } +module: text +locked: false +cardinality: 1 +translatable: true +indexes: { } +persist_with_no_fields: false +custom_storage: false diff --git a/config/sync/views.view.rich_text_field_audit.yml b/config/sync/views.view.rich_text_field_audit.yml index dc9eef7cbd..37aaec00df 100644 --- a/config/sync/views.view.rich_text_field_audit.yml +++ b/config/sync/views.view.rich_text_field_audit.yml @@ -4761,6 +4761,1409 @@ display: - 'config:field.storage.paragraph.field_phone_extension' - 'config:field.storage.paragraph.field_phone_number' - workbench_access_view + missing_phone_numbers: + id: missing_phone_numbers + display_title: 'Content Audit - Missing Phone numbers' + display_plugin: page + position: 3 + display_options: + title: 'Content Audit - Phone Numbers' + 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 + nid: + id: nid + table: node_field_data + field: nid + relationship: none + group_type: group + admin_label: '' + entity_type: node + entity_field: nid + plugin_id: field + label: ID + exclude: false + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: true + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + click_sort_column: value + type: number_integer + settings: + thousand_separator: '' + prefix_suffix: true + group_column: value + group_columns: { } + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false + edit_node_1: + id: edit_node_1 + table: node_field_revision + field: edit_node + relationship: none + group_type: group + admin_label: '' + entity_type: node + plugin_id: entity_link_edit + label: '' + exclude: false + alter: + alter_text: true + text: 'Edit' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: false + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: 'Edit' + hide_empty: false + empty_zero: false + hide_alter_empty: true + text: edit + output_url_as_text: true + absolute: 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: false + group_column: target_id + group_columns: { } + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false + changed: + id: changed + table: node_field_data + field: changed + relationship: none + group_type: group + admin_label: '' + entity_type: node + entity_field: changed + plugin_id: field + label: Updated + exclude: false + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: true + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + click_sort_column: value + type: timestamp + settings: + date_format: short + custom_date_format: '' + timezone: '' + tooltip: + date_format: '' + custom_date_format: '' + time_diff: + enabled: false + future_format: '@interval hence' + past_format: '@interval ago' + granularity: 2 + refresh: 60 + group_column: value + group_columns: { } + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false + moderation_state: + id: moderation_state + 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 + 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 + field_phone_number: + id: field_phone_number + table: node__field_phone_number + field: field_phone_number + relationship: none + group_type: group + admin_label: '' + plugin_id: field + label: 'Direct line' + 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: telephone_link + settings: + title: '' + 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_mental_health_phone: + id: field_mental_health_phone + table: node__field_mental_health_phone + field: field_mental_health_phone + relationship: none + group_type: group + admin_label: '' + plugin_id: field + label: 'Mental Health Phone (old)' + 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: telephone_link + settings: + title: '' + 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_va_health_connect_phone: + id: field_va_health_connect_phone + table: node__field_va_health_connect_phone + field: field_va_health_connect_phone + relationship: none + group_type: group + admin_label: '' + plugin_id: field + label: 'VA Health Connect 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: telephone_link + settings: + title: '' + 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_extension: + id: field_phone_extension + table: paragraph__field_phone_extension + field: field_phone_extension + relationship: field_telephone + group_type: group + admin_label: '' + plugin_id: field + label: '' + exclude: true + alter: + alter_text: true + text: ', ext. {{ field_phone_extension }} ' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: false + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + click_sort_column: value + type: string + settings: { } + 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_number_1: + id: field_phone_number_1 + table: paragraph__field_phone_number + field: field_phone_number + relationship: field_telephone + group_type: group + admin_label: '' + plugin_id: field + label: 'Staff profile, Mental health (VAMC facility), or Billing and insurance phone' + exclude: false + alter: + alter_text: true + text: '{{ field_phone_number_1 }}{{ field_phone_extension }}' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: true + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + click_sort_column: value + type: string + settings: { } + 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 + filters: + title: + id: title + table: node_field_data + field: title + relationship: none + group_type: group + admin_label: '' + entity_type: node + entity_field: title + plugin_id: string + operator: contains + value: '' + group: 1 + exposed: true + expose: + operator_id: title_op + label: 'Title 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_vet_center: '0' + content_editor: '0' + content_reviewer: '0' + content_publisher: '0' + content_admin: '0' + redirect_administrator: '0' + admnistrator_users: '0' + administrator: '0' + placeholder: '' + is_grouped: false + group_info: + label: '' + description: '' + identifier: '' + optional: true + widget: select + multiple: false + remember: false + default_group: All + default_group_multiple: { } + group_items: { } + type: + id: type + table: node_field_data + field: type + relationship: none + group_type: group + admin_label: '' + entity_type: node + entity_field: type + plugin_id: bundle + operator: in + value: + page: page + centralized_content: centralized_content + basic_landing_page: basic_landing_page + nca_facility: nca_facility + press_release: press_release + press_releases_listing: press_releases_listing + support_resources_detail_page: support_resources_detail_page + person_profile: person_profile + step_by_step: step_by_step + support_service: support_service + health_care_region_detail_page: health_care_region_detail_page + health_care_local_facility: health_care_local_facility + health_care_local_health_service: health_care_local_health_service + vha_facility_nonclinical_service: vha_facility_nonclinical_service + health_care_region_page: health_care_region_page + full_width_banner_alert: full_width_banner_alert + vamc_system_billing_insurance: vamc_system_billing_insurance + regional_health_care_service_des: regional_health_care_service_des + vamc_system_medical_records_offi: vamc_system_medical_records_offi + vamc_operating_status_and_alerts: vamc_operating_status_and_alerts + vamc_system_policies_page: vamc_system_policies_page + vamc_system_register_for_care: vamc_system_register_for_care + vba_facility: vba_facility + vba_facility_service: vba_facility_service + vet_center: vet_center + vet_center_cap: vet_center_cap + vet_center_facility_health_servi: vet_center_facility_health_servi + vet_center_locations_list: vet_center_locations_list + vet_center_mobile_vet_center: vet_center_mobile_vet_center + vet_center_outstation: vet_center_outstation + group: 1 + exposed: true + expose: + operator_id: type_op + label: 'Content type' + description: '' + use_operator: false + operator: type_op + operator_limit_selection: false + operator_list: { } + identifier: type + required: false + remember: false + multiple: false + remember_roles: + authenticated: authenticated + anonymous: '0' + content_api_consumer: '0' + content_creator_benefits_hubs: '0' + content_creator_resources_and_support: '0' + office_content_creator: '0' + vamc_content_creator: '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' + translation_manager: '0' + next_js: '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_op + label: 'Moderation state' + description: '' + use_operator: false + operator: moderation_state_multiple_workflow_filter_op + operator_limit_selection: false + operator_list: { } + identifier: moderation_state + 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_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' + translation_manager: '0' + next_js: '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 + workbench_access_section__section: + id: workbench_access_section__section + table: node + field: workbench_access_section__section + relationship: none + group_type: group + admin_label: '' + entity_type: node + plugin_id: workbench_access_section + operator: in + value: { } + group: 1 + exposed: true + expose: + operator_id: workbench_access_section__section_op + label: Section + description: '' + use_operator: false + operator: workbench_access_section__section_op + operator_limit_selection: false + operator_list: { } + identifier: workbench_access_section__section + 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_vet_center: '0' + content_editor: '0' + content_reviewer: '0' + content_publisher: '0' + content_admin: '0' + redirect_administrator: '0' + admnistrator_users: '0' + administrator: '0' + reduce: 1 + 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 + section_filter: + show_hierarchy: 1 + combine: + id: combine + table: views + field: combine + relationship: none + group_type: group + admin_label: '' + plugin_id: combine + operator: contains + value: '' + group: 1 + exposed: true + expose: + operator_id: combine_op + label: 'Phone Number contains' + description: '' + use_operator: false + operator: combine_op + operator_limit_selection: false + operator_list: { } + identifier: phone + 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_vet_center: '0' + content_editor: '0' + content_reviewer: '0' + content_publisher: '0' + content_admin: '0' + redirect_administrator: '0' + admnistrator_users: '0' + administrator: '0' + placeholder: '' + is_grouped: false + group_info: + label: '' + description: '' + identifier: '' + optional: true + widget: select + multiple: false + remember: false + default_group: All + default_group_multiple: { } + group_items: { } + fields: + field_phone_number: field_phone_number + field_mental_health_phone: field_mental_health_phone + field_va_health_connect_phone: field_va_health_connect_phone + field_phone_number_value_1: + id: field_phone_number_value_1 + table: paragraph__field_phone_number + field: field_phone_number_value + relationship: field_telephone + group_type: group + admin_label: '' + plugin_id: string + operator: empty + value: '' + group: 1 + exposed: true + expose: + operator_id: field_phone_number_value_1_op + label: 'Phone number (field_phone_number)' + description: '' + use_operator: true + operator: field_phone_number_value_1_op + operator_limit_selection: true + operator_list: + empty: empty + 'not empty': 'not empty' + identifier: field_phone_number_value_1 + 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' + rates_editor: '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: { } + field_phone_number_value: + id: field_phone_number_value + table: node__field_phone_number + field: field_phone_number_value + relationship: none + group_type: group + admin_label: '' + plugin_id: string + operator: '=' + value: '' + group: 1 + exposed: true + expose: + operator_id: field_phone_number_value_op + label: 'Direct line (field_phone_number)' + description: null + use_operator: false + operator: field_phone_number_value_op + operator_limit_selection: false + operator_list: { } + identifier: field_phone_number_value + required: false + remember: false + multiple: false + remember_roles: + authenticated: authenticated + placeholder: null + is_grouped: true + group_info: + label: 'Direct line (field_phone_number)' + description: '' + identifier: field_phone_number_value + optional: true + widget: select + multiple: false + remember: false + default_group: All + default_group_multiple: { } + group_items: + 1: + title: 'Is empty (NULL)' + operator: empty + value: '' + 2: + title: 'Is not empty (NOT NULL)' + operator: 'not empty' + value: '' + field_mental_health_phone_value: + id: field_mental_health_phone_value + table: node__field_mental_health_phone + field: field_mental_health_phone_value + relationship: none + group_type: group + admin_label: '' + plugin_id: string + operator: empty + value: '' + group: 1 + exposed: true + expose: + operator_id: field_mental_health_phone_value_op + label: 'Mental health phone number (field_mental_health_phone)' + description: '' + use_operator: true + operator: field_mental_health_phone_value_op + operator_limit_selection: true + operator_list: + empty: empty + 'not empty': 'not empty' + identifier: field_mental_health_phone_value + 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' + rates_editor: '0' + placeholder: '' + is_grouped: true + group_info: + label: 'Mental health phone number (field_mental_health_phone)' + description: '' + identifier: field_mental_health_phone_value + optional: true + widget: select + multiple: false + remember: false + default_group: All + default_group_multiple: { } + group_items: + 1: + title: 'Is empty (NULL)' + operator: empty + value: '' + 2: + title: 'Is not empty (NOT NULL)' + operator: 'not empty' + value: '' + filter_groups: + operator: AND + groups: + 1: AND + style: + type: table + options: + grouping: { } + row_class: '' + default_row_class: true + columns: + title: title + nid: nid + edit_node_1: edit_node_1 + type: type + changed: changed + moderation_state: moderation_state + field_administration: field_administration + field_phone_number: field_phone_number + field_mental_health_phone: field_mental_health_phone + field_va_health_connect_phone: field_va_health_connect_phone + default: '-1' + info: + title: + 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: '' + edit_node_1: + 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: '' + changed: + sortable: true + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + moderation_state: + sortable: true + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + field_administration: + sortable: true + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + field_phone_number: + sortable: false + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + field_mental_health_phone: + sortable: false + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + field_va_health_connect_phone: + sortable: false + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + override: true + sticky: false + summary: '' + empty_table: false + caption: 'Phone number audit results' + description: '' + row: + type: fields + options: { } + defaults: + title: false + style: false + row: false + relationships: false + fields: false + filters: false + filter_groups: false + relationships: + field_telephone: + id: field_telephone + table: node__field_telephone + field: field_telephone + relationship: none + group_type: group + admin_label: 'field_telephone: Paragraph' + plugin_id: standard + required: false + display_description: '' + display_comment: 'This view is temporary as we migrate telephone fields as part of this epic https://github.com/department-of-veterans-affairs/va.gov-cms/issues/17854' + display_extenders: + jsonapi_views: + enabled: true + path: admin/content/audit/missing-phone-numbers + menu: + type: none + title: 'Phone Numbers' + description: '' + weight: 0 + expanded: false + menu_name: main + parent: '' + context: '0' + as_local_task: true + local_task_link_title: 'Phone Numbers' + local_task_parent: 'views_view:view.content.content_audit_page' + local_task_weight: 500 + local_task_custom_parent_route: '' + cache_metadata: + max-age: -1 + contexts: + - 'languages:language_content' + - 'languages:language_interface' + - url + - url.query_args + - user + - 'user.node_grants:view' + - user.roles + tags: + - 'config:field.storage.node.field_administration' + - 'config:field.storage.node.field_mental_health_phone' + - 'config:field.storage.node.field_phone_number' + - 'config:field.storage.node.field_va_health_connect_phone' + - 'config:field.storage.paragraph.field_phone_extension' + - 'config:field.storage.paragraph.field_phone_number' + - workbench_access_view phone_numbers_export: id: phone_numbers_export display_title: 'Data export - Phone numbers' diff --git a/docroot/modules/custom/va_gov_post_api/src/Service/PostFacilityStatus.php b/docroot/modules/custom/va_gov_post_api/src/Service/PostFacilityStatus.php index fdb39ce001..967ffea725 100644 --- a/docroot/modules/custom/va_gov_post_api/src/Service/PostFacilityStatus.php +++ b/docroot/modules/custom/va_gov_post_api/src/Service/PostFacilityStatus.php @@ -2,8 +2,14 @@ namespace Drupal\va_gov_post_api\Service; +use Drupal\Core\Config\ConfigFactoryInterface; use Drupal\Core\Entity\EntityInterface; +use Drupal\Core\Entity\EntityTypeManagerInterface; +use Drupal\Core\Logger\LoggerChannelFactoryInterface; +use Drupal\Core\Messenger\MessengerInterface; +use Drupal\feature_toggle\FeatureStatus; use Drupal\node\NodeInterface; +use Drupal\post_api\Service\AddToQueue; use Drupal\va_gov_facilities\FacilityOps; use Drupal\va_gov_lovell\LovellOps; @@ -40,6 +46,34 @@ class PostFacilityStatus extends PostFacilityBase implements PostServiceInterfac */ protected $additionalInfoToPush; + /** + * Feature Toggle status service. + * + * @var \Drupal\feature_toggle\FeatureStatus + */ + private FeatureStatus $featureStatus; + + /** + * Constructs a new PostFacilityStatus service object. + * + * @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory + * The config factory service. + * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager + * The entity type manager service. + * @param \Drupal\Core\Logger\LoggerChannelFactoryInterface $logger_channel_factory + * The logger factory service. + * @param \Drupal\Core\Messenger\MessengerInterface $messenger + * The messenger interface. + * @param \Drupal\post_api\Service\AddToQueue $post_queue + * The PostAPI service. + * @param \Drupal\feature_toggle\FeatureStatus $feature_status + * The Feature Status service. + */ + public function __construct(ConfigFactoryInterface $config_factory, EntityTypeManagerInterface $entity_type_manager, LoggerChannelFactoryInterface $logger_channel_factory, MessengerInterface $messenger, AddToQueue $post_queue, FeatureStatus $feature_status) { + parent::__construct($config_factory, $entity_type_manager, $logger_channel_factory, $messenger, $post_queue); + $this->featureStatus = $feature_status; + } + /** * Adds facility service data to Post API queue. * @@ -413,19 +447,27 @@ protected function shouldPushSystem(NodeInterface $entity) { * The mental health phone number. */ protected function getFacilityMentalHealthPhone(): string { - if (!$this->facilityNode->hasField('field_telephone')) { - return ''; - } - $telephone_paragraph_id = $this->facilityNode->get('field_telephone')->target_id; - if (empty($telephone_paragraph_id)) { - return ''; + $status = $this->featureStatus->getStatus('feature_telephone_migration_v1'); + // Return the original phone until the feature toggle is turned on. + if (!$status) { + return $this->getFieldSafe('field_mental_health_phone'); } - $telephone_paragraph = $this->entityTypeManager->getStorage('paragraph')->load($telephone_paragraph_id); - $mental_health_phone = $telephone_paragraph->get('field_phone_number')->value ?? ''; - $mental_health_extension = $telephone_paragraph->get('field_phone_extension')->value ?? ''; - if (!empty($mental_health_extension)) { - $mental_health_phone .= ', ext. ' . $mental_health_extension; + else { + if (!$this->facilityNode->hasField('field_telephone')) { + return ''; + } + $telephone_paragraph_id = $this->facilityNode->get('field_telephone')->target_id; + if (empty($telephone_paragraph_id)) { + return ''; + } + $telephone_paragraph = $this->entityTypeManager->getStorage('paragraph')->load($telephone_paragraph_id); + $mental_health_phone = $telephone_paragraph->get('field_phone_number')->value ?? ''; + $mental_health_extension = $telephone_paragraph->get('field_phone_extension')->value ?? ''; + if (!empty($mental_health_extension)) { + $mental_health_phone .= ', ext. ' . $mental_health_extension; + } } + return $mental_health_phone; } diff --git a/docroot/modules/custom/va_gov_post_api/va_gov_post_api.services.yml b/docroot/modules/custom/va_gov_post_api/va_gov_post_api.services.yml index d02a179010..68508a63ca 100644 --- a/docroot/modules/custom/va_gov_post_api/va_gov_post_api.services.yml +++ b/docroot/modules/custom/va_gov_post_api/va_gov_post_api.services.yml @@ -18,7 +18,7 @@ services: arguments: ['@config.factory', '@entity_type.manager', '@logger.factory', '@messenger', '@post_api.add_to_queue', '@renderer', '@file_system', '@file.repository'] va_gov_post_api.queue_facility_status_updates: class: '\Drupal\va_gov_post_api\Service\PostFacilityStatus' - arguments: ['@config.factory', '@entity_type.manager', '@logger.factory', '@messenger', '@post_api.add_to_queue'] + arguments: ['@config.factory', '@entity_type.manager', '@logger.factory', '@messenger', '@post_api.add_to_queue', '@feature_toggle.feature_status'] va_gov_post_api.queue_facility_without_status_updates: class: '\Drupal\va_gov_post_api\Service\PostFacilityWithoutStatus' arguments: ['@config.factory', '@entity_type.manager', '@logger.factory', '@messenger', '@post_api.add_to_queue'] diff --git a/docroot/modules/custom/va_gov_profile/src/EventSubscriber/EntityEventSubscriber.php b/docroot/modules/custom/va_gov_profile/src/EventSubscriber/EntityEventSubscriber.php index 9ae09105b3..5ef80b7419 100644 --- a/docroot/modules/custom/va_gov_profile/src/EventSubscriber/EntityEventSubscriber.php +++ b/docroot/modules/custom/va_gov_profile/src/EventSubscriber/EntityEventSubscriber.php @@ -6,7 +6,9 @@ use Drupal\Core\StringTranslation\StringTranslationTrait; use Drupal\core_event_dispatcher\EntityHookEvents; use Drupal\core_event_dispatcher\Event\Entity\EntityTypeAlterEvent; +use Drupal\core_event_dispatcher\Event\Entity\EntityViewAlterEvent; use Drupal\core_event_dispatcher\Event\Form\FormIdAlterEvent; +use Drupal\feature_toggle\FeatureStatus; use Drupal\va_gov_user\Service\UserPermsService; use Symfony\Component\EventDispatcher\EventSubscriberInterface; @@ -28,10 +30,16 @@ class EntityEventSubscriber implements EventSubscriberInterface { * The entity manager. * * @var \Drupal\Core\Entity\EntityTypeManager - * The entity manager. */ private $entityTypeManager; + /** + * Feature Toggle status service. + * + * @var \Drupal\feature_toggle\FeatureStatus + */ + private FeatureStatus $featureStatus; + /** * Constructs the EventSubscriber object. * @@ -39,13 +47,17 @@ class EntityEventSubscriber implements EventSubscriberInterface { * The current user perms service. * @param \Drupal\Core\Entity\EntityTypeManager $entity_type_manager * The entity type manager service. + * @param \Drupal\feature_toggle\FeatureStatus $feature_status + * The Feature Status service. */ public function __construct( UserPermsService $user_perms_service, EntityTypeManager $entity_type_manager, + FeatureStatus $feature_status, ) { $this->userPermsService = $user_perms_service; $this->entityTypeManager = $entity_type_manager; + $this->featureStatus = $feature_status; } /** @@ -56,6 +68,7 @@ public static function getSubscribedEvents(): array { 'hook_event_dispatcher.form_node_person_profile_edit_form.alter' => 'alterStaffProfileNodeForm', 'hook_event_dispatcher.form_node_person_profile_form.alter' => 'alterStaffProfileNodeForm', EntityHookEvents::ENTITY_TYPE_ALTER => 'entityTypeAlter', + EntityHookEvents::ENTITY_VIEW_ALTER => 'entityViewAlter', ]; } @@ -73,6 +86,38 @@ public function entityTypeAlter(EntityTypeAlterEvent $event): void { } } + /** + * Alteration to entity view pages. + * + * @param \Drupal\core_event_dispatcher\Event\Entity\EntityViewAlterEvent $event + * The entity view alter service. + */ + public function entityViewAlter(EntityViewAlterEvent $event):void { + $this->showRenderedTelephone($event); + } + + /** + * Show the correct telephone field based on feature toggle for VACMS-17854. + * + * @param \Drupal\core_event_dispatcher\Event\Entity\EntityViewAlterEvent $event + * The entity view alter event. + */ + private function showRenderedTelephone(EntityViewAlterEvent $event) { + if ($event->getDisplay()->getTargetBundle() !== 'person_profile') { + return; + } + $build = &$event->getBuild(); + $status = $this->featureStatus->getStatus('feature_telephone_migration_v1'); + if ($status) { + // Hide the old telephone field, and, thereby, show the new one. + unset($build['field_phone_number']); + } + else { + // Hide the new telephone field, and, thereby, show the old one. + unset($build['field_telephone']); + } + } + /** * Form alterations for staff profile content type. * @@ -82,6 +127,7 @@ public function entityTypeAlter(EntityTypeAlterEvent $event): void { public function alterstaffProfileNodeForm(FormIdAlterEvent $event): void { $this->addStateManagementToBioFields($event); $this->removePhoneLabel($event); + $this->showTelephone($event); } /** @@ -132,6 +178,25 @@ public function addStateManagementToBioFields(FormIdAlterEvent $event) { ]; } + /** + * Show the correct telephone field based on feature toggle for VACMS-17854. + * + * @param \Drupal\core_event_dispatcher\Event\Form\FormIdAlterEvent $event + * The form event. + */ + private function showTelephone($event) { + $form = &$event->getForm(); + $status = $this->featureStatus->getStatus('feature_telephone_migration_v1'); + if ($status) { + // Hide the old telephone field, and, thereby, show the new one. + unset($form['field_phone_number']); + } + else { + // Hide the new telephone field, and, thereby, show the old one. + unset($form['field_telephone']); + } + } + /** * Removes the phone label on staff profile content type forms. * diff --git a/docroot/modules/custom/va_gov_profile/va_gov_profile.services.yml b/docroot/modules/custom/va_gov_profile/va_gov_profile.services.yml index 7669c4f026..2eec79c038 100644 --- a/docroot/modules/custom/va_gov_profile/va_gov_profile.services.yml +++ b/docroot/modules/custom/va_gov_profile/va_gov_profile.services.yml @@ -1,6 +1,6 @@ services: va_gov_profile.entity_event_subscriber: class: Drupal\va_gov_profile\EventSubscriber\EntityEventSubscriber - arguments: ['@va_gov_user.user_perms', '@entity_type.manager'] + arguments: ['@va_gov_user.user_perms', '@entity_type.manager', '@feature_toggle.feature_status'] tags: - { name: event_subscriber } 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 8eab6b5a71..c7ca5fe537 100644 --- a/docroot/modules/custom/va_gov_vamc/src/EventSubscriber/VAMCEntityEventSubscriber.php +++ b/docroot/modules/custom/va_gov_vamc/src/EventSubscriber/VAMCEntityEventSubscriber.php @@ -13,6 +13,7 @@ use Drupal\core_event_dispatcher\Event\Entity\EntityUpdateEvent; use Drupal\core_event_dispatcher\Event\Entity\EntityViewAlterEvent; use Drupal\core_event_dispatcher\Event\Form\FormIdAlterEvent; +use Drupal\feature_toggle\FeatureStatus; use Drupal\node\NodeInterface; use Drupal\va_gov_notifications\Service\NotificationsManager; use Drupal\va_gov_user\Service\UserPermsService; @@ -105,6 +106,13 @@ public static function getSubscribedEvents(): array { */ protected $userPermsService; + /** + * Feature Toggle status service. + * + * @var \Drupal\feature_toggle\FeatureStatus + */ + private FeatureStatus $featureStatus; + /** * Constructs the EventSubscriber object. * @@ -120,6 +128,8 @@ public static function getSubscribedEvents(): array { * The deduper service. * @param \Drupal\va_gov_notifications\Service\NotificationsManager $notifications_manager * VA gov NotificationsManager service. + * @param \Drupal\feature_toggle\FeatureStatus $feature_status + * The Feature Status service. */ public function __construct( EntityTypeManager $entity_type_manager, @@ -128,6 +138,7 @@ public function __construct( UserPermsService $user_perms_service, ContentHardeningDeduper $content_hardening_deduper, NotificationsManager $notifications_manager, + FeatureStatus $feature_status, ) { $this->entityTypeManager = $entity_type_manager; $this->currentUser = $currentUser; @@ -135,6 +146,7 @@ public function __construct( $this->userPermsService = $user_perms_service; $this->contentHardeningDeduper = $content_hardening_deduper; $this->notificationsManager = $notifications_manager; + $this->featureStatus = $feature_status; } /** @@ -146,7 +158,35 @@ public function __construct( public function entityViewAlter(EntityViewAlterEvent $event):void { $this->showUnspecifiedWhenSystemEhrNumberEmpty($event); $this->alterAppendedSystemHealthServices($event); + $this->showRenderedTelephone($event); + } + /** + * Show the correct telephone field based on feature toggle for VACMS-17854. + * + * @param \Drupal\core_event_dispatcher\Event\Entity\EntityViewAlterEvent $event + * The entity view alter event. + */ + private function showRenderedTelephone(EntityViewAlterEvent $event) { + $node_type = $event->getEntity()->bundle(); + if ($node_type !== 'vamc_system_billing_insurance' && + $node_type !== 'health_care_local_facility') { + return; + } + // We want to hide the old mental health phone field on the facility node. + $old_field_to_hide = $node_type === 'health_care_local_facility' + ? 'field_mental_health_phone' : 'field_phone_number'; + + $build = &$event->getBuild(); + $status = $this->featureStatus->getStatus('feature_telephone_migration_v1'); + if ($status) { + // Hide the old telephone field, and, thereby, show the new one. + unset($build[$old_field_to_hide]); + } + else { + // Hide the new telephone field, and, thereby, show the old one. + unset($build['field_telephone']); + } } /** @@ -327,7 +367,7 @@ public function alterFacilityNodeForm(FormIdAlterEvent $event): void { $form_state = $event->getFormState(); $this->addCovidStatusData($form, $form_state); $this->removePhoneLabel($event); - + $this->showTelephone($event); } /** @@ -362,6 +402,31 @@ public function alterTopTaskNodeForm(FormIdAlterEvent $event): void { public function alterVamcSystemBillingAndInsuranceForm(FormIdAlterEvent $event) { $this->alterTopTaskNodeForm($event); $this->removePhoneLabel($event); + $this->showTelephone($event); + } + + /** + * Show the correct telephone field based on feature toggle for VACMS-17854. + * + * @param \Drupal\core_event_dispatcher\Event\Form\FormIdAlterEvent $event + * The form event. + */ + private function showTelephone($event) { + $form = &$event->getForm(); + $form_id = $form['#form_id']; + // We want to hide the old mental health phone field on the facility node, + // where there are two phone fields. + $old_field_to_hide = $form_id === 'node_health_care_local_facility_form' || $form_id === 'node_health_care_local_facility_edit_form' + ? 'field_mental_health_phone' : 'field_phone_number'; + $status = $this->featureStatus->getStatus('feature_telephone_migration_v1'); + if ($status) { + // Hide the old telephone field, and, thereby, show the new one. + unset($form[$old_field_to_hide]); + } + else { + // Hide the new telephone field, and, thereby, show the old one. + unset($form['field_telephone']); + } } /** diff --git a/docroot/modules/custom/va_gov_vamc/va_gov_vamc.services.yml b/docroot/modules/custom/va_gov_vamc/va_gov_vamc.services.yml index 096492b370..a4e28434a1 100644 --- a/docroot/modules/custom/va_gov_vamc/va_gov_vamc.services.yml +++ b/docroot/modules/custom/va_gov_vamc/va_gov_vamc.services.yml @@ -8,6 +8,7 @@ services: - '@va_gov_user.user_perms' - '@va_gov_vamc.content_hardening_deduper' - '@va_gov_notifications.notifications_manager' + - '@feature_toggle.feature_status' tags: - { name: event_subscriber } va_gov_vamc.entity_prevent_reuse: diff --git a/tests/cypress/integration/features/content_type/facilities/vamc/health_care_local_facility.feature b/tests/cypress/integration/features/content_type/facilities/vamc/health_care_local_facility.feature index ed955e8a2f..44530688c0 100644 --- a/tests/cypress/integration/features/content_type/facilities/vamc/health_care_local_facility.feature +++ b/tests/cypress/integration/features/content_type/facilities/vamc/health_care_local_facility.feature @@ -9,7 +9,6 @@ Feature: CMS Users may effectively interact with the VAMC Facility form When I am at "/node/add/health_care_local_facility" And I fill in "Name of facility" with "[Test Data] Facility Name" And I select the "Normal services and hours" radio button - And I fill in field with selector "#edit-field-telephone-0-subform-field-phone-number-0-value" with value "123-456-7890" And I select option "VA Alaska health care" from dropdown "What health care system does the facility belong to?" And I fill in "Meta description" with "[Test Data] Meta description" And I select option "---VA Alaska health care" from dropdown "Section" diff --git a/tests/cypress/integration/features/content_type/person_profile.feature b/tests/cypress/integration/features/content_type/person_profile.feature index 23844ef678..8961d5d739 100644 --- a/tests/cypress/integration/features/content_type/person_profile.feature +++ b/tests/cypress/integration/features/content_type/person_profile.feature @@ -8,7 +8,6 @@ Scenario: Log in and create a Person Profile with attention to conditional field And I am at "/node/add/person_profile" And I select option "---VA Boston health care" from dropdown "Section" And I select option "VA Boston health care" from dropdown "Related office or health care region" - And I fill in field with selector "#edit-field-telephone-0-subform-field-phone-number-0-value" with value "800-698-2411" And I fill in "First name" with "James" And I fill in "Last name" with "Smith"