andrewroth_activeadmin 0.3.4

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 (338) hide show
  1. data/.document +5 -0
  2. data/.gitignore +35 -0
  3. data/.travis.yml +4 -0
  4. data/.yardopts +8 -0
  5. data/CHANGELOG.md +301 -0
  6. data/Gemfile +40 -0
  7. data/Guardfile +8 -0
  8. data/LICENSE +25 -0
  9. data/README.rdoc +113 -0
  10. data/Rakefile +18 -0
  11. data/activeadmin.gemspec +28 -0
  12. data/app/assets/images/active_admin/admin_notes_icon.png +0 -0
  13. data/app/assets/images/active_admin/datepicker/datepicker-header-bg.png +0 -0
  14. data/app/assets/images/active_admin/datepicker/datepicker-input-icon.png +0 -0
  15. data/app/assets/images/active_admin/datepicker/datepicker-next-link-icon.png +0 -0
  16. data/app/assets/images/active_admin/datepicker/datepicker-nipple.png +0 -0
  17. data/app/assets/images/active_admin/datepicker/datepicker-prev-link-icon.png +0 -0
  18. data/app/assets/images/active_admin/loading.gif +0 -0
  19. data/app/assets/images/active_admin/nested_menu_arrow.gif +0 -0
  20. data/app/assets/images/active_admin/nested_menu_arrow_dark.gif +0 -0
  21. data/app/assets/images/active_admin/orderable.png +0 -0
  22. data/app/assets/javascripts/active_admin/base.js +12 -0
  23. data/app/assets/javascripts/active_admin/vendor.js +382 -0
  24. data/app/assets/stylesheets/active_admin/_base.css.scss +363 -0
  25. data/app/assets/stylesheets/active_admin/_forms.css.scss +259 -0
  26. data/app/assets/stylesheets/active_admin/_header.css.scss +121 -0
  27. data/app/assets/stylesheets/active_admin/_mixins.css.scss +1 -0
  28. data/app/assets/stylesheets/active_admin/_typography.css.scss +102 -0
  29. data/app/assets/stylesheets/active_admin/components/_comments.css.scss +43 -0
  30. data/app/assets/stylesheets/active_admin/components/_date_picker.css.scss +125 -0
  31. data/app/assets/stylesheets/active_admin/components/_flash_messages.css.scss +39 -0
  32. data/app/assets/stylesheets/active_admin/components/_tables.css.scss +68 -0
  33. data/app/assets/stylesheets/active_admin/mixins/_all.css.scss +10 -0
  34. data/app/assets/stylesheets/active_admin/mixins/_buttons.css.scss +27 -0
  35. data/app/assets/stylesheets/active_admin/mixins/_gradients.css.scss +29 -0
  36. data/app/assets/stylesheets/active_admin/mixins/_icons.css.scss +20 -0
  37. data/app/assets/stylesheets/active_admin/mixins/_reset.css.scss +165 -0
  38. data/app/assets/stylesheets/active_admin/mixins/_rounded.css.scss +43 -0
  39. data/app/assets/stylesheets/active_admin/mixins/_sections.css.scss +34 -0
  40. data/app/assets/stylesheets/active_admin/mixins/_shadows.css.scss +21 -0
  41. data/app/assets/stylesheets/active_admin/mixins/_utilities.scss +17 -0
  42. data/app/assets/stylesheets/active_admin/mixins/_variables.css.scss +21 -0
  43. data/app/views/active_admin/dashboard/index.html.arb +1 -0
  44. data/app/views/active_admin/devise/mailer/reset_password_instructions.html.erb +8 -0
  45. data/app/views/active_admin/devise/mailer/unlock_instructions.html.erb +7 -0
  46. data/app/views/active_admin/devise/passwords/edit.html.erb +16 -0
  47. data/app/views/active_admin/devise/passwords/new.html.erb +14 -0
  48. data/app/views/active_admin/devise/sessions/new.html.erb +18 -0
  49. data/app/views/active_admin/devise/shared/_links.erb +20 -0
  50. data/app/views/active_admin/devise/unlocks/new.html.erb +12 -0
  51. data/app/views/active_admin/resource/edit.html.arb +1 -0
  52. data/app/views/active_admin/resource/index.csv.erb +20 -0
  53. data/app/views/active_admin/resource/index.html.arb +1 -0
  54. data/app/views/active_admin/resource/new.html.arb +1 -0
  55. data/app/views/active_admin/resource/show.html.arb +1 -0
  56. data/app/views/layouts/active_admin.html.arb +1 -0
  57. data/app/views/layouts/active_admin_logged_out.html.erb +35 -0
  58. data/cucumber.yml +2 -0
  59. data/docs/0-installation.md +50 -0
  60. data/docs/1-general-configuration.md +43 -0
  61. data/docs/2-resource-customization.md +114 -0
  62. data/docs/3-index-pages.md +55 -0
  63. data/docs/3-index-pages/index-as-block.md +16 -0
  64. data/docs/3-index-pages/index-as-blog.md +61 -0
  65. data/docs/3-index-pages/index-as-grid.md +21 -0
  66. data/docs/3-index-pages/index-as-table.md +90 -0
  67. data/docs/4-csv-format.md +14 -0
  68. data/docs/5-forms.md +39 -0
  69. data/docs/6-show-screens.md +36 -0
  70. data/docs/7-sidebars.md +35 -0
  71. data/docs/8-custom-actions.md +123 -0
  72. data/features/comments/commenting.feature +112 -0
  73. data/features/comments/viewing_index.feature +19 -0
  74. data/features/dashboard.feature +26 -0
  75. data/features/edit_page.feature +106 -0
  76. data/features/first_boot.feature +16 -0
  77. data/features/global_navigation.feature +30 -0
  78. data/features/index/filters.feature +35 -0
  79. data/features/index/format_as_csv.feature +46 -0
  80. data/features/index/formats.feature +12 -0
  81. data/features/index/index_as_block.feature +15 -0
  82. data/features/index/index_as_blog.feature +50 -0
  83. data/features/index/index_as_grid.feature +45 -0
  84. data/features/index/index_as_table.feature +81 -0
  85. data/features/index/index_blank_slate.feature +56 -0
  86. data/features/index/index_scopes.feature +52 -0
  87. data/features/index/pagination.feature +17 -0
  88. data/features/menu.feature +37 -0
  89. data/features/new_page.feature +75 -0
  90. data/features/registering_assets.feature +35 -0
  91. data/features/registering_resources.feature +33 -0
  92. data/features/show/default_content.feature +43 -0
  93. data/features/show/page_title.feature +33 -0
  94. data/features/sidebar_sections.feature +127 -0
  95. data/features/specifying_actions.feature +87 -0
  96. data/features/step_definitions/action_item_steps.rb +7 -0
  97. data/features/step_definitions/additional_web_steps.rb +77 -0
  98. data/features/step_definitions/asset_steps.rb +7 -0
  99. data/features/step_definitions/attribute_steps.rb +13 -0
  100. data/features/step_definitions/comment_steps.rb +8 -0
  101. data/features/step_definitions/configuration_steps.rb +31 -0
  102. data/features/step_definitions/dashboard_steps.rb +11 -0
  103. data/features/step_definitions/factory_steps.rb +29 -0
  104. data/features/step_definitions/flash_steps.rb +3 -0
  105. data/features/step_definitions/format_steps.rb +35 -0
  106. data/features/step_definitions/index_scope_steps.rb +20 -0
  107. data/features/step_definitions/layout_steps.rb +3 -0
  108. data/features/step_definitions/menu_steps.rb +7 -0
  109. data/features/step_definitions/pagination_steps.rb +8 -0
  110. data/features/step_definitions/sidebar_steps.rb +7 -0
  111. data/features/step_definitions/tab_steps.rb +3 -0
  112. data/features/step_definitions/user_steps.rb +26 -0
  113. data/features/step_definitions/web_steps.rb +211 -0
  114. data/features/sti_resource.feature +61 -0
  115. data/features/support/env.rb +96 -0
  116. data/features/support/paths.rb +50 -0
  117. data/features/support/selectors.rb +45 -0
  118. data/features/users/logging_in.feature +34 -0
  119. data/features/users/logging_out.feature +13 -0
  120. data/lib/active_admin.rb +82 -0
  121. data/lib/active_admin/abstract_view_factory.rb +95 -0
  122. data/lib/active_admin/application.rb +231 -0
  123. data/lib/active_admin/arbre.rb +23 -0
  124. data/lib/active_admin/arbre/builder.rb +111 -0
  125. data/lib/active_admin/arbre/context.rb +45 -0
  126. data/lib/active_admin/arbre/core_extensions.rb +5 -0
  127. data/lib/active_admin/arbre/html/attributes.rb +20 -0
  128. data/lib/active_admin/arbre/html/class_list.rb +28 -0
  129. data/lib/active_admin/arbre/html/collection.rb +27 -0
  130. data/lib/active_admin/arbre/html/document.rb +42 -0
  131. data/lib/active_admin/arbre/html/element.rb +151 -0
  132. data/lib/active_admin/arbre/html/html5_elements.rb +47 -0
  133. data/lib/active_admin/arbre/html/tag.rb +137 -0
  134. data/lib/active_admin/arbre/html/text_node.rb +35 -0
  135. data/lib/active_admin/asset_registration.rb +34 -0
  136. data/lib/active_admin/callbacks.rb +89 -0
  137. data/lib/active_admin/comments.rb +88 -0
  138. data/lib/active_admin/comments/comment.rb +21 -0
  139. data/lib/active_admin/comments/configuration.rb +18 -0
  140. data/lib/active_admin/comments/namespace_helper.rb +14 -0
  141. data/lib/active_admin/comments/resource_helper.rb +17 -0
  142. data/lib/active_admin/comments/show_page_helper.rb +23 -0
  143. data/lib/active_admin/comments/views.rb +3 -0
  144. data/lib/active_admin/comments/views/active_admin_comment.rb +0 -0
  145. data/lib/active_admin/comments/views/active_admin_comments.rb +82 -0
  146. data/lib/active_admin/component.rb +22 -0
  147. data/lib/active_admin/controller_action.rb +12 -0
  148. data/lib/active_admin/csv_builder.rb +45 -0
  149. data/lib/active_admin/dashboards.rb +48 -0
  150. data/lib/active_admin/dashboards/dashboard_controller.rb +38 -0
  151. data/lib/active_admin/dashboards/section.rb +34 -0
  152. data/lib/active_admin/dependency_checker.rb +30 -0
  153. data/lib/active_admin/deprecation.rb +36 -0
  154. data/lib/active_admin/devise.rb +54 -0
  155. data/lib/active_admin/dsl.rb +224 -0
  156. data/lib/active_admin/engine.rb +4 -0
  157. data/lib/active_admin/event.rb +31 -0
  158. data/lib/active_admin/form_builder.rb +118 -0
  159. data/lib/active_admin/helpers/optional_display.rb +34 -0
  160. data/lib/active_admin/helpers/scope_chain.rb +23 -0
  161. data/lib/active_admin/helpers/settings.rb +70 -0
  162. data/lib/active_admin/iconic.rb +51 -0
  163. data/lib/active_admin/iconic/icons.rb +142 -0
  164. data/lib/active_admin/locales/bg.yml +40 -0
  165. data/lib/active_admin/locales/cs.yml +34 -0
  166. data/lib/active_admin/locales/da.yml +28 -0
  167. data/lib/active_admin/locales/en.yml +40 -0
  168. data/lib/active_admin/locales/es.yml +40 -0
  169. data/lib/active_admin/locales/fr.yml +40 -0
  170. data/lib/active_admin/locales/it.yml +40 -0
  171. data/lib/active_admin/locales/ja.yml +40 -0
  172. data/lib/active_admin/locales/pl.yml +34 -0
  173. data/lib/active_admin/locales/pt-BR.yml +41 -0
  174. data/lib/active_admin/locales/ru.yml +40 -0
  175. data/lib/active_admin/locales/sv-SE.yml +40 -0
  176. data/lib/active_admin/locales/zh_cn.yml +40 -0
  177. data/lib/active_admin/menu.rb +42 -0
  178. data/lib/active_admin/menu_item.rb +73 -0
  179. data/lib/active_admin/namespace.rb +206 -0
  180. data/lib/active_admin/page_config.rb +15 -0
  181. data/lib/active_admin/reloader.rb +64 -0
  182. data/lib/active_admin/renderer.rb +87 -0
  183. data/lib/active_admin/resource.rb +159 -0
  184. data/lib/active_admin/resource/action_items.rb +88 -0
  185. data/lib/active_admin/resource/belongs_to.rb +31 -0
  186. data/lib/active_admin/resource/menu.rb +45 -0
  187. data/lib/active_admin/resource/naming.rb +50 -0
  188. data/lib/active_admin/resource/scopes.rb +33 -0
  189. data/lib/active_admin/resource/sidebars.rb +36 -0
  190. data/lib/active_admin/resource_controller.rb +105 -0
  191. data/lib/active_admin/resource_controller/action_builder.rb +21 -0
  192. data/lib/active_admin/resource_controller/actions.rb +79 -0
  193. data/lib/active_admin/resource_controller/callbacks.rb +47 -0
  194. data/lib/active_admin/resource_controller/collection.rb +138 -0
  195. data/lib/active_admin/resource_controller/filters.rb +58 -0
  196. data/lib/active_admin/resource_controller/form.rb +42 -0
  197. data/lib/active_admin/resource_controller/menu.rb +29 -0
  198. data/lib/active_admin/resource_controller/page_configurations.rb +53 -0
  199. data/lib/active_admin/resource_controller/scoping.rb +36 -0
  200. data/lib/active_admin/resource_controller/sidebars.rb +18 -0
  201. data/lib/active_admin/router.rb +85 -0
  202. data/lib/active_admin/sass/active_admin.scss +3 -0
  203. data/lib/active_admin/sass/css_loader.rb +16 -0
  204. data/lib/active_admin/sass/helpers.rb +45 -0
  205. data/lib/active_admin/scope.rb +31 -0
  206. data/lib/active_admin/sidebar_section.rb +41 -0
  207. data/lib/active_admin/stylesheets/active_admin/mixins/_utilities.scss +0 -0
  208. data/lib/active_admin/version.rb +3 -0
  209. data/lib/active_admin/view_factory.rb +23 -0
  210. data/lib/active_admin/view_helpers.rb +22 -0
  211. data/lib/active_admin/view_helpers/active_admin_application_helper.rb +12 -0
  212. data/lib/active_admin/view_helpers/assigns_with_indifferent_access_helper.rb +7 -0
  213. data/lib/active_admin/view_helpers/auto_link_helper.rb +42 -0
  214. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +29 -0
  215. data/lib/active_admin/view_helpers/display_helper.rb +38 -0
  216. data/lib/active_admin/view_helpers/filter_form_helper.rb +186 -0
  217. data/lib/active_admin/view_helpers/form_helper.rb +13 -0
  218. data/lib/active_admin/view_helpers/icon_helper.rb +12 -0
  219. data/lib/active_admin/view_helpers/method_or_proc_helper.rb +26 -0
  220. data/lib/active_admin/view_helpers/renderer_helper.rb +29 -0
  221. data/lib/active_admin/view_helpers/sidebar_helper.rb +15 -0
  222. data/lib/active_admin/view_helpers/title_helper.rb +11 -0
  223. data/lib/active_admin/view_helpers/view_factory_helper.rb +11 -0
  224. data/lib/active_admin/views.rb +8 -0
  225. data/lib/active_admin/views/action_items.rb +17 -0
  226. data/lib/active_admin/views/components/attributes_table.rb +66 -0
  227. data/lib/active_admin/views/components/blank_slate.rb +17 -0
  228. data/lib/active_admin/views/components/columns.rb +47 -0
  229. data/lib/active_admin/views/components/paginated_collection.rb +92 -0
  230. data/lib/active_admin/views/components/panel.rb +26 -0
  231. data/lib/active_admin/views/components/scopes.rb +69 -0
  232. data/lib/active_admin/views/components/sidebar_section.rb +28 -0
  233. data/lib/active_admin/views/components/status_tag.rb +55 -0
  234. data/lib/active_admin/views/components/table_for.rb +193 -0
  235. data/lib/active_admin/views/dashboard_section_renderer.rb +19 -0
  236. data/lib/active_admin/views/header_renderer.rb +57 -0
  237. data/lib/active_admin/views/index_as_block.rb +29 -0
  238. data/lib/active_admin/views/index_as_blog.rb +129 -0
  239. data/lib/active_admin/views/index_as_grid.rb +70 -0
  240. data/lib/active_admin/views/index_as_table.rb +164 -0
  241. data/lib/active_admin/views/pages/base.rb +167 -0
  242. data/lib/active_admin/views/pages/dashboard.rb +62 -0
  243. data/lib/active_admin/views/pages/edit.rb +28 -0
  244. data/lib/active_admin/views/pages/index.rb +91 -0
  245. data/lib/active_admin/views/pages/layout.rb +26 -0
  246. data/lib/active_admin/views/pages/new.rb +28 -0
  247. data/lib/active_admin/views/pages/show.rb +56 -0
  248. data/lib/active_admin/views/tabbed_navigation.rb +94 -0
  249. data/lib/activeadmin.rb +1 -0
  250. data/lib/generators/active_admin/assets/assets_generator.rb +21 -0
  251. data/lib/generators/active_admin/assets/templates/3.0/active_admin.js +427 -0
  252. data/lib/generators/active_admin/assets/templates/3.1/active_admin.css.scss +6 -0
  253. data/lib/generators/active_admin/assets/templates/3.1/active_admin.js +1 -0
  254. data/lib/generators/active_admin/assets/templates/dashboards.rb +36 -0
  255. data/lib/generators/active_admin/devise/devise_generator.rb +49 -0
  256. data/lib/generators/active_admin/install/install_generator.rb +44 -0
  257. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +103 -0
  258. data/lib/generators/active_admin/install/templates/dashboards.rb +38 -0
  259. data/lib/generators/active_admin/install/templates/migrations/1_create_admin_notes.rb +16 -0
  260. data/lib/generators/active_admin/install/templates/migrations/2_move_admin_notes_to_comments.rb +25 -0
  261. data/lib/generators/active_admin/resource/resource_generator.rb +16 -0
  262. data/lib/generators/active_admin/resource/templates/admin.rb +3 -0
  263. data/script/local +44 -0
  264. data/script/use_rails +46 -0
  265. data/spec/integration/belongs_to_spec.rb +42 -0
  266. data/spec/integration/default_namespace.rb +77 -0
  267. data/spec/integration/javascript_spec.rb +20 -0
  268. data/spec/integration/memory_spec.rb +38 -0
  269. data/spec/integration/stylesheets_spec.rb +41 -0
  270. data/spec/spec_helper.rb +167 -0
  271. data/spec/support/detect_rails_version.rb +10 -0
  272. data/spec/support/integration_example_group.rb +33 -0
  273. data/spec/support/jslint.yml +80 -0
  274. data/spec/support/rails_template.rb +32 -0
  275. data/spec/support/rails_template_with_data.rb +33 -0
  276. data/spec/support/templates/cucumber.rb +24 -0
  277. data/spec/unit/abstract_view_factory_spec.rb +79 -0
  278. data/spec/unit/action_builder_spec.rb +88 -0
  279. data/spec/unit/active_admin_spec.rb +17 -0
  280. data/spec/unit/application_spec.rb +87 -0
  281. data/spec/unit/arbre/context_spec.rb +35 -0
  282. data/spec/unit/arbre/html/element_finder_methods_spec.rb +54 -0
  283. data/spec/unit/arbre/html/element_spec.rb +223 -0
  284. data/spec/unit/arbre/html/tag_attributes_spec.rb +61 -0
  285. data/spec/unit/arbre/html/tag_spec.rb +63 -0
  286. data/spec/unit/arbre/html_spec.rb +209 -0
  287. data/spec/unit/asset_registration_spec.rb +37 -0
  288. data/spec/unit/auto_link_spec.rb +39 -0
  289. data/spec/unit/belongs_to_spec.rb +45 -0
  290. data/spec/unit/breadcrumbs_spec.rb +110 -0
  291. data/spec/unit/comments_spec.rb +57 -0
  292. data/spec/unit/component_spec.rb +18 -0
  293. data/spec/unit/controller_filters_spec.rb +34 -0
  294. data/spec/unit/csv_builder_spec.rb +83 -0
  295. data/spec/unit/dashboard_controller_spec.rb +26 -0
  296. data/spec/unit/dashboard_section_spec.rb +56 -0
  297. data/spec/unit/dashboards_spec.rb +59 -0
  298. data/spec/unit/devise_spec.rb +66 -0
  299. data/spec/unit/display_name_spec.rb +29 -0
  300. data/spec/unit/event_spec.rb +41 -0
  301. data/spec/unit/filter_form_builder_spec.rb +182 -0
  302. data/spec/unit/form_builder_spec.rb +256 -0
  303. data/spec/unit/generators/install_rails_3_1_spec.rb +16 -0
  304. data/spec/unit/helpers/scope_chain_spec.rb +36 -0
  305. data/spec/unit/helpers/settings_spec.rb +30 -0
  306. data/spec/unit/menu_item_spec.rb +143 -0
  307. data/spec/unit/menu_spec.rb +53 -0
  308. data/spec/unit/namespace_spec.rb +214 -0
  309. data/spec/unit/pretty_format_spec.rb +35 -0
  310. data/spec/unit/rails_spec.rb +43 -0
  311. data/spec/unit/registration_spec.rb +76 -0
  312. data/spec/unit/reloader_spec.rb +80 -0
  313. data/spec/unit/renderer_spec.rb +108 -0
  314. data/spec/unit/resource/action_items_spec.rb +62 -0
  315. data/spec/unit/resource/menu_spec.rb +80 -0
  316. data/spec/unit/resource/naming_spec.rb +75 -0
  317. data/spec/unit/resource/scopes_spec.rb +30 -0
  318. data/spec/unit/resource/sidebars_spec.rb +50 -0
  319. data/spec/unit/resource_controller/collection_spec.rb +34 -0
  320. data/spec/unit/resource_controller_spec.rb +152 -0
  321. data/spec/unit/resource_spec.rb +269 -0
  322. data/spec/unit/routing_spec.rb +88 -0
  323. data/spec/unit/sass/helpers_spec.rb +47 -0
  324. data/spec/unit/scope_spec.rb +41 -0
  325. data/spec/unit/view_factory_spec.rb +19 -0
  326. data/spec/unit/views/components/attributes_table_spec.rb +100 -0
  327. data/spec/unit/views/components/blank_slate_spec.rb +15 -0
  328. data/spec/unit/views/components/columns_spec.rb +75 -0
  329. data/spec/unit/views/components/panel_spec.rb +29 -0
  330. data/spec/unit/views/components/sidebar_section_spec.rb +37 -0
  331. data/spec/unit/views/components/status_tag_spec.rb +79 -0
  332. data/spec/unit/views/components/table_for_spec.rb +131 -0
  333. data/spec/unit/views/pages/layout_spec.rb +22 -0
  334. data/spec/unit/views/tabbed_navigation_spec.rb +125 -0
  335. data/tasks/docs.rake +39 -0
  336. data/tasks/test.rake +57 -0
  337. data/tasks/yard.rake +6 -0
  338. metadata +646 -0
