diff --git a/.ddev/mutagen/mutagen.yml b/.ddev/mutagen/mutagen.yml index e6c014fb63..646de77e49 100644 --- a/.ddev/mutagen/mutagen.yml +++ b/.ddev/mutagen/mutagen.yml @@ -3,8 +3,8 @@ # and add your own configuration. If you override it you will # probably want to check it in. # Please do `ddev mutagen reset` after changing the file. -# See ddev mutagen docs at -# https://ddev.readthedocs.io/en/latest/users/install/performance/ +# See DDEV Mutagen docs at +# https://ddev.readthedocs.io/en/stable/users/install/performance/#mutagen # For detailed information about mutagen configuration options, see # https://mutagen.io/documentation/introduction/configuration sync: diff --git a/.ddev/nginx_full/nginx-site.conf b/.ddev/nginx_full/nginx-site.conf new file mode 100644 index 0000000000..e8c0c8006f --- /dev/null +++ b/.ddev/nginx_full/nginx-site.conf @@ -0,0 +1,107 @@ +# ddev drupal10 config + +# If you want to take over this file and customize it, remove the line above +# and ddev will respect it and won't overwrite the file. +# See https://ddev.readthedocs.io/en/stable/users/extend/customization-extendibility/#custom-nginx-configuration + +server { + listen 80 default_server; + listen 443 ssl default_server; + + root /var/www/html/docroot; + + ssl_certificate /etc/ssl/certs/master.crt; + ssl_certificate_key /etc/ssl/certs/master.key; + + include /etc/nginx/monitoring.conf; + + index index.php index.htm index.html; + + # Disable sendfile as per https://docs.vagrantup.com/v2/synced-folders/virtualbox.html + sendfile off; + error_log /dev/stdout info; + access_log /var/log/nginx/access.log; + + location / { + absolute_redirect off; + try_files $uri $uri/ /index.php?$query_string; # For Drupal >= 7 + } + + location @rewrite { + # For D7 and above: + # Clean URLs are handled in drupal_environment_initialize(). + rewrite ^ /index.php; + } + + # Handle image styles for Drupal 7+ + location ~ ^/sites/.*/files/styles/ { + try_files $uri @rewrite; + } + + # pass the PHP scripts to FastCGI server listening on socket + location ~ '\.php$|^/update.php' { + fastcgi_split_path_info ^(.+\.php)(/.+)$; + fastcgi_pass unix:/run/php-fpm.sock; + + fastcgi_buffers 256 256k; + fastcgi_buffer_size 256k; + client_max_body_size 50M; + proxy_buffer_size 256k; + proxy_buffers 4 256k; + proxy_busy_buffers_size 256k; + + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + fastcgi_param SCRIPT_NAME $fastcgi_script_name; + fastcgi_index index.php; + include fastcgi_params; + fastcgi_intercept_errors off; + # fastcgi_read_timeout should match max_execution_time in php.ini + fastcgi_read_timeout 10m; + fastcgi_param SERVER_NAME $host; + fastcgi_param HTTPS $fcgi_https; + } + + # Expire rules for static content + + # Prevent clients from accessing hidden files (starting with a dot) + # This is particularly important if you store .htpasswd files in the site hierarchy + # Access to `/.well-known/` is allowed. + # https://www.mnot.net/blog/2010/04/07/well-known + # https://tools.ietf.org/html/rfc5785 + location ~* /\.(?!well-known\/) { + deny all; + } + + # Prevent clients from accessing to backup/config/source files + location ~* (?:\.(?:bak|conf|dist|fla|in[ci]|log|psd|sh|sql|sw[op])|~)$ { + deny all; + } + + ## Regular private file serving (i.e. handled by Drupal). + location ^~ /system/files/ { + ## For not signaling a 404 in the error log whenever the + ## system/files directory is accessed add the line below. + ## Note that the 404 is the intended behavior. + log_not_found off; + access_log off; + expires 30d; + try_files $uri @rewrite; + } + + # Media: images, icons, video, audio, HTC + location ~* \.(jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm|webp|htc)$ { + try_files $uri @rewrite; + expires max; + log_not_found off; + } + + # js and css always loaded + location ~* \.(js|css)$ { + try_files $uri @rewrite; + expires -1; + log_not_found off; + } + + include /etc/nginx/common.d/*.conf; + include /mnt/ddev_config/nginx/*.conf; +} diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index de8335202f..358d83f97f 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -50,6 +50,7 @@ /docroot/modules/custom/va_gov_api @department-of-veterans-affairs/accelerated-publishing /docroot/modules/custom/va_gov_backend # @department-of-veterans-affairs/platform-cms-drupal-engineers /docroot/modules/custom/va_gov_banner @department-of-veterans-affairs/public-websites-cms +/docroot/modules/custom/va_gov_batch @department-of-veterans-affairs/public-websites-cms /docroot/modules/custom/va_gov_benefits @department-of-veterans-affairs/public-websites-cms /docroot/modules/custom/va_gov_block_types @department-of-veterans-affairs/public-websites-cms /docroot/modules/custom/va_gov_build_trigger # @department-of-veterans-affairs/platform-cms-drupal-engineers diff --git a/composer.json b/composer.json index b0dd228bc2..b8360e7cd3 100644 --- a/composer.json +++ b/composer.json @@ -36,6 +36,7 @@ "drupal/ckeditor_abbreviation": "^4.0@alpha", "drupal/clientside_validation": "^4.0", "drupal/coder": "^8.3", + "drupal/codit_batch_operations": "^1.0", "drupal/codit_menu_tools": "^1.0@alpha", "drupal/components": "^3.0@beta", "drupal/computed_breadcrumbs": "^1.1", @@ -202,6 +203,7 @@ "drush/drush": "12.4.3", "easyrdf/easyrdf": "1.1.1 as 0.9.1", "geocoder-php/mapbox-provider": "^1.3", + "giggsey/libphonenumber-for-php": "^8.13", "gitonomy/gitlib": "^1.2", "http-interop/http-factory-guzzle": "^1.0", "knplabs/github-api": "^3.0", diff --git a/composer.lock b/composer.lock index 1cc49261f8..91d4fe5466 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": "f9050af45d3b7f966ae2040c97fdb70d", + "content-hash": "ec08348fac4ca68b02c83aabc2bba495", "packages": [ { "name": "asm89/stack-cors", @@ -3332,6 +3332,66 @@ }, "time": "2024-04-21T06:13:24+00:00" }, + { + "name": "drupal/codit_batch_operations", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/codit_batch_operations.git", + "reference": "1.0.2" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/codit_batch_operations-1.0.2.zip", + "reference": "1.0.2", + "shasum": "1210c2527d77f8a5d2993772f801d29bcd911bc2" + }, + "require": { + "drupal/core": "^10 || ^11" + }, + "conflict": { + "drush/drush": "<9.0" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "1.0.2", + "datestamp": "1723428187", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + }, + "drush": { + "services": { + "drush.services.yml": "<11.0" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0+" + ], + "authors": [ + { + "name": "skyriter", + "homepage": "https://www.drupal.org/user/1703682" + }, + { + "name": "swirt", + "homepage": "https://www.drupal.org/user/138230" + } + ], + "description": "Provides methods and framework for running batch operations.", + "homepage": "https://www.drupal.org/project/codit_batch_operations", + "keywords": [ + "Drupal" + ], + "support": { + "source": "http://cgit.drupalcode.org/codit_batch_operations", + "issues": "http://drupal.org/project/issues/codit_batch_operations" + } + }, { "name": "drupal/codit_menu_tools", "version": "1.0.3", @@ -15548,6 +15608,135 @@ ], "time": "2023-11-06T15:42:03+00:00" }, + { + "name": "giggsey/libphonenumber-for-php", + "version": "8.13.43", + "source": { + "type": "git", + "url": "https://github.com/giggsey/libphonenumber-for-php.git", + "reference": "62250ef492ea8afedf534381844194f43ff1f7f2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/giggsey/libphonenumber-for-php/zipball/62250ef492ea8afedf534381844194f43ff1f7f2", + "reference": "62250ef492ea8afedf534381844194f43ff1f7f2", + "shasum": "" + }, + "require": { + "giggsey/locale": "^1.7|^2.0", + "php": ">=5.3.2", + "symfony/polyfill-mbstring": "^1.17" + }, + "replace": { + "giggsey/libphonenumber-for-php-lite": "self.version" + }, + "require-dev": { + "pear/pear-core-minimal": "^1.9", + "pear/pear_exception": "^1.0", + "pear/versioncontrol_git": "^0.5", + "phing/phing": "^2.7", + "php-coveralls/php-coveralls": "^1.0|^2.0", + "symfony/console": "^2.8|^3.0|^v4.4|^v5.2", + "symfony/phpunit-bridge": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "8.x-dev" + } + }, + "autoload": { + "psr-4": { + "libphonenumber\\": "src/" + }, + "exclude-from-classmap": [ + "/src/data/", + "/src/carrier/data/", + "/src/geocoding/data/", + "/src/timezone/data/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Joshua Gigg", + "email": "giggsey@gmail.com", + "homepage": "https://giggsey.com/" + } + ], + "description": "PHP Port of Google's libphonenumber", + "homepage": "https://github.com/giggsey/libphonenumber-for-php", + "keywords": [ + "geocoding", + "geolocation", + "libphonenumber", + "mobile", + "phonenumber", + "validation" + ], + "support": { + "issues": "https://github.com/giggsey/libphonenumber-for-php/issues", + "source": "https://github.com/giggsey/libphonenumber-for-php" + }, + "time": "2024-08-13T12:17:37+00:00" + }, + { + "name": "giggsey/locale", + "version": "2.6", + "source": { + "type": "git", + "url": "https://github.com/giggsey/Locale.git", + "reference": "37874fa473131247c348059fb7b8985efc18b5ea" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/giggsey/Locale/zipball/37874fa473131247c348059fb7b8985efc18b5ea", + "reference": "37874fa473131247c348059fb7b8985efc18b5ea", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "require-dev": { + "ext-json": "*", + "pear/pear-core-minimal": "^1.9", + "pear/pear_exception": "^1.0", + "pear/versioncontrol_git": "^0.5", + "phing/phing": "^2.7", + "php-coveralls/php-coveralls": "^2.0", + "phpunit/phpunit": "^8.5|^9.5", + "symfony/console": "^5.0|^6.0", + "symfony/filesystem": "^5.0|^6.0", + "symfony/finder": "^5.0|^6.0", + "symfony/process": "^5.0|^6.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Giggsey\\Locale\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Joshua Gigg", + "email": "giggsey@gmail.com", + "homepage": "https://giggsey.com/" + } + ], + "description": "Locale functions required by libphonenumber-for-php", + "support": { + "issues": "https://github.com/giggsey/Locale/issues", + "source": "https://github.com/giggsey/Locale/tree/2.6" + }, + "time": "2024-04-18T19:31:19+00:00" + }, { "name": "gitonomy/gitlib", "version": "v1.4.0", diff --git a/config/sync/codit_batch_operations.settings.yml b/config/sync/codit_batch_operations.settings.yml new file mode 100644 index 0000000000..cffc3a8b55 --- /dev/null +++ b/config/sync/codit_batch_operations.settings.yml @@ -0,0 +1,3 @@ +script_location: va_gov_batch +default_user: '1317' +cron_enabled: 0 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 f60ee8203c..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 @@ -25,6 +25,7 @@ dependencies: - field.field.node.health_care_local_facility.field_region_page - field.field.node.health_care_local_facility.field_supplemental_status - field.field.node.health_care_local_facility.field_supplemental_status_more_i + - field.field.node.health_care_local_facility.field_telephone - field.field.node.health_care_local_facility.field_timezone - node.type.health_care_local_facility - workflows.workflow.editorial @@ -36,6 +37,7 @@ dependencies: - media_library - office_hours - paragraphs + - paragraphs_features - path - telephone - textfield_counter @@ -48,7 +50,7 @@ third_party_settings: label: 'Section settings' region: content parent_name: '' - weight: 9 + weight: 10 format_type: details_sidebar format_settings: classes: '' @@ -64,7 +66,7 @@ third_party_settings: label: 'Editorial Workflow' region: content parent_name: '' - weight: 10 + weight: 11 format_type: fieldset format_settings: classes: '' @@ -77,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: '' @@ -92,7 +94,7 @@ third_party_settings: label: 'VAMC system' region: content parent_name: '' - weight: 3 + weight: 4 format_type: fieldset format_settings: classes: '' @@ -106,7 +108,7 @@ third_party_settings: label: 'Title and summary' region: content parent_name: '' - weight: 4 + weight: 5 format_type: fieldset format_settings: classes: '' @@ -118,7 +120,7 @@ third_party_settings: label: 'Social Media' region: content parent_name: '' - weight: 6 + weight: 7 format_type: fieldset format_settings: classes: '' @@ -132,7 +134,7 @@ third_party_settings: label: 'Operating status' region: content parent_name: '' - weight: 2 + weight: 3 format_type: fieldset format_settings: classes: '' @@ -147,7 +149,7 @@ third_party_settings: label: 'Meta Tags' region: content parent_name: '' - weight: 5 + weight: 6 format_type: fieldset format_settings: classes: '' @@ -157,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: '' @@ -202,7 +205,7 @@ third_party_settings: label: 'COVID-19 health protection guidelines' region: hidden parent_name: '' - weight: 21 + weight: 22 format_type: html_element format_settings: classes: '' @@ -225,11 +228,12 @@ content: type: address_default weight: 24 region: content - settings: { } + settings: + wrapper_type: fieldset third_party_settings: { } field_administration: type: options_select - weight: 13 + weight: 14 region: content settings: { } third_party_settings: { } @@ -285,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: { } @@ -303,7 +307,7 @@ content: third_party_settings: { } field_main_location: type: boolean_checkbox - weight: 21 + weight: 22 region: content settings: display_label: true @@ -317,7 +321,7 @@ content: third_party_settings: { } field_mental_health_phone: type: telephone_default - weight: 1 + weight: 21 region: content settings: placeholder: '' @@ -369,6 +373,32 @@ content: region: content settings: { } third_party_settings: { } + field_telephone: + type: paragraphs + weight: 1 + 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: phone_number + features: + add_above: '0' + collapse_edit_all: collapse_edit_all + convert: '0' + duplicate: duplicate + third_party_settings: + paragraphs_features: + add_in_between: false + add_in_between_link_count: 3 + delete_confirmation: false + show_drag_and_drop: true + show_collapse_all: true field_timezone: type: tzfield_default weight: 30 @@ -388,7 +418,7 @@ content: third_party_settings: { } path: type: path - weight: 8 + weight: 9 region: content settings: { } third_party_settings: { } 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 e8f2e84b49..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 @@ -26,10 +26,13 @@ dependencies: - field.field.node.health_care_local_facility.field_region_page - field.field.node.health_care_local_facility.field_supplemental_status - field.field.node.health_care_local_facility.field_supplemental_status_more_i + - field.field.node.health_care_local_facility.field_telephone - field.field.node.health_care_local_facility.field_timezone - node.type.health_care_local_facility module: - field_group + - ief_table_view_mode + - telephone - textfield_counter third_party_settings: field_group: @@ -39,7 +42,7 @@ third_party_settings: label: 'Section settings' region: hidden parent_name: '' - weight: 25 + weight: 31 format_type: details_sidebar format_settings: classes: '' @@ -49,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: '' @@ -68,7 +71,7 @@ third_party_settings: label: 'Facility Locator' region: hidden parent_name: '' - weight: 23 + weight: 29 format_type: fieldset format_settings: classes: '' @@ -82,7 +85,7 @@ third_party_settings: label: 'Location services' region: hidden parent_name: '' - weight: 24 + weight: 30 format_type: details format_settings: classes: '' @@ -97,7 +100,7 @@ third_party_settings: label: Region region: hidden parent_name: '' - weight: 22 + weight: 28 format_type: fieldset format_settings: classes: '' @@ -109,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 @@ -125,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 @@ -150,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 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 5eb707bba6..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 @@ -19,6 +19,7 @@ dependencies: - field.field.node.person_profile.field_phone_number - field.field.node.person_profile.field_photo_allow_hires_download - field.field.node.person_profile.field_suffix + - field.field.node.person_profile.field_telephone - node.type.person_profile - workflows.workflow.editorial module: @@ -26,6 +27,7 @@ dependencies: - field_group - file - media_library + - paragraphs - path - telephone - text @@ -53,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 +82,7 @@ third_party_settings: children: - field_email_address - field_phone_number + - field_telephone label: 'Contact info' region: content parent_name: '' @@ -127,7 +130,7 @@ third_party_settings: label: 'Meta Tags' region: hidden parent_name: '' - weight: 16 + weight: 19 format_type: fieldset format_settings: classes: '' @@ -141,13 +144,13 @@ mode: default content: field_administration: type: options_select - weight: 17 + weight: 13 region: content settings: { } third_party_settings: { } field_body: type: text_textarea - weight: 28 + weight: 13 region: content settings: rows: 5 @@ -155,14 +158,14 @@ content: third_party_settings: { } field_complete_biography: type: file_generic - weight: 29 + weight: 14 region: content settings: progress_indicator: throbber third_party_settings: { } field_complete_biography_create: type: boolean_checkbox - weight: 26 + weight: 11 region: content settings: display_label: true @@ -185,7 +188,7 @@ content: third_party_settings: { } field_intro_text: type: string_textarea_with_counter - weight: 27 + weight: 12 region: content settings: rows: 5 @@ -193,6 +196,7 @@ content: maxlength: 160 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: { } @@ -206,7 +210,7 @@ content: third_party_settings: { } field_last_saved_by_an_editor: type: datetime_timestamp - weight: 30 + weight: 11 region: content settings: { } third_party_settings: { } @@ -240,7 +244,7 @@ content: third_party_settings: { } field_photo_allow_hires_download: type: boolean_checkbox - weight: 6 + weight: 7 region: content settings: display_label: true @@ -253,9 +257,27 @@ content: size: 60 placeholder: '' third_party_settings: { } + field_telephone: + type: paragraphs + weight: 7 + 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: moderation_state_default - weight: 16 + weight: 13 region: content settings: { } third_party_settings: { } 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 b695ff397d..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 @@ -20,10 +20,12 @@ dependencies: - field.field.node.person_profile.field_phone_number - field.field.node.person_profile.field_photo_allow_hires_download - field.field.node.person_profile.field_suffix + - field.field.node.person_profile.field_telephone - node.type.person_profile module: - field_group - media_library + - paragraphs - telephone - text third_party_settings: @@ -78,6 +80,7 @@ third_party_settings: children: - field_email_address - field_phone_number + - field_telephone label: 'Contact info' region: content parent_name: '' @@ -177,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 @@ -219,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 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 2eeb0bdbaa..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 @@ -16,6 +16,7 @@ dependencies: - field.field.node.vamc_system_billing_insurance.field_office_hours - field.field.node.vamc_system_billing_insurance.field_phone_number - field.field.node.vamc_system_billing_insurance.field_service_name_and_descripti + - field.field.node.vamc_system_billing_insurance.field_telephone - node.type.vamc_system_billing_insurance - workflows.workflow.restricted_archive module: @@ -24,6 +25,7 @@ dependencies: - entity_field_fetch - field_group - office_hours + - paragraphs - telephone - viewfield third_party_settings: @@ -104,6 +106,7 @@ third_party_settings: group_inquiries_about_copay: children: - field_phone_number + - field_telephone - field_office_hours label: 'For inquiries by phone about copay balance' region: content @@ -173,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 @@ -182,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' @@ -191,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 @@ -214,7 +217,7 @@ content: third_party_settings: { } field_last_saved_by_an_editor: type: datetime_timestamp - weight: 26 + weight: 12 region: content settings: { } third_party_settings: { } @@ -232,9 +235,10 @@ content: third_party_settings: { } field_office_hours: type: office_hours_default - weight: 9 + weight: 10 region: content - settings: { } + settings: + collapsed: false third_party_settings: { } field_phone_number: type: telephone_default @@ -243,6 +247,24 @@ content: settings: placeholder: '' third_party_settings: { } + field_telephone: + type: paragraphs + weight: 9 + 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: moderation_state_default weight: 7 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 f32cd9fda2..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 @@ -25,6 +25,7 @@ dependencies: - field.field.node.health_care_local_facility.field_region_page - field.field.node.health_care_local_facility.field_supplemental_status - field.field.node.health_care_local_facility.field_supplemental_status_more_i + - field.field.node.health_care_local_facility.field_telephone - field.field.node.health_care_local_facility.field_timezone - image.style.crop_3_2 - node.type.health_care_local_facility @@ -111,6 +112,7 @@ third_party_settings: - field_phone_number - field_mobile - field_mental_health_phone + - field_telephone - field_office_hours - field_timezone label: 'Facility data' @@ -137,7 +139,7 @@ third_party_settings: label: 'COVID-19 health protection guidelines' parent_name: '' region: hidden - weight: 24 + weight: 27 format_type: fieldset format_settings: classes: '' @@ -251,7 +253,7 @@ content: schema: enabled: false third_party_settings: { } - weight: 20 + weight: 21 region: content field_operating_status_facility: type: list_default @@ -275,12 +277,21 @@ content: third_party_settings: { } weight: 17 region: content + field_telephone: + type: entity_reference_revisions_entity_view + label: above + settings: + view_mode: default + link: '' + third_party_settings: { } + weight: 20 + region: content field_timezone: type: basic_string label: above settings: { } third_party_settings: { } - weight: 21 + weight: 22 region: content flag_email_node: settings: { } diff --git a/config/sync/core.entity_view_display.node.health_care_local_facility.external_content.yml b/config/sync/core.entity_view_display.node.health_care_local_facility.external_content.yml index 4cecd404d8..063f055861 100644 --- a/config/sync/core.entity_view_display.node.health_care_local_facility.external_content.yml +++ b/config/sync/core.entity_view_display.node.health_care_local_facility.external_content.yml @@ -26,6 +26,7 @@ dependencies: - field.field.node.health_care_local_facility.field_region_page - field.field.node.health_care_local_facility.field_supplemental_status - field.field.node.health_care_local_facility.field_supplemental_status_more_i + - field.field.node.health_care_local_facility.field_telephone - field.field.node.health_care_local_facility.field_timezone - node.type.health_care_local_facility module: @@ -274,6 +275,7 @@ hidden: field_region_page: true field_supplemental_status: true field_supplemental_status_more_i: true + field_telephone: true field_timezone: true flag_awaiting_csv: true flag_awaiting_editor: true diff --git a/config/sync/core.entity_view_display.node.health_care_local_facility.ief_table.yml b/config/sync/core.entity_view_display.node.health_care_local_facility.ief_table.yml index d978097d78..81891d2b24 100644 --- a/config/sync/core.entity_view_display.node.health_care_local_facility.ief_table.yml +++ b/config/sync/core.entity_view_display.node.health_care_local_facility.ief_table.yml @@ -26,6 +26,7 @@ dependencies: - field.field.node.health_care_local_facility.field_region_page - field.field.node.health_care_local_facility.field_supplemental_status - field.field.node.health_care_local_facility.field_supplemental_status_more_i + - field.field.node.health_care_local_facility.field_telephone - field.field.node.health_care_local_facility.field_timezone - image.style.thumbnail - node.type.health_care_local_facility @@ -127,6 +128,7 @@ hidden: field_region_page: true field_supplemental_status: true field_supplemental_status_more_i: true + field_telephone: true field_timezone: true flag_awaiting_csv: true flag_awaiting_editor: true diff --git a/config/sync/core.entity_view_display.node.health_care_local_facility.teaser.yml b/config/sync/core.entity_view_display.node.health_care_local_facility.teaser.yml index 23950b24f1..222770f668 100644 --- a/config/sync/core.entity_view_display.node.health_care_local_facility.teaser.yml +++ b/config/sync/core.entity_view_display.node.health_care_local_facility.teaser.yml @@ -26,6 +26,7 @@ dependencies: - field.field.node.health_care_local_facility.field_region_page - field.field.node.health_care_local_facility.field_supplemental_status - field.field.node.health_care_local_facility.field_supplemental_status_more_i + - field.field.node.health_care_local_facility.field_telephone - field.field.node.health_care_local_facility.field_timezone - node.type.health_care_local_facility module: @@ -105,6 +106,7 @@ hidden: field_region_page: true field_supplemental_status: true field_supplemental_status_more_i: true + field_telephone: true field_timezone: true langcode: true search_api_excerpt: true diff --git a/config/sync/core.entity_view_display.node.person_profile.default.yml b/config/sync/core.entity_view_display.node.person_profile.default.yml index 8136ea6f56..c583bf5042 100644 --- a/config/sync/core.entity_view_display.node.person_profile.default.yml +++ b/config/sync/core.entity_view_display.node.person_profile.default.yml @@ -19,9 +19,11 @@ dependencies: - field.field.node.person_profile.field_phone_number - field.field.node.person_profile.field_photo_allow_hires_download - field.field.node.person_profile.field_suffix + - field.field.node.person_profile.field_telephone - image.style.2_3_medium_thumbnail - node.type.person_profile module: + - entity_reference_revisions - field_group - file - media @@ -35,7 +37,7 @@ third_party_settings: label: '' parent_name: '' region: hidden - weight: 19 + weight: 22 format_type: fieldset format_settings: classes: '' @@ -59,7 +61,7 @@ content: settings: use_description_as_link_text: true third_party_settings: { } - weight: 9 + weight: 10 region: content field_complete_biography_create: type: boolean @@ -69,7 +71,7 @@ content: format_custom_false: '' format_custom_true: '' third_party_settings: { } - weight: 10 + weight: 11 region: content field_description: type: string @@ -84,7 +86,7 @@ content: label: above settings: { } third_party_settings: { } - weight: 8 + weight: 9 region: content field_intro_text: type: basic_string @@ -136,6 +138,15 @@ content: third_party_settings: { } weight: 3 region: content + field_telephone: + type: entity_reference_revisions_entity_view + label: above + settings: + view_mode: default + link: '' + third_party_settings: { } + weight: 8 + region: content hidden: breadcrumbs: true content_moderation_control: true diff --git a/config/sync/core.entity_view_display.node.person_profile.teaser.yml b/config/sync/core.entity_view_display.node.person_profile.teaser.yml index 65611ae14a..02c6fe8f16 100644 --- a/config/sync/core.entity_view_display.node.person_profile.teaser.yml +++ b/config/sync/core.entity_view_display.node.person_profile.teaser.yml @@ -20,6 +20,7 @@ dependencies: - field.field.node.person_profile.field_phone_number - field.field.node.person_profile.field_photo_allow_hires_download - field.field.node.person_profile.field_suffix + - field.field.node.person_profile.field_telephone - node.type.person_profile module: - user @@ -53,5 +54,6 @@ hidden: field_photo_allow_hires_download: true field_region_page: true field_suffix: true + field_telephone: true langcode: true search_api_excerpt: 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 22bb2be05d..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 @@ -16,10 +16,12 @@ dependencies: - field.field.node.vamc_system_billing_insurance.field_office_hours - field.field.node.vamc_system_billing_insurance.field_phone_number - field.field.node.vamc_system_billing_insurance.field_service_name_and_descripti + - field.field.node.vamc_system_billing_insurance.field_telephone - node.type.vamc_system_billing_insurance module: - allow_only_one - entity_field_fetch + - entity_reference_revisions - field_group - office_hours - telephone @@ -69,6 +71,7 @@ third_party_settings: group_inquiries_about_copay: children: - field_phone_number + - field_telephone - field_office_hours label: 'For inquiries by phone about copay balance' parent_name: '' @@ -183,7 +186,7 @@ content: schema: enabled: false third_party_settings: { } - weight: 9 + weight: 2 region: content field_phone_number: type: telephone_link @@ -191,7 +194,16 @@ content: settings: title: '' third_party_settings: { } - weight: 8 + weight: 0 + region: content + field_telephone: + type: entity_reference_revisions_entity_view + label: above + settings: + view_mode: default + link: '' + third_party_settings: { } + weight: 1 region: content flag_email_node: settings: { } diff --git a/config/sync/core.entity_view_display.node.vamc_system_billing_insurance.search_index.yml b/config/sync/core.entity_view_display.node.vamc_system_billing_insurance.search_index.yml index 7168fa4b4d..5b3d5e3dc6 100644 --- a/config/sync/core.entity_view_display.node.vamc_system_billing_insurance.search_index.yml +++ b/config/sync/core.entity_view_display.node.vamc_system_billing_insurance.search_index.yml @@ -17,13 +17,14 @@ dependencies: - field.field.node.vamc_system_billing_insurance.field_office_hours - field.field.node.vamc_system_billing_insurance.field_phone_number - field.field.node.vamc_system_billing_insurance.field_service_name_and_descripti + - field.field.node.vamc_system_billing_insurance.field_telephone - node.type.vamc_system_billing_insurance module: - entity_field_fetch + - entity_reference_revisions - field_group - layout_builder - office_hours - - telephone - user - viewfield third_party_settings: @@ -67,7 +68,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' parent_name: '' @@ -156,15 +157,16 @@ content: schema: enabled: false third_party_settings: { } - weight: 9 + weight: 10 region: content - field_phone_number: - type: telephone_link + field_telephone: + type: entity_reference_revisions_entity_view label: above settings: - title: '' + view_mode: default + link: '' third_party_settings: { } - weight: 8 + weight: 9 region: content flag_email_node: settings: { } @@ -192,6 +194,7 @@ hidden: field_enforce_unique_combo_offic: 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.node.vamc_system_billing_insurance.teaser.yml b/config/sync/core.entity_view_display.node.vamc_system_billing_insurance.teaser.yml index 8572b8e2a7..4f1759fc5a 100644 --- a/config/sync/core.entity_view_display.node.vamc_system_billing_insurance.teaser.yml +++ b/config/sync/core.entity_view_display.node.vamc_system_billing_insurance.teaser.yml @@ -17,6 +17,7 @@ dependencies: - field.field.node.vamc_system_billing_insurance.field_office_hours - field.field.node.vamc_system_billing_insurance.field_phone_number - field.field.node.vamc_system_billing_insurance.field_service_name_and_descripti + - field.field.node.vamc_system_billing_insurance.field_telephone - node.type.vamc_system_billing_insurance module: - user @@ -60,5 +61,6 @@ hidden: field_office_hours: true field_phone_number: true field_service_name_and_descripti: true + field_telephone: true langcode: true search_api_excerpt: true diff --git a/config/sync/core.extension.yml b/config/sync/core.extension.yml index 4b6e379fb0..51c1d36323 100644 --- a/config/sync/core.extension.yml +++ b/config/sync/core.extension.yml @@ -26,6 +26,7 @@ module: ckeditor_abbreviation: 0 clientside_validation: 0 clientside_validation_jquery: 0 + codit_batch_operations: 0 codit_menu_tools: 0 components: 0 computed_breadcrumbs: 0 @@ -255,6 +256,7 @@ module: va_gov_api: 0 va_gov_backend: 0 va_gov_banner: 0 + va_gov_batch: 0 va_gov_benefits: 0 va_gov_block_types: 0 va_gov_build_trigger: 0 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.node.health_care_local_facility.field_telephone.yml b/config/sync/field.field.node.health_care_local_facility.field_telephone.yml new file mode 100644 index 0000000000..b2853d4970 --- /dev/null +++ b/config/sync/field.field.node.health_care_local_facility.field_telephone.yml @@ -0,0 +1,167 @@ +uuid: 90bca6e7-be87-4ba7-a6ed-bcf1d31fd28f +langcode: en +status: true +dependencies: + config: + - field.storage.node.field_telephone + - node.type.health_care_local_facility + - paragraphs.paragraphs_type.phone_number + module: + - entity_reference_revisions + - tmgmt_content +third_party_settings: + tmgmt_content: + excluded: false +id: node.health_care_local_facility.field_telephone +field_name: field_telephone +entity_type: node +bundle: health_care_local_facility +label: 'Mental health phone number' +description: 'Enter the number Veterans should call to access mental health services at your facility. If your facility doesn''t offer these services, enter the most appropriate system number. This number will be displayed everywhere your facility appears across VA.gov. View guidelines for editing VAMC facilities (opens in a new tab)' +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.node.person_profile.field_telephone.yml b/config/sync/field.field.node.person_profile.field_telephone.yml new file mode 100644 index 0000000000..7e93000cd5 --- /dev/null +++ b/config/sync/field.field.node.person_profile.field_telephone.yml @@ -0,0 +1,167 @@ +uuid: 2395ef02-f573-4b46-bd42-e15753c47fc4 +langcode: en +status: true +dependencies: + config: + - field.storage.node.field_telephone + - node.type.person_profile + - paragraphs.paragraphs_type.phone_number + module: + - entity_reference_revisions + - tmgmt_content +third_party_settings: + tmgmt_content: + excluded: false +id: node.person_profile.field_telephone +field_name: field_telephone +entity_type: node +bundle: person_profile +label: 'Phone Number' +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.node.vamc_system_billing_insurance.field_telephone.yml b/config/sync/field.field.node.vamc_system_billing_insurance.field_telephone.yml new file mode 100644 index 0000000000..b2924b1d12 --- /dev/null +++ b/config/sync/field.field.node.vamc_system_billing_insurance.field_telephone.yml @@ -0,0 +1,167 @@ +uuid: b8b33f79-77c2-4b30-96a6-9592dc3a8b65 +langcode: en +status: true +dependencies: + config: + - field.storage.node.field_telephone + - node.type.vamc_system_billing_insurance + - paragraphs.paragraphs_type.phone_number + module: + - entity_reference_revisions + - tmgmt_content +third_party_settings: + tmgmt_content: + excluded: false +id: node.vamc_system_billing_insurance.field_telephone +field_name: field_telephone +entity_type: node +bundle: vamc_system_billing_insurance +label: 'Phone Number' +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.storage.node.field_telephone.yml b/config/sync/field.storage.node.field_telephone.yml new file mode 100644 index 0000000000..b3c1986e5e --- /dev/null +++ b/config/sync/field.storage.node.field_telephone.yml @@ -0,0 +1,21 @@ +uuid: 0289e2dd-f550-4a88-a94e-f00e40178bbc +langcode: en +status: true +dependencies: + module: + - entity_reference_revisions + - node + - paragraphs +id: node.field_telephone +field_name: field_telephone +entity_type: node +type: entity_reference_revisions +settings: + target_type: paragraph +module: entity_reference_revisions +locked: false +cardinality: 1 +translatable: true +indexes: { } +persist_with_no_fields: false +custom_storage: false diff --git a/config/sync/language/es/views.view.batch_operation_logs.yml b/config/sync/language/es/views.view.batch_operation_logs.yml new file mode 100644 index 0000000000..27c49cea8d --- /dev/null +++ b/config/sync/language/es/views.view.batch_operation_logs.yml @@ -0,0 +1,57 @@ +display: + default: + display_title: 'Por defecto' + display_options: + fields: + id: + label: ID + separator: ', ' + name: + label: Guión + separator: ', ' + executor: + separator: ', ' + completed: + label: Completado + separator: ', ' + created: + label: Empezado + separator: ', ' + last: + separator: ', ' + log: + label: Registro + separator: ', ' + errors: + label: Errores + separator: ', ' + user_id: + separator: ', ' + pager: + options: + tags: + next: ›› + previous: ‹‹ + expose: + items_per_page_label: 'Elementos por página' + items_per_page_options_all_label: '- Todo -' + offset_label: Desplazamiento + exposed_form: + options: + submit_button: Aplicar + reset_button_label: Restablecer + exposed_sorts_label: 'Ordenar por' + sort_asc_label: Asc + sort_desc_label: Desc + filters: + name: + expose: + label: Guión + completed: + expose: + label: Completado + header: + result: + content: 'Mostrando @start - @end de @total' + batch_operation_logs: + display_title: Página diff --git a/config/sync/views.view.batch_operation_logs.yml b/config/sync/views.view.batch_operation_logs.yml new file mode 100644 index 0000000000..c0314214ea --- /dev/null +++ b/config/sync/views.view.batch_operation_logs.yml @@ -0,0 +1,954 @@ +uuid: 447886df-6a25-41f1-b184-db317c883170 +langcode: en +status: true +dependencies: + module: + - codit_batch_operations + - options + - user +_core: + default_config_hash: AsCHe3h-J515IeaTuJ0x-HJ18uA2cEMAn3bfkmbqBpk +id: batch_operation_logs +label: 'Batch Operation Logs' +module: views +description: 'This View lists all Batch operation log entities' +tag: '' +base_table: batch_op_log +base_field: id +display: + default: + id: default + display_title: Default + display_plugin: default + position: 0 + display_options: + title: 'Batch Operation Logs' + fields: + id: + id: id + table: batch_op_log + field: id + relationship: none + group_type: group + admin_label: '' + entity_type: batch_op_log + entity_field: id + 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 + name: + id: name + table: batch_op_log + field: name + relationship: none + group_type: group + admin_label: '' + entity_type: batch_op_log + entity_field: name + plugin_id: field + label: Script + exclude: false + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: true + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + click_sort_column: value + type: string + settings: + link_to_entity: true + group_column: value + group_columns: { } + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false + executor: + id: executor + table: batch_op_log + field: executor + relationship: none + group_type: group + admin_label: '' + entity_type: batch_op_log + entity_field: executor + plugin_id: field + label: Executor + 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 + completed: + id: completed + table: batch_op_log + field: completed + relationship: none + group_type: group + admin_label: '' + entity_type: batch_op_log + entity_field: completed + plugin_id: field + label: Completed + exclude: false + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: true + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + click_sort_column: value + type: boolean + settings: + format: unicode-yes-no + format_custom_false: '' + format_custom_true: '' + group_column: value + group_columns: { } + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false + created: + id: created + table: batch_op_log + field: created + relationship: none + group_type: group + admin_label: '' + entity_type: batch_op_log + entity_field: created + plugin_id: field + label: Started + 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 + last: + id: last + table: batch_op_log + field: last + relationship: none + group_type: group + admin_label: '' + entity_type: batch_op_log + entity_field: last + plugin_id: field + label: 'Last iteration' + 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 + log: + id: log + table: batch_op_log + field: log + relationship: none + group_type: group + admin_label: '' + entity_type: batch_op_log + entity_field: log + plugin_id: field + label: Log + 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: 30 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: true + 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 + errors: + id: errors + table: batch_op_log + field: errors + relationship: none + group_type: group + admin_label: '' + entity_type: batch_op_log + entity_field: errors + plugin_id: field + label: Errors + exclude: false + alter: + alter_text: true + text: "{% if errors %}\r\n Errors\r\n{% endif %}" + 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 + user_id: + id: user_id + table: batch_op_log + field: user_id + relationship: none + group_type: group + admin_label: '' + entity_type: batch_op_log + entity_field: user_id + plugin_id: field + label: 'Run by' + 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 + pager: + type: mini + options: + offset: 0 + items_per_page: 50 + total_pages: null + id: 0 + tags: + next: ›› + previous: ‹‹ + expose: + items_per_page: false + items_per_page_label: 'Items per page' + items_per_page_options: '5, 10, 25, 50' + items_per_page_options_all: false + items_per_page_options_all_label: '- All -' + offset: false + offset_label: Offset + pagination_heading_level: h2 + exposed_form: + type: basic + options: + submit_button: Apply + reset_button: true + reset_button_label: Reset + exposed_sorts_label: 'Sort by' + expose_sort_order: true + sort_asc_label: Asc + sort_desc_label: Desc + access: + type: perm + options: + perm: 'view codit batch operations log' + cache: + type: tag + options: { } + empty: + area: + id: area + table: views + field: area + relationship: none + group_type: group + admin_label: '' + plugin_id: text + empty: true + content: + value: 'There are no logs that match your search.' + format: plain_text + tokenize: false + sorts: { } + arguments: { } + filters: + name: + id: name + table: batch_op_log + field: name + relationship: none + group_type: group + admin_label: '' + entity_type: batch_op_log + entity_field: name + plugin_id: string + operator: contains + value: '' + group: 1 + exposed: true + expose: + operator_id: name_op + label: Script + description: '' + use_operator: false + operator: name_op + operator_limit_selection: false + operator_list: { } + identifier: script + required: false + remember: false + multiple: false + 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: { } + executor: + id: executor + table: batch_op_log + field: executor + relationship: none + group_type: group + admin_label: '' + entity_type: batch_op_log + entity_field: executor + plugin_id: string + operator: '=' + value: '' + group: 1 + exposed: true + expose: + operator_id: executor_op + label: Executor + description: '' + use_operator: false + operator: executor_op + operator_limit_selection: false + operator_list: { } + identifier: executor + required: false + remember: false + multiple: false + remember_roles: + authenticated: authenticated + anonymous: '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: { } + completed: + id: completed + table: batch_op_log + field: completed + relationship: none + group_type: group + admin_label: '' + entity_type: batch_op_log + entity_field: completed + plugin_id: boolean + operator: '=' + value: All + group: 1 + exposed: true + expose: + operator_id: '' + label: Completed + description: '' + use_operator: false + operator: completed_op + operator_limit_selection: false + operator_list: { } + identifier: completed + required: false + remember: false + multiple: false + remember_roles: + authenticated: authenticated + anonymous: '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: { } + filter_groups: + operator: AND + groups: + 1: AND + style: + type: table + options: + grouping: { } + row_class: '' + default_row_class: true + columns: + id: id + name: name + executor: executor + completed: completed + created: created + last: last + log: log + errors: errors + user_id: user_id + default: last + info: + id: + sortable: true + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + name: + sortable: true + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + executor: + sortable: true + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + completed: + sortable: true + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + created: + sortable: true + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + last: + sortable: true + default_sort_order: desc + align: '' + separator: '' + empty_column: false + responsive: '' + log: + sortable: false + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + errors: + sortable: true + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + user_id: + sortable: true + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + override: true + sticky: true + summary: '' + empty_table: false + caption: 'Batch Operation Log results' + description: '' + row: + type: fields + query: + type: views_query + options: + query_comment: '' + disable_sql_rewrite: false + distinct: false + replica: false + query_tags: { } + relationships: { } + 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.permissions + tags: { } + batch_operation_logs: + id: batch_operation_logs + display_title: Page + display_plugin: page + position: 1 + display_options: + display_extenders: + jsonapi_views: + enabled: false + path: admin/config/development/batch_operations/log + cache_metadata: + max-age: -1 + contexts: + - 'languages:language_content' + - 'languages:language_interface' + - url + - url.query_args + - user.permissions + tags: { } diff --git a/config/sync/views.view.rich_text_field_audit.yml b/config/sync/views.view.rich_text_field_audit.yml index 98190d4528..37aaec00df 100644 --- a/config/sync/views.view.rich_text_field_audit.yml +++ b/config/sync/views.view.rich_text_field_audit.yml @@ -14,6 +14,8 @@ dependencies: - field.storage.node.field_press_release_blurb - field.storage.node.field_press_release_fulltext - field.storage.node.field_va_health_connect_phone + - field.storage.paragraph.field_phone_extension + - field.storage.paragraph.field_phone_number - node.type.banner - node.type.basic_landing_page - node.type.campaign_landing_page @@ -4044,7 +4046,7 @@ display: group_type: group admin_label: '' plugin_id: field - label: 'Mental Health Phone' + label: 'Mental Health Phone (old)' exclude: false alter: alter_text: false @@ -4162,6 +4164,130 @@ display: 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 @@ -4584,9 +4710,20 @@ display: 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_extenders: jsonapi_views: @@ -4621,6 +4758,1411 @@ display: - '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 + 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 diff --git a/docroot/modules/custom/va_gov_batch/README.md b/docroot/modules/custom/va_gov_batch/README.md new file mode 100644 index 0000000000..d9ab2b9bcc --- /dev/null +++ b/docroot/modules/custom/va_gov_batch/README.md @@ -0,0 +1,22 @@ +## INTRODUCTION + +The VA.gov Batch Operations (Codit) module houses batch (or non-batch) classes that work with the codit_batch_operations module. + +The Codit: Batch Operations module makes writing batch operations easier by leveraging OOP. + +Use this module only to interact with codit_batch_operations processes and classes. + +## REQUIREMENTS + +drupal/codit_batch_operations + +## INSTALLATION + +Install as you would normally install a contributed Drupal module. +See: https://www.drupal.org/node/895232 for further information. + +## MAINTAINERS + +Current maintainers for va_gov_batch: + +- https://github.com/orgs/department-of-veterans-affairs/teams/public-websites-cms diff --git a/docroot/modules/custom/va_gov_batch/src/cbo_scripts/MigratePhoneFieldToParagraph.php b/docroot/modules/custom/va_gov_batch/src/cbo_scripts/MigratePhoneFieldToParagraph.php new file mode 100644 index 0000000000..c4b2b1e331 --- /dev/null +++ b/docroot/modules/custom/va_gov_batch/src/cbo_scripts/MigratePhoneFieldToParagraph.php @@ -0,0 +1,179 @@ +condition('type', 'person_profile') + ->accessCheck(FALSE) + ->condition($this->sourceFieldName, operator: 'IS NOT NULL') + ->execute(); + } + + /** + * {@inheritdoc} + */ + public function processOne(string $key, mixed $item, array &$sandbox): string { + $node = Node::load($item); + $paragraphs = []; + foreach ($node->get($this->sourceFieldName) as $field_value) { + try { + $telephoneParagraph = $this->createParagraph($node, $field_value); + $telephoneParagraph->save(); + $paragraphs[] = $telephoneParagraph; + } + catch (EntityStorageException $e) { + $message = "Unable to create paragraph. Reason provided: " . $e->getMessage(); + $this->batchOpLog->appendError($message); + return $message; + } + } + // Set the new phone value(s) on the node. + $node->set(name: $this->targetFieldName, value: array_map(callback: fn($paragraph) => [ + /** @var \Drupal\paragraphs\Entity\Paragraph $paragraph */ + 'target_id' => $paragraph->id(), + 'target_revision_id' => $paragraph->getRevisionId(), + ], array: $paragraphs)); + + $message = 'Telephone migration complete for node ' . $node->id(); + $this->saveNodeRevision($node, $message); + return $message; + } + + /** + * Creates the paragraph. + * + * @param \Drupal\node\NodeInterface $node + * The node. + * @param \Drupal\telephone\Plugin\Field\FieldType\TelephoneItem $value + * The field item. + * + * @return \Drupal\paragraphs\ParagraphInterface + * The paragraph. + */ + private function createParagraph(NodeInterface $node, TelephoneItem $value): ParagraphInterface { + assert(!empty($value->getValue()['value'])); + // Breakout $value into discrete phone and extension values. + $value = $value->getValue()['value']; + $data = $this->extractPhoneAndExtension($value); + $phone = $data['phone']; + $extension = $data['extension']; + return Paragraph::create([ + 'type' => 'phone_number', + 'field_phone_number' => $phone, + 'field_phone_extension' => $extension, + 'status' => 1, + 'revision_default' => 1, + 'isDefaultRevision' => 1, + 'parent_type' => 'node', + 'parent_field_name' => $this->targetFieldName, + 'parent_id' => $node->id(), + 'revision_translation_affected' => 1, + ]); + } + + /** + * Extracts phone and extension into distinct values. + * + * @param string $input + * The phone and extension as a single concatenated string. eg: + * 503-555-1212, x1234. + * + * @return array + * The extracted and parsed phone and extension. Phone will be in the + * nnn-nnn-nnnn format while the extension will contain only integers. + */ + public static function extractPhoneAndExtension(string $input): array { + $phoneNumberUtil = PhoneNumberUtil::getInstance(); + $phoneNumberMatcher = $phoneNumberUtil->findNumbers($input, 'US'); + $phoneNumberMatcher->next(); + $extension = $phoneNumberMatcher->current()?->number()->getExtension() ?? ''; + $phone = $phoneNumberMatcher->current()?->number()->getNationalNumber() ?? ''; + $phoneLength = strlen($phone); + + // Destination field allows only 12 digits for phone, and truncating will + // result in data loss. + if ($phoneLength > 12) { + $message = sprintf('Phone number is too long. Number provided: %s', $phoneLength); + \Drupal::logger('va_gov_batch::phone_length_exceeded')->error($message); + $phone = $message; + } + + // If phone length is 10 digits, format it in the nnn-nnn-nnnn format. + if ($phoneLength === 10) { + $phone = preg_replace('/(\d{3})(\d{3})(\d{4})/', '$1-$2-$3', $phone); + } + + return [ + 'phone' => $phone, + 'extension' => $extension, + ]; + } + +} diff --git a/docroot/modules/custom/va_gov_batch/src/cbo_scripts/MigrateVamcBillingInsurancePhoneFieldToParagraph.php b/docroot/modules/custom/va_gov_batch/src/cbo_scripts/MigrateVamcBillingInsurancePhoneFieldToParagraph.php new file mode 100644 index 0000000000..e79bd96263 --- /dev/null +++ b/docroot/modules/custom/va_gov_batch/src/cbo_scripts/MigrateVamcBillingInsurancePhoneFieldToParagraph.php @@ -0,0 +1,31 @@ +condition('type', 'vamc_system_billing_insurance') + ->accessCheck(FALSE) + ->condition($this->sourceFieldName, operator: 'IS NOT NULL') + ->execute(); + } + +} diff --git a/docroot/modules/custom/va_gov_batch/src/cbo_scripts/MigrateVamcFacilityMentalHealthPhoneFieldToParagraph.php b/docroot/modules/custom/va_gov_batch/src/cbo_scripts/MigrateVamcFacilityMentalHealthPhoneFieldToParagraph.php new file mode 100644 index 0000000000..77d4553d02 --- /dev/null +++ b/docroot/modules/custom/va_gov_batch/src/cbo_scripts/MigrateVamcFacilityMentalHealthPhoneFieldToParagraph.php @@ -0,0 +1,56 @@ +condition('type', 'health_care_local_facility') + ->accessCheck(FALSE) + ->condition($this->sourceFieldName, operator: 'IS NOT NULL') + ->execute(); + } + +} diff --git a/docroot/modules/custom/va_gov_batch/va_gov_batch.info.yml b/docroot/modules/custom/va_gov_batch/va_gov_batch.info.yml new file mode 100644 index 0000000000..5079da1749 --- /dev/null +++ b/docroot/modules/custom/va_gov_batch/va_gov_batch.info.yml @@ -0,0 +1,7 @@ +name: 'VA.gov Batch Operations (Codit)' +type: module +description: 'Houses batch operations utilizing the codit_batch_operations module.' +package: VA.gov +core_version_requirement: ^10 || ^11 +dependencies: + - codit_batch_operations:codit_batch_operations 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 d641bc26d9..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. * @@ -407,12 +441,33 @@ protected function shouldPushSystem(NodeInterface $entity) { * Gathers the mental health phone number from the facility. * * @see https://github.com/department-of-veterans-affairs/va.gov-cms/issues/15686 + * @see https://github.com/department-of-veterans-affairs/va.gov-cms/issues/17862 * * @return string * The mental health phone number. */ protected function getFacilityMentalHealthPhone(): string { - $mental_health_phone = $this->getFieldSafe('field_mental_health_phone'); + $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'); + } + 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 52538c5829..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. * @@ -81,6 +126,8 @@ public function entityTypeAlter(EntityTypeAlterEvent $event): void { */ public function alterstaffProfileNodeForm(FormIdAlterEvent $event): void { $this->addStateManagementToBioFields($event); + $this->removePhoneLabel($event); + $this->showTelephone($event); } /** @@ -131,4 +178,34 @@ 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. + * + * @param \Drupal\core_event_dispatcher\Event\Form\FormIdAlterEvent $event + * The form event. + */ + private function removePhoneLabel(FormIdAlterEvent $event): void { + $form = &$event->getForm(); + $form['field_telephone']['widget'][0]['subform']['field_phone_label']['#access'] = FALSE; + } + } 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 5225332876..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; @@ -41,8 +42,8 @@ public static function getSubscribedEvents(): array { 'hook_event_dispatcher.form_node_regional_health_care_service_des_edit_form.alter' => 'alterRegionalHealthCareServiceDesNodeForm', 'hook_event_dispatcher.form_node_regional_health_care_service_des_form.alter' => 'alterRegionalHealthCareServiceDesNodeForm', 'hook_event_dispatcher.form_node_vamc_operating_status_and_alerts_edit_form.alter' => 'alterOpStatusNodeForm', - 'hook_event_dispatcher.form_node_vamc_system_billing_insurance_edit_form.alter' => 'alterTopTaskNodeForm', - 'hook_event_dispatcher.form_node_vamc_system_billing_insurance_form.alter' => 'alterTopTaskNodeForm', + 'hook_event_dispatcher.form_node_vamc_system_billing_insurance_edit_form.alter' => 'alterVamcSystemBillingAndInsuranceForm', + 'hook_event_dispatcher.form_node_vamc_system_billing_insurance_form.alter' => 'alterVamcSystemBillingAndInsuranceForm', 'hook_event_dispatcher.form_node_vamc_system_medical_records_offi_edit_form.alter' => 'alterTopTaskNodeForm', 'hook_event_dispatcher.form_node_vamc_system_medical_records_offi_form.alter' => 'alterTopTaskNodeForm', 'hook_event_dispatcher.form_node_vamc_system_policies_page_edit_form.alter' => 'alterTopTaskNodeForm', @@ -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, @@ -127,7 +137,8 @@ public function __construct( Flagger $flagger, UserPermsService $user_perms_service, ContentHardeningDeduper $content_hardening_deduper, - NotificationsManager $notifications_manager + 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']); + } } /** @@ -305,6 +345,17 @@ public function addCovidStatusData(array &$form, FormStateInterface $form_state) } } + /** + * Removes the phone label on VAMC facility content type forms. + * + * @param \Drupal\core_event_dispatcher\Event\Form\FormIdAlterEvent $event + * The event. + */ + private function removePhoneLabel(FormIdAlterEvent $event): void { + $form = &$event->getForm(); + $form['field_telephone']['widget'][0]['subform']['field_phone_label']['#access'] = FALSE; + } + /** * Alter VAMC Facility node form. * @@ -315,6 +366,8 @@ public function alterFacilityNodeForm(FormIdAlterEvent $event): void { $form = &$event->getForm(); $form_state = $event->getFormState(); $this->addCovidStatusData($form, $form_state); + $this->removePhoneLabel($event); + $this->showTelephone($event); } /** @@ -340,6 +393,42 @@ public function alterTopTaskNodeForm(FormIdAlterEvent $event): void { $form['title']['#disabled'] = 'disabled'; } + /** + * Alter the VAMC System and Billing Insurance node form.. + * + * @param \Drupal\core_event_dispatcher\Event\Form\FormIdAlterEvent $event + * The event. + */ + 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']); + } + } + /** * Add js script and disallowed nids to Full Width Banner node form. * 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/person_profile.feature b/tests/cypress/integration/features/content_type/person_profile.feature index 6350ec347d..8961d5d739 100644 --- a/tests/cypress/integration/features/content_type/person_profile.feature +++ b/tests/cypress/integration/features/content_type/person_profile.feature @@ -8,6 +8,7 @@ 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 "First name" with "James" And I fill in "Last name" with "Smith" And I fill in field with selector "#edit-revision-log-0-value" with value "[Test Data] Revision log message." diff --git a/tests/phpunit/va_gov_batch/unit/Class/MigratePhoneFieldToParagraphTest.php b/tests/phpunit/va_gov_batch/unit/Class/MigratePhoneFieldToParagraphTest.php new file mode 100644 index 0000000000..1ffed8e383 --- /dev/null +++ b/tests/phpunit/va_gov_batch/unit/Class/MigratePhoneFieldToParagraphTest.php @@ -0,0 +1,64 @@ +assertSame($expectedPhone, $result['phone']); + $this->assertSame($expectedExtension, $result['extension']); + } + + /** + * Data provider for testExtractPhoneAndExtension. + */ + public function phoneNumberProvider() { + return [ + 'Test case 1: with ext keyword' => [ + 'input' => '718-584-9000, ext. 4400', + 'expectedPhone' => '718-584-9000', + 'expectedExtension' => '4400', + ], + 'Test case 2: with x keyword' => [ + 'input' => '205-933-8101 x4737', + 'expectedPhone' => '205-933-8101', + 'expectedExtension' => '4737', + ], + 'Test case 3: without extension' => [ + 'input' => '+1-918-781-5678', + 'expectedPhone' => '918-781-5678', + 'expectedExtension' => '', + ], + 'Test case 4: with text and phone' => [ + 'input' => '888-GIBILL-1 (888-442-4551)', + 'expectedPhone' => '888-442-4551', + 'expectedExtension' => '', + ], + 'Test case 5: multiple phone numbers with extension' => [ + 'input' => '602-277-5551, ext. 2173 or 800-554-7174 (toll free)', + 'expectedPhone' => '602-277-5551', + 'expectedExtension' => '2173', + ], + 'Test case 6: multiple extensions' => [ + 'input' => '304-263-0811, ext. 3300 or 3302', + 'expectedPhone' => '304-263-0811', + 'expectedExtension' => '3300', + ], + ]; + } + +}