activeadmin 1.0.0.pre1 → 2.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (595) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +587 -939
  3. data/CODE_OF_CONDUCT.md +74 -0
  4. data/CONTRIBUTING.md +110 -59
  5. data/LICENSE +0 -5
  6. data/README.md +80 -61
  7. data/app/assets/javascripts/active_admin/base.js +517 -0
  8. data/app/assets/stylesheets/active_admin/_base.scss +31 -34
  9. data/app/assets/stylesheets/active_admin/_forms.scss +33 -35
  10. data/app/assets/stylesheets/active_admin/_header.scss +40 -8
  11. data/app/assets/stylesheets/active_admin/_mixins.scss +1 -1
  12. data/app/assets/stylesheets/active_admin/_normalize.scss +447 -0
  13. data/app/assets/stylesheets/active_admin/components/_batch_actions.scss +0 -5
  14. data/app/assets/stylesheets/active_admin/components/_buttons.scss +0 -5
  15. data/app/assets/stylesheets/active_admin/components/_comments.scss +2 -2
  16. data/app/assets/stylesheets/active_admin/components/_pagination.scss +11 -0
  17. data/app/assets/stylesheets/active_admin/components/_scopes.scss +3 -0
  18. data/app/assets/stylesheets/active_admin/components/_status_tags.scss +0 -4
  19. data/app/assets/stylesheets/active_admin/components/_tables.scss +5 -3
  20. data/app/assets/stylesheets/active_admin/components/_tabs.scss +1 -1
  21. data/app/assets/stylesheets/active_admin/mixins/_all.scss +8 -11
  22. data/app/assets/stylesheets/active_admin/mixins/_gradients.scss +1 -1
  23. data/app/assets/stylesheets/active_admin/mixins/_sections.scss +0 -1
  24. data/app/assets/stylesheets/active_admin/mixins/_typography.scss +1 -1
  25. data/app/assets/stylesheets/active_admin/mixins/_variables.scss +9 -1
  26. data/app/assets/stylesheets/active_admin/print.scss +3 -4
  27. data/app/assets/stylesheets/active_admin/structure/_main_structure.scss +1 -1
  28. data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +0 -5
  29. data/app/javascript/active_admin/base.js +28 -0
  30. data/app/javascript/active_admin/ext/jquery-ui.js +7 -0
  31. data/app/javascript/active_admin/ext/jquery.js +9 -0
  32. data/app/javascript/active_admin/initializers/batch-actions.js +61 -0
  33. data/app/javascript/active_admin/initializers/checkbox-toggler.js +3 -0
  34. data/app/javascript/active_admin/initializers/datepicker.js +16 -0
  35. data/app/javascript/active_admin/initializers/dropdown-menu.js +9 -0
  36. data/app/javascript/active_admin/initializers/filters.js +10 -0
  37. data/app/javascript/active_admin/initializers/has-many.js +95 -0
  38. data/app/javascript/active_admin/initializers/per-page.js +13 -0
  39. data/app/javascript/active_admin/initializers/table-checkbox-toggler.js +3 -0
  40. data/app/javascript/active_admin/initializers/tabs.js +6 -0
  41. data/app/javascript/active_admin/lib/checkbox-toggler.js +49 -0
  42. data/app/javascript/active_admin/lib/dropdown-menu.js +116 -0
  43. data/app/javascript/active_admin/lib/filters.js +39 -0
  44. data/app/javascript/active_admin/lib/modal-dialog.js +63 -0
  45. data/app/javascript/active_admin/lib/per-page.js +38 -0
  46. data/app/javascript/active_admin/lib/table-checkbox-toggler.js +38 -0
  47. data/app/javascript/active_admin/lib/utils.js +40 -0
  48. data/app/views/active_admin/devise/confirmations/new.html.erb +2 -2
  49. data/app/views/active_admin/devise/mailer/reset_password_instructions.html.erb +1 -1
  50. data/app/views/active_admin/devise/mailer/unlock_instructions.html.erb +2 -2
  51. data/app/views/active_admin/devise/passwords/edit.html.erb +2 -2
  52. data/app/views/active_admin/devise/passwords/new.html.erb +2 -2
  53. data/app/views/active_admin/devise/registrations/new.html.erb +3 -4
  54. data/app/views/active_admin/devise/sessions/new.html.erb +2 -2
  55. data/app/views/active_admin/devise/shared/_error_messages.html.erb +15 -0
  56. data/app/views/active_admin/devise/shared/_links.erb +12 -6
  57. data/app/views/active_admin/devise/unlocks/new.html.erb +2 -2
  58. data/app/views/kaminari/active_admin/_first_page.html.erb +11 -0
  59. data/app/views/kaminari/active_admin/_gap.html.erb +8 -0
  60. data/app/views/kaminari/active_admin/_last_page.html.erb +11 -0
  61. data/app/views/kaminari/active_admin/_next_page.html.erb +11 -0
  62. data/app/views/kaminari/active_admin/_page.html.erb +12 -0
  63. data/app/views/kaminari/active_admin/_paginator.html.erb +25 -0
  64. data/app/views/kaminari/active_admin/_prev_page.html.erb +11 -0
  65. data/app/views/kaminari/active_admin_countless/_first_page.html.erb +11 -0
  66. data/app/views/kaminari/active_admin_countless/_gap.html.erb +8 -0
  67. data/app/views/kaminari/active_admin_countless/_next_page.html.erb +11 -0
  68. data/app/views/kaminari/active_admin_countless/_page.html.erb +12 -0
  69. data/app/views/kaminari/active_admin_countless/_paginator.html.erb +24 -0
  70. data/app/views/kaminari/active_admin_countless/_prev_page.html.erb +11 -0
  71. data/app/views/layouts/active_admin_logged_out.html.erb +21 -7
  72. data/config/locales/ar.yml +62 -47
  73. data/config/locales/az.yml +138 -0
  74. data/config/locales/bg.yml +1 -3
  75. data/config/locales/bs.yml +1 -2
  76. data/config/locales/ca.yml +2 -4
  77. data/config/locales/cs.yml +1 -2
  78. data/config/locales/da.yml +45 -14
  79. data/config/locales/de-CH.yml +4 -3
  80. data/config/locales/de.yml +46 -3
  81. data/config/locales/el.yml +3 -4
  82. data/config/locales/en-CA.yml +139 -0
  83. data/config/locales/en-GB.yml +46 -5
  84. data/config/locales/en.yml +44 -9
  85. data/config/locales/eo.yml +145 -0
  86. data/config/locales/es-MX.yml +9 -6
  87. data/config/locales/es.yml +63 -14
  88. data/config/locales/fa.yml +1 -2
  89. data/config/locales/fi.yml +2 -3
  90. data/config/locales/fr.yml +36 -8
  91. data/config/locales/he.yml +53 -7
  92. data/config/locales/hr.yml +1 -2
  93. data/config/locales/hu.yml +6 -3
  94. data/config/locales/id.yml +135 -0
  95. data/config/locales/it.yml +49 -4
  96. data/config/locales/ja.yml +31 -7
  97. data/config/locales/ko.yml +66 -36
  98. data/config/locales/lt.yml +27 -6
  99. data/config/locales/lv.yml +3 -4
  100. data/config/locales/mk.yml +134 -0
  101. data/config/locales/nb.yml +22 -8
  102. data/config/locales/nl.yml +26 -3
  103. data/config/locales/pl.yml +75 -5
  104. data/config/locales/pt-BR.yml +24 -2
  105. data/config/locales/pt-PT.yml +1 -2
  106. data/config/locales/ro.yml +1 -2
  107. data/config/locales/ru.yml +21 -4
  108. data/config/locales/sk.yml +168 -0
  109. data/config/locales/sv-SE.yml +50 -8
  110. data/config/locales/tr.yml +92 -45
  111. data/config/locales/uk.yml +30 -16
  112. data/config/locales/vi.yml +53 -12
  113. data/config/locales/zh-CN.yml +44 -7
  114. data/config/locales/zh-TW.yml +42 -3
  115. data/docs/.gitignore +1 -0
  116. data/docs/0-installation.md +68 -18
  117. data/docs/1-general-configuration.md +88 -4
  118. data/docs/10-custom-pages.md +56 -2
  119. data/docs/11-decorators.md +20 -5
  120. data/docs/12-arbre-components.md +75 -11
  121. data/docs/13-authorization-adapter.md +73 -36
  122. data/docs/14-gotchas.md +64 -18
  123. data/docs/2-resource-customization.md +91 -23
  124. data/docs/3-index-pages/custom-index.md +5 -1
  125. data/docs/3-index-pages/index-as-block.md +3 -5
  126. data/docs/3-index-pages/index-as-blog.md +4 -6
  127. data/docs/3-index-pages/index-as-grid.md +3 -5
  128. data/docs/3-index-pages/index-as-table.md +46 -9
  129. data/docs/3-index-pages.md +73 -10
  130. data/docs/4-csv-format.md +35 -0
  131. data/docs/5-forms.md +96 -18
  132. data/docs/6-show-pages.md +13 -25
  133. data/docs/7-sidebars.md +13 -1
  134. data/docs/8-custom-actions.md +18 -1
  135. data/docs/9-batch-actions.md +9 -5
  136. data/docs/CNAME +1 -0
  137. data/docs/Gemfile +3 -0
  138. data/docs/Gemfile.lock +259 -0
  139. data/docs/_config.yml +4 -0
  140. data/docs/_includes/footer.html +8 -0
  141. data/docs/_includes/google-analytics.html +16 -0
  142. data/docs/_includes/head.html +7 -0
  143. data/docs/_includes/toc.html +98 -0
  144. data/docs/_includes/top-menu.html +17 -0
  145. data/docs/_layouts/default.html +21 -0
  146. data/docs/documentation.md +60 -0
  147. data/docs/images/activeadmin.png +0 -0
  148. data/docs/images/code-header.png +0 -0
  149. data/docs/images/divider.png +0 -0
  150. data/docs/images/features.png +0 -0
  151. data/docs/images/tidelift.svg +14 -0
  152. data/docs/index.html +226 -0
  153. data/docs/stylesheets/main.css +1205 -0
  154. data/lib/active_admin/abstract_view_factory.rb +13 -51
  155. data/lib/active_admin/application.rb +105 -138
  156. data/lib/active_admin/application_settings.rb +42 -0
  157. data/lib/active_admin/authorization_adapter.rb +4 -7
  158. data/lib/active_admin/base_controller/authorization.rb +16 -21
  159. data/lib/active_admin/base_controller/menu.rb +10 -10
  160. data/lib/active_admin/base_controller.rb +15 -11
  161. data/lib/active_admin/batch_actions/controller.rb +6 -7
  162. data/lib/active_admin/batch_actions/resource_extension.rb +15 -15
  163. data/lib/active_admin/batch_actions/views/batch_action_form.rb +4 -4
  164. data/lib/active_admin/batch_actions/views/batch_action_selector.rb +8 -7
  165. data/lib/active_admin/batch_actions/views/selection_cells.rb +7 -6
  166. data/lib/active_admin/batch_actions.rb +0 -1
  167. data/lib/active_admin/callbacks.rb +2 -2
  168. data/lib/active_admin/cancan_adapter.rb +1 -1
  169. data/lib/active_admin/collection_decorator.rb +31 -0
  170. data/lib/active_admin/controller_action.rb +2 -1
  171. data/lib/active_admin/csv_builder.rb +30 -20
  172. data/lib/active_admin/dependency.rb +36 -29
  173. data/lib/active_admin/deprecation.rb +0 -25
  174. data/lib/active_admin/devise.rb +9 -9
  175. data/lib/active_admin/dsl.rb +5 -18
  176. data/lib/active_admin/dynamic_setting.rb +38 -0
  177. data/lib/active_admin/dynamic_settings_node.rb +28 -0
  178. data/lib/active_admin/engine.rb +14 -7
  179. data/lib/active_admin/error.rb +6 -6
  180. data/lib/active_admin/filters/active.rb +29 -0
  181. data/lib/active_admin/filters/active_filter.rb +123 -0
  182. data/lib/active_admin/filters/active_sidebar.rb +54 -0
  183. data/lib/active_admin/filters/forms.rb +17 -10
  184. data/lib/active_admin/filters/formtastic_addons.rb +2 -7
  185. data/lib/active_admin/filters/resource_extension.rb +50 -14
  186. data/lib/active_admin/filters.rb +7 -5
  187. data/lib/active_admin/form_builder.rb +112 -67
  188. data/lib/active_admin/generators/boilerplate.rb +53 -0
  189. data/lib/active_admin/helpers/collection.rb +2 -0
  190. data/lib/active_admin/helpers/optional_display.rb +2 -2
  191. data/lib/active_admin/helpers/routes/url_helpers.rb +1 -1
  192. data/lib/active_admin/helpers/scope_chain.rb +1 -0
  193. data/lib/active_admin/inputs/datepicker_input.rb +13 -6
  194. data/lib/active_admin/inputs/filters/base/search_method_select.rb +9 -9
  195. data/lib/active_admin/inputs/filters/base.rb +3 -1
  196. data/lib/active_admin/inputs/filters/boolean_input.rb +1 -1
  197. data/lib/active_admin/inputs/filters/check_boxes_input.rb +1 -1
  198. data/lib/active_admin/inputs/filters/date_picker_input.rb +13 -0
  199. data/lib/active_admin/inputs/filters/date_range_input.rb +25 -9
  200. data/lib/active_admin/inputs/filters/select_input.rb +8 -4
  201. data/lib/active_admin/inputs/filters/text_input.rb +25 -0
  202. data/lib/active_admin/inputs.rb +2 -0
  203. data/lib/active_admin/localizers/resource_localizer.rb +35 -0
  204. data/lib/active_admin/localizers.rb +11 -0
  205. data/lib/active_admin/menu.rb +13 -15
  206. data/lib/active_admin/menu_collection.rb +0 -2
  207. data/lib/active_admin/menu_item.rb +10 -38
  208. data/lib/active_admin/namespace.rb +51 -32
  209. data/lib/active_admin/namespace_settings.rb +126 -0
  210. data/lib/active_admin/order_clause.rb +30 -8
  211. data/lib/active_admin/orm/active_record/comments/comment.rb +6 -20
  212. data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +44 -21
  213. data/lib/active_admin/orm/active_record/comments/views.rb +2 -2
  214. data/lib/active_admin/orm/active_record/comments.rb +49 -29
  215. data/lib/active_admin/orm/active_record.rb +1 -1
  216. data/lib/active_admin/page.rb +24 -5
  217. data/lib/active_admin/page_controller.rb +2 -2
  218. data/lib/active_admin/page_dsl.rb +5 -1
  219. data/lib/active_admin/page_presenter.rb +2 -1
  220. data/lib/active_admin/pundit_adapter.rb +22 -9
  221. data/lib/active_admin/resource/action_items.rb +34 -12
  222. data/lib/active_admin/resource/attributes.rb +47 -0
  223. data/lib/active_admin/resource/belongs_to.rb +17 -4
  224. data/lib/active_admin/resource/controllers.rb +1 -1
  225. data/lib/active_admin/resource/menu.rb +9 -6
  226. data/lib/active_admin/resource/model.rb +15 -0
  227. data/lib/active_admin/resource/naming.rb +5 -5
  228. data/lib/active_admin/resource/ordering.rb +11 -0
  229. data/lib/active_admin/resource/page_presenters.rb +1 -1
  230. data/lib/active_admin/resource/pagination.rb +4 -0
  231. data/lib/active_admin/resource/routes.rb +56 -26
  232. data/lib/active_admin/resource/scope_to.rb +7 -7
  233. data/lib/active_admin/resource/scopes.rb +5 -3
  234. data/lib/active_admin/resource/sidebars.rb +2 -2
  235. data/lib/active_admin/resource.rb +80 -22
  236. data/lib/active_admin/resource_collection.rb +5 -3
  237. data/lib/active_admin/resource_controller/action_builder.rb +10 -0
  238. data/lib/active_admin/resource_controller/data_access.rb +56 -43
  239. data/lib/active_admin/resource_controller/decorators.rb +9 -31
  240. data/lib/active_admin/resource_controller/polymorphic_routes.rb +37 -0
  241. data/lib/active_admin/resource_controller/resource_class_methods.rb +2 -0
  242. data/lib/active_admin/resource_controller/scoping.rb +1 -1
  243. data/lib/active_admin/resource_controller/streaming.rb +12 -5
  244. data/lib/active_admin/resource_controller.rb +26 -10
  245. data/lib/active_admin/resource_dsl.rb +67 -21
  246. data/lib/active_admin/router.rb +90 -82
  247. data/lib/active_admin/scope.rb +21 -14
  248. data/lib/active_admin/settings_node.rb +19 -0
  249. data/lib/active_admin/sidebar_section.rb +6 -12
  250. data/lib/active_admin/version.rb +1 -1
  251. data/lib/active_admin/view_factory.rb +17 -18
  252. data/lib/active_admin/view_helpers/auto_link_helper.rb +2 -2
  253. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +5 -5
  254. data/lib/active_admin/view_helpers/display_helper.rb +51 -9
  255. data/lib/active_admin/view_helpers/download_format_links_helper.rb +14 -1
  256. data/lib/active_admin/view_helpers/fields_for.rb +4 -4
  257. data/lib/active_admin/view_helpers/form_helper.rb +2 -2
  258. data/lib/active_admin/view_helpers/method_or_proc_helper.rb +11 -4
  259. data/lib/active_admin/view_helpers/scope_name_helper.rb +16 -0
  260. data/lib/active_admin/view_helpers.rb +2 -2
  261. data/lib/active_admin/views/action_items.rb +1 -1
  262. data/lib/active_admin/views/components/active_admin_form.rb +45 -13
  263. data/lib/active_admin/views/components/attributes_table.rb +11 -29
  264. data/lib/active_admin/views/components/blank_slate.rb +1 -1
  265. data/lib/active_admin/views/components/columns.rb +12 -7
  266. data/lib/active_admin/views/components/dropdown_menu.rb +11 -13
  267. data/lib/active_admin/views/components/index_list.rb +6 -5
  268. data/lib/active_admin/views/components/menu.rb +32 -0
  269. data/lib/active_admin/views/components/menu_item.rb +58 -0
  270. data/lib/active_admin/views/components/paginated_collection.rb +52 -33
  271. data/lib/active_admin/views/components/panel.rb +2 -4
  272. data/lib/active_admin/views/components/scopes.rb +20 -12
  273. data/lib/active_admin/views/components/sidebar.rb +13 -0
  274. data/lib/active_admin/views/components/sidebar_section.rb +6 -1
  275. data/lib/active_admin/views/components/site_title.rb +6 -7
  276. data/lib/active_admin/views/components/status_tag.rb +19 -23
  277. data/lib/active_admin/views/components/table_for.rb +31 -57
  278. data/lib/active_admin/views/components/tabs.rb +17 -5
  279. data/lib/active_admin/views/footer.rb +15 -4
  280. data/lib/active_admin/views/header.rb +3 -16
  281. data/lib/active_admin/views/index_as_blog.rb +3 -4
  282. data/lib/active_admin/views/index_as_grid.rb +28 -28
  283. data/lib/active_admin/views/index_as_table.rb +76 -28
  284. data/lib/active_admin/views/pages/base.rb +45 -58
  285. data/lib/active_admin/views/pages/form.rb +5 -2
  286. data/lib/active_admin/views/pages/index.rb +15 -13
  287. data/lib/active_admin/views/pages/layout.rb +1 -1
  288. data/lib/active_admin/views/pages/show.rb +9 -3
  289. data/lib/active_admin/views/tabbed_navigation.rb +4 -59
  290. data/lib/active_admin/views/title_bar.rb +6 -6
  291. data/lib/active_admin/views.rb +1 -1
  292. data/lib/active_admin.rb +69 -67
  293. data/lib/activeadmin.rb +1 -1
  294. data/lib/generators/active_admin/assets/assets_generator.rb +3 -3
  295. data/lib/generators/active_admin/assets/templates/active_admin.js +1 -0
  296. data/lib/generators/active_admin/assets/templates/{active_admin.css.scss → active_admin.scss} +3 -3
  297. data/lib/generators/active_admin/devise/devise_generator.rb +17 -26
  298. data/lib/generators/active_admin/install/install_generator.rb +18 -8
  299. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +107 -5
  300. data/lib/generators/active_admin/install/templates/{admin_user.rb.erb → admin_users.rb.erb} +1 -3
  301. data/lib/generators/active_admin/install/templates/dashboard.rb +2 -3
  302. data/lib/generators/active_admin/install/templates/migrations/{create_active_admin_comments.rb → create_active_admin_comments.rb.erb} +2 -5
  303. data/lib/generators/active_admin/page/page_generator.rb +1 -1
  304. data/lib/generators/active_admin/page/templates/page.rb +1 -1
  305. data/lib/generators/active_admin/resource/resource_generator.rb +8 -2
  306. data/lib/generators/active_admin/resource/templates/admin.rb.erb +46 -0
  307. data/lib/generators/active_admin/webpacker/plugins/jquery.js +7 -0
  308. data/lib/generators/active_admin/webpacker/templates/active_admin.js +5 -0
  309. data/lib/generators/active_admin/webpacker/templates/active_admin.scss +17 -0
  310. data/lib/generators/active_admin/webpacker/templates/print.scss +2 -0
  311. data/lib/generators/active_admin/webpacker/webpacker_generator.rb +26 -0
  312. data/lib/ransack_ext.rb +11 -3
  313. data/vendor/assets/javascripts/jquery-ui/data.js +41 -0
  314. data/vendor/assets/javascripts/jquery-ui/disable-selection.js +48 -0
  315. data/vendor/assets/javascripts/jquery-ui/escape-selector.js +23 -0
  316. data/vendor/assets/javascripts/jquery-ui/focusable.js +86 -0
  317. data/vendor/assets/javascripts/jquery-ui/form-reset-mixin.js +80 -0
  318. data/vendor/assets/javascripts/jquery-ui/form.js +22 -0
  319. data/vendor/assets/javascripts/jquery-ui/ie.js +17 -0
  320. data/vendor/assets/javascripts/jquery-ui/keycode.js +47 -0
  321. data/vendor/assets/javascripts/jquery-ui/labels.js +65 -0
  322. data/vendor/assets/javascripts/jquery-ui/plugin.js +46 -0
  323. data/vendor/assets/javascripts/jquery-ui/position.js +500 -0
  324. data/vendor/assets/javascripts/jquery-ui/safe-active-element.js +42 -0
  325. data/vendor/assets/javascripts/jquery-ui/safe-blur.js +23 -0
  326. data/vendor/assets/javascripts/jquery-ui/scroll-parent.js +47 -0
  327. data/vendor/assets/javascripts/jquery-ui/tabbable.js +38 -0
  328. data/vendor/assets/javascripts/jquery-ui/unique-id.js +51 -0
  329. data/vendor/assets/javascripts/jquery-ui/version.js +17 -0
  330. data/vendor/assets/javascripts/jquery-ui/widget.js +735 -0
  331. data/vendor/assets/javascripts/jquery-ui/widgets/button.js +391 -0
  332. data/vendor/assets/javascripts/jquery-ui/widgets/checkboxradio.js +291 -0
  333. data/vendor/assets/javascripts/jquery-ui/widgets/controlgroup.js +300 -0
  334. data/vendor/assets/javascripts/jquery-ui/widgets/datepicker.js +2123 -0
  335. data/vendor/assets/javascripts/jquery-ui/widgets/dialog.js +954 -0
  336. data/vendor/assets/javascripts/jquery-ui/widgets/draggable.js +1259 -0
  337. data/vendor/assets/javascripts/jquery-ui/widgets/mouse.js +230 -0
  338. data/vendor/assets/javascripts/jquery-ui/widgets/resizable.js +1207 -0
  339. data/vendor/assets/javascripts/jquery-ui/widgets/sortable.js +1561 -0
  340. data/vendor/assets/javascripts/jquery-ui/widgets/tabs.js +931 -0
  341. metadata +182 -553
  342. data/.gitignore +0 -49
  343. data/.hound.yml +0 -11
  344. data/.travis.yml +0 -42
  345. data/.yardopts +0 -8
  346. data/Gemfile +0 -54
  347. data/Guardfile +0 -8
  348. data/Rakefile +0 -33
  349. data/activeadmin.gemspec +0 -28
  350. data/app/assets/images/active_admin/datepicker/datepicker-input-icon.png +0 -0
  351. data/app/assets/images/active_admin/nested_menu_arrow.gif +0 -0
  352. data/app/assets/images/active_admin/nested_menu_arrow_dark.gif +0 -0
  353. data/app/assets/images/active_admin/orderable.png +0 -0
  354. data/app/assets/javascripts/active_admin/application.js.coffee +0 -32
  355. data/app/assets/javascripts/active_admin/base.js.coffee +0 -14
  356. data/app/assets/javascripts/active_admin/ext/jquery-ui.js.coffee +0 -6
  357. data/app/assets/javascripts/active_admin/ext/jquery.js.coffee +0 -7
  358. data/app/assets/javascripts/active_admin/lib/batch_actions.js.coffee +0 -39
  359. data/app/assets/javascripts/active_admin/lib/checkbox-toggler.js.coffee +0 -36
  360. data/app/assets/javascripts/active_admin/lib/dropdown-menu.js.coffee +0 -101
  361. data/app/assets/javascripts/active_admin/lib/flash.js.coffee +0 -19
  362. data/app/assets/javascripts/active_admin/lib/has_many.js.coffee +0 -79
  363. data/app/assets/javascripts/active_admin/lib/modal_dialog.js.coffee +0 -37
  364. data/app/assets/javascripts/active_admin/lib/per_page.js.coffee +0 -27
  365. data/app/assets/javascripts/active_admin/lib/popover.js.coffee +0 -68
  366. data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.js.coffee +0 -24
  367. data/app/assets/stylesheets/active_admin/components/_popovers.scss +0 -122
  368. data/app/assets/stylesheets/active_admin/mixins/_icons.scss +0 -20
  369. data/app/assets/stylesheets/active_admin/mixins/_reset.scss +0 -165
  370. data/cucumber.yml +0 -3
  371. data/features/action_item.feature +0 -73
  372. data/features/authorization.feature +0 -64
  373. data/features/authorization_cancan.feature +0 -52
  374. data/features/authorization_pundit.feature +0 -37
  375. data/features/belongs_to.feature +0 -66
  376. data/features/breadcrumb.feature +0 -75
  377. data/features/comments/commenting.feature +0 -171
  378. data/features/comments/viewing_index.feature +0 -19
  379. data/features/dashboard.feature +0 -16
  380. data/features/decorators.feature +0 -41
  381. data/features/development_reloading.feature +0 -30
  382. data/features/edit_page.feature +0 -117
  383. data/features/favicon.feature +0 -20
  384. data/features/first_boot.feature +0 -16
  385. data/features/global_navigation.feature +0 -29
  386. data/features/i18n.feature +0 -43
  387. data/features/index/batch_actions.feature +0 -164
  388. data/features/index/filters.feature +0 -161
  389. data/features/index/format_as_csv.feature +0 -203
  390. data/features/index/formats.feature +0 -66
  391. data/features/index/index_as_block.feature +0 -15
  392. data/features/index/index_as_blog.feature +0 -69
  393. data/features/index/index_as_grid.feature +0 -45
  394. data/features/index/index_as_table.feature +0 -291
  395. data/features/index/index_blank_slate.feature +0 -83
  396. data/features/index/index_parameters.feature +0 -75
  397. data/features/index/index_scope_to.feature +0 -56
  398. data/features/index/index_scopes.feature +0 -251
  399. data/features/index/page_title.feature +0 -41
  400. data/features/index/pagination.feature +0 -59
  401. data/features/index/switch_index_view.feature +0 -73
  402. data/features/menu.feature +0 -53
  403. data/features/new_page.feature +0 -109
  404. data/features/registering_assets.feature +0 -35
  405. data/features/registering_pages.feature +0 -148
  406. data/features/registering_resources.feature +0 -33
  407. data/features/renamed_resource.feature +0 -32
  408. data/features/root_to.feature +0 -17
  409. data/features/show/default_content.feature +0 -43
  410. data/features/show/page_title.feature +0 -58
  411. data/features/show/tabs.feature +0 -27
  412. data/features/sidebar_sections.feature +0 -210
  413. data/features/site_title.feature +0 -47
  414. data/features/specifying_actions.feature +0 -93
  415. data/features/step_definitions/action_item_steps.rb +0 -7
  416. data/features/step_definitions/action_link_steps.rb +0 -20
  417. data/features/step_definitions/additional_web_steps.rb +0 -81
  418. data/features/step_definitions/asset_steps.rb +0 -15
  419. data/features/step_definitions/attribute_steps.rb +0 -18
  420. data/features/step_definitions/batch_action_steps.rb +0 -72
  421. data/features/step_definitions/blog_steps.rb +0 -3
  422. data/features/step_definitions/breadcrumb_steps.rb +0 -3
  423. data/features/step_definitions/comment_steps.rb +0 -12
  424. data/features/step_definitions/configuration_steps.rb +0 -100
  425. data/features/step_definitions/dashboard_steps.rb +0 -15
  426. data/features/step_definitions/factory_steps.rb +0 -34
  427. data/features/step_definitions/filter_steps.rb +0 -39
  428. data/features/step_definitions/flash_steps.rb +0 -11
  429. data/features/step_definitions/format_steps.rb +0 -52
  430. data/features/step_definitions/i18n_steps.rb +0 -3
  431. data/features/step_definitions/index_scope_steps.rb +0 -21
  432. data/features/step_definitions/index_views_steps.rb +0 -3
  433. data/features/step_definitions/layout_steps.rb +0 -3
  434. data/features/step_definitions/member_link_steps.rb +0 -7
  435. data/features/step_definitions/menu_steps.rb +0 -11
  436. data/features/step_definitions/pagination_steps.rb +0 -7
  437. data/features/step_definitions/sidebar_steps.rb +0 -13
  438. data/features/step_definitions/site_title_steps.rb +0 -17
  439. data/features/step_definitions/symbol_leak_steps.rb +0 -3
  440. data/features/step_definitions/tab_steps.rb +0 -8
  441. data/features/step_definitions/table_steps.rb +0 -119
  442. data/features/step_definitions/user_steps.rb +0 -45
  443. data/features/step_definitions/web_steps.rb +0 -85
  444. data/features/sti_resource.feature +0 -65
  445. data/features/strong_parameters.feature +0 -73
  446. data/features/support/env.rb +0 -145
  447. data/features/support/paths.rb +0 -71
  448. data/features/support/selectors.rb +0 -45
  449. data/features/symbol_leak.feature +0 -35
  450. data/features/users/logging_in.feature +0 -34
  451. data/features/users/logging_out.feature +0 -13
  452. data/features/users/resetting_password.feature +0 -34
  453. data/lib/active_admin/batch_actions/views/batch_action_popover.rb +0 -28
  454. data/lib/active_admin/event.rb +0 -33
  455. data/lib/active_admin/helpers/settings.rb +0 -115
  456. data/lib/active_admin/iconic/icons.rb +0 -142
  457. data/lib/active_admin/iconic.rb +0 -53
  458. data/lib/active_admin/view_helpers/icon_helper.rb +0 -12
  459. data/lib/active_admin/views/components/action_list_popover.rb +0 -29
  460. data/lib/active_admin/views/components/popover.rb +0 -27
  461. data/lib/generators/active_admin/assets/templates/active_admin.js.coffee +0 -1
  462. data/lib/generators/active_admin/resource/templates/admin.rb +0 -18
  463. data/script/local +0 -44
  464. data/script/travis_cache +0 -107
  465. data/script/use_rails +0 -53
  466. data/spec/javascripts/coffeescripts/jquery.aa.checkbox-toggler-spec.js.coffee +0 -50
  467. data/spec/javascripts/coffeescripts/jquery.aa.flash.js.coffee +0 -25
  468. data/spec/javascripts/coffeescripts/jquery.aa.popover-spec.js.coffee +0 -82
  469. data/spec/javascripts/coffeescripts/jquery.aa.table-checkbox-toggler-spec.js.coffee +0 -34
  470. data/spec/javascripts/fixtures/checkboxes.html +0 -9
  471. data/spec/javascripts/fixtures/flashes.html +0 -2
  472. data/spec/javascripts/fixtures/table_checkboxes.html +0 -17
  473. data/spec/javascripts/helpers/SpecHelper.js +0 -3
  474. data/spec/javascripts/support/jasmine.yml +0 -74
  475. data/spec/javascripts/support/jasmine_config.rb +0 -23
  476. data/spec/javascripts/support/jasmine_runner.rb +0 -32
  477. data/spec/rails_helper.rb +0 -154
  478. data/spec/requests/default_namespace_spec.rb +0 -61
  479. data/spec/requests/javascript_spec.rb +0 -20
  480. data/spec/requests/memory_spec.rb +0 -23
  481. data/spec/requests/stylesheets_spec.rb +0 -18
  482. data/spec/spec_helper.rb +0 -17
  483. data/spec/support/deferred_garbage_collection.rb +0 -19
  484. data/spec/support/detect_rails_version.rb +0 -34
  485. data/spec/support/integration_example_group.rb +0 -31
  486. data/spec/support/jslint.yml +0 -80
  487. data/spec/support/rails_template.rb +0 -138
  488. data/spec/support/rails_template_with_data.rb +0 -59
  489. data/spec/support/templates/admin/stores.rb +0 -9
  490. data/spec/support/templates/cucumber.rb +0 -24
  491. data/spec/support/templates/cucumber_with_reloading.rb +0 -5
  492. data/spec/support/templates/en.yml +0 -8
  493. data/spec/support/templates/policies/active_admin/comment_policy.rb +0 -9
  494. data/spec/support/templates/policies/active_admin/page_policy.rb +0 -18
  495. data/spec/support/templates/policies/admin_user_policy.rb +0 -11
  496. data/spec/support/templates/policies/application_policy.rb +0 -45
  497. data/spec/support/templates/policies/category_policy.rb +0 -7
  498. data/spec/support/templates/policies/post_policy.rb +0 -15
  499. data/spec/support/templates/policies/store_policy.rb +0 -11
  500. data/spec/support/templates/policies/user_policy.rb +0 -11
  501. data/spec/support/templates/post_decorator.rb +0 -11
  502. data/spec/unit/abstract_view_factory_spec.rb +0 -79
  503. data/spec/unit/action_builder_spec.rb +0 -132
  504. data/spec/unit/active_admin_spec.rb +0 -11
  505. data/spec/unit/application_spec.rb +0 -140
  506. data/spec/unit/asset_registration_spec.rb +0 -52
  507. data/spec/unit/authorization/authorization_adapter_spec.rb +0 -61
  508. data/spec/unit/authorization/controller_authorization_spec.rb +0 -39
  509. data/spec/unit/authorization/index_overriding_spec.rb +0 -22
  510. data/spec/unit/auto_link_spec.rb +0 -69
  511. data/spec/unit/batch_actions/resource_spec.rb +0 -92
  512. data/spec/unit/batch_actions/settings_spec.rb +0 -61
  513. data/spec/unit/belongs_to_spec.rb +0 -51
  514. data/spec/unit/cancan_adapter_spec.rb +0 -43
  515. data/spec/unit/comments_spec.rb +0 -166
  516. data/spec/unit/component_spec.rb +0 -18
  517. data/spec/unit/config_shared_examples.rb +0 -59
  518. data/spec/unit/controller_filters_spec.rb +0 -44
  519. data/spec/unit/csv_builder_spec.rb +0 -244
  520. data/spec/unit/dependency_spec.rb +0 -135
  521. data/spec/unit/devise_spec.rb +0 -96
  522. data/spec/unit/dsl_spec.rb +0 -122
  523. data/spec/unit/event_spec.rb +0 -47
  524. data/spec/unit/filters/filter_form_builder_spec.rb +0 -433
  525. data/spec/unit/filters/resource_spec.rb +0 -121
  526. data/spec/unit/form_builder_spec.rb +0 -752
  527. data/spec/unit/generators/install_spec.rb +0 -23
  528. data/spec/unit/helpers/collection_spec.rb +0 -65
  529. data/spec/unit/helpers/scope_chain_spec.rb +0 -36
  530. data/spec/unit/helpers/settings_spec.rb +0 -30
  531. data/spec/unit/i18n_spec.rb +0 -12
  532. data/spec/unit/menu_collection_spec.rb +0 -62
  533. data/spec/unit/menu_item_spec.rb +0 -143
  534. data/spec/unit/menu_spec.rb +0 -71
  535. data/spec/unit/namespace/authorization_spec.rb +0 -27
  536. data/spec/unit/namespace/register_page_spec.rb +0 -74
  537. data/spec/unit/namespace/register_resource_spec.rb +0 -161
  538. data/spec/unit/namespace_spec.rb +0 -103
  539. data/spec/unit/order_clause_spec.rb +0 -81
  540. data/spec/unit/page_controller_spec.rb +0 -5
  541. data/spec/unit/page_spec.rb +0 -78
  542. data/spec/unit/pretty_format_spec.rb +0 -63
  543. data/spec/unit/pundit_adapter_spec.rb +0 -98
  544. data/spec/unit/resource/action_items_spec.rb +0 -65
  545. data/spec/unit/resource/includes_spec.rb +0 -21
  546. data/spec/unit/resource/menu_spec.rb +0 -18
  547. data/spec/unit/resource/naming_spec.rb +0 -122
  548. data/spec/unit/resource/page_presenters_spec.rb +0 -44
  549. data/spec/unit/resource/pagination_spec.rb +0 -38
  550. data/spec/unit/resource/routes_spec.rb +0 -73
  551. data/spec/unit/resource/scopes_spec.rb +0 -50
  552. data/spec/unit/resource/sidebars_spec.rb +0 -43
  553. data/spec/unit/resource_collection_spec.rb +0 -158
  554. data/spec/unit/resource_controller/data_access_spec.rb +0 -140
  555. data/spec/unit/resource_controller/decorators_spec.rb +0 -83
  556. data/spec/unit/resource_controller/sidebars_spec.rb +0 -45
  557. data/spec/unit/resource_controller_spec.rb +0 -269
  558. data/spec/unit/resource_registration_spec.rb +0 -56
  559. data/spec/unit/resource_spec.rb +0 -278
  560. data/spec/unit/routing_spec.rb +0 -180
  561. data/spec/unit/scope_spec.rb +0 -190
  562. data/spec/unit/settings_spec.rb +0 -118
  563. data/spec/unit/view_factory_spec.rb +0 -21
  564. data/spec/unit/view_helpers/breadcrumbs_spec.rb +0 -217
  565. data/spec/unit/view_helpers/display_name_spec.rb +0 -69
  566. data/spec/unit/view_helpers/download_format_links_helper_spec.rb +0 -39
  567. data/spec/unit/view_helpers/fields_for_spec.rb +0 -50
  568. data/spec/unit/view_helpers/flash_helper_spec.rb +0 -25
  569. data/spec/unit/view_helpers/form_helper_spec.rb +0 -43
  570. data/spec/unit/view_helpers/method_or_proc_helper_spec.rb +0 -139
  571. data/spec/unit/views/components/action_list_popover_spec.rb +0 -40
  572. data/spec/unit/views/components/attributes_table_spec.rb +0 -272
  573. data/spec/unit/views/components/batch_action_popover_spec.rb +0 -47
  574. data/spec/unit/views/components/blank_slate_spec.rb +0 -27
  575. data/spec/unit/views/components/columns_spec.rb +0 -172
  576. data/spec/unit/views/components/index_list_spec.rb +0 -35
  577. data/spec/unit/views/components/index_table_for_spec.rb +0 -46
  578. data/spec/unit/views/components/paginated_collection_spec.rb +0 -236
  579. data/spec/unit/views/components/panel_spec.rb +0 -62
  580. data/spec/unit/views/components/popover_spec.rb +0 -33
  581. data/spec/unit/views/components/sidebar_section_spec.rb +0 -47
  582. data/spec/unit/views/components/site_title_spec.rb +0 -78
  583. data/spec/unit/views/components/status_tag_spec.rb +0 -235
  584. data/spec/unit/views/components/table_for_spec.rb +0 -384
  585. data/spec/unit/views/components/tabs_spec.rb +0 -39
  586. data/spec/unit/views/components/unsupported_browser_spec.rb +0 -47
  587. data/spec/unit/views/pages/form_spec.rb +0 -42
  588. data/spec/unit/views/pages/index_spec.rb +0 -60
  589. data/spec/unit/views/pages/layout_spec.rb +0 -59
  590. data/spec/unit/views/pages/show_spec.rb +0 -33
  591. data/spec/unit/views/tabbed_navigation_spec.rb +0 -158
  592. data/tasks/docs.rake +0 -37
  593. data/tasks/parallel_tests.rake +0 -66
  594. data/tasks/test.rake +0 -83
  595. data/tasks/yard.rake +0 -9
