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
@@ -14,7 +14,7 @@ module ActiveAdmin
14
14
  #
15
15
  # To create a two column layout:
16
16
  #
17
- # colums do
17
+ # columns do
18
18
  # column do
19
19
  # span "Column # 1
20
20
  # end
@@ -28,7 +28,7 @@ module ActiveAdmin
28
28
  #
29
29
  # To make a column span multiple, pass the :span option to the column method:
30
30
  #
31
- # colums do
31
+ # columns do
32
32
  # column span: 2 do
33
33
  # span "Column # 1
34
34
  # end
@@ -41,7 +41,7 @@ module ActiveAdmin
41
41
  # the first being 2 time bigger than the second.
42
42
  #
43
43
  #
44
- # == Max and Mix Column Sizes
44
+ # == Max and Min Column Sizes
45
45
  #
46
46
  # Active Admin is a fluid width layout, which means that columns are all defined
47
47
  # using percentages. Sometimes this can cause issues if you don't want a column
@@ -49,7 +49,7 @@ module ActiveAdmin
49
49
  #
50
50
  # To overcome this, columns include a :max_width and :min_width option.
51
51
  #
52
- # colums do
52
+ # columns do
53
53
  # column max_width: "200px", min_width: "100px" do
54
54
  # span "Column # 1
55
55
  # end
@@ -93,19 +93,24 @@ module ActiveAdmin
93
93
  all_margins_width = margin_size * (span_count - 1)
94
94
  column_width = (100.00 - all_margins_width) / span_count
95
95
 
96
- children.each_with_index do |col, i|
96
+ columns.each_with_index do |column, i|
97
97
  is_last_column = i == (columns_count - 1)
98
- col.set_column_styles(column_width, margin_size, is_last_column)
98
+ column.set_column_styles(column_width, margin_size, is_last_column)
99
99
  end
100
100
  end
101
101
 
102
102
  def columns_span_count
103
103
  count = 0
104
- children.each {|column| count += column.span_size }
104
+ columns.each do |column|
105
+ count += column.span_size
106
+ end
105
107
 
106
108
  count
107
109
  end
108
110
 
111
+ def columns
112
+ children.select { |child| child.is_a?(Column) }
113
+ end
109
114
  end
110
115
 
111
116
  class Column < ActiveAdmin::Component
@@ -1,5 +1,3 @@
1
- require 'active_admin/views/components/popover'
2
-
3
1
  module ActiveAdmin
4
2
  module Views
5
3
 
@@ -9,7 +7,7 @@ module ActiveAdmin
9
7
  #
10
8
  # dropdown_menu "Administration" do
11
9
  # item "Edit Details", edit_details_path
12
- # item "Edit My Account", edit_my_acccount_path
10
+ # item "Edit My Account", edit_my_account_path
13
11
  # end
14
12
  #
15
13
  # This will create a button with the label "Administration" and
@@ -28,39 +26,39 @@ module ActiveAdmin
28
26
  options = options.dup
29
27
 
30
28
  # Easily set options for the button or menu
31
- button_options = options.delete(:button) || {}
29
+ button_options = options.delete(:button) || {}
32
30
  menu_options = options.delete(:menu) || {}
33
31
 
34
- @button = build_button(name, button_options)
32
+ @button = build_button(name, button_options)
35
33
  @menu = build_menu(menu_options)
36
34
 
37
35
  super(options)
38
36
  end
39
37
 
40
- def item(*args)
38
+ def item(*args, **kwargs)
41
39
  within @menu do
42
- li link_to(*args)
40
+ li link_to(*args, **kwargs)
43
41
  end
44
42
  end
45
43
 
46
44
  private
47
45
 
48
46
  def build_button(name, button_options)
49
- button_options[:class] ||= ''
50
- button_options[:class] << ' dropdown_menu_button'
47
+ button_options[:class] ||= ""
48
+ button_options[:class] << " dropdown_menu_button"
51
49
 
52
- button_options[:href] = '#'
50
+ button_options[:href] = "#"
53
51
 
54
52
  a name, button_options
