activeadmin 1.0.0.pre1 → 2.9.0

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 (595) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +587 -939
  3. data/CODE_OF_CONDUCT.md +74 -0
  4. data/CONTRIBUTING.md +110 -59
  5. data/LICENSE +0 -5
  6. data/README.md +80 -61
  7. data/app/assets/javascripts/active_admin/base.js +517 -0
  8. data/app/assets/stylesheets/active_admin/_base.scss +31 -34
  9. data/app/assets/stylesheets/active_admin/_forms.scss +33 -35
  10. data/app/assets/stylesheets/active_admin/_header.scss +40 -8
  11. data/app/assets/stylesheets/active_admin/_mixins.scss +1 -1
  12. data/app/assets/stylesheets/active_admin/_normalize.scss +447 -0
  13. data/app/assets/stylesheets/active_admin/components/_batch_actions.scss +0 -5
  14. data/app/assets/stylesheets/active_admin/components/_buttons.scss +0 -5
  15. data/app/assets/stylesheets/active_admin/components/_comments.scss +2 -2
  16. data/app/assets/stylesheets/active_admin/components/_pagination.scss +11 -0
  17. data/app/assets/stylesheets/active_admin/components/_scopes.scss +3 -0
  18. data/app/assets/stylesheets/active_admin/components/_status_tags.scss +0 -4
  19. data/app/assets/stylesheets/active_admin/components/_tables.scss +5 -3
  20. data/app/assets/stylesheets/active_admin/components/_tabs.scss +1 -1
  21. data/app/assets/stylesheets/active_admin/mixins/_all.scss +8 -11
  22. data/app/assets/stylesheets/active_admin/mixins/_gradients.scss +1 -1
  23. data/app/assets/stylesheets/active_admin/mixins/_sections.scss +0 -1
  24. data/app/assets/stylesheets/active_admin/mixins/_typography.scss +1 -1
  25. data/app/assets/stylesheets/active_admin/mixins/_variables.scss +9 -1
  26. data/app/assets/stylesheets/active_admin/print.scss +3 -4
  27. data/app/assets/stylesheets/active_admin/structure/_main_structure.scss +1 -1
  28. data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +0 -5
  29. data/app/javascript/active_admin/base.js +28 -0
  30. data/app/javascript/active_admin/ext/jquery-ui.js +7 -0
  31. data/app/javascript/active_admin/ext/jquery.js +9 -0
  32. data/app/javascript/active_admin/initializers/batch-actions.js +61 -0
  33. data/app/javascript/active_admin/initializers/checkbox-toggler.js +3 -0
  34. data/app/javascript/active_admin/initializers/datepicker.js +16 -0
  35. data/app/javascript/active_admin/initializers/dropdown-menu.js +9 -0
  36. data/app/javascript/active_admin/initializers/filters.js +10 -0
  37. data/app/javascript/active_admin/initializers/has-many.js +95 -0
  38. data/app/javascript/active_admin/initializers/per-page.js +13 -0
  39. data/app/javascript/active_admin/initializers/table-checkbox-toggler.js +3 -0
  40. data/app/javascript/active_admin/initializers/tabs.js +6 -0
  41. data/app/javascript/active_admin/lib/checkbox-toggler.js +49 -0
  42. data/app/javascript/active_admin/lib/dropdown-menu.js +116 -0
  43. data/app/javascript/active_admin/lib/filters.js +39 -0
  44. data/app/javascript/active_admin/lib/modal-dialog.js +63 -0
  45. data/app/javascript/active_admin/lib/per-page.js +38 -0
  46. data/app/javascript/active_admin/lib/table-checkbox-toggler.js +38 -0
  47. data/app/javascript/active_admin/lib/utils.js +40 -0
  48. data/app/views/active_admin/devise/confirmations/new.html.erb +2 -2
  49. data/app/views/active_admin/devise/mailer/reset_password_instructions.html.erb +1 -1
  50. data/app/views/active_admin/devise/mailer/unlock_instructions.html.erb +2 -2
  51. data/app/views/active_admin/devise/passwords/edit.html.erb +2 -2
  52. data/app/views/active_admin/devise/passwords/new.html.erb +2 -2
  53. data/app/views/active_admin/devise/registrations/new.html.erb +3 -4
  54. data/app/views/active_admin/devise/sessions/new.html.erb +2 -2
  55. data/app/views/active_admin/devise/shared/_error_messages.html.erb +15 -0
  56. data/app/views/active_admin/devise/shared/_links.erb +12 -6
  57. data/app/views/active_admin/devise/unlocks/new.html.erb +2 -2
  58. data/app/views/kaminari/active_admin/_first_page.html.erb +11 -0
  59. data/app/views/kaminari/active_admin/_gap.html.erb +8 -0
  60. data/app/views/kaminari/active_admin/_last_page.html.erb +11 -0
  61. data/app/views/kaminari/active_admin/_next_page.html.erb +11 -0
  62. data/app/views/kaminari/active_admin/_page.html.erb +12 -0
  63. data/app/views/kaminari/active_admin/_paginator.html.erb +25 -0
  64. data/app/views/kaminari/active_admin/_prev_page.html.erb +11 -0
  65. data/app/views/kaminari/active_admin_countless/_first_page.html.erb +11 -0
  66. data/app/views/kaminari/active_admin_countless/_gap.html.erb +8 -0
  67. data/app/views/kaminari/active_admin_countless/_next_page.html.erb +11 -0
  68. data/app/views/kaminari/active_admin_countless/_page.html.erb +12 -0
  69. data/app/views/kaminari/active_admin_countless/_paginator.html.erb +24 -0
  70. data/app/views/kaminari/active_admin_countless/_prev_page.html.erb +11 -0
  71. data/app/views/layouts/active_admin_logged_out.html.erb +21 -7
  72. data/config/locales/ar.yml +62 -47
  73. data/config/locales/az.yml +138 -0
  74. data/config/locales/bg.yml +1 -3
  75. data/config/locales/bs.yml +1 -2
  76. data/config/locales/ca.yml +2 -4
  77. data/config/locales/cs.yml +1 -2
  78. data/config/locales/da.yml +45 -14
  79. data/config/locales/de-CH.yml +4 -3
  80. data/config/locales/de.yml +46 -3
  81. data/config/locales/el.yml +3 -4
  82. data/config/locales/en-CA.yml +139 -0
  83. data/config/locales/en-GB.yml +46 -5
  84. data/config/locales/en.yml +44 -9
  85. data/config/locales/eo.yml +145 -0
  86. data/config/locales/es-MX.yml +9 -6
  87. data/config/locales/es.yml +63 -14
  88. data/config/locales/fa.yml +1 -2
  89. data/config/locales/fi.yml +2 -3
  90. data/config/locales/fr.yml +36 -8
  91. data/config/locales/he.yml +53 -7
  92. data/config/locales/hr.yml +1 -2
  93. data/config/locales/hu.yml +6 -3
  94. data/config/locales/id.yml +135 -0
  95. data/config/locales/it.yml +49 -4
  96. data/config/locales/ja.yml +31 -7
  97. data/config/locales/ko.yml +66 -36
  98. data/config/locales/lt.yml +27 -6
  99. data/config/locales/lv.yml +3 -4
  100. data/config/locales/mk.yml +134 -0
  101. data/config/locales/nb.yml +22 -8
  102. data/config/locales/nl.yml +26 -3
  103. data/config/locales/pl.yml +75 -5
  104. data/config/locales/pt-BR.yml +24 -2
  105. data/config/locales/pt-PT.yml +1 -2
  106. data/config/locales/ro.yml +1 -2
  107. data/config/locales/ru.yml +21 -4
  108. data/config/locales/sk.yml +168 -0
  109. data/config/locales/sv-SE.yml +50 -8
  110. data/config/locales/tr.yml +92 -45
  111. data/config/locales/uk.yml +30 -16
  112. data/config/locales/vi.yml +53 -12
  113. data/config/locales/zh-CN.yml +44 -7
  114. data/config/locales/zh-TW.yml +42 -3
  115. data/docs/.gitignore +1 -0
  116. data/docs/0-installation.md +68 -18
  117. data/docs/1-general-configuration.md +88 -4
  118. data/docs/10-custom-pages.md +56 -2
  119. data/docs/11-decorators.md +20 -5
  120. data/docs/12-arbre-components.md +75 -11
  121. data/docs/13-authorization-adapter.md +73 -36
  122. data/docs/14-gotchas.md +64 -18
  123. data/docs/2-resource-customization.md +91 -23
  124. data/docs/3-index-pages/custom-index.md +5 -1
  125. data/docs/3-index-pages/index-as-block.md +3 -5
  126. data/docs/3-index-pages/index-as-blog.md +4 -6
  127. data/docs/3-index-pages/index-as-grid.md +3 -5
  128. data/docs/3-index-pages/index-as-table.md +46 -9
  129. data/docs/3-index-pages.md +73 -10
  130. data/docs/4-csv-format.md +35 -0
  131. data/docs/5-forms.md +96 -18
  132. data/docs/6-show-pages.md +13 -25
  133. data/docs/7-sidebars.md +13 -1
  134. data/docs/8-custom-actions.md +18 -1
  135. data/docs/9-batch-actions.md +9 -5
  136. data/docs/CNAME +1 -0
  137. data/docs/Gemfile +3 -0
  138. data/docs/Gemfile.lock +259 -0
  139. data/docs/_config.yml +4 -0
  140. data/docs/_includes/footer.html +8 -0
  141. data/docs/_includes/google-analytics.html +16 -0
  142. data/docs/_includes/head.html +7 -0
  143. data/docs/_includes/toc.html +98 -0
  144. data/docs/_includes/top-menu.html +17 -0
  145. data/docs/_layouts/default.html +21 -0
  146. data/docs/documentation.md +60 -0
  147. data/docs/images/activeadmin.png +0 -0
  148. data/docs/images/code-header.png +0 -0
  149. data/docs/images/divider.png +0 -0
  150. data/docs/images/features.png +0 -0
  151. data/docs/images/tidelift.svg +14 -0
  152. data/docs/index.html +226 -0
  153. data/docs/stylesheets/main.css +1205 -0
  154. data/lib/active_admin/abstract_view_factory.rb +13 -51
  155. data/lib/active_admin/application.rb +105 -138
  156. data/lib/active_admin/application_settings.rb +42 -0
  157. data/lib/active_admin/authorization_adapter.rb +4 -7
  158. data/lib/active_admin/base_controller/authorization.rb +16 -21
  159. data/lib/active_admin/base_controller/menu.rb +10 -10
  160. data/lib/active_admin/base_controller.rb +15 -11
  161. data/lib/active_admin/batch_actions/controller.rb +6 -7
  162. data/lib/active_admin/batch_actions/resource_extension.rb +15 -15
  163. data/lib/active_admin/batch_actions/views/batch_action_form.rb +4 -4
  164. data/lib/active_admin/batch_actions/views/batch_action_selector.rb +8 -7
  165. data/lib/active_admin/batch_actions/views/selection_cells.rb +7 -6
  166. data/lib/active_admin/batch_actions.rb +0 -1
  167. data/lib/active_admin/callbacks.rb +2 -2
  168. data/lib/active_admin/cancan_adapter.rb +1 -1
  169. data/lib/active_admin/collection_decorator.rb +31 -0
  170. data/lib/active_admin/controller_action.rb +2 -1
  171. data/lib/active_admin/csv_builder.rb +30 -20
  172. data/lib/active_admin/dependency.rb +36 -29
  173. data/lib/active_admin/deprecation.rb +0 -25
  174. data/lib/active_admin/devise.rb +9 -9
  175. data/lib/active_admin/dsl.rb +5 -18
  176. data/lib/active_admin/dynamic_setting.rb +38 -0
  177. data/lib/active_admin/dynamic_settings_node.rb +28 -0
  178. data/lib/active_admin/engine.rb +14 -7
  179. data/lib/active_admin/error.rb +6 -6
  180. data/lib/active_admin/filters/active.rb +29 -0
  181. data/lib/active_admin/filters/active_filter.rb +123 -0
  182. data/lib/active_admin/filters/active_sidebar.rb +54 -0
  183. data/lib/active_admin/filters/forms.rb +17 -10
  184. data/lib/active_admin/filters/formtastic_addons.rb +2 -7
  185. data/lib/active_admin/filters/resource_extension.rb +50 -14
  186. data/lib/active_admin/filters.rb +7 -5
  187. data/lib/active_admin/form_builder.rb +112 -67
  188. data/lib/active_admin/generators/boilerplate.rb +53 -0
  189. data/lib/active_admin/helpers/collection.rb +2 -0
  190. data/lib/active_admin/helpers/optional_display.rb +2 -2
  191. data/lib/active_admin/helpers/routes/url_helpers.rb +1 -1
  192. data/lib/active_admin/helpers/scope_chain.rb +1 -0
  193. data/lib/active_admin/inputs/datepicker_input.rb +13 -6
  194. data/lib/active_admin/inputs/filters/base/search_method_select.rb +9 -9
  195. data/lib/active_admin/inputs/filters/base.rb +3 -1
  196. data/lib/active_admin/inputs/filters/boolean_input.rb +1 -1
  197. data/lib/active_admin/inputs/filters/check_boxes_input.rb +1 -1
  198. data/lib/active_admin/inputs/filters/date_picker_input.rb +13 -0
  199. data/lib/active_admin/inputs/filters/date_range_input.rb +25 -9
  200. data/lib/active_admin/inputs/filters/select_input.rb +8 -4
  201. data/lib/active_admin/inputs/filters/text_input.rb +25 -0
  202. data/lib/active_admin/inputs.rb +2 -0
  203. data/lib/active_admin/localizers/resource_localizer.rb +35 -0
  204. data/lib/active_admin/localizers.rb +11 -0
  205. data/lib/active_admin/menu.rb +13 -15
  206. data/lib/active_admin/menu_collection.rb +0 -2
  207. data/lib/active_admin/menu_item.rb +10 -38
  208. data/lib/active_admin/namespace.rb +51 -32
  209. data/lib/active_admin/namespace_settings.rb +126 -0
  210. data/lib/active_admin/order_clause.rb +30 -8
  211. data/lib/active_admin/orm/active_record/comments/comment.rb +6 -20
  212. data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +44 -21
  213. data/lib/active_admin/orm/active_record/comments/views.rb +2 -2
  214. data/lib/active_admin/orm/active_record/comments.rb +49 -29
  215. data/lib/active_admin/orm/active_record.rb +1 -1
  216. data/lib/active_admin/page.rb +24 -5
  217. data/lib/active_admin/page_controller.rb +2 -2
  218. data/lib/active_admin/page_dsl.rb +5 -1
  219. data/lib/active_admin/page_presenter.rb +2 -1
  220. data/lib/active_admin/pundit_adapter.rb +22 -9
  221. data/lib/active_admin/resource/action_items.rb +34 -12
  222. data/lib/active_admin/resource/attributes.rb +47 -0
  223. data/lib/active_admin/resource/belongs_to.rb +17 -4
  224. data/lib/active_admin/resource/controllers.rb +1 -1
  225. data/lib/active_admin/resource/menu.rb +9 -6
  226. data/lib/active_admin/resource/model.rb +15 -0
  227. data/lib/active_admin/resource/naming.rb +5 -5
  228. data/lib/active_admin/resource/ordering.rb +11 -0
  229. data/lib/active_admin/resource/page_presenters.rb +1 -1
  230. data/lib/active_admin/resource/pagination.rb +4 -0
  231. data/lib/active_admin/resource/routes.rb +56 -26
  232. data/lib/active_admin/resource/scope_to.rb +7 -7
  233. data/lib/active_admin/resource/scopes.rb +5 -3
  234. data/lib/active_admin/resource/sidebars.rb +2 -2
  235. data/lib/active_admin/resource.rb +80 -22
  236. data/lib/active_admin/resource_collection.rb +5 -3
  237. data/lib/active_admin/resource_controller/action_builder.rb +10 -0
  238. data/lib/active_admin/resource_controller/data_access.rb +56 -43
  239. data/lib/active_admin/resource_controller/decorators.rb +9 -31
  240. data/lib/active_admin/resource_controller/polymorphic_routes.rb +37 -0
  241. data/lib/active_admin/resource_controller/resource_class_methods.rb +2 -0
  242. data/lib/active_admin/resource_controller/scoping.rb +1 -1
  243. data/lib/active_admin/resource_controller/streaming.rb +12 -5
  244. data/lib/active_admin/resource_controller.rb +26 -10
  245. data/lib/active_admin/resource_dsl.rb +67 -21
  246. data/lib/active_admin/router.rb +90 -82
  247. data/lib/active_admin/scope.rb +21 -14
  248. data/lib/active_admin/settings_node.rb +19 -0
  249. data/lib/active_admin/sidebar_section.rb +6 -12
  250. data/lib/active_admin/version.rb +1 -1
  251. data/lib/active_admin/view_factory.rb +17 -18
  252. data/lib/active_admin/view_helpers/auto_link_helper.rb +2 -2
  253. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +5 -5
  254. data/lib/active_admin/view_helpers/display_helper.rb +51 -9
  255. data/lib/active_admin/view_helpers/download_format_links_helper.rb +14 -1
  256. data/lib/active_admin/view_helpers/fields_for.rb +4 -4
  257. data/lib/active_admin/view_helpers/form_helper.rb +2 -2
  258. data/lib/active_admin/view_helpers/method_or_proc_helper.rb +11 -4
  259. data/lib/active_admin/view_helpers/scope_name_helper.rb +16 -0
  260. data/lib/active_admin/view_helpers.rb +2 -2
  261. data/lib/active_admin/views/action_items.rb +1 -1
  262. data/lib/active_admin/views/components/active_admin_form.rb +45 -13
  263. data/lib/active_admin/views/components/attributes_table.rb +11 -29
  264. data/lib/active_admin/views/components/blank_slate.rb +1 -1
  265. data/lib/active_admin/views/components/columns.rb +12 -7
  266. data/lib/active_admin/views/components/dropdown_menu.rb +11 -13
  267. data/lib/active_admin/views/components/index_list.rb +6 -5
  268. data/lib/active_admin/views/components/menu.rb +32 -0
  269. data/lib/active_admin/views/components/menu_item.rb +58 -0
  270. data/lib/active_admin/views/components/paginated_collection.rb +52 -33
  271. data/lib/active_admin/views/components/panel.rb +2 -4
  272. data/lib/active_admin/views/components/scopes.rb +20 -12
  273. data/lib/active_admin/views/components/sidebar.rb +13 -0
  274. data/lib/active_admin/views/components/sidebar_section.rb +6 -1
  275. data/lib/active_admin/views/components/site_title.rb +6 -7
  276. data/lib/active_admin/views/components/status_tag.rb +19 -23
  277. data/lib/active_admin/views/components/table_for.rb +31 -57
  278. data/lib/active_admin/views/components/tabs.rb +17 -5
  279. data/lib/active_admin/views/footer.rb +15 -4
  280. data/lib/active_admin/views/header.rb +3 -16
  281. data/lib/active_admin/views/index_as_blog.rb +3 -4
  282. data/lib/active_admin/views/index_as_grid.rb +28 -28
  283. data/lib/active_admin/views/index_as_table.rb +76 -28
  284. data/lib/active_admin/views/pages/base.rb +45 -58
  285. data/lib/active_admin/views/pages/form.rb +5 -2
  286. data/lib/active_admin/views/pages/index.rb +15 -13
  287. data/lib/active_admin/views/pages/layout.rb +1 -1
  288. data/lib/active_admin/views/pages/show.rb +9 -3
  289. data/lib/active_admin/views/tabbed_navigation.rb +4 -59
  290. data/lib/active_admin/views/title_bar.rb +6 -6
  291. data/lib/active_admin/views.rb +1 -1
  292. data/lib/active_admin.rb +69 -67
  293. data/lib/activeadmin.rb +1 -1
  294. data/lib/generators/active_admin/assets/assets_generator.rb +3 -3
  295. data/lib/generators/active_admin/assets/templates/active_admin.js +1 -0
  296. data/lib/generators/active_admin/assets/templates/{active_admin.css.scss → active_admin.scss} +3 -3
  297. data/lib/generators/active_admin/devise/devise_generator.rb +17 -26
  298. data/lib/generators/active_admin/install/install_generator.rb +18 -8
  299. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +107 -5
  300. data/lib/generators/active_admin/install/templates/{admin_user.rb.erb → admin_users.rb.erb} +1 -3
  301. data/lib/generators/active_admin/install/templates/dashboard.rb +2 -3
  302. data/lib/generators/active_admin/install/templates/migrations/{create_active_admin_comments.rb → create_active_admin_comments.rb.erb} +2 -5
  303. data/lib/generators/active_admin/page/page_generator.rb +1 -1
  304. data/lib/generators/active_admin/page/templates/page.rb +1 -1
  305. data/lib/generators/active_admin/resource/resource_generator.rb +8 -2
  306. data/lib/generators/active_admin/resource/templates/admin.rb.erb +46 -0
  307. data/lib/generators/active_admin/webpacker/plugins/jquery.js +7 -0
  308. data/lib/generators/active_admin/webpacker/templates/active_admin.js +5 -0
  309. data/lib/generators/active_admin/webpacker/templates/active_admin.scss +17 -0
  310. data/lib/generators/active_admin/webpacker/templates/print.scss +2 -0
  311. data/lib/generators/active_admin/webpacker/webpacker_generator.rb +26 -0
  312. data/lib/ransack_ext.rb +11 -3
  313. data/vendor/assets/javascripts/jquery-ui/data.js +41 -0
  314. data/vendor/assets/javascripts/jquery-ui/disable-selection.js +48 -0
  315. data/vendor/assets/javascripts/jquery-ui/escape-selector.js +23 -0
  316. data/vendor/assets/javascripts/jquery-ui/focusable.js +86 -0
  317. data/vendor/assets/javascripts/jquery-ui/form-reset-mixin.js +80 -0
  318. data/vendor/assets/javascripts/jquery-ui/form.js +22 -0
  319. data/vendor/assets/javascripts/jquery-ui/ie.js +17 -0
  320. data/vendor/assets/javascripts/jquery-ui/keycode.js +47 -0
  321. data/vendor/assets/javascripts/jquery-ui/labels.js +65 -0
  322. data/vendor/assets/javascripts/jquery-ui/plugin.js +46 -0
  323. data/vendor/assets/javascripts/jquery-ui/position.js +500 -0
  324. data/vendor/assets/javascripts/jquery-ui/safe-active-element.js +42 -0
  325. data/vendor/assets/javascripts/jquery-ui/safe-blur.js +23 -0
  326. data/vendor/assets/javascripts/jquery-ui/scroll-parent.js +47 -0
  327. data/vendor/assets/javascripts/jquery-ui/tabbable.js +38 -0
  328. data/vendor/assets/javascripts/jquery-ui/unique-id.js +51 -0
  329. data/vendor/assets/javascripts/jquery-ui/version.js +17 -0
  330. data/vendor/assets/javascripts/jquery-ui/widget.js +735 -0
  331. data/vendor/assets/javascripts/jquery-ui/widgets/button.js +391 -0
  332. data/vendor/assets/javascripts/jquery-ui/widgets/checkboxradio.js +291 -0
  333. data/vendor/assets/javascripts/jquery-ui/widgets/controlgroup.js +300 -0
  334. data/vendor/assets/javascripts/jquery-ui/widgets/datepicker.js +2123 -0
  335. data/vendor/assets/javascripts/jquery-ui/widgets/dialog.js +954 -0
  336. data/vendor/assets/javascripts/jquery-ui/widgets/draggable.js +1259 -0
  337. data/vendor/assets/javascripts/jquery-ui/widgets/mouse.js +230 -0
  338. data/vendor/assets/javascripts/jquery-ui/widgets/resizable.js +1207 -0
  339. data/vendor/assets/javascripts/jquery-ui/widgets/sortable.js +1561 -0
  340. data/vendor/assets/javascripts/jquery-ui/widgets/tabs.js +931 -0
  341. metadata +182 -553
  342. data/.gitignore +0 -49
  343. data/.hound.yml +0 -11
  344. data/.travis.yml +0 -42
  345. data/.yardopts +0 -8
  346. data/Gemfile +0 -54
  347. data/Guardfile +0 -8
  348. data/Rakefile +0 -33
  349. data/activeadmin.gemspec +0 -28
  350. data/app/assets/images/active_admin/datepicker/datepicker-input-icon.png +0 -0
  351. data/app/assets/images/active_admin/nested_menu_arrow.gif +0 -0
  352. data/app/assets/images/active_admin/nested_menu_arrow_dark.gif +0 -0
  353. data/app/assets/images/active_admin/orderable.png +0 -0
  354. data/app/assets/javascripts/active_admin/application.js.coffee +0 -32
  355. data/app/assets/javascripts/active_admin/base.js.coffee +0 -14
  356. data/app/assets/javascripts/active_admin/ext/jquery-ui.js.coffee +0 -6
  357. data/app/assets/javascripts/active_admin/ext/jquery.js.coffee +0 -7
  358. data/app/assets/javascripts/active_admin/lib/batch_actions.js.coffee +0 -39
  359. data/app/assets/javascripts/active_admin/lib/checkbox-toggler.js.coffee +0 -36
  360. data/app/assets/javascripts/active_admin/lib/dropdown-menu.js.coffee +0 -101
  361. data/app/assets/javascripts/active_admin/lib/flash.js.coffee +0 -19
  362. data/app/assets/javascripts/active_admin/lib/has_many.js.coffee +0 -79
  363. data/app/assets/javascripts/active_admin/lib/modal_dialog.js.coffee +0 -37
  364. data/app/assets/javascripts/active_admin/lib/per_page.js.coffee +0 -27
  365. data/app/assets/javascripts/active_admin/lib/popover.js.coffee +0 -68
  366. data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.js.coffee +0 -24
  367. data/app/assets/stylesheets/active_admin/components/_popovers.scss +0 -122
  368. data/app/assets/stylesheets/active_admin/mixins/_icons.scss +0 -20
  369. data/app/assets/stylesheets/active_admin/mixins/_reset.scss +0 -165
  370. data/cucumber.yml +0 -3
  371. data/features/action_item.feature +0 -73
  372. data/features/authorization.feature +0 -64
  373. data/features/authorization_cancan.feature +0 -52
  374. data/features/authorization_pundit.feature +0 -37
  375. data/features/belongs_to.feature +0 -66
  376. data/features/breadcrumb.feature +0 -75
  377. data/features/comments/commenting.feature +0 -171
  378. data/features/comments/viewing_index.feature +0 -19
  379. data/features/dashboard.feature +0 -16
  380. data/features/decorators.feature +0 -41
  381. data/features/development_reloading.feature +0 -30
  382. data/features/edit_page.feature +0 -117
  383. data/features/favicon.feature +0 -20
  384. data/features/first_boot.feature +0 -16
  385. data/features/global_navigation.feature +0 -29
  386. data/features/i18n.feature +0 -43
  387. data/features/index/batch_actions.feature +0 -164
  388. data/features/index/filters.feature +0 -161
  389. data/features/index/format_as_csv.feature +0 -203
  390. data/features/index/formats.feature +0 -66
  391. data/features/index/index_as_block.feature +0 -15
  392. data/features/index/index_as_blog.feature +0 -69
  393. data/features/index/index_as_grid.feature +0 -45
  394. data/features/index/index_as_table.feature +0 -291
  395. data/features/index/index_blank_slate.feature +0 -83
  396. data/features/index/index_parameters.feature +0 -75
  397. data/features/index/index_scope_to.feature +0 -56
  398. data/features/index/index_scopes.feature +0 -251
  399. data/features/index/page_title.feature +0 -41
  400. data/features/index/pagination.feature +0 -59
  401. data/features/index/switch_index_view.feature +0 -73
  402. data/features/menu.feature +0 -53
  403. data/features/new_page.feature +0 -109
  404. data/features/registering_assets.feature +0 -35
  405. data/features/registering_pages.feature +0 -148
  406. data/features/registering_resources.feature +0 -33
  407. data/features/renamed_resource.feature +0 -32
  408. data/features/root_to.feature +0 -17
  409. data/features/show/default_content.feature +0 -43
  410. data/features/show/page_title.feature +0 -58
  411. data/features/show/tabs.feature +0 -27
  412. data/features/sidebar_sections.feature +0 -210
  413. data/features/site_title.feature +0 -47
  414. data/features/specifying_actions.feature +0 -93
  415. data/features/step_definitions/action_item_steps.rb +0 -7
  416. data/features/step_definitions/action_link_steps.rb +0 -20
  417. data/features/step_definitions/additional_web_steps.rb +0 -81
  418. data/features/step_definitions/asset_steps.rb +0 -15
  419. data/features/step_definitions/attribute_steps.rb +0 -18
  420. data/features/step_definitions/batch_action_steps.rb +0 -72
  421. data/features/step_definitions/blog_steps.rb +0 -3
  422. data/features/step_definitions/breadcrumb_steps.rb +0 -3
  423. data/features/step_definitions/comment_steps.rb +0 -12
  424. data/features/step_definitions/configuration_steps.rb +0 -100
  425. data/features/step_definitions/dashboard_steps.rb +0 -15
  426. data/features/step_definitions/factory_steps.rb +0 -34
  427. data/features/step_definitions/filter_steps.rb +0 -39
  428. data/features/step_definitions/flash_steps.rb +0 -11
  429. data/features/step_definitions/format_steps.rb +0 -52
  430. data/features/step_definitions/i18n_steps.rb +0 -3
  431. data/features/step_definitions/index_scope_steps.rb +0 -21
  432. data/features/step_definitions/index_views_steps.rb +0 -3
  433. data/features/step_definitions/layout_steps.rb +0 -3
  434. data/features/step_definitions/member_link_steps.rb +0 -7
  435. data/features/step_definitions/menu_steps.rb +0 -11
  436. data/features/step_definitions/pagination_steps.rb +0 -7
  437. data/features/step_definitions/sidebar_steps.rb +0 -13
  438. data/features/step_definitions/site_title_steps.rb +0 -17
  439. data/features/step_definitions/symbol_leak_steps.rb +0 -3
  440. data/features/step_definitions/tab_steps.rb +0 -8
  441. data/features/step_definitions/table_steps.rb +0 -119
  442. data/features/step_definitions/user_steps.rb +0 -45
  443. data/features/step_definitions/web_steps.rb +0 -85
  444. data/features/sti_resource.feature +0 -65
  445. data/features/strong_parameters.feature +0 -73
  446. data/features/support/env.rb +0 -145
  447. data/features/support/paths.rb +0 -71
  448. data/features/support/selectors.rb +0 -45
  449. data/features/symbol_leak.feature +0 -35
  450. data/features/users/logging_in.feature +0 -34
  451. data/features/users/logging_out.feature +0 -13
  452. data/features/users/resetting_password.feature +0 -34
  453. data/lib/active_admin/batch_actions/views/batch_action_popover.rb +0 -28
  454. data/lib/active_admin/event.rb +0 -33
  455. data/lib/active_admin/helpers/settings.rb +0 -115
  456. data/lib/active_admin/iconic/icons.rb +0 -142
  457. data/lib/active_admin/iconic.rb +0 -53
  458. data/lib/active_admin/view_helpers/icon_helper.rb +0 -12
  459. data/lib/active_admin/views/components/action_list_popover.rb +0 -29
  460. data/lib/active_admin/views/components/popover.rb +0 -27
  461. data/lib/generators/active_admin/assets/templates/active_admin.js.coffee +0 -1
  462. data/lib/generators/active_admin/resource/templates/admin.rb +0 -18
  463. data/script/local +0 -44
  464. data/script/travis_cache +0 -107
  465. data/script/use_rails +0 -53
  466. data/spec/javascripts/coffeescripts/jquery.aa.checkbox-toggler-spec.js.coffee +0 -50
  467. data/spec/javascripts/coffeescripts/jquery.aa.flash.js.coffee +0 -25
  468. data/spec/javascripts/coffeescripts/jquery.aa.popover-spec.js.coffee +0 -82
  469. data/spec/javascripts/coffeescripts/jquery.aa.table-checkbox-toggler-spec.js.coffee +0 -34
  470. data/spec/javascripts/fixtures/checkboxes.html +0 -9
  471. data/spec/javascripts/fixtures/flashes.html +0 -2
  472. data/spec/javascripts/fixtures/table_checkboxes.html +0 -17
  473. data/spec/javascripts/helpers/SpecHelper.js +0 -3
  474. data/spec/javascripts/support/jasmine.yml +0 -74
  475. data/spec/javascripts/support/jasmine_config.rb +0 -23
  476. data/spec/javascripts/support/jasmine_runner.rb +0 -32
  477. data/spec/rails_helper.rb +0 -154
  478. data/spec/requests/default_namespace_spec.rb +0 -61
  479. data/spec/requests/javascript_spec.rb +0 -20
  480. data/spec/requests/memory_spec.rb +0 -23
  481. data/spec/requests/stylesheets_spec.rb +0 -18
  482. data/spec/spec_helper.rb +0 -17
  483. data/spec/support/deferred_garbage_collection.rb +0 -19
  484. data/spec/support/detect_rails_version.rb +0 -34
  485. data/spec/support/integration_example_group.rb +0 -31
  486. data/spec/support/jslint.yml +0 -80
  487. data/spec/support/rails_template.rb +0 -138
  488. data/spec/support/rails_template_with_data.rb +0 -59
  489. data/spec/support/templates/admin/stores.rb +0 -9
  490. data/spec/support/templates/cucumber.rb +0 -24
  491. data/spec/support/templates/cucumber_with_reloading.rb +0 -5
  492. data/spec/support/templates/en.yml +0 -8
  493. data/spec/support/templates/policies/active_admin/comment_policy.rb +0 -9
  494. data/spec/support/templates/policies/active_admin/page_policy.rb +0 -18
  495. data/spec/support/templates/policies/admin_user_policy.rb +0 -11
  496. data/spec/support/templates/policies/application_policy.rb +0 -45
  497. data/spec/support/templates/policies/category_policy.rb +0 -7
  498. data/spec/support/templates/policies/post_policy.rb +0 -15
  499. data/spec/support/templates/policies/store_policy.rb +0 -11
  500. data/spec/support/templates/policies/user_policy.rb +0 -11
  501. data/spec/support/templates/post_decorator.rb +0 -11
  502. data/spec/unit/abstract_view_factory_spec.rb +0 -79
  503. data/spec/unit/action_builder_spec.rb +0 -132
  504. data/spec/unit/active_admin_spec.rb +0 -11
  505. data/spec/unit/application_spec.rb +0 -140
  506. data/spec/unit/asset_registration_spec.rb +0 -52
  507. data/spec/unit/authorization/authorization_adapter_spec.rb +0 -61
  508. data/spec/unit/authorization/controller_authorization_spec.rb +0 -39
  509. data/spec/unit/authorization/index_overriding_spec.rb +0 -22
  510. data/spec/unit/auto_link_spec.rb +0 -69
  511. data/spec/unit/batch_actions/resource_spec.rb +0 -92
  512. data/spec/unit/batch_actions/settings_spec.rb +0 -61
  513. data/spec/unit/belongs_to_spec.rb +0 -51
  514. data/spec/unit/cancan_adapter_spec.rb +0 -43
  515. data/spec/unit/comments_spec.rb +0 -166
  516. data/spec/unit/component_spec.rb +0 -18
  517. data/spec/unit/config_shared_examples.rb +0 -59
  518. data/spec/unit/controller_filters_spec.rb +0 -44
  519. data/spec/unit/csv_builder_spec.rb +0 -244
  520. data/spec/unit/dependency_spec.rb +0 -135
  521. data/spec/unit/devise_spec.rb +0 -96
  522. data/spec/unit/dsl_spec.rb +0 -122
  523. data/spec/unit/event_spec.rb +0 -47
  524. data/spec/unit/filters/filter_form_builder_spec.rb +0 -433
  525. data/spec/unit/filters/resource_spec.rb +0 -121
  526. data/spec/unit/form_builder_spec.rb +0 -752
  527. data/spec/unit/generators/install_spec.rb +0 -23
  528. data/spec/unit/helpers/collection_spec.rb +0 -65
  529. data/spec/unit/helpers/scope_chain_spec.rb +0 -36
  530. data/spec/unit/helpers/settings_spec.rb +0 -30
  531. data/spec/unit/i18n_spec.rb +0 -12
  532. data/spec/unit/menu_collection_spec.rb +0 -62
  533. data/spec/unit/menu_item_spec.rb +0 -143
  534. data/spec/unit/menu_spec.rb +0 -71
  535. data/spec/unit/namespace/authorization_spec.rb +0 -27
  536. data/spec/unit/namespace/register_page_spec.rb +0 -74
  537. data/spec/unit/namespace/register_resource_spec.rb +0 -161
  538. data/spec/unit/namespace_spec.rb +0 -103
  539. data/spec/unit/order_clause_spec.rb +0 -81
  540. data/spec/unit/page_controller_spec.rb +0 -5
  541. data/spec/unit/page_spec.rb +0 -78
  542. data/spec/unit/pretty_format_spec.rb +0 -63
  543. data/spec/unit/pundit_adapter_spec.rb +0 -98
  544. data/spec/unit/resource/action_items_spec.rb +0 -65
  545. data/spec/unit/resource/includes_spec.rb +0 -21
  546. data/spec/unit/resource/menu_spec.rb +0 -18
  547. data/spec/unit/resource/naming_spec.rb +0 -122
  548. data/spec/unit/resource/page_presenters_spec.rb +0 -44
  549. data/spec/unit/resource/pagination_spec.rb +0 -38
  550. data/spec/unit/resource/routes_spec.rb +0 -73
  551. data/spec/unit/resource/scopes_spec.rb +0 -50
  552. data/spec/unit/resource/sidebars_spec.rb +0 -43
  553. data/spec/unit/resource_collection_spec.rb +0 -158
  554. data/spec/unit/resource_controller/data_access_spec.rb +0 -140
  555. data/spec/unit/resource_controller/decorators_spec.rb +0 -83
  556. data/spec/unit/resource_controller/sidebars_spec.rb +0 -45
  557. data/spec/unit/resource_controller_spec.rb +0 -269
  558. data/spec/unit/resource_registration_spec.rb +0 -56
  559. data/spec/unit/resource_spec.rb +0 -278
  560. data/spec/unit/routing_spec.rb +0 -180
  561. data/spec/unit/scope_spec.rb +0 -190
  562. data/spec/unit/settings_spec.rb +0 -118
  563. data/spec/unit/view_factory_spec.rb +0 -21
  564. data/spec/unit/view_helpers/breadcrumbs_spec.rb +0 -217
  565. data/spec/unit/view_helpers/display_name_spec.rb +0 -69
  566. data/spec/unit/view_helpers/download_format_links_helper_spec.rb +0 -39
  567. data/spec/unit/view_helpers/fields_for_spec.rb +0 -50
  568. data/spec/unit/view_helpers/flash_helper_spec.rb +0 -25
  569. data/spec/unit/view_helpers/form_helper_spec.rb +0 -43
  570. data/spec/unit/view_helpers/method_or_proc_helper_spec.rb +0 -139
  571. data/spec/unit/views/components/action_list_popover_spec.rb +0 -40
  572. data/spec/unit/views/components/attributes_table_spec.rb +0 -272
  573. data/spec/unit/views/components/batch_action_popover_spec.rb +0 -47
  574. data/spec/unit/views/components/blank_slate_spec.rb +0 -27
  575. data/spec/unit/views/components/columns_spec.rb +0 -172
  576. data/spec/unit/views/components/index_list_spec.rb +0 -35
  577. data/spec/unit/views/components/index_table_for_spec.rb +0 -46
  578. data/spec/unit/views/components/paginated_collection_spec.rb +0 -236
  579. data/spec/unit/views/components/panel_spec.rb +0 -62
  580. data/spec/unit/views/components/popover_spec.rb +0 -33
  581. data/spec/unit/views/components/sidebar_section_spec.rb +0 -47
  582. data/spec/unit/views/components/site_title_spec.rb +0 -78
  583. data/spec/unit/views/components/status_tag_spec.rb +0 -235
  584. data/spec/unit/views/components/table_for_spec.rb +0 -384
  585. data/spec/unit/views/components/tabs_spec.rb +0 -39
  586. data/spec/unit/views/components/unsupported_browser_spec.rb +0 -47
  587. data/spec/unit/views/pages/form_spec.rb +0 -42
  588. data/spec/unit/views/pages/index_spec.rb +0 -60
  589. data/spec/unit/views/pages/layout_spec.rb +0 -59
  590. data/spec/unit/views/pages/show_spec.rb +0 -33
  591. data/spec/unit/views/tabbed_navigation_spec.rb +0 -158
  592. data/tasks/docs.rake +0 -37
  593. data/tasks/parallel_tests.rake +0 -66
  594. data/tasks/test.rake +0 -83
  595. data/tasks/yard.rake +0 -9