@@ -27,6 +27,7 @@ module ActiveAdmin
27
27
  def [](id)
28
28
  @children[normalize_id(id)]
29
29
  end
30
+
30
31
  def []=(id, child)
31
32
  @children[normalize_id(id)] = child
32
33
  end
@@ -46,11 +47,14 @@ module ActiveAdmin
46
47
  # menu.add parent: 'Dashboard', label: 'My Child Dashboard'
47
48
  #
48
49
  def add(options)
49
- item = if parent = options.delete(:parent)
50
- (self[parent] || add(label: parent)).add options
51
- else
52
- _add options.merge parent: self
53
- end
50
+ parent_chain = Array.wrap(options.delete(:parent))
51
+
52
+ item = if parent = parent_chain.shift
53
+ options[:parent] = parent_chain if parent_chain.any?
54
+ (self[parent] || add(label: parent)).add options
55
+ else
56
+ _add options.merge parent: self
57
+ end
54
58
 
55
59
  yield(item) if block_given?
56
60
 
@@ -59,7 +63,7 @@ module ActiveAdmin
59
63
 
60
64
  # Whether any children match the given item.
61
65
  def include?(item)
62
- @children.values.include? item
66
+ @children.values.include?(item) || @children.values.any? { |child| child.include?(item) }
63
67
  end
