activeadmin 2.6.1 → 3.2.3
Sign up to get free protection for your applications and to get access to all the features.
- 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,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module ActiveAdmin
|
2
3
|
module Views
|
3
4
|
|
@@ -35,30 +36,27 @@ module ActiveAdmin
|
|
35
36
|
super(options)
|
36
37
|
end
|
37
38
|
|
38
|
-
def item(*args)
|
39
|
+
def item(*args, **kwargs)
|
39
40
|
within @menu do
|
40
|
-
li link_to(*args)
|
41
|
+
li link_to(*args, **kwargs)
|
41
42
|
end
|
42
43
|
end
|
43
44
|
|
44
45
|
private
|
45
46
|
|
46
47
|
def build_button(name, button_options)
|
47
|
-
button_options[:class]
|
48
|
-
button_options[:
|
49
|
-
|
50
|
-
button_options[:href] = '#'
|
48
|
+
button_options[:class] = "#{button_options[:class]} dropdown_menu_button"
|
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
|
|
61
|
-
div class:
|
59
|
+
div class: "dropdown_menu_list_wrapper" do
|
62
60
|
menu_list = ul(options)
|
63
61
|
end
|
64
62
|
|
@@ -1,4 +1,5 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require "active_admin/helpers/collection"
|
2
3
|
|
3
4
|
module ActiveAdmin
|
4
5
|
module Views
|
@@ -15,7 +16,7 @@ module ActiveAdmin
|
|
15
16
|
end
|
16
17
|
|
17
18
|
def tag_name
|
18
|
-
|
19
|
+
"ul"
|
19
20
|
end
|
20
21
|
|
21
22
|
# Builds the links for presenting different index views to the user
|
@@ -37,7 +38,7 @@ module ActiveAdmin
|
|
37
38
|
def build_index_list(index_class)
|
38
39
|
li class: classes_for_index(index_class) do
|
39
40
|
params = request.query_parameters.except :page, :commit, :format
|
40
|
-
url_with_params = url_for(params.merge(as: index_class.index_name.to_sym))
|
41
|
+
url_with_params = url_for(**params.merge(as: index_class.index_name.to_sym).symbolize_keys)
|
41
42
|
|
42
43
|
a href: url_with_params, class: "table_tools_button" do
|
43
44
|
name = index_class.index_name
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module ActiveAdmin
|
2
3
|
module Views
|
3
4
|
|
@@ -18,7 +19,7 @@ module ActiveAdmin
|
|
18
19
|
add_class "current" if item.current? assigns[:current_tab]
|
19
20
|
|
20
21
|
if url
|
21
|
-
text_node link_to label, url, item.html_options
|
22
|
+
text_node link_to label, url, **item.html_options
|
22
23
|
else
|
23
24
|
span label, item.html_options
|
24
25
|
end
|
@@ -30,7 +31,7 @@ module ActiveAdmin
|
|
30
31
|
end
|
31
32
|
|
32
33
|
def tag_name
|
33
|
-
|
34
|
+
"li"
|
34
35
|
end
|
35
36
|
|
36
37
|
# Sorts by priority first, then alphabetically by label if needed.
|
@@ -44,14 +45,14 @@ module ActiveAdmin
|
|
44
45
|
end
|
45
46
|
|
46
47
|
def to_s
|
47
|
-
visible? ? super :
|
48
|
+
visible? ? super : ""
|
48
49
|
end
|
49
50
|
|
50
51
|
private
|
51
52
|
|
52
53
|
# URL is not nil, empty, or '#'
|
53
54
|
def real_url?
|
54
|
-
url && url.present? && url !=
|
55
|
+
url && url.present? && url != "#"
|
55
56
|
end
|
56
57
|
end
|
57
58
|
end
|
@@ -1,5 +1,6 @@
|
|
1
|
-
|
2
|
-
require
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require "active_admin/helpers/collection"
|
3
|
+
require "active_admin/view_helpers/download_format_links_helper"
|
3
4
|
|
4
5
|
module ActiveAdmin
|
5
6
|
module Views
|
@@ -38,12 +39,12 @@ module ActiveAdmin
|
|
38
39
|
# download_links => Download links override (false or [:csv, :pdf])
|
39
40
|
#
|
40
41
|
def build(collection, options = {})
|
41
|
-
@collection
|
42
|
-
@params
|
43
|
-
@param_name
|
42
|
+
@collection = collection
|
43
|
+
@params = options.delete(:params)
|
44
|
+
@param_name = options.delete(:param_name)
|
44
45
|
@download_links = options.delete(:download_links)
|
45
|
-
@display_total
|
46
|
-
@per_page
|
46
|
+
@display_total = options.delete(:pagination_total) { true }
|
47
|
+
@per_page = options.delete(:per_page)
|
47
48
|
|
48
49
|
unless collection.respond_to?(:total_pages)
|
49
50
|
raise(StandardError, "Collection is not a paginated scope. Set collection.page(params[:page]).per(10) before calling :paginated_collection.")
|
@@ -92,8 +93,8 @@ module ActiveAdmin
|
|
92
93
|
end
|
93
94
|
|
94
95
|
def build_pagination
|
95
|
-
options = { theme: @display_total ?
|
96
|
-
options[:params]
|
96
|
+
options = { theme: @display_total ? "active_admin" : "active_admin_countless" }
|
97
|
+
options[:params] = @params if @params
|
97
98
|
options[:param_name] = @param_name if @param_name
|
98
99
|
|
99
100
|
if !@display_total
|
@@ -107,7 +108,7 @@ module ActiveAdmin
|
|
107
108
|
options[:right] = 0
|
108
109
|
end
|
109
110
|
|
110
|
-
text_node paginate collection, options
|
111
|
+
text_node paginate collection, **options
|
111
112
|
end
|
112
113
|
|
113
114
|
include ::ActiveAdmin::Helpers::Collection
|
@@ -116,28 +117,28 @@ module ActiveAdmin
|
|
116
117
|
# modified from will_paginate
|
117
118
|
def page_entries_info(options = {})
|
118
119
|
if options[:entry_name]
|
119
|
-
entry_name
|
120
|
+
entry_name = options[:entry_name]
|
120
121
|
entries_name = options[:entries_name] || entry_name.pluralize
|
121
122
|
elsif collection_is_empty?
|
122
|
-
entry_name
|
123
|
-
entries_name = I18n.t "active_admin.pagination.entry", count: 2, default:
|
123
|
+
entry_name = I18n.t "active_admin.pagination.entry", count: 1, default: "entry"
|
124
|
+
entries_name = I18n.t "active_admin.pagination.entry", count: 2, default: "entries"
|
124
125
|
else
|
125
126
|
key = "activerecord.models." + collection.first.class.model_name.i18n_key.to_s
|
126
127
|
|
127
|
-
entry_name
|
128
|
+
entry_name = I18n.translate key, count: 1, default: collection.first.class.name.underscore.sub("_", " ")
|
128
129
|
entries_name = I18n.translate key, count: collection.size, default: entry_name.pluralize
|
129
130
|
end
|
130
131
|
|
131
132
|
if @display_total
|
132
133
|
if collection.total_pages < 2
|
133
134
|
case collection_size
|
134
|
-
when 0; I18n.t("active_admin.pagination.empty",
|
135
|
-
when 1; I18n.t("active_admin.pagination.one",
|
136
|
-
else;
|
135
|
+
when 0; I18n.t("active_admin.pagination.empty", model: entries_name)
|
136
|
+
when 1; I18n.t("active_admin.pagination.one", model: entry_name)
|
137
|
+
else; I18n.t("active_admin.pagination.one_page", model: entries_name, n: collection.total_count)
|
137
138
|
end
|
138
139
|
else
|
139
140
|
offset = (collection.current_page - 1) * collection.limit_value
|
140
|
-
total
|
141
|
+
total = collection.total_count
|
141
142
|
I18n.t "active_admin.pagination.multiple",
|
142
143
|
model: entries_name,
|
143
144
|
total: total,
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module ActiveAdmin
|
2
3
|
module Views
|
3
4
|
|
@@ -29,7 +30,7 @@ module ActiveAdmin
|
|
29
30
|
def header_action(*args)
|
30
31
|
action = args[0]
|
31
32
|
|
32
|
-
@title << div(class:
|
33
|
+
@title << div(class: "header_action") do
|
33
34
|
action
|
34
35
|
end
|
35
36
|
end
|
@@ -1,5 +1,6 @@
|
|
1
|
-
|
2
|
-
require
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require "active_admin/helpers/collection"
|
3
|
+
require "active_admin/view_helpers/method_or_proc_helper"
|
3
4
|
|
4
5
|
module ActiveAdmin
|
5
6
|
module Views
|
@@ -17,7 +18,7 @@ module ActiveAdmin
|
|
17
18
|
end
|
18
19
|
|
19
20
|
def tag_name
|
20
|
-
|
21
|
+
"div"
|
21
22
|
end
|
22
23
|
|
23
24
|
def build(scopes, options = {})
|
@@ -26,6 +27,8 @@ module ActiveAdmin
|
|
26
27
|
group_scopes.each do |scope|
|
27
28
|
build_scope(scope, options) if call_method_or_exec_proc(scope.display_if_block)
|
28
29
|
end
|
30
|
+
|
31
|
+
nil
|
29
32
|
end
|
30
33
|
end
|
31
34
|
end
|
@@ -36,9 +39,9 @@ module ActiveAdmin
|
|
36
39
|
li class: classes_for_scope(scope) do
|
37
40
|
params = request.query_parameters.except :page, :scope, :commit, :format
|
38
41
|
|
39
|
-
a href: url_for(scope: scope.id, params: params), class:
|
42
|
+
a href: url_for(scope: scope.id, params: params), class: "table_tools_button" do
|
40
43
|
text_node scope_name(scope)
|
41
|
-
span class:
|
44
|
+
span class: "count" do
|
42
45
|
"(#{get_scope_count(scope)})"
|
43
46
|
end if options[:scope_count] && scope.show_count
|
44
47
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module ActiveAdmin
|
2
3
|
module Views
|
3
4
|
# Build a StatusTag
|
@@ -5,11 +6,11 @@ module ActiveAdmin
|
|
5
6
|
builder_method :status_tag
|
6
7
|
|
7
8
|
def tag_name
|
8
|
-
|
9
|
+
"span"
|
9
10
|
end
|
10
11
|
|
11
12
|
def default_class_name
|
12
|
-
|
13
|
+
"status_tag"
|
13
14
|
end
|
14
15
|
|
15
16
|
# @overload status_tag(status, options = {})
|
@@ -49,12 +50,12 @@ module ActiveAdmin
|
|
49
50
|
|
50
51
|
def convert_to_boolean_status(status)
|
51
52
|
case status
|
52
|
-
when true,
|
53
|
-
|
54
|
-
when false,
|
55
|
-
|
53
|
+
when true, "true"
|
54
|
+
"Yes"
|
55
|
+
when false, "false"
|
56
|
+
"No"
|
56
57
|
when nil
|
57
|
-
|
58
|
+
"Unset"
|
58
59
|
else
|
59
60
|
status
|
60
61
|
end
|
@@ -62,12 +63,12 @@ module ActiveAdmin
|
|
62
63
|
|
63
64
|
def status_to_class(status)
|
64
65
|
case status
|
65
|
-
when
|
66
|
-
|
66
|
+
when "Unset"
|
67
|
+
"unset no"
|
67
68
|
when String, Symbol
|
68
|
-
status.to_s.titleize.gsub(/\s/,
|
69
|
+
status.to_s.titleize.gsub(/\s/, "").underscore
|
69
70
|
else
|
70
|
-
|
71
|
+
""
|
71
72
|
end
|
72
73
|
end
|
73
74
|
end
|
@@ -1,21 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module ActiveAdmin
|
2
3
|
module Views
|
3
4
|
class TableFor < Arbre::HTML::Table
|
4
5
|
builder_method :table_for
|
5
6
|
|
6
7
|
def tag_name
|
7
|
-
|
8
|
+
"table"
|
8
9
|
end
|
9
10
|
|
10
11
|
def build(obj, *attrs)
|
11
|
-
options
|
12
|
-
@sortable
|
13
|
-
@collection
|
12
|
+
options = attrs.extract_options!
|
13
|
+
@sortable = options.delete(:sortable)
|
14
|
+
@collection = obj.respond_to?(:each) && !obj.is_a?(Hash) ? obj : [obj]
|
14
15
|
@resource_class = options.delete(:i18n)
|
15
16
|
@resource_class ||= @collection.klass if @collection.respond_to? :klass
|
16
17
|
|
17
|
-
@columns
|
18
|
-
@row_class
|
18
|
+
@columns = []
|
19
|
+
@row_class = options.delete(:row_class)
|
19
20
|
|
20
21
|
build_table
|
21
22
|
super(options)
|
@@ -29,7 +30,7 @@ module ActiveAdmin
|
|
29
30
|
def column(*args, &block)
|
30
31
|
options = default_options.merge(args.extract_options!)
|
31
32
|
title = args[0]
|
32
|
-
data
|
33
|
+
data = args[1] || args[0]
|
33
34
|
|
34
35
|
col = Column.new(title, data, @resource_class, options, &block)
|
35
36
|
@columns << col
|
@@ -65,12 +66,12 @@ module ActiveAdmin
|
|
65
66
|
end
|
66
67
|
|
67
68
|
def build_table_header(col)
|
68
|
-
classes
|
69
|
+
classes = Arbre::HTML::ClassList.new
|
69
70
|
sort_key = sortable? && col.sortable? && col.sort_key
|
70
|
-
params
|
71
|
+
params = request.query_parameters.except :page, :order, :commit, :format
|
71
72
|
|
72
|
-
classes <<
|
73
|
-
classes << "sorted-#{current_sort[1]}"
|
73
|
+
classes << "sortable" if sort_key
|
74
|
+
classes << "sorted-#{current_sort[1]}" if sort_key && current_sort[0] == sort_key
|
74
75
|
classes << col.html_class
|
75
76
|
|
76
77
|
if sort_key
|
@@ -86,13 +87,13 @@ module ActiveAdmin
|
|
86
87
|
@tbody = tbody do
|
87
88
|
# Build enough rows for our collection
|
88
89
|
@collection.each do |elem|
|
89
|
-
classes = [helpers.cycle(
|
90
|
+
classes = [helpers.cycle("odd", "even")]
|
90
91
|
|
91
92
|
if @row_class
|
92
93
|
classes << @row_class.call(elem)
|
93
94
|
end
|
94
95
|
|
95
|
-
tr(class: classes.flatten.join(
|
96
|
+
tr(class: classes.flatten.join(" "), id: dom_id_for(elem))
|
96
97
|
end
|
97
98
|
end
|
98
99
|
end
|
@@ -126,8 +127,8 @@ module ActiveAdmin
|
|
126
127
|
# 'desc' it will return 'asc'
|
127
128
|
def order_for_sort_key(sort_key)
|
128
129
|
current_key, current_order = current_sort
|
129
|
-
return
|
130
|
-
current_order ==
|
130
|
+
return "desc" unless current_key == sort_key
|
131
|
+
current_order == "desc" ? "asc" : "desc"
|
131
132
|
end
|
132
133
|
|
133
134
|
def default_options
|
@@ -138,7 +139,7 @@ module ActiveAdmin
|
|
138
139
|
|
139
140
|
class Column
|
140
141
|
|
141
|
-
attr_accessor :title, :data
|
142
|
+
attr_accessor :title, :data, :html_class
|
142
143
|
|
143
144
|
def initialize(*args, &block)
|
144
145
|
@options = args.extract_options!
|
@@ -150,7 +151,7 @@ module ActiveAdmin
|
|
150
151
|
elsif @title.present?
|
151
152
|
html_classes << "col-#{@title.to_s.parameterize(separator: "_")}"
|
152
153
|
end
|
153
|
-
@html_class = html_classes.join(
|
154
|
+
@html_class = html_classes.join(" ")
|
154
155
|
@data = args[1] || args[0]
|
155
156
|
@data = block if block
|
156
157
|
@resource_class = args[2]
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module ActiveAdmin
|
2
3
|
module Views
|
3
4
|
class Tabs < ActiveAdmin::Component
|
@@ -10,8 +11,8 @@ module ActiveAdmin
|
|
10
11
|
end
|
11
12
|
|
12
13
|
def build(&block)
|
13
|
-
@menu = ul(class:
|
14
|
-
@tabs_content = div(class:
|
14
|
+
@menu = ul(class: "nav nav-tabs", role: "tablist")
|
15
|
+
@tabs_content = div(class: "tab-content")
|
15
16
|
end
|
16
17
|
|
17
18
|
def build_menu_item(title, options, &block)
|
@@ -32,7 +33,7 @@ module ActiveAdmin
|
|
32
33
|
|
33
34
|
def fragmentize(string)
|
34
35
|
result = string.parameterize
|
35
|
-
result =
|
36
|
+
result = CGI.escape(string) if result.blank?
|
36
37
|
result
|
37
38
|
end
|
38
39
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module ActiveAdmin
|
2
3
|
module Views
|
3
4
|
class Footer < Component
|
@@ -20,7 +21,8 @@ module ActiveAdmin
|
|
20
21
|
end
|
21
22
|
|
22
23
|
def powered_by_message
|
23
|
-
I18n.t(
|
24
|
+
I18n.t(
|
25
|
+
"active_admin.powered_by",
|
24
26
|
active_admin: link_to("Active Admin", "https://activeadmin.info"),
|
25
27
|
version: ActiveAdmin::VERSION).html_safe
|
26
28
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module ActiveAdmin
|
2
3
|
module Views
|
3
4
|
class Header < Component
|
@@ -10,8 +11,8 @@ module ActiveAdmin
|
|
10
11
|
@utility_menu = @namespace.fetch_menu(:utility_navigation)
|
11
12
|
|
12
13
|
site_title @namespace
|
13
|
-
global_navigation @menu, class:
|
14
|
-
utility_navigation @utility_menu, id: "utility_nav", class:
|
14
|
+
global_navigation @menu, class: "header-item tabs"
|
15
|
+
utility_navigation @utility_menu, id: "utility_nav", class: "header-item tabs"
|
15
16
|
end
|
16
17
|
|
17
18
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module ActiveAdmin
|
2
3
|
module Views
|
3
4
|
|
@@ -135,7 +136,7 @@ module ActiveAdmin
|
|
135
136
|
|
136
137
|
def build_body(post)
|
137
138
|
if @body
|
138
|
-
div class:
|
139
|
+
div class: "content" do
|
139
140
|
render_method_on_post_or_call_proc post, @body
|
140
141
|
end
|
141
142
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module ActiveAdmin
|
2
3
|
module Views
|
3
4
|
|
@@ -278,13 +279,13 @@ module ActiveAdmin
|
|
278
279
|
# Display a column for checkbox
|
279
280
|
def selectable_column
|
280
281
|
return unless active_admin_config.batch_actions.any?
|
281
|
-
column resource_selection_toggle_cell, class:
|
282
|
+
column resource_selection_toggle_cell, class: "col-selectable", sortable: false do |resource|
|
282
283
|
resource_selection_cell resource
|
283
284
|
end
|
284
285
|
end
|
285
286
|
|
286
287
|
def index_column(start_value = 1)
|
287
|
-
column
|
288
|
+
column "#", class: "col-index", sortable: false do |resource|
|
288
289
|
@collection.offset_value + @collection.index(resource) + start_value
|
289
290
|
end
|
290
291
|
end
|
@@ -293,9 +294,9 @@ module ActiveAdmin
|
|
293
294
|
def id_column
|
294
295
|
raise "#{resource_class.name} has no primary_key!" unless resource_class.primary_key
|
295
296
|
column(resource_class.human_attribute_name(resource_class.primary_key), sortable: resource_class.primary_key) do |resource|
|
296
|
-
if controller.action_methods.include?(
|
297
|
+
if controller.action_methods.include?("show")
|
297
298
|
link_to resource.id, resource_path(resource), class: "resource_id_link"
|
298
|
-
elsif controller.action_methods.include?(
|
299
|
+
elsif controller.action_methods.include?("edit")
|
299
300
|
link_to resource.id, edit_resource_path(resource), class: "resource_id_link"
|
300
301
|
else
|
301
302
|
resource.id
|
@@ -303,10 +304,6 @@ module ActiveAdmin
|
|
303
304
|
end
|
304
305
|
end
|
305
306
|
|
306
|
-
def default_actions
|
307
|
-
raise '`default_actions` is no longer provided in ActiveAdmin 1.x. Use `actions` instead.'
|
308
|
-
end
|
309
|
-
|
310
307
|
# Add links to perform actions.
|
311
308
|
#
|
312
309
|
# ```ruby
|
@@ -344,12 +341,12 @@ module ActiveAdmin
|
|
344
341
|
#
|
345
342
|
# ```
|
346
343
|
def actions(options = {}, &block)
|
347
|
-
name
|
348
|
-
defaults
|
349
|
-
dropdown
|
350
|
-
dropdown_name = options.delete(:dropdown_name) { I18n.t
|
344
|
+
name = options.delete(:name) { "" }
|
345
|
+
defaults = options.delete(:defaults) { true }
|
346
|
+
dropdown = options.delete(:dropdown) { false }
|
347
|
+
dropdown_name = options.delete(:dropdown_name) { I18n.t "active_admin.dropdown_actions.button_label", default: "Actions" }
|
351
348
|
|
352
|
-
options[:class] ||=
|
349
|
+
options[:class] ||= "col-actions"
|
353
350
|
|
354
351
|
column name, options do |resource|
|
355
352
|
if dropdown
|
@@ -373,23 +370,23 @@ module ActiveAdmin
|
|
373
370
|
|
374
371
|
def defaults(resource, options = {})
|
375
372
|
localizer = ActiveAdmin::Localizers.resource(active_admin_config)
|
376
|
-
if controller.action_methods.include?(
|
373
|
+
if controller.action_methods.include?("show") && authorized?(ActiveAdmin::Auth::READ, resource)
|
377
374
|
item localizer.t(:view), resource_path(resource), class: "view_link #{options[:css_class]}", title: localizer.t(:view)
|
378
375
|
end
|
379
|
-
if controller.action_methods.include?(
|
376
|
+
if controller.action_methods.include?("edit") && authorized?(ActiveAdmin::Auth::EDIT, resource)
|
380
377
|
item localizer.t(:edit), edit_resource_path(resource), class: "edit_link #{options[:css_class]}", title: localizer.t(:edit)
|
381
378
|
end
|
382
|
-
if controller.action_methods.include?(
|
379
|
+
if controller.action_methods.include?("destroy") && authorized?(ActiveAdmin::Auth::DESTROY, resource)
|
383
380
|
item localizer.t(:delete), resource_path(resource), class: "delete_link #{options[:css_class]}", title: localizer.t(:delete),
|
384
|
-
|
381
|
+
method: :delete, data: { confirm: localizer.t(:delete_confirmation) }
|
385
382
|
end
|
386
383
|
end
|
387
384
|
|
388
385
|
class TableActions < ActiveAdmin::Component
|
389
386
|
builder_method :table_actions
|
390
387
|
|
391
|
-
def item *args
|
392
|
-
text_node link_to
|
388
|
+
def item *args, **kwargs
|
389
|
+
text_node link_to(*args, **kwargs)
|
393
390
|
end
|
394
391
|
end
|
395
392
|
end # IndexTableFor
|