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,30 +1,42 @@
1
- require 'active_admin/orm/active_record/comments/views'
2
- require 'active_admin/orm/active_record/comments/show_page_helper'
3
- require 'active_admin/orm/active_record/comments/namespace_helper'
4
- require 'active_admin/orm/active_record/comments/resource_helper'
1
+ require "active_admin/orm/active_record/comments/views"
2
+ require "active_admin/orm/active_record/comments/show_page_helper"
3
+ require "active_admin/orm/active_record/comments/namespace_helper"
4
+ require "active_admin/orm/active_record/comments/resource_helper"
5
5
 
6
6
  # Add the comments configuration
7
- ActiveAdmin::Application.inheritable_setting :comments, true
8
- ActiveAdmin::Application.inheritable_setting :show_comments_in_menu, true
9
- ActiveAdmin::Application.inheritable_setting :comments_registration_name, 'Comment'
7
+ ActiveAdmin::Application.inheritable_setting :comments, true
8
+ ActiveAdmin::Application.inheritable_setting :comments_registration_name, "Comment"
9
+ ActiveAdmin::Application.inheritable_setting :comments_order, "created_at ASC"
10
+ ActiveAdmin::Application.inheritable_setting :comments_menu, {}
10
11
 
11
12
  # Insert helper modules
12
13
  ActiveAdmin::Namespace.send :include, ActiveAdmin::Comments::NamespaceHelper
13
- ActiveAdmin::Resource.send :include, ActiveAdmin::Comments::ResourceHelper
14
+ ActiveAdmin::Resource.send :include, ActiveAdmin::Comments::ResourceHelper
14
15
  ActiveAdmin.application.view_factory.show_page.send :include, ActiveAdmin::Comments::ShowPageHelper
15
16
 
16
17
  # Load the model as soon as it's referenced. By that point, Rails & Kaminari will be ready
17
- ActiveAdmin.autoload :Comment, 'active_admin/orm/active_record/comments/comment'
18
+ ActiveAdmin.autoload :Comment, "active_admin/orm/active_record/comments/comment"
19
+
20
+ # Hint i18n-tasks about model and attribute translations used by default install
21
+ # i18n-tasks-use t('activerecord.models.comment')
22
+ # i18n-tasks-use t('activerecord.models.active_admin/comment')
23
+ # i18n-tasks-use t('activerecord.attributes.active_admin/comment.author_type')
24
+ # i18n-tasks-use t('activerecord.attributes.active_admin/comment.body')
25
+ # i18n-tasks-use t('activerecord.attributes.active_admin/comment.created_at')
26
+ # i18n-tasks-use t('activerecord.attributes.active_admin/comment.namespace')
27
+ # i18n-tasks-use t('activerecord.attributes.active_admin/comment.resource_type')
28
+ # i18n-tasks-use t('activerecord.attributes.active_admin/comment.updated_at')
29
+ # i18n-tasks-use t('active_admin.scopes.all')
18
30
 
19
31
  # Walk through all the loaded namespaces after they're loaded
20
32
  ActiveAdmin.after_load do |app|
21
33
  app.namespaces.each do |namespace|
22
34
  namespace.register ActiveAdmin::Comment, as: namespace.comments_registration_name do
23
- actions :index, :show, :create
35
+ actions :index, :show, :create, :destroy
24
36
 
25
- menu false unless namespace.comments && namespace.show_comments_in_menu
37
+ menu namespace.comments ? namespace.comments_menu : false
26
38
 
27
- config.comments = false # Don't allow comments on comments
39
+ config.comments = false # Don't allow comments on comments
28
40
  config.batch_actions = false # The default destroy batch action isn't showing up anyway...
29
41
 
30
42
  scope :all, show_count: false
@@ -39,41 +51,49 @@ ActiveAdmin.after_load do |app|
39
51
  # Store the author and namespace
40
52
  before_save do |comment|
41
53
  comment.namespace = active_admin_config.namespace.name
42
- comment.author = current_active_admin_user
54
+ comment.author = current_active_admin_user
43
55
  end
44
56
 
45
57
  controller do
46
58
  # Prevent N+1 queries
47
59
  def scoped_collection
48
- super.includes *( # rails/rails#14734
49
- ActiveAdmin::Dependency.rails?('>= 4.1.0', '<= 4.1.1') ?
50
- [:author] : [:author, :resource]
51
- )
60
+ super.includes(:author, :resource)
52
61
  end
