class Wrapper < ActiveRecord::Base TypesWrapper = [ 'application/x-docx', 'application/x-doc', 'application/x-rtf', 'application/x-pps', 'application/x-ppt', 'application/x-pptx', 'application/x-xls', 'application/x-xlsx','application/x-csv', 'application/x-msg', 'application/x-zip', 'text/plain', 'application/x-pdf','application/pdf', 'application/mp3', 'application/x-mp3', 'audio/mpeg', 'audio/mp3', 'image/gif', 'image/png', 'image/x-png', 'image/jpeg', 'image/jpg', 'video/mpeg', 'application/x-flv', 'video/quicktime' ,'application/x-wmv', 'application/x-avi'] acts_as_commentable acts_as_textiled :name, :info belongs_to :user has_attached_file :data, :url => "/:zfull_path", :path => ":rails_root/public/:zfull_path", :whiny => true attr_protected :data_file_name, :data_content_type, :data_size before_post_process :validate_processor validates_attachment_size :data, :less_than => 10.megabytes validates_attachment_content_type :data, :content_type => TypesWrapper def proc_name type, detail = data.content_type.scan(/^(video|audio|application|text|image)\/(.*?)$/).flatten case type when 'image' then 'image' when 'video','audio' then type when 'text' then 'text' when 'application' case detail when /pdf$/ then 'pdf' when /mp3$/ then 'audio' when /mov|flv|wmv|avi$/ then 'video' when /csv|xls.?$/ then 'excel' when /doc.?|txt|rtf$/ then 'word' when /pp..?/ then 'powerpoint' when 'msg' then 'message' when /^(?:x-)?zip$/ then 'zip' else 'document' end end end def validate_processor case proc_name when "image" then data.styles[:small] = { :geometry => "64x64>", :format => "png", :processors => "thumbnail" } data.styles[:thumb] = { :geometry => "128x128#", :format => "png", :processors => "thumbnail" } data.styles[:large] = { :geometry => "300x400#", :format => "png", :processors => "thumbnail" } when "document",'excel','word','powerpoint','text' data.styles[:small] = { :geometry => "64x64>", :format => "png", :processors => "empty" } data.styles[:thumb] = { :geometry => "128x128#", :format => "png", :processors => "empty" } data.styles[:large] = { :geometry => "300x400#", :format => "png", :processors => "empty" } when "zip" data.styles[:small] = { :geometry => "64x64>", :format => "png", :processors => "empty" } data.styles[:thumb] = { :geometry => "128x128#", :format => "png", :processors => "empty" } data.styles[:large] = { :geometry => "300x400#", :format => "png", :processors => "zip_info" } when "video" data.styles[:small] = { :geometry => "64x64>", :format => "png", :processors => "empty" } data.styles[:thumb] = { :geometry => "128x128#", :format => "png", :processors => "video_thumb" } data.styles[:large] = { :geometry => "300x400#", :format => "flv", :processors => "video_convert"} when "audio" data.styles[:small] = { :geometry => "64x64>", :format => "png", :processors => "audio_tag" } data.styles[:thumb] = { :geometry => "128x128#", :format => "png", :processors => "empty" } data.styles[:large] = { :geometry => "300x400#", :format => "png", :processors => "empty" } when "pdf" data.styles[:small] = { :geometry => "64x64>", :format => "png", :processors => "empty" } data.styles[:thumb] = { :geometry => "128x128#", :format => "png", :processors => "pdf" } data.styles[:large] = { :geometry => "300x400#", :format => "png", :processors => "pdf" } end true end end