64
68
 
65
69
  # Used in the UI to visually distinguish which menu item is selected.
@@ -67,14 +71,8 @@ module ActiveAdmin
67
71
  self == item || include?(item)
68
72
  end
69
73
 
70
- # Returns sorted array of menu items that should be displayed in this context.
71
- # Sorts by priority first, then alphabetically by label if needed.
72
- def items(context = nil)
73
- @children.values.select{ |i| i.display?(context) }.sort do |a,b|
74
- result = a.priority <=> b.priority
75
- result = a.label(context) <=> b.label(context) if result == 0
76
- result
77
- end
74
+ def items
75
+ @children.values
78
76
  end
79
77
 
80
78
  attr_reader :children
@@ -92,7 +90,7 @@ module ActiveAdmin
92
90
  def normalize_id(id)
93
91
  case id
94
92
  when String, Symbol, ActiveModel::Name
95
- id.to_s.downcase.tr ' ', '_'
93
+ id.to_s.downcase.tr " ", "_"
96
94
  when ActiveAdmin::Resource::Name
97
95
  id.param_key
98
96
  else
@@ -86,8 +86,6 @@ module ActiveAdmin
86
86
  @menus[menu_name] ||= ActiveAdmin::Menu.new
87
87
  end
88
88
 
89
-
90
-
91
89
  end
