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.
- checksums.yaml +7 -0
- data/README.md +70 -0
- data/active_scaffold_export.gemspec +5 -35
- data/app/views/active_scaffold_overrides/_export_form_body.html.erb +14 -2
- data/app/views/active_scaffold_overrides/_show_export.html.erb +1 -1
- data/lib/active_scaffold/actions/export.rb +57 -15
- data/lib/active_scaffold/config/export.rb +11 -1
- data/lib/active_scaffold/helpers/export_helpers.rb +17 -4
- data/lib/active_scaffold_export/config/core.rb +3 -1
- data/lib/active_scaffold_export/version.rb +2 -2
- metadata +14 -98
- data/README +0 -14
checksums.yaml
ADDED
@@ -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
|
data/README.md
ADDED
@@ -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.
|
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.
|
45
|
-
s.
|
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)) + " #{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') + " #{column.label}".html_safe) %>
|
7
12
|
</div>
|
8
13
|
<% end -%>
|
9
14
|
|
@@ -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
|
|
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
|
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
|
-
|
54
|
-
|
55
|
-
|
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
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
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
|
-
|
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
|
-
|
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.
|
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
|
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.
|
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:
|
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:
|
77
|
+
rubygems_version: 2.4.5
|
162
78
|
signing_key:
|
163
|
-
specification_version:
|
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
|