activeadmin 1.0.0.pre4 → 2.4.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of activeadmin might be problematic. Click here for more details.

Files changed (542) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +529 -52
  3. data/CODE_OF_CONDUCT.md +64 -12
  4. data/CONTRIBUTING.md +129 -58
  5. data/README.md +80 -79
  6. data/app/assets/javascripts/active_admin/base.es6 +23 -0
  7. data/app/assets/javascripts/active_admin/ext/jquery-ui.es6 +7 -0
  8. data/app/assets/javascripts/active_admin/ext/jquery.es6 +9 -0
  9. data/app/assets/javascripts/active_admin/initializers/datepicker.es6 +16 -0
  10. data/app/assets/javascripts/active_admin/initializers/filters.es6 +45 -0
  11. data/app/assets/javascripts/active_admin/initializers/tabs.es6 +6 -0
  12. data/app/assets/javascripts/active_admin/lib/active_admin.es6 +41 -0
  13. data/app/assets/javascripts/active_admin/lib/batch_actions.es6 +59 -0
  14. data/app/assets/javascripts/active_admin/lib/checkbox-toggler.es6 +49 -0
  15. data/app/assets/javascripts/active_admin/lib/dropdown-menu.es6 +123 -0
  16. data/app/assets/javascripts/active_admin/lib/has_many.es6 +95 -0
  17. data/app/assets/javascripts/active_admin/lib/modal_dialog.es6 +61 -0
  18. data/app/assets/javascripts/active_admin/lib/per_page.es6 +47 -0
  19. data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.es6 +36 -0
  20. data/app/assets/stylesheets/active_admin/_base.scss +2 -2
  21. data/app/assets/stylesheets/active_admin/_forms.scss +19 -26
  22. data/app/assets/stylesheets/active_admin/components/_batch_actions.scss +0 -5
  23. data/app/assets/stylesheets/active_admin/components/_pagination.scss +11 -0
  24. data/app/assets/stylesheets/active_admin/components/_scopes.scss +3 -0
  25. data/app/assets/stylesheets/active_admin/components/_status_tags.scss +0 -4
  26. data/app/assets/stylesheets/active_admin/components/_tables.scss +4 -1
  27. data/app/assets/stylesheets/active_admin/components/_tabs.scss +1 -1
  28. data/app/assets/stylesheets/active_admin/mixins/_all.scss +0 -2
  29. data/app/assets/stylesheets/active_admin/mixins/_gradients.scss +1 -1
  30. data/app/assets/stylesheets/active_admin/print.scss +2 -3
  31. data/app/views/active_admin/devise/confirmations/new.html.erb +2 -2
  32. data/app/views/active_admin/devise/passwords/edit.html.erb +2 -2
  33. data/app/views/active_admin/devise/passwords/new.html.erb +2 -2
  34. data/app/views/active_admin/devise/registrations/new.html.erb +3 -4
  35. data/app/views/active_admin/devise/sessions/new.html.erb +2 -2
  36. data/app/views/active_admin/devise/shared/_error_messages.html.erb +15 -0
  37. data/app/views/active_admin/devise/shared/_links.erb +12 -6
  38. data/app/views/active_admin/devise/unlocks/new.html.erb +2 -2
  39. data/app/views/kaminari/active_admin/_first_page.html.erb +11 -0
  40. data/app/views/kaminari/active_admin/_gap.html.erb +8 -0
  41. data/app/views/kaminari/active_admin/_last_page.html.erb +11 -0
  42. data/app/views/kaminari/active_admin/_next_page.html.erb +11 -0
  43. data/app/views/kaminari/active_admin/_page.html.erb +12 -0
  44. data/app/views/kaminari/active_admin/_paginator.html.erb +25 -0
  45. data/app/views/kaminari/active_admin/_prev_page.html.erb +11 -0
  46. data/app/views/kaminari/active_admin_countless/_first_page.html.erb +11 -0
  47. data/app/views/kaminari/active_admin_countless/_gap.html.erb +8 -0
  48. data/app/views/kaminari/active_admin_countless/_next_page.html.erb +11 -0
  49. data/app/views/kaminari/active_admin_countless/_page.html.erb +12 -0
  50. data/app/views/kaminari/active_admin_countless/_paginator.html.erb +24 -0
  51. data/app/views/kaminari/active_admin_countless/_prev_page.html.erb +11 -0
  52. data/app/views/layouts/active_admin_logged_out.html.erb +2 -2
  53. data/config/locales/ar.yml +4 -5
  54. data/config/locales/bg.yml +1 -3
  55. data/config/locales/bs.yml +1 -2
  56. data/config/locales/ca.yml +2 -4
  57. data/config/locales/cs.yml +1 -2
  58. data/config/locales/da.yml +45 -14
  59. data/config/locales/de-CH.yml +2 -3
  60. data/config/locales/de.yml +30 -3
  61. data/config/locales/el.yml +3 -4
  62. data/config/locales/en-CA.yml +139 -0
  63. data/config/locales/en-GB.yml +44 -3
  64. data/config/locales/en.yml +31 -5
  65. data/config/locales/eo.yml +145 -0
  66. data/config/locales/es-MX.yml +5 -3
  67. data/config/locales/es.yml +32 -6
  68. data/config/locales/fa.yml +1 -2
  69. data/config/locales/fi.yml +2 -3
  70. data/config/locales/fr.yml +27 -5
  71. data/config/locales/he.yml +53 -7
  72. data/config/locales/hr.yml +1 -2
  73. data/config/locales/hu.yml +5 -2
  74. data/config/locales/id.yml +2 -3
  75. data/config/locales/it.yml +15 -7
  76. data/config/locales/ja.yml +8 -3
  77. data/config/locales/ko.yml +1 -2
  78. data/config/locales/lt.yml +27 -6
  79. data/config/locales/lv.yml +1 -2
  80. data/config/locales/mk.yml +134 -0
  81. data/config/locales/nb.yml +16 -7
  82. data/config/locales/nl.yml +13 -3
  83. data/config/locales/pl.yml +75 -5
  84. data/config/locales/pt-BR.yml +10 -3
  85. data/config/locales/pt-PT.yml +1 -2
  86. data/config/locales/ro.yml +1 -2
  87. data/config/locales/ru.yml +5 -3
  88. data/config/locales/sk.yml +168 -0
  89. data/config/locales/sv-SE.yml +4 -3
  90. data/config/locales/tr.yml +10 -2
  91. data/config/locales/uk.yml +4 -3
  92. data/config/locales/vi.yml +48 -8
  93. data/config/locales/zh-CN.yml +38 -7
  94. data/config/locales/zh-TW.yml +2 -3
  95. data/docs/.gitignore +1 -0
  96. data/docs/0-installation.md +19 -13
  97. data/docs/1-general-configuration.md +37 -4
  98. data/docs/10-custom-pages.md +47 -3
  99. data/docs/11-decorators.md +4 -0
  100. data/docs/12-arbre-components.md +73 -9
  101. data/docs/13-authorization-adapter.md +72 -35
  102. data/docs/14-gotchas.md +57 -19
  103. data/docs/2-resource-customization.md +64 -20
  104. data/docs/3-index-pages/custom-index.md +5 -1
  105. data/docs/3-index-pages/index-as-block.md +3 -5
  106. data/docs/3-index-pages/index-as-blog.md +4 -6
  107. data/docs/3-index-pages/index-as-grid.md +3 -5
  108. data/docs/3-index-pages/index-as-table.md +33 -12
  109. data/docs/3-index-pages.md +65 -9
  110. data/docs/4-csv-format.md +16 -0
  111. data/docs/5-forms.md +78 -17
  112. data/docs/6-show-pages.md +5 -29
  113. data/docs/7-sidebars.md +5 -1
  114. data/docs/8-custom-actions.md +18 -1
  115. data/docs/9-batch-actions.md +8 -4
  116. data/docs/CNAME +1 -0
  117. data/docs/Gemfile +3 -0
  118. data/docs/Gemfile.lock +248 -0
  119. data/docs/_config.yml +4 -0
  120. data/docs/_includes/footer.html +8 -0
  121. data/docs/_includes/google-analytics.html +16 -0
  122. data/docs/_includes/head.html +7 -0
  123. data/docs/_includes/toc.html +98 -0
  124. data/docs/_includes/top-menu.html +17 -0
  125. data/docs/_layouts/default.html +21 -0
  126. data/docs/documentation.md +60 -0
  127. data/docs/images/activeadmin.png +0 -0
  128. data/docs/images/code-header.png +0 -0
  129. data/docs/images/divider.png +0 -0
  130. data/docs/images/features.png +0 -0
  131. data/docs/images/tidelift.svg +14 -0
  132. data/docs/index.html +226 -0
  133. data/docs/stylesheets/main.css +1205 -0
  134. data/lib/active_admin/abstract_view_factory.rb +13 -51
  135. data/lib/active_admin/application.rb +50 -140
  136. data/lib/active_admin/application_settings.rb +42 -0
  137. data/lib/active_admin/authorization_adapter.rb +0 -3
  138. data/lib/active_admin/base_controller/authorization.rb +4 -7
  139. data/lib/active_admin/base_controller/menu.rb +10 -14
  140. data/lib/active_admin/base_controller.rb +8 -14
  141. data/lib/active_admin/batch_actions/controller.rb +3 -3
  142. data/lib/active_admin/batch_actions/resource_extension.rb +9 -13
  143. data/lib/active_admin/batch_actions/views/batch_action_form.rb +1 -1
  144. data/lib/active_admin/batch_actions/views/batch_action_selector.rb +1 -1
  145. data/lib/active_admin/batch_actions/views/selection_cells.rb +6 -5
  146. data/lib/active_admin/callbacks.rb +1 -1
  147. data/lib/active_admin/controller_action.rb +2 -1
  148. data/lib/active_admin/csv_builder.rb +15 -12
  149. data/lib/active_admin/dependency.rb +8 -76
  150. data/lib/active_admin/deprecation.rb +0 -25
  151. data/lib/active_admin/devise.rb +3 -3
  152. data/lib/active_admin/dsl.rb +3 -16
  153. data/lib/active_admin/dynamic_setting.rb +38 -0
  154. data/lib/active_admin/dynamic_settings_node.rb +28 -0
  155. data/lib/active_admin/engine.rb +5 -0
  156. data/lib/active_admin/error.rb +5 -3
  157. data/lib/active_admin/filters/active.rb +13 -14
  158. data/lib/active_admin/filters/active_filter.rb +124 -0
  159. data/lib/active_admin/filters/active_sidebar.rb +54 -0
  160. data/lib/active_admin/filters/forms.rb +6 -4
  161. data/lib/active_admin/filters/formtastic_addons.rb +2 -2
  162. data/lib/active_admin/filters/resource_extension.rb +28 -43
  163. data/lib/active_admin/filters.rb +2 -0
  164. data/lib/active_admin/form_builder.rb +100 -59
  165. data/lib/active_admin/generators/boilerplate.rb +12 -4
  166. data/lib/active_admin/helpers/collection.rb +2 -0
  167. data/lib/active_admin/helpers/scope_chain.rb +1 -0
  168. data/lib/active_admin/inputs/datepicker_input.rb +12 -5
  169. data/lib/active_admin/inputs/filters/base/search_method_select.rb +2 -2
  170. data/lib/active_admin/inputs/filters/date_range_input.rb +21 -8
  171. data/lib/active_admin/inputs/filters/select_input.rb +6 -3
  172. data/lib/active_admin/inputs/filters/text_input.rb +25 -0
  173. data/lib/active_admin/inputs.rb +1 -0
  174. data/lib/active_admin/localizers/resource_localizer.rb +35 -0
  175. data/lib/active_admin/localizers.rb +11 -0
  176. data/lib/active_admin/menu.rb +6 -12
  177. data/lib/active_admin/menu_collection.rb +0 -2
  178. data/lib/active_admin/menu_item.rb +4 -32
  179. data/lib/active_admin/namespace.rb +36 -17
  180. data/lib/active_admin/namespace_settings.rb +123 -0
  181. data/lib/active_admin/order_clause.rb +30 -8
  182. data/lib/active_admin/orm/active_record/comments/comment.rb +3 -17
  183. data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +19 -7
  184. data/lib/active_admin/orm/active_record/comments.rb +17 -11
  185. data/lib/active_admin/page.rb +23 -4
  186. data/lib/active_admin/page_controller.rb +2 -6
  187. data/lib/active_admin/page_dsl.rb +5 -1
  188. data/lib/active_admin/page_presenter.rb +2 -1
  189. data/lib/active_admin/pundit_adapter.rb +18 -5
  190. data/lib/active_admin/resource/action_items.rb +17 -5
  191. data/lib/active_admin/resource/attributes.rb +47 -0
  192. data/lib/active_admin/resource/belongs_to.rb +10 -1
  193. data/lib/active_admin/resource/menu.rb +7 -4
  194. data/lib/active_admin/resource/model.rb +15 -0
  195. data/lib/active_admin/resource/naming.rb +3 -3
  196. data/lib/active_admin/resource/ordering.rb +11 -0
  197. data/lib/active_admin/resource/page_presenters.rb +1 -1
  198. data/lib/active_admin/resource/routes.rb +52 -20
  199. data/lib/active_admin/resource/scopes.rb +5 -3
  200. data/lib/active_admin/resource/sidebars.rb +1 -1
  201. data/lib/active_admin/resource.rb +59 -7
  202. data/lib/active_admin/resource_collection.rb +2 -2
  203. data/lib/active_admin/resource_controller/action_builder.rb +10 -0
  204. data/lib/active_admin/resource_controller/data_access.rb +32 -27
  205. data/lib/active_admin/resource_controller/decorators.rb +5 -5
  206. data/lib/active_admin/resource_controller/polymorphic_routes.rb +36 -0
  207. data/lib/active_admin/resource_controller/resource_class_methods.rb +2 -0
  208. data/lib/active_admin/resource_controller/scoping.rb +1 -1
  209. data/lib/active_admin/resource_controller.rb +15 -0
  210. data/lib/active_admin/resource_dsl.rb +58 -24
  211. data/lib/active_admin/router.rb +90 -82
  212. data/lib/active_admin/scope.rb +20 -12
  213. data/lib/active_admin/settings_node.rb +19 -0
  214. data/lib/active_admin/sidebar_section.rb +3 -1
  215. data/lib/active_admin/version.rb +1 -1
  216. data/lib/active_admin/view_helpers/auto_link_helper.rb +2 -2
  217. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +2 -2
  218. data/lib/active_admin/view_helpers/display_helper.rb +28 -16
  219. data/lib/active_admin/view_helpers/download_format_links_helper.rb +13 -0
  220. data/lib/active_admin/view_helpers/fields_for.rb +1 -2
  221. data/lib/active_admin/view_helpers/form_helper.rb +2 -2
  222. data/lib/active_admin/view_helpers/method_or_proc_helper.rb +8 -1
  223. data/lib/active_admin/view_helpers/scope_name_helper.rb +16 -0
  224. data/lib/active_admin/view_helpers.rb +2 -1
  225. data/lib/active_admin/views/action_items.rb +1 -1
  226. data/lib/active_admin/views/components/active_admin_form.rb +43 -11
  227. data/lib/active_admin/views/components/attributes_table.rb +4 -4
  228. data/lib/active_admin/views/components/columns.rb +3 -3
  229. data/lib/active_admin/views/components/dropdown_menu.rb +4 -4
  230. data/lib/active_admin/views/components/index_list.rb +4 -3
  231. data/lib/active_admin/views/components/menu.rb +32 -0
  232. data/lib/active_admin/views/components/menu_item.rb +58 -0
  233. data/lib/active_admin/views/components/paginated_collection.rb +7 -11
  234. data/lib/active_admin/views/components/scopes.rb +14 -8
  235. data/lib/active_admin/views/components/sidebar.rb +13 -0
  236. data/lib/active_admin/views/components/site_title.rb +5 -6
  237. data/lib/active_admin/views/components/status_tag.rb +11 -16
  238. data/lib/active_admin/views/components/table_for.rb +7 -16
  239. data/lib/active_admin/views/components/tabs.rb +15 -3
  240. data/lib/active_admin/views/footer.rb +14 -4
  241. data/lib/active_admin/views/header.rb +3 -16
  242. data/lib/active_admin/views/index_as_blog.rb +2 -3
  243. data/lib/active_admin/views/index_as_grid.rb +25 -25
  244. data/lib/active_admin/views/index_as_table.rb +39 -13
  245. data/lib/active_admin/views/pages/base.rb +36 -57
  246. data/lib/active_admin/views/pages/form.rb +2 -3
  247. data/lib/active_admin/views/pages/layout.rb +1 -1
  248. data/lib/active_admin/views/pages/show.rb +8 -2
  249. data/lib/active_admin/views/tabbed_navigation.rb +4 -59
  250. data/lib/active_admin/views/title_bar.rb +4 -4
  251. data/lib/active_admin/views.rb +1 -1
  252. data/lib/active_admin.rb +11 -7
  253. data/lib/generators/active_admin/assets/assets_generator.rb +2 -2
  254. data/lib/generators/active_admin/assets/templates/active_admin.js +1 -0
  255. data/lib/generators/active_admin/devise/devise_generator.rb +8 -5
  256. data/lib/generators/active_admin/install/install_generator.rb +7 -3
  257. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +60 -4
  258. data/lib/generators/active_admin/install/templates/{admin_user.rb.erb → admin_users.rb.erb} +1 -3
  259. data/lib/generators/active_admin/install/templates/dashboard.rb +2 -3
  260. data/lib/generators/active_admin/install/templates/migrations/{create_active_admin_comments.rb → create_active_admin_comments.rb.erb} +2 -5
  261. data/lib/generators/active_admin/page/page_generator.rb +1 -1
  262. data/lib/generators/active_admin/resource/resource_generator.rb +2 -2
  263. data/lib/generators/active_admin/resource/templates/admin.rb.erb +46 -0
  264. data/lib/ransack_ext.rb +5 -5
  265. data/vendor/assets/javascripts/jquery-ui/data.js +41 -0
  266. data/vendor/assets/javascripts/jquery-ui/disable-selection.js +48 -0
  267. data/vendor/assets/javascripts/jquery-ui/escape-selector.js +23 -0
  268. data/vendor/assets/javascripts/jquery-ui/focusable.js +86 -0
  269. data/vendor/assets/javascripts/jquery-ui/form-reset-mixin.js +80 -0
  270. data/vendor/assets/javascripts/jquery-ui/form.js +22 -0
  271. data/vendor/assets/javascripts/jquery-ui/ie.js +17 -0
  272. data/vendor/assets/javascripts/jquery-ui/keycode.js +47 -0
  273. data/vendor/assets/javascripts/jquery-ui/labels.js +65 -0
  274. data/vendor/assets/javascripts/jquery-ui/plugin.js +46 -0
  275. data/vendor/assets/javascripts/jquery-ui/position.js +500 -0
  276. data/vendor/assets/javascripts/jquery-ui/safe-active-element.js +42 -0
  277. data/vendor/assets/javascripts/jquery-ui/safe-blur.js +23 -0
  278. data/vendor/assets/javascripts/jquery-ui/scroll-parent.js +47 -0
  279. data/vendor/assets/javascripts/jquery-ui/tabbable.js +38 -0
  280. data/vendor/assets/javascripts/jquery-ui/unique-id.js +51 -0
  281. data/vendor/assets/javascripts/jquery-ui/version.js +17 -0
  282. data/vendor/assets/javascripts/jquery-ui/widget.js +735 -0
  283. data/vendor/assets/javascripts/jquery-ui/widgets/button.js +391 -0
  284. data/vendor/assets/javascripts/jquery-ui/widgets/checkboxradio.js +291 -0
  285. data/vendor/assets/javascripts/jquery-ui/widgets/controlgroup.js +300 -0
  286. data/vendor/assets/javascripts/jquery-ui/widgets/datepicker.js +2123 -0
  287. data/vendor/assets/javascripts/jquery-ui/widgets/dialog.js +954 -0
  288. data/vendor/assets/javascripts/jquery-ui/widgets/draggable.js +1259 -0
  289. data/vendor/assets/javascripts/jquery-ui/widgets/mouse.js +230 -0
  290. data/vendor/assets/javascripts/jquery-ui/widgets/resizable.js +1207 -0
  291. data/vendor/assets/javascripts/jquery-ui/widgets/sortable.js +1561 -0
  292. data/vendor/assets/javascripts/jquery-ui/widgets/tabs.js +931 -0
  293. data/vendor/assets/stylesheets/active_admin/_normalize.scss +447 -0
  294. metadata +190 -539
  295. data/.gitignore +0 -49
  296. data/.hound.yml +0 -14
  297. data/.travis.yml +0 -46
  298. data/.yardopts +0 -8
  299. data/Gemfile +0 -75
  300. data/Guardfile +0 -8
  301. data/Rakefile +0 -33
  302. data/activeadmin.gemspec +0 -31
  303. data/app/assets/images/active_admin/datepicker/datepicker-input-icon.png +0 -0
  304. data/app/assets/javascripts/active_admin/base.js.coffee +0 -9
  305. data/app/assets/javascripts/active_admin/ext/jquery-ui.js.coffee +0 -6
  306. data/app/assets/javascripts/active_admin/ext/jquery.js.coffee +0 -7
  307. data/app/assets/javascripts/active_admin/initializers/batch_actions.js.coffee +0 -7
  308. data/app/assets/javascripts/active_admin/initializers/datepicker.js.coffee +0 -10
  309. data/app/assets/javascripts/active_admin/initializers/filters.js.coffee +0 -15
  310. data/app/assets/javascripts/active_admin/initializers/tabs.js.coffee +0 -3
  311. data/app/assets/javascripts/active_admin/jquery_ui.js.erb +0 -11
  312. data/app/assets/javascripts/active_admin/lib/batch_actions.js.coffee +0 -39
  313. data/app/assets/javascripts/active_admin/lib/checkbox-toggler.js.coffee +0 -36
  314. data/app/assets/javascripts/active_admin/lib/dropdown-menu.js.coffee +0 -101
  315. data/app/assets/javascripts/active_admin/lib/flash.js.coffee +0 -19
  316. data/app/assets/javascripts/active_admin/lib/has_many.js.coffee +0 -79
  317. data/app/assets/javascripts/active_admin/lib/modal_dialog.js.coffee +0 -45
  318. data/app/assets/javascripts/active_admin/lib/per_page.js.coffee +0 -31
  319. data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.js.coffee +0 -24
  320. data/app/assets/stylesheets/active_admin/mixins/_reset.scss +0 -165
  321. data/cucumber.yml +0 -3
  322. data/features/action_item.feature +0 -73
  323. data/features/authorization.feature +0 -64
  324. data/features/authorization_cancan.feature +0 -52
  325. data/features/authorization_pundit.feature +0 -37
  326. data/features/belongs_to.feature +0 -66
  327. data/features/breadcrumb.feature +0 -75
  328. data/features/comments/commenting.feature +0 -171
  329. data/features/comments/viewing_index.feature +0 -19
  330. data/features/dashboard.feature +0 -16
  331. data/features/decorators.feature +0 -43
  332. data/features/development_reloading.feature +0 -30
  333. data/features/edit_page.feature +0 -117
  334. data/features/favicon.feature +0 -20
  335. data/features/first_boot.feature +0 -16
  336. data/features/global_navigation.feature +0 -29
  337. data/features/i18n.feature +0 -43
  338. data/features/index/batch_actions.feature +0 -196
  339. data/features/index/filters.feature +0 -161
  340. data/features/index/format_as_csv.feature +0 -203
  341. data/features/index/formats.feature +0 -66
  342. data/features/index/index_as_block.feature +0 -15
  343. data/features/index/index_as_blog.feature +0 -69
  344. data/features/index/index_as_grid.feature +0 -45
  345. data/features/index/index_as_table.feature +0 -291
  346. data/features/index/index_blank_slate.feature +0 -83
  347. data/features/index/index_parameters.feature +0 -75
  348. data/features/index/index_scope_to.feature +0 -56
  349. data/features/index/index_scopes.feature +0 -251
  350. data/features/index/page_title.feature +0 -42
  351. data/features/index/pagination.feature +0 -63
  352. data/features/index/switch_index_view.feature +0 -73
  353. data/features/menu.feature +0 -53
  354. data/features/meta_tags.feature +0 -21
  355. data/features/new_page.feature +0 -109
  356. data/features/registering_assets.feature +0 -34
  357. data/features/registering_pages.feature +0 -148
  358. data/features/registering_resources.feature +0 -33
  359. data/features/renamed_resource.feature +0 -32
  360. data/features/root_to.feature +0 -17
  361. data/features/show/columns.feature +0 -40
  362. data/features/show/default_content.feature +0 -44
  363. data/features/show/page_title.feature +0 -59
  364. data/features/show/tabs.feature +0 -27
  365. data/features/sidebar_sections.feature +0 -210
  366. data/features/site_title.feature +0 -47
  367. data/features/specifying_actions.feature +0 -93
  368. data/features/step_definitions/action_item_steps.rb +0 -7
  369. data/features/step_definitions/action_link_steps.rb +0 -20
  370. data/features/step_definitions/additional_web_steps.rb +0 -81
  371. data/features/step_definitions/asset_steps.rb +0 -15
  372. data/features/step_definitions/attribute_steps.rb +0 -18
  373. data/features/step_definitions/batch_action_steps.rb +0 -81
  374. data/features/step_definitions/blog_steps.rb +0 -3
  375. data/features/step_definitions/breadcrumb_steps.rb +0 -3
  376. data/features/step_definitions/column_steps.rb +0 -8
  377. data/features/step_definitions/comment_steps.rb +0 -12
  378. data/features/step_definitions/configuration_steps.rb +0 -100
  379. data/features/step_definitions/dashboard_steps.rb +0 -15
  380. data/features/step_definitions/factory_steps.rb +0 -35
  381. data/features/step_definitions/filter_steps.rb +0 -39
  382. data/features/step_definitions/flash_steps.rb +0 -11
  383. data/features/step_definitions/format_steps.rb +0 -52
  384. data/features/step_definitions/i18n_steps.rb +0 -3
  385. data/features/step_definitions/index_scope_steps.rb +0 -21
  386. data/features/step_definitions/index_views_steps.rb +0 -3
  387. data/features/step_definitions/layout_steps.rb +0 -3
  388. data/features/step_definitions/member_link_steps.rb +0 -7
  389. data/features/step_definitions/menu_steps.rb +0 -11
  390. data/features/step_definitions/meta_tag_steps.rb +0 -3
  391. data/features/step_definitions/pagination_steps.rb +0 -15
  392. data/features/step_definitions/sidebar_steps.rb +0 -13
  393. data/features/step_definitions/site_title_steps.rb +0 -17
  394. data/features/step_definitions/symbol_leak_steps.rb +0 -3
  395. data/features/step_definitions/tab_steps.rb +0 -8
  396. data/features/step_definitions/table_steps.rb +0 -120
  397. data/features/step_definitions/user_steps.rb +0 -45
  398. data/features/step_definitions/web_steps.rb +0 -85
  399. data/features/sti_resource.feature +0 -65
  400. data/features/strong_parameters.feature +0 -73
  401. data/features/support/env.rb +0 -162
  402. data/features/support/paths.rb +0 -71
  403. data/features/support/selectors.rb +0 -45
  404. data/features/symbol_leak.feature +0 -35
  405. data/features/users/logging_in.feature +0 -34
  406. data/features/users/logging_out.feature +0 -13
  407. data/features/users/resetting_password.feature +0 -34
  408. data/lib/active_admin/event.rb +0 -24
  409. data/lib/active_admin/filters/humanized.rb +0 -68
  410. data/lib/active_admin/helpers/settings.rb +0 -115
  411. data/lib/active_admin/reloader.rb +0 -25
  412. data/lib/generators/active_admin/assets/templates/active_admin.js.coffee +0 -1
  413. data/lib/generators/active_admin/resource/templates/admin.rb +0 -45
  414. data/script/local +0 -53
  415. data/script/travis_cache +0 -107
  416. data/script/use_rails +0 -53
  417. data/spec/javascripts/coffeescripts/jquery.aa.checkbox-toggler-spec.js.coffee +0 -50
  418. data/spec/javascripts/coffeescripts/jquery.aa.flash.js.coffee +0 -25
  419. data/spec/javascripts/coffeescripts/jquery.aa.table-checkbox-toggler-spec.js.coffee +0 -34
  420. data/spec/javascripts/fixtures/checkboxes.html +0 -9
  421. data/spec/javascripts/fixtures/flashes.html +0 -2
  422. data/spec/javascripts/fixtures/table_checkboxes.html +0 -17
  423. data/spec/javascripts/helpers/SpecHelper.js +0 -3
  424. data/spec/javascripts/support/jasmine.yml +0 -74
  425. data/spec/javascripts/support/jasmine_config.rb +0 -23
  426. data/spec/javascripts/support/jasmine_runner.rb +0 -32
  427. data/spec/rails_helper.rb +0 -169
  428. data/spec/requests/default_namespace_spec.rb +0 -61
  429. data/spec/requests/javascript_spec.rb +0 -22
  430. data/spec/requests/memory_spec.rb +0 -21
  431. data/spec/requests/stylesheets_spec.rb +0 -18
  432. data/spec/spec_helper.rb +0 -17
  433. data/spec/support/active_admin_request_helpers.rb +0 -27
  434. data/spec/support/deferred_garbage_collection.rb +0 -19
  435. data/spec/support/detect_rails_version.rb +0 -34
  436. data/spec/support/jslint.yml +0 -80
  437. data/spec/support/rails_template.rb +0 -158
  438. data/spec/support/rails_template_with_data.rb +0 -55
  439. data/spec/support/templates/admin/stores.rb +0 -9
  440. data/spec/support/templates/en.yml +0 -8
  441. data/spec/support/templates/policies/active_admin/comment_policy.rb +0 -9
  442. data/spec/support/templates/policies/active_admin/page_policy.rb +0 -18
  443. data/spec/support/templates/policies/admin_user_policy.rb +0 -11
  444. data/spec/support/templates/policies/application_policy.rb +0 -45
  445. data/spec/support/templates/policies/category_policy.rb +0 -7
  446. data/spec/support/templates/policies/post_policy.rb +0 -15
  447. data/spec/support/templates/policies/store_policy.rb +0 -11
  448. data/spec/support/templates/policies/user_policy.rb +0 -11
  449. data/spec/support/templates/post_decorator.rb +0 -11
  450. data/spec/unit/abstract_view_factory_spec.rb +0 -79
  451. data/spec/unit/action_builder_spec.rb +0 -134
  452. data/spec/unit/active_admin_spec.rb +0 -11
  453. data/spec/unit/application_spec.rb +0 -165
  454. data/spec/unit/asset_registration_spec.rb +0 -52
  455. data/spec/unit/authorization/authorization_adapter_spec.rb +0 -61
  456. data/spec/unit/authorization/controller_authorization_spec.rb +0 -39
  457. data/spec/unit/authorization/index_overriding_spec.rb +0 -23
  458. data/spec/unit/auto_link_spec.rb +0 -69
  459. data/spec/unit/batch_actions/resource_spec.rb +0 -97
  460. data/spec/unit/batch_actions/settings_spec.rb +0 -61
  461. data/spec/unit/belongs_to_spec.rb +0 -65
  462. data/spec/unit/cancan_adapter_spec.rb +0 -43
  463. data/spec/unit/comments_spec.rb +0 -188
  464. data/spec/unit/component_spec.rb +0 -18
  465. data/spec/unit/config_shared_examples.rb +0 -59
  466. data/spec/unit/controller_filters_spec.rb +0 -41
  467. data/spec/unit/csv_builder_spec.rb +0 -303
  468. data/spec/unit/dependency_spec.rb +0 -135
  469. data/spec/unit/devise_spec.rb +0 -96
  470. data/spec/unit/dsl_spec.rb +0 -122
  471. data/spec/unit/filters/filter_form_builder_spec.rb +0 -434
  472. data/spec/unit/filters/humanized_spec.rb +0 -56
  473. data/spec/unit/filters/resource_spec.rb +0 -128
  474. data/spec/unit/form_builder_spec.rb +0 -815
  475. data/spec/unit/generators/install_spec.rb +0 -24
  476. data/spec/unit/helpers/collection_spec.rb +0 -65
  477. data/spec/unit/helpers/scope_chain_spec.rb +0 -36
  478. data/spec/unit/helpers/settings_spec.rb +0 -30
  479. data/spec/unit/i18n_spec.rb +0 -12
  480. data/spec/unit/menu_collection_spec.rb +0 -62
  481. data/spec/unit/menu_item_spec.rb +0 -143
  482. data/spec/unit/menu_spec.rb +0 -71
  483. data/spec/unit/namespace/authorization_spec.rb +0 -27
  484. data/spec/unit/namespace/register_page_spec.rb +0 -73
  485. data/spec/unit/namespace/register_resource_spec.rb +0 -160
  486. data/spec/unit/namespace_spec.rb +0 -103
  487. data/spec/unit/order_clause_spec.rb +0 -81
  488. data/spec/unit/page_controller_spec.rb +0 -5
  489. data/spec/unit/page_spec.rb +0 -78
  490. data/spec/unit/pretty_format_spec.rb +0 -77
  491. data/spec/unit/pundit_adapter_spec.rb +0 -98
  492. data/spec/unit/resource/action_items_spec.rb +0 -65
  493. data/spec/unit/resource/includes_spec.rb +0 -21
  494. data/spec/unit/resource/menu_spec.rb +0 -18
  495. data/spec/unit/resource/naming_spec.rb +0 -122
  496. data/spec/unit/resource/page_presenters_spec.rb +0 -44
  497. data/spec/unit/resource/pagination_spec.rb +0 -38
  498. data/spec/unit/resource/routes_spec.rb +0 -77
  499. data/spec/unit/resource/scopes_spec.rb +0 -50
  500. data/spec/unit/resource/sidebars_spec.rb +0 -43
  501. data/spec/unit/resource_collection_spec.rb +0 -175
  502. data/spec/unit/resource_controller/data_access_spec.rb +0 -140
  503. data/spec/unit/resource_controller/decorators_spec.rb +0 -94
  504. data/spec/unit/resource_controller/sidebars_spec.rb +0 -38
  505. data/spec/unit/resource_controller_spec.rb +0 -269
  506. data/spec/unit/resource_registration_spec.rb +0 -56
  507. data/spec/unit/resource_spec.rb +0 -331
  508. data/spec/unit/routing_spec.rb +0 -185
  509. data/spec/unit/scope_spec.rb +0 -185
  510. data/spec/unit/settings_spec.rb +0 -118
  511. data/spec/unit/view_factory_spec.rb +0 -19
  512. data/spec/unit/view_helpers/breadcrumbs_spec.rb +0 -217
  513. data/spec/unit/view_helpers/display_helper_spec.rb +0 -165
  514. data/spec/unit/view_helpers/download_format_links_helper_spec.rb +0 -39
  515. data/spec/unit/view_helpers/fields_for_spec.rb +0 -50
  516. data/spec/unit/view_helpers/flash_helper_spec.rb +0 -25
  517. data/spec/unit/view_helpers/form_helper_spec.rb +0 -43
  518. data/spec/unit/view_helpers/method_or_proc_helper_spec.rb +0 -139
  519. data/spec/unit/views/components/attributes_table_spec.rb +0 -272
  520. data/spec/unit/views/components/batch_action_selector_spec.rb +0 -43
  521. data/spec/unit/views/components/blank_slate_spec.rb +0 -27
  522. data/spec/unit/views/components/columns_spec.rb +0 -189
  523. data/spec/unit/views/components/index_list_spec.rb +0 -35
  524. data/spec/unit/views/components/index_table_for_spec.rb +0 -127
  525. data/spec/unit/views/components/paginated_collection_spec.rb +0 -249
  526. data/spec/unit/views/components/panel_spec.rb +0 -58
  527. data/spec/unit/views/components/sidebar_section_spec.rb +0 -68
  528. data/spec/unit/views/components/site_title_spec.rb +0 -78
  529. data/spec/unit/views/components/status_tag_spec.rb +0 -249
  530. data/spec/unit/views/components/table_for_spec.rb +0 -434
  531. data/spec/unit/views/components/tabs_spec.rb +0 -39
  532. data/spec/unit/views/components/unsupported_browser_spec.rb +0 -41
  533. data/spec/unit/views/index_as_blog_spec.rb +0 -76
  534. data/spec/unit/views/pages/form_spec.rb +0 -51
  535. data/spec/unit/views/pages/index_spec.rb +0 -60
  536. data/spec/unit/views/pages/layout_spec.rb +0 -59
  537. data/spec/unit/views/pages/show_spec.rb +0 -33
  538. data/spec/unit/views/tabbed_navigation_spec.rb +0 -158
  539. data/tasks/docs.rake +0 -37
  540. data/tasks/parallel_tests.rake +0 -66
  541. data/tasks/test.rake +0 -91
  542. data/tasks/yard.rake +0 -9