92
90
 
93
91
  end
@@ -1,9 +1,6 @@
1
- require 'active_admin/view_helpers/method_or_proc_helper'
2
-
3
1
  module ActiveAdmin
4
2
  class MenuItem
5
3
  include Menu::MenuNode
6
- include MethodOrProcHelper
7
4
 
8
5
  attr_reader :html_options, :parent, :priority
9
6
 
@@ -48,13 +45,13 @@ module ActiveAdmin
48
45
  #
49
46
  def initialize(options = {})
50
47
  super() # MenuNode
51
- @label = options[:label]
52
- @dirty_id = options[:id] || options[:label]
53
- @url = options[:url] || '#'
54
- @priority = options[:priority] || 10
55
- @html_options = options[:html_options] || {}
56
- @should_display = options[:if] || proc{true}
57
- @parent = options[:parent]
48
+ @label = options[:label]
49
+ @dirty_id = options[:id] || options[:label]
50
+ @url = options[:url] || "#"
51
+ @priority = options[:priority] || 10
52
+ @html_options = options[:html_options] || {}
53
+ @should_display = options[:if] || proc { true }
54
+ @parent = options[:parent]
58
55
 
59
56
  yield(self) if block_given? # Builder style syntax
60
57
  end
@@ -63,35 +60,10 @@ module ActiveAdmin
63
60
  @id ||= normalize_id @dirty_id
64
61
  end
65
62
 
66
- def label(context = nil)
67
- render_in_context context, @label
68
- end
69
-
70
- def url(context = nil)
71
- render_in_context context, @url
72
- end
63
+ attr_reader :label
64
+ attr_reader :url
73
65
 
74
66
  # Don't display if the :if option passed says so
75
- # Don't display if the link isn't real, we have children, and none of the children are being displayed.
76
- def display?(context = nil)
77
- return false unless render_in_context(context, @should_display)
78
- return false if !real_url?(context) && @children.any? && !items(context).any?
79
- true
80
- end
81
-
82
- # Returns an array of the ancestory of this menu item.
83
- # The first item is the immediate parent of the item.
84
- def ancestors
85
- parent ? [parent, parent.ancestors].flatten : []
86
- end
87
-
88
- private
89
-
90
- # URL is not nil, empty, or '#'
91
- def real_url?(context = nil)
92
- url = url context
93
- url.present? && url != '#'
94
- end
95
-
67
+ attr_reader :should_display
96
68
  end
97
69
  end
@@ -1,4 +1,4 @@
1
- require 'active_admin/resource_collection'
1
+ require "active_admin/resource_collection"
2
2
 
3
3
  module ActiveAdmin
4
4
 
@@ -25,18 +25,40 @@ module ActiveAdmin
25
25
  # resource will be accessible from "/posts" and the controller will be PostsController.
