Skip to content

Commit

Permalink
Move event data generation into a partial
Browse files Browse the repository at this point in the history
  • Loading branch information
davec committed Jun 10, 2009
1 parent c42e82a commit 2afd990
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 13 deletions.
12 changes: 1 addition & 11 deletions app/helpers/calendars_helper.rb
Expand Up @@ -44,18 +44,8 @@ def make_calendar(this_month, rjs = false)
block << %Q{<div id="#{div_id}">}
block << calendar(calendar_options) do |d|
if days_with_events.has_key?(d)
event_list = %Q{<div id="events-#{d.jd}" class="calendar-data tooltip">\n<dl class="events">\n}
eod = d + 1.day - 1.second
# Sort events by start time, with full-day events being placed
# at the end, followed by a secondary sort on the event name.
days_with_events[d].sort_by{|e| [e.start_time||eod,e.name]}.each do |event|
event_list << %Q{<dt>#{h event.name}</dt>\n}
event_list << %Q{<dd class="location">#{h event.location}</dd>\n} if event.location
event_list << %Q{<dd class="time">#{h event.time(:format => '%l:%M %p')}</dd>\n} if event.time
event_list << %Q{<dd class="description">#{h(event.description) || '&nbsp;'}</dd>\n}
end
event_list << %Q{</dl>\n<p class="footer">Click date for more details</p>\n</div>\n}
events << event_list
events << ActionView::Base.new(ActionController::Base.view_paths).render(:partial => 'calendars/events', :locals => { :id => d.jd, :events => days_with_events[d], :end_of_day => eod })

[ %Q{<a href="#{events_path(:year => this_month.year, :month => this_month.month, :day => d.mday)}">#{d.mday}</a>}, { :class => 'eventDay', :id => "day-#{d.jd}" } ]
end
Expand Down
10 changes: 10 additions & 0 deletions app/views/calendars/_events.html.haml
@@ -0,0 +1,10 @@
.calendar-data.tooltip{ :id => "events-#{id}" }
%dl.events
- events.sort_by{|e| [e.start_time||end_of_day, e.name]}.each do |event|
%dt= h event.name
- if event.location
%dd.location= h event.location
- if event.time
%dd.time= h event.time(:format => '%l:%M %p')
%dd.description= h(event.description) || '&nbsp;'
%p.footer Click date for more details
4 changes: 2 additions & 2 deletions spec/models/events_calendar_spec.rb
Expand Up @@ -9,15 +9,15 @@
tag = %{<r:calendar />}

today = Date.today
expected = %r{\A<div id=\"events-calendar\">.*<th[^>]*>#{Date::MONTHNAMES[today.month]}\n?</th>.*<td[^>]*><a href=\"/events/#{today.year}/#{today.month}/#{today.mday}\">#{today.mday}</a>.*</div><script type=\"text/javascript\">.*</script>\Z}m
expected = %r{\A<div id=\"events-calendar\">.*<th[^>]*>#{Date::MONTHNAMES[today.month]}\n?</th>.*<td[^>]*><a href=\"/events/#{today.year}/#{today.month}/#{today.mday}\">#{today.mday}</a>.*</div>\n?<script type=\"text/javascript\">.*</script>\n?</div>\Z}m

pages(:home).should render(tag).matching(expected)
end

it 'should render a calendar for the specified month and year' do
tag = %{<r:calendar year='2009' month='1' />}

expected = %r{\A<div id=\"events-calendar\">.*<th[^>]*>#{Date::MONTHNAMES[1]}\n?</th>.*</div><script type=\"text/javascript\">.*</script>\Z}m
expected = %r{\A<div id=\"events-calendar\">.*<th[^>]*>#{Date::MONTHNAMES[1]}\n?</th>.*</div>\n?<script type=\"text/javascript\">.*</script>\n?</div>\Z}m

pages(:home).should render(tag).matching(expected)
end
Expand Down

0 comments on commit 2afd990

Please sign in to comment.