| Module | Tools::Event |
| In: |
app/models/tools/event.rb
|
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.
# File app/models/tools/event.rb, line 21
21: def confirmed=(val)
22: case val
23: when true
24: self.state = 'confirmado'
25: when false
26: self.state = 'previsto'
27: else
28: self.state = val.to_i.eql?(1) ? 'confirmado' : 'previsto'
29: end
30: 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 94
94: def ends_later_than_it_starts
95: errors.add_to_base "La fecha de fin debe ser posterior a la de inicio" if self.ends_at < self.starts_at
96: end
Rellena los datos de longitud y latitud.
Método que se usa en after_save.
# File app/models/tools/event.rb, line 101
101: def fill_lat_lng_data
102: if location_for_gmaps_changed?
103: if "#{location_for_gmaps} #{city}".blank?
104: self.lat = self.lng = nil
105: else
106: full_location = "#{location_for_gmaps}, #{city}, Spain"
107: loc = MultiGeocoder.geocode("#{full_location}")
108: unless loc.success
109: loc = MultiGeocoder.geocode(location_for_gmaps)
110: end
111:
112: if loc.success
113: self.lat, self.lng = loc.lat, loc.lng
114: end
115: end
116: end
117: end
Muestra la descripción del evento en formato apropiado para usarlo como microformat
# File app/models/tools/event.rb, line 79
79: def microformat_body
80: m = body.to_s.match(/(.+)<p.*>###<\/p>(.+)/m)
81: # m = body.match(/((.+?)<\/p>)/m)
82: if m
83: b = "<div class='description'>#{m[1]}</div>
84: #{m[2]}"
85: else
86: b = body
87: end
88: return b
89: end
Fomatea la descripción del evento.
# File app/models/tools/event.rb, line 33
33: def pretty_body
34: body ? body.sub(/<p.*>###<.*\/p>/, '') : ""
35: 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 39
39: def pretty_dates(locale=I18n.locale)
40: if starts_at.eql?(ends_at)
41: if starts_at.strftime('%H%M') == "0000"
42: # Remove hour if it is scheduled for midnight
43: I18n.localize(starts_at.to_date, :format => :long, :locale => locale)
44: else
45: I18n.localize(starts_at, :format => :long, :locale => locale)
46: end
47: elsif starts_at.to_date.eql?(ends_at.to_date)
48: # Same day, different hours
49: "#{I18n.localize(starts_at.to_date, :format => :long, :locale => locale)}, #{starts_at.strftime('%H:%M')} - #{ends_at.strftime('%H:%M')}"
50: else
51: # Different dates
52: 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)
53: 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)
54: "#{start_date} - #{end_date}"
55: end
56: end
Muestra las horas de inicio y final del evento.
# File app/models/tools/event.rb, line 60
60: def pretty_hours(locale=I18n.locale)
61: if starts_at.to_date.eql?(ends_at.to_date)
62: # Same day, different hours
63: "#{starts_at.strftime('%H:%M')} - #{ends_at.strftime('%H:%M')}"
64: else
65: # Different dates
66: 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)
67: 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)
68: "#{start_date} - #{end_date}"
69: end
70: end