26
26
  #
27
27
  class Namespace
28
- RegisterEvent = 'active_admin.namespace.register'.freeze
28
+ class << self
29
+ def setting(name, default)
30
+ Deprecation.warn "This method does not do anything and will be removed."
31
+ end
32
+ end
29
33
 
30
- attr_reader :application, :resources, :name, :menus
34
+ RegisterEvent = "active_admin.namespace.register".freeze
35
+
36
+ attr_reader :application, :resources, :menus
31
37
 
32
38
  def initialize(application, name)
33
39
  @application = application
34
- @name = name.to_s.underscore.to_sym
40
+ @name = name.to_s.underscore
35
41
  @resources = ResourceCollection.new
36
42
  register_module unless root?
37
43
  build_menu_collection
38
44
  end
39
45
 
46
+ def name
47
+ @name.to_sym
48
+ end
49
+
50
+ def settings
51
+ @settings ||= SettingsNode.build(application.namespace_settings)
52
+ end
53
+
54
+ def respond_to_missing?(method, include_private = false)
55
+ settings.respond_to?(method) || super
56
+ end
57
+
58
+ def method_missing(method, *args)
59
+ settings.respond_to?(method) ? settings.send(method, *args) : super
60
+ end
61
+
40
62
  # Register a resource into this namespace. The preffered method to access this is to
41
63
  # use the global registration ActiveAdmin.register which delegates to the proper
42
64
  # namespace instance.
@@ -45,11 +67,11 @@ module ActiveAdmin
45
67
 
46
68
  # Register the resource
47
69
  register_resource_controller(config)
48
- parse_registration_block(config, resource_class, &block) if block_given?
70
+ parse_registration_block(config, &block) if block_given?
49
71
  reset_menu!
50
72
 
51
73
  # Dispatch a registration event
52
- ActiveAdmin::Event.dispatch ActiveAdmin::Resource::RegisterEvent, config
74
+ ActiveSupport::Notifications.publish ActiveAdmin::Resource::RegisterEvent, config
53
75
 
54
76
  # Return the config
55
77
  config
@@ -78,8 +100,11 @@ module ActiveAdmin
78
100
  # Namespace.new(:root).module_name # => nil
79
101
  #
80
102
  def module_name
81
- return nil if root?
82
- @module_name ||= name.to_s.camelize
103
+ root? ? nil : @name.camelize
104
+ end
105
+
106
+ def route_prefix
107
+ root? ? nil : @name
83
108
  end
84
109
 
85
110
  # Unload all the registered resources for this namespace
@@ -93,12 +118,6 @@ module ActiveAdmin
93
118
  resources[klass]
94
119
  end
95
120
 
96
- # Override from ActiveAdmin::Settings to inherit default attributes
97
- # from the application
98
- def read_default_setting(name)
99
- application.public_send name
100
- end
101
-
102
121
  def fetch_menu(name)
103
122
  @menus.fetch(name)
104
123
  end
@@ -110,13 +129,13 @@ module ActiveAdmin
110
129
  # Add a callback to be ran when we build the menu
111
130
  #
112
131
  # @param [Symbol] name The name of the menu. Default: :default
113
- # @param [Proc] block The block to be ran when the menu is built
132
+ # @yield [ActiveAdmin::Menu] The block to be ran when the menu is built
114
133
  #
115
134
  # @return [void]
116
- def build_menu(name = DEFAULT_MENU, &block)
135
+ def build_menu(name = DEFAULT_MENU)
117
136
  @menus.before_build do |menus|
118
137
  menus.menu name do |menu|
119
- block.call(menu)
138
+ yield menu
120
139
  end
