Services plugin - better support for virtual services

By Dave Merrill
July 25, 2021, 8:16 pm EDT

I'm proposing an enhancement to the Service plugin. These involve changes to the Services model, its configuration, and the functionality of the Featured Upcoming Service Widget.

  1. As a Services administrator, I want to record the start date and time, and the duration, of each service, so that this data can be shown to visitors, and can be used to control web page content.
  2. As a Services administrator, I want to specify the URL for each virtual service, as part of maintaining the service entry, so I don't have to put this data in another logically unrelated location.
  3. As a visitor, I want to see the current service so that I have the information to attend it while it's underway.
  4. As a Services administrator, I want to include the virtual service URL from the public website from a specified period before each service begins, until a specified period after it completes.
  5. As a Widgets administrator, I want to include a "join virtual service" button for service during the period when that URL is "available" (see 4. above).

Proposed changes to Services data

  1. Start DateTime, Duration (specific to each service)
  2. Virtual Service URL (specific to each service, because the URL should be specific to each one, to inhibit early discovery by malware and bad actors)

Proposed changes to Services configuration

  1. Virtual Sevice URL preview duration
  2. Services extended visibility duration

Proposed computed properties of Service entries, internal to drive display logic (and for reference in content below)

  1. DisplayAsUpcomingService (true/false) is true for at most one service
  2. The (DisplayAsUpcomingService==true) Service has a computed UpcomingStatus, with values "Upcoming", "Imminent", "Ongoing", "RecentlyCompleted". Other services don't need this property.

See examples of how this might work at VirtualServiceInfo.feature (on github)