Sha256: 878065daad5cf8f85f0d645daed4478c469d7a58defde053917c8b1471a8f28d

Contents?: true

Size: 1.85 KB

Versions: 13

Compression:

Stored size: 1.85 KB

Contents

module Forge
  module CanUseAsset
    
    def self.included(mod)
      mod.send(:include, Sprockets::Helpers::IsolatedHelper)
      mod.send(:include, Sprockets::Helpers::RailsHelper)
      mod.extend(ClassMethods)
    end
    
    module ClassMethods
      def can_use_asset_for(*args)
        args.each do |field|
          self.send("before_#{field}_post_process".to_sym, "prevent_#{field}_pdf_thumbnail".to_sym)

          self.send(:before_validation, "check_for_#{field}_asset".to_sym)
          self.send(:attr_accessor, "#{field}_asset_id".to_sym, "#{field}_asset_url".to_sym)
          
          define_method("check_for_#{field}_asset".to_sym) do
            raise "Your attachment must have a :thumbnail style (ideally '120x108#') to be compatible with can_use_asset" unless self.send(field.to_sym).styles.has_key?(:thumbnail)
            asset = Asset.find_by_id(self.send("#{field}_asset_id".to_sym))
            self.send("#{field}=".to_sym, File.new(asset.attachment.path)) unless asset.blank?
          end
          
          define_method("#{field}_icon_path".to_sym) do
            icon_path = "/images/forge/asset-icons"
            case self.send("#{field}_content_type")
            when /image/
              self.send(field.to_sym).url(:thumbnail)
            when /audio/
              asset_path "forge/asset-icons/audio.jpg"
            when /excel/
              asset_path "forge/asset-icons/spreadsheet.jpg"
            when /pdf/
              asset_path "forge/asset-icons/pdf.jpg"
            else
              asset_path "forge/asset-icons/misc.jpg"
            end
          end
          
          define_method("prevent_#{field}_pdf_thumbnail".to_sym) do
            return false unless self.send("#{field}_content_type".to_sym).index("image") 
          end

        end
      end
    end
  end
end

ActiveRecord::Base.send(:include, Forge::CanUseAsset)

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
forge-cli-0.0.18 lib/forge/lib/forge/can_use_asset.rb
forge-cli-0.0.17 lib/forge/lib/forge/can_use_asset.rb
forge-cli-0.0.16 lib/forge/lib/forge/can_use_asset.rb
forge-cli-0.0.15 lib/forge/lib/forge/can_use_asset.rb
forge-cli-0.0.14 lib/forge/lib/forge/can_use_asset.rb
forge-cli-0.0.13 lib/forge/lib/forge/can_use_asset.rb
forge-cli-0.0.12 lib/forge/lib/forge/can_use_asset.rb
forge-cli-0.0.11 lib/forge/lib/forge/can_use_asset.rb
forge-cli-0.0.10 lib/forge/config/initializers/can_use_asset.rb
forge-cli-0.0.9 lib/forge/config/initializers/can_use_asset.rb
forge-cli-0.0.8 lib/forge/config/initializers/can_use_asset.rb
forge-cli-0.0.7 lib/forge/config/initializers/can_use_asset.rb
forge-cli-0.0.6 lib/forge/config/initializers/can_use_asset.rb