activeadmin 1.1.0 → 2.12.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 (580) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +784 -111
  3. data/CODE_OF_CONDUCT.md +64 -12
  4. data/CONTRIBUTING.md +83 -61
  5. data/README.md +73 -19
  6. data/app/assets/javascripts/active_admin/base.js +524 -0
  7. data/app/assets/stylesheets/active_admin/_base.scss +53 -37
  8. data/app/assets/stylesheets/active_admin/_forms.scss +3 -25
  9. data/app/assets/stylesheets/active_admin/_header.scss +40 -8
  10. data/app/assets/stylesheets/active_admin/_mixins.scss +1 -1
  11. data/{vendor → app}/assets/stylesheets/active_admin/_normalize.scss +25 -123
  12. data/app/assets/stylesheets/active_admin/{print.scss → _print.scss} +2 -2
  13. data/app/assets/stylesheets/active_admin/components/_comments.scss +2 -2
  14. data/app/assets/stylesheets/active_admin/components/_date_picker.scss +1 -2
  15. data/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +0 -1
  16. data/app/assets/stylesheets/active_admin/components/_scopes.scss +3 -0
  17. data/app/assets/stylesheets/active_admin/components/_status_tags.scss +0 -5
  18. data/app/assets/stylesheets/active_admin/components/_tables.scss +1 -2
  19. data/app/assets/stylesheets/active_admin/components/_tabs.scss +1 -1
  20. data/app/assets/stylesheets/active_admin/mixins/_all.scss +8 -8
  21. data/app/assets/stylesheets/active_admin/mixins/_gradients.scss +1 -1
  22. data/app/assets/stylesheets/active_admin/mixins/_variables.scss +17 -0
  23. data/app/assets/stylesheets/active_admin/structure/_main_structure.scss +1 -1
  24. data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +0 -1
  25. data/app/javascript/active_admin/base.js +28 -0
  26. data/app/javascript/active_admin/ext/jquery-ui.js +7 -0
  27. data/app/javascript/active_admin/ext/jquery.js +9 -0
  28. data/app/javascript/active_admin/initializers/batch-actions.js +61 -0
  29. data/app/javascript/active_admin/initializers/checkbox-toggler.js +3 -0
  30. data/app/javascript/active_admin/initializers/datepicker.js +16 -0
  31. data/app/javascript/active_admin/initializers/dropdown-menu.js +9 -0
  32. data/app/javascript/active_admin/initializers/filters.js +10 -0
  33. data/app/javascript/active_admin/initializers/has-many.js +98 -0
  34. data/app/javascript/active_admin/initializers/per-page.js +13 -0
  35. data/app/javascript/active_admin/initializers/table-checkbox-toggler.js +3 -0
  36. data/app/javascript/active_admin/initializers/tabs.js +6 -0
  37. data/app/javascript/active_admin/lib/checkbox-toggler.js +49 -0
  38. data/app/javascript/active_admin/lib/dropdown-menu.js +116 -0
  39. data/app/javascript/active_admin/lib/filters.js +39 -0
  40. data/app/javascript/active_admin/lib/modal-dialog.js +63 -0
  41. data/app/javascript/active_admin/lib/per-page.js +38 -0
  42. data/app/javascript/active_admin/lib/table-checkbox-toggler.js +38 -0
  43. data/app/javascript/active_admin/lib/utils.js +40 -0
  44. data/app/views/active_admin/devise/confirmations/new.html.erb +2 -2
  45. data/app/views/active_admin/devise/mailer/reset_password_instructions.html.erb +1 -1
  46. data/app/views/active_admin/devise/mailer/unlock_instructions.html.erb +2 -2
  47. data/app/views/active_admin/devise/passwords/edit.html.erb +2 -2
  48. data/app/views/active_admin/devise/passwords/new.html.erb +2 -2
  49. data/app/views/active_admin/devise/registrations/new.html.erb +2 -3
  50. data/app/views/active_admin/devise/sessions/new.html.erb +1 -1
  51. data/app/views/active_admin/devise/shared/_error_messages.html.erb +15 -0
  52. data/app/views/active_admin/devise/shared/_links.erb +1 -1
  53. data/app/views/active_admin/devise/unlocks/new.html.erb +2 -2
  54. data/app/views/active_admin/page/index.html.arb +1 -0
  55. data/app/views/active_admin/resource/edit.html.arb +1 -0
  56. data/app/views/active_admin/resource/index.html.arb +1 -0
  57. data/app/views/active_admin/resource/new.html.arb +1 -0
  58. data/app/views/active_admin/resource/show.html.arb +1 -0
  59. data/app/views/kaminari/active_admin_countless/_first_page.html.erb +11 -0
  60. data/app/views/kaminari/active_admin_countless/_gap.html.erb +8 -0
  61. data/app/views/kaminari/active_admin_countless/_next_page.html.erb +11 -0
  62. data/app/views/kaminari/active_admin_countless/_page.html.erb +12 -0
  63. data/app/views/kaminari/active_admin_countless/_paginator.html.erb +24 -0
  64. data/app/views/kaminari/active_admin_countless/_prev_page.html.erb +11 -0
  65. data/app/views/layouts/active_admin.html.arb +1 -0
  66. data/app/views/layouts/active_admin_logged_out.html.erb +17 -7
  67. data/config/locales/ar.yml +9 -8
  68. data/config/locales/az.yml +138 -0
  69. data/config/locales/bg.yml +1 -1
  70. data/config/locales/bs.yml +1 -0
  71. data/config/locales/ca.yml +1 -1
  72. data/config/locales/cs.yml +1 -0
  73. data/config/locales/da.yml +1 -0
  74. data/config/locales/de-CH.yml +1 -0
  75. data/config/locales/de.yml +29 -0
  76. data/config/locales/el.yml +1 -0
  77. data/config/locales/en-CA.yml +4 -3
  78. data/config/locales/en-GB.yml +4 -3
  79. data/config/locales/en.yml +24 -4
  80. data/config/locales/eo.yml +145 -0
  81. data/config/locales/es-MX.yml +3 -1
  82. data/config/locales/es.yml +26 -6
  83. data/config/locales/fa.yml +1 -0
  84. data/config/locales/fi.yml +2 -1
  85. data/config/locales/fr.yml +6 -5
  86. data/config/locales/he.yml +1 -1
  87. data/config/locales/hr.yml +1 -0
  88. data/config/locales/hu.yml +5 -0
  89. data/config/locales/id.yml +1 -0
  90. data/config/locales/it.yml +31 -3
  91. data/config/locales/ja.yml +8 -2
  92. data/config/locales/ko.yml +2 -1
  93. data/config/locales/lt.yml +3 -2
  94. data/config/locales/lv.yml +3 -2
  95. data/config/locales/mk.yml +134 -0
  96. data/config/locales/nb.yml +16 -5
  97. data/config/locales/nl.yml +13 -1
  98. data/config/locales/pl.yml +72 -3
  99. data/config/locales/pt-BR.yml +9 -0
  100. data/config/locales/pt-PT.yml +1 -0
  101. data/config/locales/ro.yml +4 -2
  102. data/config/locales/ru.yml +3 -0
  103. data/config/locales/sk.yml +60 -0
  104. data/config/locales/sv-SE.yml +3 -0
  105. data/config/locales/tr.yml +10 -0
  106. data/config/locales/uk.yml +3 -0
  107. data/config/locales/vi.yml +53 -10
  108. data/config/locales/zh-CN.yml +34 -5
  109. data/config/locales/zh-TW.yml +1 -0
  110. data/docs/.gitignore +1 -0
  111. data/docs/0-installation.md +29 -5
  112. data/docs/1-general-configuration.md +36 -1
  113. data/docs/10-custom-pages.md +14 -0
  114. data/docs/11-decorators.md +16 -5
  115. data/docs/12-arbre-components.md +41 -1
  116. data/docs/13-authorization-adapter.md +41 -22
  117. data/docs/2-resource-customization.md +20 -6
  118. data/docs/3-index-pages/custom-index.md +1 -1
  119. data/docs/3-index-pages/index-as-blog.md +1 -1
  120. data/docs/3-index-pages/index-as-table.md +12 -5
  121. data/docs/3-index-pages.md +18 -1
  122. data/docs/5-forms.md +23 -4
  123. data/docs/6-show-pages.md +12 -0
  124. data/docs/8-custom-actions.md +12 -1
  125. data/docs/9-batch-actions.md +2 -2
  126. data/docs/CNAME +1 -1
  127. data/docs/Gemfile +4 -2
  128. data/docs/Gemfile.lock +283 -0
  129. data/docs/_config.yml +3 -1
  130. data/docs/_includes/toc.html +1 -1
  131. data/docs/_includes/top-menu.html +9 -1
  132. data/docs/documentation.md +2 -2
  133. data/docs/images/tidelift.svg +14 -0
  134. data/docs/index.html +110 -9
  135. data/docs/stylesheets/main.css +55 -2
  136. data/lib/active_admin/abstract_view_factory.rb +14 -51
  137. data/lib/active_admin/application.rb +65 -172
  138. data/lib/active_admin/application_settings.rb +43 -0
  139. data/lib/active_admin/asset_registration.rb +1 -8
  140. data/lib/active_admin/authorization_adapter.rb +4 -3
  141. data/lib/active_admin/base_controller/authorization.rb +18 -18
  142. data/lib/active_admin/base_controller/menu.rb +1 -0
  143. data/lib/active_admin/base_controller.rb +12 -11
  144. data/lib/active_admin/batch_actions/controller.rb +6 -5
  145. data/lib/active_admin/batch_actions/resource_extension.rb +16 -10
  146. data/lib/active_admin/batch_actions/views/batch_action_form.rb +4 -3
  147. data/lib/active_admin/batch_actions/views/batch_action_selector.rb +7 -6
  148. data/lib/active_admin/batch_actions/views/selection_cells.rb +4 -3
  149. data/lib/active_admin/batch_actions.rb +1 -0
  150. data/lib/active_admin/callbacks.rb +2 -1
  151. data/lib/active_admin/cancan_adapter.rb +2 -1
  152. data/lib/active_admin/collection_decorator.rb +32 -0
  153. data/lib/active_admin/component.rb +1 -0
  154. data/lib/active_admin/controller_action.rb +3 -1
  155. data/lib/active_admin/csv_builder.rb +15 -21
  156. data/lib/active_admin/dependency.rb +14 -77
  157. data/lib/active_admin/deprecation.rb +1 -25
  158. data/lib/active_admin/devise.rb +16 -5
  159. data/lib/active_admin/dsl.rb +3 -9
  160. data/lib/active_admin/dynamic_setting.rb +39 -0
  161. data/lib/active_admin/dynamic_settings_node.rb +29 -0
  162. data/lib/active_admin/engine.rb +16 -7
  163. data/lib/active_admin/error.rb +5 -4
  164. data/lib/active_admin/filters/active.rb +2 -1
  165. data/lib/active_admin/filters/active_filter.rb +52 -15
  166. data/lib/active_admin/filters/active_sidebar.rb +8 -30
  167. data/lib/active_admin/filters/dsl.rb +1 -0
  168. data/lib/active_admin/filters/forms.rb +13 -9
  169. data/lib/active_admin/filters/formtastic_addons.rb +3 -7
  170. data/lib/active_admin/filters/resource_extension.rb +30 -5
  171. data/lib/active_admin/filters.rb +8 -7
  172. data/lib/active_admin/form_builder.rb +110 -70
  173. data/lib/active_admin/generators/boilerplate.rb +13 -4
  174. data/lib/active_admin/helpers/collection.rb +2 -0
  175. data/lib/active_admin/helpers/i18n.rb +1 -0
  176. data/lib/active_admin/helpers/optional_display.rb +3 -2
  177. data/lib/active_admin/helpers/routes/url_helpers.rb +1 -0
  178. data/lib/active_admin/helpers/scope_chain.rb +2 -0
  179. data/lib/active_admin/inputs/datepicker_input.rb +10 -2
  180. data/lib/active_admin/inputs/filters/base/search_method_select.rb +7 -6
  181. data/lib/active_admin/inputs/filters/base.rb +2 -1
  182. data/lib/active_admin/inputs/filters/boolean_input.rb +2 -1
  183. data/lib/active_admin/inputs/filters/check_boxes_input.rb +2 -1
  184. data/lib/active_admin/inputs/filters/date_picker_input.rb +1 -0
  185. data/lib/active_admin/inputs/filters/date_range_input.rb +16 -12
  186. data/lib/active_admin/inputs/filters/numeric_input.rb +1 -0
  187. data/lib/active_admin/inputs/filters/select_input.rb +8 -3
  188. data/lib/active_admin/inputs/filters/string_input.rb +1 -0
  189. data/lib/active_admin/inputs/filters/text_input.rb +1 -0
  190. data/lib/active_admin/inputs.rb +1 -0
  191. data/lib/active_admin/localizers/resource_localizer.rb +4 -3
  192. data/lib/active_admin/localizers.rb +2 -1
  193. data/lib/active_admin/menu.rb +9 -11
  194. data/lib/active_admin/menu_collection.rb +1 -0
  195. data/lib/active_admin/menu_item.rb +11 -38
  196. data/lib/active_admin/namespace.rb +32 -19
  197. data/lib/active_admin/namespace_settings.rb +127 -0
  198. data/lib/active_admin/order_clause.rb +4 -3
  199. data/lib/active_admin/orm/active_record/comments/comment.rb +5 -4
  200. data/lib/active_admin/orm/active_record/comments/namespace_helper.rb +1 -0
  201. data/lib/active_admin/orm/active_record/comments/resource_helper.rb +1 -0
  202. data/lib/active_admin/orm/active_record/comments/show_page_helper.rb +1 -0
  203. data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +36 -25
  204. data/lib/active_admin/orm/active_record/comments/views.rb +3 -2
  205. data/lib/active_admin/orm/active_record/comments.rb +35 -23
  206. data/lib/active_admin/orm/active_record.rb +2 -1
  207. data/lib/active_admin/orm/mongoid.rb +1 -0
  208. data/lib/active_admin/page.rb +2 -1
  209. data/lib/active_admin/page_controller.rb +1 -0
  210. data/lib/active_admin/page_dsl.rb +2 -1
  211. data/lib/active_admin/page_presenter.rb +3 -1
  212. data/lib/active_admin/pundit_adapter.rb +61 -12
  213. data/lib/active_admin/resource/action_items.rb +12 -6
  214. data/lib/active_admin/resource/attributes.rb +9 -5
  215. data/lib/active_admin/resource/belongs_to.rb +9 -3
  216. data/lib/active_admin/resource/controllers.rb +2 -1
  217. data/lib/active_admin/resource/includes.rb +1 -0
  218. data/lib/active_admin/resource/menu.rb +6 -5
  219. data/lib/active_admin/resource/model.rb +16 -0
  220. data/lib/active_admin/resource/naming.rb +6 -5
  221. data/lib/active_admin/resource/ordering.rb +1 -0
  222. data/lib/active_admin/resource/page_presenters.rb +1 -0
  223. data/lib/active_admin/resource/pagination.rb +1 -0
  224. data/lib/active_admin/resource/routes.rb +26 -14
  225. data/lib/active_admin/resource/scope_to.rb +8 -7
  226. data/lib/active_admin/resource/scopes.rb +4 -3
  227. data/lib/active_admin/resource/sidebars.rb +3 -2
  228. data/lib/active_admin/resource.rb +37 -22
  229. data/lib/active_admin/resource_collection.rb +3 -2
  230. data/lib/active_admin/resource_controller/action_builder.rb +11 -0
  231. data/lib/active_admin/resource_controller/data_access.rb +35 -5
  232. data/lib/active_admin/resource_controller/decorators.rb +10 -31
  233. data/lib/active_admin/resource_controller/polymorphic_routes.rb +38 -0
  234. data/lib/active_admin/resource_controller/resource_class_methods.rb +3 -0
  235. data/lib/active_admin/resource_controller/scoping.rb +2 -1
  236. data/lib/active_admin/resource_controller/sidebars.rb +1 -0
  237. data/lib/active_admin/resource_controller/streaming.rb +9 -7
  238. data/lib/active_admin/resource_controller.rb +14 -10
  239. data/lib/active_admin/resource_dsl.rb +17 -27
  240. data/lib/active_admin/router.rb +91 -84
  241. data/lib/active_admin/scope.rb +20 -11
  242. data/lib/active_admin/settings_node.rb +20 -0
  243. data/lib/active_admin/sidebar_section.rb +4 -1
  244. data/lib/active_admin/version.rb +2 -1
  245. data/lib/active_admin/view_factory.rb +18 -17
  246. data/lib/active_admin/view_helpers/active_admin_application_helper.rb +1 -0
  247. data/lib/active_admin/view_helpers/auto_link_helper.rb +1 -0
  248. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +6 -5
  249. data/lib/active_admin/view_helpers/display_helper.rb +25 -8
  250. data/lib/active_admin/view_helpers/download_format_links_helper.rb +3 -1
  251. data/lib/active_admin/view_helpers/fields_for.rb +3 -2
  252. data/lib/active_admin/view_helpers/flash_helper.rb +1 -0
  253. data/lib/active_admin/view_helpers/form_helper.rb +1 -0
  254. data/lib/active_admin/view_helpers/method_or_proc_helper.rb +4 -0
  255. data/lib/active_admin/view_helpers/scope_name_helper.rb +1 -0
  256. data/lib/active_admin/view_helpers/sidebar_helper.rb +1 -0
  257. data/lib/active_admin/view_helpers/title_helper.rb +1 -0
  258. data/lib/active_admin/view_helpers/view_factory_helper.rb +1 -0
  259. data/lib/active_admin/view_helpers.rb +2 -1
  260. data/lib/active_admin/views/action_items.rb +1 -0
  261. data/lib/active_admin/views/components/active_admin_form.rb +14 -8
  262. data/lib/active_admin/views/components/active_filters_sidebar_content.rb +59 -0
  263. data/lib/active_admin/views/components/attributes_table.rb +9 -8
  264. data/lib/active_admin/views/components/blank_slate.rb +2 -1
  265. data/lib/active_admin/views/components/columns.rb +1 -0
  266. data/lib/active_admin/views/components/dropdown_menu.rb +7 -9
  267. data/lib/active_admin/views/components/index_list.rb +4 -3
  268. data/lib/active_admin/views/components/menu.rb +33 -0
  269. data/lib/active_admin/views/components/menu_item.rb +59 -0
  270. data/lib/active_admin/views/components/paginated_collection.rb +22 -20
  271. data/lib/active_admin/views/components/panel.rb +2 -1
  272. data/lib/active_admin/views/components/scopes.rb +18 -8
  273. data/lib/active_admin/views/components/sidebar.rb +14 -0
  274. data/lib/active_admin/views/components/sidebar_section.rb +1 -0
  275. data/lib/active_admin/views/components/site_title.rb +7 -7
  276. data/lib/active_admin/views/components/status_tag.rb +14 -26
  277. data/lib/active_admin/views/components/table_for.rb +22 -29
  278. data/lib/active_admin/views/components/tabs.rb +18 -5
  279. data/lib/active_admin/views/components/unsupported_browser.rb +1 -0
  280. data/lib/active_admin/views/footer.rb +6 -8
  281. data/lib/active_admin/views/header.rb +4 -15
  282. data/lib/active_admin/views/index_as_block.rb +1 -0
  283. data/lib/active_admin/views/index_as_blog.rb +3 -2
  284. data/lib/active_admin/views/index_as_grid.rb +27 -26
  285. data/lib/active_admin/views/index_as_table.rb +34 -25
  286. data/lib/active_admin/views/pages/base.rb +44 -60
  287. data/lib/active_admin/views/pages/form.rb +1 -0
  288. data/lib/active_admin/views/pages/index.rb +16 -13
  289. data/lib/active_admin/views/pages/layout.rb +1 -0
  290. data/lib/active_admin/views/pages/page.rb +1 -0
  291. data/lib/active_admin/views/pages/show.rb +1 -0
  292. data/lib/active_admin/views/tabbed_navigation.rb +5 -59
  293. data/lib/active_admin/views/title_bar.rb +2 -1
  294. data/lib/active_admin/views.rb +2 -1
  295. data/lib/active_admin.rb +68 -63
  296. data/lib/activeadmin.rb +2 -1
  297. data/lib/generators/active_admin/assets/assets_generator.rb +3 -2
  298. data/lib/generators/active_admin/assets/templates/active_admin.js +1 -0
  299. data/lib/generators/active_admin/assets/templates/active_admin.scss +2 -2
  300. data/lib/generators/active_admin/devise/devise_generator.rb +6 -5
  301. data/lib/generators/active_admin/install/install_generator.rb +19 -8
  302. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +45 -3
  303. data/lib/generators/active_admin/install/templates/dashboard.rb +3 -3
  304. data/lib/generators/active_admin/install/templates/migrations/create_active_admin_comments.rb.erb +1 -15
  305. data/lib/generators/active_admin/page/page_generator.rb +2 -1
  306. data/lib/generators/active_admin/page/templates/page.rb +1 -0
  307. data/lib/generators/active_admin/resource/resource_generator.rb +5 -4
  308. data/lib/generators/active_admin/resource/templates/admin.rb.erb +40 -37
  309. data/lib/generators/active_admin/webpacker/plugins/jquery.js +7 -0
  310. data/lib/generators/active_admin/webpacker/templates/active_admin.js +5 -0
  311. data/lib/generators/active_admin/webpacker/templates/active_admin.scss +17 -0
  312. data/lib/generators/active_admin/webpacker/templates/print.scss +2 -0
  313. data/lib/generators/active_admin/webpacker/webpacker_generator.rb +27 -0
  314. data/lib/ransack_ext.rb +10 -9
  315. data/vendor/assets/javascripts/jquery-ui/form-reset-mixin.js +80 -0
  316. data/vendor/assets/javascripts/jquery-ui/form.js +22 -0
  317. data/vendor/assets/javascripts/jquery-ui/labels.js +65 -0
  318. data/vendor/assets/javascripts/jquery-ui/widgets/checkboxradio.js +274 -283
  319. metadata +124 -557
  320. data/.github/ISSUE_TEMPLATE.md +0 -20
  321. data/.gitignore +0 -49
  322. data/.mdlrc +0 -1
  323. data/.rubocop.yml +0 -76
  324. data/.simplecov +0 -13
  325. data/.travis.yml +0 -51
  326. data/.yardopts +0 -7
  327. data/Gemfile +0 -58
  328. data/Rakefile +0 -54
  329. data/activeadmin.gemspec +0 -32
  330. data/app/assets/images/active_admin/nested_menu_arrow.gif +0 -0
  331. data/app/assets/images/active_admin/nested_menu_arrow_dark.gif +0 -0
  332. data/app/assets/images/active_admin/orderable.png +0 -0
  333. data/app/assets/javascripts/active_admin/base.js.coffee +0 -13
  334. data/app/assets/javascripts/active_admin/ext/jquery-ui.js.coffee +0 -6
  335. data/app/assets/javascripts/active_admin/ext/jquery.js.coffee +0 -7
  336. data/app/assets/javascripts/active_admin/initializers/batch_actions.js.coffee +0 -11
  337. data/app/assets/javascripts/active_admin/initializers/datepicker.js.coffee +0 -14
  338. data/app/assets/javascripts/active_admin/initializers/filters.js.coffee +0 -26
  339. data/app/assets/javascripts/active_admin/initializers/tabs.js.coffee +0 -7
  340. data/app/assets/javascripts/active_admin/lib/batch_actions.js.coffee +0 -42
  341. data/app/assets/javascripts/active_admin/lib/checkbox-toggler.js.coffee +0 -46
  342. data/app/assets/javascripts/active_admin/lib/dropdown-menu.js.coffee +0 -104
  343. data/app/assets/javascripts/active_admin/lib/flash.js.coffee +0 -19
  344. data/app/assets/javascripts/active_admin/lib/has_many.js.coffee +0 -79
  345. data/app/assets/javascripts/active_admin/lib/modal_dialog.js.coffee +0 -45
  346. data/app/assets/javascripts/active_admin/lib/per_page.js.coffee +0 -46
  347. data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.js.coffee +0 -22
  348. data/codecov.yml +0 -25
  349. data/config/i18n-tasks.yml +0 -26
  350. data/config/mdl_style.rb +0 -9
  351. data/cucumber.yml +0 -3
  352. data/features/action_item.feature +0 -73
  353. data/features/authorization.feature +0 -64
  354. data/features/authorization_cancan.feature +0 -52
  355. data/features/authorization_pundit.feature +0 -37
  356. data/features/belongs_to.feature +0 -124
  357. data/features/breadcrumb.feature +0 -75
  358. data/features/comments/commenting.feature +0 -178
  359. data/features/comments/viewing_index.feature +0 -19
  360. data/features/create_another.feature +0 -55
  361. data/features/dashboard.feature +0 -16
  362. data/features/decorators.feature +0 -43
  363. data/features/development_reloading.feature +0 -28
  364. data/features/edit_page.feature +0 -116
  365. data/features/favicon.feature +0 -20
  366. data/features/first_boot.feature +0 -16
  367. data/features/footer.feature +0 -28
  368. data/features/global_navigation.feature +0 -29
  369. data/features/i18n.feature +0 -55
  370. data/features/index/batch_actions.feature +0 -218
  371. data/features/index/filters.feature +0 -239
  372. data/features/index/format_as_csv.feature +0 -220
  373. data/features/index/formats.feature +0 -88
  374. data/features/index/index_as_block.feature +0 -15
  375. data/features/index/index_as_blog.feature +0 -69
  376. data/features/index/index_as_grid.feature +0 -45
  377. data/features/index/index_as_table.feature +0 -291
  378. data/features/index/index_blank_slate.feature +0 -83
  379. data/features/index/index_parameters.feature +0 -75
  380. data/features/index/index_scope_to.feature +0 -56
  381. data/features/index/index_scopes.feature +0 -285
  382. data/features/index/page_title.feature +0 -41
  383. data/features/index/pagination.feature +0 -63
  384. data/features/index/switch_index_view.feature +0 -73
  385. data/features/menu.feature +0 -72
  386. data/features/meta_tags.feature +0 -21
  387. data/features/new_page.feature +0 -107
  388. data/features/registering_assets.feature +0 -38
  389. data/features/registering_pages.feature +0 -237
  390. data/features/registering_resources.feature +0 -33
  391. data/features/renamed_resource.feature +0 -30
  392. data/features/root_to.feature +0 -17
  393. data/features/show/attributes_table_title.feature +0 -54
  394. data/features/show/columns.feature +0 -40
  395. data/features/show/default_content.feature +0 -44
  396. data/features/show/page_title.feature +0 -58
  397. data/features/show/tabs.feature +0 -33
  398. data/features/sidebar_sections.feature +0 -210
  399. data/features/site_title.feature +0 -47
  400. data/features/specifying_actions.feature +0 -118
  401. data/features/step_definitions/action_item_steps.rb +0 -7
  402. data/features/step_definitions/action_link_steps.rb +0 -19
  403. data/features/step_definitions/additional_web_steps.rb +0 -81
  404. data/features/step_definitions/asset_steps.rb +0 -15
  405. data/features/step_definitions/attribute_steps.rb +0 -18
  406. data/features/step_definitions/attributes_table_title_steps.rb +0 -11
  407. data/features/step_definitions/batch_action_steps.rb +0 -81
  408. data/features/step_definitions/blog_steps.rb +0 -3
  409. data/features/step_definitions/breadcrumb_steps.rb +0 -3
  410. data/features/step_definitions/column_steps.rb +0 -8
  411. data/features/step_definitions/comment_steps.rb +0 -32
  412. data/features/step_definitions/configuration_steps.rb +0 -100
  413. data/features/step_definitions/dashboard_steps.rb +0 -15
  414. data/features/step_definitions/factory_steps.rb +0 -35
  415. data/features/step_definitions/filter_steps.rb +0 -48
  416. data/features/step_definitions/flash_steps.rb +0 -11
  417. data/features/step_definitions/footer_steps.rb +0 -11
  418. data/features/step_definitions/format_steps.rb +0 -56
  419. data/features/step_definitions/i18n_steps.rb +0 -11
  420. data/features/step_definitions/index_scope_steps.rb +0 -29
  421. data/features/step_definitions/index_views_steps.rb +0 -3
  422. data/features/step_definitions/layout_steps.rb +0 -3
  423. data/features/step_definitions/member_link_steps.rb +0 -7
  424. data/features/step_definitions/menu_steps.rb +0 -11
  425. data/features/step_definitions/meta_tag_steps.rb +0 -3
  426. data/features/step_definitions/pagination_steps.rb +0 -15
  427. data/features/step_definitions/sidebar_steps.rb +0 -11
  428. data/features/step_definitions/site_title_steps.rb +0 -17
  429. data/features/step_definitions/tab_steps.rb +0 -8
  430. data/features/step_definitions/table_steps.rb +0 -116
  431. data/features/step_definitions/user_steps.rb +0 -52
  432. data/features/step_definitions/web_steps.rb +0 -86
  433. data/features/sti_resource.feature +0 -65
  434. data/features/strong_parameters.feature +0 -69
  435. data/features/support/env.rb +0 -122
  436. data/features/support/paths.rb +0 -73
  437. data/features/support/regular_env.rb +0 -7
  438. data/features/support/reload_env.rb +0 -7
  439. data/features/support/selectors.rb +0 -45
  440. data/features/users/logging_in.feature +0 -36
  441. data/features/users/logging_out.feature +0 -13
  442. data/features/users/resetting_password.feature +0 -34
  443. data/gemfiles/rails_42.gemfile +0 -10
  444. data/gemfiles/rails_50.gemfile +0 -10
  445. data/gemfiles/rails_51.gemfile +0 -10
  446. data/lib/active_admin/event.rb +0 -24
  447. data/lib/active_admin/helpers/settings.rb +0 -114
  448. data/lib/active_admin/reloader.rb +0 -25
  449. data/lib/bug_report_templates/active_admin_master.rb +0 -113
  450. data/lib/generators/active_admin/assets/templates/active_admin.js.coffee +0 -1
  451. data/spec/bug_report_templates_spec.rb +0 -26
  452. data/spec/javascripts/coffeescripts/jquery.aa.checkbox-toggler-spec.js.coffee +0 -50
  453. data/spec/javascripts/coffeescripts/jquery.aa.flash.js.coffee +0 -25
  454. data/spec/javascripts/coffeescripts/jquery.aa.table-checkbox-toggler-spec.js.coffee +0 -34
  455. data/spec/javascripts/fixtures/checkboxes.html +0 -9
  456. data/spec/javascripts/fixtures/flashes.html +0 -2
  457. data/spec/javascripts/fixtures/table_checkboxes.html +0 -17
  458. data/spec/javascripts/helpers/SpecHelper.js +0 -3
  459. data/spec/javascripts/support/jasmine.yml +0 -74
  460. data/spec/javascripts/support/jasmine_runner.rb +0 -19
  461. data/spec/rails_helper.rb +0 -59
  462. data/spec/requests/default_namespace_spec.rb +0 -81
  463. data/spec/requests/memory_spec.rb +0 -25
  464. data/spec/requests/stylesheets_spec.rb +0 -18
  465. data/spec/spec_helper.rb +0 -1
  466. data/spec/support/active_admin_integration_spec_helper.rb +0 -73
  467. data/spec/support/active_admin_request_helpers.rb +0 -39
  468. data/spec/support/rails_template.rb +0 -150
  469. data/spec/support/rails_template_with_data.rb +0 -327
  470. data/spec/support/templates/admin/stores.rb +0 -7
  471. data/spec/support/templates/en.yml +0 -8
  472. data/spec/support/templates/manifest.js +0 -3
  473. data/spec/support/templates/policies/active_admin/comment_policy.rb +0 -9
  474. data/spec/support/templates/policies/active_admin/page_policy.rb +0 -18
  475. data/spec/support/templates/policies/admin_user_policy.rb +0 -11
  476. data/spec/support/templates/policies/application_policy.rb +0 -44
  477. data/spec/support/templates/policies/category_policy.rb +0 -7
  478. data/spec/support/templates/policies/post_policy.rb +0 -15
  479. data/spec/support/templates/policies/store_policy.rb +0 -11
  480. data/spec/support/templates/policies/user_policy.rb +0 -11
  481. data/spec/support/templates/post_decorator.rb +0 -10
  482. data/spec/unit/abstract_view_factory_spec.rb +0 -78
  483. data/spec/unit/action_builder_spec.rb +0 -125
  484. data/spec/unit/active_admin_spec.rb +0 -11
  485. data/spec/unit/application_spec.rb +0 -184
  486. data/spec/unit/asset_registration_spec.rb +0 -81
  487. data/spec/unit/authorization/authorization_adapter_spec.rb +0 -61
  488. data/spec/unit/authorization/controller_authorization_spec.rb +0 -43
  489. data/spec/unit/authorization/index_overriding_spec.rb +0 -23
  490. data/spec/unit/auto_link_spec.rb +0 -93
  491. data/spec/unit/batch_actions/resource_spec.rb +0 -84
  492. data/spec/unit/batch_actions/settings_spec.rb +0 -61
  493. data/spec/unit/belongs_to_spec.rb +0 -76
  494. data/spec/unit/cancan_adapter_spec.rb +0 -43
  495. data/spec/unit/comments_spec.rb +0 -176
  496. data/spec/unit/component_spec.rb +0 -18
  497. data/spec/unit/config_shared_examples.rb +0 -59
  498. data/spec/unit/controller_filters_spec.rb +0 -41
  499. data/spec/unit/csv_builder_spec.rb +0 -304
  500. data/spec/unit/dependency_spec.rb +0 -135
  501. data/spec/unit/devise_spec.rb +0 -110
  502. data/spec/unit/dsl_spec.rb +0 -120
  503. data/spec/unit/filters/active_filter_spec.rb +0 -135
  504. data/spec/unit/filters/active_spec.rb +0 -24
  505. data/spec/unit/filters/filter_form_builder_spec.rb +0 -502
  506. data/spec/unit/filters/resource_spec.rb +0 -128
  507. data/spec/unit/form_builder_spec.rb +0 -990
  508. data/spec/unit/generators/install_spec.rb +0 -31
  509. data/spec/unit/helpers/collection_spec.rb +0 -68
  510. data/spec/unit/helpers/scope_chain_spec.rb +0 -35
  511. data/spec/unit/helpers/settings_spec.rb +0 -30
  512. data/spec/unit/i18n_spec.rb +0 -29
  513. data/spec/unit/localizers/resource_localizer_spec.rb +0 -36
  514. data/spec/unit/menu_collection_spec.rb +0 -62
  515. data/spec/unit/menu_item_spec.rb +0 -141
  516. data/spec/unit/menu_spec.rb +0 -71
  517. data/spec/unit/namespace/authorization_spec.rb +0 -27
  518. data/spec/unit/namespace/register_page_spec.rb +0 -99
  519. data/spec/unit/namespace/register_resource_spec.rb +0 -162
  520. data/spec/unit/namespace_spec.rb +0 -124
  521. data/spec/unit/order_clause_spec.rb +0 -81
  522. data/spec/unit/page_controller_spec.rb +0 -5
  523. data/spec/unit/page_spec.rb +0 -128
  524. data/spec/unit/pretty_format_spec.rb +0 -82
  525. data/spec/unit/pundit_adapter_spec.rb +0 -98
  526. data/spec/unit/resource/action_items_spec.rb +0 -69
  527. data/spec/unit/resource/attributes_spec.rb +0 -49
  528. data/spec/unit/resource/includes_spec.rb +0 -21
  529. data/spec/unit/resource/menu_spec.rb +0 -18
  530. data/spec/unit/resource/naming_spec.rb +0 -122
  531. data/spec/unit/resource/ordering_spec.rb +0 -35
  532. data/spec/unit/resource/page_presenters_spec.rb +0 -44
  533. data/spec/unit/resource/pagination_spec.rb +0 -38
  534. data/spec/unit/resource/routes_spec.rb +0 -125
  535. data/spec/unit/resource/scopes_spec.rb +0 -50
  536. data/spec/unit/resource/sidebars_spec.rb +0 -43
  537. data/spec/unit/resource_collection_spec.rb +0 -175
  538. data/spec/unit/resource_controller/data_access_spec.rb +0 -230
  539. data/spec/unit/resource_controller/decorators_spec.rb +0 -94
  540. data/spec/unit/resource_controller/sidebars_spec.rb +0 -37
  541. data/spec/unit/resource_controller_spec.rb +0 -273
  542. data/spec/unit/resource_registration_spec.rb +0 -61
  543. data/spec/unit/resource_spec.rb +0 -320
  544. data/spec/unit/routing_spec.rb +0 -211
  545. data/spec/unit/scope_spec.rb +0 -209
  546. data/spec/unit/settings_spec.rb +0 -117
  547. data/spec/unit/view_factory_spec.rb +0 -19
  548. data/spec/unit/view_helpers/breadcrumbs_spec.rb +0 -252
  549. data/spec/unit/view_helpers/display_helper_spec.rb +0 -195
  550. data/spec/unit/view_helpers/download_format_links_helper_spec.rb +0 -39
  551. data/spec/unit/view_helpers/fields_for_spec.rb +0 -50
  552. data/spec/unit/view_helpers/flash_helper_spec.rb +0 -24
  553. data/spec/unit/view_helpers/form_helper_spec.rb +0 -42
  554. data/spec/unit/view_helpers/method_or_proc_helper_spec.rb +0 -138
  555. data/spec/unit/views/components/attributes_table_spec.rb +0 -271
  556. data/spec/unit/views/components/batch_action_selector_spec.rb +0 -43
  557. data/spec/unit/views/components/blank_slate_spec.rb +0 -27
  558. data/spec/unit/views/components/columns_spec.rb +0 -187
  559. data/spec/unit/views/components/index_list_spec.rb +0 -49
  560. data/spec/unit/views/components/index_table_for_spec.rb +0 -127
  561. data/spec/unit/views/components/paginated_collection_spec.rb +0 -249
  562. data/spec/unit/views/components/panel_spec.rb +0 -58
  563. data/spec/unit/views/components/sidebar_section_spec.rb +0 -68
  564. data/spec/unit/views/components/site_title_spec.rb +0 -76
  565. data/spec/unit/views/components/status_tag_spec.rb +0 -265
  566. data/spec/unit/views/components/table_for_spec.rb +0 -436
  567. data/spec/unit/views/components/tabs_spec.rb +0 -67
  568. data/spec/unit/views/components/unsupported_browser_spec.rb +0 -41
  569. data/spec/unit/views/index_as_blog_spec.rb +0 -76
  570. data/spec/unit/views/pages/form_spec.rb +0 -54
  571. data/spec/unit/views/pages/index_spec.rb +0 -60
  572. data/spec/unit/views/pages/layout_spec.rb +0 -59
  573. data/spec/unit/views/pages/show_spec.rb +0 -32
  574. data/spec/unit/views/tabbed_navigation_spec.rb +0 -158
  575. data/tasks/docs.rake +0 -64
  576. data/tasks/lint.rake +0 -21
  577. data/tasks/local.rake +0 -25
  578. data/tasks/parallel_tests.rake +0 -66
  579. data/tasks/test.rake +0 -29
  580. /data/lib/generators/active_admin/install/templates/{admin_user.rb.erb → admin_users.rb.erb} +0 -0
