yousty-activeadmin 1.0.4.pre → 1.0.5.pre

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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