active_scaffold_config_list 3.2.9 → 3.3.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.
- data/README +3 -2
- data/app/views/active_scaffold_overrides/_show_config_list_form.html.erb +1 -2
- data/app/views/active_scaffold_overrides/_show_config_list_form_body.html.erb +30 -11
- data/lib/active_scaffold/actions/config_list.rb +40 -8
- data/lib/active_scaffold/config/config_list.rb +9 -1
- data/lib/active_scaffold_config_list.rb +0 -4
- data/lib/active_scaffold_config_list/engine.rb +0 -4
- data/lib/active_scaffold_config_list/version.rb +2 -2
- metadata +39 -15
- checksums.yaml +0 -7
- data/lib/active_scaffold/helpers/config_list_helpers.rb +0 -10
data/README
CHANGED
@@ -1,4 +1,5 @@
|
|
1
|
-
This works with Rails 3.2 and ActiveScaffold >= 3.
|
1
|
+
This works with Rails 3.2 and ActiveScaffold >= 3.4.4
|
2
|
+
Version 3.2.x worked with Rails 3.2 and ActiveScaffold >= 3.3.0
|
2
3
|
|
3
4
|
Usage:
|
4
5
|
active_scaffold :model do |conf|
|
@@ -23,4 +24,4 @@ class User < ActiveRecord::Base
|
|
23
24
|
end
|
24
25
|
end
|
25
26
|
|
26
|
-
The model storing list configuration must have a config_list
|
27
|
+
The model storing list configuration must have a config_list text column storing the config list, and config_list_sort serialized text column.
|
@@ -7,11 +7,10 @@ options = {:id => element_form_id(:action => :config_list),
|
|
7
7
|
'data-loading' => true}
|
8
8
|
form_tag url_options, options %>
|
9
9
|
<h4><%= active_scaffold_config.config_list.label -%></h4>
|
10
|
-
<%= render :partial => 'show_config_list_form_body'
|
10
|
+
<%= render :partial => 'show_config_list_form_body' %>
|
11
11
|
<p class="form-footer">
|
12
12
|
<%= submit_tag as_(:config_list), :class => "submit" %>
|
13
13
|
<%= link_to as_(:reset), url_for(url_options.merge(:config_list => '')), :class => 'as_cancel', :remote => true, :data => {:refresh => true} %>
|
14
14
|
<%= loading_indicator_tag(:action => :config_list) %>
|
15
15
|
</p>
|
16
16
|
</form>
|
17
|
-
<%= javascript_tag("ActiveScaffold.focus_first_element_of_form('#{element_form_id(:action => :config_list)}');") %>
|
@@ -1,14 +1,33 @@
|
|
1
|
-
<ol
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
1
|
+
<ol class="form">
|
2
|
+
<li class="form-element">
|
3
|
+
<dl><dt><label>Columns</label></dt>
|
4
|
+
<dd><ul class="<%= active_scaffold_config.config_list.draggable ? 'draggable-lists' : 'sortable-container' %>" id="<%= element_form_id(:action => :config_list) %>-columns">
|
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.collect_visible.select{|column| config_list.exclude? column.name}
|
9
|
+
end
|
10
|
+
%>
|
11
|
+
<% list_columns.each do |c| %>
|
12
|
+
<li class="sortable">
|
13
|
+
<%= check_box_tag 'config_list[]', c.name.to_s, (config_list_params.nil? ? true : config_list_params.include?(c.name)), {:id => nil}%>
|
14
|
+
<label><%= c.label%></label>
|
15
|
+
</li>
|
16
|
+
<% end %>
|
17
|
+
</ul></dd></dl>
|
12
18
|
</li>
|
19
|
+
<li class="form-element">
|
20
|
+
<dl><dt><label>Default Sorting</label></dt>
|
21
|
+
<dd><ol>
|
22
|
+
<%
|
23
|
+
columns_options = list_columns.select{|c| c.sortable?}.map{|c| [c.label, c.name]}
|
24
|
+
order_options = ['asc', 'desc']
|
25
|
+
selected = config_list_sorting || []
|
26
|
+
3.times do |i|
|
27
|
+
%>
|
28
|
+
<li><%= select_tag "config_list_sorting[#{i}][]", options_for_select(columns_options, :selected => selected[i].try(:first)), :include_blank => as_(:_select_), :class => 'column' %>
|
29
|
+
<%= select_tag "config_list_sorting[#{i}][]", options_for_select(order_options, :selected => selected[i].try(:last)), :include_blank => as_(:_select_), :class => 'order' %></li>
|
13
30
|
<% end %>
|
31
|
+
</ol></dd></dl>
|
32
|
+
</li>
|
14
33
|
</ol>
|
@@ -2,8 +2,8 @@ module ActiveScaffold::Actions
|
|
2
2
|
module ConfigList
|
3
3
|
|
4
4
|
def self.included(base)
|
5
|
-
base.before_filter :store_config_list_params, :only => [:index]
|
6
|
-
base.helper_method :config_list_params
|
5
|
+
base.before_filter :store_config_list_params, :set_default_sorting, :only => [:index]
|
6
|
+
base.helper_method :config_list_params, :config_list_sorting
|
7
7
|
base.extend ClassMethods
|
8
8
|
end
|
9
9
|
|
@@ -29,6 +29,12 @@ module ActiveScaffold::Actions
|
|
29
29
|
end
|
30
30
|
|
31
31
|
protected
|
32
|
+
|
33
|
+
def set_default_sorting
|
34
|
+
unless active_scaffold_config.list.user['sort'] || (params['sort'] and params['sort_direction'])
|
35
|
+
active_scaffold_config.list.user.sorting.set *config_list_sorting if config_list_sorting
|
36
|
+
end
|
37
|
+
end
|
32
38
|
|
33
39
|
def store_config_list_params
|
34
40
|
if params[:config_list]
|
@@ -37,10 +43,18 @@ module ActiveScaffold::Actions
|
|
37
43
|
when String
|
38
44
|
delete_config_list_params
|
39
45
|
when Array
|
40
|
-
save_config_list_params(config_list)
|
46
|
+
save_config_list_params(config_list, config_list_sorting_params)
|
41
47
|
end
|
42
48
|
end
|
43
49
|
end
|
50
|
+
|
51
|
+
def config_list_sorting_params
|
52
|
+
sorting_params = params.delete(:config_list_sorting)
|
53
|
+
if sorting_params
|
54
|
+
sorting_params = sorting_params.values.select{ |c,d| c.present? && d.present? }
|
55
|
+
sorting_params if sorting_params.present?
|
56
|
+
end
|
57
|
+
end
|
44
58
|
|
45
59
|
def config_list_session_storage_method
|
46
60
|
respond_to?(:custom_config_list_session_storage) ? :custom_config_list_session_storage : :active_scaffold_session_storage
|
@@ -55,18 +69,27 @@ module ActiveScaffold::Actions
|
|
55
69
|
if active_scaffold_config.config_list.save_to_user && current_user = send(active_scaffold_config.class.security.current_user_method)
|
56
70
|
current_user.send(active_scaffold_config.config_list.save_to_user, active_scaffold_session_storage_key, controller_name).destroy
|
57
71
|
else
|
58
|
-
config_list_session_storage[
|
72
|
+
config_list_session_storage['config_list'] = nil
|
73
|
+
config_list_session_storage['config_list_sorting'] = nil
|
59
74
|
end
|
75
|
+
active_scaffold_config.list.user['sort'] = nil
|
76
|
+
logger.debug "list #{active_scaffold_config.list.sorting.object_id}"
|
60
77
|
@config_list_params = nil
|
78
|
+
@config_list_sorting = nil
|
61
79
|
end
|
62
80
|
|
63
|
-
def save_config_list_params(config_list)
|
81
|
+
def save_config_list_params(config_list, config_list_sorting)
|
64
82
|
if active_scaffold_config.config_list.save_to_user && current_user = send(active_scaffold_config.class.security.current_user_method)
|
65
|
-
current_user.send(active_scaffold_config.config_list.save_to_user, active_scaffold_session_storage_key, controller_name)
|
83
|
+
record = current_user.send(active_scaffold_config.config_list.save_to_user, active_scaffold_session_storage_key, controller_name)
|
84
|
+
record.config_list = config_list.join(',')
|
85
|
+
record.config_list_sorting = config_list_sorting if record.respond_to? :config_list_sorting
|
86
|
+
record.save
|
66
87
|
else
|
67
|
-
config_list_session_storage[
|
88
|
+
config_list_session_storage['config_list'] = config_list.map(&:to_sym)
|
89
|
+
config_list_session_storage['config_list_sorting'] = config_list_sorting
|
68
90
|
end
|
69
91
|
@config_list_params = config_list.map(&:to_sym)
|
92
|
+
@config_list_sorting = config_list_sorting
|
70
93
|
end
|
71
94
|
|
72
95
|
def objects_for_etag
|
@@ -99,11 +122,20 @@ module ActiveScaffold::Actions
|
|
99
122
|
params = config_list_record.config_list
|
100
123
|
params.split(',').map(&:to_sym) if params
|
101
124
|
else
|
102
|
-
config_list_session_storage[
|
125
|
+
config_list_session_storage['config_list']
|
103
126
|
end unless defined? @config_list_params
|
104
127
|
@config_list_params || active_scaffold_config.config_list.default_columns
|
105
128
|
end
|
106
129
|
|
130
|
+
def config_list_sorting
|
131
|
+
@config_list_sorting = if config_list_record
|
132
|
+
config_list_record.config_list_sorting if config_list_record.respond_to? :config_list_sorting
|
133
|
+
else
|
134
|
+
config_list_session_storage['config_list_sorting']
|
135
|
+
end unless defined? @config_list_sorting
|
136
|
+
@config_list_sorting
|
137
|
+
end
|
138
|
+
|
107
139
|
def list_columns
|
108
140
|
@list_columns ||= begin
|
109
141
|
columns = super
|
@@ -5,6 +5,7 @@ module ActiveScaffold::Config
|
|
5
5
|
super
|
6
6
|
@link = self.class.link.clone unless self.class.link.nil?
|
7
7
|
@save_to_user = self.class.save_to_user
|
8
|
+
@draggable = self.class.draggable
|
8
9
|
end
|
9
10
|
|
10
11
|
# global level configuration
|
@@ -20,11 +21,15 @@ module ActiveScaffold::Config
|
|
20
21
|
|
21
22
|
# configures where the plugin itself is located. there is no instance version of this.
|
22
23
|
cattr_accessor :plugin_directory
|
23
|
-
|
24
|
+
self.plugin_directory = File.expand_path(__FILE__).match(%{(^.*)/lib/active_scaffold/config/config_list.rb})[1]
|
24
25
|
|
25
26
|
# configures the method in user model to save list configuration for every controller
|
26
27
|
cattr_accessor :save_to_user
|
27
28
|
|
29
|
+
# enable draggable lists to select displayed columns (enabled by default)
|
30
|
+
cattr_accessor :draggable
|
31
|
+
self.draggable = true
|
32
|
+
|
28
33
|
# instance-level configuration
|
29
34
|
# ----------------------------
|
30
35
|
# the label= method already exists in the Form base class
|
@@ -39,6 +44,9 @@ module ActiveScaffold::Config
|
|
39
44
|
# configures the method in user model to save list configuration for every controller
|
40
45
|
attr_accessor :save_to_user
|
41
46
|
|
47
|
+
# enable draggable lists to select displayed columns
|
48
|
+
attr_accessor :draggable
|
49
|
+
|
42
50
|
# provides access to the list of columns specifically meant for the config_list to use
|
43
51
|
def columns
|
44
52
|
unless @columns # lazy evaluation
|
@@ -4,10 +4,6 @@ module ActiveScaffoldConfigList
|
|
4
4
|
ActiveSupport.on_load(:action_controller) do
|
5
5
|
require "active_scaffold_config_list/config/core.rb"
|
6
6
|
end
|
7
|
-
|
8
|
-
ActiveSupport.on_load(:action_view) do
|
9
|
-
include ActiveScaffold::Helpers::ConfigListHelpers
|
10
|
-
end
|
11
7
|
end
|
12
8
|
end
|
13
9
|
end
|
metadata
CHANGED
@@ -1,7 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_scaffold_config_list
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
hash: 11
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 3
|
8
|
+
- 3
|
9
|
+
- 0
|
10
|
+
version: 3.3.0
|
5
11
|
platform: ruby
|
6
12
|
authors:
|
7
13
|
- Sergio Cambra
|
@@ -9,28 +15,40 @@ autorequire:
|
|
9
15
|
bindir: bin
|
10
16
|
cert_chain: []
|
11
17
|
|
12
|
-
date: 2014-
|
18
|
+
date: 2014-09-02 00:00:00 Z
|
13
19
|
dependencies:
|
14
20
|
- !ruby/object:Gem::Dependency
|
21
|
+
type: :runtime
|
15
22
|
requirement: &id001 !ruby/object:Gem::Requirement
|
23
|
+
none: false
|
16
24
|
requirements:
|
17
25
|
- - ">="
|
18
26
|
- !ruby/object:Gem::Version
|
19
|
-
|
27
|
+
hash: 31
|
28
|
+
segments:
|
29
|
+
- 3
|
30
|
+
- 4
|
31
|
+
- 4
|
32
|
+
version: 3.4.4
|
20
33
|
version_requirements: *id001
|
21
|
-
prerelease: false
|
22
|
-
type: :runtime
|
23
34
|
name: active_scaffold
|
35
|
+
prerelease: false
|
24
36
|
- !ruby/object:Gem::Dependency
|
37
|
+
type: :runtime
|
25
38
|
requirement: &id002 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
26
40
|
requirements:
|
27
41
|
- - ">="
|
28
42
|
- !ruby/object:Gem::Version
|
43
|
+
hash: 11
|
44
|
+
segments:
|
45
|
+
- 3
|
46
|
+
- 2
|
47
|
+
- 2
|
29
48
|
version: 3.2.2
|
30
49
|
version_requirements: *id002
|
31
|
-
prerelease: false
|
32
|
-
type: :runtime
|
33
50
|
name: active_scaffold_sortable
|
51
|
+
prerelease: false
|
34
52
|
description: User may reorder and hide/show list columns
|
35
53
|
email: activescaffold@googlegroups.com
|
36
54
|
executables: []
|
@@ -45,7 +63,6 @@ files:
|
|
45
63
|
- app/views/active_scaffold_overrides/show_config_list_form.html.erb
|
46
64
|
- lib/active_scaffold/actions/config_list.rb
|
47
65
|
- lib/active_scaffold/config/config_list.rb
|
48
|
-
- lib/active_scaffold/helpers/config_list_helpers.rb
|
49
66
|
- lib/active_scaffold_config_list.rb
|
50
67
|
- lib/active_scaffold_config_list/config/core.rb
|
51
68
|
- lib/active_scaffold_config_list/engine.rb
|
@@ -55,28 +72,35 @@ files:
|
|
55
72
|
homepage: http://activescaffold.com
|
56
73
|
licenses:
|
57
74
|
- MIT
|
58
|
-
metadata: {}
|
59
|
-
|
60
75
|
post_install_message:
|
61
76
|
rdoc_options: []
|
62
77
|
|
63
78
|
require_paths:
|
64
79
|
- lib
|
65
80
|
required_ruby_version: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
66
82
|
requirements:
|
67
|
-
-
|
68
|
-
- ">="
|
83
|
+
- - ">="
|
69
84
|
- !ruby/object:Gem::Version
|
85
|
+
hash: 3
|
86
|
+
segments:
|
87
|
+
- 0
|
70
88
|
version: "0"
|
71
89
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
90
|
+
none: false
|
72
91
|
requirements:
|
73
|
-
-
|
92
|
+
- - ">="
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
hash: 3
|
95
|
+
segments:
|
96
|
+
- 0
|
97
|
+
version: "0"
|
74
98
|
requirements: []
|
75
99
|
|
76
100
|
rubyforge_project:
|
77
|
-
rubygems_version:
|
101
|
+
rubygems_version: 1.8.29
|
78
102
|
signing_key:
|
79
|
-
specification_version:
|
103
|
+
specification_version: 3
|
80
104
|
summary: User specific column configuration for ActiveScaffold
|
81
105
|
test_files: []
|
82
106
|
|
checksums.yaml
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
---
|
2
|
-
SHA1:
|
3
|
-
metadata.gz: c7f59d06507175af8cd27a5d855a9b2929d1e8b4
|
4
|
-
data.tar.gz: 2fd63bc9bba6663590cfa9d4213b0f11cd6a076f
|
5
|
-
SHA512:
|
6
|
-
metadata.gz: a58336285acf4982720e927732a971342197f3e4c6898ce59fc699ad7620484c11ddc4fcddbb84c579f4c50cb7b33f51b885831c14bb80068a7626e88f5a6863
|
7
|
-
data.tar.gz: 4600ee0d71fc192a0935a85806fdda8518df4f81c2167fc17935cce45694c3cb8838393ed00cb0027144b5613f38ba4ff7738eb1675d8e52e651f2d0806ff17a
|