activeadmin 0.4.4 → 0.5.0.pre

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of activeadmin might be problematic. Click here for more details.

Files changed (310) hide show
  1. data/.gitignore +3 -0
  2. data/.travis.yml +5 -0
  3. data/CHANGELOG.md +50 -0
  4. data/CONTRIBUTING.md +2 -4
  5. data/Gemfile +10 -4
  6. data/Guardfile +0 -1
  7. data/LICENSE +1 -1
  8. data/README.rdoc +19 -8
  9. data/Rakefile +10 -1
  10. data/activeadmin.gemspec +2 -1
  11. data/app/assets/javascripts/active_admin/application.js +3 -9
  12. data/app/assets/javascripts/active_admin/base.js +1 -0
  13. data/app/assets/javascripts/active_admin/components/jquery.aa.checkbox-toggler.js.coffee +64 -0
  14. data/app/assets/javascripts/active_admin/components/jquery.aa.dropdown-menu.js.coffee +107 -0
  15. data/app/assets/javascripts/active_admin/components/jquery.aa.popover.js.coffee +100 -0
  16. data/app/assets/javascripts/active_admin/components/jquery.aa.table-checkbox-toggler.js.coffee +27 -0
  17. data/app/assets/javascripts/active_admin/lib/namespace.js.coffee +3 -0
  18. data/app/assets/javascripts/active_admin/pages/application.js.coffee +13 -0
  19. data/app/assets/javascripts/active_admin/pages/batch_actions.js.coffee +26 -0
  20. data/app/assets/stylesheets/active_admin/_base.css.scss +32 -26
  21. data/app/assets/stylesheets/active_admin/_forms.css.scss +12 -5
  22. data/app/assets/stylesheets/active_admin/_header.css.scss +1 -2
  23. data/app/assets/stylesheets/active_admin/_typography.css.scss +1 -1
  24. data/app/assets/stylesheets/active_admin/components/_batch_actions.css.scss +11 -0
  25. data/app/assets/stylesheets/active_admin/components/_buttons.scss +1 -2
  26. data/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +151 -0
  27. data/app/assets/stylesheets/active_admin/components/_flash_messages.css.scss +3 -3
  28. data/app/assets/stylesheets/active_admin/components/_popovers.css.scss +123 -0
  29. data/app/assets/stylesheets/active_admin/components/_status_tags.scss +1 -1
  30. data/app/assets/stylesheets/active_admin/components/_table_tools.css.scss +20 -27
  31. data/app/assets/stylesheets/active_admin/components/_tables.css.scss +1 -0
  32. data/app/assets/stylesheets/active_admin/mixins/_buttons.css.scss +38 -36
  33. data/app/assets/stylesheets/active_admin/mixins/_gradients.css.scss +5 -5
  34. data/app/assets/stylesheets/active_admin/mixins/_icons.css.scss +7 -3
  35. data/app/assets/stylesheets/active_admin/mixins/_variables.css.scss +19 -17
  36. data/app/assets/stylesheets/active_admin/pages/_logged_out.scss +2 -2
  37. data/app/assets/stylesheets/active_admin/print.css.scss +290 -0
  38. data/app/views/active_admin/dashboard/index.html.arb +1 -1
  39. data/app/views/active_admin/devise/passwords/edit.html.erb +17 -14
  40. data/app/views/active_admin/devise/passwords/new.html.erb +4 -4
  41. data/app/views/active_admin/devise/sessions/new.html.erb +6 -6
  42. data/app/views/active_admin/devise/shared/_links.erb +6 -6
  43. data/app/views/active_admin/page/index.html.arb +1 -1
  44. data/app/views/active_admin/resource/edit.html.arb +1 -1
  45. data/app/views/active_admin/resource/index.csv.erb +1 -1
  46. data/app/views/active_admin/resource/index.html.arb +1 -1
  47. data/app/views/active_admin/resource/new.html.arb +1 -1
  48. data/app/views/active_admin/resource/show.html.arb +1 -1
  49. data/app/views/layouts/active_admin.html.arb +1 -1
  50. data/app/views/layouts/active_admin_logged_out.html.erb +2 -2
  51. data/cucumber.yml +1 -1
  52. data/docs/0-installation.md +10 -1
  53. data/docs/{9-custom-pages.md → 10-custom-pages.md} +0 -0
  54. data/docs/2-resource-customization.md +19 -1
  55. data/docs/3-index-pages.md +31 -0
  56. data/docs/4-csv-format.md +9 -0
  57. data/docs/6-show-screens.md +1 -1
  58. data/docs/9-batch-actions.md +161 -0
  59. data/features/dashboard.feature +31 -8
  60. data/features/development_reloading.feature +1 -1
  61. data/features/edit_page.feature +3 -3
  62. data/features/i18n.feature +35 -0
  63. data/features/index/batch_actions.feature +98 -0
  64. data/features/index/filters.feature +26 -0
  65. data/features/index/format_as_csv.feature +35 -0
  66. data/features/index/index_as_table.feature +30 -2
  67. data/features/index/index_blank_slate.feature +8 -3
  68. data/features/index/index_scopes.feature +130 -24
  69. data/features/index/page_title.feature +12 -0
  70. data/features/new_page.feature +3 -3
  71. data/features/registering_pages.feature +61 -0
  72. data/features/root_to.feature +17 -0
  73. data/features/show/default_content.feature +1 -1
  74. data/features/show/page_title.feature +14 -0
  75. data/features/sidebar_sections.feature +26 -0
  76. data/features/site_title.feature +1 -1
  77. data/features/specifying_actions.feature +7 -6
  78. data/features/step_definitions/action_link_steps.rb +1 -1
  79. data/features/step_definitions/additional_web_steps.rb +7 -1
  80. data/features/step_definitions/batch_action_steps.rb +94 -0
  81. data/features/step_definitions/configuration_steps.rb +30 -8
  82. data/features/step_definitions/factory_steps.rb +12 -0
  83. data/features/step_definitions/format_steps.rb +6 -2
  84. data/features/step_definitions/i18n_steps.rb +3 -0
  85. data/features/step_definitions/table_steps.rb +114 -0
  86. data/features/step_definitions/user_steps.rb +30 -4
  87. data/features/support/env.rb +54 -15
  88. data/features/support/paths.rb +2 -0
  89. data/features/users/logging_in.feature +1 -1
  90. data/features/users/logging_out.feature +2 -1
  91. data/features/users/resetting_password.feature +34 -0
  92. data/lib/active_admin.rb +46 -7
  93. data/lib/active_admin/application.rb +30 -15
  94. data/lib/active_admin/base_controller/menu.rb +3 -3
  95. data/lib/active_admin/batch_actions.rb +17 -0
  96. data/lib/active_admin/batch_actions/controller.rb +25 -0
  97. data/lib/active_admin/batch_actions/resource_extension.rb +126 -0
  98. data/lib/active_admin/batch_actions/views/batch_action_form.rb +35 -0
  99. data/lib/active_admin/batch_actions/views/batch_action_popover.rb +28 -0
  100. data/lib/active_admin/batch_actions/views/batch_action_selector.rb +63 -0
  101. data/lib/active_admin/batch_actions/views/selection_cells.rb +37 -0
  102. data/lib/active_admin/comments.rb +5 -2
  103. data/lib/active_admin/comments/comment.rb +4 -3
  104. data/lib/active_admin/comments/views/active_admin_comments.rb +5 -5
  105. data/lib/active_admin/component.rb +1 -18
  106. data/lib/active_admin/csv_builder.rb +8 -3
  107. data/lib/active_admin/dashboards.rb +21 -4
  108. data/lib/active_admin/dashboards/dashboard_controller.rb +1 -5
  109. data/lib/active_admin/dependency_checker.rb +1 -1
  110. data/lib/active_admin/dsl.rb +61 -4
  111. data/lib/active_admin/engine.rb +1 -1
  112. data/lib/active_admin/filters.rb +8 -0
  113. data/lib/active_admin/filters/dsl.rb +12 -0
  114. data/lib/active_admin/filters/forms.rb +93 -0
  115. data/lib/active_admin/filters/resource_extension.rb +92 -0
  116. data/lib/active_admin/form_builder.rb +88 -33
  117. data/lib/active_admin/helpers/collection.rb +23 -0
  118. data/lib/active_admin/helpers/optional_display.rb +1 -1
  119. data/lib/active_admin/inputs/filter_select_input.rb +1 -1
  120. data/lib/active_admin/locales/bg.yml +37 -1
  121. data/lib/active_admin/locales/ca.yml +36 -0
  122. data/lib/active_admin/locales/cs.yml +36 -0
  123. data/lib/active_admin/locales/da.yml +36 -0
  124. data/lib/active_admin/locales/de.yml +42 -0
  125. data/lib/active_admin/locales/en.yml +27 -2
  126. data/lib/active_admin/locales/es.yml +45 -4
  127. data/lib/active_admin/locales/fr.yml +22 -0
  128. data/lib/active_admin/locales/{he_il.yml → he.yml} +37 -2
  129. data/lib/active_admin/locales/hr.yml +49 -5
  130. data/lib/active_admin/locales/hu.yml +21 -0
  131. data/lib/active_admin/locales/it.yml +36 -1
  132. data/lib/active_admin/locales/ja.yml +36 -0
  133. data/lib/active_admin/locales/ko.yml +36 -1
  134. data/lib/active_admin/locales/lv.yml +28 -2
  135. data/lib/active_admin/locales/nl.yml +42 -1
  136. data/lib/active_admin/locales/no-NB.yml +15 -0
  137. data/lib/active_admin/locales/pl.yml +45 -1
  138. data/lib/active_admin/locales/pt-BR.yml +36 -1
  139. data/lib/active_admin/locales/ro.yml +67 -0
  140. data/lib/active_admin/locales/ru.yml +43 -3
  141. data/lib/active_admin/locales/sv-SE.yml +41 -1
  142. data/lib/active_admin/locales/tr.yml +80 -0
  143. data/lib/active_admin/locales/vi.yml +80 -0
  144. data/lib/active_admin/locales/{zh_cn.yml → zh-CN.yml} +42 -2
  145. data/lib/active_admin/locales/zh-TW.yml +36 -1
  146. data/lib/active_admin/menu.rb +55 -30
  147. data/lib/active_admin/menu_builder.rb +65 -0
  148. data/lib/active_admin/menu_item.rb +55 -14
  149. data/lib/active_admin/namespace.rb +25 -55
  150. data/lib/active_admin/page.rb +15 -10
  151. data/lib/active_admin/resource.rb +9 -0
  152. data/lib/active_admin/resource/action_items.rb +4 -4
  153. data/lib/active_admin/resource/controllers.rb +1 -1
  154. data/lib/active_admin/resource/menu.rb +19 -21
  155. data/lib/active_admin/resource/naming.rb +55 -45
  156. data/lib/active_admin/resource/sidebars.rb +0 -13
  157. data/lib/active_admin/resource_collection.rb +10 -10
  158. data/lib/active_admin/resource_controller.rb +5 -5
  159. data/lib/active_admin/resource_controller/actions.rb +2 -0
  160. data/lib/active_admin/resource_controller/collection.rb +13 -4
  161. data/lib/active_admin/resource_dsl.rb +12 -6
  162. data/lib/active_admin/router.rb +27 -8
  163. data/lib/active_admin/scope.rb +1 -0
  164. data/lib/active_admin/sidebar_section.rb +2 -6
  165. data/lib/active_admin/version.rb +1 -1
  166. data/lib/active_admin/view_factory.rb +18 -13
  167. data/lib/active_admin/view_helpers.rb +0 -2
  168. data/lib/active_admin/view_helpers/auto_link_helper.rb +2 -1
  169. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +24 -25
  170. data/lib/active_admin/view_helpers/display_helper.rb +1 -1
  171. data/lib/active_admin/view_helpers/fields_for.rb +44 -0
  172. data/lib/active_admin/view_helpers/form_helper.rb +6 -0
  173. data/lib/active_admin/view_helpers/view_factory_helper.rb +1 -1
  174. data/lib/active_admin/views/components/action_list_popover.rb +29 -0
  175. data/lib/active_admin/views/components/attributes_table.rb +6 -2
  176. data/lib/active_admin/views/components/dropdown_menu.rb +73 -0
  177. data/lib/active_admin/views/components/paginated_collection.rb +13 -14
  178. data/lib/active_admin/views/components/popover.rb +27 -0
  179. data/lib/active_admin/views/components/scopes.rb +8 -13
  180. data/lib/active_admin/views/components/sidebar_section.rb +1 -1
  181. data/lib/active_admin/views/components/site_title.rb +55 -0
  182. data/lib/active_admin/views/components/status_tag.rb +4 -4
  183. data/lib/active_admin/views/components/table_for.rb +18 -18
  184. data/lib/active_admin/views/dashboard_section_renderer.rb +1 -1
  185. data/lib/active_admin/views/footer.rb +18 -0
  186. data/lib/active_admin/views/header.rb +31 -0
  187. data/lib/active_admin/views/index_as_block.rb +3 -0
  188. data/lib/active_admin/views/index_as_blog.rb +4 -0
  189. data/lib/active_admin/views/index_as_grid.rb +2 -0
  190. data/lib/active_admin/views/index_as_table.rb +19 -6
  191. data/lib/active_admin/views/pages/base.rb +14 -48
  192. data/lib/active_admin/views/pages/form.rb +3 -3
  193. data/lib/active_admin/views/pages/index.rb +56 -24
  194. data/lib/active_admin/views/pages/layout.rb +2 -2
  195. data/lib/active_admin/views/pages/page.rb +10 -4
  196. data/lib/active_admin/views/pages/show.rb +11 -8
  197. data/lib/active_admin/views/tabbed_navigation.rb +3 -3
  198. data/lib/active_admin/views/title_bar.rb +50 -0
  199. data/lib/active_admin/views/utility_nav.rb +41 -0
  200. data/lib/generators/active_admin/assets/assets_generator.rb +1 -1
  201. data/lib/generators/active_admin/assets/templates/3.0/active_admin.js +1 -0
  202. data/lib/generators/active_admin/assets/templates/3.1/active_admin.css.scss +26 -3
  203. data/lib/generators/active_admin/devise/devise_generator.rb +2 -2
  204. data/lib/generators/active_admin/install/install_generator.rb +10 -10
  205. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +21 -1
  206. data/lib/generators/active_admin/install/templates/admin_user.rb.erb +20 -0
  207. data/lib/generators/active_admin/install/templates/dashboard.rb +33 -0
  208. data/lib/generators/active_admin/resource/templates/admin.rb +1 -1
  209. data/spec/integration/memory_spec.rb +1 -11
  210. data/spec/javascripts/coffeescripts/jquery.aa.checkbox-toggler-spec.js.coffee +50 -0
  211. data/spec/javascripts/coffeescripts/jquery.aa.popover-spec.js.coffee +82 -0
  212. data/spec/javascripts/coffeescripts/jquery.aa.table-checkbox-toggler-spec.js.coffee +34 -0
  213. data/spec/javascripts/compiled/jquery.aa.checkbox-toggler-spec.js +60 -0
  214. data/spec/javascripts/compiled/jquery.aa.popover-spec.js +106 -0
  215. data/spec/javascripts/compiled/jquery.aa.table-checkbox-toggler-spec.js +37 -0
  216. data/spec/javascripts/fixtures/checkboxes.html +9 -0
  217. data/spec/javascripts/fixtures/table_checkboxes.html +17 -0
  218. data/spec/javascripts/helpers/SpecHelper.js +3 -0
  219. data/spec/javascripts/helpers/vendor/jasmine-fixture-0.0.5.js +108 -0
  220. data/spec/javascripts/helpers/vendor/jasmine-jquery.js +288 -0
  221. data/spec/javascripts/helpers/vendor/sinon-1.2.0.js +2915 -0
  222. data/spec/javascripts/support/jasmine.yml +74 -0
  223. data/spec/javascripts/support/jasmine_config.rb +23 -0
  224. data/spec/javascripts/support/jasmine_runner.rb +32 -0
  225. data/spec/javascripts/support/jquery-ui-1.8.16.custom.min.js +34 -0
  226. data/spec/javascripts/support/jquery.min.js +4 -0
  227. data/spec/spec_helper.rb +13 -13
  228. data/spec/spec_helper_without_rails.rb +2 -3
  229. data/spec/support/detect_rails_version.rb +16 -10
  230. data/spec/support/rails_template.rb +13 -1
  231. data/spec/support/templates/admin/stores.rb +1 -0
  232. data/spec/support/templates/en.yml +6 -0
  233. data/spec/unit/action_builder_spec.rb +38 -0
  234. data/spec/unit/application_spec.rb +12 -16
  235. data/spec/unit/base_controller_shared_examples.rb +3 -6
  236. data/spec/unit/batch_actions/resource_spec.rb +91 -0
  237. data/spec/unit/batch_actions/settings_spec.rb +61 -0
  238. data/spec/unit/breadcrumbs_spec.rb +33 -0
  239. data/spec/unit/comments_spec.rb +6 -0
  240. data/spec/unit/config_shared_examples.rb +17 -64
  241. data/spec/unit/csv_builder_spec.rb +12 -2
  242. data/spec/unit/dashboard_controller_spec.rb +11 -5
  243. data/spec/unit/dsl_include_spec.rb +20 -0
  244. data/spec/unit/{filter_form_builder_spec.rb → filters/filter_form_builder_spec.rb} +10 -7
  245. data/spec/unit/filters/resource_spec.rb +60 -0
  246. data/spec/unit/form_builder_spec.rb +180 -28
  247. data/spec/unit/helpers/collection_spec.rb +65 -0
  248. data/spec/unit/menu_item_spec.rb +48 -53
  249. data/spec/unit/menu_spec.rb +46 -32
  250. data/spec/unit/namespace/register_page_spec.rb +0 -6
  251. data/spec/unit/namespace/register_resource_spec.rb +1 -8
  252. data/spec/unit/namespace_spec.rb +8 -2
  253. data/spec/unit/page_spec.rb +20 -8
  254. data/spec/unit/resource/naming_spec.rb +27 -26
  255. data/spec/unit/resource/sidebars_spec.rb +0 -7
  256. data/spec/unit/resource_collection_spec.rb +11 -11
  257. data/spec/unit/resource_controller/collection_spec.rb +23 -1
  258. data/spec/unit/resource_controller/sidebars_spec.rb +46 -0
  259. data/spec/unit/resource_controller_spec.rb +43 -0
  260. data/spec/unit/resource_registration_spec.rb +2 -13
  261. data/spec/unit/resource_spec.rb +0 -42
  262. data/spec/unit/routing_spec.rb +60 -14
  263. data/spec/unit/scope_spec.rb +7 -0
  264. data/spec/unit/view_factory_spec.rb +9 -6
  265. data/spec/unit/view_helpers/fields_for_spec.rb +41 -0
  266. data/spec/unit/view_helpers/form_helper_spec.rb +18 -0
  267. data/spec/unit/views/components/action_list_popover_spec.rb +30 -0
  268. data/spec/unit/views/components/attributes_table_spec.rb +32 -20
  269. data/spec/unit/views/components/batch_action_popover_spec.rb +33 -0
  270. data/spec/unit/views/components/blank_slate_spec.rb +5 -3
  271. data/spec/unit/views/components/columns_spec.rb +32 -22
  272. data/spec/unit/views/components/paginated_collection_spec.rb +54 -12
  273. data/spec/unit/views/components/panel_spec.rb +11 -6
  274. data/spec/unit/views/components/popover_spec.rb +33 -0
  275. data/spec/unit/views/components/sidebar_section_spec.rb +6 -6
  276. data/spec/unit/views/components/site_title_spec.rb +78 -0
  277. data/spec/unit/views/components/status_tag_spec.rb +17 -10
  278. data/spec/unit/views/components/table_for_spec.rb +37 -17
  279. data/spec/unit/views/pages/layout_spec.rb +51 -10
  280. data/spec/unit/views/tabbed_navigation_spec.rb +44 -23
  281. data/tasks/js.rake +32 -0
  282. data/tasks/test.rake +1 -1
  283. metadata +233 -200
  284. data/lib/active_admin/arbre.rb +0 -22
  285. data/lib/active_admin/arbre/builder.rb +0 -125
  286. data/lib/active_admin/arbre/context.rb +0 -45
  287. data/lib/active_admin/arbre/html/attributes.rb +0 -20
  288. data/lib/active_admin/arbre/html/class_list.rb +0 -24
  289. data/lib/active_admin/arbre/html/collection.rb +0 -27
  290. data/lib/active_admin/arbre/html/document.rb +0 -42
  291. data/lib/active_admin/arbre/html/element.rb +0 -161
  292. data/lib/active_admin/arbre/html/html5_elements.rb +0 -47
  293. data/lib/active_admin/arbre/html/tag.rb +0 -145
  294. data/lib/active_admin/arbre/html/text_node.rb +0 -35
  295. data/lib/active_admin/filter_form_builder.rb +0 -53
  296. data/lib/active_admin/renderer.rb +0 -87
  297. data/lib/active_admin/resource_controller/filters.rb +0 -58
  298. data/lib/active_admin/stylesheets/active_admin/mixins/_utilities.scss +0 -0
  299. data/lib/active_admin/view_helpers/filter_form_helper.rb +0 -36
  300. data/lib/active_admin/view_helpers/renderer_helper.rb +0 -29
  301. data/lib/active_admin/views/header_renderer.rb +0 -82
  302. data/lib/generators/active_admin/assets/templates/dashboards.rb +0 -36
  303. data/lib/generators/active_admin/install/templates/dashboards.rb +0 -44
  304. data/spec/unit/arbre/context_spec.rb +0 -35
  305. data/spec/unit/arbre/html/element_finder_methods_spec.rb +0 -110
  306. data/spec/unit/arbre/html/element_spec.rb +0 -236
  307. data/spec/unit/arbre/html/tag_attributes_spec.rb +0 -61
  308. data/spec/unit/arbre/html/tag_spec.rb +0 -63
  309. data/spec/unit/arbre/html_spec.rb +0 -228
  310. data/spec/unit/renderer_spec.rb +0 -126
