activeadmin 1.3.0 → 2.13.1

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 (582) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +764 -135
  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 +23 -4
  80. data/config/locales/eo.yml +1 -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 +23 -0
  91. data/config/locales/ja.yml +4 -3
  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 +1 -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 +1 -0
  105. data/config/locales/tr.yml +10 -0
  106. data/config/locales/uk.yml +3 -0
  107. data/config/locales/vi.yml +7 -5
  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 +19 -5
  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 +25 -5
  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 -23
  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 +12 -11
  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 +3 -2
  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 +33 -20
  197. data/lib/active_admin/namespace_settings.rb +127 -0
  198. data/lib/active_admin/order_clause.rb +3 -2
  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 +30 -24
  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 +73 -16
  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 +31 -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 +16 -28
  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 -3
  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 +4 -3
  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 +126 -558
  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 -250
  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 -136
  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 -47
  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/gemfiles/rails_52.gemfile +0 -11
  447. data/lib/active_admin/event.rb +0 -24
  448. data/lib/active_admin/helpers/output_safety_helper.rb +0 -35
  449. data/lib/active_admin/helpers/settings.rb +0 -114
  450. data/lib/active_admin/reloader.rb +0 -25
  451. data/lib/bug_report_templates/active_admin_master.rb +0 -112
  452. data/lib/generators/active_admin/assets/templates/active_admin.js.coffee +0 -1
  453. data/spec/bug_report_templates_spec.rb +0 -26
  454. data/spec/javascripts/coffeescripts/jquery.aa.checkbox-toggler-spec.js.coffee +0 -50
  455. data/spec/javascripts/coffeescripts/jquery.aa.flash.js.coffee +0 -25
  456. data/spec/javascripts/coffeescripts/jquery.aa.table-checkbox-toggler-spec.js.coffee +0 -34
  457. data/spec/javascripts/fixtures/checkboxes.html +0 -9
  458. data/spec/javascripts/fixtures/flashes.html +0 -2
  459. data/spec/javascripts/fixtures/table_checkboxes.html +0 -17
  460. data/spec/javascripts/helpers/SpecHelper.js +0 -3
  461. data/spec/javascripts/support/jasmine.yml +0 -74
  462. data/spec/javascripts/support/jasmine_runner.rb +0 -19
  463. data/spec/rails_helper.rb +0 -59
  464. data/spec/requests/default_namespace_spec.rb +0 -81
  465. data/spec/requests/memory_spec.rb +0 -25
  466. data/spec/requests/stylesheets_spec.rb +0 -18
  467. data/spec/spec_helper.rb +0 -1
  468. data/spec/support/active_admin_integration_spec_helper.rb +0 -73
  469. data/spec/support/active_admin_request_helpers.rb +0 -39
  470. data/spec/support/rails_template.rb +0 -153
  471. data/spec/support/rails_template_with_data.rb +0 -327
  472. data/spec/support/templates/admin/stores.rb +0 -7
  473. data/spec/support/templates/en.yml +0 -8
  474. data/spec/support/templates/manifest.js +0 -3
  475. data/spec/support/templates/policies/active_admin/comment_policy.rb +0 -9
  476. data/spec/support/templates/policies/active_admin/page_policy.rb +0 -18
  477. data/spec/support/templates/policies/admin_user_policy.rb +0 -11
  478. data/spec/support/templates/policies/application_policy.rb +0 -44
  479. data/spec/support/templates/policies/category_policy.rb +0 -7
  480. data/spec/support/templates/policies/post_policy.rb +0 -15
  481. data/spec/support/templates/policies/store_policy.rb +0 -11
  482. data/spec/support/templates/policies/user_policy.rb +0 -11
  483. data/spec/support/templates/post_decorator.rb +0 -24
  484. data/spec/unit/abstract_view_factory_spec.rb +0 -78
  485. data/spec/unit/action_builder_spec.rb +0 -158
  486. data/spec/unit/active_admin_spec.rb +0 -11
  487. data/spec/unit/application_spec.rb +0 -184
  488. data/spec/unit/asset_registration_spec.rb +0 -81
  489. data/spec/unit/authorization/authorization_adapter_spec.rb +0 -61
  490. data/spec/unit/authorization/controller_authorization_spec.rb +0 -43
  491. data/spec/unit/authorization/index_overriding_spec.rb +0 -23
  492. data/spec/unit/auto_link_spec.rb +0 -93
  493. data/spec/unit/batch_actions/resource_spec.rb +0 -84
  494. data/spec/unit/batch_actions/settings_spec.rb +0 -61
  495. data/spec/unit/belongs_to_spec.rb +0 -76
  496. data/spec/unit/cancan_adapter_spec.rb +0 -43
  497. data/spec/unit/comments_spec.rb +0 -176
  498. data/spec/unit/component_spec.rb +0 -18
  499. data/spec/unit/config_shared_examples.rb +0 -59
  500. data/spec/unit/controller_filters_spec.rb +0 -41
  501. data/spec/unit/csv_builder_spec.rb +0 -313
  502. data/spec/unit/dependency_spec.rb +0 -135
  503. data/spec/unit/devise_spec.rb +0 -110
  504. data/spec/unit/dsl_spec.rb +0 -120
  505. data/spec/unit/filters/active_filter_spec.rb +0 -189
  506. data/spec/unit/filters/active_spec.rb +0 -24
  507. data/spec/unit/filters/filter_form_builder_spec.rb +0 -524
  508. data/spec/unit/filters/resource_spec.rb +0 -128
  509. data/spec/unit/form_builder_spec.rb +0 -990
  510. data/spec/unit/generators/install_spec.rb +0 -31
  511. data/spec/unit/helpers/collection_spec.rb +0 -68
  512. data/spec/unit/helpers/output_safety_helper_spec.rb +0 -79
  513. data/spec/unit/helpers/scope_chain_spec.rb +0 -35
  514. data/spec/unit/helpers/settings_spec.rb +0 -30
  515. data/spec/unit/i18n_spec.rb +0 -29
  516. data/spec/unit/localizers/resource_localizer_spec.rb +0 -36
  517. data/spec/unit/menu_collection_spec.rb +0 -62
  518. data/spec/unit/menu_item_spec.rb +0 -141
  519. data/spec/unit/menu_spec.rb +0 -71
  520. data/spec/unit/namespace/authorization_spec.rb +0 -27
  521. data/spec/unit/namespace/register_page_spec.rb +0 -99
  522. data/spec/unit/namespace/register_resource_spec.rb +0 -162
  523. data/spec/unit/namespace_spec.rb +0 -124
  524. data/spec/unit/order_clause_spec.rb +0 -81
  525. data/spec/unit/page_controller_spec.rb +0 -5
  526. data/spec/unit/page_spec.rb +0 -128
  527. data/spec/unit/pretty_format_spec.rb +0 -82
  528. data/spec/unit/pundit_adapter_spec.rb +0 -98
  529. data/spec/unit/resource/action_items_spec.rb +0 -69
  530. data/spec/unit/resource/attributes_spec.rb +0 -49
  531. data/spec/unit/resource/includes_spec.rb +0 -21
  532. data/spec/unit/resource/menu_spec.rb +0 -18
  533. data/spec/unit/resource/naming_spec.rb +0 -122
  534. data/spec/unit/resource/ordering_spec.rb +0 -35
  535. data/spec/unit/resource/page_presenters_spec.rb +0 -44
  536. data/spec/unit/resource/pagination_spec.rb +0 -38
  537. data/spec/unit/resource/routes_spec.rb +0 -125
  538. data/spec/unit/resource/scopes_spec.rb +0 -50
  539. data/spec/unit/resource/sidebars_spec.rb +0 -43
  540. data/spec/unit/resource_collection_spec.rb +0 -175
  541. data/spec/unit/resource_controller/data_access_spec.rb +0 -234
  542. data/spec/unit/resource_controller/decorators_spec.rb +0 -94
  543. data/spec/unit/resource_controller/sidebars_spec.rb +0 -37
  544. data/spec/unit/resource_controller_spec.rb +0 -273
  545. data/spec/unit/resource_registration_spec.rb +0 -61
  546. data/spec/unit/resource_spec.rb +0 -320
  547. data/spec/unit/routing_spec.rb +0 -211
  548. data/spec/unit/scope_spec.rb +0 -209
  549. data/spec/unit/settings_spec.rb +0 -117
  550. data/spec/unit/view_factory_spec.rb +0 -19
  551. data/spec/unit/view_helpers/breadcrumbs_spec.rb +0 -253
  552. data/spec/unit/view_helpers/display_helper_spec.rb +0 -203
  553. data/spec/unit/view_helpers/download_format_links_helper_spec.rb +0 -39
  554. data/spec/unit/view_helpers/fields_for_spec.rb +0 -50
  555. data/spec/unit/view_helpers/flash_helper_spec.rb +0 -24
  556. data/spec/unit/view_helpers/form_helper_spec.rb +0 -42
  557. data/spec/unit/view_helpers/method_or_proc_helper_spec.rb +0 -138
  558. data/spec/unit/views/components/attributes_table_spec.rb +0 -271
  559. data/spec/unit/views/components/batch_action_selector_spec.rb +0 -43
  560. data/spec/unit/views/components/blank_slate_spec.rb +0 -27
  561. data/spec/unit/views/components/columns_spec.rb +0 -187
  562. data/spec/unit/views/components/index_list_spec.rb +0 -49
  563. data/spec/unit/views/components/index_table_for_spec.rb +0 -127
  564. data/spec/unit/views/components/paginated_collection_spec.rb +0 -249
  565. data/spec/unit/views/components/panel_spec.rb +0 -58
  566. data/spec/unit/views/components/sidebar_section_spec.rb +0 -68
  567. data/spec/unit/views/components/site_title_spec.rb +0 -76
  568. data/spec/unit/views/components/status_tag_spec.rb +0 -265
  569. data/spec/unit/views/components/table_for_spec.rb +0 -436
  570. data/spec/unit/views/components/tabs_spec.rb +0 -67
  571. data/spec/unit/views/components/unsupported_browser_spec.rb +0 -41
  572. data/spec/unit/views/index_as_blog_spec.rb +0 -76
  573. data/spec/unit/views/pages/form_spec.rb +0 -54
  574. data/spec/unit/views/pages/index_spec.rb +0 -60
  575. data/spec/unit/views/pages/layout_spec.rb +0 -59
  576. data/spec/unit/views/pages/show_spec.rb +0 -32
  577. data/spec/unit/views/tabbed_navigation_spec.rb +0 -158
  578. data/tasks/docs.rake +0 -64
  579. data/tasks/lint.rake +0 -21
  580. data/tasks/local.rake +0 -25
  581. data/tasks/parallel_tests.rake +0 -66
  582. data/tasks/test.rake +0 -29
