active_scaffold_export 3.3.0 → 3.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: a839bd6f44ec26aa73f8da128adc2678f87f65dc
4
+ data.tar.gz: 0377be1f4026ebbae123d012b7faa1938fef34f3
5
+ SHA512:
6
+ metadata.gz: 75e352107ecc0d1fb6e4f80444f56806cc62a3d6a3fb18eb3a5ab68a0fbeac02ce8248595b65c4563e1b3c0995b21e8cfb73d80fb1488265e876541eab65d480
7
+ data.tar.gz: 15964ca9effd8a6b8fba7d48d86ee7cf9f381be1d486ec65179278872c047bb6aaa065fe979c3003b23bf9518fb5190cf7301e66c46e6f0859b9abd28039bbfb
@@ -0,0 +1,70 @@
1
+ # Active Scaffold Export
2
+ ### An [active scaffold](https://github.com/activescaffold/active_scaffold) addon to let it export data in CSV or XLSX format
3
+
4
+ ####How to?
5
+ Easy. First get [active scaffold](https://github.com/activescaffold/active_scaffold) if you haven't yet.
6
+ Then, add this to your Gemfile:
7
+ ```
8
+ gem 'active_scaffold_export'
9
+ ```
10
+ if you're using REE or Ruby 1.8.7, you need to add backports gem as well as fastercsv since REE lacks ruby 1.9 streaming features and fastercsv is in core in 1.9
11
+ ```
12
+ gem 'backports'
13
+ gem 'fastercsv'
14
+ ```
15
+ if you want xlsx format, add:
16
+ ```
17
+ gem 'axlsx_rails'
18
+ ```
19
+ if that gem is present, XLSX will be used by default.
20
+ You can change this by adding to active scaffold config:
21
+ ```
22
+ conf.export.default_file_format = 'csv' # or 'xlsx'
23
+ ```
24
+ read important notes at the bottom about xlsx.
25
+
26
+ Remember to bundle install.
27
+ Add to application.css:
28
+ ```
29
+ *= require active_scaffold_export
30
+ ```
31
+
32
+ Now let's add it to controller, inside active_scaffold config block:
33
+ ```ruby
34
+ conf.actions.add :export
35
+ # you can filter or sort columns if you want
36
+ conf.export.columns = %w(name last_name phone address)
37
+ # you can define a default values for the exporting form
38
+ conf.export.default_deselected_columns = %w(phone address)
39
+ conf.export.default_delimiter = ";"
40
+ conf.export.force_quotes = "true"
41
+ ```
42
+ And enjoy happy exporting :)
43
+
44
+ ### Security
45
+ It's controlled the same way as Active Scaffold. The extra actions added are:
46
+ * **:show_export** for the options form
47
+ * **:export** for retrieving the data
48
+ Tested with AS internal security and [Cancan](https://github.com/ryanb/cancan)
49
+
50
+ ### Translations
51
+ Go in the same active scaffold scope:
52
+ ```yaml
53
+ active_scaffold:
54
+ columns_for_export: Columnas para exportar
55
+ export_options: Opciones de exportación
56
+ this_page: esta página
57
+ all_pages: todas las páginas
58
+ ```
59
+
60
+ ### XLSX support
61
+ This support depends on axlsx_rails and axlsx of course.
62
+ header styling override will be added soon.
63
+ NOTE: There's NO streaming support for xlsx format. Only CSV. So if your data is huge, set default_file_format to 'csv' instead.
64
+ Streaming in xlsx will never be supported since the entire file needs to be serialized and zipped to be a valid OOXML file.
65
+ So, rather than streaming, background jobs will be the most likely future approach.
66
+ [Read axlsx issue about this](https://github.com/randym/axlsx/issues/169#issuecomment-13252750)
67
+
68
+ This gem has not been tested in other rubies than REE and Ruby 1.9.
69
+ For contact, help, support, comments, please use Active Scaffold official mailing list activescaffold@googlegroups.com
70
+
@@ -5,21 +5,19 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "active_scaffold_export"
8
- s.version = "3.3.0"
8
+ s.version = "3.3.2"
9
9
 
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
10
  s.authors = ["Volker Hochstein", "Sergio Cambra", "Hernan Astudillo"]
12
- s.date = "2012-12-13"
13
11
  s.description = "Exporting Records with ActiveScaffold"
14
12
  s.email = "activescaffold@googlegroups.com"
15
13
  s.extra_rdoc_files = [
16
14
  "LICENSE.txt",
17
- "README"
15
+ "README.md"
18
16
  ]
19
17
  s.files = [
20
18
  ".document",
21
19
  "LICENSE.txt",
22
- "README",
20
+ "README.md",
23
21
  "Rakefile",
24
22
  "init.rb",
25
23
  "active_scaffold_export.gemspec",
@@ -41,34 +39,6 @@ Gem::Specification.new do |s|
41
39
  s.homepage = "http://github.com/naaano/active_scaffold_export"
42
40
  s.licenses = ["MIT"]
43
41
  s.require_paths = ["lib"]
44
- s.rubygems_version = "1.8.10"
45
- s.summary = "Ability to export records to CSV with ActiveScaffold"
46
-
47
- if s.respond_to? :specification_version then
48
- s.specification_version = 3
49
-
50
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
51
- s.add_runtime_dependency(%q<active_scaffold>, [">= 0"])
52
- s.add_development_dependency(%q<shoulda>, [">= 0"])
53
- s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
54
- s.add_development_dependency(%q<jeweler>, ["~> 1.6.4"])
55
- s.add_development_dependency(%q<rcov>, [">= 0"])
56
- s.add_runtime_dependency 'active_scaffold', '>= 3.3.0.rc'
57
- else
58
- s.add_dependency(%q<active_scaffold>, [">= 0"])
59
- s.add_dependency(%q<shoulda>, [">= 0"])
60
- s.add_dependency(%q<bundler>, ["~> 1.0.0"])
61
- s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
62
- s.add_dependency(%q<rcov>, [">= 0"])
63
- s.add_runtime_dependency 'active_scaffold', '>= 3.3.0.rc'
64
- end
65
- else
66
- s.add_dependency(%q<active_scaffold>, [">= 0"])
67
- s.add_dependency(%q<shoulda>, [">= 0"])
68
- s.add_dependency(%q<bundler>, ["~> 1.0.0"])
69
- s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
70
- s.add_dependency(%q<rcov>, [">= 0"])
71
- s.add_runtime_dependency 'active_scaffold', '>= 3.3.0.rc'
72
- end
42
+ s.summary = "Ability to export records to CSV/XLSX with ActiveScaffold"
43
+ s.add_runtime_dependency 'active_scaffold', '>= 3.3.0.rc'
73
44
  end
74
-
@@ -1,9 +1,14 @@
1
1
  <% export_config = active_scaffold_config.export %>
2
2
  <h3><%=as_(:columns_for_export)%></h3>
3
+ <% if ActiveScaffold.js_framework == :jquery %>
4
+ <%= link_to as_(:select_all), '#', onclick: 'jQuery(".columnCheckbox").prop("checked", true);', class: 'active-scaffold-footer' %>
5
+ |
6
+ <%= link_to as_(:select_none), '#', onclick: 'jQuery(".columnCheckbox").prop("checked", false);', class: 'active-scaffold-footer' %>
7
+ <% end %>
3
8
  <div class="columns checkbox-list">
4
9
  <% export_config.columns.each do |column| -%>
5
10
  <div class="column checkbox-wrapper">
6
- <%= content_tag(:label, check_box_tag("export_columns[#{column.name}]", 1, !export_config.default_deselected_columns.include?(column.name)) + "&nbsp;#{column.label}".html_safe) %>
11
+ <%= content_tag(:label, check_box_tag("export_columns[#{column.name}]", 1, !export_config.default_deselected_columns.include?(column.name), :class => 'columnCheckbox') + "&nbsp;#{column.label}".html_safe) %>
7
12
  </div>
8
13
  <% end -%>
9
14
  &nbsp;
@@ -24,6 +29,13 @@
24
29
  <div class="option checkbox-wrapper">
25
30
  <%= content_tag(:label, radio_button_tag('full_download', true, export_config.default_full_download) + " #{as_(:all_pages)}".html_safe) if export_config.allow_full_download %>
26
31
  </div>
32
+ <div class="separator"></div>
33
+ <div class="option checkbox-wrapper">
34
+ <%= content_tag(:label, radio_button_tag('format', :xlsx, export_config.default_file_format.to_sym == :xlsx) + ' XLSX') %>
35
+ </div>
36
+ <div class="option checkbox-wrapper">
37
+ <%= content_tag(:label, radio_button_tag('format', :csv, export_config.default_file_format.to_sym == :csv) + ' CSV') %>
38
+ </div>
27
39
  &nbsp;
28
40
  </div>
29
- <div class="separator"></div>
41
+ <div class="separator"></div>
@@ -1,6 +1,6 @@
1
1
  <%= render :partial => "base_form", :locals => {:xhr => false,
2
2
  :form_action => :export,
3
- :url_options => params_for(:action => :export, :format => 'csv'),
3
+ :url_options => params_for(:action => :export),
4
4
  :method => :post,
5
5
  :cancel_link => true,
6
6
  :headline => as_(:export),
@@ -12,7 +12,7 @@ module ActiveScaffold::Actions
12
12
 
13
13
  # display the customization form or skip directly to export
14
14
  def show_export
15
- export_config = active_scaffold_config.export
15
+ @export_config = active_scaffold_config.export
16
16
  respond_to do |wants|
17
17
  wants.html do
18
18
  render(:partial => 'show_export', :layout => true)
@@ -40,29 +40,59 @@ module ActiveScaffold::Actions
40
40
  params.merge!(options)
41
41
  end
42
42
 
43
+ @export_columns = export_config.columns.reject { |col| params[:export_columns][col.name.to_sym].nil? }
44
+ includes_for_export_columns = @export_columns.collect{ |col| col.includes }.flatten.uniq.compact
45
+ self.active_scaffold_includes.concat includes_for_export_columns
46
+ @export_config = export_config
47
+ # Make sure active_scaffold's find_page is dealing with the same list of
48
+ # columns. Prevents an invalid SQL query when exporting after filtering
49
+ # with field_search against a relation column, and that relation column is
50
+ # not included in the set of export columns.
51
+ @list_columns = @export_columns
52
+
43
53
  # this is required if you want this to work with IE
44
54
  if request.env['HTTP_USER_AGENT'] =~ /msie/i
45
55
  response.headers['Pragma'] = "public"
46
56
  response.headers['Cache-Control'] = "no-cache, must-revalidate, post-check=0, pre-check=0"
47
57
  response.headers['Expires'] = "0"
48
58
  end
49
-
50
- response.headers['Content-type'] = 'text/csv'
51
59
  response.headers['Content-Disposition'] = "attachment; filename=#{export_file_name}"
52
60
 
53
- @export_columns = export_config.columns.reject { |col| params[:export_columns][col.name.to_sym].nil? }
54
- includes_for_export_columns = @export_columns.collect{ |col| col.includes }.flatten.uniq.compact
55
- self.active_scaffold_includes.concat includes_for_export_columns
56
- @export_config = export_config
61
+ unless defined? Mime::XLSX
62
+ Mime::Type.register "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", :xlsx
63
+ end
57
64
 
58
- # start streaming output
59
- self.response_body = Enumerator.new do |y|
60
- find_items_for_export do |records|
61
- @records = records
62
- str = render_to_string :partial => 'export', :layout => false, :formats => [:csv]
63
- y << str
64
- params[:skip_header] = 'true' # skip header on the next run
65
+ respond_to do |format|
66
+ format.csv do
67
+ response.headers['Content-type'] = 'text/csv'
68
+ # start streaming output
69
+ self.response_body = Enumerator.new do |y|
70
+ find_items_for_export do |records|
71
+ @records = records
72
+ str = render_to_string :partial => 'export', :layout => false, :formats => [:csv]
73
+ y << str
74
+ params[:skip_header] = 'true' # skip header on the next run
75
+ end
76
+ end
77
+ end
78
+ format.xlsx do
79
+ response.headers['Content-type'] = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
80
+ p = Axlsx::Package.new
81
+ header = p.workbook.styles.add_style sz: 11, b: true,:bg_color => "69B5EF", :fg_color => "FF", alignment: { horizontal: :center }
82
+ p.workbook.add_worksheet(name: active_scaffold_config.label) do |sheet|
83
+ sheet.add_row(@export_columns.collect { |column| view_context.format_export_column_header_name(column) }, style: header) unless params[:skip_header]
84
+ find_items_for_export do |records|
85
+ records.each do |record|
86
+ sheet.add_row @export_columns.collect{|column| view_context.get_export_column_value(record, column, false)}
87
+ end
88
+ end
89
+ end
90
+ stream = p.to_stream # when adding rows to sheet, they won't pass to this stream if declared before. axlsx issue?
91
+ self.response_body = Enumerator.new do |y|
92
+ y << stream.read
93
+ end
65
94
  end
95
+
66
96
  end
67
97
  end
68
98
 
@@ -100,7 +130,19 @@ module ActiveScaffold::Actions
100
130
  # The default name of the downloaded file.
101
131
  # You may override the method to specify your own file name generation.
102
132
  def export_file_name
103
- "#{self.controller_name}.csv"
133
+ filename = self.controller_name
134
+
135
+ if params[:format]
136
+ if params[:format].to_sym == :xlsx
137
+ filename << '.xlsx'
138
+ elsif params[:format].to_sym == :csv
139
+ filename << '.csv'
140
+ end
141
+ else
142
+ filename << ".#{active_scaffold_config.export.default_file_format}"
143
+ end
144
+
145
+ return filename
104
146
  end
105
147
 
106
148
  # The default security delegates to ActiveRecordPermissions.
@@ -29,7 +29,7 @@ module ActiveScaffold::Config
29
29
  end
30
30
  end
31
31
 
32
- attr_writer :show_form, :allow_full_download, :force_quotes, :default_full_download, :default_delimiter, :default_skip_header, :default_deselected_columns
32
+ attr_writer :show_form, :allow_full_download, :force_quotes, :default_full_download, :default_delimiter, :default_skip_header, :default_deselected_columns, :default_file_format
33
33
  def show_form
34
34
  self.show_form = @core.export_show_form if @show_form.nil?
35
35
  @show_form
@@ -58,6 +58,16 @@ module ActiveScaffold::Config
58
58
  self.default_deselected_columns = [] if @default_deselected_columns.nil?
59
59
  @default_deselected_columns
60
60
  end
61
+ def default_file_format
62
+ if @core.export_xlsx_avaliable
63
+ self.default_file_format = @default_file_format || 'xlsx'
64
+ else
65
+ self.default_file_format = @default_file_format || @core.export_default_file_format
66
+ end
67
+ end
68
+ def xlsx_present?
69
+ Gem::Specification::find_all_by_name('axlsx_rails').any?
70
+ end
61
71
 
62
72
  # provides access to the list of columns specifically meant for this action to use
63
73
  def columns
@@ -9,14 +9,14 @@ module ActiveScaffold
9
9
  # format_export_column(raw_value)
10
10
  # format_singular_association_export_column(association_record)
11
11
  # format_plural_association_export_column(association_records)
12
- def get_export_column_value(record, column)
12
+ def get_export_column_value(record, column, csv = true)
13
13
  if export_column_override? column
14
14
  send(export_column_override(column), record)
15
15
  else
16
16
  raw_value = record.send(column.name)
17
17
 
18
18
  if column.association.nil? or column_empty?(raw_value)
19
- format_export_column(raw_value)
19
+ csv ? format_export_column(raw_value) : raw_value # xlsx needs original data type
20
20
  else
21
21
  case column.association.macro
22
22
  when :has_one, :belongs_to
@@ -37,7 +37,19 @@ module ActiveScaffold
37
37
  end
38
38
 
39
39
  def format_export_column(raw_value)
40
- format_value(raw_value)
40
+ format_value_for_csv(raw_value)
41
+ end
42
+
43
+ def format_value_for_csv(column_value)
44
+ value = if column_empty?(column_value)
45
+ active_scaffold_config.list.empty_field_text
46
+ elsif column_value.is_a?(Time) || column_value.is_a?(Date)
47
+ l(column_value, :format => :default)
48
+ elsif [FalseClass, TrueClass].include?(column_value.class)
49
+ as_(column_value.to_s.to_sym)
50
+ else
51
+ column_value.to_s
52
+ end
41
53
  end
42
54
 
43
55
  def format_singular_association_export_column(association_record)
@@ -53,8 +65,9 @@ module ActiveScaffold
53
65
  ## This helper can be overridden to change the way that the headers
54
66
  # are formatted. For instance, you might want column.name.to_s.humanize
55
67
  def format_export_column_header_name(column)
56
- column.name.to_s
68
+ column.label
57
69
  end
70
+
58
71
  end
59
72
  end
60
73
  end
@@ -8,10 +8,12 @@ ActiveScaffold::Config::Core.class_eval do
8
8
  self.send :class_variable_set, :@@export_force_quotes, false
9
9
  self.send :class_variable_set, :@@export_default_skip_header, false
10
10
  self.send :class_variable_set, :@@export_default_delimiter, ','
11
+ self.send :class_variable_set, :@@export_default_file_format, Gem::Specification::find_all_by_name('axlsx_rails').any? ? 'xlsx' : 'csv'
11
12
 
12
13
  cattr_accessor :export_show_form, :export_allow_full_download,
13
14
  :export_force_quotes, :export_default_full_download,
14
- :export_default_delimiter, :export_default_skip_header
15
+ :export_default_delimiter, :export_default_skip_header,
16
+ :export_default_file_format, :export_xlsx_avaliable
15
17
 
16
18
  ActionDispatch::Routing::ACTIVE_SCAFFOLD_CORE_ROUTING[:collection][:show_export] = :get
17
19
  ActionDispatch::Routing::ACTIVE_SCAFFOLD_CORE_ROUTING[:collection][:export] = :post
@@ -1,8 +1,8 @@
1
1
  module ActiveScaffoldExport
2
2
  module Version
3
3
  MAJOR = 3
4
- MINOR = 1
5
- PATCH = 1
4
+ MINOR = 3
5
+ PATCH = 2
6
6
 
7
7
  STRING = [MAJOR, MINOR, PATCH].compact.join('.')
8
8
  end
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_scaffold_export
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.3.0
5
- prerelease:
4
+ version: 3.3.2
6
5
  platform: ruby
7
6
  authors:
8
7
  - Volker Hochstein
@@ -11,102 +10,20 @@ authors:
11
10
  autorequire:
12
11
  bindir: bin
13
12
  cert_chain: []
14
- date: 2012-12-13 00:00:00.000000000 Z
13
+ date: 2016-01-04 00:00:00.000000000 Z
15
14
  dependencies:
16
15
  - !ruby/object:Gem::Dependency
17
16
  name: active_scaffold
18
17
  requirement: !ruby/object:Gem::Requirement
19
- none: false
20
18
  requirements:
21
- - - ! '>='
22
- - !ruby/object:Gem::Version
23
- version: '0'
24
- type: :runtime
25
- prerelease: false
26
- version_requirements: !ruby/object:Gem::Requirement
27
- none: false
28
- requirements:
29
- - - ! '>='
30
- - !ruby/object:Gem::Version
31
- version: '0'
32
- - !ruby/object:Gem::Dependency
33
- name: shoulda
34
- requirement: !ruby/object:Gem::Requirement
35
- none: false
36
- requirements:
37
- - - ! '>='
38
- - !ruby/object:Gem::Version
39
- version: '0'
40
- type: :development
41
- prerelease: false
42
- version_requirements: !ruby/object:Gem::Requirement
43
- none: false
44
- requirements:
45
- - - ! '>='
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- - !ruby/object:Gem::Dependency
49
- name: bundler
50
- requirement: !ruby/object:Gem::Requirement
51
- none: false
52
- requirements:
53
- - - ~>
54
- - !ruby/object:Gem::Version
55
- version: 1.0.0
56
- type: :development
57
- prerelease: false
58
- version_requirements: !ruby/object:Gem::Requirement
59
- none: false
60
- requirements:
61
- - - ~>
62
- - !ruby/object:Gem::Version
63
- version: 1.0.0
64
- - !ruby/object:Gem::Dependency
65
- name: jeweler
66
- requirement: !ruby/object:Gem::Requirement
67
- none: false
68
- requirements:
69
- - - ~>
70
- - !ruby/object:Gem::Version
71
- version: 1.6.4
72
- type: :development
73
- prerelease: false
74
- version_requirements: !ruby/object:Gem::Requirement
75
- none: false
76
- requirements:
77
- - - ~>
78
- - !ruby/object:Gem::Version
79
- version: 1.6.4
80
- - !ruby/object:Gem::Dependency
81
- name: rcov
82
- requirement: !ruby/object:Gem::Requirement
83
- none: false
84
- requirements:
85
- - - ! '>='
86
- - !ruby/object:Gem::Version
87
- version: '0'
88
- type: :development
89
- prerelease: false
90
- version_requirements: !ruby/object:Gem::Requirement
91
- none: false
92
- requirements:
93
- - - ! '>='
94
- - !ruby/object:Gem::Version
95
- version: '0'
96
- - !ruby/object:Gem::Dependency
97
- name: active_scaffold
98
- requirement: !ruby/object:Gem::Requirement
99
- none: false
100
- requirements:
101
- - - ! '>='
19
+ - - ">="
102
20
  - !ruby/object:Gem::Version
103
21
  version: 3.3.0.rc
104
22
  type: :runtime
105
23
  prerelease: false
106
24
  version_requirements: !ruby/object:Gem::Requirement
107
- none: false
108
25
  requirements:
109
- - - ! '>='
26
+ - - ">="
110
27
  - !ruby/object:Gem::Version
111
28
  version: 3.3.0.rc
112
29
  description: Exporting Records with ActiveScaffold
@@ -115,13 +32,12 @@ executables: []
115
32
  extensions: []
116
33
  extra_rdoc_files:
117
34
  - LICENSE.txt
118
- - README
35
+ - README.md
119
36
  files:
120
- - .document
37
+ - ".document"
121
38
  - LICENSE.txt
122
- - README
39
+ - README.md
123
40
  - Rakefile
124
- - init.rb
125
41
  - active_scaffold_export.gemspec
126
42
  - app/assets/images/export.png
127
43
  - app/assets/stylesheets/active_scaffold_export.css.erb
@@ -130,6 +46,7 @@ files:
130
46
  - app/views/active_scaffold_overrides/_export_form_body.html.erb
131
47
  - app/views/active_scaffold_overrides/_show_export.html.erb
132
48
  - app/views/active_scaffold_overrides/show_export.html.erb
49
+ - init.rb
133
50
  - lib/active_scaffold/actions/export.rb
134
51
  - lib/active_scaffold/config/export.rb
135
52
  - lib/active_scaffold/helpers/export_helpers.rb
@@ -140,26 +57,25 @@ files:
140
57
  homepage: http://github.com/naaano/active_scaffold_export
141
58
  licenses:
142
59
  - MIT
60
+ metadata: {}
143
61
  post_install_message:
144
62
  rdoc_options: []
145
63
  require_paths:
146
64
  - lib
147
65
  required_ruby_version: !ruby/object:Gem::Requirement
148
- none: false
149
66
  requirements:
150
- - - ! '>='
67
+ - - ">="
151
68
  - !ruby/object:Gem::Version
152
69
  version: '0'
153
70
  required_rubygems_version: !ruby/object:Gem::Requirement
154
- none: false
155
71
  requirements:
156
- - - ! '>='
72
+ - - ">="
157
73
  - !ruby/object:Gem::Version
158
74
  version: '0'
159
75
  requirements: []
160
76
  rubyforge_project:
161
- rubygems_version: 1.8.24
77
+ rubygems_version: 2.4.5
162
78
  signing_key:
163
- specification_version: 3
164
- summary: Ability to export records to CSV with ActiveScaffold
79
+ specification_version: 4
80
+ summary: Ability to export records to CSV/XLSX with ActiveScaffold
165
81
  test_files: []
data/README DELETED
@@ -1,14 +0,0 @@
1
- This is active_scaffold_export plugin, forked from Volker Hochstein.
2
-
3
- This version works for official ActiveScaffold gem/plugin (https://github.com/activescaffold/active_scaffold)
4
-
5
- It works with Rails 3.1 master branch of ActiveScaffold.
6
-
7
- For older versions, please refer to https://github.com/vhochstein/active_scaffold_export
8
-
9
- gem 'active_scaffold_export'
10
- or
11
- gem 'active_scaffold_export', :git => 'git://github.com/naaano/active_scaffold_export.git'
12
-
13
- In addition you have to add folowing line to your application.css file:
14
- *= require active_scaffold_export