events: Communications URL / Teamspeak Link / Discord Join Button #5

Closed
opened 2026-04-07 14:50:19 +02:00 by kosmos · 5 comments
Owner

I'd like to have a communications link per Event which will be displayed insider the Event header, on the right side below the badges.

Since Events can use a bunch of idderent ways of communication I think we should implement this as a simple URL field which ist stored per event.

Based on that fields conrtent I'd like to display one out of the following:

  • a simple message that there is no way of communication provided, if the field is empty
  • if there is a discord join/invite URL provided there should be a typical "Join Discord"-like Button, I don't know if theres a button image like this provided by discord of if we have to do this ourselves. I dno NOT want to simply steal a button from any other website.
  • if there is a Teamspeak URL provided -> simmillar to Discord, show a nice button
  • if theres any other URL -> show the URL as a Link + copy to clipboard button
  • any other value -> show the value + copy to clipboard button
I'd like to have a communications link per Event which will be displayed insider the Event header, on the right side below the badges. Since Events can use a bunch of idderent ways of communication I think we should implement this as a simple URL field which ist stored per event. Based on that fields conrtent I'd like to display one out of the following: - a simple message that there is no way of communication provided, if the field is empty - if there is a discord join/invite URL provided there should be a typical "Join Discord"-like Button, I don't know if theres a button image like this provided by discord of if we have to do this ourselves. I dno NOT want to simply steal a button from any other website. - if there is a Teamspeak URL provided -> simmillar to Discord, show a nice button - if theres any other URL -> show the URL as a Link + copy to clipboard button - any other value -> show the value + copy to clipboard button
Author
Owner

Status update: I am implementing a per-event communication field end-to-end. The work covers persistence in the event model, create/update/import/duplicate flows, and header rendering with specialized Discord/TeamSpeak buttons plus copy-to-clipboard handling for generic values.

Status update: I am implementing a per-event communication field end-to-end. The work covers persistence in the event model, create/update/import/duplicate flows, and header rendering with specialized Discord/TeamSpeak buttons plus copy-to-clipboard handling for generic values.
Author
Owner

Status update: the event communication field is now implemented locally. It is persisted on the event, included in create/update/duplicate/import/export flows, and rendered in the event header below the badges. Empty values show a fallback message, Discord invites render as a Discord button, TeamSpeak links render as a TeamSpeak button, generic URLs render as a link plus copy button, and non-URL values render as copyable text. Local checks are green: prisma validate, prisma generate, prisma migrate deploy, lint, and build.

Status update: the event communication field is now implemented locally. It is persisted on the event, included in create/update/duplicate/import/export flows, and rendered in the event header below the badges. Empty values show a fallback message, Discord invites render as a Discord button, TeamSpeak links render as a TeamSpeak button, generic URLs render as a link plus copy button, and non-URL values render as copyable text. Local checks are green: prisma validate, prisma generate, prisma migrate deploy, lint, and build.
Author
Owner

Update: the TeamSpeak detection has been broadened based on follow-up research. The header now treats the following as TeamSpeak communication targets: ts3server:// links, teamspeak:// links, tsserver:// links, and HTTPS invite links on tmspk.gg. Plain http:// links are intentionally not treated as TeamSpeak targets.

Update: the TeamSpeak detection has been broadened based on follow-up research. The header now treats the following as TeamSpeak communication targets: ts3server:// links, teamspeak:// links, tsserver:// links, and HTTPS invite links on tmspk.gg. Plain http:// links are intentionally not treated as TeamSpeak targets.
Author
Owner

Status update: I reviewed the new communication field with a security focus and hardened the link handling before merge. Discord is now only recognized on HTTPS, TeamSpeak is limited to the intended TeamSpeak schemes plus HTTPS tmspk.gg invites, generic clickable links are limited to HTTP/HTTPS, and other schemes fall back to plain copyable text instead of being rendered as links. Local checks are green.

Status update: I reviewed the new communication field with a security focus and hardened the link handling before merge. Discord is now only recognized on HTTPS, TeamSpeak is limited to the intended TeamSpeak schemes plus HTTPS tmspk.gg invites, generic clickable links are limited to HTTP/HTTPS, and other schemes fall back to plain copyable text instead of being rendered as links. Local checks are green.
Author
Owner

Resolved in 800998e. Events now support a dedicated communication value that is persisted across create/update/duplicate/import/export flows and rendered in the header with tailored Discord and TeamSpeak actions, copy support for generic values, example hints in the forms, and restricted link handling for safer rendering.

Resolved in 800998e. Events now support a dedicated communication value that is persisted across create/update/duplicate/import/export flows and rendered in the header with tailored Discord and TeamSpeak actions, copy support for generic values, example hints in the forms, and restricted link handling for safer rendering.
kosmos changed title from Communikation URL / Teamspeak Link / Discord Join Button to events: Communications URL / Teamspeak Link / Discord Join Button 2026-04-07 16:29:33 +02:00
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: kosmos/flexikonvoi#5