55
53
  end
56
54
 
57
55
  def build_menu(options)
58
- options[:class] ||= ''
59
- options[:class] << ' dropdown_menu_list'
56
+ options[:class] ||= ""
57
+ options[:class] << " dropdown_menu_list"
60
58
 
61
59
  menu_list = nil
62
60
 
63
- div :class => 'dropdown_menu_list_wrapper' do
61
+ div class: "dropdown_menu_list_wrapper" do
64
62
  menu_list = ul(options)
65
63
  end
66
64
 
@@ -1,4 +1,4 @@
1
- require 'active_admin/helpers/collection'
1
+ require "active_admin/helpers/collection"
2
2
 
3
3
  module ActiveAdmin
4
4
  module Views
@@ -15,7 +15,7 @@ module ActiveAdmin
15
15
  end
16
16
 
17
17
  def tag_name
18
- 'ul'
18
+ "ul"
19
19
  end
20
20
 
21
21
  # Builds the links for presenting different index views to the user
@@ -36,7 +36,10 @@ module ActiveAdmin
36
36
  # @param [Class] index_class The class on which to build the link and html classes
37
37
  def build_index_list(index_class)
38
38
  li class: classes_for_index(index_class) do
39
- a href: url_for(params.merge(as: index_class.index_name.to_sym)), class: "table_tools_button" do
39
+ params = request.query_parameters.except :page, :commit, :format
40
+ url_with_params = url_for(**params.merge(as: index_class.index_name.to_sym).symbolize_keys)
41
+
42
+ a href: url_with_params, class: "table_tools_button" do
40
43
  name = index_class.index_name
41
44
  I18n.t("active_admin.index_list.#{name}", default: name.to_s.titleize)
42
45
  end
@@ -64,5 +67,3 @@ module ActiveAdmin
64
67
  end
65
68
  end
66
69
  end
67
-
68
-
@@ -0,0 +1,32 @@
1
+ module ActiveAdmin
2
+ module Views
3
+
4
+ # Renders an ActiveAdmin::Menu as a set of unordered list items.
5
+ #
6
+ # This component takes cares of deciding which items should be
7
+ # displayed given the current context and renders them appropriately.
8
+ #
9
+ # The entire component is rendered within one ul element.
10
+ class Menu < Component
11
+ attr_reader :menu
12
+ builder_method :menu
13
+
14
+ # @param [ActiveAdmin::Menu] menu the Menu to render
15
+ # @param [Hash] options the options as passed to the underlying ul element.
16
+ #
17
+ def build(menu, options = {})
18
+ @menu = menu
19
+ super(options)
20
+
21
+ menu.items.each do |item|
22
+ menu_item(item) if helpers.render_in_context self, item.should_display
23
+ end
24
+ children.sort!
25
+ end
26
+
27
+ def tag_name
28
+ "ul"
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,58 @@
1
+ module ActiveAdmin
2
+ module Views
3
+
4
+ # Arbre component used to render ActiveAdmin::MenuItem
5
+ class MenuItem < Component
6
+ builder_method :menu_item
7
+ attr_reader :label
8
+ attr_reader :url
9
+ attr_reader :priority
10
+
11
+ def build(item, options = {})
12
+ super(options.merge(id: item.id))
13
+ @label = helpers.render_in_context self, item.label
14
+ @url = helpers.render_in_context self, item.url
15
+ @priority = item.priority
16
+ @submenu = nil
17
+
18
+ add_class "current" if item.current? assigns[:current_tab]
19
+
20
+ if url
21
+ text_node link_to label, url, **item.html_options
22
+ else
23
+ span label, item.html_options
24
+ end
25
+
26
+ if item.items.any?
27
+ add_class "has_nested"
28
+ @submenu = menu(item)
29
+ end
30
+ end
31
+
32
+ def tag_name
33
+ "li"
34
+ end
35
+
36
+ # Sorts by priority first, then alphabetically by label if needed.
37
+ def <=>(other)
38
+ result = priority <=> other.priority
39
+ result == 0 ? label <=> other.label : result
40
+ end
41
+
42
+ def visible?
43
+ url.nil? || real_url? || @submenu && @submenu.children.any?
44
+ end
45
+
46
+ def to_s
47
+ visible? ? super : ""
48
+ end
49
+
50
+ private
51
+
52
+ # URL is not nil, empty, or '#'
53
+ def real_url?
54
+ url && url.present? && url != "#"
55
+ end
56
+ end
57
+ end
58
+ end
@@ -1,4 +1,5 @@
1
- require 'active_admin/helpers/collection'
1
+ require "active_admin/helpers/collection"
2
+ require "active_admin/view_helpers/download_format_links_helper"
2
3
 
