activeadmin 0.2.2 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of activeadmin might be problematic. Click here for more details.

Files changed (277) hide show
  1. data/.gitignore +34 -0
  2. data/.travis.yml +4 -0
  3. data/.yardopts +8 -0
  4. data/CHANGELOG.md +177 -0
  5. data/Gemfile +21 -32
  6. data/Guardfile +8 -0
  7. data/README.rdoc +75 -14
  8. data/Rakefile +7 -100
  9. data/activeadmin.gemspec +21 -353
  10. data/{lib/generators/active_admin/install/templates/images → app/assets/images/active_admin}/admin_notes_icon.png +0 -0
  11. data/app/assets/images/active_admin/datepicker/datepicker-header-bg.png +0 -0
  12. data/app/assets/images/active_admin/datepicker/datepicker-input-icon.png +0 -0
  13. data/app/assets/images/active_admin/datepicker/datepicker-next-link-icon.png +0 -0
  14. data/app/assets/images/active_admin/datepicker/datepicker-nipple.png +0 -0
  15. data/app/assets/images/active_admin/datepicker/datepicker-prev-link-icon.png +0 -0
  16. data/{lib/generators/active_admin/install/templates/images → app/assets/images/active_admin}/loading.gif +0 -0
  17. data/{lib/generators/active_admin/install/templates/images → app/assets/images/active_admin}/nested_menu_arrow.gif +0 -0
  18. data/{lib/generators/active_admin/install/templates/images → app/assets/images/active_admin}/nested_menu_arrow_dark.gif +0 -0
  19. data/{lib/generators/active_admin/install/templates/images → app/assets/images/active_admin}/orderable.png +0 -0
  20. data/app/assets/javascripts/active_admin/base.js +12 -0
  21. data/{lib/generators/active_admin/install/templates/active_admin_vendor.js → app/assets/javascripts/active_admin/vendor.js} +0 -0
  22. data/{lib/active_admin/stylesheets/active_admin.scss → app/assets/stylesheets/active_admin/_base.css.scss} +58 -82
  23. data/{lib/active_admin/stylesheets/active_admin/_forms.scss → app/assets/stylesheets/active_admin/_forms.css.scss} +94 -5
  24. data/{lib/active_admin/stylesheets/active_admin/_header.scss → app/assets/stylesheets/active_admin/_header.css.scss} +13 -11
  25. data/app/assets/stylesheets/active_admin/_mixins.css.scss +1 -0
  26. data/{lib/active_admin/stylesheets/active_admin/_typography.scss → app/assets/stylesheets/active_admin/_typography.css.scss} +0 -0
  27. data/{lib/active_admin/stylesheets/active_admin/_comments.scss → app/assets/stylesheets/active_admin/components/_comments.css.scss} +0 -0
  28. data/app/assets/stylesheets/active_admin/components/_date_picker.css.scss +123 -0
  29. data/app/assets/stylesheets/active_admin/components/_flash_messages.css.scss +38 -0
  30. data/{lib/active_admin/stylesheets/active_admin/mixins/_all.scss → app/assets/stylesheets/active_admin/mixins/_all.css.scss} +0 -0
  31. data/{lib/active_admin/stylesheets/active_admin/mixins/_buttons.scss → app/assets/stylesheets/active_admin/mixins/_buttons.css.scss} +0 -0
  32. data/{lib/active_admin/stylesheets/active_admin/mixins/_gradients.scss → app/assets/stylesheets/active_admin/mixins/_gradients.css.scss} +8 -0
  33. data/{lib/active_admin/stylesheets/active_admin/mixins/_icons.scss → app/assets/stylesheets/active_admin/mixins/_icons.css.scss} +0 -0
  34. data/{lib/active_admin/stylesheets/active_admin/mixins/_reset.scss → app/assets/stylesheets/active_admin/mixins/_reset.css.scss} +0 -0
  35. data/{lib/active_admin/stylesheets/active_admin/mixins/_rounded.scss → app/assets/stylesheets/active_admin/mixins/_rounded.css.scss} +0 -0
  36. data/{lib/active_admin/stylesheets/active_admin/mixins/_sections.scss → app/assets/stylesheets/active_admin/mixins/_sections.css.scss} +9 -2
  37. data/{lib/active_admin/stylesheets/active_admin/mixins/_shadows.scss → app/assets/stylesheets/active_admin/mixins/_shadows.css.scss} +1 -1
  38. data/{lib/active_admin/stylesheets/active_admin/mixins/_variables.scss → app/assets/stylesheets/active_admin/mixins/_variables.css.scss} +12 -3
  39. data/{lib/active_admin/views/templates/active_admin_dashboard → app/views/active_admin/dashboard}/index.html.arb +0 -0
  40. data/{lib/active_admin/views/templates → app/views}/active_admin/devise/mailer/reset_password_instructions.html.erb +0 -0
  41. data/{lib/active_admin/views/templates → app/views}/active_admin/devise/mailer/unlock_instructions.html.erb +0 -0
  42. data/{lib/active_admin/views/templates → app/views}/active_admin/devise/passwords/edit.html.erb +0 -0
  43. data/{lib/active_admin/views/templates → app/views}/active_admin/devise/passwords/new.html.erb +0 -0
  44. data/{lib/active_admin/views/templates → app/views}/active_admin/devise/sessions/new.html.erb +1 -1
  45. data/{lib/active_admin/views/templates → app/views}/active_admin/devise/shared/_links.erb +0 -0
  46. data/{lib/active_admin/views/templates → app/views}/active_admin/devise/unlocks/new.html.erb +0 -0
  47. data/{lib/active_admin/views/templates/active_admin_default → app/views/active_admin/resource}/edit.html.arb +0 -0
  48. data/app/views/active_admin/resource/index.csv.erb +20 -0
  49. data/{lib/active_admin/views/templates/active_admin_default → app/views/active_admin/resource}/index.html.arb +0 -0
  50. data/{lib/active_admin/views/templates/active_admin_default → app/views/active_admin/resource}/new.html.arb +0 -0
  51. data/{lib/active_admin/views/templates/active_admin_default → app/views/active_admin/resource}/show.html.arb +0 -0
  52. data/app/views/layouts/active_admin.html.arb +1 -0
  53. data/{lib/active_admin/views/templates → app/views}/layouts/active_admin_logged_out.html.erb +8 -4
  54. data/docs/0-installation.md +50 -0
  55. data/docs/1-general-configuration.md +43 -0
  56. data/docs/2-resource-customization.md +35 -0
  57. data/docs/3-index-pages.md +55 -0
  58. data/docs/3-index-pages/index-as-block.md +16 -0
  59. data/docs/3-index-pages/index-as-blog.md +61 -0
  60. data/docs/3-index-pages/index-as-grid.md +21 -0
  61. data/docs/3-index-pages/index-as-table.md +90 -0
  62. data/docs/4-csv-format.md +14 -0
  63. data/docs/5-forms.md +39 -0
  64. data/docs/6-show-screens.md +22 -0
  65. data/docs/7-sidebars.md +35 -0
  66. data/docs/8-custom-actions.md +123 -0
  67. data/features/comments/commenting.feature +31 -4
  68. data/features/edit_page.feature +30 -1
  69. data/features/index/filters.feature +35 -0
  70. data/features/index/format_as_csv.feature +46 -0
  71. data/features/index/formats.feature +2 -0
  72. data/features/index/index_as_block.feature +1 -1
  73. data/features/index/index_as_grid.feature +1 -1
  74. data/features/index/index_as_table.feature +2 -0
  75. data/features/index/index_blank_slate.feature +56 -0
  76. data/features/index/pagination.feature +0 -6
  77. data/features/registering_assets.feature +2 -2
  78. data/features/sidebar_sections.feature +7 -8
  79. data/features/specifying_actions.feature +72 -1
  80. data/features/step_definitions/action_item_steps.rb +2 -2
  81. data/features/step_definitions/additional_web_steps.rb +26 -16
  82. data/features/step_definitions/attribute_steps.rb +5 -7
  83. data/features/step_definitions/configuration_steps.rb +9 -9
  84. data/features/step_definitions/factory_steps.rb +4 -3
  85. data/features/step_definitions/format_steps.rb +29 -1
  86. data/features/step_definitions/layout_steps.rb +3 -0
  87. data/features/step_definitions/menu_steps.rb +2 -2
  88. data/features/step_definitions/sidebar_steps.rb +1 -5
  89. data/features/step_definitions/user_steps.rb +8 -2
  90. data/features/step_definitions/web_steps.rb +82 -90
  91. data/features/sti_resource.feature +12 -0
  92. data/features/support/env.rb +12 -10
  93. data/features/support/paths.rb +2 -0
  94. data/features/support/selectors.rb +45 -0
  95. data/lib/active_admin.rb +33 -263
  96. data/lib/active_admin/application.rb +228 -0
  97. data/lib/active_admin/arbre.rb +10 -10
  98. data/lib/active_admin/arbre/{html.rb → builder.rb} +29 -2
  99. data/lib/active_admin/arbre/context.rb +8 -0
  100. data/lib/active_admin/arbre/{attributes.rb → html/attributes.rb} +0 -0
  101. data/lib/active_admin/arbre/{class_list.rb → html/class_list.rb} +0 -0
  102. data/lib/active_admin/arbre/{collection.rb → html/collection.rb} +0 -0
  103. data/lib/active_admin/arbre/{document.rb → html/document.rb} +0 -0
  104. data/lib/active_admin/arbre/{element.rb → html/element.rb} +6 -6
  105. data/lib/active_admin/arbre/{html5_elements.rb → html/html5_elements.rb} +0 -0
  106. data/lib/active_admin/arbre/{tag.rb → html/tag.rb} +0 -0
  107. data/lib/active_admin/arbre/{text_node.rb → html/text_node.rb} +0 -0
  108. data/lib/active_admin/asset_registration.rb +1 -1
  109. data/lib/active_admin/callbacks.rb +5 -3
  110. data/lib/active_admin/comments.rb +3 -3
  111. data/lib/active_admin/comments/comment.rb +6 -0
  112. data/lib/active_admin/comments/configuration.rb +8 -6
  113. data/lib/active_admin/comments/namespace_helper.rb +1 -1
  114. data/lib/active_admin/comments/views/active_admin_comments.rb +1 -1
  115. data/lib/active_admin/csv_builder.rb +45 -0
  116. data/lib/active_admin/dashboards.rb +1 -1
  117. data/lib/active_admin/dashboards/dashboard_controller.rb +3 -10
  118. data/lib/active_admin/dependency_checker.rb +28 -0
  119. data/lib/active_admin/deprecation.rb +36 -0
  120. data/lib/active_admin/devise.rb +14 -3
  121. data/lib/active_admin/dsl.rb +26 -4
  122. data/lib/active_admin/engine.rb +4 -0
  123. data/lib/active_admin/form_builder.rb +18 -9
  124. data/lib/active_admin/helpers/scope_chain.rb +23 -0
  125. data/lib/active_admin/helpers/settings.rb +70 -0
  126. data/lib/active_admin/locales/cs.yml +34 -0
  127. data/lib/active_admin/locales/da.yml +28 -0
  128. data/lib/active_admin/locales/en.yml +40 -0
  129. data/lib/active_admin/locales/es.yml +40 -0
  130. data/lib/active_admin/locales/fr.yml +40 -0
  131. data/lib/active_admin/locales/it.yml +39 -0
  132. data/lib/active_admin/locales/pl.yml +34 -0
  133. data/lib/active_admin/locales/pt-BR.yml +41 -0
  134. data/lib/active_admin/locales/ru.yml +40 -0
  135. data/lib/active_admin/locales/zh_cn.yml +40 -0
  136. data/lib/active_admin/menu_item.rb +6 -0
  137. data/lib/active_admin/namespace.rb +14 -5
  138. data/lib/active_admin/reloader.rb +30 -0
  139. data/lib/active_admin/renderer.rb +1 -1
  140. data/lib/active_admin/resource.rb +45 -88
  141. data/lib/active_admin/resource/action_items.rb +88 -0
  142. data/lib/active_admin/resource/menu.rb +45 -0
  143. data/lib/active_admin/resource/naming.rb +46 -0
  144. data/lib/active_admin/resource/scopes.rb +33 -0
  145. data/lib/active_admin/resource/sidebars.rb +36 -0
  146. data/lib/active_admin/resource_controller.rb +32 -37
  147. data/lib/active_admin/resource_controller/action_builder.rb +1 -1
  148. data/lib/active_admin/resource_controller/actions.rb +66 -40
  149. data/lib/active_admin/resource_controller/callbacks.rb +1 -1
  150. data/lib/active_admin/resource_controller/collection.rb +9 -14
  151. data/lib/active_admin/resource_controller/filters.rb +1 -1
  152. data/lib/active_admin/resource_controller/form.rb +1 -1
  153. data/lib/active_admin/resource_controller/menu.rb +1 -1
  154. data/lib/active_admin/resource_controller/page_configurations.rb +2 -2
  155. data/lib/active_admin/resource_controller/scoping.rb +1 -1
  156. data/lib/active_admin/resource_controller/sidebars.rb +1 -21
  157. data/lib/active_admin/router.rb +85 -0
  158. data/lib/active_admin/sass/active_admin.scss +3 -0
  159. data/lib/active_admin/sass/css_loader.rb +16 -0
  160. data/lib/active_admin/sass/helpers.rb +45 -0
  161. data/lib/active_admin/scope.rb +16 -2
  162. data/lib/active_admin/sidebar_section.rb +41 -0
  163. data/lib/active_admin/stylesheets/active_admin/mixins/_utilities.scss +0 -0
  164. data/lib/active_admin/version.rb +1 -1
  165. data/lib/active_admin/view_factory.rb +5 -3
  166. data/lib/active_admin/view_helpers.rb +1 -2
  167. data/lib/active_admin/view_helpers/active_admin_application_helper.rb +12 -0
  168. data/lib/active_admin/view_helpers/auto_link_helper.rb +2 -1
  169. data/lib/active_admin/view_helpers/display_helper.rb +1 -1
  170. data/lib/active_admin/view_helpers/filter_form_helper.rb +26 -14
  171. data/lib/active_admin/view_helpers/form_helper.rb +1 -0
  172. data/lib/active_admin/view_helpers/view_factory_helper.rb +1 -1
  173. data/lib/active_admin/views/components/attributes_table.rb +2 -2
  174. data/lib/active_admin/views/components/blank_slate.rb +17 -0
  175. data/lib/active_admin/views/components/columns.rb +1 -3
  176. data/lib/active_admin/views/components/paginated_collection.rb +26 -8
  177. data/lib/active_admin/views/components/scopes.rb +13 -8
  178. data/lib/active_admin/views/components/sidebar_section.rb +1 -3
  179. data/lib/active_admin/views/components/status_tag.rb +55 -0
  180. data/lib/active_admin/views/components/table_for.rb +25 -6
  181. data/lib/active_admin/views/header_renderer.rb +20 -4
  182. data/lib/active_admin/views/index_as_block.rb +12 -7
  183. data/lib/active_admin/views/index_as_blog.rb +61 -21
  184. data/lib/active_admin/views/index_as_grid.rb +22 -1
  185. data/lib/active_admin/views/index_as_table.rb +97 -6
  186. data/lib/active_admin/views/pages/base.rb +20 -9
  187. data/lib/active_admin/views/pages/dashboard.rb +7 -4
  188. data/lib/active_admin/views/pages/edit.rb +3 -2
  189. data/lib/active_admin/views/pages/index.rb +30 -5
  190. data/lib/active_admin/views/pages/layout.rb +26 -0
  191. data/lib/active_admin/views/pages/new.rb +3 -2
  192. data/lib/active_admin/views/pages/show.rb +1 -1
  193. data/lib/active_admin/views/tabbed_navigation.rb +94 -0
  194. data/lib/generators/active_admin/assets/assets_generator.rb +21 -0
  195. data/lib/generators/active_admin/assets/templates/3.0/active_admin.js +427 -0
  196. data/lib/generators/active_admin/assets/templates/3.1/active_admin.css.scss +6 -0
  197. data/lib/generators/active_admin/assets/templates/3.1/active_admin.js +1 -0
  198. data/lib/generators/active_admin/assets/templates/dashboards.rb +36 -0
  199. data/lib/generators/active_admin/install/install_generator.rb +2 -4
  200. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +26 -4
  201. data/lib/generators/active_admin/install/templates/dashboards.rb +4 -2
  202. data/lib/generators/active_admin/install/templates/migrations/2_move_admin_notes_to_comments.rb +2 -2
  203. data/script/local +44 -0
  204. data/script/use_rails +46 -0
  205. data/spec/integration/belongs_to_spec.rb +1 -1
  206. data/spec/integration/default_namespace.rb +77 -0
  207. data/spec/integration/javascript_spec.rb +20 -0
  208. data/spec/integration/stylesheets_spec.rb +41 -0
  209. data/spec/spec_helper.rb +21 -11
  210. data/spec/support/detect_rails_version.rb +10 -0
  211. data/spec/support/integration_example_group.rb +1 -1
  212. data/spec/support/jslint.yml +80 -0
  213. data/spec/support/rails_template.rb +1 -1
  214. data/spec/support/rails_template_with_data.rb +2 -1
  215. data/spec/support/templates/cucumber.rb +0 -4
  216. data/spec/unit/active_admin_spec.rb +8 -44
  217. data/spec/unit/application_spec.rb +78 -0
  218. data/spec/unit/arbre/context_spec.rb +22 -0
  219. data/spec/unit/arbre/html/element_finder_methods_spec.rb +2 -2
  220. data/spec/unit/arbre/html/element_spec.rb +2 -3
  221. data/spec/unit/arbre/html/tag_attributes_spec.rb +2 -2
  222. data/spec/unit/arbre/html/tag_spec.rb +2 -2
  223. data/spec/unit/arbre/html_spec.rb +2 -3
  224. data/spec/unit/auto_link_spec.rb +2 -1
  225. data/spec/unit/belongs_to_spec.rb +2 -1
  226. data/spec/unit/comments_spec.rb +43 -39
  227. data/spec/unit/controller_filters_spec.rb +11 -3
  228. data/spec/unit/csv_builder_spec.rb +83 -0
  229. data/spec/unit/devise_spec.rb +66 -0
  230. data/spec/unit/display_name_spec.rb +2 -2
  231. data/spec/unit/filter_form_builder_spec.rb +6 -3
  232. data/spec/unit/form_builder_spec.rb +20 -2
  233. data/spec/unit/generators/install_rails_3_1_spec.rb +16 -0
  234. data/spec/unit/helpers/scope_chain_spec.rb +36 -0
  235. data/spec/unit/helpers/settings_spec.rb +30 -0
  236. data/spec/unit/menu_item_spec.rb +6 -0
  237. data/spec/unit/namespace_spec.rb +68 -19
  238. data/spec/unit/rails_spec.rb +43 -0
  239. data/spec/unit/registration_spec.rb +18 -27
  240. data/spec/unit/reloader_spec.rb +28 -0
  241. data/spec/unit/resource/action_items_spec.rb +62 -0
  242. data/spec/unit/resource/menu_spec.rb +80 -0
  243. data/spec/unit/resource/naming_spec.rb +64 -0
  244. data/spec/unit/resource/scopes_spec.rb +30 -0
  245. data/spec/unit/resource/sidebars_spec.rb +50 -0
  246. data/spec/unit/resource_controller/collection_spec.rb +1 -1
  247. data/spec/unit/resource_controller_spec.rb +29 -24
  248. data/spec/unit/resource_spec.rb +78 -94
  249. data/spec/unit/sass/helpers_spec.rb +47 -0
  250. data/spec/unit/scope_spec.rb +11 -1
  251. data/spec/unit/view_factory_spec.rb +4 -1
  252. data/spec/unit/{components → views/components}/attributes_table_spec.rb +2 -2
  253. data/spec/unit/views/components/blank_slate_spec.rb +15 -0
  254. data/spec/unit/{components → views/components}/columns_spec.rb +2 -2
  255. data/spec/unit/{components → views/components}/panel_spec.rb +1 -3
  256. data/spec/unit/{components → views/components}/sidebar_section_spec.rb +3 -3
  257. data/spec/unit/views/components/status_tag_spec.rb +79 -0
  258. data/spec/unit/{components → views/components}/table_for_spec.rb +2 -1
  259. data/spec/unit/views/pages/layout_spec.rb +22 -0
  260. data/spec/unit/views/tabbed_navigation_spec.rb +125 -0
  261. data/tasks/docs.rake +39 -0
  262. data/tasks/test.rake +55 -0
  263. data/tasks/yard.rake +6 -0
  264. metadata +310 -189
  265. data/CHANGELOG.rdoc +0 -76
  266. data/lib/active_admin/action_items.rb +0 -37
  267. data/lib/active_admin/sidebar.rb +0 -39
  268. data/lib/active_admin/stylesheets/active_admin/_flash_messages.scss +0 -13
  269. data/lib/active_admin/view_helpers/status_tag_helper.rb +0 -13
  270. data/lib/active_admin/view_helpers/table_helper.rb +0 -12
  271. data/lib/active_admin/views/tabs_renderer.rb +0 -52
  272. data/lib/active_admin/views/templates/active_admin_default/index.csv.erb +0 -2
  273. data/lib/active_admin/views/templates/layouts/active_admin.html.erb +0 -39
  274. data/lib/generators/active_admin/install/templates/active_admin.js +0 -51
  275. data/spec/controllers/index_as_csv_spec.rb +0 -35
  276. data/spec/unit/action_items_spec.rb +0 -27
  277. data/spec/unit/tabs_renderer_spec.rb +0 -56
