activeadmin 0.4.4 → 0.5.0.pre

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 (310) hide show
  1. data/.gitignore +3 -0
  2. data/.travis.yml +5 -0
  3. data/CHANGELOG.md +50 -0
  4. data/CONTRIBUTING.md +2 -4
  5. data/Gemfile +10 -4
  6. data/Guardfile +0 -1
  7. data/LICENSE +1 -1
  8. data/README.rdoc +19 -8
  9. data/Rakefile +10 -1
  10. data/activeadmin.gemspec +2 -1
  11. data/app/assets/javascripts/active_admin/application.js +3 -9
  12. data/app/assets/javascripts/active_admin/base.js +1 -0
  13. data/app/assets/javascripts/active_admin/components/jquery.aa.checkbox-toggler.js.coffee +64 -0
  14. data/app/assets/javascripts/active_admin/components/jquery.aa.dropdown-menu.js.coffee +107 -0
  15. data/app/assets/javascripts/active_admin/components/jquery.aa.popover.js.coffee +100 -0
  16. data/app/assets/javascripts/active_admin/components/jquery.aa.table-checkbox-toggler.js.coffee +27 -0
  17. data/app/assets/javascripts/active_admin/lib/namespace.js.coffee +3 -0
  18. data/app/assets/javascripts/active_admin/pages/application.js.coffee +13 -0
  19. data/app/assets/javascripts/active_admin/pages/batch_actions.js.coffee +26 -0
  20. data/app/assets/stylesheets/active_admin/_base.css.scss +32 -26
  21. data/app/assets/stylesheets/active_admin/_forms.css.scss +12 -5
  22. data/app/assets/stylesheets/active_admin/_header.css.scss +1 -2
  23. data/app/assets/stylesheets/active_admin/_typography.css.scss +1 -1
  24. data/app/assets/stylesheets/active_admin/components/_batch_actions.css.scss +11 -0
  25. data/app/assets/stylesheets/active_admin/components/_buttons.scss +1 -2
  26. data/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +151 -0
  27. data/app/assets/stylesheets/active_admin/components/_flash_messages.css.scss +3 -3
  28. data/app/assets/stylesheets/active_admin/components/_popovers.css.scss +123 -0
  29. data/app/assets/stylesheets/active_admin/components/_status_tags.scss +1 -1
  30. data/app/assets/stylesheets/active_admin/components/_table_tools.css.scss +20 -27
  31. data/app/assets/stylesheets/active_admin/components/_tables.css.scss +1 -0
  32. data/app/assets/stylesheets/active_admin/mixins/_buttons.css.scss +38 -36
  33. data/app/assets/stylesheets/active_admin/mixins/_gradients.css.scss +5 -5
  34. data/app/assets/stylesheets/active_admin/mixins/_icons.css.scss +7 -3
  35. data/app/assets/stylesheets/active_admin/mixins/_variables.css.scss +19 -17
  36. data/app/assets/stylesheets/active_admin/pages/_logged_out.scss +2 -2
  37. data/app/assets/stylesheets/active_admin/print.css.scss +290 -0
  38. data/app/views/active_admin/dashboard/index.html.arb +1 -1
  39. data/app/views/active_admin/devise/passwords/edit.html.erb +17 -14
  40. data/app/views/active_admin/devise/passwords/new.html.erb +4 -4
  41. data/app/views/active_admin/devise/sessions/new.html.erb +6 -6
  42. data/app/views/active_admin/devise/shared/_links.erb +6 -6
  43. data/app/views/active_admin/page/index.html.arb +1 -1
  44. data/app/views/active_admin/resource/edit.html.arb +1 -1
  45. data/app/views/active_admin/resource/index.csv.erb +1 -1
  46. data/app/views/active_admin/resource/index.html.arb +1 -1
  47. data/app/views/active_admin/resource/new.html.arb +1 -1
  48. data/app/views/active_admin/resource/show.html.arb +1 -1
  49. data/app/views/layouts/active_admin.html.arb +1 -1
  50. data/app/views/layouts/active_admin_logged_out.html.erb +2 -2
  51. data/cucumber.yml +1 -1
  52. data/docs/0-installation.md +10 -1
  53. data/docs/{9-custom-pages.md → 10-custom-pages.md} +0 -0
  54. data/docs/2-resource-customization.md +19 -1
  55. data/docs/3-index-pages.md +31 -0
  56. data/docs/4-csv-format.md +9 -0
  57. data/docs/6-show-screens.md +1 -1
  58. data/docs/9-batch-actions.md +161 -0
  59. data/features/dashboard.feature +31 -8
  60. data/features/development_reloading.feature +1 -1
  61. data/features/edit_page.feature +3 -3
  62. data/features/i18n.feature +35 -0
  63. data/features/index/batch_actions.feature +98 -0
  64. data/features/index/filters.feature +26 -0
  65. data/features/index/format_as_csv.feature +35 -0
  66. data/features/index/index_as_table.feature +30 -2
  67. data/features/index/index_blank_slate.feature +8 -3
  68. data/features/index/index_scopes.feature +130 -24
  69. data/features/index/page_title.feature +12 -0
  70. data/features/new_page.feature +3 -3
  71. data/features/registering_pages.feature +61 -0
  72. data/features/root_to.feature +17 -0
  73. data/features/show/default_content.feature +1 -1
  74. data/features/show/page_title.feature +14 -0
  75. data/features/sidebar_sections.feature +26 -0
  76. data/features/site_title.feature +1 -1
  77. data/features/specifying_actions.feature +7 -6
  78. data/features/step_definitions/action_link_steps.rb +1 -1
  79. data/features/step_definitions/additional_web_steps.rb +7 -1
  80. data/features/step_definitions/batch_action_steps.rb +94 -0
  81. data/features/step_definitions/configuration_steps.rb +30 -8
  82. data/features/step_definitions/factory_steps.rb +12 -0
  83. data/features/step_definitions/format_steps.rb +6 -2
  84. data/features/step_definitions/i18n_steps.rb +3 -0
  85. data/features/step_definitions/table_steps.rb +114 -0
  86. data/features/step_definitions/user_steps.rb +30 -4
  87. data/features/support/env.rb +54 -15
  88. data/features/support/paths.rb +2 -0
  89. data/features/users/logging_in.feature +1 -1
  90. data/features/users/logging_out.feature +2 -1
  91. data/features/users/resetting_password.feature +34 -0
  92. data/lib/active_admin.rb +46 -7
  93. data/lib/active_admin/application.rb +30 -15
  94. data/lib/active_admin/base_controller/menu.rb +3 -3
  95. data/lib/active_admin/batch_actions.rb +17 -0
  96. data/lib/active_admin/batch_actions/controller.rb +25 -0
  97. data/lib/active_admin/batch_actions/resource_extension.rb +126 -0
  98. data/lib/active_admin/batch_actions/views/batch_action_form.rb +35 -0
  99. data/lib/active_admin/batch_actions/views/batch_action_popover.rb +28 -0
  100. data/lib/active_admin/batch_actions/views/batch_action_selector.rb +63 -0
  101. data/lib/active_admin/batch_actions/views/selection_cells.rb +37 -0
  102. data/lib/active_admin/comments.rb +5 -2
  103. data/lib/active_admin/comments/comment.rb +4 -3
  104. data/lib/active_admin/comments/views/active_admin_comments.rb +5 -5
  105. data/lib/active_admin/component.rb +1 -18
  106. data/lib/active_admin/csv_builder.rb +8 -3
  107. data/lib/active_admin/dashboards.rb +21 -4
  108. data/lib/active_admin/dashboards/dashboard_controller.rb +1 -5
  109. data/lib/active_admin/dependency_checker.rb +1 -1
  110. data/lib/active_admin/dsl.rb +61 -4
  111. data/lib/active_admin/engine.rb +1 -1
  112. data/lib/active_admin/filters.rb +8 -0
  113. data/lib/active_admin/filters/dsl.rb +12 -0
  114. data/lib/active_admin/filters/forms.rb +93 -0
  115. data/lib/active_admin/filters/resource_extension.rb +92 -0
  116. data/lib/active_admin/form_builder.rb +88 -33
  117. data/lib/active_admin/helpers/collection.rb +23 -0
  118. data/lib/active_admin/helpers/optional_display.rb +1 -1
  119. data/lib/active_admin/inputs/filter_select_input.rb +1 -1
  120. data/lib/active_admin/locales/bg.yml +37 -1
  121. data/lib/active_admin/locales/ca.yml +36 -0
  122. data/lib/active_admin/locales/cs.yml +36 -0
  123. data/lib/active_admin/locales/da.yml +36 -0
  124. data/lib/active_admin/locales/de.yml +42 -0
  125. data/lib/active_admin/locales/en.yml +27 -2
  126. data/lib/active_admin/locales/es.yml +45 -4
  127. data/lib/active_admin/locales/fr.yml +22 -0
  128. data/lib/active_admin/locales/{he_il.yml → he.yml} +37 -2
  129. data/lib/active_admin/locales/hr.yml +49 -5
  130. data/lib/active_admin/locales/hu.yml +21 -0
  131. data/lib/active_admin/locales/it.yml +36 -1
  132. data/lib/active_admin/locales/ja.yml +36 -0
  133. data/lib/active_admin/locales/ko.yml +36 -1
  134. data/lib/active_admin/locales/lv.yml +28 -2
  135. data/lib/active_admin/locales/nl.yml +42 -1
  136. data/lib/active_admin/locales/no-NB.yml +15 -0
  137. data/lib/active_admin/locales/pl.yml +45 -1
  138. data/lib/active_admin/locales/pt-BR.yml +36 -1
  139. data/lib/active_admin/locales/ro.yml +67 -0
  140. data/lib/active_admin/locales/ru.yml +43 -3
  141. data/lib/active_admin/locales/sv-SE.yml +41 -1
  142. data/lib/active_admin/locales/tr.yml +80 -0
  143. data/lib/active_admin/locales/vi.yml +80 -0
  144. data/lib/active_admin/locales/{zh_cn.yml → zh-CN.yml} +42 -2
  145. data/lib/active_admin/locales/zh-TW.yml +36 -1
  146. data/lib/active_admin/menu.rb +55 -30
  147. data/lib/active_admin/menu_builder.rb +65 -0
  148. data/lib/active_admin/menu_item.rb +55 -14
  149. data/lib/active_admin/namespace.rb +25 -55
  150. data/lib/active_admin/page.rb +15 -10
  151. data/lib/active_admin/resource.rb +9 -0
  152. data/lib/active_admin/resource/action_items.rb +4 -4
  153. data/lib/active_admin/resource/controllers.rb +1 -1
  154. data/lib/active_admin/resource/menu.rb +19 -21
  155. data/lib/active_admin/resource/naming.rb +55 -45
  156. data/lib/active_admin/resource/sidebars.rb +0 -13
  157. data/lib/active_admin/resource_collection.rb +10 -10
  158. data/lib/active_admin/resource_controller.rb +5 -5
  159. data/lib/active_admin/resource_controller/actions.rb +2 -0
  160. data/lib/active_admin/resource_controller/collection.rb +13 -4
  161. data/lib/active_admin/resource_dsl.rb +12 -6
  162. data/lib/active_admin/router.rb +27 -8
  163. data/lib/active_admin/scope.rb +1 -0
  164. data/lib/active_admin/sidebar_section.rb +2 -6
  165. data/lib/active_admin/version.rb +1 -1
  166. data/lib/active_admin/view_factory.rb +18 -13
  167. data/lib/active_admin/view_helpers.rb +0 -2
  168. data/lib/active_admin/view_helpers/auto_link_helper.rb +2 -1
  169. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +24 -25
  170. data/lib/active_admin/view_helpers/display_helper.rb +1 -1
  171. data/lib/active_admin/view_helpers/fields_for.rb +44 -0
  172. data/lib/active_admin/view_helpers/form_helper.rb +6 -0
  173. data/lib/active_admin/view_helpers/view_factory_helper.rb +1 -1
  174. data/lib/active_admin/views/components/action_list_popover.rb +29 -0
  175. data/lib/active_admin/views/components/attributes_table.rb +6 -2
  176. data/lib/active_admin/views/components/dropdown_menu.rb +73 -0
  177. data/lib/active_admin/views/components/paginated_collection.rb +13 -14
  178. data/lib/active_admin/views/components/popover.rb +27 -0
  179. data/lib/active_admin/views/components/scopes.rb +8 -13
  180. data/lib/active_admin/views/components/sidebar_section.rb +1 -1
  181. data/lib/active_admin/views/components/site_title.rb +55 -0
  182. data/lib/active_admin/views/components/status_tag.rb +4 -4
  183. data/lib/active_admin/views/components/table_for.rb +18 -18
  184. data/lib/active_admin/views/dashboard_section_renderer.rb +1 -1
  185. data/lib/active_admin/views/footer.rb +18 -0
  186. data/lib/active_admin/views/header.rb +31 -0
  187. data/lib/active_admin/views/index_as_block.rb +3 -0
  188. data/lib/active_admin/views/index_as_blog.rb +4 -0
  189. data/lib/active_admin/views/index_as_grid.rb +2 -0
  190. data/lib/active_admin/views/index_as_table.rb +19 -6
  191. data/lib/active_admin/views/pages/base.rb +14 -48
  192. data/lib/active_admin/views/pages/form.rb +3 -3
  193. data/lib/active_admin/views/pages/index.rb +56 -24
  194. data/lib/active_admin/views/pages/layout.rb +2 -2
  195. data/lib/active_admin/views/pages/page.rb +10 -4
  196. data/lib/active_admin/views/pages/show.rb +11 -8
  197. data/lib/active_admin/views/tabbed_navigation.rb +3 -3
  198. data/lib/active_admin/views/title_bar.rb +50 -0
  199. data/lib/active_admin/views/utility_nav.rb +41 -0
  200. data/lib/generators/active_admin/assets/assets_generator.rb +1 -1
  201. data/lib/generators/active_admin/assets/templates/3.0/active_admin.js +1 -0
  202. data/lib/generators/active_admin/assets/templates/3.1/active_admin.css.scss +26 -3
  203. data/lib/generators/active_admin/devise/devise_generator.rb +2 -2
  204. data/lib/generators/active_admin/install/install_generator.rb +10 -10
  205. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +21 -1
  206. data/lib/generators/active_admin/install/templates/admin_user.rb.erb +20 -0
  207. data/lib/generators/active_admin/install/templates/dashboard.rb +33 -0
  208. data/lib/generators/active_admin/resource/templates/admin.rb +1 -1
  209. data/spec/integration/memory_spec.rb +1 -11
  210. data/spec/javascripts/coffeescripts/jquery.aa.checkbox-toggler-spec.js.coffee +50 -0
  211. data/spec/javascripts/coffeescripts/jquery.aa.popover-spec.js.coffee +82 -0
  212. data/spec/javascripts/coffeescripts/jquery.aa.table-checkbox-toggler-spec.js.coffee +34 -0
  213. data/spec/javascripts/compiled/jquery.aa.checkbox-toggler-spec.js +60 -0
  214. data/spec/javascripts/compiled/jquery.aa.popover-spec.js +106 -0
  215. data/spec/javascripts/compiled/jquery.aa.table-checkbox-toggler-spec.js +37 -0
  216. data/spec/javascripts/fixtures/checkboxes.html +9 -0
  217. data/spec/javascripts/fixtures/table_checkboxes.html +17 -0
  218. data/spec/javascripts/helpers/SpecHelper.js +3 -0
  219. data/spec/javascripts/helpers/vendor/jasmine-fixture-0.0.5.js +108 -0
  220. data/spec/javascripts/helpers/vendor/jasmine-jquery.js +288 -0
  221. data/spec/javascripts/helpers/vendor/sinon-1.2.0.js +2915 -0
  222. data/spec/javascripts/support/jasmine.yml +74 -0
  223. data/spec/javascripts/support/jasmine_config.rb +23 -0
  224. data/spec/javascripts/support/jasmine_runner.rb +32 -0
  225. data/spec/javascripts/support/jquery-ui-1.8.16.custom.min.js +34 -0
  226. data/spec/javascripts/support/jquery.min.js +4 -0
  227. data/spec/spec_helper.rb +13 -13
  228. data/spec/spec_helper_without_rails.rb +2 -3
  229. data/spec/support/detect_rails_version.rb +16 -10
  230. data/spec/support/rails_template.rb +13 -1
  231. data/spec/support/templates/admin/stores.rb +1 -0
  232. data/spec/support/templates/en.yml +6 -0
  233. data/spec/unit/action_builder_spec.rb +38 -0
  234. data/spec/unit/application_spec.rb +12 -16
  235. data/spec/unit/base_controller_shared_examples.rb +3 -6
  236. data/spec/unit/batch_actions/resource_spec.rb +91 -0
  237. data/spec/unit/batch_actions/settings_spec.rb +61 -0
  238. data/spec/unit/breadcrumbs_spec.rb +33 -0
  239. data/spec/unit/comments_spec.rb +6 -0
  240. data/spec/unit/config_shared_examples.rb +17 -64
  241. data/spec/unit/csv_builder_spec.rb +12 -2
  242. data/spec/unit/dashboard_controller_spec.rb +11 -5
  243. data/spec/unit/dsl_include_spec.rb +20 -0
  244. data/spec/unit/{filter_form_builder_spec.rb → filters/filter_form_builder_spec.rb} +10 -7
  245. data/spec/unit/filters/resource_spec.rb +60 -0
  246. data/spec/unit/form_builder_spec.rb +180 -28
  247. data/spec/unit/helpers/collection_spec.rb +65 -0
  248. data/spec/unit/menu_item_spec.rb +48 -53
  249. data/spec/unit/menu_spec.rb +46 -32
  250. data/spec/unit/namespace/register_page_spec.rb +0 -6
  251. data/spec/unit/namespace/register_resource_spec.rb +1 -8
  252. data/spec/unit/namespace_spec.rb +8 -2
  253. data/spec/unit/page_spec.rb +20 -8
  254. data/spec/unit/resource/naming_spec.rb +27 -26
  255. data/spec/unit/resource/sidebars_spec.rb +0 -7
  256. data/spec/unit/resource_collection_spec.rb +11 -11
  257. data/spec/unit/resource_controller/collection_spec.rb +23 -1
  258. data/spec/unit/resource_controller/sidebars_spec.rb +46 -0
  259. data/spec/unit/resource_controller_spec.rb +43 -0
  260. data/spec/unit/resource_registration_spec.rb +2 -13
  261. data/spec/unit/resource_spec.rb +0 -42
  262. data/spec/unit/routing_spec.rb +60 -14
  263. data/spec/unit/scope_spec.rb +7 -0
  264. data/spec/unit/view_factory_spec.rb +9 -6
  265. data/spec/unit/view_helpers/fields_for_spec.rb +41 -0
  266. data/spec/unit/view_helpers/form_helper_spec.rb +18 -0
  267. data/spec/unit/views/components/action_list_popover_spec.rb +30 -0
  268. data/spec/unit/views/components/attributes_table_spec.rb +32 -20
  269. data/spec/unit/views/components/batch_action_popover_spec.rb +33 -0
  270. data/spec/unit/views/components/blank_slate_spec.rb +5 -3
  271. data/spec/unit/views/components/columns_spec.rb +32 -22
  272. data/spec/unit/views/components/paginated_collection_spec.rb +54 -12
  273. data/spec/unit/views/components/panel_spec.rb +11 -6
  274. data/spec/unit/views/components/popover_spec.rb +33 -0
  275. data/spec/unit/views/components/sidebar_section_spec.rb +6 -6
  276. data/spec/unit/views/components/site_title_spec.rb +78 -0
  277. data/spec/unit/views/components/status_tag_spec.rb +17 -10
  278. data/spec/unit/views/components/table_for_spec.rb +37 -17
  279. data/spec/unit/views/pages/layout_spec.rb +51 -10
  280. data/spec/unit/views/tabbed_navigation_spec.rb +44 -23
  281. data/tasks/js.rake +32 -0
  282. data/tasks/test.rake +1 -1
  283. metadata +233 -200
  284. data/lib/active_admin/arbre.rb +0 -22
  285. data/lib/active_admin/arbre/builder.rb +0 -125
  286. data/lib/active_admin/arbre/context.rb +0 -45
  287. data/lib/active_admin/arbre/html/attributes.rb +0 -20
  288. data/lib/active_admin/arbre/html/class_list.rb +0 -24
  289. data/lib/active_admin/arbre/html/collection.rb +0 -27
  290. data/lib/active_admin/arbre/html/document.rb +0 -42
  291. data/lib/active_admin/arbre/html/element.rb +0 -161
  292. data/lib/active_admin/arbre/html/html5_elements.rb +0 -47
  293. data/lib/active_admin/arbre/html/tag.rb +0 -145
  294. data/lib/active_admin/arbre/html/text_node.rb +0 -35
  295. data/lib/active_admin/filter_form_builder.rb +0 -53
  296. data/lib/active_admin/renderer.rb +0 -87
  297. data/lib/active_admin/resource_controller/filters.rb +0 -58
  298. data/lib/active_admin/stylesheets/active_admin/mixins/_utilities.scss +0 -0
  299. data/lib/active_admin/view_helpers/filter_form_helper.rb +0 -36
  300. data/lib/active_admin/view_helpers/renderer_helper.rb +0 -29
  301. data/lib/active_admin/views/header_renderer.rb +0 -82
  302. data/lib/generators/active_admin/assets/templates/dashboards.rb +0 -36
  303. data/lib/generators/active_admin/install/templates/dashboards.rb +0 -44
  304. data/spec/unit/arbre/context_spec.rb +0 -35
  305. data/spec/unit/arbre/html/element_finder_methods_spec.rb +0 -110
  306. data/spec/unit/arbre/html/element_spec.rb +0 -236
  307. data/spec/unit/arbre/html/tag_attributes_spec.rb +0 -61
  308. data/spec/unit/arbre/html/tag_spec.rb +0 -63
  309. data/spec/unit/arbre/html_spec.rb +0 -228
  310. data/spec/unit/renderer_spec.rb +0 -126
