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,155 @@
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_breadcrumb
56
+ build_title_tag
57
+ build_action_items
58
+ end
59
+ end
60
+
61
+ def build_breadcrumb(separator = "/")
62
+ links = breadcrumb_links
63
+ return if links.empty?
64
+ span :class => "breadcrumb" do
65
+ links.each do |link|
66
+ text_node link
67
+ span(separator, :class => "breadcrumb_sep")
68
+ end
69
+ end
70
+ end
71
+
72
+ def build_title_tag
73
+ h2(title, :id => 'page_title')
74
+ end
75
+
76
+ def build_action_items
77
+ if active_admin_config
78
+ items = active_admin_config.action_items_for(params[:action])
79
+ insert_tag view_factory.action_items, items
80
+ end
81
+ end
82
+
83
+ def build_page_content
84
+ build_flash_messages
85
+ div :id => "active_admin_content", :class => (skip_sidebar? ? "without_sidebar" : "with_sidebar") do
86
+ build_main_content_wrapper
87
+ build_sidebar unless skip_sidebar?
88
+ end
89
+ end
90
+
91
+ def build_flash_messages
92
+ if flash.keys.any?
93
+ div :class => 'flashes' do
94
+ flash.each do |type, message|
95
+ div message, :class => "flash flash_#{type}"
96
+ end
97
+ end
98
+ end
99
+ end
100
+
101
+ def build_main_content_wrapper
102
+ div :id => "main_content_wrapper" do
103
+ div :id => "main_content" do
104
+ main_content
105
+ end
106
+ end
107
+ end
108
+
109
+ def main_content
110
+ I18n.t('active_admin.main_content', :model => self.class.name).html_safe
111
+ end
112
+
113
+ def title
114
+ self.class.name
115
+ end
116
+
117
+ # Set's the page title for the layout to render
118
+ def set_page_title
119
+ set_ivar_on_view "@page_title", title
120
+ end
121
+
122
+
123
+ # Returns the sidebar sections to render for the current action
124
+ def sidebar_sections_for_action
125
+ if active_admin_config
126
+ active_admin_config.sidebar_sections_for(params[:action])
127
+ else
128
+ []
129
+ end
130
+ end
131
+
132
+ # Renders the sidebar
133
+ def build_sidebar
134
+ div :id => "sidebar" do
135
+ sidebar_sections_for_action.collect do |section|
136
+ sidebar_section(section)
137
+ end
138
+ end
139
+ end
140
+
141
+ def skip_sidebar?
142
+ sidebar_sections_for_action.empty? || assigns[:skip_sidebar] == true
143
+ end
144
+
145
+ # Renders the content for the footer
146
+ def build_footer
147
+ div :id => "footer" do
148
+ para "Powered by #{link_to("Active Admin", "http://www.activeadmin.info")} #{ActiveAdmin::VERSION}".html_safe
149
+ end
150
+ end
151
+
152
+ end
153
+ end
154
+ end
155
+ 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,74 @@
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
+
16
+ # Render's the index configuration that was set in the
17
+ # controller. Defaults to rendering the ActiveAdmin::Pages::Index::Table
18
+ def main_content
19
+ build_scopes
20
+ renderer_class = find_index_renderer_class(config[:as])
21
+
22
+ if collection.any?
23
+ paginated_collection(collection, :entry_name => active_admin_config.resource_name) do
24
+ div :class => 'index_content' do
25
+ insert_tag(renderer_class, config, collection)
26
+ end
27
+ end
28
+ else
29
+ if controller.action_methods.include?('new')
30
+ insert_tag(view_factory.blank_slate, active_admin_config.resource_name.pluralize, new_resource_path)
31
+ else
32
+ insert_tag(view_factory.blank_slate, active_admin_config.resource_name.pluralize)
33
+ end
34
+ end
35
+ end
36
+
37
+ protected
38
+
39
+ def build_scopes
40
+ if active_admin_config.scopes.any?
41
+ scopes_renderer active_admin_config.scopes
42
+ end
43
+ end
44
+
45
+ # Creates a default configuration for the resource class. This is a table
46
+ # with each column displayed as well as all the default actions
47
+ def default_index_config
48
+ @default_index_config ||= ::ActiveAdmin::PageConfig.new(:as => :table) do |display|
49
+ id_column
50
+ resource_class.content_columns.each do |col|
51
+ column col.name.to_sym
52
+ end
53
+ default_actions
54
+ end
55
+ end
56
+
57
+ # Returns the actual class for renderering the main content on the index
58
+ # page. To set this, use the :as option in the page_config block.
59
+ def find_index_renderer_class(symbol_or_class)
60
+ case symbol_or_class
61
+ when Symbol
62
+ ::ActiveAdmin::Views.const_get("IndexAs" + symbol_or_class.to_s.camelcase)
63
+ when Class
64
+ symbol_or_class
65
+ else
66
+ raise ArgumentError, "'as' requires a class or a symbol"
67
+ end
68
+ end
69
+
70
+ end
71
+ end
72
+ end
73
+ end
74
+
@@ -0,0 +1,26 @@
1
+ module ActiveAdmin
2
+ module Views
3
+ module Pages
4
+
5
+ # Acts as a standard rails Layout for use when logged
6
+ # out or when rendering custom actions.
7
+ class Layout < Base
8
+
9
+ def title
10
+ assigns[:page_title] || I18n.t("active_admin.#{params[:action]}", :default => params[:action].to_s.titleize)
11
+ end
12
+
13
+ # Render the content_for(:layout) into the main content area
14
+ def main_content
15
+ content_for_layout = content_for(:layout)
16
+ if content_for_layout.is_a?(Arbre::HTML::Element)
17
+ current_dom_context.add_child content_for_layout.children
18
+ else
19
+ text_node content_for_layout
20
+ end
21
+ end
22
+ end
23
+
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,28 @@
1
+ module ActiveAdmin
2
+ module Views
3
+ module Pages
4
+ class New < Base
5
+
6
+ def title
7
+ I18n.t('active_admin.new_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 => collection_path,
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
+ end
25
+ end
26
+
27
+ end
28
+ end
@@ -0,0 +1,56 @@
1
+ module ActiveAdmin
2
+ module Views
3
+ module Pages
4
+ class Show < Base
5
+
6
+ def config
7
+ active_admin_config.page_configs[:show] || ::ActiveAdmin::PageConfig.new
8
+ end
9
+
10
+ def title
11
+ case config[:title]
12
+ when Symbol, Proc
13
+ call_method_or_proc_on(resource, config[:title])
14
+ when String
15
+ config[:title]
16
+ else
17
+ default_title
18
+ end
19
+ end
20
+
21
+ def main_content
22
+ if config.block
23
+ # Eval the show config from the controller
24
+ instance_exec resource, &config.block
25
+ else
26
+ default_main_content
27
+ end
28
+ end
29
+
30
+ def attributes_table(*args, &block)
31
+ panel(I18n.t('active_admin.details', :model => active_admin_config.resource_name)) do
32
+ attributes_table_for resource, *args, &block
33
+ end
34
+ end
35
+
36
+ protected
37
+
38
+ def default_title
39
+ "#{active_admin_config.resource_name} ##{resource.id}"
40
+ end
41
+
42
+ module DefaultMainContent
43
+ def default_main_content
44
+ attributes_table *default_attribute_table_rows
45
+ end
46
+
47
+ def default_attribute_table_rows
48
+ resource.class.columns.collect{|column| column.name.to_sym }
49
+ end
50
+ end
51
+
52
+ include DefaultMainContent
53
+ end
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,58 @@
1
+ module ActiveAdmin
2
+ module Views
3
+
4
+ # Renders out a horizontal list of tabs.
5
+ class TabsRenderer < Renderer
6
+
7
+ # Pass in an ActiveAdmin::Menu and it will display the first level
8
+ # of navigation as a horizontal list of tabs
9
+ def to_html(menu, options = {})
10
+ @options = default_options.merge(options)
11
+ render_menu(menu)
12
+ end
13
+
14
+ protected
15
+
16
+ def render_menu(menu)
17
+ content_tag :ul, :id => @options[:id] do
18
+ menu.items.collect do |item|
19
+ render_item(item)
20
+ end.join.html_safe
21
+ end
22
+ end
23
+
24
+ def render_item(item)
25
+ if !call_method_or_proc_on(self, item.display_if_block)
26
+ return
27
+ elsif (!item.url or item.url == '#') and item.children.any? and (item.children.detect {|child| call_method_or_proc_on(self, child.display_if_block)}).nil?
28
+ return
29
+ end
30
+
31
+ content_tag :li, :id => item.dom_id, :class => [("current" if current?(item)), ("has_nested" unless item.children.blank?)].compact.join(" ") do
32
+ unless item.children.blank?
33
+ link_to(item.name, item.url || "#") + render_nested_menu(item)
34
+ else
35
+ link_to item.name, item.url
36
+ end
37
+ end
38
+ end
39
+
40
+ def render_nested_menu(item)
41
+ content_tag :ul do
42
+ item.children.collect {|child| render_item(child)}.join.html_safe
43
+ end
44
+ end
45
+
46
+ # Returns true if the menu item name is @current_tab
47
+ def current?(menu_item)
48
+ @current_tab.split("/").include?(menu_item.name) unless @current_tab.blank?
49
+ end
50
+
51
+ def default_options
52
+ { :id => "tabs" }
53
+ end
54
+
55
+ end
56
+
57
+ end
58
+ end