Originally scoped in transformstudios/zakat.org#2329; moved here since all the work is in this repo.
Agreed approach. Blocking dependency: transformstudios/prime#834. Targets main (7.0); 6.x maintenance continues on the 6.x branch.
Context
Events needs two independent things: an online URL (Zoom, livestream) and a physical place (plain description or address), optionally together for hybrid events.
Through 6.x the addon mostly read undeclared handles and sniffed meaning (link, string/URL location, address, top-level coordinates). 6.2 added declared online_url (non-breaking) and fixed ICS decoration. 7.0 finishes the contract.
Decisions
|
|
| Release |
7.0 breaking, with an update script. Ship Events 7 and the Prime cutover together. |
| Physical place |
Declared location group: name (text, localizable — ICS LOCATION) + nested coordinates (latitude / longitude floats). |
| Online |
Declared online_url sibling (already on 6.2). Stays outside the place group. |
| Removed in 7.0 |
Top-level address, link, URL-sniff on string location, and reading top-level coordinates / string location / address for ICS. |
| Why nest |
Logical CP grouping, clean raw data, matches how Prime already nests coords. Declaring top-level coords on 6.x would force a migration for anyone who filled them then jumped to 7 — so coords wait for 7. |
Foreign location shapes |
Runtime: if location is not the expected group (or name isn't a string), skip — never fatal. Events never rewrites Prime/Simple array-shaped location; that's prime#834. |
ICS mapping (7.0)
| Event |
LOCATION: |
URL: |
GEO: |
| Physical only |
location.name |
— |
location.coordinates |
| Online only |
online_url |
online_url |
— |
| Hybrid |
location.name |
online_url |
location.coordinates |
Online-only still puts the join link in LOCATION: so Apple Calendar / Fantastical stay useful without vendor props.
Work
Done on 6.x (v6.2.0), forward-merged to main
Still to do on main (7.0)
Dependency — Prime must rename its location group
7.0 cannot ship into a Prime site until prime#834 is done. Statamic collapses duplicate handles silently (keyBy->handle()). Today Events declares no location, so Prime owns it. Once Events declares a location group, blueprints importing both collide.
Prime keeps its richer UI (details, etc.) under a new handle and migrates its own data. Events' migrator never touches non-string / foreign-shaped location.
Deliberately out of scope
venue / spatie addressName() — would unlock X-APPLE-STRUCTURED-LOCATION; new scope.
description as a declared field — still documented-but-undeclared.
Steps
Originally scoped in transformstudios/zakat.org#2329; moved here since all the work is in this repo.
Agreed approach. Blocking dependency: transformstudios/prime#834. Targets
main(7.0); 6.x maintenance continues on the6.xbranch.Context
Events needs two independent things: an online URL (Zoom, livestream) and a physical place (plain description or address), optionally together for hybrid events.
Through 6.x the addon mostly read undeclared handles and sniffed meaning (
link, string/URLlocation,address, top-levelcoordinates). 6.2 added declaredonline_url(non-breaking) and fixed ICS decoration. 7.0 finishes the contract.Decisions
locationgroup:name(text, localizable — ICSLOCATION) + nestedcoordinates(latitude/longitudefloats).online_urlsibling (already on 6.2). Stays outside the place group.address,link, URL-sniff on stringlocation, and reading top-levelcoordinates/ stringlocation/addressfor ICS.locationshapeslocationis not the expected group (ornameisn't a string), skip — never fatal. Events never rewrites Prime/Simple array-shapedlocation; that's prime#834.ICS mapping (7.0)
LOCATION:URL:GEO:location.namelocation.coordinatesonline_urlonline_urllocation.nameonline_urllocation.coordinatesOnline-only still puts the join link in
LOCATION:so Apple Calendar / Fantastical stay useful without vendor props.Work
Done on 6.x (v6.2.0), forward-merged to
mainonline_urlfor Zoom and livestream links #193 —online_url(keepeventUrl()name on 6.x)Still to do on
main(7.0)locationgroup + resolution cutover (includes nested coords; Declarecoordinatesin the fieldset #194 closed as superseded)locationgroup; ship with Events 7Dependency — Prime must rename its
locationgroup7.0 cannot ship into a Prime site until prime#834 is done. Statamic collapses duplicate handles silently (
keyBy->handle()). Today Events declares nolocation, so Prime owns it. Once Events declares alocationgroup, blueprints importing both collide.Prime keeps its richer UI (
details, etc.) under a new handle and migrates its own data. Events' migrator never touches non-string / foreign-shapedlocation.Deliberately out of scope
venue/ spatieaddressName()— would unlockX-APPLE-STRUCTURED-LOCATION; new scope.descriptionas a declared field — still documented-but-undeclared.Steps
6.x6.xonline_urlfor Zoom and livestream links #193 —online_url·6.x→ v6.2.0coordinatesin the fieldset #194 —Declare top-level· superseded (nested undercoordinateson 6.xlocationin Add nested location group; remove address, link, and sniffing #195)locationgroup, removeaddress/link/ sniff / top-level coords reads ·main, blocked on prime#834 for Prime sitesmain