activeadmin 0.6.6 → 1.0.0.pre1

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 (512) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +11 -8
  3. data/.hound.yml +11 -0
  4. data/.travis.yml +36 -10
  5. data/.yardopts +2 -1
  6. data/CHANGELOG.md +118 -67
  7. data/CONTRIBUTING.md +96 -73
  8. data/Gemfile +35 -35
  9. data/Guardfile +1 -0
  10. data/LICENSE +1 -1
  11. data/README.md +98 -0
  12. data/Rakefile +12 -4
  13. data/activeadmin.gemspec +21 -24
  14. data/app/assets/javascripts/active_admin/application.js.coffee +32 -0
  15. data/app/assets/javascripts/active_admin/base.js.coffee +14 -0
  16. data/app/assets/javascripts/active_admin/ext/jquery-ui.js.coffee +6 -0
  17. data/app/assets/javascripts/active_admin/ext/jquery.js.coffee +7 -0
  18. data/app/assets/javascripts/active_admin/lib/batch_actions.js.coffee +39 -0
  19. data/app/assets/javascripts/active_admin/{components/jquery.aa.checkbox-toggler.js.coffee → lib/checkbox-toggler.js.coffee} +3 -4
  20. data/app/assets/javascripts/active_admin/lib/dropdown-menu.js.coffee +101 -0
  21. data/app/assets/javascripts/active_admin/lib/flash.js.coffee +19 -0
  22. data/app/assets/javascripts/active_admin/lib/has_many.js.coffee +79 -0
  23. data/app/assets/javascripts/active_admin/lib/modal_dialog.js.coffee +37 -0
  24. data/app/assets/javascripts/active_admin/lib/per_page.js.coffee +27 -0
  25. data/app/assets/javascripts/active_admin/lib/popover.js.coffee +68 -0
  26. data/app/assets/javascripts/active_admin/{components/jquery.aa.table-checkbox-toggler.js.coffee → lib/table-checkbox-toggler.js.coffee} +2 -3
  27. data/app/assets/stylesheets/active_admin/{_base.css.scss → _base.scss} +3 -0
  28. data/app/assets/stylesheets/active_admin/{_forms.css.scss → _forms.scss} +61 -17
  29. data/app/assets/stylesheets/active_admin/{_header.css.scss → _header.scss} +9 -5
  30. data/app/assets/stylesheets/active_admin/{_mixins.css.scss → _mixins.scss} +0 -0
  31. data/app/assets/stylesheets/active_admin/{_typography.css.scss → _typography.scss} +0 -0
  32. data/app/assets/stylesheets/active_admin/components/_batch_actions.scss +11 -0
  33. data/app/assets/stylesheets/active_admin/components/_blank_slates.scss +0 -1
  34. data/app/assets/stylesheets/active_admin/components/_buttons.scss +1 -1
  35. data/app/assets/stylesheets/active_admin/components/{_comments.css.scss → _comments.scss} +0 -0
  36. data/app/assets/stylesheets/active_admin/components/{_date_picker.css.scss → _date_picker.scss} +40 -14
  37. data/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +5 -4
  38. data/app/assets/stylesheets/active_admin/components/_flash_messages.scss +37 -0
  39. data/app/assets/stylesheets/active_admin/components/_modal_dialog.scss +34 -0
  40. data/app/assets/stylesheets/active_admin/components/_pagination.scss +10 -0
  41. data/app/assets/stylesheets/active_admin/components/{_popovers.css.scss → _popovers.scss} +2 -3
  42. data/app/assets/stylesheets/active_admin/components/_status_tags.scss +4 -0
  43. data/app/assets/stylesheets/active_admin/components/_table_tools.scss +67 -0
  44. data/app/assets/stylesheets/active_admin/components/{_tables.css.scss → _tables.scss} +4 -2
  45. data/app/assets/stylesheets/active_admin/components/_tabs.scss +65 -0
  46. data/app/assets/stylesheets/active_admin/components/_unsupported_browser.scss +16 -0
  47. data/app/assets/stylesheets/active_admin/mixins/{_all.css.scss → _all.scss} +0 -0
  48. data/app/assets/stylesheets/active_admin/mixins/{_buttons.css.scss → _buttons.scss} +0 -1
  49. data/app/assets/stylesheets/active_admin/mixins/_gradients.scss +28 -0
  50. data/app/assets/stylesheets/active_admin/mixins/{_icons.css.scss → _icons.scss} +1 -2
  51. data/app/assets/stylesheets/active_admin/mixins/{_reset.css.scss → _reset.scss} +0 -0
  52. data/app/assets/stylesheets/active_admin/mixins/_rounded.scss +22 -0
  53. data/app/assets/stylesheets/active_admin/mixins/{_sections.css.scss → _sections.scss} +8 -2
  54. data/app/assets/stylesheets/active_admin/mixins/{_shadows.css.scss → _shadows.scss} +0 -7
  55. data/app/assets/stylesheets/active_admin/mixins/_utilities.scss +0 -9
  56. data/app/assets/stylesheets/active_admin/mixins/{_variables.css.scss → _variables.scss} +10 -8
  57. data/app/assets/stylesheets/active_admin/{print.css.scss → print.scss} +4 -0
  58. data/app/assets/stylesheets/active_admin/structure/_main_structure.scss +5 -2
  59. data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +11 -9
  60. data/app/views/active_admin/devise/confirmations/new.html.erb +15 -0
  61. data/app/views/active_admin/devise/mailer/reset_password_instructions.html.erb +1 -1
  62. data/app/views/active_admin/devise/mailer/unlock_instructions.html.erb +1 -1
  63. data/app/views/active_admin/devise/passwords/edit.html.erb +9 -10
  64. data/app/views/active_admin/devise/passwords/new.html.erb +5 -4
  65. data/app/views/active_admin/devise/registrations/new.html.erb +22 -0
  66. data/app/views/active_admin/devise/sessions/new.html.erb +9 -7
  67. data/app/views/active_admin/devise/shared/_links.erb +1 -1
  68. data/app/views/active_admin/devise/unlocks/new.html.erb +5 -4
  69. data/app/views/layouts/active_admin_logged_out.html.erb +3 -5
  70. data/config/locales/ar.yml +120 -0
  71. data/config/locales/bg.yml +26 -6
  72. data/config/locales/bs.yml +122 -0
  73. data/config/locales/ca.yml +10 -1
  74. data/config/locales/cs.yml +7 -2
  75. data/config/locales/da.yml +7 -3
  76. data/config/locales/de-CH.yml +14 -31
  77. data/config/locales/de.yml +33 -33
  78. data/config/locales/el.yml +28 -2
  79. data/config/locales/en-GB.yml +12 -4
  80. data/config/locales/en.yml +29 -3
  81. data/config/locales/{es_MX.yml → es-MX.yml} +9 -24
  82. data/config/locales/es.yml +32 -25
  83. data/config/locales/fa.yml +120 -0
  84. data/config/locales/fi.yml +113 -0
  85. data/config/locales/fr.yml +21 -11
  86. data/config/locales/he.yml +7 -3
  87. data/config/locales/hr.yml +42 -11
  88. data/config/locales/hu.yml +10 -3
  89. data/config/locales/it.yml +31 -3
  90. data/config/locales/ja.yml +8 -3
  91. data/config/locales/ko.yml +7 -1
  92. data/config/locales/lt.yml +42 -11
  93. data/config/locales/lv.yml +7 -3
  94. data/config/locales/{no-NB.yml → nb.yml} +46 -15
  95. data/config/locales/nl.yml +36 -5
  96. data/config/locales/pl.yml +13 -8
  97. data/config/locales/pt-BR.yml +37 -5
  98. data/config/locales/pt-PT.yml +8 -4
  99. data/config/locales/ro.yml +7 -3
  100. data/config/locales/ru.yml +26 -5
  101. data/config/locales/sv-SE.yml +9 -5
  102. data/config/locales/tr.yml +10 -3
  103. data/config/locales/uk.yml +36 -12
  104. data/config/locales/vi.yml +7 -3
  105. data/config/locales/zh-CN.yml +26 -10
  106. data/config/locales/zh-TW.yml +19 -13
  107. data/docs/0-installation.md +65 -29
  108. data/docs/1-general-configuration.md +92 -81
  109. data/docs/10-custom-pages.md +68 -68
  110. data/docs/11-decorators.md +48 -59
  111. data/docs/12-arbre-components.md +80 -74
  112. data/docs/13-authorization-adapter.md +128 -107
  113. data/docs/14-gotchas.md +92 -0
  114. data/docs/2-resource-customization.md +293 -178
  115. data/docs/3-index-pages.md +160 -86
  116. data/docs/3-index-pages/custom-index.md +31 -0
  117. data/docs/3-index-pages/index-as-block.md +14 -9
  118. data/docs/3-index-pages/index-as-blog.md +41 -31
  119. data/docs/3-index-pages/index-as-grid.md +16 -8
  120. data/docs/3-index-pages/index-as-table.md +129 -52
  121. data/docs/4-csv-format.md +31 -24
  122. data/docs/5-forms.md +133 -56
  123. data/docs/6-show-pages.md +89 -27
  124. data/docs/7-sidebars.md +48 -27
  125. data/docs/8-custom-actions.md +98 -77
  126. data/docs/9-batch-actions.md +210 -146
  127. data/docs/README.md +24 -0
  128. data/features/action_item.feature +3 -3
  129. data/features/authorization_pundit.feature +37 -0
  130. data/features/breadcrumb.feature +48 -0
  131. data/features/comments/commenting.feature +56 -13
  132. data/features/development_reloading.feature +17 -30
  133. data/features/edit_page.feature +12 -1
  134. data/features/favicon.feature +3 -3
  135. data/features/i18n.feature +5 -4
  136. data/features/index/batch_actions.feature +41 -0
  137. data/features/index/filters.feature +67 -0
  138. data/features/index/format_as_csv.feature +90 -4
  139. data/features/index/formats.feature +27 -0
  140. data/features/index/index_as_blog.feature +4 -4
  141. data/features/index/index_as_table.feature +102 -6
  142. data/features/index/index_blank_slate.feature +22 -0
  143. data/features/index/index_scope_to.feature +16 -16
  144. data/features/index/page_title.feature +11 -0
  145. data/features/index/pagination.feature +1 -1
  146. data/features/index/switch_index_view.feature +14 -14
  147. data/features/new_page.feature +13 -2
  148. data/features/registering_pages.feature +1 -1
  149. data/features/renamed_resource.feature +32 -0
  150. data/features/show/page_title.feature +11 -0
  151. data/features/show/tabs.feature +27 -0
  152. data/features/sidebar_sections.feature +12 -0
  153. data/features/site_title.feature +2 -2
  154. data/features/specifying_actions.feature +3 -3
  155. data/features/step_definitions/action_item_steps.rb +2 -2
  156. data/features/step_definitions/action_link_steps.rb +14 -1
  157. data/features/step_definitions/additional_web_steps.rb +19 -20
  158. data/features/step_definitions/asset_steps.rb +3 -3
  159. data/features/step_definitions/attribute_steps.rb +8 -3
  160. data/features/step_definitions/batch_action_steps.rb +26 -9
  161. data/features/step_definitions/blog_steps.rb +3 -0
  162. data/features/step_definitions/breadcrumb_steps.rb +1 -1
  163. data/features/step_definitions/comment_steps.rb +1 -1
  164. data/features/step_definitions/configuration_steps.rb +9 -2
  165. data/features/step_definitions/dashboard_steps.rb +2 -2
  166. data/features/step_definitions/factory_steps.rb +9 -8
  167. data/features/step_definitions/filter_steps.rb +25 -3
  168. data/features/step_definitions/flash_steps.rb +3 -3
  169. data/features/step_definitions/format_steps.rb +18 -18
  170. data/features/step_definitions/index_scope_steps.rb +5 -5
  171. data/features/step_definitions/layout_steps.rb +1 -1
  172. data/features/step_definitions/member_link_steps.rb +2 -2
  173. data/features/step_definitions/menu_steps.rb +3 -3
  174. data/features/step_definitions/pagination_steps.rb +2 -3
  175. data/features/step_definitions/sidebar_steps.rb +8 -3
  176. data/features/step_definitions/site_title_steps.rb +6 -4
  177. data/features/step_definitions/symbol_leak_steps.rb +3 -0
  178. data/features/step_definitions/tab_steps.rb +5 -0
  179. data/features/step_definitions/table_steps.rb +4 -4
  180. data/features/step_definitions/user_steps.rb +10 -7
  181. data/features/step_definitions/web_steps.rb +14 -11
  182. data/features/sti_resource.feature +6 -2
  183. data/features/strong_parameters.feature +73 -0
  184. data/features/support/env.rb +34 -9
  185. data/features/support/paths.rb +14 -6
  186. data/features/support/selectors.rb +1 -1
  187. data/features/symbol_leak.feature +35 -0
  188. data/features/users/resetting_password.feature +5 -6
  189. data/lib/active_admin.rb +26 -25
  190. data/lib/active_admin/abstract_view_factory.rb +7 -17
  191. data/lib/active_admin/application.rb +72 -59
  192. data/lib/active_admin/asset_registration.rb +2 -2
  193. data/lib/active_admin/authorization_adapter.rb +2 -2
  194. data/lib/active_admin/base_controller.rb +2 -3
  195. data/lib/active_admin/base_controller/authorization.rb +13 -31
  196. data/lib/active_admin/batch_actions.rb +1 -1
  197. data/lib/active_admin/batch_actions/controller.rb +24 -8
  198. data/lib/active_admin/batch_actions/resource_extension.rb +47 -18
  199. data/lib/active_admin/batch_actions/views/batch_action_form.rb +7 -4
  200. data/lib/active_admin/batch_actions/views/batch_action_popover.rb +3 -3
  201. data/lib/active_admin/batch_actions/views/batch_action_selector.rb +8 -17
  202. data/lib/active_admin/batch_actions/views/selection_cells.rb +4 -4
  203. data/lib/active_admin/callbacks.rb +25 -24
  204. data/lib/active_admin/cancan_adapter.rb +7 -11
  205. data/lib/active_admin/csv_builder.rb +92 -15
  206. data/lib/active_admin/dependency.rb +93 -0
  207. data/lib/active_admin/deprecation.rb +6 -7
  208. data/lib/active_admin/devise.rb +28 -18
  209. data/lib/active_admin/dsl.rb +18 -11
  210. data/lib/active_admin/engine.rb +10 -8
  211. data/lib/active_admin/error.rb +62 -0
  212. data/lib/active_admin/filters/dsl.rb +2 -2
  213. data/lib/active_admin/filters/forms.rb +17 -27
  214. data/lib/active_admin/filters/formtastic_addons.rb +49 -15
  215. data/lib/active_admin/filters/resource_extension.rb +43 -34
  216. data/lib/active_admin/form_builder.rb +93 -154
  217. data/lib/active_admin/helpers/collection.rb +7 -13
  218. data/lib/active_admin/helpers/i18n.rb +7 -0
  219. data/lib/active_admin/helpers/optional_display.rb +5 -5
  220. data/lib/active_admin/helpers/routes/url_helpers.rb +15 -0
  221. data/lib/active_admin/helpers/scope_chain.rb +1 -1
  222. data/lib/active_admin/helpers/settings.rb +16 -9
  223. data/lib/active_admin/iconic.rb +17 -15
  224. data/lib/active_admin/iconic/icons.rb +136 -136
  225. data/lib/active_admin/inputs.rb +11 -7
  226. data/lib/active_admin/inputs/datepicker_input.rb +12 -3
  227. data/lib/active_admin/inputs/filters/base.rb +42 -0
  228. data/lib/active_admin/inputs/filters/base/search_method_select.rb +75 -0
  229. data/lib/active_admin/inputs/filters/boolean_input.rb +24 -0
  230. data/lib/active_admin/inputs/filters/check_boxes_input.rb +50 -0
  231. data/lib/active_admin/inputs/filters/date_range_input.rb +36 -0
  232. data/lib/active_admin/inputs/filters/numeric_input.rb +12 -0
  233. data/lib/active_admin/inputs/filters/select_input.rb +54 -0
  234. data/lib/active_admin/inputs/filters/string_input.rb +26 -0
  235. data/lib/active_admin/menu.rb +6 -4
  236. data/lib/active_admin/menu_collection.rb +1 -4
  237. data/lib/active_admin/namespace.rb +55 -29
  238. data/lib/active_admin/order_clause.rb +26 -0
  239. data/lib/active_admin/orm/active_record.rb +5 -0
  240. data/lib/active_admin/orm/active_record/comments.rb +81 -0
  241. data/lib/active_admin/orm/active_record/comments/comment.rb +45 -0
  242. data/lib/active_admin/{comments → orm/active_record/comments}/namespace_helper.rb +2 -2
  243. data/lib/active_admin/{comments → orm/active_record/comments}/resource_helper.rb +1 -1
  244. data/lib/active_admin/{comments → orm/active_record/comments}/show_page_helper.rb +0 -0
  245. data/lib/active_admin/orm/active_record/comments/views.rb +2 -0
  246. data/lib/active_admin/{comments → orm/active_record/comments}/views/active_admin_comments.rb +16 -14
  247. data/lib/active_admin/orm/mongoid.rb +1 -0
  248. data/lib/active_admin/orm/mongoid/.gitkeep +0 -0
  249. data/lib/active_admin/page.rb +7 -3
  250. data/lib/active_admin/page_dsl.rb +1 -1
  251. data/lib/active_admin/page_presenter.rb +2 -2
  252. data/lib/active_admin/pundit_adapter.rb +68 -0
  253. data/lib/active_admin/resource.rb +16 -17
  254. data/lib/active_admin/resource/action_items.rb +23 -18
  255. data/lib/active_admin/resource/belongs_to.rb +7 -3
  256. data/lib/active_admin/resource/controllers.rb +1 -0
  257. data/lib/active_admin/resource/includes.rb +12 -0
  258. data/lib/active_admin/resource/menu.rb +5 -5
  259. data/lib/active_admin/resource/naming.rb +27 -43
  260. data/lib/active_admin/resource/page_presenters.rb +1 -1
  261. data/lib/active_admin/resource/routes.rb +27 -11
  262. data/lib/active_admin/resource/scope_to.rb +7 -7
  263. data/lib/active_admin/resource/sidebars.rb +1 -0
  264. data/lib/active_admin/resource_controller.rb +6 -7
  265. data/lib/active_admin/resource_controller/data_access.rb +101 -93
  266. data/lib/active_admin/resource_controller/decorators.rb +91 -9
  267. data/lib/active_admin/resource_controller/streaming.rb +37 -0
  268. data/lib/active_admin/resource_dsl.rb +53 -10
  269. data/lib/active_admin/router.rb +7 -7
  270. data/lib/active_admin/scope.rb +6 -6
  271. data/lib/active_admin/sidebar_section.rb +10 -2
  272. data/lib/active_admin/version.rb +1 -1
  273. data/lib/active_admin/view_factory.rb +17 -17
  274. data/lib/active_admin/view_helpers.rb +0 -1
  275. data/lib/active_admin/view_helpers/auto_link_helper.rb +23 -12
  276. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +4 -3
  277. data/lib/active_admin/view_helpers/display_helper.rb +30 -15
  278. data/lib/active_admin/view_helpers/download_format_links_helper.rb +21 -25
  279. data/lib/active_admin/view_helpers/fields_for.rb +4 -4
  280. data/lib/active_admin/view_helpers/flash_helper.rb +4 -3
  281. data/lib/active_admin/view_helpers/form_helper.rb +5 -9
  282. data/lib/active_admin/view_helpers/method_or_proc_helper.rb +6 -6
  283. data/lib/active_admin/views/action_items.rb +2 -2
  284. data/lib/active_admin/views/components/action_list_popover.rb +1 -1
  285. data/lib/active_admin/views/components/active_admin_form.rb +123 -0
  286. data/lib/active_admin/views/components/attributes_table.rb +63 -21
  287. data/lib/active_admin/views/components/blank_slate.rb +1 -1
  288. data/lib/active_admin/views/components/columns.rb +13 -7
  289. data/lib/active_admin/views/components/dropdown_menu.rb +6 -6
  290. data/lib/active_admin/views/components/index_list.rb +7 -7
  291. data/lib/active_admin/views/components/paginated_collection.rb +38 -20
  292. data/lib/active_admin/views/components/panel.rb +8 -2
  293. data/lib/active_admin/views/components/popover.rb +1 -1
  294. data/lib/active_admin/views/components/scopes.rb +5 -4
  295. data/lib/active_admin/views/components/sidebar_section.rb +3 -2
  296. data/lib/active_admin/views/components/site_title.rb +2 -2
  297. data/lib/active_admin/views/components/status_tag.rb +34 -11
  298. data/lib/active_admin/views/components/table_for.rb +90 -45
  299. data/lib/active_admin/views/components/tabs.rb +28 -0
  300. data/lib/active_admin/views/components/unsupported_browser.rb +11 -0
  301. data/lib/active_admin/views/footer.rb +3 -3
  302. data/lib/active_admin/views/header.rb +3 -3
  303. data/lib/active_admin/views/index_as_block.rb +10 -10
  304. data/lib/active_admin/views/index_as_blog.rb +45 -39
  305. data/lib/active_admin/views/index_as_grid.rb +14 -10
  306. data/lib/active_admin/views/index_as_table.rb +242 -129
  307. data/lib/active_admin/views/pages/base.rb +22 -18
  308. data/lib/active_admin/views/pages/form.rb +21 -11
  309. data/lib/active_admin/views/pages/index.rb +40 -35
  310. data/lib/active_admin/views/pages/layout.rb +1 -1
  311. data/lib/active_admin/views/pages/show.rb +4 -4
  312. data/lib/active_admin/views/tabbed_navigation.rb +7 -3
  313. data/lib/active_admin/views/title_bar.rb +10 -8
  314. data/lib/generators/active_admin/assets/assets_generator.rb +3 -28
  315. data/lib/generators/active_admin/assets/templates/{3.1/active_admin.css.scss → active_admin.css.scss} +0 -0
  316. data/lib/generators/active_admin/assets/templates/active_admin.js.coffee +1 -0
  317. data/lib/generators/active_admin/devise/devise_generator.rb +24 -26
  318. data/lib/generators/active_admin/install/install_generator.rb +8 -9
  319. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +28 -26
  320. data/lib/generators/active_admin/install/templates/admin_user.rb.erb +12 -2
  321. data/lib/generators/active_admin/install/templates/dashboard.rb +4 -4
  322. data/lib/generators/active_admin/install/templates/migrations/create_active_admin_comments.rb +3 -3
  323. data/lib/generators/active_admin/page/USAGE +8 -0
  324. data/lib/generators/active_admin/page/page_generator.rb +12 -0
  325. data/lib/generators/active_admin/page/templates/page.rb +5 -0
  326. data/lib/generators/active_admin/resource/resource_generator.rb +3 -5
  327. data/lib/generators/active_admin/resource/templates/admin.rb +15 -0
  328. data/lib/ransack_ext.rb +12 -0
  329. data/script/local +2 -2
  330. data/script/travis_cache +107 -0
  331. data/spec/javascripts/coffeescripts/jquery.aa.flash.js.coffee +25 -0
  332. data/spec/javascripts/fixtures/flashes.html +2 -0
  333. data/spec/rails_helper.rb +154 -0
  334. data/spec/{integration → requests}/default_namespace_spec.rb +6 -6
  335. data/spec/{integration → requests}/javascript_spec.rb +5 -5
  336. data/spec/requests/memory_spec.rb +23 -0
  337. data/spec/requests/stylesheets_spec.rb +18 -0
  338. data/spec/spec_helper.rb +12 -173
  339. data/spec/support/detect_rails_version.rb +9 -17
  340. data/spec/support/rails_template.rb +64 -35
  341. data/spec/support/rails_template_with_data.rb +14 -14
  342. data/spec/support/templates/admin/stores.rb +5 -1
  343. data/spec/support/templates/policies/active_admin/comment_policy.rb +9 -0
  344. data/spec/support/templates/policies/active_admin/page_policy.rb +18 -0
  345. data/spec/support/templates/policies/admin_user_policy.rb +11 -0
  346. data/spec/support/templates/policies/application_policy.rb +45 -0
  347. data/spec/support/templates/policies/category_policy.rb +7 -0
  348. data/spec/support/templates/policies/post_policy.rb +15 -0
  349. data/spec/support/templates/policies/store_policy.rb +11 -0
  350. data/spec/support/templates/policies/user_policy.rb +11 -0
  351. data/spec/support/templates/post_decorator.rb +4 -46
  352. data/spec/unit/abstract_view_factory_spec.rb +16 -16
  353. data/spec/unit/action_builder_spec.rb +24 -18
  354. data/spec/unit/active_admin_spec.rb +2 -2
  355. data/spec/unit/application_spec.rb +33 -34
  356. data/spec/unit/asset_registration_spec.rb +25 -29
  357. data/spec/unit/authorization/authorization_adapter_spec.rb +10 -10
  358. data/spec/unit/authorization/controller_authorization_spec.rb +11 -11
  359. data/spec/unit/authorization/index_overriding_spec.rb +22 -0
  360. data/spec/unit/auto_link_spec.rb +43 -13
  361. data/spec/unit/batch_actions/resource_spec.rb +15 -14
  362. data/spec/unit/batch_actions/settings_spec.rb +18 -18
  363. data/spec/unit/belongs_to_spec.rb +28 -19
  364. data/spec/unit/cancan_adapter_spec.rb +8 -8
  365. data/spec/unit/comments_spec.rb +99 -39
  366. data/spec/unit/component_spec.rb +3 -3
  367. data/spec/unit/config_shared_examples.rb +10 -10
  368. data/spec/unit/controller_filters_spec.rb +23 -16
  369. data/spec/unit/csv_builder_spec.rb +165 -24
  370. data/spec/unit/dependency_spec.rb +135 -0
  371. data/spec/unit/devise_spec.rb +17 -37
  372. data/spec/unit/dsl_spec.rb +70 -9
  373. data/spec/unit/event_spec.rb +11 -11
  374. data/spec/unit/filters/filter_form_builder_spec.rb +207 -148
  375. data/spec/unit/filters/resource_spec.rb +60 -26
  376. data/spec/unit/form_builder_spec.rb +419 -145
  377. data/spec/unit/generators/install_spec.rb +23 -0
  378. data/spec/unit/helpers/collection_spec.rb +18 -18
  379. data/spec/unit/helpers/scope_chain_spec.rb +6 -6
  380. data/spec/unit/helpers/settings_spec.rb +4 -4
  381. data/spec/unit/i18n_spec.rb +12 -0
  382. data/spec/unit/menu_collection_spec.rb +14 -14
  383. data/spec/unit/menu_item_spec.rb +42 -42
  384. data/spec/unit/menu_spec.rb +20 -20
  385. data/spec/unit/namespace/authorization_spec.rb +8 -8
  386. data/spec/unit/namespace/register_page_spec.rb +11 -11
  387. data/spec/unit/namespace/register_resource_spec.rb +28 -30
  388. data/spec/unit/namespace_spec.rb +20 -20
  389. data/spec/unit/order_clause_spec.rb +81 -0
  390. data/spec/unit/page_controller_spec.rb +1 -1
  391. data/spec/unit/page_spec.rb +18 -12
  392. data/spec/unit/pretty_format_spec.rb +42 -14
  393. data/spec/unit/pundit_adapter_spec.rb +98 -0
  394. data/spec/unit/resource/action_items_spec.rb +15 -12
  395. data/spec/unit/resource/includes_spec.rb +21 -0
  396. data/spec/unit/resource/menu_spec.rb +1 -1
  397. data/spec/unit/resource/naming_spec.rb +35 -21
  398. data/spec/unit/resource/page_presenters_spec.rb +8 -8
  399. data/spec/unit/resource/pagination_spec.rb +6 -6
  400. data/spec/unit/resource/routes_spec.rb +10 -10
  401. data/spec/unit/resource/scopes_spec.rb +14 -7
  402. data/spec/unit/resource/sidebars_spec.rb +6 -6
  403. data/spec/unit/resource_collection_spec.rb +31 -38
  404. data/spec/unit/resource_controller/data_access_spec.rb +96 -30
  405. data/spec/unit/resource_controller/decorators_spec.rb +83 -0
  406. data/spec/unit/resource_controller/sidebars_spec.rb +7 -8
  407. data/spec/unit/resource_controller_spec.rb +73 -70
  408. data/spec/unit/resource_registration_spec.rb +12 -12
  409. data/spec/unit/resource_spec.rb +77 -42
  410. data/spec/unit/routing_spec.rb +39 -31
  411. data/spec/unit/scope_spec.rb +112 -30
  412. data/spec/unit/settings_spec.rb +51 -21
  413. data/spec/unit/view_factory_spec.rb +2 -3
  414. data/spec/unit/view_helpers/breadcrumbs_spec.rb +71 -60
  415. data/spec/unit/view_helpers/display_name_spec.rb +49 -21
  416. data/spec/unit/view_helpers/download_format_links_helper_spec.rb +5 -5
  417. data/spec/unit/view_helpers/fields_for_spec.rb +18 -18
  418. data/spec/unit/view_helpers/flash_helper_spec.rb +25 -0
  419. data/spec/unit/view_helpers/form_helper_spec.rb +10 -23
  420. data/spec/unit/view_helpers/method_or_proc_helper_spec.rb +64 -22
  421. data/spec/unit/views/components/action_list_popover_spec.rb +16 -6
  422. data/spec/unit/views/components/attributes_table_spec.rb +171 -30
  423. data/spec/unit/views/components/batch_action_popover_spec.rb +20 -6
  424. data/spec/unit/views/components/blank_slate_spec.rb +14 -4
  425. data/spec/unit/views/components/columns_spec.rb +52 -22
  426. data/spec/unit/views/components/index_list_spec.rb +11 -8
  427. data/spec/unit/views/components/index_table_for_spec.rb +46 -0
  428. data/spec/unit/views/components/paginated_collection_spec.rb +79 -90
  429. data/spec/unit/views/components/panel_spec.rb +32 -21
  430. data/spec/unit/views/components/popover_spec.rb +7 -7
  431. data/spec/unit/views/components/sidebar_section_spec.rb +18 -8
  432. data/spec/unit/views/components/site_title_spec.rb +26 -26
  433. data/spec/unit/views/components/status_tag_spec.rb +178 -38
  434. data/spec/unit/views/components/table_for_spec.rb +237 -35
  435. data/spec/unit/views/components/tabs_spec.rb +39 -0
  436. data/spec/unit/views/components/unsupported_browser_spec.rb +47 -0
  437. data/spec/unit/views/pages/form_spec.rb +17 -10
  438. data/spec/unit/views/pages/index_spec.rb +60 -0
  439. data/spec/unit/views/pages/layout_spec.rb +17 -21
  440. data/spec/unit/views/pages/show_spec.rb +18 -6
  441. data/spec/unit/views/tabbed_navigation_spec.rb +61 -52
  442. data/tasks/docs.rake +9 -11
  443. data/tasks/parallel_tests.rake +8 -2
  444. data/tasks/test.rake +13 -9
  445. data/tasks/yard.rake +7 -4
  446. metadata +219 -163
  447. data/.document +0 -5
  448. data/README.rdoc +0 -88
  449. data/app/assets/images/active_admin/admin_notes_icon.png +0 -0
  450. data/app/assets/images/active_admin/datepicker/datepicker-header-bg.png +0 -0
  451. data/app/assets/images/active_admin/datepicker/datepicker-next-link-icon.png +0 -0
  452. data/app/assets/images/active_admin/datepicker/datepicker-nipple.png +0 -0
  453. data/app/assets/images/active_admin/datepicker/datepicker-prev-link-icon.png +0 -0
  454. data/app/assets/images/active_admin/index_list_icons/block_icon.svg +0 -10
  455. data/app/assets/images/active_admin/index_list_icons/blog_icon.svg +0 -4
  456. data/app/assets/images/active_admin/index_list_icons/grid_icon.svg +0 -13
  457. data/app/assets/images/active_admin/index_list_icons/table_icon.svg +0 -3
  458. data/app/assets/images/active_admin/loading.gif +0 -0
  459. data/app/assets/javascripts/active_admin/application.js +0 -3
  460. data/app/assets/javascripts/active_admin/base.js +0 -5
  461. data/app/assets/javascripts/active_admin/components/jquery.aa.dropdown-menu.js.coffee +0 -105
  462. data/app/assets/javascripts/active_admin/components/jquery.aa.popover.js.coffee +0 -97
  463. data/app/assets/javascripts/active_admin/lib/namespace.js.coffee +0 -4
  464. data/app/assets/javascripts/active_admin/pages/application.js.coffee +0 -21
  465. data/app/assets/javascripts/active_admin/pages/batch_actions.js.coffee +0 -26
  466. data/app/assets/stylesheets/active_admin/components/_batch_actions.css.scss +0 -11
  467. data/app/assets/stylesheets/active_admin/components/_flash_messages.css.scss +0 -41
  468. data/app/assets/stylesheets/active_admin/components/_table_tools.css.scss +0 -95
  469. data/app/assets/stylesheets/active_admin/mixins/_gradients.css.scss +0 -38
  470. data/app/assets/stylesheets/active_admin/mixins/_rounded.css.scss +0 -43
  471. data/app/views/active_admin/dashboard/index.html.arb +0 -1
  472. data/app/views/active_admin/resource/index.csv.erb +0 -23
  473. data/docs/3-index-pages/create-an-index.md +0 -29
  474. data/lib/active_admin/comments.rb +0 -83
  475. data/lib/active_admin/comments/comment.rb +0 -42
  476. data/lib/active_admin/comments/views.rb +0 -2
  477. data/lib/active_admin/dependency_checker.rb +0 -46
  478. data/lib/active_admin/inputs/filter_base.rb +0 -33
  479. data/lib/active_admin/inputs/filter_base/search_method_select.rb +0 -73
  480. data/lib/active_admin/inputs/filter_boolean_input.rb +0 -36
  481. data/lib/active_admin/inputs/filter_check_boxes_input.rb +0 -40
  482. data/lib/active_admin/inputs/filter_date_range_input.rb +0 -34
  483. data/lib/active_admin/inputs/filter_numeric_input.rb +0 -10
  484. data/lib/active_admin/inputs/filter_select_input.rb +0 -49
  485. data/lib/active_admin/inputs/filter_string_input.rb +0 -24
  486. data/lib/active_admin/reloader.rb +0 -130
  487. data/lib/active_admin/resource_controller/actions.rb +0 -81
  488. data/lib/active_admin/sass/active_admin.scss +0 -3
  489. data/lib/active_admin/sass/css_loader.rb +0 -16
  490. data/lib/active_admin/sass/helpers.rb +0 -45
  491. data/lib/active_admin/view_helpers/assigns_with_indifferent_access_helper.rb +0 -7
  492. data/lib/active_admin/views/dashboard_section_renderer.rb +0 -19
  493. data/lib/active_admin/views/pages/dashboard.rb +0 -62
  494. data/lib/generators/active_admin/assets/templates/3.0/active_admin.js +0 -1
  495. data/lib/generators/active_admin/assets/templates/3.1/active_admin.js +0 -1
  496. data/lib/meta_search_ext.rb +0 -10
  497. data/spec/integration/memory_spec.rb +0 -29
  498. data/spec/integration/stylesheets_spec.rb +0 -41
  499. data/spec/javascripts/compiled/jquery.aa.checkbox-toggler-spec.js +0 -60
  500. data/spec/javascripts/compiled/jquery.aa.popover-spec.js +0 -106
  501. data/spec/javascripts/compiled/jquery.aa.table-checkbox-toggler-spec.js +0 -37
  502. data/spec/javascripts/helpers/vendor/jasmine-fixture-0.0.5.js +0 -108
  503. data/spec/javascripts/helpers/vendor/jasmine-jquery.js +0 -288
  504. data/spec/javascripts/helpers/vendor/sinon-1.2.0.js +0 -2915
  505. data/spec/javascripts/support/jquery-ui-1.8.16.custom.min.js +0 -34
  506. data/spec/javascripts/support/jquery.min.js +0 -4
  507. data/spec/spec_helper_without_rails.rb +0 -11
  508. data/spec/unit/generators/install_rails_3_1_spec.rb +0 -16
  509. data/spec/unit/rails_spec.rb +0 -43
  510. data/spec/unit/reloader_spec.rb +0 -124
  511. data/spec/unit/sass/helpers_spec.rb +0 -47
  512. data/tasks/js.rake +0 -32
