active_scaffold 3.0.12 → 3.0.21
Sign up to get free protection for your applications and to get access to all the features.
- data/README +21 -11
- data/frontends/default/images/close_touch.png +0 -0
- data/frontends/default/javascripts/jquery/active_scaffold.js +187 -99
- data/frontends/default/javascripts/prototype/active_scaffold.js +105 -33
- data/frontends/default/javascripts/prototype/dhtml_history.js +80 -77
- data/frontends/default/stylesheets/stylesheet.css +121 -2
- data/frontends/default/views/_action_group.html.erb +6 -2
- data/frontends/default/views/_base_form.html.erb +11 -5
- data/frontends/default/views/_base_form.html.erb~ +42 -0
- data/frontends/default/views/_field_search.html.erb +1 -1
- data/frontends/default/views/_form.html.erb +9 -7
- data/frontends/default/views/_form_association.html.erb +8 -3
- data/frontends/default/views/_form_association_footer.html.erb +10 -3
- data/frontends/default/views/_form_attribute.html.erb +8 -3
- data/frontends/default/views/_horizontal_subform.html.erb +12 -2
- data/frontends/default/views/_horizontal_subform_header.html.erb +1 -1
- data/frontends/default/views/_horizontal_subform_record.html.erb +5 -4
- data/frontends/default/views/_list_messages.html.erb +1 -1
- data/frontends/default/views/_list_with_header.html.erb +1 -1
- data/frontends/default/views/_render_field.js.rjs +4 -6
- data/frontends/default/views/_vertical_subform.html.erb +1 -1
- data/frontends/default/views/_vertical_subform_record.html.erb +2 -2
- data/frontends/default/views/on_action_update.js.rjs +3 -1
- data/frontends/default/views/on_mark_all.js.rjs +12 -0
- data/frontends/default/views/on_update.js.rjs +1 -1
- data/frontends/default/views/render_field.js.rjs +1 -0
- data/frontends/default/views/update_column.js.rjs +1 -1
- data/lib/active_scaffold.rb +60 -21
- data/lib/active_scaffold/actions/common_search.rb +2 -2
- data/lib/active_scaffold/actions/core.rb +30 -9
- data/lib/active_scaffold/actions/create.rb +14 -10
- data/lib/active_scaffold/actions/field_search.rb +6 -6
- data/lib/active_scaffold/actions/list.rb +22 -12
- data/lib/active_scaffold/actions/mark.rb +34 -9
- data/lib/active_scaffold/actions/nested.rb +12 -16
- data/lib/active_scaffold/actions/show.rb +2 -2
- data/lib/active_scaffold/actions/subform.rb +15 -8
- data/lib/active_scaffold/actions/update.rb +14 -4
- data/lib/active_scaffold/attribute_params.rb +15 -10
- data/lib/active_scaffold/bridges/bridge.rb +21 -12
- data/lib/active_scaffold/bridges/calendar_date_select/bridge.rb +3 -3
- data/lib/active_scaffold/bridges/cancan/bridge.rb +12 -0
- data/lib/active_scaffold/bridges/cancan/lib/cancan_bridge.rb +107 -0
- data/lib/active_scaffold/bridges/carrierwave/bridge.rb +1 -1
- data/lib/active_scaffold/bridges/carrierwave/lib/carrierwave_bridge.rb +3 -8
- data/lib/active_scaffold/bridges/carrierwave/lib/carrierwave_bridge_helpers.rb +1 -15
- data/lib/active_scaffold/bridges/carrierwave/lib/form_ui.rb +23 -13
- data/lib/active_scaffold/bridges/carrierwave/lib/list_ui.rb +1 -1
- data/lib/active_scaffold/bridges/country_helper/bridge.rb +9 -0
- data/lib/active_scaffold/bridges/country_helper/lib/country_helper_bridge.rb +358 -0
- data/lib/active_scaffold/bridges/date_picker/bridge.rb +5 -3
- data/lib/active_scaffold/bridges/date_picker/lib/datepicker_bridge.rb +9 -0
- data/lib/active_scaffold/bridges/dragonfly/bridge.rb +9 -0
- data/lib/active_scaffold/bridges/dragonfly/bridge.rb~ +12 -0
- data/lib/active_scaffold/bridges/dragonfly/lib/dragonfly_bridge.rb +36 -0
- data/lib/active_scaffold/bridges/dragonfly/lib/dragonfly_bridge.rb~ +36 -0
- data/lib/active_scaffold/bridges/dragonfly/lib/dragonfly_bridge_helpers.rb +12 -0
- data/lib/active_scaffold/bridges/dragonfly/lib/dragonfly_bridge_helpers.rb~ +12 -0
- data/lib/active_scaffold/bridges/dragonfly/lib/form_ui.rb +27 -0
- data/lib/active_scaffold/bridges/dragonfly/lib/form_ui.rb~ +27 -0
- data/lib/active_scaffold/bridges/dragonfly/lib/list_ui.rb +16 -0
- data/lib/active_scaffold/bridges/dragonfly/lib/list_ui.rb~ +16 -0
- data/lib/active_scaffold/bridges/paperclip/bridge.rb +1 -1
- data/lib/active_scaffold/bridges/record_select/bridge.rb +5 -0
- data/lib/active_scaffold/bridges/record_select/lib/record_select_bridge.rb +87 -0
- data/lib/active_scaffold/bridges/record_select/lib/record_select_bridge.rb~ +84 -0
- data/lib/active_scaffold/bridges/shared/date_bridge.rb +56 -34
- data/lib/active_scaffold/bridges/tiny_mce/lib/tiny_mce_bridge.rb +19 -3
- data/lib/active_scaffold/config/base.rb +4 -4
- data/lib/active_scaffold/config/core.rb +4 -0
- data/lib/active_scaffold/config/create.rb +1 -1
- data/lib/active_scaffold/config/field_search.rb +7 -7
- data/lib/active_scaffold/config/form.rb +8 -2
- data/lib/active_scaffold/config/list.rb +22 -8
- data/lib/active_scaffold/config/mark.rb +18 -5
- data/lib/active_scaffold/config/nested.rb +3 -3
- data/lib/active_scaffold/config/search.rb +1 -1
- data/lib/active_scaffold/config/show.rb +1 -1
- data/lib/active_scaffold/data_structures/action_columns.rb +10 -6
- data/lib/active_scaffold/data_structures/action_link.rb +14 -10
- data/lib/active_scaffold/data_structures/action_links.rb +2 -2
- data/lib/active_scaffold/data_structures/column.rb +25 -11
- data/lib/active_scaffold/data_structures/nested_info.rb +21 -21
- data/lib/active_scaffold/data_structures/set.rb +2 -3
- data/lib/active_scaffold/data_structures/sorting.rb +8 -8
- data/lib/{extensions → active_scaffold/extensions}/action_controller_rendering.rb +3 -1
- data/lib/{extensions → active_scaffold/extensions}/action_view_rendering.rb +31 -33
- data/lib/{extensions → active_scaffold/extensions}/action_view_resolver.rb +0 -0
- data/lib/{extensions → active_scaffold/extensions}/active_association_reflection.rb +0 -0
- data/lib/active_scaffold/extensions/active_record_offset.rb +12 -0
- data/lib/{extensions → active_scaffold/extensions}/array.rb +0 -0
- data/lib/{extensions → active_scaffold/extensions}/localize.rb +1 -1
- data/lib/{extensions → active_scaffold/extensions}/name_option_for_datetime.rb +1 -1
- data/lib/{extensions → active_scaffold/extensions}/nil_id_in_url_params.rb +0 -0
- data/lib/{extensions → active_scaffold/extensions}/paginator_extensions.rb +2 -2
- data/lib/{extensions → active_scaffold/extensions}/reverse_associations.rb +1 -1
- data/lib/{extensions → active_scaffold/extensions}/routing_mapper.rb +2 -2
- data/lib/{extensions → active_scaffold/extensions}/to_label.rb +0 -0
- data/lib/{extensions → active_scaffold/extensions}/unsaved_associated.rb +0 -0
- data/lib/{extensions → active_scaffold/extensions}/unsaved_record.rb +0 -0
- data/lib/active_scaffold/extensions/usa_state.rb +46 -0
- data/lib/active_scaffold/finder.rb +30 -19
- data/lib/active_scaffold/helpers/controller_helpers.rb +3 -5
- data/lib/active_scaffold/helpers/form_column_helpers.rb +19 -45
- data/lib/active_scaffold/helpers/human_condition_helpers.rb +1 -1
- data/lib/active_scaffold/helpers/id_helpers.rb +2 -2
- data/lib/active_scaffold/helpers/list_column_helpers.rb +28 -17
- data/lib/active_scaffold/helpers/search_column_helpers.rb +51 -40
- data/lib/active_scaffold/helpers/search_column_helpers.rb~ +215 -0
- data/lib/active_scaffold/helpers/show_column_helpers.rb +8 -4
- data/lib/active_scaffold/helpers/view_helpers.rb +50 -27
- data/lib/active_scaffold/locale/de.yml +111 -0
- data/lib/active_scaffold/locale/en.yml +115 -0
- data/lib/active_scaffold/locale/es.yml +32 -32
- data/lib/active_scaffold/locale/fr.yml +118 -0
- data/lib/active_scaffold/marked_model.rb +6 -6
- data/lib/active_scaffold/version.rb +1 -1
- data/lib/active_scaffold_assets.rb +1 -3
- data/lib/active_scaffold_env.rb +1 -2
- data/lib/generators/active_scaffold/active_scaffold_generator.rb +5 -5
- data/lib/generators/active_scaffold_controller/active_scaffold_controller_generator.rb +3 -2
- data/lib/generators/active_scaffold_controller/templates/helper.rb +2 -0
- data/lib/generators/active_scaffold_setup/active_scaffold_setup_generator.rb +17 -19
- data/shoulda_macros/macros.rb +4 -4
- data/test/misc/finder_test.rb +2 -2
- data/test/mock_app/public/stylesheets/active_scaffold/default/stylesheet.css +4 -1
- metadata +144 -126
- data/.autotest +0 -27
- data/.document +0 -5
- data/Gemfile +0 -13
- data/Gemfile.lock +0 -20
- data/Rakefile +0 -53
- data/active_scaffold.gemspec +0 -385
- data/init.rb +0 -2
- data/lib/active_scaffold/helpers/country_helpers.rb +0 -358
- data/lib/active_scaffold/locale/de.rb +0 -120
- data/lib/active_scaffold/locale/en.rb +0 -119
- data/lib/active_scaffold/locale/fr.rb +0 -116
- data/lib/extensions/active_record_offset.rb +0 -12
- data/lib/extensions/usa_state.rb +0 -50
- data/test/mock_app/.gitignore +0 -2
- data/uninstall.rb +0 -13
@@ -100,7 +100,7 @@ module ActiveScaffold::DataStructures
|
|
100
100
|
end
|
101
101
|
}
|
102
102
|
end
|
103
|
-
|
103
|
+
|
104
104
|
def collect_by_type(type = nil)
|
105
105
|
links = []
|
106
106
|
subgroup(type).each(type) {|link| links << link}
|
@@ -182,4 +182,4 @@ module ActiveScaffold::DataStructures
|
|
182
182
|
from.instance_variable_get('@set').each { |link| @set << link.clone }
|
183
183
|
end
|
184
184
|
end
|
185
|
-
end
|
185
|
+
end
|
@@ -19,7 +19,7 @@ module ActiveScaffold::DataStructures
|
|
19
19
|
|
20
20
|
# Whether to enable add_existing for this column
|
21
21
|
attr_accessor :allow_add_existing
|
22
|
-
|
22
|
+
|
23
23
|
# Any extra parameters this particular column uses. This is for create/update purposes.
|
24
24
|
def params
|
25
25
|
# lazy initialize
|
@@ -52,9 +52,9 @@ module ActiveScaffold::DataStructures
|
|
52
52
|
def required?
|
53
53
|
@required
|
54
54
|
end
|
55
|
-
|
55
|
+
|
56
56
|
attr_reader :update_columns
|
57
|
-
|
57
|
+
|
58
58
|
# update dependent columns after value change in form
|
59
59
|
# update_columns = :name
|
60
60
|
# update_columns = [:name, :age]
|
@@ -62,6 +62,10 @@ module ActiveScaffold::DataStructures
|
|
62
62
|
@update_columns = Array(column_names)
|
63
63
|
end
|
64
64
|
|
65
|
+
# send all the form instead of only new value when this column change
|
66
|
+
cattr_accessor :send_form_on_update_column
|
67
|
+
attr_accessor :send_form_on_update_column
|
68
|
+
|
65
69
|
# sorting on a column can be configured four ways:
|
66
70
|
# sort = true default, uses intelligent sorting sql default
|
67
71
|
# sort = false sometimes sorting doesn't make sense
|
@@ -153,7 +157,10 @@ module ActiveScaffold::DataStructures
|
|
153
157
|
# a collection of associations to pre-load when finding the records on a page
|
154
158
|
attr_reader :includes
|
155
159
|
def includes=(value)
|
156
|
-
@includes =
|
160
|
+
@includes = case value
|
161
|
+
when Array, Hash then value
|
162
|
+
else [value] # automatically convert to an array
|
163
|
+
end
|
157
164
|
end
|
158
165
|
|
159
166
|
# a collection of columns to load when eager loading is disabled, if it's nil all columns will be loaded
|
@@ -202,7 +209,7 @@ module ActiveScaffold::DataStructures
|
|
202
209
|
cattr_accessor :actions_for_association_links
|
203
210
|
@@actions_for_association_links = [:new, :edit, :show]
|
204
211
|
attr_accessor :actions_for_association_links
|
205
|
-
|
212
|
+
|
206
213
|
cattr_accessor :association_form_ui
|
207
214
|
@@association_form_ui = nil
|
208
215
|
|
@@ -241,6 +248,11 @@ module ActiveScaffold::DataStructures
|
|
241
248
|
def virtual?
|
242
249
|
column.nil? && association.nil?
|
243
250
|
end
|
251
|
+
|
252
|
+
attr_writer :number
|
253
|
+
def number?
|
254
|
+
@number
|
255
|
+
end
|
244
256
|
|
245
257
|
# this is so that array.delete and array.include?, etc., will work by column name
|
246
258
|
def ==(other) #:nodoc:
|
@@ -268,18 +280,20 @@ module ActiveScaffold::DataStructures
|
|
268
280
|
@associated_number = self.class.associated_number
|
269
281
|
@show_blank_record = self.class.show_blank_record
|
270
282
|
@actions_for_association_links = self.class.actions_for_association_links.clone if @association
|
271
|
-
|
283
|
+
|
284
|
+
self.number = @column.try(:number?)
|
285
|
+
@options = {:format => :i18n_number} if self.number?
|
272
286
|
@form_ui = :checkbox if @column and @column.type == :boolean
|
273
287
|
@form_ui = :textarea if @column and @column.type == :text
|
274
288
|
@allow_add_existing = true
|
275
289
|
@form_ui = self.class.association_form_ui if @association && self.class.association_form_ui
|
276
|
-
|
290
|
+
|
277
291
|
# default all the configurable variables
|
278
292
|
self.css_class = ''
|
279
293
|
self.required = active_record_class.validators_on(self.name).map(&:class).include? ActiveModel::Validations::PresenceValidator
|
280
294
|
self.sort = true
|
281
295
|
self.search_sql = true
|
282
|
-
|
296
|
+
|
283
297
|
@weight = estimate_weight
|
284
298
|
|
285
299
|
self.includes = (association and not polymorphic_association?) ? [association.name] : []
|
@@ -312,7 +326,7 @@ module ActiveScaffold::DataStructures
|
|
312
326
|
end
|
313
327
|
end
|
314
328
|
end
|
315
|
-
|
329
|
+
|
316
330
|
def initialize_search_sql
|
317
331
|
self.search_sql = unless self.virtual?
|
318
332
|
if association.nil?
|
@@ -332,13 +346,13 @@ module ActiveScaffold::DataStructures
|
|
332
346
|
def field
|
333
347
|
@field ||= [@active_record_class.connection.quote_column_name(@table), field_name].join('.')
|
334
348
|
end
|
335
|
-
|
349
|
+
|
336
350
|
def estimate_weight
|
337
351
|
if singular_association?
|
338
352
|
400
|
339
353
|
elsif plural_association?
|
340
354
|
500
|
341
|
-
elsif [:created_at, :updated_at].include?(self.name)
|
355
|
+
elsif [:created_at, :updated_at].include?(self.name)
|
342
356
|
600
|
343
357
|
elsif [:name, :label, :title].include?(self.name)
|
344
358
|
100
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module ActiveScaffold::DataStructures
|
2
2
|
class NestedInfo
|
3
3
|
def self.get(model, session_storage)
|
4
|
-
if session_storage[:nested].nil?
|
4
|
+
if session_storage[:nested].nil?
|
5
5
|
nil
|
6
6
|
else
|
7
7
|
session_info = session_storage[:nested].clone
|
@@ -19,29 +19,29 @@ module ActiveScaffold::DataStructures
|
|
19
19
|
end
|
20
20
|
end
|
21
21
|
end
|
22
|
-
|
22
|
+
|
23
23
|
attr_accessor :association, :child_association, :parent_model, :parent_scaffold, :parent_id, :constrained_fields, :scope
|
24
|
-
|
24
|
+
|
25
25
|
def initialize(model, session_info)
|
26
26
|
@parent_model = session_info[:parent_model]
|
27
27
|
@parent_id = session_info[:parent_id]
|
28
28
|
@parent_scaffold = session_info[:parent_scaffold]
|
29
29
|
end
|
30
|
-
|
30
|
+
|
31
31
|
def new_instance?
|
32
32
|
result = @new_instance.nil?
|
33
33
|
@new_instance = false
|
34
34
|
result
|
35
35
|
end
|
36
|
-
|
36
|
+
|
37
37
|
def parent_scope
|
38
38
|
parent_model.find(parent_id)
|
39
39
|
end
|
40
|
-
|
40
|
+
|
41
41
|
def habtm?
|
42
|
-
false
|
42
|
+
false
|
43
43
|
end
|
44
|
-
|
44
|
+
|
45
45
|
def belongs_to?
|
46
46
|
false
|
47
47
|
end
|
@@ -49,7 +49,7 @@ module ActiveScaffold::DataStructures
|
|
49
49
|
def has_one?
|
50
50
|
false
|
51
51
|
end
|
52
|
-
|
52
|
+
|
53
53
|
def readonly?
|
54
54
|
false
|
55
55
|
end
|
@@ -58,18 +58,18 @@ module ActiveScaffold::DataStructures
|
|
58
58
|
false
|
59
59
|
end
|
60
60
|
end
|
61
|
-
|
61
|
+
|
62
62
|
class NestedInfoAssociation < NestedInfo
|
63
63
|
def initialize(model, session_info)
|
64
64
|
super(model, session_info)
|
65
65
|
@association = session_info[:association]
|
66
66
|
iterate_model_associations(model)
|
67
67
|
end
|
68
|
-
|
68
|
+
|
69
69
|
def habtm?
|
70
|
-
association.macro == :has_and_belongs_to_many
|
70
|
+
association.macro == :has_and_belongs_to_many
|
71
71
|
end
|
72
|
-
|
72
|
+
|
73
73
|
def belongs_to?
|
74
74
|
association.belongs_to?
|
75
75
|
end
|
@@ -77,7 +77,7 @@ module ActiveScaffold::DataStructures
|
|
77
77
|
def has_one?
|
78
78
|
association.macro == :has_one
|
79
79
|
end
|
80
|
-
|
80
|
+
|
81
81
|
def readonly?
|
82
82
|
if association.options.has_key? :readonly
|
83
83
|
association.options[:readonly]
|
@@ -93,31 +93,31 @@ module ActiveScaffold::DataStructures
|
|
93
93
|
def default_sorting
|
94
94
|
association.options[:order]
|
95
95
|
end
|
96
|
-
|
96
|
+
|
97
97
|
protected
|
98
|
-
|
98
|
+
|
99
99
|
def iterate_model_associations(model)
|
100
|
-
@constrained_fields = []
|
100
|
+
@constrained_fields = []
|
101
101
|
@constrained_fields << association.primary_key_name.to_sym unless association.belongs_to?
|
102
102
|
model.reflect_on_all_associations.each do |current|
|
103
103
|
if !current.belongs_to? && association.primary_key_name == current.association_foreign_key
|
104
104
|
constrained_fields << current.name.to_sym
|
105
|
-
@child_association = current
|
105
|
+
@child_association = current if current.klass == @parent_model
|
106
106
|
end
|
107
107
|
if association.primary_key_name == current.primary_key_name
|
108
108
|
# show columns for has_many and has_one child associationes
|
109
|
-
constrained_fields << current.name.to_sym if current.belongs_to?
|
109
|
+
constrained_fields << current.name.to_sym if current.belongs_to?
|
110
110
|
@child_association = current
|
111
111
|
end
|
112
112
|
end
|
113
113
|
end
|
114
114
|
end
|
115
|
-
|
115
|
+
|
116
116
|
class NestedInfoScope < NestedInfo
|
117
117
|
def initialize(model, session_info)
|
118
118
|
super(model, session_info)
|
119
119
|
@scope = session_info[:name]
|
120
|
-
@constrained_fields = []
|
120
|
+
@constrained_fields = []
|
121
121
|
end
|
122
122
|
end
|
123
123
|
end
|
@@ -7,7 +7,7 @@ module ActiveScaffold::DataStructures
|
|
7
7
|
@columns = columns
|
8
8
|
@clauses = []
|
9
9
|
end
|
10
|
-
|
10
|
+
|
11
11
|
def set_default_sorting(model)
|
12
12
|
model_scope = model.send(:current_scoped_methods)
|
13
13
|
order_clause = model_scope.arel.order_clauses.join(",") if model_scope
|
@@ -26,7 +26,7 @@ module ActiveScaffold::DataStructures
|
|
26
26
|
clear
|
27
27
|
set_sorting_from_order_clause(order_clause, table_name)
|
28
28
|
end
|
29
|
-
|
29
|
+
|
30
30
|
# add a clause to the sorting, assuming the column is sortable
|
31
31
|
def add(column_name, direction = nil)
|
32
32
|
direction ||= 'ASC'
|
@@ -121,21 +121,21 @@ module ActiveScaffold::DataStructures
|
|
121
121
|
def mixed_sorting?
|
122
122
|
sorts_by_method? and sorts_by_sql?
|
123
123
|
end
|
124
|
-
|
124
|
+
|
125
125
|
def default_sorting?
|
126
126
|
@default_sorting
|
127
127
|
end
|
128
128
|
|
129
129
|
def set_sorting_from_order_clause(order_clause, model_table_name = nil)
|
130
130
|
clear
|
131
|
-
order_clause.split(',').each do |criterion|
|
131
|
+
order_clause.to_s.split(',').each do |criterion|
|
132
132
|
unless criterion.blank?
|
133
133
|
order_parts = extract_order_parts(criterion)
|
134
134
|
add(order_parts[:column_name], order_parts[:direction]) unless different_table?(model_table_name, order_parts[:table_name])
|
135
135
|
end
|
136
136
|
end
|
137
137
|
end
|
138
|
-
|
138
|
+
|
139
139
|
def extract_order_parts(criterion_parts)
|
140
140
|
column_name_part, direction_part = criterion_parts.strip.split(' ')
|
141
141
|
column_name_parts = column_name_part.split('.')
|
@@ -144,11 +144,11 @@ module ActiveScaffold::DataStructures
|
|
144
144
|
order[:table_name] = remove_quotes(column_name_parts[-2]) if column_name_parts.length >= 2
|
145
145
|
order
|
146
146
|
end
|
147
|
-
|
147
|
+
|
148
148
|
def different_table?(model_table_name, order_table_name)
|
149
149
|
!order_table_name.nil? && model_table_name != order_table_name
|
150
150
|
end
|
151
|
-
|
151
|
+
|
152
152
|
def remove_quotes(sql_name)
|
153
153
|
if sql_name.starts_with?('"') || sql_name.starts_with?('`')
|
154
154
|
sql_name[1, (sql_name.length - 2)]
|
@@ -156,7 +156,7 @@ module ActiveScaffold::DataStructures
|
|
156
156
|
sql_name
|
157
157
|
end
|
158
158
|
end
|
159
|
-
|
159
|
+
|
160
160
|
def extract_direction(direction_part)
|
161
161
|
if direction_part.to_s.upcase == 'DESC'
|
162
162
|
'DESC'
|
@@ -5,8 +5,9 @@ module ActionController #:nodoc:
|
|
5
5
|
if self.class.uses_active_scaffold? and params[:adapter] and @rendering_adapter.nil?
|
6
6
|
@rendering_adapter = true # recursion control
|
7
7
|
# if we need an adapter, then we render the actual stuff to a string and insert it into the adapter template
|
8
|
+
opts = args.blank? ? Hash.new : args.first
|
8
9
|
render :partial => params[:adapter][1..-1],
|
9
|
-
:locals => {:payload => render_to_string(
|
10
|
+
:locals => {:payload => render_to_string(opts.merge(:layout => false), &block)},
|
10
11
|
:use_full_path => true, :layout => false
|
11
12
|
@rendering_adapter = nil # recursion control
|
12
13
|
else
|
@@ -18,3 +19,4 @@ module ActionController #:nodoc:
|
|
18
19
|
# Rails 2.x implementation is post-initialization on :active_scaffold method
|
19
20
|
end
|
20
21
|
end
|
22
|
+
|
@@ -38,15 +38,19 @@ module ActionView::Rendering #:nodoc:
|
|
38
38
|
#
|
39
39
|
def render_with_active_scaffold(*args, &block)
|
40
40
|
if args.first == :super
|
41
|
+
last_view = @view_stack.last
|
41
42
|
options = args[1] || {}
|
42
43
|
options[:locals] ||= {}
|
43
|
-
options[:locals].reverse_merge!(
|
44
|
-
if
|
45
|
-
|
46
|
-
|
44
|
+
options[:locals].reverse_merge!(last_view[:locals] || {})
|
45
|
+
if last_view[:templates].nil?
|
46
|
+
last_view[:templates] = lookup_context.find_all_templates(last_view[:view], controller_path, !last_view[:is_template])
|
47
|
+
last_view[:templates].shift
|
47
48
|
end
|
48
|
-
options[:template] =
|
49
|
-
|
49
|
+
options[:template] = last_view[:templates].shift
|
50
|
+
@view_stack << last_view
|
51
|
+
result = render_without_active_scaffold options
|
52
|
+
@view_stack.pop
|
53
|
+
result
|
50
54
|
elsif args.first.is_a?(Hash) and args.first[:active_scaffold]
|
51
55
|
require 'digest/md5'
|
52
56
|
options = args.first
|
@@ -58,36 +62,44 @@ module ActionView::Rendering #:nodoc:
|
|
58
62
|
session["as:#{eid}"] = {:constraints => constraints, :conditions => conditions, :list => {:label => args.first[:label]}}
|
59
63
|
options[:params] ||= {}
|
60
64
|
options[:params].merge! :eid => eid, :embedded => true
|
61
|
-
|
65
|
+
|
62
66
|
id = "as_#{eid}-content"
|
63
67
|
url_options = {:controller => remote_controller.to_s, :action => 'index'}.merge(options[:params])
|
64
|
-
|
65
|
-
if respond_to?
|
66
|
-
|
68
|
+
|
69
|
+
if controller.respond_to?(:render_component_into_view)
|
70
|
+
controller.send(:render_component_into_view, url_options)
|
67
71
|
else
|
68
|
-
content_tag(:div,
|
72
|
+
content_tag(:div, :id => id, :class => 'active-scaffold-component') do
|
69
73
|
url = url_for(url_options)
|
70
|
-
|
71
|
-
|
74
|
+
content_tag(:div, :class => 'active-scaffold-header') do
|
75
|
+
content_tag :h2, link_to(active_scaffold_config_for(remote_controller).list.label, url, :remote => true, :id => id)
|
76
|
+
end <<
|
77
|
+
if ActiveScaffold.js_framework == :prototype
|
72
78
|
javascript_tag("new Ajax.Updater('#{id}', '#{url}', {method: 'get', evalScripts: true});")
|
73
79
|
elsif ActiveScaffold.js_framework == :jquery
|
74
80
|
javascript_tag("$('##{id}').load('#{url}');")
|
75
81
|
end
|
76
82
|
end
|
77
83
|
end
|
78
|
-
|
84
|
+
|
79
85
|
else
|
80
86
|
options = args.first
|
81
87
|
if options.is_a?(Hash)
|
82
|
-
|
83
|
-
|
84
|
-
|
88
|
+
current_view = {:view => options[:partial], :is_template => false} if options[:partial]
|
89
|
+
current_view = {:view => options[:template], :is_template => !!options[:template]} if current_view.nil? && options[:template]
|
90
|
+
current_view[:locals] = options[:locals] if !current_view.nil? && options[:locals]
|
91
|
+
if current_view.present?
|
92
|
+
@view_stack ||= []
|
93
|
+
@view_stack << current_view
|
94
|
+
end
|
85
95
|
end
|
86
|
-
render_without_active_scaffold(*args, &block)
|
96
|
+
result = render_without_active_scaffold(*args, &block)
|
97
|
+
@view_stack.pop if current_view.present?
|
98
|
+
result
|
87
99
|
end
|
88
100
|
end
|
89
101
|
alias_method_chain :render, :active_scaffold
|
90
|
-
|
102
|
+
|
91
103
|
|
92
104
|
def partial_pieces(partial_path)
|
93
105
|
if partial_path.include?('/')
|
@@ -96,18 +108,4 @@ module ActionView::Rendering #:nodoc:
|
|
96
108
|
return controller.class.controller_path, partial_path
|
97
109
|
end
|
98
110
|
end
|
99
|
-
|
100
|
-
# This is the template finder logic, keep it updated with however we find stuff in rails
|
101
|
-
# currently this very similar to the logic in ActionBase::Base.render for options file
|
102
|
-
# TODO: Work with rails core team to find a better way to check for this.
|
103
|
-
def template_exists?(template_name, lookup_overrides = false)
|
104
|
-
begin
|
105
|
-
method = 'find_template'
|
106
|
-
method << '_without_active_scaffold' unless lookup_overrides
|
107
|
-
self.view_paths.send(method, template_name, @template_format)
|
108
|
-
return true
|
109
|
-
rescue ActionView::MissingTemplate => e
|
110
|
-
return false
|
111
|
-
end
|
112
|
-
end
|
113
111
|
end
|
File without changes
|
File without changes
|