@@ -1,9 +1,10 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  class OrderClause
3
4
  attr_reader :field, :order, :active_admin_config
4
5
 
5
6
  def initialize(active_admin_config, clause)
6
- clause =~ /^([\w\_\.]+)(->'\w+')?_(desc|asc)$/
7
+ clause =~ /^([\w\.]+)(->'\w+')?_(desc|asc)$/
7
8
  @column = $1
8
9
  @op = $2
9
10
  @order = $3
@@ -16,11 +17,11 @@ module ActiveAdmin
16
17
  end
17
18
 
18
19
  def apply(chain)
19
- chain.reorder(sql)
20
+ chain.reorder(Arel.sql sql)
20
21
  end
21
22
 
22
23
  def to_sql
23
- [table_column, @op, ' ', @order].compact.join
24
+ [table_column, @op, " ", @order].compact.join
24
25
  end
25
26
 
26
27
  def table
@@ -1,10 +1,11 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  class Comment < ActiveRecord::Base
3
4
 
4
5
  self.table_name = "#{table_name_prefix}active_admin_comments#{table_name_suffix}"
5
6
 
6
- belongs_to :resource, polymorphic: true
7
- belongs_to :author, polymorphic: true
7
+ belongs_to :resource, polymorphic: true, optional: true
8
+ belongs_to :author, polymorphic: true
8
9
 
