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