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
@@ -1,4 +1,4 @@
1
- require 'inherited_views'
1
+ require 'inherited_resources'
2
2
  require 'active_admin/resource_controller/actions'
3
3
  require 'active_admin/resource_controller/action_builder'
4
4
  require 'active_admin/resource_controller/callbacks'
@@ -8,23 +8,22 @@ require 'active_admin/resource_controller/form'
8
8
  require 'active_admin/resource_controller/menu'
9
9
  require 'active_admin/resource_controller/page_configurations'
10
10
  require 'active_admin/resource_controller/scoping'
11
- require 'active_admin/resource_controller/sidebars'
12
11
 
13
12
  module ActiveAdmin
14
- class ResourceController < ::InheritedViews::Base
13
+ class ResourceController < ::InheritedResources::Base
15
14
 
16
- self.default_views = 'active_admin_default'
17
-
18
15
  helper ::ActiveAdmin::ViewHelpers
19
16
 
20
- layout false
21
-
17
+ layout :determine_active_admin_layout
18
+
22
19
  respond_to :html, :xml, :json
23
20
  respond_to :csv, :only => :index
24
21
 
22
+ before_filter :only_render_implemented_actions
25
23
  before_filter :authenticate_active_admin_user
26
24
 
27
- include ActiveAdmin::ActionItems
25
+ ACTIVE_ADMIN_ACTIONS = [:index, :show, :new, :create, :edit, :update, :destroy]
26
+
28
27
  include Actions
29
28
  include ActionBuilder
30
29
  include Callbacks
@@ -34,14 +33,15 @@ module ActiveAdmin
34
33
  include Menu
35
34
  include PageConfigurations
36
35
  include Scoping
37
- include Sidebars
38
36
 
39
37
  class << self
38
+ # Ensure that this method is available for the DSL
39
+ public :actions
40
40
 
41
41
  # Reference to the Resource object which initialized
42
42
  # this controller
43
43
  attr_accessor :active_admin_config
44
-
44
+
45
45
  def active_admin_config=(config)
46
46
  @active_admin_config = config
47
47
  defaults :resource_class => config.resource,
@@ -52,41 +52,33 @@ module ActiveAdmin
52
52
  public :belongs_to
53
53
  end
54
54
 
55
- # Default Sidebar Sections
56
- sidebar :filters, :only => :index do
57
- active_admin_filters_form_for assigns["search"], filters_config
58
- end
55
+ protected
59
56
 
60
- # Default Action Item Links
61
- action_item :only => :show do
62
- if controller.action_methods.include?('edit')
63
- link_to("Edit #{active_admin_config.resource_name}", edit_resource_path(resource))
64
- end
57
+ # By default Rails will render un-implemented actions when the view exists. Becuase Active
58
+ # Admin allows you to not render any of the actions by using the #actions method, we need
59
+ # to check if they are implemented.
60
+ def only_render_implemented_actions
61
+ raise AbstractController::ActionNotFound unless action_methods.include?(params[:action])
65
62
  end
66
63
 
67
- action_item :only => :show do
68
- if controller.action_methods.include?("destroy")
69
- link_to("Delete #{active_admin_config.resource_name}",
70
- resource_path(resource),
71
- :method => :delete, :confirm => "Are you sure you want to delete this?")
72
- end
64
+ # Determine which layout to use.
65
+ #
66
+ # 1. If we're rendering a standard Active Admin action, we want layout(false)
67
+ # because these actions are subclasses of the Base page (which implementes
68
+ # all the required layout code)
69
+ # 2. If we're rendering a custom action, we'll use the active_admin layout so
70
+ # that users can render any template inside Active Admin.
71
+ def determine_active_admin_layout
72
+ ACTIVE_ADMIN_ACTIONS.include?(params[:action].to_sym) ? false : 'active_admin'
73
73
  end
74
74
 
75
- action_item :except => [:new, :show] do
76
- if controller.action_methods.include?('new')
77
- link_to("New #{active_admin_config.resource_name}", new_resource_path)
78
- end
79
- end
80
-
81
- protected
82
-
83
75
  # Calls the authentication method as defined in ActiveAdmin.authentication_method
84
76
  def authenticate_active_admin_user
85
- send(ActiveAdmin.authentication_method) if ActiveAdmin.authentication_method
77
+ send(active_admin_application.authentication_method) if active_admin_application.authentication_method
86
78
  end