9
10
  validates_presence_of :body, :namespace, :resource
10
11
 
@@ -18,8 +19,8 @@ module ActiveAdmin
18
19
  def self.find_for_resource_in_namespace(resource, namespace)
19
20
  where(
20
21
  resource_type: resource_type(resource),
21
- resource_id: resource,
22
- namespace: namespace.to_s
22
+ resource_id: resource.id,
23
+ namespace: namespace.to_s
23
24
  ).order(ActiveAdmin.application.namespaces[namespace.to_sym].comments_order)
24
25
  end
25
26
 
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  module Comments
3
4
 
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  module Comments
3
4
 
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  module Comments
3
4
 
@@ -1,5 +1,6 @@
1
- require 'active_admin/views'
2
- require 'active_admin/views/components/panel'
1
+ # frozen_string_literal: true
2
+ require "active_admin/views"
3
+ require "active_admin/views/components/panel"
3
4
 
4
5
  module ActiveAdmin
5
6
  module Comments
@@ -11,77 +12,87 @@ module ActiveAdmin
11
12
  attr_accessor :resource
12
13
 
13
14
  def build(resource)
14
- @resource = resource
15
- @comments = ActiveAdmin::Comment.find_for_resource_in_namespace(resource, active_admin_namespace.name).page(params[:page])
16
- super(title, for: resource)
17
- build_comments
15
+ if authorized?(ActiveAdmin::Auth::READ, ActiveAdmin::Comment)
16
+ @resource = resource
17
+ @comments = active_admin_authorization.scope_collection(ActiveAdmin::Comment.find_for_resource_in_namespace(resource, active_admin_namespace.name).includes(:author).page(params[:page]))
18
+ super(title, for: resource)
19
+ build_comments
20
+ end
18
21
  end
