andrewroth_activeadmin 0.3.4 → 0.3.4.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (201) hide show
  1. data/CHANGELOG.md +159 -3
  2. data/CONTRIBUTING.md +113 -0
  3. data/LICENSE +1 -1
  4. data/README.rdoc +19 -20
  5. data/activeadmin.gemspec +3 -1
  6. data/app/assets/javascripts/active_admin/application.js +9 -0
  7. data/app/assets/javascripts/active_admin/base.js +4 -12
  8. data/app/assets/stylesheets/active_admin/_base.css.scss +16 -340
  9. data/app/assets/stylesheets/active_admin/_forms.css.scss +13 -7
  10. data/app/assets/stylesheets/active_admin/_header.css.scss +23 -4
  11. data/app/assets/stylesheets/active_admin/components/_blank_slates.scss +31 -0
  12. data/app/assets/stylesheets/active_admin/components/_breadcrumbs.scss +20 -0
  13. data/app/assets/stylesheets/active_admin/components/_buttons.scss +12 -0
  14. data/app/assets/stylesheets/active_admin/components/_flash_messages.css.scss +2 -0
  15. data/app/assets/stylesheets/active_admin/components/_grid.scss +9 -0
  16. data/app/assets/stylesheets/active_admin/components/_links.scss +5 -0
  17. data/app/assets/stylesheets/active_admin/components/_pagination.scss +34 -0
  18. data/app/assets/stylesheets/active_admin/components/_panels.scss +6 -0
  19. data/app/assets/stylesheets/active_admin/components/_scopes.scss +10 -0
  20. data/app/assets/stylesheets/active_admin/components/_status_tags.scss +12 -0
  21. data/app/assets/stylesheets/active_admin/components/_table_tools.css.scss +101 -0
  22. data/app/assets/stylesheets/active_admin/mixins/_all.css.scss +2 -1
  23. data/app/assets/stylesheets/active_admin/mixins/_buttons.css.scss +50 -13
  24. data/app/assets/stylesheets/active_admin/mixins/_gradients.css.scss +9 -1
  25. data/app/assets/stylesheets/active_admin/mixins/_sections.css.scss +7 -5
  26. data/app/assets/stylesheets/active_admin/mixins/_shadows.css.scss +1 -0
  27. data/app/assets/stylesheets/active_admin/mixins/_typography.scss +3 -0
  28. data/app/assets/stylesheets/active_admin/mixins/_variables.css.scss +1 -0
  29. data/app/assets/stylesheets/active_admin/pages/_dashboard.scss +5 -0
  30. data/app/assets/stylesheets/active_admin/pages/_logged_out.scss +44 -0
  31. data/app/assets/stylesheets/active_admin/structure/_footer.scss +14 -0
  32. data/app/assets/stylesheets/active_admin/structure/_main_structure.scss +26 -0
  33. data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +44 -0
  34. data/app/views/active_admin/devise/passwords/edit.html.erb +1 -1
  35. data/app/views/active_admin/devise/passwords/new.html.erb +1 -1
  36. data/app/views/active_admin/devise/sessions/new.html.erb +1 -1
  37. data/app/views/active_admin/devise/shared/_links.erb +1 -1
  38. data/app/views/active_admin/devise/unlocks/new.html.erb +1 -1
  39. data/app/views/active_admin/page/index.html.arb +1 -0
  40. data/app/views/layouts/active_admin_logged_out.html.erb +2 -2
  41. data/cucumber.yml +3 -2
  42. data/docs/1-general-configuration.md +46 -10
  43. data/docs/6-show-screens.md +7 -0
  44. data/docs/8-custom-actions.md +12 -2
  45. data/docs/9-custom-pages.md +84 -0
  46. data/features/belongs_to.feature +27 -0
  47. data/features/comments/commenting.feature +3 -2
  48. data/features/dashboard.feature +18 -0
  49. data/features/development_reloading.feature +19 -0
  50. data/features/index/filter_with_check_boxes.feature +25 -0
  51. data/features/index/index_as_table.feature +14 -0
  52. data/features/index/index_scopes.feature +42 -0
  53. data/features/index/pagination.feature +19 -1
  54. data/features/menu.feature +22 -2
  55. data/features/registering_assets.feature +2 -2
  56. data/features/registering_pages.feature +66 -0
  57. data/features/specifying_actions.feature +5 -0
  58. data/features/step_definitions/action_item_steps.rb +2 -6
  59. data/features/step_definitions/action_link_steps.rb +7 -0
  60. data/features/step_definitions/additional_web_steps.rb +8 -0
  61. data/features/step_definitions/asset_steps.rb +5 -1
  62. data/features/step_definitions/breadcrumb_steps.rb +5 -0
  63. data/features/step_definitions/configuration_steps.rb +56 -8
  64. data/features/step_definitions/dashboard_steps.rb +5 -1
  65. data/features/step_definitions/factory_steps.rb +9 -2
  66. data/features/step_definitions/flash_steps.rb +9 -1
  67. data/features/step_definitions/index_scope_steps.rb +16 -4
  68. data/features/step_definitions/member_link_steps.rb +7 -0
  69. data/features/step_definitions/site_title_steps.rb +15 -0
  70. data/features/support/paths.rb +6 -0
  71. data/features/users/logging_out.feature +11 -0
  72. data/lib/active_admin.rb +25 -10
  73. data/lib/active_admin/application.rb +63 -20
  74. data/lib/active_admin/arbre/html/element.rb +10 -0
  75. data/lib/active_admin/asset_registration.rb +15 -2
  76. data/lib/active_admin/base_controller.rb +61 -0
  77. data/lib/active_admin/{resource_controller → base_controller}/menu.rb +1 -1
  78. data/lib/active_admin/comments.rb +48 -54
  79. data/lib/active_admin/comments/comment.rb +13 -2
  80. data/lib/active_admin/comments/namespace_helper.rb +1 -1
  81. data/lib/active_admin/comments/views/active_admin_comments.rb +7 -3
  82. data/lib/active_admin/dashboards.rb +4 -0
  83. data/lib/active_admin/dashboards/dashboard_controller.rb +20 -4
  84. data/lib/active_admin/dsl.rb +6 -159
  85. data/lib/active_admin/event.rb +5 -3
  86. data/lib/active_admin/filter_form_builder.rb +53 -0
  87. data/lib/active_admin/form_builder.rb +25 -19
  88. data/lib/active_admin/inputs.rb +14 -0
  89. data/lib/active_admin/inputs/datepicker_input.rb +11 -0
  90. data/lib/active_admin/inputs/filter_base.rb +46 -0
  91. data/lib/active_admin/inputs/filter_check_boxes_input.rb +40 -0
  92. data/lib/active_admin/inputs/filter_date_range_input.rb +34 -0
  93. data/lib/active_admin/inputs/filter_numeric_input.rb +55 -0
  94. data/lib/active_admin/inputs/filter_select_input.rb +23 -0
  95. data/lib/active_admin/inputs/filter_string_input.rb +22 -0
  96. data/lib/active_admin/locales/ca.yml +44 -0
  97. data/lib/active_admin/locales/cs.yml +14 -10
  98. data/lib/active_admin/locales/de.yml +43 -0
  99. data/lib/active_admin/locales/en.yml +5 -0
  100. data/lib/active_admin/locales/hr.yml +40 -0
  101. data/lib/active_admin/locales/ko.yml +40 -0
  102. data/lib/active_admin/locales/lv.yml +43 -0
  103. data/lib/active_admin/locales/nl.yml +40 -0
  104. data/lib/active_admin/locales/no-NB.yml +40 -0
  105. data/lib/active_admin/locales/pl.yml +7 -1
  106. data/lib/active_admin/locales/pt-BR.yml +6 -2
  107. data/lib/active_admin/namespace.rb +48 -33
  108. data/lib/active_admin/page.rb +54 -0
  109. data/lib/active_admin/page_controller.rb +15 -0
  110. data/lib/active_admin/page_dsl.rb +21 -0
  111. data/lib/active_admin/page_presenter.rb +30 -0
  112. data/lib/active_admin/resource.rb +38 -44
  113. data/lib/active_admin/resource/action_items.rb +5 -0
  114. data/lib/active_admin/resource/belongs_to.rb +4 -2
  115. data/lib/active_admin/resource/controllers.rb +35 -0
  116. data/lib/active_admin/resource/menu.rb +1 -2
  117. data/lib/active_admin/resource/naming.rb +43 -31
  118. data/lib/active_admin/resource/page_presenters.rb +28 -0
  119. data/lib/active_admin/resource/scopes.rb +16 -3
  120. data/lib/active_admin/resource/sidebars.rb +4 -0
  121. data/lib/active_admin/resource_collection.rb +88 -0
  122. data/lib/active_admin/resource_controller.rb +18 -54
  123. data/lib/active_admin/resource_controller/action_builder.rb +1 -1
  124. data/lib/active_admin/resource_controller/actions.rb +1 -1
  125. data/lib/active_admin/resource_controller/callbacks.rb +1 -1
  126. data/lib/active_admin/resource_controller/collection.rb +8 -4
  127. data/lib/active_admin/resource_controller/filters.rb +1 -1
  128. data/lib/active_admin/resource_controller/resource_class_methods.rb +24 -0
  129. data/lib/active_admin/resource_controller/scoping.rb +1 -1
  130. data/lib/active_admin/resource_controller/sidebars.rb +1 -1
  131. data/lib/active_admin/resource_dsl.rb +157 -0
  132. data/lib/active_admin/router.rb +21 -14
  133. data/lib/active_admin/scope.rb +15 -3
  134. data/lib/active_admin/version.rb +1 -1
  135. data/lib/active_admin/view_factory.rb +4 -3
  136. data/lib/active_admin/view_helpers/auto_link_helper.rb +1 -10
  137. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +25 -21
  138. data/lib/active_admin/view_helpers/filter_form_helper.rb +0 -150
  139. data/lib/active_admin/views/components/attributes_table.rb +1 -1
  140. data/lib/active_admin/views/components/paginated_collection.rb +42 -13
  141. data/lib/active_admin/views/components/scopes.rb +17 -17
  142. data/lib/active_admin/views/components/status_tag.rb +6 -5
  143. data/lib/active_admin/views/components/table_for.rb +6 -2
  144. data/lib/active_admin/views/header_renderer.rb +31 -12
  145. data/lib/active_admin/views/index_as_block.rb +2 -2
  146. data/lib/active_admin/views/index_as_blog.rb +3 -3
  147. data/lib/active_admin/views/index_as_grid.rb +4 -4
  148. data/lib/active_admin/views/index_as_table.rb +13 -6
  149. data/lib/active_admin/views/pages/base.rb +4 -4
  150. data/lib/active_admin/views/pages/form.rb +49 -0
  151. data/lib/active_admin/views/pages/index.rb +18 -6
  152. data/lib/active_admin/views/pages/page.rb +24 -0
  153. data/lib/active_admin/views/pages/show.rb +1 -1
  154. data/lib/generators/active_admin/assets/assets_generator.rb +19 -1
  155. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +38 -12
  156. data/lib/generators/active_admin/install/templates/dashboards.rb +6 -0
  157. data/spec/spec_helper.rb +4 -0
  158. data/spec/support/rails_template.rb +11 -0
  159. data/spec/support/templates/cucumber_with_reloading.rb +5 -0
  160. data/spec/unit/active_admin_spec.rb +8 -0
  161. data/spec/unit/application_spec.rb +48 -2
  162. data/spec/unit/arbre/html/element_finder_methods_spec.rb +58 -2
  163. data/spec/unit/asset_registration_spec.rb +9 -3
  164. data/spec/unit/auto_link_spec.rb +2 -2
  165. data/spec/unit/base_controller_shared_examples.rb +28 -0
  166. data/spec/unit/base_controller_spec.rb +8 -0
  167. data/spec/unit/belongs_to_spec.rb +30 -33
  168. data/spec/unit/comments_spec.rb +45 -15
  169. data/spec/unit/config_shared_examples.rb +108 -0
  170. data/spec/unit/dashboard_controller_spec.rb +44 -0
  171. data/spec/unit/event_spec.rb +6 -0
  172. data/spec/unit/filter_form_builder_spec.rb +9 -0
  173. data/spec/unit/form_builder_spec.rb +8 -14
  174. data/spec/unit/namespace/register_page_spec.rb +102 -0
  175. data/spec/unit/namespace/register_resource_spec.rb +188 -0
  176. data/spec/unit/namespace_spec.rb +11 -183
  177. data/spec/unit/page_controller_spec.rb +8 -0
  178. data/spec/unit/page_spec.rb +60 -0
  179. data/spec/unit/resource/menu_spec.rb +1 -51
  180. data/spec/unit/resource/naming_spec.rb +24 -19
  181. data/spec/unit/resource/page_presenters_spec.rb +32 -0
  182. data/spec/unit/resource/scopes_spec.rb +13 -0
  183. data/spec/unit/resource_collection_spec.rb +101 -0
  184. data/spec/unit/resource_controller_spec.rb +40 -32
  185. data/spec/unit/{registration_spec.rb → resource_registration_spec.rb} +0 -0
  186. data/spec/unit/resource_spec.rb +8 -24
  187. data/spec/unit/routing_spec.rb +50 -1
  188. data/spec/unit/scope_spec.rb +18 -4
  189. data/spec/unit/views/components/paginated_collection_spec.rb +150 -0
  190. data/spec/unit/views/components/status_tag_spec.rb +9 -0
  191. data/tasks/test.rake +43 -27
  192. metadata +140 -31
  193. data/app/assets/javascripts/active_admin/vendor.js +0 -382
  194. data/lib/active_admin/comments/configuration.rb +0 -18
  195. data/lib/active_admin/page_config.rb +0 -15
  196. data/lib/active_admin/resource_controller/form.rb +0 -42
  197. data/lib/active_admin/resource_controller/page_configurations.rb +0 -53
  198. data/lib/active_admin/views/pages/edit.rb +0 -28
  199. data/lib/active_admin/views/pages/new.rb +0 -28
  200. data/lib/generators/active_admin/assets/templates/3.0/active_admin.js +0 -427
  201. data/spec/integration/belongs_to_spec.rb +0 -42
