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)