Sha256: fc96c8e9529a8d902fac1a0e9288a57d1277758778771367a3ccb1c2d44c2854

Contents?: true

Size: 1.14 KB

Versions: 12

Compression:

Stored size: 1.14 KB

Contents

module Reviewed
  module Attachable

    def attachments opts={}
      tags = opts.has_key?(:tags) ? [opts[:tags]].flatten : []
      attachments = []

      if tags.present?
        defaults = default_attachments & tags # attachments that already exist
        fetch = tags - defaults # attachments we need to fetch

        if defaults.present?
          tags.each do |tag|
            attachments <<  attributes['attachments'].select { |x| x.tags.include?(tag.to_s) }
          end
        end

        if fetch.present?
          attachments << fetch_attachments(opts.merge!(tags: fetch)).to_a
        end
      else
        attachments = fetch_attachments(opts).to_a
      end

      return attachments.flatten.uniq.compact
    end

    def gallery tags=nil, num=8, page=1
      fetch_attachments tags: tags, :gallery => true, :per_page => num, :page => page, :order => 'priority'
    end

    private

    def default_attachments
      attributes['attachments'] ||= []
      attributes['attachments'].map(&:tags).flatten.uniq.compact
    end

    def fetch_attachments opts={}
      req = client.attachments(scope: self)
      req.where opts
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
reviewed-1.2.4 lib/reviewed/attachable.rb
reviewed-1.2.3 lib/reviewed/attachable.rb
reviewed-1.3.0 lib/reviewed/attachable.rb
reviewed-1.2.2 lib/reviewed/attachable.rb
reviewed-1.2.0 lib/reviewed/attachable.rb
reviewed-1.1.0 lib/reviewed/attachable.rb
reviewed-1.0.4 lib/reviewed/attachable.rb
reviewed-1.0.3 lib/reviewed/attachable.rb
reviewed-1.0.2 lib/reviewed/attachable.rb
reviewed-1.0.1 lib/reviewed/attachable.rb
reviewed-1.0.0 lib/reviewed/attachable.rb
reviewed-0.9.1 lib/reviewed/attachable.rb