activeadmin 1.0.0 → 2.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (618) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +778 -68
  3. data/CODE_OF_CONDUCT.md +64 -12
  4. data/CONTRIBUTING.md +80 -82
  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 +7 -35
  9. data/app/assets/stylesheets/active_admin/_header.scss +40 -8
  10. data/app/assets/stylesheets/active_admin/_mixins.scss +1 -1
  11. data/app/assets/stylesheets/active_admin/_normalize.scss +349 -0
  12. data/app/assets/stylesheets/active_admin/{print.scss → _print.scss} +3 -4
  13. data/app/assets/stylesheets/active_admin/components/_batch_actions.scss +0 -5
  14. data/app/assets/stylesheets/active_admin/components/_comments.scss +2 -2
  15. data/app/assets/stylesheets/active_admin/components/_date_picker.scss +1 -2
  16. data/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +0 -1
  17. data/app/assets/stylesheets/active_admin/components/_pagination.scss +11 -0
  18. data/app/assets/stylesheets/active_admin/components/_scopes.scss +3 -0
  19. data/app/assets/stylesheets/active_admin/components/_status_tags.scss +0 -4
  20. data/app/assets/stylesheets/active_admin/components/_tables.scss +5 -3
  21. data/app/assets/stylesheets/active_admin/components/_tabs.scss +1 -1
  22. data/app/assets/stylesheets/active_admin/mixins/_all.scss +8 -10
  23. data/app/assets/stylesheets/active_admin/mixins/_gradients.scss +1 -1
  24. data/app/assets/stylesheets/active_admin/mixins/_variables.scss +17 -0
  25. data/app/assets/stylesheets/active_admin/structure/_main_structure.scss +1 -1
  26. data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +0 -1
  27. data/app/javascript/active_admin/base.js +28 -0
  28. data/app/javascript/active_admin/ext/jquery-ui.js +7 -0
  29. data/app/javascript/active_admin/ext/jquery.js +9 -0
  30. data/app/javascript/active_admin/initializers/batch-actions.js +61 -0
  31. data/app/javascript/active_admin/initializers/checkbox-toggler.js +3 -0
  32. data/app/javascript/active_admin/initializers/datepicker.js +16 -0
  33. data/app/javascript/active_admin/initializers/dropdown-menu.js +9 -0
  34. data/app/javascript/active_admin/initializers/filters.js +10 -0
  35. data/app/javascript/active_admin/initializers/has-many.js +95 -0
  36. data/app/javascript/active_admin/initializers/per-page.js +13 -0
  37. data/app/javascript/active_admin/initializers/table-checkbox-toggler.js +3 -0
  38. data/app/javascript/active_admin/initializers/tabs.js +6 -0
  39. data/app/javascript/active_admin/lib/checkbox-toggler.js +49 -0
  40. data/app/javascript/active_admin/lib/dropdown-menu.js +116 -0
  41. data/app/javascript/active_admin/lib/filters.js +39 -0
  42. data/app/javascript/active_admin/lib/modal-dialog.js +63 -0
  43. data/app/javascript/active_admin/lib/per-page.js +38 -0
  44. data/app/javascript/active_admin/lib/table-checkbox-toggler.js +38 -0
  45. data/app/javascript/active_admin/lib/utils.js +40 -0
  46. data/app/views/active_admin/devise/confirmations/new.html.erb +2 -2
  47. data/app/views/active_admin/devise/mailer/reset_password_instructions.html.erb +1 -1
  48. data/app/views/active_admin/devise/mailer/unlock_instructions.html.erb +2 -2
  49. data/app/views/active_admin/devise/passwords/edit.html.erb +2 -2
  50. data/app/views/active_admin/devise/passwords/new.html.erb +2 -2
  51. data/app/views/active_admin/devise/registrations/new.html.erb +2 -3
  52. data/app/views/active_admin/devise/sessions/new.html.erb +2 -2
  53. data/app/views/active_admin/devise/shared/_error_messages.html.erb +15 -0
  54. data/app/views/active_admin/devise/shared/_links.erb +12 -6
  55. data/app/views/active_admin/devise/unlocks/new.html.erb +2 -2
  56. data/app/views/active_admin/page/index.html.arb +1 -0
  57. data/app/views/active_admin/resource/edit.html.arb +1 -0
  58. data/app/views/active_admin/resource/index.html.arb +1 -0
  59. data/app/views/active_admin/resource/new.html.arb +1 -0
  60. data/app/views/active_admin/resource/show.html.arb +1 -0
  61. data/app/views/kaminari/active_admin/_first_page.html.erb +11 -0
  62. data/app/views/kaminari/active_admin/_gap.html.erb +8 -0
  63. data/app/views/kaminari/active_admin/_last_page.html.erb +11 -0
  64. data/app/views/kaminari/active_admin/_next_page.html.erb +11 -0
  65. data/app/views/kaminari/active_admin/_page.html.erb +12 -0
  66. data/app/views/kaminari/active_admin/_paginator.html.erb +25 -0
  67. data/app/views/kaminari/active_admin/_prev_page.html.erb +11 -0
  68. data/app/views/kaminari/active_admin_countless/_first_page.html.erb +11 -0
  69. data/app/views/kaminari/active_admin_countless/_gap.html.erb +8 -0
  70. data/app/views/kaminari/active_admin_countless/_next_page.html.erb +11 -0
  71. data/app/views/kaminari/active_admin_countless/_page.html.erb +12 -0
  72. data/app/views/kaminari/active_admin_countless/_paginator.html.erb +24 -0
  73. data/app/views/kaminari/active_admin_countless/_prev_page.html.erb +11 -0
  74. data/app/views/layouts/active_admin.html.arb +1 -0
  75. data/app/views/layouts/active_admin_logged_out.html.erb +17 -7
  76. data/config/locales/ar.yml +10 -11
  77. data/config/locales/az.yml +138 -0
  78. data/config/locales/bg.yml +1 -3
  79. data/config/locales/bs.yml +1 -2
  80. data/config/locales/ca.yml +1 -3
  81. data/config/locales/cs.yml +1 -2
  82. data/config/locales/da.yml +2 -3
  83. data/config/locales/de-CH.yml +2 -3
  84. data/config/locales/de.yml +30 -3
  85. data/config/locales/el.yml +2 -3
  86. data/config/locales/en-CA.yml +139 -0
  87. data/config/locales/en-GB.yml +46 -5
  88. data/config/locales/en.yml +32 -8
  89. data/config/locales/eo.yml +145 -0
  90. data/config/locales/es-MX.yml +6 -3
  91. data/config/locales/es.yml +36 -10
  92. data/config/locales/fa.yml +1 -2
  93. data/config/locales/fi.yml +2 -3
  94. data/config/locales/fr.yml +15 -7
  95. data/config/locales/he.yml +53 -7
  96. data/config/locales/hr.yml +1 -2
  97. data/config/locales/hu.yml +5 -2
  98. data/config/locales/id.yml +2 -3
  99. data/config/locales/it.yml +33 -7
  100. data/config/locales/ja.yml +9 -5
  101. data/config/locales/ko.yml +2 -3
  102. data/config/locales/lt.yml +27 -6
  103. data/config/locales/lv.yml +3 -4
  104. data/config/locales/mk.yml +134 -0
  105. data/config/locales/nb.yml +16 -7
  106. data/config/locales/nl.yml +14 -4
  107. data/config/locales/pl.yml +75 -5
  108. data/config/locales/pt-BR.yml +10 -3
  109. data/config/locales/pt-PT.yml +1 -2
  110. data/config/locales/ro.yml +4 -4
  111. data/config/locales/ru.yml +4 -3
  112. data/config/locales/sk.yml +60 -2
  113. data/config/locales/sv-SE.yml +4 -3
  114. data/config/locales/tr.yml +10 -2
  115. data/config/locales/uk.yml +4 -3
  116. data/config/locales/vi.yml +53 -12
  117. data/config/locales/zh-CN.yml +34 -7
  118. data/config/locales/zh-TW.yml +2 -3
  119. data/docs/.gitignore +1 -0
  120. data/docs/0-installation.md +42 -15
  121. data/docs/1-general-configuration.md +46 -4
  122. data/docs/10-custom-pages.md +24 -5
  123. data/docs/11-decorators.md +17 -5
  124. data/docs/12-arbre-components.md +47 -9
  125. data/docs/13-authorization-adapter.md +69 -35
  126. data/docs/14-gotchas.md +41 -22
  127. data/docs/2-resource-customization.md +57 -20
  128. data/docs/3-index-pages/custom-index.md +2 -1
  129. data/docs/3-index-pages/index-as-block.md +0 -5
  130. data/docs/3-index-pages/index-as-blog.md +1 -6
  131. data/docs/3-index-pages/index-as-grid.md +0 -5
  132. data/docs/3-index-pages/index-as-table.md +13 -14
  133. data/docs/3-index-pages.md +47 -12
  134. data/docs/4-csv-format.md +2 -1
  135. data/docs/5-forms.md +65 -22
  136. data/docs/6-show-pages.md +14 -1
  137. data/docs/7-sidebars.md +2 -1
  138. data/docs/8-custom-actions.md +16 -2
  139. data/docs/9-batch-actions.md +5 -3
  140. data/docs/CNAME +1 -1
  141. data/docs/Gemfile +4 -2
  142. data/docs/Gemfile.lock +283 -0
  143. data/docs/_config.yml +3 -1
  144. data/docs/_includes/toc.html +1 -1
  145. data/docs/_includes/top-menu.html +9 -1
  146. data/docs/documentation.md +21 -23
  147. data/docs/images/tidelift.svg +14 -0
  148. data/docs/index.html +110 -9
  149. data/docs/stylesheets/main.css +55 -2
  150. data/lib/active_admin/abstract_view_factory.rb +14 -51
  151. data/lib/active_admin/application.rb +65 -170
  152. data/lib/active_admin/application_settings.rb +43 -0
  153. data/lib/active_admin/asset_registration.rb +1 -0
  154. data/lib/active_admin/authorization_adapter.rb +4 -6
  155. data/lib/active_admin/base_controller/authorization.rb +18 -19
  156. data/lib/active_admin/base_controller/menu.rb +10 -9
  157. data/lib/active_admin/base_controller.rb +12 -12
  158. data/lib/active_admin/batch_actions/controller.rb +6 -5
  159. data/lib/active_admin/batch_actions/resource_extension.rb +16 -10
  160. data/lib/active_admin/batch_actions/views/batch_action_form.rb +4 -3
  161. data/lib/active_admin/batch_actions/views/batch_action_selector.rb +7 -6
  162. data/lib/active_admin/batch_actions/views/selection_cells.rb +8 -6
  163. data/lib/active_admin/batch_actions.rb +1 -0
  164. data/lib/active_admin/callbacks.rb +2 -1
  165. data/lib/active_admin/cancan_adapter.rb +2 -1
  166. data/lib/active_admin/collection_decorator.rb +32 -0
  167. data/lib/active_admin/component.rb +1 -0
  168. data/lib/active_admin/controller_action.rb +3 -1
  169. data/lib/active_admin/csv_builder.rb +22 -14
  170. data/lib/active_admin/dependency.rb +15 -78
  171. data/lib/active_admin/deprecation.rb +1 -25
  172. data/lib/active_admin/devise.rb +18 -7
  173. data/lib/active_admin/dsl.rb +5 -11
  174. data/lib/active_admin/dynamic_setting.rb +39 -0
  175. data/lib/active_admin/dynamic_settings_node.rb +29 -0
  176. data/lib/active_admin/engine.rb +16 -7
  177. data/lib/active_admin/error.rb +5 -4
  178. data/lib/active_admin/filters/active.rb +14 -14
  179. data/lib/active_admin/filters/active_filter.rb +124 -0
  180. data/lib/active_admin/filters/active_sidebar.rb +28 -0
  181. data/lib/active_admin/filters/dsl.rb +1 -0
  182. data/lib/active_admin/filters/forms.rb +12 -9
  183. data/lib/active_admin/filters/formtastic_addons.rb +3 -7
  184. data/lib/active_admin/filters/resource_extension.rb +32 -35
  185. data/lib/active_admin/filters.rb +8 -5
  186. data/lib/active_admin/form_builder.rb +110 -70
  187. data/lib/active_admin/generators/boilerplate.rb +13 -4
  188. data/lib/active_admin/helpers/collection.rb +2 -0
  189. data/lib/active_admin/helpers/i18n.rb +1 -0
  190. data/lib/active_admin/helpers/optional_display.rb +3 -2
  191. data/lib/active_admin/helpers/routes/url_helpers.rb +1 -0
  192. data/lib/active_admin/helpers/scope_chain.rb +2 -0
  193. data/lib/active_admin/inputs/datepicker_input.rb +14 -6
  194. data/lib/active_admin/inputs/filters/base/search_method_select.rb +7 -6
  195. data/lib/active_admin/inputs/filters/base.rb +2 -1
  196. data/lib/active_admin/inputs/filters/boolean_input.rb +2 -1
  197. data/lib/active_admin/inputs/filters/check_boxes_input.rb +2 -1
  198. data/lib/active_admin/inputs/filters/date_picker_input.rb +1 -0
  199. data/lib/active_admin/inputs/filters/date_range_input.rb +24 -12
  200. data/lib/active_admin/inputs/filters/numeric_input.rb +1 -0
  201. data/lib/active_admin/inputs/filters/select_input.rb +8 -3
  202. data/lib/active_admin/inputs/filters/string_input.rb +1 -0
  203. data/lib/active_admin/inputs/filters/text_input.rb +1 -1
  204. data/lib/active_admin/inputs.rb +1 -0
  205. data/lib/active_admin/localizers/resource_localizer.rb +4 -3
  206. data/lib/active_admin/localizers.rb +2 -1
  207. data/lib/active_admin/menu.rb +13 -15
  208. data/lib/active_admin/menu_collection.rb +1 -2
  209. data/lib/active_admin/menu_item.rb +11 -38
  210. data/lib/active_admin/namespace.rb +33 -20
  211. data/lib/active_admin/namespace_settings.rb +127 -0
  212. data/lib/active_admin/order_clause.rb +4 -3
  213. data/lib/active_admin/orm/active_record/comments/comment.rb +6 -9
  214. data/lib/active_admin/orm/active_record/comments/namespace_helper.rb +1 -0
  215. data/lib/active_admin/orm/active_record/comments/resource_helper.rb +1 -0
  216. data/lib/active_admin/orm/active_record/comments/show_page_helper.rb +1 -0
  217. data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +37 -24
  218. data/lib/active_admin/orm/active_record/comments/views.rb +3 -2
  219. data/lib/active_admin/orm/active_record/comments.rb +35 -23
  220. data/lib/active_admin/orm/active_record.rb +2 -1
  221. data/lib/active_admin/orm/mongoid.rb +1 -0
  222. data/lib/active_admin/page.rb +2 -1
  223. data/lib/active_admin/page_controller.rb +2 -1
  224. data/lib/active_admin/page_dsl.rb +2 -1
  225. data/lib/active_admin/page_presenter.rb +3 -1
  226. data/lib/active_admin/pundit_adapter.rb +23 -9
  227. data/lib/active_admin/resource/action_items.rb +16 -6
  228. data/lib/active_admin/resource/attributes.rb +10 -6
  229. data/lib/active_admin/resource/belongs_to.rb +9 -3
  230. data/lib/active_admin/resource/controllers.rb +2 -1
  231. data/lib/active_admin/resource/includes.rb +1 -0
  232. data/lib/active_admin/resource/menu.rb +6 -5
  233. data/lib/active_admin/resource/model.rb +16 -0
  234. data/lib/active_admin/resource/naming.rb +6 -5
  235. data/lib/active_admin/resource/ordering.rb +1 -0
  236. data/lib/active_admin/resource/page_presenters.rb +2 -1
  237. data/lib/active_admin/resource/pagination.rb +1 -0
  238. data/lib/active_admin/resource/routes.rb +26 -15
  239. data/lib/active_admin/resource/scope_to.rb +8 -7
  240. data/lib/active_admin/resource/scopes.rb +5 -3
  241. data/lib/active_admin/resource/sidebars.rb +3 -2
  242. data/lib/active_admin/resource.rb +37 -22
  243. data/lib/active_admin/resource_collection.rb +3 -2
  244. data/lib/active_admin/resource_controller/action_builder.rb +11 -0
  245. data/lib/active_admin/resource_controller/data_access.rb +16 -12
  246. data/lib/active_admin/resource_controller/decorators.rb +10 -31
  247. data/lib/active_admin/resource_controller/polymorphic_routes.rb +38 -0
  248. data/lib/active_admin/resource_controller/resource_class_methods.rb +3 -0
  249. data/lib/active_admin/resource_controller/scoping.rb +2 -1
  250. data/lib/active_admin/resource_controller/sidebars.rb +1 -0
  251. data/lib/active_admin/resource_controller/streaming.rb +9 -7
  252. data/lib/active_admin/resource_controller.rb +15 -11
  253. data/lib/active_admin/resource_dsl.rb +18 -28
  254. data/lib/active_admin/router.rb +91 -84
  255. data/lib/active_admin/scope.rb +22 -13
  256. data/lib/active_admin/settings_node.rb +20 -0
  257. data/lib/active_admin/sidebar_section.rb +4 -1
  258. data/lib/active_admin/version.rb +2 -1
  259. data/lib/active_admin/view_factory.rb +18 -17
  260. data/lib/active_admin/view_helpers/active_admin_application_helper.rb +1 -0
  261. data/lib/active_admin/view_helpers/auto_link_helper.rb +1 -0
  262. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +6 -5
  263. data/lib/active_admin/view_helpers/display_helper.rb +26 -9
  264. data/lib/active_admin/view_helpers/download_format_links_helper.rb +3 -1
  265. data/lib/active_admin/view_helpers/fields_for.rb +3 -2
  266. data/lib/active_admin/view_helpers/flash_helper.rb +1 -0
  267. data/lib/active_admin/view_helpers/form_helper.rb +2 -1
  268. data/lib/active_admin/view_helpers/method_or_proc_helper.rb +4 -0
  269. data/lib/active_admin/view_helpers/scope_name_helper.rb +17 -0
  270. data/lib/active_admin/view_helpers/sidebar_helper.rb +1 -0
  271. data/lib/active_admin/view_helpers/title_helper.rb +1 -0
  272. data/lib/active_admin/view_helpers/view_factory_helper.rb +1 -0
  273. data/lib/active_admin/view_helpers.rb +3 -1
  274. data/lib/active_admin/views/action_items.rb +2 -1
  275. data/lib/active_admin/views/components/active_admin_form.rb +15 -9
  276. data/lib/active_admin/views/components/active_filters_sidebar_content.rb +59 -0
  277. data/lib/active_admin/views/components/attributes_table.rb +9 -8
  278. data/lib/active_admin/views/components/blank_slate.rb +2 -1
  279. data/lib/active_admin/views/components/columns.rb +1 -0
  280. data/lib/active_admin/views/components/dropdown_menu.rb +9 -11
  281. data/lib/active_admin/views/components/index_list.rb +4 -5
  282. data/lib/active_admin/views/components/menu.rb +33 -0
  283. data/lib/active_admin/views/components/menu_item.rb +59 -0
  284. data/lib/active_admin/views/components/paginated_collection.rb +22 -20
  285. data/lib/active_admin/views/components/panel.rb +2 -1
  286. data/lib/active_admin/views/components/scopes.rb +19 -17
  287. data/lib/active_admin/views/components/sidebar.rb +14 -0
  288. data/lib/active_admin/views/components/sidebar_section.rb +1 -0
  289. data/lib/active_admin/views/components/site_title.rb +7 -7
  290. data/lib/active_admin/views/components/status_tag.rb +19 -23
  291. data/lib/active_admin/views/components/table_for.rb +22 -29
  292. data/lib/active_admin/views/components/tabs.rb +18 -5
  293. data/lib/active_admin/views/components/unsupported_browser.rb +1 -0
  294. data/lib/active_admin/views/footer.rb +6 -8
  295. data/lib/active_admin/views/header.rb +4 -16
  296. data/lib/active_admin/views/index_as_block.rb +1 -0
  297. data/lib/active_admin/views/index_as_blog.rb +4 -4
  298. data/lib/active_admin/views/index_as_grid.rb +27 -26
  299. data/lib/active_admin/views/index_as_table.rb +53 -26
  300. data/lib/active_admin/views/pages/base.rb +47 -63
  301. data/lib/active_admin/views/pages/form.rb +1 -0
  302. data/lib/active_admin/views/pages/index.rb +16 -13
  303. data/lib/active_admin/views/pages/layout.rb +1 -0
  304. data/lib/active_admin/views/pages/page.rb +1 -0
  305. data/lib/active_admin/views/pages/show.rb +7 -1
  306. data/lib/active_admin/views/tabbed_navigation.rb +5 -59
  307. data/lib/active_admin/views/title_bar.rb +6 -5
  308. data/lib/active_admin/views.rb +2 -1
  309. data/lib/active_admin.rb +70 -68
  310. data/lib/activeadmin.rb +2 -1
  311. data/lib/generators/active_admin/assets/assets_generator.rb +3 -2
  312. data/lib/generators/active_admin/assets/templates/active_admin.js +1 -0
  313. data/lib/generators/active_admin/assets/templates/active_admin.scss +2 -2
  314. data/lib/generators/active_admin/devise/devise_generator.rb +7 -6
  315. data/lib/generators/active_admin/install/install_generator.rb +19 -8
  316. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +45 -3
  317. data/lib/generators/active_admin/install/templates/{admin_user.rb.erb → admin_users.rb.erb} +1 -1
  318. data/lib/generators/active_admin/install/templates/dashboard.rb +3 -3
  319. data/lib/generators/active_admin/install/templates/migrations/create_active_admin_comments.rb.erb +1 -15
  320. data/lib/generators/active_admin/page/page_generator.rb +2 -1
  321. data/lib/generators/active_admin/page/templates/page.rb +1 -0
  322. data/lib/generators/active_admin/resource/resource_generator.rb +5 -4
  323. data/lib/generators/active_admin/resource/templates/admin.rb.erb +40 -37
  324. data/lib/generators/active_admin/webpacker/plugins/jquery.js +7 -0
  325. data/lib/generators/active_admin/webpacker/templates/active_admin.js +5 -0
  326. data/lib/generators/active_admin/webpacker/templates/active_admin.scss +17 -0
  327. data/lib/generators/active_admin/webpacker/templates/print.scss +2 -0
  328. data/lib/generators/active_admin/webpacker/webpacker_generator.rb +27 -0
  329. data/lib/ransack_ext.rb +10 -9
  330. data/vendor/assets/javascripts/jquery-ui/data.js +41 -0
  331. data/vendor/assets/javascripts/jquery-ui/disable-selection.js +48 -0
  332. data/vendor/assets/javascripts/jquery-ui/escape-selector.js +23 -0
  333. data/vendor/assets/javascripts/jquery-ui/focusable.js +86 -0
  334. data/vendor/assets/javascripts/jquery-ui/form-reset-mixin.js +80 -0
  335. data/vendor/assets/javascripts/jquery-ui/form.js +22 -0
  336. data/vendor/assets/javascripts/jquery-ui/ie.js +17 -0
  337. data/vendor/assets/javascripts/jquery-ui/keycode.js +47 -0
  338. data/vendor/assets/javascripts/jquery-ui/labels.js +65 -0
  339. data/vendor/assets/javascripts/jquery-ui/plugin.js +46 -0
  340. data/vendor/assets/javascripts/jquery-ui/position.js +500 -0
  341. data/vendor/assets/javascripts/jquery-ui/safe-active-element.js +42 -0
  342. data/vendor/assets/javascripts/jquery-ui/safe-blur.js +23 -0
  343. data/vendor/assets/javascripts/jquery-ui/scroll-parent.js +47 -0
  344. data/vendor/assets/javascripts/jquery-ui/tabbable.js +38 -0
  345. data/vendor/assets/javascripts/jquery-ui/unique-id.js +51 -0
  346. data/vendor/assets/javascripts/jquery-ui/version.js +17 -0
  347. data/vendor/assets/javascripts/jquery-ui/widget.js +735 -0
  348. data/vendor/assets/javascripts/jquery-ui/widgets/button.js +391 -0
  349. data/vendor/assets/javascripts/jquery-ui/widgets/checkboxradio.js +291 -0
  350. data/vendor/assets/javascripts/jquery-ui/widgets/controlgroup.js +300 -0
  351. data/vendor/assets/javascripts/jquery-ui/widgets/datepicker.js +2123 -0
  352. data/vendor/assets/javascripts/jquery-ui/widgets/dialog.js +954 -0
  353. data/vendor/assets/javascripts/jquery-ui/widgets/draggable.js +1259 -0
  354. data/vendor/assets/javascripts/jquery-ui/widgets/mouse.js +230 -0
  355. data/vendor/assets/javascripts/jquery-ui/widgets/resizable.js +1207 -0
  356. data/vendor/assets/javascripts/jquery-ui/widgets/sortable.js +1561 -0
  357. data/vendor/assets/javascripts/jquery-ui/widgets/tabs.js +931 -0
  358. metadata +158 -580
  359. data/.gitignore +0 -49
  360. data/.hound.yml +0 -14
  361. data/.rubocop.yml +0 -27
  362. data/.travis.yml +0 -66
  363. data/.yardopts +0 -8
  364. data/Appraisals +0 -41
  365. data/Gemfile +0 -49
  366. data/Rakefile +0 -65
  367. data/activeadmin.gemspec +0 -34
  368. data/app/assets/images/active_admin/datepicker/datepicker-input-icon.png +0 -0
  369. data/app/assets/images/active_admin/nested_menu_arrow.gif +0 -0
  370. data/app/assets/images/active_admin/nested_menu_arrow_dark.gif +0 -0
  371. data/app/assets/images/active_admin/orderable.png +0 -0
  372. data/app/assets/javascripts/active_admin/base.js.coffee +0 -9
  373. data/app/assets/javascripts/active_admin/ext/jquery-ui.js.coffee +0 -6
  374. data/app/assets/javascripts/active_admin/ext/jquery.js.coffee +0 -7
  375. data/app/assets/javascripts/active_admin/initializers/batch_actions.js.coffee +0 -7
  376. data/app/assets/javascripts/active_admin/initializers/datepicker.js.coffee +0 -10
  377. data/app/assets/javascripts/active_admin/initializers/filters.js.coffee +0 -22
  378. data/app/assets/javascripts/active_admin/initializers/tabs.js.coffee +0 -3
  379. data/app/assets/javascripts/active_admin/jquery_ui.js.erb +0 -18
  380. data/app/assets/javascripts/active_admin/lib/batch_actions.js.coffee +0 -39
  381. data/app/assets/javascripts/active_admin/lib/checkbox-toggler.js.coffee +0 -44
  382. data/app/assets/javascripts/active_admin/lib/dropdown-menu.js.coffee +0 -101
  383. data/app/assets/javascripts/active_admin/lib/flash.js.coffee +0 -19
  384. data/app/assets/javascripts/active_admin/lib/has_many.js.coffee +0 -79
  385. data/app/assets/javascripts/active_admin/lib/modal_dialog.js.coffee +0 -45
  386. data/app/assets/javascripts/active_admin/lib/per_page.js.coffee +0 -42
  387. data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.js.coffee +0 -24
  388. data/app/assets/stylesheets/active_admin/mixins/_reset.scss +0 -165
  389. data/codecov.yml +0 -23
  390. data/cucumber.yml +0 -3
  391. data/features/action_item.feature +0 -73
  392. data/features/authorization.feature +0 -64
  393. data/features/authorization_cancan.feature +0 -52
  394. data/features/authorization_pundit.feature +0 -37
  395. data/features/belongs_to.feature +0 -124
  396. data/features/breadcrumb.feature +0 -75
  397. data/features/comments/commenting.feature +0 -158
  398. data/features/comments/viewing_index.feature +0 -19
  399. data/features/create_another.feature +0 -55
  400. data/features/dashboard.feature +0 -16
  401. data/features/decorators.feature +0 -43
  402. data/features/development_reloading.feature +0 -28
  403. data/features/edit_page.feature +0 -116
  404. data/features/favicon.feature +0 -20
  405. data/features/first_boot.feature +0 -16
  406. data/features/footer.feature +0 -28
  407. data/features/global_navigation.feature +0 -29
  408. data/features/i18n.feature +0 -55
  409. data/features/index/batch_actions.feature +0 -218
  410. data/features/index/filters.feature +0 -199
  411. data/features/index/format_as_csv.feature +0 -203
  412. data/features/index/formats.feature +0 -88
  413. data/features/index/index_as_block.feature +0 -15
  414. data/features/index/index_as_blog.feature +0 -69
  415. data/features/index/index_as_grid.feature +0 -45
  416. data/features/index/index_as_table.feature +0 -291
  417. data/features/index/index_blank_slate.feature +0 -83
  418. data/features/index/index_parameters.feature +0 -75
  419. data/features/index/index_scope_to.feature +0 -56
  420. data/features/index/index_scopes.feature +0 -270
  421. data/features/index/page_title.feature +0 -41
  422. data/features/index/pagination.feature +0 -63
  423. data/features/index/switch_index_view.feature +0 -73
  424. data/features/menu.feature +0 -72
  425. data/features/meta_tags.feature +0 -21
  426. data/features/new_page.feature +0 -107
  427. data/features/registering_assets.feature +0 -34
  428. data/features/registering_pages.feature +0 -237
  429. data/features/registering_resources.feature +0 -33
  430. data/features/renamed_resource.feature +0 -30
  431. data/features/root_to.feature +0 -17
  432. data/features/show/columns.feature +0 -40
  433. data/features/show/default_content.feature +0 -44
  434. data/features/show/page_title.feature +0 -58
  435. data/features/show/tabs.feature +0 -27
  436. data/features/sidebar_sections.feature +0 -210
  437. data/features/site_title.feature +0 -47
  438. data/features/specifying_actions.feature +0 -118
  439. data/features/step_definitions/action_item_steps.rb +0 -7
  440. data/features/step_definitions/action_link_steps.rb +0 -20
  441. data/features/step_definitions/additional_web_steps.rb +0 -81
  442. data/features/step_definitions/asset_steps.rb +0 -15
  443. data/features/step_definitions/attribute_steps.rb +0 -18
  444. data/features/step_definitions/batch_action_steps.rb +0 -81
  445. data/features/step_definitions/blog_steps.rb +0 -3
  446. data/features/step_definitions/breadcrumb_steps.rb +0 -3
  447. data/features/step_definitions/column_steps.rb +0 -8
  448. data/features/step_definitions/comment_steps.rb +0 -12
  449. data/features/step_definitions/configuration_steps.rb +0 -100
  450. data/features/step_definitions/dashboard_steps.rb +0 -15
  451. data/features/step_definitions/factory_steps.rb +0 -35
  452. data/features/step_definitions/filter_steps.rb +0 -39
  453. data/features/step_definitions/flash_steps.rb +0 -11
  454. data/features/step_definitions/footer_steps.rb +0 -11
  455. data/features/step_definitions/format_steps.rb +0 -56
  456. data/features/step_definitions/i18n_steps.rb +0 -11
  457. data/features/step_definitions/index_scope_steps.rb +0 -25
  458. data/features/step_definitions/index_views_steps.rb +0 -3
  459. data/features/step_definitions/layout_steps.rb +0 -3
  460. data/features/step_definitions/member_link_steps.rb +0 -7
  461. data/features/step_definitions/menu_steps.rb +0 -11
  462. data/features/step_definitions/meta_tag_steps.rb +0 -3
  463. data/features/step_definitions/pagination_steps.rb +0 -15
  464. data/features/step_definitions/sidebar_steps.rb +0 -11
  465. data/features/step_definitions/site_title_steps.rb +0 -17
  466. data/features/step_definitions/tab_steps.rb +0 -8
  467. data/features/step_definitions/table_steps.rb +0 -116
  468. data/features/step_definitions/user_steps.rb +0 -52
  469. data/features/step_definitions/web_steps.rb +0 -86
  470. data/features/sti_resource.feature +0 -65
  471. data/features/strong_parameters.feature +0 -69
  472. data/features/support/env.rb +0 -121
  473. data/features/support/paths.rb +0 -73
  474. data/features/support/selectors.rb +0 -45
  475. data/features/users/logging_in.feature +0 -36
  476. data/features/users/logging_out.feature +0 -13
  477. data/features/users/resetting_password.feature +0 -34
  478. data/gemfiles/rails_42.gemfile +0 -45
  479. data/gemfiles/rails_50.gemfile +0 -45
  480. data/gemfiles/rails_51.gemfile +0 -45
  481. data/lib/active_admin/event.rb +0 -24
  482. data/lib/active_admin/filters/humanized.rb +0 -68
  483. data/lib/active_admin/helpers/settings.rb +0 -115
  484. data/lib/active_admin/reloader.rb +0 -25
  485. data/lib/bug_report_templates/rails_5_master.rb +0 -118
  486. data/lib/generators/active_admin/assets/templates/active_admin.js.coffee +0 -1
  487. data/spec/bug_report_templates_spec.rb +0 -27
  488. data/spec/javascripts/coffeescripts/jquery.aa.checkbox-toggler-spec.js.coffee +0 -50
  489. data/spec/javascripts/coffeescripts/jquery.aa.flash.js.coffee +0 -25
  490. data/spec/javascripts/coffeescripts/jquery.aa.table-checkbox-toggler-spec.js.coffee +0 -34
  491. data/spec/javascripts/fixtures/checkboxes.html +0 -9
  492. data/spec/javascripts/fixtures/flashes.html +0 -2
  493. data/spec/javascripts/fixtures/table_checkboxes.html +0 -17
  494. data/spec/javascripts/helpers/SpecHelper.js +0 -3
  495. data/spec/javascripts/support/jasmine.yml +0 -74
  496. data/spec/javascripts/support/jasmine_runner.rb +0 -19
  497. data/spec/rails_helper.rb +0 -62
  498. data/spec/requests/default_namespace_spec.rb +0 -81
  499. data/spec/requests/javascript_spec.rb +0 -22
  500. data/spec/requests/memory_spec.rb +0 -25
  501. data/spec/requests/stylesheets_spec.rb +0 -18
  502. data/spec/spec_helper.rb +0 -12
  503. data/spec/support/active_admin_integration_spec_helper.rb +0 -73
  504. data/spec/support/active_admin_request_helpers.rb +0 -39
  505. data/spec/support/jslint.yml +0 -80
  506. data/spec/support/rails_template.rb +0 -182
  507. data/spec/support/rails_template_with_data.rb +0 -68
  508. data/spec/support/templates/admin/stores.rb +0 -7
  509. data/spec/support/templates/en.yml +0 -8
  510. data/spec/support/templates/manifest.js +0 -3
  511. data/spec/support/templates/policies/active_admin/comment_policy.rb +0 -9
  512. data/spec/support/templates/policies/active_admin/page_policy.rb +0 -18
  513. data/spec/support/templates/policies/admin_user_policy.rb +0 -11
  514. data/spec/support/templates/policies/application_policy.rb +0 -45
  515. data/spec/support/templates/policies/category_policy.rb +0 -7
  516. data/spec/support/templates/policies/post_policy.rb +0 -15
  517. data/spec/support/templates/policies/store_policy.rb +0 -11
  518. data/spec/support/templates/policies/user_policy.rb +0 -11
  519. data/spec/support/templates/post_decorator.rb +0 -11
  520. data/spec/unit/abstract_view_factory_spec.rb +0 -79
  521. data/spec/unit/action_builder_spec.rb +0 -125
  522. data/spec/unit/active_admin_spec.rb +0 -11
  523. data/spec/unit/application_spec.rb +0 -180
  524. data/spec/unit/asset_registration_spec.rb +0 -52
  525. data/spec/unit/authorization/authorization_adapter_spec.rb +0 -61
  526. data/spec/unit/authorization/controller_authorization_spec.rb +0 -43
  527. data/spec/unit/authorization/index_overriding_spec.rb +0 -23
  528. data/spec/unit/auto_link_spec.rb +0 -93
  529. data/spec/unit/batch_actions/resource_spec.rb +0 -84
  530. data/spec/unit/batch_actions/settings_spec.rb +0 -61
  531. data/spec/unit/belongs_to_spec.rb +0 -77
  532. data/spec/unit/cancan_adapter_spec.rb +0 -43
  533. data/spec/unit/comments_spec.rb +0 -176
  534. data/spec/unit/component_spec.rb +0 -18
  535. data/spec/unit/config_shared_examples.rb +0 -59
  536. data/spec/unit/controller_filters_spec.rb +0 -41
  537. data/spec/unit/csv_builder_spec.rb +0 -306
  538. data/spec/unit/dependency_spec.rb +0 -135
  539. data/spec/unit/devise_spec.rb +0 -110
  540. data/spec/unit/dsl_spec.rb +0 -122
  541. data/spec/unit/filters/active_spec.rb +0 -14
  542. data/spec/unit/filters/filter_form_builder_spec.rb +0 -500
  543. data/spec/unit/filters/humanized_spec.rb +0 -64
  544. data/spec/unit/filters/resource_spec.rb +0 -128
  545. data/spec/unit/form_builder_spec.rb +0 -990
  546. data/spec/unit/generators/install_spec.rb +0 -31
  547. data/spec/unit/helpers/collection_spec.rb +0 -68
  548. data/spec/unit/helpers/scope_chain_spec.rb +0 -36
  549. data/spec/unit/helpers/settings_spec.rb +0 -30
  550. data/spec/unit/i18n_spec.rb +0 -12
  551. data/spec/unit/localizers/resource_localizer_spec.rb +0 -36
  552. data/spec/unit/menu_collection_spec.rb +0 -62
  553. data/spec/unit/menu_item_spec.rb +0 -143
  554. data/spec/unit/menu_spec.rb +0 -71
  555. data/spec/unit/namespace/authorization_spec.rb +0 -27
  556. data/spec/unit/namespace/register_page_spec.rb +0 -99
  557. data/spec/unit/namespace/register_resource_spec.rb +0 -162
  558. data/spec/unit/namespace_spec.rb +0 -125
  559. data/spec/unit/order_clause_spec.rb +0 -81
  560. data/spec/unit/page_controller_spec.rb +0 -5
  561. data/spec/unit/page_spec.rb +0 -131
  562. data/spec/unit/pretty_format_spec.rb +0 -82
  563. data/spec/unit/pundit_adapter_spec.rb +0 -98
  564. data/spec/unit/resource/action_items_spec.rb +0 -65
  565. data/spec/unit/resource/attributes_spec.rb +0 -50
  566. data/spec/unit/resource/includes_spec.rb +0 -21
  567. data/spec/unit/resource/menu_spec.rb +0 -18
  568. data/spec/unit/resource/naming_spec.rb +0 -122
  569. data/spec/unit/resource/ordering_spec.rb +0 -38
  570. data/spec/unit/resource/page_presenters_spec.rb +0 -44
  571. data/spec/unit/resource/pagination_spec.rb +0 -38
  572. data/spec/unit/resource/routes_spec.rb +0 -125
  573. data/spec/unit/resource/scopes_spec.rb +0 -50
  574. data/spec/unit/resource/sidebars_spec.rb +0 -43
  575. data/spec/unit/resource_collection_spec.rb +0 -175
  576. data/spec/unit/resource_controller/data_access_spec.rb +0 -230
  577. data/spec/unit/resource_controller/decorators_spec.rb +0 -94
  578. data/spec/unit/resource_controller/sidebars_spec.rb +0 -37
  579. data/spec/unit/resource_controller_spec.rb +0 -274
  580. data/spec/unit/resource_registration_spec.rb +0 -61
  581. data/spec/unit/resource_spec.rb +0 -313
  582. data/spec/unit/routing_spec.rb +0 -213
  583. data/spec/unit/scope_spec.rb +0 -209
  584. data/spec/unit/settings_spec.rb +0 -118
  585. data/spec/unit/view_factory_spec.rb +0 -19
  586. data/spec/unit/view_helpers/breadcrumbs_spec.rb +0 -252
  587. data/spec/unit/view_helpers/display_helper_spec.rb +0 -195
  588. data/spec/unit/view_helpers/download_format_links_helper_spec.rb +0 -39
  589. data/spec/unit/view_helpers/fields_for_spec.rb +0 -50
  590. data/spec/unit/view_helpers/flash_helper_spec.rb +0 -25
  591. data/spec/unit/view_helpers/form_helper_spec.rb +0 -43
  592. data/spec/unit/view_helpers/method_or_proc_helper_spec.rb +0 -139
  593. data/spec/unit/views/components/attributes_table_spec.rb +0 -272
  594. data/spec/unit/views/components/batch_action_selector_spec.rb +0 -43
  595. data/spec/unit/views/components/blank_slate_spec.rb +0 -27
  596. data/spec/unit/views/components/columns_spec.rb +0 -189
  597. data/spec/unit/views/components/index_list_spec.rb +0 -49
  598. data/spec/unit/views/components/index_table_for_spec.rb +0 -127
  599. data/spec/unit/views/components/paginated_collection_spec.rb +0 -249
  600. data/spec/unit/views/components/panel_spec.rb +0 -58
  601. data/spec/unit/views/components/sidebar_section_spec.rb +0 -68
  602. data/spec/unit/views/components/site_title_spec.rb +0 -78
  603. data/spec/unit/views/components/status_tag_spec.rb +0 -249
  604. data/spec/unit/views/components/table_for_spec.rb +0 -436
  605. data/spec/unit/views/components/tabs_spec.rb +0 -39
  606. data/spec/unit/views/components/unsupported_browser_spec.rb +0 -41
  607. data/spec/unit/views/index_as_blog_spec.rb +0 -76
  608. data/spec/unit/views/pages/form_spec.rb +0 -54
  609. data/spec/unit/views/pages/index_spec.rb +0 -60
  610. data/spec/unit/views/pages/layout_spec.rb +0 -59
  611. data/spec/unit/views/pages/show_spec.rb +0 -32
  612. data/spec/unit/views/tabbed_navigation_spec.rb +0 -158
  613. data/tasks/docs.rake +0 -37
  614. data/tasks/lint.rake +0 -8
  615. data/tasks/local.rake +0 -25
  616. data/tasks/parallel_tests.rake +0 -66
  617. data/tasks/test.rake +0 -46
  618. data/tasks/yard.rake +0 -9
