activeadmin 0.6.6 → 1.0.0.pre1

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 (512) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +11 -8
  3. data/.hound.yml +11 -0
  4. data/.travis.yml +36 -10
  5. data/.yardopts +2 -1
  6. data/CHANGELOG.md +118 -67
  7. data/CONTRIBUTING.md +96 -73
  8. data/Gemfile +35 -35
  9. data/Guardfile +1 -0
  10. data/LICENSE +1 -1
  11. data/README.md +98 -0
  12. data/Rakefile +12 -4
  13. data/activeadmin.gemspec +21 -24
  14. data/app/assets/javascripts/active_admin/application.js.coffee +32 -0
  15. data/app/assets/javascripts/active_admin/base.js.coffee +14 -0
  16. data/app/assets/javascripts/active_admin/ext/jquery-ui.js.coffee +6 -0
  17. data/app/assets/javascripts/active_admin/ext/jquery.js.coffee +7 -0
  18. data/app/assets/javascripts/active_admin/lib/batch_actions.js.coffee +39 -0
  19. data/app/assets/javascripts/active_admin/{components/jquery.aa.checkbox-toggler.js.coffee → lib/checkbox-toggler.js.coffee} +3 -4
  20. data/app/assets/javascripts/active_admin/lib/dropdown-menu.js.coffee +101 -0
  21. data/app/assets/javascripts/active_admin/lib/flash.js.coffee +19 -0
  22. data/app/assets/javascripts/active_admin/lib/has_many.js.coffee +79 -0
  23. data/app/assets/javascripts/active_admin/lib/modal_dialog.js.coffee +37 -0
  24. data/app/assets/javascripts/active_admin/lib/per_page.js.coffee +27 -0
  25. data/app/assets/javascripts/active_admin/lib/popover.js.coffee +68 -0
  26. data/app/assets/javascripts/active_admin/{components/jquery.aa.table-checkbox-toggler.js.coffee → lib/table-checkbox-toggler.js.coffee} +2 -3
  27. data/app/assets/stylesheets/active_admin/{_base.css.scss → _base.scss} +3 -0
  28. data/app/assets/stylesheets/active_admin/{_forms.css.scss → _forms.scss} +61 -17
  29. data/app/assets/stylesheets/active_admin/{_header.css.scss → _header.scss} +9 -5
  30. data/app/assets/stylesheets/active_admin/{_mixins.css.scss → _mixins.scss} +0 -0
  31. data/app/assets/stylesheets/active_admin/{_typography.css.scss → _typography.scss} +0 -0
  32. data/app/assets/stylesheets/active_admin/components/_batch_actions.scss +11 -0
  33. data/app/assets/stylesheets/active_admin/components/_blank_slates.scss +0 -1
  34. data/app/assets/stylesheets/active_admin/components/_buttons.scss +1 -1
  35. data/app/assets/stylesheets/active_admin/components/{_comments.css.scss → _comments.scss} +0 -0
  36. data/app/assets/stylesheets/active_admin/components/{_date_picker.css.scss → _date_picker.scss} +40 -14
  37. data/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +5 -4
  38. data/app/assets/stylesheets/active_admin/components/_flash_messages.scss +37 -0
  39. data/app/assets/stylesheets/active_admin/components/_modal_dialog.scss +34 -0
  40. data/app/assets/stylesheets/active_admin/components/_pagination.scss +10 -0
  41. data/app/assets/stylesheets/active_admin/components/{_popovers.css.scss → _popovers.scss} +2 -3
  42. data/app/assets/stylesheets/active_admin/components/_status_tags.scss +4 -0
  43. data/app/assets/stylesheets/active_admin/components/_table_tools.scss +67 -0
  44. data/app/assets/stylesheets/active_admin/components/{_tables.css.scss → _tables.scss} +4 -2
  45. data/app/assets/stylesheets/active_admin/components/_tabs.scss +65 -0
  46. data/app/assets/stylesheets/active_admin/components/_unsupported_browser.scss +16 -0
  47. data/app/assets/stylesheets/active_admin/mixins/{_all.css.scss → _all.scss} +0 -0
  48. data/app/assets/stylesheets/active_admin/mixins/{_buttons.css.scss → _buttons.scss} +0 -1
  49. data/app/assets/stylesheets/active_admin/mixins/_gradients.scss +28 -0
  50. data/app/assets/stylesheets/active_admin/mixins/{_icons.css.scss → _icons.scss} +1 -2
  51. data/app/assets/stylesheets/active_admin/mixins/{_reset.css.scss → _reset.scss} +0 -0
  52. data/app/assets/stylesheets/active_admin/mixins/_rounded.scss +22 -0
  53. data/app/assets/stylesheets/active_admin/mixins/{_sections.css.scss → _sections.scss} +8 -2
  54. data/app/assets/stylesheets/active_admin/mixins/{_shadows.css.scss → _shadows.scss} +0 -7
  55. data/app/assets/stylesheets/active_admin/mixins/_utilities.scss +0 -9
  56. data/app/assets/stylesheets/active_admin/mixins/{_variables.css.scss → _variables.scss} +10 -8
  57. data/app/assets/stylesheets/active_admin/{print.css.scss → print.scss} +4 -0
  58. data/app/assets/stylesheets/active_admin/structure/_main_structure.scss +5 -2
  59. data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +11 -9
  60. data/app/views/active_admin/devise/confirmations/new.html.erb +15 -0
  61. data/app/views/active_admin/devise/mailer/reset_password_instructions.html.erb +1 -1
  62. data/app/views/active_admin/devise/mailer/unlock_instructions.html.erb +1 -1
  63. data/app/views/active_admin/devise/passwords/edit.html.erb +9 -10
  64. data/app/views/active_admin/devise/passwords/new.html.erb +5 -4
  65. data/app/views/active_admin/devise/registrations/new.html.erb +22 -0
  66. data/app/views/active_admin/devise/sessions/new.html.erb +9 -7
  67. data/app/views/active_admin/devise/shared/_links.erb +1 -1
  68. data/app/views/active_admin/devise/unlocks/new.html.erb +5 -4
  69. data/app/views/layouts/active_admin_logged_out.html.erb +3 -5
  70. data/config/locales/ar.yml +120 -0
  71. data/config/locales/bg.yml +26 -6
  72. data/config/locales/bs.yml +122 -0
  73. data/config/locales/ca.yml +10 -1
  74. data/config/locales/cs.yml +7 -2
  75. data/config/locales/da.yml +7 -3
  76. data/config/locales/de-CH.yml +14 -31
  77. data/config/locales/de.yml +33 -33
  78. data/config/locales/el.yml +28 -2
  79. data/config/locales/en-GB.yml +12 -4
  80. data/config/locales/en.yml +29 -3
  81. data/config/locales/{es_MX.yml → es-MX.yml} +9 -24
  82. data/config/locales/es.yml +32 -25
  83. data/config/locales/fa.yml +120 -0
  84. data/config/locales/fi.yml +113 -0
  85. data/config/locales/fr.yml +21 -11
  86. data/config/locales/he.yml +7 -3
  87. data/config/locales/hr.yml +42 -11
  88. data/config/locales/hu.yml +10 -3
  89. data/config/locales/it.yml +31 -3
  90. data/config/locales/ja.yml +8 -3
  91. data/config/locales/ko.yml +7 -1
  92. data/config/locales/lt.yml +42 -11
  93. data/config/locales/lv.yml +7 -3
  94. data/config/locales/{no-NB.yml → nb.yml} +46 -15
  95. data/config/locales/nl.yml +36 -5
  96. data/config/locales/pl.yml +13 -8
  97. data/config/locales/pt-BR.yml +37 -5
  98. data/config/locales/pt-PT.yml +8 -4
  99. data/config/locales/ro.yml +7 -3
  100. data/config/locales/ru.yml +26 -5
  101. data/config/locales/sv-SE.yml +9 -5
  102. data/config/locales/tr.yml +10 -3
  103. data/config/locales/uk.yml +36 -12
  104. data/config/locales/vi.yml +7 -3
  105. data/config/locales/zh-CN.yml +26 -10
  106. data/config/locales/zh-TW.yml +19 -13
  107. data/docs/0-installation.md +65 -29
  108. data/docs/1-general-configuration.md +92 -81
  109. data/docs/10-custom-pages.md +68 -68
  110. data/docs/11-decorators.md +48 -59
  111. data/docs/12-arbre-components.md +80 -74
  112. data/docs/13-authorization-adapter.md +128 -107
  113. data/docs/14-gotchas.md +92 -0
  114. data/docs/2-resource-customization.md +293 -178
  115. data/docs/3-index-pages.md +160 -86
  116. data/docs/3-index-pages/custom-index.md +31 -0
  117. data/docs/3-index-pages/index-as-block.md +14 -9
  118. data/docs/3-index-pages/index-as-blog.md +41 -31
  119. data/docs/3-index-pages/index-as-grid.md +16 -8
  120. data/docs/3-index-pages/index-as-table.md +129 -52
  121. data/docs/4-csv-format.md +31 -24
  122. data/docs/5-forms.md +133 -56
  123. data/docs/6-show-pages.md +89 -27
  124. data/docs/7-sidebars.md +48 -27
  125. data/docs/8-custom-actions.md +98 -77
  126. data/docs/9-batch-actions.md +210 -146
  127. data/docs/README.md +24 -0
  128. data/features/action_item.feature +3 -3
  129. data/features/authorization_pundit.feature +37 -0
  130. data/features/breadcrumb.feature +48 -0
  131. data/features/comments/commenting.feature +56 -13
  132. data/features/development_reloading.feature +17 -30
  133. data/features/edit_page.feature +12 -1
  134. data/features/favicon.feature +3 -3
  135. data/features/i18n.feature +5 -4
  136. data/features/index/batch_actions.feature +41 -0
  137. data/features/index/filters.feature +67 -0
  138. data/features/index/format_as_csv.feature +90 -4
  139. data/features/index/formats.feature +27 -0
  140. data/features/index/index_as_blog.feature +4 -4
  141. data/features/index/index_as_table.feature +102 -6
  142. data/features/index/index_blank_slate.feature +22 -0
  143. data/features/index/index_scope_to.feature +16 -16
  144. data/features/index/page_title.feature +11 -0
  145. data/features/index/pagination.feature +1 -1
  146. data/features/index/switch_index_view.feature +14 -14
  147. data/features/new_page.feature +13 -2
  148. data/features/registering_pages.feature +1 -1
  149. data/features/renamed_resource.feature +32 -0
  150. data/features/show/page_title.feature +11 -0
  151. data/features/show/tabs.feature +27 -0
  152. data/features/sidebar_sections.feature +12 -0
  153. data/features/site_title.feature +2 -2
  154. data/features/specifying_actions.feature +3 -3
  155. data/features/step_definitions/action_item_steps.rb +2 -2
  156. data/features/step_definitions/action_link_steps.rb +14 -1
  157. data/features/step_definitions/additional_web_steps.rb +19 -20
  158. data/features/step_definitions/asset_steps.rb +3 -3
  159. data/features/step_definitions/attribute_steps.rb +8 -3
  160. data/features/step_definitions/batch_action_steps.rb +26 -9
  161. data/features/step_definitions/blog_steps.rb +3 -0
  162. data/features/step_definitions/breadcrumb_steps.rb +1 -1
  163. data/features/step_definitions/comment_steps.rb +1 -1
  164. data/features/step_definitions/configuration_steps.rb +9 -2
  165. data/features/step_definitions/dashboard_steps.rb +2 -2
  166. data/features/step_definitions/factory_steps.rb +9 -8
  167. data/features/step_definitions/filter_steps.rb +25 -3
  168. data/features/step_definitions/flash_steps.rb +3 -3
  169. data/features/step_definitions/format_steps.rb +18 -18
  170. data/features/step_definitions/index_scope_steps.rb +5 -5
  171. data/features/step_definitions/layout_steps.rb +1 -1
  172. data/features/step_definitions/member_link_steps.rb +2 -2
  173. data/features/step_definitions/menu_steps.rb +3 -3
  174. data/features/step_definitions/pagination_steps.rb +2 -3
  175. data/features/step_definitions/sidebar_steps.rb +8 -3
  176. data/features/step_definitions/site_title_steps.rb +6 -4
  177. data/features/step_definitions/symbol_leak_steps.rb +3 -0
  178. data/features/step_definitions/tab_steps.rb +5 -0
  179. data/features/step_definitions/table_steps.rb +4 -4
  180. data/features/step_definitions/user_steps.rb +10 -7
  181. data/features/step_definitions/web_steps.rb +14 -11
  182. data/features/sti_resource.feature +6 -2
  183. data/features/strong_parameters.feature +73 -0
  184. data/features/support/env.rb +34 -9
  185. data/features/support/paths.rb +14 -6
  186. data/features/support/selectors.rb +1 -1
  187. data/features/symbol_leak.feature +35 -0
  188. data/features/users/resetting_password.feature +5 -6
  189. data/lib/active_admin.rb +26 -25
  190. data/lib/active_admin/abstract_view_factory.rb +7 -17
  191. data/lib/active_admin/application.rb +72 -59
  192. data/lib/active_admin/asset_registration.rb +2 -2
  193. data/lib/active_admin/authorization_adapter.rb +2 -2
  194. data/lib/active_admin/base_controller.rb +2 -3
  195. data/lib/active_admin/base_controller/authorization.rb +13 -31
  196. data/lib/active_admin/batch_actions.rb +1 -1
  197. data/lib/active_admin/batch_actions/controller.rb +24 -8
  198. data/lib/active_admin/batch_actions/resource_extension.rb +47 -18
  199. data/lib/active_admin/batch_actions/views/batch_action_form.rb +7 -4
  200. data/lib/active_admin/batch_actions/views/batch_action_popover.rb +3 -3
  201. data/lib/active_admin/batch_actions/views/batch_action_selector.rb +8 -17
  202. data/lib/active_admin/batch_actions/views/selection_cells.rb +4 -4
  203. data/lib/active_admin/callbacks.rb +25 -24
  204. data/lib/active_admin/cancan_adapter.rb +7 -11
  205. data/lib/active_admin/csv_builder.rb +92 -15
  206. data/lib/active_admin/dependency.rb +93 -0
  207. data/lib/active_admin/deprecation.rb +6 -7
  208. data/lib/active_admin/devise.rb +28 -18
  209. data/lib/active_admin/dsl.rb +18 -11
  210. data/lib/active_admin/engine.rb +10 -8
  211. data/lib/active_admin/error.rb +62 -0
  212. data/lib/active_admin/filters/dsl.rb +2 -2
  213. data/lib/active_admin/filters/forms.rb +17 -27
  214. data/lib/active_admin/filters/formtastic_addons.rb +49 -15
  215. data/lib/active_admin/filters/resource_extension.rb +43 -34
  216. data/lib/active_admin/form_builder.rb +93 -154
  217. data/lib/active_admin/helpers/collection.rb +7 -13
  218. data/lib/active_admin/helpers/i18n.rb +7 -0
  219. data/lib/active_admin/helpers/optional_display.rb +5 -5
  220. data/lib/active_admin/helpers/routes/url_helpers.rb +15 -0
  221. data/lib/active_admin/helpers/scope_chain.rb +1 -1
  222. data/lib/active_admin/helpers/settings.rb +16 -9
  223. data/lib/active_admin/iconic.rb +17 -15
  224. data/lib/active_admin/iconic/icons.rb +136 -136
  225. data/lib/active_admin/inputs.rb +11 -7
  226. data/lib/active_admin/inputs/datepicker_input.rb +12 -3
  227. data/lib/active_admin/inputs/filters/base.rb +42 -0
  228. data/lib/active_admin/inputs/filters/base/search_method_select.rb +75 -0
  229. data/lib/active_admin/inputs/filters/boolean_input.rb +24 -0
  230. data/lib/active_admin/inputs/filters/check_boxes_input.rb +50 -0
  231. data/lib/active_admin/inputs/filters/date_range_input.rb +36 -0
  232. data/lib/active_admin/inputs/filters/numeric_input.rb +12 -0
  233. data/lib/active_admin/inputs/filters/select_input.rb +54 -0
  234. data/lib/active_admin/inputs/filters/string_input.rb +26 -0
  235. data/lib/active_admin/menu.rb +6 -4
  236. data/lib/active_admin/menu_collection.rb +1 -4
  237. data/lib/active_admin/namespace.rb +55 -29
  238. data/lib/active_admin/order_clause.rb +26 -0
  239. data/lib/active_admin/orm/active_record.rb +5 -0
  240. data/lib/active_admin/orm/active_record/comments.rb +81 -0
  241. data/lib/active_admin/orm/active_record/comments/comment.rb +45 -0
  242. data/lib/active_admin/{comments → orm/active_record/comments}/namespace_helper.rb +2 -2
  243. data/lib/active_admin/{comments → orm/active_record/comments}/resource_helper.rb +1 -1
  244. data/lib/active_admin/{comments → orm/active_record/comments}/show_page_helper.rb +0 -0
  245. data/lib/active_admin/orm/active_record/comments/views.rb +2 -0
  246. data/lib/active_admin/{comments → orm/active_record/comments}/views/active_admin_comments.rb +16 -14
  247. data/lib/active_admin/orm/mongoid.rb +1 -0
  248. data/lib/active_admin/orm/mongoid/.gitkeep +0 -0
  249. data/lib/active_admin/page.rb +7 -3
  250. data/lib/active_admin/page_dsl.rb +1 -1
  251. data/lib/active_admin/page_presenter.rb +2 -2
  252. data/lib/active_admin/pundit_adapter.rb +68 -0
  253. data/lib/active_admin/resource.rb +16 -17
  254. data/lib/active_admin/resource/action_items.rb +23 -18
  255. data/lib/active_admin/resource/belongs_to.rb +7 -3
  256. data/lib/active_admin/resource/controllers.rb +1 -0
  257. data/lib/active_admin/resource/includes.rb +12 -0
  258. data/lib/active_admin/resource/menu.rb +5 -5
  259. data/lib/active_admin/resource/naming.rb +27 -43
  260. data/lib/active_admin/resource/page_presenters.rb +1 -1
  261. data/lib/active_admin/resource/routes.rb +27 -11
  262. data/lib/active_admin/resource/scope_to.rb +7 -7
  263. data/lib/active_admin/resource/sidebars.rb +1 -0
  264. data/lib/active_admin/resource_controller.rb +6 -7
  265. data/lib/active_admin/resource_controller/data_access.rb +101 -93
  266. data/lib/active_admin/resource_controller/decorators.rb +91 -9
  267. data/lib/active_admin/resource_controller/streaming.rb +37 -0
  268. data/lib/active_admin/resource_dsl.rb +53 -10
  269. data/lib/active_admin/router.rb +7 -7
  270. data/lib/active_admin/scope.rb +6 -6
  271. data/lib/active_admin/sidebar_section.rb +10 -2
  272. data/lib/active_admin/version.rb +1 -1
  273. data/lib/active_admin/view_factory.rb +17 -17
  274. data/lib/active_admin/view_helpers.rb +0 -1
  275. data/lib/active_admin/view_helpers/auto_link_helper.rb +23 -12
  276. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +4 -3
  277. data/lib/active_admin/view_helpers/display_helper.rb +30 -15
  278. data/lib/active_admin/view_helpers/download_format_links_helper.rb +21 -25
  279. data/lib/active_admin/view_helpers/fields_for.rb +4 -4
  280. data/lib/active_admin/view_helpers/flash_helper.rb +4 -3
  281. data/lib/active_admin/view_helpers/form_helper.rb +5 -9
  282. data/lib/active_admin/view_helpers/method_or_proc_helper.rb +6 -6
  283. data/lib/active_admin/views/action_items.rb +2 -2
  284. data/lib/active_admin/views/components/action_list_popover.rb +1 -1
  285. data/lib/active_admin/views/components/active_admin_form.rb +123 -0
  286. data/lib/active_admin/views/components/attributes_table.rb +63 -21
  287. data/lib/active_admin/views/components/blank_slate.rb +1 -1
  288. data/lib/active_admin/views/components/columns.rb +13 -7
  289. data/lib/active_admin/views/components/dropdown_menu.rb +6 -6
  290. data/lib/active_admin/views/components/index_list.rb +7 -7
  291. data/lib/active_admin/views/components/paginated_collection.rb +38 -20
  292. data/lib/active_admin/views/components/panel.rb +8 -2
  293. data/lib/active_admin/views/components/popover.rb +1 -1
  294. data/lib/active_admin/views/components/scopes.rb +5 -4
  295. data/lib/active_admin/views/components/sidebar_section.rb +3 -2
  296. data/lib/active_admin/views/components/site_title.rb +2 -2
  297. data/lib/active_admin/views/components/status_tag.rb +34 -11
  298. data/lib/active_admin/views/components/table_for.rb +90 -45
  299. data/lib/active_admin/views/components/tabs.rb +28 -0
  300. data/lib/active_admin/views/components/unsupported_browser.rb +11 -0
  301. data/lib/active_admin/views/footer.rb +3 -3
  302. data/lib/active_admin/views/header.rb +3 -3
  303. data/lib/active_admin/views/index_as_block.rb +10 -10
  304. data/lib/active_admin/views/index_as_blog.rb +45 -39
  305. data/lib/active_admin/views/index_as_grid.rb +14 -10
  306. data/lib/active_admin/views/index_as_table.rb +242 -129
  307. data/lib/active_admin/views/pages/base.rb +22 -18
  308. data/lib/active_admin/views/pages/form.rb +21 -11
  309. data/lib/active_admin/views/pages/index.rb +40 -35
  310. data/lib/active_admin/views/pages/layout.rb +1 -1
  311. data/lib/active_admin/views/pages/show.rb +4 -4
  312. data/lib/active_admin/views/tabbed_navigation.rb +7 -3
  313. data/lib/active_admin/views/title_bar.rb +10 -8
  314. data/lib/generators/active_admin/assets/assets_generator.rb +3 -28
  315. data/lib/generators/active_admin/assets/templates/{3.1/active_admin.css.scss → active_admin.css.scss} +0 -0
  316. data/lib/generators/active_admin/assets/templates/active_admin.js.coffee +1 -0
  317. data/lib/generators/active_admin/devise/devise_generator.rb +24 -26
  318. data/lib/generators/active_admin/install/install_generator.rb +8 -9
  319. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +28 -26
  320. data/lib/generators/active_admin/install/templates/admin_user.rb.erb +12 -2
  321. data/lib/generators/active_admin/install/templates/dashboard.rb +4 -4
  322. data/lib/generators/active_admin/install/templates/migrations/create_active_admin_comments.rb +3 -3
  323. data/lib/generators/active_admin/page/USAGE +8 -0
  324. data/lib/generators/active_admin/page/page_generator.rb +12 -0
  325. data/lib/generators/active_admin/page/templates/page.rb +5 -0
  326. data/lib/generators/active_admin/resource/resource_generator.rb +3 -5
  327. data/lib/generators/active_admin/resource/templates/admin.rb +15 -0
  328. data/lib/ransack_ext.rb +12 -0
  329. data/script/local +2 -2
  330. data/script/travis_cache +107 -0
  331. data/spec/javascripts/coffeescripts/jquery.aa.flash.js.coffee +25 -0
  332. data/spec/javascripts/fixtures/flashes.html +2 -0
  333. data/spec/rails_helper.rb +154 -0
  334. data/spec/{integration → requests}/default_namespace_spec.rb +6 -6
  335. data/spec/{integration → requests}/javascript_spec.rb +5 -5
  336. data/spec/requests/memory_spec.rb +23 -0
  337. data/spec/requests/stylesheets_spec.rb +18 -0
  338. data/spec/spec_helper.rb +12 -173
  339. data/spec/support/detect_rails_version.rb +9 -17
  340. data/spec/support/rails_template.rb +64 -35
  341. data/spec/support/rails_template_with_data.rb +14 -14
  342. data/spec/support/templates/admin/stores.rb +5 -1
  343. data/spec/support/templates/policies/active_admin/comment_policy.rb +9 -0
  344. data/spec/support/templates/policies/active_admin/page_policy.rb +18 -0
  345. data/spec/support/templates/policies/admin_user_policy.rb +11 -0
  346. data/spec/support/templates/policies/application_policy.rb +45 -0
  347. data/spec/support/templates/policies/category_policy.rb +7 -0
  348. data/spec/support/templates/policies/post_policy.rb +15 -0
  349. data/spec/support/templates/policies/store_policy.rb +11 -0
  350. data/spec/support/templates/policies/user_policy.rb +11 -0
  351. data/spec/support/templates/post_decorator.rb +4 -46
  352. data/spec/unit/abstract_view_factory_spec.rb +16 -16
  353. data/spec/unit/action_builder_spec.rb +24 -18
  354. data/spec/unit/active_admin_spec.rb +2 -2
  355. data/spec/unit/application_spec.rb +33 -34
  356. data/spec/unit/asset_registration_spec.rb +25 -29
  357. data/spec/unit/authorization/authorization_adapter_spec.rb +10 -10
  358. data/spec/unit/authorization/controller_authorization_spec.rb +11 -11
  359. data/spec/unit/authorization/index_overriding_spec.rb +22 -0
  360. data/spec/unit/auto_link_spec.rb +43 -13
  361. data/spec/unit/batch_actions/resource_spec.rb +15 -14
  362. data/spec/unit/batch_actions/settings_spec.rb +18 -18
  363. data/spec/unit/belongs_to_spec.rb +28 -19
  364. data/spec/unit/cancan_adapter_spec.rb +8 -8
  365. data/spec/unit/comments_spec.rb +99 -39
  366. data/spec/unit/component_spec.rb +3 -3
  367. data/spec/unit/config_shared_examples.rb +10 -10
  368. data/spec/unit/controller_filters_spec.rb +23 -16
  369. data/spec/unit/csv_builder_spec.rb +165 -24
  370. data/spec/unit/dependency_spec.rb +135 -0
  371. data/spec/unit/devise_spec.rb +17 -37
  372. data/spec/unit/dsl_spec.rb +70 -9
  373. data/spec/unit/event_spec.rb +11 -11
  374. data/spec/unit/filters/filter_form_builder_spec.rb +207 -148
  375. data/spec/unit/filters/resource_spec.rb +60 -26
  376. data/spec/unit/form_builder_spec.rb +419 -145
  377. data/spec/unit/generators/install_spec.rb +23 -0
  378. data/spec/unit/helpers/collection_spec.rb +18 -18
  379. data/spec/unit/helpers/scope_chain_spec.rb +6 -6
  380. data/spec/unit/helpers/settings_spec.rb +4 -4
  381. data/spec/unit/i18n_spec.rb +12 -0
  382. data/spec/unit/menu_collection_spec.rb +14 -14
  383. data/spec/unit/menu_item_spec.rb +42 -42
  384. data/spec/unit/menu_spec.rb +20 -20
  385. data/spec/unit/namespace/authorization_spec.rb +8 -8
  386. data/spec/unit/namespace/register_page_spec.rb +11 -11
  387. data/spec/unit/namespace/register_resource_spec.rb +28 -30
  388. data/spec/unit/namespace_spec.rb +20 -20
  389. data/spec/unit/order_clause_spec.rb +81 -0
  390. data/spec/unit/page_controller_spec.rb +1 -1
  391. data/spec/unit/page_spec.rb +18 -12
  392. data/spec/unit/pretty_format_spec.rb +42 -14
  393. data/spec/unit/pundit_adapter_spec.rb +98 -0
  394. data/spec/unit/resource/action_items_spec.rb +15 -12
  395. data/spec/unit/resource/includes_spec.rb +21 -0
  396. data/spec/unit/resource/menu_spec.rb +1 -1
  397. data/spec/unit/resource/naming_spec.rb +35 -21
  398. data/spec/unit/resource/page_presenters_spec.rb +8 -8
  399. data/spec/unit/resource/pagination_spec.rb +6 -6
  400. data/spec/unit/resource/routes_spec.rb +10 -10
  401. data/spec/unit/resource/scopes_spec.rb +14 -7
  402. data/spec/unit/resource/sidebars_spec.rb +6 -6
  403. data/spec/unit/resource_collection_spec.rb +31 -38
  404. data/spec/unit/resource_controller/data_access_spec.rb +96 -30
  405. data/spec/unit/resource_controller/decorators_spec.rb +83 -0
  406. data/spec/unit/resource_controller/sidebars_spec.rb +7 -8
  407. data/spec/unit/resource_controller_spec.rb +73 -70
  408. data/spec/unit/resource_registration_spec.rb +12 -12
  409. data/spec/unit/resource_spec.rb +77 -42
  410. data/spec/unit/routing_spec.rb +39 -31
  411. data/spec/unit/scope_spec.rb +112 -30
  412. data/spec/unit/settings_spec.rb +51 -21
  413. data/spec/unit/view_factory_spec.rb +2 -3
  414. data/spec/unit/view_helpers/breadcrumbs_spec.rb +71 -60
  415. data/spec/unit/view_helpers/display_name_spec.rb +49 -21
  416. data/spec/unit/view_helpers/download_format_links_helper_spec.rb +5 -5
  417. data/spec/unit/view_helpers/fields_for_spec.rb +18 -18
  418. data/spec/unit/view_helpers/flash_helper_spec.rb +25 -0
  419. data/spec/unit/view_helpers/form_helper_spec.rb +10 -23
  420. data/spec/unit/view_helpers/method_or_proc_helper_spec.rb +64 -22
  421. data/spec/unit/views/components/action_list_popover_spec.rb +16 -6
  422. data/spec/unit/views/components/attributes_table_spec.rb +171 -30
  423. data/spec/unit/views/components/batch_action_popover_spec.rb +20 -6
  424. data/spec/unit/views/components/blank_slate_spec.rb +14 -4
  425. data/spec/unit/views/components/columns_spec.rb +52 -22
  426. data/spec/unit/views/components/index_list_spec.rb +11 -8
  427. data/spec/unit/views/components/index_table_for_spec.rb +46 -0
  428. data/spec/unit/views/components/paginated_collection_spec.rb +79 -90
  429. data/spec/unit/views/components/panel_spec.rb +32 -21
  430. data/spec/unit/views/components/popover_spec.rb +7 -7
  431. data/spec/unit/views/components/sidebar_section_spec.rb +18 -8
  432. data/spec/unit/views/components/site_title_spec.rb +26 -26
  433. data/spec/unit/views/components/status_tag_spec.rb +178 -38
  434. data/spec/unit/views/components/table_for_spec.rb +237 -35
  435. data/spec/unit/views/components/tabs_spec.rb +39 -0
  436. data/spec/unit/views/components/unsupported_browser_spec.rb +47 -0
  437. data/spec/unit/views/pages/form_spec.rb +17 -10
  438. data/spec/unit/views/pages/index_spec.rb +60 -0
  439. data/spec/unit/views/pages/layout_spec.rb +17 -21
  440. data/spec/unit/views/pages/show_spec.rb +18 -6
  441. data/spec/unit/views/tabbed_navigation_spec.rb +61 -52
  442. data/tasks/docs.rake +9 -11
  443. data/tasks/parallel_tests.rake +8 -2
  444. data/tasks/test.rake +13 -9
  445. data/tasks/yard.rake +7 -4
  446. metadata +219 -163
  447. data/.document +0 -5
  448. data/README.rdoc +0 -88
  449. data/app/assets/images/active_admin/admin_notes_icon.png +0 -0
  450. data/app/assets/images/active_admin/datepicker/datepicker-header-bg.png +0 -0
  451. data/app/assets/images/active_admin/datepicker/datepicker-next-link-icon.png +0 -0
  452. data/app/assets/images/active_admin/datepicker/datepicker-nipple.png +0 -0
  453. data/app/assets/images/active_admin/datepicker/datepicker-prev-link-icon.png +0 -0
  454. data/app/assets/images/active_admin/index_list_icons/block_icon.svg +0 -10
  455. data/app/assets/images/active_admin/index_list_icons/blog_icon.svg +0 -4
  456. data/app/assets/images/active_admin/index_list_icons/grid_icon.svg +0 -13
  457. data/app/assets/images/active_admin/index_list_icons/table_icon.svg +0 -3
  458. data/app/assets/images/active_admin/loading.gif +0 -0
  459. data/app/assets/javascripts/active_admin/application.js +0 -3
  460. data/app/assets/javascripts/active_admin/base.js +0 -5
  461. data/app/assets/javascripts/active_admin/components/jquery.aa.dropdown-menu.js.coffee +0 -105
  462. data/app/assets/javascripts/active_admin/components/jquery.aa.popover.js.coffee +0 -97
  463. data/app/assets/javascripts/active_admin/lib/namespace.js.coffee +0 -4
  464. data/app/assets/javascripts/active_admin/pages/application.js.coffee +0 -21
  465. data/app/assets/javascripts/active_admin/pages/batch_actions.js.coffee +0 -26
  466. data/app/assets/stylesheets/active_admin/components/_batch_actions.css.scss +0 -11
  467. data/app/assets/stylesheets/active_admin/components/_flash_messages.css.scss +0 -41
  468. data/app/assets/stylesheets/active_admin/components/_table_tools.css.scss +0 -95
  469. data/app/assets/stylesheets/active_admin/mixins/_gradients.css.scss +0 -38
  470. data/app/assets/stylesheets/active_admin/mixins/_rounded.css.scss +0 -43
  471. data/app/views/active_admin/dashboard/index.html.arb +0 -1
  472. data/app/views/active_admin/resource/index.csv.erb +0 -23
  473. data/docs/3-index-pages/create-an-index.md +0 -29
  474. data/lib/active_admin/comments.rb +0 -83
  475. data/lib/active_admin/comments/comment.rb +0 -42
  476. data/lib/active_admin/comments/views.rb +0 -2
  477. data/lib/active_admin/dependency_checker.rb +0 -46
  478. data/lib/active_admin/inputs/filter_base.rb +0 -33
  479. data/lib/active_admin/inputs/filter_base/search_method_select.rb +0 -73
  480. data/lib/active_admin/inputs/filter_boolean_input.rb +0 -36
  481. data/lib/active_admin/inputs/filter_check_boxes_input.rb +0 -40
  482. data/lib/active_admin/inputs/filter_date_range_input.rb +0 -34
  483. data/lib/active_admin/inputs/filter_numeric_input.rb +0 -10
  484. data/lib/active_admin/inputs/filter_select_input.rb +0 -49
  485. data/lib/active_admin/inputs/filter_string_input.rb +0 -24
  486. data/lib/active_admin/reloader.rb +0 -130
  487. data/lib/active_admin/resource_controller/actions.rb +0 -81
  488. data/lib/active_admin/sass/active_admin.scss +0 -3
  489. data/lib/active_admin/sass/css_loader.rb +0 -16
  490. data/lib/active_admin/sass/helpers.rb +0 -45
  491. data/lib/active_admin/view_helpers/assigns_with_indifferent_access_helper.rb +0 -7
  492. data/lib/active_admin/views/dashboard_section_renderer.rb +0 -19
  493. data/lib/active_admin/views/pages/dashboard.rb +0 -62
  494. data/lib/generators/active_admin/assets/templates/3.0/active_admin.js +0 -1
  495. data/lib/generators/active_admin/assets/templates/3.1/active_admin.js +0 -1
  496. data/lib/meta_search_ext.rb +0 -10
  497. data/spec/integration/memory_spec.rb +0 -29
  498. data/spec/integration/stylesheets_spec.rb +0 -41
  499. data/spec/javascripts/compiled/jquery.aa.checkbox-toggler-spec.js +0 -60
  500. data/spec/javascripts/compiled/jquery.aa.popover-spec.js +0 -106
  501. data/spec/javascripts/compiled/jquery.aa.table-checkbox-toggler-spec.js +0 -37
  502. data/spec/javascripts/helpers/vendor/jasmine-fixture-0.0.5.js +0 -108
  503. data/spec/javascripts/helpers/vendor/jasmine-jquery.js +0 -288
  504. data/spec/javascripts/helpers/vendor/sinon-1.2.0.js +0 -2915
  505. data/spec/javascripts/support/jquery-ui-1.8.16.custom.min.js +0 -34
  506. data/spec/javascripts/support/jquery.min.js +0 -4
  507. data/spec/spec_helper_without_rails.rb +0 -11
  508. data/spec/unit/generators/install_rails_3_1_spec.rb +0 -16
  509. data/spec/unit/rails_spec.rb +0 -43
  510. data/spec/unit/reloader_spec.rb +0 -124
  511. data/spec/unit/sass/helpers_spec.rb +0 -47
  512. data/tasks/js.rake +0 -32
