Sha256: 3c52ec781d0e5f52958f10c9d07f380f8e8f50550580a8fe969ce4baef475ebf

Contents?: true

Size: 1.42 KB

Versions: 1

Compression:

Stored size: 1.42 KB

Contents

cache_if(@perform_caching, Calagator::CacheObserver.daily_key_for('events_atom', request)) do
  atom_feed('xmlns:georss'.to_sym => 'http://www.georss.org/georss') do |feed|
    page_title = if @search
                   @search.tag ? "Events tagged with: #{@search.tag}" : "Search Results for: #{@search.query}"
                 else
                   'Events'
    end
    feed.title("#{Calagator.title}: #{page_title}")

    unless @events.empty?
      feed.updated(@events.present? ? @events.max_by(&:updated_at).updated_at : Time.now.in_time_zone)

      @events.each do |event|
        feed.entry(event) do |entry|
          summary = normalize_time(event.start_time, event.end_time, format: :text).to_s
          summary += " at #{event.venue.title}" if event.venue && event.venue.title.present?

          entry.title(event.title)
          entry.summary(summary)
          entry.url(event_url(event))
          entry.link(rel: 'enclosure', type: 'text/calendar', href: event_url(event, format: 'ics'))
          entry.start_time(event.start_time.xmlschema)
          entry.end_time(event.end_time.xmlschema) if event.end_time
          entry.content(render(partial: 'feed_item', locals: { event: event }, formats: [:html]), type: 'html')
          if event.venue && event.venue.latitude && event.venue.longitude
            entry.georss :point, "#{event.venue.latitude} #{event.venue.longitude}"
          end
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
calagator-1.1.0 app/views/calagator/events/index.atom.builder