@@ -12,21 +12,21 @@ module ActiveAdmin
12
12
 
13
13
  private
14
14
 
15
-
16
15
  def add_classes_to_body
17
16
  @body.add_class(params[:action])
18
17
  @body.add_class(params[:controller].gsub('/', '_'))
18
+ @body.add_class("active_admin")
19
19
  @body.add_class("logged_in")
20
20
  @body.add_class(active_admin_namespace.name.to_s + "_namespace")
21
21
  end
22
22
 
23
23
  def build_active_admin_head
24
24
  within @head do
25
- meta :"http-equiv" => "Content-type", :content => "text/html; charset=utf-8"
26
- insert_tag Arbre::HTML::Title, [title, active_admin_application.site_title].join(" | ")
25
+ insert_tag Arbre::HTML::Title, [title, render_or_call_method_or_proc_on(self, active_admin_application.site_title)].join(" | ")
27
26
  active_admin_application.stylesheets.each do |style|
28
27
  text_node(stylesheet_link_tag(style.path, style.options).html_safe)
29
28
  end
29
+
30
30
  active_admin_application.javascripts.each do |path|
31
31
  script :src => javascript_path(path), :type => "text/javascript"
32
32
  end
@@ -46,52 +46,13 @@ module ActiveAdmin
46
46
  end