@@ -0,0 +1,127 @@
1
+ # frozen_string_literal: true
2
+ require "active_admin/dynamic_settings_node"
3
+
4
+ module ActiveAdmin
5
+ class NamespaceSettings < DynamicSettingsNode
6
+ # The default number of resources to display on index pages
7
+ register :default_per_page, 30
8
+
9
+ # The max number of resources to display on index pages and batch exports
10
+ register :max_per_page, 10_000
11
+
12
+ # The title which gets displayed in the main layout
13
+ register :site_title, "", :string_symbol_or_proc
14
+
15
+ # Set the site title link href (defaults to AA dashboard)
16
+ register :site_title_link, ""
17
+
18
+ # Set the site title image displayed in the main layout (has precendence over :site_title)
19
+ register :site_title_image, "", :string_symbol_or_proc
20
+
21
+ # Add to the site head
22
+ register :head, "", :string_symbol_or_proc
23
+
24
+ # Set the site footer text (defaults to Powered by ActiveAdmin text with version)
25
+ register :footer, "", :string_symbol_or_proc
26
+
27
+ # Set a favicon
28
+ register :favicon, false
29
+
30
+ # Additional meta tags to place in head of logged in pages
31
+ register :meta_tags, {}
32
+
33
+ # Additional meta tags to place in head of logged out pages
34
+ register :meta_tags_for_logged_out_pages, { robots: "noindex, nofollow" }
35
+
36
+ # The view factory to use to generate all the view classes. Take
37
+ # a look at ActiveAdmin::ViewFactory
38
+ register :view_factory, ActiveAdmin::ViewFactory.new
39
+
40
+ # The method to call in controllers to get the current user
41
+ register :current_user_method, false
42
+
43
+ # The method to call in the controllers to ensure that there
44
+ # is a currently authenticated admin user
45
+ register :authentication_method, false
46
+
47
+ # The path to log user's out with. If set to a symbol, we assume
48
+ # that it's a method to call which returns the path
49
+ register :logout_link_path, :destroy_admin_user_session_path
50
+
51
+ # The method to use when generating the link for user logout
52
+ register :logout_link_method, :get
53
+
54
+ # Whether the batch actions are enabled or not
55
+ register :batch_actions, false
56
+
57
+ # Whether filters are enabled
58
+ register :filters, true
59
+
60
+ # The namespace root
61
+ register :root_to, "dashboard#index"
62
+
63
+ # Options that are passed to root_to
64
+ register :root_to_options, {}
65
+
66
+ # Options passed to the routes, i.e. { path: '/custom' }
67
+ register :route_options, {}
68
+
69
+ # Display breadcrumbs
70
+ register :breadcrumb, true
71
+
72
+ # Display create another checkbox on a new page
73
+ # @return [Boolean] (true)
74
+ register :create_another, false
75
+
76
+ # Default CSV options
77
+ register :csv_options, { col_sep: ",", byte_order_mark: "\xEF\xBB\xBF" }
78
+
79
+ # Default Download Links options
80
+ register :download_links, true
81
+
82
+ # The authorization adapter to use
83
+ register :authorization_adapter, ActiveAdmin::AuthorizationAdapter
84
+
85
+ # A proc to be used when a user is not authorized to view the current resource
86
+ register :on_unauthorized_access, :rescue_active_admin_access_denied
87
+
88
+ # A regex to detect unsupported browser, set to false to disable
89
+ register :unsupported_browser_matcher, /MSIE [1-8]\.0/
90
+
91
+ # Whether to display 'Current Filters' on search screen
92
+ register :current_filters, true
93
+
94
+ # class to handle ordering
95
+ register :order_clause, ActiveAdmin::OrderClause
96
+
97
+ # default show_count for scopes
98
+ register :scopes_show_count, true
99
+
100
+ # Request parameters that are permitted by default
101
+ register :permitted_params, [
102
+ :utf8, :_method, :authenticity_token, :commit, :id
103
+ ]
104
+
105
+ # Set flash message keys that shouldn't show in ActiveAdmin
106
+ register :flash_keys_to_except, ["timedout"]
107
+
108
+ # Include association filters by default
109
+ register :include_default_association_filters, true
110
+
111
+ register :maximum_association_filter_arity, :unlimited
112
+
113
+ register :filter_columns_for_large_association, [
114
+ :display_name,
115
+ :full_name,
116
+ :name,
117
+ :username,
118
+ :login,
119
+ :title,
120
+ :email,
121
+ ]
122
+ register :filter_method_for_large_association, "_starts_with"
123
+
124
+ # Switch between asset pipeline and webpacker assets
125
+ register :use_webpacker, false
126
+ end
127
+ end
@@ -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
@@ -20,7 +21,7 @@ module ActiveAdmin
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,82 +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).includes(:author).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
30
  if @comments.any?