@@ -47,3 +47,15 @@ Feature: STI Resource
47
47
 
48
48
  When I follow "Delete User"
49
49
  Then I should see "User was successfully destroyed"
50
+
51
+ Scenario: Update and delete a child STI when the parent is registered
52
+ Given a publisher named "Terry Fox" exists
53
+ And I am on the index page for users
54
+ When I follow "Edit"
55
+ And I fill in "First name" with "Joe"
56
+ And I press "Update Publisher"
57
+ Then I should see "Publisher was successfully updated"
58
+ And I should see "Joe"
59
+
60
+ When I follow "Delete User"
61
+ Then I should see "Publisher was successfully destroyed"
@@ -6,11 +6,13 @@
6
6
 
7
7
  ENV['BUNDLE_GEMFILE'] = File.expand_path('../../../Gemfile', __FILE__)
8
8
 
9
+ require File.expand_path('../../../spec/support/detect_rails_version', __FILE__)
10
+ ENV["RAILS"] = detect_rails_version
11
+
9
12
  require 'rubygems'
10
13
  require "bundler"
11
14
  Bundler.setup
12
15
 
13
- ENV["RAILS"] ||= "3.0.0"
14
16
  ENV["RAILS_ENV"] ||= "cucumber"
15
17
  ENV['RAILS_ROOT'] = File.expand_path("../../../spec/rails/rails-#{ENV["RAILS"]}", __FILE__)
