active_scaffold_export 3.3.0 → 3.3.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -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