@@ -1,108 +1,115 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
3
+ # @private
2
4
  class Router
3
- def initialize(application)
4
- @application = application
5
+ attr_reader :namespaces, :router
6
+
7
+ def initialize(router:, namespaces:)
8
+ @router = router
9
+ @namespaces = namespaces
5
10
  end
6
11
 
7
- # Creates all the necessary routes for the ActiveAdmin configurations
8
- #
9
- # Use this within the routes.rb file:
10
- #
11
- # Application.routes.draw do |map|
12
- # ActiveAdmin.routes(self)
13
- # end
14
- #
15
- def apply(router)
16
- define_root_routes router
17
- define_resource_routes router
12
+ def apply
13
+ define_root_routes
14
+ define_resources_routes
18
15
  end
19
16
 
20
- def define_root_routes(router)
21
- router.instance_exec @application.namespaces do |namespaces|
22
- namespaces.each do |namespace|
23
- if namespace.root?
24
- root namespace.root_to_options.merge(to: namespace.root_to)
25
- else
26
- namespace namespace.name, namespace.route_options.dup do
27
- root namespace.root_to_options.merge(to: namespace.root_to, as: :root)
28
- end
17
+ private
18
+
19
+ def define_root_routes
20
+ namespaces.each do |namespace|
21
+ if namespace.root?
22
+ router.root namespace.root_to_options.merge(to: namespace.root_to)
23
+ else
24
+ router.namespace namespace.name, namespace.route_options.dup do
25
+ router.root namespace.root_to_options.merge(to: namespace.root_to, as: :root)
29
26
  end
