activeadmin 1.4.3 → 2.0.0.rc1

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 (164) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +70 -10
  3. data/CONTRIBUTING.md +12 -11
  4. data/README.md +34 -8
  5. data/app/assets/javascripts/active_admin/base.es6 +23 -0
  6. data/app/assets/javascripts/active_admin/ext/jquery-ui.es6 +7 -0
  7. data/app/assets/javascripts/active_admin/ext/jquery.es6 +9 -0
  8. data/app/assets/javascripts/active_admin/initializers/datepicker.es6 +16 -0
  9. data/app/assets/javascripts/active_admin/initializers/filters.es6 +45 -0
  10. data/app/assets/javascripts/active_admin/initializers/tabs.es6 +6 -0
  11. data/app/assets/javascripts/active_admin/lib/active_admin.es6 +41 -0
  12. data/app/assets/javascripts/active_admin/lib/batch_actions.es6 +55 -0
  13. data/app/assets/javascripts/active_admin/lib/checkbox-toggler.es6 +49 -0
  14. data/app/assets/javascripts/active_admin/lib/dropdown-menu.es6 +123 -0
  15. data/app/assets/javascripts/active_admin/lib/has_many.es6 +95 -0
  16. data/app/assets/javascripts/active_admin/lib/modal_dialog.es6 +61 -0
  17. data/app/assets/javascripts/active_admin/lib/per_page.es6 +47 -0
  18. data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.es6 +36 -0
  19. data/app/assets/stylesheets/active_admin/_forms.scss +2 -14
  20. data/app/assets/stylesheets/active_admin/components/_status_tags.scss +0 -5
  21. data/app/assets/stylesheets/active_admin/components/_tabs.scss +1 -1
  22. data/app/assets/stylesheets/active_admin/mixins/_gradients.scss +1 -1
  23. data/app/views/active_admin/devise/confirmations/new.html.erb +1 -1
  24. data/app/views/active_admin/devise/passwords/edit.html.erb +1 -1
  25. data/app/views/active_admin/devise/passwords/new.html.erb +1 -1
  26. data/app/views/active_admin/devise/registrations/new.html.erb +1 -2
  27. data/app/views/active_admin/devise/shared/_error_messages.html.erb +15 -0
  28. data/app/views/active_admin/devise/unlocks/new.html.erb +1 -1
  29. data/app/views/layouts/active_admin_logged_out.html.erb +1 -1
  30. data/config/locales/bg.yml +0 -1
  31. data/config/locales/he.yml +0 -1
  32. data/config/locales/hu.yml +4 -0
  33. data/config/locales/lt.yml +2 -2
  34. data/config/locales/uk.yml +2 -0
  35. data/docs/0-installation.md +2 -2
  36. data/docs/13-authorization-adapter.md +4 -4
  37. data/docs/CNAME +1 -1
  38. data/docs/index.html +2 -2
  39. data/lib/active_admin.rb +9 -4
  40. data/lib/active_admin/application.rb +8 -14
  41. data/lib/active_admin/application_settings.rb +3 -0
  42. data/lib/active_admin/asset_registration.rb +0 -8
  43. data/lib/active_admin/base_controller.rb +6 -6
  44. data/lib/active_admin/base_controller/authorization.rb +2 -4
  45. data/lib/active_admin/batch_actions/controller.rb +1 -1
  46. data/lib/active_admin/batch_actions/resource_extension.rb +4 -4
  47. data/lib/active_admin/callbacks.rb +1 -1
  48. data/lib/active_admin/csv_builder.rb +1 -1
  49. data/lib/active_admin/dependency.rb +1 -77
  50. data/lib/active_admin/dsl.rb +1 -8
  51. data/lib/active_admin/error.rb +1 -1
  52. data/lib/active_admin/filters/active_filter.rb +3 -1
  53. data/lib/active_admin/filters/active_sidebar.rb +5 -1
  54. data/lib/active_admin/filters/forms.rb +2 -2
  55. data/lib/active_admin/filters/formtastic_addons.rb +1 -1
  56. data/lib/active_admin/filters/resource_extension.rb +3 -3
  57. data/lib/active_admin/form_builder.rb +3 -3
  58. data/lib/active_admin/generators/boilerplate.rb +1 -1
  59. data/lib/active_admin/helpers/scope_chain.rb +1 -0
  60. data/lib/active_admin/inputs/datepicker_input.rb +1 -1
  61. data/lib/active_admin/inputs/filters/base/search_method_select.rb +2 -2
  62. data/lib/active_admin/menu_item.rb +1 -1
  63. data/lib/active_admin/namespace.rb +2 -2
  64. data/lib/active_admin/namespace_settings.rb +7 -4
  65. data/lib/active_admin/orm/active_record/comments.rb +4 -4
  66. data/lib/active_admin/orm/active_record/comments/comment.rb +2 -2
  67. data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +10 -5
  68. data/lib/active_admin/page_dsl.rb +1 -1
  69. data/lib/active_admin/pundit_adapter.rb +13 -4
  70. data/lib/active_admin/resource.rb +2 -2
  71. data/lib/active_admin/resource/action_items.rb +1 -1
  72. data/lib/active_admin/resource/attributes.rb +7 -4
  73. data/lib/active_admin/resource/menu.rb +3 -3
  74. data/lib/active_admin/resource/naming.rb +3 -3
  75. data/lib/active_admin/resource/routes.rb +9 -4
  76. data/lib/active_admin/resource/scopes.rb +3 -3
  77. data/lib/active_admin/resource/sidebars.rb +1 -1
  78. data/lib/active_admin/resource_collection.rb +2 -2
  79. data/lib/active_admin/resource_controller/action_builder.rb +10 -0
  80. data/lib/active_admin/resource_controller/resource_class_methods.rb +2 -0
  81. data/lib/active_admin/resource_dsl.rb +5 -3
  82. data/lib/active_admin/router.rb +1 -1
  83. data/lib/active_admin/scope.rb +4 -4
  84. data/lib/active_admin/settings_node.rb +1 -1
  85. data/lib/active_admin/version.rb +1 -1
  86. data/lib/active_admin/view_helpers.rb +1 -1
  87. data/lib/active_admin/view_helpers/display_helper.rb +10 -2
  88. data/lib/active_admin/view_helpers/download_format_links_helper.rb +1 -0
  89. data/lib/active_admin/view_helpers/method_or_proc_helper.rb +2 -0
  90. data/lib/active_admin/views.rb +1 -1
  91. data/lib/active_admin/views/components/active_admin_form.rb +7 -1
  92. data/lib/active_admin/views/components/attributes_table.rb +3 -3
  93. data/lib/active_admin/views/components/paginated_collection.rb +1 -1
  94. data/lib/active_admin/views/components/sidebar_section.rb +0 -3
  95. data/lib/active_admin/views/components/status_tag.rb +1 -18
  96. data/lib/active_admin/views/components/table_for.rb +2 -2
  97. data/lib/active_admin/views/components/tabs.rb +11 -2
  98. data/lib/active_admin/views/footer.rb +1 -1
  99. data/lib/active_admin/views/index_as_table.rb +5 -4
  100. data/lib/active_admin/views/pages/base.rb +3 -0
  101. data/lib/generators/active_admin/assets/assets_generator.rb +2 -2
  102. data/lib/generators/active_admin/assets/templates/active_admin.js +1 -0
  103. data/lib/generators/active_admin/install/install_generator.rb +6 -2
  104. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +20 -1
  105. data/lib/generators/active_admin/install/templates/dashboard.rb +2 -3
  106. data/lib/generators/active_admin/install/templates/migrations/create_active_admin_comments.rb.erb +1 -15
  107. data/lib/generators/active_admin/page/page_generator.rb +1 -1
  108. data/lib/generators/active_admin/resource/resource_generator.rb +1 -1
  109. data/lib/ransack_ext.rb +3 -3
  110. data/vendor/assets/javascripts/jquery-ui/form-reset-mixin.js +80 -0
  111. data/vendor/assets/javascripts/jquery-ui/form.js +22 -0
  112. data/vendor/assets/javascripts/jquery-ui/labels.js +65 -0
  113. data/vendor/assets/javascripts/jquery-ui/widgets/checkboxradio.js +274 -283
  114. metadata +107 -96
  115. data/.circleci/config.yml +0 -572
  116. data/.github/ISSUE_TEMPLATE.md +0 -20
  117. data/.gitignore +0 -16
  118. data/.mdlrc +0 -1
  119. data/.rspec +0 -1
  120. data/.rspec_parallel +0 -2
  121. data/.rubocop.yml +0 -99
  122. data/.simplecov +0 -9
  123. data/.yardopts +0 -7
  124. data/Gemfile +0 -30
  125. data/Gemfile.common +0 -26
  126. data/Gemfile.lock +0 -433
  127. data/Rakefile +0 -24
  128. data/activeadmin.gemspec +0 -32
  129. data/app/assets/javascripts/active_admin/base.js.coffee +0 -13
  130. data/app/assets/javascripts/active_admin/ext/jquery-ui.js.coffee +0 -6
  131. data/app/assets/javascripts/active_admin/ext/jquery.js.coffee +0 -7
  132. data/app/assets/javascripts/active_admin/initializers/batch_actions.js.coffee +0 -11
  133. data/app/assets/javascripts/active_admin/initializers/datepicker.js.coffee +0 -14
  134. data/app/assets/javascripts/active_admin/initializers/filters.js.coffee +0 -26
  135. data/app/assets/javascripts/active_admin/initializers/tabs.js.coffee +0 -7
  136. data/app/assets/javascripts/active_admin/lib/batch_actions.js.coffee +0 -42
  137. data/app/assets/javascripts/active_admin/lib/checkbox-toggler.js.coffee +0 -46
  138. data/app/assets/javascripts/active_admin/lib/dropdown-menu.js.coffee +0 -104
  139. data/app/assets/javascripts/active_admin/lib/flash.js.coffee +0 -19
  140. data/app/assets/javascripts/active_admin/lib/has_many.js.coffee +0 -79
  141. data/app/assets/javascripts/active_admin/lib/modal_dialog.js.coffee +0 -45
  142. data/app/assets/javascripts/active_admin/lib/per_page.js.coffee +0 -46
  143. data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.js.coffee +0 -22
  144. data/bin/install_chromedriver.sh +0 -17
  145. data/config/i18n-tasks.yml +0 -26
  146. data/config/mdl_style.rb +0 -11
  147. data/cucumber.yml +0 -7
  148. data/gemfiles/rails_42.gemfile +0 -10
  149. data/gemfiles/rails_42.gemfile.lock +0 -339
  150. data/gemfiles/rails_50.gemfile +0 -10
  151. data/gemfiles/rails_50.gemfile.lock +0 -353
  152. data/gemfiles/rails_51.gemfile +0 -10
  153. data/gemfiles/rails_51.gemfile.lock +0 -353
  154. data/lib/active_admin/event.rb +0 -24
  155. data/lib/active_admin/helpers/output_safety_helper.rb +0 -35
  156. data/lib/bug_report_templates/active_admin_master.rb +0 -111
  157. data/lib/generators/active_admin/assets/templates/active_admin.js.coffee +0 -1
  158. data/tasks/application_generator.rb +0 -50
  159. data/tasks/docs.rake +0 -64
  160. data/tasks/gemfiles.rake +0 -8
  161. data/tasks/lint.rake +0 -110
  162. data/tasks/local.rake +0 -27
  163. data/tasks/release.rake +0 -6
  164. data/tasks/test.rake +0 -42