19
22
 
20
23
  protected
21
24
 
22
25
  def title
23
- I18n.t 'active_admin.comments.title_content', count: @comments.total_count
26
+ I18n.t "active_admin.comments.title_content", count: @comments.total_count
24
27
  end
25
28
 
26
29
  def build_comments
27
- @comments.any? ? @comments.each(&method(:build_comment)) : build_empty_message
28
- div page_entries_info(@comments).html_safe, class: 'pagination_information'
30
+ if @comments.any?
31
+ @comments.each(&method(:build_comment))
32
+ div page_entries_info(@comments).html_safe, class: "pagination_information"
33
+ else
34
+ build_empty_message
35
+ end
36
+
29
37
  text_node paginate @comments
30
- build_comment_form
38
+
39
+ if authorized?(ActiveAdmin::Auth::CREATE, ActiveAdmin::Comment)
40
+ build_comment_form
41
+ end
31
42
  end
32
43
 
33
44
  def build_comment(comment)
34
45
  div for: comment do
35
- div class: 'active_admin_comment_meta' do
36
- h4 class: 'active_admin_comment_author' do
37
- comment.author ? auto_link(comment.author) : I18n.t('active_admin.comments.author_missing')
46
+ div class: "active_admin_comment_meta" do
47
+ h4 class: "active_admin_comment_author" do
48
+ comment.author ? auto_link(comment.author) : I18n.t("active_admin.comments.author_missing")
38
49
  end
