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
@@ -4,16 +4,18 @@ module ActiveAdmin
4
4
  builder_method :table_for
5
5
 
6
6
  def tag_name
7
- 'table'
7
+ "table"
8
8
  end
9
9
 
10
10
  def build(obj, *attrs)
11
- options = attrs.extract_options!
12
- @sortable = options.delete(:sortable)
11
+ options = attrs.extract_options!
12
+ @sortable = options.delete(:sortable)
13
+ @collection = obj.respond_to?(:each) && !obj.is_a?(Hash) ? obj : [obj]
13
14
  @resource_class = options.delete(:i18n)
14
- @collection = obj.respond_to?(:each) && !obj.is_a?(Hash) ? obj : [obj]
15
- @columns = []
16
- @row_class = options.delete(:row_class)
15
+ @resource_class ||= @collection.klass if @collection.respond_to? :klass
16
+
17
+ @columns = []
18
+ @row_class = options.delete(:row_class)
17
19
 
18
20
  build_table
19
21
  super(options)
@@ -21,13 +23,13 @@ module ActiveAdmin
21
23
  end
22
24
 
23
25
  def columns(*attrs)
24
- attrs.each {|attr| column(attr) }
26
+ attrs.each { |attr| column(attr) }
25
27
  end
26
28
 
27
29
  def column(*args, &block)
28
30
  options = default_options.merge(args.extract_options!)
29
31
  title = args[0]
30
- data = args[1] || args[0]
32
+ data = args[1] || args[0]
31
33
 
32
34
  col = Column.new(title, data, @resource_class, options, &block)
33
35
  @columns << col
@@ -38,9 +40,9 @@ module ActiveAdmin
38
40
  end
39
41
 
40
42
  # Add a table cell for each item
41
- @collection.each_with_index do |item, i|
42
- within @tbody.children[i] do
43
- build_table_cell col, item
43
+ @collection.each_with_index do |resource, index|
44
+ within @tbody.children[index] do
45
+ build_table_cell col, resource
44
46
  end
45
47
  end
46
48
  end
@@ -63,12 +65,12 @@ module ActiveAdmin
63
65
  end
64
66
 
65
67
  def build_table_header(col)
66
- classes = Arbre::HTML::ClassList.new
68
+ classes = Arbre::HTML::ClassList.new
67
69
  sort_key = sortable? && col.sortable? && col.sort_key
68
- params = request.query_parameters.except :page, :order, :commit, :format
70
+ params = request.query_parameters.except :page, :order, :commit, :format
69
71
 
70
- classes << 'sortable' if sort_key
71
- classes << "sorted-#{current_sort[1]}" if sort_key && current_sort[0] == sort_key
72
+ classes << "sortable" if sort_key
73
+ classes << "sorted-#{current_sort[1]}" if sort_key && current_sort[0] == sort_key
72
74
  classes << col.html_class
73
75
 
74
76
  if sort_key
@@ -84,41 +86,22 @@ module ActiveAdmin
84
86
  @tbody = tbody do
85
87
  # Build enough rows for our collection
86
88
  @collection.each do |elem|
87
- classes = [cycle('odd', 'even')]
89
+ classes = [helpers.cycle("odd", "even")]
88
90
 
89
91
  if @row_class
90
92
  classes << @row_class.call(elem)
91
93
  end
92
94
 
93
- tr(class: classes.flatten.join(' '), id: dom_id_for(elem))
95
+ tr(class: classes.flatten.join(" "), id: dom_id_for(elem))
94
96
  end
95
97
  end
96
98
  end
97
99
 
98
- def build_table_cell(col, item)
100
+ def build_table_cell(col, resource)
99
101
  td class: col.html_class do
100
- render_data col.data, item
101
- end
102
- end
103
-
104
- def render_data(data, item)
105
- value = if data.is_a? Proc
106
- data.call item
107
- elsif item.respond_to? data
108
- item.public_send data
109
- elsif item.respond_to? :[]
110
- item[data]
111
- end
112
- value = pretty_format(value) if data.is_a?(Symbol)
113
- value = status_tag value if is_boolean? data, item
114
- value
115
- end
116
-
117
- def is_boolean?(data, item)
118
- if item.respond_to? :has_attribute?
119
- item.has_attribute?(data) &&
120
- item.column_for_attribute(data) &&
121
- item.column_for_attribute(data).type == :boolean
102
+ html = helpers.format_attribute(resource, col.data)
103
+ # Don't add the same Arbre twice, while still allowing format_attribute to call status_tag
104
+ current_arbre_element << html unless current_arbre_element.children.include? html
122
105
  end
123
106
  end
124
107
 
@@ -127,7 +110,7 @@ module ActiveAdmin
127
110
  # current_sort[1] #=> asc | desc
128
111
  def current_sort
129
112
  @current_sort ||= begin
130
- order_clause = OrderClause.new params[:order]
113
+ order_clause = active_admin_config.order_clause.new(active_admin_config, params[:order])
131
114
 
132
115
  if order_clause.valid?
133
116
  [order_clause.field, order_clause.order]
@@ -143,8 +126,8 @@ module ActiveAdmin
143
126
  # 'desc' it will return 'asc'
144
127
  def order_for_sort_key(sort_key)
145
128
  current_key, current_order = current_sort
146
- return 'desc' unless current_key == sort_key
147
- current_order == 'desc' ? 'asc' : 'desc'
129
+ return "desc" unless current_key == sort_key
130
+ current_order == "desc" ? "asc" : "desc"
148
131
  end
149
132
 
150
133
  def default_options
@@ -155,9 +138,9 @@ module ActiveAdmin
155
138
 
156
139
  class Column
157
140
 
158
- attr_accessor :title, :data , :html_class
141
+ attr_accessor :title, :data, :html_class
159
142
 
160
- def initialize(*args, &block)
143
+ def initialize(*args, &block)
161
144
  @options = args.extract_options!
162
145
 
163
146
  @title = args[0]
@@ -165,9 +148,9 @@ module ActiveAdmin
165
148
  if @options.has_key?(:class)
166
149
  html_classes << @options.delete(:class)
167
150
  elsif @title.present?
168
- html_classes << "col-#{@title.to_s.parameterize('_')}"
151
+ html_classes << "col-#{@title.to_s.parameterize(separator: "_")}"
169
152
  end
170
- @html_class = html_classes.join(' ')
153
+ @html_class = html_classes.join(" ")
171
154
  @data = args[1] || args[0]
172
155
  @data = block if block
173
156
  @resource_class = args[2]
@@ -194,18 +177,9 @@ module ActiveAdmin
194
177
  # to the sortable option:
195
178
  # column :username, sortable: 'other_column_to_sort_on'
196
179
  #
197
- # If you pass a block to be rendered for this column, the column
198
- # will not be sortable unless you pass a string to sortable to
199
- # sort the column on:
200
- #
201
- # column('Username', sortable: 'login'){ @user.pretty_name }
202
- # # => Sort key will be 'login'
203
- #
204
180
  def sort_key
205
181
  # If boolean or nil, use the default sort key.
206
- if @options[:sortable] == true || @options[:sortable] == false
207
- @data.to_s
208
- elsif @options[:sortable].nil?
182
+ if @options[:sortable].nil? || @options[:sortable] == true || @options[:sortable] == false
209
183
  sort_column_name
210
184
  else
211
185
  @options[:sortable].to_s
@@ -10,19 +10,31 @@ module ActiveAdmin
10
10
  end
11
11
 
12
12
  def build(&block)
13
- @menu = ul(class: 'nav nav-tabs', role: "tablist")
14
- @tabs_content = div(class: 'tab-content')
13
+ @menu = ul(class: "nav nav-tabs", role: "tablist")
14
+ @tabs_content = div(class: "tab-content")
15
15
  end
16
16
 
17
17
  def build_menu_item(title, options, &block)
18
- options = options.reverse_merge({})
19
- li { link_to title, "##{title.parameterize}", options }
18
+ fragment = options.fetch(:id, fragmentize(title))
19
+
20
+ html_options = options.fetch(:html_options, {})
21
+ li html_options do
22
+ link_to title, "##{fragment}"
23
+ end
20
24
  end
21
25
 
22
26
  def build_content_item(title, options, &block)
23
- options = options.reverse_merge(id: title.parameterize)
27
+ options = options.reverse_merge(id: fragmentize(title))
24
28
  div(options, &block)
25
29
  end
30
+
31
+ private
32
+
33
+ def fragmentize(string)
34
+ result = string.parameterize
35
+ result = CGI.escape(string) if result.blank?
36
+ result
37
+ end
26
38
  end
27
39
  end
28
40
  end
@@ -2,16 +2,27 @@ module ActiveAdmin
2
2
  module Views
3
3
  class Footer < Component
4
4
 
5
- def build
5
+ def build(namespace)
6
6
  super id: "footer"
7
- powered_by_message
7
+ @namespace = namespace
8
+
9
+ if footer_text.present?
10
+ para footer_text
11
+ else
12
+ para powered_by_message
13
+ end
8
14
  end
9
15
 
10
16
  private
11
17
 
18
+ def footer_text
19
+ @footer_text ||= @namespace.footer(self)
20
+ end
21
+
12
22
  def powered_by_message
13
- para I18n.t('active_admin.powered_by',
14
- active_admin: link_to("Active Admin", "http://www.activeadmin.info"),
23
+ I18n.t(
24
+ "active_admin.powered_by",
25
+ active_admin: link_to("Active Admin", "https://activeadmin.info"),
15
26
  version: ActiveAdmin::VERSION).html_safe
16
27
  end
17
28
 
@@ -9,22 +9,9 @@ module ActiveAdmin
9
9
  @menu = menu
10
10
  @utility_menu = @namespace.fetch_menu(:utility_navigation)
11
11
 
12
- build_site_title
13
- build_global_navigation
14
- build_utility_navigation
15
- end
16
-
17
-
18
- def build_site_title
19
- insert_tag view_factory.site_title, @namespace
20
- end
21
-
22
- def build_global_navigation
23
- insert_tag view_factory.global_navigation, @menu, class: 'header-item tabs'
24
- end
25
-
26
- def build_utility_navigation
27
- insert_tag view_factory.utility_navigation, @utility_menu, id: "utility_nav", class: 'header-item tabs'
12
+ site_title @namespace
13
+ global_navigation @menu, class: "header-item tabs"
14
+ utility_navigation @utility_menu, id: "utility_nav", class: "header-item tabs"
28
15
  end
29
16
 
30
17
  end
@@ -27,7 +27,7 @@ module ActiveAdmin
27
27
  # ```
28
28
  #
29
29
  # 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
30
+ # used as the contents of the title. The resource being rendered
31
31
  # is passed in to the block. For Example:
32
32
  #
33
33
  # ```ruby
@@ -89,7 +89,6 @@ module ActiveAdmin
89
89
  @title
90
90
  end
91
91
 
92
-
93
92
  # Setter method for the configuration of the body
94
93
  #
95
94
  def body(method = nil, &block)
@@ -124,7 +123,7 @@ module ActiveAdmin
124
123
  if @title
125
124
  h3 do
126
125
  a(href: resource_path(post)) do
127
- render_method_on_post_or_call_proc post, @title
126
+ render_method_on_post_or_call_proc post, @title
128
127
  end
129
128
  end
130
129
  else
@@ -136,7 +135,7 @@ module ActiveAdmin
136
135
 
137
136
  def build_body(post)
138
137
  if @body
139
- div class: 'content' do
138
+ div class: "content" do
140
139
  render_method_on_post_or_call_proc post, @body
141
140
  end
142
141
  end
@@ -1,35 +1,35 @@
1
1
  module ActiveAdmin
2
2
  module Views
3
3
 
4
- # # Index as a Grid
5
- #
6
- # Sometimes you want to display the index screen for a set of resources as a grid
7
- # (possibly a grid of thumbnail images). To do so, use the :grid option for the
8
- # index block.
9
- #
10
- # ```ruby
11
- # index as: :grid do |product|
12
- # link_to image_tag(product.image_path), admin_product_path(product)
13
- # end
14
- # ```
15
- #
16
- # The block is rendered within a cell in the grid once for each resource in the
17
- # collection. The resource is passed into the block for you to use in the view.
18
- #
19
- # You can customize the number of columns that are rendered using the columns
20
- # option:
21
- #
22
- # ```ruby
23
- # index as: :grid, columns: 5 do |product|
24
- # link_to image_tag(product.image_path), admin_product_path(product)
25
- # end
26
- # ```
27
- #
28
- class IndexAsGrid < ActiveAdmin::Component
4
+ # # Index as a Grid
5
+ #
6
+ # Sometimes you want to display the index screen for a set of resources as a grid
7
+ # (possibly a grid of thumbnail images). To do so, use the :grid option for the
8
+ # index block.
9
+ #
10
+ # ```ruby
11
+ # index as: :grid do |product|
12
+ # link_to image_tag(product.image_path), admin_product_path(product)
13
+ # end
14
+ # ```
15
+ #
16
+ # The block is rendered within a cell in the grid once for each resource in the
17
+ # collection. The resource is passed into the block for you to use in the view.
18
+ #
19
+ # You can customize the number of columns that are rendered using the columns
20
+ # option:
21
+ #
22
+ # ```ruby
23
+ # index as: :grid, columns: 5 do |product|
24
+ # link_to image_tag(product.image_path), admin_product_path(product)
25
+ # end
26
+ # ```
27
+ #
28
+ class IndexAsGrid < ActiveAdmin::Component
29
29
 
30
30
  def build(page_presenter, collection)
31
31
  @page_presenter = page_presenter
32
- @collection = collection
32
+ @collection = collection.to_a
33
33
  add_class "index"
34
34
  build_table
35
35
  end
@@ -47,7 +47,7 @@ module ActiveAdmin
47
47
  def build_table
48
48
  resource_selection_toggle_panel if active_admin_config.batch_actions.any?
49
49
  table class: "index_grid" do
50
- collection.in_groups_of(number_of_columns).each do |group|
50
+ @collection.in_groups_of(number_of_columns).each do |group|
51
51
  build_row(group)
52
52
  end
53
53
  end
@@ -68,7 +68,7 @@ module ActiveAdmin
68
68
  end
69
69
 
70
70
  def build_empty_cell
71
- td '&nbsp;'.html_safe
71
+ td "&nbsp;".html_safe
72
72
  end
73
73
 
74
74
  def default_number_of_columns
@@ -52,6 +52,8 @@ module ActiveAdmin
52
52
  # end
53
53
  # ```
54
54
  #
55
+ # ## Defining Actions
56
+ #
55
57
  # To setup links to View, Edit and Delete a resource, use the `actions` method:
56
58
  #
57
59
  # ```ruby
@@ -91,7 +93,7 @@ module ActiveAdmin
91
93
  # index do
92
94
  # column :title
93
95
  # actions do |post|
94
- # a link_to "View", admin_post_path(post)
96
+ # a "View", href: admin_post_path(post)
95
97
  # end
96
98
  # end
97
99
  # ```
@@ -108,15 +110,27 @@ module ActiveAdmin
108
110
  # end
109
111
  # ```
110
112
  #
113
+ # In addition, you can insert the position of the row in the greater
114
+ # collection by using the index_column special command:
115
+ #
116
+ # ```ruby
117
+ # index do
118
+ # selectable_column
119
+ # index_column
120
+ # column :title
121
+ # end
122
+ # ```
123
+ #
124
+ # index_column take an optional offset parameter to allow a developer to set
125
+ # the starting number for the index (default is 1).
126
+ #
111
127
  # ## Sorting
112
128
  #
113
129
  # When a column is generated from an Active Record attribute, the table is
114
130
  # sortable by default. If you are creating a custom column, you may need to give
115
131
  # Active Admin a hint for how to sort the table.
116
132
  #
117
- # If a column is defined using a block, you must pass the key to turn on sorting. The key
118
- # is the attribute which gets used to sort objects using Active Record.
119
- #
133
+ # You can pass the key specifying the attribute which gets used to sort objects using Active Record.
120
134
  # By default, this is the column on the resource's table that the attribute corresponds to.
121
135
  # Otherwise, any attribute that the resource collection responds to can be used.
122
136
  #
@@ -145,6 +159,24 @@ module ActiveAdmin
145
159
  # end
146
160
  # ```
147
161
  #
162
+ # ## Custom sorting
163
+ #
164
+ # It is also possible to use database specific expressions and options for sorting by column
165
+ #
166
+ # ```ruby
167
+ # order_by(:title) do |order_clause|
168
+ # if order_clause.order == 'desc'
169
+ # [order_clause.to_sql, 'NULLS LAST'].join(' ')
170
+ # else
171
+ # [order_clause.to_sql, 'NULLS FIRST'].join(' ')
172
+ # end
173
+ # end
174
+ #
175
+ # index do
176
+ # column :title
177
+ # end
178
+ # ```
179
+ #
148
180
  # ## Associated Sorting
149
181
  #
150
182
  # You're normally able to sort columns alphabetically, but by default you
@@ -160,6 +192,13 @@ module ActiveAdmin
160
192
  # end
161
193
  # ```
162
194
  #
195
+ # You can also define associated objects to include outside of the
196
+ # `scoped_collection` method:
197
+ #
198
+ # ```ruby
199
+ # includes :publisher
200
+ # ```
201
+ #
163
202
  # Then it's simple to sort by any Publisher attribute from within the index table:
164
203
  #
165
204
  # ```ruby
@@ -218,9 +257,9 @@ module ActiveAdmin
218
257
  def default_table
219
258
  proc do
220
259
  selectable_column
221
- id_column if resource_class.primary_key # View based Models have no primary_key
222
- resource_class.content_columns.each do |col|
223
- column col.name.to_sym
260
+ id_column if resource_class.primary_key
261
+ active_admin_config.resource_columns.each do |attribute|
262
+ column attribute
224
263
  end
225
264
  actions
226
265
  end
@@ -239,17 +278,25 @@ module ActiveAdmin
239
278
  # Display a column for checkbox
240
279
  def selectable_column
241
280
  return unless active_admin_config.batch_actions.any?
242
- column resource_selection_toggle_cell, class: 'col-selectable', sortable: false do |resource|
281
+ column resource_selection_toggle_cell, class: "col-selectable", sortable: false do |resource|
243
282
  resource_selection_cell resource
244
283
  end
245
284
  end
246
285
 
286
+ def index_column(start_value = 1)
287
+ column "#", class: "col-index", sortable: false do |resource|
288
+ @collection.offset_value + @collection.index(resource) + start_value
289
+ end
290
+ end
291
+
247
292
  # Display a column for the id
248
293
  def id_column
249
- raise "#{resource_class.name} as no primary_key!" unless resource_class.primary_key
294
+ raise "#{resource_class.name} has no primary_key!" unless resource_class.primary_key
250
295
  column(resource_class.human_attribute_name(resource_class.primary_key), sortable: resource_class.primary_key) do |resource|
251
- if controller.action_methods.include?('show')
296
+ if controller.action_methods.include?("show")
252
297
  link_to resource.id, resource_path(resource), class: "resource_id_link"
298
+ elsif controller.action_methods.include?("edit")
299
+ link_to resource.id, edit_resource_path(resource), class: "resource_id_link"
253
300
  else
254
301
  resource.id
255
302
  end
@@ -257,7 +304,7 @@ module ActiveAdmin
257
304
  end
258
305
 
259
306
  def default_actions
260
- raise '`default_actions` is no longer provided in ActiveAdmin 1.x. Use `actions` instead.'
307
+ raise "`default_actions` is no longer provided in ActiveAdmin 1.x. Use `actions` instead."
261
308
  end
262
309
 
263
310
  # Add links to perform actions.
@@ -277,7 +324,7 @@ module ActiveAdmin
277
324
  #
278
325
  # # Append some actions onto the end of the default actions using arbre dsl.
279
326
  # actions do |admin_user|
280
- # a link_to 'Grant Admin', grant_admin_admin_user_path(admin_user)
327
+ # a 'Grant Admin', href: grant_admin_admin_user_path(admin_user)
281
328
  # end
282
329
  #
283
330
  # # Custom actions without the defaults.
@@ -297,12 +344,12 @@ module ActiveAdmin
297
344
  #
298
345
  # ```
299
346
  def actions(options = {}, &block)
300
- name = options.delete(:name) { '' }
301
- defaults = options.delete(:defaults) { true }
302
- dropdown = options.delete(:dropdown) { false }
303
- dropdown_name = options.delete(:dropdown_name) { I18n.t 'active_admin.dropdown_actions.button_label', default: 'Actions' }
347
+ name = options.delete(:name) { "" }
348
+ defaults = options.delete(:defaults) { true }
349
+ dropdown = options.delete(:dropdown) { false }
350
+ dropdown_name = options.delete(:dropdown_name) { I18n.t "active_admin.dropdown_actions.button_label", default: "Actions" }
304
351
 
305
- options[:class] ||= 'col-actions'
352
+ options[:class] ||= "col-actions"
306
353
 
307
354
  column name, options do |resource|
308
355
  if dropdown
@@ -322,30 +369,31 @@ module ActiveAdmin
322
369
  end
323
370
  end
324
371
 
325
- private
372
+ private
326
373
 
327
374
  def defaults(resource, options = {})
328
- if controller.action_methods.include?('show') && authorized?(ActiveAdmin::Auth::READ, resource)
329
- item I18n.t('active_admin.view'), resource_path(resource), class: "view_link #{options[:css_class]}"
375
+ localizer = ActiveAdmin::Localizers.resource(active_admin_config)
376
+ if controller.action_methods.include?("show") && authorized?(ActiveAdmin::Auth::READ, resource)
377
+ item localizer.t(:view), resource_path(resource), class: "view_link #{options[:css_class]}", title: localizer.t(:view)
330
378
  end
331
- if controller.action_methods.include?('edit') && authorized?(ActiveAdmin::Auth::UPDATE, resource)
332
- item I18n.t('active_admin.edit'), edit_resource_path(resource), class: "edit_link #{options[:css_class]}"
379
+ if controller.action_methods.include?("edit") && authorized?(ActiveAdmin::Auth::UPDATE, resource)
380
+ item localizer.t(:edit), edit_resource_path(resource), class: "edit_link #{options[:css_class]}", title: localizer.t(:edit)
333
381
  end
334
- if controller.action_methods.include?('destroy') && authorized?(ActiveAdmin::Auth::DESTROY, resource)
335
- item I18n.t('active_admin.delete'), resource_path(resource), class: "delete_link #{options[:css_class]}",
336
- method: :delete, data: {confirm: I18n.t('active_admin.delete_confirmation')}
382
+ if controller.action_methods.include?("destroy") && authorized?(ActiveAdmin::Auth::DESTROY, resource)
383
+ item localizer.t(:delete), resource_path(resource), class: "delete_link #{options[:css_class]}", title: localizer.t(:delete),
384
+ method: :delete, data: { confirm: localizer.t(:delete_confirmation) }
337
385
  end
338
386
  end
339
387
 
340
388
  class TableActions < ActiveAdmin::Component
341
389
  builder_method :table_actions
342
390
 
343
- def item *args
344
- text_node link_to *args
391
+ def item *args, **kwargs
392
+ text_node link_to(*args, **kwargs)
345
393
  end
346
394
  end
347
395
  end # IndexTableFor
348
396
 
349
- end # IndexAsTable
397
+ end
350
398
  end
351
399
  end