activeadmin 2.4.0 → 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 (183) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +192 -30
  3. data/CONTRIBUTING.md +42 -62
  4. data/README.md +4 -4
  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/_header.scss +40 -8
  8. data/app/assets/stylesheets/active_admin/_mixins.scss +1 -1
  9. data/app/assets/stylesheets/active_admin/components/_comments.scss +2 -2
  10. data/app/assets/stylesheets/active_admin/components/_tables.scss +1 -2
  11. data/app/assets/stylesheets/active_admin/mixins/_all.scss +8 -8
  12. data/app/assets/stylesheets/active_admin/mixins/_variables.scss +8 -0
  13. data/app/assets/stylesheets/active_admin/print.scss +2 -2
  14. data/app/assets/stylesheets/active_admin/structure/_main_structure.scss +1 -1
  15. data/app/javascript/active_admin/base.js +28 -0
  16. data/app/{assets/javascripts/active_admin/lib/batch_actions.es6 → javascript/active_admin/initializers/batch-actions.js} +4 -2
  17. data/app/javascript/active_admin/initializers/checkbox-toggler.js +3 -0
  18. data/app/javascript/active_admin/initializers/dropdown-menu.js +9 -0
  19. data/app/javascript/active_admin/initializers/filters.js +10 -0
  20. data/app/javascript/active_admin/initializers/per-page.js +13 -0
  21. data/app/javascript/active_admin/initializers/table-checkbox-toggler.js +3 -0
  22. data/app/{assets/javascripts/active_admin/lib/checkbox-toggler.es6 → javascript/active_admin/lib/checkbox-toggler.js} +5 -5
  23. data/app/{assets/javascripts/active_admin/lib/dropdown-menu.es6 → javascript/active_admin/lib/dropdown-menu.js} +3 -10
  24. data/app/javascript/active_admin/lib/filters.js +39 -0
  25. data/app/{assets/javascripts/active_admin/lib/modal_dialog.es6 → javascript/active_admin/lib/modal-dialog.js} +10 -8
  26. data/app/javascript/active_admin/lib/per-page.js +38 -0
  27. data/app/{assets/javascripts/active_admin/lib/table-checkbox-toggler.es6 → javascript/active_admin/lib/table-checkbox-toggler.js} +5 -3
  28. data/app/javascript/active_admin/lib/utils.js +40 -0
  29. data/app/views/active_admin/devise/mailer/reset_password_instructions.html.erb +1 -1
  30. data/app/views/active_admin/devise/mailer/unlock_instructions.html.erb +2 -2
  31. data/app/views/layouts/active_admin_logged_out.html.erb +15 -5
  32. data/config/locales/ar.yml +6 -6
  33. data/config/locales/az.yml +138 -0
  34. data/config/locales/en-CA.yml +3 -3
  35. data/config/locales/en-GB.yml +3 -3
  36. data/config/locales/en.yml +3 -3
  37. data/config/locales/es-MX.yml +2 -1
  38. data/config/locales/es.yml +5 -5
  39. data/config/locales/fr.yml +4 -4
  40. data/config/locales/it.yml +18 -0
  41. data/config/locales/ja.yml +3 -3
  42. data/config/locales/lv.yml +2 -2
  43. data/config/locales/vi.yml +6 -5
  44. data/docs/0-installation.md +26 -2
  45. data/docs/1-general-configuration.md +20 -0
  46. data/docs/11-decorators.md +16 -5
  47. data/docs/2-resource-customization.md +10 -1
  48. data/docs/3-index-pages.md +1 -1
  49. data/docs/5-forms.md +6 -1
  50. data/docs/6-show-pages.md +12 -0
  51. data/docs/9-batch-actions.md +2 -2
  52. data/docs/Gemfile +2 -2
  53. data/docs/Gemfile.lock +124 -113
  54. data/docs/_includes/top-menu.html +1 -1
  55. data/docs/documentation.md +1 -1
  56. data/docs/index.html +6 -6
  57. data/lib/active_admin/application.rb +14 -14
  58. data/lib/active_admin/application_settings.rb +3 -3
  59. data/lib/active_admin/authorization_adapter.rb +3 -3
  60. data/lib/active_admin/base_controller/authorization.rb +13 -12
  61. data/lib/active_admin/base_controller.rb +4 -4
  62. data/lib/active_admin/batch_actions/controller.rb +3 -3
  63. data/lib/active_admin/batch_actions/resource_extension.rb +9 -8
  64. data/lib/active_admin/batch_actions/views/batch_action_form.rb +3 -3
  65. data/lib/active_admin/batch_actions/views/batch_action_selector.rb +6 -6
  66. data/lib/active_admin/batch_actions/views/selection_cells.rb +3 -3
  67. data/lib/active_admin/cancan_adapter.rb +1 -1
  68. data/lib/active_admin/collection_decorator.rb +31 -0
  69. data/lib/active_admin/csv_builder.rb +11 -7
  70. data/lib/active_admin/dependency.rb +11 -11
  71. data/lib/active_admin/devise.rb +5 -5
  72. data/lib/active_admin/dsl.rb +1 -1
  73. data/lib/active_admin/dynamic_settings_node.rb +2 -2
  74. data/lib/active_admin/engine.rb +10 -8
  75. data/lib/active_admin/error.rb +0 -2
  76. data/lib/active_admin/filters/active.rb +1 -1
  77. data/lib/active_admin/filters/active_filter.rb +6 -7
  78. data/lib/active_admin/filters/active_sidebar.rb +5 -5
  79. data/lib/active_admin/filters/forms.rb +6 -6
  80. data/lib/active_admin/filters/formtastic_addons.rb +1 -6
  81. data/lib/active_admin/filters/resource_extension.rb +1 -1
  82. data/lib/active_admin/filters.rb +7 -7
  83. data/lib/active_admin/form_builder.rb +24 -20
  84. data/lib/active_admin/generators/boilerplate.rb +1 -1
  85. data/lib/active_admin/helpers/optional_display.rb +2 -2
  86. data/lib/active_admin/inputs/datepicker_input.rb +1 -1
  87. data/lib/active_admin/inputs/filters/base/search_method_select.rb +4 -4
  88. data/lib/active_admin/inputs/filters/base.rb +1 -1
  89. data/lib/active_admin/inputs/filters/boolean_input.rb +1 -1
  90. data/lib/active_admin/inputs/filters/check_boxes_input.rb +1 -1
  91. data/lib/active_admin/inputs/filters/date_range_input.rb +15 -12
  92. data/lib/active_admin/inputs/filters/select_input.rb +2 -2
  93. data/lib/active_admin/localizers/resource_localizer.rb +3 -3
  94. data/lib/active_admin/localizers.rb +1 -1
  95. data/lib/active_admin/menu.rb +6 -3
  96. data/lib/active_admin/menu_item.rb +7 -7
  97. data/lib/active_admin/namespace.rb +12 -12
  98. data/lib/active_admin/namespace_settings.rb +8 -5
  99. data/lib/active_admin/order_clause.rb +1 -1
  100. data/lib/active_admin/orm/active_record/comments/comment.rb +3 -3
  101. data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +19 -19
  102. data/lib/active_admin/orm/active_record/comments/views.rb +2 -2
  103. data/lib/active_admin/orm/active_record/comments.rb +19 -19
  104. data/lib/active_admin/orm/active_record.rb +1 -1
  105. data/lib/active_admin/page.rb +1 -1
  106. data/lib/active_admin/pundit_adapter.rb +5 -5
  107. data/lib/active_admin/resource/action_items.rb +5 -5
  108. data/lib/active_admin/resource/attributes.rb +1 -1
  109. data/lib/active_admin/resource/belongs_to.rb +2 -2
  110. data/lib/active_admin/resource/controllers.rb +1 -1
  111. data/lib/active_admin/resource/menu.rb +4 -4
  112. data/lib/active_admin/resource/naming.rb +5 -5
  113. data/lib/active_admin/resource/routes.rb +5 -7
  114. data/lib/active_admin/resource/scope_to.rb +7 -7
  115. data/lib/active_admin/resource/sidebars.rb +1 -1
  116. data/lib/active_admin/resource.rb +18 -18
  117. data/lib/active_admin/resource_controller/data_access.rb +1 -1
  118. data/lib/active_admin/resource_controller/decorators.rb +6 -28
  119. data/lib/active_admin/resource_controller/polymorphic_routes.rb +3 -2
  120. data/lib/active_admin/resource_controller/streaming.rb +7 -6
  121. data/lib/active_admin/resource_controller.rb +12 -11
  122. data/lib/active_admin/resource_dsl.rb +5 -5
  123. data/lib/active_admin/scope.rb +6 -6
  124. data/lib/active_admin/version.rb +1 -1
  125. data/lib/active_admin/view_factory.rb +17 -17
  126. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +3 -3
  127. data/lib/active_admin/view_helpers/display_helper.rb +5 -5
  128. data/lib/active_admin/view_helpers/download_format_links_helper.rb +1 -1
  129. data/lib/active_admin/view_helpers/fields_for.rb +2 -2
  130. data/lib/active_admin/view_helpers.rb +1 -1
  131. data/lib/active_admin/views/components/active_admin_form.rb +5 -5
  132. data/lib/active_admin/views/components/attributes_table.rb +5 -5
  133. data/lib/active_admin/views/components/blank_slate.rb +1 -1
  134. data/lib/active_admin/views/components/dropdown_menu.rb +8 -8
  135. data/lib/active_admin/views/components/index_list.rb +3 -3
  136. data/lib/active_admin/views/components/menu.rb +1 -1
  137. data/lib/active_admin/views/components/menu_item.rb +4 -4
  138. data/lib/active_admin/views/components/paginated_collection.rb +19 -18
  139. data/lib/active_admin/views/components/panel.rb +1 -1
  140. data/lib/active_admin/views/components/scopes.rb +7 -5
  141. data/lib/active_admin/views/components/site_title.rb +1 -1
  142. data/lib/active_admin/views/components/status_tag.rb +11 -11
  143. data/lib/active_admin/views/components/table_for.rb +18 -17
  144. data/lib/active_admin/views/components/tabs.rb +3 -3
  145. data/lib/active_admin/views/footer.rb +2 -1
  146. data/lib/active_admin/views/header.rb +2 -2
  147. data/lib/active_admin/views/index_as_blog.rb +1 -1
  148. data/lib/active_admin/views/index_as_grid.rb +1 -1
  149. data/lib/active_admin/views/index_as_table.rb +16 -16
  150. data/lib/active_admin/views/pages/base.rb +15 -11
  151. data/lib/active_admin/views/pages/index.rb +15 -13
  152. data/lib/active_admin/views/tabbed_navigation.rb +2 -2
  153. data/lib/active_admin/views/title_bar.rb +1 -1
  154. data/lib/active_admin/views.rb +1 -1
  155. data/lib/active_admin.rb +61 -63
  156. data/lib/activeadmin.rb +1 -1
  157. data/lib/generators/active_admin/assets/assets_generator.rb +2 -2
  158. data/lib/generators/active_admin/assets/templates/active_admin.scss +2 -2
  159. data/lib/generators/active_admin/devise/devise_generator.rb +5 -5
  160. data/lib/generators/active_admin/install/install_generator.rb +14 -8
  161. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +9 -2
  162. data/lib/generators/active_admin/page/page_generator.rb +1 -1
  163. data/lib/generators/active_admin/resource/resource_generator.rb +3 -3
  164. data/lib/generators/active_admin/webpacker/plugins/jquery.js +7 -0
  165. data/lib/generators/active_admin/webpacker/templates/active_admin.js +5 -0
  166. data/lib/generators/active_admin/webpacker/templates/active_admin.scss +17 -0
  167. data/lib/generators/active_admin/webpacker/templates/print.scss +2 -0
  168. data/lib/generators/active_admin/webpacker/webpacker_generator.rb +26 -0
  169. data/lib/ransack_ext.rb +8 -8
  170. metadata +46 -84
  171. data/app/assets/images/active_admin/nested_menu_arrow.gif +0 -0
  172. data/app/assets/images/active_admin/nested_menu_arrow_dark.gif +0 -0
  173. data/app/assets/images/active_admin/orderable.png +0 -0
  174. data/app/assets/javascripts/active_admin/base.es6 +0 -23
  175. data/app/assets/javascripts/active_admin/initializers/filters.es6 +0 -45
  176. data/app/assets/javascripts/active_admin/lib/active_admin.es6 +0 -41
  177. data/app/assets/javascripts/active_admin/lib/per_page.es6 +0 -47
  178. /data/{vendor → app}/assets/stylesheets/active_admin/_normalize.scss +0 -0
  179. /data/app/{assets/javascripts/active_admin/ext/jquery-ui.es6 → javascript/active_admin/ext/jquery-ui.js} +0 -0
  180. /data/app/{assets/javascripts/active_admin/ext/jquery.es6 → javascript/active_admin/ext/jquery.js} +0 -0
  181. /data/app/{assets/javascripts/active_admin/initializers/datepicker.es6 → javascript/active_admin/initializers/datepicker.js} +0 -0
  182. /data/app/{assets/javascripts/active_admin/lib/has_many.es6 → javascript/active_admin/initializers/has-many.js} +0 -0
  183. /data/app/{assets/javascripts/active_admin/initializers/tabs.es6 → javascript/active_admin/initializers/tabs.js} +0 -0