@@ -5,8 +5,7 @@ module ActiveAdmin
5
5
  class Resource
6
6
  module ActionItems
7
7
 
8
- # Add the default action items to a resource when it's
9
- # initialized
8
+ # Adds the default action items to a resource when it's initialized
10
9
  def initialize(*args)
11
10
  super
12
11
  add_default_action_items
@@ -19,13 +18,18 @@ module ActiveAdmin
19
18
 
20
19
  # Add a new action item to a resource
21
20
  #
21
+ # @param [Symbol] name
22
22
  # @param [Hash] options valid keys include:
23
23
  # :only: A single or array of controller actions to display
24
24
  # this action item on.
25
25
  # :except: A single or array of controller actions not to
26
26
  # display this action item on.
27
- def add_action_item(options = {}, &block)
28
- self.action_items << ActiveAdmin::ActionItem.new(options, &block)
27
+ def add_action_item(name, options = {}, &block)
28
+ self.action_items << ActiveAdmin::ActionItem.new(name, options, &block)
29
+ end
30
+
31
+ def remove_action_item(name)
32
+ self.action_items.delete_if { |item| item.name == name }
29
33
  end
30
34
 
31
35
  # Returns a set of action items to display for a specific controller action
@@ -34,7 +38,7 @@ module ActiveAdmin
34
38
  #
