yousty-activeadmin 1.0.4.pre → 1.0.5.pre

Sign up to get free protection for your applications and to get access to all the features.
Files changed (467) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +261 -211
  3. data/CONTRIBUTING.md +73 -39
  4. data/Gemfile +38 -20
  5. data/Guardfile +1 -0
  6. data/LICENSE +1 -1
  7. data/README.md +48 -24
  8. data/Rakefile +12 -4
  9. data/activeadmin.gemspec +21 -26
  10. data/app/assets/javascripts/active_admin/application.js.coffee +34 -5
  11. data/app/assets/javascripts/active_admin/base.js.coffee +11 -2
  12. data/app/assets/javascripts/active_admin/ext/jquery-ui.js.coffee +6 -0
  13. data/app/assets/javascripts/active_admin/ext/jquery.js.coffee +7 -0
  14. data/app/assets/javascripts/active_admin/lib/batch_actions.js.coffee +39 -0
  15. data/app/assets/javascripts/active_admin/lib/checkbox-toggler.js.coffee +3 -4
  16. data/app/assets/javascripts/active_admin/lib/dropdown-menu.js.coffee +51 -55
  17. data/app/assets/javascripts/active_admin/lib/flash.js.coffee +19 -0
  18. data/app/assets/javascripts/active_admin/lib/has_many.js.coffee +79 -0
  19. data/app/assets/javascripts/active_admin/lib/modal_dialog.js.coffee +37 -0
  20. data/app/assets/javascripts/active_admin/lib/per_page.js.coffee +27 -0
  21. data/app/assets/javascripts/active_admin/lib/popover.js.coffee +29 -58
  22. data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.js.coffee +2 -3
  23. data/app/assets/stylesheets/active_admin/{_base.css.scss → _base.scss} +3 -0
  24. data/app/assets/stylesheets/active_admin/{_forms.css.scss → _forms.scss} +51 -15
  25. data/app/assets/stylesheets/active_admin/{_header.css.scss → _header.scss} +9 -5
  26. data/app/assets/stylesheets/active_admin/{_mixins.css.scss → _mixins.scss} +0 -0
  27. data/app/assets/stylesheets/active_admin/{_typography.css.scss → _typography.scss} +0 -0
  28. data/app/assets/stylesheets/active_admin/components/_batch_actions.scss +11 -0
  29. data/app/assets/stylesheets/active_admin/components/_buttons.scss +1 -1
  30. data/app/assets/stylesheets/active_admin/components/{_comments.css.scss → _comments.scss} +0 -0
  31. data/app/assets/stylesheets/active_admin/components/{_date_picker.css.scss → _date_picker.scss} +40 -12
  32. data/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +3 -1
  33. data/app/assets/stylesheets/active_admin/components/_flash_messages.scss +37 -0
  34. data/app/assets/stylesheets/active_admin/components/_modal_dialog.scss +34 -0
  35. data/app/assets/stylesheets/active_admin/components/_pagination.scss +10 -0
  36. data/app/assets/stylesheets/active_admin/components/{_popovers.css.scss → _popovers.scss} +0 -0
  37. data/app/assets/stylesheets/active_admin/components/_status_tags.scss +4 -0
  38. data/app/assets/stylesheets/active_admin/components/_table_tools.scss +67 -0
  39. data/app/assets/stylesheets/active_admin/components/{_tables.css.scss → _tables.scss} +1 -0
  40. data/app/assets/stylesheets/active_admin/components/_tabs.scss +65 -0
  41. data/app/assets/stylesheets/active_admin/components/_unsupported_browser.scss +16 -0
  42. data/app/assets/stylesheets/active_admin/mixins/{_all.css.scss → _all.scss} +0 -0
  43. data/app/assets/stylesheets/active_admin/mixins/{_buttons.css.scss → _buttons.scss} +0 -0
  44. data/app/assets/stylesheets/active_admin/mixins/{_gradients.css.scss → _gradients.scss} +1 -1
  45. data/app/assets/stylesheets/active_admin/mixins/{_icons.css.scss → _icons.scss} +1 -2
  46. data/app/assets/stylesheets/active_admin/mixins/{_reset.css.scss → _reset.scss} +0 -0
  47. data/app/assets/stylesheets/active_admin/mixins/{_rounded.css.scss → _rounded.scss} +0 -0
  48. data/app/assets/stylesheets/active_admin/mixins/{_sections.css.scss → _sections.scss} +7 -1
  49. data/app/assets/stylesheets/active_admin/mixins/{_shadows.css.scss → _shadows.scss} +0 -0
  50. data/app/assets/stylesheets/active_admin/mixins/{_variables.css.scss → _variables.scss} +10 -8
  51. data/app/assets/stylesheets/active_admin/{print.css.scss → print.scss} +4 -0
  52. data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +10 -7
  53. data/app/views/active_admin/devise/confirmations/new.html.erb +15 -0
  54. data/app/views/active_admin/devise/mailer/reset_password_instructions.html.erb +1 -1
  55. data/app/views/active_admin/devise/mailer/unlock_instructions.html.erb +1 -1
  56. data/app/views/active_admin/devise/passwords/edit.html.erb +9 -10
  57. data/app/views/active_admin/devise/passwords/new.html.erb +5 -4
  58. data/app/views/active_admin/devise/registrations/new.html.erb +22 -0
  59. data/app/views/active_admin/devise/sessions/new.html.erb +8 -8
  60. data/app/views/active_admin/devise/shared/_links.erb +1 -1
  61. data/app/views/active_admin/devise/unlocks/new.html.erb +5 -4
  62. data/app/views/layouts/active_admin_logged_out.html.erb +3 -5
  63. data/config/locales/ar.yml +120 -0
  64. data/config/locales/bg.yml +26 -6
  65. data/config/locales/bs.yml +122 -0
  66. data/config/locales/ca.yml +10 -1
  67. data/config/locales/cs.yml +7 -2
  68. data/config/locales/da.yml +7 -3
  69. data/config/locales/de-CH.yml +14 -31
  70. data/config/locales/de.yml +33 -33
  71. data/config/locales/el.yml +127 -0
  72. data/config/locales/en-GB.yml +11 -4
  73. data/config/locales/en.yml +21 -4
  74. data/config/locales/{es_MX.yml → es-MX.yml} +14 -24
  75. data/config/locales/es.yml +32 -25
  76. data/config/locales/fa.yml +120 -0
  77. data/config/locales/fi.yml +9 -5
  78. data/config/locales/fr.yml +28 -12
  79. data/config/locales/he.yml +7 -3
  80. data/config/locales/hr.yml +42 -11
  81. data/config/locales/hu.yml +10 -3
  82. data/config/locales/it.yml +31 -3
  83. data/config/locales/ja.yml +17 -4
  84. data/config/locales/ko.yml +7 -1
  85. data/config/locales/lt.yml +42 -11
  86. data/config/locales/lv.yml +7 -3
  87. data/config/locales/{no-NB.yml → nb.yml} +46 -15
  88. data/config/locales/nl.yml +36 -5
  89. data/config/locales/pl.yml +13 -8
  90. data/config/locales/pt-BR.yml +36 -5
  91. data/config/locales/pt-PT.yml +8 -4
  92. data/config/locales/ro.yml +7 -3
  93. data/config/locales/ru.yml +26 -5
  94. data/config/locales/sv-SE.yml +9 -5
  95. data/config/locales/tr.yml +10 -3
  96. data/config/locales/uk.yml +36 -12
  97. data/config/locales/vi.yml +7 -3
  98. data/config/locales/zh-CN.yml +26 -10
  99. data/config/locales/zh-TW.yml +19 -13
  100. data/docs/0-installation.md +14 -6
  101. data/docs/1-general-configuration.md +8 -5
  102. data/docs/10-custom-pages.md +68 -70
  103. data/docs/11-decorators.md +48 -59
  104. data/docs/12-arbre-components.md +79 -73
  105. data/docs/13-authorization-adapter.md +128 -107
  106. data/docs/14-gotchas.md +90 -0
  107. data/docs/2-resource-customization.md +82 -15
  108. data/docs/3-index-pages.md +71 -12
  109. data/docs/3-index-pages/custom-index.md +31 -0
  110. data/docs/3-index-pages/index-as-table.md +45 -2
  111. data/docs/4-csv-format.md +1 -1
  112. data/docs/5-forms.md +78 -29
  113. data/docs/6-show-pages.md +31 -3
  114. data/docs/7-sidebars.md +46 -25
  115. data/docs/8-custom-actions.md +98 -77
  116. data/docs/9-batch-actions.md +211 -133
  117. data/docs/README.md +24 -0
  118. data/features/action_item.feature +3 -3
  119. data/features/authorization_pundit.feature +37 -0
  120. data/features/belongs_to.feature +3 -0
  121. data/features/breadcrumb.feature +48 -0
  122. data/features/comments/commenting.feature +44 -13
  123. data/features/development_reloading.feature +3 -4
  124. data/features/edit_page.feature +9 -19
  125. data/features/favicon.feature +3 -3
  126. data/features/i18n.feature +5 -0
  127. data/features/index/batch_actions.feature +41 -0
  128. data/features/index/filters.feature +23 -0
  129. data/features/index/format_as_csv.feature +90 -4
  130. data/features/index/index_as_blog.feature +4 -4
  131. data/features/index/index_as_table.feature +102 -6
  132. data/features/index/index_blank_slate.feature +22 -0
  133. data/features/index/index_scope_to.feature +16 -16
  134. data/features/index/page_title.feature +11 -0
  135. data/features/index/pagination.feature +1 -1
  136. data/features/index/switch_index_view.feature +14 -14
  137. data/features/new_page.feature +10 -20
  138. data/features/registering_pages.feature +1 -1
  139. data/features/renamed_resource.feature +32 -0
  140. data/features/show/page_title.feature +11 -0
  141. data/features/show/tabs.feature +27 -0
  142. data/features/sidebar_sections.feature +12 -0
  143. data/features/specifying_actions.feature +3 -3
  144. data/features/step_definitions/action_item_steps.rb +2 -2
  145. data/features/step_definitions/action_link_steps.rb +14 -1
  146. data/features/step_definitions/additional_web_steps.rb +17 -18
  147. data/features/step_definitions/asset_steps.rb +3 -3
  148. data/features/step_definitions/attribute_steps.rb +8 -3
  149. data/features/step_definitions/batch_action_steps.rb +26 -9
  150. data/features/step_definitions/blog_steps.rb +3 -0
  151. data/features/step_definitions/breadcrumb_steps.rb +1 -1
  152. data/features/step_definitions/comment_steps.rb +1 -1
  153. data/features/step_definitions/configuration_steps.rb +1 -1
  154. data/features/step_definitions/dashboard_steps.rb +2 -2
  155. data/features/step_definitions/factory_steps.rb +6 -6
  156. data/features/step_definitions/filter_steps.rb +25 -3
  157. data/features/step_definitions/flash_steps.rb +3 -3
  158. data/features/step_definitions/format_steps.rb +17 -10
  159. data/features/step_definitions/index_scope_steps.rb +5 -5
  160. data/features/step_definitions/layout_steps.rb +1 -1
  161. data/features/step_definitions/member_link_steps.rb +2 -2
  162. data/features/step_definitions/menu_steps.rb +3 -3
  163. data/features/step_definitions/pagination_steps.rb +2 -3
  164. data/features/step_definitions/sidebar_steps.rb +8 -3
  165. data/features/step_definitions/site_title_steps.rb +6 -4
  166. data/features/step_definitions/symbol_leak_steps.rb +1 -1
  167. data/features/step_definitions/tab_steps.rb +5 -0
  168. data/features/step_definitions/table_steps.rb +4 -4
  169. data/features/step_definitions/user_steps.rb +15 -9
  170. data/features/step_definitions/web_steps.rb +10 -11
  171. data/features/sti_resource.feature +2 -10
  172. data/features/strong_parameters.feature +73 -0
  173. data/features/support/env.rb +35 -2
  174. data/features/support/paths.rb +2 -2
  175. data/features/support/selectors.rb +1 -1
  176. data/features/users/resetting_password.feature +7 -7
  177. data/lib/active_admin.rb +18 -13
  178. data/lib/active_admin/abstract_view_factory.rb +7 -17
  179. data/lib/active_admin/application.rb +50 -25
  180. data/lib/active_admin/asset_registration.rb +2 -2
  181. data/lib/active_admin/authorization_adapter.rb +2 -2
  182. data/lib/active_admin/base_controller.rb +2 -3
  183. data/lib/active_admin/base_controller/authorization.rb +13 -31
  184. data/lib/active_admin/batch_actions.rb +1 -1
  185. data/lib/active_admin/batch_actions/controller.rb +13 -7
  186. data/lib/active_admin/batch_actions/resource_extension.rb +43 -17
  187. data/lib/active_admin/batch_actions/views/batch_action_form.rb +7 -4
  188. data/lib/active_admin/batch_actions/views/batch_action_popover.rb +3 -3
  189. data/lib/active_admin/batch_actions/views/batch_action_selector.rb +8 -17
  190. data/lib/active_admin/batch_actions/views/selection_cells.rb +4 -4
  191. data/lib/active_admin/callbacks.rb +25 -24
  192. data/lib/active_admin/cancan_adapter.rb +7 -11
  193. data/lib/active_admin/csv_builder.rb +92 -15
  194. data/lib/active_admin/dependency.rb +93 -0
  195. data/lib/active_admin/deprecation.rb +6 -7
  196. data/lib/active_admin/devise.rb +26 -14
  197. data/lib/active_admin/dsl.rb +18 -11
  198. data/lib/active_admin/engine.rb +7 -2
  199. data/lib/active_admin/error.rb +59 -0
  200. data/lib/active_admin/filters/dsl.rb +2 -2
  201. data/lib/active_admin/filters/forms.rb +19 -30
  202. data/lib/active_admin/filters/formtastic_addons.rb +20 -11
  203. data/lib/active_admin/filters/resource_extension.rb +16 -9
  204. data/lib/active_admin/form_builder.rb +94 -105
  205. data/lib/active_admin/helpers/collection.rb +7 -13
  206. data/lib/active_admin/helpers/i18n.rb +7 -0
  207. data/lib/active_admin/helpers/optional_display.rb +5 -5
  208. data/lib/active_admin/helpers/scope_chain.rb +1 -1
  209. data/lib/active_admin/helpers/settings.rb +16 -9
  210. data/lib/active_admin/iconic.rb +17 -15
  211. data/lib/active_admin/iconic/icons.rb +136 -136
  212. data/lib/active_admin/inputs.rb +11 -7
  213. data/lib/active_admin/inputs/datepicker_input.rb +1 -1
  214. data/lib/active_admin/inputs/filters/base.rb +42 -0
  215. data/lib/active_admin/inputs/filters/base/search_method_select.rb +75 -0
  216. data/lib/active_admin/inputs/filters/boolean_input.rb +24 -0
  217. data/lib/active_admin/inputs/filters/check_boxes_input.rb +50 -0
  218. data/lib/active_admin/inputs/filters/date_range_input.rb +36 -0
  219. data/lib/active_admin/inputs/filters/numeric_input.rb +12 -0
  220. data/lib/active_admin/inputs/filters/select_input.rb +54 -0
  221. data/lib/active_admin/inputs/filters/string_input.rb +26 -0
  222. data/lib/active_admin/menu.rb +3 -3
  223. data/lib/active_admin/menu_collection.rb +1 -4
  224. data/lib/active_admin/namespace.rb +52 -29
  225. data/lib/active_admin/order_clause.rb +26 -0
  226. data/lib/active_admin/orm/active_record.rb +2 -0
  227. data/lib/active_admin/orm/active_record/comments.rb +48 -51
  228. data/lib/active_admin/orm/active_record/comments/comment.rb +16 -10
  229. data/lib/active_admin/orm/active_record/comments/namespace_helper.rb +1 -1
  230. data/lib/active_admin/orm/active_record/comments/resource_helper.rb +1 -1
  231. data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +15 -13
  232. data/lib/active_admin/page.rb +5 -1
  233. data/lib/active_admin/page_dsl.rb +1 -1
  234. data/lib/active_admin/page_presenter.rb +2 -2
  235. data/lib/active_admin/pundit_adapter.rb +68 -0
  236. data/lib/active_admin/resource.rb +12 -3
  237. data/lib/active_admin/resource/action_items.rb +15 -8
  238. data/lib/active_admin/resource/belongs_to.rb +7 -3
  239. data/lib/active_admin/resource/controllers.rb +1 -0
  240. data/lib/active_admin/resource/includes.rb +12 -0
  241. data/lib/active_admin/resource/menu.rb +5 -5
  242. data/lib/active_admin/resource/naming.rb +25 -47
  243. data/lib/active_admin/resource/page_presenters.rb +1 -1
  244. data/lib/active_admin/resource/routes.rb +26 -10
  245. data/lib/active_admin/resource/scope_to.rb +7 -7
  246. data/lib/active_admin/resource/sidebars.rb +1 -0
  247. data/lib/active_admin/resource_collection.rb +44 -16
  248. data/lib/active_admin/resource_controller.rb +6 -5
  249. data/lib/active_admin/resource_controller/data_access.rb +87 -82
  250. data/lib/active_admin/resource_controller/decorators.rb +91 -9
  251. data/lib/active_admin/resource_controller/streaming.rb +37 -0
  252. data/lib/active_admin/resource_dsl.rb +54 -10
  253. data/lib/active_admin/router.rb +7 -7
  254. data/lib/active_admin/scope.rb +6 -6
  255. data/lib/active_admin/sidebar_section.rb +10 -2
  256. data/lib/active_admin/version.rb +1 -1
  257. data/lib/active_admin/view_factory.rb +17 -16
  258. data/lib/active_admin/view_helpers.rb +0 -1
  259. data/lib/active_admin/view_helpers/auto_link_helper.rb +23 -12
  260. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +13 -6
  261. data/lib/active_admin/view_helpers/display_helper.rb +30 -17
  262. data/lib/active_admin/view_helpers/download_format_links_helper.rb +21 -24
  263. data/lib/active_admin/view_helpers/fields_for.rb +2 -2
  264. data/lib/active_admin/view_helpers/flash_helper.rb +4 -3
  265. data/lib/active_admin/view_helpers/form_helper.rb +5 -9
  266. data/lib/active_admin/view_helpers/method_or_proc_helper.rb +6 -6
  267. data/lib/active_admin/views/action_items.rb +2 -2
  268. data/lib/active_admin/views/components/action_list_popover.rb +1 -1
  269. data/lib/active_admin/views/components/active_admin_form.rb +123 -0
  270. data/lib/active_admin/views/components/attributes_table.rb +22 -13
  271. data/lib/active_admin/views/components/blank_slate.rb +1 -1
  272. data/lib/active_admin/views/components/columns.rb +13 -7
  273. data/lib/active_admin/views/components/dropdown_menu.rb +6 -6
  274. data/lib/active_admin/views/components/index_list.rb +7 -7
  275. data/lib/active_admin/views/components/paginated_collection.rb +33 -17
  276. data/lib/active_admin/views/components/panel.rb +8 -2
  277. data/lib/active_admin/views/components/popover.rb +1 -1
  278. data/lib/active_admin/views/components/scopes.rb +1 -1
  279. data/lib/active_admin/views/components/sidebar_section.rb +3 -2
  280. data/lib/active_admin/views/components/site_title.rb +2 -2
  281. data/lib/active_admin/views/components/status_tag.rb +34 -11
  282. data/lib/active_admin/views/components/table_for.rb +67 -22
  283. data/lib/active_admin/views/components/tabs.rb +28 -0
  284. data/lib/active_admin/views/components/unsupported_browser.rb +11 -0
  285. data/lib/active_admin/views/footer.rb +3 -3
  286. data/lib/active_admin/views/header.rb +3 -3
  287. data/lib/active_admin/views/index_as_blog.rb +6 -6
  288. data/lib/active_admin/views/index_as_grid.rb +2 -2
  289. data/lib/active_admin/views/index_as_table.rb +127 -40
  290. data/lib/active_admin/views/pages/base.rb +22 -18
  291. data/lib/active_admin/views/pages/form.rb +16 -6
  292. data/lib/active_admin/views/pages/index.rb +36 -20
  293. data/lib/active_admin/views/pages/layout.rb +1 -1
  294. data/lib/active_admin/views/pages/show.rb +4 -4
  295. data/lib/active_admin/views/tabbed_navigation.rb +7 -3
  296. data/lib/active_admin/views/title_bar.rb +10 -8
  297. data/lib/generators/active_admin/assets/assets_generator.rb +1 -3
  298. data/lib/generators/active_admin/devise/devise_generator.rb +20 -28
  299. data/lib/generators/active_admin/install/install_generator.rb +8 -9
  300. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +20 -22
  301. data/lib/generators/active_admin/install/templates/admin_user.rb.erb +12 -9
  302. data/lib/generators/active_admin/install/templates/dashboard.rb +4 -4
  303. data/lib/generators/active_admin/install/templates/migrations/create_active_admin_comments.rb +3 -3
  304. data/lib/generators/active_admin/page/USAGE +8 -0
  305. data/lib/generators/active_admin/page/page_generator.rb +12 -0
  306. data/lib/generators/active_admin/page/templates/page.rb +5 -0
  307. data/lib/generators/active_admin/resource/resource_generator.rb +2 -4
  308. data/lib/generators/active_admin/resource/templates/admin.rb +15 -0
  309. data/lib/ransack_ext.rb +4 -4
  310. data/script/local +2 -2
  311. data/script/travis_cache +107 -0
  312. data/spec/javascripts/coffeescripts/jquery.aa.flash.js.coffee +25 -0
  313. data/spec/javascripts/fixtures/flashes.html +2 -0
  314. data/spec/rails_helper.rb +154 -0
  315. data/spec/{integration → requests}/default_namespace_spec.rb +6 -6
  316. data/spec/{integration → requests}/javascript_spec.rb +5 -5
  317. data/spec/requests/memory_spec.rb +23 -0
  318. data/spec/requests/stylesheets_spec.rb +18 -0
  319. data/spec/spec_helper.rb +12 -170
  320. data/spec/support/detect_rails_version.rb +31 -39
  321. data/spec/support/rails_template.rb +61 -34
  322. data/spec/support/rails_template_with_data.rb +14 -14
  323. data/spec/support/templates/admin/stores.rb +3 -5
  324. data/spec/support/templates/policies/active_admin/comment_policy.rb +9 -0
  325. data/spec/support/templates/policies/active_admin/page_policy.rb +18 -0
  326. data/spec/support/templates/policies/admin_user_policy.rb +11 -0
  327. data/spec/support/templates/policies/application_policy.rb +45 -0
  328. data/spec/support/templates/policies/category_policy.rb +7 -0
  329. data/spec/support/templates/policies/post_policy.rb +15 -0
  330. data/spec/support/templates/policies/store_policy.rb +11 -0
  331. data/spec/support/templates/policies/user_policy.rb +11 -0
  332. data/spec/support/templates/post_decorator.rb +4 -46
  333. data/spec/unit/abstract_view_factory_spec.rb +11 -11
  334. data/spec/unit/action_builder_spec.rb +24 -18
  335. data/spec/unit/active_admin_spec.rb +2 -2
  336. data/spec/unit/application_spec.rb +30 -31
  337. data/spec/unit/asset_registration_spec.rb +11 -11
  338. data/spec/unit/authorization/authorization_adapter_spec.rb +7 -7
  339. data/spec/unit/authorization/controller_authorization_spec.rb +11 -11
  340. data/spec/unit/authorization/index_overriding_spec.rb +22 -0
  341. data/spec/unit/auto_link_spec.rb +42 -5
  342. data/spec/unit/batch_actions/resource_spec.rb +15 -14
  343. data/spec/unit/batch_actions/settings_spec.rb +18 -18
  344. data/spec/unit/belongs_to_spec.rb +26 -17
  345. data/spec/unit/cancan_adapter_spec.rb +4 -4
  346. data/spec/unit/comments_spec.rb +99 -39
  347. data/spec/unit/component_spec.rb +3 -3
  348. data/spec/unit/config_shared_examples.rb +8 -8
  349. data/spec/unit/controller_filters_spec.rb +26 -14
  350. data/spec/unit/csv_builder_spec.rb +152 -24
  351. data/spec/unit/dependency_spec.rb +135 -0
  352. data/spec/unit/devise_spec.rb +17 -37
  353. data/spec/unit/dsl_spec.rb +70 -9
  354. data/spec/unit/event_spec.rb +9 -9
  355. data/spec/unit/filters/filter_form_builder_spec.rb +167 -157
  356. data/spec/unit/filters/resource_spec.rb +35 -33
  357. data/spec/unit/form_builder_spec.rb +383 -145
  358. data/spec/unit/generators/install_spec.rb +5 -5
  359. data/spec/unit/helpers/collection_spec.rb +18 -18
  360. data/spec/unit/helpers/scope_chain_spec.rb +5 -5
  361. data/spec/unit/helpers/settings_spec.rb +4 -4
  362. data/spec/unit/i18n_spec.rb +12 -0
  363. data/spec/unit/menu_collection_spec.rb +14 -14
  364. data/spec/unit/menu_item_spec.rb +42 -42
  365. data/spec/unit/menu_spec.rb +20 -20
  366. data/spec/unit/namespace/authorization_spec.rb +5 -5
  367. data/spec/unit/namespace/register_page_spec.rb +9 -9
  368. data/spec/unit/namespace/register_resource_spec.rb +26 -28
  369. data/spec/unit/namespace_spec.rb +20 -20
  370. data/spec/unit/order_clause_spec.rb +81 -0
  371. data/spec/unit/page_controller_spec.rb +1 -1
  372. data/spec/unit/page_spec.rb +18 -12
  373. data/spec/unit/pretty_format_spec.rb +42 -14
  374. data/spec/unit/pundit_adapter_spec.rb +98 -0
  375. data/spec/unit/resource/action_items_spec.rb +13 -10
  376. data/spec/unit/resource/includes_spec.rb +21 -0
  377. data/spec/unit/resource/menu_spec.rb +1 -1
  378. data/spec/unit/resource/naming_spec.rb +23 -23
  379. data/spec/unit/resource/page_presenters_spec.rb +8 -8
  380. data/spec/unit/resource/pagination_spec.rb +6 -6
  381. data/spec/unit/resource/routes_spec.rb +10 -10
  382. data/spec/unit/resource/scopes_spec.rb +14 -7
  383. data/spec/unit/resource/sidebars_spec.rb +6 -6
  384. data/spec/unit/resource_collection_spec.rb +66 -68
  385. data/spec/unit/resource_controller/data_access_spec.rb +39 -21
  386. data/spec/unit/resource_controller/decorators_spec.rb +83 -0
  387. data/spec/unit/resource_controller/sidebars_spec.rb +7 -8
  388. data/spec/unit/resource_controller_spec.rb +66 -62
  389. data/spec/unit/resource_registration_spec.rb +12 -12
  390. data/spec/unit/resource_spec.rb +75 -40
  391. data/spec/unit/routing_spec.rb +39 -31
  392. data/spec/unit/scope_spec.rb +112 -30
  393. data/spec/unit/settings_spec.rb +51 -21
  394. data/spec/unit/view_factory_spec.rb +2 -2
  395. data/spec/unit/view_helpers/breadcrumbs_spec.rb +137 -69
  396. data/spec/unit/view_helpers/display_name_spec.rb +49 -21
  397. data/spec/unit/view_helpers/download_format_links_helper_spec.rb +5 -5
  398. data/spec/unit/view_helpers/fields_for_spec.rb +18 -18
  399. data/spec/unit/view_helpers/flash_helper_spec.rb +25 -0
  400. data/spec/unit/view_helpers/form_helper_spec.rb +9 -22
  401. data/spec/unit/view_helpers/method_or_proc_helper_spec.rb +59 -21
  402. data/spec/unit/views/components/action_list_popover_spec.rb +16 -6
  403. data/spec/unit/views/components/attributes_table_spec.rb +94 -52
  404. data/spec/unit/views/components/batch_action_popover_spec.rb +20 -6
  405. data/spec/unit/views/components/blank_slate_spec.rb +14 -4
  406. data/spec/unit/views/components/columns_spec.rb +52 -22
  407. data/spec/unit/views/components/index_list_spec.rb +11 -8
  408. data/spec/unit/views/components/index_table_for_spec.rb +46 -0
  409. data/spec/unit/views/components/paginated_collection_spec.rb +68 -59
  410. data/spec/unit/views/components/panel_spec.rb +32 -21
  411. data/spec/unit/views/components/popover_spec.rb +7 -7
  412. data/spec/unit/views/components/sidebar_section_spec.rb +18 -8
  413. data/spec/unit/views/components/site_title_spec.rb +8 -8
  414. data/spec/unit/views/components/status_tag_spec.rb +178 -38
  415. data/spec/unit/views/components/table_for_spec.rb +227 -44
  416. data/spec/unit/views/components/tabs_spec.rb +39 -0
  417. data/spec/unit/views/components/unsupported_browser_spec.rb +47 -0
  418. data/spec/unit/views/pages/form_spec.rb +17 -10
  419. data/spec/unit/views/pages/index_spec.rb +60 -0
  420. data/spec/unit/views/pages/layout_spec.rb +17 -21
  421. data/spec/unit/views/pages/show_spec.rb +16 -3
  422. data/spec/unit/views/tabbed_navigation_spec.rb +61 -52
  423. data/tasks/docs.rake +1 -1
  424. data/tasks/parallel_tests.rake +8 -2
  425. data/tasks/test.rake +8 -4
  426. data/tasks/yard.rake +7 -5
  427. metadata +180 -101
  428. data/app/assets/images/active_admin/admin_notes_icon.png +0 -0
  429. data/app/assets/images/active_admin/datepicker/datepicker-header-bg.png +0 -0
  430. data/app/assets/images/active_admin/datepicker/datepicker-next-link-icon.png +0 -0
  431. data/app/assets/images/active_admin/datepicker/datepicker-nipple.png +0 -0
  432. data/app/assets/images/active_admin/datepicker/datepicker-prev-link-icon.png +0 -0
  433. data/app/assets/images/active_admin/index_list_icons/block_icon.svg +0 -10
  434. data/app/assets/images/active_admin/index_list_icons/blog_icon.svg +0 -4
  435. data/app/assets/images/active_admin/index_list_icons/grid_icon.svg +0 -13
  436. data/app/assets/images/active_admin/index_list_icons/table_icon.svg +0 -3
  437. data/app/assets/images/active_admin/loading.gif +0 -0
  438. data/app/assets/javascripts/active_admin/components/application.js.coffee +0 -23
  439. data/app/assets/javascripts/active_admin/components/batch_actions.js.coffee +0 -26
  440. data/app/assets/javascripts/active_admin/components/has_many.js.coffee +0 -41
  441. data/app/assets/stylesheets/active_admin/components/_batch_actions.css.scss +0 -11
  442. data/app/assets/stylesheets/active_admin/components/_flash_messages.css.scss +0 -39
  443. data/app/assets/stylesheets/active_admin/components/_table_tools.css.scss +0 -95
  444. data/app/views/active_admin/dashboard/index.html.arb +0 -1
  445. data/app/views/active_admin/resource/index.csv.erb +0 -17
  446. data/docs/3-index-pages/create-an-index.md +0 -29
  447. data/lib/active_admin/inputs/filter_base.rb +0 -33
  448. data/lib/active_admin/inputs/filter_base/search_method_select.rb +0 -73
  449. data/lib/active_admin/inputs/filter_boolean_input.rb +0 -32
  450. data/lib/active_admin/inputs/filter_check_boxes_input.rb +0 -51
  451. data/lib/active_admin/inputs/filter_date_range_input.rb +0 -34
  452. data/lib/active_admin/inputs/filter_numeric_input.rb +0 -10
  453. data/lib/active_admin/inputs/filter_select_input.rb +0 -61
  454. data/lib/active_admin/inputs/filter_string_input.rb +0 -24
  455. data/lib/active_admin/view_helpers/assigns_with_indifferent_access_helper.rb +0 -7
  456. data/spec/integration/memory_spec.rb +0 -29
  457. data/spec/integration/stylesheets_spec.rb +0 -41
  458. data/spec/javascripts/compiled/jquery.aa.checkbox-toggler-spec.js +0 -60
  459. data/spec/javascripts/compiled/jquery.aa.popover-spec.js +0 -106
  460. data/spec/javascripts/compiled/jquery.aa.table-checkbox-toggler-spec.js +0 -37
  461. data/spec/javascripts/helpers/vendor/jasmine-fixture-0.0.5.js +0 -108
  462. data/spec/javascripts/helpers/vendor/jasmine-jquery.js +0 -288
  463. data/spec/javascripts/helpers/vendor/sinon-1.2.0.js +0 -2915
  464. data/spec/javascripts/support/jquery-ui-1.8.16.custom.min.js +0 -34
  465. data/spec/javascripts/support/jquery.min.js +0 -4
  466. data/spec/spec_helper_without_rails.rb +0 -16
  467. data/tasks/js.rake +0 -32