53
62
 
54
63
  # Redirect to the resource show page after comment creation
55
64
  def create
56
65
  create! do |success, failure|
57
- success.html{ redirect_to :back }
66
+ success.html do
67
+ redirect_back fallback_location: active_admin_root
68
+ end
58
69
  failure.html do
59
- flash[:error] = I18n.t 'active_admin.comments.errors.empty_text'
60
- redirect_to :back
70
+ flash[:error] = I18n.t "active_admin.comments.errors.empty_text"
71
+ redirect_back fallback_location: active_admin_root
72
+ end
73
+ end
74
+
75
+ def destroy
76
+ destroy! do |success, failure|
77
+ success.html do
78
+ redirect_back fallback_location: active_admin_root
79
+ end
80
+ failure.html do
81
+ redirect_back fallback_location: active_admin_root
82
+ end
61
83
  end
62
84
  end
63
85
  end
64
86
  end
65
87
 
66
- # Set up permitted params in case the app is using Strong Parameters
67
- unless Rails::VERSION::MAJOR == 3 && !defined? StrongParameters
68
- permit_params :body, :namespace, :resource_id, :resource_type
69
- end
88
+ permit_params :body, :namespace, :resource_id, :resource_type
70
89
 
71
90
  index do
72
- column I18n.t('active_admin.comments.resource_type'), :resource_type
73
- column I18n.t('active_admin.comments.author_type'), :author_type
74
- column I18n.t('active_admin.comments.resource'), :resource
75
- column I18n.t('active_admin.comments.author'), :author
76
- column I18n.t('active_admin.comments.body'), :body
91
+ column I18n.t("active_admin.comments.resource_type"), :resource_type
92
+ column I18n.t("active_admin.comments.author_type"), :author_type
93
+ column I18n.t("active_admin.comments.resource"), :resource
94
+ column I18n.t("active_admin.comments.author"), :author
95
+ column I18n.t("active_admin.comments.body"), :body
96
+ column I18n.t("active_admin.comments.created_at"), :created_at
77
97
  actions
78
98
  end
79
99
  end
@@ -2,4 +2,4 @@
2
2
 
3
3
  ActiveAdmin::DatabaseHitDuringLoad.database_error_classes << ActiveRecord::StatementInvalid
4
4
 
5
- require 'active_admin/orm/active_record/comments'
5
+ require "active_admin/orm/active_record/comments"
@@ -65,7 +65,7 @@ module ActiveAdmin
65
65
  end
66
66
 
67
67
  def controller_name
68
- [namespace.module_name, camelized_resource_name + "Controller"].compact.join('::')
68
+ [namespace.module_name, camelized_resource_name + "Controller"].compact.join("::")
69
69
  end
70
70
 
71
71
  # Override from `ActiveAdmin::Resource::Controllers`
@@ -73,10 +73,6 @@ module ActiveAdmin
73
73
  false
74
74
  end
75
75
 
76
- def belongs_to?
77
- false
78
- end
79
-
80
76
  def add_default_action_items
81
77
  end
82
78
 
@@ -88,5 +84,28 @@ module ActiveAdmin
88
84
  @page_actions = []
89
85
  end
90
86
 
87
+ def belongs_to(target, options = {})
88
+ @belongs_to = Resource::BelongsTo.new(self, target, options)
89
+ self.navigation_menu_name = target unless @belongs_to.optional?
90
+ controller.send :belongs_to, target, options.dup
91
+ end
92
+
93
+ def belongs_to_config
94
+ @belongs_to
95
+ end
96
+
97
+ # Do we belong to another resource?
98
+ def belongs_to?
99
+ !!belongs_to_config
100
+ end
101
+
102
+ def breadcrumb
103
+ instance_variable_defined?(:@breadcrumb) ? @breadcrumb : namespace.breadcrumb
104
+ end
105
+
106
+ def order_clause
107
+ @order_clause || namespace.order_clause
108
+ end
109
+
91
110
  end
92
111
  end
@@ -8,9 +8,9 @@ module ActiveAdmin
8
8
 
9
9
  actions :index
10
10
 
11
- before_filter :authorize_access!
11
+ before_action :authorize_access!
12
12
 
