activeadmin 3.1.0 → 4.0.0.beta1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +2 -1
- data/CONTRIBUTING.md +25 -108
- 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 +23 -2
- 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 +2 -43
- data/lib/active_admin/filters/formtastic_addons.rb +1 -1
- 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/filters/select_input.rb +2 -0
- data/lib/active_admin/inputs.rb +0 -3
- data/lib/active_admin/menu.rb +11 -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
- metadata +66 -200
- 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,119 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
module ActiveAdmin
|
3
|
-
module ViewHelpers
|
4
|
-
module DisplayHelper
|
5
|
-
|
6
|
-
DISPLAY_NAME_FALLBACK = -> {
|
7
|
-
klass = self.class
|
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
|
17
|
-
name.present? ? name : to_s
|
18
|
-
}
|
19
|
-
|
20
|
-
def DISPLAY_NAME_FALLBACK.inspect
|
21
|
-
"DISPLAY_NAME_FALLBACK"
|
22
|
-
end
|
23
|
-
|
24
|
-
# Attempts to call any known display name methods on the resource.
|
25
|
-
# See the setting in `application.rb` for the list of methods and their priority.
|
26
|
-
def display_name(resource)
|
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
|
35
|
-
end
|
36
|
-
|
37
|
-
# Looks up and caches the first available display name method.
|
38
|
-
# To prevent conflicts, we exclude any methods that happen to be associations.
|
39
|
-
# If no methods are available and we're about to use the Kernel's `to_s`, provide our own.
|
40
|
-
def display_name_method_for(resource)
|
41
|
-
@@display_name_methods_cache ||= {}
|
42
|
-
@@display_name_methods_cache[resource.class] ||= begin
|
43
|
-
methods = active_admin_application.display_name_methods - association_methods_for(resource)
|
44
|
-
method = methods.detect { |method| resource.respond_to? method }
|
45
|
-
|
46
|
-
if method != :to_s || resource.method(method).source_location
|
47
|
-
method
|
48
|
-
else
|
49
|
-
DISPLAY_NAME_FALLBACK
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
def association_methods_for(resource)
|
55
|
-
return [] unless resource.class.respond_to? :reflect_on_all_associations
|
56
|
-
resource.class.reflect_on_all_associations.map(&:name)
|
57
|
-
end
|
58
|
-
|
59
|
-
def format_attribute(resource, attr)
|
60
|
-
value = find_value resource, attr
|
61
|
-
|
62
|
-
if value.is_a?(Arbre::Element)
|
63
|
-
value
|
64
|
-
elsif boolean_attr?(resource, attr, value)
|
65
|
-
Arbre::Context.new { status_tag value }
|
66
|
-
else
|
67
|
-
pretty_format value
|
68
|
-
end
|
69
|
-
end
|
70
|
-
|
71
|
-
def find_value(resource, attr)
|
72
|
-
if attr.is_a? Proc
|
73
|
-
attr.call resource
|
74
|
-
elsif resource.respond_to? attr
|
75
|
-
resource.public_send attr
|
76
|
-
elsif resource.respond_to? :[]
|
77
|
-
resource[attr]
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
|
-
# Attempts to create a human-readable string for any object
|
82
|
-
def pretty_format(object)
|
83
|
-
case object
|
84
|
-
when String, Numeric, Symbol, Arbre::Element
|
85
|
-
object.to_s
|
86
|
-
when Date, Time
|
87
|
-
I18n.localize object, format: active_admin_application.localize_format
|
88
|
-
when Array
|
89
|
-
format_collection(object)
|
90
|
-
else
|
91
|
-
if defined?(::ActiveRecord) && object.is_a?(ActiveRecord::Base) ||
|
92
|
-
defined?(::Mongoid) && object.class.include?(Mongoid::Document)
|
93
|
-
auto_link object
|
94
|
-
elsif defined?(::ActiveRecord) && object.is_a?(ActiveRecord::Relation)
|
95
|
-
format_collection(object)
|
96
|
-
else
|
97
|
-
display_name object
|
98
|
-
end
|
99
|
-
end
|
100
|
-
end
|
101
|
-
|
102
|
-
def format_collection(collection)
|
103
|
-
safe_join(collection.map { |item| pretty_format(item) }, ", ")
|
104
|
-
end
|
105
|
-
|
106
|
-
def boolean_attr?(resource, attr, value)
|
107
|
-
case value
|
108
|
-
when TrueClass, FalseClass
|
109
|
-
true
|
110
|
-
else
|
111
|
-
if resource.class.respond_to? :columns_hash
|
112
|
-
column = resource.class.columns_hash[attr.to_s] and column.type == :boolean
|
113
|
-
end
|
114
|
-
end
|
115
|
-
end
|
116
|
-
|
117
|
-
end
|
118
|
-
end
|
119
|
-
end
|
@@ -1,60 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
module ActiveAdmin
|
3
|
-
module ViewHelpers
|
4
|
-
module DownloadFormatLinksHelper
|
5
|
-
private
|
6
|
-
|
7
|
-
def build_download_formats(download_links)
|
8
|
-
download_links = instance_exec(&download_links) if download_links.is_a?(Proc)
|
9
|
-
|
10
|
-
if download_links.is_a?(Array) && !download_links.empty?
|
11
|
-
download_links
|
12
|
-
elsif download_links == false
|
13
|
-
[]
|
14
|
-
else
|
15
|
-
self.class.formats
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
def build_download_format_links(formats = self.class.formats)
|
20
|
-
params = request.query_parameters.except :format, :commit
|
21
|
-
div class: "download_links" do
|
22
|
-
span I18n.t("active_admin.download")
|
23
|
-
formats.each do |format|
|
24
|
-
a format.upcase, href: url_for(params: params, format: format)
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
def self.included base
|
30
|
-
base.extend ClassMethods
|
31
|
-
end
|
32
|
-
|
33
|
-
module ClassMethods
|
34
|
-
|
35
|
-
# A ready only of formats to make available in index/paginated
|
36
|
-
# collection view.
|
37
|
-
# @return [Array]
|
38
|
-
# @see add_format for information on adding custom download link
|
39
|
-
# formats
|
40
|
-
def formats
|
41
|
-
@formats ||= [:csv, :xml, :json]
|
42
|
-
@formats.clone
|
43
|
-
end
|
44
|
-
|
45
|
-
# Adds a mime type to the list of available formats available for data
|
46
|
-
# export. You must register the extension prior to adding it here.
|
47
|
-
# @param [Symbol] format the mime type to add
|
48
|
-
# @return [Array] A copy of the updated formats array.
|
49
|
-
def add_format(format)
|
50
|
-
unless Mime::Type.lookup_by_extension format
|
51
|
-
raise ArgumentError, "Please register the #{format} mime type with `Mime::Type.register`"
|
52
|
-
end
|
53
|
-
@formats << format unless formats.include? format
|
54
|
-
formats
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end
|
@@ -1,51 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
module ActiveAdmin
|
3
|
-
module ViewHelpers
|
4
|
-
module FormHelper
|
5
|
-
|
6
|
-
# Flatten a params Hash to an array of fields.
|
7
|
-
#
|
8
|
-
# @param params [Hash]
|
9
|
-
# @param options [Hash] :namespace and :except
|
10
|
-
#
|
11
|
-
# @return [Array] of [Hash] with one element.
|
12
|
-
#
|
13
|
-
# @example
|
14
|
-
# fields_for_params(scope: "all", users: ["greg"])
|
15
|
-
# => [ {"scope" => "all"} , {"users[]" => "greg"} ]
|
16
|
-
#
|
17
|
-
def fields_for_params(params, options = {})
|
18
|
-
namespace = options[:namespace]
|
19
|
-
except = Array.wrap(options[:except]).map &:to_s
|
20
|
-
|
21
|
-
params.flat_map do |k, v|
|
22
|
-
next if namespace.nil? && %w(controller action commit utf8).include?(k.to_s)
|
23
|
-
next if except.include?(k.to_s)
|
24
|
-
|
25
|
-
if namespace
|
26
|
-
k = "#{namespace}[#{k}]"
|
27
|
-
end
|
28
|
-
|
29
|
-
case v
|
30
|
-
when String
|
31
|
-
{ k => v }
|
32
|
-
when Symbol
|
33
|
-
{ k => v.to_s }
|
34
|
-
when Hash
|
35
|
-
fields_for_params(v, namespace: k)
|
36
|
-
when Array
|
37
|
-
v.map do |v|
|
38
|
-
{ "#{k}[]" => v }
|
39
|
-
end
|
40
|
-
when nil
|
41
|
-
{ k => "" }
|
42
|
-
when TrueClass, FalseClass
|
43
|
-
{ k => v }
|
44
|
-
else
|
45
|
-
raise "I don't know what to do with #{v.class} params: #{v.inspect}"
|
46
|
-
end
|
47
|
-
end.compact
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
@@ -1,15 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
module ActiveAdmin
|
3
|
-
module ViewHelpers
|
4
|
-
module FlashHelper
|
5
|
-
|
6
|
-
# Returns all the flash keys to display in any Active Admin view.
|
7
|
-
# This method removes the :timedout key that Devise uses by default.
|
8
|
-
# Note Rails >= 4.1 normalizes keys to strings automatically.
|
9
|
-
def flash_messages
|
10
|
-
@flash_messages ||= flash.to_hash.with_indifferent_access.except(*active_admin_application.flash_keys_to_except)
|
11
|
-
end
|
12
|
-
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
@@ -1,21 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
module ActiveAdmin
|
3
|
-
module ViewHelpers
|
4
|
-
module FormHelper
|
5
|
-
|
6
|
-
def active_admin_form_for(resource, options = {}, &block)
|
7
|
-
Arbre::Context.new({}, self) do
|
8
|
-
active_admin_form_for resource, options, &block
|
9
|
-
end.content
|
10
|
-
end
|
11
|
-
|
12
|
-
def hidden_field_tags_for(params, options = {})
|
13
|
-
fields_for_params(params.to_unsafe_hash, options).map do |kv|
|
14
|
-
k, v = kv.first
|
15
|
-
hidden_field_tag k, v, id: sanitize_to_id("hidden_active_admin_#{k}")
|
16
|
-
end.join("\n").html_safe
|
17
|
-
end
|
18
|
-
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
@@ -1,17 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
module ActiveAdmin
|
3
|
-
module ViewHelpers
|
4
|
-
module ScopeNameHelper
|
5
|
-
|
6
|
-
def scope_name(scope)
|
7
|
-
case scope.name
|
8
|
-
when Proc then
|
9
|
-
self.instance_exec(&scope.name).to_s
|
10
|
-
else
|
11
|
-
scope.name.to_s
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
@@ -1,18 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
module ActiveAdmin
|
3
|
-
module Views
|
4
|
-
|
5
|
-
class ActionItems < ActiveAdmin::Component
|
6
|
-
|
7
|
-
def build(action_items)
|
8
|
-
action_items.each do |action_item|
|
9
|
-
span class: action_item.html_class do
|
10
|
-
instance_exec(&action_item.block)
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
end
|
16
|
-
|
17
|
-
end
|
18
|
-
end
|
@@ -1,59 +0,0 @@
|
|
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,18 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
module ActiveAdmin
|
3
|
-
module Views
|
4
|
-
# Build a Blank Slate
|
5
|
-
class BlankSlate < ActiveAdmin::Component
|
6
|
-
builder_method :blank_slate
|
7
|
-
|
8
|
-
def default_class_name
|
9
|
-
"blank_slate_container"
|
10
|
-
end
|
11
|
-
|
12
|
-
def build(content)
|
13
|
-
super(span(content.html_safe, class: "blank_slate"))
|
14
|
-
end
|
15
|
-
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
@@ -1,162 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
module ActiveAdmin
|
3
|
-
module Views
|
4
|
-
|
5
|
-
# = Columns Component
|
6
|
-
#
|
7
|
-
# The Columns component allows you draw content into scalable columns. All
|
8
|
-
# you need to do is define the number of columns and the component will
|
9
|
-
# take care of the rest.
|
10
|
-
#
|
11
|
-
# == Simple Columns
|
12
|
-
#
|
13
|
-
# To display columns, use the #columns method. Within the block, call the
|
14
|
-
# #column method to create a new column.
|
15
|
-
#
|
16
|
-
# To create a two column layout:
|
17
|
-
#
|
18
|
-
# columns do
|
19
|
-
# column do
|
20
|
-
# span "Column # 1
|
21
|
-
# end
|
22
|
-
# column do
|
23
|
-
# span "Column # 2
|
24
|
-
# end
|
25
|
-
# end
|
26
|
-
#
|
27
|
-
#
|
28
|
-
# == Multiple Span Columns
|
29
|
-
#
|
30
|
-
# To make a column span multiple, pass the :span option to the column method:
|
31
|
-
#
|
32
|
-
# columns do
|
33
|
-
# column span: 2 do
|
34
|
-
# span "Column # 1
|
35
|
-
# end
|
36
|
-
# column do
|
37
|
-
# span "Column # 2
|
38
|
-
# end
|
39
|
-
# end
|
40
|
-
#
|
41
|
-
# By default, each column spans 1 column. So the above layout would have 2 columns,
|
42
|
-
# the first being 2 time bigger than the second.
|
43
|
-
#
|
44
|
-
#
|
45
|
-
# == Max and Min Column Sizes
|
46
|
-
#
|
47
|
-
# Active Admin is a fluid width layout, which means that columns are all defined
|
48
|
-
# using percentages. Sometimes this can cause issues if you don't want a column
|
49
|
-
# to shrink or expand past a certain point.
|
50
|
-
#
|
51
|
-
# To overcome this, columns include a :max_width and :min_width option.
|
52
|
-
#
|
53
|
-
# columns do
|
54
|
-
# column max_width: "200px", min_width: "100px" do
|
55
|
-
# span "Column # 1
|
56
|
-
# end
|
57
|
-
# column do
|
58
|
-
# span "Column # 2
|
59
|
-
# end
|
60
|
-
# end
|
61
|
-
#
|
62
|
-
# Now the first column will not grow bigger than 200px and will not shrink smaller
|
63
|
-
# than 100px.
|
64
|
-
class Columns < ActiveAdmin::Component
|
65
|
-
builder_method :columns
|
66
|
-
|
67
|
-
# For documentation, please take a look at Column#build
|
68
|
-
def column(*args, &block)
|
69
|
-
insert_tag Column, *args, &block
|
70
|
-
end
|
71
|
-
|
72
|
-
# Override add child to set widths
|
73
|
-
def add_child(*)
|
74
|
-
super
|
75
|
-
calculate_columns!
|
76
|
-
end
|
77
|
-
|
78
|
-
protected
|
79
|
-
|
80
|
-
# Override the closing tag to include a clear
|
81
|
-
def closing_tag
|
82
|
-
"<div style=\"clear:both;\"></div>" + super
|
83
|
-
end
|
84
|
-
|
85
|
-
def margin_size
|
86
|
-
2
|
87
|
-
end
|
88
|
-
|
89
|
-
# Calculate our columns sizes and margins
|
90
|
-
def calculate_columns!
|
91
|
-
span_count = columns_span_count
|
92
|
-
columns_count = children.size
|
93
|
-
|
94
|
-
all_margins_width = margin_size * (span_count - 1)
|
95
|
-
column_width = (100.00 - all_margins_width) / span_count
|
96
|
-
|
97
|
-
columns.each_with_index do |column, i|
|
98
|
-
is_last_column = i == (columns_count - 1)
|
99
|
-
column.set_column_styles(column_width, margin_size, is_last_column)
|
100
|
-
end
|
101
|
-
end
|
102
|
-
|
103
|
-
def columns_span_count
|
104
|
-
count = 0
|
105
|
-
columns.each do |column|
|
106
|
-
count += column.span_size
|
107
|
-
end
|
108
|
-
|
109
|
-
count
|
110
|
-
end
|
111
|
-
|
112
|
-
def columns
|
113
|
-
children.select { |child| child.is_a?(Column) }
|
114
|
-
end
|
115
|
-
end
|
116
|
-
|
117
|
-
class Column < ActiveAdmin::Component
|
118
|
-
|
119
|
-
attr_accessor :span_size, :max_width, :min_width
|
120
|
-
|
121
|
-
# @param [Hash] options An options hash for the column
|
122
|
-
#
|
123
|
-
# @option options [Integer] :span The columns this column should span
|
124
|
-
def build(options = {})
|
125
|
-
options = options.dup
|
126
|
-
@span_size = options.delete(:span) || 1
|
127
|
-
@max_width = options.delete(:max_width)
|
128
|
-
@min_width = options.delete(:min_width)
|
129
|
-
|
130
|
-
super(options)
|
131
|
-
end
|
132
|
-
|
133
|
-
def set_column_styles(column_width, margin_width, is_last_column = false)
|
134
|
-
column_with_span_width = (span_size * column_width) + ((span_size - 1) * margin_width)
|
135
|
-
|
136
|
-
styles = []
|
137
|
-
|
138
|
-
styles << "width: #{column_with_span_width}%;"
|
139
|
-
|
140
|
-
if max_width
|
141
|
-
styles << "max-width: #{safe_width(max_width)};"
|
142
|
-
end
|
143
|
-
|
144
|
-
if min_width
|
145
|
-
styles << "min-width: #{safe_width(min_width)};"
|
146
|
-
end
|
147
|
-
|
148
|
-
styles << "margin-right: #{margin_width}%;" unless is_last_column
|
149
|
-
|
150
|
-
set_attribute :style, styles.join(" ")
|
151
|
-
end
|
152
|
-
|
153
|
-
private
|
154
|
-
|
155
|
-
# Converts values without a '%' or 'px' suffix to a pixel value
|
156
|
-
def safe_width(width)
|
157
|
-
width.to_s.gsub(/\A(\d+)\z/, '\1px')
|
158
|
-
end
|
159
|
-
|
160
|
-
end
|
161
|
-
end
|
162
|
-
end
|
@@ -1,69 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
module ActiveAdmin
|
3
|
-
module Views
|
4
|
-
|
5
|
-
# Action List - A button with a drop down menu of links
|
6
|
-
#
|
7
|
-
# Creating a new action list:
|
8
|
-
#
|
9
|
-
# dropdown_menu "Administration" do
|
10
|
-
# item "Edit Details", edit_details_path
|
11
|
-
# item "Edit My Account", edit_my_account_path
|
12
|
-
# end
|
13
|
-
#
|
14
|
-
# This will create a button with the label "Administration" and
|
15
|
-
# a drop down once clicked with 2 options.
|
16
|
-
#
|
17
|
-
class DropdownMenu < ActiveAdmin::Component
|
18
|
-
builder_method :dropdown_menu
|
19
|
-
|
20
|
-
# Build a new action list
|
21
|
-
#
|
22
|
-
# @param [String] name The name to display in the button
|
23
|
-
#
|
24
|
-
# @param [Hash] options A set of options that get passed along to
|
25
|
-
# to the parent dom element.
|
26
|
-
def build(name, options = {})
|
27
|
-
options = options.dup
|
28
|
-
|
29
|
-
# Easily set options for the button or menu
|
30
|
-
button_options = options.delete(:button) || {}
|
31
|
-
menu_options = options.delete(:menu) || {}
|
32
|
-
|
33
|
-
@button = build_button(name, button_options)
|
34
|
-
@menu = build_menu(menu_options)
|
35
|
-
|
36
|
-
super(options)
|
37
|
-
end
|
38
|
-
|
39
|
-
def item(*args, **kwargs)
|
40
|
-
within @menu do
|
41
|
-
li link_to(*args, **kwargs)
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
private
|
46
|
-
|
47
|
-
def build_button(name, button_options)
|
48
|
-
button_options[:class] = "#{button_options[:class]} dropdown_menu_button"
|
49
|
-
button_options[:href] = "#"
|
50
|
-
|
51
|
-
a name, button_options
|
52
|
-
end
|
53
|
-
|
54
|
-
def build_menu(options)
|
55
|
-
options[:class] = "#{options[:class]} dropdown_menu_list"
|
56
|
-
|
57
|
-
menu_list = nil
|
58
|
-
|
59
|
-
div class: "dropdown_menu_list_wrapper" do
|
60
|
-
menu_list = ul(options)
|
61
|
-
end
|
62
|
-
|
63
|
-
menu_list
|
64
|
-
end
|
65
|
-
|
66
|
-
end
|
67
|
-
|
68
|
-
end
|
69
|
-
end
|
@@ -1,33 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
module ActiveAdmin
|
3
|
-
module Views
|
4
|
-
|
5
|
-
# Renders an ActiveAdmin::Menu as a set of unordered list items.
|
6
|
-
#
|
7
|
-
# This component takes cares of deciding which items should be
|
8
|
-
# displayed given the current context and renders them appropriately.
|
9
|
-
#
|
10
|
-
# The entire component is rendered within one ul element.
|
11
|
-
class Menu < Component
|
12
|
-
attr_reader :menu
|
13
|
-
builder_method :menu
|
14
|
-
|
15
|
-
# @param [ActiveAdmin::Menu] menu the Menu to render
|
16
|
-
# @param [Hash] options the options as passed to the underlying ul element.
|
17
|
-
#
|
18
|
-
def build(menu, options = {})
|
19
|
-
@menu = menu
|
20
|
-
super(options)
|
21
|
-
|
22
|
-
menu.items.each do |item|
|
23
|
-
menu_item(item) if helpers.render_in_context self, item.should_display
|
24
|
-
end
|
25
|
-
children.sort!
|
26
|
-
end
|
27
|
-
|
28
|
-
def tag_name
|
29
|
-
"ul"
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|