@@ -1,15 +1,19 @@
1
1
  module ActiveAdmin
2
- class AbstractViewFactory
3
- @@default_views = {}
2
+ class AbstractViewFactory < SettingsNode
4
3
 
5
4
  def self.register(view_hash)
6
5
  view_hash.each do |view_key, view_class|
7
- @@default_views[view_key] = view_class
6
+ super view_key, view_class
7
+ add_writer(view_key)
8
+ send "#{view_key}=", view_class
8
9
  end
9
10
  end
10
11
 
11
- def initialize
12
- @views = {}
12
+ def self.add_writer(name)
13
+ define_singleton_method("#{name}=") do |value|
14
+ value.builder_method name
15
+ instance_variable_set :"@#{name}", value
16
+ end
13
17
  end
14
18
 
15
19
  # Register a new view key with the view factory
@@ -25,61 +29,19 @@ module ActiveAdmin
25
29
  # another_view: OtherViewClass
26
30
  #
27
31
  def register(view_hash)
28
- view_hash.each do |view_key, view_class|
29
- @views[view_key] = view_class
30
- end
32
+ self.class.register view_hash
31
33
  end
32
34
 
33
35
  def default_for(key)
34
- @@default_views[key.to_sym]
35
- end
36
-
37
- def has_key?(key)
38
- @views.has_key?(key.to_sym) || @@default_views.has_key?(key.to_sym)
36
+ self.class.send key
39
37
  end