47
47
 
48
48
  def build_header
49
- div :id => "header" do
50
- render view_factory.header
51
- end
49
+ insert_tag view_factory.header, active_admin_namespace, current_menu
52
50
  end
53
51
 
54
52
  def build_title_bar
55
- div :id => "title_bar" do
56
- build_titlebar_left
57
- build_titlebar_right
58
- end
59
- end
60
-
61
- def build_titlebar_left
62
- div :id => "titlebar_left" do
63
- build_breadcrumb
64
- build_title_tag
65
- end
66
- end
67
-
68
- def build_titlebar_right
69
- div :id => "titlebar_right" do
70
- build_action_items
71
- end
72
- end
73
-
74
- def build_breadcrumb(separator = "/")
75
- links = breadcrumb_links
76
- return if links.empty?
77
- span :class => "breadcrumb" do
78
- links.each do |link|
79
- text_node link
80
- span(separator, :class => "breadcrumb_sep")
81
- end
82
- end
53
+ insert_tag view_factory.title_bar, title, action_items_for_action
83
54
  end
84
55
 
85
- def build_title_tag
86
- h2(title, :id => 'page_title')
87
- end
88
-
89
- def build_action_items
90
- if active_admin_config && active_admin_config.action_items?
91
- items = active_admin_config.action_items_for(params[:action], self)
92
- insert_tag view_factory.action_items, items
93
- end
94
- end
95
56
 