@@ -7,8 +7,11 @@ module ActiveAdmin
7
7
  class ResourceSelectionToggleCell < ActiveAdmin::Component
8
8
  builder_method :resource_selection_toggle_cell
9
9
 
10
- def build
11
- input type: "checkbox", id: "collection_selection_toggle_all", name: "collection_selection_toggle_all", class: "toggle_all"
10
+ def build(label_text = '')
11
+ label do
12
+ input type: "checkbox", id: "collection_selection_toggle_all", name: "collection_selection_toggle_all", class: "toggle_all"
13
+ text_node label_text if label_text.present?
14
+ end
12
15
  end
13
16
  end
14
17
 
@@ -27,10 +30,8 @@ module ActiveAdmin
27
30
 
28
31
  def build
29
32
  super(id: "collection_selection_toggle_panel")
30
- resource_selection_toggle_cell
31
- div(id: "collection_selection_toggle_explaination" ) { I18n.t('active_admin.batch_actions.selection_toggle_explanation', default: "(Toggle Selection)") }
33
+ resource_selection_toggle_cell(I18n.t('active_admin.batch_actions.selection_toggle_explanation', default: "(Toggle Selection)"))
32
34
  end
33
-
34
35
  end
35
36
 
36
37
  end
@@ -75,7 +75,7 @@ module ActiveAdmin
75
75
 
