plugins/caldav: introduce helper CalendarObject type

This commit is contained in:
Simon Ser 2020-05-13 17:10:21 +02:00
parent 3d1f278fae
commit ee5ce517d1
No known key found for this signature in database
GPG key ID: 0FDE7BE0E88F5E48
3 changed files with 21 additions and 5 deletions

View file

@ -59,3 +59,19 @@ func getCalendar(u *url.URL, session *alps.Session) (*caldav.Client, *caldav.Cal
} }
return c, &calendars[0], nil return c, &calendars[0], nil
} }
type CalendarObject struct {
*caldav.CalendarObject
}
func newCalendarObjectList(cos []caldav.CalendarObject) []CalendarObject {
l := make([]CalendarObject, len(cos))
for i := range cos {
l[i] = CalendarObject{&cos[i]}
}
return l
}
func (ao CalendarObject) URL() string {
return "/calendar/" + url.PathEscape(ao.Path)
}

View file

@ -14,7 +14,7 @@
{{range .Events}} {{range .Events}}
{{$event := index .Data.Events 0}} {{$event := index .Data.Events 0}}
<li> <li>
<a href="/calendar/{{$event.Path | pathescape}}">{{$event.Props.Text "SUMMARY"}}</a> <a href="{{$event.URL}}">{{$event.Props.Text "SUMMARY"}}</a>
({{$event.DateTimeStart nil | formatdate}} — {{$event.DateTimeEnd nil | formatdate}}) ({{$event.DateTimeStart nil | formatdate}} — {{$event.DateTimeEnd nil | formatdate}})
</li> </li>
{{end}} {{end}}

View file

@ -15,14 +15,14 @@ type CalendarRenderData struct {
alps.BaseRenderData alps.BaseRenderData
Time time.Time Time time.Time
Calendar *caldav.Calendar Calendar *caldav.Calendar
Events []caldav.CalendarObject Events []CalendarObject
PrevPage, NextPage string PrevPage, NextPage string
} }
type EventRenderData struct { type EventRenderData struct {
alps.BaseRenderData alps.BaseRenderData
Calendar *caldav.Calendar Calendar *caldav.Calendar
Event *caldav.CalendarObject Event CalendarObject
} }
var monthPageLayout = "2006-01" var monthPageLayout = "2006-01"
@ -90,7 +90,7 @@ func registerRoutes(p *alps.GoPlugin, u *url.URL) {
BaseRenderData: *alps.NewBaseRenderData(ctx), BaseRenderData: *alps.NewBaseRenderData(ctx),
Time: start, Time: start,
Calendar: calendar, Calendar: calendar,
Events: events, Events: newCalendarObjectList(events),
PrevPage: start.AddDate(0, -1, 0).Format(monthPageLayout), PrevPage: start.AddDate(0, -1, 0).Format(monthPageLayout),
NextPage: start.AddDate(0, 1, 0).Format(monthPageLayout), NextPage: start.AddDate(0, 1, 0).Format(monthPageLayout),
}) })
@ -142,7 +142,7 @@ func registerRoutes(p *alps.GoPlugin, u *url.URL) {
return ctx.Render(http.StatusOK, "event.html", &EventRenderData{ return ctx.Render(http.StatusOK, "event.html", &EventRenderData{
BaseRenderData: *alps.NewBaseRenderData(ctx), BaseRenderData: *alps.NewBaseRenderData(ctx),
Calendar: calendar, Calendar: calendar,
Event: event, Event: CalendarObject{event},
}) })
}) })
} }