diff --git a/TODO b/TODO index 1d99ec8..8977cbf 100644 --- a/TODO +++ b/TODO @@ -1,5 +1,4 @@ --Next Release-- -Fix bug on page_event tab when no end date is set Make event fields be hidden (in popup) unless set or they click the add date icon Add the default time to event in calendar picker, default to top of the hour Have the end_date default to X time after start date (1 hour) diff --git a/app/views/page_events/index.rhtml b/app/views/page_events/index.rhtml index 9474855..0a6ce5f 100644 --- a/app/views/page_events/index.rhtml +++ b/app/views/page_events/index.rhtml @@ -48,7 +48,7 @@ span.event_date { <%= event.status.name %> <%= event.event_datetime_start.strftime("%m/%d/%Y %I:%M %p") %> - <%- if event.event_datetime_end > event.event_datetime_start -%> + <%- if event.event_datetime_end && event.event_datetime_end > event.event_datetime_start -%> –<%= event.event_datetime_end.strftime("%m/%d/%Y %I:%M %p") %> <%- end -%> diff --git a/lib/page_event/page_extensions.rb b/lib/page_event/page_extensions.rb index be98569..ab54cfa 100644 --- a/lib/page_event/page_extensions.rb +++ b/lib/page_event/page_extensions.rb @@ -7,7 +7,8 @@ def self.included(base) module ClassMethods def events_by_month(date = Time.now, status = nil) month_start = date.at_beginning_of_month - condition_str = "event_datetime_start >= :month_start OR event_datetime_end < :month_end" + condition_str = "(event_datetime_start >= :month_start AND event_datetime_start < :month_end)" + condition_str << " OR (event_datetime_end >= :month_start AND event_datetime_end < :month_end)" condition_str << " AND status_id = #{status}" if status Page.find(:all,:conditions => [condition_str, @@ -19,7 +20,9 @@ def events_by_month(date = Time.now, status = nil) def event_count_by_month(date = Time.now) month_start = date.at_beginning_of_month - Page.count(:conditions => ["event_datetime_start >= :month_start OR event_datetime_end < :month_end", + condition_str = "(event_datetime_start >= :month_start AND event_datetime_start < :month_end)" + condition_str << " OR (event_datetime_end >= :month_start AND event_datetime_end < :month_end)" + Page.count(:conditions => [condition_str, { :month_start => month_start, :month_end => month_start.next_month diff --git a/spec/models/page_extensions_spec.rb b/spec/models/page_extensions_spec.rb index 7e0a356..a854253 100644 --- a/spec/models/page_extensions_spec.rb +++ b/spec/models/page_extensions_spec.rb @@ -26,7 +26,7 @@ describe "#upcoming_events" do before(:each) do - create_page "Another event", :event_datetime => (Time.now.at_beginning_of_month.next_month - 4.minutes).to_s(:db) + create_page "Another event", :event_datetime_start => (Time.now.at_beginning_of_month.next_month - 4.minutes).to_s(:db) end it "should return the pages for the next 3 upcoming events" do @@ -40,8 +40,8 @@ describe "with more upcoming events" do before(:each) do - create_page "Yet another event", :event_datetime => (Time.now.at_beginning_of_month.next_month - 3.minutes).to_s(:db) - create_page "Final event", :event_datetime => (Time.now.at_beginning_of_month.next_month - 1.minutes).to_s(:db) + create_page "Yet another event", :event_datetime_start => (Time.now.at_beginning_of_month.next_month - 3.minutes).to_s(:db) + create_page "Final event", :event_datetime_start => (Time.now.at_beginning_of_month.next_month - 1.minutes).to_s(:db) end it "should return only return 3 events, even if there are more" do diff --git a/spec/scenarios/pages_scenario.rb b/spec/scenarios/pages_scenario.rb index 65fe501..39a668d 100644 --- a/spec/scenarios/pages_scenario.rb +++ b/spec/scenarios/pages_scenario.rb @@ -6,12 +6,15 @@ def load create_page "Home", :slug => "/", :parent_id => nil, :published_at => 2.months.ago.to_s(:db), :body => "Hello world!", - :event_datetime => 5.minutes.from_now.to_s(:db) + :event_datetime_start => 5.minutes.from_now.to_s(:db), + :event_datetime_end => 125.minutes.from_now.to_s(:db) + create_page "No Event" - create_page "CMonth First", :event_datetime => Time.now.at_beginning_of_month.to_s(:db) - create_page "CMonth Last", :event_datetime => (Time.now.at_beginning_of_month.next_month - 2.minutes).to_s(:db) - create_page "Last Month", :event_datetime => (Time.now.at_beginning_of_month.last_month).to_s(:db) + create_page "CMonth First", :event_datetime_start => Time.now.at_beginning_of_month.to_s(:db), + :event_datetime_end => (Time.now.at_beginning_of_month + 2.hours).to_s(:db) + create_page "CMonth Last", :event_datetime_start => (Time.now.at_beginning_of_month.next_month - 2.minutes).to_s(:db) + create_page "Last Month", :event_datetime_start => (Time.now.at_beginning_of_month.last_month).to_s(:db) end