76
76
  # def run_create_callbacks
77
77
  define_method "run_#{name}_callbacks" do |*args, &block|
78
- self.class.send("before_#{name}_callbacks").each{ |cbk| run_callback(cbk, *args) }
78
+ self.class.send("before_#{name}_callbacks").each { |cbk| run_callback(cbk, *args) }
79
79
  value = block.try :call
80
80
  self.class.send("after_#{name}_callbacks").each { |cbk| run_callback(cbk, *args) }
81
81
  return value
@@ -2,7 +2,8 @@ module ActiveAdmin
2
2
  class ControllerAction
3
3
  attr_reader :name
4
4
  def initialize(name, options = {})
5
- @name, @options = name, options
5
+ @name = name
6
+ @options = options
6
7
  end
7
8
 
8
9
  def http_verb
@@ -22,7 +22,7 @@ module ActiveAdmin
22
22
  def self.default_for_resource(resource)
23
23
  new resource: resource do
24
24
  column :id
25
- resource.content_columns.each { |c| column c.name.to_sym }
25
+ resource.content_columns.each { |c| column c }
26
26
  end
27
27
  end
28
28
 
@@ -30,33 +30,36 @@ module ActiveAdmin
30
30
 
31
31
  COLUMN_TRANSITIVE_OPTIONS = [:humanize_name].freeze