30
27
  end
31
28
  end
32
29
  end
33
30
 
34
31
  # Defines the routes for each resource
35
- def define_resource_routes(router)
36
- router.instance_exec @application.namespaces, self do |namespaces, aa_router|
37
- resources = namespaces.flat_map{ |n| n.resources.values }
38
- resources.each do |config|
39
- routes = aa_router.resource_routes(config)
40
-
41
- # Add in the parent if it exists
42
- if config.belongs_to?
43
- belongs_to = routes
44
- routes = Proc.new do
45
- # If it's optional, make the normal resource routes
46
- instance_exec &belongs_to if config.belongs_to_config.optional?
47
-
48
- # Make the nested belongs_to routes
49
- # :only is set to nothing so that we don't clobber any existing routes on the resource
50
- resources config.belongs_to_config.target.resource_name.plural, only: [] do
51
- instance_exec &belongs_to
52
- end
53
- end
54
- end
32
+ def define_resources_routes
33
+ resources = namespaces.flat_map { |n| n.resources.values }
34
+ resources.each do |config|
35
+ define_resource_routes(config)
36
+ end
37
+ end
55
38
 
56
- # Add on the namespace if required
57
- unless config.namespace.root?
58
- nested = routes
59
- routes = Proc.new do
60
- namespace config.namespace.name, config.namespace.route_options.dup do
61
- instance_exec &nested
62
- end
63
- end
64
- end
39
+ def define_resource_routes(config)
40
+ if config.namespace.root?
41
+ define_routes(config)
42
+ else
43
+ # Add on the namespace if required
44
+ define_namespace(config)
45
+ end
46
+ end
65
47
 
