active_scaffold 3.4.43 → 3.5.0
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 +39 -0
- data/{LICENSE → LICENSE.md} +1 -1
- data/README.md +27 -19
- data/app/assets/javascripts/active_scaffold.js.erb +1 -1
- data/app/assets/javascripts/jquery/active_scaffold.js +95 -43
- data/app/assets/javascripts/jquery/tiny_mce_bridge.js +30 -6
- data/app/assets/javascripts/prototype/tiny_mce_bridge.js +11 -1
- data/app/assets/stylesheets/active_scaffold_colors.scss +2 -2
- data/app/assets/stylesheets/active_scaffold_layout.css +36 -28
- data/app/views/active_scaffold_overrides/_base_form.html.erb +2 -3
- data/app/views/active_scaffold_overrides/_field_search.html.erb +8 -7
- data/app/views/active_scaffold_overrides/_form_association.html.erb +9 -9
- data/app/views/active_scaffold_overrides/_form_association_footer.html.erb +6 -6
- data/app/views/active_scaffold_overrides/_form_association_record.html.erb +52 -50
- data/app/views/active_scaffold_overrides/_horizontal_subform.html.erb +1 -1
- data/app/views/active_scaffold_overrides/_horizontal_subform_header.html.erb +1 -1
- data/app/views/active_scaffold_overrides/_human_conditions.html.erb +3 -1
- data/app/views/active_scaffold_overrides/_list_calculations.html.erb +1 -1
- data/app/views/active_scaffold_overrides/_list_column_headings.html.erb +2 -0
- data/app/views/active_scaffold_overrides/_list_messages.html.erb +5 -3
- data/app/views/active_scaffold_overrides/_list_record.html.erb +3 -1
- data/app/views/active_scaffold_overrides/_list_with_header.html.erb +9 -9
- data/app/views/active_scaffold_overrides/_messages.html.erb +1 -1
- data/app/views/active_scaffold_overrides/_refresh_list.js.erb +18 -10
- data/app/views/active_scaffold_overrides/_render_field.js.erb +3 -3
- data/app/views/active_scaffold_overrides/_search.html.erb +7 -6
- data/app/views/active_scaffold_overrides/_show_actions.html.erb +14 -0
- data/app/views/active_scaffold_overrides/_show_association.html.erb +1 -1
- data/app/views/active_scaffold_overrides/_update_actions.html.erb +6 -2
- data/app/views/active_scaffold_overrides/_update_column.js.erb +1 -1
- data/app/views/active_scaffold_overrides/_update_form.html.erb +1 -1
- data/app/views/active_scaffold_overrides/destroy.js.erb +2 -3
- data/app/views/active_scaffold_overrides/edit_associated.js.erb +4 -3
- data/app/views/active_scaffold_overrides/on_action_update.js.erb +5 -3
- data/app/views/active_scaffold_overrides/on_create.js.erb +4 -4
- data/app/views/active_scaffold_overrides/on_update.js.erb +6 -6
- data/app/views/active_scaffold_overrides/show.html.erb +6 -0
- data/app/views/active_scaffold_overrides/update.html.erb +1 -1
- data/app/views/active_scaffold_overrides/update_column.js.erb +1 -1
- data/config/brakeman.ignore +26 -0
- data/config/brakeman.yml +3 -0
- data/config/i18n-tasks.yml +121 -0
- data/config/locales/de.yml +81 -70
- data/config/locales/en.yml +83 -74
- data/config/locales/es.yml +82 -73
- data/config/locales/fr.yml +86 -75
- data/config/locales/hu.yml +81 -70
- data/config/locales/ja.yml +71 -60
- data/config/locales/ru.yml +85 -74
- data/lib/active_scaffold.rb +3 -0
- data/lib/active_scaffold/actions/common_search.rb +11 -7
- data/lib/active_scaffold/actions/core.rb +119 -47
- data/lib/active_scaffold/actions/create.rb +1 -1
- data/lib/active_scaffold/actions/delete.rb +11 -8
- data/lib/active_scaffold/actions/field_search.rb +104 -6
- data/lib/active_scaffold/actions/list.rb +25 -21
- data/lib/active_scaffold/actions/mark.rb +12 -4
- data/lib/active_scaffold/actions/nested.rb +26 -26
- data/lib/active_scaffold/actions/search.rb +2 -2
- data/lib/active_scaffold/actions/show.rb +4 -5
- data/lib/active_scaffold/actions/subform.rb +9 -7
- data/lib/active_scaffold/actions/update.rb +20 -13
- data/lib/active_scaffold/active_record_permissions.rb +24 -5
- data/lib/active_scaffold/attribute_params.rb +68 -49
- data/lib/active_scaffold/bridges.rb +1 -1
- data/lib/active_scaffold/bridges/ancestry/ancestry_bridge.rb +15 -19
- data/lib/active_scaffold/bridges/bitfields.rb +1 -1
- data/lib/active_scaffold/bridges/bitfields/bitfields_bridge.rb +10 -14
- data/lib/active_scaffold/bridges/calendar_date_select.rb +0 -7
- data/lib/active_scaffold/bridges/calendar_date_select/as_cds_bridge.rb +19 -22
- data/lib/active_scaffold/bridges/cancan.rb +4 -3
- data/lib/active_scaffold/bridges/cancan/cancan_bridge.rb +11 -21
- data/lib/active_scaffold/bridges/carrierwave.rb +2 -1
- data/lib/active_scaffold/bridges/carrierwave/carrierwave_bridge.rb +2 -6
- data/lib/active_scaffold/bridges/carrierwave/form_ui.rb +6 -39
- data/lib/active_scaffold/bridges/carrierwave/list_ui.rb +1 -1
- data/lib/active_scaffold/bridges/chosen.rb +4 -1
- data/lib/active_scaffold/bridges/chosen/helpers.rb +3 -2
- data/lib/active_scaffold/bridges/country_select/country_select_bridge_helper.rb +2 -2
- data/lib/active_scaffold/bridges/date_picker.rb +3 -0
- data/lib/active_scaffold/bridges/date_picker/ext.rb +43 -38
- data/lib/active_scaffold/bridges/date_picker/helper.rb +24 -23
- data/lib/active_scaffold/bridges/dragonfly.rb +1 -1
- data/lib/active_scaffold/bridges/dragonfly/dragonfly_bridge.rb +3 -7
- data/lib/active_scaffold/bridges/dragonfly/form_ui.rb +3 -25
- data/lib/active_scaffold/bridges/dragonfly/list_ui.rb +2 -2
- data/lib/active_scaffold/bridges/file_column/as_file_column_bridge.rb +6 -8
- data/lib/active_scaffold/bridges/file_column/file_column_helpers.rb +1 -1
- data/lib/active_scaffold/bridges/file_column/form_ui.rb +0 -2
- data/lib/active_scaffold/bridges/file_column/list_ui.rb +2 -1
- data/lib/active_scaffold/bridges/file_column/test/test_helper.rb +1 -1
- data/lib/active_scaffold/bridges/paper_trail/actions.rb +1 -1
- data/lib/active_scaffold/bridges/paper_trail/helper.rb +1 -2
- data/lib/active_scaffold/bridges/paper_trail/paper_trail_bridge.rb +3 -7
- data/lib/active_scaffold/bridges/paperclip.rb +1 -1
- data/lib/active_scaffold/bridges/paperclip/form_ui.rb +3 -28
- data/lib/active_scaffold/bridges/paperclip/list_ui.rb +1 -1
- data/lib/active_scaffold/bridges/paperclip/paperclip_bridge.rb +3 -7
- data/lib/active_scaffold/bridges/record_select.rb +2 -0
- data/lib/active_scaffold/bridges/record_select/helpers.rb +14 -18
- data/lib/active_scaffold/bridges/semantic_attributes/column.rb +4 -8
- data/lib/active_scaffold/bridges/shared/date_bridge.rb +20 -20
- data/lib/active_scaffold/bridges/tiny_mce/helpers.rb +7 -22
- data/lib/active_scaffold/bridges/usa_state_select/usa_state_select_helper.rb +14 -14
- data/lib/active_scaffold/config/base.rb +9 -6
- data/lib/active_scaffold/config/core.rb +30 -21
- data/lib/active_scaffold/config/create.rb +2 -1
- data/lib/active_scaffold/config/delete.rb +2 -2
- data/lib/active_scaffold/config/field_search.rb +9 -3
- data/lib/active_scaffold/config/form.rb +4 -4
- data/lib/active_scaffold/config/list.rb +27 -23
- data/lib/active_scaffold/config/nested.rb +4 -4
- data/lib/active_scaffold/config/search.rb +6 -6
- data/lib/active_scaffold/config/show.rb +11 -1
- data/lib/active_scaffold/config/subform.rb +1 -1
- data/lib/active_scaffold/config/update.rb +4 -2
- data/lib/active_scaffold/constraints.rb +39 -36
- data/lib/active_scaffold/core.rb +36 -15
- data/lib/active_scaffold/data_structures/action_columns.rb +14 -9
- data/lib/active_scaffold/data_structures/action_link.rb +4 -5
- data/lib/active_scaffold/data_structures/action_links.rb +5 -4
- data/lib/active_scaffold/data_structures/actions.rb +2 -2
- data/lib/active_scaffold/data_structures/association.rb +8 -0
- data/lib/active_scaffold/data_structures/association/abstract.rb +147 -0
- data/lib/active_scaffold/data_structures/association/active_mongoid.rb +42 -0
- data/lib/active_scaffold/data_structures/association/active_record.rb +94 -0
- data/lib/active_scaffold/data_structures/association/mongoid.rb +45 -0
- data/lib/active_scaffold/data_structures/bridge.rb +3 -6
- data/lib/active_scaffold/data_structures/column.rb +100 -82
- data/lib/active_scaffold/data_structures/columns.rb +21 -3
- data/lib/active_scaffold/data_structures/nested_info.rb +22 -37
- data/lib/active_scaffold/data_structures/set.rb +4 -4
- data/lib/active_scaffold/data_structures/sorting.rb +29 -15
- data/lib/active_scaffold/engine.rb +3 -1
- data/lib/active_scaffold/extensions/action_controller_rendering.rb +10 -5
- data/lib/active_scaffold/extensions/action_view_rendering.rb +65 -59
- data/lib/active_scaffold/extensions/left_outer_joins.rb +48 -53
- data/lib/active_scaffold/extensions/localize.rb +3 -4
- data/lib/active_scaffold/extensions/name_option_for_datetime.rb +7 -11
- data/lib/active_scaffold/extensions/paginator_extensions.rb +20 -18
- data/lib/active_scaffold/extensions/routing_mapper.rb +104 -40
- data/lib/active_scaffold/extensions/to_label.rb +1 -1
- data/lib/active_scaffold/extensions/unsaved_associated.rb +4 -13
- data/lib/active_scaffold/extensions/unsaved_record.rb +12 -1
- data/lib/active_scaffold/finder.rb +200 -134
- data/lib/active_scaffold/helpers/action_link_helpers.rb +398 -0
- data/lib/active_scaffold/helpers/association_helpers.rb +12 -30
- data/lib/active_scaffold/helpers/controller_helpers.rb +74 -24
- data/lib/active_scaffold/helpers/form_column_helpers.rb +205 -112
- data/lib/active_scaffold/helpers/human_condition_helpers.rb +21 -11
- data/lib/active_scaffold/helpers/id_helpers.rb +1 -1
- data/lib/active_scaffold/helpers/list_column_helpers.rb +117 -39
- data/lib/active_scaffold/helpers/pagination_helpers.rb +11 -14
- data/lib/active_scaffold/helpers/search_column_helpers.rb +69 -32
- data/lib/active_scaffold/helpers/show_column_helpers.rb +9 -3
- data/lib/active_scaffold/helpers/view_helpers.rb +41 -426
- data/lib/active_scaffold/orm_checks.rb +109 -0
- data/lib/active_scaffold/paginator.rb +1 -1
- data/lib/active_scaffold/responds_to_parent.rb +12 -10
- data/lib/active_scaffold/tableless.rb +81 -43
- data/lib/active_scaffold/version.rb +2 -2
- data/lib/generators/active_scaffold/controller_generator.rb +49 -0
- data/lib/generators/active_scaffold/install_generator.rb +45 -0
- data/lib/generators/active_scaffold/resource_generator.rb +56 -0
- data/lib/generators/{active_scaffold_controller/templates → templates}/controller.rb +0 -0
- data/lib/generators/{active_scaffold_controller/templates → templates}/helper.rb +0 -0
- data/shoulda_macros/macros.rb +3 -3
- data/test/active_scaffold_config_mock.rb +33 -0
- data/test/bridges/bridge_test.rb +9 -9
- data/test/bridges/date_picker_test.rb +3 -1
- data/test/bridges/paper_trail_test.rb +2 -3
- data/test/bridges/paperclip_test.rb +21 -10
- data/test/bridges/tiny_mce_test.rb +20 -21
- data/test/class_with_finder.rb +42 -0
- data/test/company.rb +6 -4
- data/test/config/core_test.rb +1 -1
- data/test/config/create_test.rb +1 -1
- data/test/config/list_test.rb +3 -3
- data/test/config/update_test.rb +3 -3
- data/test/data_structures/action_columns_test.rb +3 -3
- data/test/data_structures/association_column_test.rb +5 -5
- data/test/data_structures/column_test.rb +14 -14
- data/test/data_structures/columns_test.rb +2 -2
- data/test/data_structures/set_test.rb +2 -2
- data/test/data_structures/sorting_test.rb +6 -4
- data/test/extensions/active_record_test.rb +1 -1
- data/test/extensions/routing_mapper_test.rb +64 -13
- data/test/helpers/form_column_helpers_test.rb +6 -6
- data/test/helpers/list_column_helpers_test.rb +9 -5
- data/test/helpers/pagination_helpers_test.rb +1 -0
- data/test/misc/active_record_permissions_test.rb +18 -1
- data/test/misc/attribute_params_test.rb +26 -17
- data/test/misc/calculation_test.rb +8 -31
- data/test/misc/configurable_test.rb +3 -2
- data/test/misc/constraints_test.rb +33 -22
- data/test/misc/convert_numbers_format_test.rb +28 -10
- data/test/misc/finder_test.rb +6 -29
- data/test/misc/parse_datetime_test.rb +160 -0
- data/test/misc/render_test.rb +1 -1
- data/test/misc/tableless_test.rb +24 -0
- data/test/mock_app/app/models/building.rb +2 -1
- data/test/mock_app/config.ru +1 -1
- data/test/mock_app/config/environments/test.rb +1 -1
- data/test/mock_app/config/routes.rb +11 -3
- data/test/model_stub.rb +11 -6
- data/test/run_all.rb +1 -1
- data/test/test_helper.rb +19 -4
- metadata +42 -23
- data/lib/active_scaffold/data_structures/error_message.rb +0 -22
- data/lib/active_scaffold/extensions/reverse_associations.rb +0 -119
- data/lib/generators/active_scaffold/USAGE +0 -29
- data/lib/generators/active_scaffold/active_scaffold_generator.rb +0 -21
- data/lib/generators/active_scaffold_controller/USAGE +0 -19
- data/lib/generators/active_scaffold_controller/active_scaffold_controller_generator.rb +0 -29
- data/test/data_structures/error_message_test.rb +0 -25
@@ -1,43 +1,63 @@
|
|
1
1
|
class File #:nodoc:
|
2
2
|
unless File.respond_to?(:binread)
|
3
3
|
def self.binread(file)
|
4
|
-
File.open(file, 'rb'
|
4
|
+
File.open(file, 'rb', &:read)
|
5
5
|
end
|
6
6
|
end
|
7
7
|
end
|
8
8
|
|
9
|
-
ActiveScaffold::
|
10
|
-
|
11
|
-
|
9
|
+
class ActiveScaffold::Bridges::DatePicker
|
10
|
+
module DatePickerBridge
|
11
|
+
def initialize(model_id)
|
12
|
+
super
|
12
13
|
|
13
|
-
|
14
|
-
|
15
|
-
|
14
|
+
date_picker_fields = _columns.collect { |c| {:name => c.name.to_sym, :type => c.type} if %i[date datetime].include?(c.type) }.compact
|
15
|
+
# check to see if file column was used on the model
|
16
|
+
return if date_picker_fields.empty?
|
16
17
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
18
|
+
# automatically set the forum_ui to a date_picker or datetime_picker
|
19
|
+
date_picker_fields.each do |field|
|
20
|
+
col_config = columns[field[:name]]
|
21
|
+
col_config.form_ui = (field[:type] == :date ? :date_picker : :datetime_picker)
|
22
|
+
end
|
21
23
|
end
|
22
24
|
end
|
23
25
|
|
24
|
-
|
25
|
-
|
26
|
+
module Finder
|
27
|
+
def datetime_conversion_for_condition(column)
|
28
|
+
if column.search_ui == :date_picker
|
29
|
+
:to_date
|
30
|
+
else
|
31
|
+
super
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
26
35
|
|
27
|
-
module
|
28
|
-
|
29
|
-
|
36
|
+
module AttributeParams
|
37
|
+
def datetime_conversion_for_value(column)
|
38
|
+
if column.form_ui == :date_picker
|
39
|
+
:to_date
|
40
|
+
else
|
41
|
+
super
|
42
|
+
end
|
43
|
+
end
|
30
44
|
end
|
31
|
-
|
32
|
-
|
45
|
+
|
46
|
+
module CastExtension
|
47
|
+
def fallback_string_to_date(string)
|
48
|
+
Date.strptime(string, I18n.t('date.formats.default')) rescue super
|
49
|
+
end
|
33
50
|
end
|
34
51
|
end
|
35
|
-
if defined?(ActiveRecord::ConnectionAdapters::Type)
|
36
|
-
ActiveRecord::ConnectionAdapters::Type::Date.send(:
|
52
|
+
if defined?(ActiveRecord::ConnectionAdapters::Type) # rails >= 4.2
|
53
|
+
ActiveRecord::ConnectionAdapters::Type::Date.send(:prepend, ActiveScaffold::Bridges::DatePicker::CastExtension)
|
37
54
|
else
|
38
|
-
ActiveRecord::ConnectionAdapters::Column
|
55
|
+
class << ActiveRecord::ConnectionAdapters::Column
|
56
|
+
prepend ActiveScaffold::Bridges::DatePicker::CastExtension
|
57
|
+
end
|
39
58
|
end
|
40
59
|
|
60
|
+
ActiveScaffold::Config::Core.send :prepend, ActiveScaffold::Bridges::DatePicker::DatePickerBridge
|
41
61
|
ActionView::Base.class_eval do
|
42
62
|
include ActiveScaffold::Bridges::Shared::DateBridge::SearchColumnHelpers
|
43
63
|
alias_method :active_scaffold_search_date_picker, :active_scaffold_search_date_bridge
|
@@ -51,28 +71,13 @@ ActionView::Base.class_eval do
|
|
51
71
|
include ActiveScaffold::Bridges::DatePicker::Helper::DatepickerColumnHelpers
|
52
72
|
end
|
53
73
|
ActiveScaffold::Finder::ClassMethods.module_eval do
|
74
|
+
prepend ActiveScaffold::Bridges::DatePicker::Finder
|
54
75
|
include ActiveScaffold::Bridges::Shared::DateBridge::Finder::ClassMethods
|
55
|
-
def datetime_conversion_for_condition_with_datepicker(column)
|
56
|
-
if column.search_ui == :date_picker
|
57
|
-
:to_date
|
58
|
-
else
|
59
|
-
datetime_conversion_for_condition_without_datepicker(column)
|
60
|
-
end
|
61
|
-
end
|
62
|
-
alias_method_chain :datetime_conversion_for_condition, :datepicker
|
63
|
-
|
64
76
|
alias_method :condition_for_date_picker_type, :condition_for_date_bridge_type
|
65
77
|
alias_method :condition_for_datetime_picker_type, :condition_for_date_picker_type
|
66
78
|
end
|
67
79
|
ActiveScaffold::AttributeParams.module_eval do
|
68
|
-
|
69
|
-
if column.form_ui == :date_picker
|
70
|
-
:to_date
|
71
|
-
else
|
72
|
-
datetime_conversion_for_value_without_datepicker(column)
|
73
|
-
end
|
74
|
-
end
|
75
|
-
alias_method_chain :datetime_conversion_for_value, :datepicker
|
80
|
+
prepend ActiveScaffold::Bridges::DatePicker::AttributeParams
|
76
81
|
alias_method :column_value_for_date_picker_type, :column_value_for_datetime_type
|
77
82
|
alias_method :column_value_for_datetime_picker_type, :column_value_for_datetime_type
|
78
83
|
end
|
@@ -7,9 +7,10 @@ module ActiveScaffold::Bridges
|
|
7
7
|
/%b/ => 'M',
|
8
8
|
/%B/ => 'MM',
|
9
9
|
/%d/ => 'dd',
|
10
|
-
/%e/ => 'd',
|
10
|
+
/%e|%-d/ => 'd',
|
11
11
|
/%j/ => 'oo',
|
12
12
|
/%m/ => 'mm',
|
13
|
+
/%-m|%-m/ => 'm',
|
13
14
|
/%y/ => 'y',
|
14
15
|
/%Y/ => 'yy',
|
15
16
|
/%H/ => 'HH', # options ampm => false
|
@@ -18,7 +19,7 @@ module ActiveScaffold::Bridges
|
|
18
19
|
/%p/ => 'tt',
|
19
20
|
/%S/ => 'ss',
|
20
21
|
/%[cUWwxXZz]/ => ''
|
21
|
-
}
|
22
|
+
}.freeze
|
22
23
|
|
23
24
|
def self.date_options_for_locales
|
24
25
|
I18n.available_locales.collect do |locale|
|
@@ -49,7 +50,7 @@ module ActiveScaffold::Bridges
|
|
49
50
|
Rails.logger.warn "ActiveScaffold: Missing date picker localization for your locale: #{locale}" if as_date_picker_options.blank?
|
50
51
|
|
51
52
|
js_format = to_datepicker_format(I18n.translate!('date.formats.default', :locale => locale, :default => ''))
|
52
|
-
date_picker_options[:dateFormat] = js_format
|
53
|
+
date_picker_options[:dateFormat] = js_format if js_format.present?
|
53
54
|
date_picker_options
|
54
55
|
rescue
|
55
56
|
raise if locale == I18n.locale
|
@@ -95,7 +96,7 @@ module ActiveScaffold::Bridges
|
|
95
96
|
nil
|
96
97
|
end
|
97
98
|
js_format = rails_format.dup
|
98
|
-
js_format.gsub!
|
99
|
+
js_format.gsub!(/([ ]|^)([^% ]\S*)/, " '\\2'")
|
99
100
|
DATE_FORMAT_CONVERSION.each do |key, value|
|
100
101
|
js_format.gsub!(key, value)
|
101
102
|
end
|
@@ -105,7 +106,7 @@ module ActiveScaffold::Bridges
|
|
105
106
|
def self.split_datetime_format(datetime_format)
|
106
107
|
date_format = datetime_format
|
107
108
|
time_format = nil
|
108
|
-
time_start_indicators = %w
|
109
|
+
time_start_indicators = %w[HH hh mm tt ss]
|
109
110
|
unless datetime_format.nil?
|
110
111
|
start_indicator = time_start_indicators.detect { |indicator| datetime_format.include?(indicator) }
|
111
112
|
unless start_indicator.nil?
|
@@ -127,28 +128,30 @@ module ActiveScaffold::Bridges
|
|
127
128
|
end
|
128
129
|
|
129
130
|
def datepicker_format_options(column, format, options)
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
131
|
+
unless format == :default
|
132
|
+
if column.form_ui == :date_picker
|
133
|
+
js_format = to_datepicker_format(I18n.translate!("date.formats.#{format}"))
|
134
|
+
options['data-dateFormat'] = js_format unless js_format.nil?
|
135
|
+
else
|
136
|
+
rails_time_format = I18n.translate!("time.formats.#{format}")
|
137
|
+
date_format, time_format = datepicker_split_datetime_format(to_datepicker_format(rails_time_format))
|
138
|
+
options['data-dateFormat'] = date_format unless date_format.nil?
|
139
|
+
unless time_format.nil?
|
140
|
+
options['data-timeFormat'] = time_format
|
141
|
+
options['data-ampm'] = true if rails_time_format.include?('%I')
|
142
|
+
end
|
140
143
|
end
|
141
|
-
end
|
144
|
+
end
|
142
145
|
end
|
143
146
|
end
|
144
147
|
|
145
148
|
module SearchColumnHelpers
|
146
149
|
def active_scaffold_search_date_bridge_calendar_control(column, options, current_search, name)
|
147
|
-
if current_search.is_a? Hash
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
150
|
+
value = if current_search.is_a? Hash
|
151
|
+
controller.class.condition_value_for_datetime(column, current_search[name], column.search_ui == :date_picker ? :to_date : :to_time)
|
152
|
+
else
|
153
|
+
current_search
|
154
|
+
end
|
152
155
|
options = column.options.merge(options).except!(:include_blank, :discard_time, :discard_date, :value)
|
153
156
|
options = active_scaffold_input_text_options(options.merge(column.options))
|
154
157
|
options[:class] << " #{column.search_ui}"
|
@@ -162,8 +165,6 @@ module ActiveScaffold::Bridges
|
|
162
165
|
module FormColumnHelpers
|
163
166
|
def active_scaffold_input_date_picker(column, options)
|
164
167
|
record = options[:object]
|
165
|
-
ActiveSupport::Deprecation.warn 'Relying on @record is deprecated, include :object in html_options with record.', caller if record.nil? # TODO: Remove when relying on @record is removed
|
166
|
-
record ||= @record # TODO: Remove when relying on @record is removed
|
167
168
|
options = active_scaffold_input_text_options(options.merge(column.options))
|
168
169
|
options[:class] << " #{column.form_ui}"
|
169
170
|
|
@@ -4,6 +4,6 @@ class ActiveScaffold::Bridges::Dragonfly < ActiveScaffold::DataStructures::Bridg
|
|
4
4
|
require File.join(File.dirname(__FILE__), 'dragonfly/list_ui')
|
5
5
|
require File.join(File.dirname(__FILE__), 'dragonfly/dragonfly_bridge_helpers')
|
6
6
|
require File.join(File.dirname(__FILE__), 'dragonfly/dragonfly_bridge')
|
7
|
-
ActiveScaffold::Config::Core.send :
|
7
|
+
ActiveScaffold::Config::Core.send :prepend, ActiveScaffold::Bridges::Dragonfly::DragonflyBridge
|
8
8
|
end
|
9
9
|
end
|
@@ -2,8 +2,8 @@ module ActiveScaffold
|
|
2
2
|
module Bridges
|
3
3
|
class Dragonfly
|
4
4
|
module DragonflyBridge
|
5
|
-
def
|
6
|
-
|
5
|
+
def initialize(model_id)
|
6
|
+
super
|
7
7
|
return unless model.respond_to?(:dragonfly_attachment_classes) && model.dragonfly_attachment_classes.present?
|
8
8
|
|
9
9
|
update.multipart = true
|
@@ -14,10 +14,6 @@ module ActiveScaffold
|
|
14
14
|
end
|
15
15
|
end
|
16
16
|
|
17
|
-
def self.included(base)
|
18
|
-
base.alias_method_chain :initialize, :dragonfly
|
19
|
-
end
|
20
|
-
|
21
17
|
private
|
22
18
|
|
23
19
|
def configure_dragonfly_field(field)
|
@@ -25,7 +21,7 @@ module ActiveScaffold
|
|
25
21
|
columns[field].form_ui ||= :dragonfly
|
26
22
|
columns[field].params.add "remove_#{field}"
|
27
23
|
|
28
|
-
[
|
24
|
+
%i[name uid].each do |f|
|
29
25
|
columns.exclude("#{field}_#{f}".to_sym)
|
30
26
|
end
|
31
27
|
end
|
@@ -3,31 +3,9 @@ module ActiveScaffold
|
|
3
3
|
module FormColumnHelpers
|
4
4
|
def active_scaffold_input_dragonfly(column, options)
|
5
5
|
record = options[:object]
|
6
|
-
|
7
|
-
|
8
|
-
options
|
9
|
-
dragonfly = record.send("#{column.name}")
|
10
|
-
|
11
|
-
required = options.delete(:required) if dragonfly.present?
|
12
|
-
input = file_field(:record, column.name, options)
|
13
|
-
if dragonfly.present?
|
14
|
-
case ActiveScaffold.js_framework
|
15
|
-
when :jquery
|
16
|
-
js_remove_file_code = "jQuery(this).prev().val('true'); jQuery(this).parent().hide().next().show()#{".find('input').attr('required', 'required')" if required}; return false;"
|
17
|
-
when :prototype
|
18
|
-
js_remove_file_code = "$(this).previous().value='true'; $(this).up().hide().next().show()#{".down().writeAttribute('required', 'required')" if required}; return false;"
|
19
|
-
end
|
20
|
-
|
21
|
-
content = active_scaffold_column_dragonfly(record, column)
|
22
|
-
content_tag(
|
23
|
-
:div,
|
24
|
-
content + ' | ' +
|
25
|
-
hidden_field(:record, "remove_#{column.name}", :value => 'false') +
|
26
|
-
content_tag(:a, as_(:remove_file), :href => '#', :onclick => js_remove_file_code)
|
27
|
-
) + content_tag(:div, input, :style => 'display: none')
|
28
|
-
else
|
29
|
-
input
|
30
|
-
end
|
6
|
+
dragonfly = record.send(column.name.to_s)
|
7
|
+
content = active_scaffold_column_dragonfly(record, column) if dragonfly.present?
|
8
|
+
active_scaffold_file_with_remove_link(column, options, content, 'remove_', 'dragonfly_controls')
|
31
9
|
end
|
32
10
|
end
|
33
11
|
end
|
@@ -2,8 +2,8 @@ module ActiveScaffold
|
|
2
2
|
module Helpers
|
3
3
|
module ListColumnHelpers
|
4
4
|
def active_scaffold_column_dragonfly(record, column)
|
5
|
-
attachment = record.send(
|
6
|
-
return nil
|
5
|
+
attachment = record.send(column.name.to_s)
|
6
|
+
return nil if attachment.blank?
|
7
7
|
content =
|
8
8
|
if attachment.image?
|
9
9
|
image_tag(attachment.thumb(column.options[:thumb] || ActiveScaffold::Bridges::Dragonfly::DragonflyBridgeHelpers.thumbnail_style).url, :border => 0)
|
@@ -2,11 +2,11 @@ ActiveScaffold::DataStructures::Column.class_eval do
|
|
2
2
|
attr_accessor :file_column_display
|
3
3
|
end
|
4
4
|
|
5
|
-
|
6
|
-
|
5
|
+
class ActiveScaffold::Bridges::FileColumn
|
6
|
+
module FileColumnBridge
|
7
7
|
attr_accessor :file_column_fields
|
8
|
-
def
|
9
|
-
|
8
|
+
def initialize(model_id)
|
9
|
+
super
|
10
10
|
|
11
11
|
return unless ActiveScaffold::Bridges::FileColumn::FileColumnHelpers.klass_has_file_column_fields?(model)
|
12
12
|
|
@@ -22,8 +22,6 @@ module ActiveScaffold::Config
|
|
22
22
|
model.file_column_fields.each { |field| configure_file_column_field(field) }
|
23
23
|
end
|
24
24
|
|
25
|
-
alias_method_chain :initialize, :file_column unless self.method_defined?(:initialize_without_file_column)
|
26
|
-
|
27
25
|
def configure_file_column_field(field)
|
28
26
|
# set list_ui first because it gets its default value from form_ui
|
29
27
|
columns[field].list_ui ||= model.field_has_image_version?(field, 'thumb') ? :thumbnail : :download_link_with_filename
|
@@ -34,10 +32,10 @@ module ActiveScaffold::Config
|
|
34
32
|
|
35
33
|
# set null to false so active_scaffold wont set it to null
|
36
34
|
# delete_file_column will take care of deleting a file or not.
|
37
|
-
|
38
|
-
|
35
|
+
_columns_hash[field.to_s].instance_variable_set('@null', false)
|
39
36
|
rescue
|
40
37
|
false
|
41
38
|
end
|
42
39
|
end
|
43
40
|
end
|
41
|
+
ActiveScaffold::Config::Core.send :prepend, ActiveScaffold::Bridges::FileColumn::FileColumnBridge
|
@@ -9,7 +9,7 @@ module ActiveScaffold
|
|
9
9
|
|
10
10
|
def generate_delete_helpers(klass)
|
11
11
|
file_column_fields(klass).each do |field|
|
12
|
-
klass.send :class_eval, <<-EOF, __FILE__, __LINE__ + 1
|
12
|
+
klass.send :class_eval, <<-EOF, __FILE__, __LINE__ + 1 unless klass.method_defined?(:"#{field}_with_delete=")
|
13
13
|
attr_reader :delete_#{field}
|
14
14
|
|
15
15
|
def delete_#{field}=(value)
|
@@ -4,8 +4,6 @@ module ActiveScaffold
|
|
4
4
|
module FormColumnHelpers
|
5
5
|
def active_scaffold_input_file_column(column, options)
|
6
6
|
record = options[:object]
|
7
|
-
ActiveSupport::Deprecation.warn 'Relying on @record is deprecated, include :object in html_options with record.', caller if record.nil? # TODO: Remove when relying on @record is removed
|
8
|
-
record ||= @record # TODO: Remove when relying on @record is removed
|
9
7
|
if record.send(column.name)
|
10
8
|
# we already have a value? display the form for deletion.
|
11
9
|
case ActiveScaffold.js_framework
|
@@ -2,6 +2,6 @@ require 'test/unit'
|
|
2
2
|
require 'rubygems'
|
3
3
|
require 'active_support'
|
4
4
|
|
5
|
-
%w
|
5
|
+
%w[../lib/delete_file_column.rb mock_model.rb].each do |file|
|
6
6
|
require File.expand_path(File.join(File.dirname(__FILE__), file))
|
7
7
|
end
|
@@ -11,7 +11,7 @@ module ActiveScaffold::Actions
|
|
11
11
|
|
12
12
|
def deleted
|
13
13
|
query = PaperTrail::Version.destroys.where(:item_type => active_scaffold_config.model)
|
14
|
-
query = query.where_object(nested.child_association.foreign_key => nested.parent_id) if nested? && nested.child_association.
|
14
|
+
query = query.where_object(nested.child_association.foreign_key => nested.parent_id) if nested? && nested.child_association.belongs_to? && PaperTrail::Version.respond_to?(:where_object)
|
15
15
|
pager = Paginator.new(query.count, active_scaffold_config.list.per_page) do |offset, per_page|
|
16
16
|
query.offset(offset).limit(per_page).map(&:reify)
|
17
17
|
end
|
@@ -1,8 +1,7 @@
|
|
1
1
|
module ActiveScaffold::Bridges
|
2
2
|
class PaperTrail
|
3
3
|
module Helper
|
4
|
-
def filter_action_links_for_deleted(action_links, record, options)
|
5
|
-
end
|
4
|
+
def filter_action_links_for_deleted(action_links, record, options); end
|
6
5
|
|
7
6
|
def display_action_links(action_links, record, options, &block)
|
8
7
|
if action_name == 'deleted'
|
@@ -2,17 +2,13 @@ module ActiveScaffold
|
|
2
2
|
module Bridges
|
3
3
|
class PaperTrail
|
4
4
|
module PaperTrailBridge
|
5
|
-
def
|
6
|
-
|
5
|
+
def initialize(model_id)
|
6
|
+
super
|
7
7
|
return unless model < ::PaperTrail::Model::InstanceMethods
|
8
8
|
actions << :deleted_records
|
9
9
|
end
|
10
|
-
|
11
|
-
def self.included(base)
|
12
|
-
base.alias_method_chain :initialize, :paper_trail
|
13
|
-
end
|
14
10
|
end
|
15
11
|
end
|
16
12
|
end
|
17
13
|
end
|
18
|
-
ActiveScaffold::Config::Core.send :
|
14
|
+
ActiveScaffold::Config::Core.send :prepend, ActiveScaffold::Bridges::PaperTrail::PaperTrailBridge
|
@@ -7,6 +7,6 @@ class ActiveScaffold::Bridges::Paperclip < ActiveScaffold::DataStructures::Bridg
|
|
7
7
|
require File.join(File.dirname(__FILE__), 'paperclip/list_ui')
|
8
8
|
require File.join(File.dirname(__FILE__), 'paperclip/paperclip_bridge_helpers')
|
9
9
|
require File.join(File.dirname(__FILE__), 'paperclip/paperclip_bridge')
|
10
|
-
ActiveScaffold::Config::Core.send :
|
10
|
+
ActiveScaffold::Config::Core.send :prepend, ActiveScaffold::Bridges::Paperclip::PaperclipBridge
|
11
11
|
end
|
12
12
|
end
|
@@ -3,34 +3,9 @@ module ActiveScaffold
|
|
3
3
|
module FormColumnHelpers
|
4
4
|
def active_scaffold_input_paperclip(column, options)
|
5
5
|
record = options[:object]
|
6
|
-
|
7
|
-
|
8
|
-
options
|
9
|
-
paperclip = record.send("#{column.name}")
|
10
|
-
|
11
|
-
required = options.delete(:required) if paperclip.file?
|
12
|
-
input = file_field(:record, column.name, options)
|
13
|
-
if paperclip.file?
|
14
|
-
case ActiveScaffold.js_framework
|
15
|
-
when :jquery
|
16
|
-
js_remove_file_code = "jQuery(this).prev().val('true'); jQuery(this).parent().hide().next().show()#{".find('input').attr('required', 'required')" if required}; return false;"
|
17
|
-
when :prototype
|
18
|
-
js_remove_file_code = "$(this).previous().value='true'; $(this).up().hide().next().show()#{".down().writeAttribute('required', 'required')" if required}; return false;"
|
19
|
-
end
|
20
|
-
|
21
|
-
object_name, method = options[:name].split(/\[(#{column.name})\]/)
|
22
|
-
method.sub!(/#{column.name}/, 'delete_\0')
|
23
|
-
|
24
|
-
content = active_scaffold_column_paperclip(record, column)
|
25
|
-
content_tag(
|
26
|
-
:div,
|
27
|
-
content + ' | ' +
|
28
|
-
hidden_field(object_name, method, :value => 'false') +
|
29
|
-
content_tag(:a, as_(:remove_file), :href => '#', :onclick => js_remove_file_code)
|
30
|
-
) + content_tag(:div, input, :style => 'display: none')
|
31
|
-
else
|
32
|
-
input
|
33
|
-
end
|
6
|
+
paperclip = record.send(column.name.to_s)
|
7
|
+
content = active_scaffold_column_paperclip(record, column) if paperclip.file?
|
8
|
+
active_scaffold_file_with_remove_link(column, options, content, 'delete_', 'paperclip_controls')
|
34
9
|
end
|
35
10
|
end
|
36
11
|
end
|