OpenIrekia v4.0.0
Copyright 2009-2013 eFaber, S.L. Copyright 2009-2013 Ejie, S.A. Copyrigth 2009-2013 Dirección de Gobierno Abierto y Comunicación en Internet;
Gobernu Irekirako eta Interneteko Komunikaziorako Zuzendaritza; Lehendakaritza. Gobierno Vasco – Eusko Jaurlaritza
Licencia con arreglo a la EUPL, Versión 1.1 o –en cuanto sean aprobadas por la Comisión Europea– versiones posteriores de la EUPL (la Licencia); Solo podrá usarse esta obra si se respeta la Licencia. Puede obtenerse una copia de la Licencia en: ec.europa.eu/idabc/eupl Salvo cuando lo exija la legislación aplicable o se acuerde por escrito, el programa distribuido con arreglo a la Licencia se distribuye TAL CUAL, SIN GARANTÍAS NI CONDICIONES DE NINGÚN TIPO, ni expresas ni implícitas. Véase la Licencia en el idioma concreto que rige los permisos y limitaciones que establece la Licencia
http://open.irekia.net, openirekia@efaber.net
Indica si el evento empieza o acaba entre first_day
y
last_day
.
# File app/models/tools/event.rb, line 35 def between?(first_day, last_day) ((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)) 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 109 def ends_later_than_it_starts errors.add_to_base "La fecha de fin debe ser posterior a la de inicio" if self.ends_at < self.starts_at end
Rellena los datos de longitud y latitud.
Método que se usa en after_save
.
# File app/models/tools/event.rb, line 116 def fill_lat_lng_data if location_for_gmaps_changed? || place_changed? # Primero miramos en la lista de lugares comunes if eloc = EventLocation.find_by_place_and_city_and_address(self.place, self.city, self.location_for_gmaps) self.lat, self.lng = eloc.lat, eloc.lng else if "#{location_for_gmaps} #{city}".blank? self.lat = self.lng = nil else # Preguntar a Google full_location = "#{location_for_gmaps}, #{city}, Spain" loc = MultiGeocoder.geocode("#{full_location}") unless loc.success loc = MultiGeocoder.geocode(location_for_gmaps) end if loc.success self.lat, self.lng = loc.lat, loc.lng end end end end end
Muestra la descripción del evento en formato apropiado para usarlo como microformat
# File app/models/tools/event.rb, line 86 def microformat_body m = body.to_s.match(/(.+)<p.*>###<\/p>(.+)/) # m = body.match(/((.+?)<\/p>)/m) if m b = "<div class='description'>#{m[1]}</div> #{m[2]}" else b = body end return b end
Indica si el evento ya ha pasado
# File app/models/tools/event.rb, line 30 def passed? (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")) end
Fomatea la descripción del evento.
# File app/models/tools/event.rb, line 40 def pretty_body body ? body.sub(/<p.*>###<.*\/p>/, '') : "" 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 46 def pretty_dates(locale=I18n.locale) if starts_at.eql?(ends_at) if starts_at.strftime('%H%M') == "0000" # Remove hour if it is scheduled for midnight I18n.localize(starts_at.to_date, :format => :long, :locale => locale) else I18n.localize(starts_at, :format => :long, :locale => locale) end elsif starts_at.to_date.eql?(ends_at.to_date) # Same day, different hours "#{I18n.localize(starts_at.to_date, :format => :long, :locale => locale)}, #{starts_at.strftime('%H:%M')} - #{ends_at.strftime('%H:%M')}" else # Different dates 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) 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) "#{start_date} - #{end_date}" end end
Muestra las horas de inicio y final del evento.
# File app/models/tools/event.rb, line 67 def pretty_hours(locale=I18n.locale) if starts_at.to_date.eql?(ends_at.to_date) # Same day, different hours "#{starts_at.strftime('%H:%M')} - #{ends_at.strftime('%H:%M')}" else # Different dates 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) 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) "#{start_date} - #{end_date}" end end
Muestra la información sobre el lugar del evento.
# File app/models/tools/event.rb, line 80 def pretty_place full_info = [self.place, self.city].map {|e| e.blank? ? nil : e }.compact full_info.empty? ? "" : full_info.join(", ") end
Indica si el evento self
y el evt2
son del mismo
día.
# File app/models/tools/event.rb, line 141 def same_day?(evt) self.starts_at.to_date.eql?(evt.starts_at.to_date) end