35
39
  # @return [Array] Array of ActionItems for the controller actions
36
40
  def action_items_for(action, render_context = nil)
37
- action_items.select{|item| item.display_on?(action, render_context) }
41
+ action_items.select{ |item| item.display_on? action, render_context }
38
42
  end
39
43
 
40
44
  # Clears all the existing action items for this resource
@@ -51,26 +55,25 @@ module ActiveAdmin
51
55
 
52
56
  # Adds the default action items to each resource
53
57
  def add_default_action_items
54
- # New Link on all actions except :new and :show
55
- add_action_item :except => [:new, :show] do
58
+ # New link on index
59
+ add_action_item :new, only: :index do
56
60
  if controller.action_methods.include?('new') && authorized?(ActiveAdmin::Auth::CREATE, active_admin_config.resource_class)
57
- link_to(I18n.t('active_admin.new_model', :model => active_admin_config.resource_label), new_resource_path)
61
+ link_to I18n.t('active_admin.new_model', model: active_admin_config.resource_label), new_resource_path
58
62
  end
59
63
  end
60
64
 
61
65
  # Edit link on show
62
- add_action_item :only => :show do
66
+ add_action_item :edit, only: :show do
63
67
  if controller.action_methods.include?('edit') && authorized?(ActiveAdmin::Auth::UPDATE, resource)