@@ -3,7 +3,7 @@ require 'active_admin/component'
3
3
  module ActiveAdmin
4
4
  module BatchActions
5
5
 
6
- # Build an BatchActionForm
6
+ # Build a BatchActionForm
7
7
  class BatchActionForm < ActiveAdmin::Component
8
8
  builder_method :batch_action_form
9
9
 
@@ -12,9 +12,12 @@ module ActiveAdmin
12
12
  def build(options = {}, &block)
13
13
  options[:id] ||= "collection_selection"
14
14
 
15
- # Open a form
16
- text_node form_tag(active_admin_config.batch_action_path(params), :id => options[:id])
17
- input(:name => :batch_action, :id => :batch_action, :type => :hidden)
15
+ # Open a form with two hidden input fields:
16
+ # batch_action => name of the specific action called
17
+ # batch_action_inputs => a JSON string of any requested confirmation values
18
+ text_node form_tag active_admin_config.batch_action_path(params), id: options[:id]
19
+ input name: :batch_action, id: :batch_action, type: :hidden
20
+ input name: :batch_action_inputs, id: :batch_action_inputs, type: :hidden
18
21
 
19
22
  super(options)
20
23
  end
@@ -13,12 +13,12 @@ module ActiveAdmin
13
13
 
14
14
  def action(batch_action, options = {})
15
15
  options[:class] ||= []
16
- options[:class] += %w(batch_action)
16
+ options[:class] << "batch_action"
17
17
  options.merge! "data-action" => batch_action.sym,
18
18
  "data-confirm" => batch_action.confirm
19
19
 
20
- title = I18n.t("active_admin.batch_actions.labels.#{batch_action.sym}", :default => batch_action.title)
21
- label = I18n.t("active_admin.batch_actions.action_label", :title => title)
20
+ title = I18n.t("active_admin.batch_actions.labels.#{batch_action.sym}", default: batch_action.title)
21
+ label = I18n.t("active_admin.batch_actions.action_label", title: title)
22
22
 
23
23
  super(label, "#", options)
24
24
  end
@@ -24,20 +24,21 @@ module ActiveAdmin
24
24
 
25
25
  def build_drop_down
26
26
  dropdown_menu I18n.t("active_admin.batch_actions.button_label"),
27
- :id => "batch_actions_selector",
28
- :button => { :class => "disabled" } do
27
+ class: "batch_actions_selector dropdown_menu",
28
+ button: { class: "disabled" } do
29
29
  batch_actions_to_display.each do |batch_action|
30
30
  confirmation_text = render_or_call_method_or_proc_on(self, batch_action.confirm)
31
31
 