39
50
  span pretty_format comment.created_at
40
51
  if authorized?(ActiveAdmin::Auth::DESTROY, comment)
41
- text_node link_to I18n.t('active_admin.comments.delete'), comments_url(comment.id), method: :delete, data: { confirm: I18n.t('active_admin.comments.delete_confirmation') }
52
+ text_node link_to I18n.t("active_admin.comments.delete"), comments_url(comment.id), method: :delete, data: { confirm: I18n.t("active_admin.comments.delete_confirmation") }
42
53
  end
43
54
  end
44
- div class: 'active_admin_comment_body' do
55
+ div class: "active_admin_comment_body" do
45
56
  simple_format comment.body
46
57
  end
47
58
  end
48
59
  end
49
60
 
50
61
  def build_empty_message
51
- span I18n.t('active_admin.comments.no_comments_yet'), class: 'empty'
62
+ span I18n.t("active_admin.comments.no_comments_yet"), class: "empty"
52
63
  end
53
64
 
54
65
  def comments_url(*args)
55
66
  parts = []
56
67
  parts << active_admin_namespace.name unless active_admin_namespace.root?
57
68
  parts << active_admin_namespace.comments_registration_name.underscore
58
- parts << 'path'
59
- send parts.join('_'), *args
69
+ parts << "path"
70
+ send parts.join("_"), *args
60
71
  end
