Sha256: e55029450cd35d0e069ea21580618bb99861acf07338635436bb99ed8cc472e2

Contents?: true

Size: 1.77 KB

Versions: 5

Compression:

Stored size: 1.77 KB

Contents

format :rss do
  attr_accessor :xml

  def initialize card, args
    super
    @xml = @parent ? @parent.xml : ::Builder::XmlMarkup.new
  end

  def show view, args
    view ||= :feed
    render view, args
  end

  # FIXME: integrate this with common XML features when it is added
  view :feed do
    begin
      @xml.instruct! :xml, version: '1.0'
      @xml.rss version: '2.0' do
        @xml.channel do
          @xml.title       render_feed_title
          @xml.description render_feed_description
          @xml.link        render_url
          render_feed_body
        end
      end
    rescue =>e
      @xml.error "\n\nERROR rendering RSS: #{e.inspect}\n\n #{e.backtrace}"
    end
  end

  def raw_feed_items args
    [card]
  end

  view :feed_body do |_args|
    render_feed_item_list
  end

  view :feed_item_list do |args|
    raw_feed_items(args).each do |item|
      @xml.item do
        # FIXME: yuck.
        subformat(item).render_feed_item view_changes: (card.id == RecentID)
      end
    end
  end

  view :feed_title do
    Card.global_setting(:title) + ' : ' + card.name.gsub(/^\*/,'')
  end

  view :feed_item do |args|
    @xml.title card.name
    add_name_context
    @xml.description render((args[:view_changes] ? :change : :open_content))
    @xml.pubDate card.revised_at.to_s(:rfc822)  # updated_at fails on virtual
    # cards, because not all to_s's take args (just actual dates)
    @xml.link render_url
    @xml.guid render_url
  end

  view :feed_description do '' end
  view :comment_box      do '' end
  view :menu             do '' end

  view :open,         view: :titled, mod: All::Base::Format
  view :content,      view: :core,   mod: All::Base::Format
  view :open_content, view: :core,   mod: All::Base::Format
  view :closed,       view: :link,   mod: All::Base::Format
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
card-1.17.4 mod/02_basic_types/set/all/rss.rb
card-1.17.3 mod/02_basic_types/set/all/rss.rb
card-1.17.2 mod/02_basic_types/set/all/rss.rb
card-1.17.1 mod/02_basic_types/set/all/rss.rb
card-1.17.0 mod/02_basic_types/set/all/rss.rb