active_scaffold 3.2.17 → 3.2.18

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 (246) hide show
  1. data/CHANGELOG +5 -1
  2. metadata +17 -261
  3. data/app/assets/images/active_scaffold/add.png +0 -0
  4. data/app/assets/images/active_scaffold/arrow_down.png +0 -0
  5. data/app/assets/images/active_scaffold/arrow_up.png +0 -0
  6. data/app/assets/images/active_scaffold/close.png +0 -0
  7. data/app/assets/images/active_scaffold/close_touch.png +0 -0
  8. data/app/assets/images/active_scaffold/config.png +0 -0
  9. data/app/assets/images/active_scaffold/cross.png +0 -0
  10. data/app/assets/images/active_scaffold/gears.png +0 -0
  11. data/app/assets/images/active_scaffold/indicator-small.gif +0 -0
  12. data/app/assets/images/active_scaffold/indicator.gif +0 -0
  13. data/app/assets/images/active_scaffold/magnifier.png +0 -0
  14. data/app/assets/javascripts/active_scaffold.js.erb +0 -19
  15. data/app/assets/javascripts/jquery/active_scaffold.js +0 -1113
  16. data/app/assets/javascripts/jquery/date_picker_bridge.js.erb +0 -24
  17. data/app/assets/javascripts/jquery/draggable_lists.js +0 -27
  18. data/app/assets/javascripts/jquery/jquery.editinplace.js +0 -743
  19. data/app/assets/javascripts/jquery/tiny_mce_bridge.js +0 -7
  20. data/app/assets/javascripts/prototype/active_scaffold.js +0 -1107
  21. data/app/assets/javascripts/prototype/dhtml_history.js +0 -870
  22. data/app/assets/javascripts/prototype/form_enhancements.js +0 -117
  23. data/app/assets/javascripts/prototype/rico_corner.js +0 -370
  24. data/app/assets/javascripts/prototype/tiny_mce_bridge.js +0 -7
  25. data/app/assets/stylesheets/active_scaffold-ie.css.scss +0 -54
  26. data/app/assets/stylesheets/active_scaffold.css.scss +0 -14
  27. data/app/assets/stylesheets/active_scaffold_colors.css.scss +0 -395
  28. data/app/assets/stylesheets/active_scaffold_extensions.css.erb +0 -2
  29. data/app/assets/stylesheets/active_scaffold_images.css.scss +0 -40
  30. data/app/assets/stylesheets/active_scaffold_layout.css +0 -936
  31. data/app/assets/stylesheets/blue-theme.css +0 -74
  32. data/config/locales/de.yml +0 -125
  33. data/config/locales/en.yml +0 -127
  34. data/config/locales/es.yml +0 -128
  35. data/config/locales/fr.yml +0 -131
  36. data/config/locales/hu.yml +0 -126
  37. data/config/locales/ja.yml +0 -126
  38. data/config/locales/ru.yml +0 -135
  39. data/frontends/default/views/_action_group.html.erb +0 -24
  40. data/frontends/default/views/_add_existing_form.html.erb +0 -30
  41. data/frontends/default/views/_base_form.html.erb +0 -53
  42. data/frontends/default/views/_create_form.html.erb +0 -8
  43. data/frontends/default/views/_create_form_on_list.html.erb +0 -6
  44. data/frontends/default/views/_field_search.html.erb +0 -32
  45. data/frontends/default/views/_form.html.erb +0 -28
  46. data/frontends/default/views/_form_association.html.erb +0 -17
  47. data/frontends/default/views/_form_association_footer.html.erb +0 -47
  48. data/frontends/default/views/_form_attribute.html.erb +0 -23
  49. data/frontends/default/views/_form_hidden_attribute.html.erb +0 -7
  50. data/frontends/default/views/_form_messages.html.erb +0 -5
  51. data/frontends/default/views/_horizontal_subform.html.erb +0 -22
  52. data/frontends/default/views/_horizontal_subform_footer.html.erb +0 -0
  53. data/frontends/default/views/_horizontal_subform_header.html.erb +0 -11
  54. data/frontends/default/views/_horizontal_subform_record.html.erb +0 -43
  55. data/frontends/default/views/_human_conditions.html.erb +0 -1
  56. data/frontends/default/views/_list.html.erb +0 -18
  57. data/frontends/default/views/_list_actions.html.erb +0 -15
  58. data/frontends/default/views/_list_calculations.html.erb +0 -16
  59. data/frontends/default/views/_list_column_headings.html.erb +0 -12
  60. data/frontends/default/views/_list_header.html.erb +0 -10
  61. data/frontends/default/views/_list_inline_adapter.html.erb +0 -21
  62. data/frontends/default/views/_list_messages.html.erb +0 -28
  63. data/frontends/default/views/_list_pagination.html.erb +0 -11
  64. data/frontends/default/views/_list_pagination_links.html.erb +0 -9
  65. data/frontends/default/views/_list_record.html.erb +0 -13
  66. data/frontends/default/views/_list_record_columns.html.erb +0 -8
  67. data/frontends/default/views/_list_with_header.html.erb +0 -36
  68. data/frontends/default/views/_messages.html.erb +0 -10
  69. data/frontends/default/views/_refresh_list.js.erb +0 -1
  70. data/frontends/default/views/_render_field.js.erb +0 -20
  71. data/frontends/default/views/_row.html.erb +0 -1
  72. data/frontends/default/views/_search.html.erb +0 -34
  73. data/frontends/default/views/_search_attribute.html.erb +0 -10
  74. data/frontends/default/views/_show.html.erb +0 -8
  75. data/frontends/default/views/_show_columns.html.erb +0 -15
  76. data/frontends/default/views/_update_actions.html.erb +0 -9
  77. data/frontends/default/views/_update_calculations.js.erb +0 -4
  78. data/frontends/default/views/_update_form.html.erb +0 -6
  79. data/frontends/default/views/_update_messages.js.erb +0 -2
  80. data/frontends/default/views/_vertical_subform.html.erb +0 -12
  81. data/frontends/default/views/_vertical_subform_record.html.erb +0 -43
  82. data/frontends/default/views/action_confirmation.html.erb +0 -13
  83. data/frontends/default/views/add_existing.js.erb +0 -14
  84. data/frontends/default/views/add_existing_form.html.erb +0 -5
  85. data/frontends/default/views/create.html.erb +0 -5
  86. data/frontends/default/views/delete.html.erb +0 -13
  87. data/frontends/default/views/destroy.js.erb +0 -26
  88. data/frontends/default/views/edit_associated.js.erb +0 -12
  89. data/frontends/default/views/field_search.html.erb +0 -5
  90. data/frontends/default/views/form_messages.js.erb +0 -1
  91. data/frontends/default/views/list.html.erb +0 -1
  92. data/frontends/default/views/on_action_update.js.erb +0 -22
  93. data/frontends/default/views/on_create.js.erb +0 -38
  94. data/frontends/default/views/on_mark.js.erb +0 -6
  95. data/frontends/default/views/on_update.js.erb +0 -29
  96. data/frontends/default/views/refresh_list.js.erb +0 -2
  97. data/frontends/default/views/render_field.js.erb +0 -1
  98. data/frontends/default/views/row.js.erb +0 -2
  99. data/frontends/default/views/search.html.erb +0 -5
  100. data/frontends/default/views/show.html.erb +0 -5
  101. data/frontends/default/views/update.html.erb +0 -8
  102. data/frontends/default/views/update_column.js.erb +0 -15
  103. data/frontends/default/views/update_row.js.erb +0 -1
  104. data/lib/active_scaffold.rb +0 -373
  105. data/lib/active_scaffold/actions/common_search.rb +0 -22
  106. data/lib/active_scaffold/actions/core.rb +0 -203
  107. data/lib/active_scaffold/actions/create.rb +0 -139
  108. data/lib/active_scaffold/actions/delete.rb +0 -74
  109. data/lib/active_scaffold/actions/field_search.rb +0 -78
  110. data/lib/active_scaffold/actions/list.rb +0 -208
  111. data/lib/active_scaffold/actions/mark.rb +0 -89
  112. data/lib/active_scaffold/actions/nested.rb +0 -244
  113. data/lib/active_scaffold/actions/search.rb +0 -48
  114. data/lib/active_scaffold/actions/show.rb +0 -61
  115. data/lib/active_scaffold/actions/subform.rb +0 -23
  116. data/lib/active_scaffold/actions/update.rb +0 -156
  117. data/lib/active_scaffold/active_record_permissions.rb +0 -135
  118. data/lib/active_scaffold/attribute_params.rb +0 -200
  119. data/lib/active_scaffold/bridges.rb +0 -61
  120. data/lib/active_scaffold/bridges/ancestry.rb +0 -5
  121. data/lib/active_scaffold/bridges/ancestry/ancestry_bridge.rb +0 -39
  122. data/lib/active_scaffold/bridges/bitfields.rb +0 -6
  123. data/lib/active_scaffold/bridges/bitfields/bitfields_bridge.rb +0 -37
  124. data/lib/active_scaffold/bridges/calendar_date_select.rb +0 -24
  125. data/lib/active_scaffold/bridges/calendar_date_select/as_cds_bridge.rb +0 -66
  126. data/lib/active_scaffold/bridges/cancan.rb +0 -15
  127. data/lib/active_scaffold/bridges/cancan/cancan_bridge.rb +0 -127
  128. data/lib/active_scaffold/bridges/carrierwave.rb +0 -12
  129. data/lib/active_scaffold/bridges/carrierwave/carrierwave_bridge.rb +0 -31
  130. data/lib/active_scaffold/bridges/carrierwave/carrierwave_bridge_helpers.rb +0 -10
  131. data/lib/active_scaffold/bridges/carrierwave/form_ui.rb +0 -45
  132. data/lib/active_scaffold/bridges/carrierwave/list_ui.rb +0 -17
  133. data/lib/active_scaffold/bridges/country_helper.rb +0 -9
  134. data/lib/active_scaffold/bridges/country_helper/country_helper_bridge.rb +0 -358
  135. data/lib/active_scaffold/bridges/date_picker.rb +0 -23
  136. data/lib/active_scaffold/bridges/date_picker/ext.rb +0 -63
  137. data/lib/active_scaffold/bridges/date_picker/helper.rb +0 -180
  138. data/lib/active_scaffold/bridges/dragonfly.rb +0 -9
  139. data/lib/active_scaffold/bridges/dragonfly/dragonfly_bridge.rb +0 -34
  140. data/lib/active_scaffold/bridges/dragonfly/dragonfly_bridge_helpers.rb +0 -10
  141. data/lib/active_scaffold/bridges/dragonfly/form_ui.rb +0 -27
  142. data/lib/active_scaffold/bridges/dragonfly/list_ui.rb +0 -16
  143. data/lib/active_scaffold/bridges/file_column.rb +0 -11
  144. data/lib/active_scaffold/bridges/file_column/as_file_column_bridge.rb +0 -46
  145. data/lib/active_scaffold/bridges/file_column/file_column_helpers.rb +0 -57
  146. data/lib/active_scaffold/bridges/file_column/form_ui.rb +0 -34
  147. data/lib/active_scaffold/bridges/file_column/list_ui.rb +0 -26
  148. data/lib/active_scaffold/bridges/file_column/test/functional/file_column_keep_test.rb +0 -43
  149. data/lib/active_scaffold/bridges/file_column/test/mock_model.rb +0 -9
  150. data/lib/active_scaffold/bridges/file_column/test/test_helper.rb +0 -15
  151. data/lib/active_scaffold/bridges/paperclip.rb +0 -12
  152. data/lib/active_scaffold/bridges/paperclip/form_ui.rb +0 -27
  153. data/lib/active_scaffold/bridges/paperclip/list_ui.rb +0 -16
  154. data/lib/active_scaffold/bridges/paperclip/paperclip_bridge.rb +0 -36
  155. data/lib/active_scaffold/bridges/paperclip/paperclip_bridge_helpers.rb +0 -24
  156. data/lib/active_scaffold/bridges/record_select.rb +0 -11
  157. data/lib/active_scaffold/bridges/record_select/helpers.rb +0 -92
  158. data/lib/active_scaffold/bridges/semantic_attributes.rb +0 -5
  159. data/lib/active_scaffold/bridges/semantic_attributes/column.rb +0 -20
  160. data/lib/active_scaffold/bridges/shared/date_bridge.rb +0 -209
  161. data/lib/active_scaffold/bridges/tiny_mce.rb +0 -17
  162. data/lib/active_scaffold/bridges/tiny_mce/helpers.rb +0 -46
  163. data/lib/active_scaffold/config/base.rb +0 -75
  164. data/lib/active_scaffold/config/core.rb +0 -236
  165. data/lib/active_scaffold/config/create.rb +0 -32
  166. data/lib/active_scaffold/config/delete.rb +0 -32
  167. data/lib/active_scaffold/config/field_search.rb +0 -79
  168. data/lib/active_scaffold/config/form.rb +0 -64
  169. data/lib/active_scaffold/config/list.rb +0 -247
  170. data/lib/active_scaffold/config/mark.rb +0 -30
  171. data/lib/active_scaffold/config/nested.rb +0 -42
  172. data/lib/active_scaffold/config/search.rb +0 -73
  173. data/lib/active_scaffold/config/show.rb +0 -31
  174. data/lib/active_scaffold/config/subform.rb +0 -35
  175. data/lib/active_scaffold/config/update.rb +0 -33
  176. data/lib/active_scaffold/configurable.rb +0 -29
  177. data/lib/active_scaffold/constraints.rb +0 -171
  178. data/lib/active_scaffold/data_structures/action_columns.rb +0 -142
  179. data/lib/active_scaffold/data_structures/action_link.rb +0 -185
  180. data/lib/active_scaffold/data_structures/action_links.rb +0 -191
  181. data/lib/active_scaffold/data_structures/actions.rb +0 -45
  182. data/lib/active_scaffold/data_structures/bridge.rb +0 -22
  183. data/lib/active_scaffold/data_structures/column.rb +0 -401
  184. data/lib/active_scaffold/data_structures/columns.rb +0 -75
  185. data/lib/active_scaffold/data_structures/error_message.rb +0 -24
  186. data/lib/active_scaffold/data_structures/nested_info.rb +0 -171
  187. data/lib/active_scaffold/data_structures/set.rb +0 -61
  188. data/lib/active_scaffold/data_structures/sorting.rb +0 -167
  189. data/lib/active_scaffold/engine.rb +0 -4
  190. data/lib/active_scaffold/extensions/action_controller_rendering.rb +0 -20
  191. data/lib/active_scaffold/extensions/action_controller_rescueing.rb +0 -7
  192. data/lib/active_scaffold/extensions/action_view_rendering.rb +0 -115
  193. data/lib/active_scaffold/extensions/active_record_offset.rb +0 -12
  194. data/lib/active_scaffold/extensions/array.rb +0 -7
  195. data/lib/active_scaffold/extensions/cache_association.rb +0 -16
  196. data/lib/active_scaffold/extensions/localize.rb +0 -10
  197. data/lib/active_scaffold/extensions/name_option_for_datetime.rb +0 -12
  198. data/lib/active_scaffold/extensions/nil_id_in_url_params.rb +0 -7
  199. data/lib/active_scaffold/extensions/paginator_extensions.rb +0 -26
  200. data/lib/active_scaffold/extensions/reverse_associations.rb +0 -64
  201. data/lib/active_scaffold/extensions/routing_mapper.rb +0 -48
  202. data/lib/active_scaffold/extensions/to_label.rb +0 -8
  203. data/lib/active_scaffold/extensions/unsaved_associated.rb +0 -61
  204. data/lib/active_scaffold/extensions/unsaved_record.rb +0 -20
  205. data/lib/active_scaffold/extensions/usa_state.rb +0 -46
  206. data/lib/active_scaffold/finder.rb +0 -399
  207. data/lib/active_scaffold/helpers/association_helpers.rb +0 -42
  208. data/lib/active_scaffold/helpers/controller_helpers.rb +0 -94
  209. data/lib/active_scaffold/helpers/form_column_helpers.rb +0 -322
  210. data/lib/active_scaffold/helpers/human_condition_helpers.rb +0 -64
  211. data/lib/active_scaffold/helpers/id_helpers.rb +0 -131
  212. data/lib/active_scaffold/helpers/list_column_helpers.rb +0 -374
  213. data/lib/active_scaffold/helpers/pagination_helpers.rb +0 -62
  214. data/lib/active_scaffold/helpers/search_column_helpers.rb +0 -257
  215. data/lib/active_scaffold/helpers/show_column_helpers.rb +0 -44
  216. data/lib/active_scaffold/helpers/view_helpers.rb +0 -398
  217. data/lib/active_scaffold/marked_model.rb +0 -38
  218. data/lib/active_scaffold/paginator.rb +0 -136
  219. data/lib/active_scaffold/responds_to_parent.rb +0 -70
  220. data/lib/active_scaffold/tableless.rb +0 -83
  221. data/lib/active_scaffold/version.rb +0 -9
  222. data/lib/active_scaffold_env.rb +0 -13
  223. data/lib/generators/active_scaffold/USAGE +0 -29
  224. data/lib/generators/active_scaffold/active_scaffold_generator.rb +0 -21
  225. data/lib/generators/active_scaffold_controller/USAGE +0 -19
  226. data/lib/generators/active_scaffold_controller/active_scaffold_controller_generator.rb +0 -29
  227. data/lib/generators/active_scaffold_controller/templates/controller.rb +0 -4
  228. data/lib/generators/active_scaffold_controller/templates/helper.rb +0 -2
  229. data/public/blank.html +0 -33
  230. data/shoulda_macros/macros.rb +0 -136
  231. data/vendor/assets/images/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
  232. data/vendor/assets/images/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
  233. data/vendor/assets/images/ui-bg_flat_10_000000_40x100.png +0 -0
  234. data/vendor/assets/images/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
  235. data/vendor/assets/images/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
  236. data/vendor/assets/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  237. data/vendor/assets/images/ui-bg_gloss-wave_35_f6a828_500x100.png +0 -0
  238. data/vendor/assets/images/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
  239. data/vendor/assets/images/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
  240. data/vendor/assets/images/ui-icons_222222_256x240.png +0 -0
  241. data/vendor/assets/images/ui-icons_228ef1_256x240.png +0 -0
  242. data/vendor/assets/images/ui-icons_ef8c08_256x240.png +0 -0
  243. data/vendor/assets/images/ui-icons_ffd27a_256x240.png +0 -0
  244. data/vendor/assets/images/ui-icons_ffffff_256x240.png +0 -0
  245. data/vendor/assets/javascripts/jquery-ui-timepicker-addon.js +0 -1276
  246. data/vendor/assets/stylesheets/jquery-ui.css +0 -568