32
32
 
33
- def initialize(options={}, &block)
33
+ def initialize(options = {}, &block)
34
34
  @resource = options.delete(:resource)
35
- @columns, @options, @block = [], options, block
35
+ @columns = []
36
+ @options = ActiveAdmin.application.csv_options.merge options
37
+ @block = block
36
38
  end
37
39
 
38
- def column(name, options={}, &block)
40
+ def column(name, options = {}, &block)
39
41
  @columns << Column.new(name, @resource, column_transitive_options.merge(options), block)
40
42
  end
41
43
 
42
44
  def build(controller, csv)
43
45
  @collection = controller.send :find_collection, except: :pagination
44
46
  columns = exec_columns controller.view_context
45
- options = ActiveAdmin.application.csv_options.merge self.options
46
47
  bom = options.delete :byte_order_mark
47
48
  column_names = options.delete(:column_names) { true }
48
- csv_options = options.except :encoding_options
49
+ csv_options = options.except :encoding_options, :humanize_name
49
50
 
50
51
  csv << bom if bom
51
52
 
52
53
  if column_names
53
- csv << CSV.generate_line(columns.map{ |c| encode c.name, options }, csv_options)
54
+ csv << CSV.generate_line(columns.map { |c| encode c.name, options }, csv_options)
54
55
  end
55
56
 
56
- (1..paginated_collection.total_pages).each do |page|
57
- paginated_collection(page).each do |resource|
58
- resource = controller.send :apply_decorator, resource
59
- csv << CSV.generate_line(build_row(resource, columns, options), csv_options)
57
+ ActiveRecord::Base.uncached do
58
+ (1..paginated_collection.total_pages).each do |page|
59
+ paginated_collection(page).each do |resource|
60
+ resource = controller.send :apply_decorator, resource
61
+ csv << CSV.generate_line(build_row(resource, columns, options), csv_options)
62
+ end
60
63
  end
61
64
  end
62
65
 
@@ -105,7 +108,7 @@ module ActiveAdmin
105
108
 
106
109
  def humanize_name(name, resource, humanize_name_option)
107
110
  if humanize_name_option
108
- name.is_a?(Symbol) && resource.present? ? resource.human_attribute_name(name) : name.to_s.humanize
111
+ name.is_a?(Symbol) && resource ? resource.resource_class.human_attribute_name(name) : name.to_s.humanize
109
112
  else
110
113
  name.to_s
111
114
  end
@@ -1,7 +1,7 @@
1
1
  module ActiveAdmin
2
2
  module Dependency
3
3
  module Requirements
4
- DEVISE = '>= 3.2', '< 5'
4
+ DEVISE = '>= 4.0', '< 5'
5
5
  end
