active_scaffold_config_list 3.4.4 → 3.5.1

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: bcb3bcfe5d0f4528b3257efe74967ee773144de69ca7faf95834a224d9e6f041
4
- data.tar.gz: 71c8161040a521d0de97992b005902f6caed16a186f5333ac5b6bcc26954fa80
3
+ metadata.gz: be3b1357610333757d013332316debd39b636bb7f690a3cf57ed27088faf9abe
4
+ data.tar.gz: 8940de8dc18e5575c74ed3604ddd22dfa6b06abf9a04503d1ffb2335858eb36c
5
5
  SHA512:
6
- metadata.gz: f608444616c04833eec99b6aeef5c5eaf7be64bf46960db307df1ea53f2db4020190e1294c239a3e88cd93eb82deddc16d862cd3938f15d04b363b33668bb2ec
7
- data.tar.gz: 2d5b7bc099dedd0e645aea29c76e93f72e7f81a0f24c9802cf3f071bb4e740bca20da63e31f5c0310f35c63549fe75a03d47f7a770deea732b855a86e97d7695
6
+ metadata.gz: 8171e1910707eca649a41a9df49b7c4333be31a65fde1d9ddfc083c19f92dabc76fd5fef0f5cd3b8f245b5a252033484a3b559a2ccd78a324247042de32ae776
7
+ data.tar.gz: 6582db9e3c46b42c21330c4b67d0d726e6d55395db2e091849a59de9d09ff73b2b4ae261a2a6592819ffd7e9e7f308ca84660e57b35acbbe9b7daca05b40d73f
data/README.md ADDED
@@ -0,0 +1,84 @@
1
+ This works with Rails >= 4.0 and ActiveScaffold >= 3.4.4
2
+ Version 3.3.x worked with Rails 3.2 and ActiveScaffold >= 3.4.4
3
+ Version 3.2.x worked with Rails 3.2 and ActiveScaffold >= 3.3.0
4
+
5
+ Usage:
6
+
7
+ ```rb
8
+ active_scaffold :model do |conf|
9
+ conf.actions.add :config_list
10
+ end
11
+ ````
12
+
13
+
14
+ Overview
15
+ ========
16
+
17
+ A plugin for Active Scaffold that provides the ability to choose the column to show in the scaffold list at run-time.
18
+
19
+ You have the option of defining a default set of columns for the controller. For example:
20
+ ```rb
21
+ config.config_list.default_columns = [:name, :project, :amount]
22
+ ```
23
+ If this is not defined then active_scaffold_config.list.columns is used.
24
+
25
+ This is useful when you want the option to look at a potentially large number of columns but be able to
26
+ easily reset back to something that fits on the screen without horizontal scrolling.
27
+
28
+ The available columns in the configure action are the columns defined in `list.columns`. For that reason, if
29
+ `config_list.default_columns` is not defined, then it will default to `list.columns`, and the users only will be able
30
+ to remove some columns, they won't be able to add other columns.
31
+
32
+ The configuration data will be saved on the session. It can be saved on the DB defining a method on the user model
33
+ (the one returned by current_user method) to return a record for current controller, or empty record if user has no
34
+ list configuration, and setting config_list to use that method.
35
+
36
+ ```rb
37
+ conf.config_list.save_to_user = :config_list_for
38
+ ```
39
+
40
+ The model storing list configuration must have a config_list text column storing the columns list, and config_list_sort
41
+ serialized text column. For example:
42
+
43
+ ```rb
44
+ # == Schema Information
45
+ #
46
+ # Table name: list_configurations
47
+ #
48
+ # id :bigint not null, primary key
49
+ # config_list :text
50
+ # config_list_sorting :text
51
+ # created_at :datetime not null
52
+ # updated_at :datetime not null
53
+ # controller_id :string(255)
54
+ # user_id :bigint
55
+ #
56
+ # Indexes
57
+ #
58
+ # index_list_configurations_on_user_id (user_id)
59
+ #
60
+
61
+ class ListConfiguration < ApplicationRecord
62
+ belongs_to :user
63
+ serialize :config_list_sorting, JSON
64
+ end
65
+ ```
66
+
67
+ Then in the User model, define the association, and the method returning the config list for the requested controller.
68
+ The method has 2 arguments, `controller_id` and `controller_name`, so only need to save one of them, depending if user
69
+ configuration must be shared on different conditions for embedded controllers, and each parent for nested controllers,
70
+ or save unique configurations. The `controller_id` argument will be different in embedded controllers, nested controllers
71
+ and regular controllers, as it will use `active_scaffold_session_storage_key`, and the controller_name will be the same
72
+ always.
73
+
74
+ ```rb
75
+ class User < ActiveRecord::Base
76
+ has_many :list_configurations
77
+ def config_list_for(controller_id, controller_name)
78
+ # Use controller_id to allow having different columns on different nested or embedded conditions
79
+ list_configurations.where(controller_id: controller_id).first_or_initialize
80
+ # Or use controller_name for one configuration for the controller, even embedded or nested
81
+ list_configurations.where(controller_id: controller_name).first_or_initialize
82
+ end
83
+ end
84
+ ```
@@ -4,17 +4,6 @@ module ActiveScaffold::Actions
4
4
  def self.included(base)
5
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
- base.extend ClassMethods
8
- end
9
-
10
- module ClassMethods
11
- def config_list_session_storage_method
12
- @config_list_session_storage_method
13
- end
14
-
15
- def config_list_session_storage_method=(value)
16
- @config_list_session_storage_method = value
17
- end
18
7
  end
19
8
 
20
9
  def show_config_list
@@ -57,12 +46,16 @@ module ActiveScaffold::Actions
57
46
  end
58
47
 
59
48
  def config_list_session_storage_method
60
- respond_to?(:custom_config_list_session_storage) ? :custom_config_list_session_storage : :active_scaffold_session_storage
49
+ @config_list_session_storage_method ||=
50
+ if respond_to?(:custom_config_list_session_storage)
51
+ :custom_config_list_session_storage
52
+ else
53
+ :active_scaffold_session_storage
54
+ end
61
55
  end
62
56
 
63
57
  def config_list_session_storage
64
- self.class.config_list_session_storage_method = self.config_list_session_storage_method unless self.class.config_list_session_storage_method
65
- send(self.class.config_list_session_storage_method)
58
+ send(config_list_session_storage_method)
66
59
  end
67
60
 
68
61
  def active_scaffold_current_user
@@ -77,7 +70,6 @@ module ActiveScaffold::Actions
77
70
  config_list_session_storage['config_list_sorting'] = nil
78
71
  end
79
72
  active_scaffold_config.list.user['sort'] = nil
80
- logger.debug "list #{active_scaffold_config.list.sorting.object_id}"
81
73
  @config_list_params = nil
82
74
  @config_list_sorting = nil
83
75
  end
@@ -99,7 +91,7 @@ module ActiveScaffold::Actions
99
91
  def objects_for_etag
100
92
  # only override when list_columns is called, so
101
93
  if @list_columns && config_list_record
102
- @last_modified = [@last_modified, config_list_record.updated_at].compact.maximum if config_list_record.respond_to? :updated_at
94
+ @last_modified = [@last_modified, config_list_record.updated_at].compact.max if config_list_record.respond_to? :updated_at
103
95
  objects = super
104
96
  if objects.is_a? Hash
105
97
  objects.merge(:etag => [objects[:etag], config_list_record])
@@ -1,8 +1,8 @@
1
1
  module ActiveScaffoldConfigList
2
2
  class Engine < ::Rails::Engine
3
- initializer("initialize_active_scaffold_config_list", :after => "initialize_active_scaffold") do
4
- ActiveSupport.on_load(:action_controller) do
5
- require "active_scaffold_config_list/config/core.rb"
3
+ initializer 'active_scaffold_config_list.routes' do
4
+ ActiveSupport.on_load :active_scaffold_routing do
5
+ self::ACTIVE_SCAFFOLD_CORE_ROUTING[:collection][:show_config_list] = :get
6
6
  end
7
7
  end
8
8
  end
@@ -1,8 +1,8 @@
1
1
  module ActiveScaffoldConfigList
2
2
  module Version
3
3
  MAJOR = 3
4
- MINOR = 4
5
- PATCH = 4
4
+ MINOR = 5
5
+ PATCH = 1
6
6
 
7
7
  STRING = [MAJOR, MINOR, PATCH].compact.join('.')
8
8
  end
@@ -1,9 +1,6 @@
1
1
  require 'active_scaffold_config_list/engine'
2
2
  require 'active_scaffold_config_list/version'
3
3
 
4
- module ActiveScaffoldConfigList
5
- end
6
-
7
4
  module ActiveScaffold
8
5
  module Actions
9
6
  ActiveScaffold.autoload_subdir('actions', self, File.dirname(__FILE__))
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.4
4
+ version: 3.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sergio Cambra
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-04-30 00:00:00.000000000 Z
11
+ date: 2024-11-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: active_scaffold
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 3.6.0.pre
19
+ version: 3.7.1
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 3.6.0.pre
26
+ version: 3.7.1
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: active_scaffold_sortable
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -43,10 +43,10 @@ email: activescaffold@googlegroups.com
43
43
  executables: []
44
44
  extensions: []
45
45
  extra_rdoc_files:
46
- - README
46
+ - README.md
47
47
  files:
48
48
  - LICENSE.txt
49
- - README
49
+ - README.md
50
50
  - app/views/active_scaffold_overrides/_show_config_list_form.html.erb
51
51
  - app/views/active_scaffold_overrides/_show_config_list_form_body.html.erb
52
52
  - app/views/active_scaffold_overrides/show_config_list_form.html.erb
@@ -60,14 +60,13 @@ files:
60
60
  - lib/active_scaffold/actions/config_list.rb
61
61
  - lib/active_scaffold/config/config_list.rb
62
62
  - lib/active_scaffold_config_list.rb
63
- - lib/active_scaffold_config_list/config/core.rb
64
63
  - lib/active_scaffold_config_list/engine.rb
65
64
  - lib/active_scaffold_config_list/version.rb
66
65
  homepage: http://activescaffold.com
67
66
  licenses:
68
67
  - MIT
69
68
  metadata: {}
70
- post_install_message:
69
+ post_install_message:
71
70
  rdoc_options: []
72
71
  require_paths:
73
72
  - lib
@@ -82,9 +81,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
82
81
  - !ruby/object:Gem::Version
83
82
  version: '0'
84
83
  requirements: []
85
- rubyforge_project:
86
- rubygems_version: 2.7.9
87
- signing_key:
84
+ rubygems_version: 3.2.3
85
+ signing_key:
88
86
  specification_version: 4
89
87
  summary: User specific column configuration for ActiveScaffold
90
88
  test_files: []
data/README DELETED
@@ -1,28 +0,0 @@
1
- This works with Rails >= 4.0 and ActiveScaffold >= 3.4.4
2
- Version 3.3.x worked with Rails 3.2 and ActiveScaffold >= 3.4.4
3
- Version 3.2.x worked with Rails 3.2 and ActiveScaffold >= 3.3.0
4
-
5
- Usage:
6
- active_scaffold :model do |conf|
7
- conf.actions.add :config_list
8
- end
9
-
10
-
11
- Overview
12
-
13
- A plugin for Active Scaffold that provides the ability to choose the column to show in the scaffold list at run-time
14
-
15
- The configuration data will be saved on the session. It can be saved on the DB defining a method to return a record
16
- for current controller, or empty record if user has no list configuration, and setting config_list to use that method.
17
-
18
- conf.config_list.save_to_user = :config_list_for
19
-
20
- class User < ActiveRecord::Base
21
- has_many :list_configurations
22
- def config_list_for(controller_id, controller_name)
23
- list_configurations.where(:controller_id => controller_id).first_or_initialize # different columns on different nested or embedded conditions
24
- list_configurations.where(:controller_id => controller_name).first_or_initialize # one configuration for the controller, even embedded or nested
25
- end
26
- end
27
-
28
- The model storing list configuration must have a config_list text column storing the config list, and config_list_sort serialized text column.
@@ -1,4 +0,0 @@
1
- # Need to open the AS module carefully due to Rails 2.3 lazy loading
2
- ActiveScaffold::Config::Core.class_eval do
3
- ActiveScaffold::Routing::ACTIVE_SCAFFOLD_CORE_ROUTING[:collection][:show_config_list] = :get
4
- end