87
79
 
88
80
  def current_active_admin_user
89
- send(ActiveAdmin.current_user_method) if ActiveAdmin.current_user_method
81
+ send(active_admin_application.current_user_method) if active_admin_application.current_user_method
90
82
  end
91
83
  helper_method :current_active_admin_user
92
84
 
@@ -100,11 +92,14 @@ module ActiveAdmin
100
92
  end
101
93
  helper_method :active_admin_config
102
94
 
95
+ def active_admin_application
96
+ ActiveAdmin.application
97
+ end
98
+
103
99
  # Returns the renderer class to use for the given action.
104
100
  def renderer_for(action)
105
- ActiveAdmin.view_factory["#{action}_page"]
101
+ active_admin_application.view_factory["#{action}_page"]
106
102
  end
107
103
  helper_method :renderer_for
108
-
109
104
  end
110
105
  end
@@ -1,5 +1,5 @@
1
1
  module ActiveAdmin
2
- class ResourceController < ::InheritedViews::Base
2
+ class ResourceController < ::InheritedResources::Base
3
3
 
4
4
  module ActionBuilder
5
5
  extend ActiveSupport::Concern
@@ -1,53 +1,79 @@
1
1
  module ActiveAdmin
2
- class ResourceController < ::InheritedViews::Base
3
-
4
- # All the controller actions are defined here. They all use
5
- # the render_or_default method provided by InheritedViews which
6
- # tries to render the view in the user's application, then falls
7
- # back the view declared by Active Admin.
8
- module Actions
9
- def index
10
- index! do |format|
11
- format.html do
12
- render_or_default 'index'
13
- end
14
- format.csv do
15
- @csv_columns = resource_class.columns.collect{ |column| column.name.to_sym }
16
- render_or_default 'index'
17
- end
2
+ class ResourceController < ::InheritedResources::Base
3
+
4
+ # Override the InheritedResources actions to use the
5
+ # Active Admin templates.
6
+ #
7
+ # We ensure that the functionality provided by Inherited
8
+ # Resources is still available within any ResourceController
9
+
10
+ def index(options={}, &block)
11
+ super(options) do |format|
12
+ block.call(format) if block
13
+ format.html { render active_admin_template('index.html.arb') }
14
+ format.csv do
15
+ headers['Content-Type'] = 'text/csv; charset=utf-8'
16
+ headers['Content-Disposition'] = %{attachment; filename="#{csv_filename}"}
17
+ render active_admin_template('index.csv.erb')
18
18
  end
19
19
  end
20
+ end
21
+ alias :index! :index
20
22
 
21
- def new
22
- new! do |format|
23
- format.html { render_or_default 'new' }
24
- end
23
+ def show(options={}, &block)
24
+ super do |format|
25
+ block.call(format) if block
26
+ format.html { render active_admin_template('show.html.arb') }
25
27
  end
26
-
27
- def create
28
- create! do |success, failure|
29
- failure.html { render_or_default 'new' }
30
- end
28
+ end
29
+ alias :show! :show
30
+
31
+ def new(options={}, &block)
32
+ super do |format|
33
+ block.call(format) if block
34
+ format.html { render active_admin_template('new.html.arb') }
31
35
  end
32
-
33
- def show
34
- show! do |format|
35
- format.html { render_or_default 'show' }
36
- end
36
+ end
37
+ alias :new! :new
38
+
39
+ def edit(options={}, &block)
40
+ super do |format|
41
+ block.call(format) if block
42
+ format.html { render active_admin_template('edit.html.arb') }
37
43
  end
38
-
39
- def edit
40
- edit! do |format|
41
- format.html { render_or_default 'edit' }
42
- end
44
+ end
45
+ alias :edit! :edit
46
+
47
+ def create(options={}, &block)
48
+ super(options) do |success, failure|
49
+ block.call(success, failure) if block
50
+ failure.html { render active_admin_template('new.html.arb') }
43
51
  end
44
-
45
- def update
46
- update! do |success, failure|
47
- failure.html { render_or_default 'edit' }
48
- end
52
+ end
53
+ alias :create! :create
54
+
55
+ def update(options={}, &block)
56
+ super do |success, failure|
57
+ block.call(success, failure) if block
58
+ failure.html { render active_admin_template('edit.html.arb') }
49
59
  end
