active_scaffold 3.0.12 → 3.0.21

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.
Files changed (142) hide show
  1. data/README +21 -11
  2. data/frontends/default/images/close_touch.png +0 -0
  3. data/frontends/default/javascripts/jquery/active_scaffold.js +187 -99
  4. data/frontends/default/javascripts/prototype/active_scaffold.js +105 -33
  5. data/frontends/default/javascripts/prototype/dhtml_history.js +80 -77
  6. data/frontends/default/stylesheets/stylesheet.css +121 -2
  7. data/frontends/default/views/_action_group.html.erb +6 -2
  8. data/frontends/default/views/_base_form.html.erb +11 -5
  9. data/frontends/default/views/_base_form.html.erb~ +42 -0
  10. data/frontends/default/views/_field_search.html.erb +1 -1
  11. data/frontends/default/views/_form.html.erb +9 -7
  12. data/frontends/default/views/_form_association.html.erb +8 -3
  13. data/frontends/default/views/_form_association_footer.html.erb +10 -3
  14. data/frontends/default/views/_form_attribute.html.erb +8 -3
  15. data/frontends/default/views/_horizontal_subform.html.erb +12 -2
  16. data/frontends/default/views/_horizontal_subform_header.html.erb +1 -1
  17. data/frontends/default/views/_horizontal_subform_record.html.erb +5 -4
  18. data/frontends/default/views/_list_messages.html.erb +1 -1
  19. data/frontends/default/views/_list_with_header.html.erb +1 -1
  20. data/frontends/default/views/_render_field.js.rjs +4 -6
  21. data/frontends/default/views/_vertical_subform.html.erb +1 -1
  22. data/frontends/default/views/_vertical_subform_record.html.erb +2 -2
  23. data/frontends/default/views/on_action_update.js.rjs +3 -1
  24. data/frontends/default/views/on_mark_all.js.rjs +12 -0
  25. data/frontends/default/views/on_update.js.rjs +1 -1
  26. data/frontends/default/views/render_field.js.rjs +1 -0
  27. data/frontends/default/views/update_column.js.rjs +1 -1
  28. data/lib/active_scaffold.rb +60 -21
  29. data/lib/active_scaffold/actions/common_search.rb +2 -2
  30. data/lib/active_scaffold/actions/core.rb +30 -9
  31. data/lib/active_scaffold/actions/create.rb +14 -10
  32. data/lib/active_scaffold/actions/field_search.rb +6 -6
  33. data/lib/active_scaffold/actions/list.rb +22 -12
  34. data/lib/active_scaffold/actions/mark.rb +34 -9
  35. data/lib/active_scaffold/actions/nested.rb +12 -16
  36. data/lib/active_scaffold/actions/show.rb +2 -2
  37. data/lib/active_scaffold/actions/subform.rb +15 -8
  38. data/lib/active_scaffold/actions/update.rb +14 -4
  39. data/lib/active_scaffold/attribute_params.rb +15 -10
  40. data/lib/active_scaffold/bridges/bridge.rb +21 -12
  41. data/lib/active_scaffold/bridges/calendar_date_select/bridge.rb +3 -3
  42. data/lib/active_scaffold/bridges/cancan/bridge.rb +12 -0
  43. data/lib/active_scaffold/bridges/cancan/lib/cancan_bridge.rb +107 -0
  44. data/lib/active_scaffold/bridges/carrierwave/bridge.rb +1 -1
  45. data/lib/active_scaffold/bridges/carrierwave/lib/carrierwave_bridge.rb +3 -8
  46. data/lib/active_scaffold/bridges/carrierwave/lib/carrierwave_bridge_helpers.rb +1 -15
  47. data/lib/active_scaffold/bridges/carrierwave/lib/form_ui.rb +23 -13
  48. data/lib/active_scaffold/bridges/carrierwave/lib/list_ui.rb +1 -1
  49. data/lib/active_scaffold/bridges/country_helper/bridge.rb +9 -0
  50. data/lib/active_scaffold/bridges/country_helper/lib/country_helper_bridge.rb +358 -0
  51. data/lib/active_scaffold/bridges/date_picker/bridge.rb +5 -3
  52. data/lib/active_scaffold/bridges/date_picker/lib/datepicker_bridge.rb +9 -0
  53. data/lib/active_scaffold/bridges/dragonfly/bridge.rb +9 -0
  54. data/lib/active_scaffold/bridges/dragonfly/bridge.rb~ +12 -0
  55. data/lib/active_scaffold/bridges/dragonfly/lib/dragonfly_bridge.rb +36 -0
  56. data/lib/active_scaffold/bridges/dragonfly/lib/dragonfly_bridge.rb~ +36 -0
  57. data/lib/active_scaffold/bridges/dragonfly/lib/dragonfly_bridge_helpers.rb +12 -0
  58. data/lib/active_scaffold/bridges/dragonfly/lib/dragonfly_bridge_helpers.rb~ +12 -0
  59. data/lib/active_scaffold/bridges/dragonfly/lib/form_ui.rb +27 -0
  60. data/lib/active_scaffold/bridges/dragonfly/lib/form_ui.rb~ +27 -0
  61. data/lib/active_scaffold/bridges/dragonfly/lib/list_ui.rb +16 -0
  62. data/lib/active_scaffold/bridges/dragonfly/lib/list_ui.rb~ +16 -0
  63. data/lib/active_scaffold/bridges/paperclip/bridge.rb +1 -1
  64. data/lib/active_scaffold/bridges/record_select/bridge.rb +5 -0
  65. data/lib/active_scaffold/bridges/record_select/lib/record_select_bridge.rb +87 -0
  66. data/lib/active_scaffold/bridges/record_select/lib/record_select_bridge.rb~ +84 -0
  67. data/lib/active_scaffold/bridges/shared/date_bridge.rb +56 -34
  68. data/lib/active_scaffold/bridges/tiny_mce/lib/tiny_mce_bridge.rb +19 -3
  69. data/lib/active_scaffold/config/base.rb +4 -4
  70. data/lib/active_scaffold/config/core.rb +4 -0
  71. data/lib/active_scaffold/config/create.rb +1 -1
  72. data/lib/active_scaffold/config/field_search.rb +7 -7
  73. data/lib/active_scaffold/config/form.rb +8 -2
  74. data/lib/active_scaffold/config/list.rb +22 -8
  75. data/lib/active_scaffold/config/mark.rb +18 -5
  76. data/lib/active_scaffold/config/nested.rb +3 -3
  77. data/lib/active_scaffold/config/search.rb +1 -1
  78. data/lib/active_scaffold/config/show.rb +1 -1
  79. data/lib/active_scaffold/data_structures/action_columns.rb +10 -6
  80. data/lib/active_scaffold/data_structures/action_link.rb +14 -10
  81. data/lib/active_scaffold/data_structures/action_links.rb +2 -2
  82. data/lib/active_scaffold/data_structures/column.rb +25 -11
  83. data/lib/active_scaffold/data_structures/nested_info.rb +21 -21
  84. data/lib/active_scaffold/data_structures/set.rb +2 -3
  85. data/lib/active_scaffold/data_structures/sorting.rb +8 -8
  86. data/lib/{extensions → active_scaffold/extensions}/action_controller_rendering.rb +3 -1
  87. data/lib/{extensions → active_scaffold/extensions}/action_view_rendering.rb +31 -33
  88. data/lib/{extensions → active_scaffold/extensions}/action_view_resolver.rb +0 -0
  89. data/lib/{extensions → active_scaffold/extensions}/active_association_reflection.rb +0 -0
  90. data/lib/active_scaffold/extensions/active_record_offset.rb +12 -0
  91. data/lib/{extensions → active_scaffold/extensions}/array.rb +0 -0
  92. data/lib/{extensions → active_scaffold/extensions}/localize.rb +1 -1
  93. data/lib/{extensions → active_scaffold/extensions}/name_option_for_datetime.rb +1 -1
  94. data/lib/{extensions → active_scaffold/extensions}/nil_id_in_url_params.rb +0 -0
  95. data/lib/{extensions → active_scaffold/extensions}/paginator_extensions.rb +2 -2
  96. data/lib/{extensions → active_scaffold/extensions}/reverse_associations.rb +1 -1
  97. data/lib/{extensions → active_scaffold/extensions}/routing_mapper.rb +2 -2
  98. data/lib/{extensions → active_scaffold/extensions}/to_label.rb +0 -0
  99. data/lib/{extensions → active_scaffold/extensions}/unsaved_associated.rb +0 -0
  100. data/lib/{extensions → active_scaffold/extensions}/unsaved_record.rb +0 -0
  101. data/lib/active_scaffold/extensions/usa_state.rb +46 -0
  102. data/lib/active_scaffold/finder.rb +30 -19
  103. data/lib/active_scaffold/helpers/controller_helpers.rb +3 -5
  104. data/lib/active_scaffold/helpers/form_column_helpers.rb +19 -45
  105. data/lib/active_scaffold/helpers/human_condition_helpers.rb +1 -1
  106. data/lib/active_scaffold/helpers/id_helpers.rb +2 -2
  107. data/lib/active_scaffold/helpers/list_column_helpers.rb +28 -17
  108. data/lib/active_scaffold/helpers/search_column_helpers.rb +51 -40
  109. data/lib/active_scaffold/helpers/search_column_helpers.rb~ +215 -0
  110. data/lib/active_scaffold/helpers/show_column_helpers.rb +8 -4
  111. data/lib/active_scaffold/helpers/view_helpers.rb +50 -27
  112. data/lib/active_scaffold/locale/de.yml +111 -0
  113. data/lib/active_scaffold/locale/en.yml +115 -0
  114. data/lib/active_scaffold/locale/es.yml +32 -32
  115. data/lib/active_scaffold/locale/fr.yml +118 -0
  116. data/lib/active_scaffold/marked_model.rb +6 -6
  117. data/lib/active_scaffold/version.rb +1 -1
  118. data/lib/active_scaffold_assets.rb +1 -3
  119. data/lib/active_scaffold_env.rb +1 -2
  120. data/lib/generators/active_scaffold/active_scaffold_generator.rb +5 -5
  121. data/lib/generators/active_scaffold_controller/active_scaffold_controller_generator.rb +3 -2
  122. data/lib/generators/active_scaffold_controller/templates/helper.rb +2 -0
  123. data/lib/generators/active_scaffold_setup/active_scaffold_setup_generator.rb +17 -19
  124. data/shoulda_macros/macros.rb +4 -4
  125. data/test/misc/finder_test.rb +2 -2
  126. data/test/mock_app/public/stylesheets/active_scaffold/default/stylesheet.css +4 -1
  127. metadata +144 -126
  128. data/.autotest +0 -27
  129. data/.document +0 -5
  130. data/Gemfile +0 -13
  131. data/Gemfile.lock +0 -20
  132. data/Rakefile +0 -53
  133. data/active_scaffold.gemspec +0 -385
  134. data/init.rb +0 -2
  135. data/lib/active_scaffold/helpers/country_helpers.rb +0 -358
  136. data/lib/active_scaffold/locale/de.rb +0 -120
  137. data/lib/active_scaffold/locale/en.rb +0 -119
  138. data/lib/active_scaffold/locale/fr.rb +0 -116
  139. data/lib/extensions/active_record_offset.rb +0 -12
  140. data/lib/extensions/usa_state.rb +0 -50
  141. data/test/mock_app/.gitignore +0 -2
  142. data/uninstall.rb +0 -13