64
- link_to(I18n.t('active_admin.edit_model', :model => active_admin_config.resource_label), edit_resource_path(resource))
68
+ link_to I18n.t('active_admin.edit_model', model: active_admin_config.resource_label), edit_resource_path(resource)
65
69
  end
66
70
  end
67
71
 
68
72
  # Destroy link on show
69
- add_action_item :only => :show do
70
- if controller.action_methods.include?("destroy") && authorized?(ActiveAdmin::Auth::DESTROY, resource)
71
- link_to(I18n.t('active_admin.delete_model', :model => active_admin_config.resource_label),
72
- resource_path(resource),
73
- :method => :delete, 'data-confirm' => I18n.t('active_admin.delete_confirmation'))
73
+ add_action_item :destroy, only: :show do
74
+ if controller.action_methods.include?('destroy') && authorized?(ActiveAdmin::Auth::DESTROY, resource)
75
+ link_to I18n.t('active_admin.delete_model', model: active_admin_config.resource_label), resource_path(resource),
76
+ method: :delete, data: {confirm: I18n.t('active_admin.delete_confirmation')}
74
77
  end
75
78
  end
76
79
  end
@@ -82,10 +85,12 @@ module ActiveAdmin
82
85
  class ActionItem
83
86
  include ActiveAdmin::OptionalDisplay
