activeadmin 2.9.0 → 3.2.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 +284 -1
- data/CONTRIBUTING.md +4 -12
- data/README.md +2 -2
- data/app/assets/javascripts/active_admin/base.js +13 -9
- data/app/assets/stylesheets/active_admin/_base.scss +53 -37
- data/app/assets/stylesheets/active_admin/_forms.scss +1 -11
- data/app/assets/stylesheets/active_admin/_normalize.scss +25 -123
- 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/_footer.scss +6 -1
- 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/app/views/layouts/active_admin_logged_out.html.erb +5 -4
- data/config/locales/ar.yml +0 -7
- data/config/locales/az.yml +0 -7
- data/config/locales/bg.yml +0 -7
- data/config/locales/bs.yml +0 -7
- data/config/locales/ca.yml +0 -7
- data/config/locales/cs.yml +0 -7
- data/config/locales/da.yml +0 -7
- data/config/locales/de-CH.yml +0 -7
- data/config/locales/de.yml +0 -8
- data/config/locales/el.yml +0 -7
- data/config/locales/en-CA.yml +0 -7
- data/config/locales/en-GB.yml +0 -7
- data/config/locales/en.yml +0 -8
- data/config/locales/eo.yml +0 -8
- data/config/locales/es-MX.yml +0 -7
- data/config/locales/es.yml +0 -8
- data/config/locales/fa.yml +0 -7
- data/config/locales/fi.yml +0 -7
- data/config/locales/fr.yml +3 -11
- data/config/locales/he.yml +0 -9
- data/config/locales/hr.yml +0 -7
- data/config/locales/hu.yml +0 -8
- data/config/locales/id.yml +0 -7
- data/config/locales/it.yml +0 -8
- data/config/locales/ja.yml +0 -8
- data/config/locales/ko.yml +1 -8
- data/config/locales/lt.yml +0 -8
- data/config/locales/lv.yml +0 -7
- data/config/locales/mk.yml +0 -8
- data/config/locales/nb.yml +0 -8
- data/config/locales/nl.yml +1 -9
- data/config/locales/pl.yml +0 -8
- data/config/locales/pt-BR.yml +0 -8
- data/config/locales/pt-PT.yml +0 -7
- data/config/locales/ro.yml +3 -9
- data/config/locales/ru.yml +0 -6
- data/config/locales/sk.yml +0 -8
- data/config/locales/sv-SE.yml +58 -39
- data/config/locales/tr.yml +0 -11
- data/config/locales/uk.yml +0 -6
- data/config/locales/vi.yml +34 -15
- data/config/locales/zh-CN.yml +34 -23
- data/config/locales/zh-TW.yml +0 -7
- data/lib/active_admin/abstract_view_factory.rb +1 -0
- data/lib/active_admin/application.rb +10 -10
- data/lib/active_admin/application_settings.rb +1 -0
- data/lib/active_admin/asset_registration.rb +4 -3
- data/lib/active_admin/authorization_adapter.rb +3 -0
- data/lib/active_admin/base_controller/authorization.rb +4 -3
- 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 +24 -16
- data/lib/active_admin/dependency.rb +1 -4
- 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 +8 -2
- 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 +2 -1
- 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 +3 -2
- data/lib/active_admin/filters/formtastic_addons.rb +2 -1
- data/lib/active_admin/filters/resource_extension.rb +5 -4
- 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 +3 -2
- 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 +3 -2
- data/lib/active_admin/inputs/filters/numeric_input.rb +2 -1
- data/lib/active_admin/inputs/filters/select_input.rb +3 -0
- data/lib/active_admin/inputs/filters/string_input.rb +2 -1
- 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 +2 -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 +4 -3
- data/lib/active_admin/namespace_settings.rb +2 -1
- data/lib/active_admin/order_clause.rb +1 -0
- data/lib/active_admin/orm/active_record/comments/comment.rb +9 -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 +2 -1
- data/lib/active_admin/orm/active_record/comments/views.rb +1 -0
- data/lib/active_admin/orm/active_record/comments.rb +9 -8
- 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 -13
- data/lib/active_admin/resource/action_items.rb +3 -2
- 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 +2 -1
- data/lib/active_admin/view_helpers/breadcrumb_helper.rb +1 -0
- data/lib/active_admin/view_helpers/display_helper.rb +19 -4
- 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 -5
- 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 +2 -5
- data/lib/active_admin/views/pages/base.rb +8 -4
- data/lib/active_admin/views/pages/form.rb +1 -0
- data/lib/active_admin/views/pages/index.rb +2 -1
- 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 +2 -7
- 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 +6 -3
- 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/active_admin.rb.erb +18 -1
- 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
- metadata +26 -83
- data/docs/.gitignore +0 -1
- data/docs/0-installation.md +0 -142
- data/docs/1-general-configuration.md +0 -224
- data/docs/10-custom-pages.md +0 -150
- data/docs/11-decorators.md +0 -70
- data/docs/12-arbre-components.md +0 -214
- data/docs/13-authorization-adapter.md +0 -285
- data/docs/14-gotchas.md +0 -138
- data/docs/2-resource-customization.md +0 -475
- data/docs/3-index-pages/custom-index.md +0 -35
- data/docs/3-index-pages/index-as-block.md +0 -19
- data/docs/3-index-pages/index-as-blog.md +0 -69
- data/docs/3-index-pages/index-as-grid.md +0 -27
- data/docs/3-index-pages/index-as-table.md +0 -234
- data/docs/3-index-pages.md +0 -328
- data/docs/4-csv-format.md +0 -74
- data/docs/5-forms.md +0 -237
- data/docs/6-show-pages.md +0 -93
- data/docs/7-sidebars.md +0 -75
- data/docs/8-custom-actions.md +0 -177
- data/docs/9-batch-actions.md +0 -237
- data/docs/CNAME +0 -1
- data/docs/Gemfile +0 -3
- data/docs/Gemfile.lock +0 -259
- data/docs/README.md +0 -24
- data/docs/_config.yml +0 -4
- data/docs/_includes/footer.html +0 -8
- data/docs/_includes/google-analytics.html +0 -16
- data/docs/_includes/head.html +0 -7
- data/docs/_includes/toc.html +0 -98
- data/docs/_includes/top-menu.html +0 -17
- data/docs/_layouts/default.html +0 -21
- data/docs/documentation.md +0 -60
- data/docs/images/activeadmin.png +0 -0
- data/docs/images/code-header.png +0 -0
- data/docs/images/divider.png +0 -0
- data/docs/images/features.png +0 -0
- data/docs/images/tidelift.svg +0 -14
- data/docs/index.html +0 -226
- data/docs/stylesheets/main.css +0 -1205
- data/lib/active_admin/deprecation.rb +0 -10
- data/lib/ransack_ext.rb +0 -20
- /data/app/assets/stylesheets/active_admin/{print.scss → _print.scss} +0 -0
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
require "active_admin/helpers/optional_display"
|
|
2
3
|
|
|
3
4
|
module ActiveAdmin
|
|
@@ -64,7 +65,7 @@ module ActiveAdmin
|
|
|
64
65
|
# Adds the default New link on index
|
|
65
66
|
def add_default_new_action_item
|
|
66
67
|
add_action_item :new, only: :index do
|
|
67
|
-
if controller.action_methods.include?("new") && authorized?(ActiveAdmin::Auth::
|
|
68
|
+
if controller.action_methods.include?("new") && authorized?(ActiveAdmin::Auth::NEW, active_admin_config.resource_class)
|
|
68
69
|
localizer = ActiveAdmin::Localizers.resource(active_admin_config)
|
|
69
70
|
link_to localizer.t(:new_model), new_resource_path
|
|
70
71
|
end
|
|
@@ -74,7 +75,7 @@ module ActiveAdmin
|
|
|
74
75
|
# Adds the default Edit link on show
|
|
75
76
|
def add_default_edit_action_item
|
|
76
77
|
add_action_item :edit, only: :show do
|
|
77
|
-
if controller.action_methods.include?("edit") && authorized?(ActiveAdmin::Auth::
|
|
78
|
+
if controller.action_methods.include?("edit") && authorized?(ActiveAdmin::Auth::EDIT, resource)
|
|
78
79
|
localizer = ActiveAdmin::Localizers.resource(active_admin_config)
|
|
79
80
|
link_to localizer.t(:edit_model), edit_resource_path(resource)
|
|
80
81
|
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
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
module ActiveAdmin
|
|
2
3
|
class ResourceController < BaseController
|
|
3
4
|
|
|
@@ -23,9 +24,9 @@ module ActiveAdmin
|
|
|
23
24
|
|
|
24
25
|
COLLECTION_APPLIES = [
|
|
25
26
|
:authorization_scope,
|
|
26
|
-
:sorting,
|
|
27
27
|
:filtering,
|
|
28
28
|
:scoping,
|
|
29
|
+
:sorting,
|
|
29
30
|
:includes,
|
|
30
31
|
:pagination,
|
|
31
32
|
:collection_decorator
|
|
@@ -128,7 +129,7 @@ module ActiveAdmin
|
|
|
128
129
|
#
|
|
129
130
|
# @return [ActiveRecord::Base] An un-saved active record base object
|
|
130
131
|
def build_new_resource
|
|
131
|
-
scoped_collection.send(
|
|
132
|
+
apply_authorization_scope(scoped_collection).send(
|
|
132
133
|
method_for_build,
|
|
133
134
|
*resource_params.map { |params| params.slice(active_admin_config.resource_class.inheritance_column) }
|
|
134
135
|
)
|
|
@@ -249,12 +250,13 @@ module ActiveAdmin
|
|
|
249
250
|
end
|
|
250
251
|
|
|
251
252
|
def apply_pagination(chain)
|
|
253
|
+
# skip pagination if CSV format was requested
|
|
254
|
+
return chain if params["format"] == "csv"
|
|
252
255
|
# skip pagination if already was paginated by scope
|
|
253
256
|
return chain if chain.respond_to?(:total_pages)
|
|
254
|
-
page_method_name = Kaminari.config.page_method_name
|
|
255
257
|
page = params[Kaminari.config.param_name]
|
|
256
258
|
|
|
257
|
-
chain
|
|
259
|
+
paginate(chain, page, per_page)
|
|
258
260
|
end
|
|
259
261
|
|
|
260
262
|
def collection_applies(options = {})
|
|
@@ -264,6 +266,16 @@ module ActiveAdmin
|
|
|
264
266
|
COLLECTION_APPLIES & only - except
|
|
265
267
|
end
|
|
266
268
|
|
|
269
|
+
def in_paginated_batches(&block)
|
|
270
|
+
ActiveRecord::Base.uncached do
|
|
271
|
+
(1..paginated_collection.total_pages).each do |page|
|
|
272
|
+
paginated_collection(page).each do |resource|
|
|
273
|
+
yield apply_decorator(resource)
|
|
274
|
+
end
|
|
275
|
+
end
|
|
276
|
+
end
|
|
277
|
+
end
|
|
278
|
+
|
|
267
279
|
def per_page
|
|
268
280
|
if active_admin_config.paginate
|
|
269
281
|
dynamic_per_page || configured_per_page
|
|
@@ -317,6 +329,20 @@ module ActiveAdmin
|
|
|
317
329
|
def create_another?
|
|
318
330
|
params[:create_another].present?
|
|
319
331
|
end
|
|
332
|
+
|
|
333
|
+
def paginated_collection(page_no = 1)
|
|
334
|
+
paginate(collection, page_no, batch_size)
|
|
335
|
+
end
|
|
336
|
+
|
|
337
|
+
def paginate(chain, page, per_page)
|
|
338
|
+
page_method_name = Kaminari.config.page_method_name
|
|
339
|
+
|
|
340
|
+
chain.public_send(page_method_name, page).per(per_page)
|
|
341
|
+
end
|
|
342
|
+
|
|
343
|
+
def batch_size
|
|
344
|
+
1000
|
|
345
|
+
end
|
|
320
346
|
end
|
|
321
347
|
end
|
|
322
348
|
end
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
require "csv"
|
|
2
3
|
|
|
3
4
|
module ActiveAdmin
|
|
@@ -23,14 +24,14 @@ module ActiveAdmin
|
|
|
23
24
|
headers["Last-Modified"] = Time.current.httpdate
|
|
24
25
|
|
|
25
26
|
if ActiveAdmin.application.disable_streaming_in.include? Rails.env
|
|
26
|
-
self.response_body = block[
|
|
27
|
+
self.response_body = block[String.new]
|
|
27
28
|
else
|
|
28
29
|
self.response_body = Enumerator.new &block
|
|
29
30
|
end
|
|
30
31
|
end
|
|
31
32
|
|
|
32
33
|
def csv_filename
|
|
33
|
-
"#{resource_collection_name.to_s.gsub('_', '-')}-#{Time.zone.now.to_date.to_s
|
|
34
|
+
"#{resource_collection_name.to_s.gsub('_', '-')}-#{Time.zone.now.to_date.to_s}.csv"
|
|
34
35
|
end
|
|
35
36
|
|
|
36
37
|
def stream_csv
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
module ActiveAdmin
|
|
2
3
|
# This is the class where all the register blocks are evaluated.
|
|
3
4
|
class ResourceDSL < DSL
|
|
@@ -62,11 +63,12 @@ module ActiveAdmin
|
|
|
62
63
|
#
|
|
63
64
|
def permit_params(*args, &block)
|
|
64
65
|
param_key = config.param_key.to_sym
|
|
65
|
-
belongs_to_param = config.belongs_to_param
|
|
66
|
-
create_another_param = :create_another if config.create_another
|
|
67
66
|
|
|
68
67
|
controller do
|
|
69
68
|
define_method :permitted_params do
|
|
69
|
+
belongs_to_param = active_admin_config.belongs_to_param
|
|
70
|
+
create_another_param = :create_another if active_admin_config.create_another
|
|
71
|
+
|
|
70
72
|
permitted_params =
|
|
71
73
|
active_admin_namespace.permitted_params +
|
|
72
74
|
Array.wrap(belongs_to_param) +
|
|
@@ -189,25 +191,9 @@ module ActiveAdmin
|
|
|
189
191
|
delegate :before_save, :after_save, to: :controller
|
|
190
192
|
delegate :before_destroy, :after_destroy, to: :controller
|
|
191
193
|
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
:after, :skip_after,
|
|
196
|
-
:around, :skip
|
|
197
|
-
]
|
|
198
|
-
keywords = if Rails::VERSION::MAJOR == 5 && Rails::VERSION::MINOR >= 1
|
|
199
|
-
[:action]
|
|
200
|
-
else
|
|
201
|
-
[:action, :filter]
|
|
202
|
-
end
|
|
203
|
-
|
|
204
|
-
keywords.each do |name|
|
|
205
|
-
phases.each do |action|
|
|
206
|
-
define_method "#{action}_#{name}" do |*args, &block|
|
|
207
|
-
controller.public_send "#{action}_action", *args, &block
|
|
208
|
-
end
|
|
209
|
-
end
|
|
210
|
-
end
|
|
194
|
+
standard_rails_filters =
|
|
195
|
+
AbstractController::Callbacks::ClassMethods.public_instance_methods.select { |m| m.match(/_action\z/) }
|
|
196
|
+
delegate *standard_rails_filters, to: :controller
|
|
211
197
|
|
|
212
198
|
# Specify which actions to create in the controller
|
|
213
199
|
#
|
data/lib/active_admin/router.rb
CHANGED
data/lib/active_admin/scope.rb
CHANGED
data/lib/active_admin/version.rb
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
module ActiveAdmin
|
|
2
3
|
module ViewHelpers
|
|
3
4
|
module AutoLinkHelper
|
|
@@ -28,7 +29,7 @@ module ActiveAdmin
|
|
|
28
29
|
authorized?(ActiveAdmin::Auth::READ, resource)
|
|
29
30
|
url_for config.route_instance_path resource, url_options
|
|
30
31
|
elsif config.controller.action_methods.include?("edit") &&
|
|
31
|
-
authorized?(ActiveAdmin::Auth::
|
|
32
|
+
authorized?(ActiveAdmin::Auth::EDIT, resource)
|
|
32
33
|
url_for config.route_edit_instance_path resource, url_options
|
|
33
34
|
end
|
|
34
35
|
end
|
|
@@ -1,14 +1,22 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
module ActiveAdmin
|
|
2
3
|
module ViewHelpers
|
|
3
4
|
module DisplayHelper
|
|
4
5
|
|
|
5
6
|
DISPLAY_NAME_FALLBACK = -> {
|
|
6
|
-
name = ""
|
|
7
7
|
klass = self.class
|
|
8
|
-
name
|
|
9
|
-
|
|
8
|
+
name = if klass.respond_to?(:model_name)
|
|
9
|
+
if klass.respond_to?(:primary_key)
|
|
10
|
+
"#{klass.model_name.human} ##{send(klass.primary_key)}"
|
|
11
|
+
else
|
|
12
|
+
klass.model_name.human
|
|
13
|
+
end
|
|
14
|
+
elsif klass.respond_to?(:primary_key)
|
|
15
|
+
" ##{send(klass.primary_key)}"
|
|
16
|
+
end
|
|
10
17
|
name.present? ? name : to_s
|
|
11
18
|
}
|
|
19
|
+
|
|
12
20
|
def DISPLAY_NAME_FALLBACK.inspect
|
|
13
21
|
"DISPLAY_NAME_FALLBACK"
|
|
14
22
|
end
|
|
@@ -16,7 +24,14 @@ module ActiveAdmin
|
|
|
16
24
|
# Attempts to call any known display name methods on the resource.
|
|
17
25
|
# See the setting in `application.rb` for the list of methods and their priority.
|
|
18
26
|
def display_name(resource)
|
|
19
|
-
|
|
27
|
+
unless resource.nil?
|
|
28
|
+
result = render_in_context(resource, display_name_method_for(resource))
|
|
29
|
+
if result.to_s&.strip&.present?
|
|
30
|
+
ERB::Util.html_escape(result)
|
|
31
|
+
else
|
|
32
|
+
ERB::Util.html_escape(render_in_context(resource, DISPLAY_NAME_FALLBACK))
|
|
33
|
+
end
|
|
34
|
+
end
|
|
20
35
|
end
|
|
21
36
|
|
|
22
37
|
# Looks up and caches the first available display name method.
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
module ActiveAdmin
|
|
2
3
|
module Views
|
|
3
4
|
class FormtasticProxy < ::Arbre::Rails::Forms::FormBuilderProxy
|
|
@@ -16,7 +17,7 @@ module ActiveAdmin
|
|
|
16
17
|
end
|
|
17
18
|
|
|
18
19
|
def to_s
|
|
19
|
-
opening_tag
|
|
20
|
+
opening_tag + children.to_s + closing_tag
|
|
20
21
|
end
|
|
21
22
|
end
|
|
22
23
|
|
|
@@ -101,10 +102,6 @@ module ActiveAdmin
|
|
|
101
102
|
form_builder.object
|
|
102
103
|
end
|
|
103
104
|
|
|
104
|
-
def form_buffers
|
|
105
|
-
raise "'form_buffers' has been removed from ActiveAdmin::FormBuilder, please read https://github.com/activeadmin/activeadmin/blob/master/docs/5-forms.md for details."
|
|
106
|
-
end
|
|
107
|
-
|
|
108
105
|
private
|
|
109
106
|
|
|
110
107
|
def create_another_checkbox
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
require "active_admin/filters/active"
|
|
3
|
+
|
|
4
|
+
module ActiveAdmin
|
|
5
|
+
module Views
|
|
6
|
+
|
|
7
|
+
class ActiveFiltersSidebarContent < ActiveAdmin::Component
|
|
8
|
+
builder_method :active_filters_sidebar_content
|
|
9
|
+
|
|
10
|
+
def build
|
|
11
|
+
active_filters = ActiveAdmin::Filters::Active.new(active_admin_config, assigns[:search])
|
|
12
|
+
active_scopes = assigns[:search].instance_variable_get("@scope_args")
|
|
13
|
+
|
|
14
|
+
scope_block(current_scope)
|
|
15
|
+
filters_list(active_filters, active_scopes)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def scope_block(current_scope)
|
|
19
|
+
return unless current_scope
|
|
20
|
+
|
|
21
|
+
h4 I18n.t("active_admin.search_status.current_scope"), style: "display: inline"
|
|
22
|
+
b scope_name(current_scope), class: "current_scope_name"
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def filters_list(active_filters, active_scopes)
|
|
26
|
+
div style: "margin-top: 10px" do
|
|
27
|
+
h4 I18n.t("active_admin.search_status.current_filters"), style: "margin-bottom: 10px"
|
|
28
|
+
ul do
|
|
29
|
+
if active_filters.filters.blank? && active_scopes.blank?
|
|
30
|
+
li I18n.t("active_admin.search_status.no_current_filters")
|
|
31
|
+
else
|
|
32
|
+
active_filters.filters.each { |filter| filter_item(filter) }
|
|
33
|
+
active_scopes.each { |name, value| scope_item(name, value) }
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def filter_item(filter)
|
|
40
|
+
li filter.html_options do
|
|
41
|
+
span filter.label
|
|
42
|
+
b to_sentence(filter.values.map { |v| pretty_format(v) })
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def scope_item(name, value)
|
|
47
|
+
filter_name = name.gsub(/_eq$/, "")
|
|
48
|
+
filter = active_admin_config.filters[filter_name.to_sym]
|
|
49
|
+
label = filter.try(:[], :label) || filter_name.titleize
|
|
50
|
+
|
|
51
|
+
li class: "current_filter_#{name}" do
|
|
52
|
+
span "#{label} #{Ransack::Translate.predicate('eq')}"
|
|
53
|
+
b value
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
end
|
|
59
|
+
end
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
module ActiveAdmin
|
|
2
3
|
module Views
|
|
3
4
|
|
|
@@ -44,17 +45,14 @@ module ActiveAdmin
|
|
|
44
45
|
private
|
|
45
46
|
|
|
46
47
|
def build_button(name, button_options)
|
|
47
|
-
button_options[:class]
|
|
48
|
-
button_options[:class] << " dropdown_menu_button"
|
|
49
|
-
|
|
48
|
+
button_options[:class] = "#{button_options[:class]} dropdown_menu_button"
|
|
50
49
|
button_options[:href] = "#"
|
|
51
50
|
|
|
52
51
|
a name, button_options
|
|
53
52
|
end
|
|
54
53
|
|
|
55
54
|
def build_menu(options)
|
|
56
|
-
options[:class]
|
|
57
|
-
options[:class] << " dropdown_menu_list"
|
|
55
|
+
options[:class] = "#{options[:class]} dropdown_menu_list"
|
|
58
56
|
|
|
59
57
|
menu_list = nil
|
|
60
58
|
|