Skip to content

Add online_url for Zoom and livestream links #193

Description

@edalzell

First half of #190: a dedicated field for a Zoom or livestream link, so it no longer has to be smuggled through location.

Purely additive. link and the Str::isUrl($location) sniff keep working, so no existing site's output changes — they come out in the follow-up that adds location. Safe to ship into Prime sites: Prime declares no online_url, so nothing collides.

Field

resources/fieldsets/event.yaml — new Location section, following the existing times_sections pattern:

  • location_section — type: section, display "Location"
  • online_url — type: text, input_type: url, validate: [nullable, url], localizable: false, display "Online URL", instructions naming Zoom / livestream

localizable: false because it's one shared meeting link across sites.

Resolution

src/Types/Event.php — extend existing eventUrl() resolving in order:

  1. online_url
  2. link (deprecated)
  3. location, when it's a string that passes Str::isUrl() (deprecated)

Mark both fallbacks @deprecated, removed in 7.0.

Do not rename eventUrl() → icsUrl() on 6.x. Renaming a protected method is a breaking change for subclasses; keep the name here and only rename in 7.0 if desired (#195).

ICS

online_url → URL:. Deliberately no CONFERENCE and no X-GOOGLE-CONFERENCE: Google discards conference data on ICS import, and RFC 7986 is inert in every mainstream client. Clients that surface a join button (Fantastical and friends) pattern-match the provider URL out of the event content rather than reading a property. Reasoning in #190.

Tests

TDD — write these failing first.

  • online_url emits URL:
  • online_url wins over link when both are set
  • deprecated link alone still emits URL:
  • deprecated URL-valued location alone still emits both URL: and LOCATION: (unchanged behaviour)
  • all four download routes: single-day, recurring, multi-day single-date, multi-day whole-event

Docs

  • online_url added to the ICS field table from Reconcile the contradicting ICS field docs #191, with its URL: mapping and its precedence over link
  • fieldset section covering the new field — optional, and combinable with a physical location for a hybrid event
  • link marked deprecated, removed in 7.0

Branch

feature/online-url off 6.x (non-breaking / additive). Needs #192 for decorate(). Forward-merge to main with the rest of the 6.x stack.

Part of #190.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions