activeadmin 1.3.1 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of activeadmin might be problematic. Click here for more details.

Files changed (333) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +467 -0
  3. data/.gitignore +2 -5
  4. data/.rspec +1 -0
  5. data/.rspec_parallel +2 -0
  6. data/.rubocop.yml +25 -7
  7. data/.simplecov +4 -6
  8. data/CHANGELOG.md +175 -83
  9. data/CODE_OF_CONDUCT.md +64 -12
  10. data/CONTRIBUTING.md +77 -40
  11. data/Gemfile +7 -55
  12. data/Gemfile.common +53 -0
  13. data/Gemfile.lock +431 -0
  14. data/README.md +39 -18
  15. data/Rakefile +1 -32
  16. data/app/assets/stylesheets/active_admin/_forms.scss +1 -1
  17. data/app/assets/stylesheets/active_admin/components/_scopes.scss +3 -0
  18. data/app/views/active_admin/devise/confirmations/new.html.erb +1 -1
  19. data/app/views/active_admin/devise/passwords/edit.html.erb +1 -1
  20. data/app/views/active_admin/devise/passwords/new.html.erb +1 -1
  21. data/app/views/active_admin/devise/registrations/new.html.erb +1 -1
  22. data/app/views/active_admin/devise/sessions/new.html.erb +1 -1
  23. data/app/views/active_admin/devise/unlocks/new.html.erb +1 -1
  24. data/app/views/layouts/active_admin_logged_out.html.erb +1 -1
  25. data/bin/install_chromedriver.sh +17 -0
  26. data/config/locales/de.yml +10 -0
  27. data/config/locales/en.yml +19 -1
  28. data/config/locales/es.yml +20 -1
  29. data/config/locales/fi.yml +1 -1
  30. data/config/locales/it.yml +4 -0
  31. data/config/locales/nb.yml +15 -5
  32. data/config/locales/nl.yml +11 -0
  33. data/config/locales/pl.yml +71 -3
  34. data/config/locales/ru.yml +2 -0
  35. data/config/locales/tr.yml +9 -0
  36. data/config/locales/zh-CN.yml +33 -5
  37. data/config/mdl_style.rb +2 -0
  38. data/cucumber.yml +7 -3
  39. data/docs/.gitignore +1 -0
  40. data/docs/1-general-configuration.md +16 -1
  41. data/docs/10-custom-pages.md +14 -0
  42. data/docs/12-arbre-components.md +28 -1
  43. data/docs/13-authorization-adapter.md +36 -17
  44. data/docs/2-resource-customization.md +8 -3
  45. data/docs/3-index-pages.md +17 -0
  46. data/docs/3-index-pages/custom-index.md +1 -1
  47. data/docs/3-index-pages/index-as-blog.md +1 -1
  48. data/docs/3-index-pages/index-as-table.md +5 -5
  49. data/docs/5-forms.md +16 -2
  50. data/docs/8-custom-actions.md +11 -0
  51. data/docs/Gemfile +2 -0
  52. data/docs/Gemfile.lock +249 -0
  53. data/docs/_config.yml +1 -1
  54. data/docs/_includes/toc.html +1 -1
  55. data/docs/_includes/top-menu.html +9 -1
  56. data/docs/documentation.md +1 -1
  57. data/docs/images/tidelift.svg +14 -0
  58. data/docs/stylesheets/main.css +26 -2
  59. data/gemfiles/rails_42.gemfile +2 -2
  60. data/gemfiles/rails_42.gemfile.lock +410 -0
  61. data/gemfiles/rails_50.gemfile +2 -2
  62. data/gemfiles/rails_50.gemfile.lock +424 -0
  63. data/gemfiles/rails_51.gemfile +2 -2
  64. data/gemfiles/rails_51.gemfile.lock +423 -0
  65. data/lib/active_admin/abstract_view_factory.rb +13 -51
  66. data/lib/active_admin/application.rb +42 -142
  67. data/lib/active_admin/application_settings.rb +39 -0
  68. data/lib/active_admin/base_controller/authorization.rb +1 -2
  69. data/lib/active_admin/batch_actions/controller.rb +1 -1
  70. data/lib/active_admin/dependency.rb +8 -0
  71. data/lib/active_admin/deprecation.rb +0 -25
  72. data/lib/active_admin/dynamic_setting.rb +38 -0
  73. data/lib/active_admin/dynamic_settings_node.rb +28 -0
  74. data/lib/active_admin/engine.rb +5 -0
  75. data/lib/active_admin/filters/active_filter.rb +1 -1
  76. data/lib/active_admin/filters/resource_extension.rb +1 -1
  77. data/lib/active_admin/form_builder.rb +95 -60
  78. data/lib/active_admin/inputs/datepicker_input.rb +7 -0
  79. data/lib/active_admin/menu.rb +2 -8
  80. data/lib/active_admin/menu_item.rb +3 -31
  81. data/lib/active_admin/namespace.rb +18 -6
  82. data/lib/active_admin/namespace_settings.rb +107 -0
  83. data/lib/active_admin/orm/active_record/comments.rb +11 -0
  84. data/lib/active_admin/orm/active_record/comments/comment.rb +1 -1
  85. data/lib/active_admin/resource/action_items.rb +6 -1
  86. data/lib/active_admin/resource_controller/decorators.rb +3 -3
  87. data/lib/active_admin/resource_controller/scoping.rb +1 -1
  88. data/lib/active_admin/router.rb +89 -84
  89. data/lib/active_admin/scope.rb +5 -1
  90. data/lib/active_admin/settings_node.rb +19 -0
  91. data/lib/active_admin/version.rb +1 -1
  92. data/lib/active_admin/views/components/active_admin_form.rb +2 -3
  93. data/lib/active_admin/views/components/menu.rb +32 -0
  94. data/lib/active_admin/views/components/menu_item.rb +58 -0
  95. data/lib/active_admin/views/components/scopes.rb +11 -4
  96. data/lib/active_admin/views/components/sidebar.rb +13 -0
  97. data/lib/active_admin/views/components/site_title.rb +5 -6
  98. data/lib/active_admin/views/components/table_for.rb +1 -10
  99. data/lib/active_admin/views/components/tabs.rb +4 -1
  100. data/lib/active_admin/views/footer.rb +2 -6
  101. data/lib/active_admin/views/header.rb +3 -15
  102. data/lib/active_admin/views/index_as_blog.rb +1 -1
  103. data/lib/active_admin/views/index_as_grid.rb +25 -25
  104. data/lib/active_admin/views/index_as_table.rb +6 -6
  105. data/lib/active_admin/views/pages/base.rb +27 -53
  106. data/lib/active_admin/views/tabbed_navigation.rb +4 -59
  107. data/lib/bug_report_templates/active_admin_master.rb +2 -3
  108. data/tasks/application_generator.rb +48 -0
  109. data/tasks/gemfiles.rake +8 -0
  110. data/tasks/lint.rake +96 -7
  111. data/tasks/local.rake +10 -8
  112. data/tasks/test.rake +30 -16
  113. metadata +26 -440
  114. data/.travis.yml +0 -51
  115. data/features/action_item.feature +0 -73
  116. data/features/authorization.feature +0 -64
  117. data/features/authorization_cancan.feature +0 -52
  118. data/features/authorization_pundit.feature +0 -37
  119. data/features/belongs_to.feature +0 -124
  120. data/features/breadcrumb.feature +0 -75
  121. data/features/comments/commenting.feature +0 -178
  122. data/features/comments/viewing_index.feature +0 -19
  123. data/features/create_another.feature +0 -55
  124. data/features/dashboard.feature +0 -16
  125. data/features/decorators.feature +0 -43
  126. data/features/development_reloading.feature +0 -28
  127. data/features/edit_page.feature +0 -116
  128. data/features/favicon.feature +0 -20
  129. data/features/first_boot.feature +0 -16
  130. data/features/footer.feature +0 -28
  131. data/features/global_navigation.feature +0 -29
  132. data/features/i18n.feature +0 -55
  133. data/features/index/batch_actions.feature +0 -218
  134. data/features/index/filters.feature +0 -250
  135. data/features/index/format_as_csv.feature +0 -220
  136. data/features/index/formats.feature +0 -88
  137. data/features/index/index_as_block.feature +0 -15
  138. data/features/index/index_as_blog.feature +0 -69
  139. data/features/index/index_as_grid.feature +0 -45
  140. data/features/index/index_as_table.feature +0 -291
  141. data/features/index/index_blank_slate.feature +0 -83
  142. data/features/index/index_parameters.feature +0 -75
  143. data/features/index/index_scope_to.feature +0 -56
  144. data/features/index/index_scopes.feature +0 -285
  145. data/features/index/page_title.feature +0 -41
  146. data/features/index/pagination.feature +0 -63
  147. data/features/index/switch_index_view.feature +0 -73
  148. data/features/menu.feature +0 -72
  149. data/features/meta_tags.feature +0 -21
  150. data/features/new_page.feature +0 -136
  151. data/features/registering_assets.feature +0 -38
  152. data/features/registering_pages.feature +0 -237
  153. data/features/registering_resources.feature +0 -33
  154. data/features/renamed_resource.feature +0 -30
  155. data/features/root_to.feature +0 -17
  156. data/features/show/attributes_table_title.feature +0 -54
  157. data/features/show/columns.feature +0 -40
  158. data/features/show/default_content.feature +0 -44
  159. data/features/show/page_title.feature +0 -58
  160. data/features/show/tabs.feature +0 -33
  161. data/features/sidebar_sections.feature +0 -210
  162. data/features/site_title.feature +0 -47
  163. data/features/specifying_actions.feature +0 -118
  164. data/features/step_definitions/action_item_steps.rb +0 -7
  165. data/features/step_definitions/action_link_steps.rb +0 -19
  166. data/features/step_definitions/additional_web_steps.rb +0 -81
  167. data/features/step_definitions/asset_steps.rb +0 -15
  168. data/features/step_definitions/attribute_steps.rb +0 -18
  169. data/features/step_definitions/attributes_table_title_steps.rb +0 -11
  170. data/features/step_definitions/batch_action_steps.rb +0 -81
  171. data/features/step_definitions/blog_steps.rb +0 -3
  172. data/features/step_definitions/breadcrumb_steps.rb +0 -3
  173. data/features/step_definitions/column_steps.rb +0 -8
  174. data/features/step_definitions/comment_steps.rb +0 -32
  175. data/features/step_definitions/configuration_steps.rb +0 -100
  176. data/features/step_definitions/dashboard_steps.rb +0 -15
  177. data/features/step_definitions/factory_steps.rb +0 -35
  178. data/features/step_definitions/filter_steps.rb +0 -47
  179. data/features/step_definitions/flash_steps.rb +0 -11
  180. data/features/step_definitions/footer_steps.rb +0 -11
  181. data/features/step_definitions/format_steps.rb +0 -56
  182. data/features/step_definitions/i18n_steps.rb +0 -11
  183. data/features/step_definitions/index_scope_steps.rb +0 -29
  184. data/features/step_definitions/index_views_steps.rb +0 -3
  185. data/features/step_definitions/layout_steps.rb +0 -3
  186. data/features/step_definitions/member_link_steps.rb +0 -7
  187. data/features/step_definitions/menu_steps.rb +0 -11
  188. data/features/step_definitions/meta_tag_steps.rb +0 -3
  189. data/features/step_definitions/pagination_steps.rb +0 -15
  190. data/features/step_definitions/sidebar_steps.rb +0 -11
  191. data/features/step_definitions/site_title_steps.rb +0 -17
  192. data/features/step_definitions/tab_steps.rb +0 -8
  193. data/features/step_definitions/table_steps.rb +0 -116
  194. data/features/step_definitions/user_steps.rb +0 -52
  195. data/features/step_definitions/web_steps.rb +0 -86
  196. data/features/sti_resource.feature +0 -65
  197. data/features/strong_parameters.feature +0 -69
  198. data/features/support/env.rb +0 -122
  199. data/features/support/paths.rb +0 -73
  200. data/features/support/regular_env.rb +0 -7
  201. data/features/support/reload_env.rb +0 -7
  202. data/features/support/selectors.rb +0 -45
  203. data/features/users/logging_in.feature +0 -36
  204. data/features/users/logging_out.feature +0 -13
  205. data/features/users/resetting_password.feature +0 -34
  206. data/gemfiles/rails_52.gemfile +0 -11
  207. data/lib/active_admin/helpers/settings.rb +0 -114
  208. data/spec/bug_report_templates_spec.rb +0 -26
  209. data/spec/javascripts/coffeescripts/jquery.aa.checkbox-toggler-spec.js.coffee +0 -50
  210. data/spec/javascripts/coffeescripts/jquery.aa.flash.js.coffee +0 -25
  211. data/spec/javascripts/coffeescripts/jquery.aa.table-checkbox-toggler-spec.js.coffee +0 -34
  212. data/spec/javascripts/fixtures/checkboxes.html +0 -9
  213. data/spec/javascripts/fixtures/flashes.html +0 -2
  214. data/spec/javascripts/fixtures/table_checkboxes.html +0 -17
  215. data/spec/javascripts/helpers/SpecHelper.js +0 -3
  216. data/spec/javascripts/support/jasmine.yml +0 -74
  217. data/spec/javascripts/support/jasmine_runner.rb +0 -19
  218. data/spec/rails_helper.rb +0 -59
  219. data/spec/requests/default_namespace_spec.rb +0 -81
  220. data/spec/requests/memory_spec.rb +0 -25
  221. data/spec/requests/stylesheets_spec.rb +0 -18
  222. data/spec/spec_helper.rb +0 -1
  223. data/spec/support/active_admin_integration_spec_helper.rb +0 -73
  224. data/spec/support/active_admin_request_helpers.rb +0 -39
  225. data/spec/support/rails_template.rb +0 -153
  226. data/spec/support/rails_template_with_data.rb +0 -327
  227. data/spec/support/templates/admin/stores.rb +0 -7
  228. data/spec/support/templates/en.yml +0 -8
  229. data/spec/support/templates/manifest.js +0 -3
  230. data/spec/support/templates/policies/active_admin/comment_policy.rb +0 -9
  231. data/spec/support/templates/policies/active_admin/page_policy.rb +0 -18
  232. data/spec/support/templates/policies/admin_user_policy.rb +0 -11
  233. data/spec/support/templates/policies/application_policy.rb +0 -44
  234. data/spec/support/templates/policies/category_policy.rb +0 -7
  235. data/spec/support/templates/policies/post_policy.rb +0 -15
  236. data/spec/support/templates/policies/store_policy.rb +0 -11
  237. data/spec/support/templates/policies/user_policy.rb +0 -11
  238. data/spec/support/templates/post_decorator.rb +0 -24
  239. data/spec/unit/abstract_view_factory_spec.rb +0 -78
  240. data/spec/unit/action_builder_spec.rb +0 -158
  241. data/spec/unit/active_admin_spec.rb +0 -11
  242. data/spec/unit/application_spec.rb +0 -184
  243. data/spec/unit/asset_registration_spec.rb +0 -81
  244. data/spec/unit/authorization/authorization_adapter_spec.rb +0 -61
  245. data/spec/unit/authorization/controller_authorization_spec.rb +0 -43
  246. data/spec/unit/authorization/index_overriding_spec.rb +0 -23
  247. data/spec/unit/auto_link_spec.rb +0 -93
  248. data/spec/unit/batch_actions/resource_spec.rb +0 -84
  249. data/spec/unit/batch_actions/settings_spec.rb +0 -61
  250. data/spec/unit/belongs_to_spec.rb +0 -76
  251. data/spec/unit/cancan_adapter_spec.rb +0 -43
  252. data/spec/unit/comments_spec.rb +0 -176
  253. data/spec/unit/component_spec.rb +0 -18
  254. data/spec/unit/config_shared_examples.rb +0 -59
  255. data/spec/unit/controller_filters_spec.rb +0 -41
  256. data/spec/unit/csv_builder_spec.rb +0 -313
  257. data/spec/unit/dependency_spec.rb +0 -135
  258. data/spec/unit/devise_spec.rb +0 -110
  259. data/spec/unit/dsl_spec.rb +0 -120
  260. data/spec/unit/filters/active_filter_spec.rb +0 -189
  261. data/spec/unit/filters/active_spec.rb +0 -24
  262. data/spec/unit/filters/filter_form_builder_spec.rb +0 -524
  263. data/spec/unit/filters/resource_spec.rb +0 -128
  264. data/spec/unit/form_builder_spec.rb +0 -990
  265. data/spec/unit/generators/install_spec.rb +0 -31
  266. data/spec/unit/helpers/collection_spec.rb +0 -68
  267. data/spec/unit/helpers/output_safety_helper_spec.rb +0 -79
  268. data/spec/unit/helpers/scope_chain_spec.rb +0 -35
  269. data/spec/unit/helpers/settings_spec.rb +0 -30
  270. data/spec/unit/i18n_spec.rb +0 -29
  271. data/spec/unit/localizers/resource_localizer_spec.rb +0 -36
  272. data/spec/unit/menu_collection_spec.rb +0 -62
  273. data/spec/unit/menu_item_spec.rb +0 -141
  274. data/spec/unit/menu_spec.rb +0 -71
  275. data/spec/unit/namespace/authorization_spec.rb +0 -27
  276. data/spec/unit/namespace/register_page_spec.rb +0 -99
  277. data/spec/unit/namespace/register_resource_spec.rb +0 -162
  278. data/spec/unit/namespace_spec.rb +0 -124
  279. data/spec/unit/order_clause_spec.rb +0 -81
  280. data/spec/unit/page_controller_spec.rb +0 -5
  281. data/spec/unit/page_spec.rb +0 -128
  282. data/spec/unit/pretty_format_spec.rb +0 -82
  283. data/spec/unit/pundit_adapter_spec.rb +0 -98
  284. data/spec/unit/resource/action_items_spec.rb +0 -69
  285. data/spec/unit/resource/attributes_spec.rb +0 -49
  286. data/spec/unit/resource/includes_spec.rb +0 -21
  287. data/spec/unit/resource/menu_spec.rb +0 -18
  288. data/spec/unit/resource/naming_spec.rb +0 -122
  289. data/spec/unit/resource/ordering_spec.rb +0 -35
  290. data/spec/unit/resource/page_presenters_spec.rb +0 -44
  291. data/spec/unit/resource/pagination_spec.rb +0 -38
  292. data/spec/unit/resource/routes_spec.rb +0 -125
  293. data/spec/unit/resource/scopes_spec.rb +0 -50
  294. data/spec/unit/resource/sidebars_spec.rb +0 -43
  295. data/spec/unit/resource_collection_spec.rb +0 -175
  296. data/spec/unit/resource_controller/data_access_spec.rb +0 -234
  297. data/spec/unit/resource_controller/decorators_spec.rb +0 -94
  298. data/spec/unit/resource_controller/sidebars_spec.rb +0 -37
  299. data/spec/unit/resource_controller_spec.rb +0 -273
  300. data/spec/unit/resource_registration_spec.rb +0 -61
  301. data/spec/unit/resource_spec.rb +0 -320
  302. data/spec/unit/routing_spec.rb +0 -211
  303. data/spec/unit/scope_spec.rb +0 -209
  304. data/spec/unit/settings_spec.rb +0 -117
  305. data/spec/unit/view_factory_spec.rb +0 -19
  306. data/spec/unit/view_helpers/breadcrumbs_spec.rb +0 -253
  307. data/spec/unit/view_helpers/display_helper_spec.rb +0 -203
  308. data/spec/unit/view_helpers/download_format_links_helper_spec.rb +0 -39
  309. data/spec/unit/view_helpers/fields_for_spec.rb +0 -50
  310. data/spec/unit/view_helpers/flash_helper_spec.rb +0 -24
  311. data/spec/unit/view_helpers/form_helper_spec.rb +0 -42
  312. data/spec/unit/view_helpers/method_or_proc_helper_spec.rb +0 -138
  313. data/spec/unit/views/components/attributes_table_spec.rb +0 -271
  314. data/spec/unit/views/components/batch_action_selector_spec.rb +0 -43
  315. data/spec/unit/views/components/blank_slate_spec.rb +0 -27
  316. data/spec/unit/views/components/columns_spec.rb +0 -187
  317. data/spec/unit/views/components/index_list_spec.rb +0 -49
  318. data/spec/unit/views/components/index_table_for_spec.rb +0 -127
  319. data/spec/unit/views/components/paginated_collection_spec.rb +0 -249
  320. data/spec/unit/views/components/panel_spec.rb +0 -58
  321. data/spec/unit/views/components/sidebar_section_spec.rb +0 -68
  322. data/spec/unit/views/components/site_title_spec.rb +0 -76
  323. data/spec/unit/views/components/status_tag_spec.rb +0 -265
  324. data/spec/unit/views/components/table_for_spec.rb +0 -436
  325. data/spec/unit/views/components/tabs_spec.rb +0 -67
  326. data/spec/unit/views/components/unsupported_browser_spec.rb +0 -41
  327. data/spec/unit/views/index_as_blog_spec.rb +0 -76
  328. data/spec/unit/views/pages/form_spec.rb +0 -54
  329. data/spec/unit/views/pages/index_spec.rb +0 -60
  330. data/spec/unit/views/pages/layout_spec.rb +0 -59
  331. data/spec/unit/views/pages/show_spec.rb +0 -32
  332. data/spec/unit/views/tabbed_navigation_spec.rb +0 -158
  333. data/tasks/parallel_tests.rake +0 -66
@@ -13,16 +13,20 @@ module ActiveAdmin
13
13
  include ::ActiveAdmin::Helpers::Collection
14
14
 
15
15
  def default_class_name
16
- "scopes table_tools_segmented_control"
16
+ "scopes"
17
17
  end
18
18
 
19
19
  def tag_name
20
- 'ul'
20
+ 'div'
21
21
  end
22
22
 
23
23
  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)
24
+ scopes.group_by(&:group).each do |group, group_scopes|
25
+ ul class: "table_tools_segmented_control #{group_class(group)}" do
26
+ group_scopes.each do |scope|
27
+ build_scope(scope, options) if call_method_or_exec_proc(scope.display_if_block)
28
+ end
29
+ end
26
30
  end
27
31
  end
28
32
 
@@ -60,6 +64,9 @@ module ActiveAdmin
60
64
  collection_size(scope_chain(scope, collection_before_scope))
61
65
  end
62
66
 
67
+ def group_class(group)
68
+ group.present? ? "scope-group-#{group}" : "scope-default-group"
69
+ end
63
70
  end
64
71
  end
65
72
  end
@@ -0,0 +1,13 @@
1
+ module ActiveAdmin
2
+ module Views
3
+
4
+ class Sidebar < Component
5
+ builder_method :sidebar
6
+
7
+ def build(sections, attributes = {})
8
+ super(attributes)
9
+ sections.map(&method(:sidebar_section))
10
+ end
11
+ end
12
+ end
13
+ end
@@ -22,8 +22,8 @@ module ActiveAdmin
22
22
  @namespace.site_title_link.present?
