activeadmin 2.4.0 → 2.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

Files changed (289) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +422 -31
  3. data/CONTRIBUTING.md +44 -65
  4. data/README.md +6 -6
  5. data/app/assets/javascripts/active_admin/base.js +521 -0
  6. data/app/assets/stylesheets/active_admin/_base.scss +53 -37
  7. data/app/assets/stylesheets/active_admin/_forms.scss +1 -11
  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 +25 -123
  11. data/app/assets/stylesheets/active_admin/{print.scss → _print.scss} +2 -2
  12. data/app/assets/stylesheets/active_admin/components/_comments.scss +2 -2
  13. data/app/assets/stylesheets/active_admin/components/_date_picker.scss +1 -2
  14. data/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +0 -1
  15. data/app/assets/stylesheets/active_admin/components/_tables.scss +1 -2
  16. data/app/assets/stylesheets/active_admin/mixins/_all.scss +8 -8
  17. data/app/assets/stylesheets/active_admin/mixins/_variables.scss +17 -0
  18. data/app/assets/stylesheets/active_admin/structure/_footer.scss +6 -1
  19. data/app/assets/stylesheets/active_admin/structure/_main_structure.scss +1 -1
  20. data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +0 -1
  21. data/app/javascript/active_admin/base.js +28 -0
  22. data/app/{assets/javascripts/active_admin/lib/batch_actions.es6 → javascript/active_admin/initializers/batch-actions.js} +4 -2
  23. data/app/javascript/active_admin/initializers/checkbox-toggler.js +3 -0
  24. data/app/javascript/active_admin/initializers/dropdown-menu.js +9 -0
  25. data/app/javascript/active_admin/initializers/filters.js +10 -0
  26. data/app/{assets/javascripts/active_admin/lib/has_many.es6 → javascript/active_admin/initializers/has-many.js} +4 -1
  27. data/app/javascript/active_admin/initializers/per-page.js +13 -0
  28. data/app/javascript/active_admin/initializers/table-checkbox-toggler.js +3 -0
  29. data/app/{assets/javascripts/active_admin/lib/checkbox-toggler.es6 → javascript/active_admin/lib/checkbox-toggler.js} +5 -5
  30. data/app/{assets/javascripts/active_admin/lib/dropdown-menu.es6 → javascript/active_admin/lib/dropdown-menu.js} +3 -10
  31. data/app/javascript/active_admin/lib/filters.js +39 -0
  32. data/app/{assets/javascripts/active_admin/lib/modal_dialog.es6 → javascript/active_admin/lib/modal-dialog.js} +10 -8
  33. data/app/javascript/active_admin/lib/per-page.js +38 -0
  34. data/app/{assets/javascripts/active_admin/lib/table-checkbox-toggler.es6 → javascript/active_admin/lib/table-checkbox-toggler.js} +5 -3
  35. data/app/javascript/active_admin/lib/utils.js +40 -0
  36. data/app/views/active_admin/devise/mailer/reset_password_instructions.html.erb +1 -1
  37. data/app/views/active_admin/devise/mailer/unlock_instructions.html.erb +2 -2
  38. data/app/views/active_admin/devise/shared/_links.erb +1 -1
  39. data/app/views/active_admin/page/index.html.arb +1 -0
  40. data/app/views/active_admin/resource/edit.html.arb +1 -0
  41. data/app/views/active_admin/resource/index.html.arb +1 -0
  42. data/app/views/active_admin/resource/new.html.arb +1 -0
  43. data/app/views/active_admin/resource/show.html.arb +1 -0
  44. data/app/views/layouts/active_admin.html.arb +1 -0
  45. data/app/views/layouts/active_admin_logged_out.html.erb +18 -7
  46. data/config/locales/ar.yml +6 -6
  47. data/config/locales/az.yml +138 -0
  48. data/config/locales/en-CA.yml +3 -3
  49. data/config/locales/en-GB.yml +3 -3
  50. data/config/locales/en.yml +3 -3
  51. data/config/locales/es-MX.yml +2 -1
  52. data/config/locales/es.yml +5 -5
  53. data/config/locales/fr.yml +7 -7
  54. data/config/locales/it.yml +18 -0
  55. data/config/locales/ja.yml +3 -3
  56. data/config/locales/ko.yml +1 -1
  57. data/config/locales/lv.yml +2 -2
  58. data/config/locales/nl.yml +1 -1
  59. data/config/locales/ro.yml +3 -2
  60. data/config/locales/vi.yml +40 -12
  61. data/config/locales/zh-CN.yml +36 -17
  62. data/lib/active_admin/abstract_view_factory.rb +1 -0
  63. data/lib/active_admin/application.rb +20 -20
  64. data/lib/active_admin/application_settings.rb +4 -3
  65. data/lib/active_admin/asset_registration.rb +4 -3
  66. data/lib/active_admin/authorization_adapter.rb +6 -3
  67. data/lib/active_admin/base_controller/authorization.rb +15 -13
  68. data/lib/active_admin/base_controller/menu.rb +1 -0
  69. data/lib/active_admin/base_controller.rb +6 -5
  70. data/lib/active_admin/batch_actions/controller.rb +4 -3
  71. data/lib/active_admin/batch_actions/resource_extension.rb +10 -8
  72. data/lib/active_admin/batch_actions/views/batch_action_form.rb +4 -3
  73. data/lib/active_admin/batch_actions/views/batch_action_selector.rb +7 -6
  74. data/lib/active_admin/batch_actions/views/selection_cells.rb +4 -3
  75. data/lib/active_admin/batch_actions.rb +1 -0
  76. data/lib/active_admin/callbacks.rb +1 -0
  77. data/lib/active_admin/cancan_adapter.rb +2 -1
  78. data/lib/active_admin/collection_decorator.rb +32 -0
  79. data/lib/active_admin/component.rb +1 -0
  80. data/lib/active_admin/controller_action.rb +1 -0
  81. data/lib/active_admin/csv_builder.rb +12 -21
  82. data/lib/active_admin/dependency.rb +12 -15
  83. data/lib/active_admin/deprecation.rb +1 -0
  84. data/lib/active_admin/devise.rb +16 -5
  85. data/lib/active_admin/dsl.rb +2 -1
  86. data/lib/active_admin/dynamic_setting.rb +1 -0
  87. data/lib/active_admin/dynamic_settings_node.rb +3 -2
  88. data/lib/active_admin/engine.rb +13 -9
  89. data/lib/active_admin/error.rb +1 -2
  90. data/lib/active_admin/filters/active.rb +2 -1
  91. data/lib/active_admin/filters/active_filter.rb +7 -7
  92. data/lib/active_admin/filters/active_sidebar.rb +4 -30
  93. data/lib/active_admin/filters/dsl.rb +1 -0
  94. data/lib/active_admin/filters/forms.rb +7 -6
  95. data/lib/active_admin/filters/formtastic_addons.rb +2 -6
  96. data/lib/active_admin/filters/resource_extension.rb +6 -5
  97. data/lib/active_admin/filters.rb +8 -7
  98. data/lib/active_admin/form_builder.rb +25 -20
  99. data/lib/active_admin/generators/boilerplate.rb +2 -1
  100. data/lib/active_admin/helpers/collection.rb +2 -0
  101. data/lib/active_admin/helpers/i18n.rb +1 -0
  102. data/lib/active_admin/helpers/optional_display.rb +3 -2
  103. data/lib/active_admin/helpers/routes/url_helpers.rb +1 -0
  104. data/lib/active_admin/helpers/scope_chain.rb +1 -0
  105. data/lib/active_admin/inputs/datepicker_input.rb +2 -1
  106. data/lib/active_admin/inputs/filters/base/search_method_select.rb +5 -4
  107. data/lib/active_admin/inputs/filters/base.rb +2 -1
  108. data/lib/active_admin/inputs/filters/boolean_input.rb +2 -1
  109. data/lib/active_admin/inputs/filters/check_boxes_input.rb +2 -1
  110. data/lib/active_admin/inputs/filters/date_picker_input.rb +1 -0
  111. data/lib/active_admin/inputs/filters/date_range_input.rb +16 -12
  112. data/lib/active_admin/inputs/filters/numeric_input.rb +1 -0
  113. data/lib/active_admin/inputs/filters/select_input.rb +3 -2
  114. data/lib/active_admin/inputs/filters/string_input.rb +1 -0
  115. data/lib/active_admin/inputs/filters/text_input.rb +1 -0
  116. data/lib/active_admin/inputs.rb +1 -0
  117. data/lib/active_admin/localizers/resource_localizer.rb +4 -3
  118. data/lib/active_admin/localizers.rb +2 -1
  119. data/lib/active_admin/menu.rb +7 -3
  120. data/lib/active_admin/menu_collection.rb +1 -0
  121. data/lib/active_admin/menu_item.rb +8 -7
  122. data/lib/active_admin/namespace.rb +15 -14
  123. data/lib/active_admin/namespace_settings.rb +9 -5
  124. data/lib/active_admin/order_clause.rb +2 -1
  125. data/lib/active_admin/orm/active_record/comments/comment.rb +4 -3
  126. data/lib/active_admin/orm/active_record/comments/namespace_helper.rb +1 -0
  127. data/lib/active_admin/orm/active_record/comments/resource_helper.rb +1 -0
  128. data/lib/active_admin/orm/active_record/comments/show_page_helper.rb +1 -0
  129. data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +21 -20
  130. data/lib/active_admin/orm/active_record/comments/views.rb +3 -2
  131. data/lib/active_admin/orm/active_record/comments.rb +28 -27
  132. data/lib/active_admin/orm/active_record.rb +2 -1
  133. data/lib/active_admin/orm/mongoid.rb +1 -0
  134. data/lib/active_admin/page.rb +2 -1
  135. data/lib/active_admin/page_controller.rb +1 -0
  136. data/lib/active_admin/page_dsl.rb +1 -0
  137. data/lib/active_admin/page_presenter.rb +1 -0
  138. data/lib/active_admin/pundit_adapter.rb +57 -15
  139. data/lib/active_admin/resource/action_items.rb +6 -5
  140. data/lib/active_admin/resource/attributes.rb +2 -1
  141. data/lib/active_admin/resource/belongs_to.rb +3 -2
  142. data/lib/active_admin/resource/controllers.rb +2 -1
  143. data/lib/active_admin/resource/includes.rb +1 -0
  144. data/lib/active_admin/resource/menu.rb +5 -4
  145. data/lib/active_admin/resource/model.rb +1 -0
  146. data/lib/active_admin/resource/naming.rb +6 -5
  147. data/lib/active_admin/resource/ordering.rb +1 -0
  148. data/lib/active_admin/resource/page_presenters.rb +1 -0
  149. data/lib/active_admin/resource/pagination.rb +1 -0
  150. data/lib/active_admin/resource/routes.rb +6 -7
  151. data/lib/active_admin/resource/scope_to.rb +8 -7
  152. data/lib/active_admin/resource/scopes.rb +1 -0
  153. data/lib/active_admin/resource/sidebars.rb +2 -1
  154. data/lib/active_admin/resource.rb +21 -20
  155. data/lib/active_admin/resource_collection.rb +1 -0
  156. data/lib/active_admin/resource_controller/action_builder.rb +1 -0
  157. data/lib/active_admin/resource_controller/data_access.rb +31 -5
  158. data/lib/active_admin/resource_controller/decorators.rb +7 -28
  159. data/lib/active_admin/resource_controller/polymorphic_routes.rb +4 -2
  160. data/lib/active_admin/resource_controller/resource_class_methods.rb +1 -0
  161. data/lib/active_admin/resource_controller/scoping.rb +1 -0
  162. data/lib/active_admin/resource_controller/sidebars.rb +1 -0
  163. data/lib/active_admin/resource_controller/streaming.rb +9 -7
  164. data/lib/active_admin/resource_controller.rb +13 -11
  165. data/lib/active_admin/resource_dsl.rb +11 -25
  166. data/lib/active_admin/router.rb +1 -0
  167. data/lib/active_admin/scope.rb +7 -6
  168. data/lib/active_admin/settings_node.rb +1 -0
  169. data/lib/active_admin/sidebar_section.rb +1 -0
  170. data/lib/active_admin/version.rb +2 -1
  171. data/lib/active_admin/view_factory.rb +18 -17
  172. data/lib/active_admin/view_helpers/active_admin_application_helper.rb +1 -0
  173. data/lib/active_admin/view_helpers/auto_link_helper.rb +2 -1
  174. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +4 -3
  175. data/lib/active_admin/view_helpers/display_helper.rb +15 -7
  176. data/lib/active_admin/view_helpers/download_format_links_helper.rb +2 -1
  177. data/lib/active_admin/view_helpers/fields_for.rb +3 -2
  178. data/lib/active_admin/view_helpers/flash_helper.rb +1 -0
  179. data/lib/active_admin/view_helpers/form_helper.rb +1 -0
  180. data/lib/active_admin/view_helpers/method_or_proc_helper.rb +1 -0
  181. data/lib/active_admin/view_helpers/scope_name_helper.rb +1 -0
  182. data/lib/active_admin/view_helpers/sidebar_helper.rb +1 -0
  183. data/lib/active_admin/view_helpers/title_helper.rb +1 -0
  184. data/lib/active_admin/view_helpers/view_factory_helper.rb +1 -0
  185. data/lib/active_admin/view_helpers.rb +2 -1
  186. data/lib/active_admin/views/action_items.rb +1 -0
  187. data/lib/active_admin/views/components/active_admin_form.rb +7 -6
  188. data/lib/active_admin/views/components/active_filters_sidebar_content.rb +59 -0
  189. data/lib/active_admin/views/components/attributes_table.rb +6 -5
  190. data/lib/active_admin/views/components/blank_slate.rb +2 -1
  191. data/lib/active_admin/views/components/columns.rb +1 -0
  192. data/lib/active_admin/views/components/dropdown_menu.rb +7 -9
  193. data/lib/active_admin/views/components/index_list.rb +4 -3
  194. data/lib/active_admin/views/components/menu.rb +2 -1
  195. data/lib/active_admin/views/components/menu_item.rb +5 -4
  196. data/lib/active_admin/views/components/paginated_collection.rb +20 -18
  197. data/lib/active_admin/views/components/panel.rb +2 -1
  198. data/lib/active_admin/views/components/scopes.rb +8 -5
  199. data/lib/active_admin/views/components/sidebar.rb +1 -0
  200. data/lib/active_admin/views/components/sidebar_section.rb +1 -0
  201. data/lib/active_admin/views/components/site_title.rb +2 -1
  202. data/lib/active_admin/views/components/status_tag.rb +12 -11
  203. data/lib/active_admin/views/components/table_for.rb +19 -17
  204. data/lib/active_admin/views/components/tabs.rb +4 -3
  205. data/lib/active_admin/views/components/unsupported_browser.rb +1 -0
  206. data/lib/active_admin/views/footer.rb +3 -1
  207. data/lib/active_admin/views/header.rb +3 -2
  208. data/lib/active_admin/views/index_as_block.rb +1 -0
  209. data/lib/active_admin/views/index_as_blog.rb +2 -1
  210. data/lib/active_admin/views/index_as_grid.rb +2 -1
  211. data/lib/active_admin/views/index_as_table.rb +17 -16
  212. data/lib/active_admin/views/pages/base.rb +22 -14
  213. data/lib/active_admin/views/pages/form.rb +1 -0
  214. data/lib/active_admin/views/pages/index.rb +16 -13
  215. data/lib/active_admin/views/pages/layout.rb +1 -0
  216. data/lib/active_admin/views/pages/page.rb +1 -0
  217. data/lib/active_admin/views/pages/show.rb +1 -0
  218. data/lib/active_admin/views/tabbed_navigation.rb +3 -2
  219. data/lib/active_admin/views/title_bar.rb +2 -1
  220. data/lib/active_admin/views.rb +2 -1
  221. data/lib/active_admin.rb +63 -64
  222. data/lib/activeadmin.rb +2 -1
  223. data/lib/generators/active_admin/assets/assets_generator.rb +3 -2
  224. data/lib/generators/active_admin/assets/templates/active_admin.scss +2 -2
  225. data/lib/generators/active_admin/devise/devise_generator.rb +6 -5
  226. data/lib/generators/active_admin/install/install_generator.rb +15 -8
  227. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +26 -2
  228. data/lib/generators/active_admin/install/templates/dashboard.rb +1 -0
  229. data/lib/generators/active_admin/page/page_generator.rb +2 -1
  230. data/lib/generators/active_admin/page/templates/page.rb +1 -0
  231. data/lib/generators/active_admin/resource/resource_generator.rb +4 -3
  232. data/lib/generators/active_admin/webpacker/plugins/jquery.js +7 -0
  233. data/lib/generators/active_admin/webpacker/templates/active_admin.js +5 -0
  234. data/lib/generators/active_admin/webpacker/templates/active_admin.scss +17 -0
  235. data/lib/generators/active_admin/webpacker/templates/print.scss +2 -0
  236. data/lib/generators/active_admin/webpacker/webpacker_generator.rb +27 -0
  237. data/lib/ransack_ext.rb +9 -8
  238. metadata +56 -132
  239. data/app/assets/images/active_admin/nested_menu_arrow.gif +0 -0
  240. data/app/assets/images/active_admin/nested_menu_arrow_dark.gif +0 -0
  241. data/app/assets/images/active_admin/orderable.png +0 -0
  242. data/app/assets/javascripts/active_admin/base.es6 +0 -23
  243. data/app/assets/javascripts/active_admin/initializers/filters.es6 +0 -45
  244. data/app/assets/javascripts/active_admin/lib/active_admin.es6 +0 -41
  245. data/app/assets/javascripts/active_admin/lib/per_page.es6 +0 -47
  246. data/docs/.gitignore +0 -1
  247. data/docs/0-installation.md +0 -118
  248. data/docs/1-general-configuration.md +0 -204
  249. data/docs/10-custom-pages.md +0 -150
  250. data/docs/11-decorators.md +0 -59
  251. data/docs/12-arbre-components.md +0 -214
  252. data/docs/13-authorization-adapter.md +0 -285
  253. data/docs/14-gotchas.md +0 -138
  254. data/docs/2-resource-customization.md +0 -466
  255. data/docs/3-index-pages/custom-index.md +0 -35
  256. data/docs/3-index-pages/index-as-block.md +0 -19
  257. data/docs/3-index-pages/index-as-blog.md +0 -69
  258. data/docs/3-index-pages/index-as-grid.md +0 -27
  259. data/docs/3-index-pages/index-as-table.md +0 -234
  260. data/docs/3-index-pages.md +0 -328
  261. data/docs/4-csv-format.md +0 -74
  262. data/docs/5-forms.md +0 -232
  263. data/docs/6-show-pages.md +0 -81
  264. data/docs/7-sidebars.md +0 -75
  265. data/docs/8-custom-actions.md +0 -177
  266. data/docs/9-batch-actions.md +0 -237
  267. data/docs/CNAME +0 -1
  268. data/docs/Gemfile +0 -3
  269. data/docs/Gemfile.lock +0 -248
  270. data/docs/README.md +0 -24
  271. data/docs/_config.yml +0 -4
  272. data/docs/_includes/footer.html +0 -8
  273. data/docs/_includes/google-analytics.html +0 -16
  274. data/docs/_includes/head.html +0 -7
  275. data/docs/_includes/toc.html +0 -98
  276. data/docs/_includes/top-menu.html +0 -17
  277. data/docs/_layouts/default.html +0 -21
  278. data/docs/documentation.md +0 -60
  279. data/docs/images/activeadmin.png +0 -0
  280. data/docs/images/code-header.png +0 -0
  281. data/docs/images/divider.png +0 -0
  282. data/docs/images/features.png +0 -0
  283. data/docs/images/tidelift.svg +0 -14
  284. data/docs/index.html +0 -226
  285. data/docs/stylesheets/main.css +0 -1205
  286. /data/app/{assets/javascripts/active_admin/ext/jquery-ui.es6 → javascript/active_admin/ext/jquery-ui.js} +0 -0
  287. /data/app/{assets/javascripts/active_admin/ext/jquery.es6 → javascript/active_admin/ext/jquery.js} +0 -0
  288. /data/app/{assets/javascripts/active_admin/initializers/datepicker.es6 → javascript/active_admin/initializers/datepicker.js} +0 -0
  289. /data/app/{assets/javascripts/active_admin/initializers/tabs.es6 → javascript/active_admin/initializers/tabs.js} +0 -0
@@ -1,20 +1,22 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  module Views
3
4
  class TableFor < Arbre::HTML::Table
4
5
  builder_method :table_for
5
6
 
6
7
  def tag_name
7
- 'table'
8
+ "table"
8
9
  end
9
10
 
10
11
  def build(obj, *attrs)
11
- options = attrs.extract_options!
12
- @sortable = options.delete(:sortable)
13
- @collection = obj.respond_to?(:each) && !obj.is_a?(Hash) ? obj : [obj]
12
+ options = attrs.extract_options!
13
+ @sortable = options.delete(:sortable)
14
+ @collection = obj.respond_to?(:each) && !obj.is_a?(Hash) ? obj : [obj]
14
15
  @resource_class = options.delete(:i18n)
15
16
  @resource_class ||= @collection.klass if @collection.respond_to? :klass
16
- @columns = []
17
- @row_class = options.delete(:row_class)
17
+
18
+ @columns = []
19
+ @row_class = options.delete(:row_class)
18
20
 
19
21
  build_table
20
22
  super(options)
@@ -28,7 +30,7 @@ module ActiveAdmin
28
30
  def column(*args, &block)
29
31
  options = default_options.merge(args.extract_options!)
30
32
  title = args[0]
31
- data = args[1] || args[0]
33
+ data = args[1] || args[0]
32
34
 
33
35
  col = Column.new(title, data, @resource_class, options, &block)
34
36
  @columns << col
@@ -64,12 +66,12 @@ module ActiveAdmin
64
66
  end
65
67
 
66
68
  def build_table_header(col)
67
- classes = Arbre::HTML::ClassList.new
69
+ classes = Arbre::HTML::ClassList.new
68
70
  sort_key = sortable? && col.sortable? && col.sort_key
69
- params = request.query_parameters.except :page, :order, :commit, :format
71
+ params = request.query_parameters.except :page, :order, :commit, :format
70
72
 
71
- classes << 'sortable' if sort_key
72
- classes << "sorted-#{current_sort[1]}" if sort_key && current_sort[0] == sort_key
73
+ classes << "sortable" if sort_key
74
+ classes << "sorted-#{current_sort[1]}" if sort_key && current_sort[0] == sort_key
73
75
  classes << col.html_class
74
76
 
75
77
  if sort_key
@@ -85,13 +87,13 @@ module ActiveAdmin
85
87
  @tbody = tbody do
86
88
  # Build enough rows for our collection
87
89
  @collection.each do |elem|
88
- classes = [helpers.cycle('odd', 'even')]
90
+ classes = [helpers.cycle("odd", "even")]
89
91
 
90
92
  if @row_class
91
93
  classes << @row_class.call(elem)
92
94
  end
93
95
 
94
- tr(class: classes.flatten.join(' '), id: dom_id_for(elem))
96
+ tr(class: classes.flatten.join(" "), id: dom_id_for(elem))
95
97
  end
96
98
  end
97
99
  end
@@ -125,8 +127,8 @@ module ActiveAdmin
125
127
  # 'desc' it will return 'asc'
126
128
  def order_for_sort_key(sort_key)
127
129
  current_key, current_order = current_sort
128
- return 'desc' unless current_key == sort_key
129
- current_order == 'desc' ? 'asc' : 'desc'
130
+ return "desc" unless current_key == sort_key
131
+ current_order == "desc" ? "asc" : "desc"
130
132
  end
131
133
 
132
134
  def default_options
@@ -137,7 +139,7 @@ module ActiveAdmin
137
139
 
138
140
  class Column
139
141
 
140
- attr_accessor :title, :data , :html_class
142
+ attr_accessor :title, :data, :html_class
141
143
 
142
144
  def initialize(*args, &block)
143
145
  @options = args.extract_options!
@@ -149,7 +151,7 @@ module ActiveAdmin
149
151
  elsif @title.present?
150
152
  html_classes << "col-#{@title.to_s.parameterize(separator: "_")}"
151
153
  end
152
- @html_class = html_classes.join(' ')
154
+ @html_class = html_classes.join(" ")
153
155
  @data = args[1] || args[0]
154
156
  @data = block if block
155
157
  @resource_class = args[2]
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  module Views
3
4
  class Tabs < ActiveAdmin::Component
@@ -10,8 +11,8 @@ module ActiveAdmin
10
11
  end
11
12
 
12
13
  def build(&block)
13
- @menu = ul(class: 'nav nav-tabs', role: "tablist")
14
- @tabs_content = div(class: 'tab-content')
14
+ @menu = ul(class: "nav nav-tabs", role: "tablist")
15
+ @tabs_content = div(class: "tab-content")
15
16
  end
16
17
 
17
18
  def build_menu_item(title, options, &block)
@@ -32,7 +33,7 @@ module ActiveAdmin
32
33
 
33
34
  def fragmentize(string)
34
35
  result = string.parameterize
35
- result = URI.encode(string) if result.blank?
36
+ result = CGI.escape(string) if result.blank?
36
37
  result
37
38
  end
38
39
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  module Views
3
4
  class UnsupportedBrowser < Component
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  module Views
3
4
  class Footer < Component
@@ -20,7 +21,8 @@ module ActiveAdmin
20
21
  end
21
22
 
22
23
  def powered_by_message
23
- I18n.t('active_admin.powered_by',
24
+ I18n.t(
25
+ "active_admin.powered_by",
24
26
  active_admin: link_to("Active Admin", "https://activeadmin.info"),
25
27
  version: ActiveAdmin::VERSION).html_safe
26
28
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  module Views
3
4
  class Header < Component
@@ -10,8 +11,8 @@ module ActiveAdmin
10
11
  @utility_menu = @namespace.fetch_menu(:utility_navigation)
11
12
 
12
13
  site_title @namespace
13
- global_navigation @menu, class: 'header-item tabs'
14
- utility_navigation @utility_menu, id: "utility_nav", class: 'header-item tabs'
14
+ global_navigation @menu, class: "header-item tabs"
15
+ utility_navigation @utility_menu, id: "utility_nav", class: "header-item tabs"
15
16
  end
16
17
 
17
18
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  module Views
3
4
 
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  module Views
3
4
 
@@ -135,7 +136,7 @@ module ActiveAdmin
135
136
 
136
137
  def build_body(post)
137
138
  if @body
138
- div class: 'content' do
139
+ div class: "content" do
139
140
  render_method_on_post_or_call_proc post, @body
140
141
  end
141
142
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  module Views
3
4
 
@@ -68,7 +69,7 @@ module ActiveAdmin
68
69
  end
69
70
 
70
71
  def build_empty_cell
71
- td '&nbsp;'.html_safe
72
+ td "&nbsp;".html_safe
72
73
  end
73
74
 
74
75
  def default_number_of_columns
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  module Views
3
4
 
@@ -278,13 +279,13 @@ module ActiveAdmin
278
279
  # Display a column for checkbox
279
280
  def selectable_column
280
281
  return unless active_admin_config.batch_actions.any?
281
- column resource_selection_toggle_cell, class: 'col-selectable', sortable: false do |resource|
282
+ column resource_selection_toggle_cell, class: "col-selectable", sortable: false do |resource|
282
283
  resource_selection_cell resource
283
284
  end
284
285
  end
285
286
 
286
287
  def index_column(start_value = 1)
287
- column '#', class: 'col-index', sortable: false do |resource|
288
+ column "#", class: "col-index", sortable: false do |resource|
288
289
  @collection.offset_value + @collection.index(resource) + start_value
289
290
  end
290
291
  end
@@ -293,9 +294,9 @@ module ActiveAdmin
293
294
  def id_column
294
295
  raise "#{resource_class.name} has no primary_key!" unless resource_class.primary_key
295
296
  column(resource_class.human_attribute_name(resource_class.primary_key), sortable: resource_class.primary_key) do |resource|
296
- if controller.action_methods.include?('show')
297
+ if controller.action_methods.include?("show")
297
298
  link_to resource.id, resource_path(resource), class: "resource_id_link"
298
- elsif controller.action_methods.include?('edit')
299
+ elsif controller.action_methods.include?("edit")
299
300
  link_to resource.id, edit_resource_path(resource), class: "resource_id_link"
300
301
  else
301
302
  resource.id
@@ -304,7 +305,7 @@ module ActiveAdmin
304
305
  end
305
306
 
306
307
  def default_actions
307
- raise '`default_actions` is no longer provided in ActiveAdmin 1.x. Use `actions` instead.'
308
+ raise "`default_actions` is no longer provided in ActiveAdmin 1.x. Use `actions` instead."
308
309
  end
309
310
 
310
311
  # Add links to perform actions.
@@ -344,12 +345,12 @@ module ActiveAdmin
344
345
  #
345
346
  # ```
346
347
  def actions(options = {}, &block)
347
- name = options.delete(:name) { '' }
348
- defaults = options.delete(:defaults) { true }
349
- dropdown = options.delete(:dropdown) { false }
350
- dropdown_name = options.delete(:dropdown_name) { I18n.t 'active_admin.dropdown_actions.button_label', default: 'Actions' }
348
+ name = options.delete(:name) { "" }
349
+ defaults = options.delete(:defaults) { true }
350
+ dropdown = options.delete(:dropdown) { false }
351
+ dropdown_name = options.delete(:dropdown_name) { I18n.t "active_admin.dropdown_actions.button_label", default: "Actions" }
351
352
 
352
- options[:class] ||= 'col-actions'
353
+ options[:class] ||= "col-actions"
353
354
 
354
355
  column name, options do |resource|
355
356
  if dropdown
@@ -373,23 +374,23 @@ module ActiveAdmin
373
374
 
374
375
  def defaults(resource, options = {})
375
376
  localizer = ActiveAdmin::Localizers.resource(active_admin_config)
376
- if controller.action_methods.include?('show') && authorized?(ActiveAdmin::Auth::READ, resource)
377
+ if controller.action_methods.include?("show") && authorized?(ActiveAdmin::Auth::READ, resource)
377
378
  item localizer.t(:view), resource_path(resource), class: "view_link #{options[:css_class]}", title: localizer.t(:view)
378
379
  end
379
- if controller.action_methods.include?('edit') && authorized?(ActiveAdmin::Auth::UPDATE, resource)
380
+ if controller.action_methods.include?("edit") && authorized?(ActiveAdmin::Auth::EDIT, resource)
380
381
  item localizer.t(:edit), edit_resource_path(resource), class: "edit_link #{options[:css_class]}", title: localizer.t(:edit)
381
382
  end
382
- if controller.action_methods.include?('destroy') && authorized?(ActiveAdmin::Auth::DESTROY, resource)
383
+ if controller.action_methods.include?("destroy") && authorized?(ActiveAdmin::Auth::DESTROY, resource)
383
384
  item localizer.t(:delete), resource_path(resource), class: "delete_link #{options[:css_class]}", title: localizer.t(:delete),
384
- method: :delete, data: { confirm: localizer.t(:delete_confirmation) }
385
+ method: :delete, data: { confirm: localizer.t(:delete_confirmation) }
385
386
  end
386
387
  end
387
388
 
388
389
  class TableActions < ActiveAdmin::Component
389
390
  builder_method :table_actions
390
391
 
391
- def item *args
392
- text_node link_to *args
392
+ def item *args, **kwargs
393
+ text_node link_to(*args, **kwargs)
393
394
  end
394
395
  end
395
396
  end # IndexTableFor
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  module Views
3
4
  module Pages
@@ -15,7 +16,7 @@ module ActiveAdmin
15
16
  end
16
17
 
17
18
  def main_content
18
- I18n.t('active_admin.main_content', model: title).html_safe
19
+ I18n.t("active_admin.main_content", model: title).html_safe
19
20
  end
20
21
 
21
22
  private
@@ -29,22 +30,27 @@ module ActiveAdmin
29
30
  text_node(active_admin_namespace.head)
30
31
 
31
32
  active_admin_application.stylesheets.each do |style, options|
32
- text_node stylesheet_link_tag(style, options).html_safe
33
+ stylesheet_tag = active_admin_namespace.use_webpacker ? stylesheet_pack_tag(style, **options) : stylesheet_link_tag(style, **options)
34
+ text_node(stylesheet_tag.html_safe) if stylesheet_tag
33
35
  end
34
36
 
35
37
  active_admin_namespace.meta_tags.each do |name, content|
36
- text_node(tag(:meta, name: name, content: content))
38
+ text_node(meta(name: name, content: content))
37
39
  end
38
40
 
39
- active_admin_application.javascripts.each do |path|
40
- text_node(javascript_include_tag(path))
41
+ active_admin_application.javascripts.each do |path, options|
42
+ javascript_tag = active_admin_namespace.use_webpacker ? javascript_pack_tag(path, **options) : javascript_include_tag(path, **options)
43
+ text_node(javascript_tag)
41
44
  end
42
45
 
43
46
  if active_admin_namespace.favicon
44
- text_node(favicon_link_tag(active_admin_namespace.favicon))
47
+ favicon = active_admin_namespace.favicon
48
+ favicon_tag = active_admin_namespace.use_webpacker ? favicon_pack_tag(favicon) : favicon_link_tag(favicon)
49
+ text_node(favicon_tag)
45
50
  end
46
51
 
47
- text_node csrf_meta_tag
52
+ text_node csrf_meta_tags
53
+ text_node csp_meta_tag
48
54
  end
49
55
  end
50
56
 
@@ -63,9 +69,9 @@ module ActiveAdmin
63
69
  def body_classes
64
70
  Arbre::HTML::ClassList.new [
65
71
  params[:action],
66
- params[:controller].tr('/', '_'),
67
- 'active_admin', 'logged_in',
68
- active_admin_namespace.name.to_s + '_namespace'
72
+ params[:controller].tr("/", "_"),
73
+ "active_admin", "logged_in",
74
+ active_admin_namespace.name.to_s + "_namespace"
69
75
  ]
70
76
  end
71
77
 
@@ -79,14 +85,16 @@ module ActiveAdmin
79
85
  build_flash_messages
80
86
  div id: "active_admin_content", class: (skip_sidebar? ? "without_sidebar" : "with_sidebar") do
81
87
  build_main_content_wrapper
82
- sidebar sidebar_sections_for_action, id: 'sidebar' unless skip_sidebar?
88
+ sidebar sidebar_sections_for_action, id: "sidebar" unless skip_sidebar?
83
89
  end
84
90
  end
85
91
 
86
92
  def build_flash_messages
87
- div class: 'flashes' do
88
- flash_messages.each do |type, message|
89
- div message, class: "flash flash_#{type}"
93
+ div class: "flashes" do
94
+ flash_messages.each do |type, messages|
95
+ [*messages].each do |message|
96
+ div message, class: "flash flash_#{type}"
97
+ end
90
98
  end
91
99
  end
92
100
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  module Views
3
4
  module Pages
@@ -1,4 +1,5 @@
1
- require 'active_admin/helpers/collection'
1
+ # frozen_string_literal: true
2
+ require "active_admin/helpers/collection"
2
3
 
3
4
  module ActiveAdmin
4
5
  module Views
@@ -111,7 +112,7 @@ module ActiveAdmin
111
112
 
112
113
  def render_blank_slate
113
114
  blank_slate_content = I18n.t("active_admin.blank_slate.content", resource_name: active_admin_config.plural_resource_label)
114
- if controller.action_methods.include?('new') && authorized?(ActiveAdmin::Auth::CREATE, active_admin_config.resource_class)
115
+ if controller.action_methods.include?("new") && authorized?(ActiveAdmin::Auth::NEW, active_admin_config.resource_class)
115
116
  blank_slate_content = [blank_slate_content, blank_slate_link].compact.join(" ")
116
117
  end
117
118
  insert_tag(view_factory.blank_slate, blank_slate_content)
@@ -124,18 +125,20 @@ module ActiveAdmin
124
125
 
125
126
  def render_index
126
127
  renderer_class = find_index_renderer_class(config[:as])
127
- paginator = config.fetch(:paginator, true)
128
- download_links = config.fetch(:download_links, active_admin_config.namespace.download_links)
128
+
129
+ paginator = config.fetch(:paginator, true)
130
+ download_links = config.fetch(:download_links, active_admin_config.namespace.download_links)
129
131
  pagination_total = config.fetch(:pagination_total, true)
130
- per_page = config.fetch(:per_page, active_admin_config.per_page)
131
-
132
- paginated_collection(collection, entry_name: active_admin_config.resource_label,
133
- entries_name: active_admin_config.plural_resource_label(count: collection_size),
134
- download_links: download_links,
135
- paginator: paginator,
136
- per_page: per_page,
137
- pagination_total: pagination_total) do
138
- div class: 'index_content' do
132
+ per_page = config.fetch(:per_page, active_admin_config.per_page)
133
+
134
+ paginated_collection(
135
+ collection, entry_name: active_admin_config.resource_label,
136
+ entries_name: active_admin_config.plural_resource_label(count: collection_size),
137
+ download_links: download_links,
138
+ paginator: paginator,
139
+ per_page: per_page,
140
+ pagination_total: pagination_total) do
141
+ div class: "index_content" do
139
142
  insert_tag(renderer_class, config, collection)
140
143
  end
141
144
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  module Views
3
4
  module Pages
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  module Views
3
4
  module Pages
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  module Views
3
4
  module Pages
@@ -1,10 +1,11 @@
1
- require_relative 'components/menu'
1
+ # frozen_string_literal: true
2
+ require_relative "components/menu"
2
3
 
3
4
  module ActiveAdmin
4
5
  module Views
5
6
  class TabbedNavigation < Menu
6
7
  def build(menu, options = {})
7
- super(menu, options.reverse_merge(id: 'tabs'))
8
+ super(menu, options.reverse_merge(id: "tabs"))
8
9
  end
9
10
  end
10
11
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  module Views
3
4
  class TitleBar < Component
@@ -43,7 +44,7 @@ module ActiveAdmin
43
44
  end
44
45
 
45
46
  def build_title_tag
46
- h2(@title, id: 'page_title')
47
+ h2(@title, id: "page_title")
47
48
  end
48
49
 
49
50
  def build_action_items
@@ -1,8 +1,9 @@
1
+ # frozen_string_literal: true
1
2
  module ActiveAdmin
2
3
  module Views
3
4
 
4
5
  # Loads all the classes in views/*.rb
5
- Dir[File.expand_path('views', __dir__) + "/**/*.rb"].sort.each { |f| require f }
6
+ Dir[File.expand_path("views", __dir__) + "/**/*.rb"].sort.each { |f| require f }
6
7
 
7
8
  end
8
9
  end
data/lib/active_admin.rb CHANGED
@@ -1,59 +1,58 @@
1
- require 'active_support/core_ext'
2
- require 'set'
3
-
4
- require 'ransack'
5
- require 'ransack_ext'
6
- require 'kaminari'
7
- require 'formtastic'
8
- require 'formtastic_i18n'
9
- require 'inherited_resources'
10
- require 'jquery-rails'
11
- require 'sassc-rails'
12
- require 'arbre'
13
- require 'sprockets/es6'
14
-
15
- require 'active_admin/helpers/i18n'
1
+ # frozen_string_literal: true
2
+ require "active_support/core_ext"
3
+ require "set"
4
+
5
+ require "ransack"
6
+ require "ransack_ext"
7
+ require "kaminari"
8
+ require "formtastic"
9
+ require "formtastic_i18n"
10
+ require "inherited_resources"
11
+ require "jquery-rails"
12
+ require "arbre"
13
+
14
+ require "active_admin/helpers/i18n"
16
15
 
17
16
  module ActiveAdmin
18
17
 
19
- autoload :VERSION, 'active_admin/version'
20
- autoload :Application, 'active_admin/application'
21
- autoload :AssetRegistration, 'active_admin/asset_registration'
22
- autoload :Authorization, 'active_admin/authorization_adapter'
23
- autoload :AuthorizationAdapter, 'active_admin/authorization_adapter'
24
- autoload :Callbacks, 'active_admin/callbacks'
25
- autoload :Component, 'active_admin/component'
26
- autoload :BaseController, 'active_admin/base_controller'
27
- autoload :CanCanAdapter, 'active_admin/cancan_adapter'
28
- autoload :ControllerAction, 'active_admin/controller_action'
29
- autoload :CSVBuilder, 'active_admin/csv_builder'
30
- autoload :Dependency, 'active_admin/dependency'
31
- autoload :Deprecation, 'active_admin/deprecation'
32
- autoload :Devise, 'active_admin/devise'
33
- autoload :DSL, 'active_admin/dsl'
34
- autoload :FormBuilder, 'active_admin/form_builder'
35
- autoload :Inputs, 'active_admin/inputs'
36
- autoload :Localizers, 'active_admin/localizers'
37
- autoload :Menu, 'active_admin/menu'
38
- autoload :MenuCollection, 'active_admin/menu_collection'
39
- autoload :MenuItem, 'active_admin/menu_item'
40
- autoload :Namespace, 'active_admin/namespace'
41
- autoload :OrderClause, 'active_admin/order_clause'
42
- autoload :Page, 'active_admin/page'
43
- autoload :PagePresenter, 'active_admin/page_presenter'
44
- autoload :PageController, 'active_admin/page_controller'
45
- autoload :PageDSL, 'active_admin/page_dsl'
46
- autoload :PunditAdapter, 'active_admin/pundit_adapter'
47
- autoload :Resource, 'active_admin/resource'
48
- autoload :ResourceController, 'active_admin/resource_controller'
49
- autoload :ResourceDSL, 'active_admin/resource_dsl'
50
- autoload :Scope, 'active_admin/scope'
51
- autoload :ScopeChain, 'active_admin/helpers/scope_chain'
52
- autoload :SidebarSection, 'active_admin/sidebar_section'
53
- autoload :TableBuilder, 'active_admin/table_builder'
54
- autoload :ViewFactory, 'active_admin/view_factory'
55
- autoload :ViewHelpers, 'active_admin/view_helpers'
56
- autoload :Views, 'active_admin/views'
18
+ autoload :VERSION, "active_admin/version"
19
+ autoload :Application, "active_admin/application"
20
+ autoload :AssetRegistration, "active_admin/asset_registration"
21
+ autoload :Authorization, "active_admin/authorization_adapter"
22
+ autoload :AuthorizationAdapter, "active_admin/authorization_adapter"
23
+ autoload :Callbacks, "active_admin/callbacks"
24
+ autoload :Component, "active_admin/component"
25
+ autoload :BaseController, "active_admin/base_controller"
26
+ autoload :CanCanAdapter, "active_admin/cancan_adapter"
27
+ autoload :ControllerAction, "active_admin/controller_action"
28
+ autoload :CSVBuilder, "active_admin/csv_builder"
29
+ autoload :Dependency, "active_admin/dependency"
30
+ autoload :Deprecation, "active_admin/deprecation"
31
+ autoload :Devise, "active_admin/devise"
32
+ autoload :DSL, "active_admin/dsl"
33
+ autoload :FormBuilder, "active_admin/form_builder"
34
+ autoload :Inputs, "active_admin/inputs"
35
+ autoload :Localizers, "active_admin/localizers"
36
+ autoload :Menu, "active_admin/menu"
37
+ autoload :MenuCollection, "active_admin/menu_collection"
38
+ autoload :MenuItem, "active_admin/menu_item"
39
+ autoload :Namespace, "active_admin/namespace"
40
+ autoload :OrderClause, "active_admin/order_clause"
41
+ autoload :Page, "active_admin/page"
42
+ autoload :PagePresenter, "active_admin/page_presenter"
43
+ autoload :PageController, "active_admin/page_controller"
44
+ autoload :PageDSL, "active_admin/page_dsl"
45
+ autoload :PunditAdapter, "active_admin/pundit_adapter"
46
+ autoload :Resource, "active_admin/resource"
47
+ autoload :ResourceController, "active_admin/resource_controller"
48
+ autoload :ResourceDSL, "active_admin/resource_dsl"
49
+ autoload :Scope, "active_admin/scope"
50
+ autoload :ScopeChain, "active_admin/helpers/scope_chain"
51
+ autoload :SidebarSection, "active_admin/sidebar_section"
52
+ autoload :TableBuilder, "active_admin/table_builder"
53
+ autoload :ViewFactory, "active_admin/view_factory"
54
+ autoload :ViewHelpers, "active_admin/view_helpers"
55
+ autoload :Views, "active_admin/views"
57
56
 
58
57
  class << self
59
58
 
@@ -70,11 +69,11 @@ module ActiveAdmin
70
69
  application.prepare!
71
70
  end
72
71
 
73
- delegate :register, to: :application
72
+ delegate :register, to: :application
74
73
  delegate :register_page, to: :application
75
- delegate :unload!, to: :application
76
- delegate :load!, to: :application
77
- delegate :routes, to: :application
74
+ delegate :unload!, to: :application
75
+ delegate :load!, to: :application
76
+ delegate :routes, to: :application
78
77
 
79
78
  # A callback is triggered each time (before) Active Admin loads the configuration files.
80
79
  # In development mode, this will happen whenever the user changes files. In production
@@ -114,7 +113,7 @@ module ActiveAdmin
114
113
  private
115
114
 
116
115
  def wrap_block_for_active_support_notifications block
117
- proc { |event, *args| block.call *args }
116
+ proc { |_name, _start, _finish, _id, payload| block.call payload[:active_admin_application] }
118
117
  end
119
118
 
120
119
  end
@@ -122,13 +121,13 @@ module ActiveAdmin
122
121
  end
123
122
 
124
123
  # Require things that don't support autoload
125
- require 'active_admin/engine'
126
- require 'active_admin/error'
124
+ require "active_admin/engine"
125
+ require "active_admin/error"
127
126
 
128
127
  # Require internal plugins
129
- require 'active_admin/batch_actions'
130
- require 'active_admin/filters'
128
+ require "active_admin/batch_actions"
129
+ require "active_admin/filters"
131
130
 
132
131
  # Require ORM-specific plugins
133
- require 'active_admin/orm/active_record' if defined? ActiveRecord
134
- require 'active_admin/orm/mongoid' if defined? Mongoid
132
+ require "active_admin/orm/active_record" if defined? ActiveRecord
133
+ require "active_admin/orm/mongoid" if defined? Mongoid
data/lib/activeadmin.rb CHANGED
@@ -1 +1,2 @@
1
- require 'active_admin'
1
+ # frozen_string_literal: true
2
+ require "active_admin"