activeadmin 2.9.0 → 2.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +161 -1
- data/CONTRIBUTING.md +1 -1
- data/app/assets/javascripts/active_admin/base.js +13 -6
- data/app/assets/stylesheets/active_admin/_base.scss +53 -37
- data/app/assets/stylesheets/active_admin/_forms.scss +0 -10
- data/app/assets/stylesheets/active_admin/_normalize.scss +25 -123
- data/app/assets/stylesheets/active_admin/{print.scss → _print.scss} +0 -0
- data/app/assets/stylesheets/active_admin/components/_date_picker.scss +1 -2
- data/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +0 -1
- data/app/assets/stylesheets/active_admin/mixins/_variables.scss +9 -0
- data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +0 -1
- data/app/javascript/active_admin/initializers/has-many.js +4 -1
- data/app/views/active_admin/devise/shared/_links.erb +1 -1
- data/app/views/active_admin/page/index.html.arb +1 -0
- data/app/views/active_admin/resource/edit.html.arb +1 -0
- data/app/views/active_admin/resource/index.html.arb +1 -0
- data/app/views/active_admin/resource/new.html.arb +1 -0
- data/app/views/active_admin/resource/show.html.arb +1 -0
- data/app/views/layouts/active_admin.html.arb +1 -0
- data/config/locales/ko.yml +1 -1
- data/config/locales/nl.yml +1 -1
- data/config/locales/ro.yml +3 -2
- data/docs/0-installation.md +2 -2
- data/docs/5-forms.md +3 -2
- data/docs/8-custom-actions.md +1 -1
- data/docs/Gemfile +1 -0
- data/docs/Gemfile.lock +116 -92
- data/lib/active_admin/abstract_view_factory.rb +1 -0
- data/lib/active_admin/application.rb +9 -9
- data/lib/active_admin/application_settings.rb +1 -0
- data/lib/active_admin/asset_registration.rb +1 -0
- data/lib/active_admin/authorization_adapter.rb +1 -0
- data/lib/active_admin/base_controller/authorization.rb +2 -1
- data/lib/active_admin/base_controller/menu.rb +1 -0
- data/lib/active_admin/base_controller.rb +2 -1
- data/lib/active_admin/batch_actions/controller.rb +1 -0
- data/lib/active_admin/batch_actions/resource_extension.rb +1 -0
- data/lib/active_admin/batch_actions/views/batch_action_form.rb +1 -0
- data/lib/active_admin/batch_actions/views/batch_action_selector.rb +1 -0
- data/lib/active_admin/batch_actions/views/selection_cells.rb +1 -0
- data/lib/active_admin/batch_actions.rb +1 -0
- data/lib/active_admin/callbacks.rb +1 -0
- data/lib/active_admin/cancan_adapter.rb +1 -0
- data/lib/active_admin/collection_decorator.rb +1 -0
- data/lib/active_admin/component.rb +1 -0
- data/lib/active_admin/controller_action.rb +1 -0
- data/lib/active_admin/csv_builder.rb +5 -18
- data/lib/active_admin/dependency.rb +2 -1
- data/lib/active_admin/deprecation.rb +1 -0
- data/lib/active_admin/devise.rb +11 -0
- data/lib/active_admin/dsl.rb +1 -0
- data/lib/active_admin/dynamic_setting.rb +1 -0
- data/lib/active_admin/dynamic_settings_node.rb +1 -0
- data/lib/active_admin/engine.rb +3 -1
- data/lib/active_admin/error.rb +1 -0
- data/lib/active_admin/filters/active.rb +1 -0
- data/lib/active_admin/filters/active_filter.rb +1 -0
- data/lib/active_admin/filters/active_sidebar.rb +2 -28
- data/lib/active_admin/filters/dsl.rb +1 -0
- data/lib/active_admin/filters/forms.rb +1 -0
- data/lib/active_admin/filters/formtastic_addons.rb +1 -0
- data/lib/active_admin/filters/resource_extension.rb +1 -0
- data/lib/active_admin/filters.rb +1 -0
- data/lib/active_admin/form_builder.rb +1 -0
- data/lib/active_admin/generators/boilerplate.rb +1 -0
- data/lib/active_admin/helpers/collection.rb +2 -0
- data/lib/active_admin/helpers/i18n.rb +1 -0
- data/lib/active_admin/helpers/optional_display.rb +1 -0
- data/lib/active_admin/helpers/routes/url_helpers.rb +1 -0
- data/lib/active_admin/helpers/scope_chain.rb +1 -0
- data/lib/active_admin/inputs/datepicker_input.rb +1 -0
- data/lib/active_admin/inputs/filters/base/search_method_select.rb +1 -0
- data/lib/active_admin/inputs/filters/base.rb +1 -0
- data/lib/active_admin/inputs/filters/boolean_input.rb +1 -0
- data/lib/active_admin/inputs/filters/check_boxes_input.rb +1 -0
- data/lib/active_admin/inputs/filters/date_picker_input.rb +1 -0
- data/lib/active_admin/inputs/filters/date_range_input.rb +1 -0
- data/lib/active_admin/inputs/filters/numeric_input.rb +1 -0
- data/lib/active_admin/inputs/filters/select_input.rb +1 -0
- data/lib/active_admin/inputs/filters/string_input.rb +1 -0
- data/lib/active_admin/inputs/filters/text_input.rb +1 -0
- data/lib/active_admin/inputs.rb +1 -0
- data/lib/active_admin/localizers/resource_localizer.rb +1 -0
- data/lib/active_admin/localizers.rb +1 -0
- data/lib/active_admin/menu.rb +1 -0
- data/lib/active_admin/menu_collection.rb +1 -0
- data/lib/active_admin/menu_item.rb +1 -0
- data/lib/active_admin/namespace.rb +2 -1
- data/lib/active_admin/namespace_settings.rb +1 -0
- data/lib/active_admin/order_clause.rb +1 -0
- data/lib/active_admin/orm/active_record/comments/comment.rb +1 -0
- data/lib/active_admin/orm/active_record/comments/namespace_helper.rb +1 -0
- data/lib/active_admin/orm/active_record/comments/resource_helper.rb +1 -0
- data/lib/active_admin/orm/active_record/comments/show_page_helper.rb +1 -0
- data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +1 -0
- data/lib/active_admin/orm/active_record/comments/views.rb +1 -0
- data/lib/active_admin/orm/active_record/comments.rb +1 -0
- data/lib/active_admin/orm/active_record.rb +1 -0
- data/lib/active_admin/orm/mongoid.rb +1 -0
- data/lib/active_admin/page.rb +1 -0
- data/lib/active_admin/page_controller.rb +1 -0
- data/lib/active_admin/page_dsl.rb +1 -0
- data/lib/active_admin/page_presenter.rb +1 -0
- data/lib/active_admin/pundit_adapter.rb +55 -11
- data/lib/active_admin/resource/action_items.rb +1 -0
- data/lib/active_admin/resource/attributes.rb +1 -0
- data/lib/active_admin/resource/belongs_to.rb +1 -0
- data/lib/active_admin/resource/controllers.rb +1 -0
- data/lib/active_admin/resource/includes.rb +1 -0
- data/lib/active_admin/resource/menu.rb +1 -0
- data/lib/active_admin/resource/model.rb +1 -0
- data/lib/active_admin/resource/naming.rb +1 -0
- data/lib/active_admin/resource/ordering.rb +1 -0
- data/lib/active_admin/resource/page_presenters.rb +1 -0
- data/lib/active_admin/resource/pagination.rb +1 -0
- data/lib/active_admin/resource/routes.rb +1 -0
- data/lib/active_admin/resource/scope_to.rb +1 -0
- data/lib/active_admin/resource/scopes.rb +1 -0
- data/lib/active_admin/resource/sidebars.rb +1 -0
- data/lib/active_admin/resource.rb +3 -2
- data/lib/active_admin/resource_collection.rb +1 -0
- data/lib/active_admin/resource_controller/action_builder.rb +1 -0
- data/lib/active_admin/resource_controller/data_access.rb +30 -4
- data/lib/active_admin/resource_controller/decorators.rb +1 -0
- data/lib/active_admin/resource_controller/polymorphic_routes.rb +1 -0
- data/lib/active_admin/resource_controller/resource_class_methods.rb +1 -0
- data/lib/active_admin/resource_controller/scoping.rb +1 -0
- data/lib/active_admin/resource_controller/sidebars.rb +1 -0
- data/lib/active_admin/resource_controller/streaming.rb +3 -2
- data/lib/active_admin/resource_controller.rb +1 -0
- data/lib/active_admin/resource_dsl.rb +7 -21
- data/lib/active_admin/router.rb +1 -0
- data/lib/active_admin/scope.rb +1 -0
- data/lib/active_admin/settings_node.rb +1 -0
- data/lib/active_admin/sidebar_section.rb +1 -0
- data/lib/active_admin/version.rb +2 -1
- data/lib/active_admin/view_factory.rb +1 -0
- data/lib/active_admin/view_helpers/active_admin_application_helper.rb +1 -0
- data/lib/active_admin/view_helpers/auto_link_helper.rb +1 -0
- data/lib/active_admin/view_helpers/breadcrumb_helper.rb +1 -0
- data/lib/active_admin/view_helpers/display_helper.rb +11 -3
- data/lib/active_admin/view_helpers/download_format_links_helper.rb +1 -0
- data/lib/active_admin/view_helpers/fields_for.rb +1 -0
- data/lib/active_admin/view_helpers/flash_helper.rb +1 -0
- data/lib/active_admin/view_helpers/form_helper.rb +1 -0
- data/lib/active_admin/view_helpers/method_or_proc_helper.rb +1 -0
- data/lib/active_admin/view_helpers/scope_name_helper.rb +1 -0
- data/lib/active_admin/view_helpers/sidebar_helper.rb +1 -0
- data/lib/active_admin/view_helpers/title_helper.rb +1 -0
- data/lib/active_admin/view_helpers/view_factory_helper.rb +1 -0
- data/lib/active_admin/view_helpers.rb +1 -0
- data/lib/active_admin/views/action_items.rb +1 -0
- data/lib/active_admin/views/components/active_admin_form.rb +2 -1
- data/lib/active_admin/views/components/active_filters_sidebar_content.rb +59 -0
- data/lib/active_admin/views/components/attributes_table.rb +1 -0
- data/lib/active_admin/views/components/blank_slate.rb +1 -0
- data/lib/active_admin/views/components/columns.rb +1 -0
- data/lib/active_admin/views/components/dropdown_menu.rb +3 -5
- data/lib/active_admin/views/components/index_list.rb +1 -0
- data/lib/active_admin/views/components/menu.rb +1 -0
- data/lib/active_admin/views/components/menu_item.rb +1 -0
- data/lib/active_admin/views/components/paginated_collection.rb +1 -0
- data/lib/active_admin/views/components/panel.rb +1 -0
- data/lib/active_admin/views/components/scopes.rb +1 -0
- data/lib/active_admin/views/components/sidebar.rb +1 -0
- data/lib/active_admin/views/components/sidebar_section.rb +1 -0
- data/lib/active_admin/views/components/site_title.rb +1 -0
- data/lib/active_admin/views/components/status_tag.rb +1 -0
- data/lib/active_admin/views/components/table_for.rb +1 -0
- data/lib/active_admin/views/components/tabs.rb +1 -0
- data/lib/active_admin/views/components/unsupported_browser.rb +1 -0
- data/lib/active_admin/views/footer.rb +1 -0
- data/lib/active_admin/views/header.rb +1 -0
- data/lib/active_admin/views/index_as_block.rb +1 -0
- data/lib/active_admin/views/index_as_blog.rb +1 -0
- data/lib/active_admin/views/index_as_grid.rb +1 -0
- data/lib/active_admin/views/index_as_table.rb +1 -0
- data/lib/active_admin/views/pages/base.rb +4 -1
- data/lib/active_admin/views/pages/form.rb +1 -0
- data/lib/active_admin/views/pages/index.rb +1 -0
- data/lib/active_admin/views/pages/layout.rb +1 -0
- data/lib/active_admin/views/pages/page.rb +1 -0
- data/lib/active_admin/views/pages/show.rb +1 -0
- data/lib/active_admin/views/tabbed_navigation.rb +1 -0
- data/lib/active_admin/views/title_bar.rb +1 -0
- data/lib/active_admin/views.rb +1 -0
- data/lib/active_admin.rb +2 -1
- data/lib/activeadmin.rb +1 -0
- data/lib/generators/active_admin/assets/assets_generator.rb +1 -0
- data/lib/generators/active_admin/devise/devise_generator.rb +1 -0
- data/lib/generators/active_admin/install/install_generator.rb +1 -0
- data/lib/generators/active_admin/install/templates/dashboard.rb +1 -0
- data/lib/generators/active_admin/page/page_generator.rb +1 -0
- data/lib/generators/active_admin/page/templates/page.rb +1 -0
- data/lib/generators/active_admin/resource/resource_generator.rb +1 -0
- data/lib/generators/active_admin/webpacker/webpacker_generator.rb +1 -0
- data/lib/ransack_ext.rb +1 -0
- metadata +19 -18
data/lib/active_admin/engine.rb
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
module ActiveAdmin
|
|
2
3
|
class Engine < ::Rails::Engine
|
|
3
|
-
|
|
4
|
+
# Set default values for app_path and load_paths before running initializers
|
|
5
|
+
initializer "active_admin.load_app_path", before: :load_config_initializers do |app|
|
|
4
6
|
ActiveAdmin::Application.setting :app_path, app.root
|
|
5
7
|
ActiveAdmin::Application.setting :load_paths, [File.expand_path("app/admin", app.root)]
|
|
6
8
|
end
|
data/lib/active_admin/error.rb
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
require "active_admin/filters/active"
|
|
2
3
|
|
|
3
4
|
module ActiveAdmin
|
|
@@ -9,34 +10,7 @@ module ActiveAdmin
|
|
|
9
10
|
end
|
|
10
11
|
|
|
11
12
|
def block
|
|
12
|
-
->
|
|
13
|
-
active_filters = ActiveAdmin::Filters::Active.new(active_admin_config, assigns[:search])
|
|
14
|
-
span do
|
|
15
|
-
if current_scope
|
|
16
|
-
h4 I18n.t("active_admin.search_status.current_scope"), style: "display: inline"
|
|
17
|
-
b scope_name(current_scope), class: "current_scope_name", style: "display: inline"
|
|
18
|
-
end
|
|
19
|
-
div style: "margin-top: 10px" do
|
|
20
|
-
h4 I18n.t("active_admin.search_status.current_filters"), style: "margin-bottom: 10px"
|
|
21
|
-
ul do
|
|
22
|
-
if active_filters.filters.blank?
|
|
23
|
-
li I18n.t("active_admin.search_status.no_current_filters")
|
|
24
|
-
else
|
|
25
|
-
active_filters.filters.each do |filter|
|
|
26
|
-
li filter.html_options do
|
|
27
|
-
span do
|
|
28
|
-
text_node filter.label
|
|
29
|
-
end
|
|
30
|
-
b do
|
|
31
|
-
text_node to_sentence(filter.values.map { |v| pretty_format(v) })
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
end
|
|
13
|
+
-> { active_filters_sidebar_content }
|
|
40
14
|
end
|
|
41
15
|
|
|
42
16
|
def title
|
data/lib/active_admin/filters.rb
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
module ActiveAdmin
|
|
2
3
|
module Helpers
|
|
3
4
|
module Collection
|
|
@@ -5,6 +6,7 @@ module ActiveAdmin
|
|
|
5
6
|
# 2. correctly handles the Hash returned when `group by` is used
|
|
6
7
|
def collection_size(c = collection)
|
|
7
8
|
return c.count if c.is_a?(Array)
|
|
9
|
+
return c.length if c.limit_value
|
|
8
10
|
|
|
9
11
|
c = c.except :select, :order
|
|
10
12
|
|
data/lib/active_admin/inputs.rb
CHANGED
data/lib/active_admin/menu.rb
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
require "active_admin/resource_collection"
|
|
2
3
|
|
|
3
4
|
module ActiveAdmin
|
|
@@ -71,7 +72,7 @@ module ActiveAdmin
|
|
|
71
72
|
reset_menu!
|
|
72
73
|
|
|
73
74
|
# Dispatch a registration event
|
|
74
|
-
ActiveSupport::Notifications.
|
|
75
|
+
ActiveSupport::Notifications.instrument ActiveAdmin::Resource::RegisterEvent, config
|
|
75
76
|
|
|
76
77
|
# Return the config
|
|
77
78
|
config
|
data/lib/active_admin/page.rb
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
ActiveAdmin::Dependency.pundit!
|
|
2
3
|
|
|
3
4
|
require "pundit"
|
|
@@ -30,16 +31,13 @@ module ActiveAdmin
|
|
|
30
31
|
end
|
|
31
32
|
|
|
32
33
|
def retrieve_policy(subject)
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
rescue Pundit::NotDefinedError => e
|
|
39
|
-
if default_policy_class
|
|
40
|
-
default_policy(user, subject)
|
|
34
|
+
target = policy_target(subject)
|
|
35
|
+
if (policy = policy(namespace(target)) || compat_policy(subject))
|
|
36
|
+
policy
|
|
37
|
+
elsif default_policy_class
|
|
38
|
+
default_policy(subject)
|
|
41
39
|
else
|
|
42
|
-
raise
|
|
40
|
+
raise Pundit::NotDefinedError, "unable to find a compatible policy for `#{target}`"
|
|
43
41
|
end
|
|
44
42
|
end
|
|
45
43
|
|
|
@@ -56,8 +54,42 @@ module ActiveAdmin
|
|
|
56
54
|
|
|
57
55
|
private
|
|
58
56
|
|
|
57
|
+
def policy_target(subject)
|
|
58
|
+
case subject
|
|
59
|
+
when nil then resource
|
|
60
|
+
when Class then subject.new
|
|
61
|
+
else subject
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
# This method is needed to fallback to our previous policy searching logic.
|
|
66
|
+
# I.e.: when class name contains `default_policy_namespace` (eg: ShopAdmin)
|
|
67
|
+
# we should try to search it without namespace. This is because that's
|
|
68
|
+
# the only thing that worked in this case before we fixed our buggy namespace
|
|
69
|
+
# detection, so people are probably relying on it.
|
|
70
|
+
# This fallback might be removed in future versions of ActiveAdmin, so
|
|
71
|
+
# pundit_adapter search will work consistently with provided namespaces
|
|
72
|
+
def compat_policy(subject)
|
|
73
|
+
return unless default_policy_namespace
|
|
74
|
+
|
|
75
|
+
target = policy_target(subject)
|
|
76
|
+
|
|
77
|
+
return unless target.class.to_s.include?(default_policy_module) &&
|
|
78
|
+
(policy = policy(target))
|
|
79
|
+
|
|
80
|
+
policy_name = policy.class.to_s
|
|
81
|
+
|
|
82
|
+
Deprecation.warn "You have `pundit_policy_namespace` configured as `#{default_policy_namespace}`, " \
|
|
83
|
+
"but ActiveAdmin was unable to find policy #{default_policy_module}::#{policy_name}. " \
|
|
84
|
+
"#{policy_name} will be used instead. " \
|
|
85
|
+
"This behavior will be removed in future versions of ActiveAdmin. " \
|
|
86
|
+
"To fix this warning, move your #{policy_name} policy to the #{default_policy_module} namespace"
|
|
87
|
+
|
|
88
|
+
policy
|
|
89
|
+
end
|
|
90
|
+
|
|
59
91
|
def namespace(object)
|
|
60
|
-
if default_policy_namespace && !object.class.to_s.
|
|
92
|
+
if default_policy_namespace && !object.class.to_s.start_with?("#{default_policy_module}::")
|
|
61
93
|
[default_policy_namespace.to_sym, object]
|
|
62
94
|
else
|
|
63
95
|
object
|
|
@@ -68,7 +100,7 @@ module ActiveAdmin
|
|
|
68
100
|
ActiveAdmin.application.pundit_default_policy && ActiveAdmin.application.pundit_default_policy.constantize
|
|
69
101
|
end
|
|
70
102
|
|
|
71
|
-
def default_policy(
|
|
103
|
+
def default_policy(subject)
|
|
72
104
|
default_policy_class.new(user, subject)
|
|
73
105
|
end
|
|
74
106
|
|
|
@@ -76,6 +108,18 @@ module ActiveAdmin
|
|
|
76
108
|
ActiveAdmin.application.pundit_policy_namespace
|
|
77
109
|
end
|
|
78
110
|
|
|
111
|
+
def default_policy_module
|
|
112
|
+
default_policy_namespace.to_s.camelize
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
def policy(target)
|
|
116
|
+
policies[target] ||= Pundit.policy(user, target)
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
def policies
|
|
120
|
+
@policies ||= {}
|
|
121
|
+
end
|
|
122
|
+
|
|
79
123
|
end
|
|
80
124
|
|
|
81
125
|
end
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
require "active_admin/resource/action_items"
|
|
2
3
|
require "active_admin/resource/attributes"
|
|
3
4
|
require "active_admin/resource/controllers"
|
|
@@ -98,11 +99,11 @@ module ActiveAdmin
|
|
|
98
99
|
# The class this resource wraps. If you register the Post model, Resource#resource_class
|
|
99
100
|
# will point to the Post class
|
|
100
101
|
def resource_class
|
|
101
|
-
|
|
102
|
+
resource_class_name.constantize
|
|
102
103
|
end
|
|
103
104
|
|
|
104
105
|
def decorator_class
|
|
105
|
-
|
|
106
|
+
decorator_class_name&.constantize
|
|
106
107
|
end
|
|
107
108
|
|
|
108
109
|
def resource_name_extension
|