diff --git a/calendar_event.templ b/calendar_event.templ index 71a8830..3113a9f 100644 --- a/calendar_event.templ +++ b/calendar_event.templ @@ -12,10 +12,51 @@ templ calendarEventTemplate(params CalendarPageParams) { params.Event, ) {

- { params.CalendarEvent.Title } + { params.CalendarEvent.Title }

-
- + +
+ if params.StartAtDate == params.EndAtDate { +
+
Date
+
+
{ params.StartAtDate }
+ if params.StartAtTime != "" && params.EndAtTime != "" { +
From { params.StartAtTime } to { params.EndAtTime }
+ } +
+
+ } else { +
+
Start date
+
+
{ params.StartAtDate }
+
{ params.StartAtTime }
+
+
+
+
End date
+
+
{ params.EndAtDate }
+
{ params.EndAtTime }
+
+
+ } +
+
Location
+
+ { params.CalendarEvent.Locations[0] } +
+
+
+ +
+ @templ.Raw(params.Content) +
+ if params.CalendarEvent.Image != "" { + + } +
for _, v := range params.CalendarEvent.Hashtags { diff --git a/data.go b/data.go index 90701c2..a46286e 100644 --- a/data.go +++ b/data.go @@ -145,6 +145,7 @@ func grabData(ctx context.Context, code string, isProfileSitemap bool) (*Data, e case 31922, 31923: data.templateId = CalendarEvent data.kind31922Or31923Metadata = &Kind31922Or31923Metadata{CalendarEvent: nip52.ParseCalendarEvent(*event)} + data.content = event.Content default: data.templateId = Other } diff --git a/pages.go b/pages.go index c3b5e4b..5f4a859 100644 --- a/pages.go +++ b/pages.go @@ -239,10 +239,12 @@ type CalendarPageParams struct { BaseEventPageParams OpenGraphParams HeadParams - Details DetailsParams - - Content template.HTML - + Details DetailsParams + StartAtDate string + StartAtTime string + EndAtDate string + EndAtTime string + Content template.HTML CalendarEvent Kind31922Or31923Metadata Clients []ClientReference } diff --git a/render_event.go b/render_event.go index 56115bf..238b21e 100644 --- a/render_event.go +++ b/render_event.go @@ -444,6 +444,33 @@ func renderEvent(w http.ResponseWriter, r *http.Request) { if data.kind31922Or31923Metadata.Image != "" { opengraph.Image = data.kind31922Or31923Metadata.Image } + + // Fallback for deprecated 'name' field + if data.kind31922Or31923Metadata.Title == "" { + for _, tag := range data.event.Tags { + if tag[0] == "name" { + data.kind31922Or31923Metadata.Title = tag[1] + break + } + } + } + + var StartAtDate, StartAtTime string + StartAtDate = data.kind31922Or31923Metadata.Start.Format("02 January 2006") + if data.kind31922Or31923Metadata.Start.Hour() != 0 || + data.kind31922Or31923Metadata.Start.Minute() != 0 || + data.kind31922Or31923Metadata.Start.Second() != 0 { + StartAtTime = data.kind31922Or31923Metadata.Start.Format("15:04") + } + + var EndAtDate, EndAtTime string + EndAtDate = data.kind31922Or31923Metadata.End.Format("02 January 2006") + if data.kind31922Or31923Metadata.End.Hour() != 0 || + data.kind31922Or31923Metadata.End.Minute() != 0 || + data.kind31922Or31923Metadata.End.Second() != 0 { + EndAtTime = data.kind31922Or31923Metadata.End.Format("15:04") + } + component = calendarEventTemplate(CalendarPageParams{ BaseEventPageParams: baseEventPageParams, OpenGraphParams: opengraph, @@ -453,9 +480,14 @@ func renderEvent(w http.ResponseWriter, r *http.Request) { NeventNaked: data.neventNaked, }, - Details: detailsData, - Content: template.HTML(data.content), - Clients: generateClientList(data.event.Kind, data.naddr), + StartAtDate: StartAtDate, + StartAtTime: StartAtTime, + EndAtDate: EndAtDate, + EndAtTime: EndAtTime, + CalendarEvent: *data.kind31922Or31923Metadata, + Details: detailsData, + Content: template.HTML(data.content), + Clients: generateClientList(data.event.Kind, data.naddr), }) case Other: detailsData.HideDetails = false // always open this since we know nothing else about the event