16
18
 
@@ -25,15 +27,11 @@ require ENV['RAILS_ROOT'] + '/config/environment'
25
27
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
26
28
  autoload :ActiveAdmin, 'active_admin'
27
29
 
28
- require 'cucumber/formatter/unicode' # Remove this line if you don't want Cucumber Unicode support
29
- require 'cucumber/rails/world'
30
- require 'cucumber/rails/active_record'
31
- require 'cucumber/web/tableish'
30
+ require 'cucumber/rails'
32
31
 
33
32
  require 'capybara/rails'
34
33
  require 'capybara/cucumber'
35
34
  require 'capybara/session'
36
- require 'cucumber/rails/capybara_javascript_emulation' # Lets you click links with onclick javascript handlers without using @culerity or @javascript
37
35
  # Capybara defaults to XPath selectors rather than Webrat's default of CSS3. In
38
36
  # order to ease the transition to Capybara we set the default here. If you'd
39
37
  # prefer to use XPath just remove this line and adjust any selectors in your
@@ -80,9 +78,13 @@ unless File.exists?(ENV['RAILS_ROOT'])
80
78
  system 'rake setup'
81
79
  end
82
80
 
83
- ACTIVE_ADMIN_TEST_CONFIG = File.expand_path('app/admin/__cuke.rb', Rails.root)
81
+ # Remove all our constants
82
+ Before do
83
+ # We are cachine classes, but need to manually clear references to
84
+ # the controllers. If they aren't clear, the router stores references
85
+ ActiveSupport::Dependencies.clear
84
86
 