23
23
  end
24
24
 
25
- def site_title_image?
26
- @namespace.site_title_image.present?
25
+ def site_title_image
26
+ @site_title_image ||= @namespace.site_title_image(helpers)
27
27
  end
28
28
 
29
29
  private
@@ -33,7 +33,7 @@ module ActiveAdmin
33
33
  end
34
34
 
35
35
  def site_title_content
36
- if site_title_image?
36
+ if site_title_image.present?
37
37
  title_image
38
38
  else
39
39
  title_text
@@ -41,12 +41,11 @@ module ActiveAdmin
41
41
  end
42
42
 
43
43
  def title_text
44
- helpers.render_or_call_method_or_proc_on(helpers, @namespace.site_title)
44
+ @title_text ||= @namespace.site_title(helpers)
45
45
  end
46
46
 
47
47
  def title_image
48
- path = helpers.render_or_call_method_or_proc_on(helpers, @namespace.site_title_image)
49
- helpers.image_tag(path, id: "site_title_image", alt: title_text)
48
+ helpers.image_tag(site_title_image, id: "site_title_image", alt: title_text)
50
49
  end
51
50
 
52
51
  end
@@ -176,18 +176,9 @@ module ActiveAdmin
176
176
  # to the sortable option:
177
177
  # column :username, sortable: 'other_column_to_sort_on'
178
178
  #
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
179
  def sort_key
187
180
  # 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?
181
+ if @options[:sortable].nil? || @options[:sortable] == true || @options[:sortable] == false
191
182
  sort_column_name
192
183
  else
193
184
  @options[:sortable].to_s
@@ -16,7 +16,10 @@ module ActiveAdmin
16
16
 
17
17
  def build_menu_item(title, options, &block)
18
18
  fragment = options.fetch(:id, title.parameterize)
19
- li { link_to title, "##{fragment}" }
19
+ html_options = options.fetch(:html_options, {})
20
+ li html_options do
21
+ link_to title, "##{fragment}"
22
+ end
20
23
  end
21
24
 
22
25
  def build_content_item(title, options, &block)
@@ -6,21 +6,17 @@ module ActiveAdmin
6
6
  super id: "footer"
7
7
  @namespace = namespace
8
8
 
9
- if footer?
9
+ if footer_text.present?
10
10
  para footer_text
11
11
  else
12
12
  para powered_by_message
13
13
  end
14
14
  end
15
15
 
16
- def footer?
17
- @namespace.footer.present?
18
- end
19
-
20
16
  private
21
17
 
22
18
  def footer_text
23
- helpers.render_or_call_method_or_proc_on(self, @namespace.footer)
19
+ @footer_text ||= @namespace.footer(self)
24
20
  end