66
- instance_exec &routes
67
- end
48
+ def define_routes(config)
49
+ if config.belongs_to?
50
+ define_belongs_to_routes(config)
51
+ else
52
+ page_or_resource_routes(config)
68
53
  end
69
54
  end
70
55
 
56
+ def page_or_resource_routes(config)
57
+ config.is_a?(Page) ? page_routes(config) : resource_routes(config)
58
+ end
59
+
71
60
  def resource_routes(config)
72
- Proc.new do
73
- # Builds one route for each HTTP verb passed in
74
- build_route = proc{ |verbs, *args|
75
- [*verbs].each{ |verb| send verb, *args }
76
- }
77
- # Deals with +ControllerAction+ instances
78
- build_action = proc{ |action|
79
- build_route.call(action.http_verb, action.name)
80
- }
81
- case config
82
- when ::ActiveAdmin::Resource
83
- resources config.resource_name.route_key, only: config.defined_actions do
84
- member do
85
- config.member_actions.each &build_action
86
- end
87
-
88
- collection do
89
- config.collection_actions.each &build_action
90
- post :batch_action if config.batch_actions_enabled?
91
- end
92
- end
93
- when ::ActiveAdmin::Page
94
- page = config.underscored_resource_name
95
- get "/#{page}" => "#{page}#index"
96
- config.page_actions.each do |action|
97
- Array.wrap(action.http_verb).each do |verb|
98
- build_route.call verb, "/#{page}/#{action.name}" => "#{page}##{action.name}"
99
- end
100
- end
101
- else
102
- raise "Unsupported config class: #{config.class}"
61
+ router.resources config.resource_name.route_key, only: config.defined_actions do
62
+ define_actions(config)
63
+ end
64
+ end
65
+
66
+ def page_routes(config)
67
+ page = config.underscored_resource_name
68
+ router.get "/#{page}" => "#{page}#index"
69
+ config.page_actions.each do |action|
70
+ Array.wrap(action.http_verb).each do |verb|
71
+ build_route(verb, "/#{page}/#{action.name}" => "#{page}##{action.name}")
103
72
  end
