From 70d0091fbf2480b7de7be1a009b686b322d22cd3 Mon Sep 17 00:00:00 2001 From: Stella Rouzi Date: Mon, 13 Jun 2016 23:02:48 +0300 Subject: [PATCH] XML export --- app/controllers/conference_controller.rb | 1 + app/models/event_type.rb | 7 +++++ app/views/conference/schedule.xml.haml | 35 ++++++++++++++++++++++++ 3 files changed, 43 insertions(+) create mode 100644 app/views/conference/schedule.xml.haml diff --git a/app/controllers/conference_controller.rb b/app/controllers/conference_controller.rb index eecaf71d..805d4dbb 100644 --- a/app/controllers/conference_controller.rb +++ b/app/controllers/conference_controller.rb @@ -14,6 +14,7 @@ class ConferenceController < ApplicationController def schedule @rooms = @conference.venue.rooms if @conference.venue @events = @conference.program.events + @events_xml = @conference.program.events.scheduled.group_by{ |event| event.start_time.to_date } @dates = @conference.start_date..@conference.end_date if @dates == Date.current diff --git a/app/models/event_type.rb b/app/models/event_type.rb index 9a5c4c84..7858513a 100644 --- a/app/models/event_type.rb +++ b/app/models/event_type.rb @@ -12,6 +12,13 @@ class EventType < ActiveRecord::Base LENGTH_STEP = 15 + ## + # Return the length in timestamp format (HH:MM) + # + def length_timestamp + [length / 60, length % 60].map { |t| t.to_s.rjust(2, '0') }.join(':') + end + private ## diff --git a/app/views/conference/schedule.xml.haml b/app/views/conference/schedule.xml.haml new file mode 100644 index 00000000..892ce03a --- /dev/null +++ b/app/views/conference/schedule.xml.haml @@ -0,0 +1,35 @@ +%schedule + %version= @conference.revision + %conference + %acronym= @conference.short_title + %title= @conference.title + %start= @conference.start_date + %end= @conference.end_date + %days= (@conference.end_date - @conference.start_date).to_i + 1 + %timeslot_duration= '00:15' #FIXME + + - if @events_xml.any? + - @events_xml.keys.each.with_index(1) do |day, index| + %day{ date: day, index: index } + - events_in_rooms = @events_xml[day].group_by(&:room) + - @rooms.each do |room| + %room{ name: room.name } + - events_in_rooms[room].each do |event| + %event{ guid: event.guid, id: event.id } + %date= event.start_time.iso8601 + %start= event.start_time.strftime('%H:%M') + %duration= event.event_type.length_timestamp + %room= event.room.name + %type= event.event_type.name + %language= 'en' #FIXME + %slug= "#{event.id} #{event.title}".parameterize + %title= event.title + %subtitle= event.subtitle + %track= event.track.name if event.track + %abstract= event.abstract + %recording + %license/ + %optout=false #FIXME + %persons + - event.speakers.uniq.each do |speaker| + %person{ id: speaker.id }= speaker.name