@@ -15,20 +15,20 @@ Feature: User Resetting Password
15
15
  And I follow "Forgot your password?"
16
16
  When I fill in "Email" with "admin@example.com"
17
17
  And I press "Reset My Password"
18
- Then I should see "You will receive an email with instructions about how to reset your password in a few minutes."
18
+ Then I should see "You will receive an email with instructions on how to reset your password in a few minutes."
19
19
 
20
20
  Scenario: Changing password after resetting
21
- Given an admin user "admin@example.com" exists with reset password token "123reset"
22
- When I go to the admin password reset form with reset password token "123reset"
23
- And I fill in "Password" with "password"
21
+ When "admin@example.com" requests a password reset with token "foobarbaz"
22
+ When I go to the admin password reset form with token "foobarbaz"
23
+ And I fill in the password field with "password"
24
24
  And I fill in "Password confirmation" with "password"
25
25
  And I press "Change my password"
26
26
  Then I should see "success"
27
27
 
28
28
  Scenario: Changing password after resetting with errors
29
- Given an admin user "admin@example.com" exists with expired reset password token "123reset"
30
- When I go to the admin password reset form with reset password token "123reset"
31
- And I fill in "Password" with "password"
29
+ When "admin@example.com" requests a password reset with token "foobarbaz" but it expires
30
+ When I go to the admin password reset form with token "foobarbaz"
31
+ And I fill in the password field with "password"
32
32
  And I fill in "Password confirmation" with "wrong"