@@ -1,29 +0,0 @@
1
- module ActiveAdmin
2
- module ViewHelpers
3
- module RendererHelper
4
-
5
- # Adds the ability to render ActiveAdmin::Renderers using the
6
- # standard render method.
7
- #
8
- # Example:
9
- #
10
- # render MyRendererClass, "Arg1", "Arg2"
11
- #
12
- # which is the same as doing
13
- #
14
- # MyRendererClass.new(self).to_html("Arg1", "Arg2")
15
- def render(*args)
16
- if args[0].is_a?(Class) && args[0].ancestors.include?(ActiveAdmin::Renderer)
17
- renderer = args.shift
18
- renderer.new(self).to_html(*args)
19
- elsif args[0].is_a?(Class) && args[0].ancestors.include?(Arbre::HTML::Tag)
20
- tag_class = args.shift
21
- insert_tag tag_class, *args
22
- else
23
- super
24
- end
25
- end
26
-
27
- end
28
- end
29
- end
@@ -1,82 +0,0 @@
1
- module ActiveAdmin
2
- module Views
3
-
4
- # Renderer for the header of the application. Includes the page
5
- # title, global navigation and utility navigation.
6
- class HeaderRenderer < ::ActiveAdmin::Renderer
7
-
8
- def to_html
9
- title + global_navigation + utility_navigation
10
- end
11
-
12
- protected
13
-
14
- # Renders the title/branding area for the site
15
- def title
16
- content_tag('h1', link_to_site_title(title_image_tag || title_text), :id => 'site_title')
17
- end
18
-
19
- def link_to_site_title(title_tag)
20
- if active_admin_namespace.site_title_link.present?
21
- link_to(title_tag, active_admin_namespace.site_title_link)
22
- else
23
- title_tag
24
- end
25
- end
26
-
27
- # @return [String] An HTML img tag with site_title_image. Return nil when
28
- # site_title_image is blank.
29
- def title_image_tag
30
- if active_admin_namespace.site_title_image.present?
31
- image_tag(title_image,
32
- :id => "site_title_image",
33
- :alt => active_admin_namespace.site_title)
34
- end
35
- end
36
-
37
- # @return [String] The title image url
38
- def title_image
39
- render_or_call_method_or_proc_on(self, active_admin_namespace.site_title_image)
40
- end
41
-
42
- # @return [String] The site title
43
- def title_text
44
- render_or_call_method_or_proc_on(self, active_admin_namespace.site_title)
45
- end
46
-
47
- # Renders the global navigation returned by
48
- # ActiveAdmin::ResourceController#current_menu
49
- #
50
- # It uses the ActiveAdmin.tabs_renderer option
51
- def global_navigation
52
- render view_factory.global_navigation, current_menu, :class => 'header-item'
53
- end
54
-
55
- def utility_navigation
56
- content_tag 'p', :id => "utility_nav", :class => 'header-item' do
57
- if current_active_admin_user?
58
- html = content_tag(:span, display_name(current_active_admin_user), :class => "current_user")
59
-
60
- if active_admin_namespace.logout_link_path
61
- html << link_to(I18n.t('active_admin.logout'), active_admin_logout_path, :method => logout_method)
62
- end
63
- end
64
- end
65
- end
66
-
67
- # Returns the logout path from the application settings
68
- def active_admin_logout_path
69
- if active_admin_namespace.logout_link_path.is_a?(Symbol)
70
- send(active_admin_namespace.logout_link_path)
71
- else
72
- active_admin_namespace.logout_link_path
73
- end
74
- end
75
-
76
- def logout_method
77
- active_admin_namespace.logout_link_method || :get
78
- end
79
- end
80
-
81
- end
82
- end
@@ -1,36 +0,0 @@
1
- ActiveAdmin::Dashboards.build do
2
-
3
- # Define your dashboard sections here. Each block will be
4
- # rendered on the dashboard in the context of the view. So just
5
- # return the content which you would like to display.
6
-
7
- # == Simple Dashboard Section
8
- # Here is an example of a simple dashboard section
9
- #
10
- # section "Recent Posts" do
11
- # ul do
12
- # Post.recent(5).collect do |post|
13
- # li link_to(post.title, admin_post_path(post))
14
- # end
15
- # end
16
- # end
17
-
18
- # == Render Partial Section
19
- # The block is rendererd within the context of the view, so you can
20
- # easily render a partial rather than build content in ruby.
21
- #
22
- # section "Recent Posts" do
23
- # render 'recent_posts' # => this will render /app/views/admin/dashboard/_recent_posts.html.erb
24
- # end
25
-
26
- # == Section Ordering
27
- # The dashboard sections are ordered by a given priority from top left to
28
- # bottom right. The default priority is 10. By giving a section numerically lower
29
- # priority it will be sorted higher. For example:
30
- #
31
- # section "Recent Posts", :priority => 10
32
- # section "Recent User", :priority => 1
33
- #
34
- # Will render the "Recent Users" then the "Recent Posts" sections on the dashboard.
35
-
36
- end
@@ -1,44 +0,0 @@
1
- ActiveAdmin::Dashboards.build do
2
-
3
- # Define your dashboard sections here. Each block will be
4
- # rendered on the dashboard in the context of the view. So just
5
- # return the content which you would like to display.
6
-
7
- # == Simple Dashboard Section
8
- # Here is an example of a simple dashboard section
9
- #
10
- # section "Recent Posts" do
11
- # ul do
12
- # Post.recent(5).collect do |post|
13
- # li link_to(post.title, admin_post_path(post))
14
- # end
15
- # end
16
- # end
17
-
18
- # == Render Partial Section
19
- # The block is rendered within the context of the view, so you can
20
- # easily render a partial rather than build content in ruby.
21
- #
22
- # section "Recent Posts" do
23
- # div do
24
- # render 'recent_posts' # => this will render /app/views/admin/dashboard/_recent_posts.html.erb
25
- # end
26
- # end
27
-
28
- # == Section Ordering
29
- # The dashboard sections are ordered by a given priority from top left to
30
- # bottom right. The default priority is 10. By giving a section numerically lower
31
- # priority it will be sorted higher. For example:
32
- #
33
- # section "Recent Posts", :priority => 10
34
- # section "Recent User", :priority => 1
35
- #
36
- # Will render the "Recent Users" then the "Recent Posts" sections on the dashboard.
37
-
38
- # == Conditionally Display
39
- # Provide a method name or Proc object to conditionally render a section at run time.
40
- #
41
- # section "Membership Summary", :if => :memberships_enabled?
42
- # section "Membership Summary", :if => Proc.new { current_admin_user.account.memberships.any? }
43
-
44
- end
@@ -1,35 +0,0 @@
1
- # coding: utf-8
2
- require 'spec_helper'
3
-
4
- describe Arbre::Context do
5
-
6
- setup_arbre_context!
7
-
8
- before do
9
- h1 "札幌市北区" # Add some HTML to the context
10
- end
11
-
12
- it "should not increment the indent_level" do
13
- current_dom_context.indent_level.should == -1
14
- end
15
-
16
- it "should return a bytesize" do
17
- current_dom_context.bytesize.should == 25
18
- end
19
-
20
- it "should return a length" do
21
- current_dom_context.length.should == 25
22
- end
23
-
24
- it "should delegate missing methods to the html string" do
25
- current_dom_context.should respond_to(:index)
26
- current_dom_context.index('<').should == 0
27
- end
28
-
29
- it "should use a cached version of the HTML for method delegation" do
30
- current_dom_context.should_receive(:to_s).once.and_return("<h1>札幌市北区</h1>")
31
- current_dom_context.index('<').should == 0
32
- current_dom_context.index('<').should == 0
33
- end
34
-
35
- end
@@ -1,110 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Arbre::HTML::Element, "Finder Methods" do
4
-
5
- setup_arbre_context!
6
-
7
- describe "finding elements by tag name" do
8
-
9
- it "should return 0 when no elements exist" do
10
- div.get_elements_by_tag_name("li").size.should == 0
11
- end
12
-
13
- it "should return a child element" do
14
- html = div do
15
- ul
16
- li
17
- ul
18
- end
19
- elements = html.get_elements_by_tag_name("li")
20
- elements.size.should == 1
21
- elements[0].should be_instance_of(Arbre::HTML::Li)
22
- end
23
-
24
- it "should return multple child elements" do
25
- html = div do
26
- ul
27
- li
28
- ul
29
- li
30
- end
31
- elements = html.get_elements_by_tag_name("li")
32
- elements.size.should == 2
33
- elements[0].should be_instance_of(Arbre::HTML::Li)
34
- elements[1].should be_instance_of(Arbre::HTML::Li)
35
- end
36
-
37
- it "should return children's child elements" do
38
- html = div do
39
- ul
40
- li do
41
- li
42
- end
43
- end
44
- elements = html.get_elements_by_tag_name("li")
45
- elements.size.should == 2
46
- elements[0].should be_instance_of(Arbre::HTML::Li)
47
- elements[1].should be_instance_of(Arbre::HTML::Li)
48
- elements[1].parent.should == elements[0]
49
- end
50
- end
51
-
52
- #TODO: describe "finding an element by id"
53
-
54
- describe "finding an element by a class name" do
55
- it "should return 0 when no elements exist" do
56
- div.get_elements_by_class_name("my_class").size.should == 0
57
- end
58
- it "should return a child element" do
59
- html = div do
60
- div :class => "some_class"
61
- div :class => "my_class"
62
- end
63
- elements = html.get_elements_by_class_name("my_class")
64
- elements.size.should == 1
65
- elements[0].should be_instance_of(Arbre::HTML::Div)
66
- end
67
-
68
- it "should return multple child elements" do
69
- html = div do
70
- div :class => "some_class"
71
- div :class => "my_class"
72
- div :class => "my_class"
73
- end
74
- elements = html.get_elements_by_class_name("my_class")
75
- elements.size.should == 2
76
- elements[0].should be_instance_of(Arbre::HTML::Div)
77
- elements[1].should be_instance_of(Arbre::HTML::Div)
78
- end
79
-
80
- it "should return elements that match one of several classes" do
81
- html = div do
82
- div :class => "some_class this_class"
83
- div :class => "some_class"
84
- div :class => "other_class"
85
-
86
- end
87
- elements = html.get_elements_by_class_name("this_class")
88
- elements.size.should == 1
89
- elements[0].should be_instance_of(Arbre::HTML::Div)
90
- end
91
-
92
- #TODO: find children's children by class name
93
-
94
- #it "should return elements that are nested" do
95
- # html = div do
96
- # div :class => "my_class"
97
- # div :class => "some_class" do
98
- # ul :class => "other_class" do
99
- # li :class => "special_awesome_class"
100
- # end
101
- # end
102
- # end
103
- #
104
- # elements = html.get_elements_by_class_name("special_awesome_class")
105
- #
106
- # elements.size.should == 1
107
- # elements[0].should be_instance_of(Arbre::HTML::Li)
108
- #end
109
- end
110
- end
@@ -1,236 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Arbre::HTML::Element do
4
-
5
- setup_arbre_context!
6
-
7
- let(:element){ Arbre::HTML::Element.new }
8
-
9
- context "when initialized" do
10
- it "should have no children" do
11
- element.children.should be_empty
12
- end
13
- it "should have no parent" do
14
- element.parent.should be_nil
15
- end
16
- it "should have no document" do
17
- element.document.should be_nil
18
- end
19
- it "should respond to the HTML builder methods" do
20
- element.should respond_to(:span)
21
- end
22
- it "should have a set of local assigns" do
23
- element = Arbre::HTML::Element.new :hello => "World"
24
- element.assigns[:hello].should == "World"
25
- end
26
- it "should have an empty hash with no local assigns" do
27
- element.assigns.should == {}
28
- end
29
- end
30
-
31
- describe "passing in a helper object" do
32
- let(:element){ Arbre::HTML::Element.new(nil, action_view) }
33
- it "should call methods on the helper object and return TextNode objects" do
34
- element.content_tag(:div).should == "<div></div>"
35
- end
36
-
37
- it "should raise a NoMethodError if not found" do
38
- lambda {
39
- element.a_method_that_doesnt_exist
40
- }.should raise_error(NoMethodError)
41
- end
42
- end
43
-
44
- describe "passing in assigns" do
45
- let(:assigns){ {:post => Post.new(:title => "Hello")} }
46
- it "should be accessible via a method call" do
47
- post.should be_an_instance_of(Post)
48
- end
49
- end
50
-
51
- describe "adding a child" do
52
- let(:child){ Arbre::HTML::Element.new }
53
- before do
54
- element.add_child child
55
- end
56
-
57
- it "should add the child to the parent" do
58
- element.children.first.should == child
59
- end
60
-
61
- it "should set the parent of the child" do
62
- child.parent.should == element
63
- end
64
-
65
- context "when the child is nil" do
66
- let(:child){ nil }
67
- it "should not add the child" do
68
- element.children.should be_empty
69
- end
70
- end
71
-
72
- context "when the child is a string" do
73
- let(:child){ "Hello World" }
74
- it "should add as a TextNode" do
75
- element.children.first.should be_instance_of(Arbre::HTML::TextNode)
76
- element.children.first.to_s.should == "Hello World"
77
- end
78
- end
79
- end
80
-
81
- describe "#children?" do
82
-
83
- it "returns true when a child has been added" do
84
- element.add_child Arbre::HTML::Element.new
85
- element.children?.should == true
86
- end
87
-
88
- it "returns false when no children" do
89
- element.children?.should == false
90
- end
91
-
92
- end
93
-
94
- describe "setting the content" do
95
-
96
- context "when a string" do
97
- before do
98
- element.add_child "Hello World"
99
- element.content = "Goodbye"
100
- end
101
- it "should clear the existing children" do
102
- element.children.size.should == 1
103
- end
104
-
105
- it "should add the string as a child" do
106
- element.children.first.to_s.should == "Goodbye"
107
- end
108
-
109
- it "should html escape the string" do
110
- string = "Goodbye <br />"
111
- element.content = string
112
- element.to_s.should == "Goodbye &lt;br /&gt;"
113
- end
114
- end
115
-
116
- context "when a tag" do
117
- before do
118
- element.content = h2("Hello")
119
- end
120
- it "should set the content tag" do
121
- element.children.first.should be_an_instance_of(Arbre::HTML::H2)
122
- end
123
- it "should set the tags parent" do
124
- element.children.first.parent.should == element
125
- end
126
- end
127
-
128
- context "when an array of tags" do
129
- before do
130
- element.content = [ul,div]
131
- end
132
-
133
- it "should set the content tag" do
134
- element.children.first.should be_an_instance_of(Arbre::HTML::Ul)
135
- end
136
- it "should set the tags parent" do
137
- element.children.first.parent.should == element
138
- end
139
- end
140
-
141
- end
142
-
143
- describe "setting the parent" do
144
- let(:parent) do
145
- doc = Arbre::HTML::Document.new
146
- parent = Arbre::HTML::Element.new
147
- doc << parent
148
- parent
149
- end
150
- before { element.parent = parent }
151
-
152
- it "should set the parent" do
153
- element.parent.should == parent
154
- end
155
- it "should set the document to the parent's document" do
156
- element.document.should == parent.document
157
- end
158
- end
159
-
160
- describe "rendering to html" do
161
- it "should render the children collection" do
162
- element.children.should_receive(:to_s).and_return("content")
163
- element.to_s.should == "content"
164
- end
165
- end
166
-
167
- describe "adding elements together" do
168
-
169
- context "when both elements are tags" do
170
- let(:collection){ h1 + h2}
171
-
172
- it "should return an instance of Collection" do
173
- collection.should be_an_instance_of(Arbre::HTML::Collection)
174
- end
175
-
176
- it "should return the elements in the collection" do
177
- collection.size.should == 2
178
- collection.first.should be_an_instance_of(Arbre::HTML::H1)
179
- collection[1].should be_an_instance_of(Arbre::HTML::H2)
180
- end
181
- end
182
-
183
- context "when the left is a collection and the right is a tag" do
184
- let(:collection){ Arbre::HTML::Collection.new([h1, h2]) + h3}
185
-
186
- it "should return an instance of Collection" do
187
- collection.should be_an_instance_of(Arbre::HTML::Collection)
188
- end
189
-
190
- it "should return the elements in the collection flattened" do
191
- collection.size.should == 3
192
- collection[0].should be_an_instance_of(Arbre::HTML::H1)
193
- collection[1].should be_an_instance_of(Arbre::HTML::H2)
194
- collection[2].should be_an_instance_of(Arbre::HTML::H3)
195
- end
196
- end
197
-
198
- context "when the right is a collection and the left is a tag" do
199
- let(:collection){ h1 + Arbre::HTML::Collection.new([h2,h3]) }
200
-
201
- it "should return an instance of Collection" do
202
- collection.should be_an_instance_of(Arbre::HTML::Collection)
203
- end
204
-
205
- it "should return the elements in the collection flattened" do
206
- collection.size.should == 3
207
- collection[0].should be_an_instance_of(Arbre::HTML::H1)
208
- collection[1].should be_an_instance_of(Arbre::HTML::H2)
209
- collection[2].should be_an_instance_of(Arbre::HTML::H3)
210
- end
211
- end
212
-
213
- context "when the left is a tag and the right is a string" do
214
- let(:collection){ h1 + "Hello World"}
215
-
216
- it "should return an instance of Collection" do
217
- collection.should be_an_instance_of(Arbre::HTML::Collection)
218
- end
219
-
220
- it "should return the elements in the collection" do
221
- collection.size.should == 2
222
- collection[0].should be_an_instance_of(Arbre::HTML::H1)
223
- collection[1].should be_an_instance_of(Arbre::HTML::TextNode)
224
- end
225
- end
226
-
227
- context "when the left is a string and the right is a tag" do
228
- let(:collection){ "hello World" + h1}
229
-
230
- it "should return a string" do
231
- collection.strip.chomp.should == "hello World<h1></h1>"
232
- end
233
- end
234
- end
235
-
236
- end