50
60
  end
61
+ alias :update! :update
51
62
 
63
+ # Make aliases protected
64
+ protected :index!, :show!, :new!, :create!, :edit!, :update!
65
+
66
+ protected
67
+
68
+ # Returns the full location to the Active Admin template path
69
+ def active_admin_template(template)
70
+ "active_admin/resource/#{template}"
71
+ end
72
+
73
+ # Returns a filename for the csv file using the collection_name
74
+ # and current date such as 'my-articles-2011-06-24.csv'.
75
+ def csv_filename
76
+ "#{resource_collection_name.to_s.gsub('_', '-')}-#{Time.now.strftime("%Y-%m-%d")}.csv"
77
+ end
52
78
  end
53
79
  end
@@ -1,5 +1,5 @@
1
1
  module ActiveAdmin
2
- class ResourceController < ::InheritedViews::Base
2
+ class ResourceController < ::InheritedResources::Base
3
3
 
4
4
  module Callbacks
5
5
  extend ActiveSupport::Concern
@@ -1,5 +1,5 @@
1
1
  module ActiveAdmin
2
- class ResourceController < ::InheritedViews::Base
2
+ class ResourceController < ::InheritedResources::Base
3
3
 
4
4
  # This module deals with the retrieval of collections for resources
5
5
  # within the resource controller.
@@ -28,7 +28,7 @@ module ActiveAdmin
28
28
  # This method should return an ActiveRecord::Relation object so that
29
29
  # the searching and filtering can be applied on top
30
30
  #
31
- # Note, unless you are doing something special, you should use the
31
+ # Note, unless you are doing something special, you should use the
32
32
  # scope_to method from the Scoping module instead of overriding this
33
33
  # method.
34
34
  def scoped_collection
@@ -83,26 +83,20 @@ module ActiveAdmin
83
83
  protected
84
84
 
85
85
  def active_admin_collection
86
- scope_collection(super)
86
+ scope_current_collection(super)
87
87
  end
88
88
 
89
- def scope_collection(chain)
89
+ def scope_current_collection(chain)
90
90
  if current_scope
91
91
  @before_scope_collection = chain
92
-
93
- # ActiveRecord::Base isn't a relation, so let's help you out
94
- return chain if current_scope.scope_method == :all
95
-
96
- if current_scope.scope_method
97
- chain.send(current_scope.scope_method)
98
- else
99
- instance_exec chain, &current_scope.scope_block
100
- end
92
+ scope_chain(current_scope, chain)
101
93
  else
102
94
  chain
103
95
  end
104
96
  end
105
97
 
98
+ include ActiveAdmin::ScopeChain
99
+
106
100
  def current_scope
107
101
  @current_scope ||= if params[:scope]
108
102
  active_admin_config.get_scope_by_id(params[:scope]) if params[:scope]
@@ -126,7 +120,7 @@ module ActiveAdmin
126
120
  end
127
121
 
128
122
  def paginate(chain)
129
- chain.paginate(:page => params[:page], :per_page => @per_page || ActiveAdmin.default_per_page)
123
+ chain.page(params[:page]).per(@per_page || active_admin_application.default_per_page)
130
124
  end
131
125
  end
132
126
 
@@ -141,3 +135,4 @@ module ActiveAdmin
141
135
  end
142
136
  end
143
137
  end
138
+
@@ -1,5 +1,5 @@
1
1
  module ActiveAdmin
2
- class ResourceController < ::InheritedViews::Base
2
+ class ResourceController < ::InheritedResources::Base
3
3
 
4
4
  module Filters
5
5
  extend ActiveSupport::Concern
@@ -1,5 +1,5 @@
1
1
  module ActiveAdmin
2
- class ResourceController < ::InheritedViews::Base
2
+ class ResourceController < ::InheritedResources::Base
3
3
  module Form
4
4
  extend ActiveSupport::Concern
5
5
 
@@ -1,5 +1,5 @@
1
1
  module ActiveAdmin
2
- class ResourceController < ::InheritedViews::Base
2
+ class ResourceController < ::InheritedResources::Base
3
3
  module Menu
4
4
  extend ActiveSupport::Concern
5
5
 
@@ -1,6 +1,6 @@
1
1
  module ActiveAdmin