104
73
  end
74
+ end
75
+
76
+ # Defines member and collection actions
77
+ def define_actions(config)
78
+ router.member do
79
+ config.member_actions.each { |action| build_action(action) }
80
+ end
81
+
82
+ router.collection do
83
+ config.collection_actions.each { |action| build_action(action) }
84
+ router.post :batch_action if config.batch_actions_enabled?
85
+ end
86
+ end
87
+
88
+ # Deals with +ControllerAction+ instances
89
+ # Builds one route for each HTTP verb passed in
90
+ def build_action(action)
91
+ build_route(action.http_verb, action.name)
92
+ end
93
+
94
+ def build_route(verbs, *args)
95
+ Array.wrap(verbs).each { |verb| router.send(verb, *args) }
96
+ end
97
+
98
+ def define_belongs_to_routes(config)
99
+ # If it's optional, make the normal resource routes
100
+ page_or_resource_routes(config) if config.belongs_to_config.optional?
101
+
102
+ # Make the nested belongs_to routes
103
+ # :only is set to nothing so that we don't clobber any existing routes on the resource
104
+ router.resources config.belongs_to_config.target.resource_name.plural, only: [] do
105
+ page_or_resource_routes(config)
106
+ end
107
+ end
105
108
 
109
+ def define_namespace(config)
110
+ router.namespace config.namespace.name, config.namespace.route_options.dup do
111
+ define_routes(config)
112
+ end
106
113
  end