85
- After do
86
- # Remove test configs if they exist
87
- File.delete(ACTIVE_ADMIN_TEST_CONFIG) if File.exists?(ACTIVE_ADMIN_TEST_CONFIG)
87
+ # Reload Active Admin
88
+ ActiveAdmin.unload!
89
+ ActiveAdmin.load!
88
90
  end
@@ -12,6 +12,8 @@ module NavigationHelpers
12
12
  '/'
13
13
  when /the dashboard/
14
14
  "/admin"
15
+ when /the new post page/
16
+ "/admin/posts/new"
15
17
 
16
18
  # the index page for posts in the root namespace
17
19
  # the index page for posts in the user_admin namespace
@@ -0,0 +1,45 @@
1
+ module HtmlSelectorsHelpers
2
+ # Maps a name to a selector. Used primarily by the
3
+ #
4
+ # When /^(.+) within (.+)$/ do |step, scope|
5
+ #
6
+ # step definitions in web_steps.rb
7
+ #
8
+ def selector_for(locator)
9
+ case locator
10
+
11
+ when "the page"
12
+ "html > body"
13
+
14
+ # Add more mappings here.
15
+ # Here is an example that pulls values out of the Regexp:
16
+ #
17
+ # when /^the (notice|error|info) flash$/
18
+ # ".flash.#{$1}"
19
+
20
+ # You can also return an array to use a different selector
21
+ # type, like:
22
+ #
23
+ # when /the header/
24
+ # [:xpath, "//header"]
25
+
26
+ when "index grid"
27
+ [:css, "table.index_grid"]
28
+
29
+ when /^the "([^"]*)" sidebar$/
30
+ [:css, "##{$1.gsub(" ", '').underscore}_sidebar_section"]
31
+
32
+ # This allows you to provide a quoted selector as the scope
33
+ # for "within" steps as was previously the default for the
34
+ # web steps:
35
+ when /^"(.+)"$/
36
+ $1
37
+
38
+ else
39
+ raise "Can't find mapping from \"#{locator}\" to a selector.\n" +
40
+ "Now, go and add a mapping in #{__FILE__}"
41
+ end
42
+ end
43
+ end
44
+
45
+ World(HtmlSelectorsHelpers)
@@ -1,19 +1,23 @@
1
1
  require 'meta_search'