25
21
 
26
22
  def powered_by_message
@@ -9,21 +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
- 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'
12
+ site_title @namespace
13
+ global_navigation @menu, class: 'header-item tabs'
14
+ utility_navigation @utility_menu, id: "utility_nav", class: 'header-item tabs'
27
15
  end
28
16
 
29
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
@@ -1,30 +1,30 @@
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
- #
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
28
  class IndexAsGrid < ActiveAdmin::Component
29
29
 
30
30
  def build(page_presenter, collection)
@@ -42,7 +42,7 @@ module ActiveAdmin
42
42
  "grid"
43
43
  end
44
44
 
45
- protected
45
+ protected
46
46
 
47
47
  def build_table
48
48
  resource_selection_toggle_panel if active_admin_config.batch_actions.any?
@@ -110,7 +110,8 @@ module ActiveAdmin
110
110
  # end
111
111
  # ```
112
112
  #
113
- # In addition, you can insert the position of the row in the greater collection by using the index_column special command:
113
+ # In addition, you can insert the position of the row in the greater
114
+ # collection by using the index_column special command:
114
115
  #
115
116
  # ```ruby
116
117
  # index do
@@ -120,7 +121,8 @@ module ActiveAdmin
120
121
  # end
121
122
  # ```
122
123
  #