107
114
  end
108
115
  end
@@ -1,7 +1,8 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  class Scope
3
4
 
4
- attr_reader :scope_method, :id, :scope_block, :display_if_block, :show_count, :default_block
5
+ attr_reader :scope_method, :id, :scope_block, :display_if_block, :show_count, :default_block, :group
5
6
 
6
7
  # Create a Scope
7
8
  #
@@ -24,31 +25,39 @@ module ActiveAdmin
24
25
  # Scope.new ->{Date.today.strftime '%A'}, :published_today
25
26
  # # => Scope with dynamic title using the :published_today scope method
26
27
  #
28
+ # Scope.new :published, nil, group: :status
29
+ # # => Scope with the group :status
30
+ #
27
31
  def initialize(name, method = nil, options = {}, &block)
28
- @name, @scope_method = name, method.try(:to_sym)
32
+ @name = name
33
+ @scope_method = method.try(:to_sym)
29
34
 
30
35
  if name.is_a? Proc
31
36
  raise "A string/symbol is required as the second argument if your label is a proc." unless method
32
- @id = ActiveAdmin::Dependency.rails.parameterize method.to_s
37
+ @id = method.to_s.parameterize(separator: "_")
33
38
  else
34
39
  @scope_method ||= name.to_sym
35
- @id = ActiveAdmin::Dependency.rails.parameterize name.to_s
40
+ @id = name.to_s.parameterize(separator: "_")
36
41
  end