28
31
  @comments.each(&method(:build_comment))
29
- div page_entries_info(@comments).html_safe, class: 'pagination_information'
32
+ div page_entries_info(@comments).html_safe, class: "pagination_information"
30
33
  else
31
34
  build_empty_message
32
35
  end
33
36
 
34
37
  text_node paginate @comments
35
- build_comment_form
38
+
39
+ if authorized?(ActiveAdmin::Auth::CREATE, ActiveAdmin::Comment)
40
+ build_comment_form
41
+ end
36
42
  end
37
43
 
38
44
  def build_comment(comment)
39
45
  div for: comment do
40
- div class: 'active_admin_comment_meta' do
41
- h4 class: 'active_admin_comment_author' do
42
- 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")
43
49
  end
44
50
  span pretty_format comment.created_at
45
51
  if authorized?(ActiveAdmin::Auth::DESTROY, comment)
46
- 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") }
47
53
  end
48
54
  end
49
- div class: 'active_admin_comment_body' do
55
+ div class: "active_admin_comment_body" do
50
56
  simple_format comment.body
51
57
  end
52
58
  end
53
59
  end
54
60
 
55
61
  def build_empty_message
56
- span I18n.t('active_admin.comments.no_comments_yet'), class: 'empty'
62
+ span I18n.t("active_admin.comments.no_comments_yet"), class: "empty"
57
63
  end
