| Module | Tools::Event |
| In: |
app/models/tools/event.rb
|
Indica si el evento empieza o acaba entre first_day y last_day.
# File app/models/tools/event.rb, line 41
41: def between?(first_day, last_day)
42: ((self.ends_at.to_date >= first_day) && (self.ends_at.to_date <= last_day)) || ((self.starts_at.to_date >= first_day) && (self.starts_at.to_date <= last_day))
43: end
Indica si el estado del evento es ‘confirmado’.
# File app/models/tools/event.rb, line 14
14: def confirmed
15: self.state.eql?('confirmado')
16: end
Asigna el valor del campo state. Si val = true el evento es confirmado. y el valor del campo state es confirmado. En el caso contrario, el valor del campo state es previsto.
Este método se llama cuando se reciben los datos de un formulario. En el formulario se usa un check_box para indicar si el evento es confirmado o no y por lo tanto el valor del val es 0 o 1.
# File app/models/tools/event.rb, line 24
24: def confirmed=(val)
25: case val
26: when true
27: self.state = 'confirmado'
28: when false
29: self.state = 'previsto'
30: else
31: self.state = val.to_i.eql?(1) ? 'confirmado' : 'previsto'
32: end
33: end
Indica si el evento está confirmado o no.
# File app/models/tools/event.rb, line 9
9: def confirmed?
10: self.state.eql?('confirmado')
11: end
Añade a la lista de errors una entrada si la fecha de inicio es posterior a la de fin del evento.
Método que se usa en after_save.
# File app/models/tools/event.rb, line 107
107: def ends_later_than_it_starts
108: errors.add_to_base "La fecha de fin debe ser posterior a la de inicio" if self.ends_at < self.starts_at
109: end
Rellena los datos de longitud y latitud.
Método que se usa en after_save.
# File app/models/tools/event.rb, line 114
114: def fill_lat_lng_data
115: if location_for_gmaps_changed? || place_changed?
116: # Primero miramos en la lista de lugares comunes
117: if eloc = EventLocation.find_by_place_and_city_and_address(self.place, self.city, self.location_for_gmaps)
118: self.lat, self.lng = eloc.lat, eloc.lng
119: else
120: if "#{location_for_gmaps} #{city}".blank?
121: self.lat = self.lng = nil
122: else
123: # Preguntar a Google
124: full_location = "#{location_for_gmaps}, #{city}, Spain"
125: loc = MultiGeocoder.geocode("#{full_location}")
126: unless loc.success
127: loc = MultiGeocoder.geocode(location_for_gmaps)
128: end
129:
130: if loc.success
131: self.lat, self.lng = loc.lat, loc.lng
132: end
133: end
134: end
135: end
136: end
Muestra la descripción del evento en formato apropiado para usarlo como microformat
# File app/models/tools/event.rb, line 92
92: def microformat_body
93: m = body.to_s.match(/(.+)<p.*>###<\/p>(.+)/m)
94: # m = body.match(/((.+?)<\/p>)/m)
95: if m
96: b = "<div class='description'>#{m[1]}</div>
97: #{m[2]}"
98: else
99: b = body
100: end
101: return b
102: end
Indica si el evento ya ha pasado
# File app/models/tools/event.rb, line 36
36: def passed?
37: (self.ends_at < Time.zone.now) && !((self.ends_at.to_date.eql?(Time.zone.now.to_date)) && self.ends_at.strftime('%H%M').eql?("0000"))
38: end
Fomatea la descripción del evento.
# File app/models/tools/event.rb, line 46
46: def pretty_body
47: body ? body.sub(/<p.*>###<.*\/p>/, '') : ""
48: end
Muestra las fechas del evento en el idioma correspondinte con el formato para este idioma. Si está indicada la hora, ésta también se muestra.
# File app/models/tools/event.rb, line 52
52: def pretty_dates(locale=I18n.locale)
53: if starts_at.eql?(ends_at)
54: if starts_at.strftime('%H%M') == "0000"
55: # Remove hour if it is scheduled for midnight
56: I18n.localize(starts_at.to_date, :format => :long, :locale => locale)
57: else
58: I18n.localize(starts_at, :format => :long, :locale => locale)
59: end
60: elsif starts_at.to_date.eql?(ends_at.to_date)
61: # Same day, different hours
62: "#{I18n.localize(starts_at.to_date, :format => :long, :locale => locale)}, #{starts_at.strftime('%H:%M')} - #{ends_at.strftime('%H:%M')}"
63: else
64: # Different dates
65: start_date = starts_at.strftime('%H%M') == "0000" ? I18n.localize(starts_at.to_date, :format => :long, :locale => locale) : I18n.localize(starts_at, :format => :long, :locale => locale)
66: end_date = ends_at.strftime('%H%M') == "0000" ? I18n.localize(ends_at.to_date, :format => :long, :locale => locale) : I18n.localize(ends_at, :format => :long, :locale => locale)
67: "#{start_date} - #{end_date}"
68: end
69: end
Muestra las horas de inicio y final del evento.
# File app/models/tools/event.rb, line 73
73: def pretty_hours(locale=I18n.locale)
74: if starts_at.to_date.eql?(ends_at.to_date)
75: # Same day, different hours
76: "#{starts_at.strftime('%H:%M')} - #{ends_at.strftime('%H:%M')}"
77: else
78: # Different dates
79: start_date = starts_at.strftime('%H%M') == "0000" ? I18n.localize(starts_at.to_date, :format => :long, :locale => locale) : I18n.localize(starts_at, :format => :long, :locale => locale)
80: end_date = ends_at.strftime('%H%M') == "0000" ? I18n.localize(ends_at.to_date, :format => :long, :locale => locale) : I18n.localize(ends_at, :format => :long, :locale => locale)
81: "#{start_date} - #{end_date}"
82: end
83: end
Muestra la información sobre el lugar del evento.
# File app/models/tools/event.rb, line 86
86: def pretty_place
87: full_info = [self.place, self.city].map {|e| e.blank? ? nil : e }.compact
88: full_info.empty? ? "" : full_info.join(", ")
89: end