40
38
 
41
39
  def [](key)
42
- get_view_for_key(key)
40
+ send key
43
41
  end
44
42
 
45
43
  def []=(key, value)
46
- set_view_for_key(key, value)
47
- end
48
-
49
- def respond_to_missing?(method, include_private)
50
- key = key_from_method_name(method)
51
- if has_key?(key)
52
- true
53
- else
54
- super
55
- end
56
- end
57
-
58
- private
59
-
60
- def method_missing(method, *args)
61
- key = key_from_method_name(method)
62
- if has_key?(key)
63
- if method.to_s.include?('=')
64
- set_view_for_key key, args.first
65
- else
66
- get_view_for_key key
67
- end
68
- else
69
- super
70
- end
71
- end
72
-
73
- def key_from_method_name(method)
74
- method.to_s.tr('=', '').to_sym
75
- end
76
-
77
- def get_view_for_key(key)
78
- @views[key.to_sym] || @@default_views[key.to_sym]
79
- end
80
-
81
- def set_view_for_key(key, view)
82
- @views[key.to_sym] = view
44
+ send "#{key}=", value
83
45
  end
84
46
  end
85
47
  end
@@ -1,123 +1,52 @@
1
- require 'active_admin/router'
2
- require 'active_admin/helpers/settings'
1
+ require "active_admin/router"
2
+ require "active_admin/application_settings"
3
+ require "active_admin/namespace_settings"
3
4
 