3
4
  module ActiveAdmin
4
5
  module Views
@@ -32,17 +33,19 @@ module ActiveAdmin
32
33
  # collection => A paginated collection from kaminari
33
34
  # options => These options will be passed to `page_entries_info`
34
35
  # entry_name => The name to display for this resource collection
36
+ # params => Extra parameters for pagination (e.g. { anchor: 'details' })
35
37
  # param_name => Parameter name for page number in the links (:page by default)
36
38
  # download_links => Download links override (false or [:csv, :pdf])
37
39
  #
38
40
  def build(collection, options = {})
39
- @collection = collection
40
- @param_name = options.delete(:param_name)
41
+ @collection = collection
42
+ @params = options.delete(:params)
43
+ @param_name = options.delete(:param_name)
41
44
  @download_links = options.delete(:download_links)
42
- @display_total = options.delete(:pagination_total) { true }
43
- @per_page = options.delete(:per_page)
45
+ @display_total = options.delete(:pagination_total) { true }
46
+ @per_page = options.delete(:per_page)
44
47
 
45
- unless collection.respond_to?(:num_pages)
48
+ unless collection.respond_to?(:total_pages)
46
49
  raise(StandardError, "Collection is not a paginated scope. Set collection.page(params[:page]).per(10) before calling :paginated_collection.")
47
50
  end
48
51
 
@@ -68,19 +71,14 @@ module ActiveAdmin
68
71
  build_pagination
69
72
  div(page_entries_info(options).html_safe, class: "pagination_information")
70
73
 
71
- download_links = @download_links.is_a?(Proc) ? instance_exec(&@download_links) : @download_links
72
-
73
- if download_links.is_a?(Array) && !download_links.empty?
74
- build_download_format_links download_links
75
- else
76
- build_download_format_links unless download_links == false
77
- end
74
+ formats = build_download_formats @download_links
75
+ build_download_format_links formats if formats.any?
78
76
  end
79
77
  end
80
78
 
81
79
  def build_per_page_select
82
80
  div class: "pagination_per_page" do
83
- text_node "Per page:"
81
+ text_node I18n.t("active_admin.pagination.per_page")
84
82
  select do
85
83
  @per_page.each do |per_page|