@@ -31,15 +31,15 @@ module ActiveAdmin
31
31
 
32
32
  def wrapper_html_options
33
33
  opts = super
34
- (opts[:class] ||= '') << ' select_and_search' unless seems_searchable?
34
+ (opts[:class] ||= "") << " select_and_search" unless seems_searchable?
35
35
  opts
36
36
  end
37
37
 
38
38
  def to_html
39
39
  input_wrapping do
40
- label_html << # your label
40
+ label_html << # your label
41
41
  select_html << # the dropdown that holds the available search methods
42
- input_html # your input field
42
+ input_html # your input field
43
43
  end
44
44
  end
45
45
 
@@ -48,7 +48,7 @@ module ActiveAdmin
48
48
  end
49
49
 
50
50
  def select_html
51
- template.select_tag '', template.options_for_select(filter_options, current_filter)
51
+ template.select_tag "", template.options_for_select(filter_options, current_filter)
52
52
  end
53
53
 
54
54
  def filters
@@ -25,7 +25,7 @@ module ActiveAdmin
25
25
 
26
26
  def wrapper_html_options
27
27
  opts = super
28
- (opts[:class] ||= '') << " filter_form_field filter_#{as}"
28
+ (opts[:class] ||= "") << " filter_form_field filter_#{as}"
29
29
  opts
30
30
  end
31
31
 
@@ -16,7 +16,7 @@ module ActiveAdmin
16
16
 
17
17
  # Provide the AA translation to the blank input field.
18
18
  def include_blank
19
- I18n.t 'active_admin.any' if super
19
+ I18n.t "active_admin.any" if super
20
20
  end
21
21
  end
22
22
  end
@@ -22,7 +22,7 @@ module ActiveAdmin
22
22
 
23
23
  # Add whitespace before label
24
24
  def choice_label(choice)
25
- ' ' + super
25
+ " " + super
26
26
  end
27
27
 
28
28
  # Don't wrap in UL tag
@@ -7,8 +7,8 @@ module ActiveAdmin
7
7
  def to_html
8
8
  input_wrapping do
9
9
  [ label_html,
10
- builder.text_field(gt_input_name, input_html_options(gt_input_name, gt_input_placeholder)),
11
- builder.text_field(lt_input_name, input_html_options(lt_input_name, lt_input_placeholder)),
10
+ builder.text_field(gt_input_name, input_html_options_for(gt_input_name, gt_input_placeholder)),
11
+ builder.text_field(lt_input_name, input_html_options_for(lt_input_name, lt_input_placeholder)),
12
12
  ].join("\n").html_safe
13
13
  end
14
14
  end