13
- def index(options={}, &block)
13
+ def index(options = {}, &block)
14
14
  render "active_admin/page/index"
15
15
  end
16
16
 
@@ -21,8 +21,12 @@ module ActiveAdmin
21
21
  def page_action(name, options = {}, &block)
22
22
  config.page_actions << ControllerAction.new(name, options)
23
23
  controller do
24
- define_method(name, &block || Proc.new{})
24
+ define_method(name, &block || Proc.new {})
25
25
  end
26
26
  end
27
+
28
+ def belongs_to(target, options = {})
29
+ config.belongs_to(target, options)
30
+ end
27
31
  end
28
32
  end
@@ -21,7 +21,8 @@ module ActiveAdmin
21
21
  delegate :has_key?, :fetch, to: :options
22
22
 
23
23
  def initialize(options = {}, &block)
24
- @options, @block = options, block
24
+ @options = options
25
+ @block = block
25
26
  end
26
27
 
27
28
  def [](key)
@@ -1,9 +1,10 @@
1
1
  ActiveAdmin::Dependency.pundit!
2
2
 
3
- require 'pundit'
3
+ require "pundit"
4
4
 
5
5
  # Add a setting to the application to configure the pundit default policy
6
6
  ActiveAdmin::Application.inheritable_setting :pundit_default_policy, nil
7
+ ActiveAdmin::Application.inheritable_setting :pundit_policy_namespace, nil
7
8
 
8
9
  module ActiveAdmin
9
10
 
@@ -19,7 +20,7 @@ module ActiveAdmin
19
20
  def scope_collection(collection, action = Auth::READ)
20
21
  # scoping is appliable only to read/index action
21
22
  # which means there is no way how to scope other actions
22
- Pundit.policy_scope!(user, collection)
23
+ Pundit.policy_scope!(user, namespace(collection))
23
24
  rescue Pundit::NotDefinedError => e
24
25
  if default_policy_class && default_policy_class.const_defined?(:Scope)
25
26
  default_policy_class::Scope.new(user, collection).resolve
@@ -30,9 +31,9 @@ module ActiveAdmin
30
31
 
31
32
  def retrieve_policy(subject)
32
33
  case subject
33
- when nil then Pundit.policy!(user, resource)
34
- when Class then Pundit.policy!(user, subject.new)
35
- else Pundit.policy!(user, subject)
34
+ when nil then Pundit.policy!(user, namespace(resource))
35
+ when Class then Pundit.policy!(user, namespace(subject.new))
36
+ else Pundit.policy!(user, namespace(subject))
36
37
  end
37
38
  rescue Pundit::NotDefinedError => e
38
39
  if default_policy_class
@@ -43,11 +44,11 @@ module ActiveAdmin
43
44
  end
44
45
 
45
46
  def format_action(action, subject)
46
- # https://github.com/elabs/pundit/blob/master/lib/generators/pundit/install/templates/application_policy.rb
47
+ # https://github.com/varvet/pundit/blob/master/lib/generators/pundit/install/templates/application_policy.rb
47
48
  case action
48
- when Auth::CREATE then :create?
49
- when Auth::UPDATE then :update?
50
- when Auth::READ then subject.is_a?(Class) ? :index? : :show?
49
+ when Auth::CREATE then :create?
50
+ when Auth::UPDATE then :update?
51
+ when Auth::READ then subject.is_a?(Class) ? :index? : :show?
51
52
  when Auth::DESTROY then subject.is_a?(Class) ? :destroy_all? : :destroy?
52
53
  else "#{action}?"
53
54
  end
@@ -55,6 +56,14 @@ module ActiveAdmin
55
56
 
56
57
  private
57
58
 
59
+ def namespace(object)
60
+ if default_policy_namespace && !object.class.to_s.include?(default_policy_namespace.to_s.camelize)
61
+ [default_policy_namespace.to_sym, object]
62
+ else
63
+ object
64
+ end
65
+ end
66
+
58
67
  def default_policy_class
59
68
  ActiveAdmin.application.pundit_default_policy && ActiveAdmin.application.pundit_default_policy.constantize
60
69
  end
@@ -63,6 +72,10 @@ module ActiveAdmin
63
72
  default_policy_class.new(user, subject)
64
73
  end
65
74
 
