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
@@ -1,21 +0,0 @@
1
- module ActiveAdmin
2
- module Pages
3
- class Edit < Base
4
-
5
- def title
6
- "Edit #{active_admin_config.resource_name}"
7
- end
8
-
9
- def main_content
10
- config = self.form_config.dup
11
- config.delete(:block)
12
- config.reverse_merge!({
13
- :url => resource_path(resource)
14
- })
15
-
16
- active_admin_form_for resource, config, &form_config[:block]
17
- end
18
-
19
- end
20
- end
21
- end
@@ -1,58 +0,0 @@
1
- module ActiveAdmin
2
- module Pages
3
-
4
- class Index < Base
5
-
6
- # Default Index config styles. Each of these are what
7
- # actually gets rendered in the main content and configured
8
- # through the :as option when configuring your index
9
- autoload :Table, 'active_admin/pages/index/table'
10
- autoload :Blog, 'active_admin/pages/index/blog'
11
- autoload :Thumbnails, 'active_admin/pages/index/thumbnails'
12
-
13
- def title
14
- active_admin_config.plural_resource_name
15
- end
16
-
17
- def config
18
- index_config || default_index_config
19
- end
20
-
21
- # Render's the index configuration that was set in the
22
- # controller. Defaults to rendering the ActiveAdmin::Pages::Index::Table
23
- def main_content
24
- renderer_class = find_index_renderer_class(config[:as])
25
- renderer_class.new(self).to_html(config, collection)
26
- end
27
-
28
- private
29
-
30
- # Creates a default configuration for the resource class. This is a table
31
- # with each column displayed as well as all the default actions
32
- def default_index_config
33
- @default_index_config ||= ::ActiveAdmin::PageConfig.new(:as => :table) do |display|
34
- display.id
35
- resource_class.content_columns.each do |column|
36
- display.column column.name.to_sym
37
- end
38
- display.default_actions
39
- end
40
- end
41
-
42
- # Returns the actual class for renderering the main content on the index
43
- # page. To set this, use the :as option in the page_config block.
44
- def find_index_renderer_class(symbol_or_class)
45
- case symbol_or_class
46
- when Symbol
47
- ::ActiveAdmin::Pages::Index.const_get(symbol_or_class.to_s.camelcase)
48
- when Class
49
- symbol_or_class
50
- else
51
- raise ArgumentError, "'as' requires a class or a symbol"
52
- end
53
- end
54
-
55
- end
56
- end
57
- end
58
-
@@ -1,65 +0,0 @@
1
- module ActiveAdmin
2
- module Pages
3
- class Index
4
-
5
- class Blog < Renderer
6
-
7
- def to_html(page_config, collection)
8
- @page_config = page_config
9
- @config = Builder.new
10
- @page_config.block.call(@config) if @page_config.block
11
-
12
- wrap_with_pagination(collection, :entry_name => active_admin_config.resource_name) do
13
- content_tag :div do
14
- collection.collect{|item| render_post(item) }.join
15
- end
16
- end
17
- end
18
-
19
- private
20
-
21
- def render_post(post)
22
- content_tag_for :div, post do
23
- title = content_tag :h3, link_to(post_title_content(post), resource_path(post))
24
- main_content = content_tag(:div, post_content(post), :class => 'content')
25
- title + main_content
26
- end
27
- end
28
-
29
- def post_title_content(post)
30
- call_method_or_proc_on(post, @config.title) || "#{active_admin_config.resource_name} #{post.id}"
31
- end
32
-
33
- def post_content(post)
34
- call_method_or_proc_on(post, @config.content) || ""
35
- end
36
-
37
-
38
- # A small builder class which gets passed into the block when defining
39
- # the options to display as posts.
40
- #
41
- # ActiveAdmin.register Post
42
- # index :as => :posts do |i|
43
- # # i is an instance of Builder
44
- # end
45
- # end
46
- class Builder
47
- def title(method = nil, &block)
48
- if block_given? || method
49
- @title = block_given? ? block : method
50
- end
51
- @title
52
- end
53
-
54
- def content(method = nil, &block)
55
- if block_given? || method
56
- @content = block_given? ? block : method
57
- end
58
- @content
59
- end
60
- end
61
-
62
- end # Posts
63
- end
64
- end
65
- end
@@ -1,48 +0,0 @@
1
- module ActiveAdmin
2
- module Pages
3
- class Index
4
-
5
- class Table < Renderer
6
-
7
- def to_html(page_config, collection)
8
- wrap_with_pagination(collection, :entry_name => active_admin_config.resource_name) do
9
- table_options = {
10
- :id => active_admin_config.plural_resource_name.underscore,
11
- :sortable => true,
12
- :class => "index_table"
13
- }
14
- TableBuilder.new(&page_config.block).to_html(self, collection, table_options)
15
- end
16
- end
17
-
18
- #
19
- # Extend the default ActiveAdmin::TableBuilder with some
20
- # methods for quickly displaying items on the index page
21
- #
22
- class TableBuilder < ::ActiveAdmin::TableBuilder
23
-
24
- # Display a column for the id
25
- def id
26
- column 'ID', :id
27
- end
28
-
29
- # Adds links to View, Edit and Delete
30
- def default_actions(options = {})
31
- options = {
32
- :name => ""
33
- }.merge(options)
34
- column options[:name] do |resource|
35
- links = link_to "View", resource_path(resource)
36
- links += " | "
37
- links += link_to "Edit", edit_resource_path(resource)
38
- links += " | "
39
- links += link_to "Delete", resource_path(resource), :method => :delete, :confirm => "Are you sure you want to delete this?"
40
- links
41
- end
42
- end
43
- end # TableBuilder
44
-
45
- end # Table
46
- end
47
- end
48
- end
@@ -1,40 +0,0 @@
1
- module ActiveAdmin
2
- module Pages
3
- class Index
4
-
5
- class Thumbnails < Renderer
6
-
7
- def to_html(page_config, collection)
8
- @page_config = page_config
9
- @config = Builder.new
10
- @page_config.block.call(@config) if @page_config.block
11
-
12
- wrap_with_pagination(collection, :entry_name => active_admin_config.resource_name) do
13
- content_tag :div, :style => "clear:both;" do
14
- collection.collect{|item| render_image(item) }.join
15
- end
16
- end
17
- end
18
-
19
- def render_image(item)
20
- link_to tag("img", :src => thumbnail_url(item), :width => 200, :height => 200),
21
- resource_path(item)
22
- end
23
-
24
- def thumbnail_url(item)
25
- call_method_or_proc_on(item, @config.image)
26
- end
27
-
28
- class Builder
29
- def image(method = nil, &block)
30
- if block_given? || method
31
- @image = block_given? ? block : method
32
- end
33
- @image
34
- end
35
- end
36
-
37
- end
38
- end
39
- end
40
- end
@@ -1,21 +0,0 @@
1
- module ActiveAdmin
2
- module Pages
3
- class New < Base
4
-
5
- def title
6
- "New #{active_admin_config.resource_name}"
7
- end
8
-
9
- def main_content
10
- config = self.form_config.dup
11
- config.delete(:block)
12
- config.reverse_merge!({
13
- :url => collection_path
14
- })
15
-
16
- active_admin_form_for resource, config, &form_config[:block]
17
- end
18
- end
19
-
20
- end
21
- end
@@ -1,54 +0,0 @@
1
- module ActiveAdmin
2
- module Pages
3
- class Show < Base
4
-
5
- def config
6
- active_admin_config.page_configs[:show] || ::ActiveAdmin::PageConfig.new
7
- end
8
-
9
- def title
10
- case config[:title]
11
- when Symbol, Proc
12
- call_method_or_proc_on(resource, config[:title])
13
- when String
14
- config[:title]
15
- else
16
- default_title
17
- end
18
- end
19
-
20
- def main_content
21
- if config.block
22
- # Eval the show config from the controller
23
- instance_eval &config.block
24
- else
25
- default_main_content
26
- end
27
- end
28
-
29
- protected
30
-
31
- def default_title
32
- "#{active_admin_config.resource_name} ##{resource.id}"
33
- end
34
-
35
- def default_main_content
36
- table_options = {
37
- :border => 0,
38
- :cellpadding => 0,
39
- :cellspacing => 0,
40
- :id => "#{resource_class.name.underscore}_attributes",
41
- :class => "resource_attributes"
42
- }
43
- content_tag :table, table_options do
44
- show_view_columns.collect do |attr|
45
- content_tag :tr do
46
- content_tag(:th, attr.to_s.titlecase) + content_tag(:td, resource.send(attr))
47
- end
48
- end.join
49
- end
50
- end
51
-
52
- end
53
- end
54
- end
@@ -1,162 +0,0 @@
1
- module ActiveAdmin
2
- class TableBuilder
3
-
4
- attr_reader :columns
5
-
6
- def initialize
7
- @columns = []
8
- yield self if block_given?
9
- end
10
-
11
- def column(*args, &block)
12
- @columns << Column.new(*args, &block)
13
- end
14
-
15
- # This method allows you to add many columns at
16
- # once or returns the list of all columns.
17
- #
18
- # TableBuilder.new do |t|
19
- # t.columns :first, :second, :third
20
- # end
21
- #
22
- # OR
23
- #
24
- # builder.columns #=> [:first, :second, :third]
25
- def columns(first_column = nil, *more)
26
- return @columns unless first_column
27
- [first_column, more].flatten.each do |c|
28
- column(c)
29
- end
30
- end
31
-
32
- # Helper method to quickly render a table builder
33
- def to_html(view, collection, options)
34
- Renderer.new(view).to_html(self, collection, options)
35
- end
36
-
37
- class Renderer < ActiveAdmin::Renderer
38
- def to_html(builder, collection, options = {})
39
- @builder, @collection = builder, collection
40
- @sortable = options.delete(:sortable) || false
41
- table_options = {
42
- :border => 0,
43
- :cellpadding => 0,
44
- :cellspacing => 0
45
- }.merge(options)
46
- content_tag :table, table_options do
47
- table_head + table_body
48
- end
49
- end
50
-
51
- def columns
52
- @columns ||= @builder.columns.select do |column|
53
- instance_eval &column.conditional_block
54
- end
55
- end
56
-
57
- def sortable?
58
- @sortable
59
- end
60
-
61
- def table_head
62
- content_tag :thead do
63
- columns.collect do |column|
64
- if sortable? && column.sortable?
65
- sortable_header_for column.title, column.sort_key
66
- else
67
- content_tag :th, column.title
68
- end
69
- end.join
70
- end
71
- end
72
-
73
- def table_body
74
- content_tag :tbody do
75
- @collection.collect{|item| table_row(item) }.join
76
- end
77
- end
78
-
79
- def table_row(item)
80
- content_tag :tr, :class => cycle('odd', 'even') do
81
- columns.collect{|column| table_cell(column, item) }.join
82
- end
83
- end
84
-
85
- def resource
86
- @resource
87
- end
88
-
89
- def table_cell(column, item)
90
- row_content = call_method_or_proc_on(item, column.data) || ""
91
- l(row_content) if [Date, DateTime, Time].include?(row_content)
92
- content_tag :td, row_content
93
- end
94
-
95
- end
96
-
97
- class Column
98
-
99
- attr_accessor :title, :data
100
-
101
- def initialize(*args, &block)
102
- @options = default_options.merge(args.last.is_a?(::Hash) ? args.pop : {})
103
- @title = pretty_title args[0]
104
- @data = args[1] || args[0]
105
- @data = block if block
106
- end
107
-
108
- def sortable?
109
- if @data.is_a?(Proc)
110
- [String, Symbol].include?(@options[:sortable].class)
111
- else
112
- @options[:sortable]
113
- end
114
- end
115
-
116
- #
117
- # Returns the key to be used for sorting this column
118
- #
119
- # Defaults to the column's method if its a symbol
120
- # column :username
121
- # # => Sort key will be set to 'username'
122
- #
123
- # You can set the sort key by passing a string or symbol
124
- # to the sortable option:
125
- # column :username, :sortable => 'other_column_to_sort_on'
126
- #
127
- # If you pass a block to be rendered for this column, the column
128
- # will not be sortable unless you pass a string to sortable to
129
- # sort the column on:
130
- #
131
- # column('Username', :sortable => 'login'){ @user.pretty_name }
132
- # # => Sort key will be 'login'
133
- #
134
- def sort_key
135
- if @options[:sortable] == true || @options[:sortable] == false
136
- @data.to_s
137
- else
138
- @options[:sortable].to_s
139
- end
140
- end
141
-
142
- def conditional_block
143
- @options[:if]
144
- end
145
-
146
- private
147
-
148
- def pretty_title(raw)
149
- raw.is_a?(Symbol) ? raw.to_s.split('_').collect{|s| s.capitalize }.join(' ') : raw
150
- end
151
-
152
- def default_options
153
- {
154
- :sortable => true,
155
- :if => proc{ true }
156
- }
157
- end
158
-
159
- end
160
-
161
- end
162
- end