app/controllers/admin/manager_controller.rb in ab_admin-0.9.0 vs app/controllers/admin/manager_controller.rb in ab_admin-0.10.0
- old
+ new
@@ -1,37 +1,30 @@
class ::Admin::ManagerController < ::Admin::BaseController
- include AbAdmin::Utils::EvalHelpers
include AbAdmin::Controllers::Tree
- prepend_before_action :manager
-
load_and_authorize_resource
helper_method :manager, :admin_partial_name, :history_resource_path, :fetch_admin_template
def custom_action
custom_action = manager.custom_action_for(params[:custom_action], self)
if custom_action.options[:method] && custom_action.options[:method] != request.method_symbol
- raise ActionController::RoutingError.new("AbAdmin custom action for #{params[:custom_action]} not found")
+ raise ActionController::RoutingError.new("AbAdmin custom action #{custom_action.options[:method].to_s.upcase} #{params[:custom_action]} not allowed for #{request.method_symbol} method")
end
instance_exec(&custom_action.data)
end
- protected
+ private
def button_scopes
- manager.scopes.map{|scope| [scope.name, scope.options] }
+ manager.scopes
end
- def with_scopes(relation)
- scopes_to_apply.inject(relation) { |result, scope| scope.apply(result, params) }
+ def batch_actions
+ manager.batch_actions
end
- def scopes_to_apply
- manager.scopes.find_all{|scope| params[scope.name].present? }
- end
-
def begin_of_association_chain
parent
end
def parent
@@ -78,25 +71,10 @@
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, *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)
- manager.batch_action_list.detect { |a| a.name == batch_action }
- end
-
- def batch_action_list
- manager.batch_action_list
- end
-
def custom_settings
manager.custom_settings || {}
end
def export_options
@@ -105,28 +83,31 @@
def manager
@manager ||= begin
manager_class_name = "AbAdmin#{resource_class.name}"
manager_instance = manager_class_name.constantize.instance
- unless manager_instance.allow_action?(action_name)
- raise ActionController::RoutingError.new("AbAdmin action #{action_name} for #{resource_class.name} not found")
- end
+ raise ActionController::RoutingError.new("AbAdmin action #{action_name} not found") unless manager_instance.allow_action?(action_name)
manager_instance
rescue NameError => e
- if e.message.include?(manager_class_name)
- raise ActionController::RoutingError.new("AbAdmin manager_model for #{resource_class.name} not found (#{e.message})")
+ if e.message.include?("uninitialized constant #{manager_class_name}")
+ raise ActionController::RoutingError.new("AbAdmin manager for #{resource_class.name} not found (#{e.message})")
else
raise
end
end
end
def resource_class
@model ||= begin
- params[:model_name].classify.constantize
- rescue NameError => e
- raise ActionController::RoutingError.new("AbAdmin model #{params[:model_name]} not found (#{e.message})")
+ model_name = params[:model_name].classify
+ model_name.constantize
+ rescue NameError => e
+ if e.message.include?("uninitialized constant #{model_name}")
+ raise ActionController::RoutingError.new("AbAdmin model #{model_name} not found (#{e.message})")
+ else
+ raise
+ end
end
end
def permitted_params
attrs = Array(manager.permitted_params.is_a?(Proc) ? instance_exec(&manager.permitted_params) : manager.permitted_params)
@@ -138,22 +119,11 @@
attrs = attrs + AbAdmin.default_permitted_params
resource_params.permit(*attrs)
end
end
- def preview_resource_path(item)
- return unless manager.preview_path
- return if manager.preview_path[:options][:if] && !call_method_or_proc_on(item, manager.preview_path[:options][:if])
- I18n.with_locale I18n.default_locale do
- manager.preview_path[:value].is_a?(Proc) ? instance_exec(item, &manager.preview_path[:value]) : send(manager.preview_path[:value], item)
- end
- end
-
def admin_partial_name(builder)
- builder.partial ||= begin
- #if template_exists?(builder.partial_name, "admin/#{resource_collection_name}", true)
- fetch_admin_template(builder.partial_name, true)
- end
+ builder.partial ||= fetch_admin_template(builder.partial_name, true)
end
def fetch_admin_template(template_name, partial=false)
if Dir[Rails.root.join("app/views/admin/#{resource_collection_name}/#{'_' if partial}#{template_name}.html.*")].present?
"admin/#{resource_collection_name}/#{template_name}"