32
32
  options = {
33
- :class => "batch_action",
34
- "data-action" => batch_action.sym,
35
- "data-confirm" => confirmation_text
33
+ :class => "batch_action",
34
+ "data-action" => batch_action.sym,
35
+ "data-confirm" => confirmation_text,
36
+ "data-inputs" => render_in_context(self, batch_action.inputs).to_json
36
37
  }
37
38
 
38
39
  default_title = render_or_call_method_or_proc_on(self, batch_action.title)
39
- title = I18n.t("active_admin.batch_actions.labels.#{batch_action.sym}", :default => default_title)
40
- label = I18n.t("active_admin.batch_actions.action_label", :title => title)
40
+ title = I18n.t("active_admin.batch_actions.labels.#{batch_action.sym}", default: default_title)
41
+ label = I18n.t("active_admin.batch_actions.action_label", title: title)
41
42
 
42
43
  item label, "#", options
43
44
  end
@@ -51,16 +52,6 @@ module ActiveAdmin
51
52
  end
52
53
  end
53
54
 
54
- # def build_batch_action_button
55
- # a :class => 'table_tools_button dropdown_button disabled', :href => "#batch_actions_popover", :id => "batch_actions_button" do
56
- # text_node I18n.t("active_admin.batch_actions.button_label")
57
- # end
58
- # end
59
-
60
- # def build_batch_action_popover
61
- # end
62
-
63
55
  end
64
-
65
56
  end
66
57
  end
@@ -8,7 +8,7 @@ module ActiveAdmin
8
8
  builder_method :resource_selection_toggle_cell
9
9
 
10
10
  def build
11
- input( :type => "checkbox", :id => "collection_selection_toggle_all", :name => "collection_selection_toggle_all", :class => "toggle_all" )
11
+ input type: "checkbox", id: "collection_selection_toggle_all", name: "collection_selection_toggle_all", class: "toggle_all"
12
12
  end
13
13
  end
14
14
 
@@ -17,7 +17,7 @@ module ActiveAdmin
17
17
  builder_method :resource_selection_cell
18
18
 
19
19
  def build(resource)
20
- input :type => "checkbox", :id => "batch_action_item_#{resource.id}", :value => resource.id, :class => "collection_selection", :name => "collection_selection[]"
20
+ input type: "checkbox", id: "batch_action_item_#{resource.id}", value: resource.id, class: "collection_selection", name: "collection_selection[]"
21
21
  end
22
22
  end
23
23
 
@@ -26,9 +26,9 @@ module ActiveAdmin
26
26
  builder_method :resource_selection_toggle_panel
27
27
 
28
28
  def build
29
- super(:id => "collection_selection_toggle_panel")
29
+ super(id: "collection_selection_toggle_panel")
30
30
  resource_selection_toggle_cell
