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,48 @@
1
+ module ActiveAdmin
2
+ module Dashboards
3
+
4
+ autoload :DashboardController, 'active_admin/dashboards/dashboard_controller'
5
+ autoload :Section, 'active_admin/dashboards/section'
6
+
7
+ @@sections = {}
8
+ mattr_accessor :sections
9
+
10
+ class << self
11
+
12
+ # Eval an entire block in the context of this module to build
13
+ # dashboards quicker.
14
+ #
15
+ # Example:
16
+ #
17
+ # ActiveAdmin::Dashboards.build do
18
+ # section "Recent Post" do
19
+ # # return a list of posts
20
+ # end
21
+ # end
22
+ #
23
+ def build(&block)
24
+ module_eval(&block)
25
+ end
26
+
27
+ # Add a new dashboard section to a namespace. If no namespace is given
28
+ # it will be added to the default namespace.
29
+ def add_section(name, options = {}, &block)
30
+ namespace = options.delete(:namespace) || ActiveAdmin.application.default_namespace || :root
31
+ self.sections[namespace] ||= []
32
+ self.sections[namespace] << Section.new(namespace, name, options, &block)
33
+ self.sections[namespace].sort!
34
+ end
35
+ alias_method :section, :add_section
36
+
37
+ def sections_for_namespace(namespace)
38
+ @@sections[namespace] || []
39
+ end
40
+
41
+ def clear_all_sections!
42
+ @@sections = {}
43
+ end
44
+
45
+ end
46
+
47
+ end
48
+ end
@@ -0,0 +1,38 @@
1
+ module ActiveAdmin
2
+ module Dashboards
3
+ class DashboardController < ResourceController
4
+
5
+ actions :index
6
+
7
+ def index
8
+ @dashboard_sections = find_sections
9
+ render 'active_admin/dashboard/index.html.arb'
10
+ end
11
+
12
+ protected
13
+
14
+ def set_current_tab
15
+ @current_tab = I18n.t("active_admin.dashboard")
16
+ end
17
+
18
+ def find_sections
19
+ ActiveAdmin::Dashboards.sections_for_namespace(namespace)
20
+ end
21
+
22
+ def namespace
23
+ class_name = self.class.name
24
+ if class_name.include?('::')
25
+ self.class.name.split('::').first.underscore.to_sym
26
+ else
27
+ :root
28
+ end
29
+ end
30
+
31
+ # Return the current menu for the view. This is a helper method
32
+ def current_menu
33
+ ActiveAdmin.application.namespaces[namespace].menu
34
+ end
35
+
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,34 @@
1
+ module ActiveAdmin
2
+ module Dashboards
3
+ class Section
4
+
5
+ DEFAULT_PRIORITY = 10
6
+
7
+ attr_accessor :name, :block
8
+ attr_reader :namespace, :options
9
+
10
+ def initialize(namespace, name, options = {}, &block)
11
+ @namespace = namespace
12
+ @name = name
13
+ @options = options
14
+ @block = block
15
+ end
16
+
17
+ def priority
18
+ @options[:priority] || DEFAULT_PRIORITY
19
+ end
20
+
21
+ def icon
22
+ @options[:icon]
23
+ end
24
+
25
+ # Sort by priority then by name
26
+ def <=>(other)
27
+ result = priority <=> other.priority
28
+ result = name.to_s <=> other.name.to_s if result == 0
29
+ result
30
+ end
31
+
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,30 @@
1
+ require 'rails/version'
2
+
3
+ module ActiveAdmin
4
+ module DependencyChecker
5
+ class << self
6
+ def check!
7
+ if rails_3_1?
8
+ unless meta_search_1_1? && sass_rails_3_1?
9
+ warn "ActiveAdmin requires meta_search >= 1.1.0.pre and sass-rails ~> 3.1.0.rc to work with rails >= 3.1.0"
10
+ end
11
+ end
12
+ end
13
+
14
+ def rails_3_1?
15
+ Rails::VERSION::MAJOR == 3 && Rails::VERSION::MINOR >= 1
16
+ end
17
+
18
+ def meta_search_1_1?
19
+ Gem.loaded_specs['meta_search'].version.to_s >= "1.1"
20
+ end
21
+
22
+ def sass_rails_3_1?
23
+ require 'sass/rails/version'
24
+ Sass::Rails::VERSION >= "3.1"
25
+ rescue LoadError
26
+ false
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,36 @@
1
+ module ActiveAdmin
2
+ module Deprecation
3
+ extend self
4
+
5
+ def warn(message, callstack = caller)
6
+ ActiveSupport::Deprecation.warn "Active Admin: #{message}", callstack
7
+ end
8
+
9
+ # Deprecate a method.
10
+ #
11
+ # @param [Module] klass the Class or Module to deprecate the method on
12
+ # @param [Symbol] method the method to deprecate
13
+ # @param [String] message the message to display to the end user
14
+ #
15
+ # Example:
16
+ #
17
+ # class MyClass
18
+ # def my_method
19
+ # # ...
20
+ # end
21
+ # ActiveAdmin::Deprecation.deprecate self, :my_method,
22
+ # "MyClass#my_method is being removed in the next release"
23
+ # end
24
+ #
25
+ def deprecate(klass, method, message)
26
+ klass.class_eval <<-EOC, __FILE__, __LINE__
27
+ alias_method :"deprecated_#{method}", :#{method}
28
+ def #{method}(*args)
29
+ ActiveAdmin::Deprecation.warn('#{message}', caller)
30
+ send(:deprecated_#{method}, *args)
31
+ end
32
+ EOC
33
+ end
34
+
35
+ end
36
+ end
@@ -0,0 +1,54 @@
1
+ require 'devise'
2
+
3
+ module ActiveAdmin
4
+ module Devise
5
+
6
+ def self.config
7
+ config = {
8
+ :path => ActiveAdmin.application.default_namespace,
9
+ :controllers => ActiveAdmin::Devise.controllers,
10
+ :path_names => { :sign_in => 'login', :sign_out => "logout" }
11
+ }
12
+
13
+ if ::Devise.respond_to?(:sign_out_via)
14
+ logout_methods = [::Devise.sign_out_via, ActiveAdmin.application.logout_link_method].flatten.uniq
15
+ config.merge!( :sign_out_via => logout_methods)
16
+ end
17
+
18
+ config
19
+ end
20
+
21
+ def self.controllers
22
+ {
23
+ :sessions => "active_admin/devise/sessions",
24
+ :passwords => "active_admin/devise/passwords"
25
+ }
26
+ end
27
+
28
+ module Controller
29
+ extend ::ActiveSupport::Concern
30
+ included do
31
+ layout 'active_admin_logged_out'
32
+ helper ::ActiveAdmin::ViewHelpers
33
+ end
34
+
35
+ # Redirect to the default namespace on logout
36
+ def root_path
37
+ if ActiveAdmin.application.default_namespace
38
+ "/#{ActiveAdmin.application.default_namespace}"
39
+ else
40
+ "/"
41
+ end
42
+ end
43
+ end
44
+
45
+ class SessionsController < ::Devise::SessionsController
46
+ include ::ActiveAdmin::Devise::Controller
47
+ end
48
+
49
+ class PasswordsController < ::Devise::PasswordsController
50
+ include ::ActiveAdmin::Devise::Controller
51
+ end
52
+
53
+ end
54
+ end
@@ -0,0 +1,224 @@
1
+ module ActiveAdmin
2
+
3
+ #
4
+ # The Active Admin DSL. This class is where all the registration blocks
5
+ # are instance eval'd. This is the central place for the API given to
6
+ # users of Active Admin
7
+ #
8
+ class DSL
9
+
10
+ # Runs the registration block inside this object
11
+ def run_registration_block(config, &block)
12
+ @config = config
13
+ instance_eval &block
14
+ end
15
+
16
+ private
17
+
18
+ # The instance of ActiveAdmin::Resource that's being registered
19
+ # currently. You can use this within your registration blocks to
20
+ # modify options:
21
+ #
22
+ # eg:
23
+ #
24
+ # ActiveAdmin.register Post do
25
+ # config.admin_notes = false
26
+ # end
27
+ #
28
+ def config
29
+ @config
30
+ end
31
+
32
+ # Returns the controller for this resource. If you pass a
33
+ # block, it will be eval'd in the controller
34
+ #
35
+ # Example:
36
+ #
37
+ # ActiveAdmin.register Post do
38
+ #
39
+ # controller do
40
+ # def some_method_on_controller
41
+ # # Method gets added to Admin::PostsController
42
+ # end
43
+ # end
44
+ #
45
+ # end
46
+ #
47
+ def controller(&block)
48
+ @config.controller.class_eval(&block) if block_given?
49
+ @config.controller
50
+ end
51
+
52
+ def belongs_to(target, options = {})
53
+ config.belongs_to(target, options)
54
+ end
55
+
56
+ def menu(options = {})
57
+ config.menu(options)
58
+ end
59
+
60
+ # Scope this controller to some object which has a relation
61
+ # to the resource. Can either accept a block or a symbol
62
+ # of a method to call.
63
+ #
64
+ # Eg:
65
+ #
66
+ # ActiveAdmin.register Post do
67
+ # scope_to :current_user
68
+ # end
69
+ #
70
+ # Then every time we instantiate and object, it would call
71
+ #
72
+ # current_user.posts.build
73
+ #
74
+ # By default Active Admin will use the resource name to build a
75
+ # method to call as the association. If its different, you can
76
+ # pass in the association_method as an option.
77
+ #
78
+ # scope_to :current_user, :association_method => :blog_posts
79
+ #
80
+ # will result in the following
81
+ #
82
+ # current_user.blog_posts.build
83
+ #
84
+ def scope_to(*args, &block)
85
+ options = args.extract_options!
86
+ method = args.first
87
+
88
+ config.scope_to = block_given? ? block : method
89
+ config.scope_to_association_method = options[:association_method]
90
+ end
91
+
92
+ # Create a scope
93
+ def scope(*args, &block)
94
+ config.scope(*args, &block)
95
+ end
96
+
97
+ # Add a new action item to the resource
98
+ #
99
+ # @param [Hash] options valid keys include:
100
+ # :only: A single or array of controller actions to display
101
+ # this action item on.
102
+ # :except: A single or array of controller actions not to
103
+ # display this action item on.
104
+ def action_item(options = {}, &block)
105
+ config.add_action_item(options, &block)
106
+ end
107
+
108
+ # Configure the index page for the resource
109
+ def index(options = {}, &block)
110
+ options[:as] ||= :table
111
+ controller.set_page_config :index, options, &block
112
+ end
113
+
114
+ # Configure the show page for the resource
115
+ def show(options = {}, &block)
116
+ # TODO: controller.set_page_config just sets page_configs on the Resource (config) obj
117
+ controller.set_page_config :show, options, &block
118
+ end
119
+
120
+ def form(options = {}, &block)
121
+ options[:block] = block
122
+ controller.form_config = options
123
+ end
124
+
125
+ def sidebar(name, options = {}, &block)
126
+ config.sidebar_sections << ActiveAdmin::SidebarSection.new(name, options, &block)
127
+ end
128
+
129
+ # Configure the CSV format
130
+ #
131
+ # For example:
132
+ #
133
+ # csv do
134
+ # column :name
135
+ # column("Author") { |post| post.author.full_name }
136
+ # end
137
+ #
138
+ def csv(&block)
139
+ config.csv_builder = CSVBuilder.new(&block)
140
+ end
141
+
142
+ # Member Actions give you the functionality of defining both the
143
+ # action and the route directly from your ActiveAdmin registration
144
+ # block.
145
+ #
146
+ # For example:
147
+ #
148
+ # ActiveAdmin.register Post do
149
+ # member_action :comments do
150
+ # @post = Post.find(params[:id]
151
+ # @comments = @post.comments
152
+ # end
153
+ # end
154
+ #
155
+ # Will create a new controller action comments and will hook it up to
156
+ # the named route (comments_admin_post_path) /admin/posts/:id/comments
157
+ #
158
+ # You can treat everything within the block as a standard Rails controller
159
+ # action.
160
+ #
161
+ def member_action(name, options = {}, &block)
162
+ config.member_actions << ControllerAction.new(name, options)
163
+ controller do
164
+ define_method(name, &block || Proc.new{})
165
+ end
166
+ end
167
+
168
+ def collection_action(name, options = {}, &block)
169
+ config.collection_actions << ControllerAction.new(name, options)
170
+ controller do
171
+ define_method(name, &block || Proc.new{})
172
+ end
173
+ end
174
+
175
+ # Defined Callbacks
176
+ #
177
+ # == After Build
178
+ # Called after the resource is built in the new and create actions.
179
+ #
180
+ # ActiveAdmin.register Post do
181
+ # after_build do |post|
182
+ # post.author = current_user
183
+ # end
184
+ # end
185
+ #
186
+ # == Before / After Create
187
+ # Called before and after a resource is saved to the db on the create action.
188
+ #
189
+ # == Before / After Update
190
+ # Called before and after a resource is saved to the db on the update action.
191
+ #
192
+ # == Before / After Save
193
+ # Called before and after the object is saved in the create and update action.
194
+ # Note: Gets called after the create and update callbacks
195
+ #
196
+ # == Before / After Destroy
197
+ # Called before and after the object is destroyed from the database.
198
+ #
199
+ delegate :before_build, :after_build, :to => :controller
200
+ delegate :before_create, :after_create, :to => :controller
201
+ delegate :before_update, :after_update, :to => :controller
202
+ delegate :before_save, :after_save, :to => :controller
203
+ delegate :before_destroy, :after_destroy, :to => :controller
204
+
205
+ # Filters
206
+ delegate :filter, :to => :controller
207
+
208
+
209
+ # Standard rails filters
210
+ delegate :before_filter, :skip_before_filter, :after_filter, :around_filter, :to => :controller
211
+
212
+ # Specify which actions to create in the controller
213
+ #
214
+ # Eg:
215
+ #
216
+ # ActiveAdmin.register Post do
217
+ # actions :index, :show
218
+ # end
219
+ #
220
+ # Will only create the index and show actions (no create, update or delete)
221
+ delegate :actions, :to => :controller
222
+
223
+ end
224
+ end