activeadmin 0.1.1 → 0.2.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 (255) hide show
  1. data/CHANGELOG.rdoc +15 -1
  2. data/Gemfile +41 -11
  3. data/LICENSE +5 -0
  4. data/README.rdoc +202 -87
  5. data/Rakefile +51 -15
  6. data/activeadmin.gemspec +310 -131
  7. data/cucumber.yml +1 -0
  8. data/features/comments/commenting.feature +81 -0
  9. data/features/comments/viewing_index.feature +19 -0
  10. data/features/edit_page.feature +77 -0
  11. data/features/first_boot.feature +16 -0
  12. data/features/global_navigation.feature +30 -0
  13. data/features/index/formats.feature +10 -0
  14. data/features/index/index_as_block.feature +15 -0
  15. data/features/index/index_as_blog.feature +50 -0
  16. data/features/index/index_as_grid.feature +45 -0
  17. data/features/index/index_as_table.feature +79 -0
  18. data/features/index/index_scopes.feature +52 -0
  19. data/features/index/pagination.feature +23 -0
  20. data/features/new_page.feature +75 -0
  21. data/features/registering_assets.feature +35 -0
  22. data/features/registering_resources.feature +33 -0
  23. data/features/show/default_content.feature +43 -0
  24. data/features/show/page_title.feature +33 -0
  25. data/features/sidebar_sections.feature +128 -0
  26. data/features/specifying_actions.feature +16 -0
  27. data/features/step_definitions/action_item_steps.rb +7 -0
  28. data/features/step_definitions/additional_web_steps.rb +67 -0
  29. data/features/step_definitions/asset_steps.rb +7 -0
  30. data/features/step_definitions/attribute_steps.rb +15 -0
  31. data/features/step_definitions/comment_steps.rb +8 -0
  32. data/features/step_definitions/configuration_steps.rb +31 -0
  33. data/features/step_definitions/factory_steps.rb +28 -0
  34. data/features/step_definitions/flash_steps.rb +3 -0
  35. data/features/step_definitions/format_steps.rb +7 -0
  36. data/features/step_definitions/index_scope_steps.rb +20 -0
  37. data/features/step_definitions/pagination_steps.rb +8 -0
  38. data/features/step_definitions/sidebar_steps.rb +11 -0
  39. data/features/step_definitions/tab_steps.rb +3 -0
  40. data/features/step_definitions/user_steps.rb +20 -0
  41. data/features/step_definitions/web_steps.rb +219 -0
  42. data/features/support/env.rb +88 -0
  43. data/features/support/paths.rb +48 -0
  44. data/features/users/logging_in.feature +34 -0
  45. data/features/users/logging_out.feature +13 -0
  46. data/lib/active_admin.rb +155 -79
  47. data/lib/active_admin/abstract_view_factory.rb +95 -0
  48. data/lib/active_admin/action_items.rb +4 -15
  49. data/lib/active_admin/arbre.rb +23 -0
  50. data/lib/active_admin/arbre/attributes.rb +20 -0
  51. data/lib/active_admin/arbre/class_list.rb +28 -0
  52. data/lib/active_admin/arbre/collection.rb +27 -0
  53. data/lib/active_admin/arbre/context.rb +8 -0
  54. data/lib/active_admin/arbre/core_extensions.rb +5 -0
  55. data/lib/active_admin/arbre/document.rb +42 -0
  56. data/lib/active_admin/arbre/element.rb +151 -0
  57. data/lib/active_admin/arbre/html.rb +84 -0
  58. data/lib/active_admin/arbre/html5_elements.rb +47 -0
  59. data/lib/active_admin/arbre/tag.rb +129 -0
  60. data/lib/active_admin/arbre/text_node.rb +35 -0
  61. data/lib/active_admin/callbacks.rb +87 -0
  62. data/lib/active_admin/comments.rb +73 -0
  63. data/lib/active_admin/comments/comment.rb +15 -0
  64. data/lib/active_admin/comments/configuration.rb +16 -0
  65. data/lib/active_admin/comments/namespace_helper.rb +14 -0
  66. data/lib/active_admin/comments/resource_helper.rb +17 -0
  67. data/lib/active_admin/comments/show_page_helper.rb +23 -0
  68. data/lib/active_admin/comments/views.rb +3 -0
  69. data/lib/active_admin/comments/views/active_admin_comment.rb +0 -0
  70. data/lib/active_admin/comments/views/active_admin_comments.rb +82 -0
  71. data/lib/active_admin/component.rb +22 -0
  72. data/lib/active_admin/controller_action.rb +12 -0
  73. data/lib/active_admin/dashboards.rb +0 -2
  74. data/lib/active_admin/dashboards/dashboard_controller.rb +10 -5
  75. data/lib/active_admin/dashboards/section.rb +5 -14
  76. data/lib/active_admin/devise.rb +43 -0
  77. data/lib/active_admin/dsl.rb +202 -0
  78. data/lib/active_admin/event.rb +31 -0
  79. data/lib/active_admin/form_builder.rb +68 -50
  80. data/lib/active_admin/iconic.rb +51 -0
  81. data/lib/active_admin/iconic/icons.rb +142 -0
  82. data/lib/active_admin/namespace.rb +102 -16
  83. data/lib/active_admin/renderer.rb +18 -3
  84. data/lib/active_admin/resource.rb +110 -9
  85. data/lib/active_admin/resource/belongs_to.rb +31 -0
  86. data/lib/active_admin/resource_controller.rb +45 -260
  87. data/lib/active_admin/resource_controller/action_builder.rb +21 -0
  88. data/lib/active_admin/resource_controller/actions.rb +53 -0
  89. data/lib/active_admin/resource_controller/callbacks.rb +47 -0
  90. data/lib/active_admin/resource_controller/collection.rb +142 -0
  91. data/lib/active_admin/resource_controller/filters.rb +58 -0
  92. data/lib/active_admin/resource_controller/form.rb +42 -0
  93. data/lib/active_admin/resource_controller/menu.rb +29 -0
  94. data/lib/active_admin/resource_controller/page_configurations.rb +53 -0
  95. data/lib/active_admin/resource_controller/scoping.rb +36 -0
  96. data/lib/active_admin/resource_controller/sidebars.rb +38 -0
  97. data/lib/active_admin/scope.rb +17 -0
  98. data/lib/active_admin/sidebar.rb +8 -47
  99. data/lib/active_admin/stylesheets/active_admin.scss +418 -0
  100. data/lib/active_admin/stylesheets/active_admin/_comments.scss +40 -0
  101. data/lib/active_admin/stylesheets/active_admin/_flash_messages.scss +13 -0
  102. data/lib/active_admin/stylesheets/active_admin/_forms.scss +168 -0
  103. data/lib/active_admin/stylesheets/active_admin/_header.scss +108 -0
  104. data/lib/active_admin/stylesheets/active_admin/_typography.scss +100 -0
  105. data/lib/active_admin/stylesheets/active_admin/mixins/_all.scss +8 -0
  106. data/lib/active_admin/stylesheets/active_admin/mixins/_buttons.scss +27 -0
  107. data/lib/active_admin/stylesheets/active_admin/mixins/_gradients.scss +21 -0
  108. data/lib/active_admin/stylesheets/active_admin/mixins/_icons.scss +20 -0
  109. data/lib/active_admin/stylesheets/active_admin/mixins/_reset.scss +165 -0
  110. data/lib/active_admin/stylesheets/active_admin/mixins/_rounded.scss +43 -0
  111. data/lib/active_admin/stylesheets/active_admin/mixins/_sections.scss +27 -0
  112. data/lib/active_admin/stylesheets/active_admin/mixins/_shadows.scss +21 -0
  113. data/lib/active_admin/stylesheets/active_admin/mixins/_variables.scss +12 -0
  114. data/lib/active_admin/version.rb +1 -1
  115. data/lib/active_admin/view_factory.rb +21 -0
  116. data/lib/active_admin/view_helpers.rb +17 -100
  117. data/lib/active_admin/view_helpers/assigns_with_indifferent_access_helper.rb +7 -0
  118. data/lib/active_admin/view_helpers/auto_link_helper.rb +41 -0
  119. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +29 -0
  120. data/lib/active_admin/view_helpers/display_helper.rb +38 -0
  121. data/lib/active_admin/view_helpers/filter_form_helper.rb +174 -0
  122. data/lib/active_admin/view_helpers/form_helper.rb +12 -0
  123. data/lib/active_admin/view_helpers/icon_helper.rb +12 -0
  124. data/lib/active_admin/view_helpers/method_or_proc_helper.rb +26 -0
  125. data/lib/active_admin/view_helpers/renderer_helper.rb +29 -0
  126. data/lib/active_admin/view_helpers/sidebar_helper.rb +15 -0
  127. data/lib/active_admin/view_helpers/status_tag_helper.rb +13 -0
  128. data/lib/active_admin/view_helpers/table_helper.rb +12 -0
  129. data/lib/active_admin/view_helpers/title_helper.rb +11 -0
  130. data/lib/active_admin/view_helpers/view_factory_helper.rb +11 -0
  131. data/lib/active_admin/views.rb +8 -0
  132. data/lib/active_admin/views/action_items.rb +17 -0
  133. data/lib/active_admin/views/components/attributes_table.rb +66 -0
  134. data/lib/active_admin/views/components/columns.rb +49 -0
  135. data/lib/active_admin/views/components/paginated_collection.rb +74 -0
  136. data/lib/active_admin/views/components/panel.rb +26 -0
  137. data/lib/active_admin/views/components/scopes.rb +64 -0
  138. data/lib/active_admin/views/components/sidebar_section.rb +30 -0
  139. data/lib/active_admin/views/components/table_for.rb +174 -0
  140. data/lib/active_admin/views/dashboard_section_renderer.rb +19 -0
  141. data/lib/active_admin/views/header_renderer.rb +37 -0
  142. data/lib/active_admin/views/index_as_block.rb +24 -0
  143. data/lib/active_admin/views/index_as_blog.rb +89 -0
  144. data/lib/active_admin/views/index_as_grid.rb +49 -0
  145. data/lib/active_admin/views/index_as_table.rb +73 -0
  146. data/lib/active_admin/views/pages/base.rb +138 -0
  147. data/lib/active_admin/views/pages/dashboard.rb +61 -0
  148. data/lib/active_admin/views/pages/edit.rb +27 -0
  149. data/lib/active_admin/views/pages/index.rb +64 -0
  150. data/lib/active_admin/views/pages/new.rb +27 -0
  151. data/lib/active_admin/views/pages/show.rb +56 -0
  152. data/lib/active_admin/views/tabs_renderer.rb +52 -0
  153. data/lib/active_admin/views/templates/active_admin/devise/mailer/reset_password_instructions.html.erb +8 -0
  154. data/lib/active_admin/views/templates/active_admin/devise/mailer/unlock_instructions.html.erb +7 -0
  155. data/lib/active_admin/views/templates/active_admin/devise/passwords/edit.html.erb +16 -0
  156. data/lib/active_admin/views/templates/active_admin/devise/passwords/new.html.erb +14 -0
  157. data/lib/active_admin/views/templates/active_admin/devise/sessions/new.html.erb +18 -0
  158. data/lib/active_admin/views/templates/active_admin/devise/shared/_links.erb +20 -0
  159. data/lib/active_admin/views/templates/active_admin/devise/unlocks/new.html.erb +12 -0
  160. data/lib/active_admin/views/templates/active_admin_dashboard/index.html.arb +1 -0
  161. data/lib/active_admin/views/templates/active_admin_default/edit.html.arb +1 -0
  162. data/lib/active_admin/views/{active_admin_default → templates/active_admin_default}/index.csv.erb +0 -0
  163. data/lib/active_admin/views/templates/active_admin_default/index.html.arb +1 -0
  164. data/lib/active_admin/views/templates/active_admin_default/new.html.arb +1 -0
  165. data/lib/active_admin/views/templates/active_admin_default/show.html.arb +1 -0
  166. data/lib/active_admin/views/{layouts → templates/layouts}/active_admin.html.erb +3 -4
  167. data/lib/active_admin/views/templates/layouts/active_admin_logged_out.html.erb +31 -0
  168. data/lib/generators/active_admin/devise/devise_generator.rb +45 -0
  169. data/lib/generators/active_admin/install/install_generator.rb +18 -3
  170. data/lib/generators/active_admin/install/templates/active_admin.js +41 -0
  171. data/lib/generators/active_admin/install/templates/{active_admin.rb → active_admin.rb.erb} +33 -3
  172. data/lib/generators/active_admin/install/templates/active_admin_vendor.js +1 -1
  173. data/lib/generators/active_admin/install/templates/dashboards.rb +3 -4
  174. data/lib/generators/active_admin/install/templates/images/admin_notes_icon.png +0 -0
  175. data/lib/generators/active_admin/install/templates/images/loading.gif +0 -0
  176. data/lib/generators/active_admin/install/templates/images/nested_menu_arrow.gif +0 -0
  177. data/lib/generators/active_admin/install/templates/images/nested_menu_arrow_dark.gif +0 -0
  178. data/lib/generators/active_admin/install/templates/images/orderable.png +0 -0
  179. data/lib/generators/active_admin/install/templates/migrations/1_create_admin_notes.rb +16 -0
  180. data/lib/generators/active_admin/install/templates/migrations/2_move_admin_notes_to_comments.rb +25 -0
  181. data/spec/integration/belongs_to_spec.rb +42 -0
  182. data/spec/integration/index_as_table_spec.rb +0 -119
  183. data/spec/integration/layout_spec.rb +3 -37
  184. data/spec/spec_helper.rb +89 -50
  185. data/spec/support/integration_example_group.rb +37 -0
  186. data/spec/support/rails_template.rb +21 -9
  187. data/spec/support/rails_template_with_data.rb +32 -0
  188. data/spec/support/templates/cucumber.rb +28 -0
  189. data/spec/unit/abstract_view_factory_spec.rb +79 -0
  190. data/spec/unit/action_builder_spec.rb +19 -7
  191. data/spec/unit/action_items_spec.rb +16 -30
  192. data/spec/unit/active_admin_spec.rb +10 -22
  193. data/spec/unit/arbre/html/element_finder_methods_spec.rb +54 -0
  194. data/spec/unit/arbre/html/element_spec.rb +224 -0
  195. data/spec/unit/arbre/html/tag_attributes_spec.rb +61 -0
  196. data/spec/unit/arbre/html/tag_spec.rb +63 -0
  197. data/spec/unit/arbre/html_spec.rb +185 -0
  198. data/spec/unit/auto_link_spec.rb +38 -0
  199. data/spec/unit/belongs_to_spec.rb +44 -0
  200. data/spec/unit/breadcrumbs_spec.rb +110 -0
  201. data/spec/unit/comments_spec.rb +53 -0
  202. data/spec/unit/component_spec.rb +18 -0
  203. data/spec/unit/components/attributes_table_spec.rb +100 -0
  204. data/spec/unit/components/columns_spec.rb +75 -0
  205. data/spec/unit/components/panel_spec.rb +31 -0
  206. data/spec/unit/components/sidebar_section_spec.rb +37 -0
  207. data/spec/unit/components/table_for_spec.rb +130 -0
  208. data/spec/unit/dashboard_controller_spec.rb +26 -0
  209. data/spec/unit/dashboard_section_spec.rb +10 -17
  210. data/spec/unit/display_name_spec.rb +29 -0
  211. data/spec/unit/event_spec.rb +41 -0
  212. data/spec/unit/filter_form_builder_spec.rb +99 -77
  213. data/spec/unit/form_builder_spec.rb +69 -69
  214. data/spec/unit/namespace_spec.rb +61 -3
  215. data/spec/unit/pretty_format_spec.rb +35 -0
  216. data/spec/unit/registration_spec.rb +40 -1
  217. data/spec/unit/renderer_spec.rb +8 -0
  218. data/spec/unit/resource_controller_spec.rb +105 -6
  219. data/spec/unit/resource_spec.rb +78 -11
  220. data/spec/unit/routing_spec.rb +82 -6
  221. data/spec/unit/scope_spec.rb +31 -0
  222. data/spec/unit/tabs_renderer_spec.rb +24 -2
  223. data/spec/unit/view_factory_spec.rb +16 -0
  224. metadata +268 -82
  225. data/.gitignore +0 -25
  226. data/active_admin.gemspec +0 -22
  227. data/lib/active_admin/action_builder.rb +0 -60
  228. data/lib/active_admin/breadcrumbs.rb +0 -26
  229. data/lib/active_admin/dashboards/renderer.rb +0 -45
  230. data/lib/active_admin/dashboards/section_renderer.rb +0 -28
  231. data/lib/active_admin/filters.rb +0 -189
  232. data/lib/active_admin/pages.rb +0 -11
  233. data/lib/active_admin/pages/base.rb +0 -92
  234. data/lib/active_admin/pages/edit.rb +0 -21
  235. data/lib/active_admin/pages/index.rb +0 -58
  236. data/lib/active_admin/pages/index/blog.rb +0 -65
  237. data/lib/active_admin/pages/index/table.rb +0 -48
  238. data/lib/active_admin/pages/index/thumbnails.rb +0 -40
  239. data/lib/active_admin/pages/new.rb +0 -21
  240. data/lib/active_admin/pages/show.rb +0 -54
  241. data/lib/active_admin/table_builder.rb +0 -162
  242. data/lib/active_admin/tabs_renderer.rb +0 -39
  243. data/lib/active_admin/views/active_admin_dashboard/index.html.erb +0 -1
  244. data/lib/active_admin/views/active_admin_default/edit.html.erb +0 -1
  245. data/lib/active_admin/views/active_admin_default/index.html.erb +0 -1
  246. data/lib/active_admin/views/active_admin_default/new.html.erb +0 -1
  247. data/lib/active_admin/views/active_admin_default/show.html.erb +0 -1
  248. data/lib/generators/active_admin/install/templates/active_admin.css +0 -325
  249. data/lib/generators/active_admin/install/templates/images/orderable.gif +0 -0
  250. data/spec/integration/index_as_blog_spec.rb +0 -65
  251. data/spec/integration/index_as_thumbnails_spec.rb +0 -43
  252. data/spec/integration/new_view_spec.rb +0 -52
  253. data/spec/integration/show_view_spec.rb +0 -91
  254. data/spec/unit/sidebar_spec.rb +0 -96
  255. data/spec/unit/table_builder_spec.rb +0 -162