75
+ def default_policy_namespace
76
+ ActiveAdmin.application.pundit_policy_namespace
77
+ end
78
+
66
79
  end
67
80
 
68
81
  end
@@ -1,4 +1,4 @@
1
- require 'active_admin/helpers/optional_display'
1
+ require "active_admin/helpers/optional_display"
2
2
 
3
3
  module ActiveAdmin
4
4
 
@@ -24,6 +24,7 @@ module ActiveAdmin
24
24
  # this action item on.
25
25
  # :except: A single or array of controller actions not to
26
26
  # display this action item on.
27
+ # :priority: A single integer value. To control the display order. Default is 10.
27
28
  def add_action_item(name, options = {}, &block)
28
29
  self.action_items << ActiveAdmin::ActionItem.new(name, options, &block)
29
30
  end
@@ -38,7 +39,7 @@ module ActiveAdmin
38
39
  #
39
40
  # @return [Array] Array of ActionItems for the controller actions
40
41
  def action_items_for(action, render_context = nil)
41
- action_items.select{ |item| item.display_on? action, render_context }
42
+ action_items.select { |item| item.display_on? action, render_context }.sort_by(&:priority)
42
43
  end
43
44
 
44
45
  # Clears all the existing action items for this resource
@@ -55,25 +56,38 @@ module ActiveAdmin
55
56
 
56
57
  # Adds the default action items to each resource
57
58
  def add_default_action_items
58
- # New link on index
59
+ add_default_new_action_item
60
+ add_default_edit_action_item
61
+ add_default_show_action_item
62
+ end
63
+
64
+ # Adds the default New link on index
65
+ def add_default_new_action_item
59
66
  add_action_item :new, only: :index do
60
- if controller.action_methods.include?('new') && authorized?(ActiveAdmin::Auth::CREATE, active_admin_config.resource_class)
61
- link_to I18n.t('active_admin.new_model', model: active_admin_config.resource_label), new_resource_path
67
+ if controller.action_methods.include?("new") && authorized?(ActiveAdmin::Auth::CREATE, active_admin_config.resource_class)
68
+ localizer = ActiveAdmin::Localizers.resource(active_admin_config)
69
+ link_to localizer.t(:new_model), new_resource_path
62
70
  end
63
71
  end
72
+ end
64
73
 
65
- # Edit link on show
74
+ # Adds the default Edit link on show
75
+ def add_default_edit_action_item
66
76
  add_action_item :edit, only: :show do
67
- if controller.action_methods.include?('edit') && authorized?(ActiveAdmin::Auth::UPDATE, resource)
68
- link_to I18n.t('active_admin.edit_model', model: active_admin_config.resource_label), edit_resource_path(resource)
77
+ if controller.action_methods.include?("edit") && authorized?(ActiveAdmin::Auth::UPDATE, resource)
78
+ localizer = ActiveAdmin::Localizers.resource(active_admin_config)
79
+ link_to localizer.t(:edit_model), edit_resource_path(resource)
69
80
  end
70
81
  end
82
+ end
71
83
 
72
- # Destroy link on show
84
+ # Adds the default Destroy link on show
85
+ def add_default_show_action_item
73
86
  add_action_item :destroy, only: :show do
74
- if controller.action_methods.include?('destroy') && authorized?(ActiveAdmin::Auth::DESTROY, resource)
75
- link_to I18n.t('active_admin.delete_model', model: active_admin_config.resource_label), resource_path(resource),
76
- method: :delete, data: {confirm: I18n.t('active_admin.delete_confirmation')}
87
+ if controller.action_methods.include?("destroy") && authorized?(ActiveAdmin::Auth::DESTROY, resource)
88
+ localizer = ActiveAdmin::Localizers.resource(active_admin_config)
89
+ link_to localizer.t(:delete_model), resource_path(resource), method: :delete,
90
+ data: { confirm: localizer.t(:delete_confirmation) }
77
91
  end
78
92
  end
79
93
  end
@@ -93,6 +107,14 @@ module ActiveAdmin
93
107
  @block = block
94
108
  normalize_display_options!
95
109
  end
110
+
111
+ def html_class
112
+ "action_item #{@options[:class]}".rstrip
113
+ end
114
+
115
+ def priority
116
+ @options[:priority] || 10
117
+ end
96
118
  end
97
119
 
