active_scaffold 3.0.26 → 3.1.3

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 (236) hide show
  1. data/CHANGELOG +1 -1
  2. data/{frontends/default → app/assets}/images/add.gif +0 -0
  3. data/{frontends/default → app/assets}/images/arrow_down.gif +0 -0
  4. data/{frontends/default → app/assets}/images/arrow_up.gif +0 -0
  5. data/{frontends/default → app/assets}/images/close.gif +0 -0
  6. data/{frontends/default → app/assets}/images/close_touch.png +0 -0
  7. data/{frontends/default → app/assets}/images/config.png +0 -0
  8. data/{frontends/default → app/assets}/images/cross.png +0 -0
  9. data/{frontends/default → app/assets}/images/gears.png +0 -0
  10. data/{frontends/default → app/assets}/images/indicator-small.gif +0 -0
  11. data/{frontends/default → app/assets}/images/indicator.gif +0 -0
  12. data/{frontends/default → app/assets}/images/magnifier.png +0 -0
  13. data/app/assets/javascripts/active_scaffold.js.erb +16 -0
  14. data/{frontends/default → app/assets}/javascripts/jquery/active_scaffold.js +16 -28
  15. data/app/assets/javascripts/jquery/active_scaffold.js~ +1036 -0
  16. data/{lib/active_scaffold/bridges/date_picker/public/javascripts/date_picker_bridge.js → app/assets/javascripts/jquery/date_picker_bridge.js.erb} +3 -1
  17. data/{frontends/default → app/assets}/javascripts/jquery/jquery.editinplace.js +0 -0
  18. data/app/assets/javascripts/prototype/active_scaffold.js +1033 -0
  19. data/{frontends/default/javascripts/prototype/active_scaffold.js → app/assets/javascripts/prototype/active_scaffold.js~} +1 -0
  20. data/{frontends/default → app/assets}/javascripts/prototype/dhtml_history.js +0 -0
  21. data/{frontends/default → app/assets}/javascripts/prototype/form_enhancements.js +0 -0
  22. data/{frontends/default → app/assets}/javascripts/prototype/rico_corner.js +0 -0
  23. data/{frontends/default/stylesheets/stylesheet-ie.css → app/assets/stylesheets/active_scaffold-ie.css} +0 -0
  24. data/{frontends/default/stylesheets/stylesheet.css → app/assets/stylesheets/active_scaffold.css.erb} +29 -24
  25. data/{lib/active_scaffold/locale → config/locales}/de.yml +3 -0
  26. data/{lib/active_scaffold/locale → config/locales}/en.yml +3 -0
  27. data/{lib/active_scaffold/locale → config/locales}/es.yml +5 -0
  28. data/{lib/active_scaffold/locale → config/locales}/fr.yml +3 -0
  29. data/{lib/active_scaffold/locale → config/locales}/hu.yml +13 -2
  30. data/{lib/active_scaffold/locale → config/locales}/ja.yml +9 -0
  31. data/{lib/active_scaffold/locale → config/locales}/ru.yml +3 -0
  32. data/frontends/default/views/_form.html.erb +1 -1
  33. data/frontends/default/views/_form_association.html.erb +1 -5
  34. data/frontends/default/views/_horizontal_subform.html.erb +7 -4
  35. data/frontends/default/views/_horizontal_subform.html.erb~ +2 -5
  36. data/frontends/default/views/_horizontal_subform_footer.html.erb +0 -0
  37. data/frontends/default/views/_horizontal_subform_header.html.erb +1 -1
  38. data/frontends/default/views/_horizontal_subform_header.html.erb~ +1 -1
  39. data/frontends/default/views/_horizontal_subform_record.html.erb~ +1 -1
  40. data/frontends/default/views/_list_actions.html.erb +1 -1
  41. data/frontends/default/views/_list_messages.html.erb +1 -3
  42. data/frontends/default/views/_render_field.js.erb +20 -0
  43. data/frontends/default/views/_row.html.erb +3 -9
  44. data/frontends/default/views/_show.html.erb +2 -2
  45. data/frontends/default/views/add_existing.js.erb +20 -0
  46. data/frontends/default/views/destroy.js.erb +24 -0
  47. data/frontends/default/views/{edit_associated.js.rjs → edit_associated.js.erb} +3 -2
  48. data/frontends/default/views/form_messages.js.erb +1 -0
  49. data/frontends/default/views/list.js.erb +1 -0
  50. data/frontends/default/views/mark.js.rjs +6 -0
  51. data/frontends/default/views/on_action_update.js.erb +13 -0
  52. data/frontends/default/views/{on_create.js.erb~ → on_create.js.erb} +0 -0
  53. data/frontends/default/views/on_mark_all.js.erb +12 -0
  54. data/frontends/default/views/{on_update.js.erb~ → on_update.js.erb} +0 -0
  55. data/frontends/default/views/render_field.js.erb +1 -0
  56. data/frontends/default/views/search.html.erb +1 -1
  57. data/frontends/default/views/{update_column.js.erb~ → update_column.js.erb} +3 -3
  58. data/frontends/default/views/update_row.js.erb +1 -0
  59. data/lib/active_scaffold.rb +22 -46
  60. data/lib/active_scaffold/actions/core.rb +14 -6
  61. data/lib/active_scaffold/actions/core.rb~ +3 -3
  62. data/lib/active_scaffold/actions/create.rb +2 -5
  63. data/lib/active_scaffold/actions/create.rb~ +3 -2
  64. data/lib/active_scaffold/actions/delete.rb +1 -0
  65. data/lib/active_scaffold/actions/field_search.rb +1 -1
  66. data/lib/active_scaffold/actions/list.rb +10 -6
  67. data/lib/active_scaffold/actions/list.rb~ +3 -3
  68. data/lib/active_scaffold/actions/mark.rb +8 -8
  69. data/lib/active_scaffold/actions/nested.rb +2 -9
  70. data/lib/active_scaffold/actions/nested.rb~ +5 -7
  71. data/lib/active_scaffold/actions/search.rb +2 -1
  72. data/lib/active_scaffold/actions/subform.rb +1 -5
  73. data/lib/active_scaffold/actions/update.rb +1 -4
  74. data/lib/active_scaffold/actions/update.rb~ +5 -5
  75. data/lib/active_scaffold/attribute_params.rb +15 -26
  76. data/lib/active_scaffold/attribute_params.rb~ +1 -2
  77. data/lib/active_scaffold/bridges.rb +61 -0
  78. data/lib/active_scaffold/bridges/ancestry.rb +5 -0
  79. data/lib/active_scaffold/bridges/ancestry/{lib/ancestry_bridge.rb → ancestry_bridge.rb} +3 -3
  80. data/lib/active_scaffold/bridges/{calendar_date_select/bridge.rb → calendar_date_select.rb} +13 -5
  81. data/lib/active_scaffold/bridges/calendar_date_select/{lib/as_cds_bridge.rb → as_cds_bridge.rb} +4 -20
  82. data/lib/active_scaffold/bridges/cancan.rb +15 -0
  83. data/lib/active_scaffold/bridges/cancan/{lib/cancan_bridge.rb → cancan_bridge.rb} +2 -2
  84. data/lib/active_scaffold/bridges/carrierwave.rb +12 -0
  85. data/lib/active_scaffold/bridges/carrierwave/carrierwave_bridge.rb +31 -0
  86. data/lib/active_scaffold/bridges/carrierwave/carrierwave_bridge_helpers.rb +10 -0
  87. data/lib/active_scaffold/bridges/carrierwave/{lib/form_ui.rb → form_ui.rb} +0 -0
  88. data/lib/active_scaffold/bridges/carrierwave/{lib/list_ui.rb → list_ui.rb} +1 -1
  89. data/lib/active_scaffold/bridges/country_helper.rb +9 -0
  90. data/lib/active_scaffold/bridges/country_helper/{lib/country_helper_bridge.rb → country_helper_bridge.rb} +5 -5
  91. data/lib/active_scaffold/bridges/date_picker.rb +23 -0
  92. data/lib/active_scaffold/bridges/date_picker/ext.rb +54 -0
  93. data/lib/active_scaffold/bridges/date_picker/helper.rb +188 -0
  94. data/lib/active_scaffold/bridges/dragonfly.rb +9 -0
  95. data/lib/active_scaffold/bridges/dragonfly/dragonfly_bridge.rb +34 -0
  96. data/lib/active_scaffold/bridges/dragonfly/dragonfly_bridge_helpers.rb +10 -0
  97. data/lib/active_scaffold/bridges/dragonfly/{lib/form_ui.rb → form_ui.rb} +0 -0
  98. data/lib/active_scaffold/bridges/dragonfly/{lib/list_ui.rb → list_ui.rb} +2 -2
  99. data/lib/active_scaffold/bridges/file_column.rb +11 -0
  100. data/lib/active_scaffold/bridges/file_column/{lib/as_file_column_bridge.rb → as_file_column_bridge.rb} +2 -2
  101. data/lib/active_scaffold/bridges/file_column/file_column_helpers.rb +57 -0
  102. data/lib/active_scaffold/bridges/file_column/{lib/form_ui.rb → form_ui.rb} +2 -2
  103. data/lib/active_scaffold/bridges/file_column/{lib/list_ui.rb → list_ui.rb} +0 -0
  104. data/lib/active_scaffold/bridges/paperclip.rb +12 -0
  105. data/lib/active_scaffold/bridges/paperclip/{lib/form_ui.rb → form_ui.rb} +0 -0
  106. data/lib/active_scaffold/bridges/paperclip/{lib/list_ui.rb → list_ui.rb} +3 -3
  107. data/lib/active_scaffold/bridges/paperclip/paperclip_bridge.rb +36 -0
  108. data/lib/active_scaffold/bridges/paperclip/paperclip_bridge_helpers.rb +24 -0
  109. data/lib/active_scaffold/bridges/record_select.rb +11 -0
  110. data/lib/active_scaffold/bridges/record_select/{lib/record_select_bridge.rb → helpers.rb} +5 -16
  111. data/lib/active_scaffold/bridges/record_select/helpers.rb~ +9 -14
  112. data/lib/active_scaffold/bridges/semantic_attributes.rb +5 -0
  113. data/lib/active_scaffold/bridges/semantic_attributes/{lib/semantic_attributes_bridge.rb → column.rb} +3 -3
  114. data/lib/active_scaffold/bridges/tiny_mce.rb +5 -0
  115. data/lib/active_scaffold/bridges/tiny_mce/{lib/tiny_mce_bridge.rb → helpers.rb} +16 -8
  116. data/lib/active_scaffold/config/base.rb +9 -1
  117. data/lib/active_scaffold/config/core.rb +1 -1
  118. data/lib/active_scaffold/config/create.rb +3 -10
  119. data/lib/active_scaffold/config/delete.rb +1 -2
  120. data/lib/active_scaffold/config/field_search.rb +1 -2
  121. data/lib/active_scaffold/config/form.rb +2 -6
  122. data/lib/active_scaffold/config/list.rb +8 -2
  123. data/lib/active_scaffold/config/nested.rb +2 -6
  124. data/lib/active_scaffold/config/search.rb +6 -2
  125. data/lib/active_scaffold/config/show.rb +1 -4
  126. data/lib/active_scaffold/config/subform.rb +1 -1
  127. data/lib/active_scaffold/config/update.rb +1 -6
  128. data/lib/active_scaffold/data_structures/action_columns.rb +3 -0
  129. data/lib/active_scaffold/data_structures/action_link.rb +14 -10
  130. data/lib/active_scaffold/data_structures/bridge.rb +22 -0
  131. data/lib/active_scaffold/data_structures/column.rb +36 -4
  132. data/lib/active_scaffold/data_structures/nested_info.rb +4 -4
  133. data/lib/active_scaffold/data_structures/set.rb +1 -6
  134. data/lib/active_scaffold/data_structures/sorting.rb +2 -2
  135. data/lib/active_scaffold/engine.rb +4 -0
  136. data/lib/active_scaffold/extensions/action_controller_rendering.rb +2 -2
  137. data/lib/active_scaffold/extensions/action_controller_rendering.rb~ +1 -1
  138. data/lib/active_scaffold/extensions/action_view_rendering.rb +90 -93
  139. data/lib/active_scaffold/extensions/action_view_rendering.rb~ +1 -13
  140. data/lib/active_scaffold/extensions/active_association_reflection.rb +16 -7
  141. data/lib/active_scaffold/extensions/cache_association.rb +16 -0
  142. data/lib/active_scaffold/extensions/reverse_associations.rb +15 -13
  143. data/lib/active_scaffold/extensions/unsaved_associated.rb +1 -1
  144. data/lib/active_scaffold/finder.rb +40 -23
  145. data/lib/active_scaffold/finder.rb~ +3 -11
  146. data/lib/active_scaffold/helpers/association_helpers.rb +1 -1
  147. data/lib/active_scaffold/helpers/controller_helpers.rb +9 -1
  148. data/lib/active_scaffold/helpers/controller_helpers.rb~ +12 -5
  149. data/lib/active_scaffold/helpers/form_column_helpers.rb +20 -21
  150. data/lib/active_scaffold/helpers/form_column_helpers.rb~ +2 -1
  151. data/lib/active_scaffold/helpers/id_helpers.rb +5 -5
  152. data/lib/active_scaffold/helpers/list_column_helpers.rb +14 -24
  153. data/lib/active_scaffold/helpers/list_column_helpers.rb~ +15 -20
  154. data/lib/active_scaffold/helpers/search_column_helpers.rb +10 -1
  155. data/lib/active_scaffold/helpers/search_column_helpers.rb~ +1 -1
  156. data/lib/active_scaffold/helpers/view_helpers.rb +14 -40
  157. data/lib/active_scaffold/helpers/view_helpers.rb~ +3 -3
  158. data/lib/active_scaffold/version.rb +2 -2
  159. data/lib/active_scaffold_env.rb +0 -2
  160. data/test/bridges/active_scaffold_dependent_protect_test.rb +34 -0
  161. data/test/bridges/bridge_test.rb +43 -0
  162. data/test/bridges/company.rb +81 -0
  163. data/test/bridges/paperclip_test.rb +68 -0
  164. data/test/bridges/tiny_mce_test.rb +27 -0
  165. data/test/bridges/unobtrusive_date_picker_test.rb +49 -0
  166. data/test/bridges/validation_reflection_test.rb +57 -0
  167. data/test/config/base_test.rb +1 -1
  168. data/test/config/core_test.rb +58 -0
  169. data/test/config/create_test.rb +8 -5
  170. data/test/config/delete_test.rb +33 -0
  171. data/test/config/field_search_test.rb +47 -0
  172. data/test/config/list_test.rb +64 -9
  173. data/test/config/nested_test.rb +62 -0
  174. data/test/config/search_test.rb +60 -0
  175. data/test/config/show_test.rb +5 -5
  176. data/test/config/subform_test.rb +17 -0
  177. data/test/config/update_test.rb +27 -4
  178. data/test/helpers/list_column_helpers_test.rb +16 -5
  179. data/test/helpers/pagination_helpers_test.rb +4 -0
  180. data/test/misc/attribute_params_test.rb +37 -1
  181. data/test/misc/finder_test.rb +0 -1
  182. data/test/misc/lang_test.rb +2 -3
  183. data/test/mock_app/public/javascripts/active_scaffold/default/active_scaffold.js +2 -2
  184. data/test/mock_app/public/stylesheets/active_scaffold/default/stylesheet.css +13 -7
  185. metadata +137 -154
  186. data/frontends/default/views/_list_with_header.html.erb~ +0 -32
  187. data/frontends/default/views/_render_field.js.rjs +0 -14
  188. data/frontends/default/views/_show.html.erb~ +0 -8
  189. data/frontends/default/views/_update_form.html.erb~ +0 -6
  190. data/frontends/default/views/add_existing.js.erb~ +0 -18
  191. data/frontends/default/views/add_existing.js.rjs +0 -17
  192. data/frontends/default/views/destroy.js.rjs +0 -23
  193. data/frontends/default/views/form_messages.js.rjs +0 -1
  194. data/frontends/default/views/list.js.rjs +0 -1
  195. data/frontends/default/views/on_action_update.js.rjs +0 -10
  196. data/frontends/default/views/on_create.js.rjs +0 -41
  197. data/frontends/default/views/on_mark_all.js.rjs +0 -12
  198. data/frontends/default/views/on_update.js.rjs +0 -28
  199. data/frontends/default/views/render_field.js.rjs +0 -1
  200. data/frontends/default/views/update_column.js.rjs +0 -13
  201. data/frontends/default/views/update_row.js.rjs +0 -1
  202. data/lib/active_scaffold.rb~ +0 -362
  203. data/lib/active_scaffold/bridges/ancestry/bridge.rb +0 -5
  204. data/lib/active_scaffold/bridges/bridge.rb +0 -59
  205. data/lib/active_scaffold/bridges/cancan/bridge.rb +0 -12
  206. data/lib/active_scaffold/bridges/carrierwave/bridge.rb +0 -9
  207. data/lib/active_scaffold/bridges/carrierwave/lib/carrierwave_bridge.rb +0 -33
  208. data/lib/active_scaffold/bridges/carrierwave/lib/carrierwave_bridge_helpers.rb +0 -12
  209. data/lib/active_scaffold/bridges/country_helper/bridge.rb +0 -9
  210. data/lib/active_scaffold/bridges/date_picker/bridge.rb +0 -24
  211. data/lib/active_scaffold/bridges/date_picker/lib/datepicker_bridge.rb +0 -234
  212. data/lib/active_scaffold/bridges/dragonfly/bridge.rb +0 -9
  213. data/lib/active_scaffold/bridges/dragonfly/lib/dragonfly_bridge.rb +0 -36
  214. data/lib/active_scaffold/bridges/dragonfly/lib/dragonfly_bridge_helpers.rb +0 -12
  215. data/lib/active_scaffold/bridges/file_column/bridge.rb +0 -11
  216. data/lib/active_scaffold/bridges/file_column/lib/file_column_helpers.rb +0 -59
  217. data/lib/active_scaffold/bridges/paperclip/bridge.rb +0 -12
  218. data/lib/active_scaffold/bridges/paperclip/lib/paperclip_bridge.rb +0 -38
  219. data/lib/active_scaffold/bridges/paperclip/lib/paperclip_bridge_helpers.rb +0 -26
  220. data/lib/active_scaffold/bridges/record_select/bridge.rb +0 -5
  221. data/lib/active_scaffold/bridges/semantic_attributes/bridge.rb +0 -5
  222. data/lib/active_scaffold/bridges/shared/date_bridge.rb~ +0 -209
  223. data/lib/active_scaffold/bridges/tiny_mce/bridge.rb +0 -5
  224. data/lib/active_scaffold/bridges/validation_reflection/bridge.rb +0 -8
  225. data/lib/active_scaffold/bridges/validation_reflection/lib/validation_reflection_bridge.rb +0 -21
  226. data/lib/active_scaffold/config/base.rb~ +0 -70
  227. data/lib/active_scaffold/config/nested.rb~ +0 -41
  228. data/lib/active_scaffold/constraints.rb~ +0 -186
  229. data/lib/active_scaffold/data_structures/action_link.rb~ +0 -179
  230. data/lib/active_scaffold/data_structures/nested_info.rb~ +0 -123
  231. data/lib/active_scaffold/extensions/action_view_resolver.rb +0 -7
  232. data/lib/active_scaffold/extensions/active_association_reflection.rb~ +0 -22
  233. data/lib/active_scaffold/extensions/unsaved_associated.rb~ +0 -62
  234. data/lib/active_scaffold_assets.rb +0 -45
  235. data/lib/generators/active_scaffold_setup/USAGE +0 -10
  236. data/lib/generators/active_scaffold_setup/active_scaffold_setup_generator.rb +0 -59