4
5
  module ActiveAdmin
5
6
  class Application
6
- include Settings
7
- include Settings::Inheritance
8
7
 
9
- settings_inherited_by Namespace
10
-
11
- # The default namespace to put controllers and routes inside. Set this
12
- # in config/initializers/active_admin.rb using:
13
- #
14
- # config.default_namespace = :super_admin
15
- #
16
- setting :default_namespace, :admin
8
+ class << self
9
+ def setting(name, default)
10
+ ApplicationSettings.register name, default
11
+ end
17
12
 
18
- attr_reader :namespaces
19
- def initialize
20
- @namespaces = Namespace::Store.new
13
+ def inheritable_setting(name, default)
14
+ NamespaceSettings.register name, default
15
+ end
21
16
  end
22
17
 
23
- # Load paths for admin configurations. Add folders to this load path
24
- # to load up other resources for administration. External gems can
25
- # include their paths in this load path to provide active_admin UIs
26
- setting :load_paths, [File.expand_path('app/admin', Rails.root)]
27
-
28
- # The default number of resources to display on index pages
29
- inheritable_setting :default_per_page, 30
30
-
31
- # The title which gets displayed in the main layout
32
- inheritable_setting :site_title, ""
33
-
34
- # Set the site title link href (defaults to AA dashboard)
35
- inheritable_setting :site_title_link, ""
36
-
37
- # Set the site title image displayed in the main layout (has precendence over :site_title)
38
- inheritable_setting :site_title_image, ""
39
-
40
- # Set a favicon
41
- inheritable_setting :favicon, false
42
-
43
- # The view factory to use to generate all the view classes. Take
44
- # a look at ActiveAdmin::ViewFactory
45
- inheritable_setting :view_factory, ActiveAdmin::ViewFactory.new
46
-
47
- # The method to call in controllers to get the current user
48
- inheritable_setting :current_user_method, false
49
-
50
- # The method to call in the controllers to ensure that there
51
- # is a currently authenticated admin user
52
- inheritable_setting :authentication_method, false
53
-
54
- # The path to log user's out with. If set to a symbol, we assume
55
- # that it's a method to call which returns the path
56
- inheritable_setting :logout_link_path, :destroy_admin_user_session_path
57
-
58
- # The method to use when generating the link for user logout
59
- inheritable_setting :logout_link_method, :get
60
-
61
- # Whether the batch actions are enabled or not
62
- inheritable_setting :batch_actions, false
63
-
64
- # Whether filters are enabled
65
- inheritable_setting :filters, true
66
-
67
- # The namespace root.
68
- inheritable_setting :root_to, 'dashboard#index'
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
-
76
- # Default CSV options
77
- inheritable_setting :csv_options, { col_sep: ',', byte_order_mark: "\xEF\xBB\xBF" }
78
-
79
- # Default Download Links options
80
- inheritable_setting :download_links, true
81
-
82
- # The authorization adapter to use
83
- inheritable_setting :authorization_adapter, ActiveAdmin::AuthorizationAdapter
84
-
85
- # A proc to be used when a user is not authorized to view the current resource
86
- inheritable_setting :on_unauthorized_access, :rescue_active_admin_access_denied
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
- ]
18
+ def settings
19
+ @settings ||= SettingsNode.build(ApplicationSettings)
20
+ end
95
21
 