98
120
  end
@@ -0,0 +1,47 @@
1
+ module ActiveAdmin
2
+
3
+ class Resource
4
+ module Attributes
5
+
6
+ def default_attributes
7
+ resource_class.columns.each_with_object({}) do |c, attrs|
8
+ unless reject_col?(c)
9
+ name = c.name.to_sym
10
+ attrs[name] = (method_for_column(name) || name)
11
+ end
12
+ end
13
+ end
14
+
15
+ def method_for_column(c)
16
+ resource_class.respond_to?(:reflect_on_all_associations) && foreign_methods.has_key?(c) && foreign_methods[c].name.to_sym
17
+ end
18
+
19
+ def foreign_methods
20
+ @foreign_methods ||= resource_class.reflect_on_all_associations.
21
+ select { |r| r.macro == :belongs_to }.
22
+ reject { |r| r.chain.length > 2 && !r.options[:polymorphic] }.
23
+ index_by { |r| r.foreign_key.to_sym }
24
+ end
25
+
26
+ def reject_col?(c)
27
+ primary_col?(c) || sti_col?(c) || counter_cache_col?(c) || filtered_col?(c)
28
+ end
29
+
30
+ def primary_col?(c)
31
+ c.name == resource_class.primary_key
32
+ end
33
+
34
+ def sti_col?(c)
35
+ c.name == resource_class.inheritance_column
36
+ end
37
+
38
+ def counter_cache_col?(c)
39
+ c.name.end_with?("_count")
40
+ end
41
+
42
+ def filtered_col?(c)
43
+ ActiveAdmin.application.filter_attributes.include?(c.name.to_sym)
44
+ end
45
+ end
46
+ end
47
+ end
@@ -1,4 +1,4 @@
1
- require 'active_admin/resource'
1
+ require "active_admin/resource"
2
2
 
3
3
  module ActiveAdmin
4
4
  class Resource
@@ -14,14 +14,23 @@ module ActiveAdmin
14
14
  # The resource which initiated this relationship
15
15
  attr_reader :owner
16
16
 
17
+ # The name of the relation
18
+ attr_reader :target_name
19
+
17
20
  def initialize(owner, target_name, options = {})
18
- @owner, @target_name, @options = owner, target_name, options
21
+ @owner = owner
22
+ @target_name = target_name
23
+ @options = options
19
24
  end
20
25
 
21
26
  # Returns the target resource class or raises an exception if it doesn't exist
22
27
  def target
23
- key = @target_name.to_s.camelize
24
- namespace.resources[key] or raise TargetNotFound.new key, namespace
28
+ resource or raise TargetNotFound.new (@options[:class_name] || @target_name.to_s.camelize), namespace
29
+ end
30
+
31
+ def resource
32
+ namespace.resources[@options[:class_name]] ||
33
+ namespace.resources[@target_name.to_s.camelize]
25
34
  end
26
35
 
27
36
  def namespace
@@ -35,6 +44,10 @@ module ActiveAdmin
35
44
  def required?
36
45
  !optional?
37
46
  end
47
+
48
+ def to_param
49
+ (@options[:param] || "#{@target_name}_id").to_sym
50
+ end
38
51
  end
39
52
  end
40
53
  end
@@ -6,7 +6,7 @@ module ActiveAdmin
6
6
  # Returns a properly formatted controller name for this
7
7
  # config within its namespace
8
8
  def controller_name
9
- [namespace.module_name, resource_name.plural.camelize + "Controller"].compact.join('::')
9
+ [namespace.module_name, resource_name.plural.camelize + "Controller"].compact.join("::")
10
10
  end
11
11
 
12
12
  # Returns the controller for this config
@@ -7,11 +7,12 @@ module ActiveAdmin
7
7
  # To disable this menu item, call `menu(false)` from the DSL
8
8
  def menu_item_options=(options)
9
9
  if options == false
10
- @include_in_menu = false
10
+ @include_in_menu = false
11
11
  @menu_item_options = {}
12
12
  else
13
+ @include_in_menu = true
13
14
  @navigation_menu_name = options[:menu_name]
14
- @menu_item_options = default_menu_options.merge options
15
+ @menu_item_options = default_menu_options.merge options
15
16
  end
16
17
  end
17
18
 
@@ -25,13 +26,15 @@ module ActiveAdmin
25
26
  resource = self
