From 7ba0d47f550d90dcd0da00b7e09ce9574fecc7fa Mon Sep 17 00:00:00 2001 From: Christian Burk Date: Tue, 24 Oct 2023 11:46:10 -0500 Subject: [PATCH 01/25] VACMS-15422: Makes Vet Center - Outstation names more like Vet Center (#15716) * VACMS-15422: Makes outstations more like vet centers * VACMS-15422: Migration config and code updated for title and official name. * VACMS-15422: Reverts revision log * VACMS-15422: Removes install file. We need to the config first. * VACMS-15422: Adds script for updating facilities in prod. --- ...rride.node.vet_center_outstation.title.yml | 2 +- ...lay.node.vet_center_outstation.default.yml | 57 ++++----- ...lay.node.vet_center_outstation.default.yml | 27 ++++- ...vet_center_outstation.external_content.yml | 2 + ...play.node.vet_center_outstation.teaser.yml | 2 + ..._center_outstation.field_official_name.yml | 24 ++++ ...ration.va_node_facility_vet_centers_os.yml | 4 +- .../sync/node.type.vet_center_outstation.yml | 6 +- .../va_gov_consumers/va_gov_consumers.module | 3 + ...ration.va_node_facility_vet_centers_os.yml | 4 +- .../va_gov_migrate/va_gov_migrate.module | 7 +- .../custom/va_gov_vet_center/js/script.es6.js | 2 +- .../custom/va_gov_vet_center/js/script.js | 19 +-- .../EventSubscriber/EntityEventSubscriber.php | 15 +-- ...15422-vet-center-outstation-copy-title.php | 112 ++++++++++++++++++ 15 files changed, 219 insertions(+), 67 deletions(-) create mode 100644 config/sync/field.field.node.vet_center_outstation.field_official_name.yml create mode 100644 scripts/content/VACMS-15422-vet-center-outstation-copy-title.php diff --git a/config/sync/core.base_field_override.node.vet_center_outstation.title.yml b/config/sync/core.base_field_override.node.vet_center_outstation.title.yml index 3f04877275..f78b811862 100644 --- a/config/sync/core.base_field_override.node.vet_center_outstation.title.yml +++ b/config/sync/core.base_field_override.node.vet_center_outstation.title.yml @@ -8,7 +8,7 @@ id: node.vet_center_outstation.title field_name: title entity_type: node bundle: vet_center_outstation -label: Title +label: 'Common name' description: '' required: true translatable: false diff --git a/config/sync/core.entity_form_display.node.vet_center_outstation.default.yml b/config/sync/core.entity_form_display.node.vet_center_outstation.default.yml index 033e200c52..f7e5cc6b5c 100644 --- a/config/sync/core.entity_form_display.node.vet_center_outstation.default.yml +++ b/config/sync/core.entity_form_display.node.vet_center_outstation.default.yml @@ -11,6 +11,7 @@ dependencies: - field.field.node.vet_center_outstation.field_media - field.field.node.vet_center_outstation.field_office - field.field.node.vet_center_outstation.field_office_hours + - field.field.node.vet_center_outstation.field_official_name - field.field.node.vet_center_outstation.field_operating_status_facility - field.field.node.vet_center_outstation.field_operating_status_more_info - field.field.node.vet_center_outstation.field_phone_number @@ -39,7 +40,7 @@ third_party_settings: label: 'Editorial workflow' region: content parent_name: '' - weight: 7 + weight: 6 format_type: fieldset format_settings: classes: '' @@ -52,7 +53,7 @@ third_party_settings: label: 'Section settings' region: content parent_name: '' - weight: 6 + weight: 5 format_type: details_sidebar format_settings: classes: '' @@ -63,12 +64,13 @@ third_party_settings: weight: 0 group_facility_name: children: - - group_page_title_tooltip + - field_official_name + - title - field_office label: 'Facility name' region: content parent_name: '' - weight: 1 + weight: 2 format_type: fieldset format_settings: classes: '' @@ -76,24 +78,6 @@ third_party_settings: id: facility-name description: '' required_fields: true - group_page_title_tooltip: - children: { } - label: 'Page title' - region: content - parent_name: group_facility_name - weight: 20 - format_type: tooltip - format_settings: - show_empty_fields: '1' - show_label: '0' - tooltip_description: "Why can’t I edit this?\r\nThis content is automatically populated from centralized databases, and helps maintain consistent information across all of VA.gov." - description: 'Page title' - required_fields: '1' - id: '' - classes: 'not-editable ' - element: div - label_element: h3 - attributes: '' group_locations_and_contact_info: children: - group_vet_center_data @@ -115,7 +99,7 @@ third_party_settings: label: 'Operating status' region: content parent_name: '' - weight: 2 + weight: 1 format_type: fieldset format_settings: classes: '' @@ -181,20 +165,20 @@ content: third_party_settings: { } field_last_saved_by_an_editor: type: datetime_timestamp - weight: 26 + weight: 7 region: content settings: { } third_party_settings: { } field_media: type: media_library_widget - weight: 5 + weight: 4 region: content settings: media_types: { } third_party_settings: { } field_office: type: options_select - weight: 21 + weight: 15 region: content settings: { } third_party_settings: { } @@ -202,7 +186,16 @@ content: type: office_hours_default weight: 25 region: content - settings: { } + settings: + collapsed: false + third_party_settings: { } + field_official_name: + type: string_textfield + weight: 9 + region: content + settings: + size: 60 + placeholder: '' third_party_settings: { } field_operating_status_facility: type: options_select @@ -220,6 +213,7 @@ 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: { } @@ -253,6 +247,14 @@ content: region: content settings: { } third_party_settings: { } + title: + type: string_textfield + weight: 11 + region: content + settings: + size: 60 + placeholder: '' + third_party_settings: { } hidden: created: true langcode: true @@ -260,6 +262,5 @@ hidden: promote: true status: true sticky: true - title: true uid: true url_redirects: true diff --git a/config/sync/core.entity_view_display.node.vet_center_outstation.default.yml b/config/sync/core.entity_view_display.node.vet_center_outstation.default.yml index 11f2b157d4..562bea320e 100644 --- a/config/sync/core.entity_view_display.node.vet_center_outstation.default.yml +++ b/config/sync/core.entity_view_display.node.vet_center_outstation.default.yml @@ -11,6 +11,7 @@ dependencies: - field.field.node.vet_center_outstation.field_media - field.field.node.vet_center_outstation.field_office - field.field.node.vet_center_outstation.field_office_hours + - field.field.node.vet_center_outstation.field_official_name - field.field.node.vet_center_outstation.field_operating_status_facility - field.field.node.vet_center_outstation.field_operating_status_more_info - field.field.node.vet_center_outstation.field_phone_number @@ -35,7 +36,7 @@ third_party_settings: label: 'Operating status' parent_name: '' region: content - weight: 1 + weight: 2 format_type: fieldset format_settings: classes: '' @@ -48,7 +49,7 @@ third_party_settings: label: 'Location and contact information' parent_name: '' region: content - weight: 2 + weight: 3 format_type: fieldset format_settings: classes: '' @@ -81,7 +82,7 @@ third_party_settings: label: 'External content' parent_name: '' region: hidden - weight: 14 + weight: 20 format_type: fieldset format_settings: classes: '' @@ -114,8 +115,10 @@ content: settings: image_link: '' image_style: 3_2_medium_thumbnail + image_loading: + attribute: lazy third_party_settings: { } - weight: 3 + weight: 4 region: content field_office: type: entity_reference_label @@ -135,6 +138,7 @@ content: grouped: false show_closed: all closed_format: '' + all_day_format: 'All day open' separator: days: '
' grouped_days: ' - ' @@ -145,6 +149,11 @@ content: position: '' open_text: 'Currently open!' closed_text: 'Currently closed' + exceptions: + title: 'Exception hours' + restrict_exceptions_to_num_days: 7 + date_format: long + all_day_format: 'All day open' timezone_field: '' office_hours_first_day: '' schema: @@ -152,6 +161,14 @@ content: third_party_settings: { } weight: 6 region: content + field_official_name: + type: string + label: above + settings: + link_to_entity: false + third_party_settings: { } + weight: 1 + region: content field_operating_status_facility: type: list_default label: visually_hidden @@ -179,7 +196,7 @@ content: label: above settings: { } third_party_settings: { } - weight: 15 + weight: 5 region: content hidden: breadcrumbs: true diff --git a/config/sync/core.entity_view_display.node.vet_center_outstation.external_content.yml b/config/sync/core.entity_view_display.node.vet_center_outstation.external_content.yml index 2245174bbc..a5b514b43d 100644 --- a/config/sync/core.entity_view_display.node.vet_center_outstation.external_content.yml +++ b/config/sync/core.entity_view_display.node.vet_center_outstation.external_content.yml @@ -12,6 +12,7 @@ dependencies: - field.field.node.vet_center_outstation.field_media - field.field.node.vet_center_outstation.field_office - field.field.node.vet_center_outstation.field_office_hours + - field.field.node.vet_center_outstation.field_official_name - field.field.node.vet_center_outstation.field_operating_status_facility - field.field.node.vet_center_outstation.field_operating_status_more_info - field.field.node.vet_center_outstation.field_phone_number @@ -109,6 +110,7 @@ hidden: field_last_saved_by_an_editor: true field_media: true field_office: true + field_official_name: true field_operating_status_facility: true field_operating_status_more_info: true field_table_of_contents: true diff --git a/config/sync/core.entity_view_display.node.vet_center_outstation.teaser.yml b/config/sync/core.entity_view_display.node.vet_center_outstation.teaser.yml index 0674520116..4c44d23ad4 100644 --- a/config/sync/core.entity_view_display.node.vet_center_outstation.teaser.yml +++ b/config/sync/core.entity_view_display.node.vet_center_outstation.teaser.yml @@ -12,6 +12,7 @@ dependencies: - field.field.node.vet_center_outstation.field_media - field.field.node.vet_center_outstation.field_office - field.field.node.vet_center_outstation.field_office_hours + - field.field.node.vet_center_outstation.field_official_name - field.field.node.vet_center_outstation.field_operating_status_facility - field.field.node.vet_center_outstation.field_operating_status_more_info - field.field.node.vet_center_outstation.field_phone_number @@ -44,6 +45,7 @@ hidden: field_media: true field_office: true field_office_hours: true + field_official_name: true field_operating_status_facility: true field_operating_status_more_info: true field_phone_number: true diff --git a/config/sync/field.field.node.vet_center_outstation.field_official_name.yml b/config/sync/field.field.node.vet_center_outstation.field_official_name.yml new file mode 100644 index 0000000000..108472617e --- /dev/null +++ b/config/sync/field.field.node.vet_center_outstation.field_official_name.yml @@ -0,0 +1,24 @@ +uuid: c0d320aa-e37e-4745-9af0-157e4fdc6c7f +langcode: en +status: true +dependencies: + config: + - field.storage.node.field_official_name + - node.type.vet_center_outstation + module: + - tmgmt_content +third_party_settings: + tmgmt_content: + excluded: false +id: node.vet_center_outstation.field_official_name +field_name: field_official_name +entity_type: node +bundle: vet_center_outstation +label: 'Name of Vet Center - Oustation' +description: 'The official name of the Vet Center. To request a correction or update, email an administrator.' +required: false +translatable: true +default_value: { } +default_value_callback: '' +settings: { } +field_type: string diff --git a/config/sync/migrate_plus.migration.va_node_facility_vet_centers_os.yml b/config/sync/migrate_plus.migration.va_node_facility_vet_centers_os.yml index 3f34ae9c76..5f49e070b0 100644 --- a/config/sync/migrate_plus.migration.va_node_facility_vet_centers_os.yml +++ b/config/sync/migrate_plus.migration.va_node_facility_vet_centers_os.yml @@ -100,7 +100,7 @@ process: method: row value: - OS - title: + field_official_name: plugin: skip_on_empty method: row source: name @@ -236,13 +236,13 @@ destination: - field_geolocation - field_phone_number - field_office_hours + - field_official_name - field_timezone - new_revision - revision_default - revision_log - revision_timestamp - revision_uid - - title - uid migration_dependencies: required: { } diff --git a/config/sync/node.type.vet_center_outstation.yml b/config/sync/node.type.vet_center_outstation.yml index 6e955407ed..a437936a55 100644 --- a/config/sync/node.type.vet_center_outstation.yml +++ b/config/sync/node.type.vet_center_outstation.yml @@ -3,6 +3,7 @@ langcode: en status: true dependencies: module: + - menu_force - menu_ui - node_title_help_text third_party_settings: @@ -11,10 +12,13 @@ third_party_settings: parent: '' node_title_help_text: title_help: '' + menu_force: + menu_force: false + menu_force_parent: false name: 'Vet Center - Outstation' type: vet_center_outstation description: 'Location information for remote facilities related to a main Vet Center.' -help: '' +help: 'This name will be used in Veteran-facing content.' new_revision: true preview_mode: 0 display_submitted: false diff --git a/docroot/modules/custom/va_gov_consumers/va_gov_consumers.module b/docroot/modules/custom/va_gov_consumers/va_gov_consumers.module index a8a9160e88..adc6ead194 100644 --- a/docroot/modules/custom/va_gov_consumers/va_gov_consumers.module +++ b/docroot/modules/custom/va_gov_consumers/va_gov_consumers.module @@ -66,6 +66,8 @@ function _va_gov_consumers_return_vet_center_form_names() { return [ 'node_vet_center_edit_form', 'node_vet_center_form', + 'node_vet_center_outstation_edit_form', + 'node_vet_center_outstation_form', ]; } @@ -201,6 +203,7 @@ function _va_gov_consumers_modify_facility_fields(array &$form, $form_id, FormSt $content_types_hiding_title = [ 'health_care_local_facility', 'nca_facility', + 'vet_center_outstation', ]; if (!in_array($node->getType(), $content_types_hiding_title)) { $form['group_page_title_tooltip']['top_of_page_information'] = $form['top_of_page_information']; diff --git a/docroot/modules/custom/va_gov_migrate/config/install/migrate_plus.migration.va_node_facility_vet_centers_os.yml b/docroot/modules/custom/va_gov_migrate/config/install/migrate_plus.migration.va_node_facility_vet_centers_os.yml index 064208312b..ecfe799e33 100644 --- a/docroot/modules/custom/va_gov_migrate/config/install/migrate_plus.migration.va_node_facility_vet_centers_os.yml +++ b/docroot/modules/custom/va_gov_migrate/config/install/migrate_plus.migration.va_node_facility_vet_centers_os.yml @@ -108,7 +108,7 @@ process: method: row value: - OS - title: + field_official_name: plugin: skip_on_empty method: row source: name @@ -251,13 +251,13 @@ destination: - 'field_geolocation' - field_phone_number - field_office_hours + - field_official_name - field_timezone - new_revision - revision_default - revision_log - revision_timestamp - revision_uid - - title - uid # Dependency on other migrations. migration_dependencies: diff --git a/docroot/modules/custom/va_gov_migrate/va_gov_migrate.module b/docroot/modules/custom/va_gov_migrate/va_gov_migrate.module index fe36d380e9..0aab4b0616 100644 --- a/docroot/modules/custom/va_gov_migrate/va_gov_migrate.module +++ b/docroot/modules/custom/va_gov_migrate/va_gov_migrate.module @@ -54,18 +54,19 @@ function _va_gov_migrate_process_va_form(EntityInterface &$entity) { } /** - * Set default Vet Center title. + * Set default Vet Center or Vet Center - Outstation title. * * @param \Drupal\Core\Entity\EntityInterface $entity * Entity. */ function _va_gov_migrate_set_default_vet_center_title(EntityInterface &$entity) { - if ($entity->bundle() !== 'vet_center' || (!$entity instanceof NodeInterface)) { + $bundles = ['vet_center', 'vet_center_outstation']; + if (!in_array($entity->bundle(), $bundles) || (!$entity instanceof NodeInterface)) { return; } /** @var \Drupal\node\NodeInterface $entity */ - // If a Vet Center title is empty copy the value from field_official_name. + // If a title is empty, copy the value from field_official_name. if (empty($entity->getTitle())) { $default_title = $entity->get('field_official_name')->value ?: '- none -'; $entity->setTitle($default_title); diff --git a/docroot/modules/custom/va_gov_vet_center/js/script.es6.js b/docroot/modules/custom/va_gov_vet_center/js/script.es6.js index 3b5c7522ce..81f885bb81 100644 --- a/docroot/modules/custom/va_gov_vet_center/js/script.es6.js +++ b/docroot/modules/custom/va_gov_vet_center/js/script.es6.js @@ -45,7 +45,7 @@ }); const adminRoles = ["content_admin", "administrator"]; - const targetTypes = ["vet_center"]; + const targetTypes = ["vet_center", "vet_center_outstation"]; // If we are on a target type and user isn't admin, add a title, // and label to fieldgroup. if ( diff --git a/docroot/modules/custom/va_gov_vet_center/js/script.js b/docroot/modules/custom/va_gov_vet_center/js/script.js index 6511439582..59b4fadcb7 100644 --- a/docroot/modules/custom/va_gov_vet_center/js/script.js +++ b/docroot/modules/custom/va_gov_vet_center/js/script.js @@ -4,59 +4,44 @@ * https://www.drupal.org/node/2815083 * @preserve **/ - (function ($, Drupal) { Drupal.behaviors.vetCenterVastDataNodeOutputManipulation = { attach: function attach(context) { if (context.querySelectorAll(".admin-help-email-tpl").length) { var emailLinks = context.querySelectorAll(".admin-help-email-tpl"); - var facilityID = context.querySelector(".field--name-field-facility-locator-api-id .field__item") ? context.querySelector(".field--name-field-facility-locator-api-id .field__item").textContent : context.querySelector("#edit-field-facility-locator-api-id-0-value").value; - var facilityName = context.querySelector(".breadcrumb li:last-child") !== null ? context.querySelector(".breadcrumb li:last-child").textContent.trim() : ""; - emailLinks.forEach(function (emailLink) { var eHref = emailLink.href; emailLink.setAttribute("href", eHref.replace("[js_entry_facility_name]", facilityName).replace("[js_entry_facility_name]", facilityName).replace("[js_entry_facility_id]", facilityID)); }); - var adminRoles = ["content_admin", "administrator"]; - var targetTypes = ["vet_center"]; - + var targetTypes = ["vet_center", "vet_center_outstation"]; if (drupalSettings.gtm_data.contentType && targetTypes.some(function (item) { return drupalSettings.gtm_data.contentType.includes(item); }) && !adminRoles.some(function (item) { return drupalSettings.gtm_data.userRoles.includes(item); })) { var targetFieldGroup = context.querySelector(".node__content > .not-editable.tooltip-layout"); - var facilityDataFieldGroup = context.createElement("div"); - var legend = context.createElement("h3"); legend.style.fontFamily = "Lucida Grande, Lucida Sans Unicode, DejaVu Sans, Lucida Sans, sans-serif"; legend.style.fontSize = "1rem"; legend.innerHTML = "FACILITY DATA"; - var label = context.createElement("div"); label.classList.add("field__label"); label.innerHTML = "Name of facility"; - var fieldItem = context.createElement("div"); var description = context.querySelector("#locations-and-contact-information .tooltip-layout .description"); fieldItem.classList.add("field__item"); fieldItem.innerHTML = facilityName; - targetFieldGroup.insertBefore(fieldItem, targetFieldGroup.firstChild); - targetFieldGroup.insertBefore(label, targetFieldGroup.firstChild); - targetFieldGroup.insertBefore(description, targetFieldGroup.firstChild); - targetFieldGroup.insertBefore(legend, targetFieldGroup.firstChild); - targetFieldGroup.appendChild(facilityDataFieldGroup); } } } }; -})(jQuery, window.Drupal); +})(jQuery, window.Drupal); \ No newline at end of file diff --git a/docroot/modules/custom/va_gov_vet_center/src/EventSubscriber/EntityEventSubscriber.php b/docroot/modules/custom/va_gov_vet_center/src/EventSubscriber/EntityEventSubscriber.php index f300cdb510..9d6a9c9983 100644 --- a/docroot/modules/custom/va_gov_vet_center/src/EventSubscriber/EntityEventSubscriber.php +++ b/docroot/modules/custom/va_gov_vet_center/src/EventSubscriber/EntityEventSubscriber.php @@ -3,13 +3,6 @@ namespace Drupal\va_gov_vet_center\EventSubscriber; use Drupal\Component\Render\FormattableMarkup; -use Drupal\core_event_dispatcher\EntityHookEvents; -use Drupal\core_event_dispatcher\FormHookEvents; -use Drupal\core_event_dispatcher\Event\Entity\EntityInsertEvent; -use Drupal\core_event_dispatcher\Event\Entity\EntityUpdateEvent; -use Drupal\core_event_dispatcher\Event\Entity\EntityViewAlterEvent; -use Drupal\core_event_dispatcher\Event\Form\FormAlterEvent; -use Drupal\core_event_dispatcher\Event\Form\FormIdAlterEvent; use Drupal\Core\Entity\EntityFormInterface; use Drupal\Core\Entity\EntityTypeManager; use Drupal\Core\Form\FormStateInterface; @@ -17,6 +10,13 @@ use Drupal\Core\Render\RendererInterface; use Drupal\Core\StringTranslation\StringTranslationTrait; use Drupal\Core\StringTranslation\TranslationInterface; +use Drupal\core_event_dispatcher\EntityHookEvents; +use Drupal\core_event_dispatcher\Event\Entity\EntityInsertEvent; +use Drupal\core_event_dispatcher\Event\Entity\EntityUpdateEvent; +use Drupal\core_event_dispatcher\Event\Entity\EntityViewAlterEvent; +use Drupal\core_event_dispatcher\Event\Form\FormAlterEvent; +use Drupal\core_event_dispatcher\Event\Form\FormIdAlterEvent; +use Drupal\core_event_dispatcher\FormHookEvents; use Drupal\taxonomy\Entity\Term; use Drupal\va_gov_user\Service\UserPermsService; use Drupal\va_gov_vet_center\Service\RequiredServices; @@ -278,6 +278,7 @@ public function alterVetCenterMvcNodeForm(FormIdAlterEvent $event): void { public function alterVetCenterOutstationNodeForm(FormIdAlterEvent $event): void { $form = &$event->getForm(); $form['#attached']['library'][] = 'va_gov_vet_center/limit_vet_service_selections'; + $this->disableNameFieldForNonAdmins($form); } /** diff --git a/scripts/content/VACMS-15422-vet-center-outstation-copy-title.php b/scripts/content/VACMS-15422-vet-center-outstation-copy-title.php new file mode 100644 index 0000000000..289f52752f --- /dev/null +++ b/scripts/content/VACMS-15422-vet-center-outstation-copy-title.php @@ -0,0 +1,112 @@ + 0]; +do { + print(va_gov_copy_vet_center_os_title($sandbox, $revision_message)); +} while ($sandbox['#finished'] < 1); +// Node processing complete. Call this done. +return; + +/** + * Copy node title to field_official_name. + * + * @param array $sandbox + * Modeling the structure of hook_update_n sandbox. + * @param string $revision_message + * Text to be used in revision log message. + * + * @return string + * Status message. + */ +function va_gov_copy_vet_center_os_title(array &$sandbox, $revision_message) { + $node_storage = \Drupal::entityTypeManager()->getStorage('node'); + + // Get the count for Vet Center - Outstations. + // This runs only once. + if (!isset($sandbox['total'])) { + $query = $node_storage->getQuery(); + $query->condition('type', 'vet_center_outstation'); + $nids_to_update = $query->execute(); + $result_count = count($nids_to_update); + $sandbox['total'] = $result_count; + $sandbox['current'] = 0; + $sandbox['updated'] = 0; + + // Create non-numeric keys to accurately remove each nid when processed. + $sandbox['nids_to_update'] = array_combine( + array_map('_va_gov_stringifynid', array_values($nids_to_update)), + array_values($nids_to_update) + ); + } + + // Do not continue if no nodes are found. + if (empty($sandbox['total'])) { + $sandbox['#finished'] = 1; + return "No Vet Center - Outstation nodes found for processing.\n"; + } + + $limit = 25; + + // Load entities. + $node_ids = array_slice($sandbox['nids_to_update'], 0, $limit, TRUE); + $nodes = $node_storage->loadMultiple($node_ids); + foreach ($nodes as $node) { + /** @var \Drupal\node\NodeInterface $node */ + $nid = $node->id(); + $nvid = $node->getRevisionId(); + $original_name = $node->getTitle(); + $node->field_official_name->value = $original_name; + + // Grab the latest revision before we save this one. + $latest_revision = get_node_at_latest_revision($nid); + save_node_revision($node, $revision_message, FALSE); + + // If a revision (draft) newer than the default exists, update it as well. + if ($nvid !== $latest_revision->getRevisionId()) { + $original_name = $latest_revision->getTitle(); + $latest_revision->field_official_name->value = $original_name; + save_node_revision($latest_revision, $revision_message, FALSE); + unset($latest_revision); + } + + $sandbox['updated']++; + $nids[] = $nid; + + unset($sandbox['nids_to_update']["node_{$nid}"]); + $sandbox['current'] = $sandbox['total'] - count($sandbox['nids_to_update']); + } + + // Log the processed nodes. + Drupal::logger('va_gov_db') + ->log(LogLevel::INFO, 'Vet Center - Outstation update: Successfully copied %current node title fields to the "Name of Vet Center - Outstation" fields. Nodes updated: %nids', [ + '%current' => $sandbox['current'], + '%nids' => empty($nids) ? 'None' : implode(', ', $nids), + ]); + + $sandbox['#finished'] = ($sandbox['current'] / $sandbox['total']); + + // Log the all-finished notice. + if ($sandbox['#finished'] == 1) { + Drupal::logger('va_gov_db')->log(LogLevel::INFO, 'Copying all %count Vet Center - Oustation title fields completed.', [ + '%count' => $sandbox['total'], + ]); + return "Vet Center - Outstation node updates complete. {$sandbox['current']} / {$sandbox['total']} - Total updated: {$sandbox['updated']}\n"; + } + + return "Processed nodes... {$sandbox['current']} / {$sandbox['total']}.\n"; +} From 6d2633cdfa43aaf7916f0480e8006dc9ff63c5f2 Mon Sep 17 00:00:00 2001 From: Ari Perez Date: Tue, 24 Oct 2023 12:38:23 -0600 Subject: [PATCH 02/25] VACMS-14971 - Cypress tugboat logs missing failure details (#15736) * Update i_click_the_button.js * Delete multi-reporter-config.json * Update package.json * Revert "Delete multi-reporter-config.json" This reverts commit 54a1be546bdd093ec028139112f8056083d9ec95. * Revert "Update i_click_the_button.js" This reverts commit 7728e799dbbeccf0841747e89e160e7b0aafccf0. * Update package.json * Update package.json * Update package.json * Revert "Bump @babel/traverse from 7.22.5 to 7.23.2 (#15735)" This reverts commit b343ffa02456a938041075562746d4a2fbae99ad. * Revert "Revert "Bump @babel/traverse from 7.22.5 to 7.23.2 (#15735)"" This reverts commit 539a57df71de3619c710d120e02e7da0266f79a6. --------- Co-authored-by: Nate Douglas --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 5df11ed4b1..2748e28877 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ "test:cypress": "cypress run -e \"TAGS=$CYPRESS_TAGS\"", "test:cypress:verify": "cypress verify", "test:cypress:interactive": "cypress open -e \"TAGS=not @ignore and not @piv,VAGOV_INTERACTIVE=true\"", - "test:cypress:parallel": "cypress-parallel --script test:cypress --threads 3 --strictMode false --specsDir tests/cypress/integration --weightsJson tests/cypress/integration/weights.json" + "test:cypress:parallel": "cypress-parallel -v --reporter 'spec' --script test:cypress --threads 3 --strictMode false --specsDir tests/cypress/integration --weightsJson tests/cypress/integration/weights.json" }, "repository": { "type": "git", From e5820590de10c3801bdfe4155dcaac5f7f1ff750 Mon Sep 17 00:00:00 2001 From: Tim Cosgrove Date: Tue, 24 Oct 2023 12:12:52 -0700 Subject: [PATCH 03/25] VACMS-15565: reenable breadcrumb modules. (#15572) Co-authored-by: Tanner Heffner --- config/sync/core.extension.yml | 2 + config/sync/easy_breadcrumb.settings.yml | 45 +++++++++++++++++++ .../language/es/easy_breadcrumb.settings.yml | 6 +++ 3 files changed, 53 insertions(+) create mode 100644 config/sync/easy_breadcrumb.settings.yml create mode 100644 config/sync/language/es/easy_breadcrumb.settings.yml diff --git a/config/sync/core.extension.yml b/config/sync/core.extension.yml index 1c32fbc094..1e012cc534 100644 --- a/config/sync/core.extension.yml +++ b/config/sync/core.extension.yml @@ -25,6 +25,7 @@ module: change_labels: 0 ckeditor: 0 components: 0 + computed_breadcrumbs: 0 config: 0 config_filter: 0 config_ignore: 0 @@ -53,6 +54,7 @@ module: dropzonejs: 0 dynamic_entity_reference: 0 dynamic_page_cache: 0 + easy_breadcrumb: 0 editor: 0 embed: 0 entity_block: 0 diff --git a/config/sync/easy_breadcrumb.settings.yml b/config/sync/easy_breadcrumb.settings.yml new file mode 100644 index 0000000000..d93ff46bb9 --- /dev/null +++ b/config/sync/easy_breadcrumb.settings.yml @@ -0,0 +1,45 @@ +_core: + default_config_hash: i76EDs9aAKdrR4nZfe_woXsD0yihn4avDej8uClXES8 +applies_admin_routes: true +include_invalid_paths: false +excluded_paths: '' +replaced_titles: '' +custom_paths: '' +include_home_segment: true +alternative_title_field: field_breadcrumb_title +home_segment_title: Home +home_segment_keep: false +include_title_segment: true +title_from_page_when_available: true +title_segment_as_link: true +use_menu_title_as_fallback: false +use_page_title_as_menu_title_fallback: false +menu_title_preferred_menu: '' +remove_repeated_segments: true +language_path_prefix_as_segment: false +absolute_paths: false +hide_single_home_item: false +term_hierarchy: false +use_site_title: false +add_structured_data_json_ld: false +capitalizator_mode: ucwords +capitalizator_ignored_words: + - of + - and + - or + - de + - del + - 'y' + - o + - a +capitalizator_forced_words: { } +capitalizator_forced_words_case_sensitivity: true +capitalizator_forced_words_first_letter: false +follow_redirects: true +limit_segment_display: false +segment_display_limit: 0 +truncator_mode: false +truncator_length: 100 +truncator_dots: true +remove_repeated_segments_text_only: 0 +home_segment_validation_skip: 0 diff --git a/config/sync/language/es/easy_breadcrumb.settings.yml b/config/sync/language/es/easy_breadcrumb.settings.yml new file mode 100644 index 0000000000..184df9b38e --- /dev/null +++ b/config/sync/language/es/easy_breadcrumb.settings.yml @@ -0,0 +1,6 @@ +home_segment_title: Inicio +capitalizator_ignored_words: + 0: de + 1: 'y' + 2: o + 7: un From ae92483a374e311b1c4be162f0bbab488ac5c17a Mon Sep 17 00:00:00 2001 From: Daniel Sasser Date: Tue, 24 Oct 2023 14:06:43 -0700 Subject: [PATCH 04/25] VACMS-15641 national outreach checkbox (#15761) * VACMS-10089: Outreach checkbox without field listing cardinality change * VACMS-10089: The piece we need to rethink * VACMS-15641: Adds check for approved outreach checkbox users. * VACMS-15641: Uses new field for storing additional event listings. * VACMS-15641: Adds new field, field_additional_listings to the Event content type. * VACMS-15641: Restores revision_log to the events form display. * VACMS-15641: Allows admins to see the checkbox. * VACMS-15641: Ensure the additional listings are removed if the checkbox is unchecked. * VACMS-15641: Updates events cypress test. - Changes the feature toggle step definition to not require admin. * VACMS-15641: Remove an unnecessary cypress test. * VACMS-15641: Remove redundant test. --------- Co-authored-by: Christia Troyer Co-authored-by: Daniel Sasser --- ...entity_form_display.node.event.default.yml | 37 ++- ...entity_view_display.node.event.default.yml | 53 ++++- ....entity_view_display.node.event.teaser.yml | 16 ++ config/sync/feature_toggle.features.yml | 1 + ...d.node.event.field_additional_listings.yml | 38 ++++ ...de.event.field_publish_to_outreach_cal.yml | 28 +++ ...storage.node.field_additional_listings.yml | 19 ++ ...age.node.field_publish_to_outreach_cal.yml | 18 ++ .../EventSubscriber/EntityEventSubscriber.php | 213 +++++++++++++++++- .../va_gov_events/va_gov_events.services.yml | 2 +- .../assets/scss/components/_fields.scss | 8 + .../features/content_type/event.feature | 12 +- .../features/platform/file_upload.feature | 11 - .../common/i_create_a_node.js | 2 + .../common/i_set_a_feature_toggle.js | 14 ++ tests/cypress/support/commands.js | 8 + 16 files changed, 431 insertions(+), 49 deletions(-) create mode 100644 config/sync/field.field.node.event.field_additional_listings.yml create mode 100644 config/sync/field.field.node.event.field_publish_to_outreach_cal.yml create mode 100644 config/sync/field.storage.node.field_additional_listings.yml create mode 100644 config/sync/field.storage.node.field_publish_to_outreach_cal.yml delete mode 100644 tests/cypress/integration/features/platform/file_upload.feature create mode 100644 tests/cypress/integration/step_definitions/common/i_set_a_feature_toggle.js diff --git a/config/sync/core.entity_form_display.node.event.default.yml b/config/sync/core.entity_form_display.node.event.default.yml index 8c99f87f35..a5a1bb89ee 100644 --- a/config/sync/core.entity_form_display.node.event.default.yml +++ b/config/sync/core.entity_form_display.node.event.default.yml @@ -4,6 +4,7 @@ status: true dependencies: config: - field.field.node.event.field_additional_information_abo + - field.field.node.event.field_additional_listings - field.field.node.event.field_address - field.field.node.event.field_administration - field.field.node.event.field_body @@ -23,6 +24,7 @@ dependencies: - field.field.node.event.field_media - field.field.node.event.field_meta_tags - field.field.node.event.field_order + - field.field.node.event.field_publish_to_outreach_cal - field.field.node.event.field_url_of_an_online_event - node.type.event - workflows.workflow.editorial @@ -46,7 +48,7 @@ third_party_settings: label: 'Section settings' region: content parent_name: '' - weight: 8 + weight: 9 format_type: details_sidebar format_settings: classes: '' @@ -64,7 +66,7 @@ third_party_settings: label: Location region: content parent_name: '' - weight: 7 + weight: 8 format_type: details format_settings: classes: '' @@ -81,7 +83,7 @@ third_party_settings: label: Registration region: content parent_name: '' - weight: 6 + weight: 7 format_type: fieldset format_settings: classes: '' @@ -142,7 +144,7 @@ third_party_settings: label: 'Meta Tags' region: content parent_name: '' - weight: 5 + weight: 6 format_type: fieldset format_settings: classes: '' @@ -173,7 +175,7 @@ third_party_settings: label: Free region: content parent_name: group_all_events_are_free - weight: 15 + weight: 32 format_type: html_element format_settings: classes: '' @@ -200,7 +202,7 @@ content: third_party_settings: { } field_additional_information_abo: type: text_textarea - weight: 31 + weight: 32 region: content settings: rows: 5 @@ -220,7 +222,7 @@ content: third_party_settings: { } field_body: type: text_textarea - weight: 4 + weight: 5 region: content settings: rows: 5 @@ -258,7 +260,10 @@ content: custom show_extra: true hide_date: false + separator: to add_abbreviations: '' + allday: true + remove_seconds: false third_party_settings: smart_date_recur: modal: true @@ -318,7 +323,7 @@ content: third_party_settings: { } field_last_saved_by_an_editor: type: datetime_timestamp - weight: 44 + weight: 16 region: content settings: { } third_party_settings: { } @@ -337,7 +342,11 @@ content: weight: 2 region: content settings: { } - third_party_settings: { } + third_party_settings: + limited_field_widgets: + limit_values: '1' + change_labels: + add_another: '' field_location_humanreadable: type: string_textfield weight: 16 @@ -354,7 +363,7 @@ content: third_party_settings: { } field_media: type: media_library_widget - weight: 3 + weight: 4 region: content settings: media_types: { } @@ -365,6 +374,13 @@ content: region: content settings: { } third_party_settings: { } + field_publish_to_outreach_cal: + type: boolean_checkbox + weight: 3 + region: content + settings: + display_label: true + third_party_settings: { } field_url_of_an_online_event: type: linkit weight: 15 @@ -411,6 +427,7 @@ content: settings: { } third_party_settings: { } hidden: + field_additional_listings: true field_event_cost: true field_meta_tags: true langcode: true diff --git a/config/sync/core.entity_view_display.node.event.default.yml b/config/sync/core.entity_view_display.node.event.default.yml index c765795f38..9dce9c4eb3 100644 --- a/config/sync/core.entity_view_display.node.event.default.yml +++ b/config/sync/core.entity_view_display.node.event.default.yml @@ -4,6 +4,7 @@ status: true dependencies: config: - field.field.node.event.field_additional_information_abo + - field.field.node.event.field_additional_listings - field.field.node.event.field_address - field.field.node.event.field_administration - field.field.node.event.field_body @@ -23,6 +24,7 @@ dependencies: - field.field.node.event.field_media - field.field.node.event.field_meta_tags - field.field.node.event.field_order + - field.field.node.event.field_publish_to_outreach_cal - field.field.node.event.field_url_of_an_online_event - node.type.event module: @@ -50,6 +52,8 @@ third_party_settings: group_c: children: - field_datetime_range_timezone + - field_listing + - field_additional_listings - field_media - field_body - field_url_of_an_online_event @@ -74,7 +78,7 @@ third_party_settings: label: Location-related parent_name: group_c region: content - weight: 28 + weight: 8 format_type: fieldset format_settings: classes: '' @@ -89,7 +93,7 @@ third_party_settings: label: 'Registration related' parent_name: group_c region: content - weight: 29 + weight: 9 format_type: fieldset format_settings: classes: '' @@ -120,7 +124,15 @@ content: label: above settings: { } third_party_settings: { } - weight: 29 + weight: 21 + region: content + field_additional_listings: + type: entity_reference_label + label: above + settings: + link: true + third_party_settings: { } + weight: 3 region: content field_address: type: address_default @@ -134,7 +146,7 @@ content: label: above settings: { } third_party_settings: { } - weight: 25 + weight: 5 region: content field_datetime_range_timezone: type: smartdate_default @@ -146,8 +158,17 @@ content: force_chronological: false add_classes: false time_wrapper: true + localize: false + parts: + - start + - end + duration: + separator: ' | ' + unit: '' + decimals: 2 + suffix: h third_party_settings: { } - weight: 23 + weight: 1 region: content field_description: type: string @@ -163,14 +184,14 @@ content: settings: link_to_entity: false third_party_settings: { } - weight: 20 + weight: 19 region: content field_event_cta: type: list_default label: above settings: { } third_party_settings: { } - weight: 27 + weight: 7 region: content field_event_registrationrequired: type: boolean @@ -188,7 +209,7 @@ content: settings: link: true third_party_settings: { } - weight: 17 + weight: 18 region: content field_featured: type: boolean @@ -222,6 +243,14 @@ content: third_party_settings: { } weight: 17 region: content + field_listing: + type: entity_reference_label + label: above + settings: + link: true + third_party_settings: { } + weight: 2 + region: content field_location_humanreadable: type: string label: above @@ -235,7 +264,7 @@ content: label: above settings: { } third_party_settings: { } - weight: 16 + weight: 17 region: content field_media: type: entity_reference_entity_view @@ -244,7 +273,7 @@ content: view_mode: default link: false third_party_settings: { } - weight: 24 + weight: 4 region: content field_order: type: list_default @@ -263,15 +292,15 @@ content: rel: '' target: '' third_party_settings: { } - weight: 26 + weight: 6 region: content hidden: breadcrumbs: true content_moderation_control: true field_administration: true field_last_saved_by_an_editor: true - field_listing: true field_meta_tags: true + field_publish_to_outreach_cal: true langcode: true links: true search_api_excerpt: true diff --git a/config/sync/core.entity_view_display.node.event.teaser.yml b/config/sync/core.entity_view_display.node.event.teaser.yml index b2e2adfdd9..5ac4b47b0a 100644 --- a/config/sync/core.entity_view_display.node.event.teaser.yml +++ b/config/sync/core.entity_view_display.node.event.teaser.yml @@ -5,6 +5,7 @@ dependencies: config: - core.entity_view_mode.node.teaser - field.field.node.event.field_additional_information_abo + - field.field.node.event.field_additional_listings - field.field.node.event.field_address - field.field.node.event.field_administration - field.field.node.event.field_body @@ -24,6 +25,7 @@ dependencies: - field.field.node.event.field_media - field.field.node.event.field_meta_tags - field.field.node.event.field_order + - field.field.node.event.field_publish_to_outreach_cal - field.field.node.event.field_url_of_an_online_event - node.type.event module: @@ -35,6 +37,18 @@ targetEntityType: node bundle: event mode: teaser content: + breadcrumbs: + type: link + label: hidden + settings: + trim_length: 80 + url_only: false + url_plain: false + rel: '' + target: '' + third_party_settings: { } + weight: -5 + region: content field_body: type: text_default label: hidden @@ -56,6 +70,7 @@ content: hidden: content_moderation_control: true field_additional_information_abo: true + field_additional_listings: true field_address: true field_administration: true field_description: true @@ -73,6 +88,7 @@ hidden: field_media: true field_meta_tags: true field_order: true + field_publish_to_outreach_cal: true field_url_of_an_online_event: true langcode: true links: true diff --git a/config/sync/feature_toggle.features.yml b/config/sync/feature_toggle.features.yml index 3c70f0d3ef..500db73770 100644 --- a/config/sync/feature_toggle.features.yml +++ b/config/sync/feature_toggle.features.yml @@ -5,3 +5,4 @@ features: feature_single_value_field_link: FEATURE_SINGLE_VALUE_FIELD_LINK feature_health_connect_number: FEATURE_HEALTH_CONNECT_NUMBER feature_mobile_app_promo: FEATURE_MOBILE_APP_PROMO + feature_event_outreach_checkbox: FEATURE_EVENT_OUTREACH_CHECKBOX diff --git a/config/sync/field.field.node.event.field_additional_listings.yml b/config/sync/field.field.node.event.field_additional_listings.yml new file mode 100644 index 0000000000..7cad338854 --- /dev/null +++ b/config/sync/field.field.node.event.field_additional_listings.yml @@ -0,0 +1,38 @@ +uuid: 8a728072-bd70-4a45-9109-34daa8451ae8 +langcode: en +status: true +dependencies: + config: + - field.storage.node.field_additional_listings + - node.type.event + module: + - entity_reference_validators + - tmgmt_content +third_party_settings: + entity_reference_validators: + circular_reference: false + circular_reference_deep: false + duplicate_reference: false + tmgmt_content: + excluded: false +id: node.event.field_additional_listings +field_name: field_additional_listings +entity_type: node +bundle: event +label: 'Additional Listings' +description: '' +required: false +translatable: false +default_value: { } +default_value_callback: '' +settings: + handler: 'default:node' + handler_settings: + target_bundles: + event: event + sort: + field: _none + direction: ASC + auto_create: false + auto_create_bundle: '' +field_type: entity_reference diff --git a/config/sync/field.field.node.event.field_publish_to_outreach_cal.yml b/config/sync/field.field.node.event.field_publish_to_outreach_cal.yml new file mode 100644 index 0000000000..297adec89e --- /dev/null +++ b/config/sync/field.field.node.event.field_publish_to_outreach_cal.yml @@ -0,0 +1,28 @@ +uuid: ba2d9d43-c4b9-4bfd-831a-9ef7544d43f8 +langcode: en +status: true +dependencies: + config: + - field.storage.node.field_publish_to_outreach_cal + - node.type.event + module: + - tmgmt_content +third_party_settings: + tmgmt_content: + excluded: false +id: node.event.field_publish_to_outreach_cal +field_name: field_publish_to_outreach_cal +entity_type: node +bundle: event +label: 'Publish to the National Outreach Calendar' +description: '' +required: false +translatable: false +default_value: + - + value: 0 +default_value_callback: '' +settings: + on_label: 'Yes' + off_label: 'No' +field_type: boolean diff --git a/config/sync/field.storage.node.field_additional_listings.yml b/config/sync/field.storage.node.field_additional_listings.yml new file mode 100644 index 0000000000..f66f010832 --- /dev/null +++ b/config/sync/field.storage.node.field_additional_listings.yml @@ -0,0 +1,19 @@ +uuid: b7f382fa-a73c-4bdd-b7f7-4f4c1c0294e8 +langcode: en +status: true +dependencies: + module: + - node +id: node.field_additional_listings +field_name: field_additional_listings +entity_type: node +type: entity_reference +settings: + target_type: node +module: core +locked: false +cardinality: -1 +translatable: true +indexes: { } +persist_with_no_fields: false +custom_storage: false diff --git a/config/sync/field.storage.node.field_publish_to_outreach_cal.yml b/config/sync/field.storage.node.field_publish_to_outreach_cal.yml new file mode 100644 index 0000000000..760a11b0f3 --- /dev/null +++ b/config/sync/field.storage.node.field_publish_to_outreach_cal.yml @@ -0,0 +1,18 @@ +uuid: ad80a854-7f29-45c1-871a-2d087663f64a +langcode: en +status: true +dependencies: + module: + - node +id: node.field_publish_to_outreach_cal +field_name: field_publish_to_outreach_cal +entity_type: node +type: boolean +settings: { } +module: core +locked: false +cardinality: 1 +translatable: true +indexes: { } +persist_with_no_fields: false +custom_storage: false diff --git a/docroot/modules/custom/va_gov_events/src/EventSubscriber/EntityEventSubscriber.php b/docroot/modules/custom/va_gov_events/src/EventSubscriber/EntityEventSubscriber.php index b3a543ceed..4abaedfd52 100644 --- a/docroot/modules/custom/va_gov_events/src/EventSubscriber/EntityEventSubscriber.php +++ b/docroot/modules/custom/va_gov_events/src/EventSubscriber/EntityEventSubscriber.php @@ -2,9 +2,15 @@ namespace Drupal\va_gov_events\EventSubscriber; +use Drupal\Core\Session\AccountInterface; +use Drupal\Core\Session\AccountProxy; use Drupal\Core\StringTranslation\StringTranslationTrait; -use Drupal\Core\StringTranslation\TranslationInterface; +use Drupal\core_event_dispatcher\EntityHookEvents; +use Drupal\core_event_dispatcher\Event\Entity\EntityPresaveEvent; use Drupal\core_event_dispatcher\Event\Form\FormIdAlterEvent; +use Drupal\feature_toggle\FeatureStatus; +use Drupal\node\NodeInterface; +use Drupal\va_gov_user\Service\UserPermsService; use Symfony\Component\EventDispatcher\EventSubscriberInterface; /** @@ -14,14 +20,89 @@ class EntityEventSubscriber implements EventSubscriberInterface { use StringTranslationTrait; + /** + * The 'publish to the national outreach calendar' field name. + */ + const PUBLISH_TO_OUTREACH_CAL_FIELD = 'field_publish_to_outreach_cal'; + + /** + * The 'field_listing' field name. + */ + const LISTING_FIELD = 'field_listing'; + + /** + * The 'field_additional_listings' field name. + */ + const ADDITIONAL_LISTING_FIELD = 'field_additional_listings'; + + /** + * The National Outreach Calendar node id. + */ + const OUTREACH_CAL_NID = 736; + + /** + * The 'Outreach Hub' Section term id. + */ + const OUTREACH_HUB_TID = 7; + + /** + * The Feature toggle name for outreach checkbox. + */ + const OUTREACH_CHECKBOX_FEATURE_NAME = 'feature_event_outreach_checkbox'; + + /** + * The list of users allowed to view the outreach checkbox. + */ + const OUTREACH_CHECKBOX_TEST_USERS = [ + 2910, + 1448, + 4356, + 2861, + 2922, + 3421, + 3314, + 4573, + 3864, + 1583, + 3610, + 2927, + ]; + + /** + * The User Perms Service. + * + * @var \Drupal\va_gov_user\Service\UserPermsService + */ + protected UserPermsService $userPermsService; + + /** + * The current user. + * + * @var \Drupal\Core\Session\AccountInterface + */ + protected AccountInterface $currentUser; + + /** + * TRUE if the outreach checkbox feature toggle is enabled. + * + * @var bool + */ + private bool $outreachCheckboxFeatureEnabled; + /** * Constructs the EventSubscriber object. * - * @param \Drupal\Core\StringTranslation\TranslationInterface $string_translation - * The string translation service. + * @param \Drupal\va_gov_user\Service\UserPermsService $user_perms_service + * The current user perms service. + * @param \Drupal\Core\Session\AccountProxy $account_proxy + * The account proxy service. + * @param \Drupal\feature_toggle\FeatureStatus $feature_status + * The feature status service. */ - public function __construct(TranslationInterface $string_translation) { - $this->stringTranslation = $string_translation; + public function __construct(UserPermsService $user_perms_service, AccountProxy $account_proxy, FeatureStatus $feature_status) { + $this->userPermsService = $user_perms_service; + $this->currentUser = $account_proxy->getAccount(); + $this->outreachCheckboxFeatureEnabled = $feature_status->getStatus(self::OUTREACH_CHECKBOX_FEATURE_NAME); } /** @@ -31,11 +112,55 @@ public static function getSubscribedEvents(): array { return [ 'hook_event_dispatcher.form_node_event_form.alter' => 'alterEventNodeForm', 'hook_event_dispatcher.form_node_event_edit_form.alter' => 'alterEventNodeForm', + EntityHookEvents::ENTITY_PRE_SAVE => 'entityPresave', ]; } /** - * Form alterations for eventcontent type. + * Determines if the 'add to National Outreach Calendar' checkbox is enabled. + * + * @return bool + * TRUE if the outreach checkbox should be enabled. + */ + protected function outreachCheckboxEnabled(): bool { + $admin = $this->userPermsService->hasAdminRole(TRUE); + return ( + $this->outreachCheckboxFeatureEnabled + && (in_array($this->currentUser->id(), self::OUTREACH_CHECKBOX_TEST_USERS) || $admin) + ); + } + + /** + * Determines if the current user is an 'Outreach Hub' only user. + * + * @return bool + * TRUE if the current user only has the 'Outreach Hub' section. + */ + protected function outreachHubOnlyUser(): bool { + $sections = $this->userPermsService->getSections($this->currentUser); + if (count($sections) === 1 && array_key_first($sections) === self::OUTREACH_HUB_TID) { + return TRUE; + } + return FALSE; + } + + /** + * Entity presave Event call. + * + * @param \Drupal\core_event_dispatcher\Event\Entity\EntityPresaveEvent $event + * The event. + * + * @throws \Drupal\Core\TypedData\Exception\MissingDataException + */ + public function entityPresave(EntityPresaveEvent $event): void { + $entity = $event->getEntity(); + if ($entity instanceof NodeInterface) { + $this->addToNationalOutreachCalendar($entity); + } + } + + /** + * Form alterations for event content type. * * @param \Drupal\core_event_dispatcher\Event\Form\FormIdAlterEvent $event * The event. @@ -45,6 +170,76 @@ public function alterEventNodeForm(FormIdAlterEvent $event): void { $this->addDisplayManagementToEventFields($form); $this->modifyFormFieldsetElements($form); $this->modifyRecurringEventsWidgetFieldPresentation($form); + $this->modifyAddToOutreachCalendarElements($form); + } + + /** + * Adds the event to the National Outreach Calendar (event_listing). + * + * The purpose of this method is to add the current node event to the National + * Outreach Calendar (an event listing node) if the $listingField + * checkbox/boolean has been set, or if the current user is an Outreach Hub + * user. + * + * @param \Drupal\node\NodeInterface $node + * The node to be modified. + * + * @throws \Drupal\Core\TypedData\Exception\MissingDataException + */ + public function addToNationalOutreachCalendar(NodeInterface $node): void { + if ($node->hasField(self::LISTING_FIELD) && + $node->hasField(self::PUBLISH_TO_OUTREACH_CAL_FIELD) && + $node->hasField(self::ADDITIONAL_LISTING_FIELD) && + $this->outreachCheckboxEnabled()) { + $addToCalValue = $node->get(self::PUBLISH_TO_OUTREACH_CAL_FIELD)->first()->getValue(); + if (isset($addToCalValue['value'])) { + $listings = $node->get(self::LISTING_FIELD)->getValue(); + $additionalListings = $node->get(self::ADDITIONAL_LISTING_FIELD)->getValue(); + if ($addToCalValue['value'] === 1 || $this->outreachHubOnlyUser()) { + // Add to Outreach calendar selected, or user is Outreach Hub only + // user. + if (!in_array(self::OUTREACH_CAL_NID, array_column($listings + $additionalListings, 'target_id'))) { + $additionalListings[] = [ + 'target_id' => self::OUTREACH_CAL_NID, + ]; + } + } + else { + // Checkbox is unset. Ensure that additional listings are removed. + $additionalListings = []; + } + $node->set(self::ADDITIONAL_LISTING_FIELD, $additionalListings); + } + } + } + + /** + * Form changes for 'Publish to National Outreach Calendar' related elements. + * + * @param array $form + * The form array. + */ + public function modifyAddToOutreachCalendarElements(array &$form) :void { + if ($this->outreachHubOnlyUser() && $this->outreachCheckboxEnabled()) { + // Disable the checkbox. + $form[self::PUBLISH_TO_OUTREACH_CAL_FIELD]['#disabled'] = TRUE; + // Set the default value of the checkbox. + $form[self::PUBLISH_TO_OUTREACH_CAL_FIELD]['widget']['value']['#default_value'] = TRUE; + // Override the field label for the checkbox. + $form[self::PUBLISH_TO_OUTREACH_CAL_FIELD]['widget']['value']['#title'] = $this->t('This event will automatically be published to the National Outreach Calendar'); + // Set the default value to the Outreach cal on the dropdown if is not + // already set. + if (empty($form[self::LISTING_FIELD]['widget']['#default_value'])) { + $form[self::LISTING_FIELD]['widget']['#default_value'] = self::OUTREACH_CAL_NID; + } + } + // Add the '- Select a value -' option (_none) since it was removed by + // the Limited Widgets for Unlimited Field module. + if (isset($form[self::LISTING_FIELD]['widget']['#options']) && !array_key_exists('_none', $form[self::LISTING_FIELD]['widget']['#options'])) { + $form[self::LISTING_FIELD]['widget']['#options'] = ['_none' => '- Select a value -'] + $form[self::LISTING_FIELD]['widget']['#options']; + } + // Only allow access to the checkbox if it should be enabled. + $form[self::PUBLISH_TO_OUTREACH_CAL_FIELD]['#access'] = $this->outreachCheckboxEnabled(); } /** @@ -53,7 +248,7 @@ public function alterEventNodeForm(FormIdAlterEvent $event): void { * @param array $form * The form. */ - public function modifyRecurringEventsWidgetFieldPresentation(array &$form) { + public function modifyRecurringEventsWidgetFieldPresentation(array &$form): void { // Add our js for toggling items depending on duration choices. $form['#attached']['library'][] = 'va_gov_events/recurring_dates'; @@ -126,7 +321,7 @@ public function modifyRecurringEventsWidgetFieldPresentation(array &$form) { * @param array $form * The form. */ - public function addDisplayManagementToEventFields(array &$form) { + public function addDisplayManagementToEventFields(array &$form): void { $form['#attached']['library'][] = 'va_gov_events/event_form_states_helpers'; } @@ -140,7 +335,7 @@ public function addDisplayManagementToEventFields(array &$form) { * @param array $form * The form. */ - public function modifyFormFieldSetElements(array &$form) { + public function modifyFormFieldSetElements(array &$form): void { // Remove the wrap and title around address widget. $form['field_address']['widget'][0]['#type'] = 'div'; unset($form['field_address']['widget'][0]['#title']); diff --git a/docroot/modules/custom/va_gov_events/va_gov_events.services.yml b/docroot/modules/custom/va_gov_events/va_gov_events.services.yml index df7b43518a..57e983a823 100644 --- a/docroot/modules/custom/va_gov_events/va_gov_events.services.yml +++ b/docroot/modules/custom/va_gov_events/va_gov_events.services.yml @@ -1,7 +1,7 @@ services: va_gov_events.entity_event_subscriber: class: Drupal\va_gov_events\EventSubscriber\EntityEventSubscriber - arguments: ['@string_translation'] + arguments: ['@va_gov_user.user_perms', '@current_user', '@feature_toggle.feature_status'] tags: - { name: event_subscriber } va_gov_events.route_subscriber: diff --git a/docroot/themes/custom/vagovclaro/assets/scss/components/_fields.scss b/docroot/themes/custom/vagovclaro/assets/scss/components/_fields.scss index d3ee628d2f..7bfefb1ef9 100644 --- a/docroot/themes/custom/vagovclaro/assets/scss/components/_fields.scss +++ b/docroot/themes/custom/vagovclaro/assets/scss/components/_fields.scss @@ -226,3 +226,11 @@ body:not(.role-admin) { .magichead .fieldset__wrapper { margin-left: var(--spacing-xl); } + +#edit-field-publish-to-outreach-cal-wrapper div.form-item--field-publish-to-outreach-cal-value { + margin-left: auto; +} + +#edit-field-publish-to-outreach-cal-wrapper label { + margin-left: var(--spacing-xs); +} diff --git a/tests/cypress/integration/features/content_type/event.feature b/tests/cypress/integration/features/content_type/event.feature index 6920dce76b..58beddb9ef 100644 --- a/tests/cypress/integration/features/content_type/event.feature +++ b/tests/cypress/integration/features/content_type/event.feature @@ -2,15 +2,16 @@ Feature: Content Type: Event Scenario: Log in and create an event. - Given I am logged in as a user with the "content_admin" role + Given I am logged in as a user with the "administrator" role + When I set the "feature_event_outreach_checkbox" feature toggle to "on" Then I create a "event" node Scenario: Confirm that event form conditional fields are cleared out if parent options change Given I am logged in as a user with the "content_admin" role - And I am at "node/add/event" + When I am at "node/add/event" # Check registration call to action conditional field - When I select option "Register" from dropdown "Call to action" + And I select option "Register" from dropdown "Call to action" And I fill in autocomplete field with selector "#edit-field-url-of-an-online-event-0-uri" with value "/node/5016" And I select option "- None -" from dropdown "Call to action" And I select option "Register" from dropdown "Call to action" @@ -33,7 +34,6 @@ Feature: Content Type: Event And the option "- None -" from dropdown "State" should be selected When I select the "Online" radio button Then an element with the selector "#edit-field-url-of-an-online-event-0-uri" should be empty - # EVENT FORM SPECS Scenario: Confirm that the default time zone when creating an event is set explicitly to Eastern. Given I am logged in as a user with the "content_admin" role @@ -42,7 +42,7 @@ Feature: Content Type: Event Scenario: Confirm that the event form conditional elements are shown or hidden appropriately Given I am logged in as a user with the "content_admin" role - And I am at "node/add/event" + When I am at "node/add/event" And I select the "At a VA facility" radio button Then I should see "Facility location" @@ -71,7 +71,7 @@ Feature: Content Type: Event And I should not see "Country" And I should see an element with the selector "#edit-field-url-of-an-online-event-0-uri" - # Registration checkbox reveals conditional form elements +# Registration checkbox reveals conditional form elements When I check the "Include registration information" checkbox Then "Cost" should be visible And I should see "Registration is required for this event" diff --git a/tests/cypress/integration/features/platform/file_upload.feature b/tests/cypress/integration/features/platform/file_upload.feature deleted file mode 100644 index e3e3cc71a6..0000000000 --- a/tests/cypress/integration/features/platform/file_upload.feature +++ /dev/null @@ -1,11 +0,0 @@ -@file_upload -Feature: Files can be uploaded and attached to nodes successfully - In order to reliably and predictably create content - As anybody involved in the project - I need to be able to upload and attach files to nodes. - - Scenario: We should be able to attach files to event nodes. - Given I am logged in as a user with the "content_admin" role - When I create a "event" node - Then "polygon_image.png" should exist - And an image with the selector 'div.field--name-image a img' should exist diff --git a/tests/cypress/integration/step_definitions/common/i_create_a_node.js b/tests/cypress/integration/step_definitions/common/i_create_a_node.js index d3535e4114..ff6578e57a 100644 --- a/tests/cypress/integration/step_definitions/common/i_create_a_node.js +++ b/tests/cypress/integration/step_definitions/common/i_create_a_node.js @@ -244,6 +244,7 @@ const creators = { "VA Alaska health care: Events", { force: true } ); + cy.get("#edit-field-publish-to-outreach-cal-value").check(); cy.findAllByLabelText("Street address").type( faker.address.streetAddress(), { force: true } @@ -279,6 +280,7 @@ const creators = { ).should("exist"); cy.get("form.node-form").find("input#edit-submit").click(); cy.get(".node__content").contains("Sun, Nov 5 2023, 10:00am - 11:00am MST"); + cy.get(".node__content").contains("Outreach events"); cy.scrollTo("top", { ensureScrollable: false }); cy.get(".tabs__tab a").contains("Edit").click({ force: true }); cy.get("#edit-field-datetime-range-timezone-0-manage-instances").click(); diff --git a/tests/cypress/integration/step_definitions/common/i_set_a_feature_toggle.js b/tests/cypress/integration/step_definitions/common/i_set_a_feature_toggle.js new file mode 100644 index 0000000000..c85b95fbd2 --- /dev/null +++ b/tests/cypress/integration/step_definitions/common/i_set_a_feature_toggle.js @@ -0,0 +1,14 @@ +import { When } from "@badeball/cypress-cucumber-preprocessor"; + +When( + "I set the {string} feature toggle to {string}", + (featureToggleMachineName, value) => { + const label = String.prototype.toUpperCase(featureToggleMachineName); + // Set the feature toggle to the value of "value". + let setValue = 0; + if (value === "on") { + setValue = 1; + } + return cy.setAFeatureToggle(featureToggleMachineName, label, setValue); + } +); diff --git a/tests/cypress/support/commands.js b/tests/cypress/support/commands.js index 742ac2dbac..e16f61c225 100644 --- a/tests/cypress/support/commands.js +++ b/tests/cypress/support/commands.js @@ -321,6 +321,14 @@ Cypress.Commands.add("setWorkbenchAccessSections", (value) => { }); }); +Cypress.Commands.add("setAFeatureToggle", (name, label, value) => { + const command = ` + $feature = new \\Drupal\\feature_toggle\\Feature('${name}', '${label}'); + $service = \\Drupal::service('feature_toggle.feature_status')->setStatus($feature, ${value}); + `; + return cy.drupalDrushEval(command); +}); + compareSnapshotCommand(); Cypress.on("uncaught:exception", () => { From ba2b98e049fffe2f5c719a9fae8b13158e38f0c0 Mon Sep 17 00:00:00 2001 From: Tony Taylor Date: Tue, 24 Oct 2023 17:43:04 -0500 Subject: [PATCH 05/25] VACMS-13639: Fixes content lock operation on Reusable Q&A Content Type (#15790) * Changes Q_A entity form display widget to 'Paragraphs Legacy' for 'Related Information' field --- ...ore.entity_form_display.node.q_a.default.yml | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/config/sync/core.entity_form_display.node.q_a.default.yml b/config/sync/core.entity_form_display.node.q_a.default.yml index 453595c646..59fdc4d767 100644 --- a/config/sync/core.entity_form_display.node.q_a.default.yml +++ b/config/sync/core.entity_form_display.node.q_a.default.yml @@ -254,25 +254,20 @@ content: field_widget_replace: 0 open: 0 field_widget_display_settings: { } + additional_fields: + options: null third_party_settings: { } field_related_information: - type: paragraphs + type: entity_reference_paragraphs weight: 7 region: content settings: title: 'Link teaser' title_plural: 'Link teasers' edit_mode: open - closed_mode: summary - autocollapse: none - closed_mode_threshold: 0 add_mode: dropdown form_display_mode: default default_paragraph_type: link_teaser - features: - add_above: '0' - collapse_edit_all: collapse_edit_all - duplicate: '0' third_party_settings: { } field_standalone_page: type: boolean_checkbox @@ -316,9 +311,15 @@ content: maxlength: 70 counter_position: after js_prevent_submit: true + count_only_mode: false count_html_characters: false textcount_status_message: 'Characters remaining: @remaining_count' third_party_settings: { } + translation: + weight: 10 + region: content + settings: { } + third_party_settings: { } url_redirects: weight: 6 region: content From 16d504d7811cae75f0f55a2c5fa1f658a66b3d37 Mon Sep 17 00:00:00 2001 From: Kit Lykos <140734297+KitLykos@users.noreply.github.com> Date: Tue, 24 Oct 2023 20:24:57 -0400 Subject: [PATCH 06/25] VACMS-15240 Stand up running next-build server per tugboat instance (#15429) * Stubbing out next server config * Updating config values to be spaces * Updating to add splash page * changing line endings * Scripts for next build * Fixed permissions issues * Attempting file permission fix * trying one more permission thing * Change permissions. * Removed tab character * Removed the actual white space that was the issue * Added yarn start to next build * Adjusting scripts for next start * Resolving issues from review * Resolving more review stuff * adding rest of the path to next-start * Adjusting scope for output * update perms * add apache proxy settings for next-build node server * add 503 error page for next-* * 503 j2 to html --------- Co-authored-by: Kit Nunnally Co-authored-by: Nathan Douglas Co-authored-by: Tanner Heffner --- .gitignore | 3 ++ .next/403-error-document.j2.html | 51 +++++++++++++++++++++++++++++++ .next/503-error-document.j2.html | 51 +++++++++++++++++++++++++++++++ .next/README.md | 1 + .next/artur-pokusin-unsplash.jpg | Bin 0 -> 55213 bytes .tugboat/config.yml | 15 +++++++-- .tugboat/vhost-next.conf | 48 +++++++++++++++++++++++++++++ composer.json | 20 +++++++++++- scripts/next-build.sh | 11 +++++++ scripts/next-install.sh | 33 ++++++++++++++++++++ scripts/next-start.sh | 10 ++++++ tugboat.yml | 6 ++++ 12 files changed, 246 insertions(+), 3 deletions(-) create mode 100644 .next/403-error-document.j2.html create mode 100644 .next/503-error-document.j2.html create mode 100644 .next/README.md create mode 100644 .next/artur-pokusin-unsplash.jpg create mode 100644 .tugboat/vhost-next.conf create mode 100755 scripts/next-build.sh create mode 100755 scripts/next-install.sh create mode 100755 scripts/next-start.sh diff --git a/.gitignore b/.gitignore index c872fba6bd..39f475fda7 100644 --- a/.gitignore +++ b/.gitignore @@ -102,6 +102,9 @@ datadog-setup.php # web # @TODO: Installer paths is not working. Leaving symlink for now. +# Ignore Next (next-build) +next + # Temporary .deb packages *.deb diff --git a/.next/403-error-document.j2.html b/.next/403-error-document.j2.html new file mode 100644 index 0000000000..f84d334804 --- /dev/null +++ b/.next/403-error-document.j2.html @@ -0,0 +1,51 @@ + + + + + Next-build Preview not built yet + + + + + + + + +

Next-build not ready yet

+
+

The next-build server is not built & running yet.

+

Check the status of the composer va:next:start command in the logs to learn more.

+
+ + + + diff --git a/.next/503-error-document.j2.html b/.next/503-error-document.j2.html new file mode 100644 index 0000000000..8631aa2f72 --- /dev/null +++ b/.next/503-error-document.j2.html @@ -0,0 +1,51 @@ + + + + + Next-build Preview Server 503 Error + + + + + + + + +

Next-build server 503 response

+
+

There was a 503 error returned from the next-build server when it asked for this route.

+

Check the status of the composer va:next:start command in the logs to learn more.

+
+ + + + diff --git a/.next/README.md b/.next/README.md new file mode 100644 index 0000000000..5e3ac6dae9 --- /dev/null +++ b/.next/README.md @@ -0,0 +1 @@ +See /.tugboat/vhost-next.conf. diff --git a/.next/artur-pokusin-unsplash.jpg b/.next/artur-pokusin-unsplash.jpg new file mode 100644 index 0000000000000000000000000000000000000000..af38e8abffa5025d0cc67309e372a73056704026 GIT binary patch literal 55213 zcmeFYcUV)+)(5&FK$L0$DbfU#UIIvmP^3z4f=21R6S_hu3W`AJA|2^fKq(PWdH`u6 zf=aKU2neBesaI6~OWDfv3IshL402cr#(G>s!)`-9tK*R)){#6G6YohCa*PV%Y{@I2Y zYy$(pci;y2?@c87SDhBDCr3E}B>$u>0YCo~u*W}K|M970>tSujuJ7pK%?qn;^aqqT{h>oXR+=FbDfzO?+JBIm~qQ*;PEe?bs!RM1({*Kx%JWdl|z! zYX77KzsYm_bCCZ2{zCp@LLS}@!Z2xRX<-pjVNp>*u!SHp(A~!>K+qk@`7aK4?2tCz zPM$ta9`5XaI9geI`1;6mfIa^;BwL%mxqA9~yZ*(~)<)RQ)y~b%-3JMZ5BoF9e+=Kv z^Y6z0qn`d-Lmi#}y{Vhq-)xaSs(#>z{x<_4jRQUHgbnSG9=_f-cB+2h&^Z6qndiS? z^FOor`}SX!x4hRifD<7+Wr?HNXjGng> zh)FBgJ03Q^e~hMiN1g+eN66O6Rz}LsN=(#N3??XMWepP)x0VnQl$H>&6O@p$vxC{% z*@}w6Z2lS_$mhS){{yDB9yTD4zcnZ$Wov6IDIp~$C~0S9BWPzME+uF!DJCgsFKTCJ zYbOG;6So!n7dK6Jq>q)mjorUS;{lM)D?dU%7z0NaWE z0X`@`D3FE|60~RFKc|wBo!38Wu1@TKVNM3=VejK_ z`yb7m{s#^Gd-nJTy_LCtP4g5y~|Ixtz|1|Jl5u%+txU}*I<3Heh1F+TqS9HQICL{t#DQoJG{0W5t zK!BO(J^;CXQ=J(MnTY{nW?}{4!k;yz2uxIpnHUaGh)9b_iHL(SgowyrbT|K^yQC~{ z6B~jv(z>6Qc=0=F)0Oj9;PM5c3lIo|hyx(LOa!@1blwTDf#EeN(O=~+GVqOv7(zly z2EA~RoC0i6cL^XSfEp z_~kd3n6-EKMe=L(42(=SZ*lYR@`>M;kd%^^QMse4rmmr>Wn^q(de6-KzKyM&y@R8Z zGt$S`&p#kADB|g}$f)Npq7##nQ&L~0y-t6VUr<<7TvA$A`|f>ReM2MWLwiSOS2wn& zw{PU@=(n-)?>~Od%`Yr2E#p>J*S2@?yLi(HpMxrj+f zASBQ~auE^x{}KE$3F!?O*%c)NsFl}M4$-g+w8{y2HEkC;#SDMbS$lsWzs4m#cXRuX zXn#re?+F(E|46dG1^X|#CIA&M6Z5AKgMScWV$f8eK_Mh$B!3DSlmG*@eIF{o9rEDKJ|CJO2q#LWn>xK`sMufY5W=4UKllR5v&> zp%IC;5J{a66_=Y;5Asi!WghcNV$;%-oDLN~oqdc~+m7QGzZ({KN2{`~+JHhTtT>U4SAJj##mSfD$HSzt%SnOj`dhSt z`Nf5R*)()4tJ%bgUA(EAhZqGz4V?pJv8SWgyRLTu=1{qjaK5)`yieMGh6>=A4U^JK zYzwbYTI!Q#_0fojMws+x?&Svq=K1UX=scvM-p zpE~#%@DT4Ayh<5CXA~5)y_-J}Lz$#_?M@oA&u)Qel_)iwyo`}yR+20OV;2029H_Tf z8GALTRdN9X+_QceqqlVUxMY74!PGsoFg&LHCj7VEWI2P zwy<54co9dUPulVw7`4{bWHwRmSCbm5DcNcJ=stbsNK82O%@5H-b(g-9^@hbwep$A( zibOF1m}XW{u~kL4jYxBOWA4}?nr#_ zS}4R4X6UgMJt&%KE4g}inYF?zJ4m1G1yT)f-fod`J*-ePv=}}ZD!f(n0xf4E*rP-~ zz5J@*a6)N5R2WL)K!%oFUO~y^FZ1C1@1qAGnIXnR#W-SVsX{zG$2%sqlg85((ahLZ zf;f0tGWXQ!&Z5^juvU=+f6JJQs9uaX8YcUcjZIy@i$jK)vm!|cFC2f_&)Z4|e&BoH zx4CnYR`_`xNEWz8v;E<`LvxBu)?TOT;@dpT?iG2QnPgpXBsD4E#Hg_-BK}2E8;38u zJ{XwqeK|>y>2Vq*vP-j>x-Pj2mMnE_^t5+~Gp@K2aB>%)?bp%2DolCdwDi8?cUQr~ zVbWPFi_=7;bQy(&Oy+2|H;$Ib!;{5v2!0k+imUSbvK#@<#LXdRWv|2ivTRGaY^0VM zv1iaQY3>ge-nLr4v?o6K1CNr4{QYEn3#RkmYL&J)Rm{fdlMc6iKtcE#PEDO<^~r1}jAey*j@?rSi0CPs zb`MI>7Ij$WE(Goi_p&Cpu8)<8aU(S@K;yDNpgySLrR!ZF33h(&)i|4Qtbf;s1l=7f zOfTM@OzoVTK-dh}%U|9DAw8F(u}G+6`$?aBn;c^i#A?de1>83`Y5L8}r0w5jKT%Uh1Ur{&<*BKPd~S9JUEev75qc4;Js+<-6}p< z9!Z?nsv`X14R4Bk_-<#x1SuEUHG6vW7>Y z{<##^cXn5|l&iTRiO$6t*<`#=z9=#Ql-?cUjTT!p_`@-ej5QuSG`H9udj5s*L9(=9 zvN(>PWT!cU;>LfZ6`%p!HEiDqdAYY3y?rHV4*4r#-ezj)J7j8BJgQq$lo z&~>c2A@74L;<~fKm%C556;qyB2iJUhMx`O_E!sOi{gQmSH;E(ulV6w3^(YY%3pd43bphYFH!VwblDXP)6q2whr+qPF?&cb7>a@ zQ&O84K#@+FBYEI8PWKvz^2gsQxEe2_F&~P_TP9oJ+%6Cc_gnN@HDF{H2yHU0IT zbl}DfONq=go-0=Mi_7nhSb)=2f{V8XwuK0(*t-=SV2_m>v&@>vgRq`C>q)4tsbk)> zAyvGfNg9Z&LvXD(@1z-}AiG6Ji?$N-j@6i0#iLctWyvM;@HqyDTZNimYKhKxs*&_} zq9T4~wJ0NxnTnT7*2h;hm>t-e1em+tNika{>Eg!^--Q`#HwExHn)c$P6yBRjzns?( zkh3qubGn}cm3GzldN{Z9SFsDK5osegQBQLQBgPX^eErfBVM#jFi;JlY#g@wwWUv%k zjQpo8TgFjVy=6Ytv~2y|-8b!+g1bS6#L@tvPG!hadT37DrB#-#FHRp*be%Js*Bkm| z?A}k46Ws4o$lH0x>X+HpVF%AhhtIxZ>-4YQ31oRjy1*!SJW{=Beua}ceDtNz;{=oD zPS%_(5X_KtX*0xo+xTFbO7_${vY{j)b;j>?MZOoq3m1s_ji%zvIPMTvw1sMmnu5Dj_BsTG(go$J;uRP-aOBXH#nH6->+l zcC3K@Voo!huOFXeIViT9tH*fcO*4`ek@iIp+c%TKudQ!+4)6`&X?6+1x|yrB zcOXlN4aTN_p=PK~JYmD+zH4SeP7r#4X4t@TSrEs~NtP5aNJFPn%mRy!tqRY6N}x4E zbcb0hteko2PPgu!xv*`tE^cuC?kT;pCb>!UMN}8fD>O4)ePC% zmFIo4ii`-AMGinPW%iGr#(jKWF{fwI!BI;!OhSx-ZWo*w6IFN8bf+Q4u9O1h)@k@$ zDSMA9ez6Tcbtt;u*ol`Ue)?>MBE86tg)4v1V-7V~^HM>Qe{ZiS0w&js9Y#GP#(cab z$7^*on(<-u+P65N*8-R zz5`#-YU}smCc@YpeMynFbKO21hvRx4B=jyW+9zvD>N_LF$QKn&6h z?i}xVq83E$G{1ywhS!7YLb`|r*~ffdHOq0?^~H{%>vFc<;?9Bb{AFhB`3RxBpb4W( ze2qECxZKOz=oxSh1>1hj8Q)c;tb|+v?ySrd;$>?uJrxraois4S>dt?|A%2!&|BOl?7ItLAA2u%j zi|lR2Et)}i&f(XmF=XCih?B~#-@VvehO(mld9t5Mt$T9%&N{yrp0>Lvbb*J4-EXPx&QDh*dE@)qy|3rMH~p8-Kcu~j zlj0hI6ykH7gy2HXFfYcFGQC+BnvDbpXDmDGz(~be(U1JT29^$HCQG-Ax-(50c)gfA z&HnpUe*D!j+GYx^+eX)q?z;Wh>n*gDycXDg+Ic2bP9gUR5zL=?V(Za8&am61LtE_b zIeCm%4V|KQ_%QlrmXxZ#My~f2ZWdjrcCcBzJPB7)4PEJ+bSFvp#rtGz5P(1W)`xQL zWoYNTgknk;G&TCdaOR~Nx*Br=oyIx`-OVIcUqY~#;d7~92D(zCWI~pqoZRW1S8LeuyM^X2T7lW^)o1~-nY6Y@yq1H-{Z4ba zcc&JWy5ky39d0aWXH$sL0Lg-UFkT7ym3!Tsm+QIzt4W3MFz;fyq_`GUS)vN&u$WYZ z_RP2080d6u>V`=mGfj|QUEcLt*jDcu58XicgQ~5OBrg_(>AeXFs@8?yrKu}2r{Cd~ z*OZXzK@MBdPRS0D6`CtM8M;UJ5E$vC0di6@N4Oo%C&}~DQ-;nV`u(Y|FEO%WN*}E$%3PvBodXX6A3=_k?=6m3 z)D*0#gZa~3UgroT+ORz1ZTfg;BIO(iyTk)26jN+YBvr+=Dm?7KS1@eil8O6^r%=bE z_@K7xD9DuF;V{{(Bbui*+R0}sbn<{Mc6pL)VwpHt;wuD^nII98t55bFcNiu<0``h_pRHK*{-ydtb4M57z*+POsdh7YOU6K^N&=|>h)r;gRv zer`n4@*a<>?NH9fu%4QzHeXd}Bix4cL~A69=mvn#_=|<#*bNdV6c-xyN)&!JXp?xu zix~(hISLGmYOuYsWuB-R^p3b0bsX=5!+Gz0KZTW5BYVId_Tmyf(GMvS5lUXH|w)oXn`qHW^t`Mi+NW zPkU)@1RmU~W<3W4Jk9kQ^l*ENW?vq&kQSqyUP zIJ){nvS3)!>AH}h8rdv*U1jS21{7U*4dSp-BOy_Js#nOb@k^BY!Y^u6Hh+%G=fHcP z*(rCW%c*}EUzp(X2bhP+GGwo{3FMDQd!@?}R|LmeVoRDWFVdkuL5@droDCtN>L=o@ zKOHZ||Bsl@zYJ zJ7|pf;fKuL22Olol0KeV;)Ix|nkiEF0Cfq~jpjd_={W~t?aw|MV8v06cehkS&%Y8f zHCsQ6;AZIfFz9EVuq|^oS3|ED0%#v5gC8~7?e9e}_3p*JJB#pF_cHd|IQ711vt?(j(u!pRD)bqOCfpyQsqv~Px7ox3n zV%($K(xL5TBPhpdAx{WR(9*TNYL)P)pAj-4Pl&-Z}8|C^^6EvabmAFMzzN1WQ|n;j_7SDq8Eqk7lM+0m)#V=(ueB3&iBwtfBrlEkpo<8ZZ@v`cZmA~k6nQiV zV}$o%x*8hf{V#9+D5qGQ0D5L3V7dMhAHN|RC@w*cLrh>TIoCD$&khD(;*-0ocjS-HOazDQ(t4H})` z&H-=YT!NHVaQb?!=?(9m@xkjipO9T|5gULk%UFpMk-ty~)6sobR&`OWm6v6ny z+Q;wKY!cA%vBC${eha&+h_DZ_6uj5bdD6@Ik5jm*Fu|Vi_OQwIbW;Zb5on9#VB;E{ zuDs@ex4Q9bG8Nenwgr8m=Bf#$8%;4W!}PL#$=NlFCr0;IUq!xLQkZYVm)HN|wFk3u z2D(hIIc;Dn==;Ptqvbo^l=8u)Z&}LO&!)fb4((Jq-IgGk*TGITmVT;B@tUYtB|--A ze4+l`!6MxQucWy_RUIDu+smwdw>MI)=U_f#zdL4*dSRCU#-_Y>Qj@)h`_jfkg%-fnHRjE`N$I0r2(#B%y1o7NyJ343UI7oAdovh+>D`t}7Zt6H z(P!?CN?#KRWj22Fq+clkRebpEig~R8ngzIRv2isI4uh^icR(1p#vy9@1GX}wpAwse z@p6;|*DifDZ2jis&c+$YzuV12ksTC`|Vjm8q3pq=r;9xqAJ@VI4^XkXkLI-B)A+p_#x(W zo0oNlP-fZW@45;7@#)N%=nH*JY+3Pk(Z$LIHlK5#)rHhHMRzR5<}B&7%(oGG_Gk%f zPfI#rQ1UbHs8#_(yEiIO&^pz64#>MuY=~_FDe$m!fZTAK`GtX+yi_h#H>P2t$$wq3 z#rV4Q1suFHutL6u)%wX}PiL-xq3Mns!waA??~S^f5FaT7gZwQh|x~_2>7W?j!UXi>DqmTlk zDTE`R{)V?FbnJc2ppRgAXW5--9Yx=lQfdz<&_-qo9@hth8x(sl2~DTh!~}$KM8D zWQLm~C)kY$!>c{%g3_+4eb)G?XeTjt@lC8n8{ji5#p24$VZZzBCIoK?v4wIuIF4Q7SEB#`j7 zFZcsjcR}kj0gdnEP$(%m+tHT+2KD)iIf^8 z>ntCPi=2+WPqHCU_i@=9jHrMBmLaymH&=gl;Q8Vn?-9)3wED7ot0($jLH(Fd+Mw63 zpJTE)=}2GxICJCVIX1h6?@n_jrAT+M-Z}6nR3@Pm0f|z=hU65=tv!EDb(O8-bQzO8 zT4lu0!`giL92hH(RdY>@Dagifgvw~Vee;UEE%X$X^6+kkDbzKBb%CxI<>tzG6FI)b zNXM1_MyrwYQxLG$KTMM*gI_-f)(gZQKz4fa_XxhdElVG6SW7@w9O>hO_mUb6!PtRl zT*aR#zE%fME!D$V&hOQ*Jgpn7Sp|1nZ+Ol8gEfoHX;q@2xP99TF~A4$b=71}lqae{)d?sj zVtNPZ)8F1+oJdI&TsSKefNJh%cuMjU7=~7rCzTpVo3`7CF^!vy83NH!n4uv1E%93M zzUd#!p)$OkqTE+66~9HTIM>wG$Im_V`sGESi{N@NN+agTLPJNAu&^j9`H6v+=$nAD zLX6UJgw|(fGq=tVu6tZ%2B^TASMm>Xeiy&QaB}79f5aXeLdx+)0wf--r(l93+6fm! z6lsb2K<1KlVr6%92w6R&x<@bRW#tw+)F^e@1^8MxC5JWBZS~Tb^^(`zGRU4i2lfV# zqR#hLU>x1>pS@UoNo1u@)!?tEG@B8MEbfDvrl+Cv$*)HfmSG!1dLx*|z2ArTT5*Ss zmhBb~kAeQ7d%oSZ}E zFzH?kmRN!$1fEyQw07ruk{9=|C818K4p0Qs6~-tx1e-uw&(=7+5_lxJ)_QShh%ka) z;q67TOEvHS`-Hle%Q_9h-klD)-Kf$MyKkHbs2?lFf=~yz$^Y8)T+>_7rpNOPwyT%i zj{nf9xX^D1%T|LwN|C!aCRR1~t_YdU15vaPkxfq6E#Yd8JxoB$qg8bHoz<)%*&!;? z(Wc~i$+I-3w?g?fS+iv4ycIBzBjYkdN)j%cxJI_Ylpb4BKip)JeoLnIU5)aj)tn{8 zYahpvJqFk&FC8Y(igupB!GKYqK%Qq9&8I%pnF;Ni8QGKxmPRNokjA{`FGB zW7FP9Yt3UyQ{iK=s&ha*=5aiVFJvb9!m>2{Hy2PfmBm!F+Y*aj-ve5emN_EPSP z`6N@#Ine^Re@1de1>R$OL5NHmu)=d@2ZihHRd~+@nlm%|K*12*kfPKeWPfgg8+v45 zDIVXOXw%^^X;_-@>ZTW37iM0x2}?CBh|7)VYrZ$;-qhSh!WxZKye@#}OSt|U)sh}7 zD0>20hPJG&^p-}2gwUlx$P9FNlKPt=TG zD!Ac=wb(AADDRYgNrng>5pjh0IP1koF`feoqbxcs^`%3(SS@VekEACx#5CGQS2l*I z!+_OEeW=p@5#-2q3v)a_RT z$xNC)3>G8FFm=rs)vAXt2v!BiagK0Yv?N8wfH1_#D6YF~6XT8fF4ogwNz-04ZW^Yj z+%Mk)AEL#V3Qvpj7_Go7MKBfijqq-%^>Oj;%!m(W?{?v5&iyi(2!4%%9Hn&csi(k= zNnrO)>yL^Cq1IATb$4AaT~pVj>!DEQbexd82g%DFsi`Tw&xdimzo#DY)dt!5vNjI~UMr}5cyJlD;d=w+Smk}0ij`J(}OA$MErn`t!KmIQG#As_oCMGg_o z{VoZPXN;SOq5vFm4Mh8U|5`|{efbq*5S#8aoKn(Y60V4!Ifu*8opm5OsEbS52oFB1 z%(K}NPVT8xQ9NR0F>$M`;z_UuA%#9gpjF{;G!z*&U28r1 zE&qmw&3F;K`}NsdB2>F#n$I8KSyDB%UI=I$&?=J7;KRKR}9F*Ct;P$Iv?!M+nZ zjNWl}yiIIj*B5iL4Q?k*T@qHw4!*FQw%sUaiCgDHg3$jmY;xGbwyM@9_B2G}&_IKZko>LCA5kNOzhx?G~AQ-bZD0RwHU8T2Q za_c5yDOiR)<5z0t)g81o%=l%LJ`H3vk+;1kAxA9c9B4URsYVQ+2$q}_T%F)fH%zul>Ebv{J$dl^eR_tEc#KW7SH+)$$P*q-99heUshMj7C3U3k~nIPZU!+%KMe(LT) zO?N3Yc$;t=nw^ld8;Ki+F`PCQ@n;GDL}(b74k2S`2Gj6m_50AtMci(M>W65Ov+vvl z(scj*2pg*R!Y2+1s^QD?58Lzm1yHl#`U2~v8#xm0Z%jCpVv=6wWS$l!x^3fE?npr{v6q9%wMb~ z*A1Gh%y(MI9x$9r6%xL_NGndGDe37#mW&-hufGh2wz@Nqc zP`QjrePSXNxV)u#R_eyke&iZV#5~R|SXZw3x+83bjOf^a>HfPwgBLcClMV=;BNX#Z zA|Li}$o>2J1h`Us(3zmVsg*MYi?vLnuc$A0|m5AQCb@@p-F=Q}|6;b}*4vT8Fm@oABa>Ka7`g>1)VH8^ZnwoI&q zVf>)#LCui{xD@_;#Y{CdZTIMfi4?fs$<%yRByNUMU8;wzKjPTH5>x$ZtSjQ~d+F6U zy&XD%H*?t6w9nM7LXk&f0-JBxyNN5u^E}ST%5<(YBFF?hy)n89PtyhHWzu4MNTjIM z4L#xHl^?Hpvr1oQjm0jdw?Fp0$lBc5u+w~I_S5|`Bs;XjvO zo#=k{o9gc<<~OgN&fkpD_#|w5lst-Z{E%qG7_h&v<=s3|jhGA+{PHy0*w$bE98l78 zQ~qHrX2bg9cKk;5?rcZla1(lZ5*1|Vd@)f>V}Ed`r&Ef74)}Bwz*IO0tF~vU8jVWxuX$# zgby?(Br@;8L@)J{s_mXidh!0}Jnn&HLxt5xC>cMB^zz^mnt0K^=}ER#9dKdtqJfrT zs|j>~=0?t3*m}1L8Mi?iTzb!qY1Q~U5`I#G=fFEdimb3tAH(GOiIRp;>jvk5^FY?q zyv1;@m=HCL;})lYat|kGjAfXfQ*N767J@p&bZeJuq#DT*GzIu;dD7$!;Y$eL>^oiA zvuA|iS>A#r_mlarYg{B8^ux7coSkWtlP`aTv`8>xtpsW{rpTaG(nTHuA0Kt%X2=>} zY(dbkQzqbgxb&ANcMX8Fo7&t`mKV>ch>*1bb3484vwo&+Y;me$195T!>^X=`La<9R zQ&nE|)hLEVOJ;&kPhIc9hL5e$cYu@#S>t3&g+bVi7tiUrgdV9#N&V784UgZrRZQae zh^k|hDCu-H-;_}SF#$`8ZJa%^23@SI(yd%8%Yicn z7l-0|;rrMnTqBkHi4SC%EDf=`DCzvehf<;WoBo4ClOy>L4y)03m=YHB_mjf+MwHH z=}O2-^KX&+vdB#8qBkzd2%%p#Uq7uQ8XaJ%&n6UNyHTx1W6Q>nL7fGb=c|X&0`w9; zy$7{jr#^^uN!w?03&jrQv;D3xNoBn2fp*&HX**Tbz_-#LygZDjq7?GsSf0I>Xm~X) z|LwZYr0r4qTvQ0np(*)v6Ih6BafU>PtKc%$?|PV>{8?pG&j6NJE= zu}0fZJYgXoC*bCDr5@o6d;>KDu090XSI)=I+UfntyX>fL1p~CV$E8vR;Y~4LZ+?m( z6WhtzSJN?m+#)}|ET9g(9v(f7Wqi{Rzz}v3f%9x7AVyfUreXEo$PF-fUasBP3zobk zD_Du1GfK*7HCgbwXmwzmv+s=r{h83sjrY%4i89ZD09!&Gh4U+irG`)%WQ>V=#^L46 z_&`hO;b>2J>;OB}3ig=h_nTIo{fUw`CtK~~tIx_7?qkF#Jl=OQ?3%Dd9qknlkj2ah zPVfq%o4=p(J?nU&yp|eZDa+Gy>Im`fUS4{gY8~^~N-ODbx03tyyycP9CNSVN;;iDg z{=A@d0lmZ5WIl0qzwk<;8ZfB~r}|z5HJ4xGgoxFW$^V8Uz9PiSmr2zgVFRiHZ5)Ti zFq~((7uoWP-j`pub|S~O0SSkw;}VG1MiJ_DAy0m_6@kvn)EDT^dBKc=A?AKE9J%D| z*MqrfI*iE^_?BKU)?;=0CDBi@X^vTq-0Z)0=n5Bm`)eboW;h$>5UwBE+vtbL0QgS- zA{bJx*0^|S-ne-E4pdqWWpr8sd4IR2iTc@)D>LXkH9V3~{ae@IEhCtGq*(a0i<%xc zsCq}jFlNCD4-mF#iH0kOGbcWI@c(Uyi--g;Dn|FPH$pm^R-4*4EregY}hj2I=vpD6twsVQmu64zj z?KdICThM3_P<}_1U-e}Ga97`7YVR`-sZ82ijW)X3>9+K7ADTDqbr^=gJ5wy>Y(H|?M76vK9lT(O zJmXiRa!^lm5Q2@`hAFaeIFlxc&G$D4cDTt-3)<(CJ|j~A5X>z6S-e7NI7^W<+z^hXGuY$LaII|CJ!xbB(1W3}&t6bA zxvRhywyvlj>a)N1+&a6V!qq1xj&qiF%@hw@Ymr6A=w* zwL+dS0%I<9t4pc~zuHOK36Ihdi1#wPF@g52gogpGZ9QyXkH(p*`ZX<*@qboPMfdn!aHRHow;SV%3kT=|$0kNEp^tziF{WRH)ES_ZWgk0*j=6jYe2q~Pr=YS&}Aw@iB zI`fN%sJqHn9JqD6evd@3J?|XQfD!fdfM?mrAFkf96!-pwJkT2lt-0e8WT}1UqP#bq z#qrl`$9=yx@Zp~r4T*C)=(^N{i$5!{%z*G3 z9wNC^M(*tbO^+Lf?aH%3HW5enWPEibNWPDATFEn_A-`|mJMmDnGZz#}Fld49foU;4 z?{;8E=;F#$z^MkoS3u^CxN{=Hqpf=yhJK{$^6KTo+SFNf(j93mXXzQLz2dBF(1E)@ zTKhN~31%9{+&EpiJ~!_7mYoBx$?q;)lV;c@@>DZdTQhMdic+viah|=zg)B@cpZ@D(qzS9=0lp$egk zroLUH)oi@oH5Y}gs4p34E^@l>T%K8tI3B;%Vb;BvV(d#wGjJNK)ew~G z%{>)2Lg}y#?nJ@g*O?_hpN%!nbl}=P8jX6G;?EyC89ah|MVIDopP=|5%AshihhTg$ zm$6S8I3@=YPBm$5pM^HCwLd-!GV$4dl!L3FMpL6+#4q3xg!gT7?1539EaR5&zVgp< zJ8!dWIiGk%O@7K@%%$oTe!r?vlKi#bojx%vy)bwvPXS1uI*(HK6sX_Yo}{F_C({$)kP_z= zo1dp}B)&&MbcKhqbB_~>r!}K0b+_lKd9j_H=8inH&!8LVBhGxrqS?kaQrk6oC(4IU z{UH`TM90`d2IIQ>3Ifd9;B%>Jke&B+>c9Tjs!u2gS@4_!j~>ggy;r*8=2-$;fgKx-JXG*G;xN}MB6CS`GdBsB zbC;yd>WCSg-9F_Da4J${${<{Om(e{i%YWzV)z^);uY%GQ}a z!MDK=^5J6u!S|8HB@Hg)3oAsQS&G25NtW7F-28}9|;{d+hCjdPkKZ_@Pi8DLJ6ma<-g$=Dnr%L;U*U#$w(tsSNw~Cl|V(Q}W&^)4m zojLQ`B*bgrwN~Iyc@3ghq^f*&f@|{6ex^NNpqSaCORIOSe8FWef6zEIhiJQ&iVrR* zSULxyWXnujJ|!L0_mJ-keTRQO2G_B2n(lcv~c(F*bquZ{FVj{-5-JI$x@m0jk2BMR4il~f&-8Ej|84=WJxMT3B z6poeO?3HBOb2coe*AeA>7Uc&|V%x-#j|sHzoMS3r{G0OO zVd(xbqel~IF*V&c7d97p;4hZbKGe-upUA(tQz4U+aU4yGEMR&@_`=bzb&P2(P~gw1?Q%*JFOx9_}^1L_&il(WjS~=(@3JM9lagkH1@? zV05)?Lh<91q)Uwi;nyy&Y@HM|U;jXT$mKahntMAkQSTfu8ls-%goeD%74pM&-ZzpM zg3&20W`-SQ8cQ-QKTC;z@U+7l#%PsO1w&Z>bab4tyEoNPBopH6=9)lu^O-$3L?rZr zhYCw5vV54%3I>+M+cKnD5n*WO#-ATjc5E;gG}tU~2t${|cY)SZwye2qOFzpVu1gps zEStgXHyhbXX=&0n>F-6|yml`kY8%>f#;?nAr$-TQ-m`KY3}8kY1!eEW8Bb8vw{3bW z9o!b|KbX9Hg*mS2onn>$*R{w?PdZ7xhLA@lO63!ilCM0Nbs8`|V1CNkVyd0QAaj!> zM(Po&J#pU6+pPP?Y0)kN?s!2bk|= ze6Dnl*RH|HOG4^Uk5D%Zu=CO}IqdALzs`YNS}1JAXodq!AC;rtPXrvBIQeQW^bi%2 zAR}9=5bHmYSA=dF+bu3oqO`x+ZC^{S#05@wytT*$6Fn4J2&U#=+Rn;J-~8RB&iGY@ zeJ|j{mA7L6l*~d>r=NhNTt3@o!f|?@(5J$?QZC-hkHR9=#P;UX5W5m%w@GanUV2Kc zqQ_gL)(s`D1W2$>1hU0?UUh~&#k0I%-_i9(QO=j%Ka5;TE3B35(^zyrLv|7M2MJH4 zsw`=sH)3pdrHjbwG$}5lb^2#|mYWHBS01)bYbsxt=Ar@*7eJra@dm`1)6$rbpg1*z zf;gSO1@?!5Dg>OH1>!`>B4nm+8s=hMle_B;xPi5i<9;d6PYp&3o(9w`>8e5gw}! zH8J#H*yOK*kF^GvDPz=o3G}eZjWVaC@am}oy>Xt_-6~PuJ+6$!#+#3~dbxkE9)Ekm zJ*qKfCvbB})n{u}vC1dnL`wocb`E%A8TH9%-qPjXCN?^ViBs%7_Lt|6dH?D`W7L_D zl%7SS26Te4JY052*puQat6F~yO?y^2PHo&zl%$;+fv!(V=D4(`s*LWzB-S!@w)=o^nuo;^2{i(jtWs&qS z`-}06T9D_L@L5z&cbS~2r1{=YWn<#y!?8!Fk$TF20f=UcsNJ=>hxP zb&2Ha>4W3P_9dELRZ$NUL=!#zb`)Aj5i)M?H!w^1NMtzC>GRUAx;N?=|9II{sazpz zt@N)7Kdc3Uu9+_EfT5LxrbBu8tDke~h9Yo*ODOGonjAktZ{Tmbg~t_p=#AwDY<_FN zrkF6(d7@Ml5nZs1$erbZlg(d3g=C_BZ&9z%gcgs^qJQ_a(SxIUig*?gWZU* zco_^>{{Tv%HTA?yxtNvo5s**gk^HK5nJ4}1^R@u(^8R_}GzHD0tzRQP<$=i=0hFl+ z*Qw8^6&#wqoU6Lx(+!Le21b7>=A@PgS%Wl%uy%q*576L@{Y^eOu8XS0cpE%yc2a)~ zfOGVqE^Z^(Kl->@K0aW-Ha|{jjjCGNt3wEpJ7J^X=f7IZp5p#2#)o4Lt$ zd3P3~JohiV`QXsvD*~4_d8neQvDQ^IS~h9dWpRW2fUlT&|GCR?S5Xl;iyx&6a$n66R@wO~Hz*n2S<1MsAl`r-y@9FlkkW1r=NKwRns`h)I? z2tqwjiVT;a00_wA2P63!=6|&0iABZ3Nq{)&K_2*|i^T78iY;R@4B(L5f%GFZ17}c| zQ{!x_wD$S;arzo0cpblc3umU~8SC#{{Myv&OGg6jQ-I7$pXpKm0Bl?-4R31Y`|id7 zAMhbST-#f8M)M*rgnt$=zm6)_Z)8HT{tTll`Bym}v2c#!bqcIF;EWH<=B~qe3Hcsf zr>H6N{{Z!<3!47`Yt=wI&^TY?jQ;>J{uK&d&g>Zh_wEPO99CkpJNd~uVbH7K9R36v zmu1rgLp~s z6oYR#RKY)(=Cp0~iSD^;b^x9?;GBE*u9MF;?EG6L!Dk+1gC`k}3;CYEm0BJtgU-Xe zKz|la4n49f0_kDAO|Dq>Dy&95xHUlNq`u^frx_@fo+2C_EQYlaFd_`lhqYu!oEeFvJ1+16UF2cQLaKLwjxLLXp?;=jv+2TJ^l2 zx@91r?&P1xJt^1?Kkd8N;0=Efn2wkylkb2tP`&87LefM=PH;M!4bE^Q-i+LCI6Qwd zQ<SSzzMSw-ny!9`4y-RXI#(tpn6w{;JMy42LVyCWHDIbWzs5eOwFL5cJ zUqv7v&XsQ_;uvITH3-6x&LLnqJuc&hiB_F_-#ikeL(CQY&CGoDv>U#2UJx4gfdLtJfA zynp~7{<_h9divTdd0ufHvIpx$fY*mfm(31s*n!-(KTOp3I&!pRB<9#>o_YNHeihCS z7HRg-ht-$t`N#nqaLrnWT+{A>Xf6r{`>NY$IRf&2K*Urd#ri~JHw_=kKJu;O46XMNPCh&D(EIdiw)12sr^yTdKELR72t%IrLQ5t?G_S|q2VJ0WXDjbnH* zaS@n~yUs8_98^Eq@LP?#N`T3nD9aJ~8UXYOENtgp`(lyXy5m3i^=D0>yO8RJA?iw> z$n+nDdF9h;k;-06ZQzb}kgR_KGCw-d)30>_CQKsO9yd&PvHt+RaZ12-aer#t0*fQa zqt-?Kc>c6W6~i~2*J2Z%03dVjL8|9f`vgU<=ZvO0sVDOoC;8SqemwBlavUUpsmP5m z+5B<*=&&7KzN6wxbXB;KZWF&&{)05z&k#Ig7k5hwk-%S*k8Jm>y+2ygwQEpp_bxID zI4D6Lxj)F7o-eS&0ZoeP2+1vxpU?SXoq&RELgoN3t?njrr#pjk2e%}1^r)NSW~Bhi zF8+X^ZN!gU;;#Lg7ykfCg^YxM2LXRWkItCJ)g<#BLOA~bWVhscQD7x+h|J0!<`Eh1 zxmmwa(zMg!6|}GhwuIa&kC?{TQTQHfow?Mt+1bHUyU{{T*vSzys5U{Y@<9Booo zJpL<>%8M{MpZHl?KrGiOG&@H;5(m%>=Co}5Tc_$)W@{^!X!HL7Ef<_0V}o3*ky@1z zPb)Ha!mAI@ujyH{Xx<*YZOHqXc-y@2et?XAR9S)8NqcJ^SW5@ac*^5Hh$fnKdsYX{ zyN)ote6n{w+0W@*qWE^@BmV$KF-V6Xhw4YR+z-dCQoHblrPC{FPzT2YXyAThKdlx6 zr@ezsl21BqL4%Ms4gF8BAXLKM$=ne?nI<}L8|(M6T)JpB7SXk|OD5L)*bUd}ML@C7 zWg4cR3brXLlah#Z%I+H9I*x%TJa!;3TWFAItfgq`J1X z6BdG4vyuC`5U3wQIsEHg^$kKniJ^s<0nwOe^y^B&b6xd)X4y=R$?8J!`r{bRNNFHRZdkgXJN|r=Z9mtyLG=&YLIN^!5_N$qIg44@>}P zupYF!w0E(s+#6rHDJDAp6_==ZlU1}PJ1a-e1z1RSlk~=a8sL*rH|PE*R!<_a;G&Vw zz7Bs%mfuwHv=4|(mc)`awm>J{SY#idqQG`gc2J^B9t3g^Yk1jV}N9Pn@m`ry-E@*NzpxLHtzLGBrzUsO2TCXGA+#ql_=q4AE$OnUg?nvi~wj0a1&9$?> zK-|EMynZ?TDtFclBQF$;++Z&!9{nh=62p0@M&w%DNJm1hzv2Zg&cA&Hvlq7Wlc6hy zKafA+StrDn6Gmc|DN)y|`FU)ApG?zj@AMmu?P@@9er@Q(Kcy=HG#)#$`D3`Wxke)# z##^7jpVZZ)@kOP^S~%J_2LWBShWxYo)+Ddt>9Wl{V8_W3k_X}kS_#vkEp;nf;duqw zQ*YGgr4|FE{@k?@GnFxCf)|oK@-k~WE4w-5Vw#h>7S0Yx{PCL3Re70alG!E4-7z`i z->whVvo5upYZhaF6!7Hmq9DZnAmbER4%$bVh>SFDPe$FA{#5jRMmA9{)-Azc25Zja zpF+U6f^2Oypc?J&&mM@*x(w>y77O9B7{wI zFOwKJc6_cs1Ihda0B@`L+1V*f@P1vVKdm}Ro+wJ(0N`*~bI<4e>ki9O@b%$otY=nU z#wIKn{RrZ$-fD4LpqefJvkUt9FeuCA2u>A-D(g$*2X>a3pJy&R3nlAHdc$ z`sTMP2`nsC5BqX#Z2m+Vt81)ys#y!_5g0(u6;AL+zA-=>@2E=|D*S=yHn-=yn$Nh@ zq_(&Z1RiSj%eVx6FnRpxrq0%7^Cyj&NWlyX0r(zjK^3w_sSIJjBMOIR(e5%076GyN zk5?{kH1<0%2k&#Y9^4P-TLWA1Bd9GDTZepL{(RO<@mobFnG2O>KCE$%Zj~H%6I`fS z-_Q3g@}IyCC<5y1{wjuI+JQ}{j7Qf4>N?ffd{Yg}7`}CG;f5IgL!ZL14W_ocmre51 zsO8B6@b#!BU3M*^>S$F@aG*AOV6mVMkuPI1gNb&I2*U*xUR_^HizzLm;eKtwhxF#T zxvg%N;5e3hjBtN@v<&-XR5!nEBr;l~s66k<$GF7+Y`>2@C20Y^nT!5KLHdeu|n zUjX=uG8*Ow=ty&dJu`x9FzNao^JU@-Ddd1U{(RRzsd!t$I0pL7ly%;N)3F2mCBc__ zys;;0cqNsz;X!ycdT3U~Y^mcIW0_sjnP@fG3%<=`Gt z>aT_W0AQc%OZMr1=qo4v`#w zu0l<2${T#!qe~&+D#wryMBgY@BAb#=WQ7k1ZH(all0!dUyW-3M>~kE<9CZj9e&0=k6RHdSG$=D!A2TMQOCH z?9GpsX2Ordn&+hP4Z4*xk2QO;rvCuUi~ws4c&0IQL#xFQKOtveSo&<|^`I_#KilVM z{M}X~9G%2ujN|jHDK#ru?igutNQe9K?m_wE70#VQRB0AOF-IG61Ckv70H38^j`C3- z?;0lE$zsHx@SrYrNpYz?sfyC&QIB+e_|K;74E_~XWbr28Ak`Fi+Ni9@>;C}Ot}^Fc z(jj(&85&mm#grBRp4h>~bF)M)r~6Ii?1ag{kLC(M>A(XYodD!|wZOWR=k01r{r7yY z9-|z7wGt)F2Yt26oFCxHQ}4@H1S5*Xq*F~O5BCDbN~j*BvHU8;8kME2o=kVe*#7_o zjBvjA??A446}|qjj8B?m&Il3(LVr`A$W?2dXIe>wijj@IjJX8;I#)Fv)|e;Coh$z09%y0IRr3G1LVBkHh}}uRwDe@M~I{%(CiUR?e)rEPpjPAC+lEsOUF| z=US=X*!9Qb+PN7u3%vPO!2)$Gugz64YfQ!CWrSnzj21uB^fXv5ck#z{AQDLXQ1r$D z$LeZAo>o`wn?rWm0Y8m-UDf8bXzHf$O~)z}F+a=sRCfL>)?FKP5~M)n6=0|E7@#hC zY?gK*{MIclf7-|E%|mx^mhgG41c%oy90BXvxVW{w8bl9qe=J8hK5-xtdt{6s!mUSt zX%yf<%FKCP#Ps*hF+g13T~giSA{H#YmP9A{4Ah={g@ZzOarZWp&*M~D;U-LZODV_j zfww=7Y9!aqy6p(c2VJ1!@HiR#C>_n1{6lvRV!MD_A?y= z8sj9_?jm14*h_#o*gJg>{{UXIt~^>s4g6m&^htO{8`_;<$@z?J*O|)o)tm`+zV<{OMyE!k!1VGtF0)^F+ICmzL%> z9hl&L9Y^C+&vT>3zE)N@C$QVQ^T*{%Vbg}zj|I90DS|WDaf3iyrvq6*xK5dlo$Gq||x&DXqpe`30 zrjKz6i^)`te)eQ2Gx;2!V^F@MrAY}9thWG+;1b6l=h~kt-b6ooBA*=NXc!-^Yc}Ih zxaKnzx+%vpAzq&9a!H^rW+m>IXPb!aSrBA=+1y9AaB9pxCem*iL{=^S^qWD)u4-eh zm`IN97|y}+;kX$0W1LguzSAzEV>}{2f4b@b&%1P>R~a^;Xc=B6l14+o&Nk=M9DXF4 zjeL6rxDiN9vT{Un0n^x=W~epAoxQo+69|KS*Ofj|>~sD#CCd1E>BJYM6|e~NFc0Q9 zGzG@#{{RwY^PN7$7VMI%3l(vnP)0u-*FpaP3F&+_-JIos%WY+ldt(6q06OKaZFD(e z@?mt5PXPj>llfrcvM2D|Y(UfQksWjL0>OVEc%UxM>Mx0!P3!r0T6MxI9B<!4N?e}Ev!(jgaPtv?|Q1I5bCK@eHSh|wMfnV@7Ue@Ma1`xWX?acoG#0p8U z40>Y}1p!E?4czM&2V$tFU1$qGLJF-^GfJ;X5o0HfMmIW2+_)lNQ)ab82J z=-wL*=giW_E08|(06x1(AC*)~9V8aFyt-D-Kq^Tf9>WWd&Vae@E3Bl^tdmJ94&qf+ zBR;%hp_y#Atj2jGlduF9_B`gigiAh>>b5tR7bSk;Y}}xG;|uxJ()g2FME&|PjAM2g zxBg3?=|EidCh-NXmnJT?DM&n&c+jan>Mn0g7WAU#Te-+w6 z8!hkJN;gf(=C9;)kIJpVuV|NSEpH{Y0|2V|Z5hYt59L5y^`Wk4vn$SS(}U05%Acy^ z`O`kpVlBfwkxqCy*htCg&RZXyd3V{oGkqbF%H{~&IOVbVsm6a=YBi>kMDUbpF@n*Z zs59(Xx9N%k=cLM?Yi05yEXl~&!EyK!IrpY0)FM;9&TXZR?Zgr0Nq?)rh6 z&AHb6r1E6bS;up9;X$)NP$nu%OC82helPKI2tTe7mqD1CU&Ck=QnQ{OX*S zSF*%pe<;V(8*`EW00KYCm4$P1&OIK`k!2hDVRBF(^XXa-tVspA^3|j%&zHP$j-VE= zFq-F2X})K;i9yIJ8C8CpI*-PS2Gwq)GQ)Wk@e+PwrAp(c3_0VeraPXeVXoO~IJSfL zGLA}(xxx2RK&=;>dTf#Mdl17l2)^SC7Y>L_4$wDK?GEfeQ|6&yR^t*&fU#}`q!6Dx?8M2pA#s~ z^lhPifCLu&scgJocK8b=!|gjjbqYuw$YGz?GzT&1Q$nu7OLl$D)yHgf;E~VLpnWpg z<3DXvJ3n?Czd@W=7cYo4XJ$4ei4Hz_FjL=w&*fSvt?R9gs*mOmzMx=x`j5_w4(0XH zbVrbwVDi*;ArCn8!Ty!Fw=vq=2%F4g9;9#wv93}*Qt~od<}_yOxfrVtu1Tp=T$UD< zuSz6K_kMA^C$}mFKNL**@q3d9FJOt`^1-a#KtYOKvx6Z0t!4xO88@{Jkn!yldg;rxwO|^PCU?{x5uDuN`MhmJ>8=K=mt({$h&- z%CUHpR+$5}lu|3UH%8@$=qR<<^r>!|J%ZL@kaiP}I%Jgt^{SIz~ann6ND%R7ltP2REyALDtu&^Ni0AJRN1O07h3_HzZk-*mN8t$>Vte6R zy+qAn9E$QTC6Iu{S7~oR0{eHaRynQWA8(a@%M^d=!{87;t$;Fp1!%6ZaBYR>oemoq z4Egzc{lU1JEEhKyQfW5}2}~*u0LWJQ6CmUI*4?DnQJ{GyTsirSnCs{^?a8ht*6znz ziDj2gYn{BV=4jU=x`qInr>kgImw!Ca&m4yVR5?{#{RrZng6DpoHq#(yw}E6sxCJ6G zo4D<~jGub9W8(d?FrL}jSN>W{ASWlc09T98r|Oz>E8N^9DH!=td1qtJaguTMJk+mw z1-*=S8l1Nb?nz>Zv7MvpSmV2M}rqVQNR`&+t`^sP-V#ai3OB)QV9<7fNC@N?XOw+;DDpg_*XDF^6Ct_}VjA zkALCsE#$D?^U0CsOc{^UZZXHd>rTORdSSNlBe9j{os+(HsXm;F(6-V9iY2;Lh@Jwo z20vVZ*1WdU#M+cF`MHUsQ-(Pt0qvC>`&HG~d`GFT+O#wl(TwNJOcU>p{{Wp93!aQL zrL!fXjv}DsG_DC^dz|t=3L%SGc{VfJ#^VHm$;b0GLu&)!^<32CFZB489e!Co;|$^b;#?+ zGyMMm3i3E+jwu%F%JXCc<;VKp#Hs1)oK^PmZnD2LlEnZdU~I~OI_CqA&Vae-(0GR0 zd5K3!K>NOQds{uSbNwp)=Ao&K8Ej&dCp*=1{{W8e73RP2n|O1`AKI5z$sjzksR}<4 zo@)n8@&5pTnWVe4*A{i$OCvKjG3>w`eK?}QbJZr+wMk{feq3b#00SmSA5Z?hK`)B+ zYXsZ&0hB*~g^c|&az7JXc=(Uuzc5ga%p2-i2&aK!8)fAto0REMs7N>P~;!QL}a5!lr8T#h{&=)q(iWkAF?&^Kz?gT!7MyKxK7ID^rjT6hqn}ojKW(^);cR@R2rKm`n!6J%sB4QT(PSfN zk?;T?pEc*!+Wwh&J|1D_uT>InKz;XjtFGFFhYb&&ynw)gkH@AxsIXk?f3*Bh<(%6` zGK^zmo`cvL&tDT>Iyy-d*6yU16K7^W-U@IllY7_Fb1YWurMTa>BR@?40EK6-#0&UN zXN`mz{{UFgvCcZ<4T1U5VRIc!zAl2)Y?c6_`-0_IdlD*v)x14>8;>S?W0D-Q?gV@M z)isBS{{Xf(OAqeI;CY)|WBt>DD&nijBCIncB#w5d`Onjm2hx>?%yQ{{;VU-tG|QQH zj=o`W7Jh`(&8*+shLR(eVbdpR{d#-W+=E<}a)B*ohp7@|KOU6jmTfu`^H>XhyIv;V zKT*XTp>qm96zdVj5@^hu&l?wVjC&qxjpf~y$M2`HSKbEpWhWnAN9A1~*>#;oi@a@Y zgmA;0{dni|tQ)&%t)J}k+{Y6h2i=U5?gkAUqPd%HJSjY@Es`X1so>6CaC?vmtt%@< zjZ84!3#izg(Z=BIJ^ubpVd@%nibv;PW%qUt$`99%>sdzMPP-mNHiOG=`Qk@kaz;<* zM<{b0c=9y$BGN^OZo?}SQ_to{;A(HTYostt7`WvzkUe-gHG;kzONc{S+<8QFiCAOk zbJnt-!urI&J*4{qIoO;7^}*}(qQd4oi0=jLUPa@>dO<%c4S-|YkyUT(bUjV{pX~Hm zasefmk?+UlgIrD4f#NvwAbAmh$U&3@`?B*=X_|JjtOlVRtG6Zh0O0=sz_1M#A2FjZ zfh?zU`}t8%2NEgc&;m&PD6#PEmXRNkb#WxN<2z1yjGp`->G@S_i{lK70hC6aa4@+a zhg!6n(*Ugu(MZ|aFuSqr#ZMoIqm)-F4-4tbcGucf%f`ytU|hK;-)?dF3g1aY8%4sU z&p75opUXV{IIec$E7?Om!juR>{{Tg8*dE}3N79=N*Bq_Q<3E|k*Ncujb`)}rGq$wV z>=FL}(Qc-+EB9523zOR?XC{Pcpbgl~j0833s75g+#fsLsr zIQkxk+*MVv@m`!ftBX?Bq-XbJNbC5Y)L@T#EW?=E{{V#7N{-B1_YmN#~$=-ViE+A<_yNg3{#(%9L)+U@Q*j^2}2W7-UJ)cD* zKhBE<&T(#TZLb>SU+NJ!Y&Rx2LG{C^&04kb--!}$vKy!;jGy^=;lBXwfPR&)d*X>8 zgJkhVblJnQx#K?AHJ>iG;XCMJhW^p~x4>sE3jUeSJ;0*ExY@PMUfVz0ktESK-SXw& zAErO3#co)5;#lKY?bU7}#?|w2xDRYGYz~~)IcKMMH%gVI((LXxxyyM{4UOnXA1VAf zs~1N@)|>3gE&Sy?MuW?82iF-R*wJ9Q+}n8m<`49HdwAowQI-iH<2}NTe>%~NSB`fx z+sTGKS}Ww-Caf+c%m|G8=y%?l;h}BpQRQb zG3r*A5i%^Aj0o*7MhvV!1{ee$*{a2~{WM70b=1}!S&*S|lihe>kEM9bQg~Hldr7P& zMP~jH@&+BgPM?vjX1{wB*=F*^3iF2qC**&ge+n!d$D&QH>oCO8*=m*-Dx@9m7C8oe zvA6tc3rp`B+rODD{5SB(4hNE_ABy8O=2n`|ji!~EBD67N;bQ@dDe01aZ{=4kHCz7x zIql_zp)5vxsR&$;TwssH8bjtf{aab_Wz^y*>>XkU3Phy=_X<1xO*+fOcaX>SYu38A zW;k<8sNMYO z*jF|#W|HP;?;BBA!hF30f8*E$X11WzwCA@geq)(%OGw=?JxEbp^{%?otZ?a(MJJlT z5UrNU;Nv3%=e0{Fl_smc4OusV#vVPm`hakMDl9vbLp*wu2`uH)<%DMf8JL`Zz>Wd@ zD{9_J<4+>jZLZ7^qD{n)OfD;mi^Do?jEyafh%&$GqsJNb!Ok;TDJG`>0O;4j5FeRQ z1A)i;S;_huEEhYu{7d3HS>DNng|bK_I}Cm!AFXl?t?QOo4K>rEfW)&+8)F`acG3AY zK^D4dT4A5hZorAgmR zH%xf*7ZNT$xfSKFq)Tah*SbWvF2H9VV!99b2H<~6md8-Pd%g3B;Z+B7;Ks)tIVq3B zbrv1ZQ*RK=iS|7<-bjP|zdV2{{spu6W|?bosp4f9ZyZAe0(TC0IV^v|ypr$47`*Z? zZjo*ae(W@BB4g{YVE!hp-Q6&^`*r-$2-F@yDHea)TmnXYIikVLdt_SETNN{`7cve3 z`4qCBq380f-9jBATco)VNn)-o2B}D;=B^$#-1V5X9;z4oDKsZe0zllC-JQ-Zyelg5^IfYs&Gv09>9G8!yF&V zfaX1tPZI@sFXOa^>jN1?WNvz7WaN8_*Ih!_RkYhZiCyEBPMP}Pexz5G+4#QHlQpf3 zPrvRuTyTE_&sx#5@gU$(sWT8TT3d4+wMg%JCyr! zaaflA3{fE}(OnGXL$JU;#Rxx`G_vZt{-G1Ct*moGPs%aSdJ=!7Lj}gIr$QQSFd;no zmiSSh&!5QAVcge`!}2NtJTnLHw&}6>Wagj!fWPy`wrk(QQE`v$&rubNFmIr+lw z$oJfGKU#>%qj?Q;6pe0xWU#^xI}VI~f}Miqq46fGa=+=&$tYfnB$zCHuoQnv&0iKv zX8{t~yk&+q3^5QB7$2yqS*`$(J=v#IR5!ddI z(==EK$BR5aX_t7}Bs{w@V~=uoWP1u#*0rrlK_$PCkT@HB`16lU208sI#Fhzf9`;Br zqaX9pzGf%ds3w(f6fJiJ)UxCq&w<8$HigHwXs{ac>sQdAi&C8oif|*2Go1Qib6FSq z&x#@h-tC+Fi{)jMeOR1+TvMQzNVm7&HR>ad7tG4^=sCtu=TOC{+)mH-a<^MD436O# z{QwLA9;ctB76Sn5Hdc(ScMq0iV0X9x0y+)cis@t4uH|xV@2%Ld1Om!`To3^F&TBgN zP`Am7@)+(TA9$1If$j5W`Byup__x9^v5wZzLm|jf7z_a&&OlL*tri2&<kkL=!;j!!qQyb-@VCB z13m^laB?~P1vRw|0x1ouK<~I`doj*^@yMdUbBm|kK;nHQ83F2&IAtG}Mn0U^L15Pr zvs_%-K^tcP#=F}dy#_rg#^X$|KrOA=$E0pZ&*C%9R$KjlK58US{nh!yC_b!D_)yRi z&lT0mmxdK8{Z~5(&vTrd{{WF$N#Q>Z021ciEtvC(9KLbasRaHNyq7n2*3B_xcW!qp z?m7D4;C?lfo*}YHOnSsotnGoqhCaldqo2-|g>vL`YWgTd(lrYxpda2JIUbp8;<~#% ze)jhe+Uf|h4qMAm=xY;6SpHcGWpiMT>ot3W%ZUM;|{Qy6$dF`I1t6Ib6X|u4l z1c0xxRF0f-e<4#ex@6I+YFez8l9Qj9kbQ6o7^h&l=~3P47C>6*@rL!5T(X1cNo?on zDx9|wO#3y9m?LEQzEhSyykkE~mwb?euNzUc*PbS&q{(%4PPe9eMVb{U%0H;V10{V@#&gm>8RQ!@3u;d)T2k+-2VXe z>(3_fCHkt%YYm(>>NjPB$e<5(!2AYHNoDaC&7A@kfuuO%H^cjdZZYYT#R9q3F1@F; zK5Vx~$X@4xpHZHF3|6I=h@*}r7MpMF<<8M)n^}F%SRcm~&o;KY!!#Ds=gYxXk|DK; z{_9|m$kiLoWwgi~YF1ERNybVx#s2`uRP^oMiv`Zryh)|ZrbS8NC^=i0izvsq9M&3Z zc9YDvwkYcSf}-Dg=h%alAC793r;PkRsYET_CyH^_6(zDgivgZ0eYUfJZ0!~){{Vp{ z9fwYb`kE{kHX-p05Q4XsI|<}t=V>$k!w?7KSChrsWxfTJCI%n!&N$1c{{VRI!v6p& zr^GQ)vc!tisX;H*aVU62Y;m&3!b4Li0&p$?2L?YfP?~1 zCWX;sCfeRvG+ouEPV*b{#DD|Sey99E|*JEP8H%nN%aLVKMGa`&qAA7y0an+`L;83 zjJhFn^(uI+7x5$6+4+H9*8>G!T>eFJFg}93wKVBrjM)qJkYk21??IpLo^y{%=4H|! zPMpsJPct_l^Bf28E&QmkT=&>-VY*e8=Hf`B#zU4;pHM?|s}k#$HY*c6g5!9~z5{Ob z8NmR4HS>+cx@nWn)GwCYyW?-#2;6-(k%RoI7V!nHl`orbddde20OfASoseAU z=JAJy=iO&Dyu}Anr+?}WarGFiS+$=7>1XYb`LIbh%f3fY3i@~J>5SHO?zyDMvKZ`D zkz53l-cUCWOcDtELHboFbzcZvT)bN?rCp(@i6NC8*<{!m>4)nOijB1ude*|f;W6))B zpP@CKKB?iQGD$2mLmu3hSW(7LOq?H^)EX=t$7>zeh9o8n8{))qhEV%YzB1VN#YGjh z^{j0)T7jE!IZU#z)B~Jj>t0uHbKt#RMzD@~_mDn$Z46)o{@B8PU8{1-NAUKQZf|XM z38N@E@)4!mkM@RtB51H&gIK%qmY;ZT?Jlp8Gn3}Ibov3b@P9gh_~XR(i}t&lYlxUH zcMQCGs{zNpYrBKQmbRABx?Zf!E;a_j=I%D%Xvlw!#AE^we1gWVT6n6<&NCsB-TC9pY(L~OJ-N+q%c$v5vdgRK zV*nC-f|6jLrZM#*tH*2b`^0c4L|{SrPu%2oJ4nak1stQfi7$#FyN`U*Mj{`1nm|r{ zH#+wB8LJM$@bA-Zo>fzo*(#6Z&UBZCB}2tSVp^EHG#7i|QF z^5aLCNKVi#2ir9u++X_cHy4|eY3$oofaL< zt9>_2F)W{CYkQtQcRL*5cH9Or_02MG4HmZl07kcl29V{KAghDv$mj5`IXoNUn;DPx zPOB)6Ly`lrEIlxHewe0Qcx%QMF&n)O{$DkK^CFOz1L?@;{NjrR&6e=aucs0Hkbc9o z{KycT{t7UEAx@h@^3>{gP|Z0-1Q^|bEIm;3_=>&Zonzt#u&-qH3v^L;O)f-f68C8{ z)Ac8y8Ly|j9q>=Xo-MPFP_prbg{;70SY1gdeF~OLejG(f2;}`z`4E`Z#7iC*V5I%OY%OW1VIo*T!W{UylHoiuq0DUrH0?GGA9OLup z_>5JxvAzEQS#5UDAUQFIV5c2^Q~h|ar+gXWmD98fOHUEKo{Qy6wnfwJjI-Q@>*q6` z6^|HJ1KO(mLGho$TY@h<9i~o~5;kQHs$(Q{`{low6!}2;(d=)epU9U?oX*MS1xSb_ z4svh~N54;c?rya2hDS$PJV$qNa5x@JDI`hL`^-ym-wJwCH;;97wKi5e#0ifsH+)7E zasmOJzd>B4x$z5Go?X}0&w8gJf+7PN`hxh+;3-%xdR~F?H^CnaC6-+;NJ-h0Ci}@e z^;IAcK=M$wN2_$KJ$K?3t*+cIrxu^5*`^t@X_%CbyrUh59l*tS<({|UhPrFW(&9I4 zD}tM|{_rEWv8$5l9uM&xZ6dr5sBl>eWk~h}V9{W?=^A&(y;{#t{>aj$iYInJ@v6px zeZ9*ZgXxU&IIg<#O|;juOcxs#Mq?VBr(0R#0hkkX(2|BugY5}ew=`;plr52h=%C>7 z$Qb^0&0YS^S9{K>pjg9l(>oJ!Z7G#qk9OEuy7nW3)X`u$8FXE7F?70gQe!)kC%`TA zBa>MF0NOUOO3>YDFs#F*Eh6qadSnyV>0X6(`!9S#l_ED$-dn7Epp0b{4UdbrRREmeB$))`9F@;sN-PH(4~eF^k&@NjLH_`jE{w{j zxElz-AB`pP@lE7uDoq>te>6(bi2~!W7*o&VUr6a+33WYw(hu#Jq|wa9x5h}8GyrlK zgPwa4k3(NS{6+ANmEi9Xof`T{Y`nD(_NcI8ZoPLLjD2Wm3%YlSY_4GP^@TxrFs!W` zB9c8lKRTsxcc8&~ZX%lYIf=&5jVck}<;F4ZgIt==;oVL(8g{QXpiqs-#K;KzGuExl z-Vq6ltI-#k(H;D_B9u63;;&dpXxCE5HW z<%hm;ocm_H{#_#e+9N%M-O3CMGwhW%`j5Iu{7rL?w)J%o31!?oqn?-zjCJ+R z77L!q2CJck^42!md0nBgk5iG4*10Rc6T>XhSlQ^;S1X*e01-$X)Tzlo&bjM7ZrbR1 zI<36+k)OQ5_&jyWfO`57Ot#j%CkXTO$gdrgg=25LvHJ7#55kKD$h8Y-^?xqmVQVZl zaXrZcKTbIw;<0DbZ|x_BZ|%35L(^;<)xX&fA0oR$<4+IA7VD{5#xv!~8#IIc1D3E>Z zTwrJNr+;JV{{ZvxFa8Ao0QIN~pa0bItBo7Ry0z)XsVc|(3ZYXN`f?O|)|ZF;7yX?( zUTPYNl5VAZ){yb*lgRezShrpyIxGyZ%#cIX-Jg56r$7B_^Xt8H`&nhU($;&lbCzOB zT#xR8yGhUZlU|*V4EDWSTDsAj&AObMFfu@54t@E+A6(|R=(W8&QkgXg=aMJMDn8M< zeYnE*{Hwz6uRLvcDTBkNHrm6?-MPHK_J6v^=nvstosE_5i)1hSK#S+#vn(njLH^G? z=3Q1`({?CbAGOGfb&ji&fz&9~X`4B<(Q8__wzBh+Sr-1d9< zR(pYdQ*mFqsKt(bi6nhUtWWK)6VEr=o>luQ@M1?|7ybl5IsGfln@-oXeYW>sZoddK z<}0|#_u3ef^%$w;Tp2pEgZ1d-b#Xm903gl$~f-1x3>GL3~Y1H6MOJLBu> z4NLaxn7`srXksEG%eu-_(}G=h9C61L%v|ahx}Mv8B*_~V{{U4A1uc&3Ps~TsvR>oF z5i4o>TFzt*m-|zbA04xUf$TpzEC-|5>v{y2Ot-w`aHxPx9ufTj~BFwN}-&nHtd|IgCi- zuc<@I*(+i%~x@NO=dfI{*gj|*0&%fwKaKBvf=~;j9mH5+3xbkJXx0wmYmmF^R zAKeX{kE!ckIxT!l;yHZleO^%k1Q3eb2e3@9=1Hx1EG{h6LkXI911!J+ypB4J*dDyn zuw3<-JW2MQmwMZID-X;eX@FdMhlsV9kaea~-ZlHTm$jk*_C^$Ns}nEHKbh0kJ773r5P<))V; zE_*TtAp4Nt(x}|{%f)GMVS+rvj0l$si};+9O>+JnxzHBZ?T~14+B5OKL%E4Pj&uCU zuC!gPx&WX-U%snm6mG$li{$oFFnaq^uv~lG>k~3fCAbVe?~*XXJ$jzMN~L$c)xt%hL}DdYQqrItF>o1Vr|-NZuiyfne;T&FIl0sA{?&PNBB>cAqVo#>0Kj-8pFk?~ zemmc97NMeP(q2Z{%f}+*0o$iamAqG~>K5xXdSk^SfB|-9Mf$4X{8$K~%-KexO=9MU8b zK$0lsP&P-tA2|M1gK^_88*FINVwgqA4;o@nJ9WVH&OPx!&ts3r8a!y0_PLqnCvWcD zf!`#tC;Vx;h3&P)v)xMKB7<_^y7BHd0zQ@V4x!?^>&AUXSU`61L3# zS*{iji~j%=^x5QtTDXEcBEeM7n~)yB6$%gPXcf<~uNKLQw3ohPF4M9G&u+gqSpFc? z2gJT2j^SY*WR~Z<6e=_7ykp;vYvo-l;vTU9NHq~>aSIY+morBwB=QFB`5wUY?Olub zy5iUy`|XgfGZ0h`R3BW8z@Mc7bLm@o<&d)4$s|&LdML`A_T!a4$0Id(UTXS!7K;*u z9VU%IZ1o^07&Y-8ukjlFll~=ol(u_`^H{)3xb#yWAdgNDwJwYCFIFcF zI1|KoCf>xJqd$dsD||xIb^C?1zO*vBfEogfz@KRpZO_nF>wH1B@ZORV+6krzIR7Eg>rp3$Nq&t zT-%ez9}hK|u@rU}LNHr=Y!{~(C2}*K#{Hu-BbuSIs zBY$h?mir^%815BZW7l&5kE>PfBKP6msfesKOMfth^C2jWHq+DQQp`Z@jOL34%le0i zw2cV;r2hbh}2C+nIl7b{!%A6wFHn&a)- zp+WO2n}Ox?>6YV!y8X>)n07s13tBE}DL`-b!HTztL=@s^!*&71^%HQn}IQonMMTK*)S-e#R*PpCS_P8AG5Z*9j zAN#CMN7I2;^ludSYe1d+`!%$dbB0aM@j31C{{Royn)4Uc{B>a~omWkQ>eY|>=$9{p z*_D}&2e&@eVo5A@Xc`M^Xsp$6u4Ih9bK5JH0Q-ST!OVLmq2hfS2DV$hGWjheZGhRt z#er^zA@FnVroOK5-|UI;SHy6`u4uYt{h~Sv6x_PQE(pj3Z(edscy5)c@E-;B^lWU?Cnv&C#gB-wSBj$c$ZAEf$whQA(U<;?aGgH(;e#6 zN*T!ix?C;QSEw~_dOE6C4|EcEo;{#1zP4%TSw&7V`l z06XMjzgzw>d}8=zq<8}N#U3P$HMj#_MSD%!XqesGHFScx|JG<0>$JIzqYEuZv|!W0yv;T}C3Lq_*>X-1Qq>gMAM* zQp@5Oh@dgri#zK?W(uYLY#)95PyRe}R(uJjcvr?M+D4ZJt%b=CGU_pIjZP2B8yoUS zJe)2uR&)!;hU#d|A+j`rg3Q<6}P7`B=y*`Zv2c>;ls zxMIYLV0#zB9}xT|)iv-uWq*9O$`oxvtiY4QNw+Pt*8q`UTKrq_$BH~Te%>DVYjfeN zZ8Avl_J6Y$x*(6@W0BJY5;|Ar6dpD3ta^aE)h}eRi|;dijyCf$IQfCd=c{B_NvU|k z(O2zy&Gp2vMw!fP9IEy$7;}z4+Qujy&vfxW#7~Lx**24DnNu;mg@KOTw{9bk1o~&1 z!_)QGy}p(o5^2yyG+)N72~*#AJqA6_Yr{0Jh&~?Gts2wAI?Qscom+Dm0Uh!glzRew zX&`?T+25J1r-o8_K4S%Pd;QV4`t>4#T=#uz;sv*cbf=mB0JLF&03KbFNCR`%3P9^z zCC0O&>d0<%y?){uE|18wHpUt2_l8OJ&2k4;YxeUr+o+AkHpv-~2S7W3z-}JI4`W%H zo|7%`Gw$6m9POAoGY)u(+vRVeq!&Fp+CLUV73bA_@Skylf-(Nq%x1B5J!|3>q@Qlm z?=9zqV=+E(M|?Kn$^9$H?k)UjZdKyFlHFVVSb&&{A5t4C-;Qge)4WmQ!C;YVQAd3s za3nFZl2r6;9lwr2pe}j~>mDMywGudl$$(iIy??sIFY`5`vd?y@EZ%f7#(9kha1X9M zE6i{2Ai0w=K(eSCfx$^v+bF}2z|{r5@oZ!5(IkQtU%3`sk?vRq&(zZc(l7i|Yo_D~ z=bAz=R7OT{f4uk~hAW@2@u!DP?$Uw@r1@E7fCG`(vS%NNrdzGu)vz~K(p@VkIGKTA z{vVEhwNF>N(AEZzREl`isrjI8c~Z~TrB8{^HkdTYM2QT?GVG6jPI3u3 z7{}A|ub;0xL!j9POIYL#bGB$B^A{ug_yGR^I=BA-36`a6WA-F~-Ac>zJXugjCl~-8 zXbYa%71o1!cAACBf_V@SuII};M^T&(aoW9`MDVtud1ktwgnUbDX#(Y=5z2N62>|3{ z0Q1u(zB#b*UXycm9rew$@!Z4)^o+9q0N+615%_&;*fg(*@IBqPpL-R&aS^dE6KBi) z(D*w^;|Hw+O!X~8T=Bn$ZyG-o>e8^83}uTkjhEYN5PuGRYevt--WRyBAMlUB9^qW) zE?3M`kDGbgRDw7J9uHdae-rEeE{^%NEe3miLds&zAd*8PfY|vqsbpX=oP+)qO3&hF z!?w+zi6ebA*~ghDmZJw9x*kt|N&@G-+@pnRVnh|j=W;B ztUeRl__tfO)2v{fZ2@peB4p)`LCGBCdSD9VZZ)5Vn%A8RQGJ$rns&*xvH68t~# z1L?nE)va}CUUzwnkfemEZ{Yx`+_~yV9@N3`cj1PSsWzXhwe|D5hKT@MX8??V(mCjT z@yP8(g>&=z_AMvGK_5qtW!vD0B+FoXE>wZK7LiTEYHBn%CX4c zXRUq1u6$Maec-(*G_MWm>!oTI$+2X)iWy^II%JH72h{VPc(0H=Pvc)3_>%TrX|;)q z+~70T{!tN4e* z_cAorHptF7mkwBW`MyOsucN#<@pr}^4QI5{E)MJh(cXZd0o@w}p1!<(6}_$eL)E-* zJXgLWv9!vNU1175&c`eP-NrCD_oZMyIG5tAdUeo!R@I1Lr**jik~$E%4}Y z`!nkCN_EdK?Ffw`B1~)rNEtf$RvT{{X@*@RR<0b&vcAPyQyD zb07cJ_=#V`I#ByJhSoc&*8_3Nj1N))-}%+Fw($>%?>x)dWQx`?z;|RH@DY$P`qr|q z!_Nv^1h?6HEU90y~C30BhB;;9Tsj z^zB~X_i^0F^OeE~l(MMlo=;I&^LRS);k@59<_87D#YAV=C^^ro6Z925hs0YgP2Md& zS>$NW-Gpq5aryzc{Yj`U{6pg#xx-s&OFRSk^61-#u=!89=soG!cSlV;+9rXdC-%9( zz#Cyj8wa_Q{F-|B&PA~D^eb12+du1A66AX*To1t41FLvrQSn8*P-}LPEK4kR8(E7t zn-d3I62mxP4i0mUn5x>Qp?_<8=3VKNOE=w)PdA4Ax(~!suw3kK{AsO0ZW4P_H<)mY z&LIQyB$N14E%kkBOLP693R|f=aU{jT{6;@o;o$K;t7$V_UBdwb{#gKxfPcKlEtB}x zt%t;9vyCn7EhCOY!!)QPjd9N#SFhHK0%vD%y86N;nsi%NT!C*BODP`bj0(VS7Wk6H z3mEOCmJEEJU{z=ScpvW)ew9c56U*hecD;$!q~bXiG8FsriVwFYx;qVHT}wjp7$u%x z^?4gqf4!DDG}7!VkF>X6A$1K!QVE!D!jCnF(36F#OtyNKpafIgO>%&f8@OfXp}@yV z+LK7}P1`Nbr*|5u{sfJ1zT+x+_pF^>EhkJ^^t&tA;CY)8VN1$M@4x{^z9_I~!@ZfIlN8NQrwJ^I%=o;hhV6q~Iuz z2djQUuSeqzTUcKrQsCp|`#fxzC$jD*arYI|E~}wKADX%_p5Hk#%*sa5-<+HeLDsFG z7I<>v+)F*&7Hc3ZjG&w^srg3H_)@SO!!L|rm+ew{*F{DaIk1t&Jz0UtKU`H?eM06$Qn8BCc_QaI8wONgiIMG#ZM5xS>?qRQDyhbM!1QPw7R6bF{SA zylHoB_IoS8GSK|OTZ~JS^&4Lt!jv`Ez|*evc>zT^Xgc0`DVPXUmWx6}!LCl*qdJGojCy z6FjP*dMP}g$M7{Buf;iTWLqHeT$dT$a~O>qJ^F6r(*xSP$ux;bd+W1(0{}C!F_-k( z%DEoBN8wcd)#6<=ITPwFYrpY6s2x(H{suvq#9gg(+v2RY#TSDVdo;#;eDt*lb)LVDrSEvNmZUU>9X#dX>? zrFp5@#i1pt-%S?fm+f-}0Anf?kfGZ=bI8v;P%D?@w{>AX{{V<&EjJ-n-{lMFLlyvg z@N1jZbxjLSyNxfN=IhKjQ5aJZ9+6iVvZcI9jsZqDk6SR-1IHJIA&8zr!2@m#URuH>k3f!wkFy4S< zci`inYJsEGH1soQaa+ud)Y_v*9uJ@y1pXuGTuW&FBbx0jucJ#_U%b=9DUDk_m~>(F zHMs_nJ+c1)i3X|}fx~^3)Tzf}8#p7-3IN==@phY|q8)EWk_X0DE^@?ijB$+r0KI|r zspIj7g|#2t-9dAr-A~9qTcPKm4oOl^sl{?}+4!eWz5dH&7c!^J(Mt=-w;#lLRZu>d z?^>P@@b0~vn~N5L|}OsI3ov+ z257PIf5fdWCQlGrn>$WSl3d*?JZtN<^R#+=+4@iivssNtOVgEa-bvZGP1t$wK7eLFsRnuBu%${*2&{--@_Zmiop9| zk9zB@ynW(*Mkv=!Yg?6nnMy{J*&=_<0h@6>TdbVd$l#RtL~x zwjlV|e;lzb#k`Tgz~!zjC?NU@V0xln$&&p(Y<9};b@=8o`a_SZ1u{#mP`+Ix-I$n~w?_)7FU3v|7((&1R7 z;X=YmKSHGc04gj8W$<(2r@?Ou%W?kz3u{8vwJU4`YMN?dRbz~a23Md2?%k7~o}Z_l z4)KrdbF6qO&sbP=?IOndM}-qt9!*inae`BVCnwS;Pl{w$H{T{&%-+Wq*`1=urMeeWSf-w1NV9C za4Uk=Ja?prlHO}uJBLye%5(s)puhxuas_fXo;%SYRVvWhj6*X-yfbxdE<8x7Z5TL$DO5&D?g8DA@6xuU)dilO{vo!W_3R^XjWxVtWk>$*@)!(f zrw!>y4&zSI?rf~g8hl7&A0mfiBNhJufptFQ@mkPm`qjj)+CrOVINoKDjlI5AI5_$e z4Sf0k012+YuFtzq)nmLuPms3}c}|3OWZ_R8@(;Cr*YF?Wzrgs3s??Ba-v;G!GP|I0Y&=nT3}m-=S#DHwy@QfUZs{z z>yKThAbSd7)UEY__MJC3nLA8|MzxS1LZ~tLfr_WBcss#XEe@aI{{S3YYL`3shC5lH ziXqgyGocO7<6d(m-M!V^+HHr3;cK{qdCMaR<7HEWg5Km~ZYcr#1N#yDWbnO)lHUq^ zS9^73aI*Q9EqN$-WfEgCM*MOckfZ{0>s){Bckz!&)a1GNd*F?IVSqEisLI)oE)OwA z*-&sk`OiH%X1_7K4e+1E8s*RS#(;p4bgM)ITct>i}-`GP;q zjORHZ9zdp#6nt9ne})f+JRx~yZ4}Opa|5f0W&@^U5#hM?-S1v&rrvli{?OXr>5XY{ z?Bpy8s%+u2=2B7LMmI=R}zj4Pdl6V&I9Gg2#+wI37w zWY(`4^8`0X@1?Y@3{QcK;y)}Lj>n%`;wAq8gs#q2n^}ud(-@qFv$!)x#P!^aaC7c* zE7b0MN2%&I(oAmGP`7-QFh;6Z*cjN8j{Pf&PZsO@q_j4$w4~-Z<0TS7?paUG`2JK_ zE^^aodX}{?lG|Omx0IZ!O>H8`q<7pTBk@|7OuYE1;8|EjuEB9@J8qG#Wobhm!E*bT zKaE(uU0sSj)zq3)lAOF#M%M|r{{VINjDhKjvt^?AzQgyCU07-s^6`X$laG8H1NB-g z7dtI8;unS<_9XE#TYqS{A#%(MD{;xj2Oalk71A!P@Yvp#{?2B01U=QU^TLpN6Uq9K zURD192= z_6dAB;k{yJ)!}F^ZjM+o#1+S|QM8Ub3eNukgmX$sJnP8icHNTBPT)^m79fBcz~cf88XJ>(5cm76PE~ z)rI6zeVWeI*8W+vP^-*SLS%@6*<=~P<2BmJrKX>3 zX1ck%xMc@?aSo^k9>4J!fP!>dlfK9H=W=N8jQ z>$})za_1E-rmJ%?`$nr{HKdBgQ~(%zFkyqwab9C-;rnUixzwRH_shQm>te@n0P3!B zgYA$A>62Pw;^M$4v(zVuWaM0xA+hKI`@V%m2@dCbbK={r8JZ~+N1wRz5<&I>fyeT$ zBU$*D;wbeaZJ=ssXDSLr_Tf;EPcV1%I$nLuV6>wDcCMm(Y$%A%IEuXK(b14vjtgCrUB>Mpgxt+H;r`& zQLXJRP#lak+IfmkpxVHX$E9V-qUtyDrQL?98;KVM9xvUI+vebd_|#9K%)r}X7;Ypx zkJ%kn*mo=&?+R97bEY05xsu9D%lkRJ!ScFW5Thr$vmT#PMLNq-vb?uhtdiy#9~;u^ z2Ohckhfh!|l7mOowCjd3>U;7&Xq{B;BmJBMgY~S*Q$W1ACjHtuf!g7+uxHn6@z1C< z(hHumBFS$NT_~gu-CaDer{5pqD=qK!s8&Flgl!-jkC>6O06jJgf%ODe2_J?n5=46m zUJHfEMG|B%_8B?+4M}m~ZAd?unvD8vfM?AryGcKpKKY`-bEs`=T)BOd2uM6DDsEHs zVn8ZHUy%2hG=9FKbFU*fHs zT&9oW-}JU(N;HOuxpz02wZGXY3HtL& z!E@@p8&y%KLj~Tv(k-c2;*uFeX(VKGfxWOt%d~9u2Nmtm>-YK{oOZfZ@YSVhOQ2>9 zn8xf7uY$nmfr0PZzcMu0wVgKcZZ578;u67-&4Dau{f2$4KA9%Ihwz_`bto>~;<}DY zhY^$$$Oo7d-~f0BsUU98r32*)P*16(4A$8(wTTixIsC|*gnIAtW z!2t1qd2dc@=Iu{V(LUDq_qtd{ibE5$(6nyH&^jnqG&C1Iw@mn@;k`oDZ_KvVFCvog zOh_R6amdfEDlhH72kKM3!dO~eyAZ|Tlw<+lX~@skye`(u!Pl=W!%gfQ0Omq5+$jT( zQR`TjJ~8n2n{*A$pty;?Sr%BfN`w7}M%oDUBauM4nf6OJf}c#ax0UXlWl}_wg=ACN zRhPNx$QZ6F?(0R+CYH%=u5F}?<{Q;^e%~U)-wbt_{>0+i4MmB>QsO@~KpDdA zKU}U)YQwnrYo<*q4HDME!9HE3Ci9Au*XIb!gU`ru#VZBQmAq%-d5@VLyix=FL*>ul zL8kuz!e8RA`SgqPAN);FJ_d}R-84meVm2S4$^B_R;RW}L{`f!PMS|@A*7$1A;l6|{ z-d$%<`%6s6Gc=p|9N|^7pQlQ_r1)dNUK_S~?JZj3Ninp@z`J_z0LS7h<%9c4>h|!n z$)-aky5vAD!^XsR$#q?$*9u2rn(8#)i?`Pnsd0O293h6~Q0__t)U%KQ8R>uz(!GP{ z&!*p3xSu;>OGwZS-eZJSUc3M^pJB~bS@cMz{?*hqNl10u8gI%*zRCbOKK$2(X+9@9 z>`HCfUL+XY%aN1aL1B#gw_2kO+3^+h%o=Sz)-pWH{{XbZvPK*b6$vYkr2u=4&yIX9 z_kY6 z49j^Ef6IHP*dOx*uSg_Af6cNv{sguRBTr*keT7#+~2oT26<@)0}4fzTH(Oq*^y?3~d6)bu4t`Wp# zdi8eNG58vx9<&ggn6IC;?-a?by1{1*imUT^lVlT~>5rTA=C5hZs@uWm zuaL82_i1*o&%WG|&#C5tT>38CR=OapHKDyWI(IBb<5CNVr9v;RAh;jhZWMcG zJdeh{Uw;|++fKa}`mdET5tb0ImCkro90Tv1^sCoCJk{>}z7aru`kJmI@ zE`2TionbP4qTc2S40#7)4=yw4IodxO^X+#?(REx4o7S6uEUPe5*zN)@575_=K@HS1 ziL~UEW-YsG1Sz|(0h@q(@t=C=5>FIm=G0~KWXD%<>NDw$gYevF3!TNMhqNY8E#tgN zFc$_^T&VhtAJVkoiYTLKB1`DfJfAHcLcTrsboM+~l3)0$8ylGH^-W+}ji7$&@a40| zD2XRI^lI(=KjGVLT0cHUcZnN*_+?;NpW<$xUV@7S&8Xs@?kChO9^%22AD(BA9Czb) z1M#d|za99R&4ikTrKYQG9tz1BF2nJ{jQs_4I?2=Y>tSoAU$f5;4Bm7PcFVh`Jdww4 z)mjPlI4!)({{StwjHI@f%?SYYB%Jg4W{U;IgT?xuvlAJ#`#XDbHvax!pYSS*-^^1b zeJ)5mhSJv8X93Hs!|+ycc>I3~0CCF&1K$JK z8uR@&JIw~>U1I8K^*iX(5!*e$@)3{m$Rj}S`GS2#30P-ksrcH@N01w#CB)JLyD_r- zz45`o$86P)1#1K17Pk(8qv?|y*_8P)M~t&$cN^3xJ3-@iPj5<>O!%4cDlG=;B*B$&S`VM#{tk7E%ao^2&Y2C>77FyjSpB zUGQ&%SH#vg2*wl=+(7qnEa`>ZRK{{k4(gzyAOUHlmvK?wMDOz-+a&s}7=zlm*ct>UyvMnGv0t`2dD4sp|=Ij)Pt_Ih7~ zB)!rg@cPXp;4!;a2xbtYk%SiZ83Fub9QZDQy?s2je@9kPB~H;k8@w2*Hb~QlNH6i%EE``ksV{?dSU+n zuQkfv$KWgbp$4mW1=aKf5VuUK(YI_6z#q)#y(!~MS{ zy|jmF2$OmY^*KUU1KfT!^=E-~>*UcVpTdy6_Mv8pJX22U3P-r^Aubu=u$-(80bOjJ!r8l9uI$S;mvNvBGRqjPnKc(qcy~cLG&a7pnXr$vGnfXQ&S3D9GbHpKA6CO)55<$Z00IZ9m@AMBEt80p9rk#*u! zYl$rFmg3qa04#|wl^*WjaB=T}k81C)yf>?9@PP^a!yE`^l&cjS0HKIKrC)=>hf>qU zt+Jv>P6wD6fKOa!jQfmH$}`69J|OtVO_U28*d$fphLdx*zTyWSi^ggg{y2E{-tE7$ zFCOI)2$;ob88MU5S8f5v`OSMwzXh!W32v1^=m28dv)|@JkDxde%3k;fMA7v)G}r{| zG^{o}ZV)a{-oXGiJA?XBVASEQemY*w7(OMM-btnfM6GS)yry)-(og;{LBCt9QWYzaZ15+Lg&TTI)#P4nsva%#@#C0Lyt)Cr-bFv?Cqr9?)Otlv$i^z z$pEnI*ch({)-;>Ab$KncxuJq6oPD9LA0gOuz|Knj0nKD<7JB>6C$qV~S+*-zlCS|*MJm`*d=CpDt`LmObPfnHE z+WcVf_5O`Eg{D~AMQw7$<&9x7T#RG=RI+~ZAPDFfgI@`2zAv!2a_Qm8O1D=Q`$^AM zDvSZor|VRb$HJxxiYyJ> z`V!Mo_-UzXW?vA(`mMY$`6&(3v{8v$xC#>?Nn)Voa(M?ir0~_ft?EIctXF!bp%D8z zkbcljf~PU6O46#3yr5JYM>(&bEPP9=YR~0(mrRJox8zbxa!HQEs-Izyee107uZ?Wx z)n!%Jr&f&_V}n!@GDq^2N&;$&M2^4?0iqHE~l;CYJME?72c6&3bZK?pCsl8 z(RS@|DwWS-0r`$`T&=f>ZhSQ)R$7mV8&R{CEQDBN4$j%mRBj-TQdIhLSrB+?^Tbg9 z0BFyx$#Gz;yKZfaEV6FM8_*s@bHH9Ziow_X3*l>GBD%hfZY~ZZTdm0x9)k>^o(DK2 z433moS34O}JucmK%e_A0T{N}@&5hKMT%ad8kxL9OUK>Aqip{G3uT7q9k@SU)$?7~gnU!sYw*^xU(QJV*t9I$k+{JnhX=73_Z42|4S!5^ z()FggiMcV`Pvylb=lHU5$I$M_dMpRmw%VtT1O2q>jdv1~V|Z>_EdKzrvxNuin#-5t z*NrW1U}owAD+g8j?!fI#cW1uO@xw{7QfJV$YX%teE-XTU zoZ|(D3WCO*xr z>DStKl-Mm`WR@k*1>7)ReVDh@SF&mTFVeMLKkXX5{CCy>k1jzMnJW97jp{+*j2wF6 zm4|cF;7xZ>jB46WuW@d-Etz6zRz(a)@b4v5gWO{^p+1k}ad9Kq%O0q)k(q7f0$@jH zMImxMh|PI5{{Vn=9}(MqtHX1WvVaz7$v-!wfHIXGxZ~7T2A8M!_raI(Y1$~aS3(1Z zk}_FOsco&dzYY0OV7cu2{+Hs7Ry2mrNNjFU23_+Qj^Woa79fr}!LENG6Rsr18ZZ(I6e0&l`yJ!xDQ`nis@v zBT=_&j|yvAd)++t za!30#n$3rS{7&Z97kDKLlPps0l}~J=9E^Ld78$eQpBQ*H;1i=;U1{JDzEtSZ9le`r z`@^>!it6vxnO5>8n&ttJ(_6L~eRnQ0%ioOG%sSt~y*AyW*WjFL^1wz*0g?3qfZdKV z6noW{)VyV&$~9dj^`y|(0nt1d7J=s5YY z*Q$!q7TVU7&jsY7=FRY9ZS6B4{{Uxz$`AX;74y`e6*Y-24bP2n_Bl|jR|#%>$o+St z9k28Q>0O?W@dHNFB8@+_a~U~8v9d+e_(4B(^}ynR-1glz<5);hw7b>19Qk5$3y)Ef z2665yYI~`ooLyZ(B&zGSREj`iQT^hi^&Y~!b5im=Q4qb-63ypeM4vk$JAc_9{;XFy zVX1hk+Gyj`^#n#%!@yZv9k3XH!}4bvpqBFtZX9>q4(-e7z%|c!cU17s zgo8y(h;D31#B3xH?H+&<2ha>2)B*H7@1W}8e%o-7O4<3oOnpUhAfJ!Z>Q)MYA@S`hyL#pV>q9-yef{VPJ_Q`9uV5}2>? z#QC?nwcN^ok1NUa1Y_%vDAIfnVWt9>a3bK6A~J79=eAdj`&TgDDzelp7D-E7z;XNN zj#wOy;c#lT_0E^4ymxl*k1(#$ESmw(aLb;3zd8W)sI6|2>F$h|F{BH$FPe^weFz}8 z^sbI?7I=i|F=-lnX>n-r`En$Z0!b%3hsrR+*NXA&+FhiQT;1=5hdJD!9Q%+1A7XP( zd%GE?Hg{88#)NJwDjXI60A+zR0cTawyis!RaeVPNlyeMofQ3ls0pscpJJ&B^;(dAx zgKgt$O*-1%QUo(0a_yeP5s$=vRn!Tt?QPcEO@`uFloj%&D!`9W&U1>(zqWVNWRCvQ zOS?h{k|e+>^#Hd|Oi%|UtN2^Oz979H+1m12FlHh!@bp0+l ze#<(I=jL6<%b1St6lXq+Duteh;EQ$pUxqBw-cY4dJBE@jeH1c)dG^I>&tlrHAl9Hw z!{sW!3njd_er#)qoLs)(J&t(*`ik@0uLb-=m1SF7hL9jW zUBgL>tR9NRmjrenu4#eqmh#4}XCqE=WBx?J{{W!Zxp>F@Wyk$;GzHH$O+Unt7t|74nIRcFBPt6q=%`5N+ZY|qR#ov>(_y_D z43W#X8?J5w6dg_%X68BT$Kos1tUu%jY5xFU3I70~*6)hH03fUX0QblKg+mq2V%NYLP3_UW8g;ppj4>qd z3OZ%^E%nVl=fal3UfpD6TyFBrgpSz2ZZYqg^lcCQWS{lR`d2@yf5=Jy0PBeURDko? zv>Pj_n%>U%+j)IQ*~tfGZ{JT7RfNhxM;K z(ZA#AKC=G+BS2jAJqy5oDAcb}JR_q20BKDr3K?T2HgEQJ{D=Vb9_JP6TIay;i+T@* z?lsR9rk|i91~##qg`Qd2NC(SEe9W*XqcA?Wuc1F>KfPi90A1Vv06`V#-?Z=iioPBH z0I#dx{RwH?OOK_`&QA+`Dwk80Z@f$6JDW#R<(dd?8h0FR3m8u*4`y`((!Da*zER0Nwd}dYzF-GT0o0!1t>fKl=0j>Hd}Lo(cQ+e_8(klTsazC>lT7 z?UGv!LeAOR7y*hqb#_2kDoSH;Y-f4SN$c9XKM43!Ku7z3iM9J#-g#O)M*vAAIs3|f z_6Y=Mpgm1_zlQ$+Y|+7eX>!++ zNTSvoXqihhXNP$dU=T9QIP@oq-M`lD^w+V`G^-n%`R*O01)|;_G(4X%08qInoZw({ z-n@s!-|{|a-|xlzn!WSG-|`yJf9w}={{W#=70z zheVDtZ-(WFWP<{^2rzdA>PI7>Qbz>QT&bx4dv}u10x)gyyKwAqW=I^x9~fy?ACWy`wtIlM%7`#=Y`{(ftt(k zzx<23fBXyo0781`el35WO=ThWOI_e4pF%J z*SmNx_LBGm_LkE=CtK@tT@&5o7{{YB3!~VH1@-@lcf5^Xc z^gqggXVRVy@rS`Ze$d+KI)%T1iJZTfrS9$sUp5>_)Y%+AM^hJ*UNt)Uu$?H{yu;3FaH2U$v|#=;%`Qu zdeh%(Hxk4^+!twb4@@rvdkl)|^uH4LLdx6AMAXscJb9MIPEW7i{4#M~SF8U3$W;FT zyA^sR_xk8Qt3e|*e~Lc|^vlH2d_{cmTpyT3@w|nU{{VjoS3bj~ULG*;W${bT4qVwZ z{{X-M5=qZc6FeVWf$l5d{{W01@>JLT(frMI-wQwFWw-wTu8;jF1MB;ZcI?8DL~YVb zbTP$?J%s@zl}0(i%My75Cb*vy{{UxdR%twuNhG#v8)TuEaR;eX2XN%j}KjZ%E{<$Ch27oT>zAw;j^!qdYnsn!q2T^ft7n&qw#_0meHm(j7sNfEq zn&WKr9~9~-7Ny~Ba@FIwxcfRqC>GMl{Q)qRTxXA%0-p6_T>k)(Ye4@1uY2$P8kIxB zpYk2>{{a1dFaCrm8Pj;b;RnVo16!ZNUNN?|y1upx=R7yQV2n7<(x)SV#(2T5e#hY~ z7XD;B0J#N-02(!EbVH~vonOEK>Ob@v^?hglJao_d7oYzCNTZ~La%tiQ@g2l5#i}IJWchCrDi^@&K#f~~ zI`#c)PR_^TMzwDGXNGSrX162^%Q8G{J8x2jk+*tdKDFYX4S(ce(|(fw0O+@`qP_|L z0II$J0Ire$0O(?vlRP5tSNO4@MJ=C;JU1%G8?y=g#@dIu0YNy=L4pNkX&)JUd7|8= znRleasA%&q$}XgNnOgw@2L1W7A#w;&-FRPcYwUlGKk^2>{{VIW0Hu60fByg=%|HIQ zpXWf&K>q-Si}0_7HDPI}_mGd8k zKjc#%_1S;)D)xu}0FT?R`tNW2#UY;2r1;mz7p(Sr%l)$I6TUSFA#xA!ox|qOxv3My z5?{?Fw~D+aVis|?5R(kQ@FoR;Bay&S_*8b^@;<-OKb2@|{{ZqEU$6CQ0D{hc2{Mg8 zuM+s7{{SFcfBNPB0J4hqe}Uif7}Wm&>zqIO0H9|xZ}D&Aw}fm4jpHpo!tG%H0G84# z7$jdqu?E)kCnMBV?K|T4!|xK#EWAeo=`zb04v!kF0lF(Bm{LBbw!SZa$h&p^`hPaB zh&*BUqyGS|DL{|7H9Ji^!_0N);lI?$U-Z?75eTeiM6(|l#8z{2?~ zt_!SD{kkq$`v=?zQb!yd6YExd7ykexy7&F>=qtb>>j(XWt-qL{XV9r-30n}}?_&1xGFwVd8@Uv08(+t2q+c&45I03~)0`uKn6Uuh5d7i9kcuBZ8$0Psy7 z`%$sIk4XDAsP^(V%{gRmDEf>QY?j)a0k1O81- zr+xADZ|7Uum;AH;0IomQfIR-r>)|76FEUp?b93e4CxIGBycKUU%k$yY>0LXQ}--^BW;eYz!{{UVPe_8_Oy{4DqZ6^LG zwI2@4JfQryR`Vi4SGH6hIP_2}qPy@fhI~OA!q)F?KT{iRVys78oaFite;W47kNESC z{<){}t}5UDMk#)g&@_03thSyN-=$A=cX0z8545k8K_9@xp<+D=t1G14PU$y==Y!2S zD{phegnzQgLXv%04|=chL;gY&f7ez1wRghb@*lDP0Cayk1hym8d>i8}O_pdL=Em{P z2(!Ld1OwEl`FQ^Tbp2~i!%FzBgu{7l4x&_H9_*%YI^ZDAe+*ZvcysKFu6R=8O*Yf&_Lm|+O1du$ z-M(xp=RWnhcrhrO_kd^R8*p$vPdKcPg}?GDr~Bf(_u>cq ze8v9&UoZavpqc}r>0TP~=9ICvrQtsmCZ}j}ZXvv2lR|sqA{S;pn9XbH7d{}q-*@31 zTHftS<~wNuB+5C?3a~gQvo3q)z6$tP{{SH`5&rzMwu1{&?Jf--iDH3iT;J);HACD7i=f+2X6| A8UO$Q literal 0 HcmV?d00001 diff --git a/.tugboat/config.yml b/.tugboat/config.yml index 86dda9eb1a..c4a7c97f68 100644 --- a/.tugboat/config.yml +++ b/.tugboat/config.yml @@ -8,6 +8,7 @@ services: - cms - web - storybook + - next # Set this as the default service. This does a few things # 1. Clones the git repository into the service container @@ -49,7 +50,7 @@ services: # Install opcache, and Apache modules - docker-php-ext-install opcache - - a2enmod headers rewrite vhost_alias + - a2enmod headers rewrite vhost_alias proxy proxy_http # Install datadog agent for application tracing and profiling. - DD_API_KEY=" " DD_INSTALL_ONLY=true DD_SITE="ddog-gov.com" bash -c "$(curl -L https://s3.amazonaws.com/dd-agent/scripts/install_script_agent7.sh)" @@ -62,6 +63,9 @@ services: # Setup storybook-*. vhost to serve static website. - cp "${TUGBOAT_ROOT}"/.tugboat/vhost-storybook.conf /etc/apache2/sites-enabled/ + # Setup next-*. vhost to serve static website. + - cp "${TUGBOAT_ROOT}"/.tugboat/vhost-next.conf /etc/apache2/sites-enabled/ + # Configure KeepAliveTimeout in apache2.conf. This is set 5 seconds longer than the internal tools ALB. # The internal tools ALB idle timeout is set to longer than a typical GQL query takes. - sed -e 's/KeepAliveTimeout 5/KeepAliveTimeout 185/' -i /etc/apache2/apache2.conf @@ -184,11 +188,14 @@ services: # This command is shared by the clone and build stages, make sure to update both stages. - j2 "${TUGBOAT_ROOT}/.web/403-error-document.j2.html" -o "${TUGBOAT_ROOT}/.web/403-error-document.html" - j2 "${TUGBOAT_ROOT}/.storybook/403-error-document.j2.html" -o "${TUGBOAT_ROOT}/.storybook/403-error-document.html" + - j2 "${TUGBOAT_ROOT}/.next/403-error-document.j2.html" -o "${TUGBOAT_ROOT}/.next/403-error-document.html" + - j2 "${TUGBOAT_ROOT}/.next/503-error-document.j2.html" -o "${TUGBOAT_ROOT}/.next/503-error-document.html" - composer install - bash -lc 'nvm install' - bash -lc 'npm install' - bash -lc 'composer va:theme:compile' - bash -lc 'composer va:web:install' + - bash -lc 'composer va:next:install' # https://www.drush.org/latest/deploycommand/ (updatedb, cache:rebuild, config:import, deploy:hook) - drush deploy @@ -212,6 +219,8 @@ services: # This command is shared by the clone and build stages, make sure to update both stages. - j2 "${TUGBOAT_ROOT}/.web/403-error-document.j2.html" -o "${TUGBOAT_ROOT}/.web/403-error-document.html" - j2 "${TUGBOAT_ROOT}/.storybook/403-error-document.j2.html" -o "${TUGBOAT_ROOT}/.storybook/403-error-document.html" + - j2 "${TUGBOAT_ROOT}/.next/403-error-document.j2.html" -o "${TUGBOAT_ROOT}/.next/403-error-document.html" + - j2 "${TUGBOAT_ROOT}/.next/503-error-document.j2.html" -o "${TUGBOAT_ROOT}/.next/503-error-document.html" online: # We only want tests running on PRs, not branches like the base preview build of main. @@ -224,8 +233,10 @@ services: - find -L "${DOCROOT}/vendor/va-gov/content-build/node_modules/.bin" -type f -exec chmod +x {} \+ - find "${DOCROOT}/vendor/va-gov/content-build/script" -type f -exec chmod +x {} \+ - # Build storybook and the frontend in parallel + # Build storybook and the frontends in parallel - bash -lc 'time task --taskfile=tugboat.yml' + # Build next build server + - bash -lc 'composer va:next:start' memcache: image: tugboatqa/memcached:1.6 diff --git a/.tugboat/vhost-next.conf b/.tugboat/vhost-next.conf new file mode 100644 index 0000000000..d7fa248234 --- /dev/null +++ b/.tugboat/vhost-next.conf @@ -0,0 +1,48 @@ +# If testing changes to this file on the tugboatqa/php:7.1-apache image (current), +# use `apache2ctl -S` to check for syntax issues then `killall apache2` to get changes to take. +# Or "Stop" then "Start" the preview as that will restart apache2 too. Worth noting that +# `service apache2 reload|restart` doesn't work on this image as `runit` is used. +# Also `sv restart apache` acts like it works but it doesn't and doesn't bubble up any errors. + + + + ServerName next-wildcard + # Route preview URLs with prefix of `next-` to folder where the generated site output is symlinked. + # e.g. https://next-msecydk1vl7ncmpkgh8vevjhzq25vacv.ci.cms.va.gov/ + ServerAlias next-* + VirtualDocumentRoot /var/lib/tugboat/docroot/next/.next + + Alias "/.next" "/var/lib/tugboat/.next" + ErrorDocument 403 /.next/403-error-document.html + ErrorDocument 503 /.next/503-error-document.html + + + Options FollowSymLinks + Require all granted + + + + Require all granted + + + ProxyPreserveHost on + # Ignore redirecting error doc directory + ProxyPass /.next/ ! + # Redirect requests to the running node server from next-build + ProxyPass / http://localhost:3000/ + ProxyPassReverse / http://localhost:3000/ + + # Available loglevels: trace8, ..., trace1, debug, info, notice, warn, + # error, crit, alert, emerg. + # It is also possible to configure the loglevel for particular + # modules, e.g. + #LogLevel debug + + # On Tugboat these are symlinks to /dev/null by default. + # `rm /var/log/apache2/*.log` and they will be generated. + # Then `tail -f /var/log/apache2/*` will work. + ErrorLog ${APACHE_LOG_DIR}/error.log + CustomLog ${APACHE_LOG_DIR}/access.log combined + + SetEnvIf X-Forwarded-Proto "^https" HTTPS=on + diff --git a/composer.json b/composer.json index 6e6c5fd538..119fa3113b 100644 --- a/composer.json +++ b/composer.json @@ -571,7 +571,10 @@ "va:theme:watch": "Watch VA.gov Claro theme source and compile as needed.", "va:web:build": "Perform a content build.", "va:web:install": "Prepare the content-build project.", - "va:web:prepare-dotenv": "Prepare the ./web/.env file." + "va:web:prepare-dotenv": "Prepare the ./web/.env file.", + "va:next:install": "Prepare the next-build project", + "va:next:build": "Build the next-build server for preview", + "va:next:start": "Start the next-build server for preview" }, "scripts": { "pre-install-cmd": [ @@ -817,6 +820,21 @@ "# Prepare the ./web/.env file.", "! ./scripts/should-run-directly.sh || ./scripts/web-prepare-dotenv.sh", "./scripts/should-run-directly.sh || ddev composer va:web:prepare-dotenv --" + ], + "va:next:install": [ + "# Prepare the next build project", + "! ./scripts/should-run-directly.sh || ./scripts/next-install.sh", + "./scripts/should-run-directly.sh || ddev composer va:next:install --" + ], + "va:next:build": [ + "# Prepare the next build server", + "! ./scripts/should-run-directly.sh || ./scripts/next-build.sh", + "./scripts/should-run-directly.sh || ddev composer va:next:build --" + ], + "va:next:start": [ + "# Start the next build server", + "! ./scripts/should-run-directly.sh || ./scripts/next-start.sh", + "./scripts/should-run-directly.sh || ddev composer va:next:start --" ] } } diff --git a/scripts/next-build.sh b/scripts/next-build.sh new file mode 100755 index 0000000000..ff134cf6fe --- /dev/null +++ b/scripts/next-build.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env bash +#preview + +export NVM_DIR="$HOME/.nvm" +[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" +[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" +source ~/.bashrc + +cd next + +APP_ENV=tugboat yarn build:preview \ No newline at end of file diff --git a/scripts/next-install.sh b/scripts/next-install.sh new file mode 100755 index 0000000000..e7063b52c2 --- /dev/null +++ b/scripts/next-install.sh @@ -0,0 +1,33 @@ +#!/usr/bin/env bash + +export NVM_DIR="$HOME/.nvm" +[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" +[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" +source ~/.bashrc + +# Installs the content-build dependencies. + +if [ ! -d next ]; then + git clone --single-branch --depth 1 https://github.com/department-of-veterans-affairs/next-build.git next +else + echo "Repo next-build already cloned." +fi + +cd next +#repo_root="$(git rev-parse --show-toplevel)" +#pushd "${repo_root}" > /dev/null + +nvm install 18.17.0 +nvm use 18.17.0 +corepack enable +corepack prepare yarn@stable --activate +echo "Node $(node -v)" +echo "NPM $(npm -v)" +echo "Yarn $(yarn -v)" + +#not sure how popd works +#pushd "./next" +yarn install +#popd + +#popd > /dev/null diff --git a/scripts/next-start.sh b/scripts/next-start.sh new file mode 100755 index 0000000000..65544641da --- /dev/null +++ b/scripts/next-start.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash + +export NVM_DIR="$HOME/.nvm" +[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" +[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" +source ~/.bashrc + +cd next + +APP_ENV=tugboat yarn start diff --git a/tugboat.yml b/tugboat.yml index d8203432b5..9e85728187 100644 --- a/tugboat.yml +++ b/tugboat.yml @@ -13,10 +13,16 @@ tasks: cmds: - drush va-gov:content-release:request-frontend-build + build-next: + desc: build next.js preview server + cmds: + - composer va:next:build + build: deps: - build-storybook - build-frontend + - build-next default: cmds: From d38a023e4478d7f05e17a8ea63eeb29988fbd823 Mon Sep 17 00:00:00 2001 From: Christian Burk Date: Wed, 25 Oct 2023 09:30:27 -0500 Subject: [PATCH 07/25] VACMS-15649: Adds taxonomy term fields for VBA services (#15682) * VACMS-15649: Adds taxonomy term fields for VBA services * VACMS-15649: Adds revision_log_message back * VACMS-15649: Adds service delivery options taxonomy --- ...m.health_care_service_taxonomy.default.yml | 44 ++++++++++++- ...m.health_care_service_taxonomy.default.yml | 40 +++++++++++- ...service_taxonomy.vamc_facility_service.yml | 8 +++ ..._service_taxonomy.vba_facility_service.yml | 8 +++ ...re_service_taxonomy.vet_center_service.yml | 8 +++ ...onomy.field_facility_service_descripti.yml | 24 +++++++ ...taxonomy.field_facility_service_header.yml | 24 +++++++ ...onomy.field_regional_service_descripti.yml | 24 +++++++ ...taxonomy.field_regional_service_header.yml | 24 +++++++ ..._term.field_facility_service_descripti.yml | 21 +++++++ ...omy_term.field_facility_service_header.yml | 21 +++++++ ..._term.field_regional_service_descripti.yml | 21 +++++++ ...omy_term.field_regional_service_header.yml | 21 +++++++ ...taxonomy_term.service_delivery_options.yml | 11 ++++ ...my.vocabulary.service_delivery_options.yml | 8 +++ .../js/displayServiceDescriptions.es6.js | 62 +++++++++++++++++++ .../js/displayServiceDescriptions.js | 36 +++++++++++ .../EventSubscriber/FacilitiesSubscriber.php | 9 +++ 18 files changed, 410 insertions(+), 4 deletions(-) create mode 100644 config/sync/field.field.taxonomy_term.health_care_service_taxonomy.field_facility_service_descripti.yml create mode 100644 config/sync/field.field.taxonomy_term.health_care_service_taxonomy.field_facility_service_header.yml create mode 100644 config/sync/field.field.taxonomy_term.health_care_service_taxonomy.field_regional_service_descripti.yml create mode 100644 config/sync/field.field.taxonomy_term.health_care_service_taxonomy.field_regional_service_header.yml create mode 100644 config/sync/field.storage.taxonomy_term.field_facility_service_descripti.yml create mode 100644 config/sync/field.storage.taxonomy_term.field_facility_service_header.yml create mode 100644 config/sync/field.storage.taxonomy_term.field_regional_service_descripti.yml create mode 100644 config/sync/field.storage.taxonomy_term.field_regional_service_header.yml create mode 100644 config/sync/language.content_settings.taxonomy_term.service_delivery_options.yml create mode 100644 config/sync/taxonomy.vocabulary.service_delivery_options.yml diff --git a/config/sync/core.entity_form_display.taxonomy_term.health_care_service_taxonomy.default.yml b/config/sync/core.entity_form_display.taxonomy_term.health_care_service_taxonomy.default.yml index 7971d714bf..1f19d6e09d 100644 --- a/config/sync/core.entity_form_display.taxonomy_term.health_care_service_taxonomy.default.yml +++ b/config/sync/core.entity_form_display.taxonomy_term.health_care_service_taxonomy.default.yml @@ -6,9 +6,13 @@ dependencies: - field.field.taxonomy_term.health_care_service_taxonomy.field_also_known_as - field.field.taxonomy_term.health_care_service_taxonomy.field_commonly_treated_condition - field.field.taxonomy_term.health_care_service_taxonomy.field_enforce_unique_combo_servi + - field.field.taxonomy_term.health_care_service_taxonomy.field_facility_service_descripti + - field.field.taxonomy_term.health_care_service_taxonomy.field_facility_service_header - field.field.taxonomy_term.health_care_service_taxonomy.field_health_service_api_id - field.field.taxonomy_term.health_care_service_taxonomy.field_online_self_service - field.field.taxonomy_term.health_care_service_taxonomy.field_owner + - field.field.taxonomy_term.health_care_service_taxonomy.field_regional_service_descripti + - field.field.taxonomy_term.health_care_service_taxonomy.field_regional_service_header - field.field.taxonomy_term.health_care_service_taxonomy.field_service_type_of_care - field.field.taxonomy_term.health_care_service_taxonomy.field_show_for_vamc_facilities - field.field.taxonomy_term.health_care_service_taxonomy.field_show_for_vba_facilities @@ -99,6 +103,10 @@ third_party_settings: - field_vba_friendly_name - field_vba_com_conditions - field_vba_service_descrip + - field_regional_service_header + - field_regional_service_descripti + - field_facility_service_header + - field_facility_service_descripti - field_online_self_service - field_vba_service_regions label: VBA @@ -165,6 +173,22 @@ content: settings: size: 1 third_party_settings: { } + field_facility_service_descripti: + type: string_textfield + weight: 15 + region: content + settings: + size: 60 + placeholder: '' + third_party_settings: { } + field_facility_service_header: + type: string_textfield + weight: 14 + region: content + settings: + size: 60 + placeholder: '' + third_party_settings: { } field_health_service_api_id: type: string_textfield weight: 2 @@ -175,12 +199,28 @@ content: third_party_settings: { } field_online_self_service: type: link_default - weight: 12 + weight: 16 region: content settings: placeholder_url: '' placeholder_title: '' third_party_settings: { } + field_regional_service_descripti: + type: string_textfield + weight: 13 + region: content + settings: + size: 60 + placeholder: '' + third_party_settings: { } + field_regional_service_header: + type: string_textfield + weight: 12 + region: content + settings: + size: 60 + placeholder: '' + third_party_settings: { } field_service_type_of_care: type: options_select weight: 15 @@ -249,7 +289,7 @@ content: third_party_settings: { } field_vba_service_regions: type: entity_reference_autocomplete - weight: 13 + weight: 17 region: content settings: match_operator: CONTAINS diff --git a/config/sync/core.entity_view_display.taxonomy_term.health_care_service_taxonomy.default.yml b/config/sync/core.entity_view_display.taxonomy_term.health_care_service_taxonomy.default.yml index 4ea68b3ba6..b68b4be3a0 100644 --- a/config/sync/core.entity_view_display.taxonomy_term.health_care_service_taxonomy.default.yml +++ b/config/sync/core.entity_view_display.taxonomy_term.health_care_service_taxonomy.default.yml @@ -6,9 +6,13 @@ dependencies: - field.field.taxonomy_term.health_care_service_taxonomy.field_also_known_as - field.field.taxonomy_term.health_care_service_taxonomy.field_commonly_treated_condition - field.field.taxonomy_term.health_care_service_taxonomy.field_enforce_unique_combo_servi + - field.field.taxonomy_term.health_care_service_taxonomy.field_facility_service_descripti + - field.field.taxonomy_term.health_care_service_taxonomy.field_facility_service_header - field.field.taxonomy_term.health_care_service_taxonomy.field_health_service_api_id - field.field.taxonomy_term.health_care_service_taxonomy.field_online_self_service - field.field.taxonomy_term.health_care_service_taxonomy.field_owner + - field.field.taxonomy_term.health_care_service_taxonomy.field_regional_service_descripti + - field.field.taxonomy_term.health_care_service_taxonomy.field_regional_service_header - field.field.taxonomy_term.health_care_service_taxonomy.field_service_type_of_care - field.field.taxonomy_term.health_care_service_taxonomy.field_show_for_vamc_facilities - field.field.taxonomy_term.health_care_service_taxonomy.field_show_for_vba_facilities @@ -77,6 +81,22 @@ content: third_party_settings: { } weight: 13 region: content + field_facility_service_descripti: + type: string + label: above + settings: + link_to_entity: false + third_party_settings: { } + weight: 24 + region: content + field_facility_service_header: + type: string + label: above + settings: + link_to_entity: false + third_party_settings: { } + weight: 23 + region: content field_health_service_api_id: type: string label: above @@ -95,6 +115,22 @@ content: rel: '' target: '' third_party_settings: { } + weight: 25 + region: content + field_regional_service_descripti: + type: string + label: above + settings: + link_to_entity: false + third_party_settings: { } + weight: 22 + region: content + field_regional_service_header: + type: string + label: above + settings: + link_to_entity: false + third_party_settings: { } weight: 21 region: content field_service_type_of_care: @@ -149,7 +185,7 @@ content: format_custom_false: '' format_custom_true: '' third_party_settings: { } - weight: 23 + weight: 27 region: content field_vba_com_conditions: type: string @@ -180,7 +216,7 @@ content: settings: link: true third_party_settings: { } - weight: 22 + weight: 26 region: content field_vba_type_of_care: type: list_default diff --git a/config/sync/core.entity_view_display.taxonomy_term.health_care_service_taxonomy.vamc_facility_service.yml b/config/sync/core.entity_view_display.taxonomy_term.health_care_service_taxonomy.vamc_facility_service.yml index 8c76b009e5..45ff64af5c 100644 --- a/config/sync/core.entity_view_display.taxonomy_term.health_care_service_taxonomy.vamc_facility_service.yml +++ b/config/sync/core.entity_view_display.taxonomy_term.health_care_service_taxonomy.vamc_facility_service.yml @@ -7,9 +7,13 @@ dependencies: - field.field.taxonomy_term.health_care_service_taxonomy.field_also_known_as - field.field.taxonomy_term.health_care_service_taxonomy.field_commonly_treated_condition - field.field.taxonomy_term.health_care_service_taxonomy.field_enforce_unique_combo_servi + - field.field.taxonomy_term.health_care_service_taxonomy.field_facility_service_descripti + - field.field.taxonomy_term.health_care_service_taxonomy.field_facility_service_header - field.field.taxonomy_term.health_care_service_taxonomy.field_health_service_api_id - field.field.taxonomy_term.health_care_service_taxonomy.field_online_self_service - field.field.taxonomy_term.health_care_service_taxonomy.field_owner + - field.field.taxonomy_term.health_care_service_taxonomy.field_regional_service_descripti + - field.field.taxonomy_term.health_care_service_taxonomy.field_regional_service_header - field.field.taxonomy_term.health_care_service_taxonomy.field_service_type_of_care - field.field.taxonomy_term.health_care_service_taxonomy.field_show_for_vamc_facilities - field.field.taxonomy_term.health_care_service_taxonomy.field_show_for_vba_facilities @@ -78,9 +82,13 @@ hidden: field_also_known_as: true field_commonly_treated_condition: true field_enforce_unique_combo_servi: true + field_facility_service_descripti: true + field_facility_service_header: true field_health_service_api_id: true field_online_self_service: true field_owner: true + field_regional_service_descripti: true + field_regional_service_header: true field_service_type_of_care: true field_show_for_vamc_facilities: true field_show_for_vba_facilities: true diff --git a/config/sync/core.entity_view_display.taxonomy_term.health_care_service_taxonomy.vba_facility_service.yml b/config/sync/core.entity_view_display.taxonomy_term.health_care_service_taxonomy.vba_facility_service.yml index fdd9ca0424..375a907822 100644 --- a/config/sync/core.entity_view_display.taxonomy_term.health_care_service_taxonomy.vba_facility_service.yml +++ b/config/sync/core.entity_view_display.taxonomy_term.health_care_service_taxonomy.vba_facility_service.yml @@ -7,9 +7,13 @@ dependencies: - field.field.taxonomy_term.health_care_service_taxonomy.field_also_known_as - field.field.taxonomy_term.health_care_service_taxonomy.field_commonly_treated_condition - field.field.taxonomy_term.health_care_service_taxonomy.field_enforce_unique_combo_servi + - field.field.taxonomy_term.health_care_service_taxonomy.field_facility_service_descripti + - field.field.taxonomy_term.health_care_service_taxonomy.field_facility_service_header - field.field.taxonomy_term.health_care_service_taxonomy.field_health_service_api_id - field.field.taxonomy_term.health_care_service_taxonomy.field_online_self_service - field.field.taxonomy_term.health_care_service_taxonomy.field_owner + - field.field.taxonomy_term.health_care_service_taxonomy.field_regional_service_descripti + - field.field.taxonomy_term.health_care_service_taxonomy.field_regional_service_header - field.field.taxonomy_term.health_care_service_taxonomy.field_service_type_of_care - field.field.taxonomy_term.health_care_service_taxonomy.field_show_for_vamc_facilities - field.field.taxonomy_term.health_care_service_taxonomy.field_show_for_vba_facilities @@ -75,9 +79,13 @@ hidden: field_also_known_as: true field_commonly_treated_condition: true field_enforce_unique_combo_servi: true + field_facility_service_descripti: true + field_facility_service_header: true field_health_service_api_id: true field_online_self_service: true field_owner: true + field_regional_service_descripti: true + field_regional_service_header: true field_service_type_of_care: true field_show_for_vamc_facilities: true field_show_for_vba_facilities: true diff --git a/config/sync/core.entity_view_display.taxonomy_term.health_care_service_taxonomy.vet_center_service.yml b/config/sync/core.entity_view_display.taxonomy_term.health_care_service_taxonomy.vet_center_service.yml index c385015b76..ffb258753e 100644 --- a/config/sync/core.entity_view_display.taxonomy_term.health_care_service_taxonomy.vet_center_service.yml +++ b/config/sync/core.entity_view_display.taxonomy_term.health_care_service_taxonomy.vet_center_service.yml @@ -7,9 +7,13 @@ dependencies: - field.field.taxonomy_term.health_care_service_taxonomy.field_also_known_as - field.field.taxonomy_term.health_care_service_taxonomy.field_commonly_treated_condition - field.field.taxonomy_term.health_care_service_taxonomy.field_enforce_unique_combo_servi + - field.field.taxonomy_term.health_care_service_taxonomy.field_facility_service_descripti + - field.field.taxonomy_term.health_care_service_taxonomy.field_facility_service_header - field.field.taxonomy_term.health_care_service_taxonomy.field_health_service_api_id - field.field.taxonomy_term.health_care_service_taxonomy.field_online_self_service - field.field.taxonomy_term.health_care_service_taxonomy.field_owner + - field.field.taxonomy_term.health_care_service_taxonomy.field_regional_service_descripti + - field.field.taxonomy_term.health_care_service_taxonomy.field_regional_service_header - field.field.taxonomy_term.health_care_service_taxonomy.field_service_type_of_care - field.field.taxonomy_term.health_care_service_taxonomy.field_show_for_vamc_facilities - field.field.taxonomy_term.health_care_service_taxonomy.field_show_for_vba_facilities @@ -77,9 +81,13 @@ hidden: field_also_known_as: true field_commonly_treated_condition: true field_enforce_unique_combo_servi: true + field_facility_service_descripti: true + field_facility_service_header: true field_health_service_api_id: true field_online_self_service: true field_owner: true + field_regional_service_descripti: true + field_regional_service_header: true field_service_type_of_care: true field_show_for_vamc_facilities: true field_show_for_vba_facilities: true diff --git a/config/sync/field.field.taxonomy_term.health_care_service_taxonomy.field_facility_service_descripti.yml b/config/sync/field.field.taxonomy_term.health_care_service_taxonomy.field_facility_service_descripti.yml new file mode 100644 index 0000000000..e337b5b47c --- /dev/null +++ b/config/sync/field.field.taxonomy_term.health_care_service_taxonomy.field_facility_service_descripti.yml @@ -0,0 +1,24 @@ +uuid: 4d8bf339-fe4c-440a-adcb-294d21f3b234 +langcode: en +status: true +dependencies: + config: + - field.storage.taxonomy_term.field_facility_service_descripti + - taxonomy.vocabulary.health_care_service_taxonomy + module: + - tmgmt_content +third_party_settings: + tmgmt_content: + excluded: false +id: taxonomy_term.health_care_service_taxonomy.field_facility_service_descripti +field_name: field_facility_service_descripti +entity_type: taxonomy_term +bundle: health_care_service_taxonomy +label: 'Facility service description' +description: '' +required: false +translatable: false +default_value: { } +default_value_callback: '' +settings: { } +field_type: string diff --git a/config/sync/field.field.taxonomy_term.health_care_service_taxonomy.field_facility_service_header.yml b/config/sync/field.field.taxonomy_term.health_care_service_taxonomy.field_facility_service_header.yml new file mode 100644 index 0000000000..5b988b758e --- /dev/null +++ b/config/sync/field.field.taxonomy_term.health_care_service_taxonomy.field_facility_service_header.yml @@ -0,0 +1,24 @@ +uuid: 0621ef26-5e83-4619-9ec8-9d904524daf5 +langcode: en +status: true +dependencies: + config: + - field.storage.taxonomy_term.field_facility_service_header + - taxonomy.vocabulary.health_care_service_taxonomy + module: + - tmgmt_content +third_party_settings: + tmgmt_content: + excluded: false +id: taxonomy_term.health_care_service_taxonomy.field_facility_service_header +field_name: field_facility_service_header +entity_type: taxonomy_term +bundle: health_care_service_taxonomy +label: 'Facility service header' +description: '' +required: false +translatable: false +default_value: { } +default_value_callback: '' +settings: { } +field_type: string diff --git a/config/sync/field.field.taxonomy_term.health_care_service_taxonomy.field_regional_service_descripti.yml b/config/sync/field.field.taxonomy_term.health_care_service_taxonomy.field_regional_service_descripti.yml new file mode 100644 index 0000000000..9c280dface --- /dev/null +++ b/config/sync/field.field.taxonomy_term.health_care_service_taxonomy.field_regional_service_descripti.yml @@ -0,0 +1,24 @@ +uuid: 4bcbbc89-3484-4924-bcc5-fe9579bfd3ce +langcode: en +status: true +dependencies: + config: + - field.storage.taxonomy_term.field_regional_service_descripti + - taxonomy.vocabulary.health_care_service_taxonomy + module: + - tmgmt_content +third_party_settings: + tmgmt_content: + excluded: false +id: taxonomy_term.health_care_service_taxonomy.field_regional_service_descripti +field_name: field_regional_service_descripti +entity_type: taxonomy_term +bundle: health_care_service_taxonomy +label: 'Regional service description' +description: '' +required: false +translatable: false +default_value: { } +default_value_callback: '' +settings: { } +field_type: string diff --git a/config/sync/field.field.taxonomy_term.health_care_service_taxonomy.field_regional_service_header.yml b/config/sync/field.field.taxonomy_term.health_care_service_taxonomy.field_regional_service_header.yml new file mode 100644 index 0000000000..f78a6e04e9 --- /dev/null +++ b/config/sync/field.field.taxonomy_term.health_care_service_taxonomy.field_regional_service_header.yml @@ -0,0 +1,24 @@ +uuid: 0c6de90d-3960-407c-ab9a-8266320925ef +langcode: en +status: true +dependencies: + config: + - field.storage.taxonomy_term.field_regional_service_header + - taxonomy.vocabulary.health_care_service_taxonomy + module: + - tmgmt_content +third_party_settings: + tmgmt_content: + excluded: false +id: taxonomy_term.health_care_service_taxonomy.field_regional_service_header +field_name: field_regional_service_header +entity_type: taxonomy_term +bundle: health_care_service_taxonomy +label: 'Regional service header' +description: '' +required: false +translatable: false +default_value: { } +default_value_callback: '' +settings: { } +field_type: string diff --git a/config/sync/field.storage.taxonomy_term.field_facility_service_descripti.yml b/config/sync/field.storage.taxonomy_term.field_facility_service_descripti.yml new file mode 100644 index 0000000000..eeae202f10 --- /dev/null +++ b/config/sync/field.storage.taxonomy_term.field_facility_service_descripti.yml @@ -0,0 +1,21 @@ +uuid: da41c0a6-f37e-4141-8dce-009c44544559 +langcode: en +status: true +dependencies: + module: + - taxonomy +id: taxonomy_term.field_facility_service_descripti +field_name: field_facility_service_descripti +entity_type: taxonomy_term +type: string +settings: + max_length: 255 + case_sensitive: false + is_ascii: false +module: core +locked: false +cardinality: 1 +translatable: true +indexes: { } +persist_with_no_fields: false +custom_storage: false diff --git a/config/sync/field.storage.taxonomy_term.field_facility_service_header.yml b/config/sync/field.storage.taxonomy_term.field_facility_service_header.yml new file mode 100644 index 0000000000..1f68f0d781 --- /dev/null +++ b/config/sync/field.storage.taxonomy_term.field_facility_service_header.yml @@ -0,0 +1,21 @@ +uuid: cfa50495-7f90-4ecb-818d-1c137df35fe9 +langcode: en +status: true +dependencies: + module: + - taxonomy +id: taxonomy_term.field_facility_service_header +field_name: field_facility_service_header +entity_type: taxonomy_term +type: string +settings: + max_length: 255 + case_sensitive: false + is_ascii: false +module: core +locked: false +cardinality: 1 +translatable: true +indexes: { } +persist_with_no_fields: false +custom_storage: false diff --git a/config/sync/field.storage.taxonomy_term.field_regional_service_descripti.yml b/config/sync/field.storage.taxonomy_term.field_regional_service_descripti.yml new file mode 100644 index 0000000000..0d98c78135 --- /dev/null +++ b/config/sync/field.storage.taxonomy_term.field_regional_service_descripti.yml @@ -0,0 +1,21 @@ +uuid: f3e3694e-df97-4493-93e8-81e6a34493c0 +langcode: en +status: true +dependencies: + module: + - taxonomy +id: taxonomy_term.field_regional_service_descripti +field_name: field_regional_service_descripti +entity_type: taxonomy_term +type: string +settings: + max_length: 255 + case_sensitive: false + is_ascii: false +module: core +locked: false +cardinality: 1 +translatable: true +indexes: { } +persist_with_no_fields: false +custom_storage: false diff --git a/config/sync/field.storage.taxonomy_term.field_regional_service_header.yml b/config/sync/field.storage.taxonomy_term.field_regional_service_header.yml new file mode 100644 index 0000000000..d038409adc --- /dev/null +++ b/config/sync/field.storage.taxonomy_term.field_regional_service_header.yml @@ -0,0 +1,21 @@ +uuid: 6a2939f6-917f-4e6b-a675-4e7fd8a826f1 +langcode: en +status: true +dependencies: + module: + - taxonomy +id: taxonomy_term.field_regional_service_header +field_name: field_regional_service_header +entity_type: taxonomy_term +type: string +settings: + max_length: 255 + case_sensitive: false + is_ascii: false +module: core +locked: false +cardinality: 1 +translatable: true +indexes: { } +persist_with_no_fields: false +custom_storage: false diff --git a/config/sync/language.content_settings.taxonomy_term.service_delivery_options.yml b/config/sync/language.content_settings.taxonomy_term.service_delivery_options.yml new file mode 100644 index 0000000000..8fe8350847 --- /dev/null +++ b/config/sync/language.content_settings.taxonomy_term.service_delivery_options.yml @@ -0,0 +1,11 @@ +uuid: ac0269fe-3d1d-4e17-940d-45e0f047a0ae +langcode: en +status: true +dependencies: + config: + - taxonomy.vocabulary.service_delivery_options +id: taxonomy_term.service_delivery_options +target_entity_type_id: taxonomy_term +target_bundle: service_delivery_options +default_langcode: site_default +language_alterable: false diff --git a/config/sync/taxonomy.vocabulary.service_delivery_options.yml b/config/sync/taxonomy.vocabulary.service_delivery_options.yml new file mode 100644 index 0000000000..4c7af1399d --- /dev/null +++ b/config/sync/taxonomy.vocabulary.service_delivery_options.yml @@ -0,0 +1,8 @@ +uuid: f938c303-a996-4d5e-ab9e-964c8be514df +langcode: en +status: true +dependencies: { } +name: 'VA Service delivery options' +vid: service_delivery_options +description: 'Single source of truth for service delivery options (e.g. in-person appointments, virtual hotline)' +weight: 0 diff --git a/docroot/modules/custom/va_gov_facilities/js/displayServiceDescriptions.es6.js b/docroot/modules/custom/va_gov_facilities/js/displayServiceDescriptions.es6.js index 71c0ba37a3..653200794f 100644 --- a/docroot/modules/custom/va_gov_facilities/js/displayServiceDescriptions.es6.js +++ b/docroot/modules/custom/va_gov_facilities/js/displayServiceDescriptions.es6.js @@ -142,6 +142,68 @@ p4.prepend(s4); } } + // VBA terms have nationalized regional data. + if ( + drupalSettings.availableHealthServices[service.value] !== undefined && + drupalSettings.availableHealthServices[service.value] + .vba_regional_service_header !== "" + ) { + const p5 = context.createElement("p"); + const s5 = context.createElement("strong"); + p5.textContent = drupalSettings.availableHealthServices[ + service.value + ].vba_regional_service_header.replace(/ /g, " "); + s5.textContent = "Regional service header: "; + div.classList.remove("no-content"); + div.appendChild(p5); + p5.prepend(s5); + } + if ( + drupalSettings.availableHealthServices[service.value] !== undefined && + drupalSettings.availableHealthServices[service.value] + .vba_regional_service_description !== "" + ) { + const p6 = context.createElement("p"); + const s6 = context.createElement("strong"); + p6.textContent = drupalSettings.availableHealthServices[ + service.value + ].vba_regional_service_description.replace(/ /g, " "); + s6.textContent = "Regional service description: "; + div.classList.remove("no-content"); + div.appendChild(p6); + p6.prepend(s6); + } + // VBA terms have nationalized facility data. + if ( + drupalSettings.availableHealthServices[service.value] !== undefined && + drupalSettings.availableHealthServices[service.value] + .vba_facility_service_header !== "" + ) { + const p7 = context.createElement("p"); + const s7 = context.createElement("strong"); + p7.textContent = drupalSettings.availableHealthServices[ + service.value + ].vba_facility_service_header.replace(/ /g, " "); + s7.textContent = "Facility service header: "; + div.classList.remove("no-content"); + div.appendChild(p7); + p7.prepend(s7); + } + if ( + drupalSettings.availableHealthServices[service.value] !== undefined && + drupalSettings.availableHealthServices[service.value] + .vba_facility_service_description !== "" + ) { + const p8 = context.createElement("p"); + const s8 = context.createElement("strong"); + p8.textContent = drupalSettings.availableHealthServices[ + service.value + ].vba_facility_service_description.replace(/ /g, " "); + s8.textContent = "Facility service description: "; + div.classList.remove("no-content"); + div.appendChild(p8); + p8.prepend(s8); + } // Plug in the term text below the select. service.after(div); // If we have contents, add a label above. diff --git a/docroot/modules/custom/va_gov_facilities/js/displayServiceDescriptions.js b/docroot/modules/custom/va_gov_facilities/js/displayServiceDescriptions.js index a3f1a7210b..dd1bb170c3 100644 --- a/docroot/modules/custom/va_gov_facilities/js/displayServiceDescriptions.js +++ b/docroot/modules/custom/va_gov_facilities/js/displayServiceDescriptions.js @@ -78,6 +78,42 @@ p4.prepend(s4); } } + if (drupalSettings.availableHealthServices[service.value] !== undefined && drupalSettings.availableHealthServices[service.value].vba_regional_service_header !== "") { + var p5 = context.createElement("p"); + var s5 = context.createElement("strong"); + p5.textContent = drupalSettings.availableHealthServices[service.value].vba_regional_service_header.replace(/ /g, " "); + s5.textContent = "Regional service header: "; + div.classList.remove("no-content"); + div.appendChild(p5); + p5.prepend(s5); + } + if (drupalSettings.availableHealthServices[service.value] !== undefined && drupalSettings.availableHealthServices[service.value].vba_regional_service_description !== "") { + var p6 = context.createElement("p"); + var s6 = context.createElement("strong"); + p6.textContent = drupalSettings.availableHealthServices[service.value].vba_regional_service_description.replace(/ /g, " "); + s6.textContent = "Regional service description: "; + div.classList.remove("no-content"); + div.appendChild(p6); + p6.prepend(s6); + } + if (drupalSettings.availableHealthServices[service.value] !== undefined && drupalSettings.availableHealthServices[service.value].vba_facility_service_header !== "") { + var p7 = context.createElement("p"); + var s7 = context.createElement("strong"); + p7.textContent = drupalSettings.availableHealthServices[service.value].vba_facility_service_header.replace(/ /g, " "); + s7.textContent = "Facility service header: "; + div.classList.remove("no-content"); + div.appendChild(p7); + p7.prepend(s7); + } + if (drupalSettings.availableHealthServices[service.value] !== undefined && drupalSettings.availableHealthServices[service.value].vba_facility_service_description !== "") { + var p8 = context.createElement("p"); + var s8 = context.createElement("strong"); + p8.textContent = drupalSettings.availableHealthServices[service.value].vba_facility_service_description.replace(/ /g, " "); + s8.textContent = "Facility service description: "; + div.classList.remove("no-content"); + div.appendChild(p8); + p8.prepend(s8); + } service.after(div); if (div.textContent.length > 0) { var p = context.createElement("p"); diff --git a/docroot/modules/custom/va_gov_facilities/src/EventSubscriber/FacilitiesSubscriber.php b/docroot/modules/custom/va_gov_facilities/src/EventSubscriber/FacilitiesSubscriber.php index 73b0b7aac2..c2f58d0a6a 100644 --- a/docroot/modules/custom/va_gov_facilities/src/EventSubscriber/FacilitiesSubscriber.php +++ b/docroot/modules/custom/va_gov_facilities/src/EventSubscriber/FacilitiesSubscriber.php @@ -480,6 +480,15 @@ public function buildHealthServicesDescriptionArrayAddToSettings(FormIdAlterEven 'tricare_description' => trim(strip_tags($tricare_description)), 'vc_vocabulary_service_description_label' => $vocabulary_definition['field_vet_center_service_descrip']->getLabel(), 'vc_vocabulary_description_help_text' => $vocabulary_definition['field_vet_center_service_descrip']->getDescription(), + // VBA has nationalized content we want to show from the vocabulary. + 'vba_regional_service_header' => $service_term->hasField('field_regional_service_header') + ? trim($service_term->get('field_regional_service_header')->getString()) : '', + 'vba_regional_service_description' => $service_term->hasField('field_regional_service_descripti') + ? trim($service_term->get('field_regional_service_descripti')->getString()) : '', + 'vba_facility_service_header' => $service_term->hasField('field_facility_service_header') + ? trim($service_term->get('field_facility_service_header')->getString()) : '', + 'vba_facility_service_description' => $service_term->hasField('field_facility_service_descripti') + ? trim($service_term->get('field_facility_service_descripti')->getString()) : '', ]; } $form['#attached']['drupalSettings']['availableHealthServices'] = $descriptions; From fbefeba45a249f10a926415b39a73c1c280f75a3 Mon Sep 17 00:00:00 2001 From: Tanner Heffner Date: Wed, 25 Oct 2023 08:47:40 -0700 Subject: [PATCH 08/25] VACMS-15838 export additional view modes to hide breadcrumbs properly (#15841) * export additional view modes to hide breadcrumbs properly * re-export some types * hide breadcrumbs in 2 more that weren't picked up * only change breadcrumb related stuff --- ...view_display.node.campaign_landing_page.teaser.yml | 1 + ...de.health_care_local_facility.external_content.yml | 1 + ...play.node.health_care_local_facility.ief_table.yml | 1 + ....node.health_care_region_page.external_content.yml | 1 + ...iew_display.node.nca_facility.external_content.yml | 1 + ...e.entity_view_display.node.nca_facility.teaser.yml | 1 + ...e.entity_view_display.node.service_region.full.yml | 1 + ...entity_view_display.node.service_region.teaser.yml | 1 + ...ity_view_display.node.va_form.external_content.yml | 1 + .../core.entity_view_display.node.va_form.teaser.yml | 1 + ...iew_display.node.vba_facility.external_content.yml | 11 ++++++----- ...ntity_view_display.node.vba_facility.ief_table.yml | 11 ++++++----- ...e.entity_view_display.node.vba_facility.teaser.yml | 11 ++++++----- ...display.node.vba_facility_service.search_index.yml | 1 + ..._view_display.node.vba_facility_service.teaser.yml | 1 + ..._view_display.node.vet_center.external_content.yml | 1 + ...ore.entity_view_display.node.vet_center.teaser.yml | 1 + ....vet_center_mobile_vet_center.external_content.yml | 1 + ...ay.node.vet_center_outstation.external_content.yml | 1 + ...view_display.node.vet_center_outstation.teaser.yml | 1 + 20 files changed, 35 insertions(+), 15 deletions(-) diff --git a/config/sync/core.entity_view_display.node.campaign_landing_page.teaser.yml b/config/sync/core.entity_view_display.node.campaign_landing_page.teaser.yml index b43aab7f65..6faab443af 100644 --- a/config/sync/core.entity_view_display.node.campaign_landing_page.teaser.yml +++ b/config/sync/core.entity_view_display.node.campaign_landing_page.teaser.yml @@ -62,6 +62,7 @@ content: weight: 100 region: content hidden: + breadcrumbs: true field_administration: true field_benefit_categories: true field_clp_audience: true 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 948e775d1c..1fb0bbe2a0 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 @@ -255,6 +255,7 @@ content: weight: 10 region: content hidden: + breadcrumbs: true content_moderation_control: true field_administration: true field_description: 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 dbec93712c..d978097d78 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 @@ -106,6 +106,7 @@ content: weight: 2 region: content hidden: + breadcrumbs: true content_moderation_control: true field_address: true field_administration: true diff --git a/config/sync/core.entity_view_display.node.health_care_region_page.external_content.yml b/config/sync/core.entity_view_display.node.health_care_region_page.external_content.yml index bbfedd47ce..9730686bfb 100644 --- a/config/sync/core.entity_view_display.node.health_care_region_page.external_content.yml +++ b/config/sync/core.entity_view_display.node.health_care_region_page.external_content.yml @@ -148,6 +148,7 @@ content: weight: 22 region: content hidden: + breadcrumbs: true content_moderation_control: true field_administration: true field_appointments_online: true diff --git a/config/sync/core.entity_view_display.node.nca_facility.external_content.yml b/config/sync/core.entity_view_display.node.nca_facility.external_content.yml index dd04d66c67..6f7affbd57 100644 --- a/config/sync/core.entity_view_display.node.nca_facility.external_content.yml +++ b/config/sync/core.entity_view_display.node.nca_facility.external_content.yml @@ -162,6 +162,7 @@ content: weight: 10 region: content hidden: + breadcrumbs: true content_moderation_control: true field_administration: true field_geolocation: true diff --git a/config/sync/core.entity_view_display.node.nca_facility.teaser.yml b/config/sync/core.entity_view_display.node.nca_facility.teaser.yml index d9edc06ddf..f62ad83eba 100644 --- a/config/sync/core.entity_view_display.node.nca_facility.teaser.yml +++ b/config/sync/core.entity_view_display.node.nca_facility.teaser.yml @@ -37,6 +37,7 @@ content: weight: 1 region: content hidden: + breadcrumbs: true field_address: true field_administration: true field_facility_locator_api_id: true diff --git a/config/sync/core.entity_view_display.node.service_region.full.yml b/config/sync/core.entity_view_display.node.service_region.full.yml index f727835605..ae8b02fc0f 100644 --- a/config/sync/core.entity_view_display.node.service_region.full.yml +++ b/config/sync/core.entity_view_display.node.service_region.full.yml @@ -109,6 +109,7 @@ content: region: content hidden: body: true + breadcrumbs: true content_moderation_control: true langcode: true links: true diff --git a/config/sync/core.entity_view_display.node.service_region.teaser.yml b/config/sync/core.entity_view_display.node.service_region.teaser.yml index 3ddbe48c68..812f580b10 100644 --- a/config/sync/core.entity_view_display.node.service_region.teaser.yml +++ b/config/sync/core.entity_view_display.node.service_region.teaser.yml @@ -39,6 +39,7 @@ content: weight: 100 region: content hidden: + breadcrumbs: true field_administration: true field_facility_location: true field_last_saved_by_an_editor: true diff --git a/config/sync/core.entity_view_display.node.va_form.external_content.yml b/config/sync/core.entity_view_display.node.va_form.external_content.yml index f1d7a736f0..a6048e5a40 100644 --- a/config/sync/core.entity_view_display.node.va_form.external_content.yml +++ b/config/sync/core.entity_view_display.node.va_form.external_content.yml @@ -158,6 +158,7 @@ content: weight: 0 region: content hidden: + breadcrumbs: true content_moderation_control: true field_administration: true field_alert: true diff --git a/config/sync/core.entity_view_display.node.va_form.teaser.yml b/config/sync/core.entity_view_display.node.va_form.teaser.yml index 70e36e6c09..3b95f1d8db 100644 --- a/config/sync/core.entity_view_display.node.va_form.teaser.yml +++ b/config/sync/core.entity_view_display.node.va_form.teaser.yml @@ -41,6 +41,7 @@ content: weight: 0 region: content hidden: + breadcrumbs: true content_moderation_control: true field_administration: true field_alert: true diff --git a/config/sync/core.entity_view_display.node.vba_facility.external_content.yml b/config/sync/core.entity_view_display.node.vba_facility.external_content.yml index 7888a56e8b..5debfb940d 100644 --- a/config/sync/core.entity_view_display.node.vba_facility.external_content.yml +++ b/config/sync/core.entity_view_display.node.vba_facility.external_content.yml @@ -7,20 +7,20 @@ dependencies: - field.field.node.vba_facility.field_address - field.field.node.vba_facility.field_administration - field.field.node.vba_facility.field_cc_benefit_office_hours_va - - field.field.node.vba_facility.field_cc_cant_find_benefits - field.field.node.vba_facility.field_cc_benefits_hotline + - field.field.node.vba_facility.field_cc_cant_find_benefits + - field.field.node.vba_facility.field_cc_get_updates_from_vba + - field.field.node.vba_facility.field_cc_national_spotlight_1 + - field.field.node.vba_facility.field_cc_national_spotlight_2 + - field.field.node.vba_facility.field_cc_national_spotlight_3 - field.field.node.vba_facility.field_cc_vba_facility_overview - field.field.node.vba_facility.field_facility_locator_api_id - field.field.node.vba_facility.field_facility_vba_classificatio - field.field.node.vba_facility.field_geolocation - - field.field.node.vba_facility.field_cc_get_updates_from_vba - field.field.node.vba_facility.field_intro_text - field.field.node.vba_facility.field_last_saved_by_an_editor - field.field.node.vba_facility.field_location_services - field.field.node.vba_facility.field_media - - field.field.node.vba_facility.field_cc_national_spotlight_1 - - field.field.node.vba_facility.field_cc_national_spotlight_2 - - field.field.node.vba_facility.field_cc_national_spotlight_3 - field.field.node.vba_facility.field_non_va_location_url - field.field.node.vba_facility.field_non_va_official_name - field.field.node.vba_facility.field_office @@ -239,6 +239,7 @@ content: weight: 8 region: content hidden: + breadcrumbs: true content_moderation_control: true field_administration: true field_cc_benefit_office_hours_va: true diff --git a/config/sync/core.entity_view_display.node.vba_facility.ief_table.yml b/config/sync/core.entity_view_display.node.vba_facility.ief_table.yml index d9f38b868a..b2abfefd86 100644 --- a/config/sync/core.entity_view_display.node.vba_facility.ief_table.yml +++ b/config/sync/core.entity_view_display.node.vba_facility.ief_table.yml @@ -7,20 +7,20 @@ dependencies: - field.field.node.vba_facility.field_address - field.field.node.vba_facility.field_administration - field.field.node.vba_facility.field_cc_benefit_office_hours_va - - field.field.node.vba_facility.field_cc_cant_find_benefits - field.field.node.vba_facility.field_cc_benefits_hotline + - field.field.node.vba_facility.field_cc_cant_find_benefits + - field.field.node.vba_facility.field_cc_get_updates_from_vba + - field.field.node.vba_facility.field_cc_national_spotlight_1 + - field.field.node.vba_facility.field_cc_national_spotlight_2 + - field.field.node.vba_facility.field_cc_national_spotlight_3 - field.field.node.vba_facility.field_cc_vba_facility_overview - field.field.node.vba_facility.field_facility_locator_api_id - field.field.node.vba_facility.field_facility_vba_classificatio - field.field.node.vba_facility.field_geolocation - - field.field.node.vba_facility.field_cc_get_updates_from_vba - field.field.node.vba_facility.field_intro_text - field.field.node.vba_facility.field_last_saved_by_an_editor - field.field.node.vba_facility.field_location_services - field.field.node.vba_facility.field_media - - field.field.node.vba_facility.field_cc_national_spotlight_1 - - field.field.node.vba_facility.field_cc_national_spotlight_2 - - field.field.node.vba_facility.field_cc_national_spotlight_3 - field.field.node.vba_facility.field_non_va_location_url - field.field.node.vba_facility.field_non_va_official_name - field.field.node.vba_facility.field_office @@ -171,6 +171,7 @@ content: weight: 5 region: content hidden: + breadcrumbs: true content_moderation_control: true field_administration: true field_cc_benefit_office_hours_va: true diff --git a/config/sync/core.entity_view_display.node.vba_facility.teaser.yml b/config/sync/core.entity_view_display.node.vba_facility.teaser.yml index f947d76988..bab18a82b5 100644 --- a/config/sync/core.entity_view_display.node.vba_facility.teaser.yml +++ b/config/sync/core.entity_view_display.node.vba_facility.teaser.yml @@ -7,20 +7,20 @@ dependencies: - field.field.node.vba_facility.field_address - field.field.node.vba_facility.field_administration - field.field.node.vba_facility.field_cc_benefit_office_hours_va - - field.field.node.vba_facility.field_cc_cant_find_benefits - field.field.node.vba_facility.field_cc_benefits_hotline + - field.field.node.vba_facility.field_cc_cant_find_benefits + - field.field.node.vba_facility.field_cc_get_updates_from_vba + - field.field.node.vba_facility.field_cc_national_spotlight_1 + - field.field.node.vba_facility.field_cc_national_spotlight_2 + - field.field.node.vba_facility.field_cc_national_spotlight_3 - field.field.node.vba_facility.field_cc_vba_facility_overview - field.field.node.vba_facility.field_facility_locator_api_id - field.field.node.vba_facility.field_facility_vba_classificatio - field.field.node.vba_facility.field_geolocation - - field.field.node.vba_facility.field_cc_get_updates_from_vba - field.field.node.vba_facility.field_intro_text - field.field.node.vba_facility.field_last_saved_by_an_editor - field.field.node.vba_facility.field_location_services - field.field.node.vba_facility.field_media - - field.field.node.vba_facility.field_cc_national_spotlight_1 - - field.field.node.vba_facility.field_cc_national_spotlight_2 - - field.field.node.vba_facility.field_cc_national_spotlight_3 - field.field.node.vba_facility.field_non_va_location_url - field.field.node.vba_facility.field_non_va_official_name - field.field.node.vba_facility.field_office @@ -50,6 +50,7 @@ content: weight: 1 region: content hidden: + breadcrumbs: true field_address: true field_administration: true field_cc_benefit_office_hours_va: true diff --git a/config/sync/core.entity_view_display.node.vba_facility_service.search_index.yml b/config/sync/core.entity_view_display.node.vba_facility_service.search_index.yml index b91148adf2..546d4ed7f4 100644 --- a/config/sync/core.entity_view_display.node.vba_facility_service.search_index.yml +++ b/config/sync/core.entity_view_display.node.vba_facility_service.search_index.yml @@ -48,6 +48,7 @@ content: weight: 1 region: content hidden: + breadcrumbs: true content_moderation_control: true field_administration: true field_last_saved_by_an_editor: true diff --git a/config/sync/core.entity_view_display.node.vba_facility_service.teaser.yml b/config/sync/core.entity_view_display.node.vba_facility_service.teaser.yml index 0d1468bd59..a54411a0d5 100644 --- a/config/sync/core.entity_view_display.node.vba_facility_service.teaser.yml +++ b/config/sync/core.entity_view_display.node.vba_facility_service.teaser.yml @@ -24,6 +24,7 @@ content: weight: 0 region: content hidden: + breadcrumbs: true content_moderation_control: true field_administration: true field_enforce_unique_combo: true diff --git a/config/sync/core.entity_view_display.node.vet_center.external_content.yml b/config/sync/core.entity_view_display.node.vet_center.external_content.yml index 4ee1812d60..76f87f53c7 100644 --- a/config/sync/core.entity_view_display.node.vet_center.external_content.yml +++ b/config/sync/core.entity_view_display.node.vet_center.external_content.yml @@ -110,6 +110,7 @@ content: weight: 4 region: content hidden: + breadcrumbs: true content_moderation_control: true field_administration: true field_cc_non_traditional_hours: true diff --git a/config/sync/core.entity_view_display.node.vet_center.teaser.yml b/config/sync/core.entity_view_display.node.vet_center.teaser.yml index 1990272f77..0cb00f8154 100644 --- a/config/sync/core.entity_view_display.node.vet_center.teaser.yml +++ b/config/sync/core.entity_view_display.node.vet_center.teaser.yml @@ -39,6 +39,7 @@ content: weight: 0 region: content hidden: + breadcrumbs: true content_moderation_control: true field_address: true field_administration: true diff --git a/config/sync/core.entity_view_display.node.vet_center_mobile_vet_center.external_content.yml b/config/sync/core.entity_view_display.node.vet_center_mobile_vet_center.external_content.yml index 0125349c47..496aa62aec 100644 --- a/config/sync/core.entity_view_display.node.vet_center_mobile_vet_center.external_content.yml +++ b/config/sync/core.entity_view_display.node.vet_center_mobile_vet_center.external_content.yml @@ -102,6 +102,7 @@ content: weight: 5 region: content hidden: + breadcrumbs: true content_moderation_control: true field_administration: true field_last_saved_by_an_editor: true diff --git a/config/sync/core.entity_view_display.node.vet_center_outstation.external_content.yml b/config/sync/core.entity_view_display.node.vet_center_outstation.external_content.yml index a5b514b43d..81ad93b076 100644 --- a/config/sync/core.entity_view_display.node.vet_center_outstation.external_content.yml +++ b/config/sync/core.entity_view_display.node.vet_center_outstation.external_content.yml @@ -104,6 +104,7 @@ content: weight: 5 region: content hidden: + breadcrumbs: true content_moderation_control: true field_administration: true field_geolocation: true diff --git a/config/sync/core.entity_view_display.node.vet_center_outstation.teaser.yml b/config/sync/core.entity_view_display.node.vet_center_outstation.teaser.yml index 4c44d23ad4..a9f18a1330 100644 --- a/config/sync/core.entity_view_display.node.vet_center_outstation.teaser.yml +++ b/config/sync/core.entity_view_display.node.vet_center_outstation.teaser.yml @@ -37,6 +37,7 @@ content: weight: 100 region: content hidden: + breadcrumbs: true field_address: true field_administration: true field_facility_locator_api_id: true From c965bed5952c0ec3736ab3d095d57a39dd6c7cbb Mon Sep 17 00:00:00 2001 From: Christia Troyer Date: Wed, 25 Oct 2023 10:31:50 -0700 Subject: [PATCH 09/25] VACMS-10579: Removed promo flag via config (#15675) --- config/sync/feature_toggle.features.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/config/sync/feature_toggle.features.yml b/config/sync/feature_toggle.features.yml index 500db73770..40c99c928c 100644 --- a/config/sync/feature_toggle.features.yml +++ b/config/sync/feature_toggle.features.yml @@ -4,5 +4,4 @@ features: feature_all_hub_side_navs: FEATURE_ALL_HUB_SIDE_NAVS feature_single_value_field_link: FEATURE_SINGLE_VALUE_FIELD_LINK feature_health_connect_number: FEATURE_HEALTH_CONNECT_NUMBER - feature_mobile_app_promo: FEATURE_MOBILE_APP_PROMO feature_event_outreach_checkbox: FEATURE_EVENT_OUTREACH_CHECKBOX From 43da80db9825cd0c7d9febc594cf8b5bc3d40a1e Mon Sep 17 00:00:00 2001 From: Steve Wirt Date: Wed, 25 Oct 2023 15:08:44 -0400 Subject: [PATCH 10/25] VACMS-15503 Add multi workflow filters to all Views that have exposed content moderation filter (#15769) * VACMS-15503 Add multiple workflow filter patch. * admin/content * admin/content/resources-and-support * admin/content/events * admin/content/bulk * admin/content/audit/export * admin/content/audit * admin/content/audit/knowledge-base-article-administration * admin/content/audit/metatag * admin/content/audit/phone-numbers, admin/content/audit/buttons * admin/content/va-forms/audit * admin/content/vamc-alerts-and-statuses * admin/content/facilities * admin/content/facilities/addresses * admin/content/facilities/facility-status * admin/content/facilities/vamc-facility-health-services * admin/content/facilities/vamc-facility-non-clinical-services * admin/content/facilities/vet-center-services * admin/content/audit/system-banner-image * admin/content/facilities/vamc-systems * admin/content/facilities/vamc-prepare-for-visit * Update name of Facility collection of Views. * Undo some unintended changes. * VACMS-14721 Add content types back to phone audit. * VACMS-15503 Set correct caption on phone and button audits. * VACMS-15503 Fix conflicting filter on metatag audit and fix menu placement. --- composer.json | 3 +- composer.lock | 18 +- config/sync/views.view.content.yml | 266 +++++---- config/sync/views.view.facility_services.yml | 524 +++++++++-------- ....knowledge_base_article_administration.yml | 22 +- config/sync/views.view.metatag_audit.yml | 99 ++-- .../sync/views.view.rich_text_field_audit.yml | 538 +++++++++++------- config/sync/views.view.va_forms.yml | 95 ++-- ...iew.vamc_alerts_and_operating_statuses.yml | 28 +- 9 files changed, 895 insertions(+), 698 deletions(-) diff --git a/composer.json b/composer.json index 119fa3113b..7c567f77fc 100644 --- a/composer.json +++ b/composer.json @@ -383,7 +383,8 @@ "3047110 - Add workflow to taxonomy" : "https://www.drupal.org/files/issues/2023-04-14/3047110-45.patch", "3106205 - Length of menu_tree.url and menu_tree.route_param_key are too short (255 characters)": "https://www.drupal.org/files/issues/2023-05-24/3106205-length-menu-tree-too-short.patch", "3274419 - Make BaseFieldOverride inherit internal property from the base field": "https://www.drupal.org/files/issues/2023-03-13/3274419-45.patch", - "3333401 - Pager h4 cause accessibility flag on many pages": "https://www.drupal.org/files/issues/2023-07-27/3333401-56-configurable-heading-pager.patch" + "3333401 - Pager h4 cause accessibility flag on many pages": "https://www.drupal.org/files/issues/2023-07-27/3333401-56-configurable-heading-pager.patch", + "3382759 - Add multiple workflow content moderation filter to Views.": "https://www.drupal.org/files/issues/2023-08-24/3382759-8.patch" }, "drupal/danse": { "3364925 - added explicit access check": "https://www.drupal.org/files/issues/2023-06-05/3364925-added-explicit-access-check.patch" diff --git a/composer.lock b/composer.lock index ff06a7f904..403b3858be 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": "2029832df0507f936056503739c48520", + "content-hash": "4dff2afe5871cb7482ee57dbde54733e", "packages": [ { "name": "alchemy/zippy", @@ -6169,6 +6169,10 @@ "GPL-2.0-or-later" ], "authors": [ + { + "name": "Anybody", + "homepage": "https://www.drupal.org/user/291091" + }, { "name": "Hydra", "homepage": "https://www.drupal.org/user/647364" @@ -10688,7 +10692,7 @@ }, "require": { "bjeavons/zxcvbn-php": "^1.3", - "drupal/core": "^8 || ^9", + "drupal/core": "^8 || ^9 || ^10", "drupal/password_policy": "^3.1|^4.0" }, "type": "drupal-module", @@ -10697,8 +10701,8 @@ "dev-2.x": "2.x-dev" }, "drupal": { - "version": "8.x-2.0-beta1+4-dev", - "datestamp": "1668804356", + "version": "8.x-2.0-beta2+1-dev", + "datestamp": "1696647229", "security-coverage": { "status": "not-covered", "message": "Dev releases are not covered by Drupal security advisories." @@ -10726,6 +10730,10 @@ "name": "nerdstein", "homepage": "https://www.drupal.org/user/1557710" }, + { + "name": "nord102", + "homepage": "https://www.drupal.org/user/3471419" + }, { "name": "scor", "homepage": "https://www.drupal.org/user/52142" @@ -27786,5 +27794,5 @@ "platform-overrides": { "php": "8.1" }, - "plugin-api-version": "2.3.0" + "plugin-api-version": "2.6.0" } diff --git a/config/sync/views.view.content.yml b/config/sync/views.view.content.yml index 567a031593..02ab068810 100644 --- a/config/sync/views.view.content.yml +++ b/config/sync/views.view.content.yml @@ -29,7 +29,6 @@ dependencies: - user.role.content_admin - user.role.content_creator_resources_and_support - user.role.redirect_administrator - - workflows.workflow.editorial module: - content_lock - content_moderation @@ -117,15 +116,17 @@ display: form_step: true buttons: false action_title: Action + clear_on_exposed: true + force_selection_info: false selected_actions: - action_id: node_save_action preconfiguration: - add_confirmation: 0 + add_confirmation: false - action_id: node_assign_owner_action preconfiguration: - add_confirmation: 0 + add_confirmation: false - action_id: publish_latest_revision_action - @@ -133,16 +134,14 @@ display: - action_id: views_bulk_edit preconfiguration: - add_confirmation: 0 - get_bundles_from_results: 1 + add_confirmation: false + get_bundles_from_results: true - action_id: views_bulk_operations_delete_entity - action_id: 'entity:pathauto_update_alias:node' preconfiguration: - add_confirmation: 0 - clear_on_exposed: true - force_selection_info: 0 + add_confirmation: false title: id: title table: node_field_data @@ -637,22 +636,17 @@ display: default_group: All default_group_multiple: { } group_items: { } - moderation_state: - id: moderation_state - table: node_field_data - field: moderation_state + 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_filter - operator: in - value: - all: all - editorial-draft: editorial-draft - editorial-review: editorial-review - editorial-published: editorial-published - editorial-archived: editorial-archived + plugin_id: moderation_state_multiple_workflow_filter + operator: or + value: { } group: 1 exposed: true expose: @@ -660,7 +654,7 @@ display: label: 'Moderation state' description: '' use_operator: false - operator: moderation_state_op + operator: moderation_state_multiple_workflow_filter_op operator_limit_selection: false operator_list: { } identifier: moderation_state @@ -670,15 +664,23 @@ display: 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' - page_creator: '0' - layout_manager: '0' - page_reviewer: '0' - landing_page_creator: '0' - landing_page_reviewer: '0' - media_creator: '0' - media_manager: '0' - reduce: false + homepage_manager: '0' + translation_manager: '0' + next_js: '0' + reduce: 0 is_grouped: false group_info: label: '' @@ -691,6 +693,7 @@ display: default_group: All default_group_multiple: { } group_items: { } + reduce_duplicates: 0 taxonomy_entity_index_tid_depth: id: taxonomy_entity_index_tid_depth table: node @@ -926,7 +929,6 @@ display: - user.roles tags: - 'config:field.storage.node.field_administration' - - 'config:workflow_list' content_audit_csv_export: id: content_audit_csv_export display_title: 'Content audit CSV export' @@ -1460,16 +1462,16 @@ display: default_group: All default_group_multiple: { } group_items: { } - moderation_state: - id: moderation_state - table: node_field_data - field: moderation_state + 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_filter - operator: in + plugin_id: moderation_state_multiple_workflow_filter + operator: or value: { } group: 1 exposed: true @@ -1478,7 +1480,7 @@ display: label: 'Moderation state' description: '' use_operator: true - operator: moderation_state_op + operator: moderation_state_multiple_workflow_filter_op operator_limit_selection: false operator_list: { } identifier: moderation_state @@ -1501,7 +1503,10 @@ display: redirect_administrator: '0' admnistrator_users: '0' administrator: '0' - reduce: false + homepage_manager: '0' + translation_manager: '0' + next_js: '0' + reduce: 0 is_grouped: false group_info: label: '' @@ -1514,6 +1519,7 @@ display: default_group: All default_group_multiple: { } group_items: { } + reduce_duplicates: 0 workbench_access_section__section: id: workbench_access_section__section table: node @@ -1639,7 +1645,6 @@ display: - user.roles tags: - 'config:field.storage.node.field_administration' - - 'config:workflow_list' - workbench_access_view deleted: false content_audit_page: @@ -2172,16 +2177,16 @@ display: default_group: All default_group_multiple: { } group_items: { } - moderation_state: - id: moderation_state - table: node_field_data - field: moderation_state + 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_filter - operator: in + plugin_id: moderation_state_multiple_workflow_filter + operator: or value: { } group: 1 exposed: true @@ -2190,7 +2195,7 @@ display: label: 'Moderation state' description: '' use_operator: true - operator: moderation_state_op + operator: moderation_state_multiple_workflow_filter_op operator_limit_selection: false operator_list: { } identifier: moderation_state @@ -2213,7 +2218,10 @@ display: redirect_administrator: '0' admnistrator_users: '0' administrator: '0' - reduce: false + homepage_manager: '0' + translation_manager: '0' + next_js: '0' + reduce: 0 is_grouped: false group_info: label: '' @@ -2226,6 +2234,7 @@ display: default_group: All default_group_multiple: { } group_items: { } + reduce_duplicates: 0 workbench_access_section__section: id: workbench_access_section__section table: node @@ -2338,7 +2347,6 @@ display: - user.permissions tags: - 'config:field.storage.node.field_administration' - - 'config:workflow_list' - workbench_access_view deleted: false events_page: @@ -2403,6 +2411,7 @@ display: form_step: true buttons: false action_title: Action + clear_on_exposed: true selected_actions: - action_id: publish_latest_revision_action @@ -2416,8 +2425,7 @@ display: action_id: views_bulk_edit preconfiguration: label_override: '' - get_bundles_from_results: 1 - clear_on_exposed: true + get_bundles_from_results: true title: id: title table: node_field_data @@ -2935,22 +2943,17 @@ display: default_group: All default_group_multiple: { } group_items: { } - moderation_state: - id: moderation_state - table: node_field_data - field: moderation_state + 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_filter - operator: in - value: - all: all - editorial-draft: editorial-draft - editorial-review: editorial-review - editorial-published: editorial-published - editorial-archived: editorial-archived + plugin_id: moderation_state_multiple_workflow_filter + operator: or + value: { } group: 1 exposed: true expose: @@ -2958,7 +2961,7 @@ display: label: 'Moderation state' description: '' use_operator: false - operator: moderation_state_op + operator: moderation_state_multiple_workflow_filter_op operator_limit_selection: false operator_list: { } identifier: moderation_state @@ -2968,15 +2971,23 @@ display: 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' - page_creator: '0' - layout_manager: '0' - page_reviewer: '0' - landing_page_creator: '0' - landing_page_reviewer: '0' - media_creator: '0' - media_manager: '0' - reduce: false + homepage_manager: '0' + translation_manager: '0' + next_js: '0' + reduce: 0 is_grouped: false group_info: label: '' @@ -2989,6 +3000,7 @@ display: default_group: All default_group_multiple: { } group_items: { } + reduce_duplicates: 0 taxonomy_entity_index_tid_depth: id: taxonomy_entity_index_tid_depth table: node @@ -3225,7 +3237,6 @@ display: tags: - 'config:field.storage.node.field_administration' - 'config:field.storage.node.field_facility_location' - - 'config:workflow_list' deleted: false outdated_content: id: outdated_content @@ -5924,22 +5935,17 @@ display: default_group: All default_group_multiple: { } group_items: { } - moderation_state: - id: moderation_state - table: node_field_data - field: moderation_state + 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_filter - operator: in - value: - all: all - editorial-draft: editorial-draft - editorial-review: editorial-review - editorial-published: editorial-published - editorial-archived: editorial-archived + plugin_id: moderation_state_multiple_workflow_filter + operator: or + value: { } group: 1 exposed: true expose: @@ -5947,7 +5953,7 @@ display: label: 'Moderation state' description: '' use_operator: false - operator: moderation_state_op + operator: moderation_state_multiple_workflow_filter_op operator_limit_selection: false operator_list: { } identifier: moderation_state @@ -5957,15 +5963,23 @@ display: 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' - page_creator: '0' - layout_manager: '0' - page_reviewer: '0' - landing_page_creator: '0' - landing_page_reviewer: '0' - media_creator: '0' - media_manager: '0' - reduce: false + homepage_manager: '0' + translation_manager: '0' + next_js: '0' + reduce: 0 is_grouped: false group_info: label: '' @@ -5978,6 +5992,7 @@ display: default_group: All default_group_multiple: { } group_items: { } + reduce_duplicates: 0 field_administration_target_id: id: field_administration_target_id table: node__field_administration @@ -6087,7 +6102,6 @@ display: - user.permissions tags: - 'config:field.storage.node.field_administration' - - 'config:workflow_list' deleted: false page_2: id: page_2 @@ -6151,11 +6165,13 @@ display: form_step: true buttons: false action_title: Action + clear_on_exposed: true + force_selection_info: false selected_actions: 3: action_id: node_assign_owner_action preconfiguration: - add_confirmation: 1 + add_confirmation: true 9: action_id: archive_node_action 10: @@ -6163,21 +6179,19 @@ display: 11: action_id: views_bulk_edit preconfiguration: - add_confirmation: 1 - get_bundles_from_results: 1 + add_confirmation: true + get_bundles_from_results: true 12: action_id: views_bulk_operations_delete_entity 13: action_id: 'entity:pathauto_update_alias:node' preconfiguration: - add_confirmation: 1 + add_confirmation: true 15: action_id: 'entity:save_action:node' preconfiguration: + add_confirmation: true label_override: 'Resave content' - add_confirmation: 1 - clear_on_exposed: true - force_selection_info: 0 title: id: title table: node_field_data @@ -6619,7 +6633,6 @@ display: - user.roles tags: - 'config:field.storage.node.field_administration' - - 'config:workflow_list' deleted: false resources_support_dashboard: id: resources_support_dashboard @@ -6683,12 +6696,12 @@ display: form_step: true buttons: false action_title: Action + clear_on_exposed: true selected_actions: - action_id: publish_latest_revision_action preconfiguration: label_override: '' - clear_on_exposed: true title: id: title table: node_field_data @@ -7501,22 +7514,17 @@ display: default_group: All default_group_multiple: { } group_items: { } - moderation_state: - id: moderation_state - table: node_field_data - field: moderation_state + 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_filter - operator: in - value: - all: all - editorial-draft: editorial-draft - editorial-review: editorial-review - editorial-published: editorial-published - editorial-archived: editorial-archived + plugin_id: moderation_state_multiple_workflow_filter + operator: or + value: { } group: 1 exposed: true expose: @@ -7524,7 +7532,7 @@ display: label: 'Moderation state' description: '' use_operator: false - operator: moderation_state_op + operator: moderation_state_multiple_workflow_filter_op operator_limit_selection: false operator_list: { } identifier: moderation_state @@ -7534,15 +7542,23 @@ display: 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' - page_creator: '0' - layout_manager: '0' - page_reviewer: '0' - landing_page_creator: '0' - landing_page_reviewer: '0' - media_creator: '0' - media_manager: '0' - reduce: false + homepage_manager: '0' + translation_manager: '0' + next_js: '0' + reduce: 0 is_grouped: false group_info: label: '' @@ -7555,6 +7571,7 @@ display: default_group: All default_group_multiple: { } group_items: { } + reduce_duplicates: 0 taxonomy_entity_index_tid_depth: id: taxonomy_entity_index_tid_depth table: node @@ -7871,5 +7888,4 @@ display: - 'config:field.storage.node.field_other_categories' - 'config:field.storage.node.field_primary_category' - 'config:field.storage.paragraph.field_topics' - - 'config:workflow_list' deleted: false diff --git a/config/sync/views.view.facility_services.yml b/config/sync/views.view.facility_services.yml index ef9558e02a..65b0fdd2c8 100644 --- a/config/sync/views.view.facility_services.yml +++ b/config/sync/views.view.facility_services.yml @@ -168,7 +168,7 @@ dependencies: _core: default_config_hash: tS8PbpJX90aRFC3-UTgXzdqkq7_2frk2pz4TMijEebM id: facility_services -label: 'Facility Services' +label: 'Facility Services and other facility audits.' module: node description: '' tag: default @@ -1600,22 +1600,17 @@ display: default_group: All default_group_multiple: { } group_items: { } - moderation_state: - id: moderation_state - table: node_field_data - field: moderation_state + 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_filter - operator: in - value: - all: all - editorial-draft: editorial-draft - editorial-review: editorial-review - editorial-published: editorial-published - editorial-archived: editorial-archived + plugin_id: moderation_state_multiple_workflow_filter + operator: or + value: { } group: 1 exposed: true expose: @@ -1623,7 +1618,7 @@ display: label: 'Moderation state' description: '' use_operator: false - operator: moderation_state_op + operator: moderation_state_multiple_workflow_filter_op operator_limit_selection: false operator_list: { } identifier: moderation_state @@ -1633,15 +1628,23 @@ display: 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' - page_creator: '0' - layout_manager: '0' - page_reviewer: '0' - landing_page_creator: '0' - landing_page_reviewer: '0' - media_creator: '0' - media_manager: '0' - reduce: false + homepage_manager: '0' + translation_manager: '0' + next_js: '0' + reduce: 0 is_grouped: false group_info: label: '' @@ -1654,6 +1657,7 @@ display: default_group: All default_group_multiple: { } group_items: { } + reduce_duplicates: 0 workbench_access_section__section: id: workbench_access_section__section table: node @@ -1838,7 +1842,6 @@ display: tags: - 'config:field.storage.node.field_administration' - 'config:field.storage.paragraph.field_title' - - 'config:workflow_list' - workbench_access_view accordion_audit_export: id: accordion_audit_export @@ -2402,22 +2405,17 @@ display: default_group: All default_group_multiple: { } group_items: { } - moderation_state: - id: moderation_state - table: node_field_data - field: moderation_state + 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_filter - operator: in - value: - all: all - editorial-draft: editorial-draft - editorial-review: editorial-review - editorial-published: editorial-published - editorial-archived: editorial-archived + plugin_id: moderation_state_multiple_workflow_filter + operator: or + value: { } group: 1 exposed: true expose: @@ -2425,7 +2423,7 @@ display: label: 'Moderation state' description: '' use_operator: false - operator: moderation_state_op + operator: moderation_state_multiple_workflow_filter_op operator_limit_selection: false operator_list: { } identifier: moderation_state @@ -2435,15 +2433,23 @@ display: 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' - page_creator: '0' - layout_manager: '0' - page_reviewer: '0' - landing_page_creator: '0' - landing_page_reviewer: '0' - media_creator: '0' - media_manager: '0' - reduce: false + homepage_manager: '0' + translation_manager: '0' + next_js: '0' + reduce: 0 is_grouped: false group_info: label: '' @@ -2456,6 +2462,7 @@ display: default_group: All default_group_multiple: { } group_items: { } + reduce_duplicates: 0 field_administration_target_id: id: field_administration_target_id table: node__field_administration @@ -2584,7 +2591,6 @@ display: tags: - 'config:field.storage.node.field_administration' - 'config:field.storage.paragraph.field_title' - - 'config:workflow_list' addresses: id: addresses display_title: Addresses @@ -3373,16 +3379,16 @@ display: default_group: All default_group_multiple: { } group_items: { } - moderation_state: - id: moderation_state - table: node_field_data - field: moderation_state + 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_filter - operator: in + plugin_id: moderation_state_multiple_workflow_filter + operator: or value: { } group: 1 exposed: true @@ -3391,7 +3397,7 @@ display: label: 'Moderation state' description: '' use_operator: false - operator: moderation_state_op + operator: moderation_state_multiple_workflow_filter_op operator_limit_selection: false operator_list: { } identifier: moderation_state @@ -3414,7 +3420,10 @@ display: redirect_administrator: '0' admnistrator_users: '0' administrator: '0' - reduce: false + homepage_manager: '0' + translation_manager: '0' + next_js: '0' + reduce: 0 is_grouped: false group_info: label: '' @@ -3427,6 +3436,7 @@ display: default_group: All default_group_multiple: { } group_items: { } + reduce_duplicates: 0 workbench_access_section__section: id: workbench_access_section__section table: node @@ -4037,7 +4047,6 @@ display: - 'config:field.storage.node.field_address' - 'config:field.storage.node.field_administration' - 'config:field.storage.node.field_geolocation' - - 'config:workflow_list' - workbench_access_view addresses_export: id: addresses_export @@ -4876,16 +4885,16 @@ display: default_group: All default_group_multiple: { } group_items: { } - moderation_state: - id: moderation_state - table: node_field_data - field: moderation_state + 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_filter - operator: in + plugin_id: moderation_state_multiple_workflow_filter + operator: or value: { } group: 1 exposed: true @@ -4894,7 +4903,7 @@ display: label: 'Moderation state' description: '' use_operator: false - operator: moderation_state_op + operator: moderation_state_multiple_workflow_filter_op operator_limit_selection: false operator_list: { } identifier: moderation_state @@ -4917,7 +4926,10 @@ display: redirect_administrator: '0' admnistrator_users: '0' administrator: '0' - reduce: false + homepage_manager: '0' + translation_manager: '0' + next_js: '0' + reduce: 0 is_grouped: false group_info: label: '' @@ -4930,6 +4942,7 @@ display: default_group: All default_group_multiple: { } group_items: { } + reduce_duplicates: 0 workbench_access_section__section: id: workbench_access_section__section table: node @@ -5458,7 +5471,6 @@ display: tags: - 'config:field.storage.node.field_administration' - 'config:field.storage.node.field_geolocation' - - 'config:workflow_list' - workbench_access_view content_audit_facilities: id: content_audit_facilities @@ -6314,22 +6326,17 @@ display: default_group: All default_group_multiple: { } group_items: { } - moderation_state: - id: moderation_state - table: node_field_data - field: moderation_state + 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_filter - operator: in - value: - all: all - editorial-draft: editorial-draft - editorial-review: editorial-review - editorial-published: editorial-published - editorial-archived: editorial-archived + plugin_id: moderation_state_multiple_workflow_filter + operator: or + value: { } group: 1 exposed: true expose: @@ -6337,7 +6344,7 @@ display: label: 'Moderation state' description: '' use_operator: false - operator: moderation_state_op + operator: moderation_state_multiple_workflow_filter_op operator_limit_selection: false operator_list: { } identifier: moderation_state @@ -6347,15 +6354,23 @@ display: 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' - page_creator: '0' - layout_manager: '0' - page_reviewer: '0' - landing_page_creator: '0' - landing_page_reviewer: '0' - media_creator: '0' - media_manager: '0' - reduce: false + homepage_manager: '0' + translation_manager: '0' + next_js: '0' + reduce: 0 is_grouped: false group_info: label: '' @@ -6368,6 +6383,7 @@ display: default_group: All default_group_multiple: { } group_items: { } + reduce_duplicates: 0 workbench_access_section__section: id: workbench_access_section__section table: node @@ -6617,7 +6633,6 @@ display: - 'config:field.storage.node.field_facility_locator_api_id' - 'config:field.storage.node.field_office' - 'config:field.storage.node.field_region_page' - - 'config:workflow_list' - workbench_access_view content_audit_facilities_export: id: content_audit_facilities_export @@ -7275,22 +7290,17 @@ display: default_group: All default_group_multiple: { } group_items: { } - moderation_state: - id: moderation_state - table: node_field_data - field: moderation_state + 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_filter - operator: in - value: - all: all - editorial-draft: editorial-draft - editorial-review: editorial-review - editorial-published: editorial-published - editorial-archived: editorial-archived + plugin_id: moderation_state_multiple_workflow_filter + operator: or + value: { } group: 1 exposed: true expose: @@ -7298,7 +7308,7 @@ display: label: 'Moderation state' description: '' use_operator: false - operator: moderation_state_op + operator: moderation_state_multiple_workflow_filter_op operator_limit_selection: false operator_list: { } identifier: moderation_state @@ -7308,15 +7318,23 @@ display: 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' - page_creator: '0' - layout_manager: '0' - page_reviewer: '0' - landing_page_creator: '0' - landing_page_reviewer: '0' - media_creator: '0' - media_manager: '0' - reduce: false + homepage_manager: '0' + translation_manager: '0' + next_js: '0' + reduce: 0 is_grouped: false group_info: label: '' @@ -7329,6 +7347,7 @@ display: default_group: All default_group_multiple: { } group_items: { } + reduce_duplicates: 0 taxonomy_entity_index_tid_depth: id: taxonomy_entity_index_tid_depth table: node @@ -7467,7 +7486,6 @@ display: - 'config:field.storage.node.field_facility_locator_api_id' - 'config:field.storage.node.field_office' - 'config:field.storage.node.field_region_page' - - 'config:workflow_list' data_export_facility_urls: id: data_export_facility_urls display_title: 'Facility Urls' @@ -8813,16 +8831,16 @@ display: default_group: All default_group_multiple: { } group_items: { } - moderation_state: - id: moderation_state - table: node_field_data - field: moderation_state + 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_filter - operator: in + plugin_id: moderation_state_multiple_workflow_filter + operator: or value: { } group: 1 exposed: true @@ -8831,7 +8849,7 @@ display: label: 'Moderation state' description: '' use_operator: false - operator: moderation_state_op + operator: moderation_state_multiple_workflow_filter_op operator_limit_selection: false operator_list: { } identifier: moderation_state @@ -8854,7 +8872,10 @@ display: redirect_administrator: '0' admnistrator_users: '0' administrator: '0' - reduce: false + homepage_manager: '0' + translation_manager: '0' + next_js: '0' + reduce: 0 is_grouped: false group_info: label: '' @@ -8867,6 +8888,7 @@ display: default_group: All default_group_multiple: { } group_items: { } + reduce_duplicates: 0 workbench_access_section__section: id: workbench_access_section__section table: node @@ -8988,7 +9010,6 @@ display: - 'config:field.storage.node.field_operating_status_facility' - 'config:field.storage.node.field_operating_status_more_info' - 'config:field.storage.node.field_supplemental_status' - - 'config:workflow_list' - workbench_access_view facility_status_page: id: facility_status_page @@ -10167,16 +10188,16 @@ display: default_group: All default_group_multiple: { } group_items: { } - moderation_state: - id: moderation_state - table: node_field_data - field: moderation_state + 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_filter - operator: in + plugin_id: moderation_state_multiple_workflow_filter + operator: or value: { } group: 1 exposed: true @@ -10185,7 +10206,7 @@ display: label: 'Moderation state' description: '' use_operator: false - operator: moderation_state_op + operator: moderation_state_multiple_workflow_filter_op operator_limit_selection: false operator_list: { } identifier: moderation_state @@ -10208,7 +10229,10 @@ display: redirect_administrator: '0' admnistrator_users: '0' administrator: '0' - reduce: false + homepage_manager: '0' + translation_manager: '0' + next_js: '0' + reduce: 0 is_grouped: false group_info: label: '' @@ -10221,6 +10245,7 @@ display: default_group: All default_group_multiple: { } group_items: { } + reduce_duplicates: 0 workbench_access_section__section: id: workbench_access_section__section table: node @@ -10431,7 +10456,6 @@ display: - 'config:field.storage.node.field_operating_status_more_info' - 'config:field.storage.node.field_supplemental_status' - 'config:field.storage.node.field_supplemental_status_more_i' - - 'config:workflow_list' - workbench_access_view page_1: id: page_1 @@ -10830,22 +10854,17 @@ display: default_group: All default_group_multiple: { } group_items: { } - moderation_state: - id: moderation_state - table: node_field_data - field: moderation_state + 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_filter - operator: in - value: - all: all - editorial-draft: editorial-draft - editorial-review: editorial-review - editorial-published: editorial-published - editorial-archived: editorial-archived + plugin_id: moderation_state_multiple_workflow_filter + operator: or + value: { } group: 1 exposed: true expose: @@ -10853,7 +10872,7 @@ display: label: 'Moderation state' description: '' use_operator: false - operator: moderation_state_op + operator: moderation_state_multiple_workflow_filter_op operator_limit_selection: false operator_list: { } identifier: moderation_state @@ -10863,15 +10882,23 @@ display: 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' - page_creator: '0' - layout_manager: '0' - page_reviewer: '0' - landing_page_creator: '0' - landing_page_reviewer: '0' - media_creator: '0' - media_manager: '0' - reduce: false + homepage_manager: '0' + translation_manager: '0' + next_js: '0' + reduce: 0 is_grouped: false group_info: label: '' @@ -10884,6 +10911,7 @@ display: default_group: All default_group_multiple: { } group_items: { } + reduce_duplicates: 0 workbench_access_section__section: id: workbench_access_section__section table: node @@ -11146,7 +11174,6 @@ display: - user.roles tags: - 'config:field.storage.node.field_media' - - 'config:workflow_list' - workbench_access_view vamc_facility_health_services_export: id: vamc_facility_health_services_export @@ -12747,16 +12774,16 @@ display: default_group_multiple: { } group_items: { } reduce_duplicates: false - moderation_state: - id: moderation_state - table: node_field_data - field: moderation_state + 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_filter - operator: in + plugin_id: moderation_state_multiple_workflow_filter + operator: or value: { } group: 1 exposed: true @@ -12765,7 +12792,7 @@ display: label: 'Moderation state' description: '' use_operator: false - operator: moderation_state_op + operator: moderation_state_multiple_workflow_filter_op operator_limit_selection: false operator_list: { } identifier: moderation_state @@ -12788,7 +12815,10 @@ display: redirect_administrator: '0' admnistrator_users: '0' administrator: '0' - reduce: false + homepage_manager: '0' + translation_manager: '0' + next_js: '0' + reduce: 0 is_grouped: false group_info: label: '' @@ -12801,6 +12831,7 @@ display: default_group: All default_group_multiple: { } group_items: { } + reduce_duplicates: 0 filter_groups: operator: AND groups: @@ -12927,7 +12958,6 @@ display: - 'config:field.storage.node.field_online_scheduling_availabl' - 'config:field.storage.node.field_referral_required' - 'config:field.storage.node.field_walk_ins_accepted' - - 'config:workflow_list' deleted: false vamc_facility_health_services_page: id: vamc_facility_health_services_page @@ -14475,16 +14505,16 @@ display: default_group_multiple: { } group_items: { } reduce_duplicates: false - moderation_state: - id: moderation_state - table: node_field_data - field: moderation_state + 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_filter - operator: in + plugin_id: moderation_state_multiple_workflow_filter + operator: or value: { } group: 1 exposed: true @@ -14493,7 +14523,7 @@ display: label: 'Moderation state' description: '' use_operator: false - operator: moderation_state_op + operator: moderation_state_multiple_workflow_filter_op operator_limit_selection: false operator_list: { } identifier: moderation_state @@ -14516,7 +14546,10 @@ display: redirect_administrator: '0' admnistrator_users: '0' administrator: '0' - reduce: false + homepage_manager: '0' + translation_manager: '0' + next_js: '0' + reduce: 0 is_grouped: false group_info: label: '' @@ -14529,6 +14562,7 @@ display: default_group: All default_group_multiple: { } group_items: { } + reduce_duplicates: 0 workbench_access_section__section: id: workbench_access_section__section table: node @@ -14875,7 +14909,6 @@ display: - 'config:field.storage.node.field_online_scheduling_availabl' - 'config:field.storage.node.field_referral_required' - 'config:field.storage.node.field_walk_ins_accepted' - - 'config:workflow_list' - workbench_access_view deleted: false vamc_facility_non_clinical_services_export: @@ -15978,16 +16011,16 @@ display: hierarchy: true limit: true error_message: true - moderation_state: - id: moderation_state - table: node_field_data - field: moderation_state + 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_filter - operator: in + plugin_id: moderation_state_multiple_workflow_filter + operator: or value: { } group: 1 exposed: true @@ -15996,7 +16029,7 @@ display: label: 'Moderation state' description: '' use_operator: false - operator: moderation_state_op + operator: moderation_state_multiple_workflow_filter_op operator_limit_selection: false operator_list: { } identifier: moderation_state @@ -16019,7 +16052,10 @@ display: redirect_administrator: '0' admnistrator_users: '0' administrator: '0' - reduce: false + homepage_manager: '0' + translation_manager: '0' + next_js: '0' + reduce: 0 is_grouped: false group_info: label: '' @@ -16032,6 +16068,7 @@ display: default_group: All default_group_multiple: { } group_items: { } + reduce_duplicates: 0 field_administration_target_id: id: field_administration_target_id table: node__field_administration @@ -16193,7 +16230,6 @@ display: - 'config:field.storage.node.field_administration' - 'config:field.storage.node.field_facility_location' - 'config:field.storage.node.field_facility_locator_api_id' - - 'config:workflow_list' deleted: false vamc_facility_non_clinical_services_page: id: vamc_facility_non_clinical_services_page @@ -17303,16 +17339,16 @@ display: hierarchy: true limit: true error_message: true - moderation_state: - id: moderation_state - table: node_field_data - field: moderation_state + 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_filter - operator: in + plugin_id: moderation_state_multiple_workflow_filter + operator: or value: { } group: 1 exposed: true @@ -17321,7 +17357,7 @@ display: label: 'Moderation state' description: '' use_operator: false - operator: moderation_state_op + operator: moderation_state_multiple_workflow_filter_op operator_limit_selection: false operator_list: { } identifier: moderation_state @@ -17344,7 +17380,10 @@ display: redirect_administrator: '0' admnistrator_users: '0' administrator: '0' - reduce: false + homepage_manager: '0' + translation_manager: '0' + next_js: '0' + reduce: 0 is_grouped: false group_info: label: '' @@ -17357,6 +17396,7 @@ display: default_group: All default_group_multiple: { } group_items: { } + reduce_duplicates: 0 workbench_access_section__section: id: workbench_access_section__section table: node @@ -17667,7 +17707,6 @@ display: - 'config:field.storage.node.field_administration' - 'config:field.storage.node.field_facility_location' - 'config:field.storage.node.field_facility_locator_api_id' - - 'config:workflow_list' - workbench_access_view deleted: false vamc_system_service_audit_export: @@ -20063,47 +20102,46 @@ display: default_group: All default_group_multiple: { } group_items: { } - moderation_state: - id: moderation_state - table: node_field_data - field: moderation_state + field_vamc_ehr_system_value: + id: field_vamc_ehr_system_value + table: node__field_vamc_ehr_system + field: field_vamc_ehr_system_value relationship: none group_type: group admin_label: '' - entity_type: node - plugin_id: moderation_state_filter - operator: in - value: - all: all - editorial-draft: editorial-draft - editorial-review: editorial-review - editorial-published: editorial-published - editorial-archived: editorial-archived + plugin_id: list_field + operator: or + value: { } group: 1 exposed: true expose: - operator_id: moderation_state_op - label: 'Moderation state' + operator_id: field_vamc_ehr_system_value_op + label: 'EHR System' description: '' use_operator: false - operator: moderation_state_op + operator: field_vamc_ehr_system_value_op operator_limit_selection: false operator_list: { } - identifier: moderation_state + identifier: field_vamc_ehr_system_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_vet_center: '0' + content_editor: '0' + content_reviewer: '0' + content_publisher: '0' + content_admin: '0' + redirect_administrator: '0' + admnistrator_users: '0' administrator: '0' - page_creator: '0' - layout_manager: '0' - page_reviewer: '0' - landing_page_creator: '0' - landing_page_reviewer: '0' - media_creator: '0' - media_manager: '0' reduce: false is_grouped: false group_info: @@ -20117,27 +20155,29 @@ display: default_group: All default_group_multiple: { } group_items: { } - field_vamc_ehr_system_value: - id: field_vamc_ehr_system_value - table: node__field_vamc_ehr_system - field: field_vamc_ehr_system_value + reduce_duplicates: false + 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: '' - plugin_id: list_field + entity_type: node + plugin_id: moderation_state_multiple_workflow_filter operator: or value: { } group: 1 exposed: true expose: - operator_id: field_vamc_ehr_system_value_op - label: 'EHR System' + operator_id: moderation_state_op + label: 'Moderation state' description: '' use_operator: false - operator: field_vamc_ehr_system_value_op + operator: moderation_state_multiple_workflow_filter_op operator_limit_selection: false operator_list: { } - identifier: field_vamc_ehr_system_value + identifier: moderation_state required: false remember: false multiple: false @@ -20157,7 +20197,10 @@ display: redirect_administrator: '0' admnistrator_users: '0' administrator: '0' - reduce: false + homepage_manager: '0' + translation_manager: '0' + next_js: '0' + reduce: 0 is_grouped: false group_info: label: '' @@ -20170,7 +20213,7 @@ display: default_group: All default_group_multiple: { } group_items: { } - reduce_duplicates: false + reduce_duplicates: 0 workbench_access_section__section: id: workbench_access_section__section table: node @@ -20424,7 +20467,6 @@ display: - 'config:field.storage.node.field_va_health_connect_phone' - 'config:field.storage.node.field_vamc_ehr_system' - 'config:field.storage.node.field_vamc_system_official_name' - - 'config:workflow_list' - workbench_access_view vet_center_services_export: id: vet_center_services_export @@ -21491,25 +21533,25 @@ display: hierarchy: true limit: true error_message: true - moderation_state: - id: moderation_state - table: node_field_data - field: moderation_state + 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_filter - operator: in + plugin_id: moderation_state_multiple_workflow_filter + operator: or value: { } group: 1 exposed: true expose: - operator_id: moderation_state_op + operator_id: moderation_state_multiple_workflow_filter_op label: 'Moderation state' description: '' use_operator: false - operator: moderation_state_op + operator: moderation_state_multiple_workflow_filter_op operator_limit_selection: false operator_list: { } identifier: moderation_state @@ -21532,7 +21574,10 @@ display: redirect_administrator: '0' admnistrator_users: '0' administrator: '0' - reduce: false + homepage_manager: '0' + translation_manager: '0' + next_js: '0' + reduce: 0 is_grouped: false group_info: label: '' @@ -21545,6 +21590,7 @@ display: default_group: All default_group_multiple: { } group_items: { } + reduce_duplicates: 0 field_administration_target_id: id: field_administration_target_id table: node__field_administration @@ -21698,7 +21744,6 @@ display: - 'config:field.storage.node.field_administration' - 'config:field.storage.node.field_body' - 'config:field.storage.node.field_facility_locator_api_id' - - 'config:workflow_list' deleted: false vet_center_services_page: id: vet_center_services_page @@ -22768,16 +22813,16 @@ display: hierarchy: true limit: true error_message: true - moderation_state: - id: moderation_state - table: node_field_data - field: moderation_state + 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_filter - operator: in + plugin_id: moderation_state_multiple_workflow_filter + operator: or value: { } group: 1 exposed: true @@ -22786,7 +22831,7 @@ display: label: 'Moderation state' description: '' use_operator: false - operator: moderation_state_op + operator: moderation_state_multiple_workflow_filter_op operator_limit_selection: false operator_list: { } identifier: moderation_state @@ -22809,7 +22854,10 @@ display: redirect_administrator: '0' admnistrator_users: '0' administrator: '0' - reduce: false + homepage_manager: '0' + translation_manager: '0' + next_js: '0' + reduce: 0 is_grouped: false group_info: label: '' @@ -22822,6 +22870,7 @@ display: default_group: All default_group_multiple: { } group_items: { } + reduce_duplicates: 0 workbench_access_section__section: id: workbench_access_section__section table: node @@ -23121,6 +23170,5 @@ display: - 'config:field.storage.node.field_administration' - 'config:field.storage.node.field_body' - 'config:field.storage.node.field_facility_locator_api_id' - - 'config:workflow_list' - workbench_access_view deleted: false diff --git a/config/sync/views.view.knowledge_base_article_administration.yml b/config/sync/views.view.knowledge_base_article_administration.yml index f6c22f218b..6a8e472811 100644 --- a/config/sync/views.view.knowledge_base_article_administration.yml +++ b/config/sync/views.view.knowledge_base_article_administration.yml @@ -694,16 +694,16 @@ display: default_group: All default_group_multiple: { } group_items: { } - moderation_state: - id: moderation_state - table: node_field_data - field: moderation_state + 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_filter - operator: in + plugin_id: moderation_state_multiple_workflow_filter + operator: or value: { } group: 1 exposed: true @@ -712,7 +712,7 @@ display: label: 'Moderation state' description: '' use_operator: false - operator: moderation_state_op + operator: moderation_state_multiple_workflow_filter_op operator_limit_selection: false operator_list: { } identifier: moderation_state @@ -735,7 +735,10 @@ display: redirect_administrator: '0' admnistrator_users: '0' administrator: '0' - reduce: false + homepage_manager: '0' + translation_manager: '0' + next_js: '0' + reduce: 0 is_grouped: false group_info: label: '' @@ -748,6 +751,7 @@ display: default_group: All default_group_multiple: { } group_items: { } + reduce_duplicates: 0 field_products_target_id: id: field_products_target_id table: node__field_products @@ -931,7 +935,6 @@ display: tags: - 'config:field.storage.node.field_administration' - 'config:field.storage.node.field_products' - - 'config:workflow_list' knowledge_base_admin: id: knowledge_base_admin display_title: Page @@ -962,4 +965,3 @@ display: tags: - 'config:field.storage.node.field_administration' - 'config:field.storage.node.field_products' - - 'config:workflow_list' diff --git a/config/sync/views.view.metatag_audit.yml b/config/sync/views.view.metatag_audit.yml index e0ea249422..aa45e065f1 100644 --- a/config/sync/views.view.metatag_audit.yml +++ b/config/sync/views.view.metatag_audit.yml @@ -1002,19 +1002,6 @@ display: granularity: second arguments: { } filters: - status: - id: status - table: node_field_data - field: status - entity_type: node - entity_field: status - plugin_id: boolean - value: '1' - group: 1 - expose: - operator: '' - operator_limit_selection: false - operator_list: { } type: id: type table: node_field_data @@ -1095,16 +1082,16 @@ display: default_group: All default_group_multiple: { } group_items: { } - moderation_state: - id: moderation_state - table: node_field_data - field: moderation_state + 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_filter - operator: in + plugin_id: moderation_state_multiple_workflow_filter + operator: or value: { } group: 1 exposed: true @@ -1113,7 +1100,7 @@ display: label: 'Moderation state' description: '' use_operator: false - operator: moderation_state_op + operator: moderation_state_multiple_workflow_filter_op operator_limit_selection: false operator_list: { } identifier: moderation_state @@ -1136,7 +1123,10 @@ display: redirect_administrator: '0' admnistrator_users: '0' administrator: '0' - reduce: false + homepage_manager: '0' + translation_manager: '0' + next_js: '0' + reduce: 0 is_grouped: false group_info: label: '' @@ -1149,6 +1139,7 @@ display: default_group: All default_group_multiple: { } group_items: { } + reduce_duplicates: 0 workbench_access_section__section: id: workbench_access_section__section table: node @@ -1224,15 +1215,14 @@ display: changed: changed moderation_state: moderation_state field_administration: field_administration - nothing_2: nothing_2 - nothing: nothing - nothing_1: nothing_1 - field_meta_tags: field_meta_tags - field_meta_title: field_meta_title field_description: field_description field_intro_text: field_intro_text field_hero_image: field_hero_image field_media: field_media + nothing_2: nothing_2 + nothing: nothing + nothing_1: nothing_1 + field_meta_tags: field_meta_tags default: '-1' info: title: @@ -1284,57 +1274,50 @@ display: separator: '' empty_column: false responsive: '' - nothing_2: - align: '' - separator: '' - empty_column: false - responsive: '' - nothing: + field_description: + sortable: false + default_sort_order: asc align: '' separator: '' empty_column: false responsive: '' - nothing_1: + field_intro_text: + sortable: false + default_sort_order: asc align: '' separator: '' empty_column: false responsive: '' - field_meta_tags: + field_hero_image: sortable: false default_sort_order: asc align: '' separator: '' empty_column: false responsive: '' - field_meta_title: + field_media: sortable: false default_sort_order: asc align: '' separator: '' empty_column: false responsive: '' - field_description: - sortable: false - default_sort_order: asc + nothing_2: align: '' separator: '' empty_column: false responsive: '' - field_intro_text: - sortable: false - default_sort_order: asc + nothing: align: '' separator: '' empty_column: false responsive: '' - field_hero_image: - sortable: false - default_sort_order: asc + nothing_1: align: '' separator: '' empty_column: false responsive: '' - field_media: + field_meta_tags: sortable: false default_sort_order: asc align: '' @@ -1345,7 +1328,7 @@ display: sticky: false summary: '' empty_table: false - caption: '' + caption: 'Metatag audit results' description: '' row: type: fields @@ -1368,6 +1351,7 @@ display: - 'languages:language_interface' - url - url.query_args + - user - 'user.node_grants:view' - user.permissions tags: @@ -1377,7 +1361,7 @@ display: - 'config:field.storage.node.field_intro_text' - 'config:field.storage.node.field_media' - 'config:field.storage.node.field_meta_tags' - - 'config:workflow_list' + - workbench_access_view metatag_audit: id: metatag_audit display_title: 'Metatag Audit' @@ -1385,8 +1369,24 @@ display: position: 1 display_options: display_description: '' - display_extenders: { } + display_extenders: + jsonapi_views: + enabled: true path: admin/content/audit/metatag + menu: + type: tab + title: Metatags + description: '' + weight: 0 + expanded: false + menu_name: main + parent: '' + context: '0' + as_local_task: true + local_task_link_title: Metatags + local_task_parent: 'views_view:view.content.content_audit_page' + local_task_weight: 3 + local_task_custom_parent_route: '' cache_metadata: max-age: -1 contexts: @@ -1394,6 +1394,7 @@ display: - 'languages:language_interface' - url - url.query_args + - user - 'user.node_grants:view' - user.permissions tags: @@ -1403,4 +1404,4 @@ display: - 'config:field.storage.node.field_intro_text' - 'config:field.storage.node.field_media' - 'config:field.storage.node.field_meta_tags' - - 'config:workflow_list' + - workbench_access_view diff --git a/config/sync/views.view.rich_text_field_audit.yml b/config/sync/views.view.rich_text_field_audit.yml index 9fd04cdfd3..cf8ead38a2 100644 --- a/config/sync/views.view.rich_text_field_audit.yml +++ b/config/sync/views.view.rich_text_field_audit.yml @@ -57,6 +57,7 @@ dependencies: - node.type.vamc_system_policies_page - node.type.vamc_system_register_for_care - node.type.vba_facility + - node.type.vba_facility_service - node.type.vet_center - node.type.vet_center_cap - node.type.vet_center_facility_health_servi @@ -1254,18 +1255,17 @@ display: default_group: All default_group_multiple: { } group_items: { } - moderation_state: - id: moderation_state - table: node_field_data - field: moderation_state + 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_filter - operator: in - value: - all: all + plugin_id: moderation_state_multiple_workflow_filter + operator: or + value: { } group: 1 exposed: true expose: @@ -1273,7 +1273,7 @@ display: label: 'Moderation state' description: '' use_operator: false - operator: moderation_state_op + operator: moderation_state_multiple_workflow_filter_op operator_limit_selection: false operator_list: { } identifier: moderation_state @@ -1296,7 +1296,10 @@ display: redirect_administrator: '0' admnistrator_users: '0' administrator: '0' - reduce: false + homepage_manager: '0' + translation_manager: '0' + next_js: '0' + reduce: 0 is_grouped: false group_info: label: '' @@ -1309,6 +1312,7 @@ display: default_group: All default_group_multiple: { } group_items: { } + reduce_duplicates: 0 workbench_access_section__section: id: workbench_access_section__section table: node @@ -1444,13 +1448,11 @@ display: nid: nid edit_node_1: edit_node_1 type: type + revision_uid: revision_uid 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 - field_phone_numbers_paragraph: field_phone_numbers_paragraph + field_content_block: field_content_block default: '-1' info: title: @@ -1481,58 +1483,46 @@ display: separator: '' empty_column: false responsive: '' - changed: - sortable: true - default_sort_order: asc - align: '' - separator: '' - empty_column: false - responsive: '' - moderation_state: - sortable: true + revision_uid: + sortable: false default_sort_order: asc align: '' separator: '' empty_column: false responsive: '' - field_administration: + changed: sortable: true default_sort_order: asc align: '' separator: '' empty_column: false responsive: '' - field_phone_number: + moderation_state: sortable: true default_sort_order: asc align: '' separator: '' empty_column: false responsive: '' - field_mental_health_phone: + field_administration: sortable: true default_sort_order: asc align: '' separator: '' empty_column: false responsive: '' - field_va_health_connect_phone: - sortable: true + field_content_block: + sortable: false default_sort_order: asc align: '' separator: '' empty_column: false responsive: '' - field_phone_numbers_paragraph: - align: '' - separator: '' - empty_column: false - responsive: '' override: true sticky: false summary: '' empty_table: false - caption: '' + caption: 'Button audit results' description: '' row: type: fields @@ -1577,7 +1567,6 @@ display: - 'config:field.storage.node.field_full_story' - 'config:field.storage.node.field_press_release_blurb' - 'config:field.storage.node.field_press_release_fulltext' - - 'config:workflow_list' - workbench_access_view buttons_export: id: buttons_export @@ -2231,18 +2220,17 @@ display: default_group: All default_group_multiple: { } group_items: { } - moderation_state: - id: moderation_state - table: node_field_data - field: moderation_state + 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_filter - operator: in - value: - all: all + plugin_id: moderation_state_multiple_workflow_filter + operator: or + value: { } group: 1 exposed: true expose: @@ -2250,7 +2238,7 @@ display: label: 'Moderation state' description: '' use_operator: false - operator: moderation_state_op + operator: moderation_state_multiple_workflow_filter_op operator_limit_selection: false operator_list: { } identifier: moderation_state @@ -2273,7 +2261,10 @@ display: redirect_administrator: '0' admnistrator_users: '0' administrator: '0' - reduce: false + homepage_manager: '0' + translation_manager: '0' + next_js: '0' + reduce: 0 is_grouped: false group_info: label: '' @@ -2286,6 +2277,7 @@ display: default_group: All default_group_multiple: { } group_items: { } + reduce_duplicates: 0 workbench_access_section__section: id: workbench_access_section__section table: node @@ -2469,7 +2461,6 @@ display: tags: - 'config:field.storage.node.field_administration' - 'config:field.storage.node.field_content_block' - - 'config:workflow_list' - workbench_access_view content_audit_buttons: id: content_audit_buttons @@ -3188,18 +3179,17 @@ display: default_group: All default_group_multiple: { } group_items: { } - moderation_state: - id: moderation_state - table: node_field_data - field: moderation_state + 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_filter - operator: in - value: - all: all + plugin_id: moderation_state_multiple_workflow_filter + operator: or + value: { } group: 1 exposed: true expose: @@ -3207,7 +3197,7 @@ display: label: 'Moderation state' description: '' use_operator: false - operator: moderation_state_op + operator: moderation_state_multiple_workflow_filter_op operator_limit_selection: false operator_list: { } identifier: moderation_state @@ -3230,7 +3220,10 @@ display: redirect_administrator: '0' admnistrator_users: '0' administrator: '0' - reduce: false + homepage_manager: '0' + translation_manager: '0' + next_js: '0' + reduce: 0 is_grouped: false group_info: label: '' @@ -3243,6 +3236,7 @@ display: default_group: All default_group_multiple: { } group_items: { } + reduce_duplicates: 0 workbench_access_section__section: id: workbench_access_section__section table: node @@ -3357,8 +3351,100 @@ display: 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 + revision_uid: revision_uid + changed: changed + moderation_state: moderation_state + field_administration: field_administration + field_content_block: field_content_block + 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: '' + revision_uid: + sortable: false + 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_content_block: + sortable: false + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + override: true + sticky: false + summary: '' + empty_table: false + caption: 'Button audit results' + description: '' + row: + type: fields + options: { } defaults: title: false + style: false + row: false relationships: false fields: false filters: false @@ -3386,7 +3472,9 @@ display: plugin_id: result empty: false content: "

Displaying @start - @end of @total

\r\n

This audit searches through all field_wysiwyg to find instances of 'usa-button' within the content which is used to create buttons.

" - display_extenders: { } + display_extenders: + jsonapi_views: + enabled: true path: admin/content/audit/buttons menu: type: tab @@ -3415,7 +3503,6 @@ display: tags: - 'config:field.storage.node.field_administration' - 'config:field.storage.node.field_content_block' - - 'config:workflow_list' - workbench_access_view content_audit_phone_numbers: id: content_audit_phone_numbers @@ -3423,6 +3510,7 @@ display: display_plugin: page position: 3 display_options: + title: 'Content Audit - Phone Numbers' fields: title: id: title @@ -4038,98 +4126,6 @@ display: separator: ', ' field_api_classes: false filters: - type_1: - id: type_1 - 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: - all: all - page: page - landing_page: landing_page - documentation_page: documentation_page - campaign_landing_page: campaign_landing_page - centralized_content: centralized_content - checklist: checklist - event: event - event_listing: event_listing - faq_multiple_q_a: faq_multiple_q_a - banner: banner - health_services_listing: health_services_listing - media_list_images: media_list_images - basic_landing_page: basic_landing_page - leadership_listing: leadership_listing - nca_facility: nca_facility - press_release: press_release - press_releases_listing: press_releases_listing - office: office - promo_banner: promo_banner - outreach_asset: outreach_asset - publication_listing: publication_listing - q_a: q_a - support_resources_detail_page: support_resources_detail_page - person_profile: person_profile - step_by_step: step_by_step - story_listing: story_listing - news_story: news_story - support_service: support_service - va_form: va_form - 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 - locations_listing: locations_listing - 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 - 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 - media_list_videos: media_list_videos - group: 1 - exposed: false - expose: - operator_id: '' - label: '' - description: '' - use_operator: false - operator: '' - operator_limit_selection: false - operator_list: { } - identifier: '' - required: false - remember: false - multiple: false - remember_roles: - authenticated: authenticated - reduce: false - is_grouped: false - group_info: - label: '' - description: '' - identifier: '' - optional: true - widget: select - multiple: false - remember: false - default_group: All - default_group_multiple: { } - group_items: { } title: id: title table: node_field_data @@ -4199,24 +4195,34 @@ display: value: page: page centralized_content: centralized_content - event: event - faq_multiple_q_a: faq_multiple_q_a - banner: banner basic_landing_page: basic_landing_page - media_list_images: media_list_images - media_list_videos: media_list_videos + 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 - news_story: news_story + 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: @@ -4247,6 +4253,9 @@ display: redirect_administrator: '0' admnistrator_users: '0' administrator: '0' + homepage_manager: '0' + translation_manager: '0' + next_js: '0' reduce: true is_grouped: false group_info: @@ -4260,18 +4269,17 @@ display: default_group: All default_group_multiple: { } group_items: { } - moderation_state: - id: moderation_state - table: node_field_data - field: moderation_state + 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_filter - operator: in - value: - all: all + plugin_id: moderation_state_multiple_workflow_filter + operator: or + value: { } group: 1 exposed: true expose: @@ -4279,7 +4287,7 @@ display: label: 'Moderation state' description: '' use_operator: false - operator: moderation_state_op + operator: moderation_state_multiple_workflow_filter_op operator_limit_selection: false operator_list: { } identifier: moderation_state @@ -4302,7 +4310,10 @@ display: redirect_administrator: '0' admnistrator_users: '0' administrator: '0' - reduce: false + homepage_manager: '0' + translation_manager: '0' + next_js: '0' + reduce: 0 is_grouped: false group_info: label: '' @@ -4315,6 +4326,7 @@ display: default_group: All default_group_multiple: { } group_items: { } + reduce_duplicates: 0 workbench_access_section__section: id: workbench_access_section__section table: node @@ -4433,7 +4445,108 @@ display: 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 fields: false filters: false filter_groups: false @@ -4471,7 +4584,6 @@ 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:workflow_list' - workbench_access_view phone_numbers_export: id: phone_numbers_export @@ -5316,29 +5428,28 @@ display: default_group: All default_group_multiple: { } group_items: { } - moderation_state: - id: moderation_state - table: node_field_data - field: moderation_state + 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: moderation_state_filter + plugin_id: workbench_access_section operator: in - value: - all: all + value: { } group: 1 exposed: true expose: - operator_id: moderation_state_op - label: 'Moderation state' + operator_id: workbench_access_section__section_op + label: Section description: '' use_operator: false - operator: moderation_state_op + operator: workbench_access_section__section_op operator_limit_selection: false operator_list: { } - identifier: moderation_state + identifier: workbench_access_section__section required: false remember: false multiple: false @@ -5358,7 +5469,7 @@ display: redirect_administrator: '0' admnistrator_users: '0' administrator: '0' - reduce: false + reduce: 1 is_grouped: false group_info: label: '' @@ -5371,28 +5482,30 @@ display: default_group: All default_group_multiple: { } group_items: { } - workbench_access_section__section: - id: workbench_access_section__section - table: node - field: workbench_access_section__section + reduce_duplicates: 0 + section_filter: + show_hierarchy: 1 + combine: + id: combine + table: views + field: combine relationship: none group_type: group admin_label: '' - entity_type: node - plugin_id: workbench_access_section - operator: in - value: { } + plugin_id: combine + operator: contains + value: '' group: 1 exposed: true expose: - operator_id: workbench_access_section__section_op - label: Section + operator_id: combine_op + label: 'Phone Number contains' description: '' use_operator: false - operator: workbench_access_section__section_op + operator: combine_op operator_limit_selection: false operator_list: { } - identifier: workbench_access_section__section + identifier: phone required: false remember: false multiple: false @@ -5412,7 +5525,7 @@ display: redirect_administrator: '0' admnistrator_users: '0' administrator: '0' - reduce: 1 + placeholder: '' is_grouped: false group_info: label: '' @@ -5425,30 +5538,32 @@ display: default_group: All default_group_multiple: { } group_items: { } - reduce_duplicates: 0 - section_filter: - show_hierarchy: 1 - combine: - id: combine - table: views - field: combine + 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 + 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: '' - plugin_id: combine - operator: contains - value: '' + entity_type: node + plugin_id: moderation_state_multiple_workflow_filter + operator: or + value: { } group: 1 exposed: true expose: - operator_id: combine_op - label: 'Phone Number contains' + operator_id: moderation_state_op + label: 'Moderation state' description: '' use_operator: false - operator: combine_op + operator: moderation_state_multiple_workflow_filter_op operator_limit_selection: false operator_list: { } - identifier: phone + identifier: moderation_state required: false remember: false multiple: false @@ -5468,7 +5583,10 @@ display: redirect_administrator: '0' admnistrator_users: '0' administrator: '0' - placeholder: '' + homepage_manager: '0' + translation_manager: '0' + next_js: '0' + reduce: 0 is_grouped: false group_info: label: '' @@ -5481,10 +5599,7 @@ display: 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 + reduce_duplicates: 0 filter_groups: operator: AND groups: @@ -5539,5 +5654,4 @@ 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:workflow_list' - workbench_access_view diff --git a/config/sync/views.view.va_forms.yml b/config/sync/views.view.va_forms.yml index c638aadfe3..5fd41dea3b 100644 --- a/config/sync/views.view.va_forms.yml +++ b/config/sync/views.view.va_forms.yml @@ -19,7 +19,6 @@ dependencies: - user.role.content_editor - user.role.content_publisher - user.role.content_reviewer - - workflows.workflow.editorial content: - 'taxonomy_term:administration:2c331a6d-b525-4f0c-8bea-4ecde41c7ef0' - 'taxonomy_term:administration:867e4dcf-2f99-401a-977a-adb441d53350' @@ -997,22 +996,17 @@ display: title: title field_va_form_name: field_va_form_name field_va_form_title: field_va_form_title - moderation_state: - id: moderation_state - table: node_field_data - field: moderation_state + 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_filter - operator: in - value: - all: all - editorial-draft: editorial-draft - editorial-review: editorial-review - editorial-published: editorial-published - editorial-archived: editorial-archived + plugin_id: moderation_state_multiple_workflow_filter + operator: or + value: { } group: 1 exposed: true expose: @@ -1020,7 +1014,7 @@ display: label: 'Moderation state' description: '' use_operator: false - operator: moderation_state_op + operator: moderation_state_multiple_workflow_filter_op operator_limit_selection: false operator_list: { } identifier: moderation_state @@ -1032,7 +1026,10 @@ display: 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' @@ -1040,7 +1037,10 @@ display: redirect_administrator: '0' admnistrator_users: '0' administrator: '0' - reduce: false + homepage_manager: '0' + translation_manager: '0' + next_js: '0' + reduce: 0 is_grouped: false group_info: label: '' @@ -1053,6 +1053,7 @@ display: default_group: All default_group_multiple: { } group_items: { } + reduce_duplicates: 0 field_va_form_administration_target_id: id: field_va_form_administration_target_id table: node__field_va_form_administration @@ -1285,7 +1286,6 @@ display: - 'config:field.storage.node.field_va_form_administration' - 'config:field.storage.node.field_va_form_name' - 'config:field.storage.node.field_va_form_title' - - 'config:workflow_list' audit: id: audit display_title: Audit @@ -2219,22 +2219,17 @@ display: fields: title: title field_va_form_name: field_va_form_name - moderation_state: - id: moderation_state - table: node_field_data - field: moderation_state + 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_filter - operator: in - value: - all: all - editorial-draft: editorial-draft - editorial-review: editorial-review - editorial-published: editorial-published - editorial-archived: editorial-archived + plugin_id: moderation_state_multiple_workflow_filter + operator: or + value: { } group: 1 exposed: true expose: @@ -2242,7 +2237,7 @@ display: label: 'Moderation state' description: '' use_operator: false - operator: moderation_state_op + operator: moderation_state_multiple_workflow_filter_op operator_limit_selection: false operator_list: { } identifier: moderation_state @@ -2254,7 +2249,10 @@ display: 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' @@ -2262,7 +2260,10 @@ display: redirect_administrator: '0' admnistrator_users: '0' administrator: '0' - reduce: false + homepage_manager: '0' + translation_manager: '0' + next_js: '0' + reduce: 0 is_grouped: false group_info: label: '' @@ -2275,6 +2276,7 @@ display: default_group: All default_group_multiple: { } group_items: { } + reduce_duplicates: 0 workbench_access_section__section: id: workbench_access_section__section table: node @@ -2729,7 +2731,6 @@ display: - 'config:field.storage.node.field_va_form_revision_date' - 'config:field.storage.node.field_va_form_tool_url' - 'config:field.storage.node.field_va_form_usage' - - 'config:workflow_list' - workbench_access_view csv_export: id: csv_export @@ -3611,22 +3612,17 @@ display: fields: title: title field_va_form_name: field_va_form_name - moderation_state: - id: moderation_state - table: node_field_data - field: moderation_state + 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_filter - operator: in - value: - all: all - editorial-draft: editorial-draft - editorial-review: editorial-review - editorial-published: editorial-published - editorial-archived: editorial-archived + plugin_id: moderation_state_multiple_workflow_filter + operator: or + value: { } group: 1 exposed: true expose: @@ -3634,7 +3630,7 @@ display: label: 'Moderation state' description: '' use_operator: false - operator: moderation_state_op + operator: moderation_state_multiple_workflow_filter_op operator_limit_selection: false operator_list: { } identifier: moderation_state @@ -3646,7 +3642,10 @@ display: 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' @@ -3654,7 +3653,10 @@ display: redirect_administrator: '0' admnistrator_users: '0' administrator: '0' - reduce: false + homepage_manager: '0' + translation_manager: '0' + next_js: '0' + reduce: 0 is_grouped: false group_info: label: '' @@ -3667,6 +3669,7 @@ display: default_group: All default_group_multiple: { } group_items: { } + reduce_duplicates: 0 workbench_access_section__section: id: workbench_access_section__section table: node @@ -4131,7 +4134,6 @@ display: - 'config:field.storage.node.field_va_form_revision_date' - 'config:field.storage.node.field_va_form_tool_url' - 'config:field.storage.node.field_va_form_usage' - - 'config:workflow_list' - workbench_access_view page_1: id: page_1 @@ -4171,4 +4173,3 @@ display: - 'config:field.storage.node.field_va_form_administration' - 'config:field.storage.node.field_va_form_name' - 'config:field.storage.node.field_va_form_title' - - 'config:workflow_list' diff --git a/config/sync/views.view.vamc_alerts_and_operating_statuses.yml b/config/sync/views.view.vamc_alerts_and_operating_statuses.yml index b6c4b74282..440f631119 100644 --- a/config/sync/views.view.vamc_alerts_and_operating_statuses.yml +++ b/config/sync/views.view.vamc_alerts_and_operating_statuses.yml @@ -684,16 +684,16 @@ display: default_group: All default_group_multiple: { } group_items: { } - moderation_state: - id: moderation_state - table: node_field_data - field: moderation_state + 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_filter - operator: in + plugin_id: moderation_state_multiple_workflow_filter + operator: or value: { } group: 1 exposed: true @@ -702,7 +702,7 @@ display: label: 'Moderation state' description: '' use_operator: false - operator: moderation_state_op + operator: moderation_state_multiple_workflow_filter_op operator_limit_selection: false operator_list: { } identifier: moderation_state @@ -713,7 +713,11 @@ display: authenticated: authenticated anonymous: '0' content_api_consumer: '0' - documentation_editor: '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' @@ -721,7 +725,10 @@ display: redirect_administrator: '0' admnistrator_users: '0' administrator: '0' - reduce: false + homepage_manager: '0' + translation_manager: '0' + next_js: '0' + reduce: 0 is_grouped: false group_info: label: '' @@ -734,6 +741,7 @@ display: default_group: All default_group_multiple: { } group_items: { } + reduce_duplicates: 0 status: id: status table: node_field_data @@ -1023,7 +1031,6 @@ display: tags: - 'config:field.storage.node.field_administration' - 'config:field.storage.node.field_banner_alert_vamcs' - - 'config:workflow_list' page_1: id: page_1 display_title: Page @@ -1053,4 +1060,3 @@ display: tags: - 'config:field.storage.node.field_administration' - 'config:field.storage.node.field_banner_alert_vamcs' - - 'config:workflow_list' From 9318d56fbb6f98b038856bedc7a69a157d499331 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 25 Oct 2023 20:06:13 -0500 Subject: [PATCH 11/25] Bump va-gov/content-build from 0.0.3372 to 0.0.3374 (#15866) Bumps [va-gov/content-build](https://github.com/department-of-veterans-affairs/content-build) from 0.0.3372 to 0.0.3374. - [Release notes](https://github.com/department-of-veterans-affairs/content-build/releases) - [Commits](https://github.com/department-of-veterans-affairs/content-build/compare/v0.0.3372...v0.0.3374) --- updated-dependencies: - dependency-name: va-gov/content-build dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- composer.json | 2 +- composer.lock | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/composer.json b/composer.json index 7c567f77fc..b8b9d1bac1 100644 --- a/composer.json +++ b/composer.json @@ -207,7 +207,7 @@ "symfony/phpunit-bridge": "^5.1", "symfony/process": "^4.0", "symfony/routing": "^4.0", - "va-gov/content-build": "^0.0.3372", + "va-gov/content-build": "^0.0.3374", "vlucas/phpdotenv": "^5.3", "webflo/drupal-finder": "^1.0.0", "webmozart/path-util": "^2.3", diff --git a/composer.lock b/composer.lock index 403b3858be..9c7cff52a6 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": "4dff2afe5871cb7482ee57dbde54733e", + "content-hash": "a719753bc58db6f1e66bb30d1a538748", "packages": [ { "name": "alchemy/zippy", @@ -26900,16 +26900,16 @@ }, { "name": "va-gov/content-build", - "version": "v0.0.3372", + "version": "v0.0.3374", "source": { "type": "git", "url": "https://github.com/department-of-veterans-affairs/content-build.git", - "reference": "b2c66f1be86b262b28b6c086c217e6a308b3bfd7" + "reference": "3ffbbed51f3d002915d71383967db07efa1f5335" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/department-of-veterans-affairs/content-build/zipball/b2c66f1be86b262b28b6c086c217e6a308b3bfd7", - "reference": "b2c66f1be86b262b28b6c086c217e6a308b3bfd7", + "url": "https://api.github.com/repos/department-of-veterans-affairs/content-build/zipball/3ffbbed51f3d002915d71383967db07efa1f5335", + "reference": "3ffbbed51f3d002915d71383967db07efa1f5335", "shasum": "" }, "type": "node-project", @@ -26936,9 +26936,9 @@ "description": "Front-end for VA.gov. This repository contains the code that generates the www.va.gov website. It contains a Metalsmith static site builder that uses a Drupal CMS for content. This file is here to publish releases to https://packagist.org/packages/va-gov/content-build, so that the CMS CI system can install it and update it using standard composer processes, and so that we can run tests across both systems. See https://github.com/department-of-veterans-affairs/va.gov-cms for the CMS repo, and stand by for more documentation.", "support": { "issues": "https://github.com/department-of-veterans-affairs/content-build/issues", - "source": "https://github.com/department-of-veterans-affairs/content-build/tree/v0.0.3372" + "source": "https://github.com/department-of-veterans-affairs/content-build/tree/v0.0.3374" }, - "time": "2023-10-23T14:31:55+00:00" + "time": "2023-10-25T18:07:01+00:00" }, { "name": "vlucas/phpdotenv", @@ -27794,5 +27794,5 @@ "platform-overrides": { "php": "8.1" }, - "plugin-api-version": "2.6.0" + "plugin-api-version": "2.3.0" } From 5f6052a6d7b7800ab1c2168f548cd0e04de5c6d6 Mon Sep 17 00:00:00 2001 From: Steve Wirt Date: Thu, 26 Oct 2023 14:02:50 -0400 Subject: [PATCH 12/25] [docs] Update broken link to notifications queues. --- docroot/modules/custom/va_gov_notifications/README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docroot/modules/custom/va_gov_notifications/README.md b/docroot/modules/custom/va_gov_notifications/README.md index d569cb129e..7bcb331f46 100644 --- a/docroot/modules/custom/va_gov_notifications/README.md +++ b/docroot/modules/custom/va_gov_notifications/README.md @@ -5,6 +5,7 @@ This module orchestrates the [messages stack](https://www.drupal.org/node/218014 - [6102 Details and design intent](https://github.com/department-of-veterans-affairs/va.gov-team/blob/master/platform/cms/product-outlines/VA-Directive-6102-Notifications.md) - [How to send and see email?](#how-to-send-and-see-email) - [How to add a new monthly outdated content email?](#how-to-add-a-new-monthly-outdated-content-email) +- [The queues](https://prod.cms.va.gov/admin/config/system/queues) - [Cautions and Notes](#cautions-and-notes) @@ -33,13 +34,13 @@ An email is sent once per month triggered by a Jenkins job (cron-like) running [ This can be tested locally and on tugboat by running `drush php-eval "print_r(\Drupal::service('va_gov_notifications.outdated_content')->queueOutdatedContentNotifications('vet_center', 'vet_center_outdated_content', ['',' Date: Thu, 26 Oct 2023 11:11:08 -0700 Subject: [PATCH 13/25] [docs] Update and rename pw-epic.md to web-governance-board-epic.md --- .../{pw-epic.md => web-governance-board-epic.md} | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) rename .github/ISSUE_TEMPLATE/{pw-epic.md => web-governance-board-epic.md} (92%) diff --git a/.github/ISSUE_TEMPLATE/pw-epic.md b/.github/ISSUE_TEMPLATE/web-governance-board-epic.md similarity index 92% rename from .github/ISSUE_TEMPLATE/pw-epic.md rename to .github/ISSUE_TEMPLATE/web-governance-board-epic.md index 11a252d2c2..d23707badb 100644 --- a/.github/ISSUE_TEMPLATE/pw-epic.md +++ b/.github/ISSUE_TEMPLATE/web-governance-board-epic.md @@ -1,8 +1,8 @@ --- -name: Public Websites Epic -about: A epic for the Public Websites team. +name: Sitewide Epic - Web Governance Board +about: Epic template for Sitewide projects that need to be publicized in the Web Governance Board project view, for Public Websites and Facilities teams. title: "" -labels: Epic, Public Websites +labels: Epic assignees: '' --- @@ -18,7 +18,7 @@ assignees: '' ## Headlines **VA stakeholders** - -**OCTO lead** - Dave Conlon +**OCTO lead** - **Is this project tracked to an upcoming event or congressional deadline?** - @@ -30,7 +30,7 @@ assignees: '' **What is the user impact and scale of impact?** - -**Who would manage this product long term?** - Public Websites +**Who would manage this product long term?** - **How much leverage will this create to solve more problems in the future?** - From 10ef76661194ff6d04c43ce0ff9eaab7d0d64559 Mon Sep 17 00:00:00 2001 From: Steve Wirt Date: Thu, 26 Oct 2023 14:19:46 -0400 Subject: [PATCH 14/25] [docs] Change Mailhog to Mailpit for notifications. (#15871) --- docroot/modules/custom/va_gov_notifications/README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docroot/modules/custom/va_gov_notifications/README.md b/docroot/modules/custom/va_gov_notifications/README.md index 7bcb331f46..239a9f8fc7 100644 --- a/docroot/modules/custom/va_gov_notifications/README.md +++ b/docroot/modules/custom/va_gov_notifications/README.md @@ -37,7 +37,7 @@ Calling it without the optional array of user ids will send it to all editors th It is recommended when testing that you use at least 2 users, one who is assigned to a VAMC section, and one that is not. Only one email should be queued. You can validate what is in [the queue here](https://prod.cms.va.gov/admin/config/system/queues/jobs/vet_center_outdated_content) ## How to send and see email? -Once email notifications have been queued, The queue can be processed. To process the items in the queue, run `drush cron` Then use MailHog locally or the "captured mail" section in Tugboat to see the mail that was sent. +Once email notifications have been queued, The queue can be processed. To process the items in the queue, run `drush cron` Then use MailPit locally or the "captured mail" section in Tugboat to see the mail that was sent. ## How to add a new monthly outdated content email? 1. [Create the messages template](https://prod.cms.va.gov/admin/structure/message). @@ -58,7 +58,7 @@ Once email notifications have been queued, The queue can be processed. To proces ## Cautions and Notes - On prod, mail can only be sent to va.gov email addresses. -- Locally mail gets sent to Mailhog (type `ddev status` to get the address), On tugboat mail gets captured and can be seen from the tugboat instance dashboard. Staging does not send mail. +- Locally mail gets sent to MailPit (type `ddev status` to get the address), On tugboat mail gets captured and can be seen from the tugboat instance dashboard. Staging does not send mail. - Message variable tokens can not be used in a link url because CKE editor will mangle tokens in href. - H1 can not be used in the message content because the "Rich Text" filter does not allow it, so it has to go on the twig template. -- To test html on va.gov email (Outlook) while running locally, you can copy the html displayed in Mailhog, paste it into gmail, then send it to your VA.gov email. Formatting is preserved. +- To test html on va.gov email (Outlook) while running locally, you can copy the html displayed in MailPit, paste it into gmail, then send it to your VA.gov email. Formatting is preserved. From aa92c26285f6ad1b7048beb3ab32da72908014f9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 26 Oct 2023 20:16:58 -0500 Subject: [PATCH 15/25] Bump va-gov/content-build from 0.0.3374 to 0.0.3375 (#15876) Bumps [va-gov/content-build](https://github.com/department-of-veterans-affairs/content-build) from 0.0.3374 to 0.0.3375. - [Release notes](https://github.com/department-of-veterans-affairs/content-build/releases) - [Commits](https://github.com/department-of-veterans-affairs/content-build/compare/v0.0.3374...v0.0.3375) --- updated-dependencies: - dependency-name: va-gov/content-build dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- composer.json | 2 +- composer.lock | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/composer.json b/composer.json index b8b9d1bac1..cbd5fb82e8 100644 --- a/composer.json +++ b/composer.json @@ -207,7 +207,7 @@ "symfony/phpunit-bridge": "^5.1", "symfony/process": "^4.0", "symfony/routing": "^4.0", - "va-gov/content-build": "^0.0.3374", + "va-gov/content-build": "^0.0.3375", "vlucas/phpdotenv": "^5.3", "webflo/drupal-finder": "^1.0.0", "webmozart/path-util": "^2.3", diff --git a/composer.lock b/composer.lock index 9c7cff52a6..26a1eaa801 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": "a719753bc58db6f1e66bb30d1a538748", + "content-hash": "f794d0c300d80af7440d0421acf1c971", "packages": [ { "name": "alchemy/zippy", @@ -26900,16 +26900,16 @@ }, { "name": "va-gov/content-build", - "version": "v0.0.3374", + "version": "v0.0.3375", "source": { "type": "git", "url": "https://github.com/department-of-veterans-affairs/content-build.git", - "reference": "3ffbbed51f3d002915d71383967db07efa1f5335" + "reference": "ce3ea598be9758900d6b20625e1575c89cf8200e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/department-of-veterans-affairs/content-build/zipball/3ffbbed51f3d002915d71383967db07efa1f5335", - "reference": "3ffbbed51f3d002915d71383967db07efa1f5335", + "url": "https://api.github.com/repos/department-of-veterans-affairs/content-build/zipball/ce3ea598be9758900d6b20625e1575c89cf8200e", + "reference": "ce3ea598be9758900d6b20625e1575c89cf8200e", "shasum": "" }, "type": "node-project", @@ -26936,9 +26936,9 @@ "description": "Front-end for VA.gov. This repository contains the code that generates the www.va.gov website. It contains a Metalsmith static site builder that uses a Drupal CMS for content. This file is here to publish releases to https://packagist.org/packages/va-gov/content-build, so that the CMS CI system can install it and update it using standard composer processes, and so that we can run tests across both systems. See https://github.com/department-of-veterans-affairs/va.gov-cms for the CMS repo, and stand by for more documentation.", "support": { "issues": "https://github.com/department-of-veterans-affairs/content-build/issues", - "source": "https://github.com/department-of-veterans-affairs/content-build/tree/v0.0.3374" + "source": "https://github.com/department-of-veterans-affairs/content-build/tree/v0.0.3375" }, - "time": "2023-10-25T18:07:01+00:00" + "time": "2023-10-26T17:00:58+00:00" }, { "name": "vlucas/phpdotenv", From a9525885cd20a6afcc7ac12753f362e68bff010a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 27 Oct 2023 08:35:43 -0500 Subject: [PATCH 16/25] Bump drupal/content_model_documentation from 1.0.20 to 1.0.21 (#15881) Bumps drupal/content_model_documentation from 1.0.20 to 1.0.21. --- updated-dependencies: - dependency-name: drupal/content_model_documentation dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- composer.lock | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/composer.lock b/composer.lock index 26a1eaa801..90f408816f 100644 --- a/composer.lock +++ b/composer.lock @@ -3701,32 +3701,40 @@ }, { "name": "drupal/content_model_documentation", - "version": "1.0.20", + "version": "1.0.21", "source": { "type": "git", "url": "https://git.drupalcode.org/project/content_model_documentation.git", - "reference": "1.0.20" + "reference": "1.0.21" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/content_model_documentation-1.0.20.zip", - "reference": "1.0.20", - "shasum": "99212baab48cfdd16e86143a87ab5caebe099da9" + "url": "https://ftp.drupal.org/files/projects/content_model_documentation-1.0.21.zip", + "reference": "1.0.21", + "shasum": "396e36c2a3d143b364341635848bed34ad656746" }, "require": { "drupal/config_views": "~2.1", "drupal/core": "^9.3 || ^10", "drupal/mermaid_diagram_field": "~1.0" }, + "require-dev": { + "drush/drush": "^9 || ^10" + }, "type": "drupal-module", "extra": { "drupal": { - "version": "1.0.20", - "datestamp": "1697598127", + "version": "1.0.21", + "datestamp": "1698390837", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" } + }, + "drush": { + "services": { + "drush.services.yml": "^9 || ^10" + } } }, "notification-url": "https://packages.drupal.org/8/downloads", @@ -15229,16 +15237,16 @@ }, { "name": "laminas/laminas-servicemanager", - "version": "3.22.0", + "version": "3.22.1", "source": { "type": "git", "url": "https://github.com/laminas/laminas-servicemanager.git", - "reference": "b4f547078af2ac3173cbe4a64e8fdfbd626c77ae" + "reference": "de98d297d4743956a0558a6d71616979ff779328" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-servicemanager/zipball/b4f547078af2ac3173cbe4a64e8fdfbd626c77ae", - "reference": "b4f547078af2ac3173cbe4a64e8fdfbd626c77ae", + "url": "https://api.github.com/repos/laminas/laminas-servicemanager/zipball/de98d297d4743956a0558a6d71616979ff779328", + "reference": "de98d297d4743956a0558a6d71616979ff779328", "shasum": "" }, "require": { @@ -15315,7 +15323,7 @@ "type": "community_bridge" } ], - "time": "2023-10-10T21:23:36+00:00" + "time": "2023-10-24T11:19:47+00:00" }, { "name": "laminas/laminas-stdlib", From 528aaef6e66afde0afe44d1a45683819a92bd303 Mon Sep 17 00:00:00 2001 From: Steve Wirt Date: Fri, 27 Oct 2023 12:06:23 -0400 Subject: [PATCH 17/25] VACMS-15702 Fix view mode notifications (#15863) * VACMS-15702 Fix office hours on Vet Center view modes. * VACMS-15702 Fix office hours on VAMC facility view modes. * VACMS-15702 Fix office hours on NCA facility view modes. * VACMS-15702 Fix office hours on Billing and Insurance view modes. * VACMS-15702 Fix office hours on VBA Facility view modes. * VACMS-15702 Fix office hours on VC CAP Facility view modes. * VACMS-15702 Fix office hours on VC Mobile Facility view modes. * VACMS-15702 Fix office hours on VC Outstation Facility view modes. * VACMS-15702 Fix office hours on Service location view modes. * Remove unintended changes to label visibility. --- ...ew_display.node.health_care_local_facility.default.yml | 3 ++- ...y.node.health_care_local_facility.external_content.yml | 6 ++++++ ...core.entity_view_display.node.nca_facility.default.yml | 2 ++ ...ty_view_display.node.nca_facility.external_content.yml | 4 +++- ...display.node.vamc_system_billing_insurance.default.yml | 2 ++ ...ay.node.vamc_system_billing_insurance.search_index.yml | 5 ++++- ..._display.node.vamc_system_billing_insurance.teaser.yml | 1 + ...core.entity_view_display.node.vba_facility.default.yml | 1 + ...ty_view_display.node.vba_facility.external_content.yml | 1 + ...re.entity_view_display.node.vba_facility.ief_table.yml | 2 ++ .../core.entity_view_display.node.vet_center.default.yml | 8 ++++++++ ...tity_view_display.node.vet_center.external_content.yml | 6 ++++++ ...core.entity_view_display.node.vet_center.ief_table.yml | 1 + ...re.entity_view_display.node.vet_center_cap.default.yml | 8 ++++++++ ..._display.node.vet_center_mobile_vet_center.default.yml | 8 ++++++++ ...node.vet_center_mobile_vet_center.external_content.yml | 6 ++++++ ...isplay.node.vet_center_outstation.external_content.yml | 6 ++++++ ...ty_view_display.paragraph.service_location.default.yml | 6 ++++++ 18 files changed, 73 insertions(+), 3 deletions(-) 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 9b9a0192bf..a1ddf0e569 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 @@ -36,7 +36,6 @@ dependencies: - office_hours - options - telephone - - text - user third_party_settings: field_group: @@ -229,6 +228,7 @@ content: grouped: false show_closed: all closed_format: Closed + all_day_format: 'All day open' separator: days: '
' grouped_days: ' - ' @@ -243,6 +243,7 @@ content: title: 'Exception hours' restrict_exceptions_to_num_days: 7 date_format: long + all_day_format: 'All day open' timezone_field: '' office_hours_first_day: '' schema: 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 1fb0bbe2a0..166c5fe7a6 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 @@ -219,6 +219,7 @@ content: grouped: false show_closed: all closed_format: Closed + all_day_format: 'All day open' separator: days: '
' grouped_days: ' - ' @@ -229,6 +230,11 @@ content: position: '' open_text: 'Currently open!' closed_text: 'Currently closed' + exceptions: + title: 'Exception hours' + restrict_exceptions_to_num_days: 7 + date_format: long + all_day_format: 'All day open' timezone_field: '' office_hours_first_day: '' schema: diff --git a/config/sync/core.entity_view_display.node.nca_facility.default.yml b/config/sync/core.entity_view_display.node.nca_facility.default.yml index a158e67ded..ace5a39aa5 100644 --- a/config/sync/core.entity_view_display.node.nca_facility.default.yml +++ b/config/sync/core.entity_view_display.node.nca_facility.default.yml @@ -149,6 +149,7 @@ content: grouped: false show_closed: all closed_format: Closed + all_day_format: 'All day open' separator: days: '
' grouped_days: ' - ' @@ -163,6 +164,7 @@ content: title: 'Exception hours' restrict_exceptions_to_num_days: 7 date_format: long + all_day_format: 'All day open' timezone_field: '' office_hours_first_day: '' schema: diff --git a/config/sync/core.entity_view_display.node.nca_facility.external_content.yml b/config/sync/core.entity_view_display.node.nca_facility.external_content.yml index 6f7affbd57..47764716f3 100644 --- a/config/sync/core.entity_view_display.node.nca_facility.external_content.yml +++ b/config/sync/core.entity_view_display.node.nca_facility.external_content.yml @@ -125,6 +125,7 @@ content: grouped: false show_closed: all closed_format: Closed + all_day_format: 'All day open' separator: days: '
' grouped_days: ' - ' @@ -136,9 +137,10 @@ content: open_text: 'Currently open!' closed_text: 'Currently closed' exceptions: + title: 'Exception hours' restrict_exceptions_to_num_days: 7 date_format: long - title: 'Exception hours' + all_day_format: 'All day open' timezone_field: '' office_hours_first_day: '' schema: 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 98ecb20d51..1ceff4f046 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 @@ -160,6 +160,7 @@ content: grouped: false show_closed: all closed_format: Closed + all_day_format: 'All day open' separator: days: '
' grouped_days: ' - ' @@ -174,6 +175,7 @@ content: title: 'Exception hours' restrict_exceptions_to_num_days: 7 date_format: long + all_day_format: 'All day open' timezone_field: '' office_hours_first_day: '' schema: 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 77f42b40fb..83988b17b1 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 @@ -133,6 +133,7 @@ content: grouped: false show_closed: all closed_format: Closed + all_day_format: 'All day open' separator: days: '
' grouped_days: ' - ' @@ -144,9 +145,10 @@ content: open_text: 'Currently open!' closed_text: 'Currently closed' exceptions: + title: 'Exception hours' restrict_exceptions_to_num_days: 7 date_format: long - title: 'Exception hours' + all_day_format: 'All day open' timezone_field: '' office_hours_first_day: '' schema: @@ -178,6 +180,7 @@ content: weight: 0 region: content hidden: + breadcrumbs: true content_moderation_control: true field_administration: true field_cc_above_top_of_page: 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 75b44a64d7..8572b8e2a7 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 @@ -46,6 +46,7 @@ content: weight: 100 region: content hidden: + breadcrumbs: true field_administration: true field_cc_above_top_of_page: true field_cc_bottom_of_page_content: true diff --git a/config/sync/core.entity_view_display.node.vba_facility.default.yml b/config/sync/core.entity_view_display.node.vba_facility.default.yml index d4b5f95ba8..f32bd0ad05 100644 --- a/config/sync/core.entity_view_display.node.vba_facility.default.yml +++ b/config/sync/core.entity_view_display.node.vba_facility.default.yml @@ -401,6 +401,7 @@ content: title: 'Exception hours' restrict_exceptions_to_num_days: 7 date_format: long + all_day_format: 'All day open' timezone_field: '' office_hours_first_day: '' schema: diff --git a/config/sync/core.entity_view_display.node.vba_facility.external_content.yml b/config/sync/core.entity_view_display.node.vba_facility.external_content.yml index 5debfb940d..e4b362aee6 100644 --- a/config/sync/core.entity_view_display.node.vba_facility.external_content.yml +++ b/config/sync/core.entity_view_display.node.vba_facility.external_content.yml @@ -208,6 +208,7 @@ content: title: 'Exception hours' restrict_exceptions_to_num_days: 7 date_format: long + all_day_format: 'All day open' timezone_field: '' office_hours_first_day: '' schema: diff --git a/config/sync/core.entity_view_display.node.vba_facility.ief_table.yml b/config/sync/core.entity_view_display.node.vba_facility.ief_table.yml index b2abfefd86..097da27929 100644 --- a/config/sync/core.entity_view_display.node.vba_facility.ief_table.yml +++ b/config/sync/core.entity_view_display.node.vba_facility.ief_table.yml @@ -127,6 +127,7 @@ content: grouped: false show_closed: all closed_format: Closed + all_day_format: 'All day open' separator: days: '
' grouped_days: ' - ' @@ -141,6 +142,7 @@ content: title: 'Exception hours' restrict_exceptions_to_num_days: 7 date_format: long + all_day_format: 'All day open' timezone_field: '' office_hours_first_day: '' schema: diff --git a/config/sync/core.entity_view_display.node.vet_center.default.yml b/config/sync/core.entity_view_display.node.vet_center.default.yml index faffb46270..49d2d67234 100644 --- a/config/sync/core.entity_view_display.node.vet_center.default.yml +++ b/config/sync/core.entity_view_display.node.vet_center.default.yml @@ -264,6 +264,8 @@ content: settings: image_link: '' image_style: large + image_loading: + attribute: lazy third_party_settings: { } weight: 11 region: content @@ -277,6 +279,7 @@ content: grouped: false show_closed: all closed_format: '' + all_day_format: 'All day open' separator: days: '
' grouped_days: ' - ' @@ -287,6 +290,11 @@ content: position: '' open_text: 'Currently open!' closed_text: 'Currently closed' + exceptions: + title: 'Exception hours' + restrict_exceptions_to_num_days: 7 + date_format: long + all_day_format: 'All day open' timezone_field: '' office_hours_first_day: '' schema: diff --git a/config/sync/core.entity_view_display.node.vet_center.external_content.yml b/config/sync/core.entity_view_display.node.vet_center.external_content.yml index 76f87f53c7..8083781a23 100644 --- a/config/sync/core.entity_view_display.node.vet_center.external_content.yml +++ b/config/sync/core.entity_view_display.node.vet_center.external_content.yml @@ -84,6 +84,7 @@ content: grouped: false show_closed: all closed_format: '' + all_day_format: 'All day open' separator: days: '
' grouped_days: ' - ' @@ -94,6 +95,11 @@ content: position: '' open_text: 'Currently open!' closed_text: 'Currently closed' + exceptions: + title: 'Exception hours' + restrict_exceptions_to_num_days: 7 + date_format: long + all_day_format: 'All day open' timezone_field: '' office_hours_first_day: '' schema: diff --git a/config/sync/core.entity_view_display.node.vet_center.ief_table.yml b/config/sync/core.entity_view_display.node.vet_center.ief_table.yml index 481abbe4e2..7aa4ee8e03 100644 --- a/config/sync/core.entity_view_display.node.vet_center.ief_table.yml +++ b/config/sync/core.entity_view_display.node.vet_center.ief_table.yml @@ -58,6 +58,7 @@ content: weight: 0 region: content hidden: + breadcrumbs: true content_moderation_control: true field_address: true field_administration: true diff --git a/config/sync/core.entity_view_display.node.vet_center_cap.default.yml b/config/sync/core.entity_view_display.node.vet_center_cap.default.yml index 044c0d8270..8376ec0913 100644 --- a/config/sync/core.entity_view_display.node.vet_center_cap.default.yml +++ b/config/sync/core.entity_view_display.node.vet_center_cap.default.yml @@ -98,6 +98,8 @@ content: settings: image_link: '' image_style: crop_3_2 + image_loading: + attribute: lazy third_party_settings: { } weight: 3 region: content @@ -119,6 +121,7 @@ content: grouped: false show_closed: all closed_format: '' + all_day_format: 'All day open' separator: days: '
' grouped_days: ' - ' @@ -129,6 +132,11 @@ content: position: '' open_text: 'Currently open!' closed_text: 'Currently closed' + exceptions: + title: 'Exception hours' + restrict_exceptions_to_num_days: 7 + date_format: long + all_day_format: 'All day open' timezone_field: '' office_hours_first_day: '' schema: diff --git a/config/sync/core.entity_view_display.node.vet_center_mobile_vet_center.default.yml b/config/sync/core.entity_view_display.node.vet_center_mobile_vet_center.default.yml index ec0fa598a8..f50f570644 100644 --- a/config/sync/core.entity_view_display.node.vet_center_mobile_vet_center.default.yml +++ b/config/sync/core.entity_view_display.node.vet_center_mobile_vet_center.default.yml @@ -87,6 +87,8 @@ content: settings: image_link: '' image_style: 3_2_medium_thumbnail + image_loading: + attribute: lazy third_party_settings: { } weight: 2 region: content @@ -108,6 +110,7 @@ content: grouped: false show_closed: all closed_format: '' + all_day_format: 'All day open' separator: days: '
' grouped_days: ' - ' @@ -118,6 +121,11 @@ content: position: '' open_text: 'Currently open!' closed_text: 'Currently closed' + exceptions: + title: 'Exception hours' + restrict_exceptions_to_num_days: 7 + date_format: long + all_day_format: 'All day open' timezone_field: '' office_hours_first_day: '' schema: diff --git a/config/sync/core.entity_view_display.node.vet_center_mobile_vet_center.external_content.yml b/config/sync/core.entity_view_display.node.vet_center_mobile_vet_center.external_content.yml index 496aa62aec..04c0ff14b3 100644 --- a/config/sync/core.entity_view_display.node.vet_center_mobile_vet_center.external_content.yml +++ b/config/sync/core.entity_view_display.node.vet_center_mobile_vet_center.external_content.yml @@ -76,6 +76,7 @@ content: grouped: false show_closed: all closed_format: '' + all_day_format: 'All day open' separator: days: '
' grouped_days: ' - ' @@ -86,6 +87,11 @@ content: position: '' open_text: 'Currently open!' closed_text: 'Currently closed' + exceptions: + title: 'Exception hours' + restrict_exceptions_to_num_days: 7 + date_format: long + all_day_format: 'All day open' timezone_field: '' office_hours_first_day: '' schema: diff --git a/config/sync/core.entity_view_display.node.vet_center_outstation.external_content.yml b/config/sync/core.entity_view_display.node.vet_center_outstation.external_content.yml index 81ad93b076..d018d064dc 100644 --- a/config/sync/core.entity_view_display.node.vet_center_outstation.external_content.yml +++ b/config/sync/core.entity_view_display.node.vet_center_outstation.external_content.yml @@ -78,6 +78,7 @@ content: grouped: false show_closed: all closed_format: '' + all_day_format: 'All day open' separator: days: '
' grouped_days: ' - ' @@ -88,6 +89,11 @@ content: position: '' open_text: 'Currently open!' closed_text: 'Currently closed' + exceptions: + title: 'Exception hours' + restrict_exceptions_to_num_days: 7 + date_format: long + all_day_format: 'All day open' timezone_field: '' office_hours_first_day: '' schema: diff --git a/config/sync/core.entity_view_display.paragraph.service_location.default.yml b/config/sync/core.entity_view_display.paragraph.service_location.default.yml index c620c35362..ef08383f4e 100644 --- a/config/sync/core.entity_view_display.paragraph.service_location.default.yml +++ b/config/sync/core.entity_view_display.paragraph.service_location.default.yml @@ -114,6 +114,7 @@ content: grouped: false show_closed: all closed_format: Closed + all_day_format: 'All day open' separator: days: '
' grouped_days: ' - ' @@ -124,6 +125,11 @@ content: position: '' open_text: 'Currently open!' closed_text: 'Currently closed' + exceptions: + title: 'Exception hours' + restrict_exceptions_to_num_days: 7 + date_format: long + all_day_format: 'All day open' timezone_field: '' office_hours_first_day: '' schema: From b211d6c6ee2f37158b313bb2843618b49aa4fd9b Mon Sep 17 00:00:00 2001 From: Christia Troyer Date: Fri, 27 Oct 2023 10:07:48 -0700 Subject: [PATCH 18/25] VACMS-15142: Page-specific Q&A Report (#15833) * VACMS-15142: Page-specific Q&A template content report * VACMS-15142: Update report title and menu tab link * VACMS-15142: Q&A Report bug fix and improvement * VACMS-15142: Single questions instead of group * VACMS-15142: Remove link lists from showing up and empty * VACMS-15142: Remove view with groups of questions --- config/sync/views.view.content.yml | 944 +++++++++++++++++++++++++++++ 1 file changed, 944 insertions(+) diff --git a/config/sync/views.view.content.yml b/config/sync/views.view.content.yml index 02ab068810..1d5e1d5d52 100644 --- a/config/sync/views.view.content.yml +++ b/config/sync/views.view.content.yml @@ -4,10 +4,13 @@ status: true dependencies: config: - field.storage.node.field_administration + - field.storage.node.field_clp_faq_paragraphs - field.storage.node.field_facility_location - field.storage.node.field_last_saved_by_an_editor - field.storage.node.field_other_categories - field.storage.node.field_primary_category + - field.storage.paragraph.field_question + - field.storage.paragraph.field_questions - field.storage.paragraph.field_topics - node.type.basic_landing_page - node.type.checklist @@ -29,10 +32,12 @@ dependencies: - user.role.content_admin - user.role.content_creator_resources_and_support - user.role.redirect_administrator + - workflows.workflow.editorial module: - content_lock - content_moderation - csv_serialization + - entity_reference_revisions - node - paragraphs - rest @@ -6634,6 +6639,945 @@ display: tags: - 'config:field.storage.node.field_administration' deleted: false + page_qa: + id: page_qa + display_title: 'Q&A' + display_plugin: page + position: 9 + display_options: + title: 'Page-specific Q&A Content' + fields: + views_bulk_operations_bulk_form_1: + id: views_bulk_operations_bulk_form_1 + table: views + field: views_bulk_operations_bulk_form + relationship: none + group_type: group + admin_label: '' + plugin_id: views_bulk_operations_bulk_form + label: Action + 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 + batch: true + batch_size: 25 + form_step: true + buttons: false + action_title: Action + clear_on_exposed: true + force_selection_info: false + selected_actions: + - + action_id: node_save_action + preconfiguration: + add_confirmation: false + - + action_id: node_assign_owner_action + preconfiguration: + add_confirmation: false + - + action_id: publish_latest_revision_action + - + action_id: archive_node_action + - + action_id: views_bulk_edit + preconfiguration: + add_confirmation: false + get_bundles_from_results: true + - + action_id: views_bulk_operations_delete_entity + - + action_id: 'entity:pathauto_update_alias:node' + preconfiguration: + add_confirmation: false + title: + id: title + table: node_field_data + field: title + entity_type: node + entity_field: title + plugin_id: field + label: Title + exclude: false + alter: + alter_text: false + element_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + type: string + settings: + link_to_entity: true + operations: + id: operations + table: node + field: operations + relationship: none + group_type: group + admin_label: '' + plugin_id: entity_operations + label: Operations + 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 + destination: 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 + entity_type: node + entity_field: changed + plugin_id: field + label: Updated + exclude: false + alter: + alter_text: false + element_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + type: timestamp + settings: + date_format: short + custom_date_format: '' + timezone: '' + moderation_state: + id: moderation_state + table: content_moderation_state_field_data + field: moderation_state + relationship: none + group_type: group + admin_label: 'Moderation state' + entity_type: content_moderation_state + entity_field: moderation_state + plugin_id: 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: N/A + hide_empty: false + empty_zero: false + hide_alter_empty: true + click_sort_column: value + type: string + settings: + link_to_entity: false + 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: 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 + revision_uid: + id: revision_uid + table: node_revision + field: revision_uid + relationship: none + group_type: group + admin_label: '' + entity_type: node + entity_field: revision_uid + plugin_id: field + label: '' + 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: 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: 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_question_1: + id: field_question_1 + table: paragraph__field_question + field: field_question + relationship: field_clp_faq_paragraphs + group_type: group + admin_label: '' + plugin_id: field + label: 'clp faq question' + exclude: true + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: true + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + click_sort_column: value + type: 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_question: + id: field_question + table: paragraph__field_question + field: field_question + relationship: field_questions + group_type: group + admin_label: '' + plugin_id: field + label: 'content block question' + exclude: true + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: true + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + click_sort_column: value + type: 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 + nothing: + id: nothing + table: views + field: nothing + relationship: none + group_type: group + admin_label: '' + plugin_id: custom + label: Question + exclude: false + alter: + alter_text: true + text: "{{ field_question_1}} \r\n{{ field_question }}" + 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: 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 + 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' + administrator: '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: { } + 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: { } + 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' + vamc_content_creator: '0' + content_editor: '0' + content_reviewer: '0' + content_publisher: '0' + content_admin: '0' + redirect_administrator: '0' + admnistrator_users: '0' + administrator: '0' + reduce: false + is_grouped: false + group_info: + label: '' + description: '' + identifier: '' + optional: true + widget: select + multiple: false + remember: false + default_group: All + default_group_multiple: { } + group_items: { } + 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_filter + operator: in + value: + all: all + editorial-draft: editorial-draft + editorial-review: editorial-review + editorial-published: editorial-published + editorial-archived: editorial-archived + group: 1 + exposed: true + expose: + operator_id: moderation_state_op + label: 'Moderation state' + description: '' + use_operator: false + operator: moderation_state_op + operator_limit_selection: false + operator_list: { } + identifier: moderation_state + required: false + remember: false + multiple: false + remember_roles: + authenticated: authenticated + anonymous: '0' + administrator: '0' + page_creator: '0' + layout_manager: '0' + page_reviewer: '0' + landing_page_creator: '0' + landing_page_reviewer: '0' + media_creator: '0' + media_manager: '0' + reduce: false + is_grouped: false + group_info: + label: '' + description: '' + identifier: '' + optional: true + widget: select + multiple: false + remember: false + default_group: All + default_group_multiple: { } + group_items: { } + field_clp_faq_paragraphs_target_revision_id: + id: field_clp_faq_paragraphs_target_revision_id + table: node__field_clp_faq_paragraphs + field: field_clp_faq_paragraphs_target_revision_id + relationship: none + group_type: group + admin_label: '' + plugin_id: numeric + operator: 'not empty' + value: + min: '' + max: '' + value: '' + group: 2 + exposed: false + expose: + operator_id: '' + label: '' + description: '' + use_operator: false + operator: '' + operator_limit_selection: false + operator_list: { } + identifier: '' + required: false + remember: false + multiple: false + remember_roles: + authenticated: authenticated + min_placeholder: '' + max_placeholder: '' + 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_question_value: + id: field_question_value + table: paragraph__field_question + field: field_question_value + relationship: field_questions + group_type: group + admin_label: '' + plugin_id: string + operator: 'not empty' + value: '' + group: 2 + exposed: false + expose: + operator_id: '' + label: '' + description: '' + use_operator: false + operator: '' + operator_limit_selection: false + operator_list: { } + identifier: '' + required: false + remember: false + multiple: false + remember_roles: + authenticated: authenticated + 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: { } + filter_groups: + operator: AND + groups: + 1: AND + 2: OR + query: + type: views_query + options: + query_comment: '' + disable_sql_rewrite: false + distinct: true + replica: false + query_tags: { } + defaults: + query: false + title: false + relationships: false + fields: false + filters: false + filter_groups: false + relationships: + uid: + id: uid + table: node_field_data + field: uid + admin_label: author + plugin_id: standard + required: true + uid_1: + id: uid_1 + table: content_lock + field: uid + relationship: none + group_type: group + admin_label: 'Lock owner' + plugin_id: standard + required: false + field_content_block: + id: field_content_block + table: node__field_content_block + field: field_content_block + relationship: none + group_type: group + admin_label: 'field_content_block: Paragraph' + plugin_id: standard + required: false + field_questions: + id: field_questions + table: paragraph__field_questions + field: field_questions + relationship: field_content_block + group_type: group + admin_label: 'field_questions: Paragraph' + plugin_id: standard + required: false + field_clp_faq_paragraphs: + id: field_clp_faq_paragraphs + table: node__field_clp_faq_paragraphs + field: field_clp_faq_paragraphs + relationship: none + group_type: group + admin_label: 'field_clp_faq_paragraphs: Paragraph' + plugin_id: standard + required: false + display_description: '' + display_extenders: + jsonapi_views: + enabled: true + path: admin/content/qa + menu: + type: tab + title: 'Page-specific Q&A' + description: '' + weight: 0 + expanded: false + menu_name: admin + parent: system.admin_content + context: '0' + as_local_task: false + local_task_link_title: '' + local_task_parent: 'views_view:view.centralized_content_paragraphs.centralized_content_paragraphs' + local_task_weight: 0 + local_task_custom_parent_route: '' + cache_metadata: + max-age: 0 + contexts: + - 'languages:language_content' + - 'languages:language_interface' + - url + - url.query_args + - 'user.node_grants:view' + - user.roles + tags: + - 'config:field.storage.node.field_administration' + - 'config:field.storage.paragraph.field_question' + - 'config:workflow_list' resources_support_dashboard: id: resources_support_dashboard display_title: 'Resources and support' From f14934cf0c50497a75e6c7ce9b7d7c66da11b7da Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 27 Oct 2023 14:19:26 -0400 Subject: [PATCH 19/25] Bump browserify-sign from 4.2.1 to 4.2.2 in /docroot/design-system (#15880) Bumps [browserify-sign](https://github.com/crypto-browserify/browserify-sign) from 4.2.1 to 4.2.2. - [Changelog](https://github.com/browserify/browserify-sign/blob/main/CHANGELOG.md) - [Commits](https://github.com/crypto-browserify/browserify-sign/compare/v4.2.1...v4.2.2) --- updated-dependencies: - dependency-name: browserify-sign dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- docroot/design-system/package-lock.json | 40 +++++++++++++------------ 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/docroot/design-system/package-lock.json b/docroot/design-system/package-lock.json index 66eed54b35..4f6acfa183 100644 --- a/docroot/design-system/package-lock.json +++ b/docroot/design-system/package-lock.json @@ -7063,21 +7063,23 @@ } }, "node_modules/browserify-sign": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.2.tgz", + "integrity": "sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg==", "dev": true, - "license": "ISC", "dependencies": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", + "bn.js": "^5.2.1", + "browserify-rsa": "^4.1.0", "create-hash": "^1.2.0", "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", + "elliptic": "^6.5.4", "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" + "parse-asn1": "^5.1.6", + "readable-stream": "^3.6.2", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 4" } }, "node_modules/browserify-zlib": { @@ -22070,20 +22072,20 @@ } }, "browserify-sign": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.2.tgz", + "integrity": "sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg==", "dev": true, "requires": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", + "bn.js": "^5.2.1", + "browserify-rsa": "^4.1.0", "create-hash": "^1.2.0", "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", + "elliptic": "^6.5.4", "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" + "parse-asn1": "^5.1.6", + "readable-stream": "^3.6.2", + "safe-buffer": "^5.2.1" } }, "browserify-zlib": { From 71b4f7cded706f7e2816cd498b1d88adc0761f3d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 27 Oct 2023 14:22:37 -0400 Subject: [PATCH 20/25] Bump @babel/traverse in /docroot/themes/custom/vagovclaro (#15732) Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.21.5 to 7.23.2. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.23.2/packages/babel-traverse) --- updated-dependencies: - dependency-name: "@babel/traverse" dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .../custom/vagovclaro/package-lock.json | 364 ++++++++++++------ 1 file changed, 240 insertions(+), 124 deletions(-) diff --git a/docroot/themes/custom/vagovclaro/package-lock.json b/docroot/themes/custom/vagovclaro/package-lock.json index 53c3de05f6..5b3a5184c9 100644 --- a/docroot/themes/custom/vagovclaro/package-lock.json +++ b/docroot/themes/custom/vagovclaro/package-lock.json @@ -50,17 +50,80 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.21.4.tgz", - "integrity": "sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==", + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", + "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", "dev": true, "dependencies": { - "@babel/highlight": "^7.18.6" + "@babel/highlight": "^7.22.13", + "chalk": "^2.4.2" }, "engines": { "node": ">=6.9.0" } }, + "node_modules/@babel/code-frame/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/code-frame/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@babel/code-frame/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/@babel/compat-data": { "version": "7.21.7", "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.7.tgz", @@ -101,12 +164,12 @@ } }, "node_modules/@babel/generator": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.5.tgz", - "integrity": "sha512-SrKK/sRv8GesIW1bDagf9cCG38IOMYZusoe1dfg0D8aiUe3Amvoj1QtjTPAWcfrZFvIwlleLb0gxzQidL9w14w==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", + "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", "dev": true, "dependencies": { - "@babel/types": "^7.21.5", + "@babel/types": "^7.23.0", "@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" @@ -229,9 +292,9 @@ } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.21.5.tgz", - "integrity": "sha512-IYl4gZ3ETsWocUWgsFZLM5i1BYx9SoemminVEXadgLBa9TdeorzgLKm8wWLA6J1N/kT3Kch8XIk1laNzYoHKvQ==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", "dev": true, "engines": { "node": ">=6.9.0" @@ -250,25 +313,25 @@ } }, "node_modules/@babel/helper-function-name": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", - "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", "dev": true, "dependencies": { - "@babel/template": "^7.20.7", - "@babel/types": "^7.21.0" + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", "dev": true, "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -398,30 +461,30 @@ } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", "dev": true, "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.21.5.tgz", - "integrity": "sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", + "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", "dev": true, "engines": { "node": ">=6.9.0" @@ -466,13 +529,13 @@ } }, "node_modules/@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", + "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", "js-tokens": "^4.0.0" }, "engines": { @@ -542,9 +605,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.21.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.8.tgz", - "integrity": "sha512-6zavDGdzG3gUqAdWvlLFfk+36RilI+Pwyuuh7HItyeScCWP3k6i8vKclAQ0bM/0y/Kz/xiwvxhMv9MgTJP5gmA==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", + "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -1670,33 +1733,33 @@ } }, "node_modules/@babel/template": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", - "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7" + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.5.tgz", - "integrity": "sha512-AhQoI3YjWi6u/y/ntv7k48mcrCXmus0t79J9qPNlk/lAsFlCiJ047RmbfMOawySTHtywXhbXgpx/8nXMYd+oFw==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.21.4", - "@babel/generator": "^7.21.5", - "@babel/helper-environment-visitor": "^7.21.5", - "@babel/helper-function-name": "^7.21.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.21.5", - "@babel/types": "^7.21.5", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", + "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.0", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.0", + "@babel/types": "^7.23.0", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -1705,13 +1768,13 @@ } }, "node_modules/@babel/types": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.5.tgz", - "integrity": "sha512-m4AfNvVF2mVC/F7fDEdH2El3HzUg9It/XsCxZiOTTA3m3qYfcSVSbTfM6Q9xG+hYDniZssYhlXKKUMD5m8tF4Q==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", + "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.21.5", - "@babel/helper-validator-identifier": "^7.19.1", + "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" }, "engines": { @@ -10661,12 +10724,65 @@ } }, "@babel/code-frame": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.21.4.tgz", - "integrity": "sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==", + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", + "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", "dev": true, "requires": { - "@babel/highlight": "^7.18.6" + "@babel/highlight": "^7.22.13", + "chalk": "^2.4.2" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "@babel/compat-data": { @@ -10699,12 +10815,12 @@ } }, "@babel/generator": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.5.tgz", - "integrity": "sha512-SrKK/sRv8GesIW1bDagf9cCG38IOMYZusoe1dfg0D8aiUe3Amvoj1QtjTPAWcfrZFvIwlleLb0gxzQidL9w14w==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", + "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", "dev": true, "requires": { - "@babel/types": "^7.21.5", + "@babel/types": "^7.23.0", "@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" @@ -10796,9 +10912,9 @@ } }, "@babel/helper-environment-visitor": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.21.5.tgz", - "integrity": "sha512-IYl4gZ3ETsWocUWgsFZLM5i1BYx9SoemminVEXadgLBa9TdeorzgLKm8wWLA6J1N/kT3Kch8XIk1laNzYoHKvQ==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", "dev": true }, "@babel/helper-explode-assignable-expression": { @@ -10811,22 +10927,22 @@ } }, "@babel/helper-function-name": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", - "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", "dev": true, "requires": { - "@babel/template": "^7.20.7", - "@babel/types": "^7.21.0" + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" } }, "@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", "dev": true, "requires": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" } }, "@babel/helper-member-expression-to-functions": { @@ -10923,24 +11039,24 @@ } }, "@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", "dev": true, "requires": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" } }, "@babel/helper-string-parser": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.21.5.tgz", - "integrity": "sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", + "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", "dev": true }, "@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", "dev": true }, "@babel/helper-validator-option": { @@ -10973,13 +11089,13 @@ } }, "@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", + "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", "js-tokens": "^4.0.0" }, "dependencies": { @@ -11036,9 +11152,9 @@ } }, "@babel/parser": { - "version": "7.21.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.8.tgz", - "integrity": "sha512-6zavDGdzG3gUqAdWvlLFfk+36RilI+Pwyuuh7HItyeScCWP3k6i8vKclAQ0bM/0y/Kz/xiwvxhMv9MgTJP5gmA==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", + "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", "dev": true }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { @@ -11792,42 +11908,42 @@ } }, "@babel/template": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", - "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", "dev": true, "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7" + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" } }, "@babel/traverse": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.5.tgz", - "integrity": "sha512-AhQoI3YjWi6u/y/ntv7k48mcrCXmus0t79J9qPNlk/lAsFlCiJ047RmbfMOawySTHtywXhbXgpx/8nXMYd+oFw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.21.4", - "@babel/generator": "^7.21.5", - "@babel/helper-environment-visitor": "^7.21.5", - "@babel/helper-function-name": "^7.21.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.21.5", - "@babel/types": "^7.21.5", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", + "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.0", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.0", + "@babel/types": "^7.23.0", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.5.tgz", - "integrity": "sha512-m4AfNvVF2mVC/F7fDEdH2El3HzUg9It/XsCxZiOTTA3m3qYfcSVSbTfM6Q9xG+hYDniZssYhlXKKUMD5m8tF4Q==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", + "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", "dev": true, "requires": { - "@babel/helper-string-parser": "^7.21.5", - "@babel/helper-validator-identifier": "^7.19.1", + "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" } }, From ea211477f8182381053488db981b99d34059166b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 27 Oct 2023 14:26:22 -0400 Subject: [PATCH 21/25] Bump drupal/geocoder from 3.34.0 to 3.35.0 (#15763) Bumps drupal/geocoder from 3.34.0 to 3.35.0. --- updated-dependencies: - dependency-name: drupal/geocoder dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- composer.lock | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/composer.lock b/composer.lock index 90f408816f..a12a9769bf 100644 --- a/composer.lock +++ b/composer.lock @@ -6435,17 +6435,17 @@ }, { "name": "drupal/geocoder", - "version": "3.34.0", + "version": "3.35.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/geocoder.git", - "reference": "8.x-3.34" + "reference": "8.x-3.35" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/geocoder-8.x-3.34.zip", - "reference": "8.x-3.34", - "shasum": "6eb44d0b055f4239a4bd65f3fedef5829a761fce" + "url": "https://ftp.drupal.org/files/projects/geocoder-8.x-3.35.zip", + "reference": "8.x-3.35", + "shasum": "3e63b48fedf4c720ec51f8c0d804bfbbbfc6829f" }, "require": { "davedevelopment/stiphle": "^0.9.2", @@ -6488,8 +6488,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-3.34", - "datestamp": "1682585666", + "version": "8.x-3.35", + "datestamp": "1697825623", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" From 455d36bb2099b5d03b62ceab305e92d3b2c799e5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 27 Oct 2023 20:46:51 -0500 Subject: [PATCH 22/25] Bump va-gov/content-build from 0.0.3375 to 0.0.3376 (#15899) Bumps [va-gov/content-build](https://github.com/department-of-veterans-affairs/content-build) from 0.0.3375 to 0.0.3376. - [Release notes](https://github.com/department-of-veterans-affairs/content-build/releases) - [Commits](https://github.com/department-of-veterans-affairs/content-build/compare/v0.0.3375...v0.0.3376) --- updated-dependencies: - dependency-name: va-gov/content-build dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- composer.json | 2 +- composer.lock | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/composer.json b/composer.json index cbd5fb82e8..0ceb04269e 100644 --- a/composer.json +++ b/composer.json @@ -207,7 +207,7 @@ "symfony/phpunit-bridge": "^5.1", "symfony/process": "^4.0", "symfony/routing": "^4.0", - "va-gov/content-build": "^0.0.3375", + "va-gov/content-build": "^0.0.3376", "vlucas/phpdotenv": "^5.3", "webflo/drupal-finder": "^1.0.0", "webmozart/path-util": "^2.3", diff --git a/composer.lock b/composer.lock index a12a9769bf..078e1771de 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": "f794d0c300d80af7440d0421acf1c971", + "content-hash": "faaf25abea1e1ec90d1d817d60e1e379", "packages": [ { "name": "alchemy/zippy", @@ -26908,16 +26908,16 @@ }, { "name": "va-gov/content-build", - "version": "v0.0.3375", + "version": "v0.0.3376", "source": { "type": "git", "url": "https://github.com/department-of-veterans-affairs/content-build.git", - "reference": "ce3ea598be9758900d6b20625e1575c89cf8200e" + "reference": "a576b62fee7283bba2f8b36cf1df793ecf026f95" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/department-of-veterans-affairs/content-build/zipball/ce3ea598be9758900d6b20625e1575c89cf8200e", - "reference": "ce3ea598be9758900d6b20625e1575c89cf8200e", + "url": "https://api.github.com/repos/department-of-veterans-affairs/content-build/zipball/a576b62fee7283bba2f8b36cf1df793ecf026f95", + "reference": "a576b62fee7283bba2f8b36cf1df793ecf026f95", "shasum": "" }, "type": "node-project", @@ -26944,9 +26944,9 @@ "description": "Front-end for VA.gov. This repository contains the code that generates the www.va.gov website. It contains a Metalsmith static site builder that uses a Drupal CMS for content. This file is here to publish releases to https://packagist.org/packages/va-gov/content-build, so that the CMS CI system can install it and update it using standard composer processes, and so that we can run tests across both systems. See https://github.com/department-of-veterans-affairs/va.gov-cms for the CMS repo, and stand by for more documentation.", "support": { "issues": "https://github.com/department-of-veterans-affairs/content-build/issues", - "source": "https://github.com/department-of-veterans-affairs/content-build/tree/v0.0.3375" + "source": "https://github.com/department-of-veterans-affairs/content-build/tree/v0.0.3376" }, - "time": "2023-10-26T17:00:58+00:00" + "time": "2023-10-27T15:45:22+00:00" }, { "name": "vlucas/phpdotenv", From 80a893b528466c20d956da5d30269ecd6a79f78b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 30 Oct 2023 08:30:09 -0400 Subject: [PATCH 23/25] Bump actions/setup-node from 3.8.1 to 4.0.0 (#15900) Bumps [actions/setup-node](https://github.com/actions/setup-node) from 3.8.1 to 4.0.0. - [Release notes](https://github.com/actions/setup-node/releases) - [Commits](https://github.com/actions/setup-node/compare/5e21ff4d9bc1a8cf6de233a3057d20ec6b3fb69d...8f152de45cc393bb48ce5d89d36b731f54556e65) --- updated-dependencies: - dependency-name: actions/setup-node dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/cypress.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cypress.yml b/.github/workflows/cypress.yml index 484ff61a09..934805784d 100644 --- a/.github/workflows/cypress.yml +++ b/.github/workflows/cypress.yml @@ -37,7 +37,7 @@ jobs: ref: ${{ inputs.commit_sha }} - name: Setup the Node environment - uses: actions/setup-node@5e21ff4d9bc1a8cf6de233a3057d20ec6b3fb69d # v3.8.1 + uses: actions/setup-node@8f152de45cc393bb48ce5d89d36b731f54556e65 # v4.0.0 with: node-version: '18.13' From 8ff5c0605c77001004b4de5f2e567c7314a94825 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 30 Oct 2023 08:32:42 -0400 Subject: [PATCH 24/25] Bump drupal/linkyreplacer from 2.2.2 to 2.2.3 (#15877) Bumps drupal/linkyreplacer from 2.2.2 to 2.2.3. --- updated-dependencies: - dependency-name: drupal/linkyreplacer dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- composer.lock | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/composer.lock b/composer.lock index 078e1771de..8e0be29e42 100644 --- a/composer.lock +++ b/composer.lock @@ -8427,29 +8427,29 @@ }, { "name": "drupal/linkyreplacer", - "version": "2.2.2", + "version": "2.2.3", "source": { "type": "git", "url": "https://git.drupalcode.org/project/linkyreplacer.git", - "reference": "2.2.2" + "reference": "2.2.3" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/linkyreplacer-2.2.2.zip", - "reference": "2.2.2", - "shasum": "277db36e74b73ba0b9d995c8a239ffb6affb2e55" + "url": "https://ftp.drupal.org/files/projects/linkyreplacer-2.2.3.zip", + "reference": "2.2.3", + "shasum": "9958eb0eb228f9d291aa20b1fb255d7327b94b33" }, "require": { "drupal/core": "^8.8 || ^9 || ^10", "drupal/entity_route_context": "^1 || ^3 || ^4", - "drupal/linky": "^1", + "drupal/linky": "^1 || ^2", "php": ">=7.3 || ^8" }, "type": "drupal-module", "extra": { "drupal": { - "version": "2.2.2", - "datestamp": "1663935577", + "version": "2.2.3", + "datestamp": "1698282793", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" From 21047f3fe98975e121bcabb3b26174395249bcf0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 30 Oct 2023 08:34:01 -0400 Subject: [PATCH 25/25] Bump drupal/geofield from 1.55.0 to 1.56.0 (#15808) Bumps drupal/geofield from 1.55.0 to 1.56.0. --- updated-dependencies: - dependency-name: drupal/geofield dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- composer.lock | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/composer.lock b/composer.lock index 8e0be29e42..68ae33a375 100644 --- a/composer.lock +++ b/composer.lock @@ -6530,17 +6530,17 @@ }, { "name": "drupal/geofield", - "version": "1.55.0", + "version": "1.56.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/geofield.git", - "reference": "8.x-1.55" + "reference": "8.x-1.56" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/geofield-8.x-1.55.zip", - "reference": "8.x-1.55", - "shasum": "88403ad29424e3b5aba454534fcdcd53565b11f7" + "url": "https://ftp.drupal.org/files/projects/geofield-8.x-1.56.zip", + "reference": "8.x-1.56", + "shasum": "edcb25304edb860d0fe907b8aa2dc73b6fc83f39" }, "require": { "drupal/core": "^8.8 || ^9 || ^10", @@ -6549,8 +6549,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-1.55", - "datestamp": "1692829747", + "version": "8.x-1.56", + "datestamp": "1698017493", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy"