activeadmin 1.2.1 → 2.13.1

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 (581) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +769 -132
  3. data/CODE_OF_CONDUCT.md +64 -12
  4. data/CONTRIBUTING.md +83 -61
  5. data/README.md +73 -19
  6. data/app/assets/javascripts/active_admin/base.js +524 -0
  7. data/app/assets/stylesheets/active_admin/_base.scss +53 -37
  8. data/app/assets/stylesheets/active_admin/_forms.scss +3 -25
  9. data/app/assets/stylesheets/active_admin/_header.scss +40 -8
  10. data/app/assets/stylesheets/active_admin/_mixins.scss +1 -1
  11. data/{vendor → app}/assets/stylesheets/active_admin/_normalize.scss +25 -123
  12. data/app/assets/stylesheets/active_admin/{print.scss → _print.scss} +2 -2
  13. data/app/assets/stylesheets/active_admin/components/_comments.scss +2 -2
  14. data/app/assets/stylesheets/active_admin/components/_date_picker.scss +1 -2
  15. data/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +0 -1
  16. data/app/assets/stylesheets/active_admin/components/_scopes.scss +3 -0
  17. data/app/assets/stylesheets/active_admin/components/_status_tags.scss +0 -5
  18. data/app/assets/stylesheets/active_admin/components/_tables.scss +1 -2
  19. data/app/assets/stylesheets/active_admin/components/_tabs.scss +1 -1
  20. data/app/assets/stylesheets/active_admin/mixins/_all.scss +8 -8
  21. data/app/assets/stylesheets/active_admin/mixins/_gradients.scss +1 -1
  22. data/app/assets/stylesheets/active_admin/mixins/_variables.scss +17 -0
  23. data/app/assets/stylesheets/active_admin/structure/_main_structure.scss +1 -1
  24. data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +0 -1
  25. data/app/javascript/active_admin/base.js +28 -0
  26. data/app/javascript/active_admin/ext/jquery-ui.js +7 -0
  27. data/app/javascript/active_admin/ext/jquery.js +9 -0
  28. data/app/javascript/active_admin/initializers/batch-actions.js +61 -0
  29. data/app/javascript/active_admin/initializers/checkbox-toggler.js +3 -0
  30. data/app/javascript/active_admin/initializers/datepicker.js +16 -0
  31. data/app/javascript/active_admin/initializers/dropdown-menu.js +9 -0
  32. data/app/javascript/active_admin/initializers/filters.js +10 -0
  33. data/app/javascript/active_admin/initializers/has-many.js +98 -0
  34. data/app/javascript/active_admin/initializers/per-page.js +13 -0
  35. data/app/javascript/active_admin/initializers/table-checkbox-toggler.js +3 -0
  36. data/app/javascript/active_admin/initializers/tabs.js +6 -0
  37. data/app/javascript/active_admin/lib/checkbox-toggler.js +49 -0
  38. data/app/javascript/active_admin/lib/dropdown-menu.js +116 -0
  39. data/app/javascript/active_admin/lib/filters.js +39 -0
  40. data/app/javascript/active_admin/lib/modal-dialog.js +63 -0
  41. data/app/javascript/active_admin/lib/per-page.js +38 -0
  42. data/app/javascript/active_admin/lib/table-checkbox-toggler.js +38 -0
  43. data/app/javascript/active_admin/lib/utils.js +40 -0
  44. data/app/views/active_admin/devise/confirmations/new.html.erb +2 -2
  45. data/app/views/active_admin/devise/mailer/reset_password_instructions.html.erb +1 -1
  46. data/app/views/active_admin/devise/mailer/unlock_instructions.html.erb +2 -2
  47. data/app/views/active_admin/devise/passwords/edit.html.erb +2 -2
  48. data/app/views/active_admin/devise/passwords/new.html.erb +2 -2
  49. data/app/views/active_admin/devise/registrations/new.html.erb +2 -3
  50. data/app/views/active_admin/devise/sessions/new.html.erb +1 -1
  51. data/app/views/active_admin/devise/shared/_error_messages.html.erb +15 -0
  52. data/app/views/active_admin/devise/shared/_links.erb +1 -1
  53. data/app/views/active_admin/devise/unlocks/new.html.erb +2 -2
  54. data/app/views/active_admin/page/index.html.arb +1 -0
  55. data/app/views/active_admin/resource/edit.html.arb +1 -0
  56. data/app/views/active_admin/resource/index.html.arb +1 -0
  57. data/app/views/active_admin/resource/new.html.arb +1 -0
  58. data/app/views/active_admin/resource/show.html.arb +1 -0
  59. data/app/views/kaminari/active_admin_countless/_first_page.html.erb +11 -0
  60. data/app/views/kaminari/active_admin_countless/_gap.html.erb +8 -0
  61. data/app/views/kaminari/active_admin_countless/_next_page.html.erb +11 -0
  62. data/app/views/kaminari/active_admin_countless/_page.html.erb +12 -0
  63. data/app/views/kaminari/active_admin_countless/_paginator.html.erb +24 -0
  64. data/app/views/kaminari/active_admin_countless/_prev_page.html.erb +11 -0
  65. data/app/views/layouts/active_admin.html.arb +1 -0
  66. data/app/views/layouts/active_admin_logged_out.html.erb +17 -7
  67. data/config/locales/ar.yml +9 -8
  68. data/config/locales/az.yml +138 -0
  69. data/config/locales/bg.yml +1 -1
  70. data/config/locales/bs.yml +1 -0
  71. data/config/locales/ca.yml +1 -1
  72. data/config/locales/cs.yml +1 -0
  73. data/config/locales/da.yml +1 -0
  74. data/config/locales/de-CH.yml +1 -0
  75. data/config/locales/de.yml +29 -0
  76. data/config/locales/el.yml +1 -0
  77. data/config/locales/en-CA.yml +4 -3
  78. data/config/locales/en-GB.yml +4 -3
  79. data/config/locales/en.yml +23 -4
  80. data/config/locales/eo.yml +1 -0
  81. data/config/locales/es-MX.yml +3 -1
  82. data/config/locales/es.yml +26 -6
  83. data/config/locales/fa.yml +1 -0
  84. data/config/locales/fi.yml +2 -1
  85. data/config/locales/fr.yml +6 -5
  86. data/config/locales/he.yml +1 -1
  87. data/config/locales/hr.yml +1 -0
  88. data/config/locales/hu.yml +5 -0
  89. data/config/locales/id.yml +1 -0
  90. data/config/locales/it.yml +23 -0
  91. data/config/locales/ja.yml +4 -3
  92. data/config/locales/ko.yml +2 -1
  93. data/config/locales/lt.yml +3 -2
  94. data/config/locales/lv.yml +3 -2
  95. data/config/locales/mk.yml +134 -0
  96. data/config/locales/nb.yml +16 -5
  97. data/config/locales/nl.yml +13 -1
  98. data/config/locales/pl.yml +72 -3
  99. data/config/locales/pt-BR.yml +1 -0
  100. data/config/locales/pt-PT.yml +1 -0
  101. data/config/locales/ro.yml +4 -2
  102. data/config/locales/ru.yml +3 -0
  103. data/config/locales/sk.yml +60 -0
  104. data/config/locales/sv-SE.yml +1 -0
  105. data/config/locales/tr.yml +10 -0
  106. data/config/locales/uk.yml +3 -0
  107. data/config/locales/vi.yml +7 -5
  108. data/config/locales/zh-CN.yml +34 -5
  109. data/config/locales/zh-TW.yml +1 -0
  110. data/docs/.gitignore +1 -0
  111. data/docs/0-installation.md +29 -5
  112. data/docs/1-general-configuration.md +36 -1
  113. data/docs/10-custom-pages.md +14 -0
  114. data/docs/11-decorators.md +16 -5
  115. data/docs/12-arbre-components.md +41 -1
  116. data/docs/13-authorization-adapter.md +41 -22
  117. data/docs/2-resource-customization.md +19 -5
  118. data/docs/3-index-pages/custom-index.md +1 -1
  119. data/docs/3-index-pages/index-as-blog.md +1 -1
  120. data/docs/3-index-pages/index-as-table.md +12 -5
  121. data/docs/3-index-pages.md +18 -1
  122. data/docs/5-forms.md +25 -5
  123. data/docs/6-show-pages.md +12 -0
  124. data/docs/8-custom-actions.md +12 -1
  125. data/docs/9-batch-actions.md +2 -2
  126. data/docs/CNAME +1 -1
  127. data/docs/Gemfile +4 -2
  128. data/docs/Gemfile.lock +283 -0
  129. data/docs/_config.yml +3 -1
  130. data/docs/_includes/toc.html +1 -1
  131. data/docs/_includes/top-menu.html +9 -1
  132. data/docs/documentation.md +2 -2
  133. data/docs/images/tidelift.svg +14 -0
  134. data/docs/index.html +110 -9
  135. data/docs/stylesheets/main.css +55 -2
  136. data/lib/active_admin/abstract_view_factory.rb +14 -51
  137. data/lib/active_admin/application.rb +65 -172
  138. data/lib/active_admin/application_settings.rb +43 -0
  139. data/lib/active_admin/asset_registration.rb +1 -8
  140. data/lib/active_admin/authorization_adapter.rb +4 -3
  141. data/lib/active_admin/base_controller/authorization.rb +18 -18
  142. data/lib/active_admin/base_controller/menu.rb +1 -0
  143. data/lib/active_admin/base_controller.rb +12 -11
  144. data/lib/active_admin/batch_actions/controller.rb +6 -5
  145. data/lib/active_admin/batch_actions/resource_extension.rb +16 -10
  146. data/lib/active_admin/batch_actions/views/batch_action_form.rb +4 -3
  147. data/lib/active_admin/batch_actions/views/batch_action_selector.rb +7 -6
  148. data/lib/active_admin/batch_actions/views/selection_cells.rb +4 -3
  149. data/lib/active_admin/batch_actions.rb +1 -0
  150. data/lib/active_admin/callbacks.rb +2 -1
  151. data/lib/active_admin/cancan_adapter.rb +2 -1
  152. data/lib/active_admin/collection_decorator.rb +32 -0
  153. data/lib/active_admin/component.rb +1 -0
  154. data/lib/active_admin/controller_action.rb +3 -1
  155. data/lib/active_admin/csv_builder.rb +15 -23
  156. data/lib/active_admin/dependency.rb +14 -77
  157. data/lib/active_admin/deprecation.rb +1 -25
  158. data/lib/active_admin/devise.rb +16 -5
  159. data/lib/active_admin/dsl.rb +3 -9
  160. data/lib/active_admin/dynamic_setting.rb +39 -0
  161. data/lib/active_admin/dynamic_settings_node.rb +29 -0
  162. data/lib/active_admin/engine.rb +16 -7
  163. data/lib/active_admin/error.rb +5 -4
  164. data/lib/active_admin/filters/active.rb +2 -1
  165. data/lib/active_admin/filters/active_filter.rb +12 -11
  166. data/lib/active_admin/filters/active_sidebar.rb +8 -30
  167. data/lib/active_admin/filters/dsl.rb +1 -0
  168. data/lib/active_admin/filters/forms.rb +13 -9
  169. data/lib/active_admin/filters/formtastic_addons.rb +3 -7
  170. data/lib/active_admin/filters/resource_extension.rb +30 -5
  171. data/lib/active_admin/filters.rb +8 -7
  172. data/lib/active_admin/form_builder.rb +110 -70
  173. data/lib/active_admin/generators/boilerplate.rb +13 -4
  174. data/lib/active_admin/helpers/collection.rb +2 -0
  175. data/lib/active_admin/helpers/i18n.rb +1 -0
  176. data/lib/active_admin/helpers/optional_display.rb +3 -2
  177. data/lib/active_admin/helpers/routes/url_helpers.rb +1 -0
  178. data/lib/active_admin/helpers/scope_chain.rb +2 -0
  179. data/lib/active_admin/inputs/datepicker_input.rb +10 -2
  180. data/lib/active_admin/inputs/filters/base/search_method_select.rb +7 -6
  181. data/lib/active_admin/inputs/filters/base.rb +2 -1
  182. data/lib/active_admin/inputs/filters/boolean_input.rb +2 -1
  183. data/lib/active_admin/inputs/filters/check_boxes_input.rb +2 -1
  184. data/lib/active_admin/inputs/filters/date_picker_input.rb +1 -0
  185. data/lib/active_admin/inputs/filters/date_range_input.rb +16 -12
  186. data/lib/active_admin/inputs/filters/numeric_input.rb +1 -0
  187. data/lib/active_admin/inputs/filters/select_input.rb +3 -2
  188. data/lib/active_admin/inputs/filters/string_input.rb +1 -0
  189. data/lib/active_admin/inputs/filters/text_input.rb +1 -0
  190. data/lib/active_admin/inputs.rb +1 -0
  191. data/lib/active_admin/localizers/resource_localizer.rb +4 -3
  192. data/lib/active_admin/localizers.rb +2 -1
  193. data/lib/active_admin/menu.rb +9 -11
  194. data/lib/active_admin/menu_collection.rb +1 -0
  195. data/lib/active_admin/menu_item.rb +11 -38
  196. data/lib/active_admin/namespace.rb +33 -20
  197. data/lib/active_admin/namespace_settings.rb +127 -0
  198. data/lib/active_admin/order_clause.rb +4 -3
  199. data/lib/active_admin/orm/active_record/comments/comment.rb +5 -4
  200. data/lib/active_admin/orm/active_record/comments/namespace_helper.rb +1 -0
  201. data/lib/active_admin/orm/active_record/comments/resource_helper.rb +1 -0
  202. data/lib/active_admin/orm/active_record/comments/show_page_helper.rb +1 -0
  203. data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +30 -24
  204. data/lib/active_admin/orm/active_record/comments/views.rb +3 -2
  205. data/lib/active_admin/orm/active_record/comments.rb +35 -23
  206. data/lib/active_admin/orm/active_record.rb +2 -1
  207. data/lib/active_admin/orm/mongoid.rb +1 -0
  208. data/lib/active_admin/page.rb +2 -1
  209. data/lib/active_admin/page_controller.rb +1 -0
  210. data/lib/active_admin/page_dsl.rb +2 -1
  211. data/lib/active_admin/page_presenter.rb +3 -1
  212. data/lib/active_admin/pundit_adapter.rb +73 -16
  213. data/lib/active_admin/resource/action_items.rb +12 -6
  214. data/lib/active_admin/resource/attributes.rb +9 -5
  215. data/lib/active_admin/resource/belongs_to.rb +9 -3
  216. data/lib/active_admin/resource/controllers.rb +2 -1
  217. data/lib/active_admin/resource/includes.rb +1 -0
  218. data/lib/active_admin/resource/menu.rb +6 -5
  219. data/lib/active_admin/resource/model.rb +16 -0
  220. data/lib/active_admin/resource/naming.rb +6 -5
  221. data/lib/active_admin/resource/ordering.rb +1 -0
  222. data/lib/active_admin/resource/page_presenters.rb +1 -0
  223. data/lib/active_admin/resource/pagination.rb +1 -0
  224. data/lib/active_admin/resource/routes.rb +26 -14
  225. data/lib/active_admin/resource/scope_to.rb +8 -7
  226. data/lib/active_admin/resource/scopes.rb +4 -3
  227. data/lib/active_admin/resource/sidebars.rb +3 -2
  228. data/lib/active_admin/resource.rb +37 -22
  229. data/lib/active_admin/resource_collection.rb +3 -2
  230. data/lib/active_admin/resource_controller/action_builder.rb +11 -0
  231. data/lib/active_admin/resource_controller/data_access.rb +31 -5
  232. data/lib/active_admin/resource_controller/decorators.rb +10 -31
  233. data/lib/active_admin/resource_controller/polymorphic_routes.rb +38 -0
  234. data/lib/active_admin/resource_controller/resource_class_methods.rb +3 -0
  235. data/lib/active_admin/resource_controller/scoping.rb +2 -1
  236. data/lib/active_admin/resource_controller/sidebars.rb +1 -0
  237. data/lib/active_admin/resource_controller/streaming.rb +9 -7
  238. data/lib/active_admin/resource_controller.rb +14 -10
  239. data/lib/active_admin/resource_dsl.rb +16 -28
  240. data/lib/active_admin/router.rb +91 -84
  241. data/lib/active_admin/scope.rb +20 -11
  242. data/lib/active_admin/settings_node.rb +20 -0
  243. data/lib/active_admin/sidebar_section.rb +4 -1
  244. data/lib/active_admin/version.rb +2 -1
  245. data/lib/active_admin/view_factory.rb +18 -17
  246. data/lib/active_admin/view_helpers/active_admin_application_helper.rb +1 -0
  247. data/lib/active_admin/view_helpers/auto_link_helper.rb +1 -0
  248. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +6 -5
  249. data/lib/active_admin/view_helpers/display_helper.rb +25 -8
  250. data/lib/active_admin/view_helpers/download_format_links_helper.rb +3 -1
  251. data/lib/active_admin/view_helpers/fields_for.rb +3 -2
  252. data/lib/active_admin/view_helpers/flash_helper.rb +1 -0
  253. data/lib/active_admin/view_helpers/form_helper.rb +1 -0
  254. data/lib/active_admin/view_helpers/method_or_proc_helper.rb +4 -0
  255. data/lib/active_admin/view_helpers/scope_name_helper.rb +1 -0
  256. data/lib/active_admin/view_helpers/sidebar_helper.rb +1 -0
  257. data/lib/active_admin/view_helpers/title_helper.rb +1 -0
  258. data/lib/active_admin/view_helpers/view_factory_helper.rb +1 -0
  259. data/lib/active_admin/view_helpers.rb +2 -1
  260. data/lib/active_admin/views/action_items.rb +1 -0
  261. data/lib/active_admin/views/components/active_admin_form.rb +14 -8
  262. data/lib/active_admin/views/components/active_filters_sidebar_content.rb +59 -0
  263. data/lib/active_admin/views/components/attributes_table.rb +9 -8
  264. data/lib/active_admin/views/components/blank_slate.rb +2 -1
  265. data/lib/active_admin/views/components/columns.rb +1 -0
  266. data/lib/active_admin/views/components/dropdown_menu.rb +7 -9
  267. data/lib/active_admin/views/components/index_list.rb +4 -3
  268. data/lib/active_admin/views/components/menu.rb +33 -0
  269. data/lib/active_admin/views/components/menu_item.rb +59 -0
  270. data/lib/active_admin/views/components/paginated_collection.rb +22 -20
  271. data/lib/active_admin/views/components/panel.rb +2 -1
  272. data/lib/active_admin/views/components/scopes.rb +18 -8
  273. data/lib/active_admin/views/components/sidebar.rb +14 -0
  274. data/lib/active_admin/views/components/sidebar_section.rb +1 -3
  275. data/lib/active_admin/views/components/site_title.rb +7 -7
  276. data/lib/active_admin/views/components/status_tag.rb +14 -26
  277. data/lib/active_admin/views/components/table_for.rb +22 -29
  278. data/lib/active_admin/views/components/tabs.rb +18 -5
  279. data/lib/active_admin/views/components/unsupported_browser.rb +1 -0
  280. data/lib/active_admin/views/footer.rb +6 -8
  281. data/lib/active_admin/views/header.rb +4 -15
  282. data/lib/active_admin/views/index_as_block.rb +1 -0
  283. data/lib/active_admin/views/index_as_blog.rb +3 -2
  284. data/lib/active_admin/views/index_as_grid.rb +27 -26
  285. data/lib/active_admin/views/index_as_table.rb +34 -25
  286. data/lib/active_admin/views/pages/base.rb +44 -60
  287. data/lib/active_admin/views/pages/form.rb +1 -0
  288. data/lib/active_admin/views/pages/index.rb +16 -13
  289. data/lib/active_admin/views/pages/layout.rb +1 -0
  290. data/lib/active_admin/views/pages/page.rb +1 -0
  291. data/lib/active_admin/views/pages/show.rb +1 -0
  292. data/lib/active_admin/views/tabbed_navigation.rb +5 -59
  293. data/lib/active_admin/views/title_bar.rb +2 -1
  294. data/lib/active_admin/views.rb +2 -1
  295. data/lib/active_admin.rb +68 -63
  296. data/lib/activeadmin.rb +2 -1
  297. data/lib/generators/active_admin/assets/assets_generator.rb +3 -2
  298. data/lib/generators/active_admin/assets/templates/active_admin.js +1 -0
  299. data/lib/generators/active_admin/assets/templates/active_admin.scss +2 -2
  300. data/lib/generators/active_admin/devise/devise_generator.rb +6 -5
  301. data/lib/generators/active_admin/install/install_generator.rb +19 -8
  302. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +45 -3
  303. data/lib/generators/active_admin/install/templates/dashboard.rb +3 -3
  304. data/lib/generators/active_admin/install/templates/migrations/create_active_admin_comments.rb.erb +1 -15
  305. data/lib/generators/active_admin/page/page_generator.rb +2 -1
  306. data/lib/generators/active_admin/page/templates/page.rb +1 -0
  307. data/lib/generators/active_admin/resource/resource_generator.rb +4 -3
  308. data/lib/generators/active_admin/resource/templates/admin.rb.erb +40 -37
  309. data/lib/generators/active_admin/webpacker/plugins/jquery.js +7 -0
  310. data/lib/generators/active_admin/webpacker/templates/active_admin.js +5 -0
  311. data/lib/generators/active_admin/webpacker/templates/active_admin.scss +17 -0
  312. data/lib/generators/active_admin/webpacker/templates/print.scss +2 -0
  313. data/lib/generators/active_admin/webpacker/webpacker_generator.rb +27 -0
  314. data/lib/ransack_ext.rb +10 -9
  315. data/vendor/assets/javascripts/jquery-ui/form-reset-mixin.js +80 -0
  316. data/vendor/assets/javascripts/jquery-ui/form.js +22 -0
  317. data/vendor/assets/javascripts/jquery-ui/labels.js +65 -0
  318. data/vendor/assets/javascripts/jquery-ui/widgets/checkboxradio.js +274 -283
  319. metadata +122 -559
  320. data/.github/ISSUE_TEMPLATE.md +0 -20
  321. data/.gitignore +0 -49
  322. data/.mdlrc +0 -1
  323. data/.rubocop.yml +0 -76
  324. data/.simplecov +0 -13
  325. data/.travis.yml +0 -49
  326. data/.yardopts +0 -7
  327. data/Gemfile +0 -58
  328. data/Rakefile +0 -54
  329. data/activeadmin.gemspec +0 -32
  330. data/app/assets/images/active_admin/nested_menu_arrow.gif +0 -0
  331. data/app/assets/images/active_admin/nested_menu_arrow_dark.gif +0 -0
  332. data/app/assets/images/active_admin/orderable.png +0 -0
  333. data/app/assets/javascripts/active_admin/base.js.coffee +0 -13
  334. data/app/assets/javascripts/active_admin/ext/jquery-ui.js.coffee +0 -6
  335. data/app/assets/javascripts/active_admin/ext/jquery.js.coffee +0 -7
  336. data/app/assets/javascripts/active_admin/initializers/batch_actions.js.coffee +0 -11
  337. data/app/assets/javascripts/active_admin/initializers/datepicker.js.coffee +0 -14
  338. data/app/assets/javascripts/active_admin/initializers/filters.js.coffee +0 -26
  339. data/app/assets/javascripts/active_admin/initializers/tabs.js.coffee +0 -7
  340. data/app/assets/javascripts/active_admin/lib/batch_actions.js.coffee +0 -42
  341. data/app/assets/javascripts/active_admin/lib/checkbox-toggler.js.coffee +0 -46
  342. data/app/assets/javascripts/active_admin/lib/dropdown-menu.js.coffee +0 -104
  343. data/app/assets/javascripts/active_admin/lib/flash.js.coffee +0 -19
  344. data/app/assets/javascripts/active_admin/lib/has_many.js.coffee +0 -79
  345. data/app/assets/javascripts/active_admin/lib/modal_dialog.js.coffee +0 -45
  346. data/app/assets/javascripts/active_admin/lib/per_page.js.coffee +0 -46
  347. data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.js.coffee +0 -22
  348. data/codecov.yml +0 -25
  349. data/config/i18n-tasks.yml +0 -26
  350. data/config/mdl_style.rb +0 -9
  351. data/cucumber.yml +0 -3
  352. data/features/action_item.feature +0 -73
  353. data/features/authorization.feature +0 -64
  354. data/features/authorization_cancan.feature +0 -52
  355. data/features/authorization_pundit.feature +0 -37
  356. data/features/belongs_to.feature +0 -124
  357. data/features/breadcrumb.feature +0 -75
  358. data/features/comments/commenting.feature +0 -178
  359. data/features/comments/viewing_index.feature +0 -19
  360. data/features/create_another.feature +0 -55
  361. data/features/dashboard.feature +0 -16
  362. data/features/decorators.feature +0 -43
  363. data/features/development_reloading.feature +0 -28
  364. data/features/edit_page.feature +0 -116
  365. data/features/favicon.feature +0 -20
  366. data/features/first_boot.feature +0 -16
  367. data/features/footer.feature +0 -28
  368. data/features/global_navigation.feature +0 -29
  369. data/features/i18n.feature +0 -55
  370. data/features/index/batch_actions.feature +0 -218
  371. data/features/index/filters.feature +0 -250
  372. data/features/index/format_as_csv.feature +0 -220
  373. data/features/index/formats.feature +0 -88
  374. data/features/index/index_as_block.feature +0 -15
  375. data/features/index/index_as_blog.feature +0 -69
  376. data/features/index/index_as_grid.feature +0 -45
  377. data/features/index/index_as_table.feature +0 -291
  378. data/features/index/index_blank_slate.feature +0 -83
  379. data/features/index/index_parameters.feature +0 -75
  380. data/features/index/index_scope_to.feature +0 -56
  381. data/features/index/index_scopes.feature +0 -285
  382. data/features/index/page_title.feature +0 -41
  383. data/features/index/pagination.feature +0 -63
  384. data/features/index/switch_index_view.feature +0 -73
  385. data/features/menu.feature +0 -72
  386. data/features/meta_tags.feature +0 -21
  387. data/features/new_page.feature +0 -136
  388. data/features/registering_assets.feature +0 -38
  389. data/features/registering_pages.feature +0 -237
  390. data/features/registering_resources.feature +0 -33
  391. data/features/renamed_resource.feature +0 -30
  392. data/features/root_to.feature +0 -17
  393. data/features/show/attributes_table_title.feature +0 -54
  394. data/features/show/columns.feature +0 -40
  395. data/features/show/default_content.feature +0 -44
  396. data/features/show/page_title.feature +0 -58
  397. data/features/show/tabs.feature +0 -33
  398. data/features/sidebar_sections.feature +0 -210
  399. data/features/site_title.feature +0 -47
  400. data/features/specifying_actions.feature +0 -118
  401. data/features/step_definitions/action_item_steps.rb +0 -7
  402. data/features/step_definitions/action_link_steps.rb +0 -19
  403. data/features/step_definitions/additional_web_steps.rb +0 -81
  404. data/features/step_definitions/asset_steps.rb +0 -15
  405. data/features/step_definitions/attribute_steps.rb +0 -18
  406. data/features/step_definitions/attributes_table_title_steps.rb +0 -11
  407. data/features/step_definitions/batch_action_steps.rb +0 -81
  408. data/features/step_definitions/blog_steps.rb +0 -3
  409. data/features/step_definitions/breadcrumb_steps.rb +0 -3
  410. data/features/step_definitions/column_steps.rb +0 -8
  411. data/features/step_definitions/comment_steps.rb +0 -32
  412. data/features/step_definitions/configuration_steps.rb +0 -100
  413. data/features/step_definitions/dashboard_steps.rb +0 -15
  414. data/features/step_definitions/factory_steps.rb +0 -35
  415. data/features/step_definitions/filter_steps.rb +0 -47
  416. data/features/step_definitions/flash_steps.rb +0 -11
  417. data/features/step_definitions/footer_steps.rb +0 -11
  418. data/features/step_definitions/format_steps.rb +0 -56
  419. data/features/step_definitions/i18n_steps.rb +0 -11
  420. data/features/step_definitions/index_scope_steps.rb +0 -29
  421. data/features/step_definitions/index_views_steps.rb +0 -3
  422. data/features/step_definitions/layout_steps.rb +0 -3
  423. data/features/step_definitions/member_link_steps.rb +0 -7
  424. data/features/step_definitions/menu_steps.rb +0 -11
  425. data/features/step_definitions/meta_tag_steps.rb +0 -3
  426. data/features/step_definitions/pagination_steps.rb +0 -15
  427. data/features/step_definitions/sidebar_steps.rb +0 -11
  428. data/features/step_definitions/site_title_steps.rb +0 -17
  429. data/features/step_definitions/tab_steps.rb +0 -8
  430. data/features/step_definitions/table_steps.rb +0 -116
  431. data/features/step_definitions/user_steps.rb +0 -52
  432. data/features/step_definitions/web_steps.rb +0 -86
  433. data/features/sti_resource.feature +0 -65
  434. data/features/strong_parameters.feature +0 -69
  435. data/features/support/env.rb +0 -122
  436. data/features/support/paths.rb +0 -73
  437. data/features/support/regular_env.rb +0 -7
  438. data/features/support/reload_env.rb +0 -7
  439. data/features/support/selectors.rb +0 -45
  440. data/features/users/logging_in.feature +0 -36
  441. data/features/users/logging_out.feature +0 -13
  442. data/features/users/resetting_password.feature +0 -34
  443. data/gemfiles/rails_42.gemfile +0 -10
  444. data/gemfiles/rails_50.gemfile +0 -10
  445. data/gemfiles/rails_51.gemfile +0 -10
  446. data/lib/active_admin/event.rb +0 -24
  447. data/lib/active_admin/helpers/output_safety_helper.rb +0 -35
  448. data/lib/active_admin/helpers/settings.rb +0 -114
  449. data/lib/active_admin/reloader.rb +0 -25
  450. data/lib/bug_report_templates/active_admin_master.rb +0 -112
  451. data/lib/generators/active_admin/assets/templates/active_admin.js.coffee +0 -1
  452. data/spec/bug_report_templates_spec.rb +0 -26
  453. data/spec/javascripts/coffeescripts/jquery.aa.checkbox-toggler-spec.js.coffee +0 -50
  454. data/spec/javascripts/coffeescripts/jquery.aa.flash.js.coffee +0 -25
  455. data/spec/javascripts/coffeescripts/jquery.aa.table-checkbox-toggler-spec.js.coffee +0 -34
  456. data/spec/javascripts/fixtures/checkboxes.html +0 -9
  457. data/spec/javascripts/fixtures/flashes.html +0 -2
  458. data/spec/javascripts/fixtures/table_checkboxes.html +0 -17
  459. data/spec/javascripts/helpers/SpecHelper.js +0 -3
  460. data/spec/javascripts/support/jasmine.yml +0 -74
  461. data/spec/javascripts/support/jasmine_runner.rb +0 -19
  462. data/spec/rails_helper.rb +0 -59
  463. data/spec/requests/default_namespace_spec.rb +0 -81
  464. data/spec/requests/memory_spec.rb +0 -25
  465. data/spec/requests/stylesheets_spec.rb +0 -18
  466. data/spec/spec_helper.rb +0 -1
  467. data/spec/support/active_admin_integration_spec_helper.rb +0 -73
  468. data/spec/support/active_admin_request_helpers.rb +0 -39
  469. data/spec/support/rails_template.rb +0 -153
  470. data/spec/support/rails_template_with_data.rb +0 -327
  471. data/spec/support/templates/admin/stores.rb +0 -7
  472. data/spec/support/templates/en.yml +0 -8
  473. data/spec/support/templates/manifest.js +0 -3
  474. data/spec/support/templates/policies/active_admin/comment_policy.rb +0 -9
  475. data/spec/support/templates/policies/active_admin/page_policy.rb +0 -18
  476. data/spec/support/templates/policies/admin_user_policy.rb +0 -11
  477. data/spec/support/templates/policies/application_policy.rb +0 -44
  478. data/spec/support/templates/policies/category_policy.rb +0 -7
  479. data/spec/support/templates/policies/post_policy.rb +0 -15
  480. data/spec/support/templates/policies/store_policy.rb +0 -11
  481. data/spec/support/templates/policies/user_policy.rb +0 -11
  482. data/spec/support/templates/post_decorator.rb +0 -24
  483. data/spec/unit/abstract_view_factory_spec.rb +0 -78
  484. data/spec/unit/action_builder_spec.rb +0 -158
  485. data/spec/unit/active_admin_spec.rb +0 -11
  486. data/spec/unit/application_spec.rb +0 -184
  487. data/spec/unit/asset_registration_spec.rb +0 -81
  488. data/spec/unit/authorization/authorization_adapter_spec.rb +0 -61
  489. data/spec/unit/authorization/controller_authorization_spec.rb +0 -43
  490. data/spec/unit/authorization/index_overriding_spec.rb +0 -23
  491. data/spec/unit/auto_link_spec.rb +0 -93
  492. data/spec/unit/batch_actions/resource_spec.rb +0 -84
  493. data/spec/unit/batch_actions/settings_spec.rb +0 -61
  494. data/spec/unit/belongs_to_spec.rb +0 -76
  495. data/spec/unit/cancan_adapter_spec.rb +0 -43
  496. data/spec/unit/comments_spec.rb +0 -176
  497. data/spec/unit/component_spec.rb +0 -18
  498. data/spec/unit/config_shared_examples.rb +0 -59
  499. data/spec/unit/controller_filters_spec.rb +0 -41
  500. data/spec/unit/csv_builder_spec.rb +0 -313
  501. data/spec/unit/dependency_spec.rb +0 -135
  502. data/spec/unit/devise_spec.rb +0 -110
  503. data/spec/unit/dsl_spec.rb +0 -120
  504. data/spec/unit/filters/active_filter_spec.rb +0 -189
  505. data/spec/unit/filters/active_spec.rb +0 -24
  506. data/spec/unit/filters/filter_form_builder_spec.rb +0 -524
  507. data/spec/unit/filters/resource_spec.rb +0 -128
  508. data/spec/unit/form_builder_spec.rb +0 -990
  509. data/spec/unit/generators/install_spec.rb +0 -31
  510. data/spec/unit/helpers/collection_spec.rb +0 -68
  511. data/spec/unit/helpers/output_safety_helper_spec.rb +0 -79
  512. data/spec/unit/helpers/scope_chain_spec.rb +0 -35
  513. data/spec/unit/helpers/settings_spec.rb +0 -30
  514. data/spec/unit/i18n_spec.rb +0 -29
  515. data/spec/unit/localizers/resource_localizer_spec.rb +0 -36
  516. data/spec/unit/menu_collection_spec.rb +0 -62
  517. data/spec/unit/menu_item_spec.rb +0 -141
  518. data/spec/unit/menu_spec.rb +0 -71
  519. data/spec/unit/namespace/authorization_spec.rb +0 -27
  520. data/spec/unit/namespace/register_page_spec.rb +0 -99
  521. data/spec/unit/namespace/register_resource_spec.rb +0 -162
  522. data/spec/unit/namespace_spec.rb +0 -124
  523. data/spec/unit/order_clause_spec.rb +0 -81
  524. data/spec/unit/page_controller_spec.rb +0 -5
  525. data/spec/unit/page_spec.rb +0 -128
  526. data/spec/unit/pretty_format_spec.rb +0 -82
  527. data/spec/unit/pundit_adapter_spec.rb +0 -98
  528. data/spec/unit/resource/action_items_spec.rb +0 -69
  529. data/spec/unit/resource/attributes_spec.rb +0 -49
  530. data/spec/unit/resource/includes_spec.rb +0 -21
  531. data/spec/unit/resource/menu_spec.rb +0 -18
  532. data/spec/unit/resource/naming_spec.rb +0 -122
  533. data/spec/unit/resource/ordering_spec.rb +0 -35
  534. data/spec/unit/resource/page_presenters_spec.rb +0 -44
  535. data/spec/unit/resource/pagination_spec.rb +0 -38
  536. data/spec/unit/resource/routes_spec.rb +0 -125
  537. data/spec/unit/resource/scopes_spec.rb +0 -50
  538. data/spec/unit/resource/sidebars_spec.rb +0 -43
  539. data/spec/unit/resource_collection_spec.rb +0 -175
  540. data/spec/unit/resource_controller/data_access_spec.rb +0 -234
  541. data/spec/unit/resource_controller/decorators_spec.rb +0 -94
  542. data/spec/unit/resource_controller/sidebars_spec.rb +0 -37
  543. data/spec/unit/resource_controller_spec.rb +0 -273
  544. data/spec/unit/resource_registration_spec.rb +0 -61
  545. data/spec/unit/resource_spec.rb +0 -320
  546. data/spec/unit/routing_spec.rb +0 -211
  547. data/spec/unit/scope_spec.rb +0 -209
  548. data/spec/unit/settings_spec.rb +0 -117
  549. data/spec/unit/view_factory_spec.rb +0 -19
  550. data/spec/unit/view_helpers/breadcrumbs_spec.rb +0 -253
  551. data/spec/unit/view_helpers/display_helper_spec.rb +0 -203
  552. data/spec/unit/view_helpers/download_format_links_helper_spec.rb +0 -39
  553. data/spec/unit/view_helpers/fields_for_spec.rb +0 -50
  554. data/spec/unit/view_helpers/flash_helper_spec.rb +0 -24
  555. data/spec/unit/view_helpers/form_helper_spec.rb +0 -42
  556. data/spec/unit/view_helpers/method_or_proc_helper_spec.rb +0 -138
  557. data/spec/unit/views/components/attributes_table_spec.rb +0 -271
  558. data/spec/unit/views/components/batch_action_selector_spec.rb +0 -43
  559. data/spec/unit/views/components/blank_slate_spec.rb +0 -27
  560. data/spec/unit/views/components/columns_spec.rb +0 -187
  561. data/spec/unit/views/components/index_list_spec.rb +0 -49
  562. data/spec/unit/views/components/index_table_for_spec.rb +0 -127
  563. data/spec/unit/views/components/paginated_collection_spec.rb +0 -249
  564. data/spec/unit/views/components/panel_spec.rb +0 -58
  565. data/spec/unit/views/components/sidebar_section_spec.rb +0 -68
  566. data/spec/unit/views/components/site_title_spec.rb +0 -76
  567. data/spec/unit/views/components/status_tag_spec.rb +0 -265
  568. data/spec/unit/views/components/table_for_spec.rb +0 -436
  569. data/spec/unit/views/components/tabs_spec.rb +0 -67
  570. data/spec/unit/views/components/unsupported_browser_spec.rb +0 -41
  571. data/spec/unit/views/index_as_blog_spec.rb +0 -76
  572. data/spec/unit/views/pages/form_spec.rb +0 -54
  573. data/spec/unit/views/pages/index_spec.rb +0 -60
  574. data/spec/unit/views/pages/layout_spec.rb +0 -59
  575. data/spec/unit/views/pages/show_spec.rb +0 -32
  576. data/spec/unit/views/tabbed_navigation_spec.rb +0 -158
  577. data/tasks/docs.rake +0 -64
  578. data/tasks/lint.rake +0 -21
  579. data/tasks/local.rake +0 -25
  580. data/tasks/parallel_tests.rake +0 -66
  581. data/tasks/test.rake +0 -29
@@ -0,0 +1,59 @@
1
+ # frozen_string_literal: true
2
+ module ActiveAdmin
3
+ module Views
4
+
5
+ # Arbre component used to render ActiveAdmin::MenuItem
6
+ class MenuItem < Component
7
+ builder_method :menu_item
8
+ attr_reader :label
9
+ attr_reader :url
10
+ attr_reader :priority
11
+
12
+ def build(item, options = {})
13
+ super(options.merge(id: item.id))
14
+ @label = helpers.render_in_context self, item.label
15
+ @url = helpers.render_in_context self, item.url
16
+ @priority = item.priority
17
+ @submenu = nil
18
+
19
+ add_class "current" if item.current? assigns[:current_tab]
20
+
21
+ if url
22
+ text_node link_to label, url, **item.html_options
23
+ else
24
+ span label, item.html_options
25
+ end
26
+
27
+ if item.items.any?
28
+ add_class "has_nested"
29
+ @submenu = menu(item)
30
+ end
31
+ end
32
+
33
+ def tag_name
34
+ "li"
35
+ end
36
+
37
+ # Sorts by priority first, then alphabetically by label if needed.
38
+ def <=>(other)
39
+ result = priority <=> other.priority
40
+ result == 0 ? label <=> other.label : result
41
+ end
42
+
43
+ def visible?
44
+ url.nil? || real_url? || @submenu && @submenu.children.any?
45
+ end
46
+
47
+ def to_s
48
+ visible? ? super : ""
49
+ end
50
+
51
+ private
52
+
53
+ # URL is not nil, empty, or '#'
54
+ def real_url?
55
+ url && url.present? && url != "#"
56
+ end
57
+ end
58
+ end
59
+ end
@@ -1,5 +1,6 @@
1
- require 'active_admin/helpers/collection'
2
- require 'active_admin/view_helpers/download_format_links_helper'
1
+ # frozen_string_literal: true
2
+ require "active_admin/helpers/collection"
3
+ require "active_admin/view_helpers/download_format_links_helper"
3
4
 
4
5
  module ActiveAdmin
5
6
  module Views
@@ -38,12 +39,12 @@ module ActiveAdmin
38
39
  # download_links => Download links override (false or [:csv, :pdf])
39
40
  #
40
41
  def build(collection, options = {})
41
- @collection = collection
42
- @params = options.delete(:params)
43
- @param_name = options.delete(:param_name)
42
+ @collection = collection
43
+ @params = options.delete(:params)
44
+ @param_name = options.delete(:param_name)
44
45
  @download_links = options.delete(:download_links)
45
- @display_total = options.delete(:pagination_total) { true }
46
- @per_page = options.delete(:per_page)
46
+ @display_total = options.delete(:pagination_total) { true }
47
+ @per_page = options.delete(:per_page)
47
48
 
48
49
  unless collection.respond_to?(:total_pages)
49
50
  raise(StandardError, "Collection is not a paginated scope. Set collection.page(params[:page]).per(10) before calling :paginated_collection.")
@@ -92,22 +93,22 @@ module ActiveAdmin
92
93
  end
93
94
 
94
95
  def build_pagination
95
- options = { theme: 'active_admin' }
96
- options[:params] = @params if @params
96
+ options = { theme: @display_total ? "active_admin" : "active_admin_countless" }
97
+ options[:params] = @params if @params
97
98
  options[:param_name] = @param_name if @param_name
98
99
 
99
- if !@display_total && collection.respond_to?(:offset)
100
+ if !@display_total
100
101
  # The #paginate method in kaminari will query the resource with a
101
102
  # count(*) to determine how many pages there should be unless
102
103
  # you pass in the :total_pages option. We issue a query to determine
103
104
  # if there is another page or not, but the limit/offset make this
104
105
  # query fast.
105
- offset = collection.offset(collection.current_page * @per_page.to_i).limit(1).count
106
+ offset = collection.offset(collection.current_page * collection.limit_value).limit(1).count
106
107
  options[:total_pages] = collection.current_page + offset
107
108
  options[:right] = 0
108
109
  end
109
110
 
110
- text_node paginate collection, options
111
+ text_node paginate collection, **options
111
112
  end
112
113
 
113
114
  include ::ActiveAdmin::Helpers::Collection
@@ -116,27 +117,28 @@ module ActiveAdmin
116
117
  # modified from will_paginate
117
118
  def page_entries_info(options = {})
118
119
  if options[:entry_name]
119
- entry_name = options[:entry_name]
120
+ entry_name = options[:entry_name]
120
121
  entries_name = options[:entries_name] || entry_name.pluralize
121
122
  elsif collection_is_empty?
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'
123
+ entry_name = I18n.t "active_admin.pagination.entry", count: 1, default: "entry"
124
+ entries_name = I18n.t "active_admin.pagination.entry", count: 2, default: "entries"
124
125
  else
125
126
  key = "activerecord.models." + collection.first.class.model_name.i18n_key.to_s
126
- entry_name = I18n.translate key, count: 1, default: collection.first.class.name.underscore.sub('_', ' ')
127
+
128
+ entry_name = I18n.translate key, count: 1, default: collection.first.class.name.underscore.sub("_", " ")
127
129
  entries_name = I18n.translate key, count: collection.size, default: entry_name.pluralize
128
130
  end
129
131
 
130
132
  if @display_total
131
133
  if collection.total_pages < 2
132
134
  case collection_size
133
- when 0; I18n.t("active_admin.pagination.empty", model: entries_name)
134
- when 1; I18n.t("active_admin.pagination.one", model: entry_name)
135
- else; I18n.t("active_admin.pagination.one_page", model: entries_name, n: collection.total_count)
135
+ when 0; I18n.t("active_admin.pagination.empty", model: entries_name)
136
+ when 1; I18n.t("active_admin.pagination.one", model: entry_name)
137
+ else; I18n.t("active_admin.pagination.one_page", model: entries_name, n: collection.total_count)
136
138
  end
137
139
  else
138
140
  offset = (collection.current_page - 1) * collection.limit_value
139
- total = collection.total_count
141
+ total = collection.total_count
140
142
  I18n.t "active_admin.pagination.multiple",
141
143
  model: entries_name,
142
144
  total: total,
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  module Views
3
4
 
@@ -29,7 +30,7 @@ module ActiveAdmin
29
30
  def header_action(*args)
30
31
  action = args[0]
31
32
 
32
- @title << div(class: 'header_action') do
33
+ @title << div(class: "header_action") do
33
34
  action
34
35
  end
35
36
  end
@@ -1,5 +1,6 @@
1
- require 'active_admin/helpers/collection'
2
- require 'active_admin/view_helpers/method_or_proc_helper'
1
+ # frozen_string_literal: true
2
+ require "active_admin/helpers/collection"
3
+ require "active_admin/view_helpers/method_or_proc_helper"
3
4
 
4
5
  module ActiveAdmin
5
6
  module Views
@@ -13,16 +14,22 @@ module ActiveAdmin
13
14
  include ::ActiveAdmin::Helpers::Collection
14
15
 
15
16
  def default_class_name
16
- "scopes table_tools_segmented_control"
17
+ "scopes"
17
18
  end
18
19
 
19
20
  def tag_name
20
- 'ul'
21
+ "div"
21
22
  end
22
23
 
23
24
  def build(scopes, options = {})
24
- scopes.each do |scope|
25
- build_scope(scope, options) if call_method_or_proc_on(self, scope.display_if_block)
25
+ scopes.group_by(&:group).each do |group, group_scopes|
26
+ ul class: "table_tools_segmented_control #{group_class(group)}" do
27
+ group_scopes.each do |scope|
28
+ build_scope(scope, options) if call_method_or_exec_proc(scope.display_if_block)
29
+ end
30
+
31
+ nil
32
+ end
26
33
  end
27
34
  end
28
35
 
@@ -32,9 +39,9 @@ module ActiveAdmin
32
39
  li class: classes_for_scope(scope) do
33
40
  params = request.query_parameters.except :page, :scope, :commit, :format
34
41
 
35
- a href: url_for(scope: scope.id, params: params), class: 'table_tools_button' do
42
+ a href: url_for(scope: scope.id, params: params), class: "table_tools_button" do
36
43
  text_node scope_name(scope)
37
- span class: 'count' do
44
+ span class: "count" do
38
45
  "(#{get_scope_count(scope)})"
39
46
  end if options[:scope_count] && scope.show_count
40
47
  end
@@ -60,6 +67,9 @@ module ActiveAdmin
60
67
  collection_size(scope_chain(scope, collection_before_scope))
61
68
  end
62
69
 
70
+ def group_class(group)
71
+ group.present? ? "scope-group-#{group}" : "scope-default-group"
72
+ end
63
73
  end
64
74
  end
65
75
  end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+ module ActiveAdmin
3
+ module Views
4
+
5
+ class Sidebar < Component
6
+ builder_method :sidebar
7
+
8
+ def build(sections, attributes = {})
9
+ super(attributes)
10
+ sections.map(&method(:sidebar_section))
11
+ end
12
+ end
13
+ end
14
+ end
@@ -1,11 +1,9 @@
1
- require 'active_admin/helpers/output_safety_helper'
2
-
1
+ # frozen_string_literal: true
3
2
  module ActiveAdmin
4
3
  module Views
5
4
 
6
5
  class SidebarSection < Panel
7
6
  builder_method :sidebar_section
8
- include OutputSafetyHelper
9
7
 
10
8
  # Takes a ActiveAdmin::SidebarSection instance
11
9
  def build(section)
@@ -1,10 +1,11 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  module Views
3
4
 
4
5
  class SiteTitle < Component
5
6
 
6
7
  def tag_name
7
- 'h1'
8
+ "h1"
8
9
  end
9
10
 
10
11
  def build(namespace)
@@ -22,8 +23,8 @@ module ActiveAdmin
22
23
  @namespace.site_title_link.present?
23
24
  end
24
25
 
25
- def site_title_image?
26
- @namespace.site_title_image.present?
26
+ def site_title_image
27
+ @site_title_image ||= @namespace.site_title_image(helpers)
27
28
  end
28
29
 
29
30
  private
@@ -33,7 +34,7 @@ module ActiveAdmin
33
34
  end
34
35
 
35
36
  def site_title_content
36
- if site_title_image?
37
+ if site_title_image.present?
37
38
  title_image
38
39
  else
39
40
  title_text
@@ -41,12 +42,11 @@ module ActiveAdmin
41
42
  end
42
43
 
43
44
  def title_text
44
- helpers.render_or_call_method_or_proc_on(helpers, @namespace.site_title)
45
+ @title_text ||= @namespace.site_title(helpers)
45
46
  end
46
47
 
47
48
  def title_image
48
- path = helpers.render_or_call_method_or_proc_on(helpers, @namespace.site_title_image)
49
- helpers.image_tag(path, id: "site_title_image", alt: title_text)
49
+ helpers.image_tag(site_title_image, id: "site_title_image", alt: title_text)
50
50
  end
51
51
 
52
52
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  module Views
3
4
  # Build a StatusTag
@@ -5,11 +6,11 @@ module ActiveAdmin
5
6
  builder_method :status_tag
6
7
 
7
8
  def tag_name
8
- 'span'
9
+ "span"
9
10
  end
10
11
 
11
12
  def default_class_name
12
- 'status_tag'
13
+ "status_tag"
13
14
  end
14
15
 
15
16
  # @overload status_tag(status, options = {})
@@ -28,11 +29,7 @@ module ActiveAdmin
28
29
  # status_tag('active', class: 'important', id: 'status_123', label: 'on')
29
30
  # # => <span class='status_tag active important' id='status_123'>on</span>
30
31
  #
31
- def build(*args)
32
- options = args.extract_options!
33
- status = args[0]
34
- type = args[1]
35
-
32
+ def build(status, options = {})
36
33
  label = options.delete(:label)
37
34
  classes = options.delete(:class)
38
35
  status = convert_to_boolean_status(status)
@@ -46,19 +43,6 @@ module ActiveAdmin
46
43
  super(content, options)
47
44
 
48
45
  add_class(status_to_class(status)) if status
49
-
50
- if type
51
- Deprecation.warn <<-MSG.strip_heredoc
52
- The `type` parameter has been deprecated. Provide the "#{type}" type as
53
- a class instead. For example, `status_tag(status, :#{type}, class: "abc")`
54
- would change to `status_tag(status, class: "#{type} abc")`. Also note that
55
- the "#{type}" CSS rule will be removed too, so you'll have to provide
56
- the styles yourself. See https://github.com/activeadmin/activeadmin/blob/master/CHANGELOG.md#110-
57
- for more information.
58
- MSG
59
- add_class(type.to_s)
60
- end
61
-
62
46
  add_class(classes) if classes
63
47
  end
64
48
 
@@ -66,10 +50,12 @@ module ActiveAdmin
66
50
 
67
51
  def convert_to_boolean_status(status)
68
52
  case status
69
- when true, 'true'
70
- 'Yes'
71
- when false, 'false', nil
72
- 'No'
53
+ when true, "true"
54
+ "Yes"
55
+ when false, "false"
56
+ "No"
57
+ when nil
58
+ "Unset"
73
59
  else
74
60
  status
75
61
  end
@@ -77,10 +63,12 @@ module ActiveAdmin
77
63
 
78
64
  def status_to_class(status)
79
65
  case status
66
+ when "Unset"
67
+ "unset no"
80
68
  when String, Symbol
81
- status.to_s.titleize.gsub(/\s/, '').underscore
69
+ status.to_s.titleize.gsub(/\s/, "").underscore
82
70
  else
83
- ''
71
+ ""
84
72
  end
85
73
  end
86
74
  end
@@ -1,20 +1,22 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  module Views
3
4
  class TableFor < Arbre::HTML::Table
4
5
  builder_method :table_for
5
6
 
6
7
  def tag_name
7
- 'table'
8
+ "table"
8
9
  end
9
10
 
10
11
  def build(obj, *attrs)
11
- options = attrs.extract_options!
12
- @sortable = options.delete(:sortable)
13
- @collection = obj.respond_to?(:each) && !obj.is_a?(Hash) ? obj : [obj]
12
+ options = attrs.extract_options!
13
+ @sortable = options.delete(:sortable)
14
+ @collection = obj.respond_to?(:each) && !obj.is_a?(Hash) ? obj : [obj]
14
15
  @resource_class = options.delete(:i18n)
15
16
  @resource_class ||= @collection.klass if @collection.respond_to? :klass
16
- @columns = []
17
- @row_class = options.delete(:row_class)
17
+
18
+ @columns = []
19
+ @row_class = options.delete(:row_class)
18
20
 
19
21
  build_table
20
22
  super(options)
@@ -22,13 +24,13 @@ module ActiveAdmin
22
24
  end
23
25
 
24
26
  def columns(*attrs)
25
- attrs.each {|attr| column(attr) }
27
+ attrs.each { |attr| column(attr) }
26
28
  end
27
29
 
28
30
  def column(*args, &block)
29
31
  options = default_options.merge(args.extract_options!)
30
32
  title = args[0]
31
- data = args[1] || args[0]
33
+ data = args[1] || args[0]
32
34
 
33
35
  col = Column.new(title, data, @resource_class, options, &block)
34
36
  @columns << col
@@ -64,12 +66,12 @@ module ActiveAdmin
64
66
  end
65
67
 
66
68
  def build_table_header(col)
67
- classes = Arbre::HTML::ClassList.new
69
+ classes = Arbre::HTML::ClassList.new
68
70
  sort_key = sortable? && col.sortable? && col.sort_key
69
- params = request.query_parameters.except :page, :order, :commit, :format
71
+ params = request.query_parameters.except :page, :order, :commit, :format
70
72
 
71
- classes << 'sortable' if sort_key
72
- classes << "sorted-#{current_sort[1]}" if sort_key && current_sort[0] == sort_key
73
+ classes << "sortable" if sort_key
74
+ classes << "sorted-#{current_sort[1]}" if sort_key && current_sort[0] == sort_key
73
75
  classes << col.html_class
74
76
 
75
77
  if sort_key
@@ -85,13 +87,13 @@ module ActiveAdmin
85
87
  @tbody = tbody do
86
88
  # Build enough rows for our collection
87
89
  @collection.each do |elem|
88
- classes = [helpers.cycle('odd', 'even')]
90
+ classes = [helpers.cycle("odd", "even")]
89
91
 
90
92
  if @row_class
91
93
  classes << @row_class.call(elem)
92
94
  end
93
95
 
94
- tr(class: classes.flatten.join(' '), id: dom_id_for(elem))
96
+ tr(class: classes.flatten.join(" "), id: dom_id_for(elem))
95
97
  end
96
98
  end
97
99
  end
@@ -125,8 +127,8 @@ module ActiveAdmin
125
127
  # 'desc' it will return 'asc'
126
128
  def order_for_sort_key(sort_key)
127
129
  current_key, current_order = current_sort
128
- return 'desc' unless current_key == sort_key
129
- current_order == 'desc' ? 'asc' : 'desc'
130
+ return "desc" unless current_key == sort_key
131
+ current_order == "desc" ? "asc" : "desc"
130
132
  end
131
133
 
132
134
  def default_options
@@ -137,7 +139,7 @@ module ActiveAdmin
137
139
 
138
140
  class Column
139
141
 
140
- attr_accessor :title, :data , :html_class
142
+ attr_accessor :title, :data, :html_class
141
143
 
142
144
  def initialize(*args, &block)
143
145
  @options = args.extract_options!
@@ -147,9 +149,9 @@ module ActiveAdmin
147
149
  if @options.has_key?(:class)
148
150
  html_classes << @options.delete(:class)
149
151
  elsif @title.present?
150
- html_classes << "col-#{ActiveAdmin::Dependency.rails.parameterize(@title.to_s)}"
152
+ html_classes << "col-#{@title.to_s.parameterize(separator: "_")}"
151
153
  end
152
- @html_class = html_classes.join(' ')
154
+ @html_class = html_classes.join(" ")
153
155
  @data = args[1] || args[0]
154
156
  @data = block if block
155
157
  @resource_class = args[2]
@@ -176,18 +178,9 @@ module ActiveAdmin
176
178
  # to the sortable option:
177
179
  # column :username, sortable: 'other_column_to_sort_on'
178
180
  #
179
- # If you pass a block to be rendered for this column, the column
180
- # will not be sortable unless you pass a string to sortable to
181
- # sort the column on:
182
- #
183
- # column('Username', sortable: 'login'){ @user.pretty_name }
184
- # # => Sort key will be 'login'
185
- #
186
181
  def sort_key
187
182
  # If boolean or nil, use the default sort key.
188
- if @options[:sortable] == true || @options[:sortable] == false
189
- @data.to_s
190
- elsif @options[:sortable].nil?
183
+ if @options[:sortable].nil? || @options[:sortable] == true || @options[:sortable] == false
191
184
  sort_column_name
192
185
  else
193
186
  @options[:sortable].to_s
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  module Views
3
4
  class Tabs < ActiveAdmin::Component
@@ -10,19 +11,31 @@ module ActiveAdmin
10
11
  end
11
12
 
12
13
  def build(&block)
13
- @menu = ul(class: 'nav nav-tabs', role: "tablist")
14
- @tabs_content = div(class: 'tab-content')
14
+ @menu = ul(class: "nav nav-tabs", role: "tablist")
15
+ @tabs_content = div(class: "tab-content")
15
16
  end
16
17
 
17
18
  def build_menu_item(title, options, &block)
18
- fragment = options.fetch(:id, title.parameterize)
19
- li { link_to title, "##{fragment}" }
19
+ fragment = options.fetch(:id, fragmentize(title))
20
+
21
+ html_options = options.fetch(:html_options, {})
22
+ li html_options do
23
+ link_to title, "##{fragment}"
24
+ end
20
25
  end
21
26
 
22
27
  def build_content_item(title, options, &block)
23
- options = options.reverse_merge(id: title.parameterize)
28
+ options = options.reverse_merge(id: fragmentize(title))
24
29
  div(options, &block)
25
30
  end
31
+
32
+ private
33
+
34
+ def fragmentize(string)
35
+ result = string.parameterize
36
+ result = CGI.escape(string) if result.blank?
37
+ result
38
+ end
26
39
  end
27
40
  end
28
41
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  module Views
3
4
  class UnsupportedBrowser < Component
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  module Views
3
4
  class Footer < Component
@@ -6,26 +7,23 @@ module ActiveAdmin
6
7
  super id: "footer"
7
8
  @namespace = namespace
8
9
 
9
- if footer?
10
+ if footer_text.present?
10
11
  para footer_text
11
12
  else
12
13
  para powered_by_message
13
14
  end
14
15
  end
15
16
 
16
- def footer?
17
- @namespace.footer.present?
18
- end
19
-
20
17
  private
21
18
 
22
19
  def footer_text
23
- helpers.render_or_call_method_or_proc_on(self, @namespace.footer)
20
+ @footer_text ||= @namespace.footer(self)
24
21
  end
25
22
 
26
23
  def powered_by_message
27
- I18n.t('active_admin.powered_by',
28
- active_admin: link_to("Active Admin", "http://www.activeadmin.info"),
24
+ I18n.t(
25
+ "active_admin.powered_by",
26
+ active_admin: link_to("Active Admin", "https://activeadmin.info"),
29
27
  version: ActiveAdmin::VERSION).html_safe
30
28
  end
31
29
 
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  module Views
3
4
  class Header < Component
@@ -9,21 +10,9 @@ module ActiveAdmin
9
10
  @menu = menu
10
11
  @utility_menu = @namespace.fetch_menu(:utility_navigation)
11
12
 
12
- build_site_title
13
- build_global_navigation
14
- build_utility_navigation
15
- end
16
-
17
- def build_site_title
18
- insert_tag view_factory.site_title, @namespace
19
- end
20
-
21
- def build_global_navigation
22
- insert_tag view_factory.global_navigation, @menu, class: 'header-item tabs'
23
- end
24
-
25
- def build_utility_navigation
26
- insert_tag view_factory.utility_navigation, @utility_menu, id: "utility_nav", class: 'header-item tabs'
13
+ site_title @namespace
14
+ global_navigation @menu, class: "header-item tabs"
15
+ utility_navigation @utility_menu, id: "utility_nav", class: "header-item tabs"
27
16
  end
28
17
 
29
18
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  module Views
3
4
 
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  module Views
3
4
 
@@ -27,7 +28,7 @@ module ActiveAdmin
27
28
  # ```
28
29
  #
29
30
  # Second, you can pass a block to the tile option which will then be
30
- # used as the contents fo the title. The resource being rendered
31
+ # used as the contents of the title. The resource being rendered
31
32
  # is passed in to the block. For Example:
32
33
  #
33
34
  # ```ruby
@@ -135,7 +136,7 @@ module ActiveAdmin
135
136
 
136
137
  def build_body(post)
137
138
  if @body
138
- div class: 'content' do
139
+ div class: "content" do
139
140
  render_method_on_post_or_call_proc post, @body
140
141
  end
141
142
  end