dynamic_scaffold 0.4.2 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/stylesheets/dynamic_scaffold/common.scss +5 -0
- data/app/views/dynamic_scaffold/bootstrap/_edit.html.erb +1 -1
- data/app/views/dynamic_scaffold/bootstrap/_form.html.erb +8 -8
- data/app/views/dynamic_scaffold/bootstrap/_list.html.erb +4 -5
- data/app/views/dynamic_scaffold/bootstrap/_new.html.erb +1 -1
- data/config/locales/en.yml +2 -1
- data/config/locales/ja.yml +1 -0
- data/lib/dynamic_scaffold/config.rb +5 -1
- data/lib/dynamic_scaffold/controller.rb +10 -7
- data/lib/dynamic_scaffold/controller_utilities.rb +5 -1
- data/lib/dynamic_scaffold/error/{config.rb → invalid_operation.rb} +1 -1
- data/lib/dynamic_scaffold/error/{controller.rb → invalid_parameter.rb} +1 -1
- data/lib/dynamic_scaffold/form/item/base.rb +7 -0
- data/lib/dynamic_scaffold/version.rb +1 -1
- data/lib/dynamic_scaffold.rb +4 -4
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3510af104ad96b427d07fb37304e8ef027ac1304b44690eba6f4396765913dce
|
4
|
+
data.tar.gz: 10d59ca97b95307e52f470ed9b9b4d7d54baa33488f9ffdb07a9f0403ff5cf87
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e54bbebed15b73ae7f90c3cfcf602e023bdcb6fc0a0aa7ea7594b12770c69db8132465180f51b7278d478e7d3ee91aeff5dcb341b63d8ef9724c5c5d5ac95962
|
7
|
+
data.tar.gz: 65c53fd1541da71f1635fd0741da54148377c9c6566a062e5c5cc759db3da9c1f2979dc59f5d6450b75faeb6130626a13e18dac8bf3c6161fc001892f0f5015d
|
@@ -1 +1 @@
|
|
1
|
-
<%= render 'dynamic_scaffold/bootstrap/form', method: :patch, url: dynamic_scaffold_path(:update) %>
|
1
|
+
<%= render 'dynamic_scaffold/bootstrap/form', method: :patch, url: dynamic_scaffold_path(:update, request_queries) %>
|
@@ -4,7 +4,8 @@
|
|
4
4
|
<% if !elem.label? && elem.type?(:hidden_field) %>
|
5
5
|
<%= elem.render(self, form) %>
|
6
6
|
<% else %>
|
7
|
-
|
7
|
+
<%- errors = elem.errors(@record) -%>
|
8
|
+
<div class="<%= class_names('form-group', 'has-error': errors.present?) %>">
|
8
9
|
<label><%= elem.proxy_field.label %></label>
|
9
10
|
<div class="clearfix">
|
10
11
|
<%- elem.insert(:before).each do |block| -%>
|
@@ -45,19 +46,19 @@
|
|
45
46
|
<%end%>
|
46
47
|
</div>
|
47
48
|
<% else %>
|
48
|
-
<%= elem.render(self, form, class_names('form-control', {'is-invalid':
|
49
|
+
<%= elem.render(self, form, class_names('form-control', {'is-invalid': errors.present?})) %>
|
49
50
|
<% end %>
|
50
51
|
<%- elem.insert(:after).each do |block| -%>
|
51
52
|
<%= self.instance_exec(@record, &block) %>
|
52
53
|
<%-end-%>
|
53
54
|
</div>
|
54
|
-
|
55
|
-
<ul class="dynamicScaffold-error-message">
|
56
|
-
|
55
|
+
<%- if errors.present? -%>
|
56
|
+
<ul class="list-unstyled dynamicScaffold-error-message">
|
57
|
+
<% errors.each do |err|%>
|
57
58
|
<li><%= dynamic_scaffold_icon :error %> <%= err %></li>
|
58
59
|
<%end%>
|
59
60
|
</ul>
|
60
|
-
|
61
|
+
<%- end -%>
|
61
62
|
<%if elem.notes?%>
|
62
63
|
<div class="form-text text-muted"><%= elem.render_notes(form.object, self) %></div>
|
63
64
|
<%end%>
|
@@ -66,8 +67,7 @@
|
|
66
67
|
<% end %>
|
67
68
|
<% end %>
|
68
69
|
<div>
|
69
|
-
|
70
|
-
<%= link_to dynamic_scaffold_path(:index, path_options), class: 'btn btn-outline-secondary btn-default' do%>
|
70
|
+
<%= link_to dynamic_scaffold_path(:index, request_queries), class: 'btn btn-outline-secondary btn-default back' do%>
|
71
71
|
<%= dynamic_scaffold_icon :back %> <%= t('dynamic_scaffold.button.back') %>
|
72
72
|
<%end%>
|
73
73
|
<button type="submit" class="btn btn-outline-warning btn-warning">
|
@@ -4,9 +4,9 @@
|
|
4
4
|
</div>
|
5
5
|
<%end%>
|
6
6
|
<input type="hidden" class="authenticity_param_name" value="<%= request_forgery_protection_token %>">
|
7
|
-
<%= form_with method: :patch, url: dynamic_scaffold_path(:sort) do%>
|
7
|
+
<%= form_with method: :patch, url: dynamic_scaffold_path(:sort, request_queries(dynamic_scaffold.list.page_param_name)), local: true do%>
|
8
8
|
<div class="dynamicScaffold-row">
|
9
|
-
<%= link_to dynamic_scaffold_path(:new), class: 'btn btn-outline-primary btn-primary btn-sm' do%>
|
9
|
+
<%= link_to dynamic_scaffold_path(:new, request_queries), class: 'btn btn-outline-primary btn-primary btn-sm' do%>
|
10
10
|
<%= dynamic_scaffold_icon(:add) %> <%= t('dynamic_scaffold.button.add') %>
|
11
11
|
<%end%>
|
12
12
|
</div>
|
@@ -41,8 +41,7 @@
|
|
41
41
|
<div class="resplist-footer clearfix">
|
42
42
|
<div class="float-right pull-right">
|
43
43
|
<div class="btn-group">
|
44
|
-
|
45
|
-
<%= link_to dynamic_scaffold_path(:edit, id: record[record.class.primary_key], page: params[page_param_name]), class: 'btn btn-primary btn-outline-primary btn-sm' do %>
|
44
|
+
<%= link_to dynamic_scaffold_path(:edit, request_queries.merge(id: record[record.class.primary_key])), class: 'btn btn-primary btn-outline-primary btn-sm edit' do %>
|
46
45
|
<%= dynamic_scaffold_icon(:edit) %> <%= t('dynamic_scaffold.button.edit') %>
|
47
46
|
<%end%>
|
48
47
|
</div>
|
@@ -67,7 +66,7 @@
|
|
67
66
|
<% end %>
|
68
67
|
<div class="btn-group">
|
69
68
|
<button
|
70
|
-
data-action="<%= dynamic_scaffold_path(:update, id: record[record.class.primary_key]) %>"
|
69
|
+
data-action="<%= dynamic_scaffold_path(:update, request_queries(dynamic_scaffold.list.page_param_name).merge(id: record[record.class.primary_key])) %>"
|
71
70
|
data-confirm-message="<%= t('dynamic_scaffold.message.destroy_confirm') %>"
|
72
71
|
class="btn btn-danger btn-sm dynamicScaffoldJs-destory"
|
73
72
|
>
|
@@ -1 +1 @@
|
|
1
|
-
<%= render 'dynamic_scaffold/bootstrap/form', method: :post, url: dynamic_scaffold_path(:index) %>
|
1
|
+
<%= render 'dynamic_scaffold/bootstrap/form', method: :post, url: dynamic_scaffold_path(:index, request_queries) %>
|
data/config/locales/en.yml
CHANGED
@@ -16,4 +16,5 @@ en:
|
|
16
16
|
confirm_ok: 'OK'
|
17
17
|
alert:
|
18
18
|
destroy:
|
19
|
-
invalid_foreign_key: 'That item can not be deleted because it has associated record(s).'
|
19
|
+
invalid_foreign_key: 'That item can not be deleted because it has associated record(s).'
|
20
|
+
failed: 'That item can not be deleted'
|
data/config/locales/ja.yml
CHANGED
@@ -159,6 +159,10 @@ module DynamicScaffold
|
|
159
159
|
@pagination
|
160
160
|
end
|
161
161
|
|
162
|
+
def page_param_name
|
163
|
+
pagination ? pagination.param_name : nil
|
164
|
+
end
|
165
|
+
|
162
166
|
def sorter(params = nil)
|
163
167
|
@sorter = params if params
|
164
168
|
@sorter
|
@@ -267,7 +271,7 @@ module DynamicScaffold
|
|
267
271
|
:carrierwave_image then
|
268
272
|
item = Form::Item::CarrierWaveImage.new(@config, type, *args)
|
269
273
|
else
|
270
|
-
raise DynamicScaffold::Error::
|
274
|
+
raise DynamicScaffold::Error::InvalidParameter, "Unknown form item type #{type}"
|
271
275
|
end
|
272
276
|
@items << item
|
273
277
|
item
|
@@ -4,7 +4,7 @@ module DynamicScaffold
|
|
4
4
|
include ControllerUtilities
|
5
5
|
|
6
6
|
included do
|
7
|
-
helper_method :dynamic_scaffold_path, :dynamic_scaffold_icon, :dynamic_scaffold, :primary_key_value
|
7
|
+
helper_method :dynamic_scaffold_path, :dynamic_scaffold_icon, :dynamic_scaffold, :primary_key_value, :request_queries
|
8
8
|
attr_reader :dynamic_scaffold
|
9
9
|
before_action lambda {
|
10
10
|
@dynamic_scaffold = Config.new(self.class.dynamic_scaffold_model, self)
|
@@ -25,7 +25,7 @@ module DynamicScaffold
|
|
25
25
|
|
26
26
|
def index # rubocop:disable Metrics/AbcSize
|
27
27
|
@records = dynamic_scaffold.model.all
|
28
|
-
raise Error::
|
28
|
+
raise Error::InvalidOperation, 'You must return ActiveRecord::Relation' unless @records.is_a? ::ActiveRecord::Relation
|
29
29
|
|
30
30
|
if dynamic_scaffold.list.pagination
|
31
31
|
@records = @records
|
@@ -38,7 +38,7 @@ module DynamicScaffold
|
|
38
38
|
@records = @records.order(*dynamic_scaffold.list.order) unless dynamic_scaffold.list.order.empty?
|
39
39
|
|
40
40
|
@records = yield(@records) if block_given?
|
41
|
-
raise Error::
|
41
|
+
raise Error::InvalidOperation, 'You must return ActiveRecord::Relation' if @records.nil?
|
42
42
|
@records
|
43
43
|
end
|
44
44
|
|
@@ -63,7 +63,7 @@ module DynamicScaffold
|
|
63
63
|
dynamic_scaffold.model.transaction do
|
64
64
|
yield(@record) if block_given?
|
65
65
|
if @record.save
|
66
|
-
redirect_to dynamic_scaffold_path(:index)
|
66
|
+
redirect_to dynamic_scaffold_path(:index, request_queries)
|
67
67
|
else
|
68
68
|
render "#{params[:controller]}/new"
|
69
69
|
end
|
@@ -78,7 +78,7 @@ module DynamicScaffold
|
|
78
78
|
dynamic_scaffold.model.transaction do
|
79
79
|
yield(@record, prev_attribute) if block_given?
|
80
80
|
if @record.save
|
81
|
-
redirect_to dynamic_scaffold_path(:index)
|
81
|
+
redirect_to dynamic_scaffold_path(:index, request_queries)
|
82
82
|
else
|
83
83
|
render "#{params[:controller]}/edit"
|
84
84
|
end
|
@@ -94,8 +94,11 @@ module DynamicScaffold
|
|
94
94
|
end
|
95
95
|
rescue ::ActiveRecord::InvalidForeignKey => _error
|
96
96
|
flash[:dynamic_scaffold_danger] = I18n.t('dynamic_scaffold.alert.destroy.invalid_foreign_key')
|
97
|
+
rescue => error
|
98
|
+
flash[:dynamic_scaffold_danger] = I18n.t('dynamic_scaffold.alert.destroy.failed')
|
99
|
+
logger.error(error)
|
97
100
|
end
|
98
|
-
redirect_to dynamic_scaffold_path(:index)
|
101
|
+
redirect_to dynamic_scaffold_path(:index, request_queries)
|
99
102
|
end
|
100
103
|
|
101
104
|
def sort
|
@@ -109,7 +112,7 @@ module DynamicScaffold
|
|
109
112
|
rec.save
|
110
113
|
end
|
111
114
|
end
|
112
|
-
redirect_to dynamic_scaffold_path(:index)
|
115
|
+
redirect_to dynamic_scaffold_path(:index, request_queries)
|
113
116
|
end
|
114
117
|
end
|
115
118
|
end
|
@@ -39,7 +39,7 @@ module DynamicScaffold
|
|
39
39
|
.permit(*permitting)
|
40
40
|
|
41
41
|
if dynamic_scaffold.scope && !valid_for_scope?(values)
|
42
|
-
raise DynamicScaffold::Error::
|
42
|
+
raise DynamicScaffold::Error::InvalidOperation, "You can update only to #{scope_params} on this scope"
|
43
43
|
end
|
44
44
|
|
45
45
|
values
|
@@ -110,5 +110,9 @@ module DynamicScaffold
|
|
110
110
|
value = dynamic_scaffold.model.maximum(attr)
|
111
111
|
record[attr] = value ? value + 1 : 0
|
112
112
|
end
|
113
|
+
|
114
|
+
def request_queries(*except)
|
115
|
+
request.query_parameters.to_hash.delete_if{|k, v| except.select(&:present?).include?(k.to_sym)}
|
116
|
+
end
|
113
117
|
end
|
114
118
|
end
|
@@ -104,6 +104,13 @@ module DynamicScaffold
|
|
104
104
|
end
|
105
105
|
end
|
106
106
|
|
107
|
+
def errors(record)
|
108
|
+
msg = record.errors.full_messages_for(proxy_field.name)
|
109
|
+
rel = @config.model.reflect_on_all_associations.find{|r| r.foreign_key.to_s == name.to_s}
|
110
|
+
msg.concat(record.errors.full_messages_for(rel.name)) if rel.present?
|
111
|
+
msg
|
112
|
+
end
|
113
|
+
|
107
114
|
protected
|
108
115
|
|
109
116
|
def build_html_attributes(classnames)
|
data/lib/dynamic_scaffold.rb
CHANGED
@@ -7,10 +7,10 @@ require 'dynamic_scaffold/config'
|
|
7
7
|
|
8
8
|
module DynamicScaffold
|
9
9
|
module Error
|
10
|
-
autoload :Base,
|
11
|
-
autoload :InvalidIcon,
|
12
|
-
autoload :
|
13
|
-
autoload :
|
10
|
+
autoload :Base, 'dynamic_scaffold/error/base'
|
11
|
+
autoload :InvalidIcon, 'dynamic_scaffold/error/invalid_icon'
|
12
|
+
autoload :InvalidParameter, 'dynamic_scaffold/error/invalid_parameter'
|
13
|
+
autoload :InvalidOperation, 'dynamic_scaffold/error/invalid_operation'
|
14
14
|
end
|
15
15
|
|
16
16
|
module List
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dynamic_scaffold
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Masamoto Miyata
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-05-
|
11
|
+
date: 2018-05-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: classnames-rails-view
|
@@ -255,9 +255,9 @@ files:
|
|
255
255
|
- lib/dynamic_scaffold/controller_utilities.rb
|
256
256
|
- lib/dynamic_scaffold/engine.rb
|
257
257
|
- lib/dynamic_scaffold/error/base.rb
|
258
|
-
- lib/dynamic_scaffold/error/config.rb
|
259
|
-
- lib/dynamic_scaffold/error/controller.rb
|
260
258
|
- lib/dynamic_scaffold/error/invalid_icon.rb
|
259
|
+
- lib/dynamic_scaffold/error/invalid_operation.rb
|
260
|
+
- lib/dynamic_scaffold/error/invalid_parameter.rb
|
261
261
|
- lib/dynamic_scaffold/form/item/base.rb
|
262
262
|
- lib/dynamic_scaffold/form/item/block.rb
|
263
263
|
- lib/dynamic_scaffold/form/item/carrier_wave_image.rb
|