96
57
  def build_page_content
97
58
  build_flash_messages
@@ -132,7 +93,6 @@ module ActiveAdmin
132
93
  set_ivar_on_view "@page_title", title
133
94
  end
134
95
 
135
-
136
96
  # Returns the sidebar sections to render for the current action
137
97
  def sidebar_sections_for_action
138
98
  if active_admin_config && active_admin_config.sidebar_sections?
@@ -142,6 +102,14 @@ module ActiveAdmin
142
102
  end
143
103
  end
144
104
 
105
+ def action_items_for_action
106
+ if active_admin_config && active_admin_config.action_items?
107
+ active_admin_config.action_items_for(params[:action], self)
108
+ else
109
+ []
110
+ end
111
+ end
112
+
145
113
  # Renders the sidebar
146
114
  def build_sidebar
147
115
  div :id => "sidebar" do
@@ -157,9 +125,7 @@ module ActiveAdmin
157
125
 
158
126
  # Renders the content for the footer
159
127
  def build_footer
160
- div :id => "footer" do
161
- para "Powered by #{link_to("Active Admin", "http://www.activeadmin.info")} #{ActiveAdmin::VERSION}".html_safe
162
- end
128
+ insert_tag view_factory.footer
163
129
  end
164
130
 
165
131
  end
@@ -6,7 +6,7 @@ module ActiveAdmin
6
6
 
7
7
  def title
8
8
  I18n.t("active_admin.#{params[:action]}_model",
9
- :model => active_admin_config.resource_name)
9
+ :model => active_admin_config.resource_label)
10
10
  end
11
11
 
12
12
  def form_presenter
@@ -30,7 +30,7 @@ module ActiveAdmin
30
30
  def default_form_options
31
31
  {
32
32
  :url => default_form_path,
33
- :as => active_admin_config.underscored_resource_name
33
+ :as => active_admin_config.resource_name.singular
34
34
  }
35
35
  end
36
36
 
@@ -41,7 +41,7 @@ module ActiveAdmin
41
41
  def default_form_config
42
42
  ActiveAdmin::PagePresenter.new do |f|
43
43
  f.inputs
44
- f.buttons
44
+ f.actions
45
45
  end
46
46
  end
47
47
  end
@@ -1,3 +1,5 @@
1
+ require 'active_admin/helpers/collection'
2
+
1
3
  module ActiveAdmin
2
4
  module Views
3
5
  module Pages
@@ -5,7 +7,11 @@ module ActiveAdmin
5
7
  class Index < Base
6
8
 
7
9
  def title
8
- active_admin_config.plural_resource_name
10
+ if config[:title].is_a? String
11
+ config[:title]
12
+ else
13
+ active_admin_config.plural_resource_label
14
+ end
9
15
  end