@@ -6,30 +6,36 @@ module ActiveAdmin
6
6
  class Scopes < ActiveAdmin::Component
7
7
  builder_method :scopes_renderer
8
8
 
9
+ def default_class_name
10
+ "scopes table_tools_segmented_control"
11
+ end
12
+
13
+ def tag_name
14
+ 'ul'
15
+ end
16
+
9
17
  def build(scopes)
10
18
  scopes.each do |scope|
11
- build_scope(scope)
19
+ build_scope(scope) if call_method_or_proc_on(self, scope.display_if_block)
12
20
  end
13
21
  end
14
22
 
15
23
  protected
16
24
 
17
25
  def build_scope(scope)
18
- span :class => classes_for_scope(scope) do
26
+ li :class => classes_for_scope(scope) do
19
27
  begin
20
- scope_name = I18n.t!("active_admin.scopes.#{scope.scope_method}")
28
+ scope_name = I18n.t!("active_admin.scopes.#{scope.id}")
21
29
  rescue I18n::MissingTranslationData
22
30
  scope_name = scope.name
23
31
  end
24
32
 
25
- if current_scope?(scope)
26
- em(scope_name)
27
- else
28
- a(scope_name, :href => url_for(params.merge(:scope => scope.id, :page => 1)))
33
+ a :href => url_for(params.merge(:scope => scope.id, :page => 1)), :class => "table_tools_button" do
34
+ text_node scope_name
35
+ span :class => 'count' do
36
+ "(" + get_scope_count(scope).to_s + ")"
37
+ end
29
38
  end
