active_scaffold 3.0.26 → 3.1.3
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +1 -1
- data/{frontends/default → app/assets}/images/add.gif +0 -0
- data/{frontends/default → app/assets}/images/arrow_down.gif +0 -0
- data/{frontends/default → app/assets}/images/arrow_up.gif +0 -0
- data/{frontends/default → app/assets}/images/close.gif +0 -0
- data/{frontends/default → app/assets}/images/close_touch.png +0 -0
- data/{frontends/default → app/assets}/images/config.png +0 -0
- data/{frontends/default → app/assets}/images/cross.png +0 -0
- data/{frontends/default → app/assets}/images/gears.png +0 -0
- data/{frontends/default → app/assets}/images/indicator-small.gif +0 -0
- data/{frontends/default → app/assets}/images/indicator.gif +0 -0
- data/{frontends/default → app/assets}/images/magnifier.png +0 -0
- data/app/assets/javascripts/active_scaffold.js.erb +16 -0
- data/{frontends/default → app/assets}/javascripts/jquery/active_scaffold.js +16 -28
- data/app/assets/javascripts/jquery/active_scaffold.js~ +1036 -0
- data/{lib/active_scaffold/bridges/date_picker/public/javascripts/date_picker_bridge.js → app/assets/javascripts/jquery/date_picker_bridge.js.erb} +3 -1
- data/{frontends/default → app/assets}/javascripts/jquery/jquery.editinplace.js +0 -0
- data/app/assets/javascripts/prototype/active_scaffold.js +1033 -0
- data/{frontends/default/javascripts/prototype/active_scaffold.js → app/assets/javascripts/prototype/active_scaffold.js~} +1 -0
- data/{frontends/default → app/assets}/javascripts/prototype/dhtml_history.js +0 -0
- data/{frontends/default → app/assets}/javascripts/prototype/form_enhancements.js +0 -0
- data/{frontends/default → app/assets}/javascripts/prototype/rico_corner.js +0 -0
- data/{frontends/default/stylesheets/stylesheet-ie.css → app/assets/stylesheets/active_scaffold-ie.css} +0 -0
- data/{frontends/default/stylesheets/stylesheet.css → app/assets/stylesheets/active_scaffold.css.erb} +29 -24
- data/{lib/active_scaffold/locale → config/locales}/de.yml +3 -0
- data/{lib/active_scaffold/locale → config/locales}/en.yml +3 -0
- data/{lib/active_scaffold/locale → config/locales}/es.yml +5 -0
- data/{lib/active_scaffold/locale → config/locales}/fr.yml +3 -0
- data/{lib/active_scaffold/locale → config/locales}/hu.yml +13 -2
- data/{lib/active_scaffold/locale → config/locales}/ja.yml +9 -0
- data/{lib/active_scaffold/locale → config/locales}/ru.yml +3 -0
- data/frontends/default/views/_form.html.erb +1 -1
- data/frontends/default/views/_form_association.html.erb +1 -5
- data/frontends/default/views/_horizontal_subform.html.erb +7 -4
- data/frontends/default/views/_horizontal_subform.html.erb~ +2 -5
- data/frontends/default/views/_horizontal_subform_footer.html.erb +0 -0
- data/frontends/default/views/_horizontal_subform_header.html.erb +1 -1
- data/frontends/default/views/_horizontal_subform_header.html.erb~ +1 -1
- data/frontends/default/views/_horizontal_subform_record.html.erb~ +1 -1
- data/frontends/default/views/_list_actions.html.erb +1 -1
- data/frontends/default/views/_list_messages.html.erb +1 -3
- data/frontends/default/views/_render_field.js.erb +20 -0
- data/frontends/default/views/_row.html.erb +3 -9
- data/frontends/default/views/_show.html.erb +2 -2
- data/frontends/default/views/add_existing.js.erb +20 -0
- data/frontends/default/views/destroy.js.erb +24 -0
- data/frontends/default/views/{edit_associated.js.rjs → edit_associated.js.erb} +3 -2
- data/frontends/default/views/form_messages.js.erb +1 -0
- data/frontends/default/views/list.js.erb +1 -0
- data/frontends/default/views/mark.js.rjs +6 -0
- data/frontends/default/views/on_action_update.js.erb +13 -0
- data/frontends/default/views/{on_create.js.erb~ → on_create.js.erb} +0 -0
- data/frontends/default/views/on_mark_all.js.erb +12 -0
- data/frontends/default/views/{on_update.js.erb~ → on_update.js.erb} +0 -0
- data/frontends/default/views/render_field.js.erb +1 -0
- data/frontends/default/views/search.html.erb +1 -1
- data/frontends/default/views/{update_column.js.erb~ → update_column.js.erb} +3 -3
- data/frontends/default/views/update_row.js.erb +1 -0
- data/lib/active_scaffold.rb +22 -46
- data/lib/active_scaffold/actions/core.rb +14 -6
- data/lib/active_scaffold/actions/core.rb~ +3 -3
- data/lib/active_scaffold/actions/create.rb +2 -5
- data/lib/active_scaffold/actions/create.rb~ +3 -2
- data/lib/active_scaffold/actions/delete.rb +1 -0
- data/lib/active_scaffold/actions/field_search.rb +1 -1
- data/lib/active_scaffold/actions/list.rb +10 -6
- data/lib/active_scaffold/actions/list.rb~ +3 -3
- data/lib/active_scaffold/actions/mark.rb +8 -8
- data/lib/active_scaffold/actions/nested.rb +2 -9
- data/lib/active_scaffold/actions/nested.rb~ +5 -7
- data/lib/active_scaffold/actions/search.rb +2 -1
- data/lib/active_scaffold/actions/subform.rb +1 -5
- data/lib/active_scaffold/actions/update.rb +1 -4
- data/lib/active_scaffold/actions/update.rb~ +5 -5
- data/lib/active_scaffold/attribute_params.rb +15 -26
- data/lib/active_scaffold/attribute_params.rb~ +1 -2
- data/lib/active_scaffold/bridges.rb +61 -0
- data/lib/active_scaffold/bridges/ancestry.rb +5 -0
- data/lib/active_scaffold/bridges/ancestry/{lib/ancestry_bridge.rb → ancestry_bridge.rb} +3 -3
- data/lib/active_scaffold/bridges/{calendar_date_select/bridge.rb → calendar_date_select.rb} +13 -5
- data/lib/active_scaffold/bridges/calendar_date_select/{lib/as_cds_bridge.rb → as_cds_bridge.rb} +4 -20
- data/lib/active_scaffold/bridges/cancan.rb +15 -0
- data/lib/active_scaffold/bridges/cancan/{lib/cancan_bridge.rb → cancan_bridge.rb} +2 -2
- data/lib/active_scaffold/bridges/carrierwave.rb +12 -0
- data/lib/active_scaffold/bridges/carrierwave/carrierwave_bridge.rb +31 -0
- data/lib/active_scaffold/bridges/carrierwave/carrierwave_bridge_helpers.rb +10 -0
- data/lib/active_scaffold/bridges/carrierwave/{lib/form_ui.rb → form_ui.rb} +0 -0
- data/lib/active_scaffold/bridges/carrierwave/{lib/list_ui.rb → list_ui.rb} +1 -1
- data/lib/active_scaffold/bridges/country_helper.rb +9 -0
- data/lib/active_scaffold/bridges/country_helper/{lib/country_helper_bridge.rb → country_helper_bridge.rb} +5 -5
- data/lib/active_scaffold/bridges/date_picker.rb +23 -0
- data/lib/active_scaffold/bridges/date_picker/ext.rb +54 -0
- data/lib/active_scaffold/bridges/date_picker/helper.rb +188 -0
- data/lib/active_scaffold/bridges/dragonfly.rb +9 -0
- data/lib/active_scaffold/bridges/dragonfly/dragonfly_bridge.rb +34 -0
- data/lib/active_scaffold/bridges/dragonfly/dragonfly_bridge_helpers.rb +10 -0
- data/lib/active_scaffold/bridges/dragonfly/{lib/form_ui.rb → form_ui.rb} +0 -0
- data/lib/active_scaffold/bridges/dragonfly/{lib/list_ui.rb → list_ui.rb} +2 -2
- data/lib/active_scaffold/bridges/file_column.rb +11 -0
- data/lib/active_scaffold/bridges/file_column/{lib/as_file_column_bridge.rb → as_file_column_bridge.rb} +2 -2
- data/lib/active_scaffold/bridges/file_column/file_column_helpers.rb +57 -0
- data/lib/active_scaffold/bridges/file_column/{lib/form_ui.rb → form_ui.rb} +2 -2
- data/lib/active_scaffold/bridges/file_column/{lib/list_ui.rb → list_ui.rb} +0 -0
- data/lib/active_scaffold/bridges/paperclip.rb +12 -0
- data/lib/active_scaffold/bridges/paperclip/{lib/form_ui.rb → form_ui.rb} +0 -0
- data/lib/active_scaffold/bridges/paperclip/{lib/list_ui.rb → list_ui.rb} +3 -3
- data/lib/active_scaffold/bridges/paperclip/paperclip_bridge.rb +36 -0
- data/lib/active_scaffold/bridges/paperclip/paperclip_bridge_helpers.rb +24 -0
- data/lib/active_scaffold/bridges/record_select.rb +11 -0
- data/lib/active_scaffold/bridges/record_select/{lib/record_select_bridge.rb → helpers.rb} +5 -16
- data/lib/active_scaffold/bridges/record_select/helpers.rb~ +9 -14
- data/lib/active_scaffold/bridges/semantic_attributes.rb +5 -0
- data/lib/active_scaffold/bridges/semantic_attributes/{lib/semantic_attributes_bridge.rb → column.rb} +3 -3
- data/lib/active_scaffold/bridges/tiny_mce.rb +5 -0
- data/lib/active_scaffold/bridges/tiny_mce/{lib/tiny_mce_bridge.rb → helpers.rb} +16 -8
- data/lib/active_scaffold/config/base.rb +9 -1
- data/lib/active_scaffold/config/core.rb +1 -1
- data/lib/active_scaffold/config/create.rb +3 -10
- data/lib/active_scaffold/config/delete.rb +1 -2
- data/lib/active_scaffold/config/field_search.rb +1 -2
- data/lib/active_scaffold/config/form.rb +2 -6
- data/lib/active_scaffold/config/list.rb +8 -2
- data/lib/active_scaffold/config/nested.rb +2 -6
- data/lib/active_scaffold/config/search.rb +6 -2
- data/lib/active_scaffold/config/show.rb +1 -4
- data/lib/active_scaffold/config/subform.rb +1 -1
- data/lib/active_scaffold/config/update.rb +1 -6
- data/lib/active_scaffold/data_structures/action_columns.rb +3 -0
- data/lib/active_scaffold/data_structures/action_link.rb +14 -10
- data/lib/active_scaffold/data_structures/bridge.rb +22 -0
- data/lib/active_scaffold/data_structures/column.rb +36 -4
- data/lib/active_scaffold/data_structures/nested_info.rb +4 -4
- data/lib/active_scaffold/data_structures/set.rb +1 -6
- data/lib/active_scaffold/data_structures/sorting.rb +2 -2
- data/lib/active_scaffold/engine.rb +4 -0
- data/lib/active_scaffold/extensions/action_controller_rendering.rb +2 -2
- data/lib/active_scaffold/extensions/action_controller_rendering.rb~ +1 -1
- data/lib/active_scaffold/extensions/action_view_rendering.rb +90 -93
- data/lib/active_scaffold/extensions/action_view_rendering.rb~ +1 -13
- data/lib/active_scaffold/extensions/active_association_reflection.rb +16 -7
- data/lib/active_scaffold/extensions/cache_association.rb +16 -0
- data/lib/active_scaffold/extensions/reverse_associations.rb +15 -13
- data/lib/active_scaffold/extensions/unsaved_associated.rb +1 -1
- data/lib/active_scaffold/finder.rb +40 -23
- data/lib/active_scaffold/finder.rb~ +3 -11
- data/lib/active_scaffold/helpers/association_helpers.rb +1 -1
- data/lib/active_scaffold/helpers/controller_helpers.rb +9 -1
- data/lib/active_scaffold/helpers/controller_helpers.rb~ +12 -5
- data/lib/active_scaffold/helpers/form_column_helpers.rb +20 -21
- data/lib/active_scaffold/helpers/form_column_helpers.rb~ +2 -1
- data/lib/active_scaffold/helpers/id_helpers.rb +5 -5
- data/lib/active_scaffold/helpers/list_column_helpers.rb +14 -24
- data/lib/active_scaffold/helpers/list_column_helpers.rb~ +15 -20
- data/lib/active_scaffold/helpers/search_column_helpers.rb +10 -1
- data/lib/active_scaffold/helpers/search_column_helpers.rb~ +1 -1
- data/lib/active_scaffold/helpers/view_helpers.rb +14 -40
- data/lib/active_scaffold/helpers/view_helpers.rb~ +3 -3
- data/lib/active_scaffold/version.rb +2 -2
- data/lib/active_scaffold_env.rb +0 -2
- data/test/bridges/active_scaffold_dependent_protect_test.rb +34 -0
- data/test/bridges/bridge_test.rb +43 -0
- data/test/bridges/company.rb +81 -0
- data/test/bridges/paperclip_test.rb +68 -0
- data/test/bridges/tiny_mce_test.rb +27 -0
- data/test/bridges/unobtrusive_date_picker_test.rb +49 -0
- data/test/bridges/validation_reflection_test.rb +57 -0
- data/test/config/base_test.rb +1 -1
- data/test/config/core_test.rb +58 -0
- data/test/config/create_test.rb +8 -5
- data/test/config/delete_test.rb +33 -0
- data/test/config/field_search_test.rb +47 -0
- data/test/config/list_test.rb +64 -9
- data/test/config/nested_test.rb +62 -0
- data/test/config/search_test.rb +60 -0
- data/test/config/show_test.rb +5 -5
- data/test/config/subform_test.rb +17 -0
- data/test/config/update_test.rb +27 -4
- data/test/helpers/list_column_helpers_test.rb +16 -5
- data/test/helpers/pagination_helpers_test.rb +4 -0
- data/test/misc/attribute_params_test.rb +37 -1
- data/test/misc/finder_test.rb +0 -1
- data/test/misc/lang_test.rb +2 -3
- data/test/mock_app/public/javascripts/active_scaffold/default/active_scaffold.js +2 -2
- data/test/mock_app/public/stylesheets/active_scaffold/default/stylesheet.css +13 -7
- metadata +137 -154
- data/frontends/default/views/_list_with_header.html.erb~ +0 -32
- data/frontends/default/views/_render_field.js.rjs +0 -14
- data/frontends/default/views/_show.html.erb~ +0 -8
- data/frontends/default/views/_update_form.html.erb~ +0 -6
- data/frontends/default/views/add_existing.js.erb~ +0 -18
- data/frontends/default/views/add_existing.js.rjs +0 -17
- data/frontends/default/views/destroy.js.rjs +0 -23
- data/frontends/default/views/form_messages.js.rjs +0 -1
- data/frontends/default/views/list.js.rjs +0 -1
- data/frontends/default/views/on_action_update.js.rjs +0 -10
- data/frontends/default/views/on_create.js.rjs +0 -41
- data/frontends/default/views/on_mark_all.js.rjs +0 -12
- data/frontends/default/views/on_update.js.rjs +0 -28
- data/frontends/default/views/render_field.js.rjs +0 -1
- data/frontends/default/views/update_column.js.rjs +0 -13
- data/frontends/default/views/update_row.js.rjs +0 -1
- data/lib/active_scaffold.rb~ +0 -362
- data/lib/active_scaffold/bridges/ancestry/bridge.rb +0 -5
- data/lib/active_scaffold/bridges/bridge.rb +0 -59
- data/lib/active_scaffold/bridges/cancan/bridge.rb +0 -12
- data/lib/active_scaffold/bridges/carrierwave/bridge.rb +0 -9
- data/lib/active_scaffold/bridges/carrierwave/lib/carrierwave_bridge.rb +0 -33
- data/lib/active_scaffold/bridges/carrierwave/lib/carrierwave_bridge_helpers.rb +0 -12
- data/lib/active_scaffold/bridges/country_helper/bridge.rb +0 -9
- data/lib/active_scaffold/bridges/date_picker/bridge.rb +0 -24
- data/lib/active_scaffold/bridges/date_picker/lib/datepicker_bridge.rb +0 -234
- data/lib/active_scaffold/bridges/dragonfly/bridge.rb +0 -9
- data/lib/active_scaffold/bridges/dragonfly/lib/dragonfly_bridge.rb +0 -36
- data/lib/active_scaffold/bridges/dragonfly/lib/dragonfly_bridge_helpers.rb +0 -12
- data/lib/active_scaffold/bridges/file_column/bridge.rb +0 -11
- data/lib/active_scaffold/bridges/file_column/lib/file_column_helpers.rb +0 -59
- data/lib/active_scaffold/bridges/paperclip/bridge.rb +0 -12
- data/lib/active_scaffold/bridges/paperclip/lib/paperclip_bridge.rb +0 -38
- data/lib/active_scaffold/bridges/paperclip/lib/paperclip_bridge_helpers.rb +0 -26
- data/lib/active_scaffold/bridges/record_select/bridge.rb +0 -5
- data/lib/active_scaffold/bridges/semantic_attributes/bridge.rb +0 -5
- data/lib/active_scaffold/bridges/shared/date_bridge.rb~ +0 -209
- data/lib/active_scaffold/bridges/tiny_mce/bridge.rb +0 -5
- data/lib/active_scaffold/bridges/validation_reflection/bridge.rb +0 -8
- data/lib/active_scaffold/bridges/validation_reflection/lib/validation_reflection_bridge.rb +0 -21
- data/lib/active_scaffold/config/base.rb~ +0 -70
- data/lib/active_scaffold/config/nested.rb~ +0 -41
- data/lib/active_scaffold/constraints.rb~ +0 -186
- data/lib/active_scaffold/data_structures/action_link.rb~ +0 -179
- data/lib/active_scaffold/data_structures/nested_info.rb~ +0 -123
- data/lib/active_scaffold/extensions/action_view_resolver.rb +0 -7
- data/lib/active_scaffold/extensions/active_association_reflection.rb~ +0 -22
- data/lib/active_scaffold/extensions/unsaved_associated.rb~ +0 -62
- data/lib/active_scaffold_assets.rb +0 -45
- data/lib/generators/active_scaffold_setup/USAGE +0 -10
- data/lib/generators/active_scaffold_setup/active_scaffold_setup_generator.rb +0 -59
@@ -108,18 +108,11 @@ module ActiveScaffold
|
|
108
108
|
|
109
109
|
def condition_value_for_datetime(value, conversion = :to_time)
|
110
110
|
if value.is_a? Hash
|
111
|
-
Time.zone.local(*[:year, :month, :day, :hour, :minute, :second].collect {|part| value[part].to_i}) rescue nil
|
111
|
+
Time.zone.local(*[:year, :month, :day, :hour, :minute, :second].collect {|part| value[field][part].to_i}) rescue nil
|
112
112
|
elsif value.respond_to?(:strftime)
|
113
113
|
value.send(conversion)
|
114
|
-
elsif conversion == :to_date
|
115
|
-
Date.strptime(value, I18n.t('date.formats.default')) rescue nil
|
116
114
|
else
|
117
|
-
|
118
|
-
time_parts = [[:hour, '%H'], [:min, '%M'], [:sec, '%S']].collect {|part, format_part| format_part if parts[part].present?}.compact
|
119
|
-
format = "#{I18n.t('date.formats.default')} #{time_parts.join(':')} #{'%z' if parts[:offset].present?}"
|
120
|
-
time = DateTime.strptime(value, format)
|
121
|
-
time = Time.zone.local_to_utc(time) unless parts[:offset]
|
122
|
-
time.in_time_zone.send(conversion) rescue nil
|
115
|
+
Time.zone.parse(value).in_time_zone.send(conversion) rescue nil
|
123
116
|
end unless value.nil? || value.blank?
|
124
117
|
end
|
125
118
|
|
@@ -277,7 +270,7 @@ module ActiveScaffold
|
|
277
270
|
# Returns a hash with options to count records, rejecting select and order options
|
278
271
|
# See finder_options for valid options
|
279
272
|
def count_options(find_options = {}, count_includes = nil)
|
280
|
-
count_includes ||= find_options[:includes] unless find_options[:
|
273
|
+
count_includes ||= find_options[:includes] unless find_options[:conditions].nil?
|
281
274
|
options = find_options.reject{|k,v| [:select, :order].include? k}
|
282
275
|
options[:includes] = count_includes
|
283
276
|
options
|
@@ -296,7 +289,6 @@ module ActiveScaffold
|
|
296
289
|
# NOTE: we must use :include in the count query, because some conditions may reference other tables
|
297
290
|
if options[:pagination] && options[:pagination] != :infinite
|
298
291
|
count_query = append_to_query(klass, count_options(find_options, options[:count_includes]))
|
299
|
-
debugger
|
300
292
|
count = count_query.count unless options[:pagination] == :infinite
|
301
293
|
end
|
302
294
|
|
@@ -2,7 +2,7 @@ module ActiveScaffold
|
|
2
2
|
module Helpers
|
3
3
|
module ControllerHelpers
|
4
4
|
def self.included(controller)
|
5
|
-
controller.class_eval { helper_method :params_for, :main_path_to_return, :render_parent?, :render_parent_options, :render_parent_action, :nested_singular_association
|
5
|
+
controller.class_eval { helper_method :params_for, :main_path_to_return, :render_parent?, :render_parent_options, :render_parent_action, :nested_singular_association?, :build_associated}
|
6
6
|
end
|
7
7
|
|
8
8
|
include ActiveScaffold::Helpers::IdHelpers
|
@@ -82,6 +82,14 @@ module ActiveScaffold
|
|
82
82
|
end if @parent_action.nil?
|
83
83
|
@parent_action
|
84
84
|
end
|
85
|
+
|
86
|
+
def build_associated(column, record)
|
87
|
+
if column.singular_association?
|
88
|
+
record.send(:"build_#{column.name}")
|
89
|
+
else
|
90
|
+
record.send(column.name).build
|
91
|
+
end
|
92
|
+
end
|
85
93
|
end
|
86
94
|
end
|
87
95
|
end
|
@@ -33,7 +33,8 @@ module ActiveScaffold
|
|
33
33
|
parameters[:eid] = params[:parent_controller]
|
34
34
|
end
|
35
35
|
if nested?
|
36
|
-
parameters
|
36
|
+
parameters[:controller] = nested.parent_scaffold.controller_path
|
37
|
+
parameters[:eid] = nil
|
37
38
|
end
|
38
39
|
if params[:parent_sti]
|
39
40
|
parameters[:controller] = params[:parent_sti]
|
@@ -83,11 +84,17 @@ module ActiveScaffold
|
|
83
84
|
end
|
84
85
|
|
85
86
|
def build_associated(column, record)
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
87
|
+
child = column.singular_association? ? record.send(:"build_#{column.name}") : record.send(column.name).build
|
88
|
+
if record.new_record? && (reflection = record.class.reflect_on_association(column.name)).try(:reverse)
|
89
|
+
reverse_macro = child.class.reflect_on_association(reflection.reverse).macro
|
90
|
+
if [:has_one, :belongs_to].include?(reverse_macro) # singular
|
91
|
+
child.send(:"#{reflection.reverse}=", record)
|
92
|
+
# TODO: Might want to extend with this branch in the future
|
93
|
+
# else # plural
|
94
|
+
# child.send(:"#{reflection.reverse}") << record
|
95
|
+
end
|
90
96
|
end
|
97
|
+
child
|
91
98
|
end
|
92
99
|
end
|
93
100
|
end
|
@@ -72,7 +72,7 @@ module ActiveScaffold
|
|
72
72
|
|
73
73
|
# Fix for keeping unique IDs in subform
|
74
74
|
id_control = "record_#{column.name}_#{[params[:eid], params[:id]].compact.join '_'}"
|
75
|
-
id_control += scope
|
75
|
+
id_control += scope_id(scope) if scope
|
76
76
|
|
77
77
|
{ :name => name, :class => "#{column.name}-input", :id => id_control}.merge(options)
|
78
78
|
end
|
@@ -102,10 +102,9 @@ module ActiveScaffold
|
|
102
102
|
select_options = options_for_association(column.association)
|
103
103
|
select_options.unshift([ associated.to_label, associated.id ]) unless associated.nil? or select_options.find {|label, id| id == associated.id}
|
104
104
|
|
105
|
-
selected = associated.nil? ? nil : associated.id
|
106
105
|
method = column.name
|
107
106
|
#html_options[:name] += '[id]'
|
108
|
-
options = {:selected =>
|
107
|
+
options = {:selected => associated.try(:id), :include_blank => as_(:_select_)}
|
109
108
|
|
110
109
|
html_options.update(column.options[:html_options] || {})
|
111
110
|
options.update(column.options)
|
@@ -116,25 +115,26 @@ module ActiveScaffold
|
|
116
115
|
def active_scaffold_input_plural_association(column, options)
|
117
116
|
associated_options = @record.send(column.association.name).collect {|r| [r.to_label, r.id]}
|
118
117
|
select_options = associated_options | options_for_association(column.association)
|
119
|
-
return content_tag(:span, as_(:no_options), :id => options[:id]) if select_options.empty?
|
118
|
+
return content_tag(:span, as_(:no_options), :class => options[:class], :id => options[:id]) if select_options.empty?
|
120
119
|
|
121
120
|
active_scaffold_checkbox_list(column, select_options, associated_options.collect {|a| a[1]}, options)
|
122
121
|
end
|
123
122
|
|
124
123
|
def active_scaffold_checkbox_list(column, select_options, associated_ids, options)
|
125
|
-
html =
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
124
|
+
html = content_tag :ul, :class => "#{options[:class]} checkbox-list", :id => options[:id] do
|
125
|
+
content = "".html_safe
|
126
|
+
select_options.each_with_index do |option, i|
|
127
|
+
label, id = option
|
128
|
+
this_id = "#{options[:id]}_#{i}_id"
|
129
|
+
content << content_tag(:li) do
|
130
|
+
check_box_tag("#{options[:name]}[]", id, associated_ids.include?(id), :id => this_id) <<
|
131
|
+
content_tag(:label, h(label), :for => this_id)
|
132
|
+
end
|
133
133
|
end
|
134
|
+
content
|
134
135
|
end
|
135
|
-
html << '</ul>'
|
136
136
|
html << javascript_tag("new DraggableLists('#{options[:id]}')") if column.options[:draggable_lists]
|
137
|
-
html
|
137
|
+
html
|
138
138
|
end
|
139
139
|
|
140
140
|
def active_scaffold_translated_option(column, text, value = nil)
|
@@ -171,7 +171,7 @@ module ActiveScaffold
|
|
171
171
|
end
|
172
172
|
|
173
173
|
def active_scaffold_input_checkbox(column, options)
|
174
|
-
check_box(:record, column.name, options)
|
174
|
+
check_box(:record, column.name, options.merge(column.options))
|
175
175
|
end
|
176
176
|
|
177
177
|
def active_scaffold_input_password(column, options)
|
@@ -210,8 +210,7 @@ module ActiveScaffold
|
|
210
210
|
|
211
211
|
# add functionality for overriding subform partials from association class path
|
212
212
|
def override_subform_partial?(column, subform_partial)
|
213
|
-
|
214
|
-
template_exists?(partial_name, path, true)
|
213
|
+
template_exists?(override_subform_partial(column, subform_partial), true)
|
215
214
|
end
|
216
215
|
|
217
216
|
def override_subform_partial(column, subform_partial)
|
@@ -219,13 +218,13 @@ module ActiveScaffold
|
|
219
218
|
end
|
220
219
|
|
221
220
|
def override_form_field_partial?(column)
|
222
|
-
|
223
|
-
template_exists?(partial_name, path, true)
|
221
|
+
template_exists?(override_form_field_partial(column), true)
|
224
222
|
end
|
225
223
|
|
226
|
-
# the naming convention for overriding form fields with
|
224
|
+
# the naming convention for overriding form fields with helpers
|
227
225
|
def override_form_field_partial(column)
|
228
|
-
|
226
|
+
path = active_scaffold_controller_for(column.active_record_class).controller_path
|
227
|
+
File.join(path, "#{clean_column_name(column.name)}_form_column")
|
229
228
|
end
|
230
229
|
|
231
230
|
def override_form_field(column)
|
@@ -121,7 +121,8 @@ module ActiveScaffold
|
|
121
121
|
end
|
122
122
|
|
123
123
|
def active_scaffold_checkbox_list(column, select_options, associated_ids, options)
|
124
|
-
|
124
|
+
options[:class] << " checkbox-list"
|
125
|
+
html = content_tag :ul, :class => options[:class], :id => options[:id] do
|
125
126
|
content = "".html_safe
|
126
127
|
select_options.each_with_index do |option, i|
|
127
128
|
label, id = option
|
@@ -3,7 +3,7 @@ module ActiveScaffold
|
|
3
3
|
# A bunch of helper methods to produce the common view ids
|
4
4
|
module IdHelpers
|
5
5
|
def id_from_controller(controller)
|
6
|
-
controller.to_s.gsub("/", "__")
|
6
|
+
controller.to_s.gsub("/", "__").html_safe
|
7
7
|
end
|
8
8
|
|
9
9
|
def controller_id(controller = (params[:eid] || params[:parent_controller] || params[:controller]))
|
@@ -42,10 +42,6 @@ module ActiveScaffold
|
|
42
42
|
"#{controller_id}-search-input"
|
43
43
|
end
|
44
44
|
|
45
|
-
def table_action_id(name)
|
46
|
-
"#{controller_id}-action-table-#{name}"
|
47
|
-
end
|
48
|
-
|
49
45
|
def action_link_id(link_action,link_id)
|
50
46
|
"#{controller_id}-#{link_action}-#{link_id}-link"
|
51
47
|
end
|
@@ -115,6 +111,10 @@ module ActiveScaffold
|
|
115
111
|
def action_iframe_id(options)
|
116
112
|
"#{controller_id}-#{options[:action]}-#{options[:id]}-iframe"
|
117
113
|
end
|
114
|
+
|
115
|
+
def scope_id(scope)
|
116
|
+
scope.gsub(/(\[|\])/, '_').gsub('__', '_').gsub(/_$/, '')
|
117
|
+
end
|
118
118
|
|
119
119
|
private
|
120
120
|
|
@@ -34,14 +34,13 @@ module ActiveScaffold
|
|
34
34
|
if column.link
|
35
35
|
link = column.link
|
36
36
|
associated = record.send(column.association.name) if column.association
|
37
|
-
url_options = params_for(:action => nil, :id => record.id)
|
37
|
+
url_options = params_for(:action => nil, :id => record.id, :link => text)
|
38
38
|
|
39
39
|
# setup automatic link
|
40
40
|
if column.autolink? && column.singular_association? # link to inline form
|
41
|
-
link = action_link_to_inline_form(column, record, associated
|
42
|
-
return text if link.nil?
|
43
|
-
|
44
|
-
url_options[:link] = text
|
41
|
+
link = action_link_to_inline_form(column, record, associated)
|
42
|
+
return text if link.crud_type.nil?
|
43
|
+
url_options[:link] = as_(:create_new) if link.crud_type == :create
|
45
44
|
end
|
46
45
|
|
47
46
|
if column_link_authorized?(link, column, record, associated)
|
@@ -56,9 +55,8 @@ module ActiveScaffold
|
|
56
55
|
end
|
57
56
|
|
58
57
|
# setup the action link to inline form
|
59
|
-
def action_link_to_inline_form(column, record, associated
|
58
|
+
def action_link_to_inline_form(column, record, associated)
|
60
59
|
link = column.link.clone
|
61
|
-
link.label = text
|
62
60
|
if column.polymorphic_association?
|
63
61
|
polymorphic_controller = controller_path_for_activerecord(record.send(column.association.name).class)
|
64
62
|
return link if polymorphic_controller.nil?
|
@@ -72,7 +70,6 @@ module ActiveScaffold
|
|
72
70
|
if actions.include?(:new)
|
73
71
|
link.action = 'new'
|
74
72
|
link.crud_type = :create
|
75
|
-
link.label = as_(:create_new)
|
76
73
|
end
|
77
74
|
elsif actions.include?(:edit)
|
78
75
|
link.action = 'edit'
|
@@ -84,7 +81,7 @@ module ActiveScaffold
|
|
84
81
|
link.action = 'index'
|
85
82
|
link.crud_type = :read
|
86
83
|
end
|
87
|
-
link
|
84
|
+
link
|
88
85
|
end
|
89
86
|
|
90
87
|
def column_link_authorized?(link, column, record, associated)
|
@@ -122,17 +119,6 @@ module ActiveScaffold
|
|
122
119
|
truncate(clean_column_value(record.send(column.name)), :length => column.options[:truncate] || 50)
|
123
120
|
end
|
124
121
|
|
125
|
-
def active_scaffold_column_select(column, record)
|
126
|
-
if column.association
|
127
|
-
format_column_value(record, column)
|
128
|
-
else
|
129
|
-
value = record.send(column.name)
|
130
|
-
text, val = column.options[:options].find {|text, val| (val || text).to_s == value}
|
131
|
-
value = active_scaffold_translated_option(column, text, val).first if text
|
132
|
-
format_column_value(record, column, value)
|
133
|
-
end
|
134
|
-
end
|
135
|
-
|
136
122
|
def active_scaffold_column_checkbox(column, record)
|
137
123
|
options = {:disabled => true, :id => nil, :object => record}
|
138
124
|
options.delete(:disabled) if inplace_edit?(record, column)
|
@@ -167,9 +153,13 @@ module ActiveScaffold
|
|
167
153
|
value ||= record.send(column.name) unless record.nil?
|
168
154
|
if value && column.association # cache association size before calling column_empty?
|
169
155
|
associated_size = value.size if column.plural_association? and column.associated_number? # get count before cache association
|
170
|
-
cache_association(value, column)
|
156
|
+
cache_association(value, column) if column.plural_association?
|
171
157
|
end
|
172
158
|
if column.association.nil? or column_empty?(value)
|
159
|
+
if column.form_ui == :select && column.options[:options]
|
160
|
+
text, val = column.options[:options].find {|text, val| (val.nil? ? text : val).to_s == value.to_s}
|
161
|
+
value = active_scaffold_translated_option(column, text, val).first if text
|
162
|
+
end
|
173
163
|
if value.is_a? Numeric
|
174
164
|
format_number_value(value, column.options)
|
175
165
|
else
|
@@ -189,7 +179,7 @@ module ActiveScaffold
|
|
189
179
|
when :currency
|
190
180
|
number_to_currency(value, options[:i18n_options] || {})
|
191
181
|
when :i18n_number
|
192
|
-
|
182
|
+
number_with_delimiter(value, options[:i18n_options] || {})
|
193
183
|
else
|
194
184
|
value
|
195
185
|
end
|
@@ -206,10 +196,10 @@ module ActiveScaffold
|
|
206
196
|
end
|
207
197
|
when :has_many, :has_and_belongs_to_many
|
208
198
|
if column.associated_limit.nil?
|
209
|
-
firsts = value.collect { |v| v.to_label }
|
199
|
+
firsts = value.collect { |v| clean_column_value(v.to_label) }
|
210
200
|
else
|
211
201
|
firsts = value.first(column.associated_limit)
|
212
|
-
firsts.collect! { |v| v.to_label }
|
202
|
+
firsts.collect! { |v| clean_column_value(v.to_label) }
|
213
203
|
firsts[column.associated_limit] = '…' if value.size > column.associated_limit
|
214
204
|
end
|
215
205
|
if column.associated_limit == 0
|
@@ -34,14 +34,13 @@ module ActiveScaffold
|
|
34
34
|
if column.link
|
35
35
|
link = column.link
|
36
36
|
associated = record.send(column.association.name) if column.association
|
37
|
-
url_options = params_for(:action => nil, :id => record.id)
|
37
|
+
url_options = params_for(:action => nil, :id => record.id, :link => text)
|
38
38
|
|
39
39
|
# setup automatic link
|
40
40
|
if column.autolink? && column.singular_association? # link to inline form
|
41
|
-
link = action_link_to_inline_form(column, record, associated
|
42
|
-
return text if link.nil?
|
43
|
-
|
44
|
-
url_options[:link] = text
|
41
|
+
link = action_link_to_inline_form(column, record, associated)
|
42
|
+
return text if link.crud_type.nil?
|
43
|
+
url_options[:link] = as_(:create_new) if link.crud_type == :create
|
45
44
|
end
|
46
45
|
|
47
46
|
if column_link_authorized?(link, column, record, associated)
|
@@ -56,9 +55,8 @@ module ActiveScaffold
|
|
56
55
|
end
|
57
56
|
|
58
57
|
# setup the action link to inline form
|
59
|
-
def action_link_to_inline_form(column, record, associated
|
58
|
+
def action_link_to_inline_form(column, record, associated)
|
60
59
|
link = column.link.clone
|
61
|
-
link.label = text
|
62
60
|
if column.polymorphic_association?
|
63
61
|
polymorphic_controller = controller_path_for_activerecord(record.send(column.association.name).class)
|
64
62
|
return link if polymorphic_controller.nil?
|
@@ -72,7 +70,6 @@ module ActiveScaffold
|
|
72
70
|
if actions.include?(:new)
|
73
71
|
link.action = 'new'
|
74
72
|
link.crud_type = :create
|
75
|
-
link.label = as_(:create_new)
|
76
73
|
end
|
77
74
|
elsif actions.include?(:edit)
|
78
75
|
link.action = 'edit'
|
@@ -84,7 +81,7 @@ module ActiveScaffold
|
|
84
81
|
link.action = 'index'
|
85
82
|
link.crud_type = :read
|
86
83
|
end
|
87
|
-
link
|
84
|
+
link
|
88
85
|
end
|
89
86
|
|
90
87
|
def column_link_authorized?(link, column, record, associated)
|
@@ -119,7 +116,7 @@ module ActiveScaffold
|
|
119
116
|
## Overrides
|
120
117
|
##
|
121
118
|
def active_scaffold_column_text(column, record)
|
122
|
-
clean_column_value(
|
119
|
+
truncate(clean_column_value(record.send(column.name)), :length => column.options[:truncate] || 50)
|
123
120
|
end
|
124
121
|
|
125
122
|
def active_scaffold_column_checkbox(column, record)
|
@@ -190,25 +187,25 @@ module ActiveScaffold
|
|
190
187
|
end
|
191
188
|
|
192
189
|
def format_association_value(value, column, size)
|
193
|
-
|
190
|
+
case column.association.macro
|
194
191
|
when :has_one, :belongs_to
|
195
192
|
if column.polymorphic_association?
|
196
|
-
"#{value.class.model_name.human}: #{value.to_label}"
|
193
|
+
format_value("#{value.class.model_name.human}: #{value.to_label}")
|
197
194
|
else
|
198
|
-
value.to_label
|
195
|
+
format_value(value.to_label)
|
199
196
|
end
|
200
197
|
when :has_many, :has_and_belongs_to_many
|
201
198
|
if column.associated_limit.nil?
|
202
|
-
firsts = value.collect { |v| v.to_label }
|
199
|
+
firsts = value.collect { |v| clean_column_value(v.to_label) }
|
203
200
|
else
|
204
201
|
firsts = value.first(column.associated_limit)
|
205
|
-
firsts.collect! { |v| v.to_label }
|
202
|
+
firsts.collect! { |v| clean_column_value(v.to_label) }
|
206
203
|
firsts[column.associated_limit] = '…' if value.size > column.associated_limit
|
207
204
|
end
|
208
205
|
if column.associated_limit == 0
|
209
206
|
size if column.associated_number?
|
210
207
|
else
|
211
|
-
joined_associated = firsts.join(active_scaffold_config.list.association_join_text)
|
208
|
+
joined_associated = format_value(firsts.join(active_scaffold_config.list.association_join_text))
|
212
209
|
joined_associated << " (#{size})" if column.associated_number? and column.associated_limit and value.size > column.associated_limit
|
213
210
|
joined_associated
|
214
211
|
end
|
@@ -275,13 +272,11 @@ module ActiveScaffold
|
|
275
272
|
|
276
273
|
def inplace_edit_control(column)
|
277
274
|
if inplace_edit?(active_scaffold_config.model, column) and inplace_edit_cloning?(column)
|
278
|
-
|
275
|
+
@record = new_model
|
279
276
|
column = column.clone
|
280
277
|
column.options = column.options.clone
|
281
278
|
column.form_ui = :select if (column.association && column.form_ui.nil?)
|
282
|
-
content_tag(:div, active_scaffold_input_for(column), :style => "display:none;", :class => inplace_edit_control_css_class)
|
283
|
-
@record = old_record
|
284
|
-
end
|
279
|
+
content_tag(:div, active_scaffold_input_for(column), {:style => "display:none;", :class => inplace_edit_control_css_class})
|
285
280
|
end
|
286
281
|
end
|
287
282
|
|
@@ -74,7 +74,7 @@ module ActiveScaffold
|
|
74
74
|
associated = html_options.delete :value
|
75
75
|
if column.association
|
76
76
|
associated = associated.is_a?(Array) ? associated.map(&:to_i) : associated.to_i unless associated.nil?
|
77
|
-
method = column.association.macro == :belongs_to ? column.association.
|
77
|
+
method = column.association.macro == :belongs_to ? column.association.foreign_key : column.name
|
78
78
|
select_options = options_for_association(column.association, true)
|
79
79
|
else
|
80
80
|
method = column.name
|
@@ -146,6 +146,15 @@ module ActiveScaffold
|
|
146
146
|
select_options
|
147
147
|
end
|
148
148
|
|
149
|
+
def include_null_comparators?(column)
|
150
|
+
return column.options[:null_comparators] if column.options.has_key? :null_comparators
|
151
|
+
if column.association
|
152
|
+
column.association.macro != :belongs_to || active_scaffold_config.columns[column.association.primary_key_name].column.try(:null)
|
153
|
+
else
|
154
|
+
column.column.try(:null)
|
155
|
+
end
|
156
|
+
end
|
157
|
+
|
149
158
|
def active_scaffold_search_range(column, options)
|
150
159
|
opt_value, from_value, to_value = field_search_params_range_values(column)
|
151
160
|
|