@@ -22,7 +22,7 @@ module ActiveAdmin
22
22
  end
23
23
 
24
24
  def current_batch_action
25
- active_admin_config.batch_actions.detect{ |action| action.sym.to_s == params[:batch_action] }
25
+ active_admin_config.batch_actions.detect { |action| action.sym.to_s == params[:batch_action] }
26
26
  end
27
27
 
28
28
  COLLECTION_APPLIES = [
@@ -57,8 +57,8 @@ module ActiveAdmin
57
57
  def add_default_batch_action
58
58
  destroy_options = {
59
59
  priority: 100,
60
- confirm: proc{ I18n.t('active_admin.batch_actions.delete_confirmation', plural_model: active_admin_config.plural_resource_label.downcase) },
61
- if: proc{ controller.action_methods.include?('destroy') && authorized?(ActiveAdmin::Auth::DESTROY, active_admin_config.resource_class) }
60
+ confirm: proc { I18n.t('active_admin.batch_actions.delete_confirmation', plural_model: active_admin_config.plural_resource_label.downcase) },
61
+ if: proc { controller.action_methods.include?('destroy') && authorized?(ActiveAdmin::Auth::DESTROY, active_admin_config.resource_class) }
62
62
  }
63
63
 
64
64
  add_batch_action :destroy, proc { I18n.t('active_admin.delete') }, destroy_options do |selected_ids|
@@ -84,7 +84,7 @@ module ActiveAdmin
84
84
 
85
85
  attr_reader :block, :title, :sym
86
86
 
87
- DEFAULT_CONFIRM_MESSAGE = proc{ I18n.t 'active_admin.batch_actions.default_confirmation' }
87
+ DEFAULT_CONFIRM_MESSAGE = proc { I18n.t 'active_admin.batch_actions.default_confirmation' }
88
88
 
89
89
  # Create a Batch Action
90
90
  #
@@ -133,7 +133,7 @@ module ActiveAdmin
133
133
  # Returns the display if block. If the block was not explicitly defined
134
134
  # a default block always returning true will be returned.
135
135
  def display_if_block
136
- @options[:if] || proc{ true }
136
+ @options[:if] || proc { true }
137
137
  end
138
138
 
139
139
  # Used for sorting
@@ -75,7 +75,7 @@ module ActiveAdmin
75
75
 
76
76
  # def run_create_callbacks
77
77
  define_method "run_#{name}_callbacks" do |*args, &block|
78
- self.class.send("before_#{name}_callbacks").each{ |cbk| run_callback(cbk, *args) }
78
+ self.class.send("before_#{name}_callbacks").each { |cbk| run_callback(cbk, *args) }
79
79
  value = block.try :call
80
80
  self.class.send("after_#{name}_callbacks").each { |cbk| run_callback(cbk, *args) }
81
81
  return value
@@ -50,7 +50,7 @@ module ActiveAdmin
50
50
  csv << bom if bom
51
51
 
52
52
  if column_names
53
- csv << CSV.generate_line(columns.map{ |c| encode c.name, options }, csv_options)
53
+ csv << CSV.generate_line(columns.map { |c| encode c.name, options }, csv_options)
54
54
  end
55
55
 
56
56
  ActiveRecord::Base.uncached do
@@ -1,7 +1,7 @@
1
1
  module ActiveAdmin
2
2
  module Dependency
3
3
  module Requirements
4
- DEVISE = '>= 3.2', '< 5'
4
+ DEVISE = '>= 4.0', '< 5'
5
5
  end
6
6
 
7
7
  # Provides a clean interface to check for gem dependencies at runtime.
@@ -55,10 +55,6 @@ module ActiveAdmin
55
55
  Matcher.new name.to_s
56
56
  end
57
57
 
58
- def self.rails5?
59
- rails >= '5.x'
60
- end
61
-
62
58
  class Matcher
63
59
  attr_reader :name
64
60
 
@@ -94,78 +90,6 @@ module ActiveAdmin
94
90
  info = spec ? "#{spec.name} #{spec.version}" : '(missing)'
95
91
  "<ActiveAdmin::Dependency::Matcher for #{info}>"
96
92
  end
97
-
98
- def adapter
99
- @adapter ||= Adapter.const_get(@name.camelize).new self
100
- end
101
-
102
- def method_missing(method, *args, &block)
103
- if respond_to_missing?(method)
104
- adapter.send method, *args, &block
105
- else
106
- super
107
- end
108
- end
109
-
110
- def respond_to_missing?(method, include_private = false)
111
- adapter.respond_to?(method) || super
112
- rescue NameError
113
- # 🐾
114
- end
115
- end
116
-
117
- # Dependency adapters provide an easy way to wrap the conditional logic
118
- # necessary to support multiple versions of a gem.
119
- #
120
- # ActiveAdmin::Dependency.rails.adapter.parameterize 'a b'
121
- # => 'a_b'
122
- #
123
- # ActiveAdmin::Dependency.rails.parameterize 'a b'
124
- # => 'a_b'
125
- #
126
- # ActiveAdmin::Dependency.devise.adapter
127
- # -> NameError: uninitialized constant ActiveAdmin::Dependency::Adapter::Devise
128
- #
129
- module Adapter
130
- class Base
131
- def initialize(version)
132
- @version = version
133
- end
134
- end
135
-
136
- class Rails < Base
137
- def optional_belongs_to_flag
138
- if Dependency.rails5?
139
- { optional: true }
140
- else
141
- { required: false }
142
- end
143
- end
144
-
145
- def parameterize(string)
146
- if Dependency.rails5?
147
- string.parameterize separator: '_'
148
- else
149
- string.parameterize '_'
150
- end
151
- end
152
-
153
- def redirect_back(controller, fallback_location)
154
- controller.instance_exec do
155
- if Dependency.rails5?
156
- redirect_back fallback_location: fallback_location
157
- elsif controller.request.headers.key? 'HTTP_REFERER'
158
- redirect_to :back
159
- else
160
- redirect_to fallback_location
161
- end
162
- end
163
- end
164
-
165
- def render_key
166
- Dependency.rails5? ? :body : :text
167
- end
168
- end
169
93
  end
170
94
 
171
95
  end
@@ -83,14 +83,7 @@ module ActiveAdmin
83
83
  # this action item on.
84
84
  # :except: A single or array of controller actions not to
85
85
  # display this action item on.
86
- def action_item(name = nil, options = {}, &block)
87
- if name.is_a?(Hash)
88
- options = name
89
- name = nil
90
- end
91
-
92
- Deprecation.warn "using `action_item` without a name is deprecated! Use `action_item(:edit)`." unless name
93
-
86
+ def action_item(name, options = {}, &block)
94
87
  config.add_action_item(name, options, &block)
95
88
  end
96
89
 
@@ -22,7 +22,7 @@ module ActiveAdmin
22
22
  class ErrorLoading < Error
23
23
  # Locates the most recent file and line from the caught exception's backtrace.
24
24
  def find_cause(folder, backtrace)
25
- backtrace.grep(/\/(#{folder}\/.*\.rb):(\d+)/){ [$1, $2] }.first
25
+ backtrace.grep(/\/(#{folder}\/.*\.rb):(\d+)/) { [$1, $2] }.first
26
26
  end
27
27
  end
28
28
 
@@ -28,7 +28,9 @@ module ActiveAdmin
28
28
  def label
29
29
  # TODO: to remind us to go back to the simpler str.downcase once we support ruby >= 2.4 only.
30
30
  translated_predicate = predicate_name.mb_chars.downcase.to_s
31
- if filter_label
31
+ if filter_label && filter_label.is_a?(Proc)
32
+ "#{filter_label.call} #{translated_predicate}"
33
+ elsif filter_label
32
34
  "#{filter_label} #{translated_predicate}"
33
35
  elsif related_class
34
36
  "#{related_class_name} #{translated_predicate}"
@@ -5,7 +5,7 @@ module ActiveAdmin
5
5
  class ActiveSidebar < ActiveAdmin::SidebarSection
6
6
 
7
7
  def initialize
8
- super I18n.t("active_admin.search_status.headline"), sidebar_options
8
+ super 'search_status', sidebar_options
9
9
  end
10
10
 
11
11
  def block
@@ -39,6 +39,10 @@ module ActiveAdmin
39
39
  end
40
40
  end
41
41
 
42
+ def title
43
+ I18n.t("active_admin.search_status.headline")
44
+ end
45
+
42
46
  protected
43
47
 
44
48
  def sidebar_options
@@ -48,8 +48,8 @@ module ActiveAdmin
48
48
  def active_admin_filters_form_for(search, filters, options = {})
49
49
  defaults = { builder: ActiveAdmin::Filters::FormBuilder,
50
50
  url: collection_path,
51
- html: {class: 'filter_form'} }
52
- required = { html: {method: :get},
51
+ html: { class: 'filter_form' } }
52
+ required = { html: { method: :get },
53
53
  as: :q }
54
54
  options = defaults.deep_merge(options).deep_merge(required)
55
55
 
@@ -37,7 +37,7 @@ module ActiveAdmin
37
37
  end
38
38
 
39
39
  def polymorphic_foreign_type?(method)
40
- klass.reflect_on_all_associations.select{ |r| r.macro == :belongs_to && r.options[:polymorphic] }
40
+ klass.reflect_on_all_associations.select { |r| r.macro == :belongs_to && r.options[:polymorphic] }
41
41
  .map(&:foreign_type).include? method.to_s
42
42
  end
43
43
 
@@ -123,10 +123,10 @@ module ActiveAdmin
123
123
  # Returns a default set of filters for the associations
124
124
  def default_association_filters
125
125
  if resource_class.respond_to?(:reflect_on_all_associations)
126
- poly, not_poly = resource_class.reflect_on_all_associations.partition{ |r| r.macro == :belongs_to && r.options[:polymorphic] }
126
+ poly, not_poly = resource_class.reflect_on_all_associations.partition { |r| r.macro == :belongs_to && r.options[:polymorphic] }
127
127
 
128
128
  # remove deeply nested associations
129
- not_poly.reject!{ |r| r.chain.length > 2 }
129
+ not_poly.reject! { |r| r.chain.length > 2 }
130
130
 
131
131
  filters = poly.map(&:foreign_type) + not_poly.map(&:name)
132
132
  filters.map &:to_sym
@@ -140,7 +140,7 @@ module ActiveAdmin
140
140
  end
141
141
 
142
142
  def filters_sidebar_section
143
- ActiveAdmin::SidebarSection.new :filters, only: :index, if: ->{ active_admin_config.filters.any? } do
143
+ ActiveAdmin::SidebarSection.new :filters, only: :index, if: -> { active_admin_config.filters.any? } do
144
144
  active_admin_filters_form_for assigns[:search], active_admin_config.filters
145
145
  end
146
146
  end
@@ -20,7 +20,7 @@ module ActiveAdmin
20
20
  self.input_class_finder = ::Formtastic::InputClassFinder
21
21
  self.action_class_finder = ::Formtastic::ActionClassFinder
22
22
 
23
- def cancel_link(url = {action: "index"}, html_options = {}, li_attrs = {})
23
+ def cancel_link(url = { action: "index" }, html_options = {}, li_attrs = {})
24
24
  li_attrs[:class] ||= "cancel"
25
25
  li_content = template.link_to I18n.t('active_admin.cancel'), url, html_options
26
26
  template.content_tag(:li, li_content, li_attrs)
@@ -111,7 +111,7 @@ module ActiveAdmin
111
111
  end
112
112
  elsif allow_destroy?(form_builder.object)
113
113
  form_builder.input(:_destroy, as: :boolean,
114
- wrapper_html: {class: 'has_many_delete'},
114
+ wrapper_html: { class: 'has_many_delete' },
115
115
  label: I18n.t('active_admin.has_many_delete'))
116
116
  end
117
117
 
@@ -163,7 +163,7 @@ module ActiveAdmin
163
163
  class: class_string,
164
164
  for_options: { child_index: placeholder }
165
165
  }
166
- html = template.capture{ __getobj__.send(:inputs_for_nested_attributes, opts, &form_block) }
166
+ html = template.capture { __getobj__.send(:inputs_for_nested_attributes, opts, &form_block) }
167
167
  text = new_record.is_a?(String) ? new_record : I18n.t('active_admin.has_many_new', model: assoc_name.human)
168
168
 
169
169
  template.link_to text, '#', class: "button has_many_add", data: {
@@ -34,7 +34,7 @@ module ActiveAdmin
34
34
  end
35
35
 
36
36
  def form_inputs
37
- attributes.reject{|a| %w(id created_at updated_at).include? a}.map{ |a| form_input(a) }.join("\n")
37
+ attributes.reject { |a| %w(id created_at updated_at).include? a }.map { |a| form_input(a) }.join("\n")
38
38
  end
39
39
 
40
40
  def form_input(name)
@@ -1,5 +1,6 @@
1
1
  module ActiveAdmin
2
2
  module ScopeChain
3
+ private
3
4
  # Scope an ActiveRecord::Relation chain
4
5
  #
5
6
  # Example:
@@ -19,7 +19,7 @@ module ActiveAdmin
19
19
  private
20
20
  def datepicker_options
21
21
  options = self.options.fetch(:datepicker_options, {})
22
- options = Hash[options.map{ |k, v| [k.to_s.camelcase(:lower), v] }]
22
+ options = Hash[options.map { |k, v| [k.to_s.camelcase(:lower), v] }]
23
23
  { datepicker_options: options }
24
24
  end
25
25
  end
@@ -57,8 +57,8 @@ module ActiveAdmin
57
57
 
58
58
  def current_filter
59
59
  @current_filter ||= begin
60
- methods = filters.map{ |f| "#{method}_#{f}" }
61
- methods.detect{ |m| @object.public_send m } || methods.first
60
+ methods = filters.map { |f| "#{method}_#{f}" }
61
+ methods.detect { |m| @object.public_send m } || methods.first
62
62
  end
63
63
  end
64
64
 
@@ -50,7 +50,7 @@ module ActiveAdmin
50
50
  @url = options[:url] || '#'
51
51
  @priority = options[:priority] || 10
52
52
  @html_options = options[:html_options] || {}
53
- @should_display = options[:if] || proc{true}
53
+ @should_display = options[:if] || proc { true }
54
54
  @parent = options[:parent]
55
55
 
56
56
  yield(self) if block_given? # Builder style syntax
@@ -150,8 +150,8 @@ module ActiveAdmin
150
150
  if logout_link_path
151
151
  html_options = html_options.reverse_merge(method: logout_link_method || :get)
152
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 },
153
+ label: -> { I18n.t 'active_admin.logout' },
154
+ url: -> { render_or_call_method_or_proc_on self, active_admin_namespace.logout_link_path },
155
155
  if: :current_active_admin_user?
156
156
  end
157
157
  end
@@ -17,16 +17,19 @@ module ActiveAdmin
17
17
  # Set the site title image displayed in the main layout (has precendence over :site_title)
18
18
  register :site_title_image, "", :string_symbol_or_proc
19
19
 
20
+ # Add to the site head
21
+ register :head, "", :string_symbol_or_proc
22
+
20
23
  # Set the site footer text (defaults to Powered by ActiveAdmin text with version)
21
24
  register :footer, "", :string_symbol_or_proc
22
25
 
23
26
  # Set a favicon
24
27
  register :favicon, false
25
28
 
26
- # Additional meta tags to place in head of logged in pages.
29
+ # Additional meta tags to place in head of logged in pages
27
30
  register :meta_tags, {}
28
31
 
29
- # Additional meta tags to place in head of logged out pages.
32
+ # Additional meta tags to place in head of logged out pages
30
33
  register :meta_tags_for_logged_out_pages, { robots: "noindex, nofollow" }
31
34
 
32
35
  # The view factory to use to generate all the view classes. Take
@@ -53,10 +56,10 @@ module ActiveAdmin
53
56
  # Whether filters are enabled
54
57
  register :filters, true
55
58
 
56
- # The namespace root.
59
+ # The namespace root
57
60
  register :root_to, 'dashboard#index'
58
61
 
59
- # Options that a passed to root_to.
62
+ # Options that are passed to root_to
60
63
  register :root_to_options, {}
61
64
 
62
65
  # Options passed to the routes, i.e. { path: '/custom' }
@@ -64,21 +64,21 @@ ActiveAdmin.after_load do |app|
64
64
  def create
65
65
  create! do |success, failure|
66
66
  success.html do
67
- ActiveAdmin::Dependency.rails.redirect_back self, active_admin_root
67
+ redirect_back fallback_location: active_admin_root
68
68
  end
69
69
  failure.html do
70
70
  flash[:error] = I18n.t 'active_admin.comments.errors.empty_text'
71
- ActiveAdmin::Dependency.rails.redirect_back self, active_admin_root
71
+ redirect_back fallback_location: active_admin_root
72
72
  end
73
73
  end
74
74
 
75
75
  def destroy
76
76
  destroy! do |success, failure|
77
77
  success.html do
78
- ActiveAdmin::Dependency.rails.redirect_back self, active_admin_root
78
+ redirect_back fallback_location: active_admin_root
79
79
  end
80
80
  failure.html do
81
- ActiveAdmin::Dependency.rails.redirect_back self, active_admin_root
81
+ redirect_back fallback_location: active_admin_root
82
82
  end
83
83
  end
84
84
  end
@@ -3,7 +3,7 @@ module ActiveAdmin
3
3
 
4
4
  self.table_name = "#{table_name_prefix}active_admin_comments#{table_name_suffix}"
5
5
 
6
- belongs_to :resource, { polymorphic: true }.merge(ActiveAdmin::Dependency.rails.optional_belongs_to_flag)
6
+ belongs_to :resource, polymorphic: true, optional: true
7
7
  belongs_to :author, polymorphic: true
8
8
 
9
9
  validates_presence_of :body, :namespace, :resource
@@ -18,7 +18,7 @@ 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,
21
+ resource_id: resource.id,
22
22
  namespace: namespace.to_s
23
23
  ).order(ActiveAdmin.application.namespaces[namespace.to_sym].comments_order)
24
24
  end
@@ -11,10 +11,12 @@ module ActiveAdmin
11
11
  attr_accessor :resource
12
12
 
13
13
  def build(resource)
14
- @resource = resource
15
- @comments = ActiveAdmin::Comment.find_for_resource_in_namespace(resource, active_admin_namespace.name).includes(:author).page(params[:page])
16
- super(title, for: resource)
17
- build_comments
14
+ if authorized?(ActiveAdmin::Auth::READ, ActiveAdmin::Comment)
15
+ @resource = resource
16
+ @comments = active_admin_authorization.scope_collection(ActiveAdmin::Comment.find_for_resource_in_namespace(resource, active_admin_namespace.name).includes(:author).page(params[:page]))
17
+ super(title, for: resource)
18
+ build_comments
19
+ end
18
20
  end
19
21
 
20
22
  protected
@@ -32,7 +34,10 @@ module ActiveAdmin
32
34
  end
33
35
 
34
36
  text_node paginate @comments
35
- build_comment_form
37
+
38
+ if authorized?(ActiveAdmin::Auth::CREATE, ActiveAdmin::Comment)
39
+ build_comment_form
40
+ end
36
41
  end
37
42
 
38
43
  def build_comment(comment)