You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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:
localizable: false because it's one shared meeting link across sites.
Resolution
src/Types/Event.php — extend existing eventUrl() resolving in order:
online_url
link(deprecated)
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
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.
linkand theStr::isUrl($location)sniff keep working, so no existing site's output changes — they come out in the follow-up that addslocation. Safe to ship into Prime sites: Prime declares noonline_url, so nothing collides.Field
resources/fieldsets/event.yaml— new Location section, following the existingtimes_sectionspattern:location_section—type: section, display "Location"online_url—type: text,input_type: url,validate: [nullable, url],localizable: false, display "Online URL", instructions naming Zoom / livestreamlocalizable: falsebecause it's one shared meeting link across sites.Resolution
src/Types/Event.php— extend existingeventUrl()resolving in order:online_urllink(deprecated)location, when it's a string that passesStr::isUrl()(deprecated)Mark both fallbacks
@deprecated, removed in 7.0.Do not rename
eventUrl()→icsUrl()on 6.x. Renaming aprotectedmethod is a breaking change for subclasses; keep the name here and only rename in 7.0 if desired (#195).ICS
online_url→URL:. Deliberately noCONFERENCEand noX-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_urlemitsURL:online_urlwins overlinkwhen both are setlinkalone still emitsURL:locationalone still emits bothURL:andLOCATION:(unchanged behaviour)Docs
online_urladded to the ICS field table from Reconcile the contradicting ICS field docs #191, with itsURL:mapping and its precedence overlinklinkmarked deprecated, removed in 7.0Branch
feature/online-urloff6.x(non-breaking / additive). Needs #192 fordecorate(). Forward-merge tomainwith the rest of the 6.x stack.Part of #190.