active_scaffold_config_list 3.5.1 → 3.6.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 +4 -4
- data/README.md +12 -3
- data/app/views/active_scaffold_overrides/_show_config_list_form.html.erb +9 -9
- data/app/views/active_scaffold_overrides/_show_config_list_form_body.html.erb +12 -14
- data/app/views/active_scaffold_overrides/show_config_list_form.html.erb +1 -1
- data/lib/active_scaffold/actions/config_list.rb +38 -24
- data/lib/active_scaffold/helpers/config_list_helpers.rb +24 -0
- data/lib/active_scaffold_config_list/engine.rb +6 -0
- data/lib/active_scaffold_config_list/version.rb +2 -2
- data/lib/active_scaffold_config_list.rb +5 -0
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f2c3d3d9d64fafc128d38bf32437db1f53505bde01601d1186f562f3df76e3cf
|
4
|
+
data.tar.gz: f43e78ff81d757bef7fe7ea35d79a5ad73d5b1280dc6460a371e7cf98b212c9e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 61ee9652c00712cf1a5c3163f358cc4c2c6d46accec2abde2c554aaa3604ce09d98c0af694028aba107d4c7254bb52d221a9921c279804eb678a9ea0850d9c51
|
7
|
+
data.tar.gz: 77e1bbda33907266fb31d67722a85c8e22d06b61bd0181a476c80157c52a32c30ba196d579625a5fd45874da2a8b600d900835fce0461cbb43ad6ecf658f364e
|
data/README.md
CHANGED
@@ -1,6 +1,7 @@
|
|
1
|
-
This works with Rails >=
|
2
|
-
Version 3.3.x worked with Rails
|
3
|
-
Version 3.
|
1
|
+
This works with Rails >= 5.2 and ActiveScaffold >= 3.7.1
|
2
|
+
Version 3.4.x and 3.5.x worked with Rails >= 4.0 and ActiveScaffold >= 3.4.4
|
3
|
+
Version 3.3.x worked with Rails 3.2 and ActiveScaffold >= 3.4.4
|
4
|
+
Version 3.2.x worked with Rails 3.2 and ActiveScaffold >= 3.3.0
|
4
5
|
|
5
6
|
Usage:
|
6
7
|
|
@@ -37,6 +38,14 @@ list configuration, and setting config_list to use that method.
|
|
37
38
|
conf.config_list.save_to_user = :config_list_for
|
38
39
|
```
|
39
40
|
|
41
|
+
It can be changed globally for the app in `ActiveScaffold.defaults` in an initializer, such as:
|
42
|
+
|
43
|
+
```rb
|
44
|
+
ActiveScaffold.defaults do |config|
|
45
|
+
config.config_list.save_to_user
|
46
|
+
end
|
47
|
+
```
|
48
|
+
|
40
49
|
The model storing list configuration must have a config_list text column storing the columns list, and config_list_sort
|
41
50
|
serialized text column. For example:
|
42
51
|
|
@@ -1,16 +1,16 @@
|
|
1
|
-
<% url_options = params_for(:
|
1
|
+
<% url_options = params_for(action: :index, escape: false, config_list: nil) -%>
|
2
2
|
<%=
|
3
|
-
options = {:
|
4
|
-
:
|
5
|
-
:
|
6
|
-
:
|
3
|
+
options = {id: element_form_id(action: :config_list),
|
4
|
+
class: "as_form config_list",
|
5
|
+
remote: request.xhr?,
|
6
|
+
method: :get,
|
7
7
|
'data-loading' => true}
|
8
8
|
form_tag url_options, options %>
|
9
9
|
<h4><%= active_scaffold_config.config_list.label -%></h4>
|
10
|
-
<%= render
|
10
|
+
<%= render 'show_config_list_form_body' %>
|
11
11
|
<p class="form-footer">
|
12
|
-
<%= submit_tag as_(:config_list), :
|
13
|
-
<%= link_to as_(:reset), url_for(url_options.merge(:
|
14
|
-
<%= loading_indicator_tag(:
|
12
|
+
<%= submit_tag as_(:config_list), class: "submit" %>
|
13
|
+
<%= link_to as_(:reset), url_for(url_options.merge(config_list: '')), class: 'as_cancel', remote: true, data: {refresh: true} %>
|
14
|
+
<%= loading_indicator_tag(action: :config_list) %>
|
15
15
|
</p>
|
16
16
|
</form>
|
@@ -1,33 +1,31 @@
|
|
1
1
|
<ol class="form">
|
2
|
+
<% if config_list_columns? %>
|
2
3
|
<li class="form-element">
|
3
4
|
<dl><dt><label><%= as_ :columns %></label></dt>
|
4
|
-
<dd><ul class="<%= active_scaffold_config.config_list.draggable ? 'draggable-lists' : 'sortable-container' %>" id="<%= element_form_id(:
|
5
|
-
<%
|
6
|
-
if !config_list_params.nil? && config_list_params.is_a?(Array)
|
7
|
-
config_list = config_list_params
|
8
|
-
list_columns.concat active_scaffold_config.list.columns.visible_columns.select{|column| config_list.exclude? column.name}
|
9
|
-
end
|
10
|
-
%>
|
11
|
-
<% list_columns.each do |c| %>
|
5
|
+
<dd><ul class="<%= active_scaffold_config.config_list.draggable ? 'draggable-lists' : 'sortable-container' %>" id="<%= element_form_id(action: :config_list) %>-columns">
|
6
|
+
<% config_list_columns.each do |label, column| %>
|
12
7
|
<li class="sortable">
|
13
|
-
<%= check_box_tag 'config_list[]',
|
14
|
-
<label><%=
|
8
|
+
<%= check_box_tag 'config_list[]', column.to_s, (config_list_params.nil? ? true : config_list_params.include?(column)), {id: nil}%>
|
9
|
+
<label><%= label %></label>
|
15
10
|
</li>
|
16
11
|
<% end %>
|
17
12
|
</ul></dd></dl>
|
18
13
|
</li>
|
14
|
+
<% end %>
|
15
|
+
<% if config_list_sorting? %>
|
19
16
|
<li class="form-element">
|
20
17
|
<dl><dt><label><%= as_ :default_sorting %></label></dt>
|
21
18
|
<dd><ol>
|
22
19
|
<%
|
23
|
-
columns_options = list_columns.select
|
24
|
-
order_options = ['asc', 'desc'].map{ |v| [as_(v), v] }
|
20
|
+
columns_options = list_columns.select(&:sortable?).map { |c| [c.label, c.name] }
|
21
|
+
order_options = ['asc', 'desc'].map { |v| [as_(v), v] }
|
25
22
|
selected = config_list_sorting || []
|
26
23
|
3.times do |i|
|
27
24
|
%>
|
28
|
-
<li><%= select_tag "config_list_sorting[#{i}][]", options_for_select(columns_options, :
|
29
|
-
<%= select_tag "config_list_sorting[#{i}][]", options_for_select(order_options, :
|
25
|
+
<li><%= select_tag "config_list_sorting[#{i}][]", options_for_select(columns_options, selected: selected[i]&.first), include_blank: as_(:_select_), class: 'column' %>
|
26
|
+
<%= select_tag "config_list_sorting[#{i}][]", options_for_select(order_options, selected: selected[i]&.last), include_blank: as_(:_select_), class: 'order' %></li>
|
30
27
|
<% end %>
|
31
28
|
</ol></dd></dl>
|
32
29
|
</li>
|
30
|
+
<% end %>
|
33
31
|
</ol>
|
@@ -2,17 +2,17 @@ module ActiveScaffold::Actions
|
|
2
2
|
module ConfigList
|
3
3
|
|
4
4
|
def self.included(base)
|
5
|
-
base.before_action :store_config_list_params, :set_default_sorting, :
|
5
|
+
base.before_action :store_config_list_params, :set_default_sorting, only: [:index]
|
6
6
|
base.helper_method :config_list_params, :config_list_sorting
|
7
7
|
end
|
8
8
|
|
9
9
|
def show_config_list
|
10
10
|
respond_to do |type|
|
11
11
|
type.html do
|
12
|
-
render(:
|
12
|
+
render(action: 'show_config_list_form', layout: true)
|
13
13
|
end
|
14
14
|
type.js do
|
15
|
-
render(:
|
15
|
+
render(partial: 'show_config_list_form', layout: false)
|
16
16
|
end
|
17
17
|
end
|
18
18
|
end
|
@@ -58,13 +58,21 @@ module ActiveScaffold::Actions
|
|
58
58
|
send(config_list_session_storage_method)
|
59
59
|
end
|
60
60
|
|
61
|
+
def config_list_session_storage_key
|
62
|
+
active_scaffold_session_storage_key
|
63
|
+
end
|
64
|
+
|
65
|
+
def config_list_controller_name
|
66
|
+
controller_name
|
67
|
+
end
|
68
|
+
|
61
69
|
def active_scaffold_current_user
|
62
70
|
@active_scaffold_current_user ||= send(self.class.active_scaffold_config.class.security.current_user_method)
|
63
71
|
end
|
64
72
|
|
65
73
|
def delete_config_list_params
|
66
74
|
if active_scaffold_config.config_list.save_to_user && active_scaffold_current_user
|
67
|
-
active_scaffold_current_user.send(active_scaffold_config.config_list.save_to_user,
|
75
|
+
active_scaffold_current_user.send(active_scaffold_config.config_list.save_to_user, config_list_session_storage_key, config_list_controller_name).destroy
|
68
76
|
else
|
69
77
|
config_list_session_storage['config_list'] = nil
|
70
78
|
config_list_session_storage['config_list_sorting'] = nil
|
@@ -76,7 +84,7 @@ module ActiveScaffold::Actions
|
|
76
84
|
|
77
85
|
def save_config_list_params(config_list, config_list_sorting)
|
78
86
|
if active_scaffold_config.config_list.save_to_user && active_scaffold_current_user
|
79
|
-
record = active_scaffold_current_user.send(active_scaffold_config.config_list.save_to_user,
|
87
|
+
record = active_scaffold_current_user.send(active_scaffold_config.config_list.save_to_user, config_list_session_storage_key, config_list_controller_name)
|
80
88
|
record.config_list = config_list.join(',')
|
81
89
|
record.config_list_sorting = config_list_sorting if record.respond_to? :config_list_sorting
|
82
90
|
record.save
|
@@ -94,7 +102,7 @@ module ActiveScaffold::Actions
|
|
94
102
|
@last_modified = [@last_modified, config_list_record.updated_at].compact.max if config_list_record.respond_to? :updated_at
|
95
103
|
objects = super
|
96
104
|
if objects.is_a? Hash
|
97
|
-
objects.merge(:
|
105
|
+
objects.merge(etag: [objects[:etag], config_list_record])
|
98
106
|
else
|
99
107
|
[objects, config_list_record]
|
100
108
|
end
|
@@ -105,20 +113,22 @@ module ActiveScaffold::Actions
|
|
105
113
|
|
106
114
|
def config_list_record
|
107
115
|
return @config_list_record if defined? @config_list_record
|
108
|
-
@config_list_record =
|
109
|
-
if active_scaffold_current_user
|
110
|
-
active_scaffold_current_user.send(active_scaffold_config.config_list.save_to_user,
|
116
|
+
@config_list_record =
|
117
|
+
if active_scaffold_config.config_list.save_to_user && active_scaffold_current_user
|
118
|
+
active_scaffold_current_user.send(active_scaffold_config.config_list.save_to_user, config_list_session_storage_key, config_list_controller_name)
|
111
119
|
end
|
112
|
-
end
|
113
120
|
end
|
114
121
|
|
115
122
|
def config_list_params
|
116
|
-
@config_list_params
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
123
|
+
unless defined? @config_list_params
|
124
|
+
@config_list_params =
|
125
|
+
if config_list_record
|
126
|
+
params = config_list_record.config_list
|
127
|
+
params.split(',').map(&:to_sym) if params
|
128
|
+
else
|
129
|
+
config_list_session_storage['config_list']
|
130
|
+
end
|
131
|
+
end
|
122
132
|
@config_list_params || config_list_default_columns
|
123
133
|
end
|
124
134
|
|
@@ -127,11 +137,14 @@ module ActiveScaffold::Actions
|
|
127
137
|
end
|
128
138
|
|
129
139
|
def config_list_sorting
|
130
|
-
@config_list_sorting
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
140
|
+
unless defined? @config_list_sorting
|
141
|
+
@config_list_sorting =
|
142
|
+
if config_list_record
|
143
|
+
config_list_record.config_list_sorting if config_list_record.respond_to? :config_list_sorting
|
144
|
+
else
|
145
|
+
config_list_session_storage['config_list_sorting']
|
146
|
+
end
|
147
|
+
end
|
135
148
|
@config_list_sorting
|
136
149
|
end
|
137
150
|
|
@@ -139,8 +152,9 @@ module ActiveScaffold::Actions
|
|
139
152
|
@list_columns ||= begin
|
140
153
|
columns = super
|
141
154
|
if config_list_params.present?
|
142
|
-
config_list =
|
143
|
-
columns.select{|column| config_list.include? column.name}.
|
155
|
+
config_list = config_list_params.each.with_index.to_h
|
156
|
+
columns.select { |column| config_list.include? column.name }.
|
157
|
+
sort { |x, y| config_list[x.name] <=> config_list[y.name] }
|
144
158
|
else
|
145
159
|
columns
|
146
160
|
end
|
@@ -150,7 +164,7 @@ module ActiveScaffold::Actions
|
|
150
164
|
# The default security delegates to ActiveRecordPermissions.
|
151
165
|
# You may override the method to customize.
|
152
166
|
def config_list_authorized?
|
153
|
-
authorized_for?(:
|
167
|
+
authorized_for?(action: :read)
|
154
168
|
end
|
155
169
|
end
|
156
170
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module ActiveScaffold
|
2
|
+
module Helpers
|
3
|
+
module ConfigListHelpers
|
4
|
+
def config_list_sorting?
|
5
|
+
true
|
6
|
+
end
|
7
|
+
|
8
|
+
def config_list_columns?
|
9
|
+
true
|
10
|
+
end
|
11
|
+
|
12
|
+
def config_list_columns
|
13
|
+
columns =
|
14
|
+
if config_list_params.is_a?(Array)
|
15
|
+
config_list = config_list_params
|
16
|
+
list_columns.concat active_scaffold_config.list.columns.visible_columns.select { |column| config_list.exclude? column.name }
|
17
|
+
else
|
18
|
+
list_columns
|
19
|
+
end
|
20
|
+
columns.map { |c| [column_heading_label(c), c.name] }
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -5,5 +5,11 @@ module ActiveScaffoldConfigList
|
|
5
5
|
self::ACTIVE_SCAFFOLD_CORE_ROUTING[:collection][:show_config_list] = :get
|
6
6
|
end
|
7
7
|
end
|
8
|
+
|
9
|
+
initializer 'active_scaffold_config_list.action_view' do
|
10
|
+
ActiveSupport.on_load :action_view do
|
11
|
+
ActionView::Base.send :include, ActiveScaffold::Helpers::ConfigListHelpers
|
12
|
+
end
|
13
|
+
end
|
8
14
|
end
|
9
15
|
end
|
@@ -9,4 +9,9 @@ module ActiveScaffold
|
|
9
9
|
module Config
|
10
10
|
ActiveScaffold.autoload_subdir('config', self, File.dirname(__FILE__))
|
11
11
|
end
|
12
|
+
|
13
|
+
module Helpers
|
14
|
+
ActiveScaffold.autoload_subdir('helpers', self, File.dirname(__FILE__))
|
15
|
+
end
|
12
16
|
end
|
17
|
+
ActiveSupport.run_load_hooks(:active_scaffold_config_list)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_scaffold_config_list
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sergio Cambra
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-12-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: active_scaffold
|
@@ -59,6 +59,7 @@ files:
|
|
59
59
|
- config/locales/ru.yml
|
60
60
|
- lib/active_scaffold/actions/config_list.rb
|
61
61
|
- lib/active_scaffold/config/config_list.rb
|
62
|
+
- lib/active_scaffold/helpers/config_list_helpers.rb
|
62
63
|
- lib/active_scaffold_config_list.rb
|
63
64
|
- lib/active_scaffold_config_list/engine.rb
|
64
65
|
- lib/active_scaffold_config_list/version.rb
|
@@ -74,14 +75,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
74
75
|
requirements:
|
75
76
|
- - ">="
|
76
77
|
- !ruby/object:Gem::Version
|
77
|
-
version: '
|
78
|
+
version: '2.5'
|
78
79
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
79
80
|
requirements:
|
80
81
|
- - ">="
|
81
82
|
- !ruby/object:Gem::Version
|
82
83
|
version: '0'
|
83
84
|
requirements: []
|
84
|
-
rubygems_version: 3.
|
85
|
+
rubygems_version: 3.5.11
|
85
86
|
signing_key:
|
86
87
|
specification_version: 4
|
87
88
|
summary: User specific column configuration for ActiveScaffold
|