active_scaffold_export 3.0.6 → 3.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/{MIT-LICENSE → LICENSE.txt} +1 -2
- data/README.md +70 -0
- data/{frontends/default → app/assets}/images/export.png +0 -0
- data/{frontends/default/stylesheets/export-stylesheet.css → app/assets/stylesheets/active_scaffold_export.css.erb} +10 -1
- data/{frontends/default → app/assets}/stylesheets/export-stylesheet-ie.css +0 -0
- data/{frontends/default/views → app/views/active_scaffold_overrides}/_export.csv.erb +4 -1
- data/app/views/active_scaffold_overrides/_export_form_body.html.erb +41 -0
- data/{frontends/default/views → app/views/active_scaffold_overrides}/_show_export.html.erb +4 -3
- data/{frontends/default/views → app/views/active_scaffold_overrides}/show_export.html.erb +0 -0
- data/lib/active_scaffold/actions/export.rb +75 -31
- data/lib/active_scaffold/config/export.rb +11 -9
- data/lib/active_scaffold/helpers/export_helpers.rb +22 -27
- data/lib/active_scaffold_export.rb +3 -29
- data/lib/active_scaffold_export/config/core.rb +6 -4
- data/lib/active_scaffold_export/engine.rb +8 -0
- data/lib/active_scaffold_export/version.rb +2 -2
- metadata +52 -152
- data/.document +0 -5
- data/Gemfile +0 -10
- data/README.markdown +0 -65
- data/Rakefile +0 -58
- data/active_scaffold_export.gemspec +0 -73
- data/frontends/default/views/_export_form_body.html.erb +0 -28
- data/init.rb +0 -2
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: e9f7f034474f62c9c156d57118a1cf6c36b8f704d3e3d39b9df7ca352c238d4a
|
4
|
+
data.tar.gz: f1d0c02ad1a4e503a00bc55459771a6853597cc99b5e1c869b22a11fc8539f43
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 428f1456d4c2c96d756bc1bc9007de918233d6fb5104e4915a329a64a9e09e434db5c0e29babec790ba7facc4539d928c02d890e48dc1416fe96a8315a9baccd
|
7
|
+
data.tar.gz: a4cd29b6d36228116cb2064592b8323a26aea1689fb27d6119432775b1f611474138adadfd1f27c2d147f44c69e8c4b16ba8855aa47e39cd1eac3c9306bceeae
|
data/{MIT-LICENSE → LICENSE.txt}
RENAMED
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
|
+
|
File without changes
|
@@ -1,5 +1,5 @@
|
|
1
1
|
.active-scaffold-header div.actions a.show_export {
|
2
|
-
background-image: url(
|
2
|
+
background-image: url(<%= asset_path 'export.png' %>);
|
3
3
|
background-position: 1px 50%;
|
4
4
|
background-repeat: no-repeat;
|
5
5
|
padding-left: 19px;
|
@@ -25,3 +25,12 @@
|
|
25
25
|
.active-scaffold div.show_export-view label #delimiter {
|
26
26
|
font-family: monospace;
|
27
27
|
}
|
28
|
+
|
29
|
+
.as_touch .active-scaffold-header div.actions a.show_export {
|
30
|
+
padding: 7px 5px 7px 25px;
|
31
|
+
}
|
32
|
+
|
33
|
+
.as_touch .active-scaffold .active-scaffold-header div.actions > a.show_export {
|
34
|
+
padding: 7px 5px 7px 25px;
|
35
|
+
background-position: 5px 50%;
|
36
|
+
}
|
File without changes
|
@@ -1,4 +1,6 @@
|
|
1
1
|
<%
|
2
|
+
require 'csv' if RUBY_VERSION >= "1.9"
|
3
|
+
|
2
4
|
fcsv_options = {
|
3
5
|
:row_sep => "\n",
|
4
6
|
:col_sep => params[:delimiter],
|
@@ -6,7 +8,8 @@
|
|
6
8
|
:headers => @export_columns.collect { |column| format_export_column_header_name(column) }
|
7
9
|
}
|
8
10
|
|
9
|
-
|
11
|
+
csv_lib = Object.const_defined?('CSV') ? CSV : FasterCSV
|
12
|
+
data = csv_lib.generate(fcsv_options) do |csv|
|
10
13
|
csv << fcsv_options[:headers] unless params[:skip_header] == 'true'
|
11
14
|
@records.each do |record|
|
12
15
|
csv << @export_columns.collect { |column|
|
@@ -0,0 +1,41 @@
|
|
1
|
+
<% export_config = active_scaffold_config.export %>
|
2
|
+
<h3><%=as_(:columns_for_export)%></h3>
|
3
|
+
<% if ActiveScaffold.js_framework == :jquery # TODO: use JS asset instead of inline JS %>
|
4
|
+
<%= link_to as_(:select_all), '#', onclick: 'jQuery(".columnCheckbox").prop("checked", true); return false', class: 'active-scaffold-footer' %>
|
5
|
+
|
|
6
|
+
<%= link_to as_(:select_none), '#', onclick: 'jQuery(".columnCheckbox").prop("checked", false); return false', class: 'active-scaffold-footer' %>
|
7
|
+
<% end %>
|
8
|
+
<div class="columns checkbox-list">
|
9
|
+
<% export_config.columns.each_column do |column| -%>
|
10
|
+
<div class="column checkbox-wrapper">
|
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) %>
|
12
|
+
</div>
|
13
|
+
<% end -%>
|
14
|
+
|
15
|
+
</div>
|
16
|
+
<div class="separator"></div>
|
17
|
+
<h3><%=as_(:options)%></h3>
|
18
|
+
<div class="options checkbox-list">
|
19
|
+
<div class="option checkbox-wrapper">
|
20
|
+
<%= content_tag(:label, check_box_tag('skip_header', 1, export_config.default_skip_header) + " #{as_(:omit_header)}".html_safe) %>
|
21
|
+
</div>
|
22
|
+
<div class="option checkbox-wrapper">
|
23
|
+
<%= content_tag(:label, text_field_tag('delimiter', export_config.default_delimiter, :size => 1, :maxlength => 1) + " #{as_(:delimiter)}".html_safe) %>
|
24
|
+
</div>
|
25
|
+
<div class="separator"></div>
|
26
|
+
<div class="option checkbox-wrapper">
|
27
|
+
<%= content_tag(:label, radio_button_tag('full_download', false, !export_config.default_full_download) + " #{as_(:this_page)}".html_safe) if export_config.allow_full_download %>
|
28
|
+
</div>
|
29
|
+
<div class="option checkbox-wrapper">
|
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 %>
|
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>
|
39
|
+
|
40
|
+
</div>
|
41
|
+
<div class="separator"></div>
|
@@ -1,7 +1,8 @@
|
|
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
|
-
:headline => as_(
|
7
|
-
:body_partial => 'export_form_body'
|
6
|
+
:headline => as_(:export),
|
7
|
+
:body_partial => 'export_form_body',
|
8
|
+
:loading => false} %>
|
File without changes
|
@@ -1,21 +1,13 @@
|
|
1
1
|
module ActiveScaffold::Actions
|
2
2
|
module Export
|
3
3
|
def self.included(base)
|
4
|
-
base.
|
5
|
-
base.
|
6
|
-
|
7
|
-
as_export_plugin_path = File.join(ActiveScaffold::Config::Export.plugin_directory, 'frontends', 'default' , 'views')
|
8
|
-
|
9
|
-
base.add_active_scaffold_path as_export_plugin_path
|
10
|
-
end
|
11
|
-
|
12
|
-
def init_session_var
|
13
|
-
session[:search] = params[:search] if !params[:search].nil? || params[:commit] == as_('Search')
|
4
|
+
base.before_action :export_authorized?, :only => [:export]
|
5
|
+
base.before_action :show_export_authorized?, :only => [:show_export]
|
14
6
|
end
|
15
7
|
|
16
8
|
# display the customization form or skip directly to export
|
17
9
|
def show_export
|
18
|
-
export_config = active_scaffold_config.export
|
10
|
+
@export_config = active_scaffold_config.export
|
19
11
|
respond_to do |wants|
|
20
12
|
wants.html do
|
21
13
|
render(:partial => 'show_export', :layout => true)
|
@@ -31,9 +23,7 @@ module ActiveScaffold::Actions
|
|
31
23
|
export_config = active_scaffold_config.export
|
32
24
|
if params[:export_columns].nil?
|
33
25
|
export_columns = {}
|
34
|
-
export_config.columns.each { |col|
|
35
|
-
export_columns[col.name.to_sym] = 1
|
36
|
-
}
|
26
|
+
export_config.columns.each { |col| export_columns[col.to_sym] = 1 }
|
37
27
|
options = {
|
38
28
|
:export_columns => export_columns,
|
39
29
|
:full_download => export_config.default_full_download.to_s,
|
@@ -43,33 +33,70 @@ module ActiveScaffold::Actions
|
|
43
33
|
params.merge!(options)
|
44
34
|
end
|
45
35
|
|
36
|
+
set_includes_for_columns(:export)
|
37
|
+
@export_config = export_config
|
38
|
+
# Make sure active_scaffold's find_page is dealing with the same list of
|
39
|
+
# columns. Prevents an invalid SQL query when exporting after filtering
|
40
|
+
# with field_search against a relation column, and that relation column is
|
41
|
+
# not included in the set of export columns.
|
42
|
+
@list_columns = @export_columns
|
43
|
+
|
46
44
|
# this is required if you want this to work with IE
|
47
45
|
if request.env['HTTP_USER_AGENT'] =~ /msie/i
|
48
46
|
response.headers['Pragma'] = "public"
|
49
47
|
response.headers['Cache-Control'] = "no-cache, must-revalidate, post-check=0, pre-check=0"
|
50
48
|
response.headers['Expires'] = "0"
|
51
49
|
end
|
52
|
-
|
53
|
-
response.headers['Content-type'] = 'text/csv'
|
54
50
|
response.headers['Content-Disposition'] = "attachment; filename=#{export_file_name}"
|
55
51
|
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
@export_config = export_config
|
52
|
+
unless defined? Mime::XLSX
|
53
|
+
Mime::Type.register "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", :xlsx
|
54
|
+
end
|
60
55
|
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
56
|
+
respond_to do |format|
|
57
|
+
format.csv do
|
58
|
+
response.headers['Content-type'] = 'text/csv'
|
59
|
+
# start streaming output
|
60
|
+
self.response_body = Enumerator.new do |y|
|
61
|
+
find_items_for_export do |records|
|
62
|
+
@records = records
|
63
|
+
str = render_to_string :partial => 'export', :layout => false, :formats => [:csv]
|
64
|
+
y << str
|
65
|
+
params[:skip_header] = 'true' # skip header on the next run
|
66
|
+
end
|
67
|
+
end
|
68
68
|
end
|
69
|
-
|
69
|
+
format.xlsx do
|
70
|
+
response.headers['Content-type'] = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
|
71
|
+
p = Axlsx::Package.new
|
72
|
+
header = p.workbook.styles.add_style sz: 11, b: true,:bg_color => "69B5EF", :fg_color => "FF", alignment: { horizontal: :center }
|
73
|
+
p.workbook.add_worksheet(name: active_scaffold_config.label) do |sheet|
|
74
|
+
sheet.add_row(@export_columns.collect { |column| view_context.format_export_column_header_name(column) }, style: header) unless params[:skip_header]
|
75
|
+
find_items_for_export do |records|
|
76
|
+
records.each do |record|
|
77
|
+
sheet.add_row @export_columns.collect { |column| view_context.get_export_column_value(record, column, false) }
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
stream = p.to_stream # when adding rows to sheet, they won't pass to this stream if declared before. axlsx issue?
|
82
|
+
self.response_body = Enumerator.new do |y|
|
83
|
+
y << stream.read
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
end
|
70
88
|
end
|
71
89
|
|
72
90
|
protected
|
91
|
+
def export_columns
|
92
|
+
return @export_columns if defined? @export_columns
|
93
|
+
@export_columns = active_scaffold_config.export.columns.reject { |col| params[:export_columns][col.to_sym].nil? }
|
94
|
+
sorting = active_scaffold_config.list.user.sorting || active_scaffold_config.list.sorting
|
95
|
+
sorting_columns = sorting.reject { |col, _| @export_columns.include?(col.name) }.map(&:first)
|
96
|
+
@export_columns.map! { |col| active_scaffold_config.columns[col] }
|
97
|
+
@export_columns += sorting_columns
|
98
|
+
end
|
99
|
+
|
73
100
|
# The actual algorithm to do the export
|
74
101
|
def find_items_for_export(&block)
|
75
102
|
find_options = { :sorting =>
|
@@ -77,14 +104,13 @@ module ActiveScaffold::Actions
|
|
77
104
|
active_scaffold_config.list.sorting : active_scaffold_config.list.user.sorting,
|
78
105
|
:pagination => true
|
79
106
|
}
|
80
|
-
params[:search] = session[:search]
|
81
107
|
do_search rescue nil
|
82
108
|
params[:segment_id] = session[:segment_id]
|
83
109
|
do_segment_search rescue nil
|
84
110
|
|
85
111
|
if params[:full_download] == 'true'
|
86
112
|
find_options.merge!({
|
87
|
-
:per_page =>
|
113
|
+
:per_page => 3000,
|
88
114
|
:page => 1
|
89
115
|
})
|
90
116
|
find_page(find_options).pager.each do |page|
|
@@ -92,6 +118,7 @@ module ActiveScaffold::Actions
|
|
92
118
|
end
|
93
119
|
else
|
94
120
|
find_options.merge!({
|
121
|
+
:pagination => active_scaffold_config.list.pagination,
|
95
122
|
:per_page => active_scaffold_config.list.user.per_page,
|
96
123
|
:page => active_scaffold_config.list.user.page
|
97
124
|
})
|
@@ -102,7 +129,19 @@ module ActiveScaffold::Actions
|
|
102
129
|
# The default name of the downloaded file.
|
103
130
|
# You may override the method to specify your own file name generation.
|
104
131
|
def export_file_name
|
105
|
-
|
132
|
+
filename = self.controller_name.clone
|
133
|
+
|
134
|
+
if params[:format]
|
135
|
+
if params[:format].to_sym == :xlsx
|
136
|
+
filename << '.xlsx'
|
137
|
+
elsif params[:format].to_sym == :csv
|
138
|
+
filename << '.csv'
|
139
|
+
end
|
140
|
+
else
|
141
|
+
filename << ".#{active_scaffold_config.export.default_file_format}"
|
142
|
+
end
|
143
|
+
|
144
|
+
return filename
|
106
145
|
end
|
107
146
|
|
108
147
|
# The default security delegates to ActiveRecordPermissions.
|
@@ -110,5 +149,10 @@ module ActiveScaffold::Actions
|
|
110
149
|
def export_authorized?
|
111
150
|
authorized_for?(:action => :read)
|
112
151
|
end
|
152
|
+
|
153
|
+
def show_export_authorized?
|
154
|
+
export_authorized?
|
155
|
+
end
|
156
|
+
|
113
157
|
end
|
114
158
|
end
|
@@ -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,17 +58,19 @@ module ActiveScaffold::Config
|
|
58
58
|
self.default_deselected_columns = [] if @default_deselected_columns.nil?
|
59
59
|
@default_deselected_columns
|
60
60
|
end
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
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
|
66
67
|
end
|
67
|
-
def
|
68
|
-
|
69
|
-
@columns.action = self
|
68
|
+
def xlsx_present?
|
69
|
+
Gem::Specification::find_all_by_name('axlsx_rails').any?
|
70
70
|
end
|
71
71
|
|
72
|
+
columns_accessor :columns
|
73
|
+
|
72
74
|
def multipart?
|
73
75
|
false
|
74
76
|
end
|
@@ -1,24 +1,7 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
|
3
1
|
module ActiveScaffold
|
4
2
|
module Helpers
|
5
3
|
# Helpers that assist with the rendering of a Export Column
|
6
4
|
module ExportHelpers
|
7
|
-
def self.included(base)
|
8
|
-
base.alias_method_chain :active_scaffold_stylesheets, :export
|
9
|
-
base.alias_method_chain :active_scaffold_ie_stylesheets, :export
|
10
|
-
end
|
11
|
-
|
12
|
-
# Provides stylesheets to include with +stylesheet_link_tag+
|
13
|
-
def active_scaffold_stylesheets_with_export(frontend = :default)
|
14
|
-
active_scaffold_stylesheets_without_export.to_a << ActiveScaffold::Config::Core.asset_path("export-stylesheet.css", frontend)
|
15
|
-
end
|
16
|
-
|
17
|
-
# Provides stylesheets for IE to include with +stylesheet_link_tag+
|
18
|
-
def active_scaffold_ie_stylesheets_with_export(frontend = :default)
|
19
|
-
active_scaffold_ie_stylesheets_without_export.to_a << ActiveScaffold::Config::Core.asset_path("export-stylesheet-ie.css", frontend)
|
20
|
-
end
|
21
|
-
|
22
5
|
## individual columns can be overridden by defining
|
23
6
|
# a helper method <column_name>_export_column(record)
|
24
7
|
# You can customize the output of all columns by
|
@@ -26,20 +9,19 @@ module ActiveScaffold
|
|
26
9
|
# format_export_column(raw_value)
|
27
10
|
# format_singular_association_export_column(association_record)
|
28
11
|
# format_plural_association_export_column(association_records)
|
29
|
-
def get_export_column_value(record, column)
|
12
|
+
def get_export_column_value(record, column, csv = true)
|
30
13
|
if export_column_override? column
|
31
14
|
send(export_column_override(column), record)
|
32
15
|
else
|
33
16
|
raw_value = record.send(column.name)
|
34
17
|
|
35
18
|
if column.association.nil? or column_empty?(raw_value)
|
36
|
-
format_export_column(raw_value)
|
37
|
-
|
38
|
-
|
39
|
-
when :has_one, :belongs_to
|
40
|
-
format_singular_association_export_column(raw_value)
|
41
|
-
when :has_many, :has_and_belongs_to_many
|
19
|
+
csv ? format_export_column(raw_value) : raw_value # xlsx needs original data type
|
20
|
+
elsif column.association
|
21
|
+
if column.association.collection?
|
42
22
|
format_plural_association_export_column(raw_value)
|
23
|
+
else
|
24
|
+
format_singular_association_export_column(raw_value)
|
43
25
|
end
|
44
26
|
end
|
45
27
|
end
|
@@ -54,7 +36,19 @@ module ActiveScaffold
|
|
54
36
|
end
|
55
37
|
|
56
38
|
def format_export_column(raw_value)
|
57
|
-
|
39
|
+
format_value_for_csv(raw_value)
|
40
|
+
end
|
41
|
+
|
42
|
+
def format_value_for_csv(column_value)
|
43
|
+
value = if column_empty?(column_value)
|
44
|
+
active_scaffold_config.list.empty_field_text
|
45
|
+
elsif column_value.is_a?(Time) || column_value.is_a?(Date)
|
46
|
+
l(column_value, :format => :default)
|
47
|
+
elsif [FalseClass, TrueClass].include?(column_value.class)
|
48
|
+
as_(column_value.to_s.to_sym)
|
49
|
+
else
|
50
|
+
column_value.to_s
|
51
|
+
end
|
58
52
|
end
|
59
53
|
|
60
54
|
def format_singular_association_export_column(association_record)
|
@@ -63,15 +57,16 @@ module ActiveScaffold
|
|
63
57
|
|
64
58
|
def format_plural_association_export_column(association_records)
|
65
59
|
firsts = association_records.first(4).collect { |v| v.to_label }
|
66
|
-
firsts[
|
60
|
+
firsts[3] = ' ' if firsts.length == 4
|
67
61
|
format_value(firsts.join(','))
|
68
62
|
end
|
69
63
|
|
70
64
|
## This helper can be overridden to change the way that the headers
|
71
65
|
# are formatted. For instance, you might want column.name.to_s.humanize
|
72
66
|
def format_export_column_header_name(column)
|
73
|
-
column.
|
67
|
+
column.label
|
74
68
|
end
|
69
|
+
|
75
70
|
end
|
76
71
|
end
|
77
72
|
end
|
@@ -1,20 +1,8 @@
|
|
1
|
-
|
2
|
-
if CSV.const_defined? :Reader
|
3
|
-
# Ruby 1.8 compatible
|
4
|
-
begin
|
5
|
-
require 'fastercsv'
|
6
|
-
Object.send(:remove_const, :CSV)
|
7
|
-
CSV = FasterCSV
|
8
|
-
rescue Gem::LoadError
|
9
|
-
raise "For ruby 1.8, the 'fastercsv' gem is required"
|
10
|
-
end
|
11
|
-
else
|
12
|
-
# CSV is now FasterCSV in ruby 1.9
|
13
|
-
end
|
14
|
-
|
15
|
-
# Make sure that ActiveScaffold has already been included
|
1
|
+
ACTIVE_SCAFFOLD_EXPORT_GEM = true
|
16
2
|
ActiveScaffold rescue throw "should have included ActiveScaffold plug in first. Please make sure that this plug-in comes alphabetically after the ActiveScaffold plug-in"
|
17
3
|
|
4
|
+
require 'active_scaffold_export/engine'
|
5
|
+
require 'active_scaffold_export/version'
|
18
6
|
|
19
7
|
# Load our overrides
|
20
8
|
require "active_scaffold_export/config/core.rb"
|
@@ -39,18 +27,4 @@ module ActiveScaffold
|
|
39
27
|
end
|
40
28
|
end
|
41
29
|
|
42
|
-
# Register our helper methods
|
43
30
|
ActionView::Base.send(:include, ActiveScaffold::Helpers::ExportHelpers)
|
44
|
-
|
45
|
-
|
46
|
-
##
|
47
|
-
## Run the install assets script, too, just to make sure
|
48
|
-
## But at least rescue the action in production
|
49
|
-
##
|
50
|
-
if defined?(ACTIVE_SCAFFOLD_EXPORT_PLUGIN)
|
51
|
-
ActiveScaffoldAssets.copy_to_public(ActiveScaffoldExport.root)
|
52
|
-
else
|
53
|
-
Rails::Application.initializer("active_scaffold_export.install_assets", :after => "active_scaffold.install_assets") do
|
54
|
-
ActiveScaffoldAssets.copy_to_public(ActiveScaffoldExport.root)
|
55
|
-
end
|
56
|
-
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# Need to open the AS module carefully due to Rails 2.3 lazy loading
|
2
2
|
ActiveScaffold::Config::Core.class_eval do
|
3
|
-
# For some
|
3
|
+
# For some note obvious reasons, the class variables need to be defined
|
4
4
|
# *before* the cattr !!
|
5
5
|
self.send :class_variable_set, :@@export_show_form, true
|
6
6
|
self.send :class_variable_set, :@@export_allow_full_download, true
|
@@ -8,11 +8,13 @@ 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
|
-
|
17
|
-
|
18
|
+
ActiveScaffold::Routing::ACTIVE_SCAFFOLD_CORE_ROUTING[:collection][:show_export] = :get
|
19
|
+
ActiveScaffold::Routing::ACTIVE_SCAFFOLD_CORE_ROUTING[:collection][:export] = :post
|
18
20
|
end
|
metadata
CHANGED
@@ -1,177 +1,77 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_scaffold_export
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
prerelease:
|
6
|
-
segments:
|
7
|
-
- 3
|
8
|
-
- 0
|
9
|
-
- 6
|
10
|
-
version: 3.0.6
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 3.4.0
|
11
5
|
platform: ruby
|
12
|
-
authors:
|
6
|
+
authors:
|
13
7
|
- Volker Hochstein
|
14
|
-
-
|
15
|
-
-
|
16
|
-
autorequire:
|
8
|
+
- Sergio Cambra
|
9
|
+
- Hernan Astudillo
|
10
|
+
autorequire:
|
17
11
|
bindir: bin
|
18
12
|
cert_chain: []
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
26
|
-
none: false
|
27
|
-
requirements:
|
28
|
-
- - ">="
|
29
|
-
- !ruby/object:Gem::Version
|
30
|
-
hash: 3
|
31
|
-
segments:
|
32
|
-
- 0
|
33
|
-
version: "0"
|
34
|
-
name: shoulda
|
35
|
-
version_requirements: *id001
|
36
|
-
prerelease: false
|
37
|
-
- !ruby/object:Gem::Dependency
|
38
|
-
type: :development
|
39
|
-
requirement: &id002 !ruby/object:Gem::Requirement
|
40
|
-
none: false
|
41
|
-
requirements:
|
42
|
-
- - ~>
|
43
|
-
- !ruby/object:Gem::Version
|
44
|
-
hash: 23
|
45
|
-
segments:
|
46
|
-
- 1
|
47
|
-
- 0
|
48
|
-
- 0
|
49
|
-
version: 1.0.0
|
50
|
-
name: bundler
|
51
|
-
version_requirements: *id002
|
52
|
-
prerelease: false
|
53
|
-
- !ruby/object:Gem::Dependency
|
54
|
-
type: :development
|
55
|
-
requirement: &id003 !ruby/object:Gem::Requirement
|
56
|
-
none: false
|
57
|
-
requirements:
|
58
|
-
- - ~>
|
59
|
-
- !ruby/object:Gem::Version
|
60
|
-
hash: 7
|
61
|
-
segments:
|
62
|
-
- 1
|
63
|
-
- 5
|
64
|
-
- 2
|
65
|
-
version: 1.5.2
|
66
|
-
name: jeweler
|
67
|
-
version_requirements: *id003
|
68
|
-
prerelease: false
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
type: :development
|
71
|
-
requirement: &id004 !ruby/object:Gem::Requirement
|
72
|
-
none: false
|
73
|
-
requirements:
|
13
|
+
date: 2020-12-11 00:00:00.000000000 Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: active_scaffold
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
18
|
+
requirements:
|
74
19
|
- - ">="
|
75
|
-
- !ruby/object:Gem::Version
|
76
|
-
|
77
|
-
segments:
|
78
|
-
- 0
|
79
|
-
version: "0"
|
80
|
-
name: rcov
|
81
|
-
version_requirements: *id004
|
82
|
-
prerelease: false
|
83
|
-
- !ruby/object:Gem::Dependency
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 3.6.0.pre
|
84
22
|
type: :runtime
|
85
|
-
requirement: &id005 !ruby/object:Gem::Requirement
|
86
|
-
none: false
|
87
|
-
requirements:
|
88
|
-
- - ">="
|
89
|
-
- !ruby/object:Gem::Version
|
90
|
-
hash: 31
|
91
|
-
segments:
|
92
|
-
- 3
|
93
|
-
- 0
|
94
|
-
- 12
|
95
|
-
version: 3.0.12
|
96
|
-
name: active_scaffold
|
97
|
-
version_requirements: *id005
|
98
23
|
prerelease: false
|
99
|
-
|
100
|
-
|
101
|
-
requirement: &id006 !ruby/object:Gem::Requirement
|
102
|
-
none: false
|
103
|
-
requirements:
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
requirements:
|
104
26
|
- - ">="
|
105
|
-
- !ruby/object:Gem::Version
|
106
|
-
|
107
|
-
|
108
|
-
- 0
|
109
|
-
version: "0"
|
110
|
-
name: fastercsv
|
111
|
-
version_requirements: *id006
|
112
|
-
prerelease: false
|
113
|
-
description: This Active Scaffold plugin provides a configurable CSV 'Export' action for Active Scaffold controllers
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
version: 3.6.0.pre
|
29
|
+
description: Exporting Records with ActiveScaffold
|
114
30
|
email: activescaffold@googlegroups.com
|
115
31
|
executables: []
|
116
|
-
|
117
32
|
extensions: []
|
118
|
-
|
119
|
-
|
120
|
-
- README.
|
121
|
-
files:
|
122
|
-
- .
|
123
|
-
-
|
124
|
-
-
|
125
|
-
-
|
126
|
-
-
|
127
|
-
-
|
128
|
-
-
|
129
|
-
-
|
130
|
-
-
|
131
|
-
- frontends/default/views/_export.csv.erb
|
132
|
-
- frontends/default/views/_export_form_body.html.erb
|
133
|
-
- frontends/default/views/_show_export.html.erb
|
134
|
-
- frontends/default/views/show_export.html.erb
|
135
|
-
- init.rb
|
33
|
+
extra_rdoc_files:
|
34
|
+
- LICENSE.txt
|
35
|
+
- README.md
|
36
|
+
files:
|
37
|
+
- LICENSE.txt
|
38
|
+
- README.md
|
39
|
+
- app/assets/images/export.png
|
40
|
+
- app/assets/stylesheets/active_scaffold_export.css.erb
|
41
|
+
- app/assets/stylesheets/export-stylesheet-ie.css
|
42
|
+
- app/views/active_scaffold_overrides/_export.csv.erb
|
43
|
+
- app/views/active_scaffold_overrides/_export_form_body.html.erb
|
44
|
+
- app/views/active_scaffold_overrides/_show_export.html.erb
|
45
|
+
- app/views/active_scaffold_overrides/show_export.html.erb
|
136
46
|
- lib/active_scaffold/actions/export.rb
|
137
47
|
- lib/active_scaffold/config/export.rb
|
138
48
|
- lib/active_scaffold/helpers/export_helpers.rb
|
139
49
|
- lib/active_scaffold_export.rb
|
140
50
|
- lib/active_scaffold_export/config/core.rb
|
51
|
+
- lib/active_scaffold_export/engine.rb
|
141
52
|
- lib/active_scaffold_export/version.rb
|
142
|
-
|
143
|
-
|
144
|
-
licenses:
|
53
|
+
homepage: http://github.com/active_scaffold/active_scaffold_export
|
54
|
+
licenses:
|
145
55
|
- MIT
|
146
|
-
|
56
|
+
metadata: {}
|
57
|
+
post_install_message:
|
147
58
|
rdoc_options: []
|
148
|
-
|
149
|
-
require_paths:
|
59
|
+
require_paths:
|
150
60
|
- lib
|
151
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
152
|
-
|
153
|
-
requirements:
|
61
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
62
|
+
requirements:
|
154
63
|
- - ">="
|
155
|
-
- !ruby/object:Gem::Version
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
version: "0"
|
160
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
161
|
-
none: false
|
162
|
-
requirements:
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '0'
|
66
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
67
|
+
requirements:
|
163
68
|
- - ">="
|
164
|
-
- !ruby/object:Gem::Version
|
165
|
-
|
166
|
-
segments:
|
167
|
-
- 0
|
168
|
-
version: "0"
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: '0'
|
169
71
|
requirements: []
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
summary: Exporting Records with ActiveScaffold
|
72
|
+
rubyforge_project:
|
73
|
+
rubygems_version: 2.7.9
|
74
|
+
signing_key:
|
75
|
+
specification_version: 4
|
76
|
+
summary: Ability to export records to CSV/XLSX with ActiveScaffold
|
176
77
|
test_files: []
|
177
|
-
|
data/.document
DELETED
data/Gemfile
DELETED
data/README.markdown
DELETED
@@ -1,65 +0,0 @@
|
|
1
|
-
active_scaffold_export
|
2
|
-
======================
|
3
|
-
|
4
|
-
Active Scaffold plugin for CSV exports.
|
5
|
-
|
6
|
-
Introduction
|
7
|
-
------------
|
8
|
-
|
9
|
-
This Active Scaffold plugin provides a configurable CSV 'Export'
|
10
|
-
action for Active Scaffold controllers.
|
11
|
-
|
12
|
-
Installation
|
13
|
-
------------
|
14
|
-
|
15
|
-
You can use active_scaffold_export with the latest Rails 3, but you'll
|
16
|
-
need to also install the vhochstein port of active_scaffold.
|
17
|
-
|
18
|
-
$ rails plugin install git://github.com/vhochstein/active_scaffold.git
|
19
|
-
|
20
|
-
In your Gemfile:
|
21
|
-
|
22
|
-
gem "active_scaffold_export"
|
23
|
-
|
24
|
-
Features
|
25
|
-
--------
|
26
|
-
|
27
|
-
* Uses FasterCSV for CSV generation
|
28
|
-
* Works with Rails 3 (thanks vhochstein!)
|
29
|
-
* Scales to many, many records (thanks Alexander Malysh!)
|
30
|
-
* Let the user pick which columns to export.
|
31
|
-
* Download full lists or just a single page.
|
32
|
-
* Don't like commas? No problem, uses your favorite delimiter!
|
33
|
-
* Don't need no stinkin' headers? Drop 'em.
|
34
|
-
|
35
|
-
Usage
|
36
|
-
-----
|
37
|
-
|
38
|
-
active_scaffold :users do |config|
|
39
|
-
actions.add :export # this is required, all other configuration is optional
|
40
|
-
|
41
|
-
export.columns = [ :id, :email, :created_at ] # uses list columns by default
|
42
|
-
export.allow_full_download = false # defaults to true
|
43
|
-
export.show_form = true # whether to show customization form or not, default to true
|
44
|
-
export.force_quotes = true # defaults to false
|
45
|
-
export.default_deselected_columns = [ :created_at ] # optional
|
46
|
-
export.default_delimiter = ';' # defaults to ','
|
47
|
-
export.default_skip_header = true # defaults to false
|
48
|
-
export.default_full_download = false # defaults to true
|
49
|
-
end
|
50
|
-
|
51
|
-
Note on Patches/Pull Requests
|
52
|
-
-----------------------------
|
53
|
-
|
54
|
-
* Fork the project.
|
55
|
-
* Make your feature addition or bug fix.
|
56
|
-
* Add tests for it. This is important so I don't break it in a
|
57
|
-
future version unintentionally.
|
58
|
-
* Commit, do not mess with rakefile, version, or history.
|
59
|
-
(if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
|
60
|
-
* Send me a pull request. Bonus points for topic branches.
|
61
|
-
|
62
|
-
Copyright
|
63
|
-
---------
|
64
|
-
|
65
|
-
Copyright (c) 2010 Mojo Tech, LLC. See MIT-LICENSE for details.
|
data/Rakefile
DELETED
@@ -1,58 +0,0 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'bundler'
|
3
|
-
begin
|
4
|
-
Bundler.setup(:default, :development)
|
5
|
-
rescue Bundler::BundlerError => e
|
6
|
-
$stderr.puts e.message
|
7
|
-
$stderr.puts "Run `bundle install` to install missing gems"
|
8
|
-
exit e.status_code
|
9
|
-
end
|
10
|
-
require 'rake'
|
11
|
-
|
12
|
-
require 'jeweler'
|
13
|
-
require './lib/active_scaffold_export/version.rb'
|
14
|
-
|
15
|
-
Jeweler::Tasks.new do |gem|
|
16
|
-
# gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
|
17
|
-
gem.name = "active_scaffold_export"
|
18
|
-
gem.version = ActiveScaffoldExport::Version::STRING
|
19
|
-
gem.homepage = "http://github.com/mojotech/active_scaffold_export"
|
20
|
-
gem.license = "MIT"
|
21
|
-
gem.summary = %Q{Exporting Records with ActiveScaffold}
|
22
|
-
gem.description = %Q{This Active Scaffold plugin provides a configurable CSV 'Export' action for Active Scaffold controllers}
|
23
|
-
gem.email = "activescaffold@googlegroups.com"
|
24
|
-
gem.authors = ["Volker Hochstein", "Mojo Tech, LLC", "see commits"]
|
25
|
-
gem.add_runtime_dependency 'active_scaffold', '>= 3.0.12'
|
26
|
-
if RUBY_VERSION < "1.9"
|
27
|
-
gem.add_runtime_dependency "fastercsv"
|
28
|
-
end
|
29
|
-
# Include your dependencies below. Runtime dependencies are required when using your gem,
|
30
|
-
# and development dependencies are only needed for development (ie running rake tasks, tests, etc)
|
31
|
-
# gem.add_runtime_dependency 'jabber4r', '> 0.1'
|
32
|
-
# gem.add_development_dependency 'rspec', '> 1.2.3'
|
33
|
-
end
|
34
|
-
Jeweler::RubygemsDotOrgTasks.new
|
35
|
-
|
36
|
-
require 'rake/testtask'
|
37
|
-
Rake::TestTask.new(:test) do |test|
|
38
|
-
test.libs << 'lib' << 'test'
|
39
|
-
test.pattern = 'test/**/test_*.rb'
|
40
|
-
test.verbose = true
|
41
|
-
end
|
42
|
-
|
43
|
-
require 'rcov/rcovtask'
|
44
|
-
Rcov::RcovTask.new do |test|
|
45
|
-
test.libs << 'test'
|
46
|
-
test.pattern = 'test/**/test_*.rb'
|
47
|
-
test.verbose = true
|
48
|
-
end
|
49
|
-
|
50
|
-
task :default => :test
|
51
|
-
|
52
|
-
require 'rake/rdoctask'
|
53
|
-
Rake::RDocTask.new do |rdoc|
|
54
|
-
rdoc.rdoc_dir = 'rdoc'
|
55
|
-
rdoc.title = "active_scaffold_export #{ActiveScaffoldExport::Version::STRING}"
|
56
|
-
rdoc.rdoc_files.include('README*')
|
57
|
-
rdoc.rdoc_files.include('lib/**/*.rb')
|
58
|
-
end
|
@@ -1,73 +0,0 @@
|
|
1
|
-
# Generated by jeweler
|
2
|
-
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
|
-
# -*- encoding: utf-8 -*-
|
5
|
-
|
6
|
-
Gem::Specification.new do |s|
|
7
|
-
s.name = %q{active_scaffold_export}
|
8
|
-
s.version = "3.0.6"
|
9
|
-
|
10
|
-
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
-
s.authors = ["Volker Hochstein", "Mojo Tech, LLC", "see commits"]
|
12
|
-
s.date = %q{2011-03-26}
|
13
|
-
s.description = %q{This Active Scaffold plugin provides a configurable CSV 'Export' action for Active Scaffold controllers}
|
14
|
-
s.email = %q{activescaffold@googlegroups.com}
|
15
|
-
s.extra_rdoc_files = [
|
16
|
-
"README.markdown"
|
17
|
-
]
|
18
|
-
s.files = [
|
19
|
-
".document",
|
20
|
-
"Gemfile",
|
21
|
-
"MIT-LICENSE",
|
22
|
-
"README.markdown",
|
23
|
-
"Rakefile",
|
24
|
-
"active_scaffold_export.gemspec",
|
25
|
-
"frontends/default/images/export.png",
|
26
|
-
"frontends/default/stylesheets/export-stylesheet-ie.css",
|
27
|
-
"frontends/default/stylesheets/export-stylesheet.css",
|
28
|
-
"frontends/default/views/_export.csv.erb",
|
29
|
-
"frontends/default/views/_export_form_body.html.erb",
|
30
|
-
"frontends/default/views/_show_export.html.erb",
|
31
|
-
"frontends/default/views/show_export.html.erb",
|
32
|
-
"init.rb",
|
33
|
-
"lib/active_scaffold/actions/export.rb",
|
34
|
-
"lib/active_scaffold/config/export.rb",
|
35
|
-
"lib/active_scaffold/helpers/export_helpers.rb",
|
36
|
-
"lib/active_scaffold_export.rb",
|
37
|
-
"lib/active_scaffold_export/config/core.rb",
|
38
|
-
"lib/active_scaffold_export/version.rb"
|
39
|
-
]
|
40
|
-
s.homepage = %q{http://github.com/mojotech/active_scaffold_export}
|
41
|
-
s.licenses = ["MIT"]
|
42
|
-
s.require_paths = ["lib"]
|
43
|
-
s.rubygems_version = %q{1.6.2}
|
44
|
-
s.summary = %q{Exporting Records with ActiveScaffold}
|
45
|
-
|
46
|
-
if s.respond_to? :specification_version then
|
47
|
-
s.specification_version = 3
|
48
|
-
|
49
|
-
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
50
|
-
s.add_development_dependency(%q<shoulda>, [">= 0"])
|
51
|
-
s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
|
52
|
-
s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
|
53
|
-
s.add_development_dependency(%q<rcov>, [">= 0"])
|
54
|
-
s.add_runtime_dependency(%q<active_scaffold>, [">= 3.0.12"])
|
55
|
-
s.add_runtime_dependency(%q<fastercsv>, [">= 0"])
|
56
|
-
else
|
57
|
-
s.add_dependency(%q<shoulda>, [">= 0"])
|
58
|
-
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
59
|
-
s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
|
60
|
-
s.add_dependency(%q<rcov>, [">= 0"])
|
61
|
-
s.add_dependency(%q<active_scaffold>, [">= 3.0.12"])
|
62
|
-
s.add_dependency(%q<fastercsv>, [">= 0"])
|
63
|
-
end
|
64
|
-
else
|
65
|
-
s.add_dependency(%q<shoulda>, [">= 0"])
|
66
|
-
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
67
|
-
s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
|
68
|
-
s.add_dependency(%q<rcov>, [">= 0"])
|
69
|
-
s.add_dependency(%q<active_scaffold>, [">= 3.0.12"])
|
70
|
-
s.add_dependency(%q<fastercsv>, [">= 0"])
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
@@ -1,28 +0,0 @@
|
|
1
|
-
<% export_config = active_scaffold_config.export %>
|
2
|
-
<div class="columns checkbox-list">
|
3
|
-
<% export_config.columns.each do |column| -%>
|
4
|
-
<div class="column checkbox-wrapper">
|
5
|
-
<%= content_tag(:label, check_box_tag("export_columns[#{column.name}]", 1, !export_config.default_deselected_columns.include?(column.name)) + " #{column.label}".html_safe) %>
|
6
|
-
</div>
|
7
|
-
<% end -%>
|
8
|
-
|
9
|
-
</div>
|
10
|
-
<div class="separator"></div>
|
11
|
-
<h3><%=as_('Options')%></h3>
|
12
|
-
<div class="options checkbox-list">
|
13
|
-
<div class="option checkbox-wrapper">
|
14
|
-
<%= content_tag(:label, check_box_tag('skip_header', 1, export_config.default_skip_header) + " #{as_('Omit Header')}".html_safe) %>
|
15
|
-
</div>
|
16
|
-
<div class="option checkbox-wrapper">
|
17
|
-
<%= content_tag(:label, text_field_tag('delimiter', export_config.default_delimiter, :size => 1, :maxlength => 1) + " #{as_('Delimiter')}".html_safe) %>
|
18
|
-
</div>
|
19
|
-
<div class="separator"></div>
|
20
|
-
<div class="option checkbox-wrapper">
|
21
|
-
<%= content_tag(:label, radio_button_tag('full_download', false, !export_config.default_full_download) + " #{as_('This Page')}".html_safe) if export_config.allow_full_download %>
|
22
|
-
</div>
|
23
|
-
<div class="option checkbox-wrapper">
|
24
|
-
<%= 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 %>
|
25
|
-
</div>
|
26
|
-
|
27
|
-
</div>
|
28
|
-
<div class="separator"></div>
|
data/init.rb
DELETED