30
- text_node(" ")
31
- scope_count(scope)
32
- text_node(" ")
33
39
  end
34
40
  end
35
41
 
@@ -47,12 +53,6 @@ module ActiveAdmin
47
53
  end
48
54
  end
49
55
 
50
- def scope_count(scope)
51
- span :class => 'count' do
52
- "(" + get_scope_count(scope).to_s + ")"
53
- end
54
- end
55
-
56
56
  include ActiveAdmin::ScopeChain
57
57
 
58
58
  # Return the count for the scope passed in.
@@ -61,7 +61,7 @@ module ActiveAdmin
61
61
  end
62
62
 
63
63
  def scoping_class
64
- assigns["before_scope_collection"] || active_admin_config.resource
64
+ assigns["before_scope_collection"] || active_admin_config.resource_class
65
65
  end
66
66
 
67
67
  end
@@ -16,7 +16,7 @@ module ActiveAdmin
16
16
  #
17
17
  # @param [String] status the status to display. One of the span classes will be an underscored version of the status.
18
18
  # @param [Symbol] type type of status. Will become a class of the span. ActiveAdmin provide style for :ok, :warning and :error.
19
- # @param [Hash] options such as :class, :id etc
19
+ # @param [Hash] options such as :class, :id and :label to override the default label
20
20
  #