121
140
  end
122
141
  end
@@ -130,10 +149,10 @@ module ActiveAdmin
130
149
  def add_logout_button_to_menu(menu, priority = 20, html_options = {})
131
150
  if logout_link_path
132
151
  html_options = html_options.reverse_merge(method: logout_link_method || :get)
133
- menu.add id: 'logout', priority: priority, html_options: html_options,
134
- label: ->{ I18n.t 'active_admin.logout' },
135
- url: ->{ render_or_call_method_or_proc_on self, active_admin_namespace.logout_link_path },
136
- if: :current_active_admin_user?
152
+ menu.add id: "logout", priority: priority, html_options: html_options,
153
+ label: -> { I18n.t "active_admin.logout" },
154
+ url: -> { render_or_call_method_or_proc_on self, active_admin_namespace.logout_link_path },
155
+ if: :current_active_admin_user?
137
156
  end
138
157
  end
139
158
 
@@ -145,10 +164,10 @@ module ActiveAdmin
145
164
  #
146
165
  def add_current_user_to_menu(menu, priority = 10, html_options = {})
147
166
  if current_user_method
148
- menu.add id: 'current_user', priority: priority, html_options: html_options,
149
- label: -> { display_name current_active_admin_user },
150
- url: -> { auto_url_for(current_active_admin_user) },
151
- if: :current_active_admin_user?
167
+ menu.add id: "current_user", priority: priority, html_options: html_options,
168
+ label: -> { display_name current_active_admin_user },
169
+ url: -> { auto_url_for(current_active_admin_user) },
170
+ if: :current_active_admin_user?
152
171
  end
153
172
  end
154
173
 
@@ -157,7 +176,7 @@ module ActiveAdmin
157
176
  def build_menu_collection
158
177
  @menus = MenuCollection.new
159
178
 
160
- @menus.on_build do |menus|
179
+ @menus.on_build do
161
180
  build_default_utility_nav
162
181
 
163
182
  resources.each do |resource|
@@ -192,9 +211,9 @@ module ActiveAdmin
192
211
 
193
212
  def unload_resources!
194
213
  resources.each do |resource|
195
- parent = (module_name || 'Object').constantize
196
- name = resource.controller_name.split('::').last
197
- parent.send(:remove_const, name) if parent.const_defined? name
214
+ parent = (module_name || "Object").constantize
215
+ name = resource.controller_name.split("::").last
216
+ parent.send(:remove_const, name) if parent.const_defined?(name, false)
198
217
 
199
218
  # Remove circular references
200
219
  resource.controller.active_admin_config = nil
@@ -212,14 +231,14 @@ module ActiveAdmin
212
231
  end
213
232
  end
214
233
 
215
- # TODO replace `eval` with `Class.new`
234
+ # TODO: replace `eval` with `Class.new`
216
235
  def register_resource_controller(config)
217
236
  eval "class ::#{config.controller_name} < ActiveAdmin::ResourceController; end"
218
237
  config.controller.active_admin_config = config
219
238
  end
220
239
 
221
- def parse_registration_block(config, resource_class, &block)
222
- config.dsl = ResourceDSL.new(config, resource_class)
240
+ def parse_registration_block(config, &block)
241
+ config.dsl = ResourceDSL.new(config)
223
242
  config.dsl.run_registration_block(&block)
224
243
  end
225
244
 
@@ -0,0 +1,126 @@
1
+ require "active_admin/dynamic_settings_node"
2
+
3
+ module ActiveAdmin
4
+ class NamespaceSettings < DynamicSettingsNode
5
+ # The default number of resources to display on index pages
6
+ register :default_per_page, 30
7
+
8
+ # The max number of resources to display on index pages and batch exports
9
+ register :max_per_page, 10_000
10
+
11
+ # The title which gets displayed in the main layout
12
+ register :site_title, "", :string_symbol_or_proc
13
+
14
+ # Set the site title link href (defaults to AA dashboard)
15
+ register :site_title_link, ""
16
+
17
+ # Set the site title image displayed in the main layout (has precendence over :site_title)
18
+ register :site_title_image, "", :string_symbol_or_proc
19
+
20
+ # Add to the site head
21
+ register :head, "", :string_symbol_or_proc
22
+
23
+ # Set the site footer text (defaults to Powered by ActiveAdmin text with version)
24
+ register :footer, "", :string_symbol_or_proc
25
+
26
+ # Set a favicon
27
+ register :favicon, false
28
+
29
+ # Additional meta tags to place in head of logged in pages
30
+ register :meta_tags, {}
31
+
32
+ # Additional meta tags to place in head of logged out pages
33
+ register :meta_tags_for_logged_out_pages, { robots: "noindex, nofollow" }
34
+
35
+ # The view factory to use to generate all the view classes. Take
36
+ # a look at ActiveAdmin::ViewFactory
37
+ register :view_factory, ActiveAdmin::ViewFactory.new
38
+
39
+ # The method to call in controllers to get the current user
40
+ register :current_user_method, false
41
+
42
+ # The method to call in the controllers to ensure that there
43
+ # is a currently authenticated admin user
44
+ register :authentication_method, false
45
+
46
+ # The path to log user's out with. If set to a symbol, we assume
47
+ # that it's a method to call which returns the path
48
+ register :logout_link_path, :destroy_admin_user_session_path
49
+
50
+ # The method to use when generating the link for user logout
51
+ register :logout_link_method, :get
52
+
53
+ # Whether the batch actions are enabled or not
54
+ register :batch_actions, false
55
+
56
+ # Whether filters are enabled
57
+ register :filters, true
58
+
59
+ # The namespace root
60
+ register :root_to, "dashboard#index"
61
+
62
+ # Options that are passed to root_to
63
+ register :root_to_options, {}
64
+
65
+ # Options passed to the routes, i.e. { path: '/custom' }
66
+ register :route_options, {}
67
+
68
+ # Display breadcrumbs
69
+ register :breadcrumb, true
70
+
71
+ # Display create another checkbox on a new page
72
+ # @return [Boolean] (true)
73
+ register :create_another, false
74
+
75
+ # Default CSV options
76
+ register :csv_options, { col_sep: ",", byte_order_mark: "\xEF\xBB\xBF" }
77
+
78
+ # Default Download Links options
79
+ register :download_links, true
80
+
81
+ # The authorization adapter to use
82
+ register :authorization_adapter, ActiveAdmin::AuthorizationAdapter
83
+
84
+ # A proc to be used when a user is not authorized to view the current resource
85
+ register :on_unauthorized_access, :rescue_active_admin_access_denied
86
+
87
+ # A regex to detect unsupported browser, set to false to disable
88
+ register :unsupported_browser_matcher, /MSIE [1-8]\.0/
89
+
90
+ # Whether to display 'Current Filters' on search screen
91
+ register :current_filters, true
92
+
93
+ # class to handle ordering
94
+ register :order_clause, ActiveAdmin::OrderClause
95
+
96
+ # default show_count for scopes
97
+ register :scopes_show_count, true
98
+
99
+ # Request parameters that are permitted by default
100
+ register :permitted_params, [
101
+ :utf8, :_method, :authenticity_token, :commit, :id
102
+ ]
103
+
104
+ # Set flash message keys that shouldn't show in ActiveAdmin
105
+ register :flash_keys_to_except, ["timedout"]
106
+
107
+ # Include association filters by default
108
+ register :include_default_association_filters, true
109
+
110
+ register :maximum_association_filter_arity, :unlimited
111
+
112
+ register :filter_columns_for_large_association, [
113
+ :display_name,
114
+ :full_name,
115
+ :name,
116
+ :username,
117
+ :login,
118
+ :title,
119
+ :email,
120
+ ]
121
+ register :filter_method_for_large_association, "_starts_with"
122
+
123
+ # Switch between asset pipeline and webpacker assets
124
+ register :use_webpacker, false
125
+ end
126
+ end
@@ -1,13 +1,13 @@
1
1
  module ActiveAdmin
2
2
  class OrderClause
3
- attr_reader :field, :order
3
+ attr_reader :field, :order, :active_admin_config
4
4
 
5
- def initialize(clause)
6
- clause =~ /^([\w\_\.]+)(->'\w+')?_(desc|asc)$/
5
+ def initialize(active_admin_config, clause)
6
+ clause =~ /^([\w\.]+)(->'\w+')?_(desc|asc)$/
7
7
  @column = $1
8
8
  @op = $2
9
9
  @order = $3