@@ -0,0 +1,164 @@
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
+ # To setup links to View, Edit and Delete a resource, use the default_actions method:
42
+ #
43
+ # index do
44
+ # column :title
45
+ # default_actions
46
+ # end
47
+ #
48
+ # Alternatively, you can create a column with custom links:
49
+ #
50
+ # index do
51
+ # column :title
52
+ # column "Actions" do |post|
53
+ # link_to "View", admin_post_path(post)
54
+ # end
55
+ # end
56
+ #
57
+ #
58
+ # == Sorting
59
+ #
60
+ # When a column is generated from an Active Record attribute, the table is
61
+ # sortable by default. If you are creating a custom column, you may need to give
62
+ # Active Admin a hint for how to sort the table.
63
+ #
64
+ # If a column is defined using a block, you must pass the key to turn on sorting. The key
65
+ # is the attribute which gets used to sort objects using Active Record.
66
+ #
67
+ # index do
68
+ # column "Title", :sortable => :title do |post|
69
+ # link_to post.title, admin_post_path(post)
70
+ # end
71
+ # end
72
+ #
73
+ # You can turn off sorting on any column by passing false:
74
+ #
75
+ # index do
76
+ # column :title, :sortable => false
77
+ # end
78
+ #
79
+ # == Showing and Hiding Columns
80
+ #
81
+ # The entire index block is rendered within the context of the view, so you can
82
+ # easily do things that show or hide columns based on the current context.
83
+ #
84
+ # For example, if you were using CanCan:
85
+ #
86
+ # index do
87
+ # column :title, :sortable => false
88
+ # if can? :manage, Post
89
+ # column :some_secret_data
90
+ # end
91
+ # end
92
+ #
93
+ class IndexAsTable < ActiveAdmin::Component
94
+
95
+ def build(page_config, collection)
96
+ table_options = {
97
+ :id => active_admin_config.plural_underscored_resource_name,
98
+ :sortable => true,
99
+ :class => "index_table",
100
+ :i18n => active_admin_config.resource
101
+ }
102
+
103
+ table_for collection, table_options do |t|
104
+ instance_exec(t, &page_config.block)
105
+ end
106
+ end
107
+
108
+ def table_for(*args, &block)
109
+ insert_tag IndexTableFor, *args, &block
110
+ end
111
+
112
+ #
113
+ # Extend the default ActiveAdmin::Views::TableFor with some
114
+ # methods for quickly displaying items on the index page
115
+ #
116
+ class IndexTableFor < ::ActiveAdmin::Views::TableFor
117
+
118
+ # Display a column for the id
119
+ def id_column
120
+ column('ID', :sortable => :id){|resource| link_to resource.id, resource_path(resource), :class => "resource_id_link"}
121
+ end
122
+
123
+ # Adds links to View, Edit and Delete
124
+ def default_actions(options = {})
125
+ options = {
126
+ :name => ""
127
+ }.merge(options)
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"
132
+ links
133
+ end
134
+ end
135
+
136
+ # Display A Status Tag Column
137
+ #
138
+ # index do |i|
139
+ # i.status_tag :state
140
+ # end
141
+ #
142
+ # index do |i|
143
+ # i.status_tag "State", :status_name
144
+ # end
145
+ #
146
+ # index do |i|
147
+ # i.status_tag do |post|
148
+ # post.published? ? 'published' : 'draft'
149
+ # end
150
+ # end
151
+ #
152
+ def status_tag(*args, &block)
153
+ col = Column.new(*args, &block)
154
+ data = col.data
155
+ col.data = proc do |resource|
156
+ status_tag call_method_or_proc_on(resource, data)
157
+ end
158
+ add_column col
159
+ end
160
+ end # TableBuilder
161
+
162
+ end # Table
163
+ end
164
+ end
@@ -0,0 +1,167 @@
1
+ module ActiveAdmin
2
+ module Views
3
+ module Pages
4
+ class Base < Arbre::HTML::Document
5
+
6
+ def build(*args)
7
+ super
8
+ add_classes_to_body
9
+ build_active_admin_head
10
+ build_page
11
+ end
12
+
13
+ private
14
+
15
+
16
+ def add_classes_to_body
17
+ @body.add_class(params[:action])
18
+ @body.add_class(params[:controller].gsub('/', '_'))
19
+ @body.add_class("logged_in")
20
+ end
21
+
22
+ def build_active_admin_head
23
+ within @head do
24
+ meta :"http-equiv" => "Content-type", :content => "text/html; charset=utf-8"
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"
28
+ end
29
+ active_admin_application.javascripts.each do |path|
30
+ script :src => javascript_path(path), :type => "text/javascript"
31
+ end
32
+ text_node csrf_meta_tag
33
+ end
34
+ end
35
+
36
+ def build_page
37
+ within @body do
38
+ div :id => "wrapper" do
39
+ build_header
40
+ build_title_bar
41
+ build_page_content
42
+ build_footer
43
+ end
44
+ end
45
+ end
46
+
47
+ def build_header
48
+ div :id => "header" do
49
+ render view_factory.header
50
+ end
51
+ end
52
+
53
+ def build_title_bar
54
+ div :id => "title_bar" do
55
+ build_titlebar_left
56
+ build_titlebar_right
57
+ end
58
+ end
59
+
60
+ def build_titlebar_left
61
+ div :id => "titlebar_left" do
62
+ build_breadcrumb
63
+ build_title_tag
64
+ end
65
+ end
66
+
67
+ def build_titlebar_right
68
+ div :id => "titlebar_right" do
69
+ build_action_items
70
+ end
71
+ end
72
+
73
+ def build_breadcrumb(separator = "/")
74
+ links = breadcrumb_links
75
+ return if links.empty?
76
+ span :class => "breadcrumb" do
77
+ links.each do |link|
78
+ text_node link
79
+ span(separator, :class => "breadcrumb_sep")
80
+ end
81
+ end
82
+ end
83
+
84
+ def build_title_tag
85
+ h2(title, :id => 'page_title')
86
+ end
87
+
88
+ def build_action_items
89
+ if active_admin_config
90
+ items = active_admin_config.action_items_for(params[:action])
91
+ insert_tag view_factory.action_items, items
92
+ end
93
+ end
94
+
95
+ def build_page_content
96
+ build_flash_messages
97
+ div :id => "active_admin_content", :class => (skip_sidebar? ? "without_sidebar" : "with_sidebar") do
98
+ build_main_content_wrapper
99
+ build_sidebar unless skip_sidebar?
100
+ end
101
+ end
102
+
103
+ def build_flash_messages
104
+ if flash.keys.any?
105
+ div :class => 'flashes' do
106
+ flash.each do |type, message|
107
+ div message, :class => "flash flash_#{type}"
108
+ end
109
+ end
110
+ end
111
+ end
112
+
113
+ def build_main_content_wrapper
114
+ div :id => "main_content_wrapper" do
115
+ div :id => "main_content" do
116
+ main_content
117
+ end
118
+ end
119
+ end
120
+
121
+ def main_content
122
+ I18n.t('active_admin.main_content', :model => self.class.name).html_safe
123
+ end
124
+
125
+ def title
126
+ self.class.name
127
+ end
128
+
129
+ # Set's the page title for the layout to render
130
+ def set_page_title
131
+ set_ivar_on_view "@page_title", title
132
+ end
133
+
134
+
135
+ # Returns the sidebar sections to render for the current action
136
+ def sidebar_sections_for_action
137
+ if active_admin_config
138
+ active_admin_config.sidebar_sections_for(params[:action])
139
+ else
140
+ []
141
+ end
142
+ end
143
+
144
+ # Renders the sidebar
145
+ def build_sidebar
146
+ div :id => "sidebar" do
147
+ sidebar_sections_for_action.collect do |section|
148
+ sidebar_section(section)
149
+ end
150
+ end
151
+ end
152
+
153
+ def skip_sidebar?
154
+ sidebar_sections_for_action.empty? || assigns[:skip_sidebar] == true
155
+ end
156
+
157
+ # Renders the content for the footer
158
+ def build_footer
159
+ div :id => "footer" do
160
+ para "Powered by #{link_to("Active Admin", "http://www.activeadmin.info")} #{ActiveAdmin::VERSION}".html_safe
161
+ end
162
+ end
163
+
164
+ end
165
+ end
166
+ end
167
+ end
@@ -0,0 +1,62 @@
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
+ I18n.t("active_admin.dashboard")
21
+ end
22
+
23
+ def render_sections(sections)
24
+ table :class => "dashboard" do
25
+ sections.in_groups_of(3, false).each do |row|
26
+ tr do
27
+ row.each do |section|
28
+ td do
29
+ render_section(section)
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
36
+
37
+ # Renders each section using their renderer
38
+ def render_section(section)
39
+ insert_tag section_renderer(section), section
40
+ end
41
+
42
+ def section_renderer(section)
43
+ if section.options[:as]
44
+ view_factory["dashboard_section_as_#{section.options[:as]}"]
45
+ else
46
+ view_factory.dashboard_section
47
+ end
48
+ end
49
+
50
+ def default_welcome_section
51
+ div :class => "blank_slate_container", :id => "dashboard_default_message" do
52
+ span :class => "blank_slate" do
53
+ span I18n.t('active_admin.dashboard_welcome.welcome')
54
+ small I18n.t('active_admin.dashboard_welcome.call_to_action')
55
+ end
56
+ end
57
+ end
58
+
59
+ end
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,28 @@
1
+ module ActiveAdmin
2
+ module Views
3
+ module Pages
4
+ class Edit < Base
5
+
6
+ def title
7
+ I18n.t('active_admin.edit_model', :model => active_admin_config.resource_name)
8
+ end
9
+
10
+ def main_content
11
+ config = self.form_config.dup
12
+ config.delete(:block)
13
+ config.reverse_merge!({
14
+ :url => resource_path(resource),
15
+ :as => active_admin_config.underscored_resource_name
16
+ })
17
+
18
+ if form_config[:partial]
19
+ render form_config[:partial]
20
+ else
21
+ active_admin_form_for resource, config, &form_config[:block]
22
+ end
23
+ end
24
+
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,91 @@
1
+ module ActiveAdmin
2
+ module Views
3
+ module Pages
4
+
5
+ class Index < Base
6
+
7
+ def title
8
+ active_admin_config.plural_resource_name
9
+ end
10
+
11
+ def config
12
+ index_config || default_index_config
13
+ end
14
+
15
+ # Render's the index configuration that was set in the
16
+ # controller. Defaults to rendering the ActiveAdmin::Pages::Index::Table
17
+ def main_content
18
+ build_scopes
19
+
20
+ if collection.any?
21
+ render_index
22
+ else
23
+ if params[:q]
24
+ render_empty_results
25
+ else
26
+ render_blank_slate
27
+ end
28
+ end
29
+ end
30
+
31
+ protected
32
+
33
+ def build_scopes
34
+ if active_admin_config.scopes.any?
35
+ scopes_renderer active_admin_config.scopes
36
+ end
37
+ end
38
+
39
+ # Creates a default configuration for the resource class. This is a table
40
+ # with each column displayed as well as all the default actions
41
+ def default_index_config
42
+ @default_index_config ||= ::ActiveAdmin::PageConfig.new(:as => :table) do |display|
43
+ id_column
44
+ resource_class.content_columns.each do |col|
45
+ column col.name.to_sym
46
+ end
47
+ default_actions
48
+ end
49
+ end
50
+
51
+ # 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.
53
+ def find_index_renderer_class(symbol_or_class)
54
+ case symbol_or_class
55
+ when Symbol
56
+ ::ActiveAdmin::Views.const_get("IndexAs" + symbol_or_class.to_s.camelcase)
57
+ when Class
58
+ symbol_or_class
59
+ else
60
+ raise ArgumentError, "'as' requires a class or a symbol"
61
+ end
62
+ end
63
+
64
+ def render_blank_slate
65
+ blank_slate_content = I18n.t("active_admin.blank_slate.content", :resource_name => active_admin_config.resource_name.pluralize)
66
+ if controller.action_methods.include?('new')
67
+ blank_slate_content += " " + link_to(I18n.t("active_admin.blank_slate.link"), new_resource_path)
68
+ end
69
+ insert_tag(view_factory.blank_slate, blank_slate_content)
70
+ end
71
+
72
+ def render_empty_results
73
+ empty_results_content = I18n.t("active_admin.pagination.empty", :model => active_admin_config.resource_name.pluralize)
74
+ insert_tag(view_factory.blank_slate, empty_results_content)
75
+ end
76
+
77
+ def render_index
78
+ renderer_class = find_index_renderer_class(config[:as])
79
+
80
+ paginated_collection(collection, :entry_name => active_admin_config.resource_name) do
81
+ div :class => 'index_content' do
82
+ insert_tag(renderer_class, config, collection)
83
+ end
84
+ end
85
+ end
86
+
87
+ end
88
+ end
89
+ end
90
+ end
91
+