@@ -1,94 +0,0 @@
1
- module ActiveScaffold
2
- module Helpers
3
- module ControllerHelpers
4
- def self.included(controller)
5
- controller.class_eval { helper_method :params_for, :params_conditions, :main_path_to_return, :render_parent?, :render_parent_options, :render_parent_action, :nested_singular_association?, :build_associated}
6
- end
7
-
8
- include ActiveScaffold::Helpers::IdHelpers
9
-
10
- def params_conditions
11
- conditions_from_params.keys
12
- end
13
-
14
- def params_for(options = {})
15
- # :adapter and :position are one-use rendering arguments. they should not propagate.
16
- # :sort, :sort_direction, and :page are arguments that stored in the session. they need not propagate.
17
- # and wow. no we don't want to propagate :record.
18
- # :commit is a special rails variable for form buttons
19
- blacklist = [:adapter, :position, :sort, :sort_direction, :page, :record, :commit, :_method, :authenticity_token, :iframe]
20
- unless @params_for
21
- @params_for = {}
22
- params.select { |key, value| blacklist.exclude? key.to_sym if key }.each {|key, value| @params_for[key.to_sym] = value.duplicable? ? value.clone : value}
23
- @params_for[:controller] = '/' + @params_for[:controller].to_s unless @params_for[:controller].to_s.first(1) == '/' # for namespaced controllers
24
- @params_for.delete(:id) if @params_for[:id].nil?
25
- end
26
- @params_for.merge(options)
27
- end
28
-
29
- # Parameters to generate url to the main page (override if the ActiveScaffold is used as a component on another controllers page)
30
- def main_path_to_return
31
- if params[:return_to]
32
- params[:return_to]
33
- else
34
- parameters = {}
35
- if params[:parent_controller]
36
- parameters[:controller] = params[:parent_controller]
37
- #parameters[:eid] = params[:parent_controller] # not neeeded anymore?
38
- end
39
- parameters.merge! nested.to_params if nested?
40
- if params[:parent_sti]
41
- parameters[:controller] = params[:parent_sti]
42
- #parameters[:eid] = nil # not neeeded anymore?
43
- end
44
- parameters[:parent_column] = nil
45
- parameters[:parent_id] = nil
46
- parameters[:action] = "index"
47
- parameters[:id] = nil
48
- parameters[:associated_id] = nil
49
- parameters[:utf8] = nil
50
- params_for(parameters)
51
- end
52
- end
53
-
54
- def nested_singular_association?
55
- nested? && (nested.belongs_to? || nested.has_one?)
56
- end
57
-
58
- def render_parent?
59
- nested_singular_association? || params[:parent_sti]
60
- end
61
-
62
- def render_parent_options
63
- if nested_singular_association?
64
- {:controller => nested.parent_scaffold.controller_path, :action => :row, :id => nested.parent_id}
65
- elsif params[:parent_sti]
66
- options = params_for(:controller => params[:parent_sti], :action => render_parent_action, :parent_sti => nil)
67
- options.merge(:id => @record.id) if render_parent_action == :row
68
- end
69
- end
70
-
71
- def render_parent_action
72
- begin
73
- @parent_action = :row
74
- if params[:parent_sti]
75
- parent_controller = "#{params[:parent_sti].to_s.camelize}Controller".constantize
76
- @parent_action = :index if action_name == 'create' && parent_controller.active_scaffold_config.actions.include?(:create) && parent_controller.active_scaffold_config.create.refresh_list == true
77
- @parent_action = :index if action_name == 'update' && parent_controller.active_scaffold_config.actions.include?(:update) && parent_controller.active_scaffold_config.update.refresh_list == true
78
- @parent_action = :index if action_name == 'destroy' && parent_controller.active_scaffold_config.actions.include?(:delete) && parent_controller.active_scaffold_config.delete.refresh_list == true
79
- end
80
- rescue ActiveScaffold::ControllerNotFound
81
- end if @parent_action.nil?
82
- @parent_action
83
- end
84
-
85
- def build_associated(column, record)
86
- if column.singular_association?
87
- record.send(:"build_#{column.name}")
88
- else
89
- record.send(column.name).build
90
- end
91
- end
92
- end
93
- end
94
- end
@@ -1,322 +0,0 @@
1
- module ActiveScaffold
2
- module Helpers
3
- # Helpers that assist with the rendering of a Form Column
4
- module FormColumnHelpers
5
- # This method decides which input to use for the given column.
6
- # It does not do any rendering. It only decides which method is responsible for rendering.
7
- def active_scaffold_input_for(column, scope = nil, options = {})
8
- options = active_scaffold_input_options(column, scope, options)
9
- options = update_columns_options(column, scope, options)
10
- active_scaffold_render_input(column, options)
11
- end
12
-
13
- alias form_column active_scaffold_input_for
14
-
15
- def active_scaffold_render_input(column, options)
16
- begin
17
- # first, check if the dev has created an override for this specific field
18
- if (method = override_form_field(column))
19
- send(method, @record, options)
20
- # second, check if the dev has specified a valid form_ui for this column
21
- elsif column.form_ui and (method = override_input(column.form_ui))
22
- send(method, column, options)
23
- # fallback: we get to make the decision
24
- else
25
- if column.association
26
- if column.form_ui.nil?
27
- # its an association and nothing is specified, we will assume form_ui :select
28
- active_scaffold_input_select(column, options)
29
- else
30
- # if we get here, it's because the column has a form_ui but not one ActiveScaffold knows about.
31
- raise "Unknown form_ui `#{column.form_ui}' for column `#{column.name}'"
32
- end
33
- elsif column.virtual?
34
- options[:value] = format_number_value(@record.send(column.name), column.options) if column.number?
35
- active_scaffold_input_virtual(column, options)
36
-
37
- else # regular model attribute column
38
- # if we (or someone else) have created a custom render option for the column type, use that
39
- if (method = override_input(column.column.type))
40
- send(method, column, options)
41
- # final ultimate fallback: use rails' generic input method
42
- else
43
- # for textual fields we pass different options
44
- text_types = [:text, :string, :integer, :float, :decimal, :date, :time, :datetime]
45
- options = active_scaffold_input_text_options(options) if text_types.include?(column.column.type)
46
- if column.column.type == :string && options[:maxlength].blank?
47
- options[:maxlength] = column.column.limit
48
- options[:size] ||= ActionView::Helpers::InstanceTag::DEFAULT_FIELD_OPTIONS["size"]
49
- end
50
- options[:include_blank] = true if column.column.null and [:date, :datetime, :time].include?(column.column.type)
51
- options[:value] = format_number_value(@record.send(column.name), column.options) if column.number?
52
- text_field(:record, column.name, options.merge(column.options))
53
- end
54
- end
55
- end
56
- rescue Exception => e
57
- logger.error Time.now.to_s + "#{e.inspect} -- on the ActiveScaffold column = :#{column.name} in #{controller.class}"
58
- raise e
59
- end
60
- end
61
-
62
- # the standard active scaffold options used for textual inputs
63
- def active_scaffold_input_text_options(options = {})
64
- options[:autocomplete] = 'off'
65
- options[:class] = "#{options[:class]} text-input".strip
66
- options
67
- end
68
-
69
- # the standard active scaffold options used for class, name and scope
70
- def active_scaffold_input_options(column, scope = nil, options = {})
71
- name = scope ? "record#{scope}[#{column.name}]" : "record[#{column.name}]"
72
-
73
- # Fix for keeping unique IDs in subform
74
- id_control = "record_#{column.name}_#{[params[:eid], params[:id]].compact.join '_'}"
75
- id_control += scope_id(scope) if scope
76
-
77
- classes = "#{column.name}-input"
78
- classes += ' numeric-input' if column.number?
79
-
80
- { :name => name, :class => classes, :id => id_control}.merge(options)
81
- end
82
-
83
- def update_columns_options(column, scope, options)
84
- if column.update_columns
85
- form_action = params[:action] == 'edit' ? :update : :create
86
- url_params = {:action => 'render_field', :id => params[:id], :column => column.name}
87
- url_params[:eid] = params[:eid] if params[:eid]
88
- url_params[:controller] = controller.class.active_scaffold_controller_for(@record.class).controller_path if scope
89
- url_params[:scope] = scope if scope
90
-
91
- options[:class] = "#{options[:class]} update_form".strip
92
- options['data-update_url'] = url_for(url_params)
93
- options['data-update_send_form'] = true if column.send_form_on_update_column
94
- options['data-update_send_form_selector'] = column.options[:send_form_selector] if column.options[:send_form_selector]
95
- end
96
- options
97
- end
98
-
99
- ##
100
- ## Form input methods
101
- ##
102
-
103
- def active_scaffold_translate_select_options(options)
104
- options[:include_blank] = as_(options[:include_blank]) if options[:include_blank].is_a? Symbol
105
- options[:prompt] = as_(options[:prompt]) if options[:prompt].is_a? Symbol
106
- options
107
- end
108
-
109
- def active_scaffold_input_singular_association(column, html_options)
110
- associated = @record.send(column.association.name)
111
-
112
- select_options = options_for_association(column.association)
113
- select_options.unshift([ associated.to_label, associated.id ]) unless associated.nil? or select_options.find {|label, id| id == associated.id}
114
-
115
- method = column.name
116
- #html_options[:name] += '[id]'
117
- options = {:selected => associated.try(:id), :include_blank => as_(:_select_)}
118
-
119
- html_options.update(column.options[:html_options] || {})
120
- options.update(column.options)
121
- html_options[:name] = "#{html_options[:name]}[]" if (html_options[:multiple] == true && !html_options[:name].to_s.ends_with?("[]"))
122
- active_scaffold_translate_select_options(options)
123
- select(:record, method, select_options.uniq, options, html_options)
124
- end
125
-
126
- def active_scaffold_input_plural_association(column, options)
127
- associated_options = @record.send(column.association.name).collect {|r| [r.to_label, r.id]}
128
- select_options = associated_options | options_for_association(column.association)
129
- return content_tag(:span, as_(:no_options), :class => options[:class], :id => options[:id]) if select_options.empty?
130
-
131
- active_scaffold_checkbox_list(column, select_options, associated_options.collect {|a| a[1]}, options)
132
- end
133
-
134
- def active_scaffold_checkbox_list(column, select_options, associated_ids, options)
135
- html = content_tag :ul, :class => "#{options[:class]} checkbox-list", :id => options[:id] do
136
- content = hidden_field_tag("#{options[:name]}[]", '')
137
- select_options.each_with_index do |option, i|
138
- label, id = option
139
- this_id = "#{options[:id]}_#{i}_id"
140
- content << content_tag(:li) do
141
- check_box_tag("#{options[:name]}[]", id, associated_ids.include?(id), :id => this_id) <<
142
- content_tag(:label, h(label), :for => this_id)
143
- end
144
- end
145
- content
146
- end
147
- html << javascript_tag("ActiveScaffold.draggable_lists('#{options[:id]}')") if column.options[:draggable_lists]
148
- html
149
- end
150
-
151
- def active_scaffold_translated_option(column, text, value = nil)
152
- value = text if value.nil?
153
- [(text.is_a?(Symbol) ? column.active_record_class.human_attribute_name(text) : text), value]
154
- end
155
-
156
- def active_scaffold_input_enum(column, html_options)
157
- options = { :selected => @record.send(column.name) }
158
- options_for_select = column.options[:options].collect do |text, value|
159
- active_scaffold_translated_option(column, text, value)
160
- end
161
- html_options.update(column.options[:html_options] || {})
162
- options.update(column.options)
163
- active_scaffold_translate_select_options(options)
164
- select(:record, column.name, options_for_select, options, html_options)
165
- end
166
-
167
- def active_scaffold_input_select(column, html_options)
168
- if column.singular_association?
169
- active_scaffold_input_singular_association(column, html_options)
170
- elsif column.plural_association?
171
- active_scaffold_input_plural_association(column, html_options)
172
- else
173
- active_scaffold_input_enum(column, html_options)
174
- end
175
- end
176
-
177
- def active_scaffold_input_radio(column, html_options)
178
- html_options.update(column.options[:html_options] || {})
179
- column.options[:options].inject('') do |html, (text, value)|
180
- text, value = active_scaffold_translated_option(column, text, value)
181
- html << content_tag(:label, radio_button(:record, column.name, value, html_options.merge(:id => html_options[:id] + '-' + value.to_s)) + text)
182
- end.html_safe
183
- end
184
-
185
- def active_scaffold_input_checkbox(column, options)
186
- check_box(:record, column.name, options.merge(column.options))
187
- end
188
-
189
- def active_scaffold_input_password(column, options)
190
- options = active_scaffold_input_text_options(options)
191
- password_field :record, column.name, options.merge(column.options)
192
- end
193
-
194
- def active_scaffold_input_textarea(column, options)
195
- text_area(:record, column.name, options.merge(:cols => column.options[:cols], :rows => column.options[:rows], :size => column.options[:size]))
196
- end
197
-
198
- def active_scaffold_input_virtual(column, options)
199
- options = active_scaffold_input_text_options(options)
200
- text_field :record, column.name, options.merge(column.options)
201
- end
202
-
203
- #
204
- # Column.type-based inputs
205
- #
206
-
207
- def active_scaffold_input_boolean(column, options)
208
- select_options = []
209
- select_options << [as_(:_select_), nil] if !column.virtual? && column.column.null
210
- select_options << [as_(:true), true]
211
- select_options << [as_(:false), false]
212
-
213
- select_tag(options[:name], options_for_select(select_options, @record.send(column.name)), options)
214
- end
215
-
216
- def onsubmit
217
- end
218
-
219
- ##
220
- ## Form column override signatures
221
- ##
222
-
223
- # add functionality for overriding subform partials from association class path
224
- def override_subform_partial?(column, subform_partial)
225
- template_exists?(override_subform_partial(column, subform_partial), true)
226
- end
227
-
228
- def override_subform_partial(column, subform_partial)
229
- File.join(active_scaffold_controller_for(column.association.klass).controller_path, subform_partial) if column_renders_as(column) == :subform
230
- end
231
-
232
- def override_form_field_partial?(column)
233
- template_exists?(override_form_field_partial(column), true)
234
- end
235
-
236
- # the naming convention for overriding form fields with helpers
237
- def override_form_field_partial(column)
238
- path = active_scaffold_controller_for(column.active_record_class).controller_path
239
- File.join(path, "#{clean_column_name(column.name)}_form_column")
240
- end
241
-
242
- def override_form_field(column)
243
- override_helper column, 'form_column'
244
- end
245
- alias_method :override_form_field?, :override_form_field
246
-
247
- # the naming convention for overriding form input types with helpers
248
- def override_input(form_ui)
249
- method = "active_scaffold_input_#{form_ui}"
250
- method if respond_to? method
251
- end
252
- alias_method :override_input?, :override_input
253
-
254
- def form_partial_for_column(column, renders_as = nil)
255
- renders_as ||= column_renders_as(column)
256
- if override_form_field_partial?(column)
257
- override_form_field_partial(column)
258
- elsif renders_as == :field or override_form_field?(column)
259
- "form_attribute"
260
- elsif renders_as == :subform
261
- "form_association"
262
- elsif renders_as == :hidden
263
- "form_hidden_attribute"
264
- end
265
- end
266
-
267
- def subform_partial_for_column(column)
268
- subform_partial = "#{active_scaffold_config_for(column.association.klass).subform.layout}_subform"
269
- if override_subform_partial?(column, subform_partial)
270
- override_subform_partial(column, subform_partial)
271
- else
272
- subform_partial
273
- end
274
- end
275
-
276
- ##
277
- ## Macro-level rendering decisions for columns
278
- ##
279
-
280
- def column_renders_as(column)
281
- if column.is_a? ActiveScaffold::DataStructures::ActionColumns
282
- return :subsection
283
- elsif column.active_record_class.locking_column.to_s == column.name.to_s or column.form_ui == :hidden
284
- return :hidden
285
- elsif column.association.nil? or column.form_ui or !active_scaffold_config_for(column.association.klass).actions.include?(:subform)
286
- return :field
287
- else
288
- return :subform
289
- end
290
- end
291
-
292
- def column_scope(column, scope = nil)
293
- if column.plural_association?
294
- "#{scope}[#{column.name}][#{@record.id || generate_temporary_id}]"
295
- else
296
- "#{scope}[#{column.name}]"
297
- end
298
- end
299
-
300
- def active_scaffold_add_existing_input(options)
301
- if ActiveScaffold.js_framework == :prototype && controller.respond_to?(:record_select_config)
302
- remote_controller = active_scaffold_controller_for(record_select_config.model).controller_path
303
- options.merge!(:controller => remote_controller)
304
- options.merge!(active_scaffold_input_text_options)
305
- record_select_field(options[:name], @record, options)
306
- else
307
- select_options = options_for_select(options_for_association(nested.association)) #unless column.through_association?
308
- select_options ||= options_for_select(active_scaffold_config.model.all.collect {|c| [h(c.to_label), c.id]})
309
- select_tag 'associated_id', ('<option value="">' + as_(:_select_) + '</option>' + select_options).html_safe unless select_options.empty?
310
- end
311
- end
312
-
313
- def active_scaffold_add_existing_label
314
- if controller.respond_to?(:record_select_config)
315
- record_select_config.model.model_name.human
316
- else
317
- active_scaffold_config.model.model_name.human
318
- end
319
- end
320
- end
321
- end
322
- end
@@ -1,64 +0,0 @@
1
- module ActiveScaffold
2
- module Helpers
3
- # Helpers that assist with rendering of a human readable search statement
4
- module HumanConditionHelpers
5
-
6
- def active_scaffold_human_condition_for(column)
7
- value = field_search_params[column.name]
8
- search_ui = column.search_ui
9
- search_ui ||= column.column.type if column.column
10
- if override_human_condition_column?(column)
11
- send(override_human_condition_column(column), value, {})
12
- elsif search_ui and override_human_condition?(column.search_ui)
13
- send(override_human_condition(column.search_ui), column, value)
14
- else
15
- case search_ui
16
- when :integer, :decimal, :float
17
- "#{column.active_record_class.human_attribute_name(column.name)} #{as_(value[:opt].downcase).downcase} #{format_number_value(controller.class.condition_value_for_numeric(column, value[:from]), column.options) if value[:from].present?} #{value[:opt] == 'BETWEEN' ? '- ' + format_number_value(controller.class.condition_value_for_numeric(column, value[:to]), column.options).to_s : ''}"
18
- when :string
19
- opt = ActiveScaffold::Finder::StringComparators.index(value[:opt]) || value[:opt]
20
- "#{column.active_record_class.human_attribute_name(column.name)} #{as_(opt).downcase} '#{value[:from]}' #{opt == 'BETWEEN' ? '- ' + value[:to].to_s : ''}"
21
- when :date, :time, :datetime, :timestamp
22
- conversion = column.column.type == :date ? :to_date : :to_time
23
- from = controller.condition_value_for_datetime(value[:from], conversion)
24
- to = controller.condition_value_for_datetime(value[:to], conversion)
25
- "#{column.active_record_class.human_attribute_name(column.name)} #{as_(value[:opt])} #{I18n.l(from)} #{value[:opt] == 'BETWEEN' ? '- ' + I18n.l(to) : ''}"
26
- when :select, :multi_select, :record_select
27
- associated = value
28
- associated = [associated].compact unless associated.is_a? Array
29
- if column.association
30
- associated = column.association.klass.where(:id => associated.map(&:to_i)).collect(&:to_label)
31
- elsif column.options[:options]
32
- associated = associated.collect do |value|
33
- text, val = column.options[:options].find {|text, val| (val.nil? ? text : val).to_s == value.to_s}
34
- value = active_scaffold_translated_option(column, text, val).first if text
35
- value
36
- end
37
- end
38
- as_(:association, :scope => :human_conditions, :column => column.active_record_class.human_attribute_name(column.name), :value => associated.join(', '))
39
- when :boolean, :checkbox
40
- label = column.column.type_cast(value) ? as_(:true) : as_(:false)
41
- as_(:boolean, :scope => :human_conditions, :column => column.active_record_class.human_attribute_name(column.name), :value => label)
42
- when :null
43
- "#{column.active_record_class.human_attribute_name(column.name)} #{as_(value.to_sym)}"
44
- end
45
- end unless value.nil?
46
- end
47
-
48
- # the naming convention for overriding form fields with helpers
49
- def override_human_condition_column(column)
50
- override_helper column, 'human_condition_column'
51
- end
52
- alias_method :override_human_condition_column?, :override_human_condition_column
53
-
54
- def override_human_condition?(search_ui)
55
- respond_to?(override_human_condition(search_ui))
56
- end
57
-
58
- # the naming convention for overriding human condition search_ui types
59
- def override_human_condition(search_ui)
60
- "active_scaffold_human_condition_#{search_ui}"
61
- end
62
- end
63
- end
64
- end