active_scaffold_batch 3.3.4 → 3.4.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/README +3 -0
- data/app/assets/stylesshets/{active_scaffold_batch.css → active_scaffold_batch.scss} +2 -2
- data/app/views/active_scaffold_overrides/_batch_create_form_body.html.erb +3 -3
- data/app/views/active_scaffold_overrides/_batch_create_form_horizontal_header.html.erb +1 -1
- data/app/views/active_scaffold_overrides/_batch_create_form_horizontal_record.html.erb +1 -1
- data/app/views/active_scaffold_overrides/_batch_update_form_body.html.erb +3 -3
- data/lib/active_scaffold/actions/batch_base.rb +3 -3
- data/lib/active_scaffold/actions/batch_create.rb +3 -3
- data/lib/active_scaffold/actions/batch_destroy.rb +1 -1
- data/lib/active_scaffold/actions/batch_update.rb +10 -5
- data/lib/active_scaffold/config/batch_destroy.rb +1 -5
- data/lib/active_scaffold/helpers/batch_create_column_helpers.rb +10 -0
- data/lib/active_scaffold_batch/config/core.rb +7 -7
- data/lib/active_scaffold_batch/version.rb +1 -1
- metadata +28 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 6682c4f57d85297bde0f373eea697058af433332ef1dd589d08ec57c55a30bf2
|
4
|
+
data.tar.gz: 0284ed6ea296322340d47685837e58b96cebc59eac33709430b761f278199541
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7632a402c2ae1c0ca45e4b42c372bee61aae6f7c972e03d26b7bc7eae532cd26d61efaf70d9efbe62d73f6d7360af7546c75682ce3a934b37c1965cb4072b4e9
|
7
|
+
data.tar.gz: f8c39f5bfde77928e78693008848b53de9a9c087fc92cc6f58a6c92027223b012ffd8b7bf5d652f7d0ca49a895c5221f996e95c8621d5b8ebcd20601bd67c0c3
|
data/README
CHANGED
@@ -2,6 +2,9 @@ ActiveScaffold batch is a gem which adds batch_update, batch_create and batch_de
|
|
2
2
|
|
3
3
|
gem 'active_scaffold_batch'
|
4
4
|
|
5
|
+
It works with ActiveScaffold >= 3.4.18 and rails >= 4.0.
|
6
|
+
Use 3.3.x for rails 3.2.x.
|
7
|
+
|
5
8
|
In the config block of an activescaffold you can add any of the following lines:
|
6
9
|
|
7
10
|
config.actions.add :batch_create
|
@@ -9,7 +9,7 @@
|
|
9
9
|
border-top: 0;
|
10
10
|
}
|
11
11
|
.active-scaffold .multiple .form_record a.remove {
|
12
|
-
background-image: url("
|
12
|
+
background-image: image-url("active_scaffold/cross.png");
|
13
13
|
display: block;
|
14
14
|
font-weight: bold;
|
15
15
|
height: 16px;
|
@@ -27,7 +27,7 @@
|
|
27
27
|
.active-scaffold-header div.actions > a.batch_new {
|
28
28
|
background-position: 5px 50%;
|
29
29
|
background-repeat: no-repeat;
|
30
|
-
background-image: url("
|
30
|
+
background-image: image-url("active_scaffold/add.png");
|
31
31
|
margin: 0;
|
32
32
|
padding: 5px 5px 5px 25px;
|
33
33
|
}
|
@@ -3,8 +3,8 @@
|
|
3
3
|
<li class="form-element">
|
4
4
|
<%= hidden_field_tag("batch_scope", (batch_scope || 'LISTED')) %>
|
5
5
|
</li>
|
6
|
-
<% columns.
|
7
|
-
<% next
|
6
|
+
<% columns.each_column(for: @record) do |column| %>
|
7
|
+
<% next unless column.association.nil? || column.association.belongs_to? %>
|
8
8
|
<% renders_as = column_renders_as(column) %>
|
9
9
|
<% if renders_as == :subsection -%>
|
10
10
|
<% subsection_id = sub_section_id(:sub_section => column.label) %>
|
@@ -13,7 +13,7 @@
|
|
13
13
|
<%= render :partial => 'form', :locals => { :columns => column, :subsection_id => subsection_id} %>
|
14
14
|
<%= link_to_visibility_toggle(subsection_id, {:default_visible => !column.collapsed}) -%>
|
15
15
|
</li>
|
16
|
-
<% elsif column.
|
16
|
+
<% elsif column.association.try(:readonly?)
|
17
17
|
next %>
|
18
18
|
<% else
|
19
19
|
renders_as = :field if renders_as == :subform -%>
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<thead>
|
2
2
|
<tr>
|
3
|
-
<% columns.
|
3
|
+
<% columns.each_column(flatten: true) do |column| -%>
|
4
4
|
<% next if column_renders_as(column) == :hidden -%>
|
5
5
|
<th class="<%= 'required' if column.required? %>"><label><%= column.label %></label></th>
|
6
6
|
<% end -%>
|
@@ -7,7 +7,7 @@
|
|
7
7
|
</tr>
|
8
8
|
<% end %>
|
9
9
|
<tr class="form_record">
|
10
|
-
<% columns.
|
10
|
+
<% columns.each_column(flatten: true) do |column| -%>
|
11
11
|
<%
|
12
12
|
next if column_renders_as(column) == :hidden
|
13
13
|
next unless record.authorized_for?(:crud_type => :create, :column => column.name)
|
@@ -3,8 +3,8 @@
|
|
3
3
|
<li class="form-element">
|
4
4
|
<%= render :partial => 'batch_update_form_attribute_scope' -%>
|
5
5
|
</li>
|
6
|
-
<% columns.
|
7
|
-
<% next
|
6
|
+
<% columns.each_column(for: @record) do |column| %>
|
7
|
+
<% next unless column.association.nil? || column.association.belongs_to? %>
|
8
8
|
<% renders_as = column_renders_as(column) %>
|
9
9
|
<% if renders_as == :subsection -%>
|
10
10
|
<% subsection_id = sub_section_id(:sub_section => column.label) %>
|
@@ -13,7 +13,7 @@
|
|
13
13
|
<%= render :partial => 'form', :locals => { :columns => column, :subsection_id => subsection_id } %>
|
14
14
|
<%= link_to_visibility_toggle(subsection_id, :default_visible => !column.collapsed) -%>
|
15
15
|
</li>
|
16
|
-
<% elsif column.
|
16
|
+
<% elsif column.association.try(:readonly?)
|
17
17
|
next %>
|
18
18
|
<% else
|
19
19
|
renders_as = :field if renders_as == :subform -%>
|
@@ -104,7 +104,7 @@ module ActiveScaffold::Actions
|
|
104
104
|
if respond_to? "#{action_name}_respond_to_xml", true
|
105
105
|
send("#{action_name}_respond_to_xml")
|
106
106
|
else
|
107
|
-
render :xml => response_object.to_xml(:only => active_scaffold_config.send(action_name).columns.
|
107
|
+
render :xml => response_object.to_xml(:only => active_scaffold_config.send(action_name).columns.visible_columns_names), :content_type => Mime::XML, :status => response_status
|
108
108
|
end
|
109
109
|
end
|
110
110
|
|
@@ -112,7 +112,7 @@ module ActiveScaffold::Actions
|
|
112
112
|
if respond_to? "#{action_name}_respond_to_json", true
|
113
113
|
send("#{action_name}_respond_to_json")
|
114
114
|
else
|
115
|
-
render :text => response_object.to_json(:only => active_scaffold_config.send(action_name).columns.
|
115
|
+
render :text => response_object.to_json(:only => active_scaffold_config.send(action_name).columns.visible_columns_names), :content_type => Mime::JSON, :status => response_status
|
116
116
|
end
|
117
117
|
end
|
118
118
|
|
@@ -120,7 +120,7 @@ module ActiveScaffold::Actions
|
|
120
120
|
if respond_to? "#{action_name}_respond_to_yaml", true
|
121
121
|
send("#{action_name}_respond_to_yaml")
|
122
122
|
else
|
123
|
-
render :text => Hash.from_xml(response_object.to_xml(:only => active_scaffold_config.send(action_name).columns.
|
123
|
+
render :text => Hash.from_xml(response_object.to_xml(:only => active_scaffold_config.send(action_name).columns.visible_columns_names)).to_yaml, :content_type => Mime::YAML, :status => response_status
|
124
124
|
end
|
125
125
|
end
|
126
126
|
|
@@ -3,7 +3,7 @@ module ActiveScaffold::Actions
|
|
3
3
|
|
4
4
|
def self.included(base)
|
5
5
|
base.send :include, ActiveScaffold::Actions::BatchBase unless base < ActiveScaffold::Actions::BatchBase
|
6
|
-
base.
|
6
|
+
base.before_action :batch_create_authorized_filter, :only => [:batch_new, :batch_create]
|
7
7
|
base.helper_method :batch_create_values
|
8
8
|
base.helper_method :batch_create_by_column
|
9
9
|
base.helper_method :batch_create_by_records
|
@@ -49,7 +49,7 @@ module ActiveScaffold::Actions
|
|
49
49
|
if @batch_create_by_records.nil?
|
50
50
|
if marked_records_parent
|
51
51
|
column = active_scaffold_config.columns[batch_create_by_column.to_sym]
|
52
|
-
@batch_create_by_records = if column.
|
52
|
+
@batch_create_by_records = if column.association.polymorphic?
|
53
53
|
active_scaffold_config_for(params[:batch_create_by].singularize).model.find(marked_records_parent.keys)
|
54
54
|
else
|
55
55
|
column_plural_assocation_value_from_value(column, marked_records_parent.keys)
|
@@ -212,7 +212,7 @@ module ActiveScaffold::Actions
|
|
212
212
|
def create_attribute_values_from_params(columns, attributes)
|
213
213
|
values = {}
|
214
214
|
parent_record = active_scaffold_config.model.new
|
215
|
-
columns.
|
215
|
+
columns.each_column(for: active_scaffold_config.model, crud_type: :create, flatten: true) do |column|
|
216
216
|
next unless attributes.has_key?(column.name)
|
217
217
|
if column == batch_create_by_column.to_sym
|
218
218
|
@batch_create_by_records = batch_values_for_column(column, attributes[column.name])
|
@@ -3,7 +3,7 @@ module ActiveScaffold::Actions
|
|
3
3
|
|
4
4
|
def self.included(base)
|
5
5
|
base.send :include, ActiveScaffold::Actions::BatchBase unless base < ActiveScaffold::Actions::BatchBase
|
6
|
-
base.
|
6
|
+
base.before_action :batch_destroy_authorized_filter, :only => [:batch_destroy]
|
7
7
|
end
|
8
8
|
|
9
9
|
def batch_destroy
|
@@ -23,7 +23,7 @@ module ActiveScaffold::Actions
|
|
23
23
|
|
24
24
|
def self.included(base)
|
25
25
|
base.send :include, ActiveScaffold::Actions::BatchBase unless base < ActiveScaffold::Actions::BatchBase
|
26
|
-
base.
|
26
|
+
base.before_action :batch_update_authorized_filter, :only => [:batch_edit, :batch_update]
|
27
27
|
base.helper_method :batch_update_values
|
28
28
|
end
|
29
29
|
|
@@ -166,13 +166,18 @@ module ActiveScaffold::Actions
|
|
166
166
|
return sql_set, update_value
|
167
167
|
end
|
168
168
|
|
169
|
+
# TODO: delete when ActiveScaffold 3.5 is released and required
|
170
|
+
def params_hash?(value)
|
171
|
+
value.is_a?(Hash) || (Rails.version >= '5.0' && value.is_a?(ActionController::Parameters))
|
172
|
+
end
|
173
|
+
|
169
174
|
def update_attribute_values_from_params(columns, attributes)
|
170
175
|
values = {}
|
171
|
-
|
172
|
-
columns.
|
173
|
-
next unless attributes[column.name]
|
176
|
+
return values unless params_hash? attributes
|
177
|
+
columns.each_column(for: new_model, crud_type: :update, flatten: true) do |column|
|
178
|
+
next unless params_hash?(attributes[column.name]) && attributes[column.name][:operator] != 'NO_UPDATE'
|
174
179
|
value = attributes[column.name]
|
175
|
-
value
|
180
|
+
value[:value] = value[:operator] == 'NULL' ? nil : column_value_from_param_value(nil, column, value[:value])
|
176
181
|
values[column.name] = {:column => column, :value => value}
|
177
182
|
end
|
178
183
|
values
|
@@ -3,11 +3,7 @@ module ActiveScaffold::Config
|
|
3
3
|
self.crud_type = :delete
|
4
4
|
|
5
5
|
def initialize(core_config)
|
6
|
-
|
7
|
-
|
8
|
-
# start with the ActionLink defined globally
|
9
|
-
@link = self.class.link.map(&:clone) unless self.class.link.nil?
|
10
|
-
@action_group = self.class.action_group.clone if self.class.action_group
|
6
|
+
super
|
11
7
|
@action_group ||= 'collection.batch.destroy'
|
12
8
|
@process_mode = self.class.process_mode
|
13
9
|
end
|
@@ -35,6 +35,16 @@ module ActiveScaffold
|
|
35
35
|
def batch_create_multiple_layout
|
36
36
|
"batch_create_form_#{active_scaffold_config.batch_create.layout}"
|
37
37
|
end
|
38
|
+
|
39
|
+
def current_form_columns(record, scope, subform_controller = nil)
|
40
|
+
columns = super
|
41
|
+
return columns if columns
|
42
|
+
if %i[batch_new batch_create].include? action_name.to_sym
|
43
|
+
active_scaffold_config.batch_create.columns.visible_columns_names
|
44
|
+
elsif %i[batch_edit batch_update].include? action_name.to_sym
|
45
|
+
active_scaffold_config.batch_update.columns.visible_columns_names
|
46
|
+
end
|
47
|
+
end
|
38
48
|
end
|
39
49
|
end
|
40
50
|
end
|
@@ -1,13 +1,13 @@
|
|
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
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
3
|
+
ActiveScaffold::Routing::ACTIVE_SCAFFOLD_CORE_ROUTING[:collection][:batch_edit] = :get
|
4
|
+
ActiveScaffold::Routing::ACTIVE_SCAFFOLD_CORE_ROUTING[:collection][:batch_update] = :post
|
5
|
+
ActiveScaffold::Routing::ACTIVE_SCAFFOLD_CORE_ROUTING[:collection][:batch_new] = :get
|
6
|
+
ActiveScaffold::Routing::ACTIVE_SCAFFOLD_CORE_ROUTING[:collection][:batch_create] = :post
|
7
|
+
ActiveScaffold::Routing::ACTIVE_SCAFFOLD_CORE_ROUTING[:collection][:batch_add] = :get
|
8
8
|
#not working because routing picks show route instead
|
9
|
-
#
|
9
|
+
#ActiveScaffold::Routing::ACTIVE_SCAFFOLD_CORE_ROUTING[:collection][:batch_destroy] = :get
|
10
10
|
#you may define a route for your controller before resource routes
|
11
11
|
#match 'players/batch_destroy' => 'players#batch_destroy', :via => [:get]
|
12
|
-
|
12
|
+
ActiveScaffold::Routing::ACTIVE_SCAFFOLD_CORE_ROUTING[:collection][:batch_destroy] = :delete
|
13
13
|
end
|
metadata
CHANGED
@@ -1,30 +1,44 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_scaffold_batch
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.4.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sergio Cambra
|
8
8
|
- Volker Hochstein
|
9
|
-
autorequire:
|
9
|
+
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2020-07-16 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: bundler
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - "~>"
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: '1.0'
|
21
|
+
type: :development
|
22
|
+
prerelease: false
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - "~>"
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: '1.0'
|
14
28
|
- !ruby/object:Gem::Dependency
|
15
29
|
name: active_scaffold
|
16
30
|
requirement: !ruby/object:Gem::Requirement
|
17
31
|
requirements:
|
18
|
-
- -
|
32
|
+
- - ">="
|
19
33
|
- !ruby/object:Gem::Version
|
20
|
-
version: 3.
|
34
|
+
version: 3.6.0.pre
|
21
35
|
type: :runtime
|
22
36
|
prerelease: false
|
23
37
|
version_requirements: !ruby/object:Gem::Requirement
|
24
38
|
requirements:
|
25
|
-
- -
|
39
|
+
- - ">="
|
26
40
|
- !ruby/object:Gem::Version
|
27
|
-
version: 3.
|
41
|
+
version: 3.6.0.pre
|
28
42
|
description: You want to destroy/update many records at once with activescaffold?
|
29
43
|
email: activescaffold@googlegroups.com
|
30
44
|
executables: []
|
@@ -36,7 +50,7 @@ files:
|
|
36
50
|
- README
|
37
51
|
- app/assets/javascripts/jquery/active_scaffold_batch.js
|
38
52
|
- app/assets/javascripts/prototype/active_scaffold_batch.js
|
39
|
-
- app/assets/stylesshets/active_scaffold_batch.
|
53
|
+
- app/assets/stylesshets/active_scaffold_batch.scss
|
40
54
|
- app/views/active_scaffold_overrides/_batch_create_form.html.erb
|
41
55
|
- app/views/active_scaffold_overrides/_batch_create_form_attribute.html.erb
|
42
56
|
- app/views/active_scaffold_overrides/_batch_create_form_body.html.erb
|
@@ -80,24 +94,24 @@ homepage: http://github.com/scambra/active_scaffold_batch
|
|
80
94
|
licenses:
|
81
95
|
- MIT
|
82
96
|
metadata: {}
|
83
|
-
post_install_message:
|
97
|
+
post_install_message:
|
84
98
|
rdoc_options: []
|
85
99
|
require_paths:
|
86
100
|
- lib
|
87
101
|
required_ruby_version: !ruby/object:Gem::Requirement
|
88
102
|
requirements:
|
89
|
-
- -
|
103
|
+
- - ">="
|
90
104
|
- !ruby/object:Gem::Version
|
91
105
|
version: '0'
|
92
106
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
93
107
|
requirements:
|
94
|
-
- -
|
108
|
+
- - ">="
|
95
109
|
- !ruby/object:Gem::Version
|
96
110
|
version: '0'
|
97
111
|
requirements: []
|
98
|
-
rubyforge_project:
|
99
|
-
rubygems_version: 2.
|
100
|
-
signing_key:
|
112
|
+
rubyforge_project:
|
113
|
+
rubygems_version: 2.7.9
|
114
|
+
signing_key:
|
101
115
|
specification_version: 4
|
102
116
|
summary: Batch Processing for ActiveScaffold
|
103
117
|
test_files: []
|