Module Tools::Event
In: app/models/tools/event.rb

Methods

Included Modules

Geokit::Geocoders

Public Instance methods

Indica si el estado del evento es ‘confirmado’.

[Source]

    # 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.

[Source]

    # 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.

[Source]

    # 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.

[Source]

    # 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.

[Source]

     # 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

[Source]

    # 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.

[Source]

    # 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.

[Source]

    # 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.

[Source]

    # 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

Muestra la información sobre el lugar del evento.

[Source]

    # File app/models/tools/event.rb, line 73
73:   def pretty_place
74:     full_info = [self.place, self.city].map {|e| e.blank? ? nil : e }.compact
75:     full_info.empty? ? "" : full_info.join(", ")
76:   end

[Validate]