active_scaffold 3.7.12 → 4.0.0.rc1
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.
- checksums.yaml +4 -4
- data/CHANGELOG.rdoc +9 -23
- data/README.md +3 -2
- data/app/assets/config/active_scaffold_manifest.js +3 -0
- data/app/assets/javascripts/active_scaffold.js.erb +24 -34
- data/app/assets/javascripts/jquery/active_scaffold.js +41 -58
- data/app/assets/javascripts/jquery/date_picker_bridge.js.erb +1 -1
- data/app/assets/stylesheets/active_scaffold_colors.scss +0 -7
- data/app/assets/stylesheets/active_scaffold_extensions.css.erb +2 -2
- data/app/assets/stylesheets/active_scaffold_jquery_ui.css.erb +7 -7
- data/app/assets/stylesheets/active_scaffold_layout.css +57 -30
- data/app/views/active_scaffold_overrides/_add_existing_form.html.erb +10 -10
- data/app/views/active_scaffold_overrides/_base_form.html.erb +21 -21
- data/app/views/active_scaffold_overrides/_create_form.html.erb +10 -7
- data/app/views/active_scaffold_overrides/_create_form_on_list.html.erb +5 -5
- data/app/views/active_scaffold_overrides/_field_search.html.erb +6 -6
- data/app/views/active_scaffold_overrides/_form.html.erb +11 -14
- data/app/views/active_scaffold_overrides/_form_association.html.erb +21 -12
- data/app/views/active_scaffold_overrides/_form_association_footer.html.erb +19 -10
- data/app/views/active_scaffold_overrides/_form_association_record.html.erb +15 -21
- data/app/views/active_scaffold_overrides/_form_messages.html.erb +2 -2
- data/app/views/active_scaffold_overrides/_horizontal_subform.html.erb +7 -6
- data/app/views/active_scaffold_overrides/_human_conditions.html.erb +2 -2
- data/app/views/active_scaffold_overrides/_list.html.erb +15 -8
- data/app/views/active_scaffold_overrides/_list_calculations.html.erb +2 -3
- data/app/views/active_scaffold_overrides/_list_header.html.erb +2 -2
- data/app/views/active_scaffold_overrides/_list_inline_adapter.html.erb +5 -5
- data/app/views/active_scaffold_overrides/_list_messages.html.erb +12 -3
- data/app/views/active_scaffold_overrides/_list_pagination.html.erb +3 -3
- data/app/views/active_scaffold_overrides/_list_pagination_links.html.erb +4 -4
- data/app/views/active_scaffold_overrides/_list_record.html.erb +6 -6
- data/app/views/active_scaffold_overrides/_list_with_header.html.erb +4 -4
- data/app/views/active_scaffold_overrides/_messages.html.erb +1 -1
- data/app/views/active_scaffold_overrides/_refresh_list.js.erb +2 -2
- data/app/views/active_scaffold_overrides/_render_field.js.erb +4 -4
- data/app/views/active_scaffold_overrides/_row.html.erb +1 -1
- data/app/views/active_scaffold_overrides/_search.html.erb +6 -5
- data/app/views/active_scaffold_overrides/_show.html.erb +3 -3
- data/app/views/active_scaffold_overrides/_show_actions.html.erb +1 -1
- data/app/views/active_scaffold_overrides/_show_association.html.erb +1 -1
- data/app/views/active_scaffold_overrides/_show_association_horizontal.html.erb +1 -1
- data/app/views/active_scaffold_overrides/_show_association_vertical.html.erb +1 -1
- data/app/views/active_scaffold_overrides/_show_columns.html.erb +1 -1
- data/app/views/active_scaffold_overrides/_show_horizontal_record.html.erb +1 -1
- data/app/views/active_scaffold_overrides/_update_actions.html.erb +1 -1
- data/app/views/active_scaffold_overrides/_update_calculations.js.erb +2 -2
- data/app/views/active_scaffold_overrides/_update_column.js.erb +8 -7
- data/app/views/active_scaffold_overrides/_update_form.html.erb +5 -5
- data/app/views/active_scaffold_overrides/_update_messages.js.erb +1 -1
- data/app/views/active_scaffold_overrides/_vertical_subform.html.erb +4 -3
- data/app/views/active_scaffold_overrides/action_confirmation.html.erb +3 -3
- data/app/views/active_scaffold_overrides/add_existing.js.erb +6 -6
- data/app/views/active_scaffold_overrides/add_existing_form.html.erb +1 -1
- data/app/views/active_scaffold_overrides/add_tab.js.erb +15 -0
- data/app/views/active_scaffold_overrides/create.html.erb +1 -1
- data/app/views/active_scaffold_overrides/delete.html.erb +4 -4
- data/app/views/active_scaffold_overrides/destroy.js.erb +15 -13
- data/app/views/active_scaffold_overrides/edit_associated.js.erb +3 -3
- data/app/views/active_scaffold_overrides/field_search.html.erb +1 -1
- data/app/views/active_scaffold_overrides/form_messages.js.erb +1 -1
- data/app/views/active_scaffold_overrides/list.html.erb +1 -1
- data/app/views/active_scaffold_overrides/on_action_update.js.erb +13 -8
- data/app/views/active_scaffold_overrides/on_create.js.erb +34 -6
- data/app/views/active_scaffold_overrides/on_mark.js.erb +3 -3
- data/app/views/active_scaffold_overrides/on_update.js.erb +9 -9
- data/app/views/active_scaffold_overrides/render_field.js.erb +1 -1
- data/app/views/active_scaffold_overrides/render_field_inplace.html.erb +1 -1
- data/app/views/active_scaffold_overrides/row.js.erb +2 -2
- data/app/views/active_scaffold_overrides/search.html.erb +1 -1
- data/app/views/active_scaffold_overrides/show.html.erb +3 -3
- data/app/views/active_scaffold_overrides/update.html.erb +2 -2
- data/app/views/active_scaffold_overrides/update_column.js.erb +4 -4
- data/app/views/active_scaffold_overrides/update_row.js.erb +1 -1
- data/lib/active_scaffold/actions/common_search.rb +5 -3
- data/lib/active_scaffold/actions/core.rb +57 -32
- data/lib/active_scaffold/actions/create.rb +19 -17
- data/lib/active_scaffold/actions/delete.rb +10 -12
- data/lib/active_scaffold/actions/field_search.rb +28 -13
- data/lib/active_scaffold/actions/list.rb +34 -34
- data/lib/active_scaffold/actions/mark.rb +5 -5
- data/lib/active_scaffold/actions/nested.rb +64 -56
- data/lib/active_scaffold/actions/search.rb +2 -2
- data/lib/active_scaffold/actions/show.rb +5 -5
- data/lib/active_scaffold/actions/subform.rb +15 -4
- data/lib/active_scaffold/actions/update.rb +20 -20
- data/lib/active_scaffold/active_record_permissions.rb +4 -3
- data/lib/active_scaffold/attribute_params.rb +51 -50
- data/lib/active_scaffold/bridges/active_storage/active_storage_bridge.rb +4 -4
- data/lib/active_scaffold/bridges/active_storage/active_storage_helpers.rb +6 -2
- data/lib/active_scaffold/bridges/active_storage.rb +1 -1
- data/lib/active_scaffold/bridges/ancestry/ancestry_bridge.rb +3 -3
- data/lib/active_scaffold/bridges/bitfields/bitfields_bridge.rb +4 -1
- data/lib/active_scaffold/bridges/bitfields.rb +1 -1
- data/lib/active_scaffold/bridges/cancan/cancan_bridge.rb +9 -8
- data/lib/active_scaffold/bridges/cancan.rb +8 -8
- data/lib/active_scaffold/bridges/carrierwave/form_ui.rb +1 -1
- data/lib/active_scaffold/bridges/carrierwave/list_ui.rb +4 -3
- data/lib/active_scaffold/bridges/carrierwave.rb +2 -2
- data/lib/active_scaffold/bridges/chosen.rb +1 -5
- data/lib/active_scaffold/bridges/country_select/country_select_bridge_helper.rb +4 -2
- data/lib/active_scaffold/bridges/date_picker/ext.rb +20 -12
- data/lib/active_scaffold/bridges/date_picker/helper.rb +37 -33
- data/lib/active_scaffold/bridges/date_picker.rb +1 -4
- data/lib/active_scaffold/bridges/dragonfly/dragonfly_bridge.rb +1 -1
- data/lib/active_scaffold/bridges/dragonfly/list_ui.rb +3 -2
- data/lib/active_scaffold/bridges/dragonfly.rb +1 -1
- data/lib/active_scaffold/bridges/file_column/as_file_column_bridge.rb +3 -2
- data/lib/active_scaffold/bridges/file_column/file_column_helpers.rb +2 -1
- data/lib/active_scaffold/bridges/file_column/form_ui.rb +4 -9
- data/lib/active_scaffold/bridges/file_column/list_ui.rb +6 -3
- data/lib/active_scaffold/bridges/file_column/test/functional/file_column_keep_test.rb +3 -3
- data/lib/active_scaffold/bridges/file_column/test/mock_model.rb +1 -4
- data/lib/active_scaffold/bridges/file_column.rb +1 -0
- data/lib/active_scaffold/bridges/paper_trail/actions.rb +4 -2
- data/lib/active_scaffold/bridges/paper_trail/config.rb +1 -1
- data/lib/active_scaffold/bridges/paper_trail/helper.rb +1 -1
- data/lib/active_scaffold/bridges/paper_trail/paper_trail_bridge.rb +2 -1
- data/lib/active_scaffold/bridges/paperclip/list_ui.rb +3 -2
- data/lib/active_scaffold/bridges/paperclip/paperclip_bridge.rb +1 -1
- data/lib/active_scaffold/bridges/paperclip/paperclip_bridge_helpers.rb +10 -9
- data/lib/active_scaffold/bridges/paperclip.rb +2 -1
- data/lib/active_scaffold/bridges/record_select/helpers.rb +10 -11
- data/lib/active_scaffold/bridges/semantic_attributes/column.rb +3 -1
- data/lib/active_scaffold/bridges/tiny_mce/helpers.rb +3 -7
- data/lib/active_scaffold/bridges/tiny_mce.rb +2 -7
- data/lib/active_scaffold/bridges/usa_state_select/usa_state_select_helper.rb +7 -7
- data/lib/active_scaffold/bridges.rb +7 -5
- data/lib/active_scaffold/config/base.rb +20 -24
- data/lib/active_scaffold/config/core.rb +27 -39
- data/lib/active_scaffold/config/create.rb +1 -1
- data/lib/active_scaffold/config/delete.rb +9 -9
- data/lib/active_scaffold/config/field_search.rb +4 -9
- data/lib/active_scaffold/config/form.rb +3 -1
- data/lib/active_scaffold/config/list.rb +19 -15
- data/lib/active_scaffold/config/nested.rb +2 -2
- data/lib/active_scaffold/config/search.rb +5 -5
- data/lib/active_scaffold/config/show.rb +1 -1
- data/lib/active_scaffold/config/subform.rb +1 -1
- data/lib/active_scaffold/config/update.rb +4 -5
- data/lib/active_scaffold/configurable.rb +2 -1
- data/lib/active_scaffold/constraints.rb +16 -11
- data/lib/active_scaffold/core.rb +25 -27
- data/lib/active_scaffold/data_structures/action_columns.rb +10 -3
- data/lib/active_scaffold/data_structures/action_link.rb +19 -9
- data/lib/active_scaffold/data_structures/action_links.rb +20 -26
- data/lib/active_scaffold/data_structures/actions.rb +3 -3
- data/lib/active_scaffold/data_structures/association/abstract.rb +8 -4
- data/lib/active_scaffold/data_structures/association/active_mongoid.rb +1 -0
- data/lib/active_scaffold/data_structures/association/active_record.rb +1 -4
- data/lib/active_scaffold/data_structures/column.rb +368 -327
- data/lib/active_scaffold/data_structures/columns.rb +3 -2
- data/lib/active_scaffold/data_structures/nested_info.rb +6 -5
- data/lib/active_scaffold/data_structures/proxy_column.rb +68 -0
- data/lib/active_scaffold/data_structures/set.rb +7 -4
- data/lib/active_scaffold/data_structures/sorting.rb +21 -12
- data/lib/active_scaffold/engine.rb +12 -12
- data/lib/active_scaffold/extensions/action_controller_rendering.rb +5 -5
- data/lib/active_scaffold/extensions/action_controller_rescueing.rb +1 -1
- data/lib/active_scaffold/extensions/action_view_rendering.rb +29 -31
- data/lib/active_scaffold/extensions/ice_nine.rb +2 -1
- data/lib/active_scaffold/extensions/localize.rb +2 -2
- data/lib/active_scaffold/extensions/name_option_for_datetime.rb +1 -1
- data/lib/active_scaffold/extensions/routing_mapper.rb +5 -4
- data/lib/active_scaffold/extensions/unsaved_associated.rb +3 -2
- data/lib/active_scaffold/finder.rb +71 -78
- data/lib/active_scaffold/helpers/action_link_helpers.rb +37 -49
- data/lib/active_scaffold/helpers/association_helpers.rb +3 -2
- data/lib/active_scaffold/helpers/controller_helpers.rb +18 -16
- data/lib/active_scaffold/helpers/form_column_helpers.rb +69 -53
- data/lib/active_scaffold/helpers/human_condition_helpers.rb +17 -15
- data/lib/active_scaffold/helpers/id_helpers.rb +5 -5
- data/lib/active_scaffold/helpers/list_column_helpers.rb +35 -38
- data/lib/active_scaffold/helpers/pagination_helpers.rb +4 -4
- data/lib/active_scaffold/helpers/search_column_helpers.rb +25 -34
- data/lib/active_scaffold/helpers/show_column_helpers.rb +7 -4
- data/lib/active_scaffold/helpers/tabs_helpers.rb +88 -0
- data/lib/active_scaffold/helpers/view_helpers.rb +15 -13
- data/lib/active_scaffold/marked_model.rb +1 -2
- data/lib/active_scaffold/orm_checks.rb +6 -4
- data/lib/active_scaffold/paginator.rb +3 -2
- data/lib/active_scaffold/registry.rb +5 -0
- data/lib/active_scaffold/tableless.rb +24 -14
- data/lib/active_scaffold/version.rb +4 -4
- data/lib/active_scaffold.rb +8 -34
- data/lib/generators/active_scaffold/controller_generator.rb +20 -20
- data/lib/generators/active_scaffold/install_generator.rb +4 -8
- data/lib/generators/active_scaffold/resource_generator.rb +31 -31
- data/lib/tasks/brakeman.rake +1 -1
- data/shoulda_macros/macros.rb +14 -14
- metadata +11 -232
- data/app/assets/javascripts/prototype/active_scaffold.js +0 -1249
- data/app/assets/javascripts/prototype/active_scaffold_chosen.js +0 -0
- data/app/assets/javascripts/prototype/dhtml_history.js +0 -870
- data/app/assets/javascripts/prototype/form_enhancements.js +0 -117
- data/app/assets/javascripts/prototype/tiny_mce_bridge.js +0 -17
- data/app/views/active_scaffold_overrides/_list_messages_content.html.erb +0 -8
- data/app/views/active_scaffold_overrides/_new_record.js.erb +0 -15
- data/app/views/active_scaffold_overrides/_popup_adapter.html.erb +0 -20
- data/app/views/active_scaffold_overrides/_refresh_create_form.js.erb +0 -12
- data/lib/active_scaffold/bridges/calendar_date_select/as_cds_bridge.rb +0 -58
- data/lib/active_scaffold/bridges/calendar_date_select.rb +0 -17
- data/lib/active_scaffold/data_structures/action_link_separator.rb +0 -13
- data/lib/active_scaffold/extensions/cow_proxy.rb +0 -102
- data/test/active_scaffold_config_mock.rb +0 -33
- data/test/bridges/bridge_test.rb +0 -88
- data/test/bridges/date_picker_test.rb +0 -31
- data/test/bridges/paper_trail_test.rb +0 -16
- data/test/bridges/paperclip_test.rb +0 -85
- data/test/bridges/tiny_mce_test.rb +0 -61
- data/test/class_with_finder.rb +0 -42
- data/test/company.rb +0 -97
- data/test/config/base_test.rb +0 -17
- data/test/config/core_test.rb +0 -66
- data/test/config/create_test.rb +0 -72
- data/test/config/delete_test.rb +0 -35
- data/test/config/field_search_test.rb +0 -49
- data/test/config/list_test.rb +0 -134
- data/test/config/nested_test.rb +0 -55
- data/test/config/search_test.rb +0 -62
- data/test/config/show_test.rb +0 -45
- data/test/config/subform_test.rb +0 -19
- data/test/config/update_test.rb +0 -52
- data/test/const_mocker.rb +0 -32
- data/test/data_structures/action_columns_test.rb +0 -112
- data/test/data_structures/action_link_test.rb +0 -79
- data/test/data_structures/action_links_test.rb +0 -78
- data/test/data_structures/actions_test.rb +0 -25
- data/test/data_structures/association_column_test.rb +0 -41
- data/test/data_structures/column_test.rb +0 -186
- data/test/data_structures/columns_test.rb +0 -68
- data/test/data_structures/set_test.rb +0 -84
- data/test/data_structures/sorting_test.rb +0 -148
- data/test/data_structures/standard_column_test.rb +0 -23
- data/test/data_structures/validation_reflection_test.rb +0 -69
- data/test/data_structures/virtual_column_test.rb +0 -23
- data/test/extensions/action_view_rendering_test.rb +0 -20
- data/test/extensions/active_record_test.rb +0 -44
- data/test/extensions/routing_mapper_test.rb +0 -73
- data/test/helpers/form_column_helpers_test.rb +0 -34
- data/test/helpers/list_column_helpers_test.rb +0 -53
- data/test/helpers/pagination_helpers_test.rb +0 -65
- data/test/helpers/search_column_helpers_test.rb +0 -15
- data/test/misc/active_record_permissions_test.rb +0 -193
- data/test/misc/attribute_params_test.rb +0 -460
- data/test/misc/calculation_test.rb +0 -39
- data/test/misc/configurable_test.rb +0 -97
- data/test/misc/constraints_test.rb +0 -209
- data/test/misc/convert_numbers_format_test.rb +0 -171
- data/test/misc/finder_test.rb +0 -124
- data/test/misc/lang_test.rb +0 -10
- data/test/misc/parse_datetime_test.rb +0 -159
- data/test/misc/render_test.rb +0 -9
- data/test/misc/tableless_test.rb +0 -56
- data/test/mock_app/.gitignore +0 -2
- data/test/mock_app/Rakefile +0 -7
- data/test/mock_app/app/assets/config/manifest.js +0 -0
- data/test/mock_app/app/controllers/addresses_controller.rb +0 -4
- data/test/mock_app/app/controllers/application_controller.rb +0 -10
- data/test/mock_app/app/controllers/buildings_controller.rb +0 -4
- data/test/mock_app/app/controllers/cars_controller.rb +0 -5
- data/test/mock_app/app/controllers/contacts_controller.rb +0 -4
- data/test/mock_app/app/controllers/floors_controller.rb +0 -6
- data/test/mock_app/app/controllers/people_controller.rb +0 -8
- data/test/mock_app/app/controllers/roles_controller.rb +0 -4
- data/test/mock_app/app/helpers/application_helper.rb +0 -3
- data/test/mock_app/app/models/address.rb +0 -3
- data/test/mock_app/app/models/building.rb +0 -9
- data/test/mock_app/app/models/car.rb +0 -3
- data/test/mock_app/app/models/contact.rb +0 -3
- data/test/mock_app/app/models/file_model.rb +0 -31
- data/test/mock_app/app/models/floor.rb +0 -8
- data/test/mock_app/app/models/person.rb +0 -12
- data/test/mock_app/app/models/role.rb +0 -3
- data/test/mock_app/app/views/active_scaffold_overrides/_form.html.erb +0 -2
- data/test/mock_app/app/views/active_scaffold_overrides/list.html.erb +0 -2
- data/test/mock_app/app/views/people/_first_name_form_column.html.erb +0 -2
- data/test/mock_app/app/views/people/_form.html.erb +0 -2
- data/test/mock_app/app/views/people/list.html.erb +0 -2
- data/test/mock_app/config/application.rb +0 -14
- data/test/mock_app/config/boot.rb +0 -7
- data/test/mock_app/config/database.yml +0 -16
- data/test/mock_app/config/environment.rb +0 -6
- data/test/mock_app/config/environments/development.rb +0 -24
- data/test/mock_app/config/environments/production.rb +0 -49
- data/test/mock_app/config/environments/test.rb +0 -34
- data/test/mock_app/config/initializers/backtrace_silencers.rb +0 -7
- data/test/mock_app/config/initializers/inflections.rb +0 -10
- data/test/mock_app/config/initializers/mime_types.rb +0 -5
- data/test/mock_app/config/initializers/secret_token.rb +0 -11
- data/test/mock_app/config/initializers/session_store.rb +0 -8
- data/test/mock_app/config/initializers/wrap_parameters.rb +0 -14
- data/test/mock_app/config/locales/en.yml +0 -5
- data/test/mock_app/config/routes.rb +0 -17
- data/test/mock_app/config.ru +0 -4
- data/test/mock_app/db/schema.rb +0 -68
- data/test/mock_app/db/test.sqlite3 +0 -1
- data/test/model_stub.rb +0 -64
- data/test/performance/list_cars_performance_test.rb +0 -34
- data/test/performance/list_people_performance_test.rb +0 -31
- data/test/performance_test_help.rb +0 -3
- data/test/run_all.rb +0 -6
- data/test/test_helper.rb +0 -71
- data/vendor/assets/javascripts/getprototypeof.js +0 -12
@@ -3,13 +3,14 @@ module ActiveScaffold
|
|
3
3
|
module ControllerHelpers
|
4
4
|
def self.included(controller)
|
5
5
|
return unless controller.respond_to? :helper_method
|
6
|
+
|
6
7
|
controller.class_eval do
|
7
8
|
helper_method :params_for, :conditions_from_params, :render_parent?,
|
8
9
|
:main_path_to_return, :render_parent_options,
|
9
10
|
:render_parent_action, :nested_singular_association?,
|
10
11
|
:main_form_controller, :build_associated,
|
11
12
|
:generate_temporary_id, :generated_id,
|
12
|
-
:active_scaffold_config_for
|
13
|
+
:active_scaffold_config_for, :tabbed_by_association
|
13
14
|
end
|
14
15
|
end
|
15
16
|
|
@@ -17,11 +18,7 @@ module ActiveScaffold
|
|
17
18
|
|
18
19
|
def active_scaffold_config_for(klass)
|
19
20
|
config = self.class.active_scaffold_config_for(klass)
|
20
|
-
|
21
|
-
config.user || config.new_user_settings({}, {})
|
22
|
-
else
|
23
|
-
config
|
24
|
-
end
|
21
|
+
config.user || config.new_user_settings({}, {})
|
25
22
|
end
|
26
23
|
|
27
24
|
def generate_temporary_id(record = nil, generated_id = nil)
|
@@ -67,7 +64,7 @@ module ActiveScaffold
|
|
67
64
|
params.except(*BLACKLIST_PARAMS).each do |key, value|
|
68
65
|
@params_for[key.to_sym] = copy_param(value)
|
69
66
|
end
|
70
|
-
@params_for[:controller] =
|
67
|
+
@params_for[:controller] = "/#{@params_for[:controller]}" unless @params_for[:controller]&.first(1) == '/' # for namespaced controllers
|
71
68
|
@params_for.delete(:id) if @params_for[:id].nil?
|
72
69
|
end
|
73
70
|
|
@@ -86,7 +83,7 @@ module ActiveScaffold
|
|
86
83
|
|
87
84
|
def controller_requested(controller)
|
88
85
|
if controller.to_s.first(1) == '/'
|
89
|
-
controller[1
|
86
|
+
controller[1..]
|
90
87
|
else
|
91
88
|
path = controller_path.split('/')[0..-2]
|
92
89
|
path << controller
|
@@ -111,7 +108,7 @@ module ActiveScaffold
|
|
111
108
|
parameters = {}
|
112
109
|
if params[:parent_scaffold] && nested_singular_association?
|
113
110
|
parameters[:controller] = params[:parent_scaffold]
|
114
|
-
exclude_parameters.
|
111
|
+
exclude_parameters.push nested.param_name, :association, :parent_scaffold
|
115
112
|
# parameters[:eid] = params[:parent_scaffold] # not neeeded anymore?
|
116
113
|
end
|
117
114
|
parameters.merge! nested.to_params if nested?
|
@@ -139,10 +136,10 @@ module ActiveScaffold
|
|
139
136
|
|
140
137
|
def render_parent_options
|
141
138
|
if nested_singular_association?
|
142
|
-
{:
|
139
|
+
{controller: nested.parent_scaffold.controller_path, action: :index, id: nested.parent_id}
|
143
140
|
elsif parent_sti_controller
|
144
|
-
options = params_for(:
|
145
|
-
options.merge!(:
|
141
|
+
options = params_for(controller: parent_sti_controller.controller_path, action: render_parent_action, parent_sti: nil)
|
142
|
+
options.merge!(action: :index, id: @record.to_param) if render_parent_action == :row
|
146
143
|
options
|
147
144
|
end
|
148
145
|
end
|
@@ -160,6 +157,10 @@ module ActiveScaffold
|
|
160
157
|
@parent_action
|
161
158
|
end
|
162
159
|
|
160
|
+
def tabbed_by_association(assoc_column, tabbed_by)
|
161
|
+
assoc_column.association.klass.reflect_on_association(tabbed_by)
|
162
|
+
end
|
163
|
+
|
163
164
|
# build an associated record for association
|
164
165
|
def build_associated(association, parent_record)
|
165
166
|
if association.through? && association.through_reflection.collection?
|
@@ -178,23 +179,24 @@ module ActiveScaffold
|
|
178
179
|
elsif association.belongs_to? || parent_record.new_record? || parent_record.send(association.name).nil?
|
179
180
|
# avoid use build_association in has_one when record is saved and had associated record
|
180
181
|
# because associated record would be changed in DB
|
181
|
-
parent_record.send("build_#{association.name}")
|
182
|
+
parent_record.send(:"build_#{association.name}")
|
182
183
|
else
|
183
184
|
association.klass.new.tap do |record|
|
184
185
|
assign_default_attributes record
|
185
186
|
save_record_to_association(record, association.reverse_association, parent_record) # set inverse
|
186
187
|
end
|
187
|
-
end
|
188
|
+
end.tap { |record| yield record if block_given? }
|
188
189
|
end
|
189
190
|
|
190
191
|
def save_record_to_association(record, association, value, reverse = nil)
|
191
192
|
return unless association
|
193
|
+
|
192
194
|
if association.collection?
|
193
195
|
record.association(association.name).target << value
|
194
196
|
elsif reverse&.belongs_to?
|
195
|
-
value.send("#{reverse.name}=", record)
|
197
|
+
value.send(:"#{reverse.name}=", record)
|
196
198
|
else
|
197
|
-
record.send("#{association.name}=", value)
|
199
|
+
record.send(:"#{association.name}=", value)
|
198
200
|
end
|
199
201
|
end
|
200
202
|
end
|
@@ -60,20 +60,20 @@ module ActiveScaffold
|
|
60
60
|
col_class << 'checkbox' if column.form_ui == :checkbox
|
61
61
|
col_class = col_class.join(' ')
|
62
62
|
end
|
63
|
-
if readonly && !record.new_record? || !record.authorized_for?(:
|
63
|
+
if (readonly && !record.new_record?) || !record.authorized_for?(crud_type: crud_type, column: column.name)
|
64
64
|
form_attribute(column, record, scope, true, col_class)
|
65
65
|
else
|
66
66
|
renders_as = column_renders_as(column)
|
67
|
-
html = render_column(column, record, renders_as, scope, false, col_class)
|
67
|
+
html = render_column(column, record, renders_as, scope, only_value: false, col_class: col_class)
|
68
68
|
html = content_tag(:div, html, active_scaffold_subform_attributes(column)) if renders_as == :subform
|
69
69
|
html
|
70
70
|
end
|
71
71
|
end
|
72
72
|
|
73
|
-
def active_scaffold_subform_attributes(column, column_css_class = nil, klass = nil)
|
73
|
+
def active_scaffold_subform_attributes(column, column_css_class = nil, klass = nil, tab_id: nil)
|
74
74
|
{
|
75
|
-
:
|
76
|
-
:
|
75
|
+
class: "sub-form #{active_scaffold_config_for(klass || column.association.klass).subform.layout}-sub-form #{column_css_class} #{column.name}-sub-form",
|
76
|
+
id: sub_form_id(association: column.name, tab_id: tab_id)
|
77
77
|
}
|
78
78
|
end
|
79
79
|
|
@@ -106,9 +106,7 @@ module ActiveScaffold
|
|
106
106
|
classes = "#{column.name}-input"
|
107
107
|
classes += ' numeric-input' if column.number?
|
108
108
|
|
109
|
-
if (column.form_ui_options || column.options)[:collapsible]
|
110
|
-
collapsible_id = "container_#{id_control}"
|
111
|
-
end
|
109
|
+
collapsible_id = "container_#{id_control}" if (column.form_ui_options || column.options)[:collapsible]
|
112
110
|
|
113
111
|
{name: name, class: classes, id: id_control, collapsible_id: collapsible_id}.merge(options)
|
114
112
|
end
|
@@ -119,6 +117,7 @@ module ActiveScaffold
|
|
119
117
|
elsif %i[new create edit update render_field].include? action_name.to_sym
|
120
118
|
# disable update_columns for inplace_edit (GET render_field)
|
121
119
|
return if action_name == 'render_field' && request.get?
|
120
|
+
|
122
121
|
active_scaffold_config.send(record.new_record? ? :create : :update).columns.visible_columns_names
|
123
122
|
end
|
124
123
|
end
|
@@ -155,29 +154,48 @@ module ActiveScaffold
|
|
155
154
|
{}
|
156
155
|
end
|
157
156
|
|
158
|
-
def
|
157
|
+
def render_subsection(column, record, scope, form_action)
|
158
|
+
subsection_id = sub_section_id(sub_section: column.label)
|
159
|
+
locals = {columns: column, form_action: form_action, scope: scope}
|
160
|
+
header = content_tag(:h5) do
|
161
|
+
h(column.label) <<
|
162
|
+
link_to_visibility_toggle(subsection_id, default_visible: !column.collapsed)
|
163
|
+
end
|
164
|
+
if column.tabbed_by
|
165
|
+
locals[:tabbed_by] = column.tabbed_by
|
166
|
+
header << content_tag(:div, id: subsection_id) do
|
167
|
+
active_scaffold_tabbed_by(column, record, scope, subsection_id) do |tab_value, tab_id|
|
168
|
+
render 'form', locals.merge(subsection_id: "#{subsection_id}-#{tab_id}", tab_id: tab_id, tab_value: tab_value)
|
169
|
+
end
|
170
|
+
end
|
171
|
+
else
|
172
|
+
header << render('form', locals.merge(subsection_id: subsection_id))
|
173
|
+
end
|
174
|
+
end
|
175
|
+
|
176
|
+
def render_column(column, record, renders_as, scope = nil, only_value: false, col_class: nil, **subform_locals)
|
159
177
|
if form_column_is_hidden?(column, record, scope)
|
160
178
|
# creates an element that can be replaced by the update_columns routine,
|
161
179
|
# but will not affect the value of the submitted form in this state:
|
162
180
|
# <dl><input type="hidden" class="<%= column.name %>-input"></dl>
|
163
181
|
content_tag :dl, style: 'display: none' do
|
164
|
-
hidden_field_tag(nil, nil, :
|
182
|
+
hidden_field_tag(nil, nil, class: "#{column.name}-input")
|
165
183
|
end
|
166
184
|
elsif (partial = override_form_field_partial(column))
|
167
|
-
render
|
185
|
+
render partial, column: column, only_value: only_value, scope: scope, col_class: col_class, record: record
|
168
186
|
elsif renders_as == :field || override_form_field?(column)
|
169
187
|
form_attribute(column, record, scope, only_value, col_class)
|
170
188
|
elsif renders_as == :subform
|
171
|
-
render
|
189
|
+
render 'form_association', subform_locals.slice(:tabbed_by, :tab_value, :tab_id).merge(column: column, scope: scope, parent_record: record)
|
172
190
|
else
|
173
191
|
form_hidden_attribute(column, record, scope)
|
174
192
|
end
|
175
193
|
end
|
176
194
|
|
177
195
|
def form_column_is_hidden?(column, record, scope = nil)
|
178
|
-
if column.hide_form_column_if
|
196
|
+
if column.hide_form_column_if.respond_to?(:call)
|
179
197
|
column.hide_form_column_if.call(record, column, scope)
|
180
|
-
elsif column.hide_form_column_if
|
198
|
+
elsif column.hide_form_column_if.is_a?(Symbol)
|
181
199
|
record.send(column.hide_form_column_if)
|
182
200
|
else
|
183
201
|
column.hide_form_column_if
|
@@ -185,7 +203,7 @@ module ActiveScaffold
|
|
185
203
|
end
|
186
204
|
|
187
205
|
def form_attribute(column, record, scope = nil, only_value = false, col_class = nil)
|
188
|
-
column_options = active_scaffold_input_options(column, scope, :
|
206
|
+
column_options = active_scaffold_input_options(column, scope, object: record)
|
189
207
|
collapsible_id = column_options.delete :collapsible_id
|
190
208
|
attributes = field_attributes(column, record)
|
191
209
|
attributes[:class] = "#{attributes[:class]} #{col_class}" if col_class.present?
|
@@ -201,9 +219,9 @@ module ActiveScaffold
|
|
201
219
|
field = active_scaffold_input_for column, scope, column_options
|
202
220
|
end
|
203
221
|
if field
|
204
|
-
field << loading_indicator_tag(:
|
222
|
+
field << loading_indicator_tag(action: :render_field, id: params[:id]) if column.update_columns
|
205
223
|
desc = column.description(record, scope)
|
206
|
-
field << content_tag(:span, desc, :
|
224
|
+
field << content_tag(:span, desc, class: 'description') if desc.present?
|
207
225
|
end
|
208
226
|
|
209
227
|
label = label_tag(label_for(column, column_options), form_column_label(column, record, scope))
|
@@ -281,7 +299,7 @@ module ActiveScaffold
|
|
281
299
|
assoc = column.association
|
282
300
|
value = assoc.singular?
|
283
301
|
value ||= assoc.collection? && !assoc.readonly? && (!assoc.through? || !assoc.through_reflection.collection?)
|
284
|
-
value &&= false unless assoc.klass.authorized_for?(:
|
302
|
+
value &&= false unless assoc.klass.authorized_for?(crud_type: :create)
|
285
303
|
value
|
286
304
|
end
|
287
305
|
|
@@ -306,6 +324,7 @@ module ActiveScaffold
|
|
306
324
|
|
307
325
|
def active_scaffold_select_name_with_multiple(options)
|
308
326
|
return if !options[:multiple] || options[:name].to_s.ends_with?('[]')
|
327
|
+
|
309
328
|
options[:name] = "#{options[:name]}[]"
|
310
329
|
end
|
311
330
|
|
@@ -317,7 +336,7 @@ module ActiveScaffold
|
|
317
336
|
select_options.unshift(associated) unless associated.nil? || select_options.include?(associated)
|
318
337
|
|
319
338
|
method = column.name
|
320
|
-
options.merge! :
|
339
|
+
options.merge! selected: associated&.id, include_blank: as_(:_select_), object: record
|
321
340
|
|
322
341
|
html_options.merge!(ui_options[:html_options] || {})
|
323
342
|
options.merge!(ui_options)
|
@@ -344,6 +363,7 @@ module ActiveScaffold
|
|
344
363
|
column.association.klass
|
345
364
|
end
|
346
365
|
return content_tag(:div, '') unless klass
|
366
|
+
|
347
367
|
subform_attrs = active_scaffold_subform_attributes(column, nil, klass)
|
348
368
|
if record.send(column.name)&.new_record?
|
349
369
|
new_record = record.send(column.name)
|
@@ -361,6 +381,7 @@ module ActiveScaffold
|
|
361
381
|
end
|
362
382
|
html = content_tag(:div, subform, subform_attrs)
|
363
383
|
return html if skip_link
|
384
|
+
|
364
385
|
html << active_scaffold_show_new_subform_link(column, record, html_options[:id], subform_attrs[:id])
|
365
386
|
end
|
366
387
|
|
@@ -370,7 +391,7 @@ module ActiveScaffold
|
|
370
391
|
link_to(label, '#', data: data, class: 'show-new-subform')
|
371
392
|
end
|
372
393
|
|
373
|
-
def active_scaffold_file_with_remove_link(column, options, content, remove_file_prefix, controls_class, ui_options: column.options, &block)
|
394
|
+
def active_scaffold_file_with_remove_link(column, options, content, remove_file_prefix, controls_class, ui_options: column.options, &block)
|
374
395
|
options = active_scaffold_input_text_options(options.merge(ui_options))
|
375
396
|
if content
|
376
397
|
active_scaffold_file_with_content(column, content, options, remove_file_prefix, controls_class, &block)
|
@@ -381,31 +402,25 @@ module ActiveScaffold
|
|
381
402
|
|
382
403
|
def active_scaffold_file_with_content(column, content, options, remove_file_prefix, controls_class)
|
383
404
|
required = options.delete(:required)
|
384
|
-
|
385
|
-
|
386
|
-
js_remove_file_code = "jQuery(this).prev().val('true'); jQuery(this).parent().hide().next().show()#{".find('input').attr('required', 'required')" if required}; return false;"
|
387
|
-
js_dont_remove_file_code = "jQuery(this).parents('div.#{controls_class}').find('input.remove_file').val('false'); return false;"
|
388
|
-
when :prototype
|
389
|
-
js_remove_file_code = "$(this).previous().value='true'; $(this).up().hide().next().show()#{".down().writeAttribute('required', 'required')" if required}; return false;"
|
390
|
-
js_dont_remove_file_code = "jQuery(this).parents('div.#{controls_class}').find('input.remove_file').val('false'); return false;"
|
391
|
-
end
|
405
|
+
js_remove_file_code = "jQuery(this).prev().val('true'); jQuery(this).parent().hide().next().show()#{".find('input').attr('required', 'required')" if required}; return false;"
|
406
|
+
js_dont_remove_file_code = "jQuery(this).parents('div.#{controls_class}').find('input.remove_file').val('false'); return false;"
|
392
407
|
|
393
408
|
object_name, method = options[:name].split(/\[(#{column.name})\]/)
|
394
409
|
method.sub!(/#{column.name}/, "#{remove_file_prefix}\\0")
|
395
410
|
fields = block_given? ? yield : ''
|
396
411
|
link_key = options[:multiple] ? :remove_files : :remove_file
|
397
|
-
input = file_field(:record, column.name, options.merge(:
|
412
|
+
input = file_field(:record, column.name, options.merge(onchange: js_dont_remove_file_code))
|
398
413
|
content_tag(:div, class: controls_class) do
|
399
414
|
content_tag(:div) do
|
400
415
|
safe_join [content, ' | ', fields,
|
401
|
-
hidden_field(object_name, method, :
|
402
|
-
content_tag(:a, as_(link_key), :
|
403
|
-
end << content_tag(:div, input, :
|
416
|
+
hidden_field(object_name, method, value: 'false', class: 'remove_file'),
|
417
|
+
content_tag(:a, as_(link_key), href: '#', onclick: js_remove_file_code)]
|
418
|
+
end << content_tag(:div, input, style: 'display: none')
|
404
419
|
end
|
405
420
|
end
|
406
421
|
|
407
422
|
def active_scaffold_refresh_link(column, html_options, record, ui_options = {})
|
408
|
-
link_options = {:
|
423
|
+
link_options = {object: record}
|
409
424
|
if html_options['data-update_url']
|
410
425
|
link_options['data-update_send_form'] = html_options['data-update_send_form']
|
411
426
|
link_options['data-update_send_form_selector'] = html_options['data-update_send_form_selector']
|
@@ -437,8 +452,8 @@ module ActiveScaffold
|
|
437
452
|
active_scaffold_select_name_with_multiple html_options
|
438
453
|
collection_select(:record, column.name, select_options, :id, ui_options[:label_method] || :to_label, ui_options.merge(object: record), html_options)
|
439
454
|
elsif select_options.empty?
|
440
|
-
content_tag(:span, as_(:no_options), :
|
441
|
-
hidden_field_tag("#{options[:name]}[]", '', :
|
455
|
+
content_tag(:span, as_(:no_options), class: "#{options[:class]} no-options", id: options[:id]) <<
|
456
|
+
hidden_field_tag("#{options[:name]}[]", '', id: nil)
|
442
457
|
else
|
443
458
|
active_scaffold_checkbox_list(column, select_options, associated_options.collect(&:id), options, ui_options: ui_options)
|
444
459
|
end
|
@@ -455,7 +470,7 @@ module ActiveScaffold
|
|
455
470
|
option_id = option.is_a?(Array) ? option[1] : option.id
|
456
471
|
label = option.is_a?(Array) ? option[0] : option.send(label_method)
|
457
472
|
check_box_tag(checkbox_options[:name], option_id, associated_ids.include?(option_id), checkbox_options) <<
|
458
|
-
content_tag(:label, label, :
|
473
|
+
content_tag(:label, label, for: checkbox_options[:id])
|
459
474
|
end
|
460
475
|
end
|
461
476
|
|
@@ -469,12 +484,12 @@ module ActiveScaffold
|
|
469
484
|
def active_scaffold_checkbox_list(column, select_options, associated_ids, options, ui_options: column.options)
|
470
485
|
label_method = ui_options[:label_method] || :to_label
|
471
486
|
html = active_scaffold_check_all_buttons(column, options, ui_options: ui_options)
|
472
|
-
html << hidden_field_tag("#{options[:name]}[]", '', :
|
487
|
+
html << hidden_field_tag("#{options[:name]}[]", '', id: nil)
|
473
488
|
draggable = options.delete(:draggable_lists) || ui_options[:draggable_lists]
|
474
|
-
html << content_tag(:ul, options.merge(:
|
489
|
+
html << content_tag(:ul, options.merge(class: "#{options[:class]} checkbox-list#{' draggable-lists' if draggable}")) do
|
475
490
|
content = []
|
476
491
|
select_options.each_with_index do |option, i|
|
477
|
-
content << active_scaffold_checkbox_option(option, label_method, associated_ids, :
|
492
|
+
content << active_scaffold_checkbox_option(option, label_method, associated_ids, name: "#{options[:name]}[]", id: "#{options[:id]}_#{i}_id")
|
478
493
|
end
|
479
494
|
safe_join content
|
480
495
|
end
|
@@ -526,13 +541,13 @@ module ActiveScaffold
|
|
526
541
|
label_method = ui_options[:label_method] || :to_label
|
527
542
|
text = option.send(label_method)
|
528
543
|
value = option.id
|
529
|
-
checked = {:
|
544
|
+
checked = {checked: selected == value}
|
530
545
|
else
|
531
546
|
text, value = active_scaffold_translated_option(column, *option)
|
532
547
|
end
|
533
548
|
|
534
|
-
id_key = radio_options[:
|
535
|
-
radio_options = radio_options.merge(id_key => radio_options[id_key]
|
549
|
+
id_key = radio_options[:'data-id'] ? :'data-id' : :id
|
550
|
+
radio_options = radio_options.merge(id_key => "#{radio_options[id_key]}-#{value.to_s.parameterize}")
|
536
551
|
radio_options.merge!(checked) if checked
|
537
552
|
content_tag(:label, radio_button(:record, column.name, value, radio_options) + text)
|
538
553
|
end
|
@@ -554,7 +569,7 @@ module ActiveScaffold
|
|
554
569
|
if ui_options[:add_new]
|
555
570
|
html_options[:data] ||= {}
|
556
571
|
html_options[:data][:subform_id] = active_scaffold_subform_attributes(column)[:id]
|
557
|
-
radio_html_options = html_options.merge(class: html_options[:class]
|
572
|
+
radio_html_options = html_options.merge(class: "#{html_options[:class]} hide-new-subform")
|
558
573
|
else
|
559
574
|
radio_html_options = html_options
|
560
575
|
end
|
@@ -567,14 +582,14 @@ module ActiveScaffold
|
|
567
582
|
radios.prepend content_tag(:label, radio_button(:record, column.name, '', html_options.merge(id: nil)) + label)
|
568
583
|
end
|
569
584
|
if ui_options[:add_new]
|
570
|
-
create_new_button = radio_button_tag(html_options[:name], '', selected&.new_record?, html_options.merge(id: nil, class: html_options[:class]
|
585
|
+
create_new_button = radio_button_tag(html_options[:name], '', selected&.new_record?, html_options.merge(id: nil, class: "#{html_options[:class]} show-new-subform").except(:object))
|
571
586
|
radios << content_tag(:label, create_new_button << as_(:create_new)) <<
|
572
587
|
active_scaffold_new_record_subform(column, record, html_options, ui_options: ui_options, skip_link: true)
|
573
588
|
end
|
574
589
|
safe_join radios
|
575
590
|
else
|
576
|
-
html = content_tag(:span, as_(:no_options), :
|
577
|
-
html << hidden_field_tag(html_options[:name], '', :
|
591
|
+
html = content_tag(:span, as_(:no_options), class: "#{html_options[:class]} no-options", id: html_options[:id])
|
592
|
+
html << hidden_field_tag(html_options[:name], '', id: nil)
|
578
593
|
html << active_scaffold_new_record_subform(column, record, html_options, ui_options: ui_options) if ui_options[:add_new]
|
579
594
|
html
|
580
595
|
end
|
@@ -698,6 +713,7 @@ module ActiveScaffold
|
|
698
713
|
while controller.uses_active_scaffold?
|
699
714
|
path = File.join(controller.controller_path, partial)
|
700
715
|
return path if template_exists?(path, true)
|
716
|
+
|
701
717
|
controller = controller.superclass
|
702
718
|
end
|
703
719
|
nil
|
@@ -739,7 +755,7 @@ module ActiveScaffold
|
|
739
755
|
:subsection
|
740
756
|
elsif column.active_record_class.locking_column.to_s == column.name.to_s || column.form_ui == :hidden
|
741
757
|
:hidden
|
742
|
-
elsif column.association.nil? || column.form_ui ||
|
758
|
+
elsif column.association.nil? || column.form_ui || active_scaffold_config_for(column.association.klass).actions.exclude?(:subform) || override_form_field?(column)
|
743
759
|
:field
|
744
760
|
else
|
745
761
|
:subform
|
@@ -756,7 +772,7 @@ module ActiveScaffold
|
|
756
772
|
|
757
773
|
def active_scaffold_add_existing_input(options)
|
758
774
|
record = options.delete(:object)
|
759
|
-
if
|
775
|
+
if controller.respond_to?(:record_select_config, true)
|
760
776
|
remote_controller = active_scaffold_controller_for(record_select_config.model).controller_path
|
761
777
|
options[:controller] = remote_controller
|
762
778
|
options.merge!(active_scaffold_input_text_options)
|
@@ -802,15 +818,15 @@ module ActiveScaffold
|
|
802
818
|
|
803
819
|
# Minimum
|
804
820
|
unless options[:min]
|
805
|
-
min = validators.
|
806
|
-
greater_than = validators.
|
821
|
+
min = validators.filter_map { |v| v.options[:greater_than_or_equal_to] }.max
|
822
|
+
greater_than = validators.filter_map { |v| v.options[:greater_than] }.max
|
807
823
|
numerical_constraints[:min] = [min, (greater_than + margin if greater_than)].compact.max
|
808
824
|
end
|
809
825
|
|
810
826
|
# Maximum
|
811
827
|
unless options[:max]
|
812
|
-
max = validators.
|
813
|
-
less_than = validators.
|
828
|
+
max = validators.filter_map { |v| v.options[:less_than_or_equal_to] }.min
|
829
|
+
less_than = validators.filter_map { |v| v.options[:less_than] }.min
|
814
830
|
numerical_constraints[:max] = [max, (less_than - margin if less_than)].compact.min
|
815
831
|
end
|
816
832
|
|
@@ -820,7 +836,7 @@ module ActiveScaffold
|
|
820
836
|
only_even_valid = validators.any? { |v| v.options[:even] } unless only_odd_valid
|
821
837
|
if !only_integer
|
822
838
|
numerical_constraints[:step] ||= "0.#{'0' * (column.column.scale - 1)}1" if column.column&.scale.to_i.positive?
|
823
|
-
elsif options[:min]
|
839
|
+
elsif options[:min].respond_to?(:even?) && (only_odd_valid || only_even_valid)
|
824
840
|
numerical_constraints[:step] = 2
|
825
841
|
numerical_constraints[:min] += 1 if only_odd_valid && options[:min].even?
|
826
842
|
numerical_constraints[:min] += 1 if only_even_valid && options[:min].odd?
|
@@ -4,6 +4,7 @@ module ActiveScaffold
|
|
4
4
|
module HumanConditionHelpers
|
5
5
|
def active_scaffold_human_condition_for(column)
|
6
6
|
return if (value = field_search_params[column.name.to_s]).nil?
|
7
|
+
|
7
8
|
search_ui = column.search_ui
|
8
9
|
search_ui ||= column.column_type if column.column
|
9
10
|
if override_human_condition_column?(column)
|
@@ -23,7 +24,7 @@ module ActiveScaffold
|
|
23
24
|
end
|
24
25
|
|
25
26
|
def format_human_condition(column, opt, from = nil, to = nil)
|
26
|
-
attribute = column.
|
27
|
+
attribute = column.active_record_class.human_attribute_name(column.name)
|
27
28
|
opt ||= :between if from && to
|
28
29
|
opt ||= from ? '>=' : '<='
|
29
30
|
from = to = nil if opt&.in? %w[null not_null]
|
@@ -51,15 +52,15 @@ module ActiveScaffold
|
|
51
52
|
range_type, range = value['range'].downcase.split('_')
|
52
53
|
format = active_scaffold_human_condition_datetime_range_format(range_type, range)
|
53
54
|
from, = controller.class.datetime_from_to(column, value)
|
54
|
-
"#{column.
|
55
|
-
when 'PAST', 'FUTURE'
|
55
|
+
"#{column.active_record_class.human_attribute_name(column.name)} = #{as_(value['range'].downcase).downcase} (#{I18n.l(from, format: format)})"
|
56
|
+
when 'PAST', 'FUTURE'
|
56
57
|
from, to = controller.class.datetime_from_to(column, value)
|
57
|
-
"#{column.
|
58
|
+
"#{column.active_record_class.human_attribute_name(column.name)} #{as_('BETWEEN'.downcase).downcase} #{I18n.l(from)} - #{I18n.l(to)}"
|
58
59
|
when 'null', 'not_null'
|
59
|
-
"#{column.
|
60
|
+
"#{column.active_record_class.human_attribute_name(column.name)} #{as_(value['opt'].downcase).downcase}"
|
60
61
|
else
|
61
|
-
from, = controller.class.datetime_from_to(column, value)
|
62
|
-
"#{column.
|
62
|
+
from, to = controller.class.datetime_from_to(column, value)
|
63
|
+
"#{column.active_record_class.human_attribute_name(column.name)} #{as_(value['opt'].downcase).downcase} #{I18n.l(from)} #{"- #{I18n.l(to)}" if value['opt'] == 'BETWEEN'}"
|
63
64
|
end
|
64
65
|
end
|
65
66
|
alias active_scaffold_human_condition_time active_scaffold_human_condition_datetime
|
@@ -69,7 +70,7 @@ module ActiveScaffold
|
|
69
70
|
def active_scaffold_human_condition_datetime_range_format(range_type, range)
|
70
71
|
case range
|
71
72
|
when 'week'
|
72
|
-
first_day_of_week = I18n.
|
73
|
+
first_day_of_week = I18n.t 'active_scaffold.date_picker_options.firstDay'
|
73
74
|
if first_day_of_week == 1
|
74
75
|
'%W %Y'
|
75
76
|
else
|
@@ -80,7 +81,7 @@ module ActiveScaffold
|
|
80
81
|
when 'year'
|
81
82
|
'%Y'
|
82
83
|
else
|
83
|
-
I18n.
|
84
|
+
I18n.t 'date.formats.default'
|
84
85
|
end
|
85
86
|
end
|
86
87
|
# def active_scaffold_human_condition_date(column, value)
|
@@ -93,8 +94,8 @@ module ActiveScaffold
|
|
93
94
|
# end
|
94
95
|
|
95
96
|
def active_scaffold_human_condition_boolean(column, value)
|
96
|
-
attribute = column.
|
97
|
-
as_(:boolean, :
|
97
|
+
attribute = column.active_record_class.human_attribute_name(column.name)
|
98
|
+
as_(:boolean, scope: :human_conditions, column: attribute, value: as_(value))
|
98
99
|
end
|
99
100
|
alias active_scaffold_human_condition_checkbox active_scaffold_human_condition_boolean
|
100
101
|
|
@@ -103,16 +104,17 @@ module ActiveScaffold
|
|
103
104
|
end
|
104
105
|
|
105
106
|
def active_scaffold_human_condition_select(column, associated)
|
106
|
-
attribute = column.
|
107
|
+
attribute = column.active_record_class.human_attribute_name(column.name)
|
107
108
|
if associated.is_a?(Hash)
|
108
109
|
return active_scaffold_human_condition_range(column, associated) unless associated['opt'] == '='
|
110
|
+
|
109
111
|
associated = associated['from']
|
110
112
|
end
|
111
113
|
associated = [associated] unless associated.is_a? Array
|
112
|
-
associated = associated.
|
114
|
+
associated = associated.compact_blank
|
113
115
|
if column.association
|
114
116
|
method = column.options[:label_method] || :to_label
|
115
|
-
associated = column.association.klass.where(:
|
117
|
+
associated = column.association.klass.where(id: associated.map(&:to_i)).map(&method)
|
116
118
|
elsif column.options[:options]
|
117
119
|
associated = associated.collect do |value|
|
118
120
|
text, val = column.options[:options].find { |t, v| (v.nil? ? t : v).to_s == value.to_s }
|
@@ -120,7 +122,7 @@ module ActiveScaffold
|
|
120
122
|
value
|
121
123
|
end
|
122
124
|
end
|
123
|
-
as_(:association, :
|
125
|
+
as_(:association, scope: :human_conditions, column: attribute, value: associated.join(', '))
|
124
126
|
end
|
125
127
|
alias active_scaffold_human_condition_multi_select active_scaffold_human_condition_select
|
126
128
|
alias active_scaffold_human_condition_select_multiple active_scaffold_human_condition_select
|
@@ -6,8 +6,8 @@ module ActiveScaffold
|
|
6
6
|
ERB::Util.h controller.to_s.gsub('/', '__')
|
7
7
|
end
|
8
8
|
|
9
|
-
def controller_id(controller =
|
10
|
-
|
9
|
+
def controller_id(controller = params[:eid] || nested_id || params[:parent_controller] || params[:controller])
|
10
|
+
"as_#{id_from_controller(controller)}"
|
11
11
|
end
|
12
12
|
|
13
13
|
def nested?
|
@@ -39,7 +39,7 @@ module ActiveScaffold
|
|
39
39
|
end
|
40
40
|
|
41
41
|
def active_scaffold_calculations_id(options = {})
|
42
|
-
"#{options[:controller_id] || controller_id}-calculations#{
|
42
|
+
"#{options[:controller_id] || controller_id}-calculations#{"-#{options[:column].name}" if options[:column]}"
|
43
43
|
end
|
44
44
|
|
45
45
|
def empty_message_id
|
@@ -106,13 +106,13 @@ module ActiveScaffold
|
|
106
106
|
def sub_form_id(options = {})
|
107
107
|
options[:id] ||= params[:id]
|
108
108
|
options[:id] ||= nested_parent_id if nested?
|
109
|
-
clean_id "#{controller_id}-#{options[:id]}-#{options[:association]}-subform"
|
109
|
+
clean_id "#{controller_id}-#{options[:id]}-#{options[:association]}#{'-' if options[:tab_id]}#{options[:tab_id]}-subform"
|
110
110
|
end
|
111
111
|
|
112
112
|
def sub_form_list_id(options = {})
|
113
113
|
options[:id] ||= params[:id]
|
114
114
|
options[:id] ||= nested_parent_id if nested?
|
115
|
-
clean_id "#{controller_id}-#{options[:id]}-#{options[:association]}-subform-list"
|
115
|
+
clean_id "#{controller_id}-#{options[:id]}-#{options[:association]}#{'-' if options[:tab_id]}#{options[:tab_id]}-subform-list"
|
116
116
|
end
|
117
117
|
|
118
118
|
def element_messages_id(options = {})
|