app/controllers/admin/manager_controller.rb in ab_admin-0.6.1 vs app/controllers/admin/manager_controller.rb in ab_admin-0.7.0
- old
+ new
@@ -16,10 +16,18 @@
instance_exec(&custom_action.data)
end
protected
+ def button_scopes
+ manager.scopes.map{|scope| [scope.name, scope.options] }
+ end
+
+ def with_scopes(relation)
+ manager.scopes.inject(relation) { |result, scope| scope.apply(result, params) }
+ end
+
def begin_of_association_chain
parent
end
def parent
@@ -66,12 +74,13 @@
def action_items
for_resource = params[:id].present? && resource.persisted?
manager.default_action_items_for(action_name.to_sym, for_resource) + manager.action_items_for(action_name.to_sym)
end
- def apply_batch_action(item, batch_action)
- success = call_method_or_proc_on item, manager.batch_action_list.detect{|a| a.name == batch_action }.data, exec: false
+ def apply_batch_action(item, batch_action, *batch_params)
+ data = manager.batch_action_list.detect{|a| a.name == batch_action }.data
+ success = call_method_or_proc_on item, data, exec: false, attrs: batch_params
track_action!("batch_#{batch_action}", item) if settings[:history]
success
end
def allow_batch_action?(batch_action)
@@ -113,12 +122,32 @@
rescue NameError => e
raise ActionController::RoutingError.new("AbAdmin model #{params[:model_name]} not found (#{e.message})")
end
end
+ def permitted_params
+ attrs = case manager.permitted_params
+ when Proc then
+ instance_exec(&manager.permitted_params)
+ else
+ Array(manager.permitted_params)
+ end
+
+ resource_params = params[resource_class.model_name.param_key]
+ return {} unless resource_params
+ if attrs.first == :all
+ resource_params.permit!
+ else
+ attrs = attrs + AbAdmin.default_permitted_params
+ resource_params.permit(*attrs)
+ end
+ end
+
def preview_resource_path(item)
return unless manager.preview_path
- manager.preview_path.is_a?(Proc) ? instance_exec(item, &manager.preview_path) : send(manager.preview_path, item)
+ I18n.with_locale I18n.default_locale do
+ manager.preview_path.is_a?(Proc) ? instance_exec(item, &manager.preview_path) : send(manager.preview_path, item)
+ end
end
def admin_partial_name(builder)
builder.partial ||= begin
#if template_exists?(builder.partial_name, "admin/#{resource_collection_name}", true)