10
-
10
+ @active_admin_config = active_admin_config
11
11
  @field = [@column, @op].compact.join
12
12
  end
13
13
 
@@ -15,12 +15,34 @@ module ActiveAdmin
15
15
  @field.present? && @order.present?
16
16
  end
17
17
 
18
- def to_sql(active_admin_config)
19
- table = active_admin_config.resource_column_names.include?(@column) ? active_admin_config.resource_table_name : nil
20
- table_column = (@column =~ /\./) ? @column :
18
+ def apply(chain)
19
+ chain.reorder(Arel.sql sql)
20
+ end
21
+
22
+ def to_sql
23
+ [table_column, @op, " ", @order].compact.join
24
+ end
25
+
26
+ def table
27
+ active_admin_config.resource_column_names.include?(@column) ? active_admin_config.resource_table_name : nil
28
+ end
29
+
30
+ def table_column
31
+ (@column =~ /\./) ? @column :
21
32
  [table, active_admin_config.resource_quoted_column_name(@column)].compact.join(".")
33
+ end
34
+
35
+ def sql
36
+ custom_sql || to_sql
37
+ end
38
+
39
+ protected
22
40
 
23
- [table_column, @op, ' ', @order].compact.join
41
+ def custom_sql
42
+ if active_admin_config.ordering[@column].present?
43
+ active_admin_config.ordering[@column].call(self)
44
+ end
24
45
  end
46
+
25
47
  end
26
48
  end
@@ -1,14 +1,10 @@
1
1
  module ActiveAdmin
2
2
  class Comment < ActiveRecord::Base
3
3
 
4
- self.table_name = 'active_admin_comments'
4
+ self.table_name = "#{table_name_prefix}active_admin_comments#{table_name_suffix}"
5
5
 
6
- belongs_to :resource, polymorphic: true
7
- belongs_to :author, polymorphic: true
8
-
9
- unless Rails::VERSION::MAJOR > 3 && !defined? ProtectedAttributes
10
- attr_accessible :resource, :resource_id, :resource_type, :body, :namespace
11
- end
6
+ belongs_to :resource, polymorphic: true, optional: true
7
+ belongs_to :author, polymorphic: true
12
8
 
13
9
  validates_presence_of :body, :namespace, :resource
14
10
 
@@ -19,21 +15,12 @@ module ActiveAdmin
19
15
  ResourceController::Decorators.undecorate(resource).class.base_class.name.to_s
20
16
  end
21
17
 
22
- # Postgres adapters won't compare strings to numbers (issue 34)
23
- def self.resource_id_cast(record)
24
- resource_id_type == :string ? record.id.to_s : record.id
25
- end
26
-
27
18
  def self.find_for_resource_in_namespace(resource, namespace)
28
19
  where(
29
20
  resource_type: resource_type(resource),
30
- resource_id: resource_id_cast(resource),
31
- namespace: namespace.to_s
32
- ).order('created_at ASC')
33
- end
34
-
35
- def self.resource_id_type
36
- columns.detect{ |i| i.name == "resource_id" }.type
21
+ resource_id: resource.id,
22
+ namespace: namespace.to_s
23
+ ).order(ActiveAdmin.application.namespaces[namespace.to_sym].comments_order)
37
24
  end
38
25
 
39
26
  def set_resource_type
@@ -42,4 +29,3 @@ module ActiveAdmin
42
29
 
43
30
  end
44
31
  end
45
-
@@ -1,5 +1,5 @@
1
- require 'active_admin/views'
2
- require 'active_admin/views/components/panel'
1
+ require "active_admin/views"
2
+ require "active_admin/views/components/panel"
3
3
 
4
4
  module ActiveAdmin
5
5
  module Comments
@@ -11,64 +11,87 @@ module ActiveAdmin
11
11
  attr_accessor :resource
12
12
 
13
13
  def build(resource)
14
- @resource = resource
15
- @comments = ActiveAdmin::Comment.find_for_resource_in_namespace resource, active_admin_namespace.name
16
- super(title, for: resource)
17
- build_comments
14
+ if authorized?(ActiveAdmin::Auth::READ, ActiveAdmin::Comment)
15
+ @resource = resource
16
+ @comments = active_admin_authorization.scope_collection(ActiveAdmin::Comment.find_for_resource_in_namespace(resource, active_admin_namespace.name).includes(:author).page(params[:page]))
17
+ super(title, for: resource)
18
+ build_comments
19
+ end
18
20
  end
19
21
 
20
22
  protected
21
23
 
22
24
  def title
23
- I18n.t 'active_admin.comments.title_content', count: @comments.count
25
+ I18n.t "active_admin.comments.title_content", count: @comments.total_count
24
26
  end
25
27
 
26
28
  def build_comments
27
- @comments.any? ? @comments.each(&method(:build_comment)) : build_empty_message
28
- build_comment_form
29
+ if @comments.any?
30
+ @comments.each(&method(:build_comment))
31
+ div page_entries_info(@comments).html_safe, class: "pagination_information"
32
+ else
33
+ build_empty_message
34
+ end
35
+
36
+ text_node paginate @comments
37
+
38
+ if authorized?(ActiveAdmin::Auth::CREATE, ActiveAdmin::Comment)
39
+ build_comment_form
40
+ end
29
41
  end
30
42
 
31
43
  def build_comment(comment)
32
44
  div for: comment do
33
- div class: 'active_admin_comment_meta' do
34
- h4 class: 'active_admin_comment_author' do
35
- comment.author ? auto_link(comment.author) : I18n.t('active_admin.comments.author_missing')
45
+ div class: "active_admin_comment_meta" do
46
+ h4 class: "active_admin_comment_author" do
47
+ comment.author ? auto_link(comment.author) : I18n.t("active_admin.comments.author_missing")
36
48
  end
37
49
  span pretty_format comment.created_at
50
+ if authorized?(ActiveAdmin::Auth::DESTROY, comment)
51
+ 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
+ end
38
53
  end
39
- div class: 'active_admin_comment_body' do
54
+ div class: "active_admin_comment_body" do
40
55
  simple_format comment.body
41
56
  end
42
57
  end
43
58
  end
44
59
 
45
60
  def build_empty_message
46
- span I18n.t('active_admin.comments.no_comments_yet'), class: 'empty'
61
+ span I18n.t("active_admin.comments.no_comments_yet"), class: "empty"
62
+ end
63
+
64
+ def comments_url(*args)
65
+ parts = []
66
+ parts << active_admin_namespace.name unless active_admin_namespace.root?
67
+ parts << active_admin_namespace.comments_registration_name.underscore
68
+ parts << "path"
69
+ send parts.join("_"), *args
47
70
  end
48
71
 
49
72
  def comment_form_url
50
73
  parts = []
51
74
  parts << active_admin_namespace.name unless active_admin_namespace.root?
52
75
  parts << active_admin_namespace.comments_registration_name.underscore.pluralize
53
- parts << 'path'
54
- send parts.join '_'
76
+ parts << "path"
77
+ send parts.join "_"
55
78
  end
56
79
 
57
80
  def build_comment_form
58
81
  active_admin_form_for(ActiveAdmin::Comment.new, url: comment_form_url) do |f|
59
82
  f.inputs do
60
- f.input :resource_type, as: :hidden, input_html: { value: ActiveAdmin::Comment.resource_type(parent.resource) }
61
- f.input :resource_id, as: :hidden, input_html: { value: parent.resource.id }
62
- f.input :body, label: false, input_html: { size: '80x8' }
83
+ f.input :resource_type, as: :hidden, input_html: { value: ActiveAdmin::Comment.resource_type(parent.resource) }
84
+ f.input :resource_id, as: :hidden, input_html: { value: parent.resource.id }
85
+ f.input :body, label: false, input_html: { size: "80x8" }
63
86
  end
64
87
  f.actions do
65
- f.action :submit, label: I18n.t('active_admin.comments.add')
88
+ f.action :submit, label: I18n.t("active_admin.comments.add")
66
89
  end
67
90
  end
68
91
  end
69
92
 
70
93
  def default_id_for_prefix
71
- 'active_admin_comments_for'
94
+ "active_admin_comments_for"
72
95
  end
73
96
  end
74
97
 
@@ -1,2 +1,2 @@
1
- require 'active_admin/views'
2
- require 'active_admin/orm/active_record/comments/views/active_admin_comments'
1
+ require "active_admin/views"
2
+ require "active_admin/orm/active_record/comments/views/active_admin_comments"