123
- # index_column take an optional offset parameter to allow a developer to set the starting number for the index (default is 1).
124
+ # index_column take an optional offset parameter to allow a developer to set
125
+ # the starting number for the index (default is 1).
124
126
  #
125
127
  # ## Sorting
126
128
  #
@@ -128,9 +130,7 @@ module ActiveAdmin
128
130
  # sortable by default. If you are creating a custom column, you may need to give
129
131
  # Active Admin a hint for how to sort the table.
130
132
  #
131
- # If a column is defined using a block, you must pass the key to turn on sorting. The key
132
- # is the attribute which gets used to sort objects using Active Record.
133
- #
133
+ # You can pass the key specifying the attribute which gets used to sort objects using Active Record.
134
134
  # By default, this is the column on the resource's table that the attribute corresponds to.
135
135
  # Otherwise, any attribute that the resource collection responds to can be used.
136
136
  #
@@ -362,7 +362,7 @@ module ActiveAdmin
362
362
  end
363
363
  end
364
364
 
365
- private
365
+ private
366
366
 
367
367
  def defaults(resource, options = {})
368
368
  if controller.action_methods.include?('show') && authorized?(ActiveAdmin::Auth::READ, resource)
@@ -4,27 +4,27 @@ module ActiveAdmin
4
4
  class Base < Arbre::HTML::Document