31
- div(:id => "collection_selection_toggle_explaination" ) { I18n.t('active_admin.batch_actions.selection_toggle_explanation', :default => "(Toggle Selection)") }
31
+ div(id: "collection_selection_toggle_explaination" ) { I18n.t('active_admin.batch_actions.selection_toggle_explanation', default: "(Toggle Selection)") }
32
32
  end
33
33
 
34
34
  end
@@ -2,7 +2,7 @@ module ActiveAdmin
2
2
  module Callbacks
3
3
  extend ActiveSupport::Concern
4
4
 
5
- protected
5
+ private
6
6
 
7
7
  # Simple callback system. Implements before and after callbacks for
8
8
  # use within the controllers.
@@ -11,7 +11,7 @@ module ActiveAdmin
11
11
  # passing in any arbitrary object into the callback method (which we
12
12
  # need to do)
13
13
 
14
- def call_callback_with(method, *args)
14
+ def run_callback(method, *args)
15
15
  case method
16
16
  when Symbol
17
17
  send(method, *args)
@@ -24,6 +24,8 @@ module ActiveAdmin
24
24
 
25
25
  module ClassMethods
26
26
 
27
+ private
28
+
27
29
  # Define a new callback.
28
30
  #
29
31
  # Example:
@@ -56,32 +58,31 @@ module ActiveAdmin
56
58
  def define_active_admin_callbacks(*names)
