111 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			111 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Ruby
		
	
	
	
| class Preview
 | |
|   include Mongoid::Document
 | |
|   include Mongoid::Timestamps
 | |
| 
 | |
|   # field :object_f, :type => Hash
 | |
|   field :object, :type=> Hash
 | |
|   field :preview_at_link
 | |
|   field :expired_at , :type => DateTime
 | |
|   field :link_args, :type => Array
 | |
|   field :object_class_type
 | |
|   
 | |
|   has_many :preview_files, :autosave => true, :dependent => :destroy
 | |
|   has_many :preview_associations, :autosave => true, :dependent => :destroy
 | |
|   # def object=(params)
 | |
|   #   save_upload_temp_link(params,"news_bulletin_files_attributes") #unless params[]
 | |
|   #   self.object_f = params
 | |
|   # end
 | |
| 
 | |
|   # def object
 | |
|   #   return object_f
 | |
|   # end
 | |
| 
 | |
|   # def save_upload_temp_link(params,field_name = "bulletin_files_attributes")
 | |
|   #   image = preview_files.build(:file=>params[:image])
 | |
|   #   params[:image] = image.id
 | |
| 
 | |
|   #   params[field_name].each_with_index do |item,index|
 | |
|   #     bfa = preview_files.build(:file=>params[field_name][index.to_s][:file])
 | |
|   #     params[field_name][index.to_s] = bfa.id
 | |
|   #   end unless  params[field_name].nil?
 | |
|   # end
 | |
| 
 | |
|   # def dig_in_hash(hash,paths_ary)
 | |
|   #    hash.each_pair do |key,in_hash|
 | |
|   #       if in_hash.kind_of? Array 
 | |
|   #         dig_in_array(hash,paths_ary)
 | |
|   #       elsif in_hash.kind_of? Hash
 | |
|   #         dig_in_hash(hash,paths_ary)
 | |
|   #       else
 | |
|   #         puts("\n End Node: \t #{paths_ary.join } #{in_hash.class} : #{key}##{in_hash}")
 | |
|   #       end
 | |
|   #    end
 | |
|   # end
 | |
| 
 | |
|   # def dig_in_array(array,paths_ary)
 | |
|   #   array.each do |item|
 | |
|   #       if item.kind_of? Array 
 | |
|   #         dig_in_array(hash,paths_ary)
 | |
|   #       elsif item.kind_of? Hash
 | |
|   #         dig_in_hash(hash,paths_ary)
 | |
|   #       else
 | |
|   #         puts("\n End Node: \t #{paths_ary.join } #{item.class} : {item}")
 | |
|   #       end
 | |
|   #    end
 | |
|   # end
 | |
| 
 | |
| 
 | |
|   # def dig_in_hash_old(hash,paths_ary)
 | |
|   #   hash.each_pair do |k,in_hash|
 | |
|   #     if (!in_hash.kind_of? Array and !in_hash.kind_of? Hash)
 | |
|   #       #p "UploadedFile : #{in_hash.is_a? ActionDispatch::Http::UploadedFile}"
 | |
|   #       #in_hash = "no file" if in_hash.is_a? ActionDispatch::Http::UploadedFile
 | |
|   #       #in_hash.select{|key,hash| hash.is_a? ActionDispatch::Http::UploadedFile}
 | |
|   #       puts("\n End Node:# \n")
 | |
|   #       p "#{paths_ary.join } #{in_hash.class} : #{in_hash}"
 | |
|   #       #p "UploadedFile(#{in_hash}) : #{in_hash.is_a? ActionDispatch::Http::UploadedFile}"
 | |
|   #     else
 | |
|   #       if (!in_hash.first.kind_of? Array and !in_hash.first.kind_of? Hash)
 | |
|   #         paths_ary << "[#{in_hash.first}]" 
 | |
|   #       end
 | |
|   #       puts("\n Go Down [#{in_hash.first}]\n")
 | |
|   #       dig_in_hash(in_hash,paths_ary)
 | |
|   #       puts("\n Go Out \n")
 | |
|   #     end
 | |
|   #       puts "This is last"
 | |
|   #       paths_ary.pop  
 | |
|   #   end
 | |
|   # end
 | |
| 
 | |
|   def get_arg_hash
 | |
|     object.slice(*link_args).inject({}){|la,(k,v)| la[k.to_sym] = v; la}
 | |
|   end
 | |
| 
 | |
|   def get_preview_link
 | |
|     ap = Rails.application.routes.url_helpers
 | |
|     ap.send preview_at_link,({:id=>id,:preview=>true}.merge get_arg_hash)
 | |
|     #func = eval("Rails.application.routes.url_helpers.#{preview_at_link}").send 
 | |
|   end
 | |
| 
 | |
|   def get_virtual_object
 | |
|     virtual_object = eval(self.object_class_type).new object
 | |
|     preview_files.each do |file|
 | |
|       if file.file_in_array
 | |
|           eval("virtual_object.#{file.field_name_for_rebuild}.build  :file=>file.file") 
 | |
|         else
 | |
|           eval("virtual_object.#{file.field_name_for_rebuild} = file.file")     
 | |
|       end
 | |
|     end
 | |
| 
 | |
|     preview_associations.each do |local_object|
 | |
|       if local_object.object_in_array
 | |
|           eval("virtual_object.#{local_object.field_name_for_rebuild}.build  local_object.object") 
 | |
|         else
 | |
|           eval("virtual_object.#{local_object.field_name_for_rebuild} = local_object.object")     
 | |
|       end
 | |
|     end
 | |
|     virtual_object
 | |
|   end
 | |
| 
 | |
| end
 |