activeadmin 3.2.0 → 4.0.0.beta2
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 +2 -22
- data/CONTRIBUTING.md +28 -109
- data/README.md +17 -30
- data/app/assets/config/active_admin_manifest.js +2 -0
- data/app/controllers/active_admin/base_controller/menu.rb +39 -0
- data/{lib → app/controllers}/active_admin/base_controller.rb +46 -18
- data/{lib → app/controllers}/active_admin/page_controller.rb +0 -4
- data/{lib → app/controllers}/active_admin/resource_controller/action_builder.rb +1 -1
- data/{lib → app/controllers}/active_admin/resource_controller/data_access.rb +2 -2
- data/{lib → app/controllers}/active_admin/resource_controller/scoping.rb +1 -1
- data/{lib → app/controllers}/active_admin/resource_controller/streaming.rb +2 -2
- data/app/controllers/active_admin/resource_controller.rb +102 -0
- data/app/helpers/active_admin/auto_link_helper.rb +66 -0
- data/app/helpers/active_admin/breadcrumb_helper.rb +41 -0
- data/app/helpers/active_admin/display_helper.rb +117 -0
- data/app/helpers/active_admin/form_helper.rb +95 -0
- data/app/helpers/active_admin/index_helper.rb +40 -0
- data/app/helpers/active_admin/layout_helper.rb +63 -0
- data/app/javascript/active_admin/features/batch_actions.js +89 -0
- data/app/javascript/active_admin/features/dark_mode_toggle.js +37 -0
- data/app/javascript/active_admin/features/filters.js +34 -0
- data/app/javascript/active_admin/features/has_many.js +28 -0
- data/app/javascript/active_admin/features/main_menu.js +12 -0
- data/app/javascript/active_admin/features/per_page.js +9 -0
- data/app/javascript/active_admin/utils/dom.js +17 -0
- data/app/javascript/active_admin.js +10 -0
- data/app/views/active_admin/_flash_messages.html.erb +22 -0
- data/app/views/active_admin/_html_head.html.erb +13 -0
- data/app/views/active_admin/_main_navigation.html.erb +28 -0
- data/app/views/active_admin/_page_header.html.erb +27 -0
- data/app/views/active_admin/_sidebar.html.erb +5 -0
- data/app/views/active_admin/_site_footer.html.erb +7 -0
- data/app/views/active_admin/_site_header.html.erb +30 -0
- data/app/views/active_admin/devise/confirmations/new.html.erb +5 -3
- data/app/views/active_admin/devise/passwords/edit.html.erb +5 -3
- data/app/views/active_admin/devise/passwords/new.html.erb +5 -4
- data/app/views/active_admin/devise/registrations/new.html.erb +6 -4
- data/app/views/active_admin/devise/sessions/new.html.erb +6 -4
- data/app/views/active_admin/devise/shared/_links.erb +3 -1
- data/app/views/active_admin/devise/unlocks/new.html.erb +6 -4
- data/app/views/{kaminari/active_admin_countless → active_admin/kaminari}/_gap.html.erb +3 -1
- data/app/views/active_admin/kaminari/_next_page.html.erb +16 -0
- data/app/views/active_admin/kaminari/_page.html.erb +14 -0
- data/app/views/{kaminari/active_admin_countless → active_admin/kaminari}/_paginator.html.erb +1 -2
- data/app/views/active_admin/kaminari/_prev_page.html.erb +16 -0
- data/app/views/active_admin/page/index.html.arb +5 -1
- data/app/views/active_admin/resource/_active_filters.html.erb +32 -0
- data/app/views/active_admin/resource/_batch_actions_dropdown.html.erb +19 -0
- data/app/views/active_admin/resource/_form.html.arb +16 -0
- data/app/views/active_admin/resource/_form_default.html.arb +12 -0
- data/app/views/active_admin/resource/_index_as_table_default.html.arb +9 -0
- data/app/views/active_admin/resource/_index_blank_slate.html.erb +14 -0
- data/app/views/active_admin/resource/_index_empty_results.html.erb +5 -0
- data/app/views/active_admin/resource/_index_table_actions_default.html.erb +9 -0
- data/app/views/active_admin/resource/_show_default.html.arb +3 -0
- data/app/views/active_admin/resource/edit.html.arb +1 -1
- data/app/views/active_admin/resource/index.html.arb +94 -1
- data/app/views/active_admin/resource/new.html.arb +1 -1
- data/app/views/active_admin/resource/show.html.arb +12 -1
- data/app/views/active_admin/shared/_action_items.html.erb +3 -0
- data/app/views/active_admin/shared/_download_format_links.html.erb +7 -0
- data/app/views/active_admin/shared/_resource_comments.html.erb +51 -0
- data/app/views/active_admin/shared/_sidebar_section.html.arb +7 -0
- data/app/views/active_admin/shared/_sidebar_sections.html.erb +5 -0
- data/app/views/layouts/active_admin.html.erb +20 -0
- data/app/views/layouts/active_admin_logged_out.html.erb +8 -45
- data/config/locales/ar.yml +0 -16
- data/config/locales/az.yml +0 -16
- data/config/locales/bg.yml +0 -9
- data/config/locales/bs.yml +0 -7
- data/config/locales/ca.yml +0 -9
- data/config/locales/cs.yml +0 -9
- data/config/locales/da.yml +0 -16
- data/config/locales/de-CH.yml +0 -10
- data/config/locales/de.yml +0 -16
- data/config/locales/el.yml +0 -13
- data/config/locales/en-CA.yml +0 -16
- data/config/locales/en-GB.yml +0 -16
- data/config/locales/en.yml +18 -28
- data/config/locales/eo.yml +0 -17
- data/config/locales/es-MX.yml +0 -9
- data/config/locales/es.yml +0 -16
- data/config/locales/fa.yml +0 -9
- data/config/locales/fi.yml +0 -9
- data/config/locales/fr.yml +32 -26
- data/config/locales/he.yml +0 -16
- data/config/locales/hr.yml +0 -9
- data/config/locales/hu.yml +0 -6
- data/config/locales/id.yml +0 -16
- data/config/locales/it.yml +0 -16
- data/config/locales/ja.yml +0 -16
- data/config/locales/ko.yml +0 -9
- data/config/locales/lt.yml +0 -16
- data/config/locales/lv.yml +0 -6
- data/config/locales/mk.yml +0 -15
- data/config/locales/nb.yml +0 -12
- data/config/locales/nl.yml +21 -29
- data/config/locales/pl.yml +0 -16
- data/config/locales/pt-BR.yml +0 -16
- data/config/locales/pt-PT.yml +0 -6
- data/config/locales/ro.yml +0 -6
- data/config/locales/ru.yml +0 -16
- data/config/locales/sk.yml +0 -16
- data/config/locales/sv-SE.yml +0 -16
- data/config/locales/tr.yml +0 -16
- data/config/locales/uk.yml +0 -16
- data/config/locales/vi.yml +0 -16
- data/config/locales/zh-CN.yml +0 -16
- data/config/locales/zh-TW.yml +0 -16
- data/lib/active_admin/application.rb +1 -9
- data/lib/active_admin/batch_actions/controller.rb +1 -4
- data/lib/active_admin/batch_actions/resource_extension.rb +6 -13
- data/lib/active_admin/batch_actions/views/batch_action_form.rb +0 -6
- data/lib/active_admin/batch_actions/views/selection_cells.rb +2 -2
- data/lib/active_admin/batch_actions.rb +0 -5
- data/lib/active_admin/callbacks.rb +6 -4
- data/lib/active_admin/component.rb +0 -1
- data/lib/active_admin/csv_builder.rb +1 -1
- data/lib/active_admin/devise.rb +3 -3
- data/lib/active_admin/dsl.rb +2 -2
- data/lib/active_admin/dynamic_settings_node.rb +4 -4
- data/lib/active_admin/engine.rb +19 -6
- data/lib/active_admin/filters/active.rb +6 -4
- data/lib/active_admin/filters/active_filter.rb +1 -3
- data/lib/active_admin/filters/forms.rb +1 -42
- data/lib/active_admin/filters/resource_extension.rb +17 -9
- data/lib/active_admin/filters.rb +0 -2
- data/lib/active_admin/form_builder.rb +15 -14
- data/lib/active_admin/inputs/filters/base/search_method_select.rb +8 -10
- data/lib/active_admin/inputs/filters/base.rb +1 -1
- data/lib/active_admin/inputs/filters/check_boxes_input.rb +1 -6
- data/lib/active_admin/inputs/filters/date_range_input.rb +4 -2
- data/lib/active_admin/inputs.rb +0 -3
- data/lib/active_admin/menu.rb +10 -7
- data/lib/active_admin/menu_collection.rb +1 -1
- data/lib/active_admin/menu_item.rb +24 -3
- data/lib/active_admin/namespace.rb +2 -44
- data/lib/active_admin/namespace_settings.rb +2 -35
- data/lib/active_admin/order_clause.rb +4 -1
- data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +3 -75
- data/lib/active_admin/orm/active_record/comments.rb +10 -5
- data/lib/active_admin/resource/action_items.rb +15 -20
- data/lib/active_admin/resource/naming.rb +1 -2
- data/lib/active_admin/resource.rb +1 -0
- data/lib/active_admin/resource_dsl.rb +1 -1
- data/lib/active_admin/scope.rb +1 -1
- data/lib/active_admin/settings_node.rb +1 -1
- data/lib/active_admin/sidebar_section.rb +0 -5
- data/lib/active_admin/version.rb +1 -1
- data/lib/active_admin/view_helpers.rb +0 -12
- data/lib/active_admin/views/components/active_admin_form.rb +20 -16
- data/lib/active_admin/views/components/attributes_table.rb +4 -12
- data/lib/active_admin/views/components/index_list.rb +10 -23
- data/lib/active_admin/views/components/paginated_collection.rb +34 -39
- data/lib/active_admin/views/components/panel.rb +2 -10
- data/lib/active_admin/views/components/scopes.rb +12 -21
- data/lib/active_admin/views/components/status_tag.rb +22 -19
- data/lib/active_admin/views/components/table_for.rb +19 -24
- data/lib/active_admin/views/components/tabs.rb +10 -11
- data/lib/active_admin/views/index_as_table.rb +24 -97
- data/lib/active_admin.rb +7 -11
- data/lib/generators/active_admin/assets/assets_generator.rb +4 -4
- data/lib/generators/active_admin/assets/templates/active_admin.css +3 -0
- data/lib/generators/active_admin/assets/templates/tailwind.config.js +18 -0
- data/lib/generators/active_admin/install/install_generator.rb +2 -8
- data/lib/generators/active_admin/install/templates/active_admin.rb.erb +10 -87
- data/lib/generators/active_admin/install/templates/dashboard.rb +8 -25
- data/lib/generators/active_admin/page/page_generator.rb +0 -1
- data/lib/generators/active_admin/resource/resource_generator.rb +46 -7
- data/lib/generators/active_admin/resource/templates/resource.rb.erb +42 -0
- data/lib/generators/active_admin/views_generator.rb +18 -0
- data/vendor/javascript/flowbite.js +2 -0
- metadata +68 -201
- data/app/assets/javascripts/active_admin/base.js +0 -521
- data/app/assets/stylesheets/active_admin/_base.scss +0 -57
- data/app/assets/stylesheets/active_admin/_forms.scss +0 -316
- data/app/assets/stylesheets/active_admin/_header.scss +0 -188
- data/app/assets/stylesheets/active_admin/_mixins.scss +0 -1
- data/app/assets/stylesheets/active_admin/_normalize.scss +0 -349
- data/app/assets/stylesheets/active_admin/_print.scss +0 -287
- data/app/assets/stylesheets/active_admin/_typography.scss +0 -100
- data/app/assets/stylesheets/active_admin/components/_batch_actions.scss +0 -6
- data/app/assets/stylesheets/active_admin/components/_blank_slates.scss +0 -30
- data/app/assets/stylesheets/active_admin/components/_breadcrumbs.scss +0 -20
- data/app/assets/stylesheets/active_admin/components/_buttons.scss +0 -6
- data/app/assets/stylesheets/active_admin/components/_columns.scss +0 -3
- data/app/assets/stylesheets/active_admin/components/_comments.scss +0 -41
- data/app/assets/stylesheets/active_admin/components/_date_picker.scss +0 -148
- data/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +0 -151
- data/app/assets/stylesheets/active_admin/components/_flash_messages.scss +0 -37
- data/app/assets/stylesheets/active_admin/components/_grid.scss +0 -9
- data/app/assets/stylesheets/active_admin/components/_index_list.scss +0 -12
- data/app/assets/stylesheets/active_admin/components/_links.scss +0 -5
- data/app/assets/stylesheets/active_admin/components/_modal_dialog.scss +0 -34
- data/app/assets/stylesheets/active_admin/components/_pagination.scss +0 -55
- data/app/assets/stylesheets/active_admin/components/_panels.scss +0 -6
- data/app/assets/stylesheets/active_admin/components/_scopes.scss +0 -13
- data/app/assets/stylesheets/active_admin/components/_status_tags.scss +0 -12
- data/app/assets/stylesheets/active_admin/components/_table_tools.scss +0 -67
- data/app/assets/stylesheets/active_admin/components/_tables.scss +0 -112
- data/app/assets/stylesheets/active_admin/components/_tabs.scss +0 -65
- data/app/assets/stylesheets/active_admin/components/_unsupported_browser.scss +0 -16
- data/app/assets/stylesheets/active_admin/mixins/_all.scss +0 -8
- data/app/assets/stylesheets/active_admin/mixins/_buttons.scss +0 -65
- data/app/assets/stylesheets/active_admin/mixins/_gradients.scss +0 -28
- data/app/assets/stylesheets/active_admin/mixins/_rounded.scss +0 -22
- data/app/assets/stylesheets/active_admin/mixins/_sections.scss +0 -41
- data/app/assets/stylesheets/active_admin/mixins/_shadows.scss +0 -15
- data/app/assets/stylesheets/active_admin/mixins/_typography.scss +0 -3
- data/app/assets/stylesheets/active_admin/mixins/_utilities.scss +0 -17
- data/app/assets/stylesheets/active_admin/mixins/_variables.scss +0 -51
- data/app/assets/stylesheets/active_admin/pages/_logged_out.scss +0 -44
- data/app/assets/stylesheets/active_admin/structure/_footer.scss +0 -19
- data/app/assets/stylesheets/active_admin/structure/_main_structure.scss +0 -29
- data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +0 -40
- data/app/javascript/active_admin/base.js +0 -28
- data/app/javascript/active_admin/ext/jquery-ui.js +0 -7
- data/app/javascript/active_admin/ext/jquery.js +0 -9
- data/app/javascript/active_admin/initializers/batch-actions.js +0 -61
- data/app/javascript/active_admin/initializers/checkbox-toggler.js +0 -3
- data/app/javascript/active_admin/initializers/datepicker.js +0 -16
- data/app/javascript/active_admin/initializers/dropdown-menu.js +0 -9
- data/app/javascript/active_admin/initializers/filters.js +0 -10
- data/app/javascript/active_admin/initializers/has-many.js +0 -98
- data/app/javascript/active_admin/initializers/per-page.js +0 -13
- data/app/javascript/active_admin/initializers/table-checkbox-toggler.js +0 -3
- data/app/javascript/active_admin/initializers/tabs.js +0 -6
- data/app/javascript/active_admin/lib/checkbox-toggler.js +0 -49
- data/app/javascript/active_admin/lib/dropdown-menu.js +0 -116
- data/app/javascript/active_admin/lib/filters.js +0 -39
- data/app/javascript/active_admin/lib/modal-dialog.js +0 -63
- data/app/javascript/active_admin/lib/per-page.js +0 -38
- data/app/javascript/active_admin/lib/table-checkbox-toggler.js +0 -38
- data/app/javascript/active_admin/lib/utils.js +0 -40
- data/app/views/kaminari/active_admin/_first_page.html.erb +0 -11
- data/app/views/kaminari/active_admin/_gap.html.erb +0 -8
- data/app/views/kaminari/active_admin/_last_page.html.erb +0 -11
- data/app/views/kaminari/active_admin/_next_page.html.erb +0 -11
- data/app/views/kaminari/active_admin/_page.html.erb +0 -12
- data/app/views/kaminari/active_admin/_paginator.html.erb +0 -25
- data/app/views/kaminari/active_admin/_prev_page.html.erb +0 -11
- data/app/views/kaminari/active_admin_countless/_first_page.html.erb +0 -11
- data/app/views/kaminari/active_admin_countless/_next_page.html.erb +0 -11
- data/app/views/kaminari/active_admin_countless/_page.html.erb +0 -12
- data/app/views/kaminari/active_admin_countless/_prev_page.html.erb +0 -11
- data/app/views/layouts/active_admin.html.arb +0 -2
- data/lib/active_admin/abstract_view_factory.rb +0 -48
- data/lib/active_admin/asset_registration.rb +0 -30
- data/lib/active_admin/base_controller/menu.rb +0 -35
- data/lib/active_admin/batch_actions/views/batch_action_selector.rb +0 -59
- data/lib/active_admin/filters/active_sidebar.rb +0 -28
- data/lib/active_admin/generators/boilerplate.rb +0 -54
- data/lib/active_admin/helpers/collection.rb +0 -21
- data/lib/active_admin/helpers/i18n.rb +0 -8
- data/lib/active_admin/inputs/datepicker_input.rb +0 -28
- data/lib/active_admin/inputs/filters/date_picker_input.rb +0 -14
- data/lib/active_admin/orm/active_record/comments/show_page_helper.rb +0 -24
- data/lib/active_admin/orm/mongoid.rb +0 -2
- data/lib/active_admin/resource_controller/sidebars.rb +0 -19
- data/lib/active_admin/resource_controller.rb +0 -68
- data/lib/active_admin/view_factory.rb +0 -28
- data/lib/active_admin/view_helpers/active_admin_application_helper.rb +0 -13
- data/lib/active_admin/view_helpers/auto_link_helper.rb +0 -46
- data/lib/active_admin/view_helpers/breadcrumb_helper.rb +0 -34
- data/lib/active_admin/view_helpers/display_helper.rb +0 -119
- data/lib/active_admin/view_helpers/download_format_links_helper.rb +0 -60
- data/lib/active_admin/view_helpers/fields_for.rb +0 -51
- data/lib/active_admin/view_helpers/flash_helper.rb +0 -15
- data/lib/active_admin/view_helpers/form_helper.rb +0 -21
- data/lib/active_admin/view_helpers/scope_name_helper.rb +0 -17
- data/lib/active_admin/view_helpers/sidebar_helper.rb +0 -16
- data/lib/active_admin/view_helpers/title_helper.rb +0 -12
- data/lib/active_admin/view_helpers/view_factory_helper.rb +0 -12
- data/lib/active_admin/views/action_items.rb +0 -18
- data/lib/active_admin/views/components/active_filters_sidebar_content.rb +0 -59
- data/lib/active_admin/views/components/blank_slate.rb +0 -18
- data/lib/active_admin/views/components/columns.rb +0 -162
- data/lib/active_admin/views/components/dropdown_menu.rb +0 -69
- data/lib/active_admin/views/components/menu.rb +0 -33
- data/lib/active_admin/views/components/menu_item.rb +0 -59
- data/lib/active_admin/views/components/sidebar.rb +0 -14
- data/lib/active_admin/views/components/sidebar_section.rb +0 -35
- data/lib/active_admin/views/components/site_title.rb +0 -55
- data/lib/active_admin/views/components/unsupported_browser.rb +0 -12
- data/lib/active_admin/views/footer.rb +0 -32
- data/lib/active_admin/views/header.rb +0 -20
- data/lib/active_admin/views/index_as_block.rb +0 -37
- data/lib/active_admin/views/index_as_blog.rb +0 -156
- data/lib/active_admin/views/index_as_grid.rb +0 -81
- data/lib/active_admin/views/pages/base.rb +0 -134
- data/lib/active_admin/views/pages/form.rb +0 -65
- data/lib/active_admin/views/pages/index.rb +0 -166
- data/lib/active_admin/views/pages/layout.rb +0 -27
- data/lib/active_admin/views/pages/page.rb +0 -31
- data/lib/active_admin/views/pages/show.rb +0 -60
- data/lib/active_admin/views/tabbed_navigation.rb +0 -12
- data/lib/active_admin/views/title_bar.rb +0 -56
- data/lib/generators/active_admin/assets/templates/active_admin.js +0 -1
- data/lib/generators/active_admin/assets/templates/active_admin.scss +0 -17
- data/lib/generators/active_admin/resource/templates/admin.rb.erb +0 -46
- data/lib/generators/active_admin/webpacker/plugins/jquery.js +0 -7
- data/lib/generators/active_admin/webpacker/templates/active_admin.js +0 -5
- data/lib/generators/active_admin/webpacker/templates/active_admin.scss +0 -17
- data/lib/generators/active_admin/webpacker/templates/print.scss +0 -2
- data/lib/generators/active_admin/webpacker/webpacker_generator.rb +0 -27
- data/vendor/assets/javascripts/jquery-ui/data.js +0 -41
- data/vendor/assets/javascripts/jquery-ui/disable-selection.js +0 -48
- data/vendor/assets/javascripts/jquery-ui/escape-selector.js +0 -23
- data/vendor/assets/javascripts/jquery-ui/focusable.js +0 -86
- data/vendor/assets/javascripts/jquery-ui/form-reset-mixin.js +0 -80
- data/vendor/assets/javascripts/jquery-ui/form.js +0 -22
- data/vendor/assets/javascripts/jquery-ui/ie.js +0 -17
- data/vendor/assets/javascripts/jquery-ui/keycode.js +0 -47
- data/vendor/assets/javascripts/jquery-ui/labels.js +0 -65
- data/vendor/assets/javascripts/jquery-ui/plugin.js +0 -46
- data/vendor/assets/javascripts/jquery-ui/position.js +0 -500
- data/vendor/assets/javascripts/jquery-ui/safe-active-element.js +0 -42
- data/vendor/assets/javascripts/jquery-ui/safe-blur.js +0 -23
- data/vendor/assets/javascripts/jquery-ui/scroll-parent.js +0 -47
- data/vendor/assets/javascripts/jquery-ui/tabbable.js +0 -38
- data/vendor/assets/javascripts/jquery-ui/unique-id.js +0 -51
- data/vendor/assets/javascripts/jquery-ui/version.js +0 -17
- data/vendor/assets/javascripts/jquery-ui/widget.js +0 -735
- data/vendor/assets/javascripts/jquery-ui/widgets/button.js +0 -391
- data/vendor/assets/javascripts/jquery-ui/widgets/checkboxradio.js +0 -291
- data/vendor/assets/javascripts/jquery-ui/widgets/controlgroup.js +0 -300
- data/vendor/assets/javascripts/jquery-ui/widgets/datepicker.js +0 -2123
- data/vendor/assets/javascripts/jquery-ui/widgets/dialog.js +0 -954
- data/vendor/assets/javascripts/jquery-ui/widgets/draggable.js +0 -1259
- data/vendor/assets/javascripts/jquery-ui/widgets/mouse.js +0 -230
- data/vendor/assets/javascripts/jquery-ui/widgets/resizable.js +0 -1207
- data/vendor/assets/javascripts/jquery-ui/widgets/sortable.js +0 -1561
- data/vendor/assets/javascripts/jquery-ui/widgets/tabs.js +0 -931
- /data/{lib → app/controllers}/active_admin/base_controller/authorization.rb +0 -0
- /data/{lib → app/controllers}/active_admin/resource_controller/decorators.rb +0 -0
- /data/{lib → app/controllers}/active_admin/resource_controller/polymorphic_routes.rb +0 -0
- /data/{lib → app/controllers}/active_admin/resource_controller/resource_class_methods.rb +0 -0
- /data/lib/{active_admin/orm/mongoid/.gitkeep → generators/active_admin/assets/templates/builds/.keep} +0 -0
|
@@ -1,75 +1,21 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
require "active_admin/views"
|
|
3
|
-
require "active_admin/views/components/panel"
|
|
4
3
|
|
|
5
4
|
module ActiveAdmin
|
|
6
5
|
module Comments
|
|
7
6
|
module Views
|
|
8
|
-
|
|
9
|
-
class Comments < ActiveAdmin::Views::Panel
|
|
7
|
+
class Comments < Arbre::Element
|
|
10
8
|
builder_method :active_admin_comments_for
|
|
11
9
|
|
|
12
|
-
attr_accessor :resource
|
|
13
|
-
|
|
14
10
|
def build(resource)
|
|
15
11
|
if authorized?(ActiveAdmin::Auth::READ, ActiveAdmin::Comment)
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
super(title, for: resource)
|
|
19
|
-
build_comments
|
|
12
|
+
comments = active_admin_authorization.scope_collection(ActiveAdmin::Comment.find_for_resource_in_namespace(resource, active_admin_namespace.name).includes(:author).page(params[:page]))
|
|
13
|
+
render("active_admin/shared/resource_comments", resource: resource, comments: comments, comment_form_url: comment_form_url)
|
|
20
14
|
end
|
|
21
15
|
end
|
|
22
16
|
|
|
23
17
|
protected
|
|
24
18
|
|
|
25
|
-
def title
|
|
26
|
-
I18n.t "active_admin.comments.title_content", count: @comments.total_count
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
def build_comments
|
|
30
|
-
if @comments.any?
|
|
31
|
-
@comments.each(&method(:build_comment))
|
|
32
|
-
div page_entries_info(@comments).html_safe, class: "pagination_information"
|
|
33
|
-
else
|
|
34
|
-
build_empty_message
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
text_node paginate @comments
|
|
38
|
-
|
|
39
|
-
if authorized?(ActiveAdmin::Auth::NEW, ActiveAdmin::Comment)
|
|
40
|
-
build_comment_form
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
def build_comment(comment)
|
|
45
|
-
div for: comment do
|
|
46
|
-
div class: "active_admin_comment_meta" do
|
|
47
|
-
h4 class: "active_admin_comment_author" do
|
|
48
|
-
comment.author ? auto_link(comment.author) : I18n.t("active_admin.comments.author_missing")
|
|
49
|
-
end
|
|
50
|
-
span pretty_format comment.created_at
|
|
51
|
-
if authorized?(ActiveAdmin::Auth::DESTROY, comment)
|
|
52
|
-
text_node link_to I18n.t("active_admin.comments.delete"), comments_url(comment.id), method: :delete, data: { confirm: I18n.t("active_admin.comments.delete_confirmation") }
|
|
53
|
-
end
|
|
54
|
-
end
|
|
55
|
-
div class: "active_admin_comment_body" do
|
|
56
|
-
simple_format comment.body
|
|
57
|
-
end
|
|
58
|
-
end
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
def build_empty_message
|
|
62
|
-
span I18n.t("active_admin.comments.no_comments_yet"), class: "empty"
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
def comments_url(*args)
|
|
66
|
-
parts = []
|
|
67
|
-
parts << active_admin_namespace.name unless active_admin_namespace.root?
|
|
68
|
-
parts << active_admin_namespace.comments_registration_name.underscore
|
|
69
|
-
parts << "path"
|
|
70
|
-
send parts.join("_"), *args
|
|
71
|
-
end
|
|
72
|
-
|
|
73
19
|
def comment_form_url
|
|
74
20
|
parts = []
|
|
75
21
|
parts << active_admin_namespace.name unless active_admin_namespace.root?
|
|
@@ -77,25 +23,7 @@ module ActiveAdmin
|
|
|
77
23
|
parts << "path"
|
|
78
24
|
send parts.join "_"
|
|
79
25
|
end
|
|
80
|
-
|
|
81
|
-
def build_comment_form
|
|
82
|
-
active_admin_form_for(ActiveAdmin::Comment.new, url: comment_form_url) do |f|
|
|
83
|
-
f.inputs do
|
|
84
|
-
f.input :resource_type, as: :hidden, input_html: { value: ActiveAdmin::Comment.resource_type(parent.resource) }
|
|
85
|
-
f.input :resource_id, as: :hidden, input_html: { value: parent.resource.id }
|
|
86
|
-
f.input :body, label: false, input_html: { size: "80x8" }
|
|
87
|
-
end
|
|
88
|
-
f.actions do
|
|
89
|
-
f.action :submit, label: I18n.t("active_admin.comments.add")
|
|
90
|
-
end
|
|
91
|
-
end
|
|
92
|
-
end
|
|
93
|
-
|
|
94
|
-
def default_id_for_prefix
|
|
95
|
-
"active_admin_comments_for"
|
|
96
|
-
end
|
|
97
26
|
end
|
|
98
|
-
|
|
99
27
|
end
|
|
100
28
|
end
|
|
101
29
|
end
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
require "active_admin/orm/active_record/comments/views"
|
|
3
|
-
require "active_admin/orm/active_record/comments/show_page_helper"
|
|
4
3
|
require "active_admin/orm/active_record/comments/namespace_helper"
|
|
5
4
|
require "active_admin/orm/active_record/comments/resource_helper"
|
|
6
5
|
|
|
@@ -13,7 +12,6 @@ ActiveAdmin::Application.inheritable_setting :comments_menu, {}
|
|
|
13
12
|
# Insert helper modules
|
|
14
13
|
ActiveAdmin::Namespace.send :include, ActiveAdmin::Comments::NamespaceHelper
|
|
15
14
|
ActiveAdmin::Resource.send :include, ActiveAdmin::Comments::ResourceHelper
|
|
16
|
-
ActiveAdmin.application.view_factory.show_page.send :include, ActiveAdmin::Comments::ShowPageHelper
|
|
17
15
|
|
|
18
16
|
# Load the model as soon as it's referenced. By that point, Rails & Kaminari will be ready
|
|
19
17
|
ActiveAdmin.autoload :Comment, "active_admin/orm/active_record/comments/comment"
|
|
@@ -77,6 +75,11 @@ ActiveAdmin.after_load do |app|
|
|
|
77
75
|
def destroy
|
|
78
76
|
destroy! do |success, failure|
|
|
79
77
|
success.html do
|
|
78
|
+
# If deleting from the Comments resource page then this will fail, as redirecting back
|
|
79
|
+
# will be to the comment show page, but comment was deleted. The following can be used
|
|
80
|
+
# to alleviate that, but then deleting comments on commentable resource pages will
|
|
81
|
+
# redirect to the comments index which may be undesirable.
|
|
82
|
+
# redirect_to({ action: :index }, fallback_location: active_admin_root)
|
|
80
83
|
redirect_back fallback_location: active_admin_root
|
|
81
84
|
end
|
|
82
85
|
failure.html do
|
|
@@ -90,11 +93,13 @@ ActiveAdmin.after_load do |app|
|
|
|
90
93
|
|
|
91
94
|
index do
|
|
92
95
|
column I18n.t("active_admin.comments.resource_type"), :resource_type
|
|
96
|
+
column I18n.t("active_admin.comments.resource"), :resource, class: "min-w-[7rem]"
|
|
93
97
|
column I18n.t("active_admin.comments.author_type"), :author_type
|
|
94
|
-
column I18n.t("active_admin.comments.resource"), :resource
|
|
95
98
|
column I18n.t("active_admin.comments.author"), :author
|
|
96
|
-
column I18n.t("active_admin.comments.body"), :body
|
|
97
|
-
|
|
99
|
+
column I18n.t("active_admin.comments.body"), :body, class: "min-w-[16rem]" do |comment|
|
|
100
|
+
truncate(comment.body, length: 60, separator: " ")
|
|
101
|
+
end
|
|
102
|
+
column I18n.t("active_admin.comments.created_at"), :created_at, class: "min-w-[13rem]"
|
|
98
103
|
actions
|
|
99
104
|
end
|
|
100
105
|
end
|
|
@@ -64,32 +64,31 @@ module ActiveAdmin
|
|
|
64
64
|
|
|
65
65
|
# Adds the default New link on index
|
|
66
66
|
def add_default_new_action_item
|
|
67
|
-
add_action_item :new, only: :index do
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
link_to localizer.t(:new_model), new_resource_path
|
|
71
|
-
end
|
|
67
|
+
add_action_item :new, only: :index, if: -> { new_action_authorized?(active_admin_config.resource_class) } do
|
|
68
|
+
localizer = ActiveAdmin::Localizers.resource(active_admin_config)
|
|
69
|
+
link_to localizer.t(:new_model), new_resource_path, class: "action-item-button"
|
|
72
70
|
end
|
|
73
71
|
end
|
|
74
72
|
|
|
75
73
|
# Adds the default Edit link on show
|
|
76
74
|
def add_default_edit_action_item
|
|
77
|
-
add_action_item :edit, only: :show do
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
link_to localizer.t(:edit_model), edit_resource_path(resource)
|
|
81
|
-
end
|
|
75
|
+
add_action_item :edit, only: :show, if: -> { edit_action_authorized?(resource) } do
|
|
76
|
+
localizer = ActiveAdmin::Localizers.resource(active_admin_config)
|
|
77
|
+
link_to localizer.t(:edit_model), edit_resource_path(resource), class: "action-item-button"
|
|
82
78
|
end
|
|
83
79
|
end
|
|
84
80
|
|
|
85
81
|
# Adds the default Destroy link on show
|
|
86
82
|
def add_default_show_action_item
|
|
87
|
-
add_action_item :destroy, only: :show do
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
83
|
+
add_action_item :destroy, only: :show, if: -> { destroy_action_authorized?(resource) } do
|
|
84
|
+
localizer = ActiveAdmin::Localizers.resource(active_admin_config)
|
|
85
|
+
link_to(
|
|
86
|
+
localizer.t(:delete_model),
|
|
87
|
+
resource_path(resource),
|
|
88
|
+
class: "action-item-button",
|
|
89
|
+
method: :delete,
|
|
90
|
+
data: { confirm: localizer.t(:delete_confirmation) }
|
|
91
|
+
)
|
|
93
92
|
end
|
|
94
93
|
end
|
|
95
94
|
|
|
@@ -109,10 +108,6 @@ module ActiveAdmin
|
|
|
109
108
|
normalize_display_options!
|
|
110
109
|
end
|
|
111
110
|
|
|
112
|
-
def html_class
|
|
113
|
-
"action_item #{@options[:class]}".rstrip
|
|
114
|
-
end
|
|
115
|
-
|
|
116
111
|
def priority
|
|
117
112
|
@options[:priority] || 10
|
|
118
113
|
end
|
|
@@ -23,8 +23,7 @@ module ActiveAdmin
|
|
|
23
23
|
|
|
24
24
|
# Returns the plural version of this resource such as "Bank Accounts"
|
|
25
25
|
def plural_resource_label(options = {})
|
|
26
|
-
defaults = { count:
|
|
27
|
-
default: resource_label.pluralize.titleize }
|
|
26
|
+
defaults = { count: 2.1, default: resource_label.pluralize.titleize }
|
|
28
27
|
resource_name.translate defaults.merge options
|
|
29
28
|
end
|
|
30
29
|
|
|
@@ -192,7 +192,7 @@ module ActiveAdmin
|
|
|
192
192
|
delegate :before_destroy, :after_destroy, to: :controller
|
|
193
193
|
|
|
194
194
|
standard_rails_filters =
|
|
195
|
-
AbstractController::Callbacks::ClassMethods.public_instance_methods.select { |m| m.
|
|
195
|
+
AbstractController::Callbacks::ClassMethods.public_instance_methods.select { |m| m.end_with?('_action') }
|
|
196
196
|
delegate *standard_rails_filters, to: :controller
|
|
197
197
|
|
|
198
198
|
# Specify which actions to create in the controller
|
data/lib/active_admin/scope.rb
CHANGED
|
@@ -18,11 +18,6 @@ module ActiveAdmin
|
|
|
18
18
|
"#{name.downcase.underscore}_sidebar_section".parameterize
|
|
19
19
|
end
|
|
20
20
|
|
|
21
|
-
# The title gets displayed within the section in the view
|
|
22
|
-
def title
|
|
23
|
-
I18n.t("active_admin.sidebars.#{name}", default: name.titlecase)
|
|
24
|
-
end
|
|
25
|
-
|
|
26
21
|
# If a block is not passed in, the name of the partial to render
|
|
27
22
|
def partial_name
|
|
28
23
|
options[:partial] || "#{name.downcase.tr(' ', '_')}_sidebar"
|
data/lib/active_admin/version.rb
CHANGED
|
@@ -1,21 +1,9 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
module ActiveAdmin
|
|
3
3
|
module ViewHelpers
|
|
4
|
-
|
|
5
4
|
# Require all ruby files in the view helpers dir
|
|
6
5
|
Dir[File.expand_path("view_helpers", __dir__) + "/*.rb"].each { |f| require f }
|
|
7
6
|
|
|
8
|
-
include ActiveAdminApplicationHelper
|
|
9
|
-
include AutoLinkHelper
|
|
10
|
-
include BreadcrumbHelper
|
|
11
|
-
include DisplayHelper
|
|
12
7
|
include MethodOrProcHelper
|
|
13
|
-
include SidebarHelper
|
|
14
|
-
include FormHelper
|
|
15
|
-
include TitleHelper
|
|
16
|
-
include ViewFactoryHelper
|
|
17
|
-
include FlashHelper
|
|
18
|
-
include ScopeNameHelper
|
|
19
|
-
|
|
20
8
|
end
|
|
21
9
|
end
|
|
@@ -33,20 +33,20 @@ module ActiveAdmin
|
|
|
33
33
|
end
|
|
34
34
|
|
|
35
35
|
@opening_tag, @closing_tag = split_string_on(form_string, "</form>")
|
|
36
|
-
instance_eval(&block) if
|
|
36
|
+
instance_eval(&block) if block
|
|
37
37
|
|
|
38
38
|
# Rails sets multipart automatically if a file field is present,
|
|
39
39
|
# but the form tag has already been rendered before the block eval.
|
|
40
|
-
if multipart? &&
|
|
40
|
+
if multipart? && !@opening_tag.include?('multipart')
|
|
41
41
|
@opening_tag.sub!(/<form/, '<form enctype="multipart/form-data"')
|
|
42
42
|
end
|
|
43
43
|
end
|
|
44
44
|
|
|
45
45
|
def inputs(*args, &block)
|
|
46
|
-
if
|
|
46
|
+
if block
|
|
47
47
|
form_builder.template.assigns[:has_many_block] = true
|
|
48
48
|
end
|
|
49
|
-
if
|
|
49
|
+
if block && block.arity == 0
|
|
50
50
|
wrapped_block = proc do
|
|
51
51
|
wrap_it = form_builder.already_in_an_inputs_block ? true : false
|
|
52
52
|
form_builder.already_in_an_inputs_block = true
|
|
@@ -73,13 +73,15 @@ module ActiveAdmin
|
|
|
73
73
|
end
|
|
74
74
|
|
|
75
75
|
def actions(*args, &block)
|
|
76
|
-
|
|
77
|
-
insert_tag(SemanticActionsProxy, form_builder, *args, &block)
|
|
76
|
+
if block
|
|
77
|
+
insert_tag(SemanticActionsProxy, form_builder, *args, &block)
|
|
78
|
+
else
|
|
79
|
+
add_create_another_checkbox
|
|
78
80
|
actions(*args) { commit_action_with_cancel_link }
|
|
81
|
+
end
|
|
79
82
|
end
|
|
80
83
|
|
|
81
84
|
def commit_action_with_cancel_link
|
|
82
|
-
add_create_another_checkbox
|
|
83
85
|
action(:submit)
|
|
84
86
|
cancel_link
|
|
85
87
|
end
|
|
@@ -108,14 +110,16 @@ module ActiveAdmin
|
|
|
108
110
|
create_another = params[:create_another]
|
|
109
111
|
label = @resource.class.model_name.human
|
|
110
112
|
Arbre::Context.new do
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
113
|
+
div class: "boolean input input-create-another" do
|
|
114
|
+
label for: "create_another" do
|
|
115
|
+
input(
|
|
116
|
+
checked: create_another,
|
|
117
|
+
id: "create_another",
|
|
118
|
+
name: "create_another",
|
|
119
|
+
type: "checkbox"
|
|
120
|
+
)
|
|
121
|
+
text_node I18n.t("active_admin.create_another", model: label)
|
|
122
|
+
end
|
|
119
123
|
end
|
|
120
124
|
end
|
|
121
125
|
end
|
|
@@ -127,7 +131,7 @@ module ActiveAdmin
|
|
|
127
131
|
html_options[:class] ||= "inputs"
|
|
128
132
|
legend = args.shift if args.first.is_a?(::String)
|
|
129
133
|
legend = html_options.delete(:name) if html_options.key?(:name)
|
|
130
|
-
legend_tag = legend ? "<legend
|
|
134
|
+
legend_tag = legend ? "<legend class=\"fieldset-title\">#{legend}</legend>" : ""
|
|
131
135
|
fieldset_attrs = html_options.map { |k, v| %Q{#{k}="#{v}"} }.join(" ")
|
|
132
136
|
@opening_tag = "<fieldset #{fieldset_attrs}>#{legend_tag}<ol>"
|
|
133
137
|
@closing_tag = "</ol></fieldset>"
|
|
@@ -11,6 +11,7 @@ module ActiveAdmin
|
|
|
11
11
|
options = {}
|
|
12
12
|
options[:for] = @collection.first if single_record?
|
|
13
13
|
super(options)
|
|
14
|
+
add_class "attributes-table"
|
|
14
15
|
@table = table
|
|
15
16
|
build_colgroups
|
|
16
17
|
rows(*attrs)
|
|
@@ -23,13 +24,7 @@ module ActiveAdmin
|
|
|
23
24
|
def row(*args, &block)
|
|
24
25
|
title = args[0]
|
|
25
26
|
options = args.extract_options!
|
|
26
|
-
|
|
27
|
-
if options[:class]
|
|
28
|
-
classes << options[:class]
|
|
29
|
-
elsif title.present?
|
|
30
|
-
classes << "row-#{title.to_s.parameterize(separator: "_")}"
|
|
31
|
-
end
|
|
32
|
-
options[:class] = classes.join(" ")
|
|
27
|
+
options["data-row"] = title.to_s.parameterize(separator: "_") if title.present?
|
|
33
28
|
|
|
34
29
|
@table << tr(options) do
|
|
35
30
|
th do
|
|
@@ -59,10 +54,7 @@ module ActiveAdmin
|
|
|
59
54
|
within @table do
|
|
60
55
|
col # column for row headers
|
|
61
56
|
@collection.each do |record|
|
|
62
|
-
|
|
63
|
-
classes << cycle(:even, :odd, name: self.class.to_s)
|
|
64
|
-
classes << dom_class_name_for(record)
|
|
65
|
-
col(id: dom_id_for(record), class: classes)
|
|
57
|
+
col(id: dom_id_for(record))
|
|
66
58
|
end
|
|
67
59
|
end
|
|
68
60
|
end
|
|
@@ -76,7 +68,7 @@ module ActiveAdmin
|
|
|
76
68
|
end
|
|
77
69
|
|
|
78
70
|
def empty_value
|
|
79
|
-
span I18n.t("active_admin.empty"), class: "empty"
|
|
71
|
+
span I18n.t("active_admin.empty"), class: "attributes-table-empty-value"
|
|
80
72
|
end
|
|
81
73
|
|
|
82
74
|
def content_for(record, attr)
|
|
@@ -1,28 +1,18 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
require "active_admin/helpers/collection"
|
|
3
|
-
|
|
4
2
|
module ActiveAdmin
|
|
5
3
|
module Views
|
|
6
|
-
|
|
7
4
|
# Renders a collection of index views available to the resource
|
|
8
5
|
# as a list with a separator
|
|
9
6
|
class IndexList < ActiveAdmin::Component
|
|
10
|
-
builder_method :index_list_renderer
|
|
11
|
-
|
|
12
|
-
include ::ActiveAdmin::Helpers::Collection
|
|
13
|
-
|
|
14
|
-
def default_class_name
|
|
15
|
-
"indexes table_tools_segmented_control"
|
|
16
|
-
end
|
|
17
|
-
|
|
18
7
|
def tag_name
|
|
19
|
-
"
|
|
8
|
+
"div"
|
|
20
9
|
end
|
|
21
10
|
|
|
22
11
|
# Builds the links for presenting different index views to the user
|
|
23
12
|
#
|
|
24
13
|
# @param [Array] index_classes The class constants that represent index page presenters
|
|
25
14
|
def build(index_classes)
|
|
15
|
+
add_class "index-button-group index-list"
|
|
26
16
|
unless current_filter_search_empty?
|
|
27
17
|
index_classes.each do |index_class|
|
|
28
18
|
build_index_list(index_class)
|
|
@@ -36,20 +26,18 @@ module ActiveAdmin
|
|
|
36
26
|
#
|
|
37
27
|
# @param [Class] index_class The class on which to build the link and html classes
|
|
38
28
|
def build_index_list(index_class)
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
url_with_params = url_for(**params.merge(as: index_class.index_name.to_sym).symbolize_keys)
|
|
29
|
+
params = request.query_parameters.except :page, :commit, :format
|
|
30
|
+
url_with_params = url_for(**params.merge(as: index_class.index_name.to_sym).symbolize_keys)
|
|
42
31
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
end
|
|
32
|
+
a href: url_with_params, class: classes_for_index(index_class) do
|
|
33
|
+
name = index_class.index_name
|
|
34
|
+
I18n.t("active_admin.index_list.#{name}", default: name.to_s.titleize)
|
|
47
35
|
end
|
|
48
36
|
end
|
|
49
37
|
|
|
50
38
|
def classes_for_index(index_class)
|
|
51
|
-
classes = ["index"]
|
|
52
|
-
classes << "selected" if current_index?(index_class)
|
|
39
|
+
classes = ["index-button"]
|
|
40
|
+
classes << "index-button-selected" if current_index?(index_class)
|
|
53
41
|
classes.join(" ")
|
|
54
42
|
end
|
|
55
43
|
|
|
@@ -62,9 +50,8 @@ module ActiveAdmin
|
|
|
62
50
|
end
|
|
63
51
|
|
|
64
52
|
def current_filter_search_empty?
|
|
65
|
-
params.include?(:q) &&
|
|
53
|
+
params.include?(:q) && collection_empty?
|
|
66
54
|
end
|
|
67
|
-
|
|
68
55
|
end
|
|
69
56
|
end
|
|
70
57
|
end
|
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
require "active_admin/helpers/collection"
|
|
3
|
-
require "active_admin/view_helpers/download_format_links_helper"
|
|
4
|
-
|
|
5
2
|
module ActiveAdmin
|
|
6
3
|
module Views
|
|
7
|
-
|
|
8
4
|
# Wraps the content with pagination and available formats.
|
|
9
5
|
#
|
|
10
6
|
# *Example:*
|
|
@@ -19,8 +15,8 @@ module ActiveAdmin
|
|
|
19
15
|
# posts in one of the following formats:
|
|
20
16
|
#
|
|
21
17
|
# * "No Posts found"
|
|
22
|
-
# * "
|
|
23
|
-
# * "
|
|
18
|
+
# * "Showing all 10 Posts"
|
|
19
|
+
# * "Showing Posts 1 - 30 of 31 in total"
|
|
24
20
|
#
|
|
25
21
|
# It will also generate pagination links.
|
|
26
22
|
#
|
|
@@ -46,11 +42,11 @@ module ActiveAdmin
|
|
|
46
42
|
@display_total = options.delete(:pagination_total) { true }
|
|
47
43
|
@per_page = options.delete(:per_page)
|
|
48
44
|
|
|
49
|
-
unless collection.respond_to?(:total_pages)
|
|
45
|
+
unless @collection.respond_to?(:total_pages)
|
|
50
46
|
raise(StandardError, "Collection is not a paginated scope. Set collection.page(params[:page]).per(10) before calling :paginated_collection.")
|
|
51
47
|
end
|
|
52
|
-
|
|
53
|
-
@contents = div(class: "
|
|
48
|
+
add_class "paginated-collection"
|
|
49
|
+
@contents = div(class: "paginated-collection-contents")
|
|
54
50
|
build_pagination_with_formats(options)
|
|
55
51
|
@built = true
|
|
56
52
|
end
|
|
@@ -67,25 +63,28 @@ module ActiveAdmin
|
|
|
67
63
|
protected
|
|
68
64
|
|
|
69
65
|
def build_pagination_with_formats(options)
|
|
70
|
-
div
|
|
71
|
-
|
|
66
|
+
div class: "paginated-collection-pagination" do
|
|
67
|
+
div page_entries_info(options).html_safe, class: "pagination-information"
|
|
72
68
|
build_pagination
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
69
|
+
end
|
|
70
|
+
formats = build_download_formats @download_links
|
|
71
|
+
if @per_page.is_a?(Array) || formats.any?
|
|
72
|
+
div class: "paginated-collection-footer" do
|
|
73
|
+
build_per_page_select if @per_page.is_a?(Array)
|
|
74
|
+
render("active_admin/shared/download_format_links", formats: formats) if formats.any?
|
|
75
|
+
end
|
|
77
76
|
end
|
|
78
77
|
end
|
|
79
78
|
|
|
80
79
|
def build_per_page_select
|
|
81
|
-
div
|
|
80
|
+
div do
|
|
82
81
|
text_node I18n.t("active_admin.pagination.per_page")
|
|
83
|
-
select do
|
|
82
|
+
select class: "pagination-per-page" do
|
|
84
83
|
@per_page.each do |per_page|
|
|
85
84
|
option(
|
|
86
85
|
per_page,
|
|
87
86
|
value: per_page,
|
|
88
|
-
selected: collection.limit_value == per_page ? "selected" : nil
|
|
87
|
+
selected: @collection.limit_value == per_page ? "selected" : nil
|
|
89
88
|
)
|
|
90
89
|
end
|
|
91
90
|
end
|
|
@@ -93,7 +92,7 @@ module ActiveAdmin
|
|
|
93
92
|
end
|
|
94
93
|
|
|
95
94
|
def build_pagination
|
|
96
|
-
options = {
|
|
95
|
+
options = { views_prefix: :active_admin, outer_window: 1, window: 2 }
|
|
97
96
|
options[:params] = @params if @params
|
|
98
97
|
options[:param_name] = @param_name if @param_name
|
|
99
98
|
|
|
@@ -103,59 +102,55 @@ module ActiveAdmin
|
|
|
103
102
|
# you pass in the :total_pages option. We issue a query to determine
|
|
104
103
|
# if there is another page or not, but the limit/offset make this
|
|
105
104
|
# query fast.
|
|
106
|
-
offset = collection.offset(collection.current_page * collection.limit_value).limit(1).count
|
|
107
|
-
options[:total_pages] = collection.current_page + offset
|
|
105
|
+
offset = @collection.offset(@collection.current_page * @collection.limit_value).limit(1).count
|
|
106
|
+
options[:total_pages] = @collection.current_page + offset
|
|
108
107
|
options[:right] = 0
|
|
109
108
|
end
|
|
110
109
|
|
|
111
|
-
text_node paginate collection, **options
|
|
110
|
+
text_node paginate @collection, **options
|
|
112
111
|
end
|
|
113
112
|
|
|
114
|
-
include ::ActiveAdmin::Helpers::Collection
|
|
115
|
-
include ::ActiveAdmin::ViewHelpers::DownloadFormatLinksHelper
|
|
116
|
-
|
|
117
113
|
# modified from will_paginate
|
|
118
114
|
def page_entries_info(options = {})
|
|
119
115
|
if options[:entry_name]
|
|
120
116
|
entry_name = options[:entry_name]
|
|
121
117
|
entries_name = options[:entries_name] || entry_name.pluralize
|
|
122
|
-
elsif
|
|
118
|
+
elsif collection_empty?(@collection)
|
|
123
119
|
entry_name = I18n.t "active_admin.pagination.entry", count: 1, default: "entry"
|
|
124
120
|
entries_name = I18n.t "active_admin.pagination.entry", count: 2, default: "entries"
|
|
125
121
|
else
|
|
126
|
-
key = "activerecord.models." + collection.first.class.model_name.i18n_key.to_s
|
|
122
|
+
key = "activerecord.models." + @collection.first.class.model_name.i18n_key.to_s
|
|
127
123
|
|
|
128
|
-
entry_name = I18n.translate key, count: 1, default: collection.first.class.name.underscore.sub("_", " ")
|
|
129
|
-
entries_name = I18n.translate key, count: collection.size, default: entry_name.pluralize
|
|
124
|
+
entry_name = I18n.translate key, count: 1, default: @collection.first.class.name.underscore.sub("_", " ")
|
|
125
|
+
entries_name = I18n.translate key, count: @collection.size, default: entry_name.pluralize
|
|
130
126
|
end
|
|
131
127
|
|
|
132
128
|
if @display_total
|
|
133
|
-
if collection.total_pages < 2
|
|
134
|
-
case collection_size
|
|
129
|
+
if @collection.total_pages < 2
|
|
130
|
+
case collection_size(@collection)
|
|
135
131
|
when 0; I18n.t("active_admin.pagination.empty", model: entries_name)
|
|
136
132
|
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)
|
|
133
|
+
else; I18n.t("active_admin.pagination.one_page", model: entries_name, n: @collection.total_count)
|
|
138
134
|
end
|
|
139
135
|
else
|
|
140
|
-
offset = (collection.current_page - 1) * collection.limit_value
|
|
141
|
-
total = collection.total_count
|
|
136
|
+
offset = (@collection.current_page - 1) * @collection.limit_value
|
|
137
|
+
total = @collection.total_count
|
|
142
138
|
I18n.t "active_admin.pagination.multiple",
|
|
143
139
|
model: entries_name,
|
|
144
140
|
total: total,
|
|
145
141
|
from: offset + 1,
|
|
146
|
-
to: offset + collection_size
|
|
142
|
+
to: offset + collection_size(@collection)
|
|
147
143
|
end
|
|
148
144
|
else
|
|
149
145
|
# Do not display total count, in order to prevent a `SELECT count(*)`.
|
|
150
|
-
# To do so we must not call
|
|
151
|
-
offset = (collection.current_page - 1) * collection.limit_value
|
|
146
|
+
# To do so we must not call `@collection.total_pages`
|
|
147
|
+
offset = (@collection.current_page - 1) * @collection.limit_value
|
|
152
148
|
I18n.t "active_admin.pagination.multiple_without_total",
|
|
153
149
|
model: entries_name,
|
|
154
150
|
from: offset + 1,
|
|
155
|
-
to: offset + collection_size
|
|
151
|
+
to: offset + collection_size(@collection)
|
|
156
152
|
end
|
|
157
153
|
end
|
|
158
|
-
|
|
159
154
|
end
|
|
160
155
|
end
|
|
161
156
|
end
|