57
59
  names.each do |name|
58
60
  [:before, :after].each do |type|
61
+ callback_name = "#{type}_#{name}_callbacks"
62
+ callback_ivar = "@#{callback_name}"
59
63
 
60
- # Define a method to set the callback
61
- class_eval(<<-EOS, __FILE__, __LINE__ + 1)
62
- # def self.before_create_callbacks
63
- def self.#{type}_#{name}_callbacks
64
- @#{type}_#{name}_callbacks ||= []
65
- end
64
+ # def self.before_create_callbacks
65
+ singleton_class.send :define_method, callback_name do
66
+ instance_variable_get(callback_ivar) || instance_variable_set(callback_ivar, [])
67
+ end
68
+ singleton_class.send :private, callback_name
66
69
 
67
- # def self.before_create
68
- def self.#{type}_#{name}(method = nil, &block)
69
- #{type}_#{name}_callbacks << (method || block)
70
- end
71
- EOS
70
+ # def self.before_create
71
+ singleton_class.send :define_method, "#{type}_#{name}" do |method = nil, &block|
72
+ send(callback_name).push method || block
73
+ end
72
74
  end
73
75
 
74
- # Define a method to run the callbacks
75
- class_eval(<<-EOS, __FILE__, __LINE__ + 1)
76
- def run_#{name}_callbacks(*args)
77
- self.class.before_#{name}_callbacks.each{|callback| call_callback_with(callback, *args)}
78
- value = yield if block_given?
79
- self.class.after_#{name}_callbacks.each{|callback| call_callback_with(callback, *args)}
80
- return value
81
- end
82
- EOS
83
- end
84
- end
76
+ # def run_create_callbacks
77
+ define_method "run_#{name}_callbacks" do |*args, &block|
78
+ self.class.send("before_#{name}_callbacks").each{ |cbk| run_callback(cbk, *args) }
79
+ value = block.try :call
80
+ self.class.send("after_#{name}_callbacks").each { |cbk| run_callback(cbk, *args) }
81
+ return value
82
+ end
83
+ send :private, "run_#{name}_callbacks"
84
+ end
85
+ end
85
86
  end
86
87
  end
87
88
  end
@@ -1,3 +1,7 @@
1
+ unless ActiveAdmin::Dependency.cancan? || ActiveAdmin::Dependency.cancancan?
2
+ ActiveAdmin::Dependency.cancan!
3
+ end
4
+
1
5
  require 'cancan'
2
6
 
3
7
  # Add a setting to the application to configure the ability
@@ -21,18 +25,10 @@ module ActiveAdmin
21
25
 
22
26
  private
23
27
 
24
- # The setting allows the class to be stored as a string
25
- # to enable reloading in development.
26
28
  def initialize_cancan_ability
27
- ability_class_name = resource.namespace.cancan_ability_class
28
-
29
- if ability_class_name.is_a?(String)
30
- ability_class = ActiveSupport::Dependencies.constantize(ability_class_name)
31
- else
32
- ability_class = ability_class_name
33
- end
34
-
35
- ability_class.new(user)
29
+ klass = resource.namespace.cancan_ability_class
30
+ klass = klass.constantize if klass.is_a? String
31
+ klass.new user
36
32
  end
37
33
 
38
34
  end
@@ -6,8 +6,11 @@ module ActiveAdmin
6
6
  # csv_builder = CSVBuilder.new
7
7
  # csv_builder.column :id
8
8
  # csv_builder.column("Name") { |resource| resource.full_name }
9
+ # csv_builder.column(:name, humanize: false)
10
+ # csv_builder.column("name", humanize: false) { |resource| resource.full_name }
9
11
  #
10
- # csv_builder = CSVBuilder.new :col_sep => ";"
12
+ # csv_builder = CSVBuilder.new col_sep: ";"
13
+ # csv_builder = CSVBuilder.new humanize_name: false
11
14
  # csv_builder.column :id
12
15
  #
13
16
  #
@@ -17,33 +20,107 @@ module ActiveAdmin
17
20
  # The CSVBuilder's columns would be Id followed by this
18
21
  # resource's content columns
19
22
  def self.default_for_resource(resource)
20
- new.tap do |csv_builder|
21
- csv_builder.column(:id)
22
- resource.content_columns.each do |content_column|
23
- csv_builder.column(content_column.name.to_sym)
24
- end
23
+ new resource: resource do
24
+ column :id
25
+ resource.content_columns.each { |c| column c.name.to_sym }
25
26
  end
26
27
  end
27
28
 
28
- attr_reader :columns, :options
29
+ attr_reader :columns, :options, :view_context
30
+
31
+ COLUMN_TRANSITIVE_OPTIONS = [:humanize_name].freeze
29
32
 
30
33
  def initialize(options={}, &block)
31
- @columns, @options = [], options
32
- instance_eval &block if block_given?
34
+ @resource = options.delete(:resource)
35
+ @columns, @options, @block = [], options, block
33
36
  end
