nsm-activeadmin 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (321) hide show
  1. data/.document +5 -0
  2. data/.gitignore +34 -0
  3. data/.travis.yml +4 -0
  4. data/.yardopts +8 -0
  5. data/CHANGELOG.rdoc +76 -0
  6. data/Gemfile +39 -0
  7. data/LICENSE +25 -0
  8. data/README.rdoc +487 -0
  9. data/Rakefile +27 -0
  10. data/activeadmin.gemspec +28 -0
  11. data/app/assets/images/active_admin/admin_notes_icon.png +0 -0
  12. data/app/assets/images/active_admin/datepicker/datepicker-header-bg.png +0 -0
  13. data/app/assets/images/active_admin/datepicker/datepicker-input-icon.png +0 -0
  14. data/app/assets/images/active_admin/datepicker/datepicker-next-link-icon.png +0 -0
  15. data/app/assets/images/active_admin/datepicker/datepicker-nipple.png +0 -0
  16. data/app/assets/images/active_admin/datepicker/datepicker-prev-link-icon.png +0 -0
  17. data/app/assets/images/active_admin/loading.gif +0 -0
  18. data/app/assets/images/active_admin/nested_menu_arrow.gif +0 -0
  19. data/app/assets/images/active_admin/nested_menu_arrow_dark.gif +0 -0
  20. data/app/assets/images/active_admin/orderable.png +0 -0
  21. data/app/assets/javascripts/active_admin/base.js +12 -0
  22. data/app/assets/javascripts/active_admin/vendor.js +382 -0
  23. data/app/assets/stylesheets/active_admin/_base.css.scss +400 -0
  24. data/app/assets/stylesheets/active_admin/_forms.css.scss +256 -0
  25. data/app/assets/stylesheets/active_admin/_header.css.scss +110 -0
  26. data/app/assets/stylesheets/active_admin/_mixins.css.scss +1 -0
  27. data/app/assets/stylesheets/active_admin/_typography.css.scss +100 -0
  28. data/app/assets/stylesheets/active_admin/components/_comments.css.scss +40 -0
  29. data/app/assets/stylesheets/active_admin/components/_date_picker.css.scss +123 -0
  30. data/app/assets/stylesheets/active_admin/components/_flash_messages.css.scss +38 -0
  31. data/app/assets/stylesheets/active_admin/mixins/_all.css.scss +8 -0
  32. data/app/assets/stylesheets/active_admin/mixins/_buttons.css.scss +27 -0
  33. data/app/assets/stylesheets/active_admin/mixins/_gradients.css.scss +29 -0
  34. data/app/assets/stylesheets/active_admin/mixins/_icons.css.scss +20 -0
  35. data/app/assets/stylesheets/active_admin/mixins/_reset.css.scss +165 -0
  36. data/app/assets/stylesheets/active_admin/mixins/_rounded.css.scss +43 -0
  37. data/app/assets/stylesheets/active_admin/mixins/_sections.css.scss +34 -0
  38. data/app/assets/stylesheets/active_admin/mixins/_shadows.css.scss +21 -0
  39. data/app/assets/stylesheets/active_admin/mixins/_variables.css.scss +21 -0
  40. data/app/views/active_admin/dashboard/index.html.arb +1 -0
  41. data/app/views/active_admin/devise/mailer/reset_password_instructions.html.erb +8 -0
  42. data/app/views/active_admin/devise/mailer/unlock_instructions.html.erb +7 -0
  43. data/app/views/active_admin/devise/passwords/edit.html.erb +16 -0
  44. data/app/views/active_admin/devise/passwords/new.html.erb +14 -0
  45. data/app/views/active_admin/devise/sessions/new.html.erb +18 -0
  46. data/app/views/active_admin/devise/shared/_links.erb +20 -0
  47. data/app/views/active_admin/devise/unlocks/new.html.erb +12 -0
  48. data/app/views/active_admin/resource/edit.html.arb +1 -0
  49. data/app/views/active_admin/resource/index.csv.erb +20 -0
  50. data/app/views/active_admin/resource/index.html.arb +1 -0
  51. data/app/views/active_admin/resource/new.html.arb +1 -0
  52. data/app/views/active_admin/resource/show.html.arb +1 -0
  53. data/app/views/layouts/active_admin.html.arb +1 -0
  54. data/app/views/layouts/active_admin_logged_out.html.erb +35 -0
  55. data/cucumber.yml +2 -0
  56. data/docs/1-general-configuration.md +52 -0
  57. data/docs/2-resource-customization.md +35 -0
  58. data/docs/3-index-pages.md +55 -0
  59. data/docs/3-index-pages/index-as-block.md +16 -0
  60. data/docs/3-index-pages/index-as-blog.md +61 -0
  61. data/docs/3-index-pages/index-as-grid.md +21 -0
  62. data/docs/3-index-pages/index-as-table.md +74 -0
  63. data/docs/4-csv-format.md +14 -0
  64. data/docs/5-forms.md +39 -0
  65. data/docs/6-show-screens.md +22 -0
  66. data/docs/7-sidebars.md +35 -0
  67. data/docs/8-custom-actions.md +123 -0
  68. data/features/comments/commenting.feature +112 -0
  69. data/features/comments/viewing_index.feature +19 -0
  70. data/features/dashboard.feature +26 -0
  71. data/features/edit_page.feature +106 -0
  72. data/features/first_boot.feature +16 -0
  73. data/features/global_navigation.feature +30 -0
  74. data/features/index/format_as_csv.feature +46 -0
  75. data/features/index/formats.feature +12 -0
  76. data/features/index/index_as_block.feature +15 -0
  77. data/features/index/index_as_blog.feature +50 -0
  78. data/features/index/index_as_grid.feature +45 -0
  79. data/features/index/index_as_table.feature +81 -0
  80. data/features/index/index_blank_slate.feature +55 -0
  81. data/features/index/index_scopes.feature +52 -0
  82. data/features/index/pagination.feature +17 -0
  83. data/features/menu.feature +26 -0
  84. data/features/new_page.feature +75 -0
  85. data/features/registering_assets.feature +35 -0
  86. data/features/registering_resources.feature +33 -0
  87. data/features/show/default_content.feature +43 -0
  88. data/features/show/page_title.feature +33 -0
  89. data/features/sidebar_sections.feature +127 -0
  90. data/features/specifying_actions.feature +87 -0
  91. data/features/step_definitions/action_item_steps.rb +7 -0
  92. data/features/step_definitions/additional_web_steps.rb +77 -0
  93. data/features/step_definitions/asset_steps.rb +7 -0
  94. data/features/step_definitions/attribute_steps.rb +13 -0
  95. data/features/step_definitions/comment_steps.rb +8 -0
  96. data/features/step_definitions/configuration_steps.rb +31 -0
  97. data/features/step_definitions/dashboard_steps.rb +11 -0
  98. data/features/step_definitions/factory_steps.rb +29 -0
  99. data/features/step_definitions/flash_steps.rb +3 -0
  100. data/features/step_definitions/format_steps.rb +35 -0
  101. data/features/step_definitions/index_scope_steps.rb +20 -0
  102. data/features/step_definitions/layout_steps.rb +3 -0
  103. data/features/step_definitions/menu_steps.rb +7 -0
  104. data/features/step_definitions/pagination_steps.rb +8 -0
  105. data/features/step_definitions/sidebar_steps.rb +7 -0
  106. data/features/step_definitions/tab_steps.rb +3 -0
  107. data/features/step_definitions/user_steps.rb +26 -0
  108. data/features/step_definitions/web_steps.rb +211 -0
  109. data/features/sti_resource.feature +61 -0
  110. data/features/support/env.rb +90 -0
  111. data/features/support/paths.rb +50 -0
  112. data/features/support/selectors.rb +45 -0
  113. data/features/users/logging_in.feature +34 -0
  114. data/features/users/logging_out.feature +13 -0
  115. data/lib/active_admin.rb +74 -0
  116. data/lib/active_admin/abstract_view_factory.rb +95 -0
  117. data/lib/active_admin/application.rb +228 -0
  118. data/lib/active_admin/arbre.rb +23 -0
  119. data/lib/active_admin/arbre/attributes.rb +20 -0
  120. data/lib/active_admin/arbre/class_list.rb +28 -0
  121. data/lib/active_admin/arbre/collection.rb +27 -0
  122. data/lib/active_admin/arbre/context.rb +14 -0
  123. data/lib/active_admin/arbre/core_extensions.rb +5 -0
  124. data/lib/active_admin/arbre/document.rb +42 -0
  125. data/lib/active_admin/arbre/element.rb +151 -0
  126. data/lib/active_admin/arbre/html.rb +84 -0
  127. data/lib/active_admin/arbre/html5_elements.rb +47 -0
  128. data/lib/active_admin/arbre/tag.rb +137 -0
  129. data/lib/active_admin/arbre/text_node.rb +35 -0
  130. data/lib/active_admin/asset_registration.rb +34 -0
  131. data/lib/active_admin/callbacks.rb +89 -0
  132. data/lib/active_admin/comments.rb +88 -0
  133. data/lib/active_admin/comments/comment.rb +21 -0
  134. data/lib/active_admin/comments/configuration.rb +18 -0
  135. data/lib/active_admin/comments/namespace_helper.rb +14 -0
  136. data/lib/active_admin/comments/resource_helper.rb +17 -0
  137. data/lib/active_admin/comments/show_page_helper.rb +23 -0
  138. data/lib/active_admin/comments/views.rb +3 -0
  139. data/lib/active_admin/comments/views/active_admin_comment.rb +0 -0
  140. data/lib/active_admin/comments/views/active_admin_comments.rb +82 -0
  141. data/lib/active_admin/component.rb +22 -0
  142. data/lib/active_admin/controller_action.rb +12 -0
  143. data/lib/active_admin/csv_builder.rb +45 -0
  144. data/lib/active_admin/dashboards.rb +48 -0
  145. data/lib/active_admin/dashboards/dashboard_controller.rb +38 -0
  146. data/lib/active_admin/dashboards/section.rb +34 -0
  147. data/lib/active_admin/deprecation.rb +36 -0
  148. data/lib/active_admin/devise.rb +43 -0
  149. data/lib/active_admin/dsl.rb +224 -0
  150. data/lib/active_admin/engine.rb +4 -0
  151. data/lib/active_admin/event.rb +31 -0
  152. data/lib/active_admin/form_builder.rb +109 -0
  153. data/lib/active_admin/helpers/optional_display.rb +34 -0
  154. data/lib/active_admin/helpers/settings.rb +63 -0
  155. data/lib/active_admin/iconic.rb +51 -0
  156. data/lib/active_admin/iconic/icons.rb +142 -0
  157. data/lib/active_admin/locales/da.yml +28 -0
  158. data/lib/active_admin/locales/en.yml +40 -0
  159. data/lib/active_admin/locales/es.yml +39 -0
  160. data/lib/active_admin/locales/it.yml +39 -0
  161. data/lib/active_admin/locales/pt-BR.yml +36 -0
  162. data/lib/active_admin/locales/ru.yml +40 -0
  163. data/lib/active_admin/locales/zh_cn.yml +40 -0
  164. data/lib/active_admin/menu.rb +42 -0
  165. data/lib/active_admin/menu_item.rb +73 -0
  166. data/lib/active_admin/namespace.rb +206 -0
  167. data/lib/active_admin/page_config.rb +15 -0
  168. data/lib/active_admin/reloader.rb +30 -0
  169. data/lib/active_admin/renderer.rb +87 -0
  170. data/lib/active_admin/resource.rb +151 -0
  171. data/lib/active_admin/resource/action_items.rb +88 -0
  172. data/lib/active_admin/resource/belongs_to.rb +31 -0
  173. data/lib/active_admin/resource/menu.rb +45 -0
  174. data/lib/active_admin/resource/naming.rb +36 -0
  175. data/lib/active_admin/resource/scopes.rb +33 -0
  176. data/lib/active_admin/resource/sidebars.rb +36 -0
  177. data/lib/active_admin/resource_controller.rb +103 -0
  178. data/lib/active_admin/resource_controller/action_builder.rb +21 -0
  179. data/lib/active_admin/resource_controller/actions.rb +79 -0
  180. data/lib/active_admin/resource_controller/callbacks.rb +47 -0
  181. data/lib/active_admin/resource_controller/collection.rb +144 -0
  182. data/lib/active_admin/resource_controller/filters.rb +58 -0
  183. data/lib/active_admin/resource_controller/form.rb +42 -0
  184. data/lib/active_admin/resource_controller/menu.rb +29 -0
  185. data/lib/active_admin/resource_controller/page_configurations.rb +53 -0
  186. data/lib/active_admin/resource_controller/scoping.rb +36 -0
  187. data/lib/active_admin/resource_controller/sidebars.rb +18 -0
  188. data/lib/active_admin/router.rb +85 -0
  189. data/lib/active_admin/sass/active_admin.scss +3 -0
  190. data/lib/active_admin/sass/css_loader.rb +16 -0
  191. data/lib/active_admin/sass/helpers.rb +40 -0
  192. data/lib/active_admin/scope.rb +17 -0
  193. data/lib/active_admin/sidebar_section.rb +41 -0
  194. data/lib/active_admin/stylesheets/active_admin/mixins/_utilities.scss +0 -0
  195. data/lib/active_admin/version.rb +3 -0
  196. data/lib/active_admin/view_factory.rb +23 -0
  197. data/lib/active_admin/view_helpers.rb +22 -0
  198. data/lib/active_admin/view_helpers/active_admin_application_helper.rb +12 -0
  199. data/lib/active_admin/view_helpers/assigns_with_indifferent_access_helper.rb +7 -0
  200. data/lib/active_admin/view_helpers/auto_link_helper.rb +42 -0
  201. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +29 -0
  202. data/lib/active_admin/view_helpers/display_helper.rb +38 -0
  203. data/lib/active_admin/view_helpers/filter_form_helper.rb +186 -0
  204. data/lib/active_admin/view_helpers/form_helper.rb +13 -0
  205. data/lib/active_admin/view_helpers/icon_helper.rb +12 -0
  206. data/lib/active_admin/view_helpers/method_or_proc_helper.rb +26 -0
  207. data/lib/active_admin/view_helpers/renderer_helper.rb +29 -0
  208. data/lib/active_admin/view_helpers/sidebar_helper.rb +15 -0
  209. data/lib/active_admin/view_helpers/title_helper.rb +11 -0
  210. data/lib/active_admin/view_helpers/view_factory_helper.rb +11 -0
  211. data/lib/active_admin/views.rb +8 -0
  212. data/lib/active_admin/views/action_items.rb +17 -0
  213. data/lib/active_admin/views/components/attributes_table.rb +66 -0
  214. data/lib/active_admin/views/components/blank_slate.rb +33 -0
  215. data/lib/active_admin/views/components/columns.rb +47 -0
  216. data/lib/active_admin/views/components/paginated_collection.rb +92 -0
  217. data/lib/active_admin/views/components/panel.rb +26 -0
  218. data/lib/active_admin/views/components/scopes.rb +70 -0
  219. data/lib/active_admin/views/components/sidebar_section.rb +28 -0
  220. data/lib/active_admin/views/components/status_tag.rb +55 -0
  221. data/lib/active_admin/views/components/table_for.rb +193 -0
  222. data/lib/active_admin/views/dashboard_section_renderer.rb +19 -0
  223. data/lib/active_admin/views/header_renderer.rb +53 -0
  224. data/lib/active_admin/views/index_as_block.rb +29 -0
  225. data/lib/active_admin/views/index_as_blog.rb +129 -0
  226. data/lib/active_admin/views/index_as_grid.rb +70 -0
  227. data/lib/active_admin/views/index_as_table.rb +148 -0
  228. data/lib/active_admin/views/pages/base.rb +155 -0
  229. data/lib/active_admin/views/pages/dashboard.rb +62 -0
  230. data/lib/active_admin/views/pages/edit.rb +28 -0
  231. data/lib/active_admin/views/pages/index.rb +74 -0
  232. data/lib/active_admin/views/pages/layout.rb +26 -0
  233. data/lib/active_admin/views/pages/new.rb +28 -0
  234. data/lib/active_admin/views/pages/show.rb +56 -0
  235. data/lib/active_admin/views/tabs_renderer.rb +58 -0
  236. data/lib/activeadmin.rb +1 -0
  237. data/lib/generators/active_admin/assets/assets_generator.rb +21 -0
  238. data/lib/generators/active_admin/assets/templates/3.0/active_admin.js +427 -0
  239. data/lib/generators/active_admin/assets/templates/3.1/active_admin.css.scss +6 -0
  240. data/lib/generators/active_admin/assets/templates/3.1/active_admin.js +1 -0
  241. data/lib/generators/active_admin/assets/templates/dashboards.rb +36 -0
  242. data/lib/generators/active_admin/devise/devise_generator.rb +49 -0
  243. data/lib/generators/active_admin/install/install_generator.rb +44 -0
  244. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +93 -0
  245. data/lib/generators/active_admin/install/templates/dashboards.rb +38 -0
  246. data/lib/generators/active_admin/install/templates/migrations/1_create_admin_notes.rb +16 -0
  247. data/lib/generators/active_admin/install/templates/migrations/2_move_admin_notes_to_comments.rb +25 -0
  248. data/lib/generators/active_admin/resource/resource_generator.rb +16 -0
  249. data/lib/generators/active_admin/resource/templates/admin.rb +3 -0
  250. data/script/local +44 -0
  251. data/script/use_rails +45 -0
  252. data/spec/integration/belongs_to_spec.rb +42 -0
  253. data/spec/integration/default_namespace.rb +77 -0
  254. data/spec/integration/javascript_spec.rb +20 -0
  255. data/spec/integration/stylesheets_spec.rb +41 -0
  256. data/spec/spec_helper.rb +157 -0
  257. data/spec/support/detect_rails_version.rb +11 -0
  258. data/spec/support/integration_example_group.rb +33 -0
  259. data/spec/support/jslint.yml +80 -0
  260. data/spec/support/rails_template.rb +32 -0
  261. data/spec/support/rails_template_with_data.rb +33 -0
  262. data/spec/support/templates/cucumber.rb +24 -0
  263. data/spec/unit/abstract_view_factory_spec.rb +79 -0
  264. data/spec/unit/action_builder_spec.rb +88 -0
  265. data/spec/unit/application_spec.rb +78 -0
  266. data/spec/unit/arbre/html/context_spec.rb +22 -0
  267. data/spec/unit/arbre/html/element_finder_methods_spec.rb +54 -0
  268. data/spec/unit/arbre/html/element_spec.rb +224 -0
  269. data/spec/unit/arbre/html/tag_attributes_spec.rb +61 -0
  270. data/spec/unit/arbre/html/tag_spec.rb +63 -0
  271. data/spec/unit/arbre/html_spec.rb +210 -0
  272. data/spec/unit/asset_registration_spec.rb +37 -0
  273. data/spec/unit/auto_link_spec.rb +39 -0
  274. data/spec/unit/belongs_to_spec.rb +45 -0
  275. data/spec/unit/breadcrumbs_spec.rb +110 -0
  276. data/spec/unit/comments_spec.rb +57 -0
  277. data/spec/unit/component_spec.rb +18 -0
  278. data/spec/unit/controller_filters_spec.rb +34 -0
  279. data/spec/unit/csv_builder_spec.rb +83 -0
  280. data/spec/unit/dashboard_controller_spec.rb +26 -0
  281. data/spec/unit/dashboard_section_spec.rb +56 -0
  282. data/spec/unit/dashboards_spec.rb +59 -0
  283. data/spec/unit/display_name_spec.rb +29 -0
  284. data/spec/unit/event_spec.rb +41 -0
  285. data/spec/unit/filter_form_builder_spec.rb +182 -0
  286. data/spec/unit/form_builder_spec.rb +239 -0
  287. data/spec/unit/generators/install_rails_3_1_spec.rb +16 -0
  288. data/spec/unit/helpers/settings_spec.rb +30 -0
  289. data/spec/unit/menu_item_spec.rb +143 -0
  290. data/spec/unit/menu_spec.rb +53 -0
  291. data/spec/unit/namespace_spec.rb +214 -0
  292. data/spec/unit/pretty_format_spec.rb +35 -0
  293. data/spec/unit/rails_spec.rb +43 -0
  294. data/spec/unit/registration_spec.rb +76 -0
  295. data/spec/unit/reloader_spec.rb +28 -0
  296. data/spec/unit/renderer_spec.rb +108 -0
  297. data/spec/unit/resource/action_items_spec.rb +62 -0
  298. data/spec/unit/resource/menu_spec.rb +80 -0
  299. data/spec/unit/resource/naming_spec.rb +56 -0
  300. data/spec/unit/resource/scopes_spec.rb +30 -0
  301. data/spec/unit/resource/sidebars_spec.rb +50 -0
  302. data/spec/unit/resource_controller/collection_spec.rb +34 -0
  303. data/spec/unit/resource_controller_spec.rb +152 -0
  304. data/spec/unit/resource_spec.rb +260 -0
  305. data/spec/unit/routing_spec.rb +88 -0
  306. data/spec/unit/sass/helpers_spec.rb +47 -0
  307. data/spec/unit/scope_spec.rb +31 -0
  308. data/spec/unit/tabs_renderer_spec.rb +85 -0
  309. data/spec/unit/view_factory_spec.rb +19 -0
  310. data/spec/unit/views/components/attributes_table_spec.rb +100 -0
  311. data/spec/unit/views/components/blank_slate_spec.rb +31 -0
  312. data/spec/unit/views/components/columns_spec.rb +75 -0
  313. data/spec/unit/views/components/panel_spec.rb +31 -0
  314. data/spec/unit/views/components/sidebar_section_spec.rb +37 -0
  315. data/spec/unit/views/components/status_tag_spec.rb +81 -0
  316. data/spec/unit/views/components/table_for_spec.rb +130 -0
  317. data/spec/unit/views/pages/layout_spec.rb +22 -0
  318. data/tasks/docs.rake +39 -0
  319. data/tasks/test.rake +49 -0
  320. data/tasks/yard.rake +6 -0
  321. metadata +510 -0