5
5
 
6
6
  def build(*args)
7
- super
8
- add_classes_to_body
9
7
  build_active_admin_head
10
8
  build_page
11
9
  end
12
10
 
11
+ alias_method :html_title, :title # Arbre::HTML::Title
12
+ def title
13
+ self.class.name
14
+ end
15
+
16
+ def main_content
17
+ I18n.t('active_admin.main_content', model: title).html_safe
18
+ end
19
+
13
20
  private
14
21
 
15
22
  delegate :active_admin_config, :controller, :params, to: :helpers
16
23
 
17
- def add_classes_to_body
18
- @body.add_class(params[:action])
19
- @body.add_class(params[:controller].tr('/', '_'))
20
- @body.add_class("active_admin")
21
- @body.add_class("logged_in")
22
- @body.add_class(active_admin_namespace.name.to_s + "_namespace")
23
- end
24
-
25
24
  def build_active_admin_head
26
- within @head do
27
- insert_tag Arbre::HTML::Title, [title, render_or_call_method_or_proc_on(self, active_admin_namespace.site_title)].compact.join(" | ")
25
+ within head do
26
+ html_title [title, helpers.active_admin_namespace.site_title(self)].compact.join(" | ")
27
+
28
28
  active_admin_application.stylesheets.each do |style, options|
29
29
  text_node stylesheet_link_tag(style, options).html_safe
30
30
  end
@@ -46,36 +46,37 @@ module ActiveAdmin
46
46
  end
47
47
 
48
48
  def build_page
49
- within @body do
49
+ within body(class: body_classes) do
50
50
  div id: "wrapper" do
51
51
  build_unsupported_browser
52
- build_header
53
- build_title_bar
52
+ header active_admin_namespace, current_menu
53
+ title_bar title, action_items_for_action
54
54
  build_page_content
55
- build_footer
55
+ footer active_admin_namespace
56
56
  end
57
57
  end
58
58
  end
59
59
 