61
72
 
62
73
  def comment_form_url
63
74
  parts = []
64
75
  parts << active_admin_namespace.name unless active_admin_namespace.root?
65
76
  parts << active_admin_namespace.comments_registration_name.underscore.pluralize
66
- parts << 'path'
67
- send parts.join '_'
77
+ parts << "path"
78
+ send parts.join "_"
68
79
  end
69
80
 
70
81
  def build_comment_form
71
82
  active_admin_form_for(ActiveAdmin::Comment.new, url: comment_form_url) do |f|
72
83
  f.inputs do
73
- f.input :resource_type, as: :hidden, input_html: { value: ActiveAdmin::Comment.resource_type(parent.resource) }
74
- f.input :resource_id, as: :hidden, input_html: { value: parent.resource.id }
75
- f.input :body, label: false, input_html: { size: '80x8' }
84
+ f.input :resource_type, as: :hidden, input_html: { value: ActiveAdmin::Comment.resource_type(parent.resource) }
85
+ f.input :resource_id, as: :hidden, input_html: { value: parent.resource.id }
86
+ f.input :body, label: false, input_html: { size: "80x8" }
76
87
  end
77
88
  f.actions do
78
- f.action :submit, label: I18n.t('active_admin.comments.add')
89
+ f.action :submit, label: I18n.t("active_admin.comments.add")
79
90
  end
80
91
  end
81
92
  end
82
93
 
83
94
  def default_id_for_prefix
84
- 'active_admin_comments_for'
95
+ "active_admin_comments_for"
85
96
  end
86
97
  end
87
98
 
@@ -1,2 +1,3 @@
1
- require 'active_admin/views'
2
- require 'active_admin/orm/active_record/comments/views/active_admin_comments'
1
+ # frozen_string_literal: true
2
+ require "active_admin/views"
3
+ require "active_admin/orm/active_record/comments/views/active_admin_comments"
@@ -1,21 +1,33 @@
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
+ # frozen_string_literal: true
2
+ require "active_admin/orm/active_record/comments/views"
3
+ require "active_admin/orm/active_record/comments/show_page_helper"
4
+ require "active_admin/orm/active_record/comments/namespace_helper"
5
+ require "active_admin/orm/active_record/comments/resource_helper"
5
6
 
6
7
  # Add the comments configuration
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, {}
8
+ ActiveAdmin::Application.inheritable_setting :comments, true
9
+ ActiveAdmin::Application.inheritable_setting :comments_registration_name, "Comment"
10
+ ActiveAdmin::Application.inheritable_setting :comments_order, "created_at ASC"
11
+ ActiveAdmin::Application.inheritable_setting :comments_menu, {}
11
12
 
12
13
  # Insert helper modules
13
14
  ActiveAdmin::Namespace.send :include, ActiveAdmin::Comments::NamespaceHelper
14
- ActiveAdmin::Resource.send :include, ActiveAdmin::Comments::ResourceHelper
15
+ ActiveAdmin::Resource.send :include, ActiveAdmin::Comments::ResourceHelper
15
16
  ActiveAdmin.application.view_factory.show_page.send :include, ActiveAdmin::Comments::ShowPageHelper
16
17
 
17
18
  # Load the model as soon as it's referenced. By that point, Rails & Kaminari will be ready