26
27
  {
27
28
  id: resource_name.plural,
28
- label: proc{ resource.plural_resource_label },
29
- url: proc{ resource.route_collection_path(params) },
30
- if: proc{ authorized?(:read, menu_resource_class) }
29
+ label: proc { resource.plural_resource_label },
30
+ url: proc { resource.route_collection_path(params, url_options) },
31
+ if: proc { authorized?(Auth::READ, menu_resource_class) }
31
32
  }
32
33
  end
33
34
 
34
- attr_writer :navigation_menu_name
35
+ def navigation_menu_name=(menu_name)
36
+ self.menu_item_options = { menu_name: menu_name }
37
+ end
35
38
 
36
39
  def navigation_menu_name
37
40
  case @navigation_menu_name ||= DEFAULT_MENU
@@ -0,0 +1,15 @@
1
+ module ActiveAdmin
2
+ class Model
3
+ def initialize(resource, record)
4
+ @record = record
5
+
6
+ if resource
7
+ @record.extend(resource.resource_name_extension)
8
+ end
9
+ end
10
+
11
+ def to_model
12
+ @record
13
+ end
14
+ end
15
+ end
@@ -4,7 +4,7 @@ module ActiveAdmin
4
4
  module Naming
5
5
  def resource_name
6
6
  @resource_name ||= begin
7
- as = @options[:as].gsub /\s/, '' if @options[:as]
7
+ as = @options[:as].gsub /\s/, "" if @options[:as]
8
8
 
9
9
  if as || !resource_class.respond_to?(:model_name)
10
10
  Name.new resource_class, as
@@ -17,13 +17,13 @@ module ActiveAdmin
17
17
  # Returns the name to call this resource such as "Bank Account"
18
18
  def resource_label
19
19
  resource_name.translate count: 1,
20
- default: resource_name.to_s.gsub('::', ' ').titleize
20
+ default: resource_name.to_s.gsub("::", " ").titleize
21
21
  end
22
22
 
23
23
  # Returns the plural version of this resource such as "Bank Accounts"
24
24
  def plural_resource_label(options = {})
25
- defaults = {count: Helpers::I18n::PLURAL_MANY_COUNT,
26
- default: resource_label.pluralize.titleize}
25
+ defaults = { count: Helpers::I18n::PLURAL_MANY_COUNT,
26
+ default: resource_label.pluralize.titleize }
27
27
  resource_name.translate defaults.merge options
28
28
  end
29
29
 
@@ -46,7 +46,7 @@ module ActiveAdmin
46
46
  end
47
47
 
48
48
  def translate(options = {})
49
- I18n.t i18n_key, {scope: [:activerecord, :models]}.merge(options)
49
+ I18n.t i18n_key, **{ scope: [:activerecord, :models] }.merge(options)
50
50
  end
51
51
 
52
52
  def route_key
@@ -0,0 +1,11 @@
1
+ module ActiveAdmin
2
+ class Resource
3
+ module Ordering
4
+
5
+ def ordering
6
+ @ordering ||= {}.with_indifferent_access
7
+ end
8
+
9
+ end
10
+ end
11
+ end
@@ -33,7 +33,7 @@ module ActiveAdmin
33
33
  # @param [Symbol, String] action The action to get the config for
34
34
  # @param [String] type The string specified in the presenters index_name method
35
35
  # @return [PagePresenter, nil]
36
- def get_page_presenter(action, type=nil)
36
+ def get_page_presenter(action, type = nil)
37
37
 
38
38
  if action.to_s == "index" && type && page_presenters[:index].kind_of?(Hash)
39
39
  page_presenters[:index][type.to_sym]
@@ -6,6 +6,9 @@ module ActiveAdmin
6
6
  # The default number of records to display per page
7
7
  attr_accessor :per_page
8
8
 
9
+ # The default number of records to display per page
10
+ attr_accessor :max_per_page
11
+
9
12
  # Enable / disable pagination (defaults to true)
10
13
  attr_accessor :paginate
11
14
 
@@ -13,6 +16,7 @@ module ActiveAdmin
13
16
  super
14
17
  @paginate = true
15
18
  @per_page = namespace.default_per_page
19
+ @max_per_page = namespace.max_per_page
16
20
  end
17
21
  end
18
22
  end