84
87
 
85
- attr_accessor :block
88
+ attr_accessor :block, :name
86
89
 
87
- def initialize(options = {}, &block)
88
- @options, @block = options, block
90
+ def initialize(name, options = {}, &block)
91
+ @name = name
92
+ @options = options
93
+ @block = block
89
94
  normalize_display_options!
90
95
  end
91
96
  end
@@ -4,7 +4,12 @@ module ActiveAdmin
4
4
  class Resource
5
5
  class BelongsTo
6
6
 
7
- class TargetNotFound < StandardError; end
7
+ class TargetNotFound < StandardError
8
+ def initialize(key, namespace)
9
+ super "Could not find #{key} in #{namespace.name} " +
10
+ "with #{namespace.resources.map(&:resource_name)}"
11
+ end
12
+ end
8
13
 
9
14
  # The resource which initiated this relationship
10
15
  attr_reader :owner
@@ -16,8 +21,7 @@ module ActiveAdmin
16
21
  # Returns the target resource class or raises an exception if it doesn't exist
17
22
  def target
18
23
  key = @target_name.to_s.camelize
19
- namespace.resources[key] or raise TargetNotFound, "Could not find #{key} in" +
20
- " #{namespace.name} with #{namespace.resources.map(&:resource_name)}"
24
+ namespace.resources[key] or raise TargetNotFound.new key, namespace
21
25
  end
