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.
Files changed (216) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +39 -0
  3. data/{LICENSE → LICENSE.md} +1 -1
  4. data/README.md +27 -19
  5. data/app/assets/javascripts/active_scaffold.js.erb +1 -1
  6. data/app/assets/javascripts/jquery/active_scaffold.js +95 -43
  7. data/app/assets/javascripts/jquery/tiny_mce_bridge.js +30 -6
  8. data/app/assets/javascripts/prototype/tiny_mce_bridge.js +11 -1
  9. data/app/assets/stylesheets/active_scaffold_colors.scss +2 -2
  10. data/app/assets/stylesheets/active_scaffold_layout.css +36 -28
  11. data/app/views/active_scaffold_overrides/_base_form.html.erb +2 -3
  12. data/app/views/active_scaffold_overrides/_field_search.html.erb +8 -7
  13. data/app/views/active_scaffold_overrides/_form_association.html.erb +9 -9
  14. data/app/views/active_scaffold_overrides/_form_association_footer.html.erb +6 -6
  15. data/app/views/active_scaffold_overrides/_form_association_record.html.erb +52 -50
  16. data/app/views/active_scaffold_overrides/_horizontal_subform.html.erb +1 -1
  17. data/app/views/active_scaffold_overrides/_horizontal_subform_header.html.erb +1 -1
  18. data/app/views/active_scaffold_overrides/_human_conditions.html.erb +3 -1
  19. data/app/views/active_scaffold_overrides/_list_calculations.html.erb +1 -1
  20. data/app/views/active_scaffold_overrides/_list_column_headings.html.erb +2 -0
  21. data/app/views/active_scaffold_overrides/_list_messages.html.erb +5 -3
  22. data/app/views/active_scaffold_overrides/_list_record.html.erb +3 -1
  23. data/app/views/active_scaffold_overrides/_list_with_header.html.erb +9 -9
  24. data/app/views/active_scaffold_overrides/_messages.html.erb +1 -1
  25. data/app/views/active_scaffold_overrides/_refresh_list.js.erb +18 -10
  26. data/app/views/active_scaffold_overrides/_render_field.js.erb +3 -3
  27. data/app/views/active_scaffold_overrides/_search.html.erb +7 -6
  28. data/app/views/active_scaffold_overrides/_show_actions.html.erb +14 -0
  29. data/app/views/active_scaffold_overrides/_show_association.html.erb +1 -1
  30. data/app/views/active_scaffold_overrides/_update_actions.html.erb +6 -2
  31. data/app/views/active_scaffold_overrides/_update_column.js.erb +1 -1
  32. data/app/views/active_scaffold_overrides/_update_form.html.erb +1 -1
  33. data/app/views/active_scaffold_overrides/destroy.js.erb +2 -3
  34. data/app/views/active_scaffold_overrides/edit_associated.js.erb +4 -3
  35. data/app/views/active_scaffold_overrides/on_action_update.js.erb +5 -3
  36. data/app/views/active_scaffold_overrides/on_create.js.erb +4 -4
  37. data/app/views/active_scaffold_overrides/on_update.js.erb +6 -6
  38. data/app/views/active_scaffold_overrides/show.html.erb +6 -0
  39. data/app/views/active_scaffold_overrides/update.html.erb +1 -1
  40. data/app/views/active_scaffold_overrides/update_column.js.erb +1 -1
  41. data/config/brakeman.ignore +26 -0
  42. data/config/brakeman.yml +3 -0
  43. data/config/i18n-tasks.yml +121 -0
  44. data/config/locales/de.yml +81 -70
  45. data/config/locales/en.yml +83 -74
  46. data/config/locales/es.yml +82 -73
  47. data/config/locales/fr.yml +86 -75
  48. data/config/locales/hu.yml +81 -70
  49. data/config/locales/ja.yml +71 -60
  50. data/config/locales/ru.yml +85 -74
  51. data/lib/active_scaffold.rb +3 -0
  52. data/lib/active_scaffold/actions/common_search.rb +11 -7
  53. data/lib/active_scaffold/actions/core.rb +119 -47
  54. data/lib/active_scaffold/actions/create.rb +1 -1
  55. data/lib/active_scaffold/actions/delete.rb +11 -8
  56. data/lib/active_scaffold/actions/field_search.rb +104 -6
  57. data/lib/active_scaffold/actions/list.rb +25 -21
  58. data/lib/active_scaffold/actions/mark.rb +12 -4
  59. data/lib/active_scaffold/actions/nested.rb +26 -26
  60. data/lib/active_scaffold/actions/search.rb +2 -2
  61. data/lib/active_scaffold/actions/show.rb +4 -5
  62. data/lib/active_scaffold/actions/subform.rb +9 -7
  63. data/lib/active_scaffold/actions/update.rb +20 -13
  64. data/lib/active_scaffold/active_record_permissions.rb +24 -5
  65. data/lib/active_scaffold/attribute_params.rb +68 -49
  66. data/lib/active_scaffold/bridges.rb +1 -1
  67. data/lib/active_scaffold/bridges/ancestry/ancestry_bridge.rb +15 -19
  68. data/lib/active_scaffold/bridges/bitfields.rb +1 -1
  69. data/lib/active_scaffold/bridges/bitfields/bitfields_bridge.rb +10 -14
  70. data/lib/active_scaffold/bridges/calendar_date_select.rb +0 -7
  71. data/lib/active_scaffold/bridges/calendar_date_select/as_cds_bridge.rb +19 -22
  72. data/lib/active_scaffold/bridges/cancan.rb +4 -3
  73. data/lib/active_scaffold/bridges/cancan/cancan_bridge.rb +11 -21
  74. data/lib/active_scaffold/bridges/carrierwave.rb +2 -1
  75. data/lib/active_scaffold/bridges/carrierwave/carrierwave_bridge.rb +2 -6
  76. data/lib/active_scaffold/bridges/carrierwave/form_ui.rb +6 -39
  77. data/lib/active_scaffold/bridges/carrierwave/list_ui.rb +1 -1
  78. data/lib/active_scaffold/bridges/chosen.rb +4 -1
  79. data/lib/active_scaffold/bridges/chosen/helpers.rb +3 -2
  80. data/lib/active_scaffold/bridges/country_select/country_select_bridge_helper.rb +2 -2
  81. data/lib/active_scaffold/bridges/date_picker.rb +3 -0
  82. data/lib/active_scaffold/bridges/date_picker/ext.rb +43 -38
  83. data/lib/active_scaffold/bridges/date_picker/helper.rb +24 -23
  84. data/lib/active_scaffold/bridges/dragonfly.rb +1 -1
  85. data/lib/active_scaffold/bridges/dragonfly/dragonfly_bridge.rb +3 -7
  86. data/lib/active_scaffold/bridges/dragonfly/form_ui.rb +3 -25
  87. data/lib/active_scaffold/bridges/dragonfly/list_ui.rb +2 -2
  88. data/lib/active_scaffold/bridges/file_column/as_file_column_bridge.rb +6 -8
  89. data/lib/active_scaffold/bridges/file_column/file_column_helpers.rb +1 -1
  90. data/lib/active_scaffold/bridges/file_column/form_ui.rb +0 -2
  91. data/lib/active_scaffold/bridges/file_column/list_ui.rb +2 -1
  92. data/lib/active_scaffold/bridges/file_column/test/test_helper.rb +1 -1
  93. data/lib/active_scaffold/bridges/paper_trail/actions.rb +1 -1
  94. data/lib/active_scaffold/bridges/paper_trail/helper.rb +1 -2
  95. data/lib/active_scaffold/bridges/paper_trail/paper_trail_bridge.rb +3 -7
  96. data/lib/active_scaffold/bridges/paperclip.rb +1 -1
  97. data/lib/active_scaffold/bridges/paperclip/form_ui.rb +3 -28
  98. data/lib/active_scaffold/bridges/paperclip/list_ui.rb +1 -1
  99. data/lib/active_scaffold/bridges/paperclip/paperclip_bridge.rb +3 -7
  100. data/lib/active_scaffold/bridges/record_select.rb +2 -0
  101. data/lib/active_scaffold/bridges/record_select/helpers.rb +14 -18
  102. data/lib/active_scaffold/bridges/semantic_attributes/column.rb +4 -8
  103. data/lib/active_scaffold/bridges/shared/date_bridge.rb +20 -20
  104. data/lib/active_scaffold/bridges/tiny_mce/helpers.rb +7 -22
  105. data/lib/active_scaffold/bridges/usa_state_select/usa_state_select_helper.rb +14 -14
  106. data/lib/active_scaffold/config/base.rb +9 -6
  107. data/lib/active_scaffold/config/core.rb +30 -21
  108. data/lib/active_scaffold/config/create.rb +2 -1
  109. data/lib/active_scaffold/config/delete.rb +2 -2
  110. data/lib/active_scaffold/config/field_search.rb +9 -3
  111. data/lib/active_scaffold/config/form.rb +4 -4
  112. data/lib/active_scaffold/config/list.rb +27 -23
  113. data/lib/active_scaffold/config/nested.rb +4 -4
  114. data/lib/active_scaffold/config/search.rb +6 -6
  115. data/lib/active_scaffold/config/show.rb +11 -1
  116. data/lib/active_scaffold/config/subform.rb +1 -1
  117. data/lib/active_scaffold/config/update.rb +4 -2
  118. data/lib/active_scaffold/constraints.rb +39 -36
  119. data/lib/active_scaffold/core.rb +36 -15
  120. data/lib/active_scaffold/data_structures/action_columns.rb +14 -9
  121. data/lib/active_scaffold/data_structures/action_link.rb +4 -5
  122. data/lib/active_scaffold/data_structures/action_links.rb +5 -4
  123. data/lib/active_scaffold/data_structures/actions.rb +2 -2
  124. data/lib/active_scaffold/data_structures/association.rb +8 -0
  125. data/lib/active_scaffold/data_structures/association/abstract.rb +147 -0
  126. data/lib/active_scaffold/data_structures/association/active_mongoid.rb +42 -0
  127. data/lib/active_scaffold/data_structures/association/active_record.rb +94 -0
  128. data/lib/active_scaffold/data_structures/association/mongoid.rb +45 -0
  129. data/lib/active_scaffold/data_structures/bridge.rb +3 -6
  130. data/lib/active_scaffold/data_structures/column.rb +100 -82
  131. data/lib/active_scaffold/data_structures/columns.rb +21 -3
  132. data/lib/active_scaffold/data_structures/nested_info.rb +22 -37
  133. data/lib/active_scaffold/data_structures/set.rb +4 -4
  134. data/lib/active_scaffold/data_structures/sorting.rb +29 -15
  135. data/lib/active_scaffold/engine.rb +3 -1
  136. data/lib/active_scaffold/extensions/action_controller_rendering.rb +10 -5
  137. data/lib/active_scaffold/extensions/action_view_rendering.rb +65 -59
  138. data/lib/active_scaffold/extensions/left_outer_joins.rb +48 -53
  139. data/lib/active_scaffold/extensions/localize.rb +3 -4
  140. data/lib/active_scaffold/extensions/name_option_for_datetime.rb +7 -11
  141. data/lib/active_scaffold/extensions/paginator_extensions.rb +20 -18
  142. data/lib/active_scaffold/extensions/routing_mapper.rb +104 -40
  143. data/lib/active_scaffold/extensions/to_label.rb +1 -1
  144. data/lib/active_scaffold/extensions/unsaved_associated.rb +4 -13
  145. data/lib/active_scaffold/extensions/unsaved_record.rb +12 -1
  146. data/lib/active_scaffold/finder.rb +200 -134
  147. data/lib/active_scaffold/helpers/action_link_helpers.rb +398 -0
  148. data/lib/active_scaffold/helpers/association_helpers.rb +12 -30
  149. data/lib/active_scaffold/helpers/controller_helpers.rb +74 -24
  150. data/lib/active_scaffold/helpers/form_column_helpers.rb +205 -112
  151. data/lib/active_scaffold/helpers/human_condition_helpers.rb +21 -11
  152. data/lib/active_scaffold/helpers/id_helpers.rb +1 -1
  153. data/lib/active_scaffold/helpers/list_column_helpers.rb +117 -39
  154. data/lib/active_scaffold/helpers/pagination_helpers.rb +11 -14
  155. data/lib/active_scaffold/helpers/search_column_helpers.rb +69 -32
  156. data/lib/active_scaffold/helpers/show_column_helpers.rb +9 -3
  157. data/lib/active_scaffold/helpers/view_helpers.rb +41 -426
  158. data/lib/active_scaffold/orm_checks.rb +109 -0
  159. data/lib/active_scaffold/paginator.rb +1 -1
  160. data/lib/active_scaffold/responds_to_parent.rb +12 -10
  161. data/lib/active_scaffold/tableless.rb +81 -43
  162. data/lib/active_scaffold/version.rb +2 -2
  163. data/lib/generators/active_scaffold/controller_generator.rb +49 -0
  164. data/lib/generators/active_scaffold/install_generator.rb +45 -0
  165. data/lib/generators/active_scaffold/resource_generator.rb +56 -0
  166. data/lib/generators/{active_scaffold_controller/templates → templates}/controller.rb +0 -0
  167. data/lib/generators/{active_scaffold_controller/templates → templates}/helper.rb +0 -0
  168. data/shoulda_macros/macros.rb +3 -3
  169. data/test/active_scaffold_config_mock.rb +33 -0
  170. data/test/bridges/bridge_test.rb +9 -9
  171. data/test/bridges/date_picker_test.rb +3 -1
  172. data/test/bridges/paper_trail_test.rb +2 -3
  173. data/test/bridges/paperclip_test.rb +21 -10
  174. data/test/bridges/tiny_mce_test.rb +20 -21
  175. data/test/class_with_finder.rb +42 -0
  176. data/test/company.rb +6 -4
  177. data/test/config/core_test.rb +1 -1
  178. data/test/config/create_test.rb +1 -1
  179. data/test/config/list_test.rb +3 -3
  180. data/test/config/update_test.rb +3 -3
  181. data/test/data_structures/action_columns_test.rb +3 -3
  182. data/test/data_structures/association_column_test.rb +5 -5
  183. data/test/data_structures/column_test.rb +14 -14
  184. data/test/data_structures/columns_test.rb +2 -2
  185. data/test/data_structures/set_test.rb +2 -2
  186. data/test/data_structures/sorting_test.rb +6 -4
  187. data/test/extensions/active_record_test.rb +1 -1
  188. data/test/extensions/routing_mapper_test.rb +64 -13
  189. data/test/helpers/form_column_helpers_test.rb +6 -6
  190. data/test/helpers/list_column_helpers_test.rb +9 -5
  191. data/test/helpers/pagination_helpers_test.rb +1 -0
  192. data/test/misc/active_record_permissions_test.rb +18 -1
  193. data/test/misc/attribute_params_test.rb +26 -17
  194. data/test/misc/calculation_test.rb +8 -31
  195. data/test/misc/configurable_test.rb +3 -2
  196. data/test/misc/constraints_test.rb +33 -22
  197. data/test/misc/convert_numbers_format_test.rb +28 -10
  198. data/test/misc/finder_test.rb +6 -29
  199. data/test/misc/parse_datetime_test.rb +160 -0
  200. data/test/misc/render_test.rb +1 -1
  201. data/test/misc/tableless_test.rb +24 -0
  202. data/test/mock_app/app/models/building.rb +2 -1
  203. data/test/mock_app/config.ru +1 -1
  204. data/test/mock_app/config/environments/test.rb +1 -1
  205. data/test/mock_app/config/routes.rb +11 -3
  206. data/test/model_stub.rb +11 -6
  207. data/test/run_all.rb +1 -1
  208. data/test/test_helper.rb +19 -4
  209. metadata +42 -23
  210. data/lib/active_scaffold/data_structures/error_message.rb +0 -22
  211. data/lib/active_scaffold/extensions/reverse_associations.rb +0 -119
  212. data/lib/generators/active_scaffold/USAGE +0 -29
  213. data/lib/generators/active_scaffold/active_scaffold_generator.rb +0 -21
  214. data/lib/generators/active_scaffold_controller/USAGE +0 -19
  215. data/lib/generators/active_scaffold_controller/active_scaffold_controller_generator.rb +0 -29
  216. 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') { |f| f.read }