96
- # Set flash message keys that shouldn't show in ActiveAdmin
97
- inheritable_setting :flash_keys_to_except, ['timedout']
22
+ def namespace_settings
23
+ @namespace_settings ||= SettingsNode.build(NamespaceSettings)
24
+ end
98
25
 
99
- # Active Admin makes educated guesses when displaying objects, this is
100
- # the list of methods it tries calling in order
101
- setting :display_name_methods, [ :display_name,
102
- :full_name,
103
- :name,
104
- :username,
105
- :login,
106
- :title,
107
- :email,
108
- :to_s ]
26
+ def respond_to_missing?(method, include_private = false)
27
+ [settings, namespace_settings].any? { |sets| sets.respond_to?(method) } || super
28
+ end
109
29
 
110
- # == Deprecated Settings
30
+ def method_missing(method, *args)
31
+ if settings.respond_to?(method)
32
+ settings.send(method, *args)
33
+ elsif namespace_settings.respond_to?(method)
34
+ namespace_settings.send(method, *args)
35
+ else
36
+ super
37
+ end
38
+ end
111
39
 
112
- def allow_comments=(*)
113
- raise "`config.allow_comments` is no longer provided in ActiveAdmin 1.x. Use `config.comments` instead."
40
+ attr_reader :namespaces
41
+ def initialize
42
+ @namespaces = Namespace::Store.new
114
43
  end