37
42
 
38
- @scope_method = nil if @scope_method == :all
39
- @scope_method, @scope_block = nil, block if block_given?
43
+ @scope_method = nil if @scope_method == :all
44
+ if block_given?
45
+ @scope_method = nil
46
+ @scope_block = block
47
+ end
40
48
 
41
- @localizer = options[:localizer]
42
- @show_count = options.fetch(:show_count, true)
43
- @display_if_block = options[:if] || proc{ true }
44
- @default_block = options[:default] || proc{ false }
49
+ @localizer = options[:localizer]
50
+ @show_count = options.fetch(:show_count, true)
51
+ @display_if_block = options[:if] || proc { true }
52
+ @default_block = options[:default] || proc { false }
53
+ @group = options[:group].try(:to_sym)
45
54
  end
46
55
 
47
56
  def name
48
57
  case @name
49
- when String then @name
50
- when Symbol then @localizer ? @localizer.t(@name, scope: 'scopes') : @name.to_s.titleize
51
- else @name
58
+ when String then @name
59
+ when Symbol then @localizer ? @localizer.t(@name, scope: "scopes") : @name.to_s.titleize
60
+ else @name
52
61
  end
53
62
  end
54
63
 
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+ module ActiveAdmin
3
+
4
+ class SettingsNode
5
+ class << self
6
+ # Never instantiated. Variables are stored in the singleton_class.
7
+ private_class_method :new
8
+
9
+ # @return anonymous class with same accessors as the superclass.
10
+ def build(superclass = self)
11
+ Class.new(superclass)
12
+ end
13
+
14
+ def register(name, value)
15
+ class_attribute name
16
+ send "#{name}=", value
17
+ end
18
+ end
19
+ end
20
+ end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
 
3
4
  class SidebarSection
@@ -6,7 +7,9 @@ module ActiveAdmin
6
7
  attr_accessor :name, :options, :block
7
8
 
8
9
  def initialize(name, options = {}, &block)
9
- @name, @options, @block = name.to_s, options, block
10
+ @name = name.to_s
11
+ @options = options
12
+ @block = block
10
13
  normalize_display_options!
11
14
  end
12
15
 
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
- VERSION = '1.0.0'
3
+ VERSION = "2.11.0"
3
4
  end
@@ -1,27 +1,28 @@
1
- require 'active_admin/abstract_view_factory'
1
+ # frozen_string_literal: true
2
+ require "active_admin/abstract_view_factory"
2
3
 
3
4
  module ActiveAdmin
4
5
  class ViewFactory < AbstractViewFactory
5
6
 
6
7
  # Register Helper Renderers
7
- register global_navigation: ActiveAdmin::Views::TabbedNavigation,
8
- utility_navigation: ActiveAdmin::Views::TabbedNavigation,
9
- site_title: ActiveAdmin::Views::SiteTitle,
10
- unsupported_browser: ActiveAdmin::Views::UnsupportedBrowser,
11
- action_items: ActiveAdmin::Views::ActionItems,
12
- title_bar: ActiveAdmin::Views::TitleBar,
13
- header: ActiveAdmin::Views::Header,
14
- footer: ActiveAdmin::Views::Footer,
15
- index_scopes: ActiveAdmin::Views::Scopes,
16
- blank_slate: ActiveAdmin::Views::BlankSlate
8
+ register global_navigation: ActiveAdmin::Views::TabbedNavigation,
9
+ utility_navigation: ActiveAdmin::Views::TabbedNavigation,
10
+ site_title: ActiveAdmin::Views::SiteTitle,
11
+ unsupported_browser: ActiveAdmin::Views::UnsupportedBrowser,
12
+ action_items: ActiveAdmin::Views::ActionItems,
13
+ title_bar: ActiveAdmin::Views::TitleBar,
14
+ header: ActiveAdmin::Views::Header,
15
+ footer: ActiveAdmin::Views::Footer,
16
+ index_scopes: ActiveAdmin::Views::Scopes,
17
+ blank_slate: ActiveAdmin::Views::BlankSlate
17
18
 
18
19
  # Register All The Pages
19
- register index_page: ActiveAdmin::Views::Pages::Index,
20
- show_page: ActiveAdmin::Views::Pages::Show,
21
- new_page: ActiveAdmin::Views::Pages::Form,
22
- edit_page: ActiveAdmin::Views::Pages::Form,
23
- layout: ActiveAdmin::Views::Pages::Layout,
24
- page: ActiveAdmin::Views::Pages::Page
20
+ register index_page: ActiveAdmin::Views::Pages::Index,
21
+ show_page: ActiveAdmin::Views::Pages::Show,
22
+ new_page: ActiveAdmin::Views::Pages::Form,
23
+ edit_page: ActiveAdmin::Views::Pages::Form,
24
+ layout: ActiveAdmin::Views::Pages::Layout,
25
+ page: ActiveAdmin::Views::Pages::Page
25
26
 
26
27
  end
27
28
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  module ViewHelpers
3
4
  module ActiveAdminApplicationHelper
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  module ViewHelpers
3
4
  module AutoLinkHelper
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  module ViewHelpers
3
4
  module BreadcrumbHelper
@@ -6,22 +7,22 @@ module ActiveAdmin
6
7
  def breadcrumb_links(path = request.path)
7
8
  # remove leading "/" and split up the URL
8
9
  # and remove last since it's used as the page title
9
- parts = path.split('/').select(&:present?)[0..-2]
10
+ parts = path.split("/").select(&:present?)[0..-2]
10
11
 
11
12
  parts.each_with_index.map do |part, index|
12
13
  # 1. try using `display_name` if we can locate a DB object
13
14
  # 2. try using the model name translation
14
15
  # 3. default to calling `titlecase` on the URL fragment
15
- if part =~ /\A(\d+|[a-f0-9]{24}|(?:[a-f0-9]{8}-(?:[a-f0-9]{4}-){3}[a-f0-9]{12}))\z/ && parts[index-1]
16
+ if part =~ /\A(\d+|[a-f0-9]{24}|(?:[a-f0-9]{8}-(?:[a-f0-9]{4}-){3}[a-f0-9]{12}))\z/ && parts[index - 1]
16
17
  parent = active_admin_config.belongs_to_config.try :target