34
37
 
35
- # Add a column
36
- def column(name, &block)
37
- @columns << Column.new(name, block)
38
+ def column(name, options={}, &block)
39
+ @columns << Column.new(name, @resource, column_transitive_options.merge(options), block)
40
+ end
41
+
42
+ def build(controller, receiver)
43
+ @collection = controller.send(:find_collection, except: :pagination)
44
+ options = ActiveAdmin.application.csv_options.merge self.options
45
+ columns = exec_columns controller.view_context
46
+
47
+ if byte_order_mark = options.delete(:byte_order_mark)
48
+ receiver << byte_order_mark
49
+ end
50
+
51
+ if options.delete(:column_names) { true }
52
+ receiver << CSV.generate_line(columns.map{ |c| encode c.name, options }, options)
53
+ end
54
+
55
+ (1..paginated_collection.total_pages).each do |page_no|
56
+ paginated_collection(page_no).each do |resource|
57
+ resource = controller.send :apply_decorator, resource
58
+ receiver << CSV.generate_line(build_row(resource, columns, options), options)
59
+ end
60
+ end
61
+ end
62
+
63
+ def exec_columns(view_context = nil)
64
+ @view_context = view_context
65
+ @columns = [] # we want to re-render these every instance
66
+ instance_exec &@block if @block.present?
67
+ columns
68
+ end
69
+
70
+ def build_row(resource, columns, options)
71
+ columns.map do |column|
72
+ encode call_method_or_proc_on(resource, column.data), options
73
+ end
74
+ end
75
+
76
+ def encode(content, options)
77
+ if options[:encoding]
78
+ content.to_s.encode options[:encoding], options[:encoding_options]
79
+ else
80
+ content
81
+ end
82
+ end
83
+
84
+ def method_missing(method, *args, &block)
85
+ if @view_context.respond_to? method
86
+ @view_context.public_send method, *args, &block
87
+ else
88
+ super
89
+ end
38
90
  end
39
91
 
40
92
  class Column
41
- attr_reader :name, :data
93
+ attr_reader :name, :data, :options
94
+
95
+ DEFAULT_OPTIONS = { humanize_name: true }
42
96
 
43
- def initialize(name, block = nil)
44
- @name = name.is_a?(Symbol) ? name.to_s.titleize : name
97
+ def initialize(name, resource = nil, options = {}, block = nil)
98
+ @options = options.reverse_merge(DEFAULT_OPTIONS)
99
+ @name = humanize_name(name, resource, @options[:humanize_name])
45
100
  @data = block || name.to_sym
46
101
  end
102
+
103
+ def humanize_name(name, resource, humanize_name_option)
104
+ if humanize_name_option
105
+ name.is_a?(Symbol) && resource.present? ? resource.human_attribute_name(name) : name.to_s.humanize
106
+ else
107
+ name.to_s
108
+ end
109
+ end
110
+ end
111
+
112
+ private
113
+
114
+ def column_transitive_options
115
+ @column_transitive_options ||= @options.slice(*COLUMN_TRANSITIVE_OPTIONS)
116
+ end
117
+
118
+ def paginated_collection(page_no = 1)
119
+ @collection.public_send(Kaminari.config.page_method_name, page_no).per(batch_size)
120
+ end
121
+
122
+ def batch_size
123
+ 1000
47
124
  end
48
125
  end
49
126
  end
@@ -0,0 +1,93 @@
1
+ module ActiveAdmin
2
+ module Dependency
3
+ DEVISE = '~> 3.2'
4
+
5
+ # Provides a clean interface to check for gem dependencies at runtime.
6
+ #
7
+ # ActiveAdmin::Dependency.draper
8
+ # => #<ActiveAdmin::Dependency::Matcher for draper 1.2.1>
9
+ #
10
+ # ActiveAdmin::Dependency.draper?
11
+ # => true
12
+ #
13
+ # ActiveAdmin::Dependency.draper? '>= 1.5.0'
14
+ # => false
15
+ #
16
+ # ActiveAdmin::Dependency.draper? '= 1.2.1'
17
+ # => true
18
+ #
19
+ # ActiveAdmin::Dependency.draper? '~> 1.2.0'
20
+ # => true
21
+ #
22
+ # ActiveAdmin::Dependency.rails? '>= 4.1.0', '<= 4.1.1'
23
+ # => true
24
+ #
25
+ # ActiveAdmin::Dependency.rails! '2'
26
+ # -> ActiveAdmin::DependencyError: You provided rails 3.2.18 but we need: 2.
27
+ #
28
+ # ActiveAdmin::Dependency.devise!
29
+ # -> ActiveAdmin::DependencyError: To use devise you need to specify it in your Gemfile.
30
+ #
31
+ #
32
+ # All but the pessimistic operator (~>) can also be run using Ruby's comparison syntax.
33
+ #
34
+ # ActiveAdmin::Dependency.rails >= '3.2.18'
35
+ # => true
36
+ #
37
+ # Which is especially useful if you're looking up a gem with dashes in the name.
38
+ #
39
+ # ActiveAdmin::Dependency['jquery-ui-rails'] < 5
40
+ # => false
41
+ #
42
+ def self.method_missing(name, *args)
43
+ if name[-1] == '?'
44
+ Matcher.new(name[0..-2]).match? args
45
+ elsif name[-1] == '!'
46
+ Matcher.new(name[0..-2]).match! args
47
+ else
48
+ Matcher.new name.to_s
49
+ end
50
+ end
51
+
52
+ def self.[](name)
53
+ Matcher.new name.to_s
54
+ end
55
+
56
+ class Matcher
57
+ def initialize(name)
58
+ @name, @spec = name, Gem.loaded_specs[name]
59
+ end
60
+
61
+ def match?(*reqs)
62
+ !!@spec && Gem::Requirement.create(reqs).satisfied_by?(@spec.version)
63
+ end
64
+
65
+ def match!(*reqs)
66
+ unless @spec
67
+ raise DependencyError, "To use #{@name} you need to specify it in your Gemfile."
68
+ end
69
+
70
+ unless match? reqs
71
+ raise DependencyError, "You provided #{@spec.name} #{@spec.version} but we need: #{reqs.join ', '}."
72
+ end
73
+ end
74
+
75
+ include Comparable
76
+
77
+ def <=>(other)
78
+ if @spec
79
+ @spec.version <=> Gem::Version.create(other)
80
+ else
81
+ # you'd otherwise get an unhelpful error message:
82
+ # ArgumentError: comparison of ActiveAdmin::Dependency::Matcher with 2 failed
83
+ raise DependencyError, "To use #{@name} you need to specify it in your Gemfile."
84
+ end
85
+ end
86
+
87
+ def inspect
88
+ info = @spec ? "#{@spec.name} #{@spec.version}" : '(missing)'
89
+ "<ActiveAdmin::Dependency::Matcher for #{info}>"
90
+ end
91
+ end
92
+ end
93
+ end