Skip to content

Issue 1072/routing urls linked#1074

Open
onewheelskyward wants to merge 4 commits into
mainfrom
issue-1072/routing-urls-linked
Open

Issue 1072/routing urls linked#1074
onewheelskyward wants to merge 4 commits into
mainfrom
issue-1072/routing-urls-linked

Conversation

@onewheelskyward

Copy link
Copy Markdown
Contributor

No description provided.

onewheelskyward and others added 4 commits June 24, 2026 11:44
The legacy /calendar/ page rendered the event description as escaped
plain text, so route links were just unclickable text. Auto-link any
ridewithgps.com mentions (with or without scheme/www) while HTML-escaping
the rest of the description, keeping a domain allow-list so this doesn't
become an open door for spam links.

Fixes #1072
Keeps the ridewithgps.com allow-list alongside the other calendar JS
constants (AREA, AUDIENCE, etc.) instead of buried in helpers.js, so
it's the obvious place to add another trusted domain later.
When an organizer includes a ridewithgps.com route link in their event
description, fetch the oEmbed embed HTML from ridewithgps and inject an
interactive map card directly below the description. Requests are lazy:
the IntersectionObserver only fires when the event is expanded and the
link is actually visible, so collapsed events never trigger a fetch.
One card per event (first ridewithgps URL wins); fails silently if the
request errors or CORS blocks it.
Ports the linkify + inline oEmbed card behavior from the legacy
/calendar/ page to the Vue SPA's event details (shareable link) view,
so the permalink page renders ridewithgps.com route links as clickable
links and shows the interactive map card instead of plain text.

getLinkedDetails/getUnfurlUrl mirror the legacy helpers.js (same
LINKABLE_DOMAINS allow-list and trailing-punctuation handling). Since
this is a dedicated, always-visible page rather than a collapsible
list, it fetches the oEmbed card directly on load (no
IntersectionObserver) and gates the fetch on the ridewithgps.com host.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant