activeadmin 1.4.3 → 2.9.0

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 (307) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +359 -25
  3. data/CONTRIBUTING.md +53 -74
  4. data/README.md +44 -11
  5. data/app/assets/javascripts/active_admin/base.js +517 -0
  6. data/app/assets/stylesheets/active_admin/_base.scss +29 -29
  7. data/app/assets/stylesheets/active_admin/_forms.scss +2 -14
  8. data/app/assets/stylesheets/active_admin/_header.scss +40 -8
  9. data/app/assets/stylesheets/active_admin/_mixins.scss +1 -1
  10. data/{vendor → app}/assets/stylesheets/active_admin/_normalize.scss +0 -0
  11. data/app/assets/stylesheets/active_admin/components/_comments.scss +2 -2
  12. data/app/assets/stylesheets/active_admin/components/_status_tags.scss +0 -5
  13. data/app/assets/stylesheets/active_admin/components/_tables.scss +1 -2
  14. data/app/assets/stylesheets/active_admin/components/_tabs.scss +1 -1
  15. data/app/assets/stylesheets/active_admin/mixins/_all.scss +8 -8
  16. data/app/assets/stylesheets/active_admin/mixins/_gradients.scss +1 -1
  17. data/app/assets/stylesheets/active_admin/mixins/_variables.scss +8 -0
  18. data/app/assets/stylesheets/active_admin/print.scss +2 -2
  19. data/app/assets/stylesheets/active_admin/structure/_main_structure.scss +1 -1
  20. data/app/javascript/active_admin/base.js +28 -0
  21. data/app/javascript/active_admin/ext/jquery-ui.js +7 -0
  22. data/app/javascript/active_admin/ext/jquery.js +9 -0
  23. data/app/javascript/active_admin/initializers/batch-actions.js +61 -0
  24. data/app/javascript/active_admin/initializers/checkbox-toggler.js +3 -0
  25. data/app/javascript/active_admin/initializers/datepicker.js +16 -0
  26. data/app/javascript/active_admin/initializers/dropdown-menu.js +9 -0
  27. data/app/javascript/active_admin/initializers/filters.js +10 -0
  28. data/app/javascript/active_admin/initializers/has-many.js +95 -0
  29. data/app/javascript/active_admin/initializers/per-page.js +13 -0
  30. data/app/javascript/active_admin/initializers/table-checkbox-toggler.js +3 -0
  31. data/app/javascript/active_admin/initializers/tabs.js +6 -0
  32. data/app/javascript/active_admin/lib/checkbox-toggler.js +49 -0
  33. data/app/javascript/active_admin/lib/dropdown-menu.js +116 -0
  34. data/app/javascript/active_admin/lib/filters.js +39 -0
  35. data/app/javascript/active_admin/lib/modal-dialog.js +63 -0
  36. data/app/javascript/active_admin/lib/per-page.js +38 -0
  37. data/app/javascript/active_admin/lib/table-checkbox-toggler.js +38 -0
  38. data/app/javascript/active_admin/lib/utils.js +40 -0
  39. data/app/views/active_admin/devise/confirmations/new.html.erb +1 -1
  40. data/app/views/active_admin/devise/mailer/reset_password_instructions.html.erb +1 -1
  41. data/app/views/active_admin/devise/mailer/unlock_instructions.html.erb +2 -2
  42. data/app/views/active_admin/devise/passwords/edit.html.erb +1 -1
  43. data/app/views/active_admin/devise/passwords/new.html.erb +1 -1
  44. data/app/views/active_admin/devise/registrations/new.html.erb +1 -2
  45. data/app/views/active_admin/devise/shared/_error_messages.html.erb +15 -0
  46. data/app/views/active_admin/devise/unlocks/new.html.erb +1 -1
  47. data/app/views/kaminari/active_admin_countless/_first_page.html.erb +11 -0
  48. data/app/views/kaminari/active_admin_countless/_gap.html.erb +8 -0
  49. data/app/views/kaminari/active_admin_countless/_next_page.html.erb +11 -0
  50. data/app/views/kaminari/active_admin_countless/_page.html.erb +12 -0
  51. data/app/views/kaminari/active_admin_countless/_paginator.html.erb +24 -0
  52. data/app/views/kaminari/active_admin_countless/_prev_page.html.erb +11 -0
  53. data/app/views/layouts/active_admin_logged_out.html.erb +16 -6
  54. data/config/locales/ar.yml +9 -8
  55. data/config/locales/az.yml +138 -0
  56. data/config/locales/bg.yml +1 -1
  57. data/config/locales/bs.yml +1 -0
  58. data/config/locales/ca.yml +1 -1
  59. data/config/locales/cs.yml +1 -0
  60. data/config/locales/da.yml +1 -0
  61. data/config/locales/de-CH.yml +1 -0
  62. data/config/locales/de.yml +19 -0
  63. data/config/locales/el.yml +1 -0
  64. data/config/locales/en-CA.yml +4 -3
  65. data/config/locales/en-GB.yml +4 -3
  66. data/config/locales/en.yml +4 -3
  67. data/config/locales/eo.yml +1 -0
  68. data/config/locales/es-MX.yml +3 -1
  69. data/config/locales/es.yml +6 -5
  70. data/config/locales/fa.yml +1 -0
  71. data/config/locales/fi.yml +1 -0
  72. data/config/locales/fr.yml +6 -5
  73. data/config/locales/he.yml +1 -1
  74. data/config/locales/hr.yml +1 -0
  75. data/config/locales/hu.yml +5 -0
  76. data/config/locales/id.yml +1 -0
  77. data/config/locales/it.yml +19 -0
  78. data/config/locales/ja.yml +4 -3
  79. data/config/locales/ko.yml +1 -0
  80. data/config/locales/lt.yml +3 -2
  81. data/config/locales/lv.yml +3 -2
  82. data/config/locales/mk.yml +134 -0
  83. data/config/locales/nb.yml +1 -0
  84. data/config/locales/nl.yml +1 -0
  85. data/config/locales/pl.yml +1 -0
  86. data/config/locales/pt-BR.yml +1 -0
  87. data/config/locales/pt-PT.yml +1 -0
  88. data/config/locales/ro.yml +1 -0
  89. data/config/locales/ru.yml +1 -0
  90. data/config/locales/sk.yml +60 -0
  91. data/config/locales/sv-SE.yml +1 -0
  92. data/config/locales/tr.yml +1 -0
  93. data/config/locales/uk.yml +3 -0
  94. data/config/locales/vi.yml +7 -5
  95. data/config/locales/zh-CN.yml +1 -0
  96. data/config/locales/zh-TW.yml +1 -0
  97. data/docs/0-installation.md +28 -4
  98. data/docs/1-general-configuration.md +20 -0
  99. data/docs/11-decorators.md +16 -5
  100. data/docs/12-arbre-components.md +13 -0
  101. data/docs/13-authorization-adapter.md +6 -6
  102. data/docs/2-resource-customization.md +11 -2
  103. data/docs/3-index-pages.md +1 -1
  104. data/docs/3-index-pages/index-as-table.md +7 -0
  105. data/docs/5-forms.md +6 -1
  106. data/docs/6-show-pages.md +12 -0
  107. data/docs/9-batch-actions.md +2 -2
  108. data/docs/CNAME +1 -1
  109. data/docs/Gemfile +2 -3
  110. data/docs/Gemfile.lock +126 -116
  111. data/docs/_config.yml +2 -0
  112. data/docs/_includes/top-menu.html +2 -2
  113. data/docs/documentation.md +1 -1
  114. data/docs/index.html +110 -9
  115. data/docs/stylesheets/main.css +29 -0
  116. data/lib/active_admin.rb +67 -63
  117. data/lib/active_admin/application.rb +20 -27
  118. data/lib/active_admin/application_settings.rb +6 -3
  119. data/lib/active_admin/asset_registration.rb +0 -8
  120. data/lib/active_admin/authorization_adapter.rb +3 -3
  121. data/lib/active_admin/base_controller.rb +10 -10
  122. data/lib/active_admin/base_controller/authorization.rb +15 -15
  123. data/lib/active_admin/batch_actions/controller.rb +4 -4
  124. data/lib/active_admin/batch_actions/resource_extension.rb +15 -10
  125. data/lib/active_admin/batch_actions/views/batch_action_form.rb +3 -3
  126. data/lib/active_admin/batch_actions/views/batch_action_selector.rb +6 -6
  127. data/lib/active_admin/batch_actions/views/selection_cells.rb +3 -3
  128. data/lib/active_admin/callbacks.rb +1 -1
  129. data/lib/active_admin/cancan_adapter.rb +1 -1
  130. data/lib/active_admin/collection_decorator.rb +31 -0
  131. data/lib/active_admin/controller_action.rb +2 -1
  132. data/lib/active_admin/csv_builder.rb +14 -9
  133. data/lib/active_admin/dependency.rb +13 -85
  134. data/lib/active_admin/devise.rb +5 -5
  135. data/lib/active_admin/dsl.rb +2 -9
  136. data/lib/active_admin/dynamic_settings_node.rb +2 -2
  137. data/lib/active_admin/engine.rb +10 -8
  138. data/lib/active_admin/error.rb +4 -4
  139. data/lib/active_admin/filters.rb +7 -7
  140. data/lib/active_admin/filters/active.rb +1 -1
  141. data/lib/active_admin/filters/active_filter.rb +10 -10
  142. data/lib/active_admin/filters/active_sidebar.rb +9 -5
  143. data/lib/active_admin/filters/forms.rb +7 -7
  144. data/lib/active_admin/filters/formtastic_addons.rb +2 -7
  145. data/lib/active_admin/filters/resource_extension.rb +28 -4
  146. data/lib/active_admin/form_builder.rb +26 -22
  147. data/lib/active_admin/generators/boilerplate.rb +12 -4
  148. data/lib/active_admin/helpers/optional_display.rb +2 -2
  149. data/lib/active_admin/helpers/scope_chain.rb +1 -0
  150. data/lib/active_admin/inputs/datepicker_input.rb +2 -2
  151. data/lib/active_admin/inputs/filters/base.rb +1 -1
  152. data/lib/active_admin/inputs/filters/base/search_method_select.rb +6 -6
  153. data/lib/active_admin/inputs/filters/boolean_input.rb +1 -1
  154. data/lib/active_admin/inputs/filters/check_boxes_input.rb +1 -1
  155. data/lib/active_admin/inputs/filters/date_range_input.rb +15 -12
  156. data/lib/active_admin/inputs/filters/select_input.rb +2 -2
  157. data/lib/active_admin/localizers.rb +1 -1
  158. data/lib/active_admin/localizers/resource_localizer.rb +3 -3
  159. data/lib/active_admin/menu.rb +6 -3
  160. data/lib/active_admin/menu_item.rb +7 -7
  161. data/lib/active_admin/namespace.rb +12 -12
  162. data/lib/active_admin/namespace_settings.rb +27 -8
  163. data/lib/active_admin/order_clause.rb +2 -2
  164. data/lib/active_admin/orm/active_record.rb +1 -1
  165. data/lib/active_admin/orm/active_record/comments.rb +23 -23
  166. data/lib/active_admin/orm/active_record/comments/comment.rb +4 -4
  167. data/lib/active_admin/orm/active_record/comments/views.rb +2 -2
  168. data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +29 -24
  169. data/lib/active_admin/page.rb +1 -1
  170. data/lib/active_admin/page_dsl.rb +1 -1
  171. data/lib/active_admin/page_presenter.rb +2 -1
  172. data/lib/active_admin/pundit_adapter.rb +22 -9
  173. data/lib/active_admin/resource.rb +34 -20
  174. data/lib/active_admin/resource/action_items.rb +5 -5
  175. data/lib/active_admin/resource/attributes.rb +8 -5
  176. data/lib/active_admin/resource/belongs_to.rb +8 -3
  177. data/lib/active_admin/resource/controllers.rb +1 -1
  178. data/lib/active_admin/resource/menu.rb +5 -5
  179. data/lib/active_admin/resource/model.rb +15 -0
  180. data/lib/active_admin/resource/naming.rb +5 -5
  181. data/lib/active_admin/resource/routes.rb +25 -14
  182. data/lib/active_admin/resource/scope_to.rb +7 -7
  183. data/lib/active_admin/resource/scopes.rb +3 -3
  184. data/lib/active_admin/resource/sidebars.rb +2 -2
  185. data/lib/active_admin/resource_collection.rb +2 -2
  186. data/lib/active_admin/resource_controller.rb +13 -10
  187. data/lib/active_admin/resource_controller/action_builder.rb +10 -0
  188. data/lib/active_admin/resource_controller/data_access.rb +1 -1
  189. data/lib/active_admin/resource_controller/decorators.rb +7 -29
  190. data/lib/active_admin/resource_controller/polymorphic_routes.rb +37 -0
  191. data/lib/active_admin/resource_controller/resource_class_methods.rb +2 -0
  192. data/lib/active_admin/resource_controller/streaming.rb +7 -6
  193. data/lib/active_admin/resource_dsl.rb +11 -9
  194. data/lib/active_admin/router.rb +3 -2
  195. data/lib/active_admin/scope.rb +15 -11
  196. data/lib/active_admin/settings_node.rb +1 -1
  197. data/lib/active_admin/sidebar_section.rb +3 -1
  198. data/lib/active_admin/version.rb +1 -1
  199. data/lib/active_admin/view_factory.rb +17 -17
  200. data/lib/active_admin/view_helpers.rb +1 -1
  201. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +5 -5
  202. data/lib/active_admin/view_helpers/display_helper.rb +16 -7
  203. data/lib/active_admin/view_helpers/download_format_links_helper.rb +2 -1
  204. data/lib/active_admin/view_helpers/fields_for.rb +2 -2
  205. data/lib/active_admin/view_helpers/method_or_proc_helper.rb +2 -0
  206. data/lib/active_admin/views.rb +1 -1
  207. data/lib/active_admin/views/components/active_admin_form.rb +12 -6
  208. data/lib/active_admin/views/components/attributes_table.rb +8 -8
  209. data/lib/active_admin/views/components/blank_slate.rb +1 -1
  210. data/lib/active_admin/views/components/dropdown_menu.rb +8 -8
  211. data/lib/active_admin/views/components/index_list.rb +3 -3
  212. data/lib/active_admin/views/components/menu.rb +1 -1
  213. data/lib/active_admin/views/components/menu_item.rb +4 -4
  214. data/lib/active_admin/views/components/paginated_collection.rb +21 -20
  215. data/lib/active_admin/views/components/panel.rb +1 -1
  216. data/lib/active_admin/views/components/scopes.rb +7 -5
  217. data/lib/active_admin/views/components/sidebar_section.rb +0 -3
  218. data/lib/active_admin/views/components/site_title.rb +1 -1
  219. data/lib/active_admin/views/components/status_tag.rb +13 -26
  220. data/lib/active_admin/views/components/table_for.rb +20 -19
  221. data/lib/active_admin/views/components/tabs.rb +13 -4
  222. data/lib/active_admin/views/footer.rb +3 -2
  223. data/lib/active_admin/views/header.rb +2 -2
  224. data/lib/active_admin/views/index_as_blog.rb +1 -1
  225. data/lib/active_admin/views/index_as_grid.rb +1 -1
  226. data/lib/active_admin/views/index_as_table.rb +27 -19
  227. data/lib/active_admin/views/pages/base.rb +18 -11
  228. data/lib/active_admin/views/pages/index.rb +15 -13
  229. data/lib/active_admin/views/tabbed_navigation.rb +2 -2
  230. data/lib/active_admin/views/title_bar.rb +1 -1
  231. data/lib/activeadmin.rb +1 -1
  232. data/lib/generators/active_admin/assets/assets_generator.rb +2 -2
  233. data/lib/generators/active_admin/assets/templates/active_admin.js +1 -0
  234. data/lib/generators/active_admin/assets/templates/active_admin.scss +2 -2
  235. data/lib/generators/active_admin/devise/devise_generator.rb +5 -5
  236. data/lib/generators/active_admin/install/install_generator.rb +18 -8
  237. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +45 -3
  238. data/lib/generators/active_admin/install/templates/dashboard.rb +2 -3
  239. data/lib/generators/active_admin/install/templates/migrations/create_active_admin_comments.rb.erb +1 -15
  240. data/lib/generators/active_admin/page/page_generator.rb +1 -1
  241. data/lib/generators/active_admin/resource/resource_generator.rb +3 -3
  242. data/lib/generators/active_admin/resource/templates/admin.rb.erb +40 -37
  243. data/lib/generators/active_admin/webpacker/plugins/jquery.js +7 -0
  244. data/lib/generators/active_admin/webpacker/templates/active_admin.js +5 -0
  245. data/lib/generators/active_admin/webpacker/templates/active_admin.scss +17 -0
  246. data/lib/generators/active_admin/webpacker/templates/print.scss +2 -0
  247. data/lib/generators/active_admin/webpacker/webpacker_generator.rb +26 -0
  248. data/lib/ransack_ext.rb +9 -9
  249. data/vendor/assets/javascripts/jquery-ui/form-reset-mixin.js +80 -0
  250. data/vendor/assets/javascripts/jquery-ui/form.js +22 -0
  251. data/vendor/assets/javascripts/jquery-ui/labels.js +65 -0
  252. data/vendor/assets/javascripts/jquery-ui/widgets/checkboxradio.js +274 -283
  253. metadata +108 -127
  254. data/.circleci/config.yml +0 -572
  255. data/.github/ISSUE_TEMPLATE.md +0 -20
  256. data/.gitignore +0 -16
  257. data/.mdlrc +0 -1
  258. data/.rspec +0 -1
  259. data/.rspec_parallel +0 -2
  260. data/.rubocop.yml +0 -99
  261. data/.simplecov +0 -9
  262. data/.yardopts +0 -7
  263. data/Gemfile +0 -30
  264. data/Gemfile.common +0 -26
  265. data/Gemfile.lock +0 -433
  266. data/Rakefile +0 -24
  267. data/activeadmin.gemspec +0 -32
  268. data/app/assets/images/active_admin/nested_menu_arrow.gif +0 -0
  269. data/app/assets/images/active_admin/nested_menu_arrow_dark.gif +0 -0
  270. data/app/assets/images/active_admin/orderable.png +0 -0
  271. data/app/assets/javascripts/active_admin/base.js.coffee +0 -13
  272. data/app/assets/javascripts/active_admin/ext/jquery-ui.js.coffee +0 -6
  273. data/app/assets/javascripts/active_admin/ext/jquery.js.coffee +0 -7
  274. data/app/assets/javascripts/active_admin/initializers/batch_actions.js.coffee +0 -11
  275. data/app/assets/javascripts/active_admin/initializers/datepicker.js.coffee +0 -14
  276. data/app/assets/javascripts/active_admin/initializers/filters.js.coffee +0 -26
  277. data/app/assets/javascripts/active_admin/initializers/tabs.js.coffee +0 -7
  278. data/app/assets/javascripts/active_admin/lib/batch_actions.js.coffee +0 -42
  279. data/app/assets/javascripts/active_admin/lib/checkbox-toggler.js.coffee +0 -46
  280. data/app/assets/javascripts/active_admin/lib/dropdown-menu.js.coffee +0 -104
  281. data/app/assets/javascripts/active_admin/lib/flash.js.coffee +0 -19
  282. data/app/assets/javascripts/active_admin/lib/has_many.js.coffee +0 -79
  283. data/app/assets/javascripts/active_admin/lib/modal_dialog.js.coffee +0 -45
  284. data/app/assets/javascripts/active_admin/lib/per_page.js.coffee +0 -46
  285. data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.js.coffee +0 -22
  286. data/bin/install_chromedriver.sh +0 -17
  287. data/config/i18n-tasks.yml +0 -26
  288. data/config/mdl_style.rb +0 -11
  289. data/cucumber.yml +0 -7
  290. data/gemfiles/rails_42.gemfile +0 -10
  291. data/gemfiles/rails_42.gemfile.lock +0 -339
  292. data/gemfiles/rails_50.gemfile +0 -10
  293. data/gemfiles/rails_50.gemfile.lock +0 -353
  294. data/gemfiles/rails_51.gemfile +0 -10
  295. data/gemfiles/rails_51.gemfile.lock +0 -353
  296. data/lib/active_admin/event.rb +0 -24
  297. data/lib/active_admin/helpers/output_safety_helper.rb +0 -35
  298. data/lib/active_admin/reloader.rb +0 -25
  299. data/lib/bug_report_templates/active_admin_master.rb +0 -111
  300. data/lib/generators/active_admin/assets/templates/active_admin.js.coffee +0 -1
  301. data/tasks/application_generator.rb +0 -50
  302. data/tasks/docs.rake +0 -64
  303. data/tasks/gemfiles.rake +0 -8
  304. data/tasks/lint.rake +0 -110
  305. data/tasks/local.rake +0 -27
  306. data/tasks/release.rake +0 -6
  307. data/tasks/test.rake +0 -42
@@ -1,4 +1,4 @@
1
- require 'active_admin/settings_node'
1
+ require "active_admin/settings_node"
2
2
 
3
3
  module ActiveAdmin
4
4
  class ApplicationSettings < SettingsNode
@@ -15,7 +15,7 @@ module ActiveAdmin
15
15
  # Load paths for admin configurations. Add folders to this load path
16
16
  # to load up other resources for administration. External gems can
17
17
  # include their paths in this load path to provide active_admin UIs
18
- register :load_paths, [File.expand_path('app/admin', Rails.root)]
18
+ register :load_paths, [File.expand_path("app/admin", Rails.root)]
19
19
 
20
20
  # Set default localize format for Date/Time values
21
21
  register :localize_format, :long
@@ -34,6 +34,9 @@ module ActiveAdmin
34
34
  :to_s ]
35
35
 
36
36
  # To make debugging easier, by default don't stream in development
37
- register :disable_streaming_in, ['development']
37
+ register :disable_streaming_in, ["development"]
38
+
39
+ # Remove sensitive attributes from being displayed, made editable, or exported by default
40
+ register :filter_attributes, [:encrypted_password, :password, :password_confirmation]
38
41
  end
39
42
  end
@@ -2,10 +2,6 @@ module ActiveAdmin
2
2
  module AssetRegistration
3
3
 
4
4
  def register_stylesheet(path, options = {})
5
- Deprecation.warn <<-MSG.strip_heredoc
6
- The `register_stylesheet` config is deprecated and will be removed
7
- in v2. Import your "#{path}" stylesheet in the active_admin.scss.
8
- MSG
9
5
  stylesheets[path] = options
10
6
  end
11
7
 
@@ -18,10 +14,6 @@ module ActiveAdmin
18
14
  end
19
15
 
20
16
  def register_javascript(name)
21
- Deprecation.warn <<-MSG.strip_heredoc
22
- The `register_javascript` config is deprecated and will be removed
23
- in v2. Import your "#{name}" javascript in the active_admin.js.
24
- MSG
25
17
  javascripts.add name
26
18
  end
27
19
 
@@ -2,9 +2,9 @@ module ActiveAdmin
2
2
 
3
3
  # Default Authorization permissions for Active Admin
4
4
  module Authorization
5
- READ = :read
6
- CREATE = :create
7
- UPDATE = :update
5
+ READ = :read
6
+ CREATE = :create
7
+ UPDATE = :update
8
8
  DESTROY = :destroy
9
9
  end
10
10
 
@@ -1,5 +1,5 @@
1
- require 'active_admin/base_controller/authorization'
2
- require 'active_admin/base_controller/menu'
1
+ require "active_admin/base_controller/authorization"
2
+ require "active_admin/base_controller/menu"
3
3
 
4
4
  module ActiveAdmin
5
5
  # BaseController for ActiveAdmin.
@@ -22,6 +22,11 @@ module ActiveAdmin
22
22
  attr_accessor :active_admin_config
23
23
  end
24
24
 
25
+ include Authorization
26
+ include Menu
27
+
28
+ private
29
+
25
30
  # By default Rails will render un-implemented actions when the view exists. Because Active
26
31
  # Admin allows you to not render any of the actions by using the #actions method, we need
27
32
  # to check if they are implemented.
@@ -29,11 +34,6 @@ module ActiveAdmin
29
34
  raise AbstractController::ActionNotFound unless action_methods.include?(params[:action])
30
35
  end
31
36
 
32
- include Authorization
33
- include Menu
34
-
35
- private
36
-
37
37
  # Calls the authentication method as defined in ActiveAdmin.authentication_method
38
38
  def authenticate_active_admin_user
39
39
  send(active_admin_namespace.authentication_method) if active_admin_namespace.authentication_method
@@ -69,12 +69,12 @@ module ActiveAdmin
69
69
  # 2. If we're rendering a custom action, we'll use the active_admin layout so
70
70
  # that users can render any template inside Active Admin.
71
71
  def determine_active_admin_layout
72
- ACTIVE_ADMIN_ACTIONS.include?(params[:action].to_sym) ? false : 'active_admin'
72
+ ACTIVE_ADMIN_ACTIONS.include?(params[:action].to_sym) ? false : "active_admin"
73
73
  end
74
74
 
75
75
  def active_admin_root
76
- controller, action = active_admin_namespace.root_to.split '#'
77
- {controller: controller, action: action}
76
+ controller, action = active_admin_namespace.root_to.split "#"
77
+ { controller: controller, action: action }
78
78
  end
79
79
 
80
80
  end
@@ -4,12 +4,12 @@ module ActiveAdmin
4
4
  extend ActiveSupport::Concern
5
5
 
6
6
  ACTIONS_DICTIONARY = {
7
- index: ActiveAdmin::Authorization::READ,
8
- show: ActiveAdmin::Authorization::READ,
9
- new: ActiveAdmin::Authorization::CREATE,
10
- create: ActiveAdmin::Authorization::CREATE,
11
- edit: ActiveAdmin::Authorization::UPDATE,
12
- update: ActiveAdmin::Authorization::UPDATE,
7
+ index: ActiveAdmin::Authorization::READ,
8
+ show: ActiveAdmin::Authorization::READ,
9
+ new: ActiveAdmin::Authorization::CREATE,
10
+ create: ActiveAdmin::Authorization::CREATE,
11
+ edit: ActiveAdmin::Authorization::UPDATE,
12
+ update: ActiveAdmin::Authorization::UPDATE,
13
13
  destroy: ActiveAdmin::Authorization::DESTROY
14
14
  }
15
15
 
@@ -18,6 +18,7 @@ module ActiveAdmin
18
18
 
19
19
  helper_method :authorized?
20
20
  helper_method :authorize!
21
+ helper_method :active_admin_authorization
21
22
  end
22
23
 
23
24
  protected
@@ -51,9 +52,10 @@ module ActiveAdmin
51
52
  # an ActiveAdmin::AccessDenied.
52
53
  def authorize!(action, subject = nil)
53
54
  unless authorized? action, subject
54
- raise ActiveAdmin::AccessDenied.new(current_active_admin_user,
55
- action,
56
- subject)
55
+ raise ActiveAdmin::AccessDenied.new(
56
+ current_active_admin_user,
57
+ action,
58
+ subject)
57
59
  end
58
60
  end
59
61
 
@@ -111,16 +113,14 @@ module ActiveAdmin
111
113
  redirect_backwards_or_to_root
112
114
  end
113
115
 
114
- body = ActiveAdmin::Dependency.rails.render_key
115
-
116
- format.csv { render body => error, status: :unauthorized }
117
- format.json { render json: { error: error }, status: :unauthorized }
118
- format.xml { render xml: "<error>#{error}</error>", status: :unauthorized }
116
+ format.csv { render body: error, status: :unauthorized }
117
+ format.json { render json: { error: error }, status: :unauthorized }
118
+ format.xml { render xml: "<error>#{error}</error>", status: :unauthorized }
119
119
  end
120
120
  end
121
121
 
122
122
  def redirect_backwards_or_to_root
123
- ActiveAdmin::Dependency.rails.redirect_back self, active_admin_root
123
+ redirect_back fallback_location: active_admin_root
124
124
  end
125
125
 
126
126
  end
@@ -5,10 +5,10 @@ module ActiveAdmin
5
5
  # Controller action that is called when submitting the batch action form
6
6
  def batch_action
7
7
  if action_present?
8
- selection = params[:collection_selection] || []
9
- inputs = JSON.parse params[:batch_action_inputs] || '{}'
8
+ selection = params[:collection_selection] || []
9
+ inputs = JSON.parse params[:batch_action_inputs] || "{}"
10
10
  valid_keys = MethodOrProcHelper.render_in_context(self, current_batch_action.inputs).try(:keys)
11
- inputs = inputs.with_indifferent_access.slice *valid_keys
11
+ inputs = inputs.with_indifferent_access.slice *valid_keys
12
12
  instance_exec selection, inputs, &current_batch_action.block
13
13
  else
14
14
  raise "Couldn't find batch action \"#{params[:batch_action]}\""
@@ -22,7 +22,7 @@ module ActiveAdmin
22
22
  end
23
23
 
24
24
  def current_batch_action
25
- active_admin_config.batch_actions.detect{ |action| action.sym.to_s == params[:batch_action] }
25
+ active_admin_config.batch_actions.detect { |action| action.sym.to_s == params[:batch_action] }
26
26
  end
27
27
 
