diff --git a/Gemfile.lock b/Gemfile.lock index db0e980..d6ce6fb 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -2,7 +2,7 @@ PATH remote: . specs: activeadmin-axlsx (3.0.0) - activeadmin (~> 0.6.0) + activeadmin (>= 1.0.0.pre2) axlsx GEM diff --git a/activeadmin-axlsx.gemspec b/activeadmin-axlsx.gemspec index 94ea552..26745b8 100644 --- a/activeadmin-axlsx.gemspec +++ b/activeadmin-axlsx.gemspec @@ -13,11 +13,11 @@ Gem::Specification.new do |s| s.description = <<-eof This gem uses axlsx to provide excel/xlsx downloads for resources in Active Admin. Often, users are happier with excel, so why not give it to them instead of CSV? eof - s.files = `git ls-files`.split("\n").sort + s.files = `git ls-files`.split("\n").sort s.test_files = `git ls-files -- {spec}/*`.split("\n") s.test_files = Dir.glob("{spec/**/*}") - s.add_runtime_dependency 'activeadmin', "~> 0.6.0" + s.add_runtime_dependency 'activeadmin', ">= 1.0.0.pre2" s.add_runtime_dependency 'axlsx' s.required_ruby_version = '>= 1.9.2' diff --git a/lib/active_admin/axlsx.rb b/lib/active_admin/axlsx.rb index 545c426..2640078 100644 --- a/lib/active_admin/axlsx.rb +++ b/lib/active_admin/axlsx.rb @@ -15,15 +15,9 @@ class Railtie < ::Rails::Railtie rescue NameError # noop end - - end - - config.after_initialize do ActiveAdmin::ResourceDSL.send :include, ActiveAdmin::Axlsx::DSL ActiveAdmin::Resource.send :include, ActiveAdmin::Axlsx::ResourceExtension ActiveAdmin::Views::PaginatedCollection.add_format :xlsx ActiveAdmin::ResourceController.send :include, ActiveAdmin::Axlsx::ResourceControllerExtension end end - - diff --git a/lib/active_admin/axlsx/resource_controller_extension.rb b/lib/active_admin/axlsx/resource_controller_extension.rb index 5e002e4..c9e4349 100644 --- a/lib/active_admin/axlsx/resource_controller_extension.rb +++ b/lib/active_admin/axlsx/resource_controller_extension.rb @@ -1,15 +1,17 @@ module ActiveAdmin module Axlsx module ResourceControllerExtension + def self.included(base) - base.send :alias_method_chain, :per_page, :xlsx - base.send :alias_method_chain, :index, :xlsx + # base.send :alias_method_chain, :per_page, :xlsx + # base.send :alias_method_chain, :index, :xlsx + base.preprend(ResourceControllerExtension) base.send :respond_to, :xlsx end # patching the index method to allow the xlsx format. - def index_with_xlsx(options={}, &block) - index_without_xlsx(options) do |format| + def index(&block) + index_without_xlsx do |format| format.xlsx do xlsx = active_admin_config.xlsx_builder.serialize(collection) send_data xlsx, :filename => "#{xlsx_filename}", :type => Mime::Type.lookup_by_extension(:xlsx) @@ -18,11 +20,12 @@ def index_with_xlsx(options={}, &block) end # patching per_page to use the CSV record max for pagination when the format is xlsx - def per_page_with_xlsx - if request.format == Mime::Type.lookup_by_extension(:xlsx) - return max_csv_records - end - per_page_without_xlsx + def per_page + max_csv_records = 2000 + if request.format == Mime::Type.lookup_by_extension(:xlsx) + return max_csv_records + end + per_page_without_xlsx end # Returns a filename for the xlsx file using the collection_name