activeadmin 2.2.0 → 2.12.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 (274) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +382 -32
  3. data/CONTRIBUTING.md +45 -67
  4. data/README.md +11 -4
  5. data/app/assets/javascripts/active_admin/base.js +524 -0
  6. data/app/assets/stylesheets/active_admin/_base.scss +53 -37
  7. data/app/assets/stylesheets/active_admin/_forms.scss +0 -10
  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/_main_structure.scss +1 -1
  19. data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +0 -1
  20. data/app/javascript/active_admin/base.js +28 -0
  21. data/app/{assets/javascripts/active_admin/lib/batch_actions.es6 → javascript/active_admin/initializers/batch-actions.js} +9 -3
  22. data/app/javascript/active_admin/initializers/checkbox-toggler.js +3 -0
  23. data/app/javascript/active_admin/initializers/dropdown-menu.js +9 -0
  24. data/app/javascript/active_admin/initializers/filters.js +10 -0
  25. data/app/{assets/javascripts/active_admin/lib/has_many.es6 → javascript/active_admin/initializers/has-many.js} +4 -1
  26. data/app/javascript/active_admin/initializers/per-page.js +13 -0
  27. data/app/javascript/active_admin/initializers/table-checkbox-toggler.js +3 -0
  28. data/app/{assets/javascripts/active_admin/lib/checkbox-toggler.es6 → javascript/active_admin/lib/checkbox-toggler.js} +5 -5
  29. data/app/{assets/javascripts/active_admin/lib/dropdown-menu.es6 → javascript/active_admin/lib/dropdown-menu.js} +3 -10
  30. data/app/javascript/active_admin/lib/filters.js +39 -0
  31. data/app/{assets/javascripts/active_admin/lib/modal_dialog.es6 → javascript/active_admin/lib/modal-dialog.js} +10 -8
  32. data/app/javascript/active_admin/lib/per-page.js +38 -0
  33. data/app/{assets/javascripts/active_admin/lib/table-checkbox-toggler.es6 → javascript/active_admin/lib/table-checkbox-toggler.js} +5 -3
  34. data/app/javascript/active_admin/lib/utils.js +40 -0
  35. data/app/views/active_admin/devise/mailer/reset_password_instructions.html.erb +1 -1
  36. data/app/views/active_admin/devise/mailer/unlock_instructions.html.erb +2 -2
  37. data/app/views/active_admin/devise/shared/_links.erb +1 -1
  38. data/app/views/active_admin/page/index.html.arb +1 -0
  39. data/app/views/active_admin/resource/edit.html.arb +1 -0
  40. data/app/views/active_admin/resource/index.html.arb +1 -0
  41. data/app/views/active_admin/resource/new.html.arb +1 -0
  42. data/app/views/active_admin/resource/show.html.arb +1 -0
  43. data/app/views/kaminari/active_admin_countless/_first_page.html.erb +11 -0
  44. data/app/views/kaminari/active_admin_countless/_gap.html.erb +8 -0
  45. data/app/views/kaminari/active_admin_countless/_next_page.html.erb +11 -0
  46. data/app/views/kaminari/active_admin_countless/_page.html.erb +12 -0
  47. data/app/views/kaminari/active_admin_countless/_paginator.html.erb +24 -0
  48. data/app/views/kaminari/active_admin_countless/_prev_page.html.erb +11 -0
  49. data/app/views/layouts/active_admin.html.arb +1 -0
  50. data/app/views/layouts/active_admin_logged_out.html.erb +15 -5
  51. data/config/locales/ar.yml +6 -6
  52. data/config/locales/az.yml +138 -0
  53. data/config/locales/ca.yml +0 -1
  54. data/config/locales/de.yml +18 -0
  55. data/config/locales/en-CA.yml +3 -3
  56. data/config/locales/en-GB.yml +3 -3
  57. data/config/locales/en.yml +3 -3
  58. data/config/locales/es-MX.yml +2 -1
  59. data/config/locales/es.yml +5 -5
  60. data/config/locales/fr.yml +4 -4
  61. data/config/locales/it.yml +18 -0
  62. data/config/locales/ja.yml +3 -3
  63. data/config/locales/ko.yml +1 -1
  64. data/config/locales/lv.yml +2 -2
  65. data/config/locales/nl.yml +1 -1
  66. data/config/locales/ro.yml +3 -2
  67. data/config/locales/sk.yml +59 -0
  68. data/config/locales/vi.yml +6 -5
  69. data/docs/0-installation.md +27 -3
  70. data/docs/1-general-configuration.md +20 -0
  71. data/docs/11-decorators.md +16 -5
  72. data/docs/2-resource-customization.md +11 -2
  73. data/docs/3-index-pages/index-as-table.md +7 -0
  74. data/docs/3-index-pages.md +1 -1
  75. data/docs/5-forms.md +7 -2
  76. data/docs/6-show-pages.md +12 -0
  77. data/docs/8-custom-actions.md +1 -1
  78. data/docs/9-batch-actions.md +2 -2
  79. data/docs/Gemfile +3 -3
  80. data/docs/Gemfile.lock +192 -158
  81. data/docs/_config.yml +2 -0
  82. data/docs/_includes/top-menu.html +2 -2
  83. data/docs/documentation.md +1 -1
  84. data/docs/index.html +109 -8
  85. data/docs/stylesheets/main.css +29 -0
  86. data/lib/active_admin/abstract_view_factory.rb +1 -0
  87. data/lib/active_admin/application.rb +20 -20
  88. data/lib/active_admin/application_settings.rb +4 -3
  89. data/lib/active_admin/asset_registration.rb +1 -0
  90. data/lib/active_admin/authorization_adapter.rb +4 -3
  91. data/lib/active_admin/base_controller/authorization.rb +15 -13
  92. data/lib/active_admin/base_controller/menu.rb +1 -0
  93. data/lib/active_admin/base_controller.rb +6 -5
  94. data/lib/active_admin/batch_actions/controller.rb +4 -3
  95. data/lib/active_admin/batch_actions/resource_extension.rb +10 -8
  96. data/lib/active_admin/batch_actions/views/batch_action_form.rb +4 -3
  97. data/lib/active_admin/batch_actions/views/batch_action_selector.rb +7 -6
  98. data/lib/active_admin/batch_actions/views/selection_cells.rb +4 -3
  99. data/lib/active_admin/batch_actions.rb +1 -0
  100. data/lib/active_admin/callbacks.rb +1 -0
  101. data/lib/active_admin/cancan_adapter.rb +2 -1
  102. data/lib/active_admin/collection_decorator.rb +32 -0
  103. data/lib/active_admin/component.rb +1 -0
  104. data/lib/active_admin/controller_action.rb +1 -0
  105. data/lib/active_admin/csv_builder.rb +13 -23
  106. data/lib/active_admin/dependency.rb +13 -12
  107. data/lib/active_admin/deprecation.rb +1 -0
  108. data/lib/active_admin/devise.rb +16 -5
  109. data/lib/active_admin/dsl.rb +2 -1
  110. data/lib/active_admin/dynamic_setting.rb +1 -0
  111. data/lib/active_admin/dynamic_settings_node.rb +3 -2
  112. data/lib/active_admin/engine.rb +13 -9
  113. data/lib/active_admin/error.rb +1 -2
  114. data/lib/active_admin/filters/active.rb +2 -1
  115. data/lib/active_admin/filters/active_filter.rb +7 -7
  116. data/lib/active_admin/filters/active_sidebar.rb +4 -30
  117. data/lib/active_admin/filters/dsl.rb +1 -0
  118. data/lib/active_admin/filters/forms.rb +7 -6
  119. data/lib/active_admin/filters/formtastic_addons.rb +2 -6
  120. data/lib/active_admin/filters/resource_extension.rb +26 -1
  121. data/lib/active_admin/filters.rb +8 -7
  122. data/lib/active_admin/form_builder.rb +25 -20
  123. data/lib/active_admin/generators/boilerplate.rb +13 -4
  124. data/lib/active_admin/helpers/collection.rb +2 -0
  125. data/lib/active_admin/helpers/i18n.rb +1 -0
  126. data/lib/active_admin/helpers/optional_display.rb +3 -2
  127. data/lib/active_admin/helpers/routes/url_helpers.rb +1 -0
  128. data/lib/active_admin/helpers/scope_chain.rb +1 -0
  129. data/lib/active_admin/inputs/datepicker_input.rb +2 -1
  130. data/lib/active_admin/inputs/filters/base/search_method_select.rb +5 -4
  131. data/lib/active_admin/inputs/filters/base.rb +2 -1
  132. data/lib/active_admin/inputs/filters/boolean_input.rb +2 -1
  133. data/lib/active_admin/inputs/filters/check_boxes_input.rb +2 -1
  134. data/lib/active_admin/inputs/filters/date_picker_input.rb +1 -0
  135. data/lib/active_admin/inputs/filters/date_range_input.rb +16 -12
  136. data/lib/active_admin/inputs/filters/numeric_input.rb +1 -0
  137. data/lib/active_admin/inputs/filters/select_input.rb +3 -2
  138. data/lib/active_admin/inputs/filters/string_input.rb +1 -0
  139. data/lib/active_admin/inputs/filters/text_input.rb +1 -0
  140. data/lib/active_admin/inputs.rb +1 -0
  141. data/lib/active_admin/localizers/resource_localizer.rb +4 -3
  142. data/lib/active_admin/localizers.rb +2 -1
  143. data/lib/active_admin/menu.rb +7 -3
  144. data/lib/active_admin/menu_collection.rb +1 -0
  145. data/lib/active_admin/menu_item.rb +8 -7
  146. data/lib/active_admin/namespace.rb +14 -13
  147. data/lib/active_admin/namespace_settings.rb +21 -4
  148. data/lib/active_admin/order_clause.rb +3 -2
  149. data/lib/active_admin/orm/active_record/comments/comment.rb +4 -3
  150. data/lib/active_admin/orm/active_record/comments/namespace_helper.rb +1 -0
  151. data/lib/active_admin/orm/active_record/comments/resource_helper.rb +1 -0
  152. data/lib/active_admin/orm/active_record/comments/show_page_helper.rb +1 -0
  153. data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +20 -19
  154. data/lib/active_admin/orm/active_record/comments/views.rb +3 -2
  155. data/lib/active_admin/orm/active_record/comments.rb +20 -19
  156. data/lib/active_admin/orm/active_record.rb +2 -1
  157. data/lib/active_admin/orm/mongoid.rb +1 -0
  158. data/lib/active_admin/page.rb +2 -1
  159. data/lib/active_admin/page_controller.rb +1 -0
  160. data/lib/active_admin/page_dsl.rb +1 -0
  161. data/lib/active_admin/page_presenter.rb +1 -0
  162. data/lib/active_admin/pundit_adapter.rb +47 -11
  163. data/lib/active_admin/resource/action_items.rb +6 -5
  164. data/lib/active_admin/resource/attributes.rb +2 -1
  165. data/lib/active_admin/resource/belongs_to.rb +6 -2
  166. data/lib/active_admin/resource/controllers.rb +2 -1
  167. data/lib/active_admin/resource/includes.rb +1 -0
  168. data/lib/active_admin/resource/menu.rb +5 -4
  169. data/lib/active_admin/resource/model.rb +16 -0
  170. data/lib/active_admin/resource/naming.rb +6 -5
  171. data/lib/active_admin/resource/ordering.rb +1 -0
  172. data/lib/active_admin/resource/page_presenters.rb +1 -0
  173. data/lib/active_admin/resource/pagination.rb +1 -0
  174. data/lib/active_admin/resource/routes.rb +17 -10
  175. data/lib/active_admin/resource/scope_to.rb +8 -7
  176. data/lib/active_admin/resource/scopes.rb +1 -0
  177. data/lib/active_admin/resource/sidebars.rb +2 -1
  178. data/lib/active_admin/resource.rb +33 -19
  179. data/lib/active_admin/resource_collection.rb +1 -0
  180. data/lib/active_admin/resource_controller/action_builder.rb +1 -0
  181. data/lib/active_admin/resource_controller/data_access.rb +31 -5
  182. data/lib/active_admin/resource_controller/decorators.rb +8 -29
  183. data/lib/active_admin/resource_controller/polymorphic_routes.rb +38 -0
  184. data/lib/active_admin/resource_controller/resource_class_methods.rb +1 -0
  185. data/lib/active_admin/resource_controller/scoping.rb +1 -0
  186. data/lib/active_admin/resource_controller/sidebars.rb +1 -0
  187. data/lib/active_admin/resource_controller/streaming.rb +9 -7
  188. data/lib/active_admin/resource_controller.rb +14 -10
  189. data/lib/active_admin/resource_dsl.rb +11 -25
  190. data/lib/active_admin/router.rb +1 -0
  191. data/lib/active_admin/scope.rb +7 -6
  192. data/lib/active_admin/settings_node.rb +1 -0
  193. data/lib/active_admin/sidebar_section.rb +1 -0
  194. data/lib/active_admin/version.rb +2 -1
  195. data/lib/active_admin/view_factory.rb +18 -17
  196. data/lib/active_admin/view_helpers/active_admin_application_helper.rb +1 -0
  197. data/lib/active_admin/view_helpers/auto_link_helper.rb +1 -0
  198. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +4 -3
  199. data/lib/active_admin/view_helpers/display_helper.rb +15 -7
  200. data/lib/active_admin/view_helpers/download_format_links_helper.rb +2 -1
  201. data/lib/active_admin/view_helpers/fields_for.rb +3 -2
  202. data/lib/active_admin/view_helpers/flash_helper.rb +1 -0
  203. data/lib/active_admin/view_helpers/form_helper.rb +1 -0
  204. data/lib/active_admin/view_helpers/method_or_proc_helper.rb +1 -0
  205. data/lib/active_admin/view_helpers/scope_name_helper.rb +1 -0
  206. data/lib/active_admin/view_helpers/sidebar_helper.rb +1 -0
  207. data/lib/active_admin/view_helpers/title_helper.rb +1 -0
  208. data/lib/active_admin/view_helpers/view_factory_helper.rb +1 -0
  209. data/lib/active_admin/view_helpers.rb +2 -1
  210. data/lib/active_admin/views/action_items.rb +1 -0
  211. data/lib/active_admin/views/components/active_admin_form.rb +7 -6
  212. data/lib/active_admin/views/components/active_filters_sidebar_content.rb +59 -0
  213. data/lib/active_admin/views/components/attributes_table.rb +6 -5
  214. data/lib/active_admin/views/components/blank_slate.rb +2 -1
  215. data/lib/active_admin/views/components/columns.rb +1 -0
  216. data/lib/active_admin/views/components/dropdown_menu.rb +7 -9
  217. data/lib/active_admin/views/components/index_list.rb +4 -3
  218. data/lib/active_admin/views/components/menu.rb +2 -1
  219. data/lib/active_admin/views/components/menu_item.rb +5 -4
  220. data/lib/active_admin/views/components/paginated_collection.rb +21 -19
  221. data/lib/active_admin/views/components/panel.rb +2 -1
  222. data/lib/active_admin/views/components/scopes.rb +8 -5
  223. data/lib/active_admin/views/components/sidebar.rb +1 -0
  224. data/lib/active_admin/views/components/sidebar_section.rb +1 -0
  225. data/lib/active_admin/views/components/site_title.rb +2 -1
  226. data/lib/active_admin/views/components/status_tag.rb +12 -11
  227. data/lib/active_admin/views/components/table_for.rb +19 -17
  228. data/lib/active_admin/views/components/tabs.rb +4 -3
  229. data/lib/active_admin/views/components/unsupported_browser.rb +1 -0
  230. data/lib/active_admin/views/footer.rb +3 -1
  231. data/lib/active_admin/views/header.rb +3 -2
  232. data/lib/active_admin/views/index_as_block.rb +1 -0
  233. data/lib/active_admin/views/index_as_blog.rb +2 -1
  234. data/lib/active_admin/views/index_as_grid.rb +2 -1
  235. data/lib/active_admin/views/index_as_table.rb +24 -16
  236. data/lib/active_admin/views/pages/base.rb +19 -12
  237. data/lib/active_admin/views/pages/form.rb +1 -0
  238. data/lib/active_admin/views/pages/index.rb +16 -13
  239. data/lib/active_admin/views/pages/layout.rb +1 -0
  240. data/lib/active_admin/views/pages/page.rb +1 -0
  241. data/lib/active_admin/views/pages/show.rb +1 -0
  242. data/lib/active_admin/views/tabbed_navigation.rb +3 -2
  243. data/lib/active_admin/views/title_bar.rb +2 -1
  244. data/lib/active_admin/views.rb +2 -1
  245. data/lib/active_admin.rb +63 -64
  246. data/lib/activeadmin.rb +2 -1
  247. data/lib/generators/active_admin/assets/assets_generator.rb +3 -2
  248. data/lib/generators/active_admin/assets/templates/active_admin.scss +2 -2
  249. data/lib/generators/active_admin/devise/devise_generator.rb +6 -5
  250. data/lib/generators/active_admin/install/install_generator.rb +15 -8
  251. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +21 -1
  252. data/lib/generators/active_admin/install/templates/dashboard.rb +1 -0
  253. data/lib/generators/active_admin/page/page_generator.rb +2 -1
  254. data/lib/generators/active_admin/page/templates/page.rb +1 -0
  255. data/lib/generators/active_admin/resource/resource_generator.rb +4 -3
  256. data/lib/generators/active_admin/resource/templates/admin.rb.erb +4 -2
  257. data/lib/generators/active_admin/webpacker/plugins/jquery.js +7 -0
  258. data/lib/generators/active_admin/webpacker/templates/active_admin.js +5 -0
  259. data/lib/generators/active_admin/webpacker/templates/active_admin.scss +17 -0
  260. data/lib/generators/active_admin/webpacker/templates/print.scss +2 -0
  261. data/lib/generators/active_admin/webpacker/webpacker_generator.rb +27 -0
  262. data/lib/ransack_ext.rb +9 -8
  263. metadata +62 -91
  264. data/app/assets/images/active_admin/nested_menu_arrow.gif +0 -0
  265. data/app/assets/images/active_admin/nested_menu_arrow_dark.gif +0 -0
  266. data/app/assets/images/active_admin/orderable.png +0 -0
  267. data/app/assets/javascripts/active_admin/base.es6 +0 -23
  268. data/app/assets/javascripts/active_admin/initializers/filters.es6 +0 -45
  269. data/app/assets/javascripts/active_admin/lib/active_admin.es6 +0 -41
  270. data/app/assets/javascripts/active_admin/lib/per_page.es6 +0 -47
  271. /data/app/{assets/javascripts/active_admin/ext/jquery-ui.es6 → javascript/active_admin/ext/jquery-ui.js} +0 -0
  272. /data/app/{assets/javascripts/active_admin/ext/jquery.es6 → javascript/active_admin/ext/jquery.js} +0 -0
  273. /data/app/{assets/javascripts/active_admin/initializers/datepicker.es6 → javascript/active_admin/initializers/datepicker.js} +0 -0
  274. /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
 
@@ -192,6 +193,13 @@ module ActiveAdmin
192
193
  # end
193
194
  # ```
194
195
  #
196
+ # You can also define associated objects to include outside of the
197
+ # `scoped_collection` method:
198
+ #
199
+ # ```ruby
200
+ # includes :publisher
201
+ # ```
202
+ #
195
203
  # Then it's simple to sort by any Publisher attribute from within the index table:
196
204
  #
197
205
  # ```ruby
@@ -271,13 +279,13 @@ module ActiveAdmin
271
279
  # Display a column for checkbox
272
280
  def selectable_column
273
281
  return unless active_admin_config.batch_actions.any?
274
- 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|
275
283
  resource_selection_cell resource
276
284
  end
277
285
  end
278
286
 
279
287
  def index_column(start_value = 1)
280
- column '#', class: 'col-index', sortable: false do |resource|
288
+ column "#", class: "col-index", sortable: false do |resource|
281
289
  @collection.offset_value + @collection.index(resource) + start_value
282
290
  end
283
291
  end
@@ -286,9 +294,9 @@ module ActiveAdmin
286
294
  def id_column
287
295
  raise "#{resource_class.name} has no primary_key!" unless resource_class.primary_key
288
296
  column(resource_class.human_attribute_name(resource_class.primary_key), sortable: resource_class.primary_key) do |resource|
289
- if controller.action_methods.include?('show')
297
+ if controller.action_methods.include?("show")
290
298
  link_to resource.id, resource_path(resource), class: "resource_id_link"
291
- elsif controller.action_methods.include?('edit')
299
+ elsif controller.action_methods.include?("edit")
292
300
  link_to resource.id, edit_resource_path(resource), class: "resource_id_link"
293
301
  else
294
302
  resource.id
@@ -297,7 +305,7 @@ module ActiveAdmin
297
305
  end
298
306
 
299
307
  def default_actions
300
- 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."
301
309
  end
302
310
 
303
311
  # Add links to perform actions.
@@ -337,12 +345,12 @@ module ActiveAdmin
337
345
  #
338
346
  # ```
339
347
  def actions(options = {}, &block)
340
- name = options.delete(:name) { '' }
341
- defaults = options.delete(:defaults) { true }
342
- dropdown = options.delete(:dropdown) { false }
343
- 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" }
344
352
 
345
- options[:class] ||= 'col-actions'
353
+ options[:class] ||= "col-actions"
346
354
 
347
355
  column name, options do |resource|
348
356
  if dropdown
@@ -366,23 +374,23 @@ module ActiveAdmin
366
374
 
367
375
  def defaults(resource, options = {})
368
376
  localizer = ActiveAdmin::Localizers.resource(active_admin_config)