58
64
 
59
65
  def comments_url(*args)
60
66
  parts = []
61
67
  parts << active_admin_namespace.name unless active_admin_namespace.root?
62
68
  parts << active_admin_namespace.comments_registration_name.underscore
63
- parts << 'path'
64
- send parts.join('_'), *args
69
+ parts << "path"
70
+ send parts.join("_"), *args
65
71
  end
66
72
 
67
73
  def comment_form_url
68
74
  parts = []
69
75
  parts << active_admin_namespace.name unless active_admin_namespace.root?
70
76
  parts << active_admin_namespace.comments_registration_name.underscore.pluralize
71
- parts << 'path'
72
- send parts.join '_'
77
+ parts << "path"
78
+ send parts.join "_"
73
79
  end
74
80
 
75
81
  def build_comment_form
76
82
  active_admin_form_for(ActiveAdmin::Comment.new, url: comment_form_url) do |f|
77
83
  f.inputs do
78
- f.input :resource_type, as: :hidden, input_html: { value: ActiveAdmin::Comment.resource_type(parent.resource) }
79
- f.input :resource_id, as: :hidden, input_html: { value: parent.resource.id }
80
- 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" }
81
87
  end
82
88
  f.actions do
83
- f.action :submit, label: I18n.t('active_admin.comments.add')
89
+ f.action :submit, label: I18n.t("active_admin.comments.add")
84
90
  end
