1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 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 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
|
module RailsAdmin
module Config
module Actions
class Index < RailsAdmin::Config::Actions::Base
RailsAdmin::Config::Actions.register(self)
register_instance_option :collection do
true
end
register_instance_option :http_methods do
[:get, :post]
end
register_instance_option :route_fragment do
''
end
register_instance_option :breadcrumb_parent do
parent_model = bindings[:abstract_model].try(:config).try(:parent)
if am = parent_model && RailsAdmin.config(parent_model).try(:abstract_model)
[:index, am]
else
[:dashboard]
end
end
register_instance_option :controller do
proc do
@objects ||= list_entries
unless @model_config.list.scopes.empty?
if params[:scope].blank?
unless @model_config.list.scopes.first.nil?
@objects = @objects.send(@model_config.list.scopes.first)
end
elsif @model_config.list.scopes.collect(&:to_s).include?(params[:scope])
@objects = @objects.send(params[:scope].to_sym)
end
end
respond_to do |format|
format.html do
render @action.template_name, status: (flash[:error].present? ? :not_found : 200)
end
format.json do
output = begin
if params[:compact]
primary_key_method = @association ? @association.associated_primary_key : @model_config.abstract_model.primary_key
label_method = @model_config.object_label_method
@objects.collect { |o| {id: o.send(primary_key_method).to_s, label: o.send(label_method).to_s} }
else
@objects.to_json(@schema)
end
end
if params[:send_data]
send_data output, filename: "#{params[:model_name]}_#{DateTime.now.strftime('%Y-%m-%d_%Hh%Mm%S')}.json"
else
render json: output, root: false
end
end
format.xml do
output = @objects.to_xml(@schema)
if params[:send_data]
send_data output, filename: "#{params[:model_name]}_#{DateTime.now.strftime('%Y-%m-%d_%Hh%Mm%S')}.xml"
else
render xml: output
end
end
format.csv do
header, encoding, output = CSVConverter.new(@objects, @schema).to_csv(params[:csv_options])
if params[:send_data]
send_data output,
type: "text/csv; charset=#{encoding}; #{'header=present' if header}",
disposition: "attachment; filename=#{params[:model_name]}_#{DateTime.now.strftime('%Y-%m-%d_%Hh%Mm%S')}.csv"
else
render text: output
end
end
end
end
end
register_instance_option :link_icon do
'icon-th-list'
end
end
end
end
end
|