@@ -2,7 +2,18 @@ module ActiveScaffold
2
2
  module TinyMceBridge
3
3
  module ViewHelpers
4
4
  def active_scaffold_includes(*args)
5
- tiny_mce_js = javascript_tag(%|
5
+ if ActiveScaffold.js_framework == :jquery
6
+ tiny_mce_js = javascript_tag(%|
7
+ var action_link_close = ActiveScaffold.ActionLink.Abstract.prototype.close;
8
+ ActiveScaffold.ActionLink.Abstract.prototype.close = function() {
9
+ $(this.adapter).find('textarea.mceEditor').each(function(index, elem) {
10
+ tinyMCE.execCommand('mceRemoveControl', false, $(elem).attr('id'));
11
+ });
12
+ action_link_close.apply(this);
13
+ };
14
+ |) if using_tiny_mce?
15
+ else
16
+ tiny_mce_js = javascript_tag(%|
6
17
  var action_link_close = ActiveScaffold.ActionLink.Abstract.prototype.close;
7
18
  ActiveScaffold.ActionLink.Abstract.prototype.close = function() {
8
19
  this.adapter.select('textarea.mceEditor').each(function(elem) {
@@ -10,7 +21,8 @@ ActiveScaffold.ActionLink.Abstract.prototype.close = function() {
10
21
  });
11
22
  action_link_close.apply(this);
12
23
  };
13
- |) if using_tiny_mce?
24
+ |) if using_tiny_mce?
25
+ end
14
26
  super(*args) + (include_tiny_mce_if_needed || '') + (tiny_mce_js || '')
15
27
  end
16
28
  end
@@ -25,7 +37,11 @@ ActiveScaffold.ActionLink.Abstract.prototype.close = function() {
25
37
  end
26
38
 
27
39
  def onsubmit
28
- submit_js = 'tinyMCE.triggerSave();this.select("textarea.mceEditor").each(function(elem) { tinyMCE.execCommand("mceRemoveControl", false, elem.id); });' if using_tiny_mce?
40
+ if ActiveScaffold.js_framework == :jquery
41
+ submit_js = 'tinyMCE.triggerSave();$(\'textarea.mceEditor\').each(function(index, elem) { tinyMCE.execCommand(\'mceRemoveControl\', false, $(elem).attr(\'id\')); });' if using_tiny_mce?
42
+ else
43
+ submit_js = 'tinyMCE.triggerSave();this.select(\'textarea.mceEditor\').each(function(elem) { tinyMCE.execCommand(\'mceRemoveControl\', false, elem.id); });' if using_tiny_mce?
44
+ end
29
45
  [super, submit_js].compact.join ';'
30
46
  end
31
47
  end
@@ -41,17 +41,17 @@ module ActiveScaffold::Config
41
41
  @conf = conf
42
42
  end
43
43
  end
44
-
44
+
45
45
  def formats
46
46
  @formats ||= []
47
47
  end
48
-
48
+
49
49
  def formats=(val)
50
50
  @formats=val
51
51
  end
52
-
52
+
53
53
  private
54
-
54
+
55
55
  def columns=(val)
56
56
  @columns = ActiveScaffold::DataStructures::ActionColumns.new(*val)
57
57
  @columns.action = self
@@ -211,6 +211,10 @@ module ActiveScaffold::Config
211
211
  Dir.entries(javascript_dir).reject { |e| !e.match(/\.js$/) or (!self.dhtml_history? and e.match('dhtml_history')) }
212
212
  end
213
213
 
214
+ def self.available_frontends
215
+ frontends_dir = File.join(Rails.root, "vendor", "plugins", ActiveScaffold::Config::Core.plugin_directory, "frontends")
216
+ Dir.entries(frontends_dir).reject { |e| e.match(/^\./) } # Get rid of files that start with .
217
+ end
214
218
  end
215
219
  end
216
220
 
@@ -38,7 +38,7 @@ module ActiveScaffold::Config
38
38
  model ||= @core.label(:count => 1)
39
39
  @label ? as_(@label) : as_(:create_model, :model => model)
40
40
  end
41
-
41
+
42
42
  # whether the form stays open after a create or not
43
43
  attr_accessor :persistent
44
44
 
@@ -50,26 +50,26 @@ module ActiveScaffold::Config
50
50
  # * false: LIKE ?
51
51
  # Default is :full
52
52
  attr_accessor :text_search
53
-
53
+
54
54
  # the ActionLink for this action
55
55
  attr_accessor :link
56
-
56
+
57
57
  # rarely searched columns may be placed in a hidden subgroup
58
58
  def optional_columns=(optionals)
59
59
  @optional_columns= Array(optionals)
60
60
  end
61
-
61
+
62
62
  def optional_columns
63
63
  @optional_columns ||= []
64
64
  end
65
-
65
+
66
66
  # default search params
67
- # default_params = {:title => {"from"=>"test", "to"=>"", "opt"=>"%?%"}}
67
+ # default_params = {:title => {"from"=>"test", "to"=>"", "opt"=>"%?%"}}
68
68
  attr_accessor :default_params
69
-
69
+
70
70
  # human conditions
71
71
  # instead of just filtered you may show the user a humanized search condition statment
72
72
  attr_accessor :human_conditions
73
-
73
+
74
74
  end
75
75
  end
@@ -6,6 +6,7 @@ module ActiveScaffold::Config
6
6
  # start with the ActionLink defined globally
7
7
  @link = self.class.link.clone unless self.class.link.nil?
8
8
  @action_group = self.class.action_group.clone if self.class.action_group
9
+ @show_unauthorized_columns = self.class.show_unauthorized_columns
9
10
 
10
11
  # no global setting here because multipart should only be set for specific forms
11
12
  @multipart = false
@@ -13,10 +14,15 @@ module ActiveScaffold::Config
13
14
 
14
15
  # global level configuration
15
16
  # --------------------------
17
+ # show value of unauthorized columns instead of skip them
18
+ class_inheritable_accessor :show_unauthorized_columns
16
19
 
17
20
  # instance-level configuration
18
21
  # ----------------------------
19
22
 
23
+ # show value of unauthorized columns instead of skip them
24
+ attr_accessor :show_unauthorized_columns
25
+
20
26
  # the ActionLink for this action
21
27
  attr_accessor :link
22
28
 
@@ -35,9 +41,9 @@ module ActiveScaffold::Config
35
41
  end
36
42
  @columns
37
43
  end
38
-
44
+
39
45
  public :columns=
40
-
46
+
41
47
  # whether the form should be multipart
42
48
  attr_writer :multipart
43
49
  def multipart?
@@ -9,13 +9,14 @@ module ActiveScaffold::Config
9
9
  # full configuration path is: defaults => global table => local table
10
10
  @per_page = self.class.per_page
11
11
  @page_links_window = self.class.page_links_window
12
-
12
+
13
13
  # originates here
14
14
  @sorting = ActiveScaffold::DataStructures::Sorting.new(@core.columns)
15
15
  @sorting.set_default_sorting(@core.model)
16
16
 
17
17
  # inherit from global scope
18
18
  @empty_field_text = self.class.empty_field_text
19
+ @association_join_text = self.class.association_join_text
19
20
  @pagination = self.class.pagination
20
21
  @show_search_reset = true
21
22
  end
@@ -34,6 +35,10 @@ module ActiveScaffold::Config
34
35
  cattr_accessor :empty_field_text
35
36
  @@empty_field_text = '-'
36
37
 
38
+ # what string to use to join records from plural associations
39
+ cattr_accessor :association_join_text
40
+ @@association_join_text = ', '
41
+
37
42
  # What kind of pagination to use:
38
43
  # * true: The usual pagination
39
44
  # * :infinite: Treat the source as having an infinite number of pages (i.e. don't count the records; useful for large tables where counting is slow and we don't really care anyway)
@@ -49,7 +54,7 @@ module ActiveScaffold::Config
49
54
  self.columns = @core.columns._inheritable unless @columns # lazy evaluation
50
55
  @columns
51
56
  end
52
-
57
+
53
58
  public :columns=
54
59
 
55
60
  # how many rows to show at once
@@ -67,6 +72,9 @@ module ActiveScaffold::Config
67
72
  # what string to use when a field is empty
68
73
  attr_accessor :empty_field_text
69
74
 
75
+ # what string to use to join records from plural associations
76
+ attr_accessor :association_join_text
77
+
70
78
  # show a link to reset the search next to filtered message
71
79
  attr_accessor :show_search_reset
72
80
 
@@ -79,7 +87,7 @@ module ActiveScaffold::Config
79
87
  def sorting
80
88
  @sorting ||= ActiveScaffold::DataStructures::Sorting.new(@core.columns)
81
89
  end
82
-
90
+
83
91
  # overwrite the includes used for the count sql query
84
92
  attr_accessor :count_includes
85
93
 
@@ -98,29 +106,35 @@ module ActiveScaffold::Config
98
106
  def filtered_message
99
107
  @filtered_message ? @filtered_message : :filtered
100
108
  end
101
-
109
+
102
110
  attr_writer :always_show_search
103
111
  def always_show_search
104
112
  @always_show_search && !search_partial.blank?
105
113
  end
106
-
114
+
107
115
  def search_partial
108
116
  return "search" if @core.actions.include?(:search)
109
117
  return "field_search" if @core.actions.include?(:field_search)
110
118
  end
111
-
119
+
112
120
  # always show create
113
121
  attr_writer :always_show_create
114
122
  def always_show_create
115
123
  @always_show_create && @core.actions.include?(:create)
116
124
  end
117
125
 
126
+ # if list view is nested hide nested_column
127
+ attr_writer :hide_nested_column
128
+ def hide_nested_column
129
+ @hide_nested_column.nil? ? true : @hide_nested_column
130
+ end
131
+
118
132
  # might be set to open nested_link automatically in view
119
133
  # conf.nested.add_link(:players)
120
134
  # conf.list.nested_auto_open = {:players => 2}
121
135
  # will open nested players view if there are 2 or less records in parent
122
136
  attr_accessor :nested_auto_open
123
-
137
+
124
138
  class UserSettings < UserSettings
125
139
  # This label has alread been localized.
126
140
  def label
@@ -165,7 +179,7 @@ module ActiveScaffold::Config
165
179
  return default_sorting
166
180
  end
167
181
  end
168
-
182
+
169
183
  def count_includes
170
184
  @conf.count_includes
171
185
  end
@@ -2,21 +2,34 @@ module ActiveScaffold::Config
2
2
  class Mark < Base
3
3
  self.crud_type = :read
4
4
 
5
+ # What kind of mark all mode to use:
6
+ # * :search: de-/mark all records using current search conditions
7
+ # * :page: de-/mark all records on current page
8
+ cattr_accessor :mark_all_mode
9
+ @@mark_all_mode = :search
10
+
11
+ attr_accessor :mark_all_mode
12
+
5
13
  def initialize(core_config)
6
14
  @core = core_config
7
- @core.model.send(:include, ActiveScaffold::MarkedModel) unless @core.model.ancestors.include?(ActiveScaffold::MarkedModel)
8
- add_mark_column
15
+ @mark_all_mode = self.class.mark_all_mode
16
+ if core_config.actions.include?(:update)
17
+ @core.model.send(:include, ActiveScaffold::MarkedModel) unless @core.model.ancestors.include?(ActiveScaffold::MarkedModel)
18
+ add_mark_column
19
+ else
20
+ raise "Mark action requires update action in controller for model: #{core_config.model.to_s}"
21
+ end
9
22
  end
10
-
23
+
11
24
  protected
12
-
25
+
13
26
  def add_mark_column
14
27
  @core.columns.add :marked
15
28
  @core.columns[:marked].label = 'M'
16
29
  @core.columns[:marked].form_ui = :checkbox
17
30
  @core.columns[:marked].inplace_edit = true
18
31
  @core.columns[:marked].sort = false
19
- @core.list.columns = [:marked] + @core.list.columns.names unless @core.list.columns.include? :marked
32
+ @core.list.columns = [:marked] + @core.list.columns.names_without_auth_check unless @core.list.columns.include? :marked
20
33
  end
21
34
  end
22
35
  end
@@ -21,14 +21,14 @@ module ActiveScaffold::Config
21
21
  def add_link(attribute, options = {})
22
22
  column = @core.columns[attribute.to_sym]
23
23
  unless column.nil? || column.association.nil?
24
- options.reverse_merge! :security_method => :nested_authorized?, :label => column.association.klass.model_name.human({:count => 2, :default => column.association.klass.name.pluralize})
24
+ options.reverse_merge! :security_method => :nested_authorized?, :label => column.association.klass.model_name.human({:count => 2, :default => column.association.klass.name.pluralize})
25
25
  action_link = @core.link_for_association(column, options)
26
26
  @core.action_links.add_to_group(action_link, action_group) unless action_link.nil?
27
27
  else
28
-
28
+
29
29
  end
30
30
  end
31
-
31
+
32
32
  def add_scoped_link(named_scope, options = {})
33
33
  action_link = @core.link_for_association_as_scope(named_scope.to_sym, options)
34
34
  @core.action_links.add_to_group(action_link, action_group) unless action_link.nil?
@@ -42,7 +42,7 @@ module ActiveScaffold::Config
42
42
  def columns
43
43
  # we want to delay initializing to the @core.columns set for as long as possible. Too soon and .search_sql will not be available to .searchable?
44
44
  unless @columns
45
- self.columns = @core.columns.collect{|c| c.name if c.searchable? and c.column and c.column.text?}.compact
45
+ self.columns = @core.columns.collect{|c| c.name if @core.columns._inheritable.include?(c.name) and c.searchable? and c.column and c.column.text?}.compact
46
46
  end
47
47
  @columns
48
48
  end
@@ -29,7 +29,7 @@ module ActiveScaffold::Config
29
29
  self.columns = @core.columns._inheritable unless @columns # lazy evaluation
30
30
  @columns
31
31
  end
32
-
32
+
33
33
  public :columns=
34
34
  end
35
35
  end
@@ -15,7 +15,7 @@ module ActiveScaffold::DataStructures
15
15
 
16
16
  # Whether this column set is collapsed by default in contexts where collapsing is supported
17
17
  attr_accessor :collapsed
18
-
18
+
19
19
  # nests a subgroup in the column set
20
20
  def add_subgroup(label, &proc)
21
21
  columns = ActiveScaffold::DataStructures::ActionColumns.new
@@ -38,6 +38,10 @@ module ActiveScaffold::DataStructures
38
38
  self.collect(&:name)
39
39
  end
40
40
 
41
+ def names_without_auth_check
42
+ Array(@set)
43
+ end
44
+
41
45
  protected
42
46
 
43
47
  def collect_columns
@@ -73,7 +77,7 @@ module ActiveScaffold::DataStructures
73
77
  end
74
78
  end
75
79
  end
76
-
80
+
77
81
  def collect_visible(options = {}, &proc)
78
82
  columns = []
79
83
  options[:for] ||= @columns.active_record_class
@@ -90,8 +94,8 @@ module ActiveScaffold::DataStructures
90
94
  end
91
95
  end
92
96
  columns
93
- end
94
-
97
+ end
98
+
95
99
  def skip_column?(column, options)
96
100
  result = false
97
101
  # skip if this matches a constrained column
@@ -119,12 +123,12 @@ module ActiveScaffold::DataStructures
119
123
  def constraint_columns
120
124
  @constraint_columns ||= []
121
125
  end
122
-
126
+
123
127
  attr_writer :unauthorized_columns
124
128
  def unauthorized_columns
125
129
  @unauthorized_columns ||= []
126
130
  end
127
-
131
+
128
132
  def length
129
133
  ((@set - self.constraint_columns) - self.unauthorized_columns).length
130
134
  end
@@ -17,6 +17,7 @@ module ActiveScaffold::DataStructures
17
17
  self.html_options = {}
18
18
  self.column = nil
19
19
  self.image = nil
20
+ self.dynamic_parameters = nil
20
21
 
21
22
  # apply quick properties
22
23
  options.each_pair do |k, v|
@@ -27,7 +28,7 @@ module ActiveScaffold::DataStructures
27
28
 
28
29
  # the action-path for this link. what page to request? this is required!
29
30
  attr_accessor :action
30
-
31
+
31
32
  # the controller for this action link. if nil, the current controller should be assumed.
32
33
  attr_writer :controller
33
34
 
@@ -43,6 +44,9 @@ module ActiveScaffold::DataStructures
43
44
  # a hash of request parameters
44
45
  attr_accessor :parameters
45
46
 
47
+ # a block for dynamic_parameters
48
+ attr_accessor :dynamic_parameters
49
+
46
50
  # the RESTful method
47
51
  attr_accessor :method
48
52
 
@@ -51,7 +55,7 @@ module ActiveScaffold::DataStructures
51
55
  def label
52
56
  @label.is_a?(Symbol) ? as_(@label) : @label
53
57
  end
54
-
58
+
55
59
  # image to use {:name => 'arrow.png', :size => '16x16'}
56
60
  attr_accessor :image
57
61
 
@@ -63,7 +67,7 @@ module ActiveScaffold::DataStructures
63
67
  def confirm?
64
68
  @confirm ? true : false
65
69
  end
66
-
70
+
67
71
  # if the action uses a DHTML based (i.e. 2-phase) confirmation
68
72
  attr_writer :dhtml_confirm
69
73
  def dhtml_confirm
@@ -83,9 +87,9 @@ module ActiveScaffold::DataStructures
83
87
  def security_method_set?
84
88
  !!@security_method
85
89
  end
86
-
90
+
87
91
  attr_accessor :ignore_method
88
-
92
+
89
93
  # the crud type of the (eventual?) action. different than :method, because this crud action may not be imminent.
90
94
  # this is used to determine record-level authorization (e.g. record.authorized_for?(:crud_type => link.crud_type).
91
95
  # options are :create, :read, :update, and :delete
@@ -154,18 +158,18 @@ module ActiveScaffold::DataStructures
154
158
 
155
159
  # html options for the link
156
160
  attr_accessor :html_options
157
-
161
+
158
162
  # nested action_links are referencing a column
159
163
  attr_accessor :column
160
-
164
+
161
165
  # indicates that this a nested_link
162
166
  def nested_link?
163
167
  @column || (parameters && parameters[:named_scope])
164
168
  end
165
-
169
+
166
170
  # Internal use: generated eid for this action_link
167
171
  attr_accessor :eid
168
-
169
-
172
+
173
+
170
174
  end
171
175
  end