activeadmin 2.6.1 → 3.2.3
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 +438 -9
- data/CONTRIBUTING.md +12 -36
- data/README.md +8 -8
- data/app/assets/javascripts/active_admin/base.js +27 -25
- data/app/assets/stylesheets/active_admin/_base.scss +53 -37
- data/app/assets/stylesheets/active_admin/_forms.scss +2 -13
- data/app/assets/stylesheets/active_admin/_header.scss +37 -3
- data/app/assets/stylesheets/active_admin/_normalize.scss +25 -123
- data/app/assets/stylesheets/active_admin/components/_comments.scss +2 -2
- data/app/assets/stylesheets/active_admin/components/_date_picker.scss +1 -2
- data/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +7 -5
- data/app/assets/stylesheets/active_admin/components/_pagination.scss +5 -2
- data/app/assets/stylesheets/active_admin/components/_table_tools.scss +9 -6
- data/app/assets/stylesheets/active_admin/components/_tabs.scss +10 -7
- data/app/assets/stylesheets/active_admin/mixins/_buttons.scss +2 -2
- data/app/assets/stylesheets/active_admin/mixins/_variables.scss +12 -0
- data/app/assets/stylesheets/active_admin/pages/_logged_out.scss +1 -1
- data/app/assets/stylesheets/active_admin/structure/_footer.scss +6 -1
- data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +6 -4
- data/app/javascript/active_admin/initializers/has-many.js +4 -1
- data/app/javascript/active_admin/initializers/per-page.js +1 -1
- data/app/javascript/active_admin/lib/checkbox-toggler.js +3 -3
- data/app/javascript/active_admin/lib/dropdown-menu.js +1 -1
- data/app/javascript/active_admin/lib/modal-dialog.js +7 -7
- data/app/javascript/active_admin/lib/per-page.js +1 -1
- data/app/javascript/active_admin/lib/table-checkbox-toggler.js +1 -1
- data/app/views/active_admin/devise/mailer/reset_password_instructions.html.erb +1 -1
- data/app/views/active_admin/devise/mailer/unlock_instructions.html.erb +2 -2
- 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 +18 -7
- data/config/locales/ar.yml +6 -13
- 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 +2 -8
- data/config/locales/es.yml +2 -10
- 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 +18 -8
- data/config/locales/ja.yml +2 -10
- 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 +38 -19
- 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 +19 -19
- data/lib/active_admin/application_settings.rb +4 -3
- data/lib/active_admin/asset_registration.rb +4 -3
- data/lib/active_admin/authorization_adapter.rb +6 -3
- data/lib/active_admin/base_controller/authorization.rb +15 -13
- data/lib/active_admin/base_controller/menu.rb +1 -0
- data/lib/active_admin/base_controller.rb +6 -5
- data/lib/active_admin/batch_actions/controller.rb +4 -3
- data/lib/active_admin/batch_actions/resource_extension.rb +10 -8
- data/lib/active_admin/batch_actions/views/batch_action_form.rb +4 -3
- data/lib/active_admin/batch_actions/views/batch_action_selector.rb +7 -6
- data/lib/active_admin/batch_actions/views/selection_cells.rb +4 -3
- data/lib/active_admin/batch_actions.rb +1 -0
- data/lib/active_admin/callbacks.rb +1 -0
- data/lib/active_admin/cancan_adapter.rb +2 -1
- data/lib/active_admin/collection_decorator.rb +32 -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 +25 -17
- data/lib/active_admin/dependency.rb +12 -15
- data/lib/active_admin/devise.rb +16 -5
- data/lib/active_admin/dsl.rb +2 -1
- data/lib/active_admin/dynamic_setting.rb +1 -0
- data/lib/active_admin/dynamic_settings_node.rb +3 -2
- data/lib/active_admin/engine.rb +17 -9
- data/lib/active_admin/error.rb +1 -2
- data/lib/active_admin/filters/active.rb +2 -1
- data/lib/active_admin/filters/active_filter.rb +6 -6
- data/lib/active_admin/filters/active_sidebar.rb +4 -30
- data/lib/active_admin/filters/dsl.rb +1 -0
- data/lib/active_admin/filters/forms.rb +9 -8
- data/lib/active_admin/filters/formtastic_addons.rb +3 -7
- data/lib/active_admin/filters/resource_extension.rb +6 -5
- data/lib/active_admin/filters.rb +8 -7
- data/lib/active_admin/form_builder.rb +25 -20
- data/lib/active_admin/generators/boilerplate.rb +2 -1
- 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 +3 -2
- 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 +2 -1
- data/lib/active_admin/inputs/filters/base/search_method_select.rb +7 -6
- data/lib/active_admin/inputs/filters/base.rb +2 -1
- data/lib/active_admin/inputs/filters/boolean_input.rb +2 -1
- data/lib/active_admin/inputs/filters/check_boxes_input.rb +2 -1
- 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 +5 -2
- 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 +4 -3
- data/lib/active_admin/localizers.rb +2 -1
- data/lib/active_admin/menu.rb +8 -3
- data/lib/active_admin/menu_collection.rb +1 -0
- data/lib/active_admin/menu_item.rb +8 -7
- data/lib/active_admin/namespace.rb +16 -15
- data/lib/active_admin/namespace_settings.rb +9 -5
- data/lib/active_admin/order_clause.rb +2 -1
- data/lib/active_admin/orm/active_record/comments/comment.rb +12 -3
- 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 +21 -20
- data/lib/active_admin/orm/active_record/comments/views.rb +3 -2
- data/lib/active_admin/orm/active_record/comments.rb +28 -27
- data/lib/active_admin/orm/active_record.rb +2 -1
- data/lib/active_admin/orm/mongoid.rb +1 -0
- data/lib/active_admin/page.rb +2 -1
- 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 +58 -16
- data/lib/active_admin/resource/action_items.rb +6 -5
- data/lib/active_admin/resource/attributes.rb +9 -1
- data/lib/active_admin/resource/belongs_to.rb +3 -2
- data/lib/active_admin/resource/controllers.rb +2 -1
- data/lib/active_admin/resource/includes.rb +1 -0
- data/lib/active_admin/resource/menu.rb +5 -4
- data/lib/active_admin/resource/model.rb +1 -0
- data/lib/active_admin/resource/naming.rb +5 -4
- 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 +6 -7
- data/lib/active_admin/resource/scope_to.rb +8 -7
- data/lib/active_admin/resource/scopes.rb +1 -0
- data/lib/active_admin/resource/sidebars.rb +2 -1
- data/lib/active_admin/resource.rb +20 -19
- 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 +31 -5
- data/lib/active_admin/resource_controller/decorators.rb +7 -28
- 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 +9 -7
- data/lib/active_admin/resource_controller.rb +13 -11
- data/lib/active_admin/resource_dsl.rb +11 -25
- data/lib/active_admin/router.rb +1 -0
- data/lib/active_admin/scope.rb +7 -6
- 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 +18 -17
- 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 +4 -3
- data/lib/active_admin/view_helpers/display_helper.rb +23 -8
- data/lib/active_admin/view_helpers/download_format_links_helper.rb +2 -1
- data/lib/active_admin/view_helpers/fields_for.rb +3 -2
- 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 +2 -1
- data/lib/active_admin/views/action_items.rb +1 -0
- data/lib/active_admin/views/components/active_admin_form.rb +8 -11
- data/lib/active_admin/views/components/active_filters_sidebar_content.rb +59 -0
- data/lib/active_admin/views/components/attributes_table.rb +6 -5
- data/lib/active_admin/views/components/blank_slate.rb +2 -1
- data/lib/active_admin/views/components/columns.rb +1 -0
- data/lib/active_admin/views/components/dropdown_menu.rb +7 -9
- data/lib/active_admin/views/components/index_list.rb +4 -3
- data/lib/active_admin/views/components/menu.rb +2 -1
- data/lib/active_admin/views/components/menu_item.rb +5 -4
- data/lib/active_admin/views/components/paginated_collection.rb +19 -18
- data/lib/active_admin/views/components/panel.rb +2 -1
- data/lib/active_admin/views/components/scopes.rb +8 -5
- 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 +2 -1
- data/lib/active_admin/views/components/status_tag.rb +12 -11
- data/lib/active_admin/views/components/table_for.rb +18 -17
- data/lib/active_admin/views/components/tabs.rb +4 -3
- data/lib/active_admin/views/components/unsupported_browser.rb +1 -0
- data/lib/active_admin/views/footer.rb +3 -1
- data/lib/active_admin/views/header.rb +3 -2
- data/lib/active_admin/views/index_as_block.rb +1 -0
- data/lib/active_admin/views/index_as_blog.rb +2 -1
- data/lib/active_admin/views/index_as_grid.rb +2 -1
- data/lib/active_admin/views/index_as_table.rb +16 -19
- data/lib/active_admin/views/pages/base.rb +17 -11
- data/lib/active_admin/views/pages/form.rb +1 -0
- data/lib/active_admin/views/pages/index.rb +15 -13
- 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 +3 -2
- data/lib/active_admin/views/title_bar.rb +2 -1
- data/lib/active_admin/views.rb +2 -1
- data/lib/active_admin.rb +63 -61
- data/lib/activeadmin.rb +2 -1
- data/lib/generators/active_admin/assets/assets_generator.rb +3 -2
- data/lib/generators/active_admin/assets/templates/active_admin.scss +2 -2
- data/lib/generators/active_admin/devise/devise_generator.rb +6 -5
- data/lib/generators/active_admin/install/install_generator.rb +15 -8
- data/lib/generators/active_admin/install/templates/active_admin.rb.erb +27 -3
- data/lib/generators/active_admin/install/templates/dashboard.rb +1 -0
- data/lib/generators/active_admin/page/page_generator.rb +2 -1
- data/lib/generators/active_admin/page/templates/page.rb +1 -0
- data/lib/generators/active_admin/resource/resource_generator.rb +4 -3
- data/lib/generators/active_admin/webpacker/plugins/jquery.js +7 -0
- data/lib/generators/active_admin/webpacker/templates/active_admin.js +5 -0
- data/lib/generators/active_admin/webpacker/templates/active_admin.scss +17 -0
- data/lib/generators/active_admin/webpacker/templates/print.scss +2 -0
- data/lib/generators/active_admin/webpacker/webpacker_generator.rb +27 -0
- data/vendor/assets/javascripts/jquery-ui/data.js +12 -8
- data/vendor/assets/javascripts/jquery-ui/disable-selection.js +10 -7
- data/vendor/assets/javascripts/jquery-ui/focusable.js +12 -9
- data/vendor/assets/javascripts/jquery-ui/form-reset-mixin.js +60 -57
- data/vendor/assets/javascripts/jquery-ui/form.js +15 -12
- data/vendor/assets/javascripts/jquery-ui/ie.js +5 -2
- data/vendor/assets/javascripts/jquery-ui/keycode.js +11 -7
- data/vendor/assets/javascripts/jquery-ui/labels.js +46 -40
- data/vendor/assets/javascripts/jquery-ui/plugin.js +5 -2
- data/vendor/assets/javascripts/jquery-ui/position.js +30 -17
- data/vendor/assets/javascripts/jquery-ui/safe-active-element.js +6 -2
- data/vendor/assets/javascripts/jquery-ui/safe-blur.js +6 -2
- data/vendor/assets/javascripts/jquery-ui/scroll-parent.js +10 -7
- data/vendor/assets/javascripts/jquery-ui/tabbable.js +11 -8
- data/vendor/assets/javascripts/jquery-ui/unique-id.js +10 -7
- data/vendor/assets/javascripts/jquery-ui/version.js +6 -3
- data/vendor/assets/javascripts/jquery-ui/widget.js +53 -30
- data/vendor/assets/javascripts/jquery-ui/widgets/button.js +87 -24
- data/vendor/assets/javascripts/jquery-ui/widgets/checkboxradio.js +276 -273
- data/vendor/assets/javascripts/jquery-ui/widgets/controlgroup.js +15 -11
- data/vendor/assets/javascripts/jquery-ui/widgets/datepicker.js +182 -62
- data/vendor/assets/javascripts/jquery-ui/widgets/dialog.js +53 -36
- data/vendor/assets/javascripts/jquery-ui/widgets/draggable.js +28 -19
- data/vendor/assets/javascripts/jquery-ui/widgets/mouse.js +22 -11
- data/vendor/assets/javascripts/jquery-ui/widgets/resizable.js +47 -26
- data/vendor/assets/javascripts/jquery-ui/widgets/sortable.js +186 -125
- data/vendor/assets/javascripts/jquery-ui/widgets/tabs.js +20 -20
- metadata +48 -114
- data/docs/.gitignore +0 -1
- data/docs/0-installation.md +0 -118
- data/docs/1-general-configuration.md +0 -224
- data/docs/10-custom-pages.md +0 -150
- data/docs/11-decorators.md +0 -59
- 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 -466
- 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 -232
- data/docs/6-show-pages.md +0 -81
- 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 -248
- 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/vendor/assets/javascripts/jquery-ui/escape-selector.js +0 -23
- /data/app/assets/stylesheets/active_admin/{print.scss → _print.scss} +0 -0
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
require "csv"
|
|
2
3
|
|
|
3
4
|
module ActiveAdmin
|
|
4
5
|
class ResourceController < BaseController
|
|
@@ -18,23 +19,24 @@ module ActiveAdmin
|
|
|
18
19
|
protected
|
|
19
20
|
|
|
20
21
|
def stream_resource(&block)
|
|
21
|
-
headers[
|
|
22
|
-
headers[
|
|
22
|
+
headers["X-Accel-Buffering"] = "no"
|
|
23
|
+
headers["Cache-Control"] = "no-cache"
|
|
24
|
+
headers["Last-Modified"] = Time.current.httpdate
|
|
23
25
|
|
|
24
26
|
if ActiveAdmin.application.disable_streaming_in.include? Rails.env
|
|
25
|
-
self.response_body = block[
|
|
27
|
+
self.response_body = block[String.new]
|
|
26
28
|
else
|
|
27
29
|
self.response_body = Enumerator.new &block
|
|
28
30
|
end
|
|
29
31
|
end
|
|
30
32
|
|
|
31
33
|
def csv_filename
|
|
32
|
-
"#{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"
|
|
33
35
|
end
|
|
34
36
|
|
|
35
37
|
def stream_csv
|
|
36
|
-
headers[
|
|
37
|
-
headers[
|
|
38
|
+
headers["Content-Type"] = "text/csv; charset=utf-8" # In Rails 5 it's set to HTML??
|
|
39
|
+
headers["Content-Disposition"] = %{attachment; filename="#{csv_filename}"}
|
|
38
40
|
stream_resource &active_admin_config.csv_builder.method(:build).to_proc.curry[self]
|
|
39
41
|
end
|
|
40
42
|
|
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
require
|
|
3
|
-
require
|
|
4
|
-
require
|
|
5
|
-
require
|
|
6
|
-
require
|
|
7
|
-
require
|
|
8
|
-
require
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
require "active_admin/collection_decorator"
|
|
3
|
+
require "active_admin/resource_controller/action_builder"
|
|
4
|
+
require "active_admin/resource_controller/data_access"
|
|
5
|
+
require "active_admin/resource_controller/decorators"
|
|
6
|
+
require "active_admin/resource_controller/polymorphic_routes"
|
|
7
|
+
require "active_admin/resource_controller/scoping"
|
|
8
|
+
require "active_admin/resource_controller/streaming"
|
|
9
|
+
require "active_admin/resource_controller/sidebars"
|
|
10
|
+
require "active_admin/resource_controller/resource_class_methods"
|
|
9
11
|
|
|
10
12
|
module ActiveAdmin
|
|
11
13
|
# All Resources Controller inherits from this controller.
|
|
@@ -24,13 +26,13 @@ module ActiveAdmin
|
|
|
24
26
|
include Streaming
|
|
25
27
|
include Sidebars
|
|
26
28
|
include ViewHelpers::DownloadFormatLinksHelper
|
|
27
|
-
extend
|
|
29
|
+
extend ResourceClassMethods
|
|
28
30
|
|
|
29
31
|
def self.active_admin_config=(config)
|
|
30
32
|
if @active_admin_config = config
|
|
31
33
|
defaults resource_class: config.resource_class,
|
|
32
|
-
route_prefix:
|
|
33
|
-
instance_name:
|
|
34
|
+
route_prefix: config.route_prefix,
|
|
35
|
+
instance_name: config.resource_name.singular
|
|
34
36
|
end
|
|
35
37
|
end
|
|
36
38
|
|
|
@@ -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) +
|
|
@@ -183,31 +185,15 @@ module ActiveAdmin
|
|
|
183
185
|
# == Before / After Destroy
|
|
184
186
|
# Called before and after the object is destroyed from the database.
|
|
185
187
|
#
|
|
186
|
-
delegate :before_build,
|
|
187
|
-
delegate :before_create,
|
|
188
|
-
delegate :before_update,
|
|
189
|
-
delegate :before_save,
|
|
188
|
+
delegate :before_build, :after_build, to: :controller
|
|
189
|
+
delegate :before_create, :after_create, to: :controller
|
|
190
|
+
delegate :before_update, :after_update, to: :controller
|
|
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
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
module ActiveAdmin
|
|
2
3
|
class Scope
|
|
3
4
|
|
|
@@ -45,17 +46,17 @@ module ActiveAdmin
|
|
|
45
46
|
@scope_block = block
|
|
46
47
|
end
|
|
47
48
|
|
|
48
|
-
@localizer
|
|
49
|
-
@show_count
|
|
50
|
-
@display_if_block = options[:if]
|
|
51
|
-
@default_block
|
|
52
|
-
@group
|
|
49
|
+
@localizer = options[:localizer]
|
|
50
|
+
@show_count = options.fetch(:show_count, true)
|
|
51
|
+
@display_if_block = options[:if] || proc { true }
|
|
52
|
+
@default_block = options[:default] || proc { false }
|
|
53
|
+
@group = options[:group].try(:to_sym)
|
|
53
54
|
end
|
|
54
55
|
|
|
55
56
|
def name
|
|
56
57
|
case @name
|
|
57
58
|
when String then @name
|
|
58
|
-
when Symbol then @localizer ? @localizer.t(@name, scope:
|
|
59
|
+
when Symbol then @localizer ? @localizer.t(@name, scope: "scopes") : @name.to_s.titleize
|
|
59
60
|
else @name
|
|
60
61
|
end
|
|
61
62
|
end
|
data/lib/active_admin/version.rb
CHANGED
|
@@ -1,27 +1,28 @@
|
|
|
1
|
-
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
require "active_admin/abstract_view_factory"
|
|
2
3
|
|
|
3
4
|
module ActiveAdmin
|
|
4
5
|
class ViewFactory < AbstractViewFactory
|
|
5
6
|
|
|
6
7
|
# Register Helper Renderers
|
|
7
|
-
register
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
8
|
+
register global_navigation: ActiveAdmin::Views::TabbedNavigation,
|
|
9
|
+
utility_navigation: ActiveAdmin::Views::TabbedNavigation,
|
|
10
|
+
site_title: ActiveAdmin::Views::SiteTitle,
|
|
11
|
+
unsupported_browser: ActiveAdmin::Views::UnsupportedBrowser,
|
|
12
|
+
action_items: ActiveAdmin::Views::ActionItems,
|
|
13
|
+
title_bar: ActiveAdmin::Views::TitleBar,
|
|
14
|
+
header: ActiveAdmin::Views::Header,
|
|
15
|
+
footer: ActiveAdmin::Views::Footer,
|
|
16
|
+
index_scopes: ActiveAdmin::Views::Scopes,
|
|
17
|
+
blank_slate: ActiveAdmin::Views::BlankSlate
|
|
17
18
|
|
|
18
19
|
# Register All The Pages
|
|
19
|
-
register
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
20
|
+
register index_page: ActiveAdmin::Views::Pages::Index,
|
|
21
|
+
show_page: ActiveAdmin::Views::Pages::Show,
|
|
22
|
+
new_page: ActiveAdmin::Views::Pages::Form,
|
|
23
|
+
edit_page: ActiveAdmin::Views::Pages::Form,
|
|
24
|
+
layout: ActiveAdmin::Views::Pages::Layout,
|
|
25
|
+
page: ActiveAdmin::Views::Pages::Page
|
|
25
26
|
|
|
26
27
|
end
|
|
27
28
|
end
|
|
@@ -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,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
module ActiveAdmin
|
|
2
3
|
module ViewHelpers
|
|
3
4
|
module BreadcrumbHelper
|
|
@@ -6,7 +7,7 @@ module ActiveAdmin
|
|
|
6
7
|
def breadcrumb_links(path = request.path)
|
|
7
8
|
# remove leading "/" and split up the URL
|
|
8
9
|
# and remove last since it's used as the page title
|
|
9
|
-
parts = path.split(
|
|
10
|
+
parts = path.split("/").select(&:present?)[0..-2]
|
|
10
11
|
|
|
11
12
|
parts.each_with_index.map do |part, index|
|
|
12
13
|
# 1. try using `display_name` if we can locate a DB object
|
|
@@ -15,13 +16,13 @@ module ActiveAdmin
|
|
|
15
16
|
if part =~ /\A(\d+|[a-f0-9]{24}|(?:[a-f0-9]{8}-(?:[a-f0-9]{4}-){3}[a-f0-9]{12}))\z/ && parts[index - 1]
|
|
16
17
|
parent = active_admin_config.belongs_to_config.try :target
|
|
17
18
|
config = parent && parent.resource_name.route_key == parts[index - 1] ? parent : active_admin_config
|
|
18
|
-
name
|
|
19
|
+
name = display_name config.find_resource part
|
|
19
20
|
end
|
|
20
21
|
name ||= I18n.t "activerecord.models.#{part.singularize}", count: ::ActiveAdmin::Helpers::I18n::PLURAL_MANY_COUNT, default: part.titlecase
|
|
21
22
|
|
|
22
23
|
# Don't create a link if the resource's show action is disabled
|
|
23
24
|
if !config || config.defined_actions.include?(:show)
|
|
24
|
-
link_to name,
|
|
25
|
+
link_to name, "/" + parts[0..index].join("/")
|
|
25
26
|
else
|
|
26
27
|
name
|
|
27
28
|
end
|
|
@@ -1,22 +1,37 @@
|
|
|
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
|
|
15
23
|
|
|
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.
|
|
@@ -26,7 +41,7 @@ module ActiveAdmin
|
|
|
26
41
|
@@display_name_methods_cache ||= {}
|
|
27
42
|
@@display_name_methods_cache[resource.class] ||= begin
|
|
28
43
|
methods = active_admin_application.display_name_methods - association_methods_for(resource)
|
|
29
|
-
method
|
|
44
|
+
method = methods.detect { |method| resource.respond_to? method }
|
|
30
45
|
|
|
31
46
|
if method != :to_s || resource.method(method).source_location
|
|
32
47
|
method
|
|
@@ -74,7 +89,7 @@ module ActiveAdmin
|
|
|
74
89
|
format_collection(object)
|
|
75
90
|
else
|
|
76
91
|
if defined?(::ActiveRecord) && object.is_a?(ActiveRecord::Base) ||
|
|
77
|
-
defined?(::Mongoid)
|
|
92
|
+
defined?(::Mongoid) && object.class.include?(Mongoid::Document)
|
|
78
93
|
auto_link object
|
|
79
94
|
elsif defined?(::ActiveRecord) && object.is_a?(ActiveRecord::Relation)
|
|
80
95
|
format_collection(object)
|
|
@@ -85,7 +100,7 @@ module ActiveAdmin
|
|
|
85
100
|
end
|
|
86
101
|
|
|
87
102
|
def format_collection(collection)
|
|
88
|
-
safe_join(collection.map { |item| pretty_format(item) },
|
|
103
|
+
safe_join(collection.map { |item| pretty_format(item) }, ", ")
|
|
89
104
|
end
|
|
90
105
|
|
|
91
106
|
def boolean_attr?(resource, attr, value)
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
module ActiveAdmin
|
|
2
3
|
module ViewHelpers
|
|
3
4
|
module DownloadFormatLinksHelper
|
|
@@ -18,7 +19,7 @@ module ActiveAdmin
|
|
|
18
19
|
def build_download_format_links(formats = self.class.formats)
|
|
19
20
|
params = request.query_parameters.except :format, :commit
|
|
20
21
|
div class: "download_links" do
|
|
21
|
-
span I18n.t(
|
|
22
|
+
span I18n.t("active_admin.download")
|
|
22
23
|
formats.each do |format|
|
|
23
24
|
a format.upcase, href: url_for(params: params, format: format)
|
|
24
25
|
end
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
module ActiveAdmin
|
|
2
3
|
module ViewHelpers
|
|
3
4
|
module FormHelper
|
|
@@ -15,7 +16,7 @@ module ActiveAdmin
|
|
|
15
16
|
#
|
|
16
17
|
def fields_for_params(params, options = {})
|
|
17
18
|
namespace = options[:namespace]
|
|
18
|
-
except
|
|
19
|
+
except = Array.wrap(options[:except]).map &:to_s
|
|
19
20
|
|
|
20
21
|
params.flat_map do |k, v|
|
|
21
22
|
next if namespace.nil? && %w(controller action commit utf8).include?(k.to_s)
|
|
@@ -37,7 +38,7 @@ module ActiveAdmin
|
|
|
37
38
|
{ "#{k}[]" => v }
|
|
38
39
|
end
|
|
39
40
|
when nil
|
|
40
|
-
{ k =>
|
|
41
|
+
{ k => "" }
|
|
41
42
|
when TrueClass, FalseClass
|
|
42
43
|
{ k => v }
|
|
43
44
|
else
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
module ActiveAdmin
|
|
2
3
|
module ViewHelpers
|
|
3
4
|
|
|
4
5
|
# Require all ruby files in the view helpers dir
|
|
5
|
-
Dir[File.expand_path(
|
|
6
|
+
Dir[File.expand_path("view_helpers", __dir__) + "/*.rb"].each { |f| require f }
|
|
6
7
|
|
|
7
8
|
include ActiveAdminApplicationHelper
|
|
8
9
|
include AutoLinkHelper
|
|
@@ -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,24 +102,20 @@ 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
|
|
111
108
|
create_another = params[:create_another]
|
|
112
109
|
label = @resource.class.model_name.human
|
|
113
110
|
Arbre::Context.new do
|
|
114
|
-
li class:
|
|
111
|
+
li class: "create_another" do
|
|
115
112
|
input(
|
|
116
113
|
checked: create_another,
|
|
117
|
-
id:
|
|
118
|
-
name:
|
|
119
|
-
type:
|
|
114
|
+
id: "create_another",
|
|
115
|
+
name: "create_another",
|
|
116
|
+
type: "checkbox"
|
|
120
117
|
)
|
|
121
|
-
label(I18n.t(
|
|
118
|
+
label(I18n.t("active_admin.create_another", model: label), for: "create_another")
|
|
122
119
|
end
|
|
123
120
|
end
|
|
124
121
|
end
|
|
@@ -130,7 +127,7 @@ module ActiveAdmin
|
|
|
130
127
|
html_options[:class] ||= "inputs"
|
|
131
128
|
legend = args.shift if args.first.is_a?(::String)
|
|
132
129
|
legend = html_options.delete(:name) if html_options.key?(:name)
|
|
133
|
-
legend_tag = legend ? "<legend><span>#{legend}</span></legend>" : ""
|
|
130
|
+
legend_tag = legend ? "<legend><span>#{ERB::Util.html_escape(legend)}</span></legend>" : ""
|
|
134
131
|
fieldset_attrs = html_options.map { |k, v| %Q{#{k}="#{v}"} }.join(" ")
|
|
135
132
|
@opening_tag = "<fieldset #{fieldset_attrs}>#{legend_tag}<ol>"
|
|
136
133
|
@closing_tag = "</ol></fieldset>"
|
|
@@ -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
|
|
|
@@ -5,7 +6,7 @@ module ActiveAdmin
|
|
|
5
6
|
builder_method :attributes_table_for
|
|
6
7
|
|
|
7
8
|
def build(obj, *attrs)
|
|
8
|
-
@collection
|
|
9
|
+
@collection = Array.wrap(obj)
|
|
9
10
|
@resource_class = @collection.first.class
|
|
10
11
|
options = {}
|
|
11
12
|
options[:for] = @collection.first if single_record?
|
|
@@ -20,7 +21,7 @@ module ActiveAdmin
|
|
|
20
21
|
end
|
|
21
22
|
|
|
22
23
|
def row(*args, &block)
|
|
23
|
-
title
|
|
24
|
+
title = args[0]
|
|
24
25
|
options = args.extract_options!
|
|
25
26
|
classes = [:row]
|
|
26
27
|
if options[:class]
|
|
@@ -28,7 +29,7 @@ module ActiveAdmin
|
|
|
28
29
|
elsif title.present?
|
|
29
30
|
classes << "row-#{title.to_s.parameterize(separator: "_")}"
|
|
30
31
|
end
|
|
31
|
-
options[:class] = classes.join(
|
|
32
|
+
options[:class] = classes.join(" ")
|
|
32
33
|
|
|
33
34
|
@table << tr(options) do
|
|
34
35
|
th do
|
|
@@ -45,7 +46,7 @@ module ActiveAdmin
|
|
|
45
46
|
protected
|
|
46
47
|
|
|
47
48
|
def default_id_for_prefix
|
|
48
|
-
|
|
49
|
+
"attributes_table"
|
|
49
50
|
end
|
|
50
51
|
|
|
51
52
|
# Build Colgroups
|
|
@@ -75,7 +76,7 @@ module ActiveAdmin
|
|
|
75
76
|
end
|
|
76
77
|
|
|
77
78
|
def empty_value
|
|
78
|
-
span I18n.t(
|
|
79
|
+
span I18n.t("active_admin.empty"), class: "empty"
|
|
79
80
|
end
|
|
80
81
|
|
|
81
82
|
def content_for(record, attr)
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
module ActiveAdmin
|
|
2
3
|
module Views
|
|
3
4
|
# Build a Blank Slate
|
|
@@ -5,7 +6,7 @@ module ActiveAdmin
|
|
|
5
6
|
builder_method :blank_slate
|
|
6
7
|
|
|
7
8
|
def default_class_name
|
|
8
|
-
|
|
9
|
+
"blank_slate_container"
|
|
9
10
|
end
|
|
10
11
|
|
|
11
12
|
def build(content)
|