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',
+ ],
+ ];
+ }
+
+}