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,231 @@
1
+ require 'active_admin/router'
2
+ require 'active_admin/helpers/settings'
3
+
4
+ module ActiveAdmin
5
+ class Application
6
+ include Settings
7
+
8
+ # The default namespace to put controllers and routes inside. Set this
9
+ # in config/initializers/active_admin.rb using:
10
+ #
11
+ # config.default_namespace = :super_admin
12
+ #
13
+ setting :default_namespace, :admin
14
+
15
+ # The default number of resources to display on index pages
16
+ setting :default_per_page, 30
17
+
18
+ # A hash of all the registered namespaces
19
+ setting :namespaces, {}
20
+
21
+ # The title which gets displayed in the main layout
22
+ setting :site_title, ""
23
+
24
+ # Set the site title link href (defaults to AA dashboard)
25
+ setting :site_title_link, ""
26
+
27
+ # Load paths for admin configurations. Add folders to this load path
28
+ # to load up other resources for administration. External gems can
29
+ # include their paths in this load path to provide active_admin UIs
30
+ setting :load_paths, [File.expand_path('app/admin', Rails.root)]
31
+
32
+ # The view factory to use to generate all the view classes. Take
33
+ # a look at ActiveAdmin::ViewFactory
34
+ setting :view_factory, ActiveAdmin::ViewFactory.new
35
+
36
+ # The method to call in controllers to get the current user
37
+ setting :current_user_method, false
38
+
39
+ # The method to call in the controllers to ensure that there
40
+ # is a currently authenticated admin user
41
+ setting :authentication_method, false
42
+
43
+ # The path to log user's out with. If set to a symbol, we assume
44
+ # that it's a method to call which returns the path
45
+ setting :logout_link_path, :destroy_admin_user_session_path
46
+
47
+ # The method to use when generating the link for user logout
48
+ setting :logout_link_method, :get
49
+
50
+ # Active Admin makes educated guesses when displaying objects, this is
51
+ # the list of methods it tries calling in order
52
+ setting :display_name_methods, [ :display_name,
53
+ :full_name,
54
+ :name,
55
+ :username,
56
+ :login,
57
+ :title,
58
+ :email,
59
+ :to_s ]
60
+
61
+ # == Deprecated Settings
62
+
63
+ # @deprecated The default sort order for index pages
64
+ deprecated_setting :default_sort_order, 'id_desc'
65
+
66
+ # DEPRECATED: This option is deprecated and will be removed. Use
67
+ # the #allow_comments_in option instead
68
+ attr_accessor :admin_notes
69
+
70
+
71
+ include AssetRegistration
72
+
73
+ def initialize
74
+ register_default_assets
75
+ end
76
+
77
+ def prepare!
78
+ remove_active_admin_load_paths_from_rails_autoload_and_eager_load
79
+ attach_reloader
80
+ generate_stylesheets
81
+ end
82
+
83
+ # Registers a brand new configuration for the given resource.
84
+ def register(resource, options = {}, &block)
85
+ namespace_name = options.has_key?(:namespace) ? options[:namespace] : default_namespace
86
+ namespace = find_or_create_namespace(namespace_name)
87
+ namespace.register(resource, options, &block)
88
+ end
89
+
90
+ # Creates a namespace for the given name
91
+ def find_or_create_namespace(name)
92
+ name ||= :root
93
+ return namespaces[name] if namespaces[name]
94
+ namespace = Namespace.new(self, name)
95
+ ActiveAdmin::Event.dispatch ActiveAdmin::Namespace::RegisterEvent, namespace
96
+ namespaces[name] = namespace
97
+ namespace
98
+ end
99
+
100
+
101
+ # Stores if everything has been loaded or we need to reload
102
+ @@loaded = false
103
+
104
+ # Returns true if all the configuration files have been loaded.
105
+ def loaded?
106
+ @@loaded
107
+ end
108
+
109
+ # Removes all the controllers that were defined by registering
110
+ # resources for administration.
111
+ #
112
+ # We remove them, then load them on each request in development
113
+ # to allow for changes without having to restart the server.
114
+ def unload!
115
+ namespaces.values.each{|namespace| namespace.unload! }
116
+ self.namespaces = {}
117
+ @@loaded = false
118
+ end
119
+
120
+ # Loads all of the ruby files that are within the load path of
121
+ # ActiveAdmin.load_paths. This should load all of the administration
122
+ # UIs so that they are available for the router to proceed.
123
+ #
124
+ # The files are only loaded if we haven't already loaded all the files
125
+ # and they aren't marked for re-loading. To mark the files for re-loading
126
+ # you must first call ActiveAdmin.unload!
127
+ def load!
128
+ # No work to do if we've already loaded
129
+ return false if loaded?
130
+
131
+ # Load files
132
+ files_in_load_path.each{|file| load file }
133
+
134
+ # If no configurations, let's make sure you can still login
135
+ load_default_namespace if namespaces.values.empty?
136
+
137
+ # Load Menus
138
+ namespaces.values.each{|namespace| namespace.load_menu! }
139
+
140
+ @@loaded = true
141
+ end
142
+
143
+ # Returns ALL the files to load from all the load paths
144
+ def files_in_load_path
145
+ load_paths.flatten.compact.uniq.collect{|path| Dir["#{path}/**/*.rb"] }.flatten
146
+ end
147
+
148
+ def router
149
+ @router ||= Router.new(self)
150
+ end
151
+
152
+ def routes(rails_router)
153
+ # Ensure that all the configurations (which define the routes)
154
+ # are all loaded
155
+ load!
156
+
157
+ router.apply(rails_router)
158
+ end
159
+
160
+ def load_default_namespace
161
+ find_or_create_namespace(default_namespace)
162
+ end
163
+
164
+ #
165
+ # Add before, around and after filters to each registered resource.
166
+ #
167
+ # eg:
168
+ #
169
+ # ActiveAdmin.before_filter :authenticate_admin!
170
+ #
171
+ def before_filter(*args, &block)
172
+ ResourceController.before_filter(*args, &block)
173
+ end
174
+
175
+ def skip_before_filter(*args, &block)
176
+ ResourceController.skip_before_filter(*args, &block)
177
+ end
178
+
179
+ def after_filter(*args, &block)
180
+ ResourceController.after_filter(*args, &block)
181
+ end
182
+
183
+ def around_filter(*args, &block)
184
+ ResourceController.around_filter(*args, &block)
185
+ end
186
+
187
+ # Helper method to add a dashboard section
188
+ def dashboard_section(name, options = {}, &block)
189
+ ActiveAdmin::Dashboards.add_section(name, options, &block)
190
+ end
191
+
192
+ private
193
+
194
+ def register_default_assets
195
+ register_stylesheet 'active_admin.css'
196
+ register_javascript 'active_admin.js'
197
+ end
198
+
199
+ # Since we're dealing with all our own file loading, we need
200
+ # to remove our paths from the ActiveSupport autoload paths.
201
+ # If not, file naming becomes very important and can cause clashes.
202
+ def remove_active_admin_load_paths_from_rails_autoload_and_eager_load
203
+ ActiveSupport::Dependencies.autoload_paths.reject!{|path| load_paths.include?(path) }
204
+ # Don't eagerload our configs, we'll deal with them ourselves
205
+ Rails.application.config.eager_load_paths = Rails.application.config.eager_load_paths.reject do |path|
206
+ load_paths.include?(path)
207
+ end
208
+ end
209
+
210
+ def attach_reloader
211
+ ActiveAdmin::Reloader.new(Rails.application, self, Rails.version).attach!
212
+ end
213
+
214
+
215
+ def generate_stylesheets
216
+ # This must be required after initialization
217
+ require 'sass/plugin'
218
+ require 'active_admin/sass/helpers'
219
+
220
+ # Create our own asset pipeline in Rails 3.0
221
+ if ActiveAdmin.use_asset_pipeline?
222
+ # Add our mixins to the load path for SASS
223
+ ::Sass::Engine::DEFAULT_OPTIONS[:load_paths] << File.expand_path("../../../app/assets/stylesheets", __FILE__)
224
+ else
225
+ require 'active_admin/sass/css_loader'
226
+ ::Sass::Plugin.add_template_location(File.expand_path("../../../app/assets/stylesheets", __FILE__))
227
+ ::Sass::Plugin.add_template_location(File.expand_path("../sass", __FILE__))
228
+ end
229
+ end
230
+ end
231
+ end
@@ -0,0 +1,23 @@
1
+ require "active_admin/arbre/builder"
2
+ require "active_admin/arbre/core_extensions"
3
+ require "active_admin/arbre/context"
4
+ require "active_admin/arbre/html/element"
5
+ require "active_admin/arbre/html/attributes"
6
+ require "active_admin/arbre/html/collection"
7
+ require "active_admin/arbre/html/class_list"
8
+ require "active_admin/arbre/html/tag"
9
+ require "active_admin/arbre/html/document"
10
+ require "active_admin/arbre/html/html5_elements"
11
+ require "active_admin/arbre/html/text_node"
12
+
13
+ # Arbre - The DOM Tree in Ruby
14
+ #
15
+ # Arbre is a ruby library for building HTML in pure Object Oriented Ruby
16
+ module Arbre
17
+ end
18
+
19
+ require 'action_view'
20
+
21
+ ActionView::Template.register_template_handler :arb, lambda { |template|
22
+ "self.class.send :include, Arbre::Builder; @_helpers = self; @__current_dom_element__ = Arbre::Context.new(assigns, self); begin; #{template.source}; end; current_dom_context"
23
+ }
@@ -0,0 +1,111 @@
1
+ module Arbre
2
+
3
+ # Include this module in any context to start building html.
4
+ #
5
+ # assigns = {}
6
+ # include Arbre::Builder
7
+ # span("foo").to_s #=> "<span>foo</span>
8
+ #
9
+ # When you include the module, you are required to setup 2 variables:
10
+ #
11
+ # * assigns: This is a hash that includes local variables
12
+ # * helpers: This is an object that provides helper methods to all
13
+ # objects within the context.
14
+ module Builder
15
+
16
+ # Retrieve the current DOM context.
17
+ #
18
+ # If no `@__current_dom_element__` has been set, this method will
19
+ # setup the initial context.
20
+ #
21
+ # @return [Arbre::Element] the current element that is in context
22
+ def current_dom_context
23
+ @__current_dom_element__ ||= Arbre::Context.new(assigns, helpers)
24
+ @__current_dom_element__.current_dom_context
25
+ end
26
+
27
+ def helpers
28
+ @_helpers
29
+ end
30
+
31
+ # Implements the method lookup chain. When you call a method that
32
+ # doesn't exist, we:
33
+ #
34
+ # 1. Try to call the method on the current DOM context
35
+ # 2. Return an assigned variable of the same name
36
+ # 3. Call the method on the helper object
37
+ # 4. Call super
38
+ #
39
+ def method_missing(name, *args, &block)
40
+ if current_dom_context.respond_to?(name)
41
+ current_dom_context.send name, *args, &block
42
+ elsif assigns && assigns.has_key?(name)
43
+ assigns[name]
44
+ elsif helpers.respond_to?(name)
45
+ helpers.send(name, *args, &block)
46
+ else
47
+ super
48
+ end
49
+ end
50
+
51
+ module BuilderMethods
52
+ def build_tag(klass, *args, &block)
53
+ tag = klass.new(assigns, helpers)
54
+
55
+ # If you passed in a block and want the object
56
+ if block_given? && block.arity > 0
57
+ # Set out context to the tag, and pass responsibility to the tag
58
+ with_current_dom_context tag do
59
+ tag.build(*args, &block)
60
+ end
61
+ else
62
+ # Build the tag
63
+ tag.build(*args)
64
+
65
+ # Render the blocks contents
66
+ if block_given?
67
+ with_current_dom_context tag do
68
+ insert_text_node_if_string(yield)
69
+ end
70
+ end
71
+ end
72
+
73
+ tag
74
+ end
75
+
76
+ def insert_tag(klass, *args, &block)
77
+ tag = build_tag(klass, *args, &block)
78
+ current_dom_context.add_child(tag)
79
+ tag
80
+ end
81
+
82
+ def current_dom_context
83
+ @__current_dom_element_buffer__ ||= [self]
84
+ current_element = @__current_dom_element_buffer__.last
85
+ if current_element == self
86
+ self
87
+ else
88
+ current_element.current_dom_context
89
+ end
90
+ end
91
+
92
+ def with_current_dom_context(tag)
93
+ raise ArgumentError, "Can't be in the context of nil. #{@__current_dom_element_buffer__.inspect}" unless tag
94
+ current_dom_context # Ensure a context is setup
95
+ @__current_dom_element_buffer__.push tag
96
+ yield
97
+ @__current_dom_element_buffer__.pop
98
+ end
99
+ alias_method :within, :with_current_dom_context
100
+
101
+ # Inserts a text node if the tag is a string
102
+ def insert_text_node_if_string(tag)
103
+ if tag.is_a?(String)
104
+ current_dom_context << Arbre::HTML::TextNode.from_string(tag)
105
+ end
106
+ end
107
+ end
108
+
109
+ end
110
+ end
111
+
@@ -0,0 +1,45 @@
1
+ require 'active_admin/arbre/html/element'
2
+
3
+ module Arbre
4
+ class Context < Arbre::HTML::Element
5
+ def indent_level
6
+ # A context does not increment the indent_level
7
+ super - 1
8
+ end
9
+
10
+ def bytesize
11
+ cached_html.bytesize
12
+ end
13
+ alias :length :bytesize
14
+
15
+ def respond_to?(method)
16
+ super || cached_html.respond_to?(method)
17
+ end
18
+
19
+ # Webservers treat Arbre::Context as a string. We override
20
+ # method_missing to delegate to the string representation
21
+ # of the html.
22
+ def method_missing(method, *args, &block)
23
+ if cached_html.respond_to? method
24
+ cached_html.send method, *args, &block
25
+ else
26
+ super
27
+ end
28
+ end
29
+
30
+ private
31
+
32
+ # Caches the rendered HTML so that we don't re-render just to
33
+ # get the content lenght or to delegate a method to the HTML
34
+ def cached_html
35
+ if defined?(@cached_html)
36
+ @cached_html
37
+ else
38
+ html = to_html
39
+ @cached_html = html if html.length > 0
40
+ html
41
+ end
42
+ end
43
+
44
+ end
45
+ end
@@ -0,0 +1,5 @@
1
+ class Object
2
+ def to_html
3
+ to_s
4
+ end
5
+ end
@@ -0,0 +1,20 @@
1
+ module Arbre
2
+ module HTML
3
+
4
+ class Attributes < Hash
5
+
6
+ def to_html
7
+ self.collect do |name, value|
8
+ "#{html_escape(name)}=\"#{html_escape(value)}\""
9
+ end.join(" ")
10
+ end
11
+
12
+ protected
13
+
14
+ def html_escape(s)
15
+ ERB::Util.html_escape(s)
16
+ end
17
+ end
18
+
19
+ end
20
+ end
@@ -0,0 +1,28 @@
1
+ require 'set'
2
+
3
+ module Arbre
4
+ module HTML
5
+
6
+ # Holds a set of classes
7
+ class ClassList < Set
8
+
9
+ def add(class_names)
10
+ class_names.to_s.split(" ").each do |class_name|
11
+ super(class_name)
12
+ end
13
+ self
14
+ end
15
+ alias :<< :add
16
+
17
+ def to_s
18
+ to_html
19
+ end
20
+
21
+ def to_html
22
+ to_a.join(" ")
23
+ end
24
+
25
+ end
26
+
27
+ end
28
+ end