60
+ def body_classes
61
+ Arbre::HTML::ClassList.new [
62
+ params[:action],
63
+ params[:controller].tr('/', '_'),
64
+ 'active_admin', 'logged_in',
65
+ active_admin_namespace.name.to_s + '_namespace'
66
+ ]
67
+ end
68
+
60
69
  def build_unsupported_browser
61
70
  if active_admin_namespace.unsupported_browser_matcher =~ controller.request.user_agent
62
- insert_tag view_factory.unsupported_browser
71
+ unsupported_browser
63
72
  end
64
73
  end
65
74
 
66
- def build_header
67
- insert_tag view_factory.header, active_admin_namespace, current_menu
68
- end
69
-
70
- def build_title_bar
71
- insert_tag view_factory.title_bar, title, action_items_for_action
72
- end
73
-
74
75
  def build_page_content
75
76
  build_flash_messages
76
77
  div id: "active_admin_content", class: (skip_sidebar? ? "without_sidebar" : "with_sidebar") do
77
78
  build_main_content_wrapper
78
- build_sidebar unless skip_sidebar?
79
+ sidebar sidebar_sections_for_action, id: 'sidebar' unless skip_sidebar?
79
80
  end
80
81
  end
81
82
 
@@ -95,19 +96,6 @@ module ActiveAdmin
95
96
  end
96
97
  end
97
98
 
98
- def main_content
99
- I18n.t('active_admin.main_content', model: title).html_safe
100
- end
101
-
102
- def title
103
- self.class.name
104
- end
105
-
106
- # Set's the page title for the layout to render
107
- def set_page_title
108
- set_ivar_on_view "@page_title", title
109
- end
110
-
111
99
  # Returns the sidebar sections to render for the current action
112
100
  def sidebar_sections_for_action
113
101
  if active_admin_config && active_admin_config.sidebar_sections?
@@ -125,24 +113,10 @@ module ActiveAdmin
125
113
  end
126
114
  end
127
115
 
128
- # Renders the sidebar
129
- def build_sidebar
130
- div id: "sidebar" do
131
- sidebar_sections_for_action.collect do |section|
132
- sidebar_section(section)
133
- end
134
- end
135
- end
136
-
137
116
  def skip_sidebar?
138
117
  sidebar_sections_for_action.empty? || assigns[:skip_sidebar] == true
139
118
  end
140
119
 
141
- # Renders the content for the footer
142
- def build_footer
143
- insert_tag view_factory.footer, active_admin_namespace
144
- end
145
-
146
120
  end
147
121
  end
148
122
  end
@@ -1,65 +1,10 @@
1
+ require_relative 'components/menu'
2
+
1
3
  module ActiveAdmin
2
4
  module Views
3
-
4
- # Renders an ActiveAdmin::Menu as a set of unordered list items.
5
- #
6
- # This component takes cares of deciding which items should be
7
- # displayed given the current context and renders them appropriately.
8
- #
9
- # The entire component is rendered within one ul element.
10
- class TabbedNavigation < Component
11
-
12
- attr_reader :menu
13
-
14
- # Build a new tabbed navigation component.
15
- #
16
- # @param [ActiveAdmin::Menu] menu the Menu to render
17
- # @param [Hash] options the options as passed to the underlying ul element.
18
- #
5
+ class TabbedNavigation < Menu
19
6
  def build(menu, options = {})
20
- @menu = menu
21
- super(default_options.merge(options))
22
- build_menu
23
- end
24
-
25
- # The top-level menu items that should be displayed.
26
- def menu_items
27
- menu.items(self)
28
- end
29
-
30
- def tag_name
31
- 'ul'
32
- end
33
-
34
- private
35
-
36
- def build_menu
37
- menu_items.each do |item|
38
- build_menu_item(item)
39
- end
40
- end
41
-
42
- def build_menu_item(item)
43
- li id: item.id do |li|
44
- li.add_class "current" if item.current? assigns[:current_tab]
45
-
46
- if url = item.url(self)
47
- text_node link_to item.label(self), url, item.html_options
48
- else
49
- span item.label(self), item.html_options
50
- end
51
-
52
- if children = item.items(self).presence
53
- li.add_class "has_nested"
54
- ul do
55
- children.each{ |child| build_menu_item child }
56
- end
57
- end
58
- end
59
- end
60
-
61
- def default_options
62
- { id: "tabs" }
7
+ super(menu, options.reverse_merge(id: 'tabs'))
63
8
  end
64
9
  end
65
10
  end