33
33
  And I press "Change my password"
34
34
  Then I should see "expired"
data/lib/active_admin.rb CHANGED
@@ -1,8 +1,9 @@
1
- require 'active_support/core_ext/class/attribute' # needed for Ransack
1
+ require 'active_support/core_ext'
2
+ require 'set'
3
+
2
4
  require 'ransack'
3
5
  require 'ransack_ext'
4
6
  require 'bourbon'
5
- require 'devise'
6
7
  require 'kaminari'
7
8
  require 'formtastic'
8
9
  require 'sass-rails'
@@ -11,7 +12,8 @@ require 'jquery-rails'
11
12
  require 'jquery-ui-rails'
12
13
  require 'coffee-rails'
13
14
  require 'arbre'
14
- require 'active_admin/engine'
15
+
16
+ require 'active_admin/helpers/i18n'
15
17
 
16
18
  module ActiveAdmin
17
19
 
@@ -20,12 +22,13 @@ module ActiveAdmin
20
22
  autoload :AssetRegistration, 'active_admin/asset_registration'
21
23
  autoload :Authorization, 'active_admin/authorization_adapter'
22
24
  autoload :AuthorizationAdapter, 'active_admin/authorization_adapter'
23
- autoload :Breadcrumbs, 'active_admin/breadcrumbs'
24
25
  autoload :Callbacks, 'active_admin/callbacks'