2
2
  require 'devise'
3
- require 'will_paginate'
3
+ require 'kaminari'
4
4
  require 'sass'
5
5
  require 'active_admin/arbre'
6
+ require 'active_admin/engine'
6
7
 
7
8
  module ActiveAdmin
8
9
 
9
10
  autoload :VERSION, 'active_admin/version'
10
- autoload :ActionItems, 'active_admin/action_items'
11
+ autoload :Application, 'active_admin/application'
11
12
  autoload :AssetRegistration, 'active_admin/asset_registration'
12
13
  autoload :Breadcrumbs, 'active_admin/breadcrumbs'
13
14
  autoload :Callbacks, 'active_admin/callbacks'
14
15
  autoload :Component, 'active_admin/component'
15
16
  autoload :ControllerAction, 'active_admin/controller_action'
17
+ autoload :CSVBuilder, 'active_admin/csv_builder'
16
18
  autoload :Dashboards, 'active_admin/dashboards'
19
+ autoload :DependencyChecker, 'active_admin/dependency_checker'
20
+ autoload :Deprecation, 'active_admin/deprecation'
17
21
  autoload :Devise, 'active_admin/devise'
18
22
  autoload :DSL, 'active_admin/dsl'
19
23
  autoload :Event, 'active_admin/event'