6
6
 
7
7
  # Provides a clean interface to check for gem dependencies at runtime.
@@ -21,11 +21,11 @@ module ActiveAdmin
21
21
  # ActiveAdmin::Dependency.draper? '~> 1.2.0'
22
22
  # => true
23
23
  #
24
- # ActiveAdmin::Dependency.rails? '>= 4.1.0', '<= 4.1.1'
24
+ # ActiveAdmin::Dependency.rails? '>= 4.2.7', '<= 5.0.2'
25
25
  # => true
26
26
  #
27
- # ActiveAdmin::Dependency.rails! '2'
28
- # -> ActiveAdmin::DependencyError: You provided rails 3.2.18 but we need: 2.
27
+ # ActiveAdmin::Dependency.rails! '5'
28
+ # -> ActiveAdmin::DependencyError: You provided rails 4.2.7 but we need: 5.
29
29
  #
30
30
  # ActiveAdmin::Dependency.devise!
31
31
  # -> ActiveAdmin::DependencyError: To use devise you need to specify it in your Gemfile.
@@ -33,12 +33,12 @@ module ActiveAdmin
33
33
  #
34
34
  # All but the pessimistic operator (~>) can also be run using Ruby's comparison syntax.
35
35
  #
36
- # ActiveAdmin::Dependency.rails >= '3.2.18'
36
+ # ActiveAdmin::Dependency.rails >= '4.2.7'
37
37
  # => true
38
38
  #
39
39
  # Which is especially useful if you're looking up a gem with dashes in the name.
40
40
  #
41
- # ActiveAdmin::Dependency['jquery-ui-rails'] < 5
41
+ # ActiveAdmin::Dependency['jquery-rails'] < 5
42
42
  # => false
43
43
  #
44
44
  def self.method_missing(name, *args)
@@ -55,8 +55,8 @@ module ActiveAdmin
55
55
  Matcher.new name.to_s
56
56
  end
57
57
 
58
- def self.rails5?
59
- rails >= '5.x'
58
+ def self.supports_zeitwerk?
59
+ rails >= "6.0.0.beta3" && RUBY_ENGINE != "jruby"
60
60
  end
61
61
 
62
62
  class Matcher
@@ -94,74 +94,6 @@ module ActiveAdmin
94
94
  info = spec ? "#{spec.name} #{spec.version}" : '(missing)'
95
95
  "<ActiveAdmin::Dependency::Matcher for #{info}>"
96
96
  end
