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.
- 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
|