@@ -22,18 +22,21 @@ module ActiveAdmin
22
22
  column && column.type == :date ? "#{method}_lteq" : "#{method}_lteq_datetime"
23
23
  end
24
24
 
25
- def input_html_options(input_name = gt_input_name, placeholder = gt_input_placeholder)
26
- current_value = begin
27
- #cast value to date object before rendering input
28
- @object.public_send(input_name).to_s.to_date
29
- rescue
30
- nil
31
- end
25
+ def input_html_options
32
26
  { size: 12,
33
27
  class: "datepicker",
34
- maxlength: 10,
35
- placeholder: placeholder,
36
- value: current_value ? current_value.strftime("%Y-%m-%d") : "" }
28
+ maxlength: 10 }.merge(options[:input_html] || {})
29
+ end
30
+
31
+ def input_html_options_for(input_name, placeholder)
32
+ current_value = begin
33
+ #cast value to date object before rendering input
34
+ @object.public_send(input_name).to_s.to_date
35
+ rescue
36
+ nil
37
+ end
38
+ { placeholder: placeholder,
39
+ value: current_value ? current_value.strftime("%Y-%m-%d") : "" }.merge(input_html_options)
37
40
  end
38
41
 
39
42
  def gt_input_placeholder
@@ -7,7 +7,7 @@ module ActiveAdmin
7
7
  def input_name
8
8
  return method if seems_searchable?
9
9
 
10
- searchable_method_name + (multiple? ? '_in' : '_eq')
10
+ searchable_method_name + (multiple? ? "_in" : "_eq")
11
11
  end
12
12
 
13
13
  def searchable_method_name
@@ -22,7 +22,7 @@ module ActiveAdmin
22
22
 
23
23
  # Provide the AA translation to the blank input field.
24
24
  def include_blank
25
- I18n.t 'active_admin.any' if super
25
+ I18n.t "active_admin.any" if super
26
26
  end
27
27
 
28
28
  def input_html_options_name
@@ -19,16 +19,16 @@ module ActiveAdmin
19
19
 
20
20
  def translate(key, options = {})
21
21
  scope = options.delete(:scope)
22
- specific_key = array_to_key('resources', @model_name, scope, key)
22
+ specific_key = array_to_key("resources", @model_name, scope, key)
23
23
  defaults = [array_to_key(scope, key), key.to_s.titleize]
24
- ::I18n.t specific_key, options.reverse_merge(model: @model, default: defaults, scope: 'active_admin')
24
+ ::I18n.t specific_key, **options.reverse_merge(model: @model, default: defaults, scope: "active_admin")
25
25
  end
26
26
  alias_method :t, :translate
27
27
 
28
28
  protected
29
29
 
30
30
  def array_to_key(*arr)
31
- arr.flatten.compact.join('.').to_sym
31
+ arr.flatten.compact.join(".").to_sym
32
32
  end
33
33
  end
34
34
  end
@@ -1,4 +1,4 @@
1
- require 'active_admin/localizers/resource_localizer'
1
+ require "active_admin/localizers/resource_localizer"
2
2
 
3
3
  module ActiveAdmin
4
4
  module Localizers
@@ -47,7 +47,10 @@ module ActiveAdmin
47
47
  # menu.add parent: 'Dashboard', label: 'My Child Dashboard'
48
48
  #
49
49
  def add(options)
50
- item = if parent = options.delete(:parent)
50
+ parent_chain = Array.wrap(options.delete(:parent))
51
+
52
+ item = if parent = parent_chain.shift
53
+ options[:parent] = parent_chain if parent_chain.any?
51
54
  (self[parent] || add(label: parent)).add options
52
55
  else
53
56
  _add options.merge parent: self
@@ -60,7 +63,7 @@ module ActiveAdmin
60
63
 
61
64
  # Whether any children match the given item.
62
65
  def include?(item)
63
- @children.values.include? item
66
+ @children.values.include?(item) || @children.values.any? { |child| child.include?(item) }
64
67
  end
65
68
 
66
69
  # Used in the UI to visually distinguish which menu item is selected.
@@ -87,7 +90,7 @@ module ActiveAdmin
87
90
  def normalize_id(id)
88
91
  case id
89
92
  when String, Symbol, ActiveModel::Name
90
- id.to_s.downcase.tr ' ', '_'
93
+ id.to_s.downcase.tr " ", "_"
91
94
  when ActiveAdmin::Resource::Name
92
95
  id.param_key
93
96
  else
@@ -45,13 +45,13 @@ module ActiveAdmin
45
45
  #
46
46
  def initialize(options = {})
47
47
  super() # MenuNode
48
- @label = options[:label]
49
- @dirty_id = options[:id] || options[:label]
50
- @url = options[:url] || '#'
51
- @priority = options[:priority] || 10
52
- @html_options = options[:html_options] || {}
53
- @should_display = options[:if] || proc { true }
54
- @parent = options[:parent]
48
+ @label = options[:label]
49
+ @dirty_id = options[:id] || options[:label]
50
+ @url = options[:url] || "#"
51
+ @priority = options[:priority] || 10
52
+ @html_options = options[:html_options] || {}
53
+ @should_display = options[:if] || proc { true }
54
+ @parent = options[:parent]
55
55
 
56
56
  yield(self) if block_given? # Builder style syntax
57
57
  end
@@ -1,4 +1,4 @@
1
- require 'active_admin/resource_collection'
1
+ require "active_admin/resource_collection"
2
2
 
3
3
  module ActiveAdmin
4
4
 
@@ -31,7 +31,7 @@ module ActiveAdmin
31
31
  end
32
32
  end
33
33
 
34
- RegisterEvent = 'active_admin.namespace.register'.freeze
34
+ RegisterEvent = "active_admin.namespace.register".freeze
35
35
 
36
36
  attr_reader :application, :resources, :menus
37
37
 
@@ -149,10 +149,10 @@ module ActiveAdmin
149
149
  def add_logout_button_to_menu(menu, priority = 20, html_options = {})
150
150
  if logout_link_path
151
151
  html_options = html_options.reverse_merge(method: logout_link_method || :get)
152
- menu.add id: 'logout', priority: priority, html_options: html_options,
153
- label: -> { I18n.t 'active_admin.logout' },
154
- url: -> { render_or_call_method_or_proc_on self, active_admin_namespace.logout_link_path },
155
- if: :current_active_admin_user?
152
+ menu.add id: "logout", priority: priority, html_options: html_options,
153
+ label: -> { I18n.t "active_admin.logout" },
154
+ url: -> { render_or_call_method_or_proc_on self, active_admin_namespace.logout_link_path },
155
+ if: :current_active_admin_user?
156
156
  end
157
157
  end
158
158
 
@@ -164,10 +164,10 @@ module ActiveAdmin
164
164
  #
165
165
  def add_current_user_to_menu(menu, priority = 10, html_options = {})
166
166
  if current_user_method
167
- menu.add id: 'current_user', priority: priority, html_options: html_options,
168
- label: -> { display_name current_active_admin_user },
169
- url: -> { auto_url_for(current_active_admin_user) },
170
- if: :current_active_admin_user?
167
+ menu.add id: "current_user", priority: priority, html_options: html_options,
168
+ label: -> { display_name current_active_admin_user },
169
+ url: -> { auto_url_for(current_active_admin_user) },
170
+ if: :current_active_admin_user?
171
171
  end
172
172
  end
173
173
 
@@ -211,8 +211,8 @@ module ActiveAdmin
211
211
 
212
212
  def unload_resources!
213
213
  resources.each do |resource|
214
- parent = (module_name || 'Object').constantize
215
- name = resource.controller_name.split('::').last
214
+ parent = (module_name || "Object").constantize
215
+ name = resource.controller_name.split("::").last
216
216
  parent.send(:remove_const, name) if parent.const_defined?(name, false)
217
217
 
218
218
  # Remove circular references
@@ -1,4 +1,4 @@
1
- require 'active_admin/dynamic_settings_node'
1
+ require "active_admin/dynamic_settings_node"
2
2
 
3
3
  module ActiveAdmin
4
4
  class NamespaceSettings < DynamicSettingsNode
@@ -57,7 +57,7 @@ module ActiveAdmin
57
57
  register :filters, true
58
58
 
59
59
  # The namespace root
60
- register :root_to, 'dashboard#index'
60
+ register :root_to, "dashboard#index"
61
61
 
62
62
  # Options that are passed to root_to
63
63
  register :root_to_options, {}
@@ -73,7 +73,7 @@ module ActiveAdmin
73
73
  register :create_another, false
74
74
 
75
75
  # Default CSV options
76
- register :csv_options, { col_sep: ',', byte_order_mark: "\xEF\xBB\xBF" }
76
+ register :csv_options, { col_sep: ",", byte_order_mark: "\xEF\xBB\xBF" }
77
77
 
78
78
  # Default Download Links options
79
79
  register :download_links, true
@@ -102,7 +102,7 @@ module ActiveAdmin
102
102
  ]
103
103
 
104
104
  # Set flash message keys that shouldn't show in ActiveAdmin
105
- register :flash_keys_to_except, ['timedout']
105
+ register :flash_keys_to_except, ["timedout"]
106
106
 
107
107
  # Include association filters by default
108
108
  register :include_default_association_filters, true
@@ -118,6 +118,9 @@ module ActiveAdmin
118
118
  :title,
119
119
  :email,
120
120
  ]
121
- register :filter_method_for_large_association, '_starts_with'
121
+ register :filter_method_for_large_association, "_starts_with"
122
+
123
+ # Switch between asset pipeline and webpacker assets
124
+ register :use_webpacker, false
122
125
  end
123
126
  end
@@ -20,7 +20,7 @@ module ActiveAdmin
20
20
  end
21
21
 
22
22
  def to_sql
23
- [table_column, @op, ' ', @order].compact.join
23
+ [table_column, @op, " ", @order].compact.join
24
24
  end
25
25
 
26
26
  def table
@@ -4,7 +4,7 @@ module ActiveAdmin
4
4
  self.table_name = "#{table_name_prefix}active_admin_comments#{table_name_suffix}"
5
5
 
6
6
  belongs_to :resource, polymorphic: true, optional: true
7
- belongs_to :author, polymorphic: true
7
+ belongs_to :author, polymorphic: true
8
8
 
9
9
  validates_presence_of :body, :namespace, :resource
10
10
 
@@ -18,8 +18,8 @@ module ActiveAdmin
18
18
  def self.find_for_resource_in_namespace(resource, namespace)
19
19
  where(
20
20
  resource_type: resource_type(resource),
21
- resource_id: resource.id,
22
- namespace: namespace.to_s
21
+ resource_id: resource.id,
22
+ namespace: namespace.to_s
23
23
  ).order(ActiveAdmin.application.namespaces[namespace.to_sym].comments_order)
24
24
  end
25
25
 
@@ -1,5 +1,5 @@
1
- require 'active_admin/views'
2
- require 'active_admin/views/components/panel'
1
+ require "active_admin/views"
2
+ require "active_admin/views/components/panel"
3
3
 
4
4
  module ActiveAdmin
5
5
  module Comments
@@ -22,13 +22,13 @@ module ActiveAdmin
22
22
  protected
23
23
 
24
24
  def title
25
- I18n.t 'active_admin.comments.title_content', count: @comments.total_count
25
+ I18n.t "active_admin.comments.title_content", count: @comments.total_count
26
26
  end
27
27
 
28
28
  def build_comments
29
29
  if @comments.any?
30
30
  @comments.each(&method(:build_comment))
31
- div page_entries_info(@comments).html_safe, class: 'pagination_information'
31
+ div page_entries_info(@comments).html_safe, class: "pagination_information"
32
32
  else
33
33
  build_empty_message
34
34
  end
@@ -42,56 +42,56 @@ module ActiveAdmin
42
42
 
43
43
  def build_comment(comment)
44
44
  div for: comment do
45
- div class: 'active_admin_comment_meta' do
46
- h4 class: 'active_admin_comment_author' do
47
- comment.author ? auto_link(comment.author) : I18n.t('active_admin.comments.author_missing')
45
+ div class: "active_admin_comment_meta" do
46
+ h4 class: "active_admin_comment_author" do
47
+ comment.author ? auto_link(comment.author) : I18n.t("active_admin.comments.author_missing")
48
48
  end
49
49
  span pretty_format comment.created_at
50
50
  if authorized?(ActiveAdmin::Auth::DESTROY, comment)
51
- text_node link_to I18n.t('active_admin.comments.delete'), comments_url(comment.id), method: :delete, data: { confirm: I18n.t('active_admin.comments.delete_confirmation') }
51
+ text_node link_to I18n.t("active_admin.comments.delete"), comments_url(comment.id), method: :delete, data: { confirm: I18n.t("active_admin.comments.delete_confirmation") }
52
52
  end
53
53
  end
54
- div class: 'active_admin_comment_body' do
54
+ div class: "active_admin_comment_body" do
55
55
  simple_format comment.body
56
56
  end
57
57
  end
58
58
  end
59
59
 
60
60
  def build_empty_message
61
- span I18n.t('active_admin.comments.no_comments_yet'), class: 'empty'
61
+ span I18n.t("active_admin.comments.no_comments_yet"), class: "empty"
62
62
  end
63
63
 
64
64
  def comments_url(*args)
65
65
  parts = []
66
66
  parts << active_admin_namespace.name unless active_admin_namespace.root?
67
67
  parts << active_admin_namespace.comments_registration_name.underscore
68
- parts << 'path'
69
- send parts.join('_'), *args
68
+ parts << "path"
69
+ send parts.join("_"), *args
70
70
  end
71
71
 
72
72
  def comment_form_url
73
73
  parts = []
74
74
  parts << active_admin_namespace.name unless active_admin_namespace.root?
75
75
  parts << active_admin_namespace.comments_registration_name.underscore.pluralize
76
- parts << 'path'
77
- send parts.join '_'
76
+ parts << "path"
77
+ send parts.join "_"
78
78
  end
79
79
 
80
80
  def build_comment_form
81
81
  active_admin_form_for(ActiveAdmin::Comment.new, url: comment_form_url) do |f|
82
82
  f.inputs do
83
- f.input :resource_type, as: :hidden, input_html: { value: ActiveAdmin::Comment.resource_type(parent.resource) }
84
- f.input :resource_id, as: :hidden, input_html: { value: parent.resource.id }
85
- f.input :body, label: false, input_html: { size: '80x8' }
83
+ f.input :resource_type, as: :hidden, input_html: { value: ActiveAdmin::Comment.resource_type(parent.resource) }
84
+ f.input :resource_id, as: :hidden, input_html: { value: parent.resource.id }
85
+ f.input :body, label: false, input_html: { size: "80x8" }
86
86
  end
87
87
  f.actions do
88
- f.action :submit, label: I18n.t('active_admin.comments.add')
88
+ f.action :submit, label: I18n.t("active_admin.comments.add")
89
89
  end
90
90
  end
91
91
  end
92
92
 
93
93
  def default_id_for_prefix
94
- 'active_admin_comments_for'
94
+ "active_admin_comments_for"
95
95
  end
96
96
  end
97
97
 
