diff --git a/.github/ISSUE_TEMPLATE/cms-team-and-sitewide-crew-member-onboarding.md b/.github/ISSUE_TEMPLATE/cms-team-member-onboarding.md similarity index 90% rename from .github/ISSUE_TEMPLATE/cms-team-and-sitewide-crew-member-onboarding.md rename to .github/ISSUE_TEMPLATE/cms-team-member-onboarding.md index 7f20dc71ee..d3d8cb9862 100644 --- a/.github/ISSUE_TEMPLATE/cms-team-and-sitewide-crew-member-onboarding.md +++ b/.github/ISSUE_TEMPLATE/cms-team-member-onboarding.md @@ -1,5 +1,5 @@ --- -name: CMS team and Sitewide Crew member onboarding +name: CMS team member onboarding about: Create an issue for each new team member title: 'Onboarding: ' labels: Onboarding @@ -7,10 +7,10 @@ assignees: '' --- -# Welcome to the VFS-CMS / Sitewide Team! 👋 +# Welcome to the VFS-CMS Team! 👋 We're thrilled to have you join us on this journey! 🎆🎉🙌 -This team consists of three product teams: CMS team (VFS-CMS contract), and the Facilities and Public Websites teams (Sitewide contract). Our teams are cross-functional and consist of Product, Delivery/Scrummaster, UX (Research, Design, Content strategy), Backend engineering (full-stack/Drupal), and Front-end engineering. +This team consists of three product teams: CMS team (VFS-CMS contract). Our team is cross-functional and consist of Product, Delivery/Scrummaster, UX (Research, Design, Content strategy), Backend engineering (full-stack/Drupal), and Front-end engineering. The VA's north star is to "continuously deliver high-quality digital experiences for the benefit of all Veterans and their families." From a CMS-perspective, our [vision](https://docs.google.com/presentation/d/14mK-4OMeEnR_-fgj62U4lUHBHg6htj4i4ucTA5DJFzg/edit#slide=id.g11ae1dc437e_0_1) is to craft a seamless editorial experience that empowers editors to create Veteran-centered content. @@ -95,17 +95,17 @@ Github + Zenhub are the tools required for sprint boards, epics, estimates, and **Sprint boards:** You can view team sprint boards using either the Github view with Zenhub browser extension enabled, or the Zenhub webapp view. * CMS team: [Github view](https://github.com/department-of-veterans-affairs/va.gov-cms/#workspaces/vagov-cms-team-5c0e7b864b5806bc2bfc2087/board), [Zenhub webapp view](https://app.zenhub.com/workspaces/vagov-cms-team-5c0e7b864b5806bc2bfc2087/board) -* Facilities: [Github view](https://github.com/department-of-veterans-affairs/va.gov-cms/#workspaces/sitewide-facilities-639f5253e4b702a32376339e/board), [Zenhub webapp view](https://app.zenhub.com/workspaces/sitewide-facilities-639f5253e4b702a32376339e/board ) -* Public Websites: [Github view](https://github.com/department-of-veterans-affairs/va.gov-cms/#workspaces/public-websites-6171bf4bf43742001af18cc5/board), [Zenhub webapp view](https://app.zenhub.com/workspaces/public-websites-6171bf4bf43742001af18cc5/board) +* Sitewide Facilities and Public Websites teams also run their sprints from the same repository, and any repo / workspace changes should be mindful of not impacting their workspaces / boards: + * Facilities: [Github view](https://github.com/department-of-veterans-affairs/va.gov-cms/#workspaces/sitewide-facilities-639f5253e4b702a32376339e/board), [Zenhub webapp view](https://app.zenhub.com/workspaces/sitewide-facilities-639f5253e4b702a32376339e/board +) + * Public Websites: [Github view](https://github.com/department-of-veterans-affairs/va.gov-cms/#workspaces/public-websites-6171bf4bf43742001af18cc5/board), [Zenhub webapp view](https://app.zenhub.com/workspaces/public-websites-6171bf4bf43742001af18cc5/board) ### Process & Principles - [ ] Read about our teams' [Agile / sprint best practices](https://github.com/department-of-veterans-affairs/va.gov-team/blob/master/platform/cms/onboarding/library/sprint-best-practices.md) - [ ] How do Agile 6 and our partners work together on this project? Discuss with your Delivery Manager. - [ ] Read your team's Charter: * [CMS]() - * [Facilities](https://docs.google.com/document/u/1/d/1eI1w9Bcj2rlmFtxkM6Dkn_c-Srszd88UxAQimSZkVqo/edit) - * [Public Websites](https://docs.google.com/document/d/1jiq90ffon5UxAqybiEncl8feqmXhEOChlijiDBOWUtc/edit) - [ ] Check your calendar for invitations to team ceremonies. - [ ] Scrums - [ ] Planning session @@ -114,7 +114,7 @@ You can view team sprint boards using either the Github view with Zenhub browser - [ ] Retro ### People -- [ ] Familiarize yourself with our team's shared calendars: [Sitewide Team calendar](https://calendar.google.com/calendar/u/1?cid=c2l0ZXdpZGUtdGVhbUBhZ2lsZTYuY29t) and [VFS-CMS team calendar] (https://calendar.google.com/calendar/u/1?cid=vfs-cms-team@agile6.com) +- [ ] Familiarize yourself with our team's shared calendars: [VFS-CMS team calendar] (https://calendar.google.com/calendar/u/1?cid=vfs-cms-team@agile6.com) * Ask your DM to give you write access to your team calendar, if you have not already been invited * If you have time off planned, add to calendar as OOO - [ ] Let's start introducing you to the team and key stakeholders. If you're on a meeting where you don't know someone, feel free to kickstart an introduction. Everyone in the ecosystem is friendly and interested in connecting. @@ -140,7 +140,7 @@ The goal for this week is to get you set up with the tools you need to be succes - [ ] Retro ### Context & History: What products do we support? -- [ ] Review [History of sitewide product portfolio & teams mural](https://app.mural.co/t/vagov6717/m/vagov6717/1646745279937/9a5570c420939d84e875e8334fd73073e3a3971b?fromVisitorModal=true&sender=u0b235d03cbd64f7f93673243). +- [ ] Review [History of CMS / Sitewide product portfolio & teams mural](https://app.mural.co/t/vagov6717/m/vagov6717/1646745279937/9a5570c420939d84e875e8334fd73073e3a3971b?fromVisitorModal=true&sender=u0b235d03cbd64f7f93673243). - [ ] Discuss with your Delivery Manager and Product Manager for more context on your team's products. - [ ] [Review the editor onboarding slides](https://github.com/department-of-veterans-affairs/va.gov-team/blob/master/platform/cms/onboarding/library/https___prod.cms.va.gov_sites_default_files_2021-07_Welcome%2520to%2520the%2520new%2520VA.gov%2520CMS.pdf). - [ ] Read the [product sheets](https://github.com/department-of-veterans-affairs/va.gov-team/raw/master/platform/cms/VA-CMS-Product-Sheets.pdf) (PDF download). @@ -157,17 +157,16 @@ The goal for this week is to get you set up with the tools you need to be succes #### Slack for instant messaging - [ ] [Review Slack etiquette](https://slack.com/blog/collaboration/etiquette-tips-in-slack). - [ ] Update your profiles in Slack (in DSVA and your agency workspace): add a calendar link, profile picture, your role and team. - - [ ] Your Delivery Manager should add you to appropriate Slack user groups for the DSVA workspace (e.g. `@cms-team`, `@cms-helpdesk`, `@public-websites-team`, `@facilities-team`. Also `@cms-engineers-group` for eng.) + - [ ] Your Delivery Manager should add you to appropriate Slack user groups for the DSVA workspace (e.g. `@cms-team`, `@cms-helpdesk`. Also `@cms-engineers-group` for eng.) **Channels** -- [ ] A6/agency workspace = `#proj-sitewide-vfs-cms-team` - - [ ] DSVA workspace = `#sitewide-program`, and your team channel e.g. `#cms-team`, `#cms-platform`, `#sitewide-public-websites`, `#sitewide-facilities` + - [ ] DSVA workspace = `#sitewide-program`, and your team channel e.g. `#cms-team`, `#cms-platform` - [ ] [VA Slack Channel Overview](https://docs.google.com/spreadsheets/d/1_lZzectbSzs8zt4dvTFJTiPURxa0Kfp3xinYEuZdqq4/edit#gid=0) describes useful channels to be aware of / join. Note that many are going to be dependent on which workstream you're in (DevOps, Helpdesk, UX, etc.). Feel free to join whichever you think will aid you and your work. #### SOCKS - VA network proxy (after your Platform Orientation) The VA network is required in order to access Drupal CMS and other VA tools. Network access usually requires a VA ID card (also called a "PIV" or Smartcard). Until your paperwork is approved and you receive a PIV card, using the SOCKS proxy can provide earlier access to some of these tools. **You cannot be approved for SOCKS access until your eQip is sent and you receive a "transmittal notice" confirming receipt.** If you have received an eQip transmittal notice, but not a PIV, please complete the steps for SOCKS access. This is the first priority for week two, especially for engineers. (If your role doesn't demand immediate access to the CMS, you may be able to wait until you receive a PIV.) -This can be a complex process. Post in #sitewide-program Slack channel if you need help from a current member - we're happy to help. +This can be a complex process. Post in #sitewide-cms-platform Slack channel if you need help from a current member - we're happy to help. - [ ] Take a screenshot of your eQip transmittal notice. - [ ] [Request a Github personal access token](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token). You only need to do the "repo" panel in that form and leave the other panels as is. You'll need the output of this for your SOCKS request. - [ ] File a [SOCKS proxy request](https://depo-platform-documentation.scrollhelp.site/getting-started/Internal-tools-access-via-SOCKS-proxy.1821081710.html) and select the label for your team. It may take a day or two for the SOCKS proxy request to be fulfilled before you can complete the rest of the SOCKS process. @@ -208,11 +207,11 @@ By this point you should have enough context and access to be able to start cont ### Access & Delivery **Paperwork** -- [ ] Complete any VA-assigned trainings in the TMS system. If the TMS learning modules malfunction, assign yourself the print version of the module. (Ask in #proj-sitewide-vfs-cms-team if you need help.) +- [ ] Complete any VA-assigned trainings in the TMS system. If the TMS learning modules malfunction, assign yourself the print version of the module. (Ask if you need help.) - [ ] You'll receive an email confirming that you have been approved for remote access. - [ ] **Both**: You can contact Enterprise Service desk via provided instructions to set up your remote desktop access manually, if you need access prior to receiving your PIV card. - [ ] **If on Windows**: Windows users must use the Azure Virtual Desktop (AVD). [Instructions](https://gcc02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdigital.va.gov%2Femployee-resources%2Fremote-access%2Fazure-virtual-desktop%2F&data=05%7C01%7C%7Cdec2e51d4f3b472b1dec08db921d522a%7Ce95f1b23abaf45ee821db7ab251ab3bf%7C0%7C0%7C638264426849334591%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=2yQ9gfPbUzsJSICXG1TvFY8LJhsVKE%2FGB12%2Bs%2FPNrlY%3D&reserved=0). You'll need network access to reach that link, which you should receive instructions in email for how to achieve. - - [ ] **If on Mac / Linux**: Mac users will also use Azure Virtual Desktop (AVD) _eventually._ As of Aug 2023, if you are a new hire on Mac, you are a guinea pig. Do your best with these instructions, ask your DM for help if they don't work, and ask your DM to update this [issuetemplate](https://github.com/department-of-veterans-affairs/va.gov-cms/edit/main/.github/ISSUE_TEMPLATE/cms-team-and-sitewide-crew-member-onboarding.md) with correct notes after it's all sorted out. Mac users have 2 options: + - [ ] **If on Mac / Linux**: Mac users will also use Azure Virtual Desktop (AVD) _eventually._ As of Aug 2023, if you are a new hire on Mac, you are a guinea pig. Do your best with these instructions, ask your DM for help if they don't work, and ask your DM to update this [issuetemplate](https://github.com/department-of-veterans-affairs/va.gov-cms/edit/main/.github/ISSUE_TEMPLATE/cms-team-member-onboarding.md) with correct notes after it's all sorted out. Mac users have 2 options: - [ ] 1. Azure web client: https://client.wvd.microsoft.com/arm/webclient/, IF you have a PIV card. There is an Azure desktop client but it won’t work on a mac because the mac application doesn’t support PIV authentication. . (Try using Firefox and make sure pop-ups are allowed, at least for the MS domain if not globally (they are not allowed by default). Enter your VA email address. Connect your PIV card reader to your computer, and insert the card in the reader. Select ‘Sign in using an X.509 certificate’. - [ ] 2. Citrix Access Gateway (CAG): use your Enterprise Service desk credentials or PIV card to log onto CAG and request an exemption [here](https://gcc02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fapps.gov.powerapps.us%2Fplay%2Fe%2Fdefault-e95f1b23-abaf-45ee-821d-b7ab251ab3bf%2Fa%2F5823591d-4113-4f49-ba75-ea95a5081b41%3FtenantId%3De95f1b23-abaf-45ee-821d-b7ab251ab3bf%26source%3Dportal&data=05%7C01%7C%7Cdec2e51d4f3b472b1dec08db921d522a%7Ce95f1b23abaf45ee821db7ab251ab3bf%7C0%7C0%7C638264426849490249%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=36fW8GZiUuh1AhaokCn47xqF41PolOoaT40f%2BfGsDBs%3D&reserved=0) - [ ] After your background check is complete, you will get an email to get your Personal Identify Verification (PIV) card. Contact your local VA office (where you got your fingerprints taken) for information about getting your [PIV card](https://www.oit.va.gov/programs/piv/how-to.cfm?). @@ -270,7 +269,7 @@ Each repository includes READMEs to help with setup. - [ ] Test User Dashboard: https://tud.vfs.va.gov/ and [Test User Dashboard docs](https://depo-platform-documentation.scrollhelp.site/developer-docs/test-user-dashboard-guide). In lower environments, we are encouraged not to use our actual login credentials to test authed work. The TUD provides a set of test users you can use to login to various environments for testing. - [ ] [Datadog](https://depo-platform-documentation.scrollhelp.site/developer-docs/get-access-to-datadog) to access monitoring metrics (write licenses are limited, so only read-only might be available) - [ ] [GraphQL Explorer](https://staging.cms.va.gov/graphql/explorer) - GraphQL acts as the Drupal content API, for building queries that can be used in FE templates. The Explorer (on Staging) will allow you to test those queries. -- [ ] Browse the [Topic Dives videos](https://github.com/department-of-veterans-affairs/va.gov-team/tree/master/teams/sitewide/topic-dives) - includes CMS content, and non-CMS topics for Facilities & Public Websites teams as well +- [ ] Browse the [Topic Dives videos](https://github.com/department-of-veterans-affairs/va.gov-team/tree/master/teams/sitewide/topic-dives) - includes CMS content, and some non-CMS topics for Sitewide teams as well @@ -342,15 +341,13 @@ Your discipline lead will assist with onboarding tasks / calls. - You'll get an invite during Week 3-ish. - [ ] Attend design onboarding call 2: [Partners](https://docs.google.com/presentation/d/1__iyFNPB03u850nXDjG4uRgK0jmCL16e5PradD29jmk/edit) - You'll get an invite during Week 3-ish. -- [ ] Reading (this is more for Public Websites and Facilities teams, but helpful context for everyone) +- [ ] Reading - [Collaboration Cycle](https://depo-platform-documentation.scrollhelp.site/collaboration-cycle/collaboration-cycle-kickoff) - [Research Overview](https://depo-platform-documentation.scrollhelp.site/research-design/research-overview) - [VA Design System](https://design.va.gov/) - [ ] Install tools and request access from your DM, if not already provided - - [ ] Sketch (for designers on Public Websites or Facilities) + - [ ] Figma - [ ] [Mural](https://app.mural.co/t/departmentofveteransaffairs9999) - when you have been assigned your VA email address, ask your DM to add you to Team folders in Mural. Without a VA email, other users can share the Visitor link to Murals so you can view them meantime. - - [ ] Figma (for designers on Sitewide CMS) - - [ ] Airtable (for Research / Content strategists) - [ ] Review and start getting acquainted with existing design systems. - [ ] Helpful Slack channels to join - #accessibility-ops @@ -386,48 +383,11 @@ Your discipline lead will assist with onboarding tasks / calls. ## Onboarding for Delivery Managers - [ ] Request your onboarding buddy provide access to [CMS Support distro group](https://mim.va.gov/IdentityManagement/default.aspx) - must access on VA network (requires PIV card + CAG access) - [ ] Review Contract responsibilities doc for your contract: - * [Sitewide](https://docs.google.com/document/d/1IXyXzenfdVoSM7O5KklLsI1aBIdLM6PVQJbuIevdgiw/edit) * [VFS-CMS](https://docs.google.com/document/d/1rFEZapZUxRfTAxogad7jSyOdx1YIL_w5Rqh8KLps0aY/edit) - [ ] Review Sprint reporting runbook for your contract: - * [Sitewide](https://docs.google.com/document/d/1aI1QMXZMYRaqVj7QbqYF9FIQ7ittD4VXyYQWWMLJ5Ow/edit) * [VFS-CMS](https://docs.google.com/document/d/1YUWAVU6741qgVcE-07ZN14LdXyWCqVZX67fYCsgGL9c/edit) - [ ] Review other Delivery documents in [Google Drive](https://drive.google.com/drive/u/1/folders/1mFC5NCUkeQlGX2S8TIpD1om2V-5B0ikc) - -### Team-specific onboarding (CMS, Facilities, Public Websites) -Remove the sections that don't apply - -
CMS Team Onboarding - - ## Onboarding for CMS - -
- -
Facilities Team Onboarding - - ## Onboarding for Facilities - - [ ] Read the [Facilities team charter](https://docs.google.com/document/d/1eI1w9Bcj2rlmFtxkM6Dkn_c-Srszd88UxAQimSZkVqo/edit#) - - [ ] [Facilities product portfolio notes ](https://github.com/department-of-veterans-affairs/va.gov-team/tree/master/products/facilities) - -
- -
Public Websites Team Onboarding - - ## Onboarding for Public Websites - - [ ] Read the [Public Websites team charter](https://docs.google.com/document/d/1jiq90ffon5UxAqybiEncl8feqmXhEOChlijiDBOWUtc/edit#heading=h.tu2ayudos7uc) - - [ ] [Public Websites product portfolio documentation ](https://github.com/department-of-veterans-affairs/va.gov-team/tree/master/products/public-websites) - -
- - -### Team -Please check the team(s) that will do this work. - -- [ ] `CMS Team` -- [ ] `Public Websites` -- [ ] `Facilities` -- [ ] `User support` -- [ ] `Accelerated Publishing` diff --git a/.github/ISSUE_TEMPLATE/sitewide-crew-member-onboarding.md b/.github/ISSUE_TEMPLATE/sitewide-crew-member-onboarding.md new file mode 100644 index 0000000000..a1addac7d3 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/sitewide-crew-member-onboarding.md @@ -0,0 +1,374 @@ +--- +name: Sitewide Crew member onboarding +about: Create an issue for each new team member +title: 'Onboarding: ' +labels: Onboarding +assignees: '' + +--- + +# Welcome to the Sitewide Team! 👋 +We're thrilled to have you join us on this journey! 🎆🎉🙌 + +This team consists of 2 product teams: the Facilities and Public Websites teams (Sitewide contract). Our teams are cross-functional and consist of Product, Delivery/Scrummaster, UX (Research, Design, Content strategy), Backend engineering (full-stack/Drupal), and Front-end engineering. We also closely collaborate with the CMS team and Platform teams who own the platforms we build on. + +The VA's north star is to "continuously deliver high-quality digital experiences for the benefit of all Veterans and their families." From a CMS-perspective, our [vision](https://docs.google.com/presentation/d/14mK-4OMeEnR_-fgj62U4lUHBHg6htj4i4ucTA5DJFzg/edit#slide=id.g11ae1dc437e_0_1) is to craft a seamless editorial experience that empowers editors to create Veteran-centered content. + +The onboarding materials below are organized by: +* chronological time to complete (day one, week one, week two, month one) +* and category + +There's a lot to digest but don't worry, your Delivery Manager will guide you, you'll have an onboarding buddy to provide support, and we'll also introduce you to your workstream's lead to help with specific things related to your discipline (UX, DevOps, Drupal Engineering, etc). In addition, you'll have the support of the entire team, who have all gone through this process before and are eager to answer any questions that arise. Come back to this ticket any time to refresh your knowledge on a specific topic covered below. Have fun and we look forward to getting to know you! 😊 + +Projected start date: + +**Team info** +- **Onboarding buddy** (short check-in meetings the first week): +- **Team name:** +- **Delivery Manager name:** +- **Product Manager name:** +- **Discipline lead name:** + + +
Day one + +## Day one +Your top priority is any onboarding paperwork provided by Contract Onboarding folks. Start tasks below after that. + +### Process & Principles +- [ ] Read through our [team norms](https://docs.google.com/document/d/1cs5FePhtR0LIJi63b9ZtqT7T6dphgB584UpfEbejSOc/edit#), which will also give an overview of how we apply the [USDS playbook](https://playbook.cio.gov/) and VA.gov platform [code of conduct](https://github.com/department-of-veterans-affairs/va.gov-team/blob/master/platform/working-with-vsp/policies-work-norms/code-of-conduct.md). +- [ ] Watch the 1/31/2024 [State of OCTO recording](https://dvagov.sharepoint.com/:v:/r/sites/oitdigitaltransformation/Tech%20Tuesday%20Files/20240131%20-%202024%20State%20of%20OCTO.mp4?csf=1&web=1&e=4jqObK) and review the [related slides](https://dvagov.sharepoint.com/:b:/s/oitdigitaltransformation/ERxPpNTQ6RxFlLpEjXbkg4ABaiBTOdXohIZ1OkksPwlnvw?e=ayadXo), to understand OCTO's vision and north star goals for this year. +- [ ] Read the [VA's Office of the CTO (OCTO) engineering excellence guiding principles](https://dsva.slack.com/archives/C04KXPXL4/p1674065912579799) [post in DSVA slack] + +### People +- [ ] Meet with A6 Contract Onboarding Specialists (COS) to get an introduction to the paperwork process. They'll schedule. +- [ ] Who is our team? [View & bookmark this Mural org chart](https://app.mural.co/t/departmentofveteransaffairs9999/m/vagov6717/1653588059793/7a260edabca9535d25d71fac1035c979261c223c?sender=u0b235d03cbd64f7f93673243) +- [ ] DSVA Slack: Update your profile, to include at minimum: + - [ ] Profile photo + - [ ] Title, Team, Agency (in Title) + - [ ] Time zone + - [ ] Contact information: agency email, and phone if you're willing + - [ ] About me: VA email once you have one + - [ ] Calendar URL - Get the sharable link for your Google Calendar from Settings/"Access permissions for events" and add it to your Slack Profile. This will allow team members in other organizations to easily schedule with you. + - [ ] Github alias + - [ ] Working hours +- [ ] Who is on the team? Read your [team members' user manuals](https://drive.google.com/drive/u/0/folders/195otsT1IUxi_k8oEU21TUkvEG-6p5YQj?ths) +- [ ] Create your own User Manual: duplicate [the template](https://docs.google.com/document/d/1Rvtoo8CQvE7dptcqmMVqmJ_hbKSNWJ983NXkDj_gVg0/edit?usp=share_link), fill it out, and save your manual in your team's folder. + - [ ] Share your user manual with your team in Slack, once you've created it! + +### Access & Delivery +- [ ] Open a VA.gov [Platform orientation ticket](https://depo-platform-documentation.scrollhelp.site/getting-started/guidance-for-new-teams-and-team-members#Guidancefornewteamsandteammembers-NewVFSteammembers). Orientations may only be available several weeks out, so sign up as soon as you're able. + * The VA.gov Platform team manages VA.gov tooling and network access. In order to receive access to many tools you'll need day to day, you must access the SOCKS network proxy (described later). For SOCKS access, you must + 1. complete the steps described in the link above + 2. complete your eQip paperwork and receive/provide a screenshot of the email with your E-QIP transmittal date, + 3. attend a Platform orientation. If a Platform orientation isn't available for several weeks, sign up for the next available slot, then mention your Delivery Manager and/or Program Manager on your Platform ticket to expedite SOCKS access. + * When those steps are complete, the VA Platform team will add you to the [VFS Platform roster](https://docs.google.com/spreadsheets/d/11dpCJjhs007uC6CWJI6djy3OAvjB8rHB65m0Yj8HXIw/edit?folder=0ALlyxurHpUilUk9PVA#gid=2042046665). This will allow you to get SOCKS access. +- [ ] Contract - Ask your Delivery Manager anything you would like to know about your contract. + +
+ +
Week one + +## Week one +The goals of this week are: +1) get background paperwork completed as quickly as possible +2) start gaining context for what we're doing and why + +### Access & Delivery +**Paperwork** +You'll receive an email from A6 COS directing you to the paperwork you should fill out for secure access to relevant VA systems. Federal contractors are required to complete many of the same forms as federal employees. +- [ ] Complete & submit your initial paperwork according to instructions, including setting up your fingerprinting appointment. +- [ ] When you are notified to complete your e-QIP (the online version of the federal standard investigation form, SF 86), it will require a lot of background & family information. [Review page 7 of the SF 86 guide](https://www.dcsa.mil/Portals/91/Documents/pv/mbi/standard-form-sf-86-guide-for-applicants.pdf) in advance for the list of information you'll need to collect to complete e-QIP. + +#### Github / Zenhub configuration +Github + Zenhub are the tools required for sprint boards, epics, estimates, and issue tracking for our team, as well as code version control. To work successfully: +- [ ] New Hire: Create a Github user account +- [ ] New Hire: Add your agency email address to your Github account at https://github.com/settings/emails +- [ ] Delivery Manager: Creates a [Github request](https://github.com/department-of-veterans-affairs/github-user-requests/issues/new?labels=add-user-to-org%2C+new-user%2C+user-created&template=add-user-to-the-va-organization.md&title=ADD+USER+TO+ORG+-+%5BUSERNAME%5D) to add your Github user to the Dept of VA Github organization. This will provide you with access to view VA repositories. +- [ ] New Hire: Accept the Github org invitation. It will appear as a yellow banner at the top of https://github.com/department-of-veterans-affairs +- [ ] Delivery Manager: After invite is accepted, add user to the [VFS-CMS team](https://github.com/orgs/department-of-veterans-affairs/teams/vfs-cms-team/members). You must be added to this team to contribute to [va.gov-cms repository](https://github.com/department-of-veterans-affairs/va.gov-cms/) code and issues in Github. +- [ ] New Hire: Install the [Zenhub browser extension](https://www.zenhub.com/extension) in your browser of choice +- [ ] Delivery Manager: Log into app.zenhub.com, click "Invite your team" button in lower left sidebar, invite new hire via their agency email address. This will generate a license request that must be approved by Zenhub admins within the VA. In the meantime, new hires may see a "You do not have a license" message when they log in to app.zenhub.com. +- [ ] VA Zenhub Admins: Must approve the license request. If they're slow about it, in DSVA slack, use @zenhub-admins to mention and request help. Licenses might not be approved until after the new hire has been fingerprinted. +- [ ] New Hire: Verify Zenhub access by logging into app.zenhub.com, using Google auth with your agency email address. **Do not use Github oauth**. It's no longer supported by the VA. + +**Sprint boards:** +You can view team sprint boards using either the Github view with Zenhub browser extension enabled, or the Zenhub webapp view. +* Facilities: [Github view](https://github.com/department-of-veterans-affairs/va.gov-cms/#workspaces/sitewide-facilities-639f5253e4b702a32376339e/board), [Zenhub webapp view](https://app.zenhub.com/workspaces/sitewide-facilities-639f5253e4b702a32376339e/board +) +* Public Websites: [Github view](https://github.com/department-of-veterans-affairs/va.gov-cms/#workspaces/public-websites-6171bf4bf43742001af18cc5/board), [Zenhub webapp view](https://app.zenhub.com/workspaces/public-websites-6171bf4bf43742001af18cc5/board) +* CMS team: also runs their sprints from the same repository, and any repo / workspace changes should be mindful of not impacting their [Github view](https://github.com/department-of-veterans-affairs/va.gov-cms/#workspaces/vagov-cms-team-5c0e7b864b5806bc2bfc2087/board), or [Zenhub webapp view](https://app.zenhub.com/workspaces/vagov-cms-team-5c0e7b864b5806bc2bfc2087/board) + + +### Process & Principles +- [ ] Read about our teams' [Agile / sprint best practices](https://github.com/department-of-veterans-affairs/va.gov-team/blob/master/platform/cms/onboarding/library/sprint-best-practices.md) +- [ ] How do Agile 6 and our partners work together on this project? Discuss with your Delivery Manager. +- [ ] Read your team's Charter: + * [Facilities](https://docs.google.com/document/u/1/d/1eI1w9Bcj2rlmFtxkM6Dkn_c-Srszd88UxAQimSZkVqo/edit) + * [Public Websites](https://docs.google.com/document/d/1jiq90ffon5UxAqybiEncl8feqmXhEOChlijiDBOWUtc/edit) +- [ ] Check your calendar for invitations to team ceremonies. + - [ ] Scrums + - [ ] Planning session + - [ ] Refinement session(s) + - [ ] Demo + - [ ] Retro + +### People +- [ ] Familiarize yourself with our team's shared [Sitewide Team calendar](https://calendar.google.com/calendar/u/1?cid=c2l0ZXdpZGUtdGVhbUBhZ2lsZTYuY29t) + * Ask your DM to give you write access to your team calendar, if you have not already been invited + * If you have time off planned, add to calendar as OOO +- [ ] Let's start introducing you to the team and key stakeholders. If you're on a meeting where you don't know someone, feel free to kickstart an introduction. Everyone in the ecosystem is friendly and interested in connecting. + +### Context & History +- [ ] How does the team fit into the larger OCTO ecosystem? [View this Mural diagram](https://app.mural.co/t/departmentofveteransaffairs9999/m/departmentofveteransaffairs9999/1686789362540/fb8f73b8d536f088e56bd3e38f0e37141560f62a?sender=u0b235d03cbd64f7f93673243) +- [ ] [Watch the Drupal GovCon presentation about the project](https://www.youtube.com/watch?v=WN4bGjEuQdM). +- [ ] Why are VA Medical Centers changing their websites? Watch the [2-minute YouTube video](https://youtu.be/Xrv5wCv6cKY). +- [ ] Why are Vet Centers important to Veterans? Watch the [2-minute YouTube video](https://www.youtube.com/watch?v=VMzkZNbKk1I). +
+ +
Week two + +## Week two +The goal for this week is to get you set up with the tools you need to be successful. We will pair you up with a buddy on the project that is in your same discipline to help inform which ones are relevant and which aren't. **The most important thing is to get set up is SOCKS** as it will give you access to our systems so try to prioritize that. + +### Process & Principles +- [ ] Check your calendar for invitations to team ceremonies. + - [ ] Scrums + - [ ] Planning session + - [ ] Refinement session(s) + - [ ] Demo + - [ ] Retro + +### Context & History: What products do we support? +- [ ] Review [History of sitewide product portfolio & teams mural](https://app.mural.co/t/vagov6717/m/vagov6717/1646745279937/9a5570c420939d84e875e8334fd73073e3a3971b?fromVisitorModal=true&sender=u0b235d03cbd64f7f93673243). + - [ ] Discuss with your Delivery Manager and Product Manager for more context on your team's products. +- [ ] [Review the editor onboarding slides](https://github.com/department-of-veterans-affairs/va.gov-team/blob/master/platform/cms/onboarding/library/https___prod.cms.va.gov_sites_default_files_2021-07_Welcome%2520to%2520the%2520new%2520VA.gov%2520CMS.pdf). +- [ ] Read the [product sheets](https://github.com/department-of-veterans-affairs/va.gov-team/raw/master/platform/cms/VA-CMS-Product-Sheets.pdf) (PDF download). + +### Access & Delivery +- [ ] [Opt out](https://www.va.gov/analytics-opt-out.html) of Google Analytics collection on VA.gov. + - [ ] More information: https://depo-platform-documentation.scrollhelp.site/analytics-monitoring/google-analytics-opt-out +- [ ] Opt out of analytics for Platform's website by clicking https://depo-platform-documentation.scrollhelp.site/?internal-user-opt-out=true. **You will not get a confirmation message** and will have to do this for every browser and every time you clear cookies. + +#### Github for issue tracking and document sharing +- [ ] [Intro to CMS Team Github](https://github.com/department-of-veterans-affairs/va.gov-cms#readme) - describes an overview of the CMS product in terms of repositories and architecture + - [ ] New to Github and markdown? [Learn about writing on Github](https://docs.github.com/en/github/writing-on-github/getting-started-with-writing-and-formatting-on-github) or [watch a tutorial video](https://youtu.be/TBbtbKplUoc) + +#### Slack for instant messaging +- [ ] [Review Slack etiquette](https://slack.com/blog/collaboration/etiquette-tips-in-slack). +- [ ] Update your profiles in Slack (in DSVA and your agency workspace): add a calendar link, profile picture, your role and team. + - [ ] Your Delivery Manager should add you to appropriate Slack user groups for the DSVA workspace (e.g. `@cms-team`, `@cms-helpdesk`, `@public-websites-team`, `@facilities-team`. Also `@cms-engineers-group` for eng.) + +**Channels** +- [ ] A6/agency workspace = `#proj-sitewide` + - [ ] DSVA workspace = `#sitewide-program`, and your team channel e.g. `#sitewide-public-websites`, `#sitewide-facilities` + - [ ] [VA Slack Channel Overview](https://docs.google.com/spreadsheets/d/1_lZzectbSzs8zt4dvTFJTiPURxa0Kfp3xinYEuZdqq4/edit#gid=0) describes useful channels to be aware of / join. Note that many are going to be dependent on which workstream you're in (DevOps, Helpdesk, UX, etc.). Feel free to join whichever you think will aid you and your work. + +#### SOCKS - VA network proxy (after your Platform Orientation) +The VA network is required in order to access Drupal CMS and other VA tools. Network access usually requires a VA ID card (also called a "PIV" or Smartcard). Until your paperwork is approved and you receive a PIV card, using the SOCKS proxy can provide earlier access to some of these tools. **You cannot be approved for SOCKS access until your eQip is sent and you receive a "transmittal notice" confirming receipt.** If you have received an eQip transmittal notice, but not a PIV, please complete the steps for SOCKS access. This is the first priority for week two, especially for engineers. (If your role doesn't demand immediate access to the CMS, you may be able to wait until you receive a PIV.) + +This can be a complex process. Post in #sitewide-program Slack channel if you need help from a current member - we're happy to help. + - [ ] Take a screenshot of your eQip transmittal notice. + - [ ] [Request a Github personal access token](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token). You only need to do the "repo" panel in that form and leave the other panels as is. You'll need the output of this for your SOCKS request. + - [ ] File a [SOCKS proxy request](https://depo-platform-documentation.scrollhelp.site/getting-started/Internal-tools-access-via-SOCKS-proxy.1821081710.html) and select the label for your team. It may take a day or two for the SOCKS proxy request to be fulfilled before you can complete the rest of the SOCKS process. + - [ ] Attach your eQip transmittal notice screenshot. This is an acknowledgement that your paperwork is being processed from a security standpoint. You cannot receive SOCKS access prior to this point in your onboarding. + - [ ] Add a comment to note the scheduled date of your [Platform orientation](https://depo-platform-documentation.scrollhelp.site/getting-started/Calendly-Orientation-Sessions.2133393543.html#CalendlyOrientationSessions-GeneralOrientation), if you haven't yet completed it. (This should have been requested on day one but is here as a reminder that this is a blocker for SOCKS access.) +- [ ] Optional [Core Tunnel set up for SOCKS proxy on all browsers on Mac](https://www.youtube.com/watch?v=fSuN9LhkB5o) + +You can file the SOCKS request before completing your Platform Orientation, but it may not be approved/fulfilled until after. + +#### Drupal +Drupal is the VA's content management system of choice. For anyone on our team, it's beneficial to have a CMS user account so you can login, look at settings, and understand how the CMS works at a high level. If you need help completing the technical steps here, schedule 30 mins with your Delivery Manager. + - [ ] **Drupal production access**: (SOCKS or VA network required) - in DSVA #cms-support channel, use the Slack workflow to file a helpdesk support request. Ask the helpdesk to create a Drupal user for you in [prod.cms.va.gov](prod.cms.va.gov). + * DevOps team members require an administrator account. (SOCKS or VA access with PIV card required) + * Standard practice for other roles is to have minimal access in prod (content editor or even a blocked account) and full admin access in lower environments. + - [ ] [View Topic Dives](https://github.com/department-of-veterans-affairs/va.gov-team/tree/master/teams/sitewide/topic-dives) (short presentations on specific topics). Topics include site alerts, release and deploy, Facility API, etc. + - [ ] [Browse the VA Drupal CMS Knowledge Base articles](https://prod.cms.va.gov/help/). + - [ ] What is Drupal? [Link list for Drupal context and community](https://docs.google.com/spreadsheets/d/11ppWiIggKJh-YAWia28utZXW48tJZGCEg-sFJ6eIl9c) + - [ ] If you have a Drupal.org account, add your Agency & VA. Drupal.org > Login > My Account > Edit profile > Work tab > Add your agency, and "Department of Veterans Affairs" & save. This will help our team track Drupal open source contributions. + +##### Tugboat demo environments (Drupal) +Tugboat is a development server platform where you can preview CMS code changes pre-production. + - [ ] [Tugboat for engineers](https://github.com/department-of-veterans-affairs/va.gov-cms/blob/main/READMES/tugboat.md) + - [ ] [Tugboat for non-engineers](https://prod.cms.va.gov/help/demo-environments-tugboat-guides) SOCKS required + +#### Other tools / access +- [ ] [Google Drive](https://drive.google.com/drive/u/0/folders/0ADx85_gnl3Y4Uk9PVA?ths=true) for team documents. VA doesn't have access to view Google products while on the VA network. Use Github or downloadable files when sharing with VA. +- [ ] [Trello](https://trello.com/vacmsteam) for retro boards + +
+
Month one + +## Month one +By this point you should have enough context and access to be able to start contributing. Work with your team to identify specific issues to focus on. + +### People +- [ ] Who are our VA points of contact? Discuss with your Delivery Manager or Product Manager. +- [ ] Who should we know on the platform teams? Discuss with your Delivery Manager or Product Manager. + +### Access & Delivery +**Paperwork** +- [ ] Complete any VA-assigned trainings in the TMS system. If the TMS learning modules malfunction, assign yourself the print version of the module. (Ask in #proj-sitewide-vfs-cms-team if you need help.) +- [ ] You'll receive an email confirming that you have been approved for remote access. + - [ ] **Both**: You can contact Enterprise Service desk via provided instructions to set up your remote desktop access manually, if you need access prior to receiving your PIV card. + - [ ] **If on Windows**: Windows users must use the Azure Virtual Desktop (AVD). [Instructions](https://gcc02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdigital.va.gov%2Femployee-resources%2Fremote-access%2Fazure-virtual-desktop%2F&data=05%7C01%7C%7Cdec2e51d4f3b472b1dec08db921d522a%7Ce95f1b23abaf45ee821db7ab251ab3bf%7C0%7C0%7C638264426849334591%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=2yQ9gfPbUzsJSICXG1TvFY8LJhsVKE%2FGB12%2Bs%2FPNrlY%3D&reserved=0). You'll need network access to reach that link, which you should receive instructions in email for how to achieve. + - [ ] **If on Mac / Linux**: Mac users will also use Azure Virtual Desktop (AVD) _eventually._ As of Aug 2023, if you are a new hire on Mac, you are a guinea pig. Do your best with these instructions, ask your DM for help if they don't work, and ask your DM to update this [issuetemplate](https://github.com/department-of-veterans-affairs/va.gov-cms/edit/main/.github/ISSUE_TEMPLATE/cms-team-and-sitewide-crew-member-onboarding.md) with correct notes after it's all sorted out. Mac users have 2 options: + - [ ] 1. Azure web client: https://client.wvd.microsoft.com/arm/webclient/, IF you have a PIV card. There is an Azure desktop client but it won’t work on a mac because the mac application doesn’t support PIV authentication. . (Try using Firefox and make sure pop-ups are allowed, at least for the MS domain if not globally (they are not allowed by default). Enter your VA email address. Connect your PIV card reader to your computer, and insert the card in the reader. Select ‘Sign in using an X.509 certificate’. + - [ ] 2. Citrix Access Gateway (CAG): use your Enterprise Service desk credentials or PIV card to log onto CAG and request an exemption [here](https://gcc02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fapps.gov.powerapps.us%2Fplay%2Fe%2Fdefault-e95f1b23-abaf-45ee-821d-b7ab251ab3bf%2Fa%2F5823591d-4113-4f49-ba75-ea95a5081b41%3FtenantId%3De95f1b23-abaf-45ee-821d-b7ab251ab3bf%26source%3Dportal&data=05%7C01%7C%7Cdec2e51d4f3b472b1dec08db921d522a%7Ce95f1b23abaf45ee821db7ab251ab3bf%7C0%7C0%7C638264426849490249%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=36fW8GZiUuh1AhaokCn47xqF41PolOoaT40f%2BfGsDBs%3D&reserved=0) +- [ ] After your background check is complete, you will get an email to get your Personal Identify Verification (PIV) card. Contact your local VA office (where you got your fingerprints taken) for information about getting your [PIV card](https://www.oit.va.gov/programs/piv/how-to.cfm?). + - [ ] Review a [video about the benefits of the PIV card and VA network access](https://youtu.be/6rI-i8zmOzE). + - [ ] PIV card will help you get remote VA network access. See [VA network remote access options](https://www.oit.va.gov/resources/remote-access/index.cfm?) + - [ ] [Azure virtual desktop is recommended for Windows](https://www.oit.va.gov/resources/remote-access/azure-virtual-desktop/) + - [ ] Mac users should [follow these CAG download instructions](https://docs.google.com/document/d/1_3HKMk4AXyqAoQcfF4CthEQ7uU_d1h9Tt7CPHGJ-FaM) + - [ ] Purchase a card reader, if you don't have one. A6 IT recommends these options: [USB](https://www.amazon.com/gp/product/B002N3MM6W/ref=ppx_yo_dt_b_asin_title_o01_s00?ie=UTF8&th=1) or [USB-C](https://www.amazon.com/gp/product/B002N3MM6W/ref=ppx_yo_dt_b_asin_title_o01_s00?ie=UTF8&th=1) + - [ ] Use your PIV card to access CAG. You must access CAG every 60 days or your access will be expired. + +
+ +### Discipline specific onboarding (UX, developers, helpdesk, etc.) +Remove the sections that don't apply + +- [ ] What do I need to know about my discipline on this team (DevOps, Engineering, Helpdesk, ID, UX)? Discuss with your discipline lead. +- [ ] What applications or discipline-specific tools are needed? Discuss with your discipline lead. + + +
Onboarding for Engineers + +## Onboarding for Engineers + + ### VA Platform documentation + - [ ] [VA Platform documentation](https://depo-platform-documentation.scrollhelp.site/developer-docs/) - the VA Platform team centrally support all product development teams, including infrastructure and much developer tooling. + - [ ] [VA Technical Architecture Overview](https://github.com/department-of-veterans-affairs/va.gov-team-sensitive/blob/master/platform/engineering/TechnicalArchitectureOverview.md) - describes technical architecture of va.gov (+ api.va.gov) + +### Dev environment configuration +Each repository includes READMEs to help with setup. +- [ ] CMS workflow: https://github.com/department-of-veterans-affairs/va.gov-cms#readme. (If you are developing for the front-end, you may not need to set up the CMS repo immediately. It's the home of much engineering documentation for our team, however, so is worth reviewing as a starting point.) +- [ ] Front-end workflow: https://depo-platform-documentation.scrollhelp.site/developer-docs/frontend-workflow +- [ ] [Front-end steps to run & build VA.gov locally](https://depo-platform-documentation.scrollhelp.site/developer-docs/run-and-build-va-gov-locally) + +### Repositories +* CMS: https://github.com/department-of-veterans-affairs/va.gov-cms - Drupal +* content-build: https://github.com/department-of-veterans-affairs/vagov-content - Node.js, Metalsmith. Templating layer, "the back-end of the front-end" +* vets-website: https://github.com/department-of-veterans-affairs/vets-website - Node.js / React apps. "The front-end of the front-end." +* vets-api: https://github.com/department-of-veterans-affairs/vets-api - Ruby +* devops: https://github.com/department-of-veterans-affairs/devops - Primarily owned by Platform team, we contribute regex for redirects. + +### Build systems / Environments +- [ ] Deployments: https://depo-platform-documentation.scrollhelp.site/developer-docs/deployments + - [ ] [CMS & Front-end Repos & Build jobs - cheatsheet](https://docs.google.com/spreadsheets/d/164H07n4FChg-JxJZu964nfg2wAX0kPD0SjTfZMhzj_I/edit#gid=0) - unofficial documentation to help navigate build system timings / channels for notifications +- [ ] [Front-end deployment dashboard](https://department-of-veterans-affairs.github.io/veteran-facing-services-tools/frontend-support-dashboard/) - **bookmark this** - displays the deployment status of commits in `content-build` and `vets-website`, through Dev > Staging > Prod +- [ ] [Learn about the different Drupal environments](https://github.com/department-of-veterans-affairs/va.gov-cms/blob/main/READMES/environments.md) - explains the CMS > content build process and data source / snapshot timing for all lower environments + - [ ] If you are using a non-VA laptop for development you will need [follow the instructions on Github](https://github.com/department-of-veterans-affairs/va.gov-cms/blob/main/READMES/https.md) to trust the VA Root Certificate Authority (CA) in your browser(s) + +### Design system + - [ ] Review the [VA.gov Design System](https://design.va.gov/) which includes [how to provide feedback]([https://design.va.gov/about/feedback](https://design.va.gov/about/feedback)) + + +### Tools & Resources +- [ ] [VA.gov tools overview](https://depo-platform-documentation.scrollhelp.site/getting-started/Request-access-to-tools.969605215.html) + - [ ] [Access to dev & staging to be able to replicate the SSO piece of the login experience](https://github.com/department-of-veterans-affairs/va.gov-cms/issues/5838) (SOCKS or VA access with PIV card required) + - [ ] Test User Dashboard: https://tud.vfs.va.gov/ and [Test User Dashboard docs](https://depo-platform-documentation.scrollhelp.site/developer-docs/test-user-dashboard-guide). In lower environments, we are encouraged not to use our actual login credentials to test authed work. The TUD provides a set of test users you can use to login to various environments for testing. + - [ ] [Datadog](https://depo-platform-documentation.scrollhelp.site/developer-docs/get-access-to-datadog) to access monitoring metrics (write licenses are limited, so only read-only might be available) +- [ ] [GraphQL Explorer](https://staging.cms.va.gov/graphql/explorer) - GraphQL acts as the Drupal content API, for building queries that can be used in FE templates. The Explorer (on Staging) will allow you to test those queries. +- [ ] Browse the [Topic Dives videos](https://github.com/department-of-veterans-affairs/va.gov-team/tree/master/teams/sitewide/topic-dives) - includes CMS content, and non-CMS topics for Facilities & Public Websites teams as well + +
+ +
Onboarding for Product Managers + + - [ ] Review [onboarding docs](https://github.com/department-of-veterans-affairs/va.gov-team/blob/master/platform/cms/onboarding/PM/) + - [ ] [VA doc: Expectations for how VA internal Product Lead / Product Owners work with contractor PMs](https://github.com/department-of-veterans-affairs/va.gov-team/blob/master/octo/product/Product%20Expectations.md) + - [ ] [Request access to Google Analytics and Domo](https://depo-platform-documentation.scrollhelp.site/analytics-monitoring/New-Users-to-Google-Analytics.1877704964.html) + +**VA Platform Collab Cycle** + - [ ] [Platform Collab Cycle documentation](https://depo-platform-documentation.scrollhelp.site/collaboration-cycle/) + - [ ] [Platform Collab Cycle calendar](https://calendar.google.com/calendar/u/0/embed?src=c_7iurst2mk3hdhfuto5u7lemgbk@group.calendar.google.com&ctz=America/New_York) + +**CMS Collab Cycle** +- [ ] [CMS Collab Cycle documentation](LINK TBD on CMS provision of Plat Confluence access or migration of docs to DEPO website) +- [ ] [CMS Collab Cycle kanban board](https://github.com/department-of-veterans-affairs/va.gov-cms#workspaces/cms-collaboration-cycle-reviews-62f50368ef32b60022d76d64/board?repos=154174777) + +**Tracking features** +- [ ] [CMS & Front-end Repos & Build jobs - cheatsheet](https://docs.google.com/spreadsheets/d/164H07n4FChg-JxJZu964nfg2wAX0kPD0SjTfZMhzj_I/edit#gid=0) - unofficial documentation to help navigate understanding our build systems & channels for notifications +- [ ] [Front-end deployment dashboard](https://department-of-veterans-affairs.github.io/veteran-facing-services-tools/frontend-support-dashboard/) - **bookmark this** - displays the status of fixes/enhancements as they deploy through Dev > Staging > Prod (for both content-build and vets-website) + +
+ +
Onboarding for UX members + +## Onboarding for UX members +Your discipline lead will assist with onboarding tasks / calls. + +- [ ] Attend design onboarding call 1: [You are here](https://docs.google.com/presentation/d/1zrHekhA56JhtobKv8JtEUyM_d9sMWYTh1CWIjVcYTzI/edit) + - You'll get an invite during Week 3-ish. +- [ ] Attend design onboarding call 2: [Partners](https://docs.google.com/presentation/d/1__iyFNPB03u850nXDjG4uRgK0jmCL16e5PradD29jmk/edit) + - You'll get an invite during Week 3-ish. +- [ ] Reading (this is more for Public Websites and Facilities teams, but helpful context for everyone) + - [Collaboration Cycle](https://depo-platform-documentation.scrollhelp.site/collaboration-cycle/collaboration-cycle-kickoff) + - [Research Overview](https://depo-platform-documentation.scrollhelp.site/research-design/research-overview) + - [VA Design System](https://design.va.gov/) +- [ ] Install tools and request access from your DM, if not already provided + - [ ] Sketch (for designers on Public Websites or Facilities) + - [ ] [Mural](https://app.mural.co/t/departmentofveteransaffairs9999) - when you have been assigned your VA email address, ask your DM to add you to Team folders in Mural. Without a VA email, other users can share the Visitor link to Murals so you can view them meantime. + - [ ] Figma (for designers on Sitewide CMS) + - [ ] Airtable (for Research / Content strategists) + - [ ] Review and start getting acquainted with existing design systems. +- [ ] Helpful Slack channels to join + - #accessibility-ops + - #design + - #cms-design + - #inclusive-design + - #research-ops + - #accessibility-help +- [ ] Fonts to download + - Lucida Grande [download from fontsgeek.com](https://fontsgeek.com/fonts/Lucida-Grande-Regular) + - Source Sans Pro [download from Google Fonts](https://fonts.google.com/specimen/Source+Sans+Pro) + - Bitter [download from Google Fonts](https://fonts.google.com/specimen/Bitter) +- [ ] Request an "Ask-Me-Anything" call [optional] + - It's an opportunity to ask any lingering questions and clarify any information we've covered. +- [ ] Download a [markdown cheat sheet](https://cheatography.com/lucbpz/cheat-sheets/the-ultimate-markdown/pdf/) [optional] +- [ ] Request a Github Cliff's Notes call [optional] + - Aren't comfortable with Github? It's cool. We have people who can help. + - [ ] Watch the "Github / pull request basics for non-engineers" [Topic Dive](https://va-gov.atlassian.net/wiki/spaces/VAGOV/pages/1714094110/CMS+Topic+Dives) +
+ +
Onboarding for Researchers + +- [ ] Review https://depo-platform-documentation.scrollhelp.site/research-design/ + - [ ] [Sign up for the next research and design orientation session](https://calendly.com/collaboration-cycle/design-orientation-for-va-gov-platform) + - [ ] After orientation, you should be added to the [va.gov-research-repository](https://github.com/department-of-veterans-affairs/va.gov-research-repository). Verify your access. +- [ ] Join #research-ops channel in DSVA slack +- [ ] Join DSVA #design slack channel and request that your agency and VA email addresses be added to the invite for the weekly Monday VA Design/UX Sync meeting (@mention Cailin O'Connor) + +
+ +
Onboarding for Delivery Managers + +## Onboarding for Delivery Managers +- [ ] Request your onboarding buddy provide access to [CMS Support distro group](https://mim.va.gov/IdentityManagement/default.aspx) - must access on VA network (requires PIV card + CAG access) +- [ ] Review Contract responsibilities doc for [Sitewide](https://docs.google.com/document/d/1IXyXzenfdVoSM7O5KklLsI1aBIdLM6PVQJbuIevdgiw/edit) +- [ ] Review Sprint reporting runbook for [Sitewide](https://docs.google.com/document/d/1aI1QMXZMYRaqVj7QbqYF9FIQ7ittD4VXyYQWWMLJ5Ow/edit) +- [ ] Review other Delivery documents in [Google Drive](https://drive.google.com/drive/u/1/folders/1mFC5NCUkeQlGX2S8TIpD1om2V-5B0ikc) + +
+ + +### Team-specific onboarding (Facilities, Public Websites) +Remove the sections that don't apply + + +
Facilities Team Onboarding + + ## Onboarding for Facilities + - [ ] Read the [Facilities team charter](https://docs.google.com/document/d/1eI1w9Bcj2rlmFtxkM6Dkn_c-Srszd88UxAQimSZkVqo/edit#) + - [ ] [Facilities product portfolio notes ](https://github.com/department-of-veterans-affairs/va.gov-team/tree/master/products/facilities) + +
+ +
Public Websites Team Onboarding + + ## Onboarding for Public Websites + - [ ] Read the [Public Websites team charter](https://docs.google.com/document/d/1jiq90ffon5UxAqybiEncl8feqmXhEOChlijiDBOWUtc/edit#heading=h.tu2ayudos7uc) + - [ ] [Public Websites product portfolio documentation ](https://github.com/department-of-veterans-affairs/va.gov-team/tree/master/products/public-websites) + +
diff --git a/composer.json b/composer.json index b52efde497..71aaf820d0 100644 --- a/composer.json +++ b/composer.json @@ -134,7 +134,7 @@ "drupal/migrate_tools": "^6.0", "drupal/migration_tools": "^2.8", "drupal/mimemail": "^1.0@alpha", - "drupal/monolog": "^3.0", + "drupal/monolog": "^2.0", "drupal/next": "^1.1", "drupal/no_table_drag": "^2.0@alpha", "drupal/node_link_report": "^1.14", @@ -223,7 +223,7 @@ "symfony/phpunit-bridge": "^5.1", "symfony/process": "^6.3", "symfony/routing": "^6.3", - "va-gov/content-build": "^0.0.3445", + "va-gov/content-build": "^0.0.3446", "vlucas/phpdotenv": "^5.3", "webflo/drupal-finder": "^1.0.0", "webmozart/path-util": "^2.3", diff --git a/composer.lock b/composer.lock index 510899df6d..bd7db7839f 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": "5c3df526618a70dfaeeafe7671a6e6f8", + "content-hash": "5519bf62017d8599ccdfed6913db3979", "packages": [ { "name": "asm89/stack-cors", @@ -3038,6 +3038,10 @@ { "name": "boromino", "homepage": "https://www.drupal.org/user/859722" + }, + { + "name": "mparker17", + "homepage": "https://www.drupal.org/user/536298" } ], "description": "Adds CKEditor abbreviation button.", @@ -9488,8 +9492,8 @@ "version": "1.0.1", "datestamp": "1696824307", "security-coverage": { - "status": "not-covered", - "message": "Project has not opted into security advisory coverage!" + "status": "covered", + "message": "Covered by Drupal's security advisory policy" } } }, @@ -10188,36 +10192,28 @@ }, { "name": "drupal/monolog", - "version": "3.0.2", + "version": "2.2.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/monolog.git", - "reference": "3.0.2" + "reference": "2.2.0" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/monolog-3.0.2.zip", - "reference": "3.0.2", - "shasum": "a88e8249028e56a21c4472891381412b9733f768" + "url": "https://ftp.drupal.org/files/projects/monolog-2.2.0.zip", + "reference": "2.2.0", + "shasum": "3f243ccfb19cb30c75637882e24b1d8acfdb2f9a" }, "require": { - "drupal/core": "^10", - "monolog/monolog": "^3.2.0", - "php": "^8.1.0" - }, - "require-dev": { - "mglaman/phpstan-drupal": "^1.1", - "phpstan/extension-installer": "^1.3", - "phpstan/phpstan": "^1.11", - "phpstan/phpstan-deprecation-rules": "*", - "phpstan/phpstan-strict-rules": "^1.5", - "previousnext/coding-standard": "^1.0" + "drupal/core": "^8.8 || ^9 || ^10", + "monolog/monolog": "^2.8.0", + "php": "^7.4|^8" }, "type": "drupal-module", "extra": { "drupal": { - "version": "3.0.2", - "datestamp": "1707845433", + "version": "2.2.0", + "datestamp": "1662121628", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -10235,14 +10231,14 @@ ], "authors": [ { - "name": "Luca Lusso", + "name": "Chris Pliakas", "homepage": "https://www.drupal.org/user/266779", - "email": "lussoluca@gmail.com", + "email": "opensource@chrispliakas.com", "role": "Project Lead" }, { "name": "See contributors", - "homepage": "https://drupal.org/node/1937716/committers", + "homepage": "http://drupal.org/node/1937716/committers", "role": "Developer" }, { @@ -10251,10 +10247,10 @@ } ], "description": "A Framework for integrating with the Monolog library.", - "homepage": "https://drupal.org/project/monolog", + "homepage": "http://drupal.org/project/monolog", "support": { "source": "https://git.drupalcode.org/project/monolog", - "issues": "https://drupal.org/project/issues/monolog" + "issues": "http://drupal.org/project/issues/monolog" } }, { @@ -16890,41 +16886,42 @@ }, { "name": "monolog/monolog", - "version": "3.5.0", + "version": "2.9.2", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "c915e2634718dbc8a4a15c61b0e62e7a44e14448" + "reference": "437cb3628f4cf6042cc10ae97fc2b8472e48ca1f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/c915e2634718dbc8a4a15c61b0e62e7a44e14448", - "reference": "c915e2634718dbc8a4a15c61b0e62e7a44e14448", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/437cb3628f4cf6042cc10ae97fc2b8472e48ca1f", + "reference": "437cb3628f4cf6042cc10ae97fc2b8472e48ca1f", "shasum": "" }, "require": { - "php": ">=8.1", - "psr/log": "^2.0 || ^3.0" + "php": ">=7.2", + "psr/log": "^1.0.1 || ^2.0 || ^3.0" }, "provide": { - "psr/log-implementation": "3.0.0" + "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" }, "require-dev": { - "aws/aws-sdk-php": "^3.0", + "aws/aws-sdk-php": "^2.4.9 || ^3.0", "doctrine/couchdb": "~1.0@dev", "elasticsearch/elasticsearch": "^7 || ^8", "ext-json": "*", - "graylog2/gelf-php": "^1.4.2 || ^2.0", - "guzzlehttp/guzzle": "^7.4.5", + "graylog2/gelf-php": "^1.4.2 || ^2@dev", + "guzzlehttp/guzzle": "^7.4", "guzzlehttp/psr7": "^2.2", "mongodb/mongodb": "^1.8", "php-amqplib/php-amqplib": "~2.4 || ^3", - "phpstan/phpstan": "^1.9", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-strict-rules": "^1.4", - "phpunit/phpunit": "^10.1", - "predis/predis": "^1.1 || ^2", + "phpspec/prophecy": "^1.15", + "phpstan/phpstan": "^0.12.91", + "phpunit/phpunit": "^8.5.14", + "predis/predis": "^1.1 || ^2.0", + "rollbar/rollbar": "^1.3 || ^2 || ^3", "ruflin/elastica": "^7", + "swiftmailer/swiftmailer": "^5.3|^6.0", "symfony/mailer": "^5.4 || ^6", "symfony/mime": "^5.4 || ^6" }, @@ -16947,7 +16944,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.x-dev" + "dev-main": "2.x-dev" } }, "autoload": { @@ -16975,7 +16972,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/3.5.0" + "source": "https://github.com/Seldaek/monolog/tree/2.9.2" }, "funding": [ { @@ -16987,7 +16984,7 @@ "type": "tidelift" } ], - "time": "2023-10-27T15:32:31+00:00" + "time": "2023-10-27T15:25:26+00:00" }, { "name": "mtownsend/xml-to-array", @@ -18517,16 +18514,16 @@ }, { "name": "phpdocumentor/type-resolver", - "version": "1.8.1", + "version": "1.8.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "bc3dc91a5e9b14aa06d1d9e90647c5c5a2cc5353" + "reference": "fad452781b3d774e3337b0c0b245dd8e5a4455fc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/bc3dc91a5e9b14aa06d1d9e90647c5c5a2cc5353", - "reference": "bc3dc91a5e9b14aa06d1d9e90647c5c5a2cc5353", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/fad452781b3d774e3337b0c0b245dd8e5a4455fc", + "reference": "fad452781b3d774e3337b0c0b245dd8e5a4455fc", "shasum": "" }, "require": { @@ -18569,9 +18566,9 @@ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", "support": { "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.8.1" + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.8.0" }, - "time": "2024-01-18T19:15:27+00:00" + "time": "2024-01-11T11:49:22+00:00" }, { "name": "phpmailer/phpmailer", @@ -25896,16 +25893,16 @@ }, { "name": "va-gov/content-build", - "version": "v0.0.3445", + "version": "v0.0.3446", "source": { "type": "git", "url": "https://github.com/department-of-veterans-affairs/content-build.git", - "reference": "f766b8fa1a295043a63d922494730ddac82017d0" + "reference": "9698bdedde07f95985f540b4f5d886240c2910ee" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/department-of-veterans-affairs/content-build/zipball/f766b8fa1a295043a63d922494730ddac82017d0", - "reference": "f766b8fa1a295043a63d922494730ddac82017d0", + "url": "https://api.github.com/repos/department-of-veterans-affairs/content-build/zipball/9698bdedde07f95985f540b4f5d886240c2910ee", + "reference": "9698bdedde07f95985f540b4f5d886240c2910ee", "shasum": "" }, "type": "node-project", @@ -25932,9 +25929,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.3445" + "source": "https://github.com/department-of-veterans-affairs/content-build/tree/v0.0.3446" }, - "time": "2024-02-21T17:40:10+00:00" + "time": "2024-02-23T21:52:21+00:00" }, { "name": "vlucas/phpdotenv", diff --git a/config/sync/core.entity_form_display.node.health_care_local_facility.default.yml b/config/sync/core.entity_form_display.node.health_care_local_facility.default.yml index 55a7e6fcc4..2f83e9ccc9 100644 --- a/config/sync/core.entity_form_display.node.health_care_local_facility.default.yml +++ b/config/sync/core.entity_form_display.node.health_care_local_facility.default.yml @@ -15,7 +15,6 @@ dependencies: - field.field.node.health_care_local_facility.field_location_services - field.field.node.health_care_local_facility.field_main_location - field.field.node.health_care_local_facility.field_media - - field.field.node.health_care_local_facility.field_mental_health_contact_phon - field.field.node.health_care_local_facility.field_mental_health_phone - field.field.node.health_care_local_facility.field_meta_tags - field.field.node.health_care_local_facility.field_mobile @@ -93,7 +92,7 @@ third_party_settings: label: 'VAMC system' region: content parent_name: '' - weight: 2 + weight: 3 format_type: fieldset format_settings: classes: '' @@ -107,7 +106,7 @@ third_party_settings: label: 'Title and summary' region: content parent_name: '' - weight: 3 + weight: 4 format_type: fieldset format_settings: classes: '' @@ -133,7 +132,7 @@ third_party_settings: label: 'Operating status' region: content parent_name: '' - weight: 1 + weight: 2 format_type: fieldset format_settings: classes: '' @@ -148,7 +147,7 @@ third_party_settings: label: 'Meta Tags' region: content parent_name: '' - weight: 4 + weight: 5 format_type: fieldset format_settings: classes: '' @@ -158,7 +157,6 @@ third_party_settings: group_locations_and_contact_info: children: - group_facility_data_from_vast - - field_mental_health_contact_phon label: 'Locations and contact information' region: content parent_name: '' @@ -179,7 +177,6 @@ third_party_settings: - field_geolocation - field_mobile - field_phone_number - - field_mental_health_phone - field_office_hours - field_timezone label: 'Facility data' @@ -318,16 +315,9 @@ content: settings: media_types: { } third_party_settings: { } - field_mental_health_contact_phon: - type: telephone_default - weight: 21 - region: content - settings: - placeholder: '' - third_party_settings: { } field_mental_health_phone: type: telephone_default - weight: 28 + weight: 1 region: content settings: placeholder: '' diff --git a/config/sync/core.entity_form_display.node.health_care_local_facility.inline_entity_form.yml b/config/sync/core.entity_form_display.node.health_care_local_facility.inline_entity_form.yml index bb8face28e..e8f2e84b49 100644 --- a/config/sync/core.entity_form_display.node.health_care_local_facility.inline_entity_form.yml +++ b/config/sync/core.entity_form_display.node.health_care_local_facility.inline_entity_form.yml @@ -16,7 +16,6 @@ dependencies: - field.field.node.health_care_local_facility.field_location_services - field.field.node.health_care_local_facility.field_main_location - field.field.node.health_care_local_facility.field_media - - field.field.node.health_care_local_facility.field_mental_health_contact_phon - field.field.node.health_care_local_facility.field_mental_health_phone - field.field.node.health_care_local_facility.field_meta_tags - field.field.node.health_care_local_facility.field_mobile @@ -151,7 +150,6 @@ hidden: field_location_services: true field_main_location: true field_media: true - field_mental_health_contact_phon: true field_mental_health_phone: true field_meta_tags: true field_mobile: true diff --git a/config/sync/core.entity_form_display.node.person_profile.default.yml b/config/sync/core.entity_form_display.node.person_profile.default.yml index 03ce1a73b2..5eb707bba6 100644 --- a/config/sync/core.entity_form_display.node.person_profile.default.yml +++ b/config/sync/core.entity_form_display.node.person_profile.default.yml @@ -194,7 +194,7 @@ content: counter_position: after js_prevent_submit: false count_html_characters: false - textcount_status_message: '@remaining_count characters remaining' + textcount_status_message: '@remaining_count characters remaining' third_party_settings: { } field_last_name: type: string_textfield 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 8a2ea63ceb..6a3cafd15c 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 @@ -15,7 +15,6 @@ dependencies: - field.field.node.health_care_local_facility.field_location_services - field.field.node.health_care_local_facility.field_main_location - field.field.node.health_care_local_facility.field_media - - field.field.node.health_care_local_facility.field_mental_health_contact_phon - field.field.node.health_care_local_facility.field_mental_health_phone - field.field.node.health_care_local_facility.field_meta_tags - field.field.node.health_care_local_facility.field_mobile @@ -95,7 +94,6 @@ third_party_settings: group_locations_and_contact_info: children: - group_facility_data_from_vast - - field_mental_health_contact_phon label: 'Locations and contact information' parent_name: '' region: content @@ -202,14 +200,6 @@ content: third_party_settings: { } weight: 0 region: content - field_mental_health_contact_phon: - type: telephone_link - label: inline - settings: - title: '' - third_party_settings: { } - weight: 20 - region: content field_mental_health_phone: type: telephone_link label: inline 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 c148f6326c..7140d844db 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 @@ -16,7 +16,6 @@ dependencies: - field.field.node.health_care_local_facility.field_location_services - field.field.node.health_care_local_facility.field_main_location - field.field.node.health_care_local_facility.field_media - - field.field.node.health_care_local_facility.field_mental_health_contact_phon - field.field.node.health_care_local_facility.field_mental_health_phone - field.field.node.health_care_local_facility.field_meta_tags - field.field.node.health_care_local_facility.field_mobile @@ -43,7 +42,7 @@ third_party_settings: label: Meta parent_name: '' region: hidden - weight: 13 + weight: 22 format_type: fieldset format_settings: classes: '' @@ -56,7 +55,7 @@ third_party_settings: label: 'Operating status' parent_name: '' region: hidden - weight: 11 + weight: 20 format_type: fieldset format_settings: classes: '' @@ -67,7 +66,7 @@ third_party_settings: label: 'Social media' parent_name: '' region: hidden - weight: 17 + weight: 26 format_type: details format_settings: classes: '' @@ -81,7 +80,7 @@ third_party_settings: label: 'Prepare for your visit' parent_name: '' region: hidden - weight: 14 + weight: 23 format_type: details format_settings: classes: '' @@ -94,7 +93,6 @@ third_party_settings: - field_address - field_mobile - field_phone_number - - field_mental_health_phone - field_office_hours label: 'Location Information' parent_name: '' @@ -133,7 +131,7 @@ third_party_settings: label: 'Title and summary' parent_name: '' region: hidden - weight: 12 + weight: 21 format_type: fieldset format_settings: classes: '' @@ -146,7 +144,7 @@ third_party_settings: label: 'Section settings' parent_name: '' region: hidden - weight: 15 + weight: 24 format_type: details_sidebar format_settings: classes: '' @@ -162,7 +160,7 @@ third_party_settings: label: 'Editorial workflow' parent_name: '' region: hidden - weight: 16 + weight: 25 format_type: fieldset format_settings: classes: '' @@ -192,14 +190,6 @@ content: third_party_settings: { } weight: 17 region: content - field_mental_health_phone: - type: string - label: above - settings: - link_to_entity: false - third_party_settings: { } - weight: 21 - region: content field_mobile: type: boolean label: above @@ -220,6 +210,7 @@ content: grouped: false show_closed: all closed_format: Closed + all_day_format: 'All day open' separator: days: '
' grouped_days: ' - ' @@ -230,6 +221,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: @@ -268,7 +264,7 @@ hidden: field_location_services: true field_main_location: true field_media: true - field_mental_health_contact_phon: true + field_mental_health_phone: true field_meta_tags: true field_meta_title: true field_operating_status_facility: 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 54d54c1bd5..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 @@ -16,7 +16,6 @@ dependencies: - field.field.node.health_care_local_facility.field_location_services - field.field.node.health_care_local_facility.field_main_location - field.field.node.health_care_local_facility.field_media - - field.field.node.health_care_local_facility.field_mental_health_contact_phon - field.field.node.health_care_local_facility.field_mental_health_phone - field.field.node.health_care_local_facility.field_meta_tags - field.field.node.health_care_local_facility.field_mobile @@ -120,7 +119,6 @@ hidden: field_local_health_care_service_: true field_location_services: true field_main_location: true - field_mental_health_contact_phon: true field_mental_health_phone: true field_meta_tags: true field_mobile: true diff --git a/config/sync/core.entity_view_display.node.health_care_local_facility.teaser.yml b/config/sync/core.entity_view_display.node.health_care_local_facility.teaser.yml index 45398d6261..23950b24f1 100644 --- a/config/sync/core.entity_view_display.node.health_care_local_facility.teaser.yml +++ b/config/sync/core.entity_view_display.node.health_care_local_facility.teaser.yml @@ -16,7 +16,6 @@ dependencies: - field.field.node.health_care_local_facility.field_location_services - field.field.node.health_care_local_facility.field_main_location - field.field.node.health_care_local_facility.field_media - - field.field.node.health_care_local_facility.field_mental_health_contact_phon - field.field.node.health_care_local_facility.field_mental_health_phone - field.field.node.health_care_local_facility.field_meta_tags - field.field.node.health_care_local_facility.field_mobile @@ -96,7 +95,6 @@ hidden: field_location_services: true field_main_location: true field_media: true - field_mental_health_contact_phon: true field_mental_health_phone: true field_meta_tags: true field_mobile: true diff --git a/config/sync/core.extension.yml b/config/sync/core.extension.yml index fea07b9194..bd1af12f53 100644 --- a/config/sync/core.extension.yml +++ b/config/sync/core.extension.yml @@ -259,6 +259,7 @@ module: va_gov_content_types: 0 va_gov_dashboards: 0 va_gov_db: 0 + va_gov_eca: 0 va_gov_entity_browser: 0 va_gov_environment: 0 va_gov_events: 0 diff --git a/config/sync/eca.eca.expiring_fwb.yml b/config/sync/eca.eca.expiring_fwb.yml new file mode 100644 index 0000000000..cf53a4e455 --- /dev/null +++ b/config/sync/eca.eca.expiring_fwb.yml @@ -0,0 +1,39 @@ +uuid: 363d384e-b996-41b9-8cbd-f6b0dbe01e76 +langcode: en +status: false +dependencies: + module: + - eca_base + - va_gov_eca +id: expiring_fwb +modeller: core +label: 'Scheduled Notifications: Expiring FWB' +version: 0.1.0 +weight: null +events: + eca_base_eca_cron: + plugin: 'eca_base:eca_cron' + label: 'ECA cron event' + configuration: + frequency: '* * * * *' + successors: + - + id: action_message_action + condition: views_result +conditions: + views_result: + plugin: views_result + configuration: + negate: false + view_name: scheduled_notifications_full_width_alert + display_name: eca_result_1 + arguments: { } +gateways: { } +actions: + action_message_action: + plugin: action_message_action + label: 'Display a message to the user' + configuration: + message: 'The Scheduled Notifications: Full Width Alert View has results.' + replace_tokens: false + successors: { } diff --git a/config/sync/eca.eca.test.yml b/config/sync/eca.eca.test.yml deleted file mode 100644 index 039b2e051c..0000000000 --- a/config/sync/eca.eca.test.yml +++ /dev/null @@ -1,13 +0,0 @@ -uuid: 107ef63e-ce69-45fd-b6f4-4723b95f1994 -langcode: en -status: false -dependencies: { } -id: test -modeller: core -label: Test -version: null -weight: null -events: { } -conditions: { } -gateways: { } -actions: { } diff --git a/config/sync/field.field.node.health_care_local_facility.field_mental_health_contact_phon.yml b/config/sync/field.field.node.health_care_local_facility.field_mental_health_contact_phon.yml deleted file mode 100644 index f62a8a60d6..0000000000 --- a/config/sync/field.field.node.health_care_local_facility.field_mental_health_contact_phon.yml +++ /dev/null @@ -1,25 +0,0 @@ -uuid: 85b46732-b695-42f5-be09-413287698196 -langcode: en -status: true -dependencies: - config: - - field.storage.node.field_mental_health_contact_phon - - node.type.health_care_local_facility - module: - - telephone - - tmgmt_content -third_party_settings: - tmgmt_content: - excluded: false -id: node.health_care_local_facility.field_mental_health_contact_phon -field_name: field_mental_health_contact_phon -entity_type: node -bundle: health_care_local_facility -label: 'Mental health contact phone number' -description: 'Enter the number Veterans should call to access mental health services at your facility, for example 202-555-1234, ext. 23. If your facility doesn''t offer these services, enter the most appropriate system number. This number will be displayed everywhere your facility appears across VA.gov. View guidelines for editing VAMC facilities (opens in a new tab)' -required: false -translatable: false -default_value: { } -default_value_callback: '' -settings: { } -field_type: telephone diff --git a/config/sync/field.field.node.health_care_local_facility.field_mental_health_phone.yml b/config/sync/field.field.node.health_care_local_facility.field_mental_health_phone.yml index ff107baf8e..4643e7ea8e 100644 --- a/config/sync/field.field.node.health_care_local_facility.field_mental_health_phone.yml +++ b/config/sync/field.field.node.health_care_local_facility.field_mental_health_phone.yml @@ -16,7 +16,7 @@ field_name: field_mental_health_phone entity_type: node bundle: health_care_local_facility label: 'Mental health phone number' -description: '' +description: 'Enter the number Veterans should call to access mental health services at your facility, for example 202-555-1234, ext. 23. If your facility doesn''t offer these services, enter the most appropriate system number. This number will be displayed everywhere your facility appears across VA.gov. View guidelines for editing VAMC facilities (opens in a new tab)' required: false translatable: false default_value: { } diff --git a/config/sync/field.storage.node.field_mental_health_contact_phon.yml b/config/sync/field.storage.node.field_mental_health_contact_phon.yml deleted file mode 100644 index a32d2da389..0000000000 --- a/config/sync/field.storage.node.field_mental_health_contact_phon.yml +++ /dev/null @@ -1,19 +0,0 @@ -uuid: 0b19fe89-c843-4663-a729-1244f4931208 -langcode: en -status: true -dependencies: - module: - - node - - telephone -id: node.field_mental_health_contact_phon -field_name: field_mental_health_contact_phon -entity_type: node -type: telephone -settings: { } -module: telephone -locked: false -cardinality: 1 -translatable: true -indexes: { } -persist_with_no_fields: false -custom_storage: false diff --git a/config/sync/migrate_plus.migration.va_node_health_care_local_facility.yml b/config/sync/migrate_plus.migration.va_node_health_care_local_facility.yml index 37047c74c8..f664592b7a 100644 --- a/config/sync/migrate_plus.migration.va_node_health_care_local_facility.yml +++ b/config/sync/migrate_plus.migration.va_node_health_care_local_facility.yml @@ -80,10 +80,6 @@ source: name: phone-main label: phone-main selector: properties/phone/main - - - name: phone-mental-health - label: phone-mental-health - selector: properties/phone/mental_health_clinic - name: state label: state @@ -179,29 +175,6 @@ process: 'Other Outpatient Services (OOS)': 6 'Extended Care Site (Community Living Center) (Stand-Alone)': 7 'Residential Care Site (MH RRTP/DRRTP) (Stand-Alone)': 8 - field_mental_health_phone: - plugin: str_replace - search: - - ( - - ) - - X - - ' ' - - ext - - Ext - - . - - ',' - - x - replace: - - '' - - '-' - - x - - '' - - x - - x - - '' - - '' - - ', ext. ' - source: phone-mental-health field_phone_number: plugin: str_replace search: @@ -284,7 +257,6 @@ destination: - field_timezone - changed - field_facility_classification - - field_mental_health_phone - field_phone_number - field_mobile - new_revision diff --git a/config/sync/views.view.scheduled_notifications_full_width_alert.yml b/config/sync/views.view.scheduled_notifications_full_width_alert.yml new file mode 100644 index 0000000000..66ccb5ed6e --- /dev/null +++ b/config/sync/views.view.scheduled_notifications_full_width_alert.yml @@ -0,0 +1,288 @@ +uuid: c4871759-4d7d-4aa5-bf57-9184da4a487b +langcode: en +status: true +dependencies: + config: + - core.entity_view_mode.node.teaser + - node.type.banner + module: + - node + - user + - va_gov_eca +id: scheduled_notifications_full_width_alert +label: 'Scheduled Notifications: Full Width Alert' +module: views +description: '' +tag: '' +base_table: node_field_data +base_field: nid +display: + default: + id: default + display_title: Default + display_plugin: default + position: 0 + display_options: + fields: + title: + id: title + table: node_field_data + field: title + relationship: none + group_type: group + admin_label: '' + entity_type: node + entity_field: title + plugin_id: field + label: '' + exclude: false + alter: + alter_text: false + make_link: false + absolute: false + word_boundary: false + ellipsis: false + strip_tags: false + trim: false + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: true + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + click_sort_column: value + type: string + settings: + link_to_entity: true + group_column: value + group_columns: { } + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false + pager: + type: mini + options: + offset: 0 + items_per_page: 10 + total_pages: null + id: 0 + tags: + next: ›› + previous: ‹‹ + expose: + items_per_page: false + items_per_page_label: 'Items per page' + items_per_page_options: '5, 10, 25, 50' + items_per_page_options_all: false + items_per_page_options_all_label: '- All -' + offset: false + offset_label: Offset + pagination_heading_level: h2 + exposed_form: + type: basic + options: + submit_button: Apply + reset_button: false + reset_button_label: Reset + exposed_sorts_label: 'Sort by' + expose_sort_order: true + sort_asc_label: Asc + sort_desc_label: Desc + access: + type: perm + options: + perm: 'access content' + cache: + type: tag + options: { } + empty: { } + sorts: + created: + id: created + table: node_field_data + field: created + relationship: none + group_type: group + admin_label: '' + entity_type: node + entity_field: created + plugin_id: date + order: DESC + expose: + label: '' + field_identifier: '' + exposed: false + 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: '' + type: + id: type + table: node_field_data + field: type + entity_type: node + entity_field: type + plugin_id: bundle + value: + banner: banner + style: + type: default + options: + grouping: { } + row_class: '' + default_row_class: true + uses_fields: false + row: + type: fields + options: + default_field_elements: true + inline: { } + separator: '' + hide_empty: false + query: + type: views_query + options: + query_comment: '' + disable_sql_rewrite: false + distinct: false + replica: false + query_tags: { } + relationships: { } + header: { } + footer: { } + display_extenders: { } + cache_metadata: + max-age: -1 + contexts: + - 'languages:language_content' + - 'languages:language_interface' + - url.query_args + - 'user.node_grants:view' + - user.permissions + tags: { } + eca_result_1: + id: eca_result_1 + display_title: 'ECA Result' + display_plugin: eca_result + position: 1 + display_options: + display_extenders: + jsonapi_views: + enabled: true + row: + type: 'entity:node' + options: + relationship: none + view_mode: teaser + filters: + type: + id: type + table: node_field_data + field: type + relationship: none + group_type: group + admin_label: '' + operator: in + value: + banner: banner + group: '1' + exposed: false + expose: + operator_id: false + 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: 0 + default_group: All + default_group_multiple: { } + group_items: { } + entity_type: node + entity_field: type + plugin_id: bundle + status: + id: status + table: node_field_data + field: status + relationship: none + group_type: group + admin_label: '' + operator: '=' + value: '1' + group: '1' + exposed: false + expose: + operator_id: false + label: '' + description: '' + use_operator: false + operator: '' + operator_limit_selection: false + operator_list: { } + identifier: '' + required: false + remember: false + multiple: false + remember_roles: + authenticated: authenticated + is_grouped: false + group_info: + label: '' + description: '' + identifier: '' + optional: true + widget: select + multiple: false + remember: 0 + default_group: All + default_group_multiple: { } + group_items: { } + entity_type: node + entity_field: status + plugin_id: boolean + title: 'Expiring Alerts' + cache_metadata: + max-age: -1 + contexts: + - 'languages:language_interface' + - 'user.node_grants:view' + tags: { } diff --git a/docroot/modules/custom/va_gov_backend/src/Logger/Processor/DatadogApmProcessor.php b/docroot/modules/custom/va_gov_backend/src/Logger/Processor/DatadogApmProcessor.php index db7e37d58b..6aa119fc7b 100644 --- a/docroot/modules/custom/va_gov_backend/src/Logger/Processor/DatadogApmProcessor.php +++ b/docroot/modules/custom/va_gov_backend/src/Logger/Processor/DatadogApmProcessor.php @@ -3,7 +3,6 @@ namespace Drupal\va_gov_backend\Logger\Processor; use Drupal\va_gov_backend\Service\DatadogContextProviderInterface; -use Monolog\LogRecord; use Monolog\Processor\ProcessorInterface; /** @@ -101,7 +100,7 @@ public function shouldAlterRecord(array $record): bool { /** * {@inheritdoc} */ - public function __invoke(LogRecord $record): array { + public function __invoke(array $record): array { if (!$this->shouldAlterRecord($record)) { return $record; } diff --git a/docroot/modules/custom/va_gov_eca/config/schema/va_gov_eca.views.schema.yml b/docroot/modules/custom/va_gov_eca/config/schema/va_gov_eca.views.schema.yml new file mode 100644 index 0000000000..e948873fe3 --- /dev/null +++ b/docroot/modules/custom/va_gov_eca/config/schema/va_gov_eca.views.schema.yml @@ -0,0 +1,3 @@ +views.display.eca_result: + type: views_display + label: 'ECA Result display' diff --git a/docroot/modules/custom/va_gov_eca/src/Plugin/ECA/Condition/ViewsResultCondition.php b/docroot/modules/custom/va_gov_eca/src/Plugin/ECA/Condition/ViewsResultCondition.php new file mode 100644 index 0000000000..fe5c5fc21a --- /dev/null +++ b/docroot/modules/custom/va_gov_eca/src/Plugin/ECA/Condition/ViewsResultCondition.php @@ -0,0 +1,188 @@ +moduleHandler = $module_handler; + } + + /** + * {@inheritdoc} + */ + public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition): ConditionBase { + return new static( + $configuration, + $plugin_id, + $plugin_definition, + $container->get('entity_type.manager'), + $container->get('entity_type.bundle.info'), + $container->get('request_stack'), + $container->get('eca.token_services'), + $container->get('current_user'), + $container->get('datetime.time'), + $container->get('eca.state'), + $container->get('module_handler') + ); + } + + /** + * {@inheritDoc} + */ + public function evaluate(): bool { + $result = views_get_view_result($this->configuration['view_name'], $this->configuration['display_name'], $this->configuration['arguments']); + return count($result) > 0; + } + + /** + * {@inheritdoc} + */ + public function buildConfigurationForm(array $form, FormStateInterface $form_state): array { + $view_storage = $this->entityTypeManager->getStorage('view'); + $displays = Views::getApplicableViews('eca_views_display'); + $options = []; + foreach ($displays as $data) { + [$view_id, $display_id] = $data; + $view = $view_storage->load($view_id); + $display = $view->get('display'); + $options[$view_id . ':' . $display_id] = $view_id . ' - ' . $display[$display_id]['display_title']; + } + + if ($options) { + $default = !empty($this->configuration['view_name']) && !empty($this->configuration['view_display']) ? $this->configuration['view_name'] . ':' . $this->configuration['view_display'] : ''; + $form['view']['view_and_display'] = [ + '#type' => 'select', + '#title' => $this->t('View to query'), + '#required' => TRUE, + '#options' => $options, + '#default_value' => $default, + '#description' => '

' . $this->t('Choose the view and display to retrieve results from.
Only views with a display of type "ECA Result" are eligible.') . '

', + ]; + + $default = !empty($this->configuration['arguments']) ? implode(', ', $this->configuration['arguments']) : ''; + $form['view']['arguments'] = [ + '#type' => 'textfield', + '#title' => $this->t('View arguments'), + '#default_value' => $default, + '#required' => FALSE, + '#description' => $this->t('Provide a comma separated list of arguments to pass to the view.'), + ]; + } + else { + if ($this->currentUser->hasPermission('administer views') && $this->moduleHandler->moduleExists('views_ui')) { + $form['view']['no_view_help'] = [ + '#markup' => '

' . $this->t('No eligible views were found. Create a view with an ECA Result display, or add such a display to an existing view.', [ + ':create' => Url::fromRoute('views_ui.add')->toString(), + ':existing' => Url::fromRoute('entity.view.collection')->toString(), + ]) . '

', + ]; + } + else { + $form['view']['no_view_help']['#markup'] = '

' . $this->t('No eligible views were found.') . '

'; + } + } + return parent::buildConfigurationForm($form, $form_state); + } + + /** + * {@inheritDoc} + */ + public function validateConfigurationForm(array &$form, FormStateInterface $form_state): void { + $value = $form_state->getValue('view'); + // Split view name and display name from the 'view_and_display' value. + if (!empty($value)) { + [$view, $display] = explode(':', $value['view_and_display']); + } + else { + $form_state->setError($form['view']['view_and_display'], new TranslatableMarkup('The views entity selection mode requires a view.')); + return; + } + + // Explode the 'arguments' string into an actual array. + $arguments_string = trim($value['arguments']); + if ($arguments_string === '') { + $arguments = []; + } + else { + $arguments = array_map('trim', explode(',', $arguments_string)); + } + + $value = [ + 'view_name' => $view, + 'display_name' => $display, + 'arguments' => $arguments, + ]; + $form_state->setValue('view', $value); + } + + /** + * {@inheritdoc} + */ + public function submitConfigurationForm(array &$form, FormStateInterface $form_state): void { + $view = $form_state->getValue('view'); + $this->configuration['view_name'] = $view['view_name']; + $this->configuration['display_name'] = $view['display_name']; + $this->configuration['arguments'] = $view['arguments']; + parent::submitConfigurationForm($form, $form_state); + } + +} diff --git a/docroot/modules/custom/va_gov_eca/src/Plugin/views/display/EcaViewsResultDisplay.php b/docroot/modules/custom/va_gov_eca/src/Plugin/views/display/EcaViewsResultDisplay.php new file mode 100644 index 0000000000..03a57fa5cf --- /dev/null +++ b/docroot/modules/custom/va_gov_eca/src/Plugin/views/display/EcaViewsResultDisplay.php @@ -0,0 +1,70 @@ + 'default']; + $options['defaults']['default']['style'] = FALSE; + $options['row']['contains']['type'] = ['default' => 'fields']; + $options['defaults']['default']['row'] = FALSE; + + // Set the display title to an empty string (not used in this display type). + $options['title']['default'] = ''; + $options['defaults']['default']['title'] = FALSE; + + return $options; + } + +} diff --git a/docroot/modules/custom/va_gov_eca/tests/modules/va_gov_eca_test_views/test_views/views.view.va_gov_eca_default_content.yml b/docroot/modules/custom/va_gov_eca/tests/modules/va_gov_eca_test_views/test_views/views.view.va_gov_eca_default_content.yml new file mode 100644 index 0000000000..48d4c53255 --- /dev/null +++ b/docroot/modules/custom/va_gov_eca/tests/modules/va_gov_eca_test_views/test_views/views.view.va_gov_eca_default_content.yml @@ -0,0 +1,244 @@ +langcode: en +status: true +dependencies: + config: + - core.entity_view_mode.node.teaser + - node.type.default + module: + - node + - user + - va_gov_eca +id: va_gov_eca_default_content +label: 'Test Default' +module: views +description: '' +tag: '' +base_table: node_field_data +base_field: nid +display: + default: + id: default + display_title: Default + display_plugin: default + position: 0 + display_options: + title: 'Test Default' + fields: + title: + id: title + table: node_field_data + field: title + relationship: none + group_type: group + admin_label: '' + entity_type: node + entity_field: title + plugin_id: field + label: '' + exclude: false + alter: + alter_text: false + make_link: false + absolute: false + word_boundary: false + ellipsis: false + strip_tags: false + trim: false + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: true + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + click_sort_column: value + type: string + settings: + link_to_entity: true + group_column: value + group_columns: { } + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false + pager: + type: mini + options: + offset: 0 + items_per_page: 10 + total_pages: null + id: 0 + tags: + next: ›› + previous: ‹‹ + expose: + items_per_page: false + items_per_page_label: 'Items per page' + items_per_page_options: '5, 10, 25, 50' + items_per_page_options_all: false + items_per_page_options_all_label: '- All -' + offset: false + offset_label: Offset + exposed_form: + type: basic + options: + submit_button: Apply + reset_button: false + reset_button_label: Reset + exposed_sorts_label: 'Sort by' + expose_sort_order: true + sort_asc_label: Asc + sort_desc_label: Desc + access: + type: perm + options: + perm: 'access content' + cache: + type: tag + options: { } + empty: { } + sorts: + created: + id: created + table: node_field_data + field: created + relationship: none + group_type: group + admin_label: '' + entity_type: node + entity_field: created + plugin_id: date + order: DESC + expose: + label: '' + field_identifier: '' + exposed: false + 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: '' + style: + type: default + row: + type: 'entity:node' + options: + view_mode: teaser + query: + type: views_query + options: + query_comment: '' + disable_sql_rewrite: false + distinct: false + replica: false + query_tags: { } + relationships: { } + header: { } + footer: { } + display_extenders: { } + cache_metadata: + max-age: -1 + contexts: + - 'languages:language_content' + - 'languages:language_interface' + - url.query_args + - 'user.node_grants:view' + - user.permissions + tags: { } + eca_result_1: + id: eca_result_1 + display_title: 'ECA Result' + display_plugin: eca_result + position: 2 + display_options: + display_extenders: { } + row: + type: 'entity:node' + options: + relationship: none + view_mode: teaser + filters: + type: + id: type + table: node_field_data + field: type + relationship: none + group_type: group + admin_label: '' + operator: in + value: + default: default + group: '1' + exposed: false + expose: + operator_id: false + 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: 0 + default_group: All + default_group_multiple: { } + group_items: { } + entity_type: node + entity_field: type + plugin_id: bundle + cache_metadata: + max-age: -1 + contexts: + - 'languages:language_interface' + - 'user.node_grants:view' + tags: { } + page_1: + id: page_1 + display_title: Page + display_plugin: page + position: 1 + display_options: + display_extenders: { } + path: test-default + cache_metadata: + max-age: -1 + contexts: + - 'languages:language_content' + - 'languages:language_interface' + - url.query_args + - 'user.node_grants:view' + - user.permissions + tags: { } diff --git a/docroot/modules/custom/va_gov_eca/tests/modules/va_gov_eca_test_views/va_gov_eca_test_views.info.yml b/docroot/modules/custom/va_gov_eca/tests/modules/va_gov_eca_test_views/va_gov_eca_test_views.info.yml new file mode 100644 index 0000000000..2bc7369d66 --- /dev/null +++ b/docroot/modules/custom/va_gov_eca/tests/modules/va_gov_eca_test_views/va_gov_eca_test_views.info.yml @@ -0,0 +1,5 @@ +name: 'VA.gov ECA Views Tests' +type: module +description: 'Support module for VA.gov ECA Views tests.' +package: Testing +core_version_requirement: ^10 diff --git a/docroot/modules/custom/va_gov_eca/tests/src/Kernel/ViewsResultConditionTest.php b/docroot/modules/custom/va_gov_eca/tests/src/Kernel/ViewsResultConditionTest.php new file mode 100644 index 0000000000..83ec272378 --- /dev/null +++ b/docroot/modules/custom/va_gov_eca/tests/src/Kernel/ViewsResultConditionTest.php @@ -0,0 +1,98 @@ +installEntitySchema('user'); + $this->installEntitySchema('node'); + $this->installConfig(ViewsResultConditionTest::$modules); + $this->conditionManager = \Drupal::service('plugin.manager.eca.condition'); + + // Create a new content type, 'default'. + $this->createContentType(['type' => 'default']); + + // Create View from config. + ViewTestData::createTestViews(ViewsResultConditionTest::class, ['va_gov_eca_test_views']); + $view = View::load('va_gov_eca_default_content'); + + // Create our Condition plugin instance. + $config = [ + 'view_name' => $view->id(), + 'display_name' => 'eca_result_1', + 'arguments' => [], + ]; + /** @var \Drupal\va_gov_eca\Plugin\ECA\Condition\ViewsResultCondition $condition */ + $this->condition = $this->conditionManager->createInstance('views_result', $config); + } + + /** + * Test the condition when a View contains no results. + */ + public function testViewsResultConditionWithNoResult(): void { + $this->assertFalse($this->condition->evaluate()); + } + + /** + * Test the condition when a View contains results. + */ + public function testViewsResultConditionWithResult(): void { + // Create a Default node. + $this->createNode(['type' => 'default']); + $this->assertTrue($this->condition->evaluate()); + } + +} diff --git a/docroot/modules/custom/va_gov_eca/va_gov_eca.info.yml b/docroot/modules/custom/va_gov_eca/va_gov_eca.info.yml new file mode 100644 index 0000000000..371782af80 --- /dev/null +++ b/docroot/modules/custom/va_gov_eca/va_gov_eca.info.yml @@ -0,0 +1,7 @@ +name: 'VA.gov ECA' +type: module +description: 'Custom code for ECA (Event, Condition, Action).' +package: Custom +core_version_requirement: ^10 +dependencies: + - eca:eca 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 c2f58d0a6a..6702be4f74 100644 --- a/docroot/modules/custom/va_gov_facilities/src/EventSubscriber/FacilitiesSubscriber.php +++ b/docroot/modules/custom/va_gov_facilities/src/EventSubscriber/FacilitiesSubscriber.php @@ -10,12 +10,14 @@ use Drupal\Core\Entity\EntityTypeManager; use Drupal\Core\Form\FormStateInterface; use Drupal\Core\Messenger\MessengerInterface; +use Drupal\Core\Render\RendererInterface; use Drupal\Core\Session\AccountInterface; 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\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; @@ -69,6 +71,14 @@ class FacilitiesSubscriber implements EventSubscriberInterface { */ protected $userPermsService; + /** + * The renderer service. + * + * @var \Drupal\Core\Render\RendererInterface + * The renderer. + */ + private $renderer; + /** * Constructs the EventSubscriber object. * @@ -84,6 +94,8 @@ class FacilitiesSubscriber implements EventSubscriberInterface { * The string translation service. * @param \Drupal\va_gov_user\Service\UserPermsService $user_perms_service * The user perms service. + * @param \Drupal\Core\Render\RendererInterface $renderer + * The renderer service. */ public function __construct( AccountInterface $currentUser, @@ -91,7 +103,8 @@ public function __construct( EntityTypeManager $entityTypeManager, MessengerInterface $messenger, TranslationInterface $string_translation, - UserPermsService $user_perms_service + UserPermsService $user_perms_service, + RendererInterface $renderer ) { $this->currentUser = $currentUser; $this->entityTypeManager = $entityTypeManager; @@ -99,6 +112,7 @@ public function __construct( $this->messenger = $messenger; $this->stringTranslation = $string_translation; $this->userPermsService = $user_perms_service; + $this->renderer = $renderer; } /** @@ -112,13 +126,58 @@ public static function getSubscribedEvents(): array { 'hook_event_dispatcher.form_node_vet_center_form.alter' => 'alterVetCenterNodeForm', 'hook_event_dispatcher.form_node_vba_facility_service_edit_form.alter' => 'alterVbaFacilityServiceNodeForm', 'hook_event_dispatcher.form_node_vba_facility_service_form.alter' => 'alterVbaFacilityServiceNodeForm', + 'hook_event_dispatcher.form_node_vet_center_facility_health_servi_edit_form.alter' => 'alterVetCenterServiceNodeForm', EntityHookEvents::ENTITY_PRE_SAVE => 'entityPresave', EntityHookEvents::ENTITY_UPDATE => 'entityUpdate', + EntityHookEvents::ENTITY_VIEW_ALTER => 'entityViewAlter', FieldHookEvents::WIDGET_COMPLETE_FORM_ALTER => 'widgetCompleteFormAlter', FormHookEvents::FORM_ALTER => 'formAlter', ]; } + /** + * Alteration to entity view pages. + * + * @param \Drupal\core_event_dispatcher\Event\Entity\EntityViewAlterEvent $event + * The entity view alter service. + */ + public function entityViewAlter(EntityViewAlterEvent $event):void { + $this->appendServiceDescriptionToVetCenterFacilityService($event); + } + + /** + * Appends Vet Center facility service description to its title on node:view. + * + * @param \Drupal\core_event_dispatcher\Event\Entity\EntityViewAlterEvent $event + * The entity view alter service. + */ + public function appendServiceDescriptionToVetCenterFacilityService(EntityViewAlterEvent $event):void { + if (($event->getDisplay()->getTargetBundle() !== 'vet_center_facility_health_servi') + || ($event->getDisplay()->getOriginalMode() !== 'full')) { + return; + } + $build = &$event->getBuild(); + $service_node = $event->getEntity(); + $referenced_terms = $service_node->get('field_service_name_and_descripti')->referencedEntities(); + // Render the national service term description (if available). + if (!empty($referenced_terms)) { + $description = ""; + $referenced_term = reset($referenced_terms); + if ($referenced_term) { + $view_builder = $this->entityTypeManager->getViewBuilder('taxonomy_term'); + $referenced_term_content = $view_builder->view($referenced_term, 'vet_center_service'); + $description = $this->renderer->renderRoot($referenced_term_content); + } + } + else { + $description = new FormattableMarkup( + '
Notice: The national service description was not found.
', + []); + } + $formatted_markup = new FormattableMarkup($description, []); + $build['field_service_name_and_descripti']['#suffix'] = $formatted_markup; + } + /** * Creates custom render array from field on referenced entity. * @@ -444,6 +503,16 @@ public function alterVbaFacilityServiceNodeForm(FormIdAlterEvent $event): void { $this->buildHealthServicesDescriptionArrayAddToSettings($event); } + /** + * Alterations to the Vet Center facility service node form. + * + * @param \Drupal\core_event_dispatcher\Event\Form\FormIdAlterEvent $event + * The event. + */ + public function alterVetCenterServiceNodeForm(FormIdAlterEvent $event): void { + $this->buildHealthServicesDescriptionArrayAddToSettings($event); + } + /** * Builds an array of descriptions from health services available on form. * @@ -552,6 +621,7 @@ public function getVaServicesTaxonomyFieldNames(string $node_type) : array { ]; break; + case 'vet_center_facility_health_servi': case 'vet_center': $vaServicesFields = [ 'type' => 'field_vet_center_type_of_care', diff --git a/docroot/modules/custom/va_gov_facilities/va_gov_facilities.services.yml b/docroot/modules/custom/va_gov_facilities/va_gov_facilities.services.yml index 002d237fb2..b215bd18fc 100644 --- a/docroot/modules/custom/va_gov_facilities/va_gov_facilities.services.yml +++ b/docroot/modules/custom/va_gov_facilities/va_gov_facilities.services.yml @@ -8,5 +8,6 @@ services: - '@messenger' - '@string_translation' - '@va_gov_user.user_perms' + - '@renderer' tags: - { name: event_subscriber } diff --git a/docroot/modules/custom/va_gov_migrate/config/install/migrate_plus.migration.va_node_health_care_local_facility.yml b/docroot/modules/custom/va_gov_migrate/config/install/migrate_plus.migration.va_node_health_care_local_facility.yml index 084789f101..639250ef95 100644 --- a/docroot/modules/custom/va_gov_migrate/config/install/migrate_plus.migration.va_node_health_care_local_facility.yml +++ b/docroot/modules/custom/va_gov_migrate/config/install/migrate_plus.migration.va_node_health_care_local_facility.yml @@ -86,10 +86,6 @@ source: name: phone-main label: phone-main selector: properties/phone/main - - - name: phone-mental-health - label: phone-mental-health - selector: properties/phone/mental_health_clinic - name: state label: state @@ -191,12 +187,6 @@ process: 'Other Outpatient Services (OOS)': 6 'Extended Care Site (Community Living Center) (Stand-Alone)': 7 'Residential Care Site (MH RRTP/DRRTP) (Stand-Alone)': 8 - field_mental_health_phone: - # Covert all ext variants to x and then replace it with, ', ext. ' last. - plugin: str_replace - search: ['(', ')', 'X', ' ', 'ext', 'Ext', '.', ',', 'x'] - replace: ['', '-', 'x', '', 'x', 'x', '', '', ', ext. '] - source: phone-mental-health field_phone_number: # Covert all ext variants to x and then replace it with, ', ext. ' last. plugin: str_replace @@ -266,7 +256,6 @@ destination: - field_timezone - changed - field_facility_classification - - field_mental_health_phone - field_phone_number - field_mobile - new_revision diff --git a/docroot/modules/custom/va_gov_post_api/src/Service/PostFacilityStatus.php b/docroot/modules/custom/va_gov_post_api/src/Service/PostFacilityStatus.php index 382bb18dd3..84f0cf929a 100644 --- a/docroot/modules/custom/va_gov_post_api/src/Service/PostFacilityStatus.php +++ b/docroot/modules/custom/va_gov_post_api/src/Service/PostFacilityStatus.php @@ -412,12 +412,8 @@ protected function shouldPushSystem(NodeInterface $entity) { * The mental health phone number. */ protected function getFacilityMentalHealthPhone(): string { - // This is the original and life-long field. $mental_health_phone = $this->getFieldSafe('field_mental_health_phone'); - // This is the temporary shuffle field that will be removed once conversion - // to fully edited is complete. - $mental_health_contact = $this->getFieldSafe('field_mental_health_contact_phon'); - return (!empty($mental_health_contact)) ? $mental_health_contact : $mental_health_phone; + return $mental_health_phone; } /** diff --git a/docroot/modules/custom/va_gov_vamc/src/EventSubscriber/VAMCEntityEventSubscriber.php b/docroot/modules/custom/va_gov_vamc/src/EventSubscriber/VAMCEntityEventSubscriber.php index 4b4151fb16..6be24b9a33 100644 --- a/docroot/modules/custom/va_gov_vamc/src/EventSubscriber/VAMCEntityEventSubscriber.php +++ b/docroot/modules/custom/va_gov_vamc/src/EventSubscriber/VAMCEntityEventSubscriber.php @@ -52,6 +52,7 @@ public static function getSubscribedEvents(): array { 'hook_event_dispatcher.form_node_vamc_system_register_for_care_form.alter' => 'alterTopTaskNodeForm', 'hook_event_dispatcher.form_node_vamc_system_va_police_edit_form.alter' => 'alterTopTaskNodeForm', 'hook_event_dispatcher.form_node_vamc_system_va_police_form.alter' => 'alterTopTaskNodeForm', + 'hook_event_dispatcher.form_node_health_care_local_health_service_edit_form.alter' => 'alterFacilityServiceNodeForm', EntityHookEvents::ENTITY_INSERT => 'entityInsert', EntityHookEvents::ENTITY_PRE_SAVE => 'entityPresave', EntityHookEvents::ENTITY_VIEW_ALTER => 'entityViewAlter', @@ -335,6 +336,40 @@ public function alterRegionalHealthCareServiceDesNodeForm(FormIdAlterEvent $even $form['#attached']['library'][] = 'va_gov_vamc/limit_vamcs_to_workbench'; } + /** + * Alter the VAMC Facility Service node form. + * + * @param \Drupal\core_event_dispatcher\Event\Form\FormIdAlterEvent $event + * The event. + */ + public function alterFacilityServiceNodeForm(FormIdAlterEvent $event): void { + $form = &$event->getForm(); + $form_state = $event->getFormState(); + $is_admin = $this->userPermsService->hasAdminRole(TRUE); + if (!$is_admin) { + $this->disableFacilityServiceChange($form, $form_state); + } + } + + /** + * Disables basic info fields on existing nodes for editors. + * + * @param array $form + * The form. + * @param \Drupal\Core\Form\FormStateInterface $form_state + * The state of the form. + */ + public function disableFacilityServiceChange(array &$form, FormStateInterface $form_state): void { + /** @var \Drupal\Core\Entity\EntityFormInterface $form_object */ + $form_object = $form_state->getFormObject(); + /** @var \Drupal\node\NodeInterface $node */ + $node = $form_object->getEntity(); + if (!$node->isNew()) { + $form['field_facility_location']['#disabled'] = TRUE; + $form['field_regional_health_service']['#disabled'] = TRUE; + } + } + /** * Clear custom appointment intro text when unused. * 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 8c927dd23e..0b52298924 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 @@ -237,7 +237,10 @@ private function longEnough(string $service_description) { public function alterVetCenterServiceNodeForm(FormIdAlterEvent $event): void { $form = &$event->getForm(); $form_state = $event->getFormState(); - $this->disableFacilityServiceChange($form, $form_state); + $is_admin = $this->userPermsService->hasAdminRole(TRUE); + if (!$is_admin) { + $this->disableFacilityServiceChange($form, $form_state); + } } /** diff --git a/tests/cypress/integration/features/content_type/facilities/vamc/health_care_local_health_service.feature b/tests/cypress/integration/features/content_type/facilities/vamc/health_care_local_health_service.feature index 3b395d6e91..81994f969a 100644 --- a/tests/cypress/integration/features/content_type/facilities/vamc/health_care_local_health_service.feature +++ b/tests/cypress/integration/features/content_type/facilities/vamc/health_care_local_health_service.feature @@ -42,3 +42,35 @@ Scenario: Log in and create VAMC Facility Health Service as a non-Lovell editor Then I click the button with selector "#edit-group-health-service-and-facilit" Then I select option "Brockton VA Medical Center | VA Boston health care" from dropdown with selector "#edit-field-facility-location" Then I select option "Audiology and speech at VA Boston health care" from dropdown with selector "#edit-field-regional-health-service" + +Scenario: Editors should not be able to rename a VAMC Facility Health Service + Given I am logged in as a user with the roles "vamc_content_creator, content_publisher, content_editor, content_admin" + # VA Iron Mountain health care + And my workbench access sections are set to "350" + # Primary care - Marquette VA Clinic + When I am at "node/30733/edit" + And I click to expand "Health service and facility basic info" + Then an element with the selector 'select[data-drupal-selector^="edit-field-facility-location"]' should be disabled + And an element with the selector 'select[data-drupal-selector^="edit-field-regional-health-service"]' should be disabled + Then I scroll to position "bottom" + And I click the "Unlock" link + And I click the "Confirm break lock" button + +Scenario: Administrators should be able to rename a VAMC Facility Health Service + Given I am logged in as a user with the "administrator" role + # Primary care - Marquette VA Clinic + When I am at "node/30733" + Then I should see "Primary care - Marquette VA Clinic" + + Then I click the edit tab + And I click to expand "Health service and facility basic info" + Then an element with the selector 'select[data-drupal-selector^="edit-field-facility-location"]' should not be disabled + And an element with the selector 'select[data-drupal-selector^="edit-field-regional-health-service"]' should not be disabled + + # Ironwood VA Clinic + Then I select option '1635' from dropdown with selector 'select[data-drupal-selector^="edit-field-facility-location"]' + # Chiropractic at VA Iron Mountain health care + And I select option '35578' from dropdown with selector 'select[data-drupal-selector^="edit-field-regional-health-service"]' + And I fill in field with selector "#edit-revision-log-0-value" with value "[Test Data] Revision log message." + And I save the node + Then I should see "Chiropractic - Ironwood VA Clinic" diff --git a/tests/cypress/integration/features/content_type/facilities/vet_center/vet_center_facility_service.feature b/tests/cypress/integration/features/content_type/facilities/vet_center/vet_center_facility_service.feature new file mode 100644 index 0000000000..9f2c81dec2 --- /dev/null +++ b/tests/cypress/integration/features/content_type/facilities/vet_center/vet_center_facility_service.feature @@ -0,0 +1,34 @@ +@content_type__vet_center_facility_health_servi +Feature: CMS Users may effectively interact with the Vet Center - Facility Service form + In order to confirm that cms users have access to the necessary functionality + As anyone involved in the project + I need to have certain functionality available + +Scenario: Editors should not be able to rename a Vet Center - Facility Service + Given I am logged in as a user with the roles "content_creator_vet_center, content_publisher, content_editor, content_admin" + # Escanaba Vet Center + And my workbench access sections are set to "392" + # Escanaba Vet Center - Telehealth + When I am at "node/17927/edit" + And an element with the selector 'select[data-drupal-selector^="edit-field-service-name-and-descripti"]' should be disabled + Then I scroll to position "bottom" + And I click the "Unlock" link + And I click the "Confirm break lock" button + +Scenario: Administrators should be able to rename a Vet Center - Facility Service + Given I am logged in as a user with the "administrator" role + # Escanaba Vet Center - Telehealth + When I am at "node/17927" + Then I should see "Escanaba Vet Center - Telehealth" + + Then I click the edit tab + Then an element with the selector 'select[data-drupal-selector^="edit-field-office"]' should not be disabled + And an element with the selector 'select[data-drupal-selector^="edit-field-service-name-and-descripti"]' should not be disabled + + # Duluth Vet Center + Then I select option '3751' from dropdown with selector 'select[data-drupal-selector^="edit-field-office"]' + # Women Veteran Care + And I select option '57' from dropdown with selector 'select[data-drupal-selector^="edit-field-service-name-and-descripti"]' + And I fill in field with selector "#edit-revision-log-0-value" with value "[Test Data] Revision log message." + And I save the node + Then I should see "Duluth Vet Center - Women Veteran care"