369
- if controller.action_methods.include?('show') && authorized?(ActiveAdmin::Auth::READ, resource)
377
+ if controller.action_methods.include?("show") && authorized?(ActiveAdmin::Auth::READ, resource)
370
378
  item localizer.t(:view), resource_path(resource), class: "view_link #{options[:css_class]}", title: localizer.t(:view)
371
379
  end
372
- if controller.action_methods.include?('edit') && authorized?(ActiveAdmin::Auth::UPDATE, resource)
380
+ if controller.action_methods.include?("edit") && authorized?(ActiveAdmin::Auth::UPDATE, resource)
373
381
  item localizer.t(:edit), edit_resource_path(resource), class: "edit_link #{options[:css_class]}", title: localizer.t(:edit)
374
382
  end
375
- if controller.action_methods.include?('destroy') && authorized?(ActiveAdmin::Auth::DESTROY, resource)
383
+ if controller.action_methods.include?("destroy") && authorized?(ActiveAdmin::Auth::DESTROY, resource)
376
384
  item localizer.t(:delete), resource_path(resource), class: "delete_link #{options[:css_class]}", title: localizer.t(:delete),
377
- method: :delete, data: { confirm: localizer.t(:delete_confirmation) }
385
+ method: :delete, data: { confirm: localizer.t(:delete_confirmation) }
378
386
  end