22
26
 
23
27
  def namespace
@@ -1,6 +1,7 @@
1
1
  module ActiveAdmin
2
2
  class Resource
3
3
  module Controllers
4
+ delegate :resources_configuration, to: :controller
4
5
 
5
6
  # Returns a properly formatted controller name for this
6
7
  # config within its namespace
@@ -0,0 +1,12 @@
1
+ module ActiveAdmin
2
+ class Resource
3
+ module Includes
4
+
5
+ # Return an array of includes for this resource
6
+ def includes
7
+ @includes ||= []
8
+ end
9
+
10
+ end
11
+ end
12
+ end
@@ -24,10 +24,10 @@ module ActiveAdmin
24
24
  menu_resource_class = respond_to?(:resource_class) ? resource_class : self
25
25
  resource = self
26
26
  {
27
- :id => resource_name.plural,
28
- :label => proc{ resource.plural_resource_label },
29
- :url => proc{ resource.route_collection_path(params) },
30
- :if => proc{ authorized?(:read, menu_resource_class) }
27
+ id: resource_name.plural,
28
+ label: proc{ resource.plural_resource_label },
29
+ url: proc{ resource.route_collection_path(params) },
30
+ if: proc{ authorized?(:read, menu_resource_class) }
31
31
  }
32
32
  end
