diff --git a/_plugins/events_to_ics.rb b/_plugins/events_to_ics.rb index 938439d..6891489 100644 --- a/_plugins/events_to_ics.rb +++ b/_plugins/events_to_ics.rb @@ -16,8 +16,8 @@ module Jekyll events.each do |event| title = event.data['title'] - date = event.data.dig('event', 'date') || event.data['event_date'] - duration = event.data.dig('event', 'duration') + start_date = event.data.dig('event', 'start') || event.data['event_date'] + end_date = event.data.dig('event', 'end') || event.data['event_date'] organizer = event.data.dig('event', 'organizer') || default_organizer location = event.data.dig('event', 'location') || default_location @@ -31,12 +31,15 @@ module Jekyll # Create new event and set its properties ical_event = Icalendar::Event.new - if duration - ical_event.dtstart = date - ical_event.dtend = date + duration.to_i * 60 + if start_date > end_date + raise StandardError.new "#{File.basename(event.path)}: Start date must not be greater than end date" + end + if start_date < end_date + ical_event.dtstart = start_date + ical_event.dtend = end_date else - ical_event.dtstart = Icalendar::Values::Date.new(date) - ical_event.dtend = Icalendar::Values::Date.new(date) + ical_event.dtstart = Icalendar::Values::Date.new(start_date) + ical_event.dtend = Icalendar::Values::Date.new(end_date) end ical_event.summary = title ical_event.description = description diff --git a/calendar-data.html b/calendar-data.html index 1e2ca8b..0a1c3b5 100644 --- a/calendar-data.html +++ b/calendar-data.html @@ -6,10 +6,13 @@ permalink: /calendar-data/ [ {% for event in site.events %} + {% assign start = event.event.start | default: event.event_date %} + {% assign end = event.event.end | default: start %} { "title":"{{event.title}}", - "start": "{{event.event_date}}", - "allDay":true, + "start": "{{start | date: "%Y-%m-%dT%H:%M:%S"}}", + "end": "{{end | date: "%Y-%m-%dT%H:%M:%S"}}", + "allDay": {% if start == end %}true{% else %}false{% endif %}, "url":"{{event.url}}" } {%unless forloop.last %},{%endunless%}