@@ -23,290 +27,56 @@ module ActiveAdmin
23
27
  autoload :MenuItem, 'active_admin/menu_item'
24
28
  autoload :Namespace, 'active_admin/namespace'
25
29
  autoload :PageConfig, 'active_admin/page_config'
30
+ autoload :Reloader, 'active_admin/reloader'
26
31
  autoload :Resource, 'active_admin/resource'
27
32
  autoload :ResourceController, 'active_admin/resource_controller'
28
33
  autoload :Renderer, 'active_admin/renderer'
29
34
  autoload :Scope, 'active_admin/scope'
30
- autoload :Sidebar, 'active_admin/sidebar'
35
+ autoload :ScopeChain, 'active_admin/helpers/scope_chain'
36
+ autoload :SidebarSection, 'active_admin/sidebar_section'
31
37
  autoload :TableBuilder, 'active_admin/table_builder'
32
38
  autoload :ViewFactory, 'active_admin/view_factory'
33
39
  autoload :ViewHelpers, 'active_admin/view_helpers'
34
40
  autoload :Views, 'active_admin/views'
35
41
 
36
- module Configuration
37
-
38
- # The default namespace to put controllers and routes inside. Set this
39
- # in config/initializers/active_admin.rb using:
40
- #
41
- # config.default_namespace = :super_admin
42
- #
43
- @@default_namespace = :admin
44
- mattr_accessor :default_namespace
45
-
46
- # The default number of resources to display on index pages
47
- @@default_per_page = 30
48
- mattr_accessor :default_per_page
49
-
50
- # The default sort order for index pages
51
- @@default_sort_order = 'id_desc'
52
- mattr_accessor :default_sort_order
53
-
54
- # A hash of all the registered namespaces
55
- @@namespaces = {}
56
- mattr_accessor :namespaces
57
-
58
- # The title which gets displayed in the main layout
59
- @@site_title = ""
60
- mattr_accessor :site_title
61
-
62
- # Load paths for admin configurations. Add folders to this load path
63
- # to load up other resources for administration. External gems can
64
- # include their paths in this load path to provide active_admin UIs
65
- @@load_paths = [File.expand_path('app/admin', Rails.root)]
66
- mattr_accessor :load_paths
67
-
68
- # The view factory to use to generate all the view classes. Take
69
- # a look at ActiveAdmin::ViewFactory
70
- @@view_factory = ActiveAdmin::ViewFactory.new
71
- mattr_accessor :view_factory
72
-
73
- # DEPRECATED: This option is deprecated and will be removed. Use
74
- # the #allow_comments_in option instead
75
- mattr_accessor :admin_notes
76
-
77
- # The method to call in controllers to get the current user
78
- @@current_user_method = :current_admin_user
79
- mattr_accessor :current_user_method
80
-
81
- # The method to call in the controllers to ensure that there
82
- # is a currently authenticated admin user
83
- @@authentication_method = :authenticate_admin_user!
84
- mattr_accessor :authentication_method
85
-
86
- # Active Admin makes educated guesses when displaying objects, this is
87
- # the list of methods it tries calling in order
88
- @@display_name_methods = [:display_name, :full_name, :name, :username, :login, :title, :email, :to_s]
89
- mattr_accessor :display_name_methods
90
-
42
+ class Railtie < ::Rails::Railtie
43
+ # Add load paths straight to I18n, so engines and application can overwrite it.
44
+ require 'active_support/i18n'
45
+ I18n.load_path += Dir[File.expand_path('../active_admin/locales/*.yml', __FILE__)]
91
46
  end
