| Module | Tools::Calendar::ClassMethods |
| In: |
app/models/tools/calendar.rb
|
Devuelve la lista de eventos del mes y año indicados.
# File app/models/tools/calendar.rb, line 90
90: def month_events(month, year)
91: start_day = Time.parse("#{month}/01/#{year}")
92: end_day = start_day.end_of_month
93: # self.find(:all, :conditions => ['starts_at >= ? AND starts_at <= ?', start_day, end_day],
94: # :order => "starts_at")
95: self.find(:all, :conditions => ['starts_at <= :end_day AND (ends_at >= :start_day)', {:start_day => start_day, :end_day => end_day}],
96: :order => "starts_at")
97:
98: end
Devuelve una lista con los eventos para cada día del mes y año indicados. Para los eventos que abarcan más de un día hay una entrada para cada día del evento.
# File app/models/tools/calendar.rb, line 102
102: def month_events_by_day(month, year)
103: events = self.month_events(month, year)
104: events4day = events.group_by {|e| e.first_day(month, year)}
105: events.each do |evt|
106: if !evt.one_day?
107: evt.days(month, year).each do |day|
108: events4day[day] = [] if events4day[day].blank?
109: events4day[day].push(evt) unless events4day[day].include?(evt)
110: end
111: end
112: end
113:
114: events4day
115: end
Prepara la lista de eventos del mes y año indicadas para usarla en el calendario del mes.
# File app/models/tools/calendar.rb, line 118
118: def month_events_by_day4cal(month, year)
119: events = {}
120:
121: first_day = Date.civil(year, month, 1)
122: last_day = Date.civil(year, month, -1)
123:
124: self.find(:all, :conditions => [ "(starts_at <= :end_of_day) and (ends_at >= :beginning_of_day)",
125: {:beginning_of_day => (first_day-6.days).beginning_of_day,
126: :end_of_day => (last_day + 6.days).end_of_day}],
127: :order => "starts_at").each do |evt|
128: if evt.one_day?
129: events[evt.month] = {} if events[evt.month].blank?
130: events[evt.month][evt.day] = [] if events[evt.month][evt.day].blank?
131: events[evt.month][evt.day].push(evt) unless events[evt.month][evt.day].include?(evt)
132: else
133: logger.debug ".......................... more than one day event #{evt.pretty_dates}"
134:
135: if (evt.starts_at.month > evt.ends_at.month)
136: if (month >= evt.starts_at.month)
137: prev_year = year
138: next_year= year + 1
139: else
140: prev_year = year - 1
141: next_year = year
142: end
143: (evt.starts_at.month .. 12).each do |m|
144: events[m] = {} if events[m].blank?
145: evt.days(m, prev_year).each do |day|
146: events[m][day] = [] if events[m][day].blank?
147: events[m][day].push(evt) unless events[m][day].include?(evt)
148: end
149: end
150: start_month = 1
151: else
152: prev_year = year - 1
153: next_year= year
154: start_month = evt.starts_at.month
155: end
156:
157: (start_month .. evt.ends_at.month).each do |m|
158: events[m] = {} if events[m].blank?
159: evt.days(m, next_year).each do |day|
160: events[m][day] = [] if events[m][day].blank?
161: events[m][day].push(evt) unless events[m][day].include?(evt)
162: end
163: end
164:
165: end
166: # logger.debug ".............. events months: #{events.keys.join(",")}"
167: # logger.debug "............. by now for month #{month}"
168: # if events[month]
169: # events[month].each do |day, evts|
170: # logger.debug "day: #{day}"
171: # logger.debug "eventos: #{evts.map {|e| e.pretty_dates}.join('\n')}"
172: # end
173: # end
174: end
175:
176: events
177: end