@@ -1,2 +1,2 @@
1
- require 'active_admin/views'
2
- require 'active_admin/orm/active_record/comments/views/active_admin_comments'
1
+ require "active_admin/views"
2
+ require "active_admin/orm/active_record/comments/views/active_admin_comments"
@@ -1,21 +1,21 @@
1
- require 'active_admin/orm/active_record/comments/views'
2
- require 'active_admin/orm/active_record/comments/show_page_helper'
3
- require 'active_admin/orm/active_record/comments/namespace_helper'
4
- require 'active_admin/orm/active_record/comments/resource_helper'
1
+ require "active_admin/orm/active_record/comments/views"
2
+ require "active_admin/orm/active_record/comments/show_page_helper"
3
+ require "active_admin/orm/active_record/comments/namespace_helper"
4
+ require "active_admin/orm/active_record/comments/resource_helper"
5
5
 
6
6
  # Add the comments configuration
7
- ActiveAdmin::Application.inheritable_setting :comments, true
8
- ActiveAdmin::Application.inheritable_setting :comments_registration_name, 'Comment'
9
- ActiveAdmin::Application.inheritable_setting :comments_order, "created_at ASC"
10
- ActiveAdmin::Application.inheritable_setting :comments_menu, {}
7
+ ActiveAdmin::Application.inheritable_setting :comments, true
8
+ ActiveAdmin::Application.inheritable_setting :comments_registration_name, "Comment"
9
+ ActiveAdmin::Application.inheritable_setting :comments_order, "created_at ASC"
10
+ ActiveAdmin::Application.inheritable_setting :comments_menu, {}
11
11
 
12
12
  # Insert helper modules
13
13
  ActiveAdmin::Namespace.send :include, ActiveAdmin::Comments::NamespaceHelper
14
- ActiveAdmin::Resource.send :include, ActiveAdmin::Comments::ResourceHelper
14
+ ActiveAdmin::Resource.send :include, ActiveAdmin::Comments::ResourceHelper
15
15
  ActiveAdmin.application.view_factory.show_page.send :include, ActiveAdmin::Comments::ShowPageHelper
16
16
 
17
17
  # Load the model as soon as it's referenced. By that point, Rails & Kaminari will be ready
18
- ActiveAdmin.autoload :Comment, 'active_admin/orm/active_record/comments/comment'
18
+ ActiveAdmin.autoload :Comment, "active_admin/orm/active_record/comments/comment"
19
19
 
20
20
  # Hint i18n-tasks about model and attribute translations used by default install
21
21
  # i18n-tasks-use t('activerecord.models.comment')
@@ -36,7 +36,7 @@ ActiveAdmin.after_load do |app|
36
36
 
37
37
  menu namespace.comments ? namespace.comments_menu : false
38
38
 
39
- config.comments = false # Don't allow comments on comments
39
+ config.comments = false # Don't allow comments on comments
40
40
  config.batch_actions = false # The default destroy batch action isn't showing up anyway...
41
41
 
42
42
  scope :all, show_count: false
@@ -51,7 +51,7 @@ ActiveAdmin.after_load do |app|
51
51
  # Store the author and namespace
52
52
  before_save do |comment|
53
53
  comment.namespace = active_admin_config.namespace.name
54
- comment.author = current_active_admin_user
54
+ comment.author = current_active_admin_user
55
55
  end
56
56
 
57
57
  controller do
@@ -67,7 +67,7 @@ ActiveAdmin.after_load do |app|
67
67
  redirect_back fallback_location: active_admin_root
68
68
  end
69
69
  failure.html do
70
- flash[:error] = I18n.t 'active_admin.comments.errors.empty_text'
70
+ flash[:error] = I18n.t "active_admin.comments.errors.empty_text"
71
71
  redirect_back fallback_location: active_admin_root
72
72
  end
73
73
  end
@@ -88,12 +88,12 @@ ActiveAdmin.after_load do |app|
88
88
  permit_params :body, :namespace, :resource_id, :resource_type
89
89
 
90
90
  index do
91
- column I18n.t('active_admin.comments.resource_type'), :resource_type
92
- column I18n.t('active_admin.comments.author_type'), :author_type
93
- column I18n.t('active_admin.comments.resource'), :resource
94
- column I18n.t('active_admin.comments.author'), :author
95
- column I18n.t('active_admin.comments.body'), :body
96
- column I18n.t('active_admin.comments.created_at'), :created_at
91
+ column I18n.t("active_admin.comments.resource_type"), :resource_type
92
+ column I18n.t("active_admin.comments.author_type"), :author_type
93
+ column I18n.t("active_admin.comments.resource"), :resource
94
+ column I18n.t("active_admin.comments.author"), :author
95
+ column I18n.t("active_admin.comments.body"), :body
96
+ column I18n.t("active_admin.comments.created_at"), :created_at
97
97
  actions
98
98
  end
99
99
  end
@@ -2,4 +2,4 @@
2
2
 
3
3
  ActiveAdmin::DatabaseHitDuringLoad.database_error_classes << ActiveRecord::StatementInvalid
4
4
 
5
- require 'active_admin/orm/active_record/comments'
5
+ require "active_admin/orm/active_record/comments"
@@ -65,7 +65,7 @@ module ActiveAdmin
65
65
  end
66
66
 
67
67
  def controller_name