92
47
 
93
- extend Configuration
94
- extend AssetRegistration
48
+ # The instance of the configured application
49
+ @@application = ::ActiveAdmin::Application.new
50
+ mattr_accessor :application
95
51
 
96
52
  class << self
97
53
 
98
-
99
54
  # Gets called within the initializer
100
55
  def setup
101
- # Register the default assets
102
- register_stylesheet 'admin/active_admin.css'
103
- register_javascript 'active_admin_vendor.js'
104
- register_javascript 'active_admin.js'
105
-
106
- # Since we're dealing with all our own file loading, we need
107
- # to remove our paths from the ActiveSupport autoload paths.
108
- # If not, file naming becomes very important and can cause clashes.
109
- ActiveSupport::Dependencies.autoload_paths.reject!{|path| load_paths.include?(path) }
110
-
111
- # Add the Active Admin view path to the rails view path
112
- ActionController::Base.append_view_path File.expand_path('../active_admin/views/templates', __FILE__)
113
-
114
- # Don't eagerload our configs, we'll deal with them ourselves
115
- Rails.application.config.eager_load_paths = Rails.application.config.eager_load_paths.reject do |path|
116
- load_paths.include?(path)
117
- end
118
-
119
- # Dispatch request which gets triggered once in production
120
- # and on every require in development mode
121
- ActionDispatch::Callbacks.to_prepare :active_admin do
122
- ActiveAdmin.unload!
123
- Rails.application.reload_routes!
124
- end
125
-
126
- yield self
127
-
128
- generate_stylesheets
129
- end
130
-
131
- def generate_stylesheets
132
- # Setup SASS
133
- require 'sass/plugin' # This must be required after initialization
134
- Sass::Plugin.add_template_location(File.expand_path("../active_admin/stylesheets/", __FILE__), File.join(Sass::Plugin.options[:css_location], 'admin'))
135
- end
136
-
137
- # Registers a brand new configuration for the given resource.
138
- def register(resource, options = {}, &block)
139
- namespace_name = options[:namespace] == false ? :root : (options[:namespace] || default_namespace || :root)
140
- namespace = find_or_create_namespace(namespace_name)
141
- namespace.register(resource, options, &block)
142
- end
143
-
144
- # Creates a namespace for the given name
145
- def find_or_create_namespace(name)
146
- return namespaces[name] if namespaces[name]
147
- namespace = Namespace.new(name)
148
- ActiveAdmin::Event.dispatch ActiveAdmin::Namespace::RegisterEvent, namespace
149
- namespaces[name] = namespace
150
- namespace
56
+ yield(application)
57
+ application.prepare!
151
58
  end
152
59
 
60
+ delegate :register, :to => :application
61
+ delegate :unload!, :to => :application
62
+ delegate :load!, :to => :application
63
+ delegate :routes, :to => :application
153
64
 
154
- # Stores if everything has been loaded or we need to reload
155
- @@loaded = false
156
-
157
- # Returns true if all the configuration files have been loaded.
158
- def loaded?
159
- @@loaded
65
+ # Returns true if this rails application has the asset
66
+ # pipeline enabled.
67
+ def use_asset_pipeline?
68
+ DependencyChecker.rails_3_1? && Rails.application.config.assets.enabled
160
69
  end
161
70
 