4
+ File.open(file, 'rb', &:read)
5
5
  end
6
6
  end
7
7
  end
8
8
 
9
- ActiveScaffold::Config::Core.class_eval do
10
- def initialize_with_date_picker(model_id)
11
- initialize_without_date_picker(model_id)
9
+ class ActiveScaffold::Bridges::DatePicker
10
+ module DatePickerBridge
11
+ def initialize(model_id)
12
+ super
12
13
 
13
- date_picker_fields = model.columns.collect { |c| {:name => c.name.to_sym, :type => c.type} if [:date, :datetime].include?(c.type) }.compact
14
- # check to see if file column was used on the model
15
- return if date_picker_fields.empty?
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
- # automatically set the forum_ui to a date_picker or datetime_picker
18
- date_picker_fields.each do |field|
19
- col_config = columns[field[:name]]
20
- col_config.form_ui = (field[:type] == :date ? :date_picker : :datetime_picker)
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
- alias_method_chain :initialize, :date_picker
25
- end
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 ActiveScaffold::Bridges::DatePicker::CastExtension
28
- def fallback_string_to_date_with_date_picker(string)
29
- Date.strptime(string, I18n.t('date.formats.default')) rescue fallback_string_to_date_without_date_picker(string)
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
- def self.included(base)
32
- base.alias_method_chain :fallback_string_to_date, :date_picker
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(:include, ActiveScaffold::Bridges::DatePicker::CastExtension)
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.extend ActiveScaffold::Bridges::DatePicker::CastExtension
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
- def datetime_conversion_for_value_with_datepicker(column)
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 unless js_format.blank?
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! /([ ]|^)([^% ]\S*)/, " '\\2'"
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(HH hh mm tt ss)
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
- if column.form_ui == :date_picker
131
- js_format = to_datepicker_format(I18n.translate!("date.formats.#{format}"))
132
- options['data-dateFormat'] = js_format unless js_format.nil?
133
- else
134
- rails_time_format = I18n.translate!("time.formats.#{format}")
135
- date_format, time_format = datepicker_split_datetime_format(to_datepicker_format(rails_time_format))
136
- options['data-dateFormat'] = date_format unless date_format.nil?
137
- unless time_format.nil?
138
- options['data-timeFormat'] = time_format
139
- options['data-ampm'] = true if rails_time_format.include?('%I')
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 unless format == :default
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
- value = controller.class.condition_value_for_datetime(column, current_search[name], column.search_ui == :date_picker ? :to_date : :to_time)
149
- else
150
- value = current_search
151
- end
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 :include, ActiveScaffold::Bridges::Dragonfly::DragonflyBridge
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 initialize_with_dragonfly(model_id)
6
- initialize_without_dragonfly(model_id)
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
- [:name, :uid].each do |f|
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
- 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
7
- record ||= @record # TODO: Remove when relying on @record is removed
8
- options = active_scaffold_input_text_options(options.merge(column.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("#{column.name}")
6
- return nil unless attachment.present?
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
- module ActiveScaffold::Config
6
- class Core < Base
5
+ class ActiveScaffold::Bridges::FileColumn
6
+ module FileColumnBridge
7
7
  attr_accessor :file_column_fields
8
- def initialize_with_file_column(model_id)
9
- initialize_without_file_column(model_id)
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
- model.columns_hash[field.to_s].instance_variable_set('@null', false)
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 unless klass.method_defined?(:"#{field}_with_delete=")
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
@@ -18,7 +18,8 @@ module ActiveScaffold
18
18
  link_to(
19
19
  image_tag(url_for_file_column(record, column.name.to_s, 'thumb'), :border => 0),
20
20
  url_for_file_column(record, column.name.to_s),
21
- :popup => true)
21
+ :popup => true
22
+ )
22
23
  end
23
24
  end
24
25
  end
@@ -2,6 +2,6 @@ require 'test/unit'
2
2
  require 'rubygems'
3
3
  require 'active_support'
4
4
 
5
- %w(../lib/delete_file_column.rb mock_model.rb).each do |file|
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.macro == :belongs_to && PaperTrail::Version.respond_to?(:where_object)
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 initialize_with_paper_trail(model_id)
6
- initialize_without_paper_trail(model_id)
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 :include, ActiveScaffold::Bridges::PaperTrail::PaperTrailBridge
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 :include, ActiveScaffold::Bridges::Paperclip::PaperclipBridge
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
- 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
7
- record ||= @record # TODO: Remove when relying on @record is removed
8
- options = active_scaffold_input_text_options(options.merge(column.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