10
16
 
11
17
  def config
@@ -15,12 +21,33 @@ module ActiveAdmin
15
21
  # Render's the index configuration that was set in the
16
22
  # controller. Defaults to rendering the ActiveAdmin::Pages::Index::Table
17
23
  def main_content
18
- build_scopes
24
+ wrap_with_batch_action_form do
25
+ build_table_tools
26
+ build_collection
27
+ end
28
+ end
29
+
30
+ protected
31
+
32
+ def wrap_with_batch_action_form(&block)
33
+ if active_admin_config.batch_actions.any?
34
+ batch_action_form(&block)
35
+ else
36
+ block.call
37
+ end
38
+ end
39
+
40
+ include ::ActiveAdmin::Helpers::Collection
41
+
42
+ def items_in_collection?
43
+ !collection_is_empty?
44
+ end
19
45
 
46
+ def build_collection
20
47
  if items_in_collection?
21
48
  render_index
22
49
  else
23
- if params[:q]
50
+ if params[:q] || params[:scope]
24
51
  render_empty_results
25
52
  else
26
53
  render_blank_slate
@@ -28,19 +55,6 @@ module ActiveAdmin
28
55
  end
29
56
  end
30
57
 
31
- protected
32
-
33
- def items_in_collection?
34
- # Remove the order clause before limiting to 1. This ensures that
35
- # any referenced columns in the order will not try to be accessed.
36
- #
37
- # When we call #exists?, the query's select statement is changed to "1".
38
- #
39
- # If we don't reorder, there may be some columns referenced in the order
40
- # clause that requires the original select.
41
- collection.reorder("").limit(1).exists?
42
- end
43
-
44
58
  # TODO: Refactor to new HTML DSL
