| 
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61 | # File 'lib/attachinary/view_helpers.rb', line 16
def attachinary_file_field_options(model, relation, options={})
  options[:attachinary] = model.send("#{relation}_metadata")
  options[:cloudinary] ||= {}
  options[:cloudinary][:tags] ||= []
  options[:cloudinary][:tags]<< "#{Rails.env}_env"
  options[:cloudinary][:tags]<< Attachinary::TMPTAG
  options[:cloudinary][:tags].uniq!
  cloudinary_upload_url = Cloudinary::Utils.cloudinary_api_url("upload",
    {:resource_type=>:auto}.merge(options[:cloudinary]))
  api_key = options[:cloudinary][:api_key] || Cloudinary.config.api_key || raise("Must supply api_key")
  api_secret = options[:cloudinary][:api_secret] || Cloudinary.config.api_secret || raise("Must supply api_secret")
  cloudinary_params = Cloudinary::Uploader.build_upload_params(options[:cloudinary])
            cloudinary_params[:callback] = attachinary.cors_url if self.respond_to?(:attachinary)
  cloudinary_params[:signature] = Cloudinary::Utils.api_sign_request(cloudinary_params, api_secret)
  cloudinary_params[:api_key] = api_key
  options[:html] ||= {}
  options[:html][:class] = [options[:html][:class], 'attachinary-input'].flatten.compact
  if !options[:html][:accept] && accepted_types = options[:attachinary][:accept]
    accept = accepted_types.map do |type|
      MIME::Types.type_for(type.to_s)[0]
    end.compact
    options[:html][:accept] = accept.join(',') unless accept.empty?
  end
  options[:html][:multiple] = true unless options[:attachinary][:single]
  options[:html][:data] ||= {}
  options[:html][:data][:attachinary] = options[:attachinary] || {}
  options[:html][:data][:attachinary][:files] = [model.send(relation)].compact.flatten
  options[:html][:data][:form_data] = cloudinary_params.reject{ |k, v| v.blank? }
  options[:html][:data][:url] = cloudinary_upload_url
  options
end |