Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make activeadmin-mongoid play nice with ActiveRecord Resources #30

Merged
merged 13 commits into from
Jan 8, 2014
Next Next commit
Make activeadmin-mongoid play nice with ActiveRecord resources
  • Loading branch information
profmaad committed Dec 22, 2012
commit a227aa991592432b779a3252a452fa863d8b3974
48 changes: 33 additions & 15 deletions lib/active_admin/mongoid/resource.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,34 +3,52 @@

ActiveAdmin::Resource # autoload
class ActiveAdmin::Resource
def resource_table_name
resource_class.collection_name
original_resource_table_name = instance_method(:resource_table_name)

define_method(:resource_table_name) do
if(resource_class.included_modules.include? Mongoid::Document)
return resource_class.collection_name
else
return original_resource_table_name.bind(self).()
end
end
end

ActiveAdmin::ResourceController # autoload
class ActiveAdmin::ResourceController
before_filter :skip_sidebar!
# before_filter :skip_sidebar!

protected

def skip_sidebar!
@skip_sidebar = true
end
# def skip_sidebar!
# @skip_sidebar = true
# end

original_sort_order = instance_method(:sort_order)

# Use #desc and #asc for sorting.
def sort_order(chain)
params[:order] ||= active_admin_config.sort_order
table_name = active_admin_config.resource_table_name
if params[:order] && params[:order] =~ /^([\w\_\.]+)_(desc|asc)$/
chain.send($2, $1)
define_method(:sort_order) do |chain|
if(chain.included_modules.include? Mongoid::Document)
params[:order] ||= active_admin_config.sort_order
table_name = active_admin_config.resource_table_name
if params[:order] && params[:order] =~ /^([\w\_\.]+)_(desc|asc)$/
chain.send($2, $1)
else
chain # just return the chain
end
else
chain # just return the chain
end
original_sort_order.bind(self).(chain)
end
end

original_search = instance_method(:search)

# Disable filters
def search(chain)
chain
define_method(:search) do |chain|
if(chain.included_modules.include? Mongoid::Document)
chain
else
original_search.bind(self).(chain)
end
end
end