Skip to content

Support Location and Online URL on events (7.0) #190

Description

@edalzell

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

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