28
28
  COLLECTION_APPLIES = [
@@ -57,21 +57,22 @@ module ActiveAdmin
57
57
  def add_default_batch_action
58
58
  destroy_options = {
59
59
  priority: 100,
60
- confirm: proc{ I18n.t('active_admin.batch_actions.delete_confirmation', plural_model: active_admin_config.plural_resource_label.downcase) },
61
- if: proc{ controller.action_methods.include?('destroy') && authorized?(ActiveAdmin::Auth::DESTROY, active_admin_config.resource_class) }
60
+ confirm: proc { I18n.t("active_admin.batch_actions.delete_confirmation", plural_model: active_admin_config.plural_resource_label.downcase) },
61
+ if: proc { controller.action_methods.include?("destroy") && authorized?(ActiveAdmin::Auth::DESTROY, active_admin_config.resource_class) }
62
62
  }
63
63
 
64
- add_batch_action :destroy, proc { I18n.t('active_admin.delete') }, destroy_options do |selected_ids|
64
+ add_batch_action :destroy, proc { I18n.t("active_admin.delete") }, destroy_options do |selected_ids|
65
65
  batch_action_collection.find(selected_ids).each do |record|
66
66
  authorize! ActiveAdmin::Auth::DESTROY, record
67
67
  destroy_resource(record)
68
68
  end
69
69
 
70
70
  redirect_to active_admin_config.route_collection_path(params),
71
- notice: I18n.t("active_admin.batch_actions.succesfully_destroyed",
72
- count: selected_ids.count,
73
- model: active_admin_config.resource_label.downcase,
74
- plural_model: active_admin_config.plural_resource_label(count: selected_ids.count).downcase)
71
+ notice: I18n.t(
72
+ "active_admin.batch_actions.succesfully_destroyed",
73
+ count: selected_ids.count,
74
+ model: active_admin_config.resource_label.downcase,
75
+ plural_model: active_admin_config.plural_resource_label(count: selected_ids.count).downcase)
75
76
  end
76
77
  end
77
78
 
@@ -84,7 +85,7 @@ module ActiveAdmin
84
85
 
85
86
  attr_reader :block, :title, :sym
86
87
 
87
- DEFAULT_CONFIRM_MESSAGE = proc{ I18n.t 'active_admin.batch_actions.default_confirmation' }
88
+ DEFAULT_CONFIRM_MESSAGE = proc { I18n.t "active_admin.batch_actions.default_confirmation" }
88
89
 
89
90
  # Create a Batch Action
90
91
  #
@@ -112,7 +113,11 @@ module ActiveAdmin
112
113
  # => You can pass a hash of options to `:form` that will be rendered as form input fields for the user to fill out.
113
114
  #
114
115
  def initialize(sym, title, options = {}, &block)
115
- @sym, @title, @options, @block, @confirm = sym, title, options, block, options[:confirm]
116
+ @sym = sym
117
+ @title = title
118
+ @options = options
119
+ @block = block
120
+ @confirm = options[:confirm]
116
121
  @block ||= proc {}
117
122
  end
118
123
 
@@ -133,7 +138,7 @@ module ActiveAdmin
133
138
  # Returns the display if block. If the block was not explicitly defined
134
139
  # a default block always returning true will be returned.
135
140
  def display_if_block
136
- @options[:if] || proc{ true }
141
+ @options[:if] || proc { true }
137
142
  end
138
143
 
139
144
  # Used for sorting
@@ -1,4 +1,4 @@
1
- require 'active_admin/component'
1
+ require "active_admin/component"
2
2
 
3
3
  module ActiveAdmin
4
4
  module BatchActions
@@ -16,7 +16,7 @@ module ActiveAdmin
16
16
  # batch_action => name of the specific action called
17
17
  # batch_action_inputs => a JSON string of any requested confirmation values
18
18
  text_node form_tag active_admin_config.route_batch_action_path(params, url_options), id: options[:id]
19
- input name: :batch_action, id: :batch_action, type: :hidden
19
+ input name: :batch_action, id: :batch_action, type: :hidden
20
20
  input name: :batch_action_inputs, id: :batch_action_inputs, type: :hidden
21
21
 
22
22
  super(options)
@@ -30,7 +30,7 @@ module ActiveAdmin
30
30
  private
31
31
 
32
32
  def closing_form_tag
33
- '</form>'.html_safe
33
+ "</form>".html_safe
34
34
  end
35
35
 
36
36
  end
@@ -1,4 +1,4 @@
1
- require 'active_admin/component'
1
+ require "active_admin/component"
2
2
 
3
3
  module ActiveAdmin
4
4
  module BatchActions
@@ -31,17 +31,17 @@ module ActiveAdmin
31
31
  confirmation_text = render_or_call_method_or_proc_on(self, batch_action.confirm)
32
32
 
33
33
  options = {
34
- :class => "batch_action",
35
- "data-action" => batch_action.sym,
36
- "data-confirm" => confirmation_text,
37
- "data-inputs" => render_in_context(self, batch_action.inputs).to_json
34
+ class: "batch_action",
35
+ "data-action": batch_action.sym,
36
+ "data-confirm": confirmation_text,
37
+ "data-inputs": render_in_context(self, batch_action.inputs).to_json
38
38
  }
39
39
 
40
40
  default_title = render_or_call_method_or_proc_on(self, batch_action.title)
41
41
  title = I18n.t("active_admin.batch_actions.labels.#{batch_action.sym}", default: default_title)
42
42
  label = I18n.t("active_admin.batch_actions.action_label", title: title)
43
43
 
44
- item label, "#", options
44
+ item label, "#", **options
45
45
  end
46
46
  end
47
47
  end
@@ -1,4 +1,4 @@
1
- require 'active_admin/component'
1
+ require "active_admin/component"
2
2
 
3
3
  module ActiveAdmin
4
4
  module BatchActions
@@ -7,7 +7,7 @@ module ActiveAdmin
7
7
  class ResourceSelectionToggleCell < ActiveAdmin::Component
8
8
  builder_method :resource_selection_toggle_cell
9
9
 
10
- def build(label_text = '')
10
+ def build(label_text = "")
11
11
  label do
12
12
  input type: "checkbox", id: "collection_selection_toggle_all", name: "collection_selection_toggle_all", class: "toggle_all"
13
13
  text_node label_text if label_text.present?
@@ -30,7 +30,7 @@ module ActiveAdmin
30
30
 
31
31
  def build
32
32
  super(id: "collection_selection_toggle_panel")
33
- resource_selection_toggle_cell(I18n.t('active_admin.batch_actions.selection_toggle_explanation', default: "(Toggle Selection)"))
33
+ resource_selection_toggle_cell(I18n.t("active_admin.batch_actions.selection_toggle_explanation", default: "(Toggle Selection)"))
34
34
  end
35
35
  end
36
36
 
@@ -75,7 +75,7 @@ module ActiveAdmin
75
75
 
76
76
  # def run_create_callbacks
77
77
  define_method "run_#{name}_callbacks" do |*args, &block|
78
- self.class.send("before_#{name}_callbacks").each{ |cbk| run_callback(cbk, *args) }
78
+ self.class.send("before_#{name}_callbacks").each { |cbk| run_callback(cbk, *args) }
79
79
  value = block.try :call
80
80
  self.class.send("after_#{name}_callbacks").each { |cbk| run_callback(cbk, *args) }
81
81
  return value
@@ -2,7 +2,7 @@ unless ActiveAdmin::Dependency.cancan? || ActiveAdmin::Dependency.cancancan?
2
2
  ActiveAdmin::Dependency.cancan!
3
3
  end
4
4
 
5
- require 'cancan'
5
+ require "cancan"
6
6
 
7
7
  # Add a setting to the application to configure the ability
8
8
  ActiveAdmin::Application.inheritable_setting :cancan_ability_class, "Ability"
@@ -0,0 +1,31 @@
1
+ module ActiveAdmin
2
+ # This class decorates a collection of objects delegating
3
+ # mehods to behave like an Array. It's used to decouple ActiveAdmin
4
+ # from Draper and thus being able to use PORO decorators as well.
5
+ #
6
+ # It's implementation is heavily based on the Draper::CollectionDecorator
7
+ # https://github.com/drapergem/draper/blob/aaa06bd2f1e219838b241a5534e7ca513edd1fe2/lib/draper/collection_decorator.rb
8
+ class CollectionDecorator
9
+ # @return the collection being decorated.
10
+ attr_reader :object
11
+
12
+ # @return [Class] the decorator class used to decorate each item, as set by {#initialize}.
13
+ attr_reader :decorator_class
14
+
15
+ array_methods = Array.instance_methods - Object.instance_methods
16
+ delegate :==, :as_json, *array_methods, to: :decorated_collection
17
+
18
+ def initialize(object, with:)
19
+ @object = object
20
+ @decorator_class = with
21
+ end
22
+
23
+ class << self
24
+ alias_method :decorate, :new
25
+ end
26
+
27
+ def decorated_collection
28
+ @decorated_collection ||= object.map { |item| decorator_class.new(item) }
29
+ end
30
+ end
31
+ end
@@ -2,7 +2,8 @@ module ActiveAdmin
2
2
  class ControllerAction
3
3
  attr_reader :name
4
4
  def initialize(name, options = {})
5
- @name, @options = name, options
5
+ @name = name
6
+ @options = options
6
7
  end
7
8
 
8
9
  def http_verb
@@ -32,7 +32,9 @@ module ActiveAdmin
32
32
 
33
33
  def initialize(options = {}, &block)
34
34
  @resource = options.delete(:resource)
35
- @columns, @options, @block = [], options, block
35
+ @columns = []
36
+ @options = ActiveAdmin.application.csv_options.merge options
37
+ @block = block
36
38
  end
37
39
 
38
40
  def column(name, options = {}, &block)
@@ -40,24 +42,23 @@ module ActiveAdmin
40
42
  end
41
43
 
42
44
  def build(controller, csv)
43
- @collection = controller.send :find_collection, except: :pagination
44
- columns = exec_columns controller.view_context
45
- options = ActiveAdmin.application.csv_options.merge self.options
46
- bom = options.delete :byte_order_mark
45
+ @collection = controller.send :find_collection, except: :pagination
46
+ columns = exec_columns controller.view_context
47
+ bom = options.delete :byte_order_mark
47
48
  column_names = options.delete(:column_names) { true }
48
- csv_options = options.except :encoding_options, :humanize_name
49
+ csv_options = options.except :encoding_options, :humanize_name
49
50
 
50
51
  csv << bom if bom
51
52
 
52
53
  if column_names
53
- csv << CSV.generate_line(columns.map{ |c| encode c.name, options }, csv_options)
54
+ csv << CSV.generate_line(columns.map { |c| encode c.name, options }, **csv_options)
54
55
  end
55
56
 
56
57
  ActiveRecord::Base.uncached do
57
58
  (1..paginated_collection.total_pages).each do |page|
58
59
  paginated_collection(page).each do |resource|
59
60
  resource = controller.send :apply_decorator, resource
60
- csv << CSV.generate_line(build_row(resource, columns, options), csv_options)
61
+ csv << CSV.generate_line(build_row(resource, columns, options), **csv_options)
61
62
  end
62
63
  end
63
64
  end
@@ -80,7 +81,11 @@ module ActiveAdmin
80
81
 
81
82
  def encode(content, options)
82
83
  if options[:encoding]
83
- content.to_s.encode options[:encoding], options[:encoding_options]
84
+ if options[:encoding_options]
85
+ content.to_s.encode options[:encoding], **options[:encoding_options]
86
+ else
87
+ content.to_s.encode options[:encoding]
88
+ end
84
89
  else
85
90
  content
86
91
  end