21
21
  # @return [ActiveAdmin::Views::StatusTag]
22
22
  #
@@ -27,18 +27,19 @@ module ActiveAdmin
27
27
  # status_tag('active', :ok)
28
28
  # # => <span class='status active ok'>Active</span>
29
29
  #
30
- # status_tag('active', :ok, :class => 'important', :id => 'status_123')
31
- # # => <span class='status active ok important' id='status_123'>Active</span>
30
+ # status_tag('active', :ok, :class => 'important', :id => 'status_123', :label => 'on')
31
+ # # => <span class='status active ok important' id='status_123'>on</span>
32
32
  #
33
33
  def build(*args)
34
34
  options = args.extract_options!
35
35
  status = args[0]
36
36
  type = args[1]
37
+ label = options.delete(:label)
37
38
  classes = options.delete(:class)
38
39
 
39
- status = status.titleize if status
40
+ content = label || status.titleize if status
40
41
 
41
- super(status, options)
42
+ super(content, options)
42
43
 
43
44
  add_class(status_to_class(status)) if status
44
45
  add_class(type.to_s) if type
@@ -63,7 +63,7 @@ module ActiveAdmin
63
63
  if sortable? && col.sortable?
64
64
  build_sortable_header_for(col.title, col.sort_key)
65
65
  else
