active_scaffold_config_list 3.2.1 → 3.2.2

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 CHANGED
@@ -1,5 +1,4 @@
1
- This works with Rails 3 and rails 3 fork of ActiveScaffold:
2
- http://github.com/vhochstein/active_scaffold
1
+ This works with Rails 3.2 and ActiveScaffold >= 3.3
3
2
 
4
3
  Usage:
5
4
  active_scaffold :model do |conf|
@@ -11,18 +10,16 @@ Overview
11
10
 
12
11
  A plugin for Active Scaffold that provides the ability to choose the column to show in the scaffold list at run-time
13
12
 
14
- The configuration data will be saved on the session.
15
-
16
-
17
- Rails 3.0 Gem:
18
- gem 'active_scaffold_config_list_vho'
19
- or
20
- gem 'active_scaffold_config_list_vho', :git => 'git://github.com/vhochstein/active_scaffold_config_list.git', :branch => 'rails-3.0'
21
-
22
- Rails 3.1 Gem:
23
- gem 'active_scaffold_config_list_vho'
24
- or
25
- gem 'active_scaffold_config_list_vho', :git => 'git://github.com/vhochstein/active_scaffold_config_list.git'
13
+ The configuration data will be saved on the session. It can be saved on the DB defining a method to return a record
14
+ for current controller, or empty record if user has no list configuration, and setting config_list to use that method.
26
15
 
16
+ conf.config_list.save_to_user = :config_list_for
27
17
 
18
+ class User < ActiveRecord::Base
19
+ has_many :list_configurations
20
+ def config_list_for(controller_id)
21
+ list_configurations.where(:controller_id => controller_id).first_or_initialize
22
+ end
23
+ end
28
24
 
25
+ The model storing list configuration must have a config_list attribute storing the config list.
@@ -2,7 +2,7 @@ module ActiveScaffold::Actions
2
2
  module ConfigList
3
3
 
4
4
  def self.included(base)
5
- base.before_filter :store_config_list_params_into_session, :only => [:index]
5
+ base.before_filter :store_config_list_params, :only => [:index]
6
6
  base.helper_method :config_list_params
7
7
  end
8
8
 
@@ -19,20 +19,44 @@ module ActiveScaffold::Actions
19
19
 
20
20
  protected
21
21
 
22
- def store_config_list_params_into_session
22
+ def store_config_list_params
23
23
  if params[:config_list]
24
- active_scaffold_session_storage[:config_list] = params.delete :config_list
25
- case active_scaffold_session_storage[:config_list]
24
+ config_list = params.delete :config_list
25
+ case config_list
26
26
  when String
27
- active_scaffold_session_storage[:config_list] = nil
27
+ delete_config_list_params
28
28
  when Array
29
- active_scaffold_session_storage[:config_list].collect!{|col_name| col_name.to_sym}
29
+ save_config_list_params(config_list)
30
30
  end
31
31
  end
32
32
  end
33
33
 
34
+ def delete_config_list_params
35
+ if active_scaffold_config.config_list.save_to_user && current_user
36
+ current_user.send(active_scaffold_config.config_list.save_to_user, active_scaffold_session_storage_key).destroy
37
+ else
38
+ active_scaffold_session_storage[:config_list] = nil
39
+ end
40
+ @config_list_params = nil
41
+ end
42
+
43
+ def save_config_list_params(config_list)
44
+ if active_scaffold_config.config_list.save_to_user && current_user
45
+ current_user.send(active_scaffold_config.config_list.save_to_user, active_scaffold_session_storage_key).update_attribute :config_list, config_list.join(',')
46
+ else
47
+ active_scaffold_session_storage[:config_list] = config_list.map(&:to_sym)
48
+ end
49
+ @config_list_params = config_list.map(&:to_sym)
50
+ end
51
+
34
52
  def config_list_params
35
- active_scaffold_session_storage[:config_list] || active_scaffold_config.config_list.default_columns
53
+ @config_list_params = if active_scaffold_config.config_list.save_to_user && current_user
54
+ params = current_user.send(active_scaffold_config.config_list.save_to_user, active_scaffold_session_storage_key).config_list
55
+ params.split(',').map(&:to_sym) if params
56
+ else
57
+ active_scaffold_session_storage[:config_list]
58
+ end unless defined? @config_list_params
59
+ @config_list_params || active_scaffold_config.config_list.default_columns
36
60
  end
37
61
 
38
62
  def list_columns
@@ -4,6 +4,7 @@ module ActiveScaffold::Config
4
4
  def initialize(*args)
5
5
  super
6
6
  @link = self.class.link.clone unless self.class.link.nil?
7
+ @save_to_user = self.class.save_to_user
7
8
  end
8
9
 
9
10
  # global level configuration
@@ -21,6 +22,9 @@ module ActiveScaffold::Config
21
22
  cattr_accessor :plugin_directory
22
23
  @@plugin_directory = File.expand_path(__FILE__).match(%{(^.*)/lib/active_scaffold/config/config_list.rb})[1]
23
24
 
25
+ # configures the method in user model to save list configuration for every controller
26
+ cattr_accessor :save_to_user
27
+
24
28
  # instance-level configuration
25
29
  # ----------------------------
26
30
  # the label= method already exists in the Form base class
@@ -32,6 +36,9 @@ module ActiveScaffold::Config
32
36
  # e.g. conf.config_list.default_columns = [:name, founded_on]
33
37
  attr_accessor :default_columns
34
38
 
39
+ # configures the method in user model to save list configuration for every controller
40
+ attr_accessor :save_to_user
41
+
35
42
  # provides access to the list of columns specifically meant for the config_list to use
36
43
  def columns
37
44
  unless @columns # lazy evaluation
@@ -2,7 +2,7 @@ module ActiveScaffoldConfigList
2
2
  module Version
3
3
  MAJOR = 3
4
4
  MINOR = 2
5
- PATCH = 1
5
+ PATCH = 2
6
6
 
7
7
  STRING = [MAJOR, MINOR, PATCH].compact.join('.')
8
8
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_scaffold_config_list
3
3
  version: !ruby/object:Gem::Version
4
- hash: 13
4
+ hash: 11
5
5
  prerelease:
6
6
  segments:
7
7
  - 3
8
8
  - 2
9
- - 1
10
- version: 3.2.1
9
+ - 2
10
+ version: 3.2.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Sergio Cambra
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2013-03-08 00:00:00 Z
18
+ date: 2013-03-13 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  type: :runtime
@@ -24,7 +24,7 @@ dependencies:
24
24
  requirements:
25
25
  - - ">="
26
26
  - !ruby/object:Gem::Version
27
- hash: -111562550
27
+ hash: -614877838
28
28
  segments:
29
29
  - 3
30
30
  - 3