Skip to content

Commit b063f24

Browse files
committed
Merge branch 'with_ical'
2 parents 9cf4302 + 35bd27d commit b063f24

File tree

4 files changed

+30
-0
lines changed

4 files changed

+30
-0
lines changed

app/controllers/proposals_controller.rb

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,28 @@ def sessions_index
8484
}
8585
end
8686
end
87+
88+
def schedule
89+
@proposals = @event.proposals.scheduled.located
90+
respond_to do |format|
91+
format.ics {
92+
c = Vpim::Icalendar.create2
93+
@proposals.each do |session|
94+
c.add_event do |event|
95+
event.dtstart session.start_time
96+
event.dtend session.start_time + session.duration.minutes
97+
event.summary session.title
98+
event.created session.created_at if session.created_at
99+
event.lastmod session.updated_at if session.updated_at
100+
event.description session.excerpt
101+
event.url url_for session
102+
event.set_text 'LOCATION', session.room.name
103+
end
104+
end
105+
render :text => c.encode.sub(/CALSCALE:Gregorian/, "CALSCALE:Gregorian\nX-WR-CALNAME:#{@event.title}\nMETHOD:PUBLISH")
106+
}
107+
end
108+
end
87109

88110
def session_show
89111
# @proposal and @event set via #assign_proposal_and_event filter

app/models/proposal.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,11 @@ def user
128128
def slug
129129
return "#{SETTINGS.organization_slug}#{event.ergo.id}-%04d" % id
130130
end
131+
132+
# returns a proposal's duration based on its session type
133+
def duration
134+
self.session_type.ergo.duration
135+
end
131136

132137
# Return array of arrays, the first representing the current state, the rest
133138
# representing optional states. Of each pair, the first element is the title,

config/environment.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
config.gem "thoughtbot-paperclip", :source => "http://gems.github.com", :lib => 'paperclip'
3232
config.gem "rubyist-aasm", :source => "http://gems.github.com", :lib => 'aasm'
3333
config.gem "gchartrb", :lib => "google_chart"
34+
config.gem "vpim", :lib => 'vpim/icalendar'
3435
config.gem "RedCloth"
3536

3637
# Settings in config/environments/* take precedence over those specified here.

config/routes.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
map.search_proposal_speakers '/proposals/search_speakers/:id', :controller => 'proposals', :action => 'search_speakers', :requirements => { :method => :post }
1515

1616
map.sessions '/sessions', :controller => 'proposals', :action => 'sessions_index'
17+
map.schedule '/schedule.:format', :controller => 'proposals', :action => 'schedule'
1718
map.session '/sessions/:id', :controller => 'proposals', :action => 'session_show'
1819

1920
map.resources :events do |events|
@@ -22,6 +23,7 @@
2223
events.resources :session_types
2324
events.resources :rooms
2425
events.sessions '/sessions', :controller => 'proposals', :action => 'sessions_index'
26+
events.schedule '/schedule.:format', :controller => 'proposals', :action => 'schedule'
2527
events.session '/sessions/:id', :controller => 'proposals', :action => 'session_show'
2628
end
2729

0 commit comments

Comments
 (0)