115
44
 
116
45
  include AssetRegistration
117
46
 
118
47
  # Event that gets triggered on load of Active Admin
119
- BeforeLoadEvent = 'active_admin.application.before_load'.freeze
120
- AfterLoadEvent = 'active_admin.application.after_load'.freeze
48
+ BeforeLoadEvent = "active_admin.application.before_load".freeze
49
+ AfterLoadEvent = "active_admin.application.after_load".freeze
121
50
 
122
51
  # Runs before the app's AA initializer
123
52
  def setup!
@@ -132,7 +61,7 @@ module ActiveAdmin
132
61
 
133
62
  # Registers a brand new configuration for the given resource.
134
63
  def register(resource, options = {}, &block)
135
- ns = options.fetch(:namespace){ default_namespace }
64
+ ns = options.fetch(:namespace) { default_namespace }
136
65
  namespace(ns).register resource, options, &block
137
66
  end
138
67
 
@@ -144,9 +73,9 @@ module ActiveAdmin
144
73
  def namespace(name)
145
74
  name ||= :root
146
75
 
147
- namespace = namespaces[name] ||= begin
76
+ namespace = namespaces[name.to_sym] ||= begin
148
77
  namespace = Namespace.new(self, name)
149
- ActiveAdmin::Event.dispatch ActiveAdmin::Namespace::RegisterEvent, namespace
78
+ ActiveSupport::Notifications.publish ActiveAdmin::Namespace::RegisterEvent, namespace
150
79
  namespace
