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,47 +0,0 @@
1
- module Arbre
2
- module HTML
3
-
4
- AUTO_BUILD_ELEMENTS = [ :a, :abbr, :address, :area, :article, :aside, :audio, :b, :base,
5
- :bdo, :blockquote, :body, :br, :button, :canvas, :caption, :cite,
6
- :code, :col, :colgroup, :command, :datalist, :dd, :del, :details,
7
- :dfn, :div, :dl, :dt, :em, :embed, :fieldset, :figcaption, :figure,
8
- :footer, :form, :h1, :h2, :h3, :h4, :h5, :h6, :head, :header, :hgroup,
9
- :hr, :html, :i, :iframe, :img, :input, :ins, :keygen, :kbd, :label,
10
- :legend, :li, :link, :map, :mark, :menu, :meta, :meter, :nav, :noscript,
11
- :object, :ol, :optgroup, :option, :output, :pre, :progress, :q,
12
- :s, :samp, :script, :section, :select, :small, :source, :span,
13
- :strong, :style, :sub, :summary, :sup, :table, :tbody, :td,
14
- :textarea, :tfoot, :th, :thead, :time, :title, :tr, :ul, :var, :video ]
15
-
16
- HTML5_ELEMENTS = [ :p ] + AUTO_BUILD_ELEMENTS
17
-
18
- AUTO_BUILD_ELEMENTS.each do |name|
19
- class_eval <<-EOF
20
- class #{name.to_s.capitalize} < Tag
21
- builder_method :#{name}
22
- end
23
- EOF
24
- end
25
-
26
- class P < Tag
27
- builder_method :para
28
- end
29
-
30
- class Table < Tag
31
- def initialize(*)
32
- super
33
- set_table_tag_defaults
34
- end
35
-
36
- protected
37
-
38
- # Set some good defaults for tables
39
- def set_table_tag_defaults
40
- set_attribute :border, 0
41
- set_attribute :cellspacing, 0
42
- set_attribute :cellpadding, 0
43
- end
44
- end
45
-
46
- end
47
- end
@@ -1,145 +0,0 @@
1
- require 'erb'
2
-
3
- module Arbre
4
- module HTML
5
-
6
- class Tag < Element
7
- attr_reader :attributes
8
-
9
- def initialize(*)
10
- super
11
- @attributes = Attributes.new
12
- end
13
-
14
- def build(*args)
15
- super
16
- attributes = args.extract_options!
17
- self.content = args.first if args.first
18
-
19
- set_for_attribute(attributes.delete(:for))
20
-
21
- attributes.each do |key, value|
22
- set_attribute(key, value)
23
- end
24
- end
25
-
26
- def set_attribute(name, value)
27
- @attributes[name.to_sym] = value
28
- end
29
-
30
- def get_attribute(name)
31
- @attributes[name.to_sym]
32
- end
33
- alias :attr :get_attribute
34
-
35
- def has_attribute?(name)
36
- @attributes.has_key?(name.to_sym)
37
- end
38
-
39
- def remove_attribute(name)
40
- @attributes.delete(name.to_sym)
41
- end
42
-
43
- def id
44
- get_attribute(:id)
45
- end
46
-
47
- # Generates and id for the object if it doesn't exist already
48
- def id!
49
- return id if id
50
- self.id = object_id.to_s
51
- id
52
- end
53
-
54
- def id=(id)
55
- set_attribute(:id, id)
56
- end
57
-
58
- def add_class(class_names)
59
- class_list.add class_names
60
- end
61
-
62
- def remove_class(class_names)
63
- class_list.delete(class_names)
64
- end
65
-
66
- # Returns a string of classes
67
- def class_names
68
- class_list.to_s
69
- end
70
-
71
- def class_list
72
- get_attribute(:class) || set_attribute(:class, ClassList.new)
73
- end
74
-
75
- def to_s
76
- indent(opening_tag, content, closing_tag).html_safe
77
- end
78
-
79
- private
80
-
81
- def opening_tag
82
- "<#{tag_name}#{attributes_html}>"
83
- end
84
-
85
- def closing_tag
86
- "</#{tag_name}>"
87
- end
88
-
89
- INDENT_SIZE = 2
90
-
91
- def indent(open_tag, child_content, close_tag)
92
- spaces = ' ' * indent_level * INDENT_SIZE
93
-
94
- html = ""
95
-
96
- if no_child? || child_is_text?
97
- if self_closing_tag?
98
- html << spaces << open_tag.sub( />$/, '/>' )
99
- else
100
- # one line
101
- html << spaces << open_tag << child_content << close_tag
102
- end
103
- else
104
- # multiple lines
105
- html << spaces << open_tag << "\n"
106
- html << child_content # the child takes care of its own spaces
107
- html << spaces << close_tag
108
- end
109
-
110
- html << "\n"
111
-
112
- html
113
- end
114
-
115
- def self_closing_tag?
116
- %w|meta link|.include?(tag_name)
117
- end
118
-
119
- def no_child?
120
- children.empty?
121
- end
122
-
123
- def child_is_text?
124
- children.size == 1 && children.first.is_a?(TextNode)
125
- end
126
-
127
-
128
- def attributes_html
129
- attributes.any? ? " " + attributes.to_s : nil
130
- end
131
-
132
- def set_for_attribute(record)
133
- return unless record
134
- set_attribute :id, ActionController::RecordIdentifier.dom_id(record, default_id_for_prefix)
135
- add_class ActionController::RecordIdentifier.dom_class(record)
136
- end
137
-
138
- def default_id_for_prefix
139
- nil
140
- end
141
-
142
- end
143
-
144
- end
145
- end
@@ -1,35 +0,0 @@
1
- require 'erb'
2
-
3
- module Arbre
4
- module HTML
5
-
6
- class TextNode < Element
7
-
8
- builder_method :text_node
9
-
10
- # Builds a text node from a string
11
- def self.from_string(string)
12
- node = new
13
- node.build(string)
14
- node
15
- end
16
-
17
- def add_child(*args)
18
- raise "TextNodes do not have children"
19
- end
20
-
21
- def build(string)
22
- @content = string
23
- end
24
-
25
- def tag_name
26
- nil
27
- end
28
-
29
- def to_s
30
- ERB::Util.html_escape(@content.to_s)
31
- end
32
- end
33
-
34
- end
35
- end
@@ -1,53 +0,0 @@
1
- module ActiveAdmin
2
- # This form builder defines methods to build filter forms such
3
- # as the one found in the sidebar of the index page of a standard resource.
4
- class FilterFormBuilder < FormBuilder
5
-
6
- def filter(method, options = {})
7
- return "" if method.nil? || method == ""
8
- options[:as] ||= default_input_type(method)
9
- return "" unless options[:as]
10
- content = input(method, options)
11
- form_buffers.last << content.html_safe if content
12
- end
13
-
14
- protected
15
-
16
- # Returns the default filter type for a given attribute
17
- def default_input_type(method, options = {})
18
- if column = column_for(method)
19
- case column.type
20
- when :date, :datetime
21
- return :date_range
22
- when :string, :text
23
- return :string
24
- when :integer
25
- return :select if reflection_for(method.to_s.gsub('_id','').to_sym)
26
- return :numeric
27
- when :float, :decimal
28
- return :numeric
29
- end
30
- end
31
-
32
- if reflection = reflection_for(method)
33
- return :select if reflection.macro == :belongs_to && !reflection.options[:polymorphic]
34
- end
35
- end
36
-
37
- def custom_input_class_name(as)
38
- "ActiveAdmin::Inputs::Filter#{as.to_s.camelize}Input"
39
- end
40
-
41
- # Returns the column for an attribute on the object being searched
42
- # if it exists. Otherwise returns nil
43
- def column_for(method)
44
- @object.base.columns_hash[method.to_s] if @object.base.respond_to?(:columns_hash)
45
- end
46
-
47
- # Returns the association reflection for the method if it exists
48
- def reflection_for(method)
49
- @object.base.reflect_on_association(method) if @object.base.respond_to?(:reflect_on_association)
50
- end
51
-
52
- end
53
- end
@@ -1,87 +0,0 @@
1
- module ActiveAdmin
2
- class Renderer
3
-
4
- include ::ActiveAdmin::ViewHelpers::RendererHelper
5
- include Arbre::Builder
6
-
7
- attr_accessor :view, :assigns
8
-
9
- # For use in html
10
- alias_method :helpers, :view
11
-
12
- def initialize(view_or_renderer)
13
- @view = view_or_renderer.is_a?(Renderer) ? view_or_renderer.view : view_or_renderer
14
-
15
- if view.respond_to?(:assigns)
16
- @assigns = view.assigns.each { |key, value| instance_variable_set("@#{key}", value) }
17
- else
18
- @assigns = {}
19
- end
20
- end
21
-
22
- def method_missing(name,*args, &block)
23
- if view.respond_to?(name)
24
- view.send(name, *args, &block)
25
- else
26
- super
27
- end
28
- end
29
-
30
- def to_html(*args)
31
- end
32
-
33
- def to_s(*args)
34
- to_html(*args)
35
- end
36
-
37
- def haml(template)
38
- begin
39
- require 'haml' unless defined?(Haml)
40
- rescue LoadError
41
- raise LoadError, "Please install the HAML gem to use the HAML method with ActiveAdmin"
42
- end
43
-
44
- # Find the first non whitespace character in the template
45
- indent = template.index(/\S/)
46
-
47
- # Remove the indent if its greater than 0
48
- if indent > 0
49
- template = template.split("\n").collect do |line|
50
- line[indent..-1]
51
- end.join("\n")
52
- end
53
-
54
- # Render it baby
55
- Haml::Engine.new(template).render(self)
56
- end
57
-
58
- protected
59
-
60
- # Although we make a copy of all the instance variables on the way in, it
61
- # doesn't mean that we can set new instance variables that are stored in
62
- # the context of the view. This method allows you to do that. It can be useful
63
- # when trying to share variables with a layout.
64
- def set_ivar_on_view(name, value)
65
- view.instance_variable_set(name, value)
66
- end
67
-
68
- # Many times throughout the views we want to either call a method on an object
69
- # or instance_exec a proc passing in the object as the first parameter. This
70
- # method takes care of this functionality.
71
- #
72
- # call_method_or_proc_on(@my_obj, :size) same as @my_obj.size
73
- # OR
74
- # proc = Proc.new{|s| s.size }
75
- # call_method_or_proc_on(@my_obj, proc)
76
- #
77
- def call_method_or_proc_on(obj, symbol_or_proc)
78
- case symbol_or_proc
79
- when Symbol, String
80
- obj.send(symbol_or_proc.to_sym)
81
- when Proc
82
- instance_exec(obj, &symbol_or_proc)
83
- end
84
- end
85
-
86
- end
87
- end
@@ -1,58 +0,0 @@
1
- module ActiveAdmin
2
- class ResourceController < BaseController
3
-
4
- module Filters
5
- extend ActiveSupport::Concern
6
-
7
- included do
8
- helper_method :filters_config
9
- end
10
-
11
- module ClassMethods
12
- def filter(attribute, options = {})
13
- return false if attribute.nil?
14
- @filters ||= []
15
- @filters << options.merge(:attribute => attribute)
16
- end
17
-
18
- def filters_config
19
- @filters && @filters.any? ? @filters : default_filters_config
20
- end
21
-
22
- def reset_filters!
23
- @filters = []
24
- end
25
-
26
- # Returns a sane set of filters by default for the object
27
- def default_filters_config
28
- default_association_filters + default_content_filters
29
- end
30
-
31
- # Returns a default set of filters for the associations
32
- def default_association_filters
33
- if resource_class.respond_to?(:reflections)
34
- resource_class.reflections.collect{|name, r| { :attribute => name }}
35
- else
36
- []
37
- end
38
- end
39
-
40
- # Returns a default set of filters for the content columns
41
- def default_content_filters
42
- if resource_class.respond_to?(:content_columns)
43
- resource_class.content_columns.collect{|c| { :attribute => c.name.to_sym } }
44
- else
45
- []
46
- end
47
- end
48
- end
49
-
50
- protected
51
-
52
- def filters_config
53
- self.class.filters_config
54
- end
55
- end
56
-
57
- end
58
- end
@@ -1,36 +0,0 @@
1
- module ActiveAdmin
2
-
3
- module ViewHelpers
4
- module FilterFormHelper
5
-
6
- # Helper method to render a filter form
7
- def active_admin_filters_form_for(search, filters, options = {})
8
- options[:builder] ||= ActiveAdmin::FilterFormBuilder
9
- options[:url] ||= collection_path
10
- options[:html] ||= {}
11
- options[:html][:method] = :get
12
- options[:html][:class] ||= "filter_form"
13
- options[:as] = :q
14
- clear_link = link_to(I18n.t('active_admin.clear_filters'), "#", :class => "clear_filters_btn")
15
- form_for search, options do |f|
16
- filters.each do |filter_options|
17
- filter_options = filter_options.dup
18
- attribute = filter_options.delete(:attribute)
19
- f.filter attribute, filter_options
20
- end
21
-
22
- buttons = content_tag :div, :class => "buttons" do
23
- f.submit(I18n.t('active_admin.filter')) +
24
- clear_link +
25
- hidden_field_tag("order", params[:order]) +
26
- hidden_field_tag("scope", params[:scope])
27
- end
28
-
29
- f.form_buffers.last + buttons
30
- end
31
- end
32
-
33
- end
34
- end
35
-
36
- end