45
59
  def build_download_format_links(formats = [:csv, :xml, :json])
46
60
  links = formats.collect do |format|
@@ -49,22 +63,40 @@ module ActiveAdmin
49
63
  text_node [I18n.t('active_admin.download'), links].flatten.join("&nbsp;").html_safe
50
64
  end
51
65
 
66
+ def build_table_tools
67
+ div :class => "table_tools" do
68
+ build_batch_actions_selector
69
+ build_scopes
70
+ end
71
+ end
72
+
73
+ def build_batch_actions_selector
74
+ if active_admin_config.batch_actions.any?
75
+ insert_tag view_factory.batch_action_selector, active_admin_config.batch_actions
76
+ end
77
+ end
78
+
52
79
  def build_scopes
53
80
  if active_admin_config.scopes.any?
54
81
  scope_options = {
55
82
  :scope_count => config[:scope_count].nil? ? true : config[:scope_count]
56
83
  }
57
84
 
58
- div :class => "table_tools" do
59
- scopes_renderer active_admin_config.scopes, scope_options
60
- end
85
+ scopes_renderer active_admin_config.scopes, scope_options
61
86
  end
62
87
  end
63
88
 
64
89
  # Creates a default configuration for the resource class. This is a table
65
90
  # with each column displayed as well as all the default actions
66
91
  def default_index_config
67
- @default_index_config ||= ::ActiveAdmin::PagePresenter.new(:as => :table)
92
+ @default_index_config ||= ::ActiveAdmin::PagePresenter.new(:as => :table) do |display|
93
+ selectable_column
94
+ id_column
95
+ resource_class.content_columns.each do |col|
96
+ column col.name.to_sym
97
+ end
98
+ default_actions
99
+ end
68
100
  end
69
101
 
70
102
  # Returns the actual class for renderering the main content on the index
@@ -81,7 +113,7 @@ module ActiveAdmin
81
113
  end
82
114
 
83
115
  def render_blank_slate
84
- blank_slate_content = I18n.t("active_admin.blank_slate.content", :resource_name => active_admin_config.plural_resource_name)
116
+ blank_slate_content = I18n.t("active_admin.blank_slate.content", :resource_name => active_admin_config.plural_resource_label)
85
117
  if controller.action_methods.include?('new')
86
118
  blank_slate_content += " " + link_to(I18n.t("active_admin.blank_slate.link"), new_resource_path)
87
119
  end
@@ -89,7 +121,7 @@ module ActiveAdmin
89
121
  end
90
122
 
91
123
  def render_empty_results
92
- empty_results_content = I18n.t("active_admin.pagination.empty", :model => active_admin_config.resource_name.pluralize)
124
+ empty_results_content = I18n.t("active_admin.pagination.empty", :model => active_admin_config.plural_resource_label)
93
125
  insert_tag(view_factory.blank_slate, empty_results_content)
94
126
  end
95
127
 
@@ -98,8 +130,8 @@ module ActiveAdmin
98
130
  paginator = config[:paginator].nil? ? true : config[:paginator]
99
131
  download_links = config[:download_links].nil? ? true : config[:download_links]
100
132
 
