agenda-libre-ruby/app/views/events/index.ics.haml

32 lines
1.0 KiB
Plaintext
Raw Normal View History

2018-07-14 00:50:13 +02:00
:ruby
require 'icalendar/tzinfo'
2018-07-14 00:50:13 +02:00
# Create a calendar with an event (standard method)
cal = Icalendar::Calendar.new
@events.each do |event|
tzid = event.region.tzid
2019-04-27 15:39:06 +02:00
begin
tz = TZInfo::Timezone.get tzid
timezone = tz.ical_timezone event.start_time
cal.add_timezone timezone
rescue TZInfo::InvalidTimezoneIdentifier
# No need to add this tz
end
2018-07-14 00:50:13 +02:00
cal.event do |e|
e.dtstamp = Icalendar::Values::DateTime.new event.decision_time, tzid: tzid
e.uid = "#{event.id}@#{request.domain}"
e.dtstart = Icalendar::Values::DateTime.new event.start_time, tzid: tzid
e.dtend = Icalendar::Values::DateTime.new event.end_time, tzid: tzid
2018-07-14 00:50:13 +02:00
e.summary = event.title
e.description = to_markdown event.description.tr '\'', ''
2018-07-14 00:50:13 +02:00
e.location = event.full_address.tr '\'', ''
e.organizer = "mailto:#{event.contact}"
e.x_alt_desc = Icalendar::Values::Text.new event.description, FMTTYPE: 'text/html'
2018-07-14 00:50:13 +02:00
end
end
cal.publish
= cal.to_ical