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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d0633833664a98487108cfff560746e817b250c06d092274e5bb565a8c35a67b
4
- data.tar.gz: e7ca41a6c513b98643955ac02455c59dce62a8a10d3d61a9eba4df0c3926f3e1
3
+ metadata.gz: 3510af104ad96b427d07fb37304e8ef027ac1304b44690eba6f4396765913dce
4
+ data.tar.gz: 10d59ca97b95307e52f470ed9b9b4d7d54baa33488f9ffdb07a9f0403ff5cf87
5
5
  SHA512:
6
- metadata.gz: 0d3a43421c7556e38a551dcca1f2452e05d0186136e8969717b849d2b514a3464c606f912be23e45c801edf8b42cb74fdcfdc10cb3a05511386e5ea8271b5d05
7
- data.tar.gz: '03877a49468680288325825e95194d1d9cae3a4611104aa588cb487bdbcddbf1b592e9160f9b25a4f1418145d7aeeba08a0079daba73b5cdf0cbc8f21d24e86e'
6
+ metadata.gz: e54bbebed15b73ae7f90c3cfcf602e023bdcb6fc0a0aa7ea7594b12770c69db8132465180f51b7278d478e7d3ee91aeff5dcb341b63d8ef9724c5c5d5ac95962
7
+ data.tar.gz: 65c53fd1541da71f1635fd0741da54148377c9c6566a062e5c5cc759db3da9c1f2979dc59f5d6450b75faeb6130626a13e18dac8bf3c6161fc001892f0f5015d
@@ -128,3 +128,8 @@
128
128
  .dynamicScaffold-confirm-buttons .btn{
129
129
  margin-left: 10px;
130
130
  }
131
+
132
+ // Fixed a problem that font-awesome icon and text link do not match in height.
133
+ .page-link{
134
+ line-height: 1.6;
135
+ }
@@ -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
- <div class="<%= class_names('form-group', {'has-error': @record.errors[elem.proxy_field.name].any?}) %>">
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': @record.errors[elem.proxy_field.name].any?})) %>
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
- <%if @record.errors[elem.proxy_field.name].any?%>
55
- <ul class="dynamicScaffold-error-message">
56
- <%@record.errors.full_messages_for(elem.proxy_field.name).each do |err|%>
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
- <%end%>
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
- <% path_options = dynamic_scaffold.list.pagination ? {dynamic_scaffold.list.pagination.param_name => params[:page]} : {}%>
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
- <% page_param_name = dynamic_scaffold.list.pagination ? dynamic_scaffold.list.pagination.param_name : nil %>
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) %>
@@ -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'
@@ -23,6 +23,7 @@ ja:
23
23
  alert:
24
24
  destroy:
25
25
  invalid_foreign_key: '関連づいたレコードがあるので削除できません。'
26
+ failed: '削除に失敗しました。'
26
27
  views:
27
28
  pagination:
28
29
  truncate: '…'
@@ -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::Config, "Unknown form item type #{type}"
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::Controller, 'You must return ActiveRecord::Relation' unless @records.is_a? ::ActiveRecord::Relation
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::Controller, 'You must return ActiveRecord::Relation' if @records.nil?
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::Controller, "You can update only to #{scope_params} on this scope"
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
@@ -1,6 +1,6 @@
1
1
  module DynamicScaffold
2
2
  module Error
3
- class Config < Base
3
+ class InvalidOperation < Base
4
4
  end
5
5
  end
6
6
  end
@@ -1,6 +1,6 @@
1
1
  module DynamicScaffold
2
2
  module Error
3
- class Controller < Base
3
+ class InvalidParameter < Base
4
4
  end
5
5
  end
6
6
  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)
@@ -1,3 +1,3 @@
1
1
  module DynamicScaffold
2
- VERSION = '0.4.2'.freeze
2
+ VERSION = '0.5.0'.freeze
3
3
  end
@@ -7,10 +7,10 @@ require 'dynamic_scaffold/config'
7
7
 
8
8
  module DynamicScaffold
9
9
  module Error
10
- autoload :Base, 'dynamic_scaffold/error/base'
11
- autoload :InvalidIcon, 'dynamic_scaffold/error/invalid_icon'
12
- autoload :Controller, 'dynamic_scaffold/error/controller'
13
- autoload :Config, 'dynamic_scaffold/error/config'
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.2
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-28 00:00:00.000000000 Z
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