101
- paginated_collection(collection, :entry_name => active_admin_config.resource_name,
102
- :entries_name => active_admin_config.plural_resource_name,
133
+ paginated_collection(collection, :entry_name => active_admin_config.resource_label,
134
+ :entries_name => active_admin_config.plural_resource_label,
103
135
  :download_links => download_links,
104
136
  :paginator => paginator) do
105
137
  div :class => 'index_content' do
@@ -13,8 +13,8 @@ module ActiveAdmin
13
13
  # Render the content_for(:layout) into the main content area
14
14
  def main_content
15
15
  content_for_layout = content_for(:layout)
16
- if content_for_layout.is_a?(Arbre::HTML::Element)
17
- current_dom_context.add_child content_for_layout.children
16
+ if content_for_layout.is_a?(Arbre::Element)
17
+ current_arbre_element.add_child content_for_layout.children
18
18
  else
19
19
  text_node content_for_layout
20
20
  end
@@ -4,9 +4,7 @@ module ActiveAdmin
4
4
  class Page < Base
5
5
 
6
6
  def main_content
7
- page_presenter = active_admin_config.get_page_presenter(:index)
8
-
9
- if page_presenter && page_presenter.block
7
+ if page_presenter.block
10
8
  instance_exec &page_presenter.block
11
9
  else
12
10
  nil
@@ -15,8 +13,16 @@ module ActiveAdmin
15
13
 
16
14
  protected
17
15
 
16
+ def page_presenter
17
+ active_admin_config.get_page_presenter(:index) || ActiveAdmin::PagePresenter.new
18
+ end
19
+
18
20
  def title
19
- active_admin_config.name
21
+ if page_presenter[:title]
22
+ render_or_call_method_or_proc_on self, page_presenter[:title]
23
+ else
24
+ active_admin_config.name
25
+ end
20
26
  end
21
27
  end
22
28
  end
@@ -4,15 +4,12 @@ module ActiveAdmin
4
4
  class Show < Base
5
5
 
6
6
  def config
7
- active_admin_config.get_page_presenter(:show) || ::ActiveAdmin::PagePresenter.new
7
+ active_admin_config.get_page_presenter(:show) || super
8
8
  end
9
9
 
10
10
  def title
11
- case config[:title]
12
- when Symbol, Proc
13
- call_method_or_proc_on(resource, config[:title])
14
- when String
15
- config[:title]
11
+ if config[:title]
12
+ render_or_call_method_or_proc_on(resource, config[:title])
16
13
  else
17
14
  default_title
18
15
  end
@@ -28,7 +25,7 @@ module ActiveAdmin
28
25
  end
29
26
 
30
27
  def attributes_table(*args, &block)
31
- panel(I18n.t('active_admin.details', :model => active_admin_config.resource_name)) do
28
+ panel(I18n.t('active_admin.details', :model => active_admin_config.resource_label)) do
32
29
  attributes_table_for resource, *args, &block
33
30
  end
34
31
  end
@@ -36,7 +33,13 @@ module ActiveAdmin
36
33
  protected
37
34
 
38
35
  def default_title
39
- "#{active_admin_config.resource_name} ##{resource.id}"
36
+ title = display_name(resource)
37
+
38
+ if title.nil? || title.empty? || title == resource.to_s
39
+ title = "#{active_admin_config.resource_label} ##{resource.id}"
40
+ end
41
+
42
+ title
40
43
  end
41
44
 
42
45
  module DefaultMainContent
@@ -46,10 +46,10 @@ module ActiveAdmin
46
46
 
47
47
  if item.children.any?
48
48
  li_element.add_class "has_nested"
49
- text_node link_to(item.name, link_path)
49
+ text_node link_to(item.label, link_path)
50
50
  render_nested_menu(item)
51
51
  else
52
- link_to item.name, link_path
52
+ link_to item.label, link_path
53
53
  end
54
54
  end
55
55
  end
@@ -79,7 +79,7 @@ module ActiveAdmin
79
79
 
80
80
  # Returns true if the menu item name is @current_tab (set in controller)
81
81
  def current?(menu_item)
82
- assigns[:current_tab].split("/").include?(menu_item.name) unless assigns[:current_tab].blank?
82
+ assigns[:current_tab] == menu_item || menu_item.children.include?(assigns[:current_tab])
83
83
  end
84
84
 
85
85
  # Returns an Array of items to display
@@ -0,0 +1,50 @@
1
+ module ActiveAdmin
2
+ module Views
3
+ class TitleBar < Component
4
+
5
+ def build(title, action_items)
6
+ super(:id => "title_bar")
7
+ @title = title
8
+ @action_items = action_items
9
+
10
+ build_titlebar_left
11
+ build_titlebar_right
12
+ end
13
+
14
+ private
15
+
16
+ def build_titlebar_left
17
+ div :id => "titlebar_left" do
18
+ build_breadcrumb
19
+ build_title_tag
20
+ end
21
+ end
22
+
23
+ def build_titlebar_right
24
+ div :id => "titlebar_right" do
25
+ build_action_items
26
+ end
27
+ end
28
+
29
+ def build_breadcrumb(separator = "/")
30
+ links = breadcrumb_links
31
+ return if links.empty?
32
+ span :class => "breadcrumb" do
33
+ links.each do |link|
34
+ text_node link
35
+ span(separator, :class => "breadcrumb_sep")
36
+ end
37
+ end
38
+ end
39
+
40
+ def build_title_tag
41
+ h2(@title, :id => 'page_title')
42
+ end
43
+
44
+ def build_action_items
45
+ insert_tag(view_factory.action_items, @action_items) if @action_items.any?
46
+ end
47
+
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,41 @@
1
+ module ActiveAdmin
2
+ module Views
3
+ class UtilityNav < Component
4
+ def tag_name
5
+ "p"
6
+ end
7
+
8
+ def build(namespace)
9
+ super(:id => "utility_nav", :class => "header-item")
10
+ @namespace = namespace
11
+
12
+ if current_active_admin_user?
13
+ build_current_user
14
+ build_logout_link
15
+ end
16
+ end
17
+
18
+ private
19
+
20
+ def build_current_user
21
+ span display_name(current_active_admin_user), :class => "current_user"
22
+ end
23
+
24
+ def build_logout_link
25
+ if @namespace.logout_link_path
26
+ text_node helpers.link_to(I18n.t('active_admin.logout'), active_admin_logout_path, :method => logout_method)
27
+ end
28
+ end
29
+
30
+ # Returns the logout path from the application settings
31
+ def active_admin_logout_path
32
+ helpers.render_or_call_method_or_proc_on(self, @namespace.logout_link_path)
33
+ end
34
+
35
+ def logout_method
36
+ @namespace.logout_link_method || :get
37
+ end
38
+
39
+ end
40
+ end
41
+ end