2
- class ResourceController < ::InheritedViews::Base
3
-
2
+ class ResourceController < ::InheritedResources::Base
3
+
4
4
  module PageConfigurations
5
5
  extend ActiveSupport::Concern
6
6
 
@@ -1,5 +1,5 @@
1
1
  module ActiveAdmin
2
- class ResourceController < ::InheritedViews::Base
2
+ class ResourceController < ::InheritedResources::Base
3
3
 
4
4
  # This module deals with scoping entire controllers to a relation
5
5
  module Scoping
@@ -1,27 +1,7 @@
1
1
  module ActiveAdmin
2
- class ResourceController < ::InheritedViews::Base
2
+ class ResourceController < ::InheritedResources::Base
3
3
 
4
4
  module Sidebars
5
- extend ActiveSupport::Concern
6
-
7
- included do
8
- self.class_inheritable_accessor :sidebar_sections
9
- self.sidebar_sections = []
10
- end
11
-
12
- module ClassMethods
13
- def sidebar(name, options = {}, &block)
14
- self.sidebar_sections << ActiveAdmin::Sidebar::Section.new(name, options, &block)
15
- end
16
-
17
- def clear_sidebar_sections!
18
- self.sidebar_sections = []
19
- end
20
-
21
- def sidebar_sections_for(action)
22
- sidebar_sections.select{|section| section.display_on?(action) }
23
- end
24
- end
25
5
 
26
6
  protected
27
7
 
@@ -0,0 +1,85 @@
1
+ module ActiveAdmin
2
+ class Router
3
+
4
+ def initialize(application)
5
+ @application = application
6
+ end
7
+
8
+ # Creates all the necessary routes for the ActiveAdmin configurations
9
+ #
10
+ # Use this within the routes.rb file:
11
+ #
12
+ # Application.routes.draw do |map|
13
+ # ActiveAdmin.routes(self)
14
+ # end
15
+ #
16
+ def apply(router)
17
+ # Define any necessary dashboard routes
18
+ router.instance_exec(@application.namespaces.values) do |namespaces|
19
+ namespaces.each do |namespace|
20
+ if namespace.root?
21
+ match '/' => 'dashboard#index', :as => 'dashboard'
22
+ else
23
+ name = namespace.name
24
+ match name.to_s => "#{name}/dashboard#index", :as => "#{name.to_s}_dashboard"
25
+ end
26
+ end
27
+ end
28
+
29
+ # Now define the routes for each resource
30
+ router.instance_exec(@application.namespaces) do |namespaces|
31
+ resources = namespaces.values.collect{|n| n.resources.values }.flatten
32
+ resources.each do |config|
33
+
34
+ # Define the block the will get eval'd within the namespace
35
+ route_definition_block = Proc.new do
36
+ resources config.underscored_resource_name.pluralize do
37
+
38
+ # Define any member actions
39
+ member do
40
+ config.member_actions.each do |action|
41
+ # eg: get :comment
42
+ send(action.http_verb, action.name)
43
+ end
44
+ end
45
+
46
+ # Define any collection actions
47
+ collection do
48
+ config.collection_actions.each do |action|
49
+ send(action.http_verb, action.name)
50
+ end
51
+ end
52
+ end
53
+ end
54
+
55
+ # Add in the parent if it exists
56
+ if config.belongs_to?
57
+ routes_for_belongs_to = route_definition_block.dup
58
+ route_definition_block = Proc.new do
59
+ # If its optional, make the normal resource routes
60
+ instance_eval &routes_for_belongs_to if config.belongs_to_config.optional?
61
+
62
+ # Make the nested belongs_to routes
63
+ resources config.belongs_to_config.target.underscored_resource_name.pluralize do
64
+ instance_eval &routes_for_belongs_to
65
+ end
66
+ end
67
+ end
68
+
69
+ # Add on the namespace if required
70
+ if !config.namespace.root?
71
+ routes_in_namespace = route_definition_block.dup
72
+ route_definition_block = Proc.new do
73
+ namespace config.namespace.name do
74
+ instance_eval(&routes_in_namespace)
75
+ end
76
+ end
77
+ end
78
+
79
+ instance_eval &route_definition_block
80
+ end
81
+ end
82
+ end
83
+
84
+ end
85
+ end