379
387
  end
380
388
 
381
389
  class TableActions < ActiveAdmin::Component
382
390
  builder_method :table_actions
383
391
 
384
- def item *args
385
- text_node link_to *args
392
+ def item *args, **kwargs
393
+ text_node link_to(*args, **kwargs)
386
394
  end
387
395
  end
388
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,19 +30,23 @@ 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
41
  active_admin_application.javascripts.each do |path|
40
- text_node(javascript_include_tag(path))
42
+ javascript_tag = active_admin_namespace.use_webpacker ? javascript_pack_tag(path) : javascript_include_tag(path)
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
52
  text_node csrf_meta_tag
@@ -63,9 +68,9 @@ module ActiveAdmin
63
68
  def body_classes
64
69
  Arbre::HTML::ClassList.new [
65
70
  params[:action],
66
- params[:controller].tr('/', '_'),
67
- 'active_admin', 'logged_in',
68
- active_admin_namespace.name.to_s + '_namespace'
71
+ params[:controller].tr("/", "_"),
72
+ "active_admin", "logged_in",
73
+ active_admin_namespace.name.to_s + "_namespace"
69
74
  ]
70
75
  end
71
76
 
@@ -79,14 +84,16 @@ module ActiveAdmin
79
84
  build_flash_messages
80
85
  div id: "active_admin_content", class: (skip_sidebar? ? "without_sidebar" : "with_sidebar") do
81
86
  build_main_content_wrapper
82
- sidebar sidebar_sections_for_action, id: 'sidebar' unless skip_sidebar?
87
+ sidebar sidebar_sections_for_action, id: "sidebar" unless skip_sidebar?
83
88
  end
84
89
  end
85
90
 
86
91
  def build_flash_messages
87
- div class: 'flashes' do
88
- flash_messages.each do |type, message|
89
- div message, class: "flash flash_#{type}"
92
+ div class: "flashes" do
93
+ flash_messages.each do |type, messages|
94
+ [*messages].each do |message|
95
+ div message, class: "flash flash_#{type}"
96
+ end
90
97
  end
91
98
  end
92
99
  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::CREATE, 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 }
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