151
80
  end
152
81
 
@@ -162,7 +91,7 @@ module ActiveAdmin
162
91
  # @&block The registration block.
163
92
  #
164
93
  def register_page(name, options = {}, &block)
165
- ns = options.fetch(:namespace){ default_namespace }
94
+ ns = options.fetch(:namespace) { default_namespace }
166
95
  namespace(ns).register_page name, options, &block
167
96
  end
168
97
 
@@ -182,38 +111,43 @@ module ActiveAdmin
182
111
  # To reload everything simply call `ActiveAdmin.unload!`
183
112
  def load!
184
113
  unless loaded?
185
- ActiveAdmin::Event.dispatch BeforeLoadEvent, self # before_load hook
186
- files.each{ |file| load file } # load files
187
- namespace(default_namespace) # init AA resources
188
- ActiveAdmin::Event.dispatch AfterLoadEvent, self # after_load hook
114
+ ActiveSupport::Notifications.publish BeforeLoadEvent, self # before_load hook
115
+ files.each { |file| load file } # load files
116
+ namespace(default_namespace) # init AA resources
117
+ ActiveSupport::Notifications.publish AfterLoadEvent, self # after_load hook
189
118
  @@loaded = true
190
119
  end
191
120
  end
192
121
 
193
122
  def load(file)
194
- DatabaseHitDuringLoad.capture{ super }
123
+ DatabaseHitDuringLoad.capture { super }
195
124
  end
196
125
 
197
126
  # Returns ALL the files to be loaded
198
127
  def files
199
- load_paths.flatten.compact.uniq.flat_map{ |path| Dir["#{path}/**/*.rb"] }
128
+ load_paths.flatten.compact.uniq.flat_map { |path| Dir["#{path}/**/*.rb"] }.sort
200
129
  end
201
130
 
202
- def router
203
- @router ||= Router.new(self)
204
- end
205
-
206
- # One-liner called by user's config/routes.rb file
131
+ # Creates all the necessary routes for the ActiveAdmin configurations
132
+ #
133
+ # Use this within the routes.rb file:
134
+ #
135
+ # Application.routes.draw do |map|
136
+ # ActiveAdmin.routes(self)
137
+ # end
138
+ #
139
+ # @param rails_router [ActionDispatch::Routing::Mapper]
207
140
  def routes(rails_router)
208
141
  load!
209
- router.apply(rails_router)
142
+ Router.new(router: rails_router, namespaces: namespaces).apply
210
143
  end
211
144
 
212
145
  # Adds before, around and after filters to all controllers.
213
146
  # Example usage:
214
147
  # ActiveAdmin.before_filter :authenticate_admin!
215
148
  #
216
- %w(before_filter skip_before_filter after_filter skip_after_filter around_filter skip_filter).each do |name|
149
+ AbstractController::Callbacks::ClassMethods.public_instance_methods.
150
+ select { |m| m.match(/(filter|action)/) }.each do |name|
217
151
  define_method name do |*args, &block|
218
152
  controllers_for_filters.each do |controller|
219
153
  controller.public_send name, *args, &block
@@ -227,13 +161,12 @@ module ActiveAdmin
227
161
  controllers
228
162
  end
229
163
 
230
- private
164
+ private
231
165
 
232
166
  def register_default_assets
233
- register_stylesheet 'active_admin.css', media: 'screen'
234
- register_stylesheet 'active_admin/print.css', media: 'print'
235
-
236
- register_javascript 'active_admin.js'
167
+ register_stylesheet "active_admin.css", media: "screen"
168
+ register_stylesheet "active_admin/print.css", media: "print"
169
+ register_javascript "active_admin.js"
237
170
  end
238
171
 
239
172
  # Since app/admin is alphabetically before app/models, we have to remove it
@@ -243,23 +176,57 @@ module ActiveAdmin
243
176
  # files from being loaded twice in production.
244
177
  def remove_active_admin_load_paths_from_rails_autoload_and_eager_load
245
178
  ActiveSupport::Dependencies.autoload_paths -= load_paths
246
- Rails.application.config.eager_load_paths -= load_paths
179
+ Rails.application.config.eager_load_paths -= load_paths
247
180
  end
248
181
 
249
- # Hooks the app/admin directory into our Rails Engine's +watchable_dirs+, so the
250
- # files are automatically reloaded in your development environment.
182
+ # Hook into the Rails code reloading mechanism so that things are reloaded
183
+ # properly in development mode.
251
184
  #
252
- # If files have changed on disk, we forcibly unload all AA configurations, and
253
- # tell the host application to redraw routes (triggering AA itself to reload).
185
+ # If any of the app files (e.g. models) has changed, we need to reload all
186
+ # the admin files. If the admin files themselves has changed, we need to
187
+ # regenerate the routes as well.
254
188
  def attach_reloader
255
- load_paths.each do |path|
256
- ActiveAdmin::Engine.config.watchable_dirs[path] = [:rb]
257
- end
189
+ Rails.application.config.after_initialize do |app|
190
+ unload_active_admin = -> { ActiveAdmin.application.unload! }
191
+
192
+ if app.config.reload_classes_only_on_change
193
+ # Rails is about to unload all the app files (e.g. models), so we
194
+ # should first unload the classes generated by Active Admin, otherwise
195
+ # they will contain references to the stale (unloaded) classes.
196
+ ActiveSupport::Reloader.to_prepare(prepend: true, &unload_active_admin)
197
+ else
198
+ # If the user has configured the app to always reload app files after
199
+ # each request, so we should unload the generated classes too.
200
+ ActiveSupport::Reloader.to_complete(&unload_active_admin)
201
+ end
202
+
203
+ admin_dirs = {}
204
+
205
+ load_paths.each do |path|
206
+ admin_dirs[path] = [:rb]
207
+ end
208
+
209
+ routes_reloader = app.config.file_watcher.new([], admin_dirs) do
210
+ app.reload_routes!
211
+ end
258
212
 
259
- Rails.application.config.after_initialize do
260
- ActionDispatch::Reloader.to_prepare do
261
- ActiveAdmin.application.unload!
262
- Rails.application.reload_routes!
213
+ app.reloaders << routes_reloader
214
+
215
+ ActiveSupport::Reloader.to_prepare do
216
+ # Rails might have reloaded the routes for other reasons (e.g.
217
+ # routes.rb has changed), in which case Active Admin would have been
218
+ # loaded via the `ActiveAdmin.routes` call in `routes.rb`.
219
+ #
220
+ # Otherwise, we should check if any of the admin files are changed
221
+ # and force the routes to reload if necessary. This would again causes
222
+ # Active Admin to load via `ActiveAdmin.routes`.
223
+ #
224
+ # Finally, if Active Admin is still not loaded at this point, then we
225
+ # would need to load it manually.
226
+ unless ActiveAdmin.application.loaded?
227
+ routes_reloader.execute_if_updated
228
+ ActiveAdmin.application.load!
229
+ end
263
230
  end