25
26
  autoload :Component, 'active_admin/component'
26
27
  autoload :BaseController, 'active_admin/base_controller'
28
+ autoload :CanCanAdapter, 'active_admin/cancan_adapter'
27
29
  autoload :ControllerAction, 'active_admin/controller_action'
28
30
  autoload :CSVBuilder, 'active_admin/csv_builder'
31
+ autoload :Dependency, 'active_admin/dependency'
29
32
  autoload :Deprecation, 'active_admin/deprecation'
30
33
  autoload :Devise, 'active_admin/devise'
31
34
  autoload :DSL, 'active_admin/dsl'
@@ -37,11 +40,12 @@ module ActiveAdmin
37
40
  autoload :MenuCollection, 'active_admin/menu_collection'
38
41
  autoload :MenuItem, 'active_admin/menu_item'
39
42
  autoload :Namespace, 'active_admin/namespace'
43
+ autoload :OrderClause, 'active_admin/order_clause'
40
44
  autoload :Page, 'active_admin/page'
41
45
  autoload :PagePresenter, 'active_admin/page_presenter'
42
46
  autoload :PageController, 'active_admin/page_controller'
43
47
  autoload :PageDSL, 'active_admin/page_dsl'
44
- autoload :Reloader, 'active_admin/reloader'
48
+ autoload :PunditAdapter, 'active_admin/pundit_adapter'
45
49
  autoload :Resource, 'active_admin/resource'