17
- config = parent && parent.resource_name.route_key == parts[index-1] ? parent : active_admin_config
18
- name = display_name config.find_resource part
18
+ config = parent && parent.resource_name.route_key == parts[index - 1] ? parent : active_admin_config
19
+ name = display_name config.find_resource part
19
20
  end
20
21
  name ||= I18n.t "activerecord.models.#{part.singularize}", count: ::ActiveAdmin::Helpers::I18n::PLURAL_MANY_COUNT, default: part.titlecase
21
22
 
22
23
  # Don't create a link if the resource's show action is disabled
23
24
  if !config || config.defined_actions.include?(:show)
24
- link_to name, '/' + parts[0..index].join('/')
25
+ link_to name, "/" + parts[0..index].join("/")
25
26
  else
26
27
  name
27
28
  end
@@ -1,21 +1,30 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  module ViewHelpers
3
4
  module DisplayHelper
4
5
 
5
- DISPLAY_NAME_FALLBACK = ->{
6
- name, klass = "", self.class
7
- name << klass.model_name.human if klass.respond_to? :model_name
8
- name << " ##{send(klass.primary_key)}" if klass.respond_to? :primary_key
6
+ DISPLAY_NAME_FALLBACK = -> {
7
+ klass = self.class
8
+ name = if klass.respond_to?(:model_name)
9
+ if klass.respond_to?(:primary_key)
10
+ "#{klass.model_name.human} ##{send(klass.primary_key)}"
11
+ else
12
+ klass.model_name.human
13
+ end
14
+ elsif klass.respond_to?(:primary_key)
15
+ " ##{send(klass.primary_key)}"
16
+ end
9
17
  name.present? ? name : to_s
10
18
  }
19
+
11
20
  def DISPLAY_NAME_FALLBACK.inspect
12
- 'DISPLAY_NAME_FALLBACK'
21
+ "DISPLAY_NAME_FALLBACK"
13
22
  end
14
23
 
15
24
  # Attempts to call any known display name methods on the resource.
16
25
  # See the setting in `application.rb` for the list of methods and their priority.
17
26
  def display_name(resource)
18
- render_in_context resource, display_name_method_for(resource) unless resource.nil?
27
+ ERB::Util.html_escape(render_in_context(resource, display_name_method_for(resource))) unless resource.nil?
19
28
  end
20
29
 
21
30
  # Looks up and caches the first available display name method.
@@ -25,7 +34,7 @@ module ActiveAdmin
25
34
  @@display_name_methods_cache ||= {}
26
35
  @@display_name_methods_cache[resource.class] ||= begin
27
36
  methods = active_admin_application.display_name_methods - association_methods_for(resource)
28
- method = methods.detect{ |method| resource.respond_to? method }
37
+ method = methods.detect { |method| resource.respond_to? method }
29
38
 
30
39
  if method != :to_s || resource.method(method).source_location
31
40
  method
@@ -69,20 +78,28 @@ module ActiveAdmin
69
78
  object.to_s
70
79
  when Date, Time
71
80
  I18n.localize object, format: active_admin_application.localize_format
81
+ when Array
82
+ format_collection(object)
72
83
  else
73
84
  if defined?(::ActiveRecord) && object.is_a?(ActiveRecord::Base) ||
74
- defined?(::Mongoid) && object.class.include?(Mongoid::Document)
85
+ defined?(::Mongoid) && object.class.include?(Mongoid::Document)
75
86
  auto_link object
87
+ elsif defined?(::ActiveRecord) && object.is_a?(ActiveRecord::Relation)
88
+ format_collection(object)
76
89
  else
77
90
  display_name object
78
91
  end
79
92
  end
80
93
  end
81
94
 
95
+ def format_collection(collection)
96
+ safe_join(collection.map { |item| pretty_format(item) }, ", ")
97
+ end
98
+
82
99
  def boolean_attr?(resource, attr, value)
83
100
  case value
84
101
  when TrueClass, FalseClass
85
- true
102
+ true
86
103
  else
87
104
  if resource.class.respond_to? :columns_hash
88
105
  column = resource.class.columns_hash[attr.to_s] and column.type == :boolean
@@ -1,6 +1,8 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  module ViewHelpers
3
4
  module DownloadFormatLinksHelper
5
+ private
4
6
 
5
7
  def build_download_formats(download_links)
6
8
  download_links = instance_exec(&download_links) if download_links.is_a?(Proc)
@@ -17,7 +19,7 @@ module ActiveAdmin
17
19
  def build_download_format_links(formats = self.class.formats)
18
20
  params = request.query_parameters.except :format, :commit
19
21
  div class: "download_links" do
20
- span I18n.t('active_admin.download')
22
+ span I18n.t("active_admin.download")
21
23
  formats.each do |format|
22
24
  a format.upcase, href: url_for(params: params, format: format)
23
25
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  module ViewHelpers
3
4
  module FormHelper
@@ -15,7 +16,7 @@ module ActiveAdmin
15
16
  #
16
17
  def fields_for_params(params, options = {})
17
18
  namespace = options[:namespace]
18
- except = Array.wrap(options[:except]).map &:to_s
19
+ except = Array.wrap(options[:except]).map &:to_s
19
20
 
20
21
  params.flat_map do |k, v|
21
22
  next if namespace.nil? && %w(controller action commit utf8).include?(k.to_s)
@@ -37,7 +38,7 @@ module ActiveAdmin
37
38
  { "#{k}[]" => v }
38
39
  end
39
40
  when nil
40
- { k => '' }
41
+ { k => "" }
41
42
  when TrueClass, FalseClass
42
43
  { k => v }
43
44
  else
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  module ViewHelpers
3
4
  module FlashHelper
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  module ViewHelpers
3
4
  module FormHelper
@@ -8,7 +9,7 @@ module ActiveAdmin
8
9
  end.content
9
10
  end
10
11
 
11
- def hidden_field_tags_for(params, options={})
12
+ def hidden_field_tags_for(params, options = {})
12
13
  fields_for_params(params.to_unsafe_hash, options).map do |kv|
13
14
  k, v = kv.first
14
15
  hidden_field_tag k, v, id: sanitize_to_id("hidden_active_admin_#{k}")
@@ -1,4 +1,8 @@
1
+ # frozen_string_literal: true
2
+ # Utility methods for internal use.
3
+ # @private
1
4
  module MethodOrProcHelper
5
+ extend self
2
6
 
3
7
  # This method will either call the symbol on self or instance_exec the Proc
4
8
  # within self. Any args will be passed along to the method dispatch.
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+ module ActiveAdmin
3
+ module ViewHelpers
4
+ module ScopeNameHelper
5
+
6
+ def scope_name(scope)
7
+ case scope.name
8
+ when Proc then
9
+ self.instance_exec(&scope.name).to_s
10
+ else
11
+ scope.name.to_s
12
+ end
13
+ end
14
+
15
+ end
16
+ end
17
+ end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  module ViewHelpers
3
4
  module SidebarHelper
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  module ViewHelpers
3
4
  module TitleHelper
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  module ViewHelpers
3
4
  module ViewFactoryHelper
@@ -1,8 +1,9 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  module ViewHelpers
3
4
 
4
5
  # Require all ruby files in the view helpers dir
5
- Dir[File.expand_path('../view_helpers', __FILE__) + "/*.rb"].each{|f| require f }
6
+ Dir[File.expand_path("view_helpers", __dir__) + "/*.rb"].each { |f| require f }
6
7
 
7
8
  include ActiveAdminApplicationHelper
8
9
  include AutoLinkHelper
@@ -14,6 +15,7 @@ module ActiveAdmin
14
15
  include TitleHelper
15
16
  include ViewFactoryHelper
16
17
  include FlashHelper
18
+ include ScopeNameHelper
17
19
 
18
20
  end
19
21
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  module Views
3
4
 
@@ -5,7 +6,7 @@ module ActiveAdmin
5
6
 
6
7
  def build(action_items)
7
8
  action_items.each do |action_item|
8
- span class: "action_item" do
9
+ span class: action_item.html_class do
9
10
  instance_exec(&action_item.block)
10
11
  end
11
12
  end