added :content_type, :disposition and :status options
This commit is contained in:
parent
f60d7c5882
commit
a6c510a509
1 changed files with 23 additions and 19 deletions
|
@ -7,39 +7,43 @@ module ActionController
|
||||||
plist = options.delete(:plist) unless options.nil?
|
plist = options.delete(:plist) unless options.nil?
|
||||||
|
|
||||||
if plist
|
if plist
|
||||||
|
|
||||||
|
options[:content_type] ||= Mime::PLIST
|
||||||
|
options[:disposition] ||= "inline"
|
||||||
|
|
||||||
unless filename = options.delete(:plist_filename)
|
if options[:plist_filename].blank?
|
||||||
if plist.is_a? Array
|
if plist.is_a? Array
|
||||||
filename = plist.first.class.name.pluralize + ".plist"
|
options[:plist_filename] = plist.first.class.name.pluralize + ".plist"
|
||||||
elsif plist.respond_to?(:id)
|
elsif plist.respond_to?(:id)
|
||||||
filename = "#{plist.class.name}-#{plist.id}.plist"
|
options[:plist_filename] = "#{plist.class.name}-#{plist.id}.plist"
|
||||||
else
|
else
|
||||||
filename = "#{plist.class.name}-data.plist"
|
options[:plist_filename] = "#{plist.class.name}-data.plist"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
unless options.nil?
|
if plist.is_a? Array
|
||||||
if plist.is_a? Array
|
plist.each do |entry|
|
||||||
plist.each do |entry|
|
if entry.respond_to? :plist_item_options=
|
||||||
if entry.respond_to? :plist_item_options=
|
entry.plist_item_options = options
|
||||||
entry.plist_item_options = options
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
plist_options = {
|
data = plist
|
||||||
:converter_method => :to_plist_item,
|
unless plist.is_a?(CFPropertyList::List)
|
||||||
:convert_unknown_to_string => true
|
plist_options = {
|
||||||
}
|
:converter_method => :to_plist_item,
|
||||||
|
:convert_unknown_to_string => true
|
||||||
data = plist.is_a?(CFPropertyList::List) ? plist : plist.to_plist(plist_options)
|
}
|
||||||
|
data = plist.to_plist(plist_options)
|
||||||
|
end
|
||||||
|
|
||||||
send_data(
|
send_data(
|
||||||
data,
|
data,
|
||||||
:type => Mime::PLIST,
|
:type => options[:content_type],
|
||||||
:filename => filename,
|
:filename => options[:plist_filename],
|
||||||
:disposition => 'inline'
|
:disposition => options[:disposition],
|
||||||
|
:status => options[:status]
|
||||||
)
|
)
|
||||||
|
|
||||||
else
|
else
|
||||||
|
|
Reference in a new issue