85
91
  end
86
92
  end
87
93
 
88
94
  def default_id_for_prefix
89
- 'active_admin_comments_for'
95
+ "active_admin_comments_for"
90
96
  end
91
97
  end
92
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,25 +31,22 @@ 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
37
- rescue Pundit::NotDefinedError => e
38
- if default_policy_class
39
- default_policy(user, subject)
34
+ target = policy_target(subject)
35
+ if (policy = policy(namespace(target)) || compat_policy(subject))
36
+ policy
37
+ elsif default_policy_class
38
+ default_policy(subject)
40
39
  else
41
- raise e
40
+ raise Pundit::NotDefinedError, "unable to find a compatible policy for `#{target}`"
42
41
  end
43
42
  end
44
43
 
45
44
  def format_action(action, subject)
46
- # https://github.com/elabs/pundit/blob/master/lib/generators/pundit/install/templates/application_policy.rb
45
+ # https://github.com/varvet/pundit/blob/master/lib/generators/pundit/install/templates/application_policy.rb
47
46
  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?
47
+ when Auth::CREATE then :create?
48
+ when Auth::UPDATE then :update?
49
+ when Auth::READ then subject.is_a?(Class) ? :index? : :show?
51
50
  when Auth::DESTROY then subject.is_a?(Class) ? :destroy_all? : :destroy?
52
51
  else "#{action}?"
53
52
  end
@@ -55,14 +54,72 @@ module ActiveAdmin
55
54
 
56
55
  private
57
56
 
57
+ def policy_target(subject)
58
+ case subject
59
+ when nil then resource
60
+ when Class then subject.new
61
+ else subject
62
+ end
63
+ end
64
+
65
+ # This method is needed to fallback to our previous policy searching logic.
66
+ # I.e.: when class name contains `default_policy_namespace` (eg: ShopAdmin)
67
+ # we should try to search it without namespace. This is because that's
68
+ # the only thing that worked in this case before we fixed our buggy namespace
69
+ # detection, so people are probably relying on it.
70
+ # This fallback might be removed in future versions of ActiveAdmin, so
71
+ # pundit_adapter search will work consistently with provided namespaces
72
+ def compat_policy(subject)
73
+ return unless default_policy_namespace
74
+
75
+ target = policy_target(subject)
76
+
77
+ return unless target.class.to_s.include?(default_policy_module) &&
78
+ (policy = policy(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.start_with?("#{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
61
102
 
62
- def default_policy(user, subject)
103
+ def default_policy(subject)
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
+
115
+ def policy(target)
116
+ policies[target] ||= Pundit.policy(user, target)
117
+ end
118
+
119
+ def policies
120
+ @policies ||= {}
121
+ end
122
+
66
123
  end
67
124
 
68
125
  end