dynamic_scaffold 0.4.2 → 0.5.0

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 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