Sha256: e6b2f3555082eb53ad114b17cb1fbbe6722e43728a2f5b79a8235eeb97be6be1

Contents?: true

Size: 1.86 KB

Versions: 11

Compression:

Stored size: 1.86 KB

Contents

module Forge
  module CanUseAsset
    
    def self.included(mod)
      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/
              ActionController::Base.helpers.asset_path "forge/asset-icons/audio.jpg"
            when /excel/
              ActionController::Base.helpers.asset_path "forge/asset-icons/spreadsheet.jpg"
            when /pdf/
              ActionController::Base.helpers.asset_path "forge/asset-icons/pdf.jpg"
            else
              ActionController::Base.helpers.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

11 entries across 11 versions & 1 rubygems

Version Path
forge-cli-0.1.10 lib/forge/lib/forge/can_use_asset.rb
forge-cli-0.1.9 lib/forge/lib/forge/can_use_asset.rb
forge-cli-0.1.8 lib/forge/lib/forge/can_use_asset.rb
forge-cli-0.1.7 lib/forge/lib/forge/can_use_asset.rb
forge-cli-0.1.6 lib/forge/lib/forge/can_use_asset.rb
forge-cli-0.1.5 lib/forge/lib/forge/can_use_asset.rb
forge-cli-0.1.4 lib/forge/lib/forge/can_use_asset.rb
forge-cli-0.1.3 lib/forge/lib/forge/can_use_asset.rb
forge-cli-0.1.2 lib/forge/lib/forge/can_use_asset.rb
forge-cli-0.1.1 lib/forge/lib/forge/can_use_asset.rb
forge-cli-0.1.0 lib/forge/lib/forge/can_use_asset.rb