66
- th(col.title)
66
+ th(col.title, :class => (col.data.to_s.downcase.underscore if col.data.is_a?(Symbol)))
67
67
  end
68
68
  end
69
69
 
@@ -72,6 +72,10 @@ module ActiveAdmin
72
72
  if current_sort[0] == sort_key
73
73
  classes << "sorted-#{current_sort[1]}"
74
74
  end
75
+
76
+ header_class = title.downcase.underscore
77
+
78
+ classes << header_class
75
79
 
76
80
  th :class => classes do
77
81
  link_to(title, params.merge(:order => "#{sort_key}_#{order_for_sort_key(sort_key)}").except(:page))
@@ -86,7 +90,7 @@ module ActiveAdmin
86
90
  end
87
91
 
88
92
  def build_table_cell(col, item)
89
- td do
93
+ td(:class => (col.data.to_s.downcase if col.data.is_a?(Symbol))) do
90
94
  rvalue = call_method_or_proc_on(item, col.data, :exec => false)
91
95
  if col.data.is_a?(Symbol)
92
96
  rvalue = pretty_format(rvalue)
@@ -11,11 +11,30 @@ module ActiveAdmin
11
11
 
12
12
  protected
13
13
 
14
+ # Renders the title/branding area for the site
14
15
  def title
15
- if !active_admin_application.site_title_link || active_admin_application.site_title_link == ""
16
- content_tag 'h1', active_admin_application.site_title, :id => 'site_title'
16
+ if active_admin_namespace.site_title_image.blank?
17
+ title_text
17
18
  else