97
-
98
- def adapter
99
- @adapter ||= Adapter.const_get(@name.camelize).new self
100
- end
101
-
102
- def method_missing(method, *args, &block)
103
- if respond_to_missing?(method)
104
- adapter.send method, *args, &block
105
- else
106
- super
107
- end
108
- end
109
-
110
- def respond_to_missing?(method, include_private = false)
111
- adapter.respond_to?(method) || super
112
- rescue NameError
113
- # 🐾
114
- end
115
- end
116
-
117
- # Dependency adapters provide an easy way to wrap the conditional logic
118
- # necessary to support multiple versions of a gem.
119
- #
120
- # ActiveAdmin::Dependency.rails.adapter.parameterize 'a b'
121
- # => 'a_b'
122
- #
123
- # ActiveAdmin::Dependency.rails.parameterize 'a b'
124
- # => 'a_b'
125
- #
126
- # ActiveAdmin::Dependency.devise.adapter
127
- # -> NameError: uninitialized constant ActiveAdmin::Dependency::Adapter::Devise
128
- #
129
- module Adapter
130
- class Base
131
- def initialize(version)
132
- @version = version
133
- end
134
- end
135
-
136
- class Rails < Base
137
- def strong_parameters?
138
- @version >= 4 || defined?(ActionController::StrongParameters)
139
- end
140
-
141
- def parameterize(string)
142
- if Dependency.rails5?
143
- string.parameterize separator: '_'
144
- else
145
- string.parameterize '_'
146
- end
147
- end
148
-
149
- def redirect_back(controller, fallback_location)
150
- controller.instance_exec do
151
- if Dependency.rails5?
152
- redirect_back fallback_location: fallback_location
153
- elsif controller.request.headers.key? 'HTTP_REFERER'
154
- redirect_to :back
155
- else
156
- redirect_to fallback_location
157
- end
158
- end
159
- end
160
-
161
- def render_key
162
- Dependency.rails5? ? :body : :text
163
- end
164
- end
165
97
  end
166
98
 
167
99
  end
@@ -6,30 +6,5 @@ module ActiveAdmin
6
6
  ActiveSupport::Deprecation.warn "Active Admin: #{message}", callstack
7
7
  end
8
8
 
9
- # Deprecate a method.
10
- #
11
- # @param [Module] klass the Class or Module to deprecate the method on
12
- # @param [Symbol] method the method to deprecate
13
- # @param [String] message the message to display to the end user
14
- #
15
- # Example:
16
- #
17
- # class MyClass
18
- # def my_method
19
- # # ...
20
- # end
21
- # ActiveAdmin::Deprecation.deprecate self, :my_method,
22
- # "MyClass#my_method is being removed in the next release"
23
- # end
24
- #
25
- def deprecate(klass, method, message)
26
- klass.send :define_method, "deprecated_#{method}", klass.instance_method(method)
27
-
28
- klass.send :define_method, method do |*args|
29
- ActiveAdmin::Deprecation.warn "#{message}", caller
30
- send "deprecated_#{method}", *args
31
- end
32
- end
33
-
34
9
  end
35
10
  end
@@ -43,7 +43,7 @@ module ActiveAdmin
43
43
  "/#{namespace}"
44
44
  end
45
45
 
46
- # NOTE: `relative_url_root` is deprecated by rails.
46
+ # NOTE: `relative_url_root` is deprecated by Rails.
47
47
  # Remove prefix here if it is removed completely.
48
48
  prefix = Rails.configuration.action_controller[:relative_url_root] || ''
49
49
  prefix + path
@@ -63,11 +63,11 @@ module ActiveAdmin
63
63
  end
64
64
 
65
65
  class RegistrationsController < ::Devise::RegistrationsController
66
- include ::ActiveAdmin::Devise::Controller
66
+ include ::ActiveAdmin::Devise::Controller
67
67
  end
68
68
 
69
69
  class ConfirmationsController < ::Devise::ConfirmationsController
70
- include ::ActiveAdmin::Devise::Controller
70
+ include ::ActiveAdmin::Devise::Controller
71
71
  end
72
72
 
73
73
  def self.controllers_for_filters
@@ -83,14 +83,7 @@ module ActiveAdmin
83
83
  # this action item on.
84
84
  # :except: A single or array of controller actions not to
85
85
  # display this action item on.
86
- def action_item(name = nil, options = {}, &block)
87
- if name.is_a?(Hash)
88
- options = name
89
- name = nil
90
- end
91
-
92
- Deprecation.warn "using `action_item` without a name is deprecated! Use `action_item(:edit)`." unless name
93
-
86
+ def action_item(name, options = {}, &block)
94
87
  config.add_action_item(name, options, &block)
95
88
  end
96
89
 
@@ -116,7 +109,7 @@ module ActiveAdmin
116
109
 
117
110
  # Either add/remove the batch action
118
111
  unless options == false
119
- config.add_batch_action( sym, title, options, &block )
112
+ config.add_batch_action(sym, title, options, &block)
120
113
  else
121
114
  config.remove_batch_action sym
122
115
  end
@@ -137,7 +130,7 @@ module ActiveAdmin
137
130
  # Pass a block returning the name of a menu you want rendered for the request, being
138
131
  # executed in the context of the controller
139
132
  #
140
- def navigation_menu(menu_name=nil, &block)
133
+ def navigation_menu(menu_name = nil, &block)
141
134
  config.navigation_menu_name = menu_name || block
142
135
  end
143
136
 
@@ -163,11 +156,5 @@ module ActiveAdmin
163
156
  config.sidebar_sections << ActiveAdmin::SidebarSection.new(name, options, &block)
164
157
  end
165
158
 
166
- def decorate_with(decorator_class)
167
- # Force storage as a string. This will help us with reloading issues.
168
- # Assuming decorator_class.to_s will return the name of the class allows
169
- # us to handle a string or a class.
170
- config.decorator_class_name = "::#{ decorator_class }"
171
- end
172
159
  end
173
160
  end
@@ -0,0 +1,38 @@
1
+ module ActiveAdmin
2
+
3
+ class DynamicSetting
4
+ def self.build(setting, type)
5
+ (type ? klass(type) : self).new(setting)
6
+ end
7
+
8
+ def self.klass(type)
9
+ klass = "#{type.to_s.camelcase}Setting"
10
+ raise ArgumentError, "Unknown type: #{type}" unless ActiveAdmin.const_defined?(klass)
11
+ ActiveAdmin.const_get(klass)
12
+ end
13
+
14
+ def initialize(setting)
15
+ @setting = setting
16
+ end
17
+
18
+ def value(*_args)
19
+ @setting
20
+ end
21
+ end
22
+
23
+ # Many configuration options (Ex: site_title, title_image) could either be
24
+ # static (String), methods (Symbol) or procs (Proc). This wrapper takes care of
25
+ # returning the content when String or using instance_eval when Symbol or Proc.
26
+ #
27
+ class StringSymbolOrProcSetting < DynamicSetting
28
+ def value(context = self)
29
+ case @setting
30
+ when Symbol, Proc
31
+ context.instance_eval(&@setting)
32
+ else
33
+ @setting
34
+ end
35
+ end
36
+ end
37
+
38
+ end
@@ -0,0 +1,28 @@
1
+ require 'active_admin/dynamic_setting'
2
+ require 'active_admin/settings_node'
3
+
4
+ module ActiveAdmin
5
+
6
+ class DynamicSettingsNode < SettingsNode
7
+ class << self
8
+ def register(name, value, type = nil)
9
+ class_attribute "#{name}_setting"
10
+ add_reader(name)
11
+ add_writer(name, type)
12
+ send "#{name}=", value
13
+ end
14
+
15
+ def add_reader(name)
16
+ define_singleton_method(name) do |*args|
17
+ send("#{name}_setting").value(*args)
18
+ end
19
+ end
20
+
21
+ def add_writer(name, type)
22
+ define_singleton_method("#{name}=") do |value|
23
+ send("#{name}_setting=", DynamicSetting.build(value, type))
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -1,5 +1,10 @@
1
1
  module ActiveAdmin
2
2
  class Engine < ::Rails::Engine
3
+ initializer "active_admin.load_app_path" do |app|
4
+ ActiveAdmin::Application.setting :app_path, app.root
5
+ ActiveAdmin::Application.setting :load_paths, [File.expand_path('app/admin', app.root)]
6
+ end
7
+
3
8
  initializer "active_admin.precompile", group: :all do |app|
4
9
  ActiveAdmin.application.stylesheets.each do |path, _|
5
10
  app.config.assets.precompile << path
@@ -5,8 +5,10 @@ module ActiveAdmin
5
5
  class AccessDenied < StandardError