@@ -1,12 +0,0 @@
1
- module ActiveScaffold
2
- module Bridges
3
- module Dragonfly
4
- module Lib
5
- module DragonflyBridgeHelpers
6
- mattr_accessor :thumbnail_style
7
- self.thumbnail_style = 'x30>'
8
- end
9
- end
10
- end
11
- end
12
- end
@@ -1,11 +0,0 @@
1
- ActiveScaffold::Bridges.bridge "FileColumn" do
2
- install do
3
- if ActiveScaffold::Config::Core.instance_methods.include?("initialize_with_file_column")
4
- raise RuntimeError, "We've detected that you have active_scaffold_file_column_bridge installed. This plugin has been moved to core. Please remove active_scaffold_file_column_bridge to prevent any conflicts"
5
- end
6
- require File.join(File.dirname(__FILE__), "lib/as_file_column_bridge")
7
- require File.join(File.dirname(__FILE__), "lib/form_ui")
8
- require File.join(File.dirname(__FILE__), "lib/list_ui")
9
- require File.join(File.dirname(__FILE__), "lib/file_column_helpers")
10
- end
11
- end
@@ -1,59 +0,0 @@
1
- module ActiveScaffold
2
- module Bridges
3
- module Paperclip
4
- module Lib
5
- module FileColumnHelpers
6
- class << self
7
- def file_column_fields(klass)
8
- klass.instance_methods.grep(/_just_uploaded\?$/).collect{|m| m[0..-16].to_sym }
9
- end
10
-
11
- def generate_delete_helpers(klass)
12
- file_column_fields(klass).each { |field|
13
- klass.send :class_eval, <<-EOF, __FILE__, __LINE__ + 1 unless klass.methods.include?("#{field}_with_delete=")
14
- attr_reader :delete_#{field}
15
-
16
- def delete_#{field}=(value)
17
- value = (value=="true") if String===value
18
- return unless value
19
-
20
- # passing nil to the file column causes the file to be deleted. Don't delete if we just uploaded a file!
21
- self.#{field} = nil unless self.#{field}_just_uploaded?
22
- end
23
- EOF
24
- }
25
- end
26
-
27
- def klass_has_file_column_fields?(klass)
28
- true unless file_column_fields(klass).empty?
29
- end
30
- end
31
-
32
- def file_column_fields
33
- @file_column_fields||=FileColumnHelpers.file_column_fields(self)
34
- end
35
-
36
- def options_for_file_column_field(field)
37
- self.allocate.send("#{field}_options")
38
- end
39
-
40
- def field_has_image_version?(field, version="thumb")
41
- begin
42
- # the only way to get to the options of a particular field is to use the instance method
43
- options = options_for_file_column_field(field)
44
- versions = options[:magick][:versions]
45
- raise unless versions.stringify_keys[version]
46
- true
47
- rescue
48
- false
49
- end
50
- end
51
-
52
- def generate_delete_helpers
53
- FileColumnHelpers.generate_delete_helpers(self)
54
- end
55
- end
56
- end
57
- end
58
- end
59
- end
@@ -1,12 +0,0 @@
1
- ActiveScaffold::Bridges.bridge "Paperclip" do
2
- install do
3
- if ActiveScaffold::Config::Core.instance_methods.include?("initialize_with_paperclip")
4
- raise RuntimeError, "We've detected that you have active_scaffold_paperclip_bridge installed. This plugin has been moved to core. Please remove active_scaffold_paperclip_bridge to prevent any conflicts"
5
- end
6
- require File.join(File.dirname(__FILE__), "lib/form_ui")
7
- require File.join(File.dirname(__FILE__), "lib/list_ui")
8
- require File.join(File.dirname(__FILE__), "lib/paperclip_bridge_helpers")
9
- require File.join(File.dirname(__FILE__), "lib/paperclip_bridge")
10
- ActiveScaffold::Config::Core.send :include, ActiveScaffold::Bridges::Paperclip::Lib::PaperclipBridge
11
- end
12
- end
@@ -1,38 +0,0 @@
1
- module ActiveScaffold
2
- module Bridges
3
- module Paperclip
4
- module Lib
5
- module PaperclipBridge
6
- def initialize_with_paperclip(model_id)
7
- initialize_without_paperclip(model_id)
8
- return unless self.model.respond_to?(:attachment_definitions) && !self.model.attachment_definitions.nil?
9
-
10
- self.update.multipart = true
11
- self.create.multipart = true
12
-
13
- self.model.attachment_definitions.keys.each do |field|
14
- configure_paperclip_field(field.to_sym)
15
- # define the "delete" helper for use with active scaffold, unless it's already defined
16
- ActiveScaffold::Bridges::Paperclip::Lib::PaperclipBridgeHelpers.generate_delete_helper(self.model, field)
17
- end
18
- end
19
-
20
- def self.included(base)
21
- base.alias_method_chain :initialize, :paperclip
22
- end
23
-
24
- private
25
- def configure_paperclip_field(field)
26
- self.columns << field
27
- self.columns[field].form_ui ||= :paperclip
28
- self.columns[field].params.add "delete_#{field}"
29
-
30
- [:file_name, :content_type, :file_size, :updated_at].each do |f|
31
- self.columns.exclude("#{field}_#{f}".to_sym)
32
- end
33
- end
34
- end
35
- end
36
- end
37
- end
38
- end
@@ -1,26 +0,0 @@
1
- module ActiveScaffold
2
- module Bridges
3
- module Paperclip
4
- module Lib
5
- module PaperclipBridgeHelpers
6
- mattr_accessor :thumbnail_style
7
- self.thumbnail_style = :thumbnail
8
-
9
- def self.generate_delete_helper(klass, field)
10
- klass.class_eval <<-EOF, __FILE__, __LINE__ + 1 unless klass.methods.include?("delete_#{field}=")
11
- attr_reader :delete_#{field}
12
-
13
- def delete_#{field}=(value)
14
- value = (value == "true") if String === value
15
- return unless value
16
-
17
- # passing nil to the file column causes the file to be deleted. Don't delete if we just uploaded a file!
18
- self.#{field} = nil unless self.#{field}.dirty?
19
- end
20
- EOF
21
- end
22
- end
23
- end
24
- end
25
- end
26
- end
@@ -1,5 +0,0 @@
1
- ActiveScaffold::Bridges.bridge "RecordSelect" do
2
- install do
3
- require File.join(File.dirname(__FILE__), "lib/record_select_bridge.rb")
4
- end
5
- end
@@ -1,5 +0,0 @@
1
- ActiveScaffold::Bridges.bridge "SemanticAttributes" do
2
- install do
3
- require File.join(File.dirname(__FILE__), "lib/semantic_attributes_bridge.rb")
4
- end
5
- end
@@ -1,209 +0,0 @@
1
- module ActiveScaffold
2
- module Bridges
3
- module Shared
4
- module DateBridge
5
- module SearchColumnHelpers
6
- def active_scaffold_search_date_bridge(column, options)
7
- current_search = {'from' => nil, 'to' => nil, 'opt' => 'BETWEEN',
8
- 'number' => 1, 'unit' => 'DAYS', 'range' => nil}
9
- current_search.merge!(options[:value]) unless options[:value].nil?
10
- tags = []
11
- tags << active_scaffold_search_date_bridge_comparator_tag(column, options, current_search)
12
- tags << active_scaffold_search_date_bridge_trend_tag(column, options, current_search)
13
- tags << active_scaffold_search_date_bridge_numeric_tag(column, options, current_search)
14
- tags << active_scaffold_search_date_bridge_range_tag(column, options, current_search)
15
- tags.join("&nbsp;").html_safe
16
- end
17
-
18
- def active_scaffold_search_date_bridge_comparator_options(column)
19
- select_options = ActiveScaffold::Finder::DateComparators.collect {|comp| [as_(comp.downcase.to_sym), comp]}
20
- select_options + ActiveScaffold::Finder::NumericComparators.collect {|comp| [as_(comp.downcase.to_sym), comp]}
21
- end
22
-
23
- def active_scaffold_search_date_bridge_comparator_tag(column, options, current_search)
24
- select_tag("#{options[:name]}[opt]", options_for_select(active_scaffold_search_date_bridge_comparator_options(column),current_search['opt']), :id => "#{options[:id]}_opt", :class => "as_search_range_option as_search_date_time_option")
25
- end
26
-
27
- def active_scaffold_search_date_bridge_numeric_tag(column, options, current_search)
28
- numeric_controls = "" <<
29
- active_scaffold_search_date_bridge_calendar_control(column, options, current_search, 'from') <<
30
- content_tag(:span, (" - " + active_scaffold_search_date_bridge_calendar_control(column, options, current_search, 'to')).html_safe,
31
- :id => "#{options[:id]}_between", :class => "as_search_range_between", :style => "display:#{current_search['opt'] == 'BETWEEN' ? '' : 'none'}")
32
- content_tag("span", numeric_controls.html_safe, :id => "#{options[:id]}_numeric", :style => "display:#{ActiveScaffold::Finder::NumericComparators.include?(current_search['opt']) ? '' : 'none'}")
33
- end
34
-
35
- def active_scaffold_search_date_bridge_trend_tag(column, options, current_search)
36
- active_scaffold_date_bridge_trend_tag(column, options,
37
- {:name_prefix => 'search',
38
- :number_value => current_search['number'],
39
- :unit_value => current_search["unit"],
40
- :show => (current_search['opt'] == 'PAST' || current_search['opt'] == 'FUTURE')})
41
- end
42
-
43
- def active_scaffold_date_bridge_trend_tag(column, options, trend_options)
44
- trend_controls = text_field_tag("#{trend_options[:name_prefix]}[#{column.name}][number]", trend_options[:number_value], :class => 'text-input', :size => 10, :autocomplete => 'off') << " " <<
45
- select_tag("#{trend_options[:name_prefix]}[#{column.name}][unit]",
46
- options_for_select(active_scaffold_search_date_bridge_trend_units(column), trend_options[:unit_value]),
47
- :class => 'text-input')
48
- content_tag("span", trend_controls.html_safe, :id => "#{options[:id]}_trend", :style => "display:#{trend_options[:show] ? '' : 'none'}")
49
- end
50
-
51
- def active_scaffold_search_date_bridge_trend_units(column)
52
- options = ActiveScaffold::Finder::DateUnits.collect{|unit| [as_(unit.downcase.to_sym), unit]}
53
- options = ActiveScaffold::Finder::TimeUnits.collect{|unit| [as_(unit.downcase.to_sym), unit]} + options if column_datetime?(column)
54
- options
55
- end
56
-
57
- def active_scaffold_search_date_bridge_range_tag(column, options, current_search)
58
- range_controls = select_tag("search[#{column.name}][range]",
59
- options_for_select( ActiveScaffold::Finder::DateRanges.collect{|range| [as_(range.downcase.to_sym), range]}, current_search["range"]),
60
- :class => 'text-input')
61
- content_tag("span", range_controls.html_safe, :id => "#{options[:id]}_range", :style => "display:#{(current_search['opt'] == 'RANGE') ? '' : 'none'}")
62
- end
63
-
64
- def column_datetime?(column)
65
- (!column.column.nil? && [:datetime, :time].include?(column.column.type))
66
- end
67
- end
68
-
69
- module HumanConditionHelpers
70
- def active_scaffold_human_condition_date_bridge(column, value)
71
- case value[:opt]
72
- when 'RANGE'
73
- range_type, range = value[:range].downcase.split('_')
74
- format = active_scaffold_human_condition_date_bridge_range_format(range_type, range)
75
- from, to = controller.class.date_bridge_from_to(column, value)
76
- "#{column.active_record_class.human_attribute_name(column.name)} = #{as_(value[:range].downcase).downcase} (#{I18n.l(from, :format => format)})"
77
- when 'PAST', 'FUTURE'
78
- from, to = controller.class.date_bridge_from_to(column, value)
79
- "#{column.active_record_class.human_attribute_name(column.name)} #{as_('BETWEEN'.downcase).downcase} #{I18n.l(from)} - #{I18n.l(to)}"
80
- else
81
- from, to = controller.class.date_bridge_from_to(column, value)
82
- "#{column.active_record_class.human_attribute_name(column.name)} #{as_(value[:opt].downcase).downcase} #{I18n.l(from)} #{value[:opt] == 'BETWEEN' ? '- ' + I18n.l(to) : ''}"
83
- end
84
- end
85
-
86
- def active_scaffold_human_condition_date_bridge_range_format(range_type, range)
87
- case range
88
- when 'week'
89
- first_day_of_week = I18n.translate 'active_scaffold.date_picker_options.firstDay'
90
- if first_day_of_week == 1
91
- '%W %Y'
92
- else
93
- '%U %Y'
94
- end
95
- when 'month'
96
- '%b %Y'
97
- when 'year'
98
- '%Y'
99
- else
100
- I18n.translate 'date.formats.default'
101
- end
102
- end
103
- end
104
-
105
- module Finder
106
- module ClassMethods
107
- def condition_for_date_bridge_type(column, value, like_pattern)
108
- operator = ActiveScaffold::Finder::NumericComparators.include?(value[:opt]) && value[:opt] != 'BETWEEN' ? value[:opt] : nil
109
- from_value, to_value = date_bridge_from_to(column, value)
110
-
111
- if column.search_sql.is_a? Proc
112
- column.search_sql.call(from_value, to_value, operator)
113
- else
114
- unless operator.nil?
115
- ["#{column.search_sql} #{value[:opt]} ?", from_value.to_s(:db)] unless from_value.nil?
116
- else
117
- ["#{column.search_sql} BETWEEN ? AND ?", from_value.to_s(:db), to_value.to_s(:db)] unless from_value.nil? && to_value.nil?
118
- end
119
- end
120
- end
121
-
122
- def date_bridge_from_to(column, value)
123
- conversion = column.column.type == :date ? :to_date : :to_time
124
- case value[:opt]
125
- when 'RANGE'
126
- date_bridge_from_to_for_range(column, value).collect(&conversion)
127
- when 'PAST', 'FUTURE'
128
- date_bridge_from_to_for_trend(column, value).collect(&conversion)
129
- else
130
- ['from', 'to'].collect { |field| condition_value_for_datetime(value[field], conversion)}
131
- end
132
- end
133
-
134
- def date_bridge_now
135
- Time.zone.now
136
- end
137
-
138
- def date_bridge_from_to_for_trend(column, value)
139
- case value['opt']
140
- when "PAST"
141
- trend_number = [value['number'].to_i, 1].max
142
- now = date_bridge_now
143
- if date_bridge_column_date?(column)
144
- from = now.beginning_of_day.ago((trend_number).send(value['unit'].downcase.singularize.to_sym))
145
- to = now.end_of_day
146
- else
147
- from = now.ago((trend_number).send(value['unit'].downcase.singularize.to_sym))
148
- to = now
149
- end
150
- return from, to
151
- when "FUTURE"
152
- trend_number = [value['number'].to_i, 1].max
153
- now = date_bridge_now
154
- if date_bridge_column_date?(column)
155
- from = now.beginning_of_day
156
- to = now.end_of_day.in((trend_number).send(value['unit'].downcase.singularize.to_sym))
157
- else
158
- from = now
159
- to = now.in((trend_number).send(value['unit'].downcase.singularize.to_sym))
160
- end
161
- return from, to
162
- end
163
- end
164
-
165
- def date_bridge_from_to_for_range(column, value)
166
- case value[:range]
167
- when 'TODAY'
168
- return date_bridge_now.beginning_of_day, date_bridge_now.end_of_day
169
- when 'YESTERDAY'
170
- return date_bridge_now.ago(1.day).beginning_of_day, date_bridge_now.ago(1.day).end_of_day
171
- when 'TOMORROW'
172
- return date_bridge_now.in(1.day).beginning_of_day, date_bridge_now.in(1.day).end_of_day
173
- else
174
- range_type, range = value[:range].downcase.split('_')
175
- raise ArgumentError unless ['week', 'month', 'year'].include?(range)
176
- case range_type
177
- when 'this'
178
- return date_bridge_now.send("beginning_of_#{range}".to_sym), date_bridge_now.send("end_of_#{range}")
179
- when 'prev'
180
- return date_bridge_now.ago(1.send(range.to_sym)).send("beginning_of_#{range}".to_sym), date_bridge_now.ago(1.send(range.to_sym)).send("end_of_#{range}".to_sym)
181
- when 'next'
182
- return date_bridge_now.in(1.send(range.to_sym)).send("beginning_of_#{range}".to_sym), date_bridge_now.in(1.send(range.to_sym)).send("end_of_#{range}".to_sym)
183
- else
184
- return nil, nil
185
- end
186
- end
187
- end
188
-
189
- def date_bridge_column_date?(column)
190
- if [:date_picker, :datetime_picker].include? column.form_ui
191
- column.form_ui == :date_picker
192
- else
193
- (!column.column.nil? && [:date].include?(column.column.type))
194
- end
195
- end
196
- end
197
- end
198
- end
199
- end
200
- end
201
- end
202
-
203
- ActiveScaffold::Finder.const_set('DateComparators', ["PAST", "FUTURE", "RANGE"])
204
- ActiveScaffold::Finder.const_set('DateUnits', ["DAYS", "WEEKS", "MONTHS", "YEARS"])
205
- ActiveScaffold::Finder.const_set('TimeUnits', ["SECONDS", "MINUTES", "HOURS"])
206
- ActiveScaffold::Finder.const_set('DateRanges', ["TODAY", "YESTERDAY", "TOMORROW",
207
- "THIS_WEEK", "PREV_WEEK", "NEXT_WEEK",
208
- "THIS_MONTH", "PREV_MONTH", "NEXT_MONTH",
209
- "THIS_YEAR", "PREV_YEAR", "NEXT_YEAR"])
@@ -1,5 +0,0 @@
1
- ActiveScaffold::Bridges.bridge "TinyMCE" do
2
- install do
3
- require File.join(File.dirname(__FILE__), "lib/tiny_mce_bridge.rb")
4
- end
5
- end
@@ -1,8 +0,0 @@
1
- ActiveScaffold::Bridges.bridge "ValidationReflection" do
2
- install do
3
- require File.join(File.dirname(__FILE__), "lib/validation_reflection_bridge.rb")
4
- end
5
- install? do
6
- ActiveRecord::Base.respond_to? :reflect_on_validations_for
7
- end
8
- end
@@ -1,21 +0,0 @@
1
- module ActiveScaffold
2
- module ValidationReflectionBridge
3
- def self.included(base)
4
- base.class_eval { alias_method_chain :initialize, :validation_reflection }
5
- end
6
-
7
- def initialize_with_validation_reflection(name, active_record_class)
8
- initialize_without_validation_reflection(name, active_record_class)
9
- column_names = [name]
10
- column_names << @association.primary_key_name if @association
11
- self.required = column_names.any? do |column_name|
12
- active_record_class.reflect_on_validations_for(column_name.to_sym).any? do |val|
13
- val.macro == :validates_presence_of or (val.macro == :validates_inclusion_of and not val.options[:allow_nil] and not val.options[:allow_blank])
14
- end
15
- end
16
- end
17
- end
18
- end
19
- ActiveScaffold::DataStructures::Column.class_eval do
20
- include ActiveScaffold::ValidationReflectionBridge
21
- end
@@ -1,70 +0,0 @@
1
- module ActiveScaffold::Config
2
- class Base
3
- include ActiveScaffold::Configurable
4
- extend ActiveScaffold::Configurable
5
-
6
- def initialize(core_config)
7
- @core = core_config
8
- end
9
-
10
- def self.inherited(subclass)
11
- class << subclass
12
- # the crud type of the action. possible values are :create, :read, :update, :delete, and nil.
13
- # this is not a setting for the developer. it's self-description for the actions.
14
- def crud_type; @crud_type; end
15
-
16
- protected
17
-
18
- def crud_type=(val)
19
- raise ArgumentError, "unknown CRUD type #{val}" unless [:create, :read, :update, :delete].include?(val.to_sym)
20
- @crud_type = val.to_sym
21
- end
22
- end
23
- end
24
-
25
- # delegate
26
- def crud_type; self.class.crud_type end
27
-
28
- def label(model = @core.label(:count => 1))
29
- @label.nil? ? model : as_(@label, :model => model)
30
- end
31
-
32
- # the user property gets set to the instantiation of the local UserSettings class during the automatic instantiation of this class.
33
- attr_accessor :user
34
-
35
- # define a default action_group for this action
36
- # e.g. 'members.crud'
37
- class_attribute :action_group
38
-
39
- # action_group this action should belong to
40
- attr_accessor :action_group
41
-
42
- class UserSettings
43
- def initialize(conf, storage, params)
44
- # the session hash relevant to this action
45
- @session = storage
46
- # all the request params
47
- @params = params
48
- # the configuration object for this action
49
- @conf = conf
50
- end
51
- end
52
-
53
- def formats
54
- @formats ||= []
55
- end
56
-
57
- def formats=(val)
58
- @formats=val
59
- end
60
-
61
- private
62
-
63
- def columns=(val)
64
- @columns = ActiveScaffold::DataStructures::ActionColumns.new(*val)
65
- @columns.action = self
66
- @columns.set_columns(@core.columns) if @columns.respond_to?(:set_columns)
67
- @columns
68
- end
69
- end
70
- end