33
33
 
@@ -36,7 +36,7 @@ module ActiveAdmin
36
36
  def navigation_menu_name
37
37
  case @navigation_menu_name ||= DEFAULT_MENU
38
38
  when Proc
39
- controller.instance_eval(&@navigation_menu_name).to_sym
39
+ controller.instance_exec(&@navigation_menu_name).to_sym
40
40
  else
41
41
  @navigation_menu_name
42
42
  end
@@ -2,76 +2,60 @@ module ActiveAdmin
2
2
  class Resource
3
3
 
4
4
  module Naming
5
-
6
- # Returns a name used to uniquely identify this resource
7
- # this should be an instance of ActiveAdmin:Resource::Name, which responds to
8
- # #singular, #plural, #route_key, #human etc.
9
5
  def resource_name
10
- custom_name = @options[:as] && @options[:as].gsub(/\s/,'')
11
- @resource_name ||= if custom_name || !resource_class.respond_to?(:model_name)
12
- Resource::Name.new(resource_class, custom_name)
6
+ @resource_name ||= begin
7
+ as = @options[:as].gsub /\s/, '' if @options[:as]
8
+
9
+ if as || !resource_class.respond_to?(:model_name)
10
+ Name.new resource_class, as
13
11
  else
14
- Resource::Name.new(resource_class)
12
+ Name.new resource_class
15
13
  end
14
+ end
16
15
  end
17
16
 
18
17
  # Returns the name to call this resource such as "Bank Account"
19
18
  def resource_label
20
- resource_name.translate :count => 1, :default => resource_name.gsub('::', ' ').titleize
19
+ resource_name.translate count: 1,
20
+ default: resource_name.to_s.gsub('::', ' ').titleize
21
21
  end
22
22
 
23
23
  # Returns the plural version of this resource such as "Bank Accounts"
24
24
  def plural_resource_label(options = {})
25
- resource_name.translate ({:count => 1.1, :default => resource_label.pluralize.titleize}).merge(options)
25
+ defaults = {count: Helpers::I18n::PLURAL_MANY_COUNT,
26
+ default: resource_label.pluralize.titleize}
27
+ resource_name.translate defaults.merge options
28
+ end
29
+
30
+ # Forms use the model's original `param_key`, so we can't use our
31
+ # custom `resource_name` when the model's been renamed in ActiveAdmin.
32
+ def param_key
33
+ if resource_class.respond_to? :model_name
34
+ resource_class.model_name.param_key
35
+ else
36
+ resource_name.param_key
37
+ end
26
38
  end
27
39
  end
28
40
 
29
- # A subclass of ActiveModel::Name which supports the different APIs presented
30
- # in Rails < 3.1 and > 3.1.
31
41
  class Name < ActiveModel::Name
42
+ delegate :hash, to: :to_str
32
43
 
33
44
  def initialize(klass, name = nil)
34
- if ActiveModel::Name.instance_method(:initialize).arity == 1
35
- super(proxy_for_initializer(klass, name))
36
- else
37
- super(klass, nil, name)
38
- end
45
+ super(klass, nil, name)
39
46
  end
40
47
 
41
48
  def translate(options = {})
42
- I18n.t i18n_key, {:scope => [:activerecord, :models]}.merge(options)
43
- end
44
-
45
- def proxy_for_initializer(klass, name)
46
- return klass unless name
47
- return StringClassProxy.new(klass, name) if klass
48
-
49
- StringProxy.new(name)
49
+ I18n.t i18n_key, {scope: [:activerecord, :models]}.merge(options)
50
50
  end
51
51
 
52
52
  def route_key
53
53
  plural
54
54
  end
55
55
 
56
- class StringProxy
57
- def initialize(name)
58
- @name = name
59
- end
60
-
61
- def name
62
- @name
63
- end
64
- end
65
-
66
- class StringClassProxy < StringProxy
67
- delegate :lookup_ancestors, :i18n_scope, :to => :"@klass"
68
-
69
- def initialize(klass, name)
70
- @klass = klass || name
71
- super(name)
72
- end
56
+ def eql?(other)
57
+ to_str.eql?(other.to_str)
73
58
  end
74
-
75
59
  end
76
60
 
77
61
  end
@@ -32,7 +32,7 @@ module ActiveAdmin
32
32
  #
33
33
  # @param [Symbol, String] action The action to get the config for
34
34
  # @param [String] type The string specified in the presenters index_name method
35
- # @returns [PagePresenter, nil]
35
+ # @return [PagePresenter, nil]
36
36
  def get_page_presenter(action, type=nil)
37
37
 
38
38
  if action.to_s == "index" && type && page_presenters[:index].kind_of?(Hash)
@@ -1,13 +1,13 @@
1
1
  module ActiveAdmin
2
2
  class Resource
3
3
  module Routes
4
- # @params params [Hash] of params: {study_id: 3}
4
+ # @param params [Hash] of params: { study_id: 3 }
5
5
  # @return [String] the path to this resource collection page
6
6
  # @example "/admin/posts"
7
7
  def route_collection_path(params = {})