18
- ActiveAdmin.autoload :Comment, 'active_admin/orm/active_record/comments/comment'
19
+ ActiveAdmin.autoload :Comment, "active_admin/orm/active_record/comments/comment"
20
+
21
+ # Hint i18n-tasks about model and attribute translations used by default install
22
+ # i18n-tasks-use t('activerecord.models.comment')
23
+ # i18n-tasks-use t('activerecord.models.active_admin/comment')
24
+ # i18n-tasks-use t('activerecord.attributes.active_admin/comment.author_type')
25
+ # i18n-tasks-use t('activerecord.attributes.active_admin/comment.body')
26
+ # i18n-tasks-use t('activerecord.attributes.active_admin/comment.created_at')
27
+ # i18n-tasks-use t('activerecord.attributes.active_admin/comment.namespace')
28
+ # i18n-tasks-use t('activerecord.attributes.active_admin/comment.resource_type')
29
+ # i18n-tasks-use t('activerecord.attributes.active_admin/comment.updated_at')
30
+ # i18n-tasks-use t('active_admin.scopes.all')
19
31
 
20
32
  # Walk through all the loaded namespaces after they're loaded
21
33
  ActiveAdmin.after_load do |app|
@@ -25,7 +37,7 @@ ActiveAdmin.after_load do |app|
25
37
 
26
38
  menu namespace.comments ? namespace.comments_menu : false
27
39
 
28
- config.comments = false # Don't allow comments on comments
40
+ config.comments = false # Don't allow comments on comments
29
41
  config.batch_actions = false # The default destroy batch action isn't showing up anyway...
30
42
 
31
43
  scope :all, show_count: false
@@ -40,7 +52,7 @@ ActiveAdmin.after_load do |app|
40
52
  # Store the author and namespace
41
53
  before_save do |comment|
42
54
  comment.namespace = active_admin_config.namespace.name
43
- comment.author = current_active_admin_user
55
+ comment.author = current_active_admin_user
44
56
  end
45
57
 
46
58
  controller do
@@ -53,21 +65,21 @@ ActiveAdmin.after_load do |app|
53
65
  def create
54
66
  create! do |success, failure|
55
67
  success.html do
56
- ActiveAdmin::Dependency.rails.redirect_back self, active_admin_root
68
+ redirect_back fallback_location: active_admin_root
57
69
  end
58
70
  failure.html do
59
- flash[:error] = I18n.t 'active_admin.comments.errors.empty_text'
60
- ActiveAdmin::Dependency.rails.redirect_back self, active_admin_root
71
+ flash[:error] = I18n.t "active_admin.comments.errors.empty_text"
72
+ redirect_back fallback_location: active_admin_root
61
73
  end
62
74
  end
63
75
 
64
76
  def destroy
65
77
  destroy! do |success, failure|
66
78
  success.html do
67
- ActiveAdmin::Dependency.rails.redirect_back self, active_admin_root
79
+ redirect_back fallback_location: active_admin_root
68
80
  end
69
81
  failure.html do
70
- ActiveAdmin::Dependency.rails.redirect_back self, active_admin_root
82
+ redirect_back fallback_location: active_admin_root
71
83
  end
72
84
  end
73
85
  end
@@ -77,12 +89,12 @@ ActiveAdmin.after_load do |app|
77
89
  permit_params :body, :namespace, :resource_id, :resource_type
78
90
 
79
91
  index do
80
- column I18n.t('active_admin.comments.resource_type'), :resource_type
81
- column I18n.t('active_admin.comments.author_type'), :author_type
82
- column I18n.t('active_admin.comments.resource'), :resource
83
- column I18n.t('active_admin.comments.author'), :author
84
- column I18n.t('active_admin.comments.body'), :body
85
- column I18n.t('active_admin.comments.created_at'), :created_at
92
+ column I18n.t("active_admin.comments.resource_type"), :resource_type
93
+ column I18n.t("active_admin.comments.author_type"), :author_type
94
+ column I18n.t("active_admin.comments.resource"), :resource
95
+ column I18n.t("active_admin.comments.author"), :author
96
+ column I18n.t("active_admin.comments.body"), :body
97
+ column I18n.t("active_admin.comments.created_at"), :created_at
86
98
  actions
87
99
  end
88
100
  end
@@ -1,5 +1,6 @@
1
+ # frozen_string_literal: true
1
2
  # ActiveRecord-specific plugins should be required here
2
3
 
3
4
  ActiveAdmin::DatabaseHitDuringLoad.database_error_classes << ActiveRecord::StatementInvalid
4
5
 
5
- require 'active_admin/orm/active_record/comments'
6
+ require "active_admin/orm/active_record/comments"
@@ -1 +1,2 @@
1
+ # frozen_string_literal: true
1
2
  # Mongoid-specific plugins should be required here
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  # Page is the primary data storage for page configuration in Active Admin
3
4
  #
@@ -65,7 +66,7 @@ module ActiveAdmin
65
66
  end
66
67
 
67
68
  def controller_name
68
- [namespace.module_name, camelized_resource_name + "Controller"].compact.join('::')
69
+ [namespace.module_name, camelized_resource_name + "Controller"].compact.join("::")
69
70
  end
70
71
 
71
72
  # Override from `ActiveAdmin::Resource::Controllers`
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
 
3
4
  # All Pages controllers inherit from this controller.
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  # This is the class where all the register_page blocks are evaluated.
3
4
  class PageDSL < DSL
@@ -21,7 +22,7 @@ module ActiveAdmin
21
22
  def page_action(name, options = {}, &block)
22
23
  config.page_actions << ControllerAction.new(name, options)
23
24
  controller do
24
- define_method(name, &block || Proc.new{})
25
+ define_method(name, &block || Proc.new {})
25
26
  end
26
27
  end
27
28
 
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
 
3
4
  # A simple object that gets used to present different aspects of views
@@ -21,7 +22,8 @@ module ActiveAdmin
21
22
  delegate :has_key?, :fetch, to: :options
22
23
 
23
24
  def initialize(options = {}, &block)
24
- @options, @block = options, block
25
+ @options = options
26
+ @block = block
25
27
  end
26
28
 
27
29
  def [](key)
@@ -1,9 +1,11 @@
1
+ # frozen_string_literal: true
1
2
  ActiveAdmin::Dependency.pundit!
2
3
 
3
- require 'pundit'
4
+ require "pundit"
4
5
 
5
6
  # Add a setting to the application to configure the pundit default policy
6
7
  ActiveAdmin::Application.inheritable_setting :pundit_default_policy, nil
8
+ ActiveAdmin::Application.inheritable_setting :pundit_policy_namespace, nil
7
9
 
8
10
  module ActiveAdmin
9
11
 
@@ -19,7 +21,7 @@ module ActiveAdmin
19
21
  def scope_collection(collection, action = Auth::READ)
20
22
  # scoping is appliable only to read/index action
21
23
  # which means there is no way how to scope other actions
22
- Pundit.policy_scope!(user, collection)
24
+ Pundit.policy_scope!(user, namespace(collection))
23
25
  rescue Pundit::NotDefinedError => e
24
26
  if default_policy_class && default_policy_class.const_defined?(:Scope)
25
27
  default_policy_class::Scope.new(user, collection).resolve
@@ -29,13 +31,11 @@ module ActiveAdmin
29
31
  end
30
32
 
31
33
  def retrieve_policy(subject)
32
- 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)
36
- end
34
+ Pundit.policy!(user, namespace(policy_target(subject)))
37
35
  rescue Pundit::NotDefinedError => e
38
- if default_policy_class
36
+ if (policy = compat_policy(subject))
37
+ policy
38
+ elsif default_policy_class
39
39
  default_policy(user, subject)
40
40
  else
41
41
  raise e
@@ -43,11 +43,11 @@ module ActiveAdmin
43
43
  end
44
44
 
45
45
  def format_action(action, subject)
46
- # https://github.com/elabs/pundit/blob/master/lib/generators/pundit/install/templates/application_policy.rb
46
+ # https://github.com/varvet/pundit/blob/master/lib/generators/pundit/install/templates/application_policy.rb
47
47
  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?
48
+ when Auth::CREATE then :create?
49
+ when Auth::UPDATE then :update?
50
+ when Auth::READ then subject.is_a?(Class) ? :index? : :show?
51
51
  when Auth::DESTROY then subject.is_a?(Class) ? :destroy_all? : :destroy?
52
52
  else "#{action}?"
53
53
  end
@@ -55,6 +55,47 @@ module ActiveAdmin
55
55
 
56
56
  private
57
57
 