18
- content_tag 'h1', link_to(active_admin_application.site_title, active_admin_application.site_title_link), :id => 'site_title'
19
+ title_image
20
+ end
21
+ end
22
+
23
+ # Renders an image for the site's header/branding area
24
+ def title_image
25
+ if !active_admin_namespace.site_title_link.blank?
26
+ content_tag 'h1', link_to( image_tag(active_admin_namespace.site_title_image, :id => "site_title_image", :alt => active_admin_namespace.site_title), active_admin_namespace.site_title_link ), :id => "site_title"
27
+ else
28
+ content_tag 'h1', image_tag( active_admin_namespace.site_title_image, :id => "site_title_image", :alt => active_admin_namespace.site_title ), :id => "site_title"
29
+ end
30
+ end
31
+
32
+ # Renders a the site's header/branding area as a string
33
+ def title_text
34
+ if !active_admin_namespace.site_title_link || active_admin_namespace.site_title_link == ""
35
+ content_tag 'h1', active_admin_namespace.site_title, :id => 'site_title'
36
+ else
37
+ content_tag 'h1', link_to(active_admin_namespace.site_title, active_admin_namespace.site_title_link), :id => 'site_title'
19
38
  end
20
39
  end
21
40
 
@@ -24,32 +43,32 @@ module ActiveAdmin
24
43
  #
25
44
  # It uses the ActiveAdmin.tabs_renderer option
26
45
  def global_navigation
27
- render view_factory.global_navigation, current_menu
46
+ render view_factory.global_navigation, current_menu, :class => 'header-item'
28
47
  end
29
48
 
30
49
  def utility_navigation
31
- content_tag 'p', :id => "utility_nav" do
50
+ content_tag 'p', :id => "utility_nav", :class => 'header-item' do
32
51
  if current_active_admin_user?
33
52
  html = content_tag(:span, display_name(current_active_admin_user), :class => "current_user")
34
53
 
35
- if active_admin_application.logout_link_path
36
- html << link_to(I18n.t('active_admin.logout'), logout_path, :method => logout_method)
54
+ if active_admin_namespace.logout_link_path
55
+ html << link_to(I18n.t('active_admin.logout'), active_admin_logout_path, :method => logout_method)
37
56
  end
38
57
  end
39
58
  end
40
59
  end
41
60
 
42
61
  # Returns the logout path from the application settings
43
- def logout_path
44
- if active_admin_application.logout_link_path.is_a?(Symbol)
45
- send(active_admin_application.logout_link_path)
62
+ def active_admin_logout_path
63
+ if active_admin_namespace.logout_link_path.is_a?(Symbol)
64
+ send(active_admin_namespace.logout_link_path)
46
65
  else
47
- active_admin_application.logout_link_path
66
+ active_admin_namespace.logout_link_path
48
67
  end
49
68
  end
50
69
 
51
70
  def logout_method
52
- active_admin_application.logout_link_method || :get
71
+ active_admin_namespace.logout_link_method || :get
53
72
  end
54
73
  end
55
74
 
@@ -18,9 +18,9 @@ module ActiveAdmin
18
18
  #
19
19
  class IndexAsBlock < ActiveAdmin::Component
20
20
 
21
- def build(page_config, collection)
21
+ def build(page_presenter, collection)
22
22
  collection.each do |obj|
23
- instance_exec(obj, &page_config.block)
23
+ instance_exec(obj, &page_presenter.block)
24
24
  end
25
25
  end
26
26
 
@@ -63,13 +63,13 @@ module ActiveAdmin
63
63
  #
64
64
  class IndexAsBlog < ActiveAdmin::Component
65
65
 
66
- def build(page_config, collection)
67
- @page_config = page_config
66
+ def build(page_presenter, collection)
67
+ @page_presenter = page_presenter
68
68
  @collection = collection
69
69
 
70
70
  # Call the block passed in. This will set the
71
71
  # title and body methods
72
- instance_eval &page_config.block if page_config.block
72
+ instance_eval &page_presenter.block if page_presenter.block
73
73
 
74
74
  build_posts
75
75
  end
@@ -23,14 +23,14 @@ module ActiveAdmin
23
23
  #
24
24
  class IndexAsGrid < ActiveAdmin::Component
25
25
 
26
- def build(page_config, collection)
27
- @page_config = page_config
26
+ def build(page_presenter, collection)
27
+ @page_presenter = page_presenter
28
28
  @collection = collection
29
29
  build_table
30
30
  end
31
31
 
32
32
  def number_of_columns
33
- @page_config[:columns] || default_number_of_columns
33
+ @page_presenter[:columns] || default_number_of_columns
34
34
  end
35
35
 
36
36
  protected
@@ -53,7 +53,7 @@ module ActiveAdmin
53
53
 
54
54
  def build_item(item)
55
55
  td :for => item do
56
- instance_exec(item, &@page_config.block)
56
+ instance_exec(item, &@page_presenter.block)
57
57
  end
58
58
  end
59
59
 
@@ -92,16 +92,16 @@ module ActiveAdmin
92
92
  #
93
93
  class IndexAsTable < ActiveAdmin::Component
94
94
 
95
- def build(page_config, collection)
95
+ def build(page_presenter, collection)
96
96
  table_options = {
97
97
  :id => active_admin_config.plural_underscored_resource_name,
98
98
  :sortable => true,
99
99
  :class => "index_table",
100
- :i18n => active_admin_config.resource
100
+ :i18n => active_admin_config.resource_class
101
101
  }
102
102
 
103
103
  table_for collection, table_options do |t|
104
- instance_exec(t, &page_config.block)
104
+ instance_exec(t, &page_presenter.block)
105
105
  end
106
106
  end
107
107
 
@@ -126,9 +126,16 @@ module ActiveAdmin
126
126
  :name => ""
127
127
  }.merge(options)
128
128
  column options[:name] do |resource|
129
- links = link_to I18n.t('active_admin.view'), resource_path(resource), :class => "member_link view_link"
130
- links += link_to I18n.t('active_admin.edit'), edit_resource_path(resource), :class => "member_link edit_link"
131
- links += link_to I18n.t('active_admin.delete'), resource_path(resource), :method => :delete, :confirm => I18n.t('active_admin.delete_confirmation'), :class => "member_link delete_link"
129
+ links = ''.html_safe
130
+ if controller.action_methods.include?('show')
131
+ links += link_to I18n.t('active_admin.view'), resource_path(resource), :class => "member_link view_link"
132
+ end
133
+ if controller.action_methods.include?('edit')
134
+ links += link_to I18n.t('active_admin.edit'), edit_resource_path(resource), :class => "member_link edit_link"
135
+ end
136
+ if controller.action_methods.include?('destroy')
137
+ links += link_to I18n.t('active_admin.delete'), resource_path(resource), :method => :delete, :confirm => I18n.t('active_admin.delete_confirmation'), :class => "member_link delete_link"
138
+ end
132
139
  links
133
140
  end
134
141
  end
@@ -23,8 +23,8 @@ module ActiveAdmin
23
23
  within @head do
24
24
  meta :"http-equiv" => "Content-type", :content => "text/html; charset=utf-8"
25
25
  insert_tag Arbre::HTML::Title, [title, active_admin_application.site_title].join(" | ")
26
- active_admin_application.stylesheets.each do |path|
27
- link :href => stylesheet_path(path), :media => "screen", :rel => "stylesheet", :type => "text/css"
26
+ active_admin_application.stylesheets.each do |style|
27
+ text_node(stylesheet_link_tag(style.path, style.options).html_safe)
28
28
  end
29
29
  active_admin_application.javascripts.each do |path|
30
30
  script :src => javascript_path(path), :type => "text/javascript"
@@ -86,7 +86,7 @@ module ActiveAdmin
86
86
  end
87
87
 
88
88
  def build_action_items
89
- if active_admin_config
89
+ if active_admin_config && active_admin_config.action_items?
90
90
  items = active_admin_config.action_items_for(params[:action])
91
91
  insert_tag view_factory.action_items, items
92
92
  end
@@ -134,7 +134,7 @@ module ActiveAdmin
134
134
 
135
135
  # Returns the sidebar sections to render for the current action
136
136
  def sidebar_sections_for_action
137
- if active_admin_config
137
+ if active_admin_config && active_admin_config.sidebar_sections?
138
138
  active_admin_config.sidebar_sections_for(params[:action])
139
139
  else
140
140
  []