@@ -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,53 @@
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', active_admin_application.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
+ html = content_tag(:span, display_name(current_active_admin_user), :class => "current_user")
30
+
31
+ if active_admin_application.logout_link_path
32
+ html << link_to(I18n.t('active_admin.logout'), logout_path, :method => logout_method)
33
+ end
34
+ end
35
+ end
36
+ end
37
+
38
+ # Returns the logout path from the application settings
39
+ def logout_path
40
+ if active_admin_application.logout_link_path.is_a?(Symbol)
41
+ send(active_admin_application.logout_link_path)
42
+ else
43
+ active_admin_application.logout_link_path
44
+ end
45
+ end
46
+
47
+ def logout_method
48
+ active_admin_application.logout_link_method || :get
49
+ end
50
+ end
51
+
52
+ end
53
+ end
@@ -0,0 +1,29 @@
1
+ module ActiveAdmin
2
+ module Views
3
+
4
+ # = Index as a Block
5
+ #
6
+ # If you want to fully customize the display of your resources on the index
7
+ # screen, Index as a Block allows you to render a block of content for each
8
+ # resource.
9
+ #
10
+ # index :as => :block do |product|
11
+ # div :for => product do
12
+ # h2 auto_link(product.title)
13
+ # div do
14
+ # simple_format product.description
15
+ # end
16
+ # end
17
+ # end
18
+ #
19
+ class IndexAsBlock < ActiveAdmin::Component
20
+
21
+ def build(page_config, collection)
22
+ collection.each do |obj|
23
+ instance_exec(obj, &page_config.block)
24
+ end
25
+ end
26
+
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,129 @@
1
+ module ActiveAdmin
2
+ module Views
3
+
4
+ # = Index as Blog
5
+ #
6
+ # Render your index page as a set of posts. The post has two main options:
7
+ # title and body.
8
+ #
9
+ # index :as => :blog do
10
+ # title :my_title # Calls #my_title on each resource
11
+ # body :my_body # Calls #my_body on each resource
12
+ # end
13
+ #
14
+ # == Post Title
15
+ #
16
+ # The title is the content that will be rendered within a link to the
17
+ # resource. There are two main ways to set the content for the title
18
+ #
19
+ # First, you can pass in a method to be called on your
20
+ # resource. For example:
21
+ #
22
+ # index :as => :blog do
23
+ # title :a_method_to_call
24
+ # end
25
+ #
26
+ # This will result in the title of the post being the return value of
27
+ # Resource#a_method_to_call
28
+ #
29
+ # Second, you can pass a block to the tile option which will then be
30
+ # used as the contents fo the title. The resource being rendered
31
+ # is passed in to the block. For Example:
32
+ #
33
+ # index :as => :blog do
34
+ # title do |post|
35
+ # span post.title, :class => 'title'
36
+ # span post.created_at, :class => 'created_at'
37
+ # end
38
+ # end
39
+ #
40
+ # == Post Body
41
+ #
42
+ # The body is rendered underneath the title of each post. The same two
43
+ # style of options work as the Post Title above.
44
+ #
45
+ # Call a method on the resource as the body:
46
+ #
47
+ # index :as => :blog do
48
+ # title :my_title
49
+ # body :my_body # Return value of #my_body will be the body
50
+ # end
51
+ #
52
+ # Or, render a block as the body:
53
+ #
54
+ # index :as => :blog do
55
+ # title :my_title
56
+ # body do |post|
57
+ # div truncate(post.title)
58
+ # div :class => 'meta' do
59
+ # span "Post in #{post.categories.join(', ')}"
60
+ # end
61
+ # end
62
+ # end
63
+ #
64
+ class IndexAsBlog < ActiveAdmin::Component
65
+
66
+ def build(page_config, collection)
67
+ @page_config = page_config
68
+ @collection = collection
69
+
70
+ # Call the block passed in. This will set the
71
+ # title and body methods
72
+ instance_eval &page_config.block if page_config.block
73
+
74
+ build_posts
75
+ end
76
+
77
+ # Setter method for the configuration of the title
78
+ def title(method = nil, &block)
79
+ if block_given? || method
80
+ @title = block_given? ? block : method
81
+ end
82
+ @title
83
+ end
84
+
85
+ # Setter method for the configuration of the body
86
+ #
87
+ def body(method = nil, &block)
88
+ if block_given? || method
89
+ @body = block_given? ? block : method
90
+ end
91
+ @body
92
+ end
93
+
94
+ private
95
+
96
+ def build_posts
97
+ @collection.each do |post|
98
+ build_post(post)
99
+ end
100
+ end
101
+
102
+ def build_post(post)
103
+ div :for => post do
104
+ build_title(post)
105
+ build_body(post)
106
+ end
107
+ end
108
+
109
+ def build_title(post)
110
+ if @title
111
+ h3 do
112
+ link_to(call_method_or_proc_on(post, @title), resource_path(post))
113
+ end
114
+ else
115
+ h3 do
116
+ auto_link(post)
117
+ end
118
+ end
119
+ end
120
+
121
+ def build_body(post)
122
+ if @body
123
+ div(call_method_or_proc_on(post, @body), :class => 'content')
124
+ end
125
+ end
126
+
127
+ end # Posts
128
+ end
129
+ end
@@ -0,0 +1,70 @@
1
+ module ActiveAdmin
2
+ module Views
3
+
4
+ # = Index as a Grid
5
+ #
6
+ # Sometimes you want to display the index screen for a set of resources as a grid
7
+ # (possibly a grid of thumbnail images). To do so, use the :grid option for the
8
+ # index block.
9
+ #
10
+ # index :as => :grid do |product|
11
+ # link_to(image_tag(product.image_path), admin_products_path(product))
12
+ # end
13
+ #
14
+ # The block is rendered within a cell in the grid once for each resource in the
15
+ # collection. The resource is passed into the block for you to use in the view.
16
+ #
17
+ # You can customize the number of colums that are rendered using the columns
18
+ # option:
19
+ #
20
+ # index :as => :grid, :columns => 5 do |product|
21
+ # link_to(image_tag(product.image_path), admin_products_path(product))
22
+ # end
23
+ #
24
+ class IndexAsGrid < ActiveAdmin::Component
25
+
26
+ def build(page_config, collection)
27
+ @page_config = page_config
28
+ @collection = collection
29
+ build_table
30
+ end
31
+
32
+ def number_of_columns
33
+ @page_config[:columns] || default_number_of_columns
34
+ end
35
+
36
+ protected
37
+
38
+ def build_table
39
+ table :class => "index_grid" do
40
+ collection.in_groups_of(number_of_columns).each do |group|
41
+ build_row(group)
42
+ end
43
+ end
44
+ end
45
+
46
+ def build_row(group)
47
+ tr do
48
+ group.each do |item|
49
+ item ? build_item(item) : build_empty_cell
50
+ end
51
+ end
52
+ end
53
+
54
+ def build_item(item)
55
+ td :for => item do
56
+ instance_exec(item, &@page_config.block)
57
+ end
58
+ end
59
+
60
+ def build_empty_cell
61
+ td '&nbsp;'.html_safe
62
+ end
63
+
64
+ def default_number_of_columns
65
+ 3
66
+ end
67
+
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,148 @@
1
+ module ActiveAdmin
2
+ module Views
3
+
4
+ # = Index as a Table
5
+ #
6
+ # By default, the index page is a table with each of the models content columns and links to
7
+ # show, edit and delete the object. There are many ways to customize what gets
8
+ # displayed.
9
+ #
10
+ # == Defining Columns
11
+ #
12
+ # To display an attribute or a method on a resource, simply pass a symbol into the
13
+ # column method:
14
+ #
15
+ # index do
16
+ # column :title
17
+ # end
18
+ #
19
+ # If the default title does not work for you, pass it as the first argument:
20
+ #
21
+ # index do
22
+ # column "My Custom Title", :title
23
+ # end
24
+ #
25
+ # Sometimes calling methods just isn't enough and you need to write some view
26
+ # specific code. For example, say we wanted a colum called Title which holds a
27
+ # link to the posts admin screen.
28
+ #
29
+ # The column method accepts a block as an argument which will then be rendered
30
+ # within the context of the view for each of the objects in the collection.
31
+ #
32
+ # index do
33
+ # column "Title" do |post|
34
+ # link_to post.title, admin_post_path(post)
35
+ # end
36
+ # end
37
+ #
38
+ # The block gets called once for each resource in the collection. The resource gets passed into
39
+ # the block as an argument.
40
+ #
41
+ #
42
+ # == Sorting
43
+ #
44
+ # When a column is generated from an Active Record attribute, the table is
45
+ # sortable by default. If you are creating a custom column, you may need to give
46
+ # Active Admin a hint for how to sort the table.
47
+ #
48
+ # If a column is defined using a block, you must pass the key to turn on sorting. The key
49
+ # is the attribute which gets used to sort objects using Active Record.
50
+ #
51
+ # index do
52
+ # column "Title", :sortable => :title do |post|
53
+ # link_to post.title, admin_post_path(post)
54
+ # end
55
+ # end
56
+ #
57
+ # You can turn off sorting on any column by passing false:
58
+ #
59
+ # index do
60
+ # column :title, :sortable => false
61
+ # end
62
+ #
63
+ # == Showing and Hiding Columns
64
+ #
65
+ # The entire index block is rendered within the context of the view, so you can
66
+ # easily do things that show or hide columns based on the current context.
67
+ #
68
+ # For example, if you were using CanCan:
69
+ #
70
+ # index do
71
+ # column :title, :sortable => false
72
+ # if can? :manage, Post
73
+ # column :some_secret_data
74
+ # end
75
+ # end
76
+ #
77
+ class IndexAsTable < ActiveAdmin::Component
78
+
79
+ def build(page_config, collection)
80
+ table_options = {
81
+ :id => active_admin_config.plural_resource_name.underscore,
82
+ :sortable => true,
83
+ :class => "index_table",
84
+ :i18n => active_admin_config.resource
85
+ }
86
+
87
+ table_for collection, table_options do |t|
88
+ instance_exec(t, &page_config.block)
89
+ end
90
+ end
91
+
92
+ def table_for(*args, &block)
93
+ insert_tag IndexTableFor, *args, &block
94
+ end
95
+
96
+ #
97
+ # Extend the default ActiveAdmin::Views::TableFor with some
98
+ # methods for quickly displaying items on the index page
99
+ #
100
+ class IndexTableFor < ::ActiveAdmin::Views::TableFor
101
+
102
+ # Display a column for the id
103
+ def id_column
104
+ column('ID', :sortable => :id){|resource| link_to resource.id, resource_path(resource), :class => "resource_id_link"}
105
+ end
106
+
107
+ # Adds links to View, Edit and Delete
108
+ def default_actions(options = {})
109
+ options = {
110
+ :name => ""
111
+ }.merge(options)
112
+ column options[:name] do |resource|
113
+ links = link_to I18n.t('active_admin.view'), resource_path(resource), :class => "member_link view_link"
114
+ links += link_to I18n.t('active_admin.edit'), edit_resource_path(resource), :class => "member_link edit_link"
115
+ 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"
116
+ links
117
+ end
118
+ end
119
+
120
+ # Display A Status Tag Column
121
+ #
122
+ # index do |i|
123
+ # i.status_tag :state
124
+ # end
125
+ #
126
+ # index do |i|
127
+ # i.status_tag "State", :status_name
128
+ # end
129
+ #
130
+ # index do |i|
131
+ # i.status_tag do |post|
132
+ # post.published? ? 'published' : 'draft'
133
+ # end
134
+ # end
135
+ #
136
+ def status_tag(*args, &block)
137
+ col = Column.new(*args, &block)
138
+ data = col.data
139
+ col.data = proc do |resource|
140
+ status_tag call_method_or_proc_on(resource, data)
141
+ end
142
+ add_column col
143
+ end
144
+ end # TableBuilder
145
+
146
+ end # Table
147
+ end
148
+ end