6
6
  attr_reader :user, :action, :subject
7
7
 
8
- def initialize(user, action, subject)
9
- @user, @action, @subject = user, action, subject
8
+ def initialize(user, action, subject = nil)
9
+ @user = user
10
+ @action = action
11
+ @subject = subject
10
12
 
11
13
  super()
12
14
  end
@@ -22,7 +24,7 @@ module ActiveAdmin
22
24
  class ErrorLoading < Error
23
25
  # Locates the most recent file and line from the caught exception's backtrace.
24
26
  def find_cause(folder, backtrace)
25
- backtrace.grep(/\/(#{folder}\/.*\.rb):(\d+)/){ [$1, $2] }.first
27
+ backtrace.grep(/\/(#{folder}\/.*\.rb):(\d+)/) { [$1, $2] }.first
26
28
  end
27
29
  end
28
30
 
@@ -1,29 +1,28 @@
1
- require 'active_admin/filters/humanized'
1
+ require 'active_admin/filters/active_filter'
2
2
 
3
3
  module ActiveAdmin
4
4
  module Filters
5
5
 
6
6
  class Active
7
- attr_accessor :filters, :scope
7
+ attr_accessor :filters, :resource
8
8
 
9
- def initialize(resource_class, params)
10
- @resource_class = resource_class
11
- @params = params.respond_to?(:to_unsafe_h) ? params.to_unsafe_h : params
12
- @scope = humanize_scope
13
- @filters = build_filters
9
+ # Instantiate a `Active` object containing collection of current active filters
10
+
11
+ # @param resource [ActiveAdmin::Resource] current resource
12
+ # @param search [Ransack::Search] search object
13
+ #
14
+ # @see ActiveAdmin::ResourceController::DataAcces#apply_filtering
15
+ def initialize(resource, search)
16
+ @resource = resource
17
+ @filters = build_filters(search.conditions)
14
18
  end
15
19
 
16
20
  private
17
21
 
18
- def build_filters
19
- filters = @params[:q] || []
20
- filters.map{ |param| Humanized.new(param) }
22
+ def build_filters(conditions)
23
+ conditions.map { |condition| ActiveFilter.new(resource, condition.dup) }
21
24
  end
22
25
 
23
- def humanize_scope
24
- scope = @params['scope']
25
- scope ? scope.humanize : "All"
26
- end
27
26
  end
28
27
 
29
28
  end
@@ -0,0 +1,124 @@
1
+ module ActiveAdmin
2
+ module Filters
3
+
4
+ class ActiveFilter
5
+ include ActiveAdmin::ViewHelpers
6
+
7
+ attr_reader :resource, :condition, :related_class
8
+
9
+ # Instantiate a `ActiveFilter`
10
+ #
11
+ # @param resource [ActiveAdmin::Resource] current resource
12
+ # @param condition [Ransack::Nodes::Condition] applied ransack condition
13
+ def initialize(resource, condition)
14
+ @resource = resource
15
+ @condition = condition
16
+ @related_class = find_class if find_class?
17
+ end
18
+
19
+ def values
20
+ condition_values = condition.values.map(&:value)
21
+ if related_class
22
+ related_class.where(related_primary_key => condition_values)
23
+ else
24
+ condition_values
25
+ end
26
+ end
27
+
28
+ def label
29
+ translated_predicate = predicate_name.downcase
30
+ if filter_label && filter_label.is_a?(Proc)
31
+ "#{filter_label.call} #{translated_predicate}"
32
+ elsif filter_label
33
+ "#{filter_label} #{translated_predicate}"
34
+ elsif related_class
35
+ "#{related_class_name} #{translated_predicate}"
36
+ else
37
+ "#{attribute_name} #{translated_predicate}"
38
+ end.strip
39
+ end
40
+
41
+ def predicate_name
42
+ I18n.t("active_admin.filters.predicates.#{condition.predicate.name}",
43
+ default: ransack_predicate_name)
44
+ end
45
+
46
+ def html_options
47
+ { class: "current_filter current_filter_#{condition.key}" }
48
+ end
49
+
50
+ private
51
+
52
+ def resource_class
53
+ resource.resource_class
54
+ end
55
+
56
+ def attribute_name
57
+ resource_class.human_attribute_name(name)
58
+ end
59
+
60
+ def related_class_name
61
+ return unless related_class
62
+
63
+ related_class.model_name.human
64
+ end
65
+
66
+ def filter_label
67
+ return unless filter
68
+
69
+ filter[:label] || I18n.t(name, scope: ['formtastic', 'labels'], default: nil)
70
+ end
71
+
72
+ #@return Ransack::Nodes::Attribute
73
+ def condition_attribute
74
+ condition.attributes[0]
75
+ end
76
+
77
+ def name
78
+ condition_attribute.attr_name
79
+ end
80
+
81
+ def ransack_predicate_name
82
+ Ransack::Translate.predicate(condition.predicate.name)
83
+ end
84
+
85
+ def find_class?
86
+ ['eq', 'in'].include? condition.predicate.arel_predicate
87
+ end
88
+
89
+ # detect related class for Ransack::Nodes::Attribute
90
+ def find_class
91
+ if condition_attribute.klass != resource_class && condition_attribute.klass.primary_key == name.to_s
92
+ condition_attribute.klass
93
+ elsif predicate_association
94
+ predicate_association.klass
95
+ end
96
+ end
97
+
98
+ def filter
99
+ resource.filters[name.to_sym]
100
+ end
101
+
102
+ def related_primary_key
103
+ if predicate_association
104
+ predicate_association.association_primary_key
105
+ elsif related_class
106
+ related_class.primary_key
107
+ end
108
+ end
109
+
110
+ def predicate_association
111
+ @predicate_association = find_predicate_association unless defined?(@predicate_association)
112
+ @predicate_association
113
+ end
114
+
115
+ private
116
+
117
+ def find_predicate_association
118
+ condition_attribute.klass.reflect_on_all_associations.
119
+ reject { |r| r.options[:polymorphic] }. #skip polymorphic
120
+ detect { |r| r.foreign_key.to_s == name.to_s }
121
+ end
122
+ end
123
+ end
124
+ end
@@ -0,0 +1,54 @@
1
+ require 'active_admin/filters/active'
2
+
3
+ module ActiveAdmin
4
+ module Filters
5
+ class ActiveSidebar < ActiveAdmin::SidebarSection
6
+
7
+ def initialize
8
+ super 'search_status', sidebar_options
9
+ end
10
+
11
+ def block
12
+ -> do
13
+ active_filters = ActiveAdmin::Filters::Active.new(active_admin_config, assigns[:search])
14
+ span do
15
+ if current_scope
16
+ h4 I18n.t("active_admin.search_status.current_scope"), style: 'display: inline'
17
+ b scope_name(current_scope), class: 'current_scope_name', style: "display: inline"
18
+ end
19
+ div style: "margin-top: 10px" do
20
+ h4 I18n.t("active_admin.search_status.current_filters"), style: 'margin-bottom: 10px'
21
+ ul do
22
+ if active_filters.filters.blank?
23
+ li I18n.t("active_admin.search_status.no_current_filters")
24
+ else
25
+ active_filters.filters.each do |filter|
26
+ li filter.html_options do
27
+ span do
28
+ text_node filter.label
29
+ end
30
+ b do
31
+ text_node to_sentence(filter.values.map { |v| pretty_format(v) })
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
41
+
42
+ def title
43
+ I18n.t("active_admin.search_status.headline")
44
+ end
45
+
46
+ protected
47
+
48
+ def sidebar_options
49
+ { only: :index, if: -> { active_admin_config.current_filters_enabled? && (params[:q] || params[:scope]) } }
50
+ end
51
+
52
+ end
53
+ end
54
+ end