@@ -0,0 +1,49 @@
1
+ module ActiveAdmin
2
+ module Views
3
+ module Pages
4
+
5
+ class Form < Base
6
+
7
+ def title
8
+ I18n.t("active_admin.#{params[:action]}_model",
9
+ :model => active_admin_config.resource_name)
10
+ end
11
+
12
+ def form_presenter
13
+ active_admin_config.get_page_presenter(:form) || default_form_config
14
+ end
15
+
16
+ def main_content
17
+ form_options = default_form_options.merge(form_presenter.options)
18
+
19
+ if form_options[:partial]
20
+ render(form_options[:partial])
21
+ else
22
+ active_admin_form_for(resource, form_options, &form_presenter.block)
23
+ end
24
+ end
25
+
26
+ private
27
+
28
+ def default_form_options
29
+ {
30
+ :url => default_form_path,
31
+ :as => active_admin_config.underscored_resource_name
32
+ }
33
+ end
34
+
35
+ def default_form_path
36
+ resource.persisted? ? resource_path(resource) : collection_path
37
+ end
38
+
39
+ def default_form_config
40
+ ActiveAdmin::PagePresenter.new do |f|
41
+ f.inputs
42
+ f.buttons
43
+ end
44
+ end
45
+ end
46
+
47
+ end
48
+ end
49
+ end
@@ -9,7 +9,7 @@ module ActiveAdmin
9
9
  end
10
10
 
11
11
  def config
12
- index_config || default_index_config
12
+ active_admin_config.get_page_presenter(:index) || default_index_config
13
13
  end
14
14
 
15
15
  # Render's the index configuration that was set in the
@@ -29,17 +29,28 @@ module ActiveAdmin
29
29
  end
30
30
 
31
31
  protected
32
+
33
+
34
+ # TODO: Refactor to new HTML DSL
35
+ def build_download_format_links(formats = [:csv, :xml, :json])
36
+ links = formats.collect do |format|
37
+ link_to format.to_s.upcase, { :format => format}.merge(request.query_parameters.except(:commit, :format))
38
+ end
39
+ text_node [I18n.t('active_admin.download'), links].flatten.join("&nbsp;").html_safe
40
+ end
32
41
 
33
42
  def build_scopes
34
43
  if active_admin_config.scopes.any?
35
- scopes_renderer active_admin_config.scopes
44
+ div :class => "table_tools" do
45
+ scopes_renderer active_admin_config.scopes
46
+ end
36
47
  end
37
48
  end
38
49
 
39
50
  # Creates a default configuration for the resource class. This is a table
40
51
  # with each column displayed as well as all the default actions
41
52
  def default_index_config
42
- @default_index_config ||= ::ActiveAdmin::PageConfig.new(:as => :table) do |display|
53
+ @default_index_config ||= ::ActiveAdmin::PagePresenter.new(:as => :table) do |display|
43
54
  id_column
44
55
  resource_class.content_columns.each do |col|
45
56
  column col.name.to_sym
@@ -49,7 +60,7 @@ module ActiveAdmin
49
60
  end
50
61
 
51
62
  # Returns the actual class for renderering the main content on the index
52
- # page. To set this, use the :as option in the page_config block.
63
+ # page. To set this, use the :as option in the page_presenter block.
53
64
  def find_index_renderer_class(symbol_or_class)
54
65
  case symbol_or_class
55
66
  when Symbol
@@ -62,7 +73,7 @@ module ActiveAdmin
62
73
  end
63
74
 
64
75
  def render_blank_slate
65
- blank_slate_content = I18n.t("active_admin.blank_slate.content", :resource_name => active_admin_config.resource_name.pluralize)
76
+ blank_slate_content = I18n.t("active_admin.blank_slate.content", :resource_name => active_admin_config.plural_resource_name)
66
77
  if controller.action_methods.include?('new')
67
78
  blank_slate_content += " " + link_to(I18n.t("active_admin.blank_slate.link"), new_resource_path)
68
79
  end
@@ -77,7 +88,8 @@ module ActiveAdmin
77
88
  def render_index
78
89
  renderer_class = find_index_renderer_class(config[:as])
79
90
 
80
- paginated_collection(collection, :entry_name => active_admin_config.resource_name) do
91
+ paginated_collection(collection, :entry_name => active_admin_config.resource_name,
92
+ :entries_name => active_admin_config.plural_resource_name) do
81
93
  div :class => 'index_content' do
82
94
  insert_tag(renderer_class, config, collection)
83
95
  end