68
- [namespace.module_name, camelized_resource_name + "Controller"].compact.join('::')
68
+ [namespace.module_name, camelized_resource_name + "Controller"].compact.join("::")
69
69
  end
70
70
 
71
71
  # Override from `ActiveAdmin::Resource::Controllers`
@@ -1,6 +1,6 @@
1
1
  ActiveAdmin::Dependency.pundit!
2
2
 
3
- require 'pundit'
3
+ require "pundit"
4
4
 
5
5
  # Add a setting to the application to configure the pundit default policy
6
6
  ActiveAdmin::Application.inheritable_setting :pundit_default_policy, nil
@@ -31,7 +31,7 @@ module ActiveAdmin
31
31
 
32
32
  def retrieve_policy(subject)
33
33
  case subject
34
- when nil then Pundit.policy!(user, namespace(resource))
34
+ when nil then Pundit.policy!(user, namespace(resource))
35
35
  when Class then Pundit.policy!(user, namespace(subject.new))
36
36
  else Pundit.policy!(user, namespace(subject))
37
37
  end
@@ -46,9 +46,9 @@ module ActiveAdmin
46
46
  def format_action(action, subject)
47
47
  # https://github.com/varvet/pundit/blob/master/lib/generators/pundit/install/templates/application_policy.rb
48
48
  case action
49
- when Auth::CREATE then :create?
50
- when Auth::UPDATE then :update?
51
- when Auth::READ then subject.is_a?(Class) ? :index? : :show?
49
+ when Auth::CREATE then :create?
50
+ when Auth::UPDATE then :update?
51
+ when Auth::READ then subject.is_a?(Class) ? :index? : :show?
52
52
  when Auth::DESTROY then subject.is_a?(Class) ? :destroy_all? : :destroy?
53
53
  else "#{action}?"
54
54
  end
@@ -1,4 +1,4 @@
1
- require 'active_admin/helpers/optional_display'
1
+ require "active_admin/helpers/optional_display"
2
2
 
3
3
  module ActiveAdmin
4
4
 
@@ -64,7 +64,7 @@ module ActiveAdmin
64
64
  # Adds the default New link on index
65
65
  def add_default_new_action_item
66
66
  add_action_item :new, only: :index do
67
- if controller.action_methods.include?('new') && authorized?(ActiveAdmin::Auth::CREATE, active_admin_config.resource_class)
67
+ if controller.action_methods.include?("new") && authorized?(ActiveAdmin::Auth::CREATE, active_admin_config.resource_class)
68
68
  localizer = ActiveAdmin::Localizers.resource(active_admin_config)
69
69
  link_to localizer.t(:new_model), new_resource_path
70
70
  end
@@ -74,7 +74,7 @@ module ActiveAdmin
74
74
  # Adds the default Edit link on show
75
75
  def add_default_edit_action_item
76
76
  add_action_item :edit, only: :show do
77
- if controller.action_methods.include?('edit') && authorized?(ActiveAdmin::Auth::UPDATE, resource)
77
+ if controller.action_methods.include?("edit") && authorized?(ActiveAdmin::Auth::UPDATE, resource)
78
78
  localizer = ActiveAdmin::Localizers.resource(active_admin_config)
79
79
  link_to localizer.t(:edit_model), edit_resource_path(resource)
80
80
  end
@@ -84,10 +84,10 @@ module ActiveAdmin
84
84
  # Adds the default Destroy link on show
85
85
  def add_default_show_action_item
86
86
  add_action_item :destroy, only: :show do
87
- if controller.action_methods.include?('destroy') && authorized?(ActiveAdmin::Auth::DESTROY, resource)
87
+ if controller.action_methods.include?("destroy") && authorized?(ActiveAdmin::Auth::DESTROY, resource)
88
88
  localizer = ActiveAdmin::Localizers.resource(active_admin_config)
89
89
  link_to localizer.t(:delete_model), resource_path(resource), method: :delete,
90
- data: { confirm: localizer.t(:delete_confirmation) }
90
+ data: { confirm: localizer.t(:delete_confirmation) }
91
91
  end
92
92
  end
93
93
  end
@@ -36,7 +36,7 @@ module ActiveAdmin
36
36
  end
37
37
 
38
38
  def counter_cache_col?(c)
39
- c.name.end_with?('_count')
39
+ c.name.end_with?("_count")
40
40
  end
41
41
 
42
42
  def filtered_col?(c)
@@ -1,4 +1,4 @@
1
- require 'active_admin/resource'
1
+ require "active_admin/resource"
2
2
 
3
3
  module ActiveAdmin
4
4
  class Resource
@@ -46,7 +46,7 @@ module ActiveAdmin
46
46
  end
47
47
 
48
48
  def to_param
49
- :"#{@target_name}_id"
49
+ (@options[:param] || "#{@target_name}_id").to_sym
50
50
  end
51
51
  end
52
52
  end
@@ -6,7 +6,7 @@ module ActiveAdmin
6
6
  # Returns a properly formatted controller name for this
7
7
  # config within its namespace
8
8
  def controller_name
9
- [namespace.module_name, resource_name.plural.camelize + "Controller"].compact.join('::')
9
+ [namespace.module_name, resource_name.plural.camelize + "Controller"].compact.join("::")
10
10
  end
11
11
 
12
12
  # Returns the controller for this config