46
50
  autoload :ResourceController, 'active_admin/resource_controller'
47
51
  autoload :ResourceDSL, 'active_admin/resource_dsl'
@@ -68,11 +72,11 @@ module ActiveAdmin
68
72
  application.prepare!
69
73
  end
70
74
 
71
- delegate :register, :to => :application
72
- delegate :register_page, :to => :application
73
- delegate :unload!, :to => :application
74
- delegate :load!, :to => :application
75
- delegate :routes, :to => :application
75
+ delegate :register, to: :application
76
+ delegate :register_page, to: :application
77
+ delegate :unload!, to: :application
78
+ delegate :load!, to: :application
79
+ delegate :routes, to: :application
76
80
 
77
81
  # A callback is triggered each time (before) Active Admin loads the configuration files.
78
82
  # In development mode, this will happen whenever the user changes files. In production
@@ -113,6 +117,10 @@ module ActiveAdmin
113
117
 
114
118
  end
115
119
 
120
+ # Require things that don't support autoload
121
+ require 'active_admin/engine'
122
+ require 'active_admin/error'
123
+
116
124
  # Require internal plugins
117
125
  require 'active_admin/batch_actions'
118
126
  require 'active_admin/filters'
@@ -120,6 +128,3 @@ require 'active_admin/filters'
120
128
  # Require ORM-specific plugins