8
8
  RouteBuilder.new(self).collection_path(params)
9
9
  end
10
-
10
+
11
11
  # @param resource [ActiveRecord::Base] the instance we want the path of
12
12
  # @return [String] the path to this resource collection page
13
13
  # @example "/admin/posts/1"
@@ -15,13 +15,17 @@ module ActiveAdmin
15
15
  RouteBuilder.new(self).instance_path(resource)
16
16
  end
17
17
 
18
+ def route_edit_instance_path(resource)
19
+ RouteBuilder.new(self).edit_instance_path(resource)
20
+ end
21
+
18
22
  # Returns the routes prefix for this config
19
23
  def route_prefix
20
24
  namespace.module_name.try(:underscore)
21
25
  end
22
26
 
23
27
  def route_uncountable?
24
- config = controller.resources_configuration[:self]
28
+ config = resources_configuration[:self]
25
29
 
26
30
  config[:route_collection_name] == config[:route_instance_name]
27
31
  end
@@ -35,29 +39,41 @@ module ActiveAdmin
35
39
 
36
40
  def collection_path(params)
37
41
  route_name = route_name(
38
- resource.controller.resources_configuration[:self][:route_collection_name],
39
- (resource.route_uncountable? ? 'index_path' : 'path')
42
+ resource.resources_configuration[:self][:route_collection_name],
43
+ suffix: (resource.route_uncountable? ? "index_path" : "path")
40
44
  )
41
45
 
42
- routes.send(route_name, *route_collection_params(params))
46
+ routes.public_send route_name, *route_collection_params(params)
43
47
  end
44
48
 
45
49
  # @return [String] the path to this resource collection page
46
50
  # @param instance [ActiveRecord::Base] the instance we want the path of
47
51
  # @example "/admin/posts/1"
48
52
  def instance_path(instance)
49
- route_name = route_name(resource.controller.resources_configuration[:self][:route_instance_name])
53
+ route_name = route_name(resource.resources_configuration[:self][:route_instance_name])
54
+
55
+ routes.public_send route_name, *route_instance_params(instance)
56
+ end
57
+
58
+ # @return [String] the path to the edit page of this resource
59
+ # @param instance [ActiveRecord::Base] the instance we want the path of
60
+ # @example "/admin/posts/1/edit"
61
+ def edit_instance_path(instance)
62
+ path = resource.resources_configuration[:self][:route_instance_name]
63
+ route_name = route_name(path, action: :edit)
50
64
 
51
- routes.send(route_name, *route_instance_params(instance))
65
+ routes.public_send route_name, *route_instance_params(instance)
52
66
  end
53
67
 
54
68
  private
55
69
 
56
70
  attr_reader :resource
57
71
 
58
- def route_name(resource_path_name, suffix = 'path')
72
+ def route_name(resource_path_name, options = {})
73
+ suffix = options[:suffix] || "path"
59
74
  route = []
60
75
 
76
+ route << options[:action] # "edit" or "new"
61
77
  route << resource.route_prefix # "admin"
62
78
  route << belongs_to_name if nested? # "category"
63
79
  route << resource_path_name # "posts" or "post"
@@ -70,7 +86,7 @@ module ActiveAdmin
70
86
  # @return params to pass to instance path
71
87
  def route_instance_params(instance)
72
88
  if nested?
73
- [instance.send(belongs_to_name).to_param, instance.to_param]
89
+ [instance.public_send(belongs_to_name).to_param, instance.to_param]
74
90
  else
75
91
  instance.to_param
76
92
  end
@@ -91,7 +107,7 @@ module ActiveAdmin
91
107
  end
92
108
 
93
109
  def routes
94
- Rails.application.routes.url_helpers
110
+ Helpers::Routes
95
111
  end
96
112
  end
97
113
  end
@@ -20,7 +20,7 @@ module ActiveAdmin
20
20
  # method to call as the association. If its different, you can
21
21
  # pass in the association_method as an option.
22
22
  #
23
- # scope_to :current_user, :association_method => :blog_posts
23
+ # scope_to :current_user, association_method: :blog_posts
24
24
  #
25
25
  # will result in the following
26
26
  #
@@ -28,11 +28,11 @@ module ActiveAdmin
28
28
  #
29
29
  # To conditionally use this scope, you can use conditional procs
30
30
  #
31
- # scope_to :current_user, :if => proc{ admin_user_signed_in? }
31
+ # scope_to :current_user, if: proc{ admin_user_signed_in? }
32
32
  #
33
33
  # or
34
34
  #
35
- # scope_to :current_user, :unless => proc{ current_user.admin? }
35
+ # scope_to :current_user, unless: proc{ current_user.admin? }
36
36
  #
37
37
  def scope_to(*args, &block)
38
38
  options = args.extract_options!
@@ -55,10 +55,10 @@ module ActiveAdmin
55
55
 
56
56
  def scope_to_config
57
57
  @scope_to_config ||= {
58
- :method => nil,
59
- :association_method => nil,
60
- :if => nil,
61
- :unless => nil
58
+ method: nil,
59
+ association_method: nil,
60
+ if: nil,
61
+ unless: nil
62
62
  }
63
63
  end
64
64
 
@@ -15,6 +15,7 @@ module ActiveAdmin
15
15
 
16
16
  def sidebar_sections_for(action, render_context = nil)
17
17
  sidebar_sections.select{|section| section.display_on?(action, render_context) }
18
+ .sort_by(&:priority)
18
19
  end
19
20
 
20
21
  def sidebar_sections?
@@ -1,9 +1,8 @@
1
- require 'inherited_resources'
2
- require 'active_admin/resource_controller/actions'
3
1
  require 'active_admin/resource_controller/action_builder'
4
2
  require 'active_admin/resource_controller/data_access'
5
3
  require 'active_admin/resource_controller/decorators'
6
4
  require 'active_admin/resource_controller/scoping'
5
+ require 'active_admin/resource_controller/streaming'
7
6
  require 'active_admin/resource_controller/sidebars'
8
7
  require 'active_admin/resource_controller/resource_class_methods'
9
8
 
@@ -14,21 +13,21 @@ module ActiveAdmin
14
13
  layout :determine_active_admin_layout
15
14
 
16
15
  respond_to :html, :xml, :json
17
- respond_to :csv, :only => :index
16
+ respond_to :csv, only: :index
18
17
 
19
- include Actions
20
18
  include ActionBuilder
21
19
  include Decorators
22
20
  include DataAccess
23
21
  include Scoping
22
+ include Streaming
24
23
  include Sidebars
25
24
  extend ResourceClassMethods
26
25
 
27
26
  def self.active_admin_config=(config)
28
27
  if @active_admin_config = config
29
- defaults :resource_class => config.resource_class,
30
- :route_prefix => config.route_prefix,
31
- :instance_name => config.resource_name.singular
28
+ defaults resource_class: config.resource_class,
29
+ route_prefix: config.route_prefix,
30
+ instance_name: config.resource_name.singular
32
31
  end
33
32
  end
34
33