58
+ def policy_target(subject)
59
+ case subject
60
+ when nil then resource
61
+ when Class then subject.new
62
+ else subject
63
+ end
64
+ end
65
+
66
+ # This method is needed to fallback to our previous policy searching logic.
67
+ # I.e.: when class name contains `default_policy_namespace` (eg: ShopAdmin)
68
+ # we should try to search it without namespace. This is because that's
69
+ # the only thing that worked in this case before we fixed our buggy namespace
70
+ # detection, so people are probably relying on it.
71
+ # This fallback might be removed in future versions of ActiveAdmin, so
72
+ # pundit_adapter search will work consistently with provided namespaces
73
+ def compat_policy(subject)
74
+ target = policy_target(subject)
75
+
76
+ return unless default_policy_namespace &&
77
+ target.class.to_s.include?(default_policy_module) &&
78
+ (policy = Pundit.policy(user, target))
79
+
80
+ policy_name = policy.class.to_s
81
+
82
+ Deprecation.warn "You have `pundit_policy_namespace` configured as `#{default_policy_namespace}`, " \
83
+ "but ActiveAdmin was unable to find policy #{default_policy_module}::#{policy_name}. " \
84
+ "#{policy_name} will be used instead. " \
85
+ "This behavior will be removed in future versions of ActiveAdmin. " \
86
+ "To fix this warning, move your #{policy_name} policy to the #{default_policy_module} namespace"
87
+
88
+ policy
89
+ end
90
+
91
+ def namespace(object)
92
+ if default_policy_namespace && !object.class.to_s.match?(/^#{default_policy_module}::/)
93
+ [default_policy_namespace.to_sym, object]
94
+ else
95
+ object
96
+ end
97
+ end
98
+
58
99
  def default_policy_class
59
100
  ActiveAdmin.application.pundit_default_policy && ActiveAdmin.application.pundit_default_policy.constantize
60
101
  end
@@ -63,6 +104,14 @@ module ActiveAdmin
63
104
  default_policy_class.new(user, subject)
64
105
  end
65
106
 
107
+ def default_policy_namespace
108
+ ActiveAdmin.application.pundit_policy_namespace
109
+ end
110
+
111
+ def default_policy_module
112
+ default_policy_namespace.to_s.camelize
113
+ end
114
+
66
115
  end
67
116
 
68
117
  end
@@ -1,4 +1,5 @@
1
- require 'active_admin/helpers/optional_display'
1
+ # frozen_string_literal: true
2
+ require "active_admin/helpers/optional_display"
2
3
 
3
4
  module ActiveAdmin
4
5
 
@@ -24,6 +25,7 @@ module ActiveAdmin
24
25
  # this action item on.
25
26
  # :except: A single or array of controller actions not to
26
27
  # display this action item on.
28
+ # :priority: A single integer value. To control the display order. Default is 10.
27
29
  def add_action_item(name, options = {}, &block)
28
30
  self.action_items << ActiveAdmin::ActionItem.new(name, options, &block)
29
31
  end
@@ -38,7 +40,7 @@ module ActiveAdmin
38
40
  #
39
41
  # @return [Array] Array of ActionItems for the controller actions
40
42
  def action_items_for(action, render_context = nil)
41
- action_items.select{ |item| item.display_on? action, render_context }
43
+ action_items.select { |item| item.display_on? action, render_context }.sort_by(&:priority)
42
44
  end
43
45
 
44
46
  # Clears all the existing action items for this resource
@@ -63,7 +65,7 @@ module ActiveAdmin
63
65
  # Adds the default New link on index
64
66
  def add_default_new_action_item
65
67
  add_action_item :new, only: :index do
66
- if controller.action_methods.include?('new') && authorized?(ActiveAdmin::Auth::CREATE, active_admin_config.resource_class)
68
+ if controller.action_methods.include?("new") && authorized?(ActiveAdmin::Auth::CREATE, active_admin_config.resource_class)
67
69
  localizer = ActiveAdmin::Localizers.resource(active_admin_config)
68
70
  link_to localizer.t(:new_model), new_resource_path
69
71
  end
@@ -73,7 +75,7 @@ module ActiveAdmin
73
75
  # Adds the default Edit link on show
74
76
  def add_default_edit_action_item
75
77
  add_action_item :edit, only: :show do
76
- if controller.action_methods.include?('edit') && authorized?(ActiveAdmin::Auth::UPDATE, resource)
78
+ if controller.action_methods.include?("edit") && authorized?(ActiveAdmin::Auth::UPDATE, resource)
77
79
  localizer = ActiveAdmin::Localizers.resource(active_admin_config)
78
80
  link_to localizer.t(:edit_model), edit_resource_path(resource)
79
81
  end
@@ -83,10 +85,10 @@ module ActiveAdmin
83
85
  # Adds the default Destroy link on show
84
86
  def add_default_show_action_item
85
87
  add_action_item :destroy, only: :show do
86
- if controller.action_methods.include?('destroy') && authorized?(ActiveAdmin::Auth::DESTROY, resource)
88
+ if controller.action_methods.include?("destroy") && authorized?(ActiveAdmin::Auth::DESTROY, resource)
87
89
  localizer = ActiveAdmin::Localizers.resource(active_admin_config)
88
90
  link_to localizer.t(:delete_model), resource_path(resource), method: :delete,
89
- data: {confirm: localizer.t(:delete_confirmation)}
91
+ data: { confirm: localizer.t(:delete_confirmation) }
90
92
  end
91
93
  end
92
94
  end
@@ -110,6 +112,10 @@ module ActiveAdmin
110
112
  def html_class
111
113
  "action_item #{@options[:class]}".rstrip
112
114
  end
115
+
116
+ def priority
117
+ @options[:priority] || 10
118
+ end
113
119
  end
114
120
 
115
121
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
 
3
4
  class Resource
@@ -18,13 +19,13 @@ module ActiveAdmin
18
19
 
19
20
  def foreign_methods
20
21
  @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 }
22
+ select { |r| r.macro == :belongs_to }.
23
+ reject { |r| r.chain.length > 2 && !r.options[:polymorphic] }.
24
+ index_by { |r| r.foreign_key.to_sym }
24
25
  end
25
26
 
26
27
  def reject_col?(c)
27
- primary_col?(c) || sti_col?(c) || counter_cache_col?(c)
28
+ primary_col?(c) || sti_col?(c) || counter_cache_col?(c) || filtered_col?(c)
28
29
  end
29
30
 
30
31
  def primary_col?(c)
@@ -36,9 +37,12 @@ module ActiveAdmin
36
37
  end
37
38
 
38
39
  def counter_cache_col?(c)
39
- c.name.end_with?('_count')
40
+ c.name.end_with?("_count")
40
41
  end
41
42
 
43
+ def filtered_col?(c)
44
+ ActiveAdmin.application.filter_attributes.include?(c.name.to_sym)
45
+ end
42
46
  end
43
47
  end
44
48
  end
@@ -1,4 +1,5 @@
1
- require 'active_admin/resource'
1
+ # frozen_string_literal: true
2
+ require "active_admin/resource"
2
3
 
3
4
  module ActiveAdmin
4
5
  class Resource
@@ -14,8 +15,13 @@ module ActiveAdmin
14
15
  # The resource which initiated this relationship
15
16
  attr_reader :owner
16
17
 
18
+ # The name of the relation
19
+ attr_reader :target_name
20
+
17
21
  def initialize(owner, target_name, options = {})
18
- @owner, @target_name, @options = owner, target_name, options
22
+ @owner = owner
23
+ @target_name = target_name
24
+ @options = options
19
25
  end
20
26
 
21
27
  # Returns the target resource class or raises an exception if it doesn't exist
@@ -41,7 +47,7 @@ module ActiveAdmin
41
47
  end
42
48
 
43
49
  def to_param
44
- :"#{@target_name}_id"
50
+ (@options[:param] || "#{@target_name}_id").to_sym
45
51
  end
46
52
  end
47
53
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  class Resource
3
4
  module Controllers
@@ -6,7 +7,7 @@ module ActiveAdmin
6
7
  # Returns a properly formatted controller name for this
7
8
  # config within its namespace
8
9
  def controller_name
9
- [namespace.module_name, resource_name.plural.camelize + "Controller"].compact.join('::')
10
+ [namespace.module_name, resource_name.plural.camelize + "Controller"].compact.join("::")
10
11
  end
11
12
 
12
13
  # Returns the controller for this config
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  class Resource
3
4
  module Includes