162
- # Removes all the controllers that were defined by registering
163
- # resources for administration.
164
- #
165
- # We remove them, then load them on each request in development
166
- # to allow for changes without having to restart the server.
167
- def unload!
168
- namespaces.values.each{|namespace| namespace.unload! }
169
- self.namespaces = {}
170
- @@loaded = false
171
- end
172
-
173
- # Loads all of the ruby files that are within the load path of
174
- # ActiveAdmin.load_paths. This should load all of the administration
175
- # UIs so that they are available for the router to proceed.
176
- #
177
- # The files are only loaded if we haven't already loaded all the files
178
- # and they aren't marked for re-loading. To mark the files for re-loading
179
- # you must first call ActiveAdmin.unload!
180
- def load!
181
- # No work to do if we've already loaded
182
- return false if loaded?
183
-
184
- # Load files
185
- files_in_load_path.each{|file| load file }
186
-
187
- # If no configurations, let's make sure you can still login
188
- load_default_namespace if namespaces.values.empty?
189
-
190
- # Load Menus
191
- namespaces.values.each{|namespace| namespace.load_menu! }
192
-
193
- @@loaded = true
194
- end
195
-
196
- # Returns ALL the files to load from all the load paths
197
- def files_in_load_path
198
- load_paths.flatten.compact.uniq.collect{|path| Dir["#{path}/**/*.rb"] }.flatten
199
- end
200
-
201
- # Creates all the necessary routes for the ActiveAdmin configurations
202
- #
203
- # Use this within the routes.rb file:
204
- #
205
- # Application.routes.draw do |map|
206
- # ActiveAdmin.routes(self)
207
- # end
208
- #
209
- def routes(router)
210
- # Ensure that all the configurations (which define the routes)
211
- # are all loaded
212
- load!
213
-
214
- # Define any necessary dashboard routes
215
- router.instance_exec(namespaces.values) do |namespaces|
216
- namespaces.each do |namespace|
217
- if namespace.root?
218
- match '/' => 'dashboard#index', :as => 'dashboard'
219
- else
220
- name = namespace.name
221
- match name.to_s => "#{name}/dashboard#index", :as => "#{name.to_s}_dashboard"
222
- end
223
- end
224
- end
225
-
226
- # Now define the routes for each resource
227
- router.instance_exec(namespaces) do |namespaces|
228
- resources = namespaces.values.collect{|n| n.resources.values }.flatten
229
- resources.each do |config|
230
-
231
- # Define the block the will get eval'd within the namespace
232
- route_definition_block = Proc.new do
233
- resources config.underscored_resource_name.pluralize do
234
-
235
- # Define any member actions
236
- member do
237
- config.member_actions.each do |action|
238
- # eg: get :comment
239
- send(action.http_verb, action.name)
240
- end
241
- end
242
-
243
- # Define any collection actions
244
- collection do
245
- config.collection_actions.each do |action|
246
- send(action.http_verb, action.name)
247
- end
248
- end
249
- end
250
- end
251
-
252
- # Add in the parent if it exists
253
- if config.belongs_to?
254
- routes_for_belongs_to = route_definition_block.dup
255
- route_definition_block = Proc.new do
256
- # If its optional, make the normal resource routes
257
- instance_eval &routes_for_belongs_to if config.belongs_to_config.optional?
258
-
259
- # Make the nested belongs_to routes
260
- resources config.belongs_to_config.target.underscored_resource_name.pluralize do
261
- instance_eval &routes_for_belongs_to
262
- end
263
- end
264
- end
265
-
266
- # Add on the namespace if required
267
- if !config.namespace.root?
268
- routes_in_namespace = route_definition_block.dup
269
- route_definition_block = Proc.new do
270
- namespace config.namespace.name do
271
- instance_eval(&routes_in_namespace)
272
- end
273
- end
274
- end
275
-
276
- instance_eval &route_definition_block
277
- end
278
- end
279
- end
280
-
281
- def load_default_namespace
282
- find_or_create_namespace(default_namespace)
283
- end
284
-
285
- #
286
- # Add before, around and after filters to each registered resource.
287
- #
288
- # eg:
289
- #
290
- # ActiveAdmin.before_filter :authenticate_admin!
291
- #
292
- def before_filter(*args, &block)
293
- ResourceController.before_filter(*args, &block)
294
- end
295
-
296
- def after_filter(*args, &block)
297
- ResourceController.after_filter(*args, &block)
298
- end
299
-
300
- def around_filter(*args, &block)
301
- ResourceController.around_filter(*args, &block)
302
- end
303
-
304
- # Helper method to add a dashboard section
305
- def dashboard_section(name, options = {}, &block)
306
- ActiveAdmin::Dashboards.add_section(name, options, &block)
307
- end
71
+ # Migration MoveAdminNotesToComments generated with version 0.2.2 might reference
72
+ # to ActiveAdmin.default_namespace.
73
+ delegate :default_namespace, :to => :application
74
+ ActiveAdmin::Deprecation.deprecate self, :default_namespace,
75
+ "ActiveAdmin.default_namespace is deprecated. Please use ActiveAdmin.application.default_namespace"
308
76
 
309
77
  end
310
78
  end
311
79
 
80
+ ActiveAdmin::DependencyChecker.check!
81
+
312
82
  require 'active_admin/comments'