86
84
  option(
@@ -94,10 +92,22 @@ module ActiveAdmin
94
92
  end
95
93
 
96
94
  def build_pagination
97
- options = {}
95
+ options = { theme: @display_total ? "active_admin" : "active_admin_countless" }
96
+ options[:params] = @params if @params
98
97
  options[:param_name] = @param_name if @param_name
99
98
 
100
- text_node paginate collection, options
99
+ if !@display_total
100
+ # The #paginate method in kaminari will query the resource with a
101
+ # count(*) to determine how many pages there should be unless
102
+ # you pass in the :total_pages option. We issue a query to determine
103
+ # if there is another page or not, but the limit/offset make this
104
+ # query fast.
105
+ offset = collection.offset(collection.current_page * collection.limit_value).limit(1).count
106
+ options[:total_pages] = collection.current_page + offset
107
+ options[:right] = 0
108
+ end
109
+
110
+ text_node paginate collection, **options
101
111
  end
102
112
 
103
113
  include ::ActiveAdmin::Helpers::Collection
@@ -106,33 +116,42 @@ module ActiveAdmin
106
116
  # modified from will_paginate
107
117
  def page_entries_info(options = {})
108
118
  if options[:entry_name]
109
- entry_name = options[:entry_name]
119
+ entry_name = options[:entry_name]
110
120
  entries_name = options[:entries_name] || entry_name.pluralize
111
121
  elsif collection_is_empty?
112
- entry_name = I18n.t "active_admin.pagination.entry", count: 1, default: 'entry'
113
- entries_name = I18n.t "active_admin.pagination.entry", count: 2, default: 'entries'
122
+ entry_name = I18n.t "active_admin.pagination.entry", count: 1, default: "entry"
123
+ entries_name = I18n.t "active_admin.pagination.entry", count: 2, default: "entries"
114
124
  else
115
125
  key = "activerecord.models." + collection.first.class.model_name.i18n_key.to_s
116
- entry_name = I18n.translate key, count: 1, default: collection.first.class.name.underscore.sub('_', ' ')
126
+
127
+ entry_name = I18n.translate key, count: 1, default: collection.first.class.name.underscore.sub("_", " ")
117
128
  entries_name = I18n.translate key, count: collection.size, default: entry_name.pluralize
118
129
  end
119
130
 
120
- if collection.num_pages < 2
121
- case collection_size
122
- when 0; I18n.t('active_admin.pagination.empty', model: entries_name)
123
- when 1; I18n.t('active_admin.pagination.one', model: entry_name)
124
- else; I18n.t('active_admin.pagination.one_page', model: entries_name, n: collection.total_count)
131
+ if @display_total
132
+ if collection.total_pages < 2
133
+ case collection_size
134
+ when 0; I18n.t("active_admin.pagination.empty", model: entries_name)
135
+ when 1; I18n.t("active_admin.pagination.one", model: entry_name)
136
+ else; I18n.t("active_admin.pagination.one_page", model: entries_name, n: collection.total_count)
137
+ end
138
+ else
139
+ offset = (collection.current_page - 1) * collection.limit_value
140
+ total = collection.total_count
141
+ I18n.t "active_admin.pagination.multiple",
142
+ model: entries_name,
143
+ total: total,
144
+ from: offset + 1,
145
+ to: offset + collection_size
125
146
  end
126
147
  else
148
+ # Do not display total count, in order to prevent a `SELECT count(*)`.
149
+ # To do so we must not call `collection.total_pages`
127
150
  offset = (collection.current_page - 1) * collection.limit_value
128
- if @display_total
129
- total = collection.total_count
130
- I18n.t 'active_admin.pagination.multiple', model: entries_name, total: total,
131
- from: offset + 1, to: offset + collection_size
132
- else
133
- I18n.t 'active_admin.pagination.multiple_without_total', model: entries_name,
134
- from: offset + 1, to: offset + collection_size
135
- end
151
+ I18n.t "active_admin.pagination.multiple_without_total",
152
+ model: entries_name,
153
+ from: offset + 1,
154
+ to: offset + collection_size
136
155
  end
137
156
  end
138
157
 
@@ -5,11 +5,9 @@ module ActiveAdmin
5
5
  builder_method :panel
6
6
 
7
7
  def build(title, attributes = {})
8
- icon_name = attributes.delete(:icon)
9
- icn = icon_name ? icon(icon_name) : "".html_safe
10
8
  super(attributes)
11
9
  add_class "panel"
12
- @title = h3(icn + title.to_s)
10
+ @title = h3(title.to_s)
13
11
  @contents = div(class: "panel_contents")
14
12
  end
15
13
 
@@ -31,7 +29,7 @@ module ActiveAdmin
31
29
  def header_action(*args)
32
30
  action = args[0]
33
31
 
34
- @title << div(class: 'header_action') do
32
+ @title << div(class: "header_action") do
35
33
  action
36
34
  end
37
35
  end
@@ -1,5 +1,5 @@
1
- require 'active_admin/helpers/collection'
2
- require 'active_admin/view_helpers/method_or_proc_helper'
1
+ require "active_admin/helpers/collection"
2
+ require "active_admin/view_helpers/method_or_proc_helper"
3
3
 
4
4
  module ActiveAdmin
5
5
  module Views
@@ -12,18 +12,23 @@ module ActiveAdmin
12
12
  include ActiveAdmin::ScopeChain
13
13
  include ::ActiveAdmin::Helpers::Collection
14
14
 
15
-
16
15
  def default_class_name
17
- "scopes table_tools_segmented_control"
16
+ "scopes"
18
17
  end
19
18
 
20
19
  def tag_name
21
- 'ul'
20
+ "div"
22
21
  end
23
22
 
24
23
  def build(scopes, options = {})
25
- scopes.each do |scope|
26
- build_scope(scope, options) if call_method_or_proc_on(self, scope.display_if_block)
24
+ scopes.group_by(&:group).each do |group, group_scopes|
25
+ ul class: "table_tools_segmented_control #{group_class(group)}" do
26
+ group_scopes.each do |scope|
27
+ build_scope(scope, options) if call_method_or_exec_proc(scope.display_if_block)
28
+ end
29
+
30
+ nil
31
+ end
27
32
  end
28
33
  end
29
34
 
@@ -31,12 +36,11 @@ module ActiveAdmin
31
36
 
32
37
  def build_scope(scope, options)
33
38
  li class: classes_for_scope(scope) do
34
- scope_name = I18n.t "active_admin.scopes.#{scope.id}", default: scope.name
35
- params = request.query_parameters.except :page, :scope, :commit, :format
39
+ params = request.query_parameters.except :page, :scope, :commit, :format
36
40
 
37
- a href: url_for(scope: scope.id, params: params), class: 'table_tools_button' do
38
- text_node scope_name
39
- span class: 'count' do
41
+ a href: url_for(scope: scope.id, params: params), class: "table_tools_button" do
42
+ text_node scope_name(scope)
43
+ span class: "count" do
40
44
  "(#{get_scope_count(scope)})"
41
45
  end if options[:scope_count] && scope.show_count
42
46
  end
@@ -61,6 +65,10 @@ module ActiveAdmin
61
65
  def get_scope_count(scope)
62
66
  collection_size(scope_chain(scope, collection_before_scope))
63
67
  end
68
+
69
+ def group_class(group)
70
+ group.present? ? "scope-group-#{group}" : "scope-default-group"
71
+ end
64
72
  end
65
73
  end
66
74
  end
@@ -0,0 +1,13 @@
1
+ module ActiveAdmin
2
+ module Views
3
+
4
+ class Sidebar < Component
5
+ builder_method :sidebar
6
+
7
+ def build(sections, attributes = {})
8
+ super(attributes)
9
+ sections.map(&method(:sidebar_section))
10
+ end
11
+ end
12
+ end
13
+ end
@@ -7,12 +7,17 @@ module ActiveAdmin
7
7
  # Takes a ActiveAdmin::SidebarSection instance
8
8
  def build(section)
9
9
  @section = section
10
- super(@section.title, icon: @section.icon)
10
+ super(@section.title)
11
11
  add_class @section.custom_class if @section.custom_class
12
12
  self.id = @section.id
13
13
  build_sidebar_content
14
14
  end
15
15
 
16
+ # Renders attributes_table_for current resource
17
+ def attributes_table(*args, &block)
18
+ attributes_table_for resource, *args, &block
19
+ end
20
+
16
21
  protected
17
22
 
18
23
  def build_sidebar_content
@@ -4,7 +4,7 @@ module ActiveAdmin
4
4
  class SiteTitle < Component
5
5
 
6
6
  def tag_name
7
- 'h1'
7
+ "h1"
8
8
  end
9
9
 
10
10
  def build(namespace)
@@ -22,8 +22,8 @@ module ActiveAdmin
22
22
  @namespace.site_title_link.present?
23
23
  end
24
24
 
25
- def site_title_image?
26
- @namespace.site_title_image.present?
25
+ def site_title_image
26
+ @site_title_image ||= @namespace.site_title_image(helpers)
27
27
  end
28
28
 
29
29
  private
@@ -33,7 +33,7 @@ module ActiveAdmin
33
33
  end
34
34
 
35
35
  def site_title_content
36
- if site_title_image?
36
+ if site_title_image.present?
37
37
  title_image
38
38
  else
39
39
  title_text
@@ -41,12 +41,11 @@ module ActiveAdmin
41
41
  end
42
42
 
43
43
  def title_text
44
- helpers.render_or_call_method_or_proc_on(self, @namespace.site_title)
44
+ @title_text ||= @namespace.site_title(helpers)
45
45
  end
46
46
 
47
47
  def title_image
48
- path = helpers.render_or_call_method_or_proc_on(self, @namespace.site_title_image)
49
- helpers.image_tag(path, id: "site_title_image", alt: @namespace.site_title)
48
+ helpers.image_tag(site_title_image, id: "site_title_image", alt: title_text)
50
49
  end
51
50
 
52
51
  end
@@ -5,16 +5,15 @@ module ActiveAdmin
5
5
  builder_method :status_tag
6
6
 
7
7
  def tag_name
8
- 'span'
8
+ "span"
9
9
  end
10
10
 
11
11
  def default_class_name
12
- 'status_tag'
12
+ "status_tag"
13
13
  end
14
14
 
15
- # @overload status_tag(status, type = nil, options = {})
15
+ # @overload status_tag(status, options = {})
16
16
  # @param [String] status the status to display. One of the span classes will be an underscored version of the status.
17
- # @param [Symbol] type type of status. Will become a class of the span. ActiveAdmin provide style for :ok, :warning and :error.
18
17
  # @param [Hash] options
19
18
  # @option options [String] :class to override the default class
20
19
  # @option options [String] :id to override the default id
@@ -26,41 +25,36 @@ module ActiveAdmin
26
25
  # # => <span class='status_tag in_progress'>In Progress</span>
27
26
  #
28
27
  # @example
29
- # status_tag('active', :ok)
30
- # # => <span class='status_tag active ok'>Active</span>
28
+ # status_tag('active', class: 'important', id: 'status_123', label: 'on')
29
+ # # => <span class='status_tag active important' id='status_123'>on</span>
31
30
  #
32
- # @example
33
- # status_tag('active', :ok, class: 'important', id: 'status_123', label: 'on')
34
- # # => <span class='status_tag active ok important' id='status_123'>on</span>
35
- #
36
- def build(*args)
37
- options = args.extract_options!
38
- status = args[0]
39
- type = args[1]
31
+ def build(status, options = {})
40
32
  label = options.delete(:label)
41
33
  classes = options.delete(:class)
42
34
  status = convert_to_boolean_status(status)
43
35
 
44
36
  if status
45
37
  content = label || if s = status.to_s and s.present?
46
- I18n.t "active_admin.status_tag.#{s.downcase}", default: s.titleize
47
- end
38
+ I18n.t "active_admin.status_tag.#{s.downcase}", default: s.titleize
39
+ end
48
40
  end
49
41
 
50
42
  super(content, options)
51
43
 
52
44
  add_class(status_to_class(status)) if status
53
- add_class(type.to_s) if type
54
45
  add_class(classes) if classes
55
46
  end
56
47
 
57
48
  protected
58
49
 
59
50
  def convert_to_boolean_status(status)
60
- if status == 'true'
61
- 'Yes'
62
- elsif ['false', nil].include?(status)
63
- 'No'
51
+ case status
52
+ when true, "true"
53
+ "Yes"
54
+ when false, "false"
55
+ "No"
56
+ when nil
57
+ "Unset"
64
58
  else
65
59
  status
66
60
  end
@@ -68,10 +62,12 @@ module ActiveAdmin
68
62
 
69
63
  def status_to_class(status)
70
64
  case status
65
+ when "Unset"
66
+ "unset no"
71
67
  when String, Symbol
72
- status.to_s.titleize.gsub(/\s/, '').underscore
68
+ status.to_s.titleize.gsub(/\s/, "").underscore
73
69
  else
74
- ''
70
+ ""
75
71
  end
76
72
  end
77
73
  end