adva-core 0.0.2 → 0.0.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 (284) hide show
  1. data/lib/bundler/repository.rb +118 -0
  2. metadata +68 -317
  3. data/app/controllers/admin/base_controller.rb +0 -21
  4. data/app/controllers/admin/pages_controller.rb +0 -7
  5. data/app/controllers/admin/sections_controller.rb +0 -39
  6. data/app/controllers/admin/sites_controller.rb +0 -21
  7. data/app/controllers/articles_controller.rb +0 -3
  8. data/app/controllers/base_controller.rb +0 -22
  9. data/app/controllers/installations_controller.rb +0 -28
  10. data/app/controllers/pages_controller.rb +0 -2
  11. data/app/controllers/sections_controller.rb +0 -3
  12. data/app/helpers/form_helper.rb +0 -13
  13. data/app/helpers/sections_helper.rb +0 -7
  14. data/app/helpers/url_helper.rb +0 -18
  15. data/app/models/account.rb +0 -3
  16. data/app/models/article.rb +0 -2
  17. data/app/models/content.rb +0 -4
  18. data/app/models/page.rb +0 -17
  19. data/app/models/section.rb +0 -59
  20. data/app/models/site.rb +0 -26
  21. data/app/views/admin/contents/_menu.html.rb +0 -17
  22. data/app/views/admin/pages/_menu.html.rb +0 -10
  23. data/app/views/admin/pages/new.html.rb +0 -19
  24. data/app/views/admin/pages/show.html.rb +0 -25
  25. data/app/views/admin/sections/_menu.html.rb +0 -45
  26. data/app/views/admin/sections/_section.html.rb +0 -7
  27. data/app/views/admin/sections/_select_type.html.rb +0 -16
  28. data/app/views/admin/sections/index.html.rb +0 -28
  29. data/app/views/admin/sites/_menu.html.rb +0 -2
  30. data/app/views/admin/sites/edit.html.rb +0 -22
  31. data/app/views/admin/sites/index.html.rb +0 -12
  32. data/app/views/admin/sites/new.html.rb +0 -39
  33. data/app/views/admin/sites/show.html.rb +0 -7
  34. data/app/views/installations/new.html.rb +0 -39
  35. data/app/views/installations/show.html.rb +0 -9
  36. data/app/views/layouts/_flash.html.rb +0 -9
  37. data/app/views/layouts/admin.rb +0 -38
  38. data/app/views/layouts/admin/_header.rb +0 -48
  39. data/app/views/layouts/admin/_tabs.html.rb +0 -18
  40. data/app/views/layouts/admin/_top.rb +0 -58
  41. data/app/views/layouts/base.rb +0 -58
  42. data/app/views/layouts/default.rb +0 -45
  43. data/app/views/layouts/default/_menu.rb +0 -19
  44. data/app/views/layouts/simple.rb +0 -16
  45. data/app/views/pages/show.html.rb +0 -7
  46. data/config/initializers/simple_form.rb +0 -53
  47. data/config/locales/en.yml +0 -129
  48. data/config/redirects.rb +0 -8
  49. data/config/routes.rb +0 -21
  50. data/lib/adva-core.rb +0 -1
  51. data/lib/adva.rb +0 -37
  52. data/lib/adva/active_record/has_options.rb +0 -55
  53. data/lib/adva/cli.rb +0 -16
  54. data/lib/adva/controller.rb +0 -7
  55. data/lib/adva/controller/abstract_actions.rb +0 -87
  56. data/lib/adva/controller/internal_redirect.rb +0 -26
  57. data/lib/adva/controller/references.rb +0 -28
  58. data/lib/adva/core.rb +0 -85
  59. data/lib/adva/engine.rb +0 -64
  60. data/lib/adva/engine/sliced_models.rb +0 -35
  61. data/lib/adva/generators.rb +0 -8
  62. data/lib/adva/generators/app.rb +0 -121
  63. data/lib/adva/generators/engine.rb +0 -58
  64. data/lib/adva/generators/gemfile.rb +0 -50
  65. data/lib/adva/generators/install.rb +0 -31
  66. data/lib/adva/generators/templates/app/app_template.rb +0 -3
  67. data/lib/adva/generators/templates/engine/Gemfile.erb +0 -3
  68. data/lib/adva/generators/templates/engine/all.rb +0 -1
  69. data/lib/adva/generators/templates/engine/en.yml.erb +0 -2
  70. data/lib/adva/generators/templates/engine/engine.rb.erb +0 -11
  71. data/lib/adva/generators/templates/engine/gemspec.erb +0 -21
  72. data/lib/adva/generators/templates/engine/migration.rb.erb +0 -11
  73. data/lib/adva/generators/templates/engine/redirects.rb.erb +0 -3
  74. data/lib/adva/generators/templates/engine/routes.rb.erb +0 -3
  75. data/lib/adva/generators/templates/engine/test_helper.rb.erb +0 -3
  76. data/lib/adva/i18n.rb +0 -73
  77. data/lib/adva/rack.rb +0 -5
  78. data/lib/adva/rack/static.rb +0 -50
  79. data/lib/adva/registry.rb +0 -62
  80. data/lib/adva/responder.rb +0 -21
  81. data/lib/adva/responder/redirect.rb +0 -31
  82. data/lib/adva/routing_filters/section_path.rb +0 -72
  83. data/lib/adva/routing_filters/section_root.rb +0 -65
  84. data/lib/adva/tasks/core.rake +0 -9
  85. data/lib/adva/tasks/core.rb +0 -160
  86. data/lib/adva/testing.rb +0 -57
  87. data/lib/adva/testing/engine.rb +0 -37
  88. data/lib/adva/view.rb +0 -7
  89. data/lib/adva/view/form.rb +0 -44
  90. data/lib/adva/view/form/tabs.rb +0 -46
  91. data/lib/adva/view/helper/i18n.rb +0 -26
  92. data/lib/adva/view/menu.rb +0 -73
  93. data/lib/adva/view/menu/admin.rb +0 -100
  94. data/lib/adva/view/menu/items.rb +0 -26
  95. data/lib/adva/view/tabs.rb +0 -28
  96. data/lib/adva_core/version.rb +0 -3
  97. data/lib/core_ext/rails/action_view/has_many_through_collection_helpers.rb +0 -27
  98. data/lib/core_ext/rails/active_record/skip_callbacks.rb +0 -51
  99. data/lib/core_ext/ruby/array/flatten_once.rb +0 -9
  100. data/lib/core_ext/ruby/kernel/silence_stream.rb +0 -17
  101. data/lib/core_ext/ruby/module/include_anonymous.rb +0 -36
  102. data/lib/core_ext/ruby/module/option_reader.rb +0 -9
  103. data/lib/patches/arel/table_initialization_fixes.rb +0 -68
  104. data/lib/patches/inherited_resources.rb +0 -34
  105. data/lib/patches/rails/arel_table_options_fix.rb +0 -13
  106. data/lib/patches/rails/asset_expansion_multiple_registrations.rb +0 -21
  107. data/lib/patches/rails/recognize_path_env.rb +0 -43
  108. data/lib/patches/rails/route_set_to_param.rb +0 -25
  109. data/lib/patches/rails/sti_associations.rb +0 -17
  110. data/lib/patches/rails/template_resolver_caching.rb +0 -9
  111. data/lib/patches/rails/url_for.rb +0 -60
  112. data/lib/patches/responders/flash_responder.rb +0 -17
  113. data/lib/patches/simple_form.rb +0 -37
  114. data/lib/patches/thor/core_ext/hash.rb +0 -7
  115. data/lib/patches/thor/group/symbolized_options.rb +0 -8
  116. data/lib/patches/webrat/links-data-method.rb +0 -19
  117. data/lib/patches/webrat/logger.rb +0 -19
  118. data/lib/patches/webrat/upload_file.rb +0 -28
  119. data/lib/testing/assertions.rb +0 -19
  120. data/lib/testing/factories.rb +0 -30
  121. data/lib/testing/helpers/global_helpers.rb +0 -9
  122. data/lib/testing/paths.rb +0 -54
  123. data/lib/testing/step_definitions/common_steps.rb +0 -279
  124. data/lib/testing/step_definitions/menu_steps.rb +0 -11
  125. data/lib/testing/step_definitions/routes_steps.rb +0 -18
  126. data/lib/testing/step_definitions/transforms.rb +0 -50
  127. data/lib/testing/step_definitions/webrat_steps.rb +0 -291
  128. data/lib/testing/step_definitions/within_steps.rb +0 -17
  129. data/lib/webrat/integrations/rails.rb +0 -33
  130. data/public/images/adva-core/admin/header_bg.png +0 -0
  131. data/public/images/adva-core/admin/menu_checkmark.png +0 -0
  132. data/public/images/adva-core/admin/section_menu_bg.png +0 -0
  133. data/public/images/adva-core/admin/tab_action_active.png +0 -0
  134. data/public/images/adva-core/admin/tab_main_active.png +0 -0
  135. data/public/images/adva-core/admin/tab_sidebar_active.png +0 -0
  136. data/public/images/adva-core/admin/tab_top_active.png +0 -0
  137. data/public/images/adva-core/asset_selected.png +0 -0
  138. data/public/images/adva-core/avatar.gif +0 -0
  139. data/public/images/adva-core/feed.mini.png +0 -0
  140. data/public/images/adva-core/filter-bg.png +0 -0
  141. data/public/images/adva-core/grid.png +0 -0
  142. data/public/images/adva-core/icons/accept.png +0 -0
  143. data/public/images/adva-core/icons/add.png +0 -0
  144. data/public/images/adva-core/icons/arrow_cross.png +0 -0
  145. data/public/images/adva-core/icons/arrow_cross_2.png +0 -0
  146. data/public/images/adva-core/icons/arrow_cross_3.png +0 -0
  147. data/public/images/adva-core/icons/arrow_up_down.png +0 -0
  148. data/public/images/adva-core/icons/assets/audio.png +0 -0
  149. data/public/images/adva-core/icons/assets/doc.png +0 -0
  150. data/public/images/adva-core/icons/assets/pdf.png +0 -0
  151. data/public/images/adva-core/icons/assets/video.png +0 -0
  152. data/public/images/adva-core/icons/attach.png +0 -0
  153. data/public/images/adva-core/icons/bin.png +0 -0
  154. data/public/images/adva-core/icons/bin_closed.png +0 -0
  155. data/public/images/adva-core/icons/bin_empty.png +0 -0
  156. data/public/images/adva-core/icons/bullet_black.png +0 -0
  157. data/public/images/adva-core/icons/bullet_delete.png +0 -0
  158. data/public/images/adva-core/icons/bullet_error.png +0 -0
  159. data/public/images/adva-core/icons/bullet_go.png +0 -0
  160. data/public/images/adva-core/icons/bullet_red.png +0 -0
  161. data/public/images/adva-core/icons/bullet_white.png +0 -0
  162. data/public/images/adva-core/icons/bullet_yellow.png +0 -0
  163. data/public/images/adva-core/icons/cancel.png +0 -0
  164. data/public/images/adva-core/icons/comment.gif +0 -0
  165. data/public/images/adva-core/icons/comment.png +0 -0
  166. data/public/images/adva-core/icons/comment_add.png +0 -0
  167. data/public/images/adva-core/icons/comment_blue.gif +0 -0
  168. data/public/images/adva-core/icons/comment_delete.png +0 -0
  169. data/public/images/adva-core/icons/comment_edit.png +0 -0
  170. data/public/images/adva-core/icons/comment_yellow.gif +0 -0
  171. data/public/images/adva-core/icons/cross.png +0 -0
  172. data/public/images/adva-core/icons/delete.png +0 -0
  173. data/public/images/adva-core/icons/eye.png +0 -0
  174. data/public/images/adva-core/icons/favorites.png +0 -0
  175. data/public/images/adva-core/icons/help.png +0 -0
  176. data/public/images/adva-core/icons/hourglass.png +0 -0
  177. data/public/images/adva-core/icons/icon_attachment.gif +0 -0
  178. data/public/images/adva-core/icons/icon_padlock.gif +0 -0
  179. data/public/images/adva-core/icons/link.png +0 -0
  180. data/public/images/adva-core/icons/lock.png +0 -0
  181. data/public/images/adva-core/icons/magnifier.png +0 -0
  182. data/public/images/adva-core/icons/minus.gif +0 -0
  183. data/public/images/adva-core/icons/page_add.png +0 -0
  184. data/public/images/adva-core/icons/page_delete.png +0 -0
  185. data/public/images/adva-core/icons/page_edit.png +0 -0
  186. data/public/images/adva-core/icons/page_favorites.png +0 -0
  187. data/public/images/adva-core/icons/page_go.png +0 -0
  188. data/public/images/adva-core/icons/page_green.png +0 -0
  189. data/public/images/adva-core/icons/page_red.png +0 -0
  190. data/public/images/adva-core/icons/page_white_add.png +0 -0
  191. data/public/images/adva-core/icons/page_white_delete.png +0 -0
  192. data/public/images/adva-core/icons/page_white_edit.png +0 -0
  193. data/public/images/adva-core/icons/page_white_go.png +0 -0
  194. data/public/images/adva-core/icons/page_white_link.png +0 -0
  195. data/public/images/adva-core/icons/page_white_magnify.png +0 -0
  196. data/public/images/adva-core/icons/pencil.png +0 -0
  197. data/public/images/adva-core/icons/star.png +0 -0
  198. data/public/images/adva-core/icons/stop.png +0 -0
  199. data/public/images/adva-core/icons/tag_green.png +0 -0
  200. data/public/images/adva-core/icons/tick.png +0 -0
  201. data/public/images/adva-core/icons/zoom.png +0 -0
  202. data/public/images/adva-core/indicator.gif +0 -0
  203. data/public/images/adva-core/lines.png +0 -0
  204. data/public/images/adva-core/preview.png +0 -0
  205. data/public/images/adva-core/theme_selected.png +0 -0
  206. data/public/javascripts/adva-core/admin.js +0 -22
  207. data/public/javascripts/adva-core/jquery/jquery-1.4.2.min.js +0 -154
  208. data/public/javascripts/adva-core/jquery/jquery.table_tree.js +0 -296
  209. data/public/javascripts/adva-core/jquery/jquery.tablednd_0_5.js +0 -386
  210. data/public/javascripts/adva-core/rails.js +0 -127
  211. data/public/javascripts/backup/admin/jquery.admin.js +0 -77
  212. data/public/javascripts/backup/admin/jquery.article.js +0 -22
  213. data/public/javascripts/backup/admin/jquery.cached_pages.js +0 -14
  214. data/public/javascripts/backup/admin/jquery.table_tree.backup.js +0 -279
  215. data/public/javascripts/backup/admin/jquery.table_tree.js +0 -10
  216. data/public/javascripts/backup/application.js +0 -38
  217. data/public/javascripts/backup/application.prototype.js +0 -135
  218. data/public/javascripts/backup/builder.js +0 -136
  219. data/public/javascripts/backup/controls.js +0 -965
  220. data/public/javascripts/backup/cookie.js +0 -49
  221. data/public/javascripts/backup/dragdrop.js +0 -975
  222. data/public/javascripts/backup/effects.js +0 -1130
  223. data/public/javascripts/backup/flash.js +0 -49
  224. data/public/javascripts/backup/jquery.dates.js +0 -49
  225. data/public/javascripts/backup/jquery.flash.js +0 -40
  226. data/public/javascripts/backup/jquery.roles.js +0 -23
  227. data/public/javascripts/backup/jquery/jquery-lowpro.js +0 -224
  228. data/public/javascripts/backup/jquery/jquery-ui.js +0 -273
  229. data/public/javascripts/backup/jquery/jquery.js +0 -19
  230. data/public/javascripts/backup/jquery/jquery.qtip.min.js +0 -15
  231. data/public/javascripts/backup/json.js +0 -139
  232. data/public/javascripts/backup/lowpro.js +0 -320
  233. data/public/javascripts/backup/parseuri.js +0 -39
  234. data/public/javascripts/backup/prototype.js +0 -4320
  235. data/public/javascripts/backup/roles.js +0 -16
  236. data/public/javascripts/backup/scriptaculous.js +0 -60
  237. data/public/javascripts/backup/slider.js +0 -275
  238. data/public/javascripts/backup/sound.js +0 -55
  239. data/public/javascripts/backup/unittest.js +0 -568
  240. data/public/stylesheets/adva-core/admin/forms.css +0 -172
  241. data/public/stylesheets/adva-core/admin/layout.css +0 -38
  242. data/public/stylesheets/adva-core/admin/lists.css +0 -54
  243. data/public/stylesheets/adva-core/admin/navigation.css +0 -234
  244. data/public/stylesheets/adva-core/admin/sidebar.css +0 -87
  245. data/public/stylesheets/adva-core/admin/styles.css +0 -136
  246. data/public/stylesheets/adva-core/common/forms.css +0 -174
  247. data/public/stylesheets/adva-core/common/layout.css +0 -93
  248. data/public/stylesheets/adva-core/common/reset.css +0 -42
  249. data/public/stylesheets/adva-core/common/styles.css +0 -41
  250. data/public/stylesheets/adva-core/default/layout.css +0 -0
  251. data/public/stylesheets/adva-core/default/styles.css +0 -30
  252. data/public/stylesheets/adva-core/simple/layout.css +0 -11
  253. data/public/stylesheets/backup/alternate/common.css +0 -76
  254. data/public/stylesheets/backup/alternate/forms.css +0 -121
  255. data/public/stylesheets/backup/alternate/header.css +0 -125
  256. data/public/stylesheets/backup/alternate/layout.css +0 -103
  257. data/public/stylesheets/backup/alternate/lists.css +0 -153
  258. data/public/stylesheets/backup/alternate/sidebar.css +0 -65
  259. data/public/stylesheets/backup/alternate/top.css +0 -123
  260. data/public/stylesheets/backup/content.css +0 -11
  261. data/public/stylesheets/backup/helptip.css +0 -35
  262. data/public/stylesheets/backup/jquery/alternate/jquery.tooltip.css +0 -13
  263. data/public/stylesheets/backup/jquery/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  264. data/public/stylesheets/backup/jquery/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  265. data/public/stylesheets/backup/jquery/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  266. data/public/stylesheets/backup/jquery/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  267. data/public/stylesheets/backup/jquery/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  268. data/public/stylesheets/backup/jquery/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  269. data/public/stylesheets/backup/jquery/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  270. data/public/stylesheets/backup/jquery/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  271. data/public/stylesheets/backup/jquery/images/ui-icons_222222_256x240.png +0 -0
  272. data/public/stylesheets/backup/jquery/images/ui-icons_2e83ff_256x240.png +0 -0
  273. data/public/stylesheets/backup/jquery/images/ui-icons_454545_256x240.png +0 -0
  274. data/public/stylesheets/backup/jquery/images/ui-icons_888888_256x240.png +0 -0
  275. data/public/stylesheets/backup/jquery/images/ui-icons_cd0a0a_256x240.png +0 -0
  276. data/public/stylesheets/backup/jquery/jquery-ui.css +0 -406
  277. data/public/stylesheets/backup/jquery/jquery.tooltip.css +0 -10
  278. data/public/stylesheets/backup/layout.css +0 -22
  279. data/public/stylesheets/backup/lists.css +0 -17
  280. data/public/stylesheets/backup/menu.css +0 -129
  281. data/public/stylesheets/backup/projection.css +0 -118
  282. data/public/stylesheets/backup/screen/top.css +0 -8
  283. data/public/stylesheets/backup/themes.css +0 -49
  284. data/public/stylesheets/backup/users.css +0 -40