264
231
  end
265
232
  end
@@ -0,0 +1,42 @@
1
+ require "active_admin/settings_node"
2
+
3
+ module ActiveAdmin
4
+ class ApplicationSettings < SettingsNode
5
+
6
+ # The default namespace to put controllers and routes inside. Set this
7
+ # in config/initializers/active_admin.rb using:
8
+ #
9
+ # config.default_namespace = :super_admin
10
+ #
11
+ register :default_namespace, :admin
12
+
13
+ register :app_path, Rails.root
14
+
15
+ # Load paths for admin configurations. Add folders to this load path
16
+ # to load up other resources for administration. External gems can
17
+ # include their paths in this load path to provide active_admin UIs
18
+ register :load_paths, [File.expand_path("app/admin", Rails.root)]
19
+
20
+ # Set default localize format for Date/Time values
21
+ register :localize_format, :long
22
+
23
+ # Active Admin makes educated guesses when displaying objects, this is
24
+ # the list of methods it tries calling in order
25
+ # Note that Formtastic also has 'collection_label_methods' similar to this
26
+ # used by auto generated dropdowns in filter or belongs_to field of Active Admin
27
+ register :display_name_methods, [ :display_name,
28
+ :full_name,
29
+ :name,
30
+ :username,
31
+ :login,
32
+ :title,
33
+ :email,
34
+ :to_s ]
35
+
36
+ # To make debugging easier, by default don't stream in development
37
+ register :disable_streaming_in, ["development"]
38
+
39
+ # Remove sensitive attributes from being displayed, made editable, or exported by default
40
+ register :filter_attributes, [:encrypted_password, :password, :password_confirmation]
41
+ end
42
+ end
@@ -2,15 +2,14 @@ module ActiveAdmin
2
2
 
3
3
  # Default Authorization permissions for Active Admin
4
4
  module Authorization
5
- READ = :read
6
- CREATE = :create
7
- UPDATE = :update
5
+ READ = :read
6
+ CREATE = :create
7
+ UPDATE = :update
8
8
  DESTROY = :destroy
9
9
  end
10
10
 
11
11
  Auth = Authorization
12
12
 
13
-
14
13
  # Active Admin's default authorization adapter. This adapter returns true
15
14
  # for all requests to `#authorized?`. It should be the starting point for
16
15
  # implementing your own authorization adapter.
@@ -19,7 +18,6 @@ module ActiveAdmin
19
18
  class AuthorizationAdapter
20
19
  attr_reader :resource, :user
21
20
 
22
-
23
21
  # Initialize a new authorization adapter. This happens on each and
24
22
  # every request to a controller.
25
23
  #
@@ -47,14 +45,13 @@ module ActiveAdmin
47
45
  # the class of the subject also. For example, Active Admin uses the class
48
46
  # of the resource to decide if the resource should be displayed in the
49
47
  # global navigation. To deal with this nicely in a case statement, take
50
- # a look at `#normalized(klasss)`
48
+ # a look at `#normalized(klass)`
51
49
  #
52
50
  # @return [Boolean]
53
51
  def authorized?(action, subject = nil)
54
52
  true
55
53
  end
56
54
 
57
-
58
55
  # A hook method for authorization libraries to scope the collection. By
59
56
  # default, we just return the same collection. The returned scope is used
60
57
  # as the starting point for all queries to the db in the controller.
@@ -1,16 +1,15 @@
1
1
  module ActiveAdmin
2
2
  class BaseController < ::InheritedResources::Base
3
3
  module Authorization
4
- include MethodOrProcHelper
5
4
  extend ActiveSupport::Concern
6
5
 
7
6
  ACTIONS_DICTIONARY = {
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,
7
+ index: ActiveAdmin::Authorization::READ,
8
+ show: ActiveAdmin::Authorization::READ,
9
+ new: ActiveAdmin::Authorization::CREATE,
10
+ create: ActiveAdmin::Authorization::CREATE,
11
+ edit: ActiveAdmin::Authorization::UPDATE,
12
+ update: ActiveAdmin::Authorization::UPDATE,
14
13
  destroy: ActiveAdmin::Authorization::DESTROY
15
14
  }
16
15
 
@@ -19,6 +18,7 @@ module ActiveAdmin
19
18
 
20
19
  helper_method :authorized?
21
20
  helper_method :authorize!
21
+ helper_method :active_admin_authorization
22
22
  end
23
23
 
24
24
  protected
@@ -38,7 +38,6 @@ module ActiveAdmin
38
38
  active_admin_authorization.authorized?(action, subject)
39
39
  end
40
40
 
41
-
42
41
  # Authorize the action and subject. Available in the controller
43
42
  # as well as all the views. If the action is not allowd, it raises
44
43
  # an ActiveAdmin::AccessDenied exception.
@@ -53,9 +52,10 @@ module ActiveAdmin
53
52
  # an ActiveAdmin::AccessDenied.
54
53
  def authorize!(action, subject = nil)
55
54
  unless authorized? action, subject
56
- raise ActiveAdmin::AccessDenied.new(current_active_admin_user,
57
- action,
58
- subject)
55
+ raise ActiveAdmin::AccessDenied.new(
56
+ current_active_admin_user,
57
+ action,
58
+ subject)
59
59
  end
60
60
  end
61
61
 
@@ -101,7 +101,7 @@ module ActiveAdmin
101
101
  end
102
102
 
103
103
  def dispatch_active_admin_access_denied(exception)
104
- call_method_or_exec_proc active_admin_namespace.on_unauthorized_access, exception
104
+ instance_exec(self, exception, &active_admin_namespace.on_unauthorized_access.to_proc)
105
105
  end
106
106
 
107
107
  def rescue_active_admin_access_denied(exception)
@@ -113,19 +113,14 @@ module ActiveAdmin
113
113
  redirect_backwards_or_to_root
114
114
  end
115
115
 
116
- format.csv { render text: error, status: :unauthorized }
117
- format.json { render json: { error: error }, status: :unauthorized }
118
- format.xml { render xml: "<error>#{error}</error>", status: :unauthorized }
116
+ format.csv { render body: error, status: :unauthorized }
117
+ format.json { render json: { error: error }, status: :unauthorized }
118
+ format.xml { render xml: "<error>#{error}</error>", status: :unauthorized }
119
119
  end
120
120
  end
121
121
 
122
122
  def redirect_backwards_or_to_root
123
- if request.headers.key? "HTTP_REFERER"
124
- redirect_to :back
125
- else
126
- controller, action = active_admin_namespace.root_to.split '#'
127
- redirect_to controller: controller, action: action
128
- end
123
+ redirect_back fallback_location: active_admin_root
129
124
  end
130
125
 
131
126
  end
@@ -4,7 +4,7 @@ module ActiveAdmin
4
4
  extend ActiveSupport::Concern
5
5
 
6
6
  included do
7
- before_filter :set_current_tab
7
+ before_action :set_current_tab
8
8
  helper_method :current_menu
9
9
  end
10
10
 
@@ -18,15 +18,15 @@ module ActiveAdmin
18
18
  # Get's called through a before filter
19
19
  def set_current_tab
20
20
  @current_tab = if current_menu && active_admin_config.belongs_to? && parent?
21
- parent_item = active_admin_config.belongs_to_config.target.menu_item
22
- if current_menu.include? parent_item
23
- parent_item
24
- else
25
- active_admin_config.menu_item
26
- end
27
- else
28
- active_admin_config.menu_item
29
- end
21
+ parent_item = active_admin_config.belongs_to_config.target.menu_item
22
+ if current_menu.include? parent_item
23
+ parent_item
24
+ else
25
+ active_admin_config.menu_item
26
+ end
27
+ else
28
+ active_admin_config.menu_item
29
+ end
30
30
  end
31
31
 
32
32
  end