@@ -0,0 +1,19 @@
1
+ module ActiveAdmin
2
+ module Views
3
+ class DashboardSection < ActiveAdmin::Views::Panel
4
+
5
+ def build(section)
6
+ @section = section
7
+ super(title, :icon => @section.icon)
8
+ instance_eval &@section.block
9
+ end
10
+
11
+ protected
12
+
13
+ def title
14
+ @section.name.to_s.titleize
15
+ end
16
+
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,37 @@
1
+ module ActiveAdmin
2
+ module Views
3
+
4
+ # Renderer for the header of the application. Includes the page
5
+ # title, global navigation and utility navigation.
6
+ class HeaderRenderer < ::ActiveAdmin::Renderer
7
+
8
+ def to_html
9
+ title + global_navigation + utility_navigation
10
+ end
11
+
12
+ protected
13
+
14
+ def title
15
+ content_tag 'h1', ActiveAdmin.site_title, :id => 'site_title'
16
+ end
17
+
18
+ # Renders the global navigation returned by
19
+ # ActiveAdmin::ResourceController#current_menu
20
+ #
21
+ # It uses the ActiveAdmin.tabs_renderer option
22
+ def global_navigation
23
+ render view_factory.global_navigation, current_menu
24
+ end
25
+
26
+ def utility_navigation
27
+ content_tag 'p', :id => "utility_nav" do
28
+ if current_active_admin_user?
29
+ content_tag(:span, display_name(current_active_admin_user), :class => "current_user") +
30
+ link_to("Logout", "/#{ActiveAdmin.default_namespace}/logout")
31
+ end
32
+ end
33
+ end
34
+ end
35
+
36
+ end
37
+ end
@@ -0,0 +1,24 @@
1
+ module ActiveAdmin
2
+ module Views
3
+
4
+ # Simplest rendering possible. Calls the block for each element in the collection.
5
+ #
6
+ # Example:
7
+ #
8
+ # ActiveAdmin.register Post do
9
+ # index :as => :block do |post|
10
+ # # render the post partial (app/views/admin/posts/_post)
11
+ # render 'post', :post => post
12
+ # end
13
+ # end
14
+ class IndexAsBlock < ActiveAdmin::Component
15
+
16
+ def build(page_config, collection)
17
+ collection.each do |obj|
18
+ instance_exec(obj, &page_config.block)
19
+ end
20
+ end
21
+
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,89 @@
1
+ module ActiveAdmin
2
+ module Views
3
+ class IndexAsBlog < ActiveAdmin::Component
4
+
5
+ def build(page_config, collection)
6
+ @page_config = page_config
7
+ @collection = collection
8
+
9
+ # Call the block passed in. This will set the
10
+ # title and body methods
11
+ instance_eval &page_config.block if page_config.block
12
+
13
+ build_posts
14
+ end
15
+
16
+ # Setter method for the configuration of the title
17
+ #
18
+ # index :as => :blog do
19
+ # title :a_method_to_call #=> Calls #a_method_to_call on the resource
20
+ #
21
+ # # OR
22
+ #
23
+ # title do |post|
24
+ # post.a_method_to_call
25
+ # end
26
+ # end
27
+ def title(method = nil, &block)
28
+ if block_given? || method
29
+ @title = block_given? ? block : method
30
+ end
31
+ @title
32
+ end
33
+
34
+ # Setter method for the configuration of the body
35
+ #
36
+ # index :as => :blog do
37
+ # title :my_title
38
+ #
39
+ # body :a_method_to_call #=> Calls #a_method_to_call on the resource
40
+ #
41
+ # # OR
42
+ #
43
+ # title do |post|
44
+ # post.a_method_to_call
45
+ # end
46
+ # end
47
+ def body(method = nil, &block)
48
+ if block_given? || method
49
+ @body = block_given? ? block : method
50
+ end
51
+ @body
52
+ end
53
+
54
+ private
55
+
56
+ def build_posts
57
+ @collection.each do |post|
58
+ build_post(post)
59
+ end
60
+ end
61
+
62
+ def build_post(post)
63
+ div :for => post do
64
+ build_title(post)
65
+ build_body(post)
66
+ end
67
+ end
68
+
69
+ def build_title(post)
70
+ if @title
71
+ h3 do
72
+ link_to(call_method_or_proc_on(post, @title), resource_path(post))
73
+ end
74
+ else
75
+ h3 do
76
+ auto_link(post)
77
+ end
78
+ end
79
+ end
80
+
81
+ def build_body(post)
82
+ if @body
83
+ div(call_method_or_proc_on(post, @body), :class => 'content')
84
+ end
85
+ end
86
+
87
+ end # Posts
88
+ end
89
+ end
@@ -0,0 +1,49 @@
1
+ module ActiveAdmin
2
+ module Views
3
+ class IndexAsGrid < ActiveAdmin::Component
4
+
5
+ def build(page_config, collection)
6
+ @page_config = page_config
7
+ @collection = collection
8
+ build_table
9
+ end
10
+
11
+ def number_of_columns
12
+ @page_config[:columns] || default_number_of_columns
13
+ end
14
+
15
+ protected
16
+
17
+ def build_table
18
+ table :class => "index_grid" do
19
+ collection.in_groups_of(number_of_columns).each do |group|
20
+ build_row(group)
21
+ end
22
+ end
23
+ end
24
+
25
+ def build_row(group)
26
+ tr do
27
+ group.each do |item|
28
+ item ? build_item(item) : build_empty_cell
29
+ end
30
+ end
31
+ end
32
+
33
+ def build_item(item)
34
+ td :for => item do
35
+ instance_exec(item, &@page_config.block)
36
+ end
37
+ end
38
+
39
+ def build_empty_cell
40
+ td '&nbsp;'.html_safe
41
+ end
42
+
43
+ def default_number_of_columns
44
+ 3
45
+ end
46
+
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,73 @@
1
+ module ActiveAdmin
2
+ module Views
3
+
4
+ class IndexAsTable < ActiveAdmin::Component
5
+
6
+ def build(page_config, collection)
7
+ table_options = {
8
+ :id => active_admin_config.plural_resource_name.underscore,
9
+ :sortable => true,
10
+ :class => "index_table"
11
+ }
12
+ table_for collection, table_options do |t|
13
+ instance_exec(t, &page_config.block)
14
+ end
15
+ end
16
+
17
+ def table_for(*args, &block)
18
+ insert_tag IndexTableFor, *args, &block
19
+ end
20
+
21
+ #
22
+ # Extend the default ActiveAdmin::Views::TableFor with some
23
+ # methods for quickly displaying items on the index page
24
+ #
25
+ class IndexTableFor < ::ActiveAdmin::Views::TableFor
26
+
27
+ # Display a column for the id
28
+ def id_column
29
+ column('ID', :sortable => :id){|resource| link_to resource.id, resource_path(resource), :class => "resource_id_link"}
30
+ end
31
+
32
+ # Adds links to View, Edit and Delete
33
+ def default_actions(options = {})
34
+ options = {
35
+ :name => ""
36
+ }.merge(options)
37
+ column options[:name] do |resource|
38
+ links = link_to icon(:arrow_right_alt1) + "View", resource_path(resource), :class => "view_link"
39
+ links += link_to icon(:pen) + "Edit", edit_resource_path(resource), :class => "edit_link"
40
+ links += link_to icon(:trash_stroke) + "Delete", resource_path(resource), :method => :delete, :confirm => "Are you sure you want to delete this?", :class => "delete_link"
41
+ links
42
+ end
43
+ end
44
+
45
+ # Display A Status Tag Column
46
+ #
47
+ # index do |i|
48
+ # i.status_tag :state
49
+ # end
50
+ #
51
+ # index do |i|
52
+ # i.status_tag "State", :status_name
53
+ # end
54
+ #
55
+ # index do |i|
56
+ # i.status_tag do |post|
57
+ # post.published? ? 'published' : 'draft'
58
+ # end
59
+ # end
60
+ #
61
+ def status_tag(*args, &block)
62
+ col = Column.new(*args, &block)
63
+ data = col.data
64
+ col.data = proc do |resource|
65
+ status_tag call_method_or_proc_on(resource, data)
66
+ end
67
+ add_column col
68
+ end
69
+ end # TableBuilder
70
+
71
+ end # Table
72
+ end
73
+ end
@@ -0,0 +1,138 @@
1
+ module ActiveAdmin
2
+ module Views
3
+ module Pages
4
+ class Base < Arbre::HTML::Document
5
+
6
+ def build(*args)
7
+ super
8
+ build_active_admin_head
9
+ build_page
10
+ end
11
+
12
+ private
13
+
14
+ def build_active_admin_head
15
+ within @head do
16
+ meta :"http-equiv" => "Content-type", :content => "text/html; charset=utf-8"
17
+ insert_tag Arbre::HTML::Title, [title, ActiveAdmin.site_title].join(" | ")
18
+ ActiveAdmin.stylesheets.each do |path|
19
+ link :href => stylesheet_path(path), :media => "screen", :rel => "stylesheet", :type => "text/css"
20
+ end
21
+ ActiveAdmin.javascripts.each do |path|
22
+ script :src => javascript_path(path), :type => "text/javascript"
23
+ end
24
+ text_node csrf_meta_tag
25
+ end
26
+ end
27
+
28
+ def build_page
29
+ within @body do
30
+ div :id => "wrapper" do
31
+ build_header
32
+ build_title_bar
33
+ build_page_content
34
+ build_footer
35
+ end
36
+ end
37
+ end
38
+
39
+ def build_header
40
+ div :id => "header" do
41
+ render view_factory.header
42
+ end
43
+ end
44
+
45
+ def build_title_bar
46
+ div :id => "title_bar" do
47
+ build_breadcrumb
48
+ build_title_tag
49
+ build_action_items
50
+ end
51
+ end
52
+
53
+ def build_breadcrumb(separator = "/")
54
+ links = breadcrumb_links
55
+ return if links.empty?
56
+ span :class => "breadcrumb" do
57
+ links.each do |link|
58
+ text_node link
59
+ span(separator, :class => "breadcrumb_sep")
60
+ end
61
+ end
62
+ end
63
+
64
+ def build_title_tag
65
+ h2(title, :id => 'page_title')
66
+ end
67
+
68
+ def build_action_items
69
+ items = controller.class.action_items_for(params[:action])
70
+ insert_tag view_factory.action_items, items
71
+ end
72
+
73
+ def build_page_content
74
+ # TODO: Skip sidebar
75
+ div :id => "content", :class => "with_sidebar" do
76
+ build_flash_messages
77
+ build_main_content_wrapper
78
+ build_sidebar
79
+ end
80
+ end
81
+
82
+ def build_flash_messages
83
+ if flash.keys.any?
84
+ div :class => 'flashes' do
85
+ flash.each do |type, message|
86
+ div message, :class => "flash flash_#{type}"
87
+ end
88
+ end
89
+ end
90
+ end
91
+
92
+ def build_main_content_wrapper
93
+ div :id => "main_content_wrapper" do
94
+ div :id => "main_content" do
95
+ main_content
96
+ end
97
+ end
98
+ end
99
+
100
+ def main_content
101
+ "Please implement #{self.class.name}#main_content to display content.".html_safe
102
+ end
103
+
104
+ def title
105
+ self.class.name
106
+ end
107
+
108
+ # Set's the page title for the layout to render
109
+ def set_page_title
110
+ set_ivar_on_view "@page_title", title
111
+ end
112
+
113
+
114
+ # Returns the sidebar sections to render for the current action
115
+ def sidebar_sections_for_action
116
+ controller.class.sidebar_sections_for(params[:action])
117
+ end
118
+
119
+ # Renders the sidebar
120
+ def build_sidebar
121
+ div :id => "sidebar" do
122
+ sidebar_sections_for_action.collect do |section|
123
+ sidebar_section(section)
124
+ end
125
+ end
126
+ end
127
+
128
+ # Renders the content for the footer
129
+ def build_footer
130
+ div :id => "footer" do
131
+ para "Powered by #{link_to("Active Admin", "http://www.activeadmin.info")} #{ActiveAdmin::VERSION}".html_safe
132
+ end
133
+ end
134
+
135
+ end
136
+ end
137
+ end
138
+ end
@@ -0,0 +1,61 @@
1
+ module ActiveAdmin
2
+ module Views
3
+ module Pages
4
+ class Dashboard < Base
5
+
6
+ def main_content
7
+ if assigns[:dashboard_sections] && assigns[:dashboard_sections].any?
8
+ render_sections(assigns[:dashboard_sections])
9
+ else
10
+ default_welcome_section
11
+ end
12
+ end
13
+
14
+ protected
15
+
16
+ # Dashboards don't have a sidebar
17
+ def build_sidebar; end
18
+
19
+ def title
20
+ "Dashboard"
21
+ end
22
+
23
+ def render_sections(sections)
24
+ p "Rendering sections"
25
+ p sections.count
26
+ table :class => "dashboard" do
27
+ sections.in_groups_of(3, false).each do |row|
28
+ tr do
29
+ row.each do |section|
30
+ td do
31
+ render_section(section)
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
38
+
39
+ # Renders each section using their renderer
40
+ def render_section(section)
41
+ insert_tag section_renderer(section), section
42
+ end
43
+
44
+ def section_renderer(section)
45
+ if section.options[:as]
46
+ view_factory["dashboard_section_as_#{section.options[:as]}"]
47
+ else
48
+ view_factory.dashboard_section
49
+ end
50
+ end
51
+
52
+ def default_welcome_section
53
+ para :id => "dashboard_default_message" do
54
+ "Welcome to Active Admin. This is the default dashboard page. To add dashboard sections, checkout 'app/admin/dashboards.rb'"
55
+ end
56
+ end
57
+
58
+ end
59
+ end
60
+ end
61
+ end