@@ -1,43 +0,0 @@
1
- require 'action_dispatch/routing/mapper'
2
- require 'action_dispatch/routing/route_set'
3
-
4
- module ActionDispatch
5
- module Routing
6
- class RouteSet
7
- def recognize_path(path, environment = {})
8
- method = (environment[:method] || "GET").to_s.upcase
9
- path = Rack::Mount::Utils.normalize_path(path)
10
-
11
- begin
12
-
13
- # TODO submit a rails patch
14
-
15
- # env = Rack::MockRequest.env_for(path, {:method => method})
16
- env = Rack::MockRequest.env_for(path, {:method => method}).merge(environment)
17
- rescue URI::InvalidURIError => e
18
- raise ActionController::RoutingError, e.message
19
- end
20
-
21
- req = Rack::Request.new(env)
22
- @set.recognize(req) do |route, matches, params|
23
- params.each do |key, value|
24
- if value.is_a?(String)
25
- value = value.dup.force_encoding(Encoding::BINARY) if value.encoding_aware?
26
- params[key] = URI.unescape(value)
27
- end
28
- end
29
-
30
- dispatcher = route.app
31
- dispatcher = dispatcher.app while dispatcher.is_a?(Mapper::Constraints)
32
-
33
- if dispatcher.is_a?(Dispatcher) && dispatcher.controller(params, false)
34
- dispatcher.prepare_params!(params)
35
- return params
36
- end
37
- end
38
-
39
- raise ActionController::RoutingError, "No route matches #{path.inspect}"
40
- end
41
- end
42
- end
43
- end
@@ -1,25 +0,0 @@
1
- # make route_set generator pass the current segment/param name to to_param
2
- # if arity allows it. so we can use param names in routes and distinguish them
3
- # in the model.
4
-
5
- require 'action_dispatch/routing/route_set'
6
-
7
- ActionDispatch::Routing::RouteSet::Generator.class_eval do
8
- def opts
9
- parameterize = lambda do |name, value|
10
- if name == :controller
11
- value
12
- elsif value.is_a?(Array)
13
- value.map { |v| Rack::Mount::Utils.escape_uri(to_param(name, v)) }.join('/')
14
- else
15
- return nil unless param = to_param(name, value)
16
- param.split('/').map { |v| Rack::Mount::Utils.escape_uri(v) }.join("/")
17
- end
18
- end
19
- {:parameterize => parameterize}
20
- end
21
-
22
- def to_param(name, value)
23
- value.method(:to_param).arity == 1 ? value.to_param(name) : value.to_param
24
- end
25
- end
@@ -1,17 +0,0 @@
1
- require 'gem_patching'
2
-
3
- # Make build associations have their given type
4
- # i.e.: site.sections.build(:type => 'Page').class == Page
5
- # http://pragmatig.com/2010/06/04/fixing-rails-nested-attributes-on-collections-with-sti
6
-
7
- Gem.patching('rails', '3.0.0') do
8
- class ActiveRecord::Reflection::AssociationReflection
9
- def build_association(*options)
10
- if options.first.is_a?(Hash) && options.first[:type].present?
11
- options.first[:type].to_s.constantize.new(*options)
12
- else
13
- klass.new(*options)
14
- end
15
- end
16
- end
17
- end
@@ -1,9 +0,0 @@
1
- # Gem.patching('rails', '3.0.0.rc') do
2
- # require 'action_view/template/resolver'
3
- # ActionView::Resolver.class_eval do
4
- # def caching?
5
- # # @caching ||= !defined?(Rails.application) || Rails.application.config.cache_classes
6
- # @caching ||= !defined?(Rails.application) || Rails.application.nil? || Rails.application.config.cache_classes
7
- # end
8
- # end
9
- # end
@@ -1,60 +0,0 @@
1
- require 'gem_patching'
2
-
3
- # remove trailing segments '.1' and query params '?=1' from url
4
- Gem.patching('rails', '3.0.0') do
5
- ActionDispatch::Routing::RouteSet.class_eval do
6
- def url_for_with_singleton_resource_patch(options)
7
- url_for_without_singleton_resource_patch(options).
8
- sub(/\.\d+(\Z|\?)/) { $1 || '' }.
9
- sub(/\?=\d+$/, '')
10
- end
11
- alias_method_chain :url_for, :singleton_resource_patch
12
- end
13
- end
14
-
15
- # walks up the inheritance chain for given records if the generated named route
16
- # helper does not exist
17
- # see https://rails.lighthouseapp.com/projects/8994-ruby-on-rails/tickets/2986-polymorphic_url-should-handle-sti-better
18
- Gem.patching('rails', '3.0.0') do
19
- require 'action_dispatch/routing/polymorphic_routes'
20
-
21
- ActionDispatch::Routing::PolymorphicRoutes.module_eval do
22
- def build_named_route_call_with_sti_fallbacks(records, inflection, options = {})
23
- # FIXME should cache successful transformation for reuse
24
- # FIXME currently only works if records is an array (also might be a single record or a Hash)
25
- original_records = records
26
- records = records.dup unless records.is_a?(Symbol)
27
- method = build_named_route_call_without_sti_fallbacks(records, inflection, options)
28
- if !respond_to?(method, true) && original_records.is_a?(Array) && records = walk_sti_for_named_route_call(original_records.dup)
29
- build_named_route_call_with_sti_fallbacks(records, inflection, options)
30
- else
31
- method
32
- end
33
- end
34
- alias_method_chain :build_named_route_call, :sti_fallbacks
35
-
36
- def walk_sti_for_named_route_call(records)
37
- walked = []
38
- while record = records.pop
39
- if record.is_a?(ActiveRecord::Base) && record.class.superclass != ActiveRecord::Base
40
- return records + [record.becomes(record.class.superclass)] + walked
41
- end
42
- walked << record
43
- end
44
- nil
45
- end
46
- end
47
- end
48
-
49
- # ActionDispatch::Integration::Runner defines method_missing but no accompaning
50
- # respond_to? method. It thus doesn't respond_to? to named route url helpers even
51
- # though it actually responds to them. Happens with the PolymorphicRoutes patch
52
- # above, so this patch is here as well.
53
- Gem.patching('rails', '3.0.0') do
54
- ActionDispatch::Integration::Runner.module_eval do
55
- def respond_to?(method, include_private = false)
56
- @integration_session.respond_to?(method, include_private) || super
57
- end
58
- end
59
- end
60
-
@@ -1,17 +0,0 @@
1
- require 'responders/flash_responder'
2
-
3
- Responders::FlashResponder.class_eval do
4
- def flash_defaults_by_namespace(status)
5
- defaults = []
6
- slices = controller.controller_path.split('/')
7
-
8
- while slices.size > 0
9
- defaults << :"flash.#{slices.fill(controller.controller_name, -1).join('.')}.#{controller.action_name}.#{status}"
10
- defaults << :"flash.#{slices.join('.')}.#{controller.action_name}.#{status}"
11
- slices.shift
12
- end
13
-
14
- defaults << :"flash.#{controller.action_name}.#{status}"
15
- defaults.uniq << ""
16
- end
17
- end
@@ -1,37 +0,0 @@
1
- require 'gem_patching'
2
-
3
- # add "blog edit_blog" as css classes. should propose a patch to simple_form
4
-
5
- Gem.patching('simple_form', '1.2.2') do
6
- SimpleForm::ActionViewExtensions::FormHelper.module_eval do
7
- [:form_for, :fields_for, :remote_form_for].each do |helper|
8
- class_eval <<-METHOD, __FILE__, __LINE__
9
- def simple_#{helper}(record_or_name_or_array, *args, &block)
10
- css_classes = simple_css_classes(record_or_name_or_array)
11
-
12
- options = args.extract_options!
13
- options[:builder] = SimpleForm::FormBuilder
14
- options[:html] ||= {}
15
- options[:html][:class] = "simple_form \#{css_classes} \#{options[:html][:class]}".strip
16
-
17
- with_custom_field_error_proc do
18
- #{helper}(record_or_name_or_array, *(args << options), &block)
19
- end
20
- end
21
- METHOD
22
-
23
- def simple_css_classes(record_or_name_or_array)
24
- css_classes = case record_or_name_or_array
25
- when String, Symbol
26
- record_or_name_or_array.to_s
27
- when Array
28
- record = record_or_name_or_array.last
29
- action = record.new_record? ? 'new' : 'edit'
30
- [dom_class(record), dom_class(record, action)].join(' ')
31
- else
32
- dom_class(record_or_name_or_array)
33
- end
34
- end
35
- end
36
- end
37
- end
@@ -1,7 +0,0 @@
1
- require 'thor/core_ext/hash_with_indifferent_access'
2
-
3
- Thor::CoreExt::HashWithIndifferentAccess.class_eval do
4
- def to_hash
5
- Hash.new.merge(self)
6
- end
7
- end
@@ -1,8 +0,0 @@
1
- require 'thor/group'
2
-
3
- Thor::Group.class_eval do
4
- protected
5
- def symbolized_options
6
- options.to_hash.symbolize_keys
7
- end
8
- end
@@ -1,19 +0,0 @@
1
- begin
2
- require 'webrat'
3
- rescue LoadError
4
- end
5
- require 'gem_patching'
6
-
7
- Gem.patching('webrat', '0.7.0') do
8
- Webrat::Link.class_eval do
9
- def http_method
10
- if !@element["data-method"].blank?
11
- @element["data-method"]
12
- elsif !onclick.blank? && onclick.include?("f.submit()")
13
- http_method_from_js_form
14
- else
15
- :get
16
- end
17
- end
18
- end
19
- end if defined?(Webrat)
@@ -1,19 +0,0 @@
1
- begin
2
- require 'webrat'
3
- rescue LoadError
4
- end
5
- # require 'webrat/core/logging'
6
- require 'gem_patching'
7
-
8
- Gem.patching('webrat', '0.7.0') do
9
- Webrat::Logging.class_eval do
10
- def logger
11
- case Webrat.configuration.mode
12
- when :rails
13
- defined?(Rails) ? Rails.logger : nil
14
- else
15
- super
16
- end
17
- end
18
- end
19
- end if defined?(Webrat)
@@ -1,28 +0,0 @@
1
- begin
2
- require 'webrat'
3
- rescue LoadError
4
- end
5
- # require 'webrat/core/logging'
6
- require 'gem_patching'
7
-
8
- Gem.patching('webrat', '0.7.0') do
9
- Webrat::FileField.class_eval do
10
- include ActionDispatch::TestProcess
11
-
12
- def test_uploaded_file
13
- return "" if @value.blank?
14
-
15
- case Webrat.configuration.mode
16
- when :rails
17
- if content_type
18
- # Rails 3 does not have an ActionController::TestUploadedFile anymore
19
- Rack::Test::UploadedFile.new(@value, content_type)
20
- else
21
- Rack::Test::UploadedFile.new(@value)
22
- end
23
- when :rack, :merb
24
- Rack::Test::UploadedFile.new(@value, content_type)
25
- end
26
- end
27
- end
28
- end if defined?(Webrat)
@@ -1,19 +0,0 @@
1
- def assert_email_sent(attributes)
2
- emails = ::ActionMailer::Base.deliveries
3
- assert !emails.empty?, "No emails were sent"
4
- matching_emails = emails.select do |email|
5
- attributes.all? do |name, value|
6
- case name
7
- when 'body'
8
- value.split(',').map(&:strip).all? { |value| email.body.include?(value) }
9
- else
10
- email.send(name).to_s == value
11
- end
12
- end
13
- end
14
- assert !matching_emails.empty?, begin
15
- msg = ["None of the #{emails.size} emails matched #{attributes.inspect}.\nInstead, there are the following emails:"]
16
- msg += emails.map { |email| attributes.keys.map { |key| [key, email.send(key)] }.map { |key, value| "#{key}: #{value}" }.join(',') }
17
- msg.join("\n")
18
- end
19
- end
@@ -1,30 +0,0 @@
1
- Factory.define :site do |f|
2
- f.account Account.first || Account.create!
3
- f.name 'adva-cms'
4
- f.host 'www.example.com'
5
- f.title 'adva-cms'
6
- f.sections_attributes [{
7
- :type => 'Page',
8
- :name => 'Home',
9
- :article_attributes => {
10
- :body => 'Body'
11
- }
12
- }]
13
- f.after_create { |site| Factory(:admin) }
14
- end
15
-
16
- Factory.define :section do |f|
17
- f.site { Site.first || Factory(:site) }
18
- f.name 'Home'
19
- end
20
-
21
- Factory.define :page do |f|
22
- f.site { Site.first || Factory(:site) }
23
- f.name 'Home'
24
- end
25
-
26
- Factory.define :content do |f|
27
- f.site { Site.first || Factory(:site) }
28
- f.section { Section.first || Factory(:section) }
29
- f.title 'Content'
30
- end
@@ -1,9 +0,0 @@
1
- module GlobalHelpers
2
- def site
3
- Site.first || raise("Could not find a site. Maybe you want to set one up in your story background?")
4
- end
5
-
6
- def account
7
- Account.first || raise("Could not find a site. Maybe you want to set one up in your story background?")
8
- end
9
- end
@@ -1,54 +0,0 @@
1
- module Adva::Core::Paths
2
- def path_to(page)
3
- case page
4
-
5
- when /^\//
6
- page
7
-
8
- when /^the home\s?page$/
9
- '/'
10
-
11
- when /^the site installation page$/
12
- new_installation_path
13
-
14
- when /^the site installation confirmation page$/
15
- installation_path(Site.last)
16
-
17
- when /^the "([^"]*)" section page$/
18
- section = Section.where(:name => $1).first || raise("could not find section named #{$1}")
19
- polymorphic_path(section)
20
-
21
- when /^the admin sites page$/
22
- polymorphic_path([:admin, :sites])
23
-
24
- when /^the admin dashboard page$/
25
- site = Site.first
26
- polymorphic_path([:admin, site])
27
-
28
- when /^the admin dashboard page for the site on "([^"]*)"$/
29
- site = Site.find_by_host($1) || raise("could not find site with host #{$1}")
30
- polymorphic_path([:admin, site])
31
-
32
- when /^the admin sections page$/
33
- site = Site.first
34
- polymorphic_path([:admin, site, :sections])
35
-
36
- when /^the admin "([^"]*)" section page$/
37
- site = Site.first
38
- section = Section.where(:name => $1).first || raise("could not find section named #{$1}")
39
- polymorphic_path([:admin, site, section])
40
-
41
- when /^the admin "([^"]*)" section settings page$/
42
- site = Site.first
43
- section = Section.where(:name => $1).first || raise("could not find section named #{$1}")
44
- polymorphic_path([:edit, :admin, site, section])
45
-
46
- else
47
- named_route_helper = page.gsub(/(\Athe )|( page\Z)/, '').gsub(/ +/, '_').downcase + '_path'
48
- raise "Can't find mapping from \"#{page}\" to a path.\nNow, go and add a mapping in #{__FILE__}" unless respond_to?(named_route_helper)
49
- send named_route_helper
50
- end
51
- end
52
- end
53
-
54
- World(Adva::Core::Paths)
@@ -1,279 +0,0 @@
1
- Given 'a site' do
2
- @site = Factory(:site)
3
- end
4
-
5
- # TODO what's this?
6
- Transform /^table:name,product_name$/ do |table|
7
- transformed_table = table.hashes.map do |row|
8
- row.merge('product_id' => Product.find_by_name(row.delete('product_name')).id)
9
- end
10
- Cucumber::Ast::Table.new(transformed_table)
11
- end
12
-
13
- # Examples:
14
- # 1. Given the following products:
15
- # Also supports namespaced models, (cnet) indicating the namespace Cnet
16
- # 2. Given the following (cnet) products:
17
- Given /^the following ((?:\([a-z ]+\) )?(?:[\w]+)):$/ do |type, table|
18
- type = type.gsub(/^\(([a-z ]+)\) /, "\\1/").gsub(' ', '_').singularize
19
- table.hashes.each do |attributes|
20
- type = attributes.delete('type').underscore if attributes.key?('type')
21
- attributes['site'] = site if type.classify.constantize.column_names.include?('site_id')
22
- Factory(type, attributes)
23
- end
24
- end
25
-
26
- Given /^a site with the following sections:$/ do |table|
27
- Site.all.map(&:destroy)
28
- @site = Factory(:site, :sections_attributes => [])
29
- Given "the following sections:", table
30
- end
31
-
32
- Given /^a site with a (\w+) named "([^"]+)"$/ do |section, name|
33
- Site.all.map(&:destroy)
34
- @site = Factory(:site, :sections_attributes => [])
35
- Given %(a #{section} named "#{name}")
36
- end
37
-
38
- # e.g. a blog named "Blog"
39
- Given /^an? (\w+) (name|title)d "([^"]+)"$/ do |model, attribute, value|
40
- model = model.classify.constantize
41
- attributes = { attribute => value }
42
- attributes[:site_id] = site.id if model.column_names.include?('site_id')
43
- attributes[:account_id] = account.id if model.column_names.include?('account_id')
44
- model.where(attributes).first || model.create!(attributes)
45
- end
46
-
47
- Given /^an? (\w+) with the following attributes:$/ do |model, table|
48
- Factory(model, table.rows_hash)
49
- end
50
-
51
- # e.g. a post titled "Post" for the blog "Blog"
52
- # e.g. a category named "Category" belonging to the blog "Blog"
53
- Given /^an? (\w+) (name|title)d "([^"]+)" (?:for|belonging to) the (\w+) "([^"]+)"$/ do |model, attribute, value, section, name|
54
- section = Given(%(a #{section} named "#{name}"))
55
- collection = section.send(model.underscore.pluralize)
56
- attributes = { attribute => value }
57
- collection.where(attributes).first || collection.create!(attributes)
58
- end
59
-
60
- # e.g. a post with the title "Post" for the blog "Blog"
61
- # e.g. a post with the title "Post" belonging to the blog "Blog"
62
- Given /^an? (\w+) with the (\w+) "([^"]+)" (?:for|belonging to) the (\w+) "([^"]+)"$/ do |model, attribute, value, section, name|
63
- section = Given(%(a #{section} named "#{name}"))
64
- collection = section.send(model.underscore.pluralize)
65
- attributes = { attribute => value }
66
- collection.where(attributes).first || collection.create!(attributes)
67
- end
68
-
69
- Given /^(\w+)s with the following attributes:$/ do |model, table|
70
- table.hashes.each do |attributes|
71
- Factory(model, attributes)
72
- end
73
- end
74
-
75
- When /^(.+) that link$/ do |step|
76
- raise "no last link" if @last_link.blank?
77
- When %(#{step} "#{@last_link}")
78
- end
79
-
80
- When /^I (press|click) "(.*)" in the row (of the ([a-z ]+) table )?where "(.*)" is "(.*)"$/ do |press_or_click, link_or_button, _, table_id, header, cell_content|
81
- body = Nokogiri::HTML(response.body)
82
- table_xpath = table_id.nil? ? 'table' : "table[@id='#{table_id.gsub(/ /, '_')}']"
83
- table_header_cells = body.xpath("//#{table_xpath}/descendant::th[normalize-space(text())='#{header}']/@id")
84
- assert !table_header_cells.empty?, "could not find table header cell '#{header}'"
85
- header_id = body.xpath("//#{table_xpath}/descendant::th[normalize-space(text())='#{header}']/@id").first.value
86
- row_id = body.xpath("//#{table_xpath}/descendant::td[@headers='#{header_id}'][normalize-space(text())='#{cell_content}']/ancestor::tr/@id").first.value
87
- within("##{row_id}") do
88
- send({'press' => 'click_button', 'click' => 'click_link'}[press_or_click], link_or_button)
89
- end
90
- end
91
-
92
- When /^I click on the link from the email to (.*)$/ do |to|
93
- email = ::ActionMailer::Base.deliveries.detect { |email| email.to.include?(to) }
94
- assert email, "email to #{to} could not be found"
95
- link = email.body.to_s =~ %r((http://[^\s"]+)) && $1
96
- get link
97
- end
98
-
99
- Then /^there should be an? (\w+)$/ do |model|
100
- assert @last_record = model.classify.constantize.first, "could not find any #{model}"
101
- end
102
-
103
- Then /^there should be an? (\w+) named "([^\"]+)"$/ do |model, name|
104
- assert @last_record = model.classify.constantize.where(:name => name).first, "could not find any #{model} named #{name}"
105
- end
106
-
107
- Then /^there should not be an? (\w+) named "([^"]*)"$/ do |model, name|
108
- assert !model.classify.constantize.where(:name => name).first, "expected no #{model} named #{name} exists, but found one"
109
- end
110
-
111
- Then /^there should be a (\w+) with the following attributes:$/ do |model, table|
112
- assert @last_record = model.classify.constantize.where(table.rows_hash).first, "could not find a #{model} with #{table.rows_hash.inspect}"
113
- end
114
-
115
- Then /^there should be (\w+)s with the following attributes:$/ do |model, table|
116
- table.hashes.each do |attributes|
117
- assert model.classify.constantize.where(attributes).first, "could not find a #{model} with #{attributes.inspect}"
118
- end
119
- end
120
-
121
- Then /^that (\w+) should have an? (\w+) with the following attributes:$/ do |last, model, table|
122
- assert @last_record.is_a?(last.classify.constantize), "wrong type for last #{last}"
123
- assert @last_record.send(model.pluralize).where(table.rows_hash).first, "could not find a #{model} with #{table.rows_hash.inspect}"
124
- end
125
-
126
- Then /^that (\w+) should have (\w+)s with the following attributes:$/ do |last, model, table|
127
- assert @last_record.is_a?(last.classify.constantize), "wrong type for last #{last}"
128
- table.hashes.each do |attributes|
129
- assert @last_record.send(model.pluralize).where(attributes).first, "could not find a #{model} with #{attributes.inspect}"
130
- end
131
- end
132
-
133
- Then /^the title should be "([^"]+)"$/ do |title|
134
- assert_select('title', title)
135
- end
136
-
137
- Then /^I should see a link "([^"]+)"$/ do |link|
138
- @last_link = link
139
- assert_select('a', link)
140
- end
141
-
142
- Then /^I should not see any (\w+)$/ do |type|
143
- assert_select(".#{type.singularize}", :count => 0) # .#{type},
144
- end
145
-
146
- Then /^I should see an? (\w+)$/ do |type|
147
- assert_select(".#{type}")
148
- end
149
-
150
- Then /^I should see an? (\w+) (?:titled|named) "([^"]+)"$/ do |type, text|
151
- assert_select(".#{type} h2", text)
152
- end
153
-
154
- Then /^I should see an? (\w+) containing "([^"]+)"$/ do |type, text|
155
- assert_select(".#{type}", /#{text}/)
156
- end
157
-
158
- Then /^I should see an? (\w+) list$/ do |type|
159
- assert_select(".#{type}.list")
160
- end
161
-
162
- Then /^I should see a list of (\w+)$/ do |type|
163
- assert_select(".#{type}.list")
164
- end
165
-
166
- Then /^I should see an? ([a-z ]+) form$/ do |type|
167
- tokens = type.split(' ')
168
- types = [tokens.join('_'), tokens.reverse.join('_')]
169
- selectors = types.map { |type| "form.#{type}, form##{type}" }
170
- assert_select(selectors.join(', '))
171
- end
172
-
173
- Then /^I should not see an? ([a-z ]+) form$/ do |type|
174
- type = type.gsub(' ', '_') #.gsub(/edit_/, '')
175
- assert_select("form.#{type}, form##{type}", :count => 0)
176
- end
177
-
178
- Then /^I should see an? ([a-z ]+) form with the following values:$/ do |type, table|
179
- type = type.gsub(' ', '_') #.gsub(/edit_/, '')
180
- assert_select("form.#{type}, form##{type}") do |form|
181
- table.rows_hash.each do |name, value|
182
- assert_equal value, webrat.current_scope.field_labeled(name).value
183
- end
184
- end
185
- end
186
-
187
- Then /^I should see a "(.+)" table with the following entries:$/ do |table_id, expected_table|
188
- actual_table = table(tableish("table##{table_id} tr", 'td,th'))
189
- begin
190
- diff_table = expected_table.dup
191
- diff_table.diff!(actual_table.dup)
192
- rescue
193
- puts "\nActual table:#{actual_table.to_s}\n"
194
- puts "Expected table:#{expected_table.to_s}\n"
195
- puts "Difference:#{diff_table.to_s}\n"
196
- raise
197
- end
198
- end
199
-
200
- Then /^I should see the "([^"]+)" page$/ do |name|
201
- assert_select('h2', name)
202
- end
203
-
204
- Then(/(?:\$|eval) (.*)$/) do |code|
205
- pp eval(code)
206
- end
207
-
208
- Then /^I should see a flash (error|notice|message) "(.+)"$/ do |message_type, message|
209
- assert_match message, flash_cookie[message_type].to_s
210
- end
211
-
212
- Then /^I should not see a flash (error|notice) "(.+)"$/ do |message_type, message|
213
- assert_no_match /message/, flash_cookie[message_type].to_s
214
- end
215
-
216
- Then /^I should (see|not see) the error "([^"]+)" for attribute "([^"]+)" of the "([^"]+)"$/ do |should_see, error_msg, attribute, model|
217
- if should_see == 'see' # ugh ...
218
- assert_select "*[id*=#{model.downcase.gsub(' ', '_')}_#{attribute.downcase.gsub(' ', '_')}] + span.error",
219
- :text => error_msg
220
- elsif should_see == 'not see'
221
- assert_select "*[id*=#{model.downcase.gsub(' ', '_')}_#{attribute.downcase.gsub(' ', '_')}] + span.error",
222
- :text => error_msg, :count => 0
223
- end
224
- end
225
-
226
- Then /^the following emails should have been sent:$/ do |expected_emails|
227
- expected_emails.hashes.each do |attributes|
228
- assert_email_sent(attributes)
229
- end
230
- end
231
-
232
- # Then /^I should see a "([^"]+)" table with the following entries:$/ do |table_id, expected_table|
233
- # html_table = table(tableish("table##{table_id} tr", 'td,th'))
234
- # expected_table.diff!(html_table)
235
- # end
236
-
237
- # TODO somehow merge this with what's in within_steps.rb
238
- #
239
- # Then I should see a comment within the sidebar
240
- # Will look for '#sidebar .comment'
241
- # Then I should see the cart within the sidebar
242
- # Will look for '#sidebar #cart'
243
- Then /^I should see (an?|the) ([a-z ]+) within the ([a-z ]+)$/ do |a_or_the, selector, context_selector|
244
- within("##{context_selector}") do |context|
245
- assert_select({'a' => '.', 'the' => '#'}[a_or_the]+selector)
246
- end
247
- end
248
-
249
- Then /^"([^"]*)" should be filled in with "([^"]*)"$/ do |field, value|
250
- field = webrat.field_labeled(field)
251
- assert_equal value, field.value
252
- end
253
-
254
- Then /^"([^"]*)" should be checked$/ do |label|
255
- field = webrat.field_labeled(label)
256
- assert field.checked?, "expected the checkbox #{label} to be checked"
257
- end
258
-
259
- Then /^"([^"]*)" should not be checked$/ do |label|
260
- field = webrat.field_labeled(label)
261
- assert !field.checked?, "expected the checkbox #{label} not to be checked"
262
- end
263
-
264
- Then /^"([^"]*)" should be selected as "([^"]*)"$/ do |value, label|
265
- select = webrat.field_labeled(label)
266
- assert select, "count not find a select field labeled #{label}"
267
- selected = select.element.xpath(".//option[@selected = 'selected']").first
268
- assert selected, "could not find a selected option"
269
- assert_equal value, selected.text
270
- end
271
-
272
- Then /^I should see "([^"]*)" formatted as a "([^"]*)" tag$/ do |value, tag|
273
- assert_select(tag, value)
274
- end
275
-
276
- Then "debug" do
277
- debugger
278
- true
279
- end