121
129
  require 'active_admin/orm/active_record' if defined? ActiveRecord
122
130
  require 'active_admin/orm/mongoid' if defined? Mongoid
123
-
124
- # Load gem-specific code only if that gem is being used
125
- require 'active_admin/cancan_adapter' if Gem.loaded_specs['cancan']
@@ -17,12 +17,12 @@ module ActiveAdmin
17
17
  # eg:
18
18
  #
19
19
  # factory = AbstractViewFactory.new
20
- # factory.register :my_view => SomeViewClass
20
+ # factory.register my_view: SomeViewClass
21
21
  #
22
22
  # You can setup many at the same time:
23
23
  #
24
- # factory.register :my_view => SomeClass,
25
- # :another_view => OtherViewClass
24
+ # factory.register my_view: SomeClass,
25
+ # another_view: OtherViewClass
26
26
  #
27
27
  def register(view_hash)
28
28
  view_hash.each do |view_key, view_class|
@@ -46,8 +46,7 @@ module ActiveAdmin
46
46
  set_view_for_key(key, value)
47
47
  end
48
48
 
49
- # Override respond to to include keys
50
- def respond_to?(method)
49
+ def respond_to_missing?(method, include_private)
51
50
  key = key_from_method_name(method)
52
51
  if has_key?(key)
53
52
  true
@@ -62,26 +61,17 @@ module ActiveAdmin
62
61
  key = key_from_method_name(method)
63
62
  if has_key?(key)
64
63
  if method.to_s.include?('=')
65
- self.class_eval <<-EOS
66
- def #{key}=(value)
67
- set_view_for_key(:#{key}, value)
68
- end
69
- EOS
64
+ set_view_for_key key, args.first
70
65
  else
71
- self.class_eval <<-EOS
72
- def #{key}
73
- get_view_for_key(:#{key})
74
- end
75
- EOS
66
+ get_view_for_key key
76
67
  end
77
- self.send(method, *args)
78
68
  else
79
69
  super
80
70
  end
81
71
  end
82
72
 
83
73
  def key_from_method_name(method)
84
- method.to_s.gsub('=', '').to_sym
74
+ method.to_s.tr('=', '').to_sym
85
75
  end
86
76
 
87
77
  def get_view_for_key(key)
@@ -17,7 +17,7 @@ module ActiveAdmin
17
17
 
18
18
  attr_reader :namespaces
19
19
  def initialize
20
- @namespaces = {}
20
+ @namespaces = Namespace::Store.new
21
21
  end
22
22
 
23
23
  # Load paths for admin configurations. Add folders to this load path
@@ -36,7 +36,7 @@ module ActiveAdmin
36
36
 
37
37
  # Set the site title image displayed in the main layout (has precendence over :site_title)
38
38
  inheritable_setting :site_title_image, ""
39
-
39
+
40
40
  # Set a favicon
41
41
  inheritable_setting :favicon, false
42
42
 
@@ -67,8 +67,14 @@ module ActiveAdmin
67
67
  # The namespace root.
68
68
  inheritable_setting :root_to, 'dashboard#index'
69
69
 
70
+ # Options that a passed to root_to.
71
+ inheritable_setting :root_to_options, {}
72
+
73
+ # Display breadcrumbs
74
+ inheritable_setting :breadcrumb, true
75
+
70
76
  # Default CSV options
71
- inheritable_setting :csv_options, {:col_sep => ','}
77
+ inheritable_setting :csv_options, { col_sep: ',', byte_order_mark: "\xEF\xBB\xBF" }
72
78
 
73
79
  # Default Download Links options
74
80
  inheritable_setting :download_links, true
@@ -79,6 +85,17 @@ module ActiveAdmin
79
85
  # A proc to be used when a user is not authorized to view the current resource
80
86
  inheritable_setting :on_unauthorized_access, :rescue_active_admin_access_denied
81
87
 
88
+ # A regex to detect unsupported browser, set to false to disable
89
+ inheritable_setting :unsupported_browser_matcher, /MSIE [1-8]\.0/
90
+
91
+ # Request parameters that are permitted by default
92
+ inheritable_setting :permitted_params, [
93
+ :utf8, :_method, :authenticity_token, :commit, :id
94
+ ]
95
+
96
+ # Set flash message keys that shouldn't show in ActiveAdmin
97
+ inheritable_setting :flash_keys_to_except, ['timedout']
98
+
82
99
  # Active Admin makes educated guesses when displaying objects, this is
83
100
  # the list of methods it tries calling in order
84
101
  setting :display_name_methods, [ :display_name,
@@ -92,7 +109,9 @@ module ActiveAdmin
92
109
 
93
110
  # == Deprecated Settings
94
111
 
95
- # (none currently)
112
+ def allow_comments=(*)
113
+ raise "`config.allow_comments` is no longer provided in ActiveAdmin 1.x. Use `config.comments` instead."
114
+ end
96
115
 
97
116
  include AssetRegistration
98
117
 
@@ -121,15 +140,14 @@ module ActiveAdmin
121
140
  #
122
141
  # Yields the namespace if a block is given
123
142
  #
124
- # @returns [Namespace] the new or existing namespace
143
+ # @return [Namespace] the new or existing namespace
125
144
  def namespace(name)
126
145
  name ||= :root
127
146
 
128
- if namespaces[name]
129
- namespace = namespaces[name]
130
- else
131
- namespace = namespaces[name] = Namespace.new(self, name)
147
+ namespace = namespaces[name] ||= begin
148
+ namespace = Namespace.new(self, name)
132
149
  ActiveAdmin::Event.dispatch ActiveAdmin::Namespace::RegisterEvent, namespace
150
+ namespace
133
151
  end
134
152
 
135
153
  yield(namespace) if block_given?
@@ -140,7 +158,7 @@ module ActiveAdmin
140
158
  # Register a page
141
159
  #
142
160
  # @param name [String] The page name
143
- # @options [Hash] Accepts option :namespace.
161
+ # @option [Hash] Accepts option :namespace.
144
162
  # @&block The registration block.
145
163
  #
146
164
  def register_page(name, options = {}, &block)
@@ -156,7 +174,7 @@ module ActiveAdmin
156
174
  # Removes all defined controllers from memory. Useful in
157
175
  # development, where they are reloaded on each request.
158
176
  def unload!
159
- namespaces.values.each &:unload!
177
+ namespaces.each &:unload!
160
178
  @@loaded = false
161
179
  end
162
180
 
@@ -172,6 +190,10 @@ module ActiveAdmin
172
190
  end
173
191
  end
174
192
 
193
+ def load(file)
194
+ DatabaseHitDuringLoad.capture{ super }
195
+ end
196
+
175
197
  # Returns ALL the files to be loaded
176
198
  def files
177
199
  load_paths.flatten.compact.uniq.map{ |path| Dir["#{path}/**/*.rb"] }.flatten
@@ -191,15 +213,20 @@ module ActiveAdmin
191
213
  # Example usage:
192
214
  # ActiveAdmin.before_filter :authenticate_admin!
193
215
  #
194
- %w(before_filter skip_before_filter after_filter around_filter skip_filter).each do |name|
216
+ %w(before_filter skip_before_filter after_filter skip_after_filter around_filter skip_filter).each do |name|
195
217
  define_method name do |*args, &block|
196
- ActiveAdmin::BaseController.send name, *args, &block
197
- ActiveAdmin::Devise::PasswordsController.send name, *args, &block
198
- ActiveAdmin::Devise::SessionsController.send name, *args, &block
199
- ActiveAdmin::Devise::UnlocksController.send name, *args, &block
218
+ controllers_for_filters.each do |controller|
219
+ controller.public_send name, *args, &block
220
+ end
200
221
  end
201
222
  end
202
223
 
224
+ def controllers_for_filters
225
+ controllers = [BaseController]
226
+ controllers.push *Devise.controllers_for_filters if Dependency.devise?
227
+ controllers
228
+ end
229
+
203
230
  private
204
231
 
205
232
  def register_default_assets
@@ -215,11 +242,8 @@ module ActiveAdmin
215
242
  # As well, we have to remove it from +eager_load_paths+ to prevent the
216
243
  # files from being loaded twice in production.
217
244
  def remove_active_admin_load_paths_from_rails_autoload_and_eager_load
218
- ActiveSupport::Dependencies.autoload_paths.reject!{ |path| load_paths.include? path }
219
- Rails.application.config.eager_load_paths = # the array is frozen :/
220
- Rails.application.config.eager_load_paths.reject do |path|
221
- load_paths.include?(path)
222
- end
245
+ ActiveSupport::Dependencies.autoload_paths -= load_paths
246
+ Rails.application.config.eager_load_paths -= load_paths
223
247
  end
224
248
 
225
249
  # Hooks the app/admin directory into our Rails Engine's +watchable_dirs+, so the
@@ -232,10 +256,11 @@ module ActiveAdmin
232
256
  ActiveAdmin::Engine.config.watchable_dirs[path] = [:rb]
233
257
  end
234
258
 
235
- app = self
236
- ActionDispatch::Reloader.to_prepare do
237
- app.unload!
238
- Rails.application.reload_routes!
259
+ Rails.application.config.after_initialize do
260
+ ActionDispatch::Reloader.to_prepare do
261
+ ActiveAdmin.application.unload!
262
+ Rails.application.reload_routes!
263
+ end
239
264
  end
240
265
  end
241
266
  end
@@ -10,7 +10,7 @@ module ActiveAdmin
10
10
  end
11
11
 
12
12
  def clear_stylesheets!
13
- @stylesheets = {}
13
+ stylesheets.clear
14
14
  end
15
15
 
16
16
  def register_javascript(name)
@@ -22,7 +22,7 @@ module ActiveAdmin
22
22
  end
23
23
 
24
24
  def clear_javascripts!
25
- @javascripts = Set.new
25
+ javascripts.clear
26
26
  end
27
27
 
28
28
  end
@@ -49,7 +49,7 @@ module ActiveAdmin
49
49
  # global navigation. To deal with this nicely in a case statement, take
50
50
  # a look at `#normalized(klasss)`
51
51
  #
52
- # @returns [Boolean]
52
+ # @return [Boolean]
53
53
  def authorized?(action, subject = nil)
54
54
  true
55
55
  end
@@ -66,7 +66,7 @@ module ActiveAdmin
66
66
  # one of the `ActiveAdmin::Auth::*` symbols. Defaults to `Auth::READ` if
67
67
  # no action passed in.
68
68
  #
69
- # @returns [ActiveRecord::Relation] A new collection, scoped to the
69
+ # @return [ActiveRecord::Relation] A new collection, scoped to the
70
70
  # objects that the current user has access to.
71
71
  def scope_collection(collection, action = Auth::READ)
72
72
  collection
@@ -1,5 +1,3 @@
1
- require 'inherited_resources'
2
-
3
1
  require 'active_admin/base_controller/authorization'
4
2
  require 'active_admin/base_controller/menu'
5
3
 
@@ -8,6 +6,7 @@ module ActiveAdmin
8
6
  # It implements ActiveAdmin controllers core features.
9
7
  class BaseController < ::InheritedResources::Base
10
8
  helper ::ActiveAdmin::ViewHelpers
9
+ helper_method :env
11
10
 
12
11
  layout :determine_active_admin_layout
13
12
 
@@ -23,7 +22,7 @@ module ActiveAdmin
23
22
  attr_accessor :active_admin_config
24
23
  end
25
24
 
26
- # By default Rails will render un-implemented actions when the view exists. Becuase Active
25
+ # By default Rails will render un-implemented actions when the view exists. Because Active
27
26
  # Admin allows you to not render any of the actions by using the #actions method, we need
28
27
  # to check if they are implemented.
29
28
  def only_render_implemented_actions
@@ -1,39 +1,21 @@
1
1
  module ActiveAdmin
2
-
3
- # Exception class to raise when there is an authorized access
4
- # exception thrown. The exception has a few goodies that may
5
- # be useful for capturing / recognizing security issues.
6
- class AccessDenied < StandardError
7
- attr_reader :user, :action, :subject
8
-
9
- def initialize(user, action, subject)
10
- @user, @action, @subject = user, action, subject
11
-
12
- super()
13
- end
14
-
15
- def message
16
- I18n.t("active_admin.access_denied.message")
17
- end
18
- end
19
-
20
2
  class BaseController < ::InheritedResources::Base
21
3
  module Authorization
22
4
  include MethodOrProcHelper
23
5
  extend ActiveSupport::Concern
24
6
 
25
7
  ACTIONS_DICTIONARY = {
26
- :index => ActiveAdmin::Authorization::READ,
27
- :show => ActiveAdmin::Authorization::READ,
28
- :new => ActiveAdmin::Authorization::CREATE,
29
- :create => ActiveAdmin::Authorization::CREATE,
30
- :edit => ActiveAdmin::Authorization::UPDATE,
31
- :update => ActiveAdmin::Authorization::UPDATE,
32
- :destroy => ActiveAdmin::Authorization::DESTROY
8
+ index: ActiveAdmin::Authorization::READ,
9
+ show: ActiveAdmin::Authorization::READ,
10
+ new: ActiveAdmin::Authorization::CREATE,
11
+ create: ActiveAdmin::Authorization::CREATE,
12
+ edit: ActiveAdmin::Authorization::UPDATE,
13
+ update: ActiveAdmin::Authorization::UPDATE,
14
+ destroy: ActiveAdmin::Authorization::DESTROY
33
15
  }
34
16
 
35
17
  included do
36
- rescue_from ActiveAdmin::AccessDenied, :with => :dispatch_active_admin_access_denied
18
+ rescue_from ActiveAdmin::AccessDenied, with: :dispatch_active_admin_access_denied
37
19
 
38
20
  helper_method :authorized?
39
21
  helper_method :authorize!
@@ -50,7 +32,7 @@ module ActiveAdmin
50
32
  # @param [any] subject The subject that the user is trying to perform
51
33
  # the action on.
52
34
  #
53
- # @returns [Boolean]
35
+ # @return [Boolean]
54
36
  #
55
37
  def authorized?(action, subject = nil)
56
38
  active_admin_authorization.authorized?(action, subject)
@@ -67,7 +49,7 @@ module ActiveAdmin
67
49
  # @param [any] subject The subject that the user is trying to perform
68
50
  # the action on.
69
51
  #
70
- # @returns [Boolean] True if authorized, otherwise raises
52
+ # @return [Boolean] True if authorized, otherwise raises
71
53
  # an ActiveAdmin::AccessDenied.
72
54
  def authorize!(action, subject = nil)
73
55
  unless authorized? action, subject
@@ -87,7 +69,7 @@ module ActiveAdmin
87
69
 
88
70
  # Retrieve or instantiate the authorization instance for this resource
89
71
  #
90
- # @returns [ActiveAdmin::AuthorizationAdapter]
72
+ # @return [ActiveAdmin::AuthorizationAdapter]
91
73
  def active_admin_authorization
92
74
  @active_admin_authorization ||=
93
75
  active_admin_authorization_adapter.new active_admin_config, current_active_admin_user
@@ -95,7 +77,7 @@ module ActiveAdmin
95
77
 
96
78
  # Returns the class to be used as the authorization adapter
97
79
  #
98
- # @returns [Class]
80
+ # @return [Class]
99
81
  def active_admin_authorization_adapter
100
82
  adapter = active_admin_namespace.authorization_adapter
101
83
  if adapter.is_a? String
@@ -111,7 +93,7 @@ module ActiveAdmin
111
93
  #
112
94
  # @param [String, Symbol] action The controller action name.
113
95
  #
114
- # @returns [Symbol] The permission name to use.
96
+ # @return [Symbol] The permission name to use.
115
97
  def action_to_permission(action)
116
98
  if action && action = action.to_sym
117
99
  Authorization::ACTIONS_DICTIONARY[action] || action