avo 2.45.0 → 3.0.2
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of avo might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Gemfile +28 -26
- data/Gemfile.lock +231 -161
- data/README.md +19 -27
- data/Rakefile +2 -0
- data/app/assets/stylesheets/avo.base.css +1 -1
- data/app/assets/svgs/font.svg +1 -0
- data/app/assets/svgs/triangle-up.svg +1 -0
- data/app/components/avo/actions_component.html.erb +19 -5
- data/app/components/avo/actions_component.rb +39 -19
- data/app/components/avo/asset_manager/javascript_component.html.erb +3 -0
- data/app/components/avo/asset_manager/javascript_component.rb +13 -0
- data/app/components/avo/asset_manager/stylesheet_component.html.erb +3 -0
- data/app/components/avo/asset_manager/stylesheet_component.rb +13 -0
- data/app/components/avo/base_component.rb +15 -12
- data/app/components/avo/button_component.rb +20 -3
- data/app/components/avo/empty_state_component.rb +1 -1
- data/app/components/avo/field_wrapper_component.html.erb +1 -1
- data/app/components/avo/field_wrapper_component.rb +9 -15
- data/app/components/avo/fields/area_field/edit_component.html.erb +2 -2
- data/app/components/avo/fields/belongs_to_field/edit_component.html.erb +75 -79
- data/app/components/avo/fields/belongs_to_field/edit_component.rb +7 -7
- data/app/components/avo/fields/belongs_to_field/index_component.html.erb +1 -1
- data/app/components/avo/fields/belongs_to_field/show_component.rb +2 -2
- data/app/components/avo/fields/boolean_field/edit_component.html.erb +1 -1
- data/app/components/avo/fields/boolean_field/index_component.html.erb +1 -1
- data/app/components/avo/fields/boolean_group_field/edit_component.html.erb +3 -3
- data/app/components/avo/fields/common/badge_viewer_component.rb +1 -1
- data/app/components/avo/fields/common/boolean_check_component.html.erb +1 -12
- data/app/components/avo/fields/common/boolean_check_component.rb +2 -1
- data/app/components/avo/fields/common/boolean_group_component.html.erb +2 -2
- data/app/components/avo/fields/common/files/view_type/grid_item_component.rb +2 -2
- data/app/components/avo/fields/common/gravatar_viewer_component.html.erb +1 -1
- data/app/components/avo/fields/common/gravatar_viewer_component.rb +2 -2
- data/app/components/avo/fields/common/heading_component.html.erb +3 -8
- data/app/components/avo/fields/common/heading_component.rb +1 -3
- data/app/components/avo/fields/common/key_value_component.html.erb +2 -2
- data/app/components/avo/fields/common/key_value_component.rb +2 -2
- data/app/components/avo/fields/common/progress_bar_component.rb +3 -9
- data/app/components/avo/fields/common/status_viewer_component.html.erb +3 -0
- data/app/components/avo/fields/edit_component.rb +2 -2
- data/app/components/avo/fields/external_image_field/index_component.html.erb +1 -1
- data/app/components/avo/fields/file_field/index_component.html.erb +2 -2
- data/app/components/avo/fields/gravatar_field/index_component.html.erb +1 -1
- data/app/components/avo/fields/has_one_field/index_component.html.erb +1 -1
- data/app/components/avo/fields/has_one_field/show_component.html.erb +3 -2
- data/app/components/avo/fields/has_one_field/show_component.rb +2 -2
- data/app/components/avo/fields/heading_field/edit_component.html.erb +1 -1
- data/app/components/avo/fields/heading_field/show_component.html.erb +1 -1
- data/app/components/avo/fields/id_field/index_component.html.erb +1 -1
- data/app/components/avo/fields/index_component.rb +6 -6
- data/app/components/avo/fields/location_field/edit_component.html.erb +12 -10
- data/app/components/avo/fields/preview_field/index_component.html.erb +10 -0
- data/app/components/avo/fields/preview_field/index_component.rb +4 -0
- data/app/components/avo/fields/select_field/edit_component.html.erb +1 -1
- data/app/components/avo/fields/show_component.rb +5 -2
- data/app/components/avo/fields/text_field/index_component.html.erb +1 -1
- data/app/components/avo/fields/trix_field/edit_component.html.erb +2 -2
- data/app/components/avo/fields/trix_field/edit_component.rb +1 -1
- data/app/components/avo/fields/trix_field/show_component.html.erb +1 -1
- data/app/components/avo/filters_component.html.erb +9 -3
- data/app/components/avo/filters_component.rb +4 -4
- data/app/components/avo/index/field_wrapper_component.rb +1 -13
- data/app/components/avo/index/grid_item_component.html.erb +13 -36
- data/app/components/avo/index/grid_item_component.rb +43 -16
- data/app/components/avo/index/resource_controls_component.html.erb +3 -81
- data/app/components/avo/index/resource_controls_component.rb +125 -18
- data/app/components/avo/index/resource_grid_component.html.erb +5 -3
- data/app/components/avo/index/resource_grid_component.rb +5 -2
- data/app/components/avo/index/resource_map_component.html.erb +1 -1
- data/app/components/avo/index/resource_map_component.rb +3 -3
- data/app/components/avo/index/resource_table_component.html.erb +3 -2
- data/app/components/avo/index/resource_table_component.rb +8 -7
- data/app/components/avo/index/table_row_component.html.erb +9 -5
- data/app/components/avo/index/table_row_component.rb +3 -2
- data/app/components/avo/items/panel_component.html.erb +25 -0
- data/app/components/avo/items/panel_component.rb +43 -0
- data/app/components/avo/items/switcher_component.html.erb +17 -0
- data/app/components/avo/items/switcher_component.rb +79 -0
- data/app/components/avo/items/visible_items_component.html.erb +10 -0
- data/app/components/avo/items/visible_items_component.rb +11 -0
- data/app/components/avo/modal_component.html.erb +3 -4
- data/app/components/avo/paginator_component.html.erb +1 -1
- data/app/components/avo/paginator_component.rb +6 -6
- data/app/components/avo/panel_component.html.erb +7 -5
- data/app/components/avo/referrer_params_component.html.erb +1 -1
- data/app/components/avo/resource_component.rb +205 -26
- data/app/components/avo/resource_sidebar_component.html.erb +15 -18
- data/app/components/avo/resource_sidebar_component.rb +5 -3
- data/app/components/avo/sidebar/link_component.rb +1 -1
- data/app/components/avo/sidebar_component.html.erb +10 -3
- data/app/components/avo/sidebar_component.rb +5 -3
- data/app/components/avo/sidebar_profile_component.html.erb +18 -12
- data/app/components/avo/tab_group_component.html.erb +14 -8
- data/app/components/avo/tab_group_component.rb +1 -6
- data/app/components/avo/tab_switcher_component.html.erb +17 -40
- data/app/components/avo/tab_switcher_component.rb +6 -41
- data/app/components/avo/views/resource_edit_component.html.erb +23 -86
- data/app/components/avo/views/resource_edit_component.rb +20 -19
- data/app/components/avo/views/resource_index_component.html.erb +42 -47
- data/app/components/avo/views/resource_index_component.rb +76 -13
- data/app/components/avo/views/resource_show_component.html.erb +16 -177
- data/app/components/avo/views/resource_show_component.rb +16 -10
- data/app/controllers/avo/actions_controller.rb +29 -31
- data/app/controllers/avo/application_controller.rb +119 -180
- data/app/controllers/avo/associations_controller.rb +34 -43
- data/app/controllers/avo/attachments_controller.rb +4 -4
- data/app/controllers/avo/base_controller.rb +139 -91
- data/app/controllers/avo/debug_controller.rb +17 -5
- data/app/controllers/avo/home_controller.rb +1 -1
- data/app/controllers/avo/search_controller.rb +56 -50
- data/app/controllers/concerns/avo/initializes_avo.rb +22 -0
- data/app/helpers/avo/application_helper.rb +18 -8
- data/app/helpers/avo/resources_helper.rb +1 -1
- data/app/helpers/avo/url_helpers.rb +28 -12
- data/app/javascript/avo.base.js +1 -0
- data/app/javascript/js/controllers/action_controller.js +5 -3
- data/app/javascript/js/controllers/actions_overflow_controller.js +62 -0
- data/app/javascript/js/controllers/fields/reload_belongs_to_field_controller.js +7 -7
- data/app/javascript/js/controllers/filter_controller.js +1 -1
- data/app/javascript/js/controllers/input_autofocus_controller.js +12 -0
- data/app/javascript/js/controllers/preview_controller.js +24 -0
- data/app/javascript/js/controllers/search_controller.js +4 -2
- data/app/javascript/js/controllers/self_destroy_controller.js +7 -0
- data/app/javascript/js/controllers/toggle_controller.js +48 -0
- data/app/javascript/js/controllers.js +11 -5
- data/app/javascript/js/custom-stream-actions.js +15 -0
- data/app/views/avo/actions/show.html.erb +9 -5
- data/app/views/avo/associations/new.html.erb +2 -2
- data/app/views/avo/base/_new_via_belongs_to.html.erb +1 -1
- data/app/views/avo/base/close_modal_and_reload_field.turbo_stream.erb +3 -3
- data/app/views/avo/base/create_fail_action.turbo_stream.erb +2 -2
- data/app/views/avo/base/edit.html.erb +1 -1
- data/app/views/avo/base/index.html.erb +4 -3
- data/app/views/avo/base/new.html.erb +2 -1
- data/app/views/avo/base/preview.html.erb +19 -0
- data/app/views/avo/base/show.html.erb +2 -2
- data/app/views/avo/debug/_valid_indicator.html.erb +9 -0
- data/app/views/avo/debug/report.html.erb +32 -17
- data/app/views/avo/debug/{index.html.erb → status.html.erb} +31 -14
- data/app/views/avo/partials/_custom_tools_alert.html.erb +2 -2
- data/app/views/avo/partials/_footer.html.erb +1 -1
- data/app/views/avo/partials/_javascript.html.erb +5 -0
- data/app/views/avo/partials/_logo.html.erb +1 -1
- data/app/views/avo/partials/_navbar.html.erb +3 -5
- data/app/views/avo/partials/_resource_search.html.erb +1 -0
- data/app/views/avo/partials/_table_header.html.erb +5 -11
- data/app/views/layouts/avo/application.html.erb +5 -4
- data/avo.gemspec +10 -8
- data/bin/dev +3 -1
- data/bin/prod +0 -0
- data/config/master.key +1 -0
- data/config/routes.rb +7 -10
- data/db/factories.rb +6 -0
- data/lib/avo/asset_manager.rb +30 -0
- data/lib/avo/base_action.rb +82 -66
- data/lib/avo/base_resource.rb +285 -225
- data/lib/avo/base_resource_tool.rb +9 -16
- data/lib/avo/concerns/borrow_items_holder.rb +35 -0
- data/lib/avo/concerns/breadcrumbs.rb +2 -2
- data/lib/avo/concerns/{can_replace_fields.rb → can_replace_items.rb} +5 -9
- data/lib/avo/concerns/filters_session_handler.rb +7 -5
- data/lib/avo/concerns/has_controls.rb +37 -0
- data/lib/avo/concerns/has_description.rb +23 -0
- data/lib/avo/concerns/has_helpers.rb +18 -0
- data/lib/avo/concerns/has_item_type.rb +42 -0
- data/lib/avo/concerns/has_items.rb +339 -0
- data/lib/avo/concerns/hydration.rb +17 -0
- data/lib/avo/concerns/is_resource_item.rb +16 -36
- data/lib/avo/concerns/is_visible.rb +15 -0
- data/lib/avo/concerns/model_class_constantized.rb +0 -2
- data/lib/avo/concerns/visible_in_different_views.rb +132 -0
- data/lib/avo/concerns/visible_items.rb +7 -38
- data/lib/avo/configuration/branding.rb +0 -12
- data/lib/avo/configuration.rb +28 -11
- data/lib/avo/current.rb +39 -0
- data/lib/avo/dsl/field_parser.rb +3 -3
- data/lib/avo/dynamic_router.rb +18 -3
- data/lib/avo/engine.rb +35 -30
- data/lib/avo/error_manager.rb +25 -0
- data/lib/avo/execution_context.rb +14 -15
- data/lib/avo/fields/base_field.rb +84 -121
- data/lib/avo/fields/belongs_to_field.rb +19 -23
- data/lib/avo/fields/concerns/file_authorization.rb +2 -2
- data/lib/avo/fields/concerns/handles_field_args.rb +49 -0
- data/lib/avo/fields/concerns/has_default.rb +1 -5
- data/lib/avo/fields/concerns/has_field_name.rb +22 -0
- data/lib/avo/fields/concerns/has_html_attributes.rb +112 -0
- data/lib/avo/fields/concerns/is_disabled.rb +1 -5
- data/lib/avo/fields/concerns/is_readonly.rb +1 -5
- data/lib/avo/fields/concerns/is_required.rb +5 -7
- data/lib/avo/fields/concerns/is_searchable.rb +15 -0
- data/lib/avo/fields/concerns/use_resource.rb +5 -1
- data/lib/avo/fields/concerns/use_view_components.rb +45 -0
- data/lib/avo/fields/country_field.rb +4 -0
- data/lib/avo/fields/date_time_field.rb +1 -5
- data/lib/avo/fields/external_image_field.rb +2 -2
- data/lib/avo/fields/field_manager.rb +55 -0
- data/lib/avo/fields/file_field.rb +2 -2
- data/lib/avo/fields/gravatar_field.rb +2 -2
- data/lib/avo/fields/has_and_belongs_to_many_field.rb +1 -2
- data/lib/avo/fields/has_base_field.rb +21 -17
- data/lib/avo/fields/has_many_field.rb +5 -2
- data/lib/avo/fields/has_one_field.rb +8 -12
- data/lib/avo/fields/heading_field.rb +9 -14
- data/lib/avo/fields/hidden_field.rb +1 -1
- data/lib/avo/fields/id_field.rb +3 -3
- data/lib/avo/fields/location_field.rb +10 -10
- data/lib/avo/fields/password_field.rb +1 -1
- data/lib/avo/fields/preview_field.rb +14 -0
- data/lib/avo/fields/select_field.rb +12 -8
- data/lib/avo/fields/status_field.rb +7 -1
- data/lib/avo/fields/text_field.rb +2 -2
- data/lib/avo/filters/base_filter.rb +9 -4
- data/lib/avo/html/builder.rb +8 -8
- data/lib/avo/item_grapher.rb +78 -0
- data/lib/avo/licensing/h_q.rb +11 -73
- data/lib/avo/licensing/license.rb +5 -1
- data/lib/avo/licensing/license_manager.rb +1 -1
- data/lib/avo/licensing/pro_license.rb +1 -7
- data/lib/avo/loaders/fields_loader.rb +7 -1
- data/lib/avo/plugin.rb +36 -0
- data/lib/avo/plugin_manager.rb +56 -0
- data/lib/avo/prefixed_test_helpers.rb +20 -0
- data/lib/avo/reloader.rb +3 -0
- data/lib/avo/resources/controls/actions_list.rb +7 -12
- data/lib/avo/resources/controls/attach_button.rb +15 -0
- data/lib/avo/resources/controls/back_button.rb +1 -1
- data/lib/avo/resources/controls/base_control.rb +15 -49
- data/lib/avo/resources/controls/create_button.rb +15 -0
- data/lib/avo/resources/controls/delete_button.rb +5 -1
- data/lib/avo/resources/controls/detach_button.rb +4 -1
- data/lib/avo/resources/controls/edit_button.rb +4 -1
- data/lib/avo/resources/controls/order_controls.rb +8 -0
- data/lib/avo/resources/controls/save_button.rb +13 -0
- data/lib/avo/resources/controls/show_button.rb +15 -0
- data/lib/avo/resources/items/holder.rb +96 -0
- data/lib/avo/resources/items/item_group.rb +44 -0
- data/lib/avo/resources/items/main_panel.rb +12 -0
- data/lib/avo/resources/items/panel.rb +2 -0
- data/lib/avo/resources/items/row.rb +42 -0
- data/lib/avo/resources/items/sidebar.rb +46 -0
- data/lib/avo/resources/items/tab.rb +54 -0
- data/lib/avo/resources/items/tab_group.rb +62 -0
- data/lib/avo/resources/resource_manager.rb +179 -0
- data/lib/avo/services/authorization_service.rb +11 -110
- data/lib/avo/services/debug_service.rb +93 -0
- data/lib/avo/services/encryption_service.rb +8 -12
- data/lib/avo/services/telemetry_service.rb +85 -0
- data/lib/avo/test_helpers.rb +362 -0
- data/lib/avo/tools/tool_manager.rb +30 -0
- data/lib/avo/version.rb +1 -1
- data/lib/avo/view_inquirer.rb +36 -0
- data/lib/avo.rb +109 -24
- data/lib/generators/avo/action_generator.rb +8 -8
- data/lib/generators/avo/card_generator.rb +27 -0
- data/lib/generators/avo/concerns/parent_controller.rb +20 -0
- data/lib/generators/avo/controller_generator.rb +3 -0
- data/lib/generators/avo/eject_generator.rb +180 -15
- data/lib/generators/avo/field_generator.rb +49 -2
- data/lib/generators/avo/filter_generator.rb +8 -8
- data/lib/generators/avo/js/install_generator.rb +2 -2
- data/lib/generators/avo/resource_generator.rb +12 -9
- data/lib/generators/avo/scope_generator.rb +15 -0
- data/lib/generators/avo/tailwindcss/install_generator.rb +70 -26
- data/lib/generators/avo/templates/action.tt +8 -6
- data/lib/generators/avo/templates/cards/chartkick_card.tt +1 -1
- data/lib/generators/avo/templates/cards/chartkick_card_sample.tt +1 -1
- data/lib/generators/avo/templates/cards/metric_card.tt +1 -1
- data/lib/generators/avo/templates/cards/metric_card_sample.tt +1 -1
- data/lib/generators/avo/templates/cards/partial_card.tt +1 -1
- data/lib/generators/avo/templates/cards/partial_card_sample.tt +1 -1
- data/lib/generators/avo/templates/dashboards/dashboard.tt +5 -3
- data/lib/generators/avo/templates/field/%singular_name%_field.rb.tt +1 -1
- data/lib/generators/avo/templates/filters/boolean_filter.tt +1 -1
- data/lib/generators/avo/templates/filters/multiple_select_filter.tt +1 -1
- data/lib/generators/avo/templates/filters/select_filter.tt +1 -1
- data/lib/generators/avo/templates/filters/text_filter.tt +1 -1
- data/lib/generators/avo/templates/initializer/avo.tt +7 -3
- data/lib/generators/avo/templates/locales/avo.ar.yml +2 -1
- data/lib/generators/avo/templates/locales/avo.en.yml +4 -3
- data/lib/generators/avo/templates/locales/avo.es.yml +1 -0
- data/lib/generators/avo/templates/locales/avo.fr.yml +1 -0
- data/lib/generators/avo/templates/locales/avo.nb.yml +1 -0
- data/lib/generators/avo/templates/locales/avo.nn.yml +1 -0
- data/lib/generators/avo/templates/locales/avo.pt-BR.yml +1 -0
- data/lib/generators/avo/templates/locales/avo.pt.yml +1 -0
- data/lib/generators/avo/templates/locales/avo.ro.yml +6 -5
- data/lib/generators/avo/templates/locales/avo.tr.yml +1 -0
- data/lib/generators/avo/templates/resource/controller.tt +1 -1
- data/lib/generators/avo/templates/resource/resource.tt +7 -7
- data/lib/generators/avo/templates/resource_tools/partial.tt +2 -2
- data/lib/generators/avo/templates/resource_tools/resource_tool.tt +1 -1
- data/lib/generators/avo/templates/scope.tt +6 -0
- data/lib/generators/avo/templates/tailwindcss/Procfile.dev +1 -1
- data/lib/generators/avo/templates/tailwindcss/avo.tailwind.css +5 -3
- data/lib/generators/avo/templates/tailwindcss/tailwind.config.js +11 -0
- data/lib/tasks/avo_tasks.rake +72 -4
- data/public/avo-assets/avo.base.css +1893 -1187
- data/public/avo-assets/avo.base.js +217 -305
- data/public/avo-assets/avo.base.js.map +3 -3
- data/public/avo-assets/avo.css +9744 -0
- data/public/avo-assets/avo.js +513 -0
- data/public/avo-assets/avo.js.map +7 -0
- data/tailwind.custom.js +47 -0
- data/tailwind.preset.js +152 -0
- metadata +104 -113
- data/app/components/avo/card_component.html.erb +0 -46
- data/app/components/avo/card_component.rb +0 -25
- data/app/components/avo/dashboards/divider_component.html.erb +0 -9
- data/app/components/avo/dashboards/divider_component.rb +0 -19
- data/app/components/avo/fields/belongs_to_field/autocomplete_component.html.erb +0 -47
- data/app/components/avo/fields/belongs_to_field/autocomplete_component.rb +0 -95
- data/app/components/avo/fields/tags_field/edit_component.html.erb +0 -35
- data/app/components/avo/fields/tags_field/edit_component.rb +0 -4
- data/app/components/avo/fields/tags_field/index_component.html.erb +0 -10
- data/app/components/avo/fields/tags_field/index_component.rb +0 -9
- data/app/components/avo/fields/tags_field/show_component.html.erb +0 -7
- data/app/components/avo/fields/tags_field/show_component.rb +0 -5
- data/app/components/avo/fields/tags_field/tag_component.html.erb +0 -9
- data/app/components/avo/fields/tags_field/tag_component.rb +0 -11
- data/app/components/avo/index/ordering/base_component.rb +0 -9
- data/app/components/avo/index/ordering/button_component.html.erb +0 -11
- data/app/components/avo/index/ordering/button_component.rb +0 -23
- data/app/components/avo/index/ordering/buttons_component.html.erb +0 -32
- data/app/components/avo/index/ordering/buttons_component.rb +0 -47
- data/app/components/avo/item_switcher_component.html.erb +0 -27
- data/app/components/avo/item_switcher_component.rb +0 -48
- data/app/components/avo/sidebar/item_switcher_component.html.erb +0 -16
- data/app/components/avo/sidebar/item_switcher_component.rb +0 -15
- data/app/controllers/avo/dashboards/cards_controller.rb +0 -37
- data/app/controllers/avo/dashboards_controller.rb +0 -22
- data/app/controllers/avo/reorder_controller.rb +0 -25
- data/app/javascript/js/controllers/base_controller.js +0 -22
- data/app/javascript/js/controllers/fields/tags_field_controller.js +0 -127
- data/app/javascript/js/controllers/toggle_panel_controller.js +0 -18
- data/app/views/avo/dashboards/cards/_chartkick_card.html.erb +0 -3
- data/app/views/avo/dashboards/cards/_metric_card.html.erb +0 -5
- data/app/views/avo/dashboards/cards/chartkick_missing.html.erb +0 -14
- data/app/views/avo/dashboards/cards/show.html.erb +0 -3
- data/app/views/avo/dashboards/show.html.erb +0 -38
- data/app/views/avo/partials/_global_search.html.erb +0 -19
- data/app/views/avo/sidebar/_license_warnings.html.erb +0 -6
- data/lib/avo/app.rb +0 -237
- data/lib/avo/base_card.rb +0 -161
- data/lib/avo/concerns/fetches_things.rb +0 -150
- data/lib/avo/concerns/handles_field_args.rb +0 -47
- data/lib/avo/concerns/has_editable_controls.rb +0 -34
- data/lib/avo/concerns/has_fields.rb +0 -334
- data/lib/avo/concerns/has_html_attributes.rb +0 -108
- data/lib/avo/concerns/policy_helpers.rb +0 -31
- data/lib/avo/concerns/visible_in_dashboard.rb +0 -31
- data/lib/avo/dashboards/base_dashboard.rb +0 -89
- data/lib/avo/dashboards/base_divider.rb +0 -35
- data/lib/avo/dashboards/chartkick_card.rb +0 -77
- data/lib/avo/dashboards/dashboard_card.rb +0 -6
- data/lib/avo/dashboards/metric_card.rb +0 -9
- data/lib/avo/dashboards/partial_card.rb +0 -7
- data/lib/avo/fields/field_extensions/has_field_name.rb +0 -19
- data/lib/avo/fields/field_extensions/visible_in_different_views.rb +0 -111
- data/lib/avo/fields/tags_field.rb +0 -102
- data/lib/avo/grid_collector.rb +0 -42
- data/lib/avo/hosts/association_scope_host.rb +0 -8
- data/lib/avo/hosts/base_host.rb +0 -25
- data/lib/avo/hosts/card_visibility.rb +0 -20
- data/lib/avo/hosts/dashboard_card.rb +0 -22
- data/lib/avo/hosts/dashboard_visibility.rb +0 -19
- data/lib/avo/hosts/ordering.rb +0 -22
- data/lib/avo/hosts/record_host.rb +0 -7
- data/lib/avo/hosts/resource_record_host.rb +0 -7
- data/lib/avo/hosts/resource_view_record_host.rb +0 -7
- data/lib/avo/hosts/search_scope_host.rb +0 -7
- data/lib/avo/hosts/view_record_host.rb +0 -7
- data/lib/avo/hosts/visibility_host.rb +0 -12
- data/lib/avo/items_holder.rb +0 -96
- data/lib/avo/main_panel.rb +0 -3
- data/lib/avo/menu/base_item.rb +0 -25
- data/lib/avo/menu/builder.rb +0 -82
- data/lib/avo/menu/dashboard.rb +0 -22
- data/lib/avo/menu/group.rb +0 -2
- data/lib/avo/menu/link.rb +0 -6
- data/lib/avo/menu/menu.rb +0 -2
- data/lib/avo/menu/resource.rb +0 -22
- data/lib/avo/menu/section.rb +0 -2
- data/lib/avo/panel.rb +0 -24
- data/lib/avo/panel_builder.rb +0 -25
- data/lib/avo/resources/controls/action.rb +0 -38
- data/lib/avo/resources/controls/execution_context.rb +0 -58
- data/lib/avo/resources/controls/items_holder.rb +0 -19
- data/lib/avo/resources/controls/link_to.rb +0 -27
- data/lib/avo/row.rb +0 -26
- data/lib/avo/row_builder.rb +0 -24
- data/lib/avo/services/authorization_clients/nil_client.rb +0 -37
- data/lib/avo/services/authorization_clients/pundit_client.rb +0 -51
- data/lib/avo/sidebar.rb +0 -30
- data/lib/avo/sidebar_builder.rb +0 -24
- data/lib/avo/tab.rb +0 -72
- data/lib/avo/tab_builder.rb +0 -25
- data/lib/avo/tab_group.rb +0 -42
- data/lib/avo/tab_group_builder.rb +0 -43
- data/lib/avo/tools_manager.rb +0 -11
- data/lib/generators/avo/card/chartkick_generator.rb +0 -18
- data/lib/generators/avo/card/metric_generator.rb +0 -18
- data/lib/generators/avo/card/partial_generator.rb +0 -19
- data/lib/generators/avo/templates/js/avo.custom.js +0 -2
- data/lib/generators/avo/templates/standalone_action.tt +0 -8
- /data/app/assets/stylesheets/css/{tags.css → fields/tags.css} +0 -0
@@ -6,14 +6,14 @@ module Avo
|
|
6
6
|
|
7
7
|
before_action :set_resource_name
|
8
8
|
before_action :set_resource
|
9
|
-
before_action :hydrate_resource
|
10
9
|
before_action :set_applied_filters, only: :index
|
11
|
-
before_action :
|
12
|
-
before_action :
|
10
|
+
before_action :set_record, only: [:show, :edit, :destroy, :update, :preview]
|
11
|
+
before_action :detect_fields
|
12
|
+
before_action :set_record_to_fill
|
13
13
|
before_action :set_edit_title_and_breadcrumbs, only: [:edit, :update]
|
14
|
-
before_action :
|
14
|
+
before_action :fill_record, only: [:create, :update]
|
15
15
|
# Don't run base authorizations for associations
|
16
|
-
before_action :authorize_base_action, if: -> { controller_name != "associations" }
|
16
|
+
before_action :authorize_base_action, except: :preview, if: -> { controller_name != "associations" }
|
17
17
|
before_action :set_pagy_locale, only: :index
|
18
18
|
|
19
19
|
def index
|
@@ -29,19 +29,11 @@ module Avo
|
|
29
29
|
@query = @resource.class.query_scope
|
30
30
|
end
|
31
31
|
|
32
|
-
# Remove default_scope for index view if no parent_resource present
|
33
|
-
if @resource.unscoped_queries_on_index && @parent_resource.blank?
|
34
|
-
@query = @query.unscoped
|
35
|
-
end
|
36
|
-
|
37
32
|
# Eager load the associations
|
38
33
|
if @resource.includes.present?
|
39
34
|
@query = @query.includes(*@resource.includes)
|
40
35
|
end
|
41
36
|
|
42
|
-
# Eager load the active storage attachments
|
43
|
-
@query = eager_load_files(@resource, @query)
|
44
|
-
|
45
37
|
# Sort the items
|
46
38
|
if @index_params[:sort_by].present?
|
47
39
|
unless @index_params[:sort_by].eql? :created_at
|
@@ -52,7 +44,7 @@ module Avo
|
|
52
44
|
field_id = @index_params[:sort_by].to_sym
|
53
45
|
field = @resource.get_field_definitions.find { |field| field.id == field_id }
|
54
46
|
@query = if field&.sortable.is_a?(Proc)
|
55
|
-
field.sortable
|
47
|
+
Avo::ExecutionContext.new(target: field.sortable, query: @query, direction: @index_params[:sort_direction]).handle
|
56
48
|
else
|
57
49
|
@query.order("#{@resource.model_class.table_name}.#{@index_params[:sort_by]} #{@index_params[:sort_direction]}")
|
58
50
|
end
|
@@ -65,40 +57,46 @@ module Avo
|
|
65
57
|
).apply_query request, @query, filter_value
|
66
58
|
end
|
67
59
|
|
60
|
+
safe_call :set_and_apply_scopes
|
61
|
+
safe_call :apply_dynamic_filters
|
68
62
|
apply_pagination
|
69
63
|
|
70
|
-
# Create resources for each
|
71
|
-
@resources = @
|
72
|
-
@resource.hydrate(
|
64
|
+
# Create resources for each record
|
65
|
+
@resources = @records.map do |record|
|
66
|
+
@resource.hydrate(record: record, params: params).dup
|
73
67
|
end
|
68
|
+
|
69
|
+
set_component_for __method__
|
74
70
|
end
|
75
71
|
|
76
72
|
def show
|
77
|
-
@resource.hydrate(
|
73
|
+
@resource.hydrate(record: @record, view: :show, user: _current_user, params: params).detect_fields
|
78
74
|
|
79
75
|
set_actions
|
80
76
|
|
81
77
|
@page_title = @resource.default_panel_name.to_s
|
82
78
|
|
83
79
|
# If we're accessing this resource via another resource add the parent to the breadcrumbs.
|
84
|
-
if params[:via_resource_class].present? && params[:
|
85
|
-
via_resource = Avo
|
86
|
-
|
87
|
-
via_resource.
|
80
|
+
if params[:via_resource_class].present? && params[:via_record_id].present?
|
81
|
+
via_resource = Avo.resource_manager.get_resource(params[:via_resource_class])
|
82
|
+
via_record = via_resource.find_record params[:via_record_id], params: params
|
83
|
+
via_resource = via_resource.new record: via_record
|
88
84
|
|
89
85
|
add_breadcrumb via_resource.plural_name, resources_path(resource: via_resource)
|
90
|
-
add_breadcrumb via_resource.
|
86
|
+
add_breadcrumb via_resource.record_title, resource_path(record: via_record, resource: via_resource)
|
91
87
|
else
|
92
88
|
add_breadcrumb @resource.plural_name.humanize, resources_path(resource: @resource)
|
93
89
|
end
|
94
90
|
|
95
|
-
add_breadcrumb @resource.
|
91
|
+
add_breadcrumb @resource.record_title
|
96
92
|
add_breadcrumb I18n.t("avo.details").upcase_first
|
93
|
+
|
94
|
+
set_component_for __method__
|
97
95
|
end
|
98
96
|
|
99
97
|
def new
|
100
|
-
@
|
101
|
-
@resource = @resource.hydrate(
|
98
|
+
@record = @resource.model_class.new
|
99
|
+
@resource = @resource.hydrate(record: @record, view: :new, user: _current_user)
|
102
100
|
|
103
101
|
# Handle special cases when creating a new record via a belongs_to relationship
|
104
102
|
if params[:via_belongs_to_resource_class].present?
|
@@ -110,50 +108,52 @@ module Avo
|
|
110
108
|
@page_title = @resource.default_panel_name.to_s
|
111
109
|
|
112
110
|
if is_associated_record?
|
113
|
-
via_resource = Avo
|
114
|
-
|
115
|
-
via_resource.
|
111
|
+
via_resource = Avo.resource_manager.get_resource_by_model_class(params[:via_relation_class])
|
112
|
+
via_record = via_resource.find_record params[:via_record_id], params: params
|
113
|
+
via_resource = via_resource.new record: via_record
|
116
114
|
|
117
115
|
add_breadcrumb via_resource.plural_name, resources_path(resource: via_resource)
|
118
|
-
add_breadcrumb via_resource.
|
116
|
+
add_breadcrumb via_resource.record_title, resource_path(record: via_record, resource: via_resource)
|
119
117
|
end
|
120
118
|
|
121
119
|
add_breadcrumb @resource.plural_name.humanize, resources_path(resource: @resource)
|
122
120
|
add_breadcrumb t("avo.new").humanize
|
121
|
+
|
122
|
+
set_component_for __method__, fallback_view: :edit
|
123
123
|
end
|
124
124
|
|
125
125
|
def create
|
126
|
-
#
|
127
|
-
saved =
|
128
|
-
@resource.hydrate(
|
126
|
+
# record gets instantiated and filled in the fill_record method
|
127
|
+
saved = save_record
|
128
|
+
@resource.hydrate(record: @record, view: :new, user: _current_user)
|
129
129
|
|
130
130
|
# This means that the record has been created through another parent record and we need to attach it somehow.
|
131
|
-
if params[:
|
132
|
-
@reflection = @
|
131
|
+
if params[:via_record_id].present? && params[:via_belongs_to_resource_class].nil?
|
132
|
+
@reflection = @record._reflections[params[:via_relation]]
|
133
133
|
# Figure out what kind of association does the record have with the parent record
|
134
134
|
|
135
135
|
# Fills in the required infor for belongs_to and has_many
|
136
136
|
# Get the foreign key and set it to the id we received in the params
|
137
137
|
if @reflection.is_a?(ActiveRecord::Reflection::BelongsToReflection) || @reflection.is_a?(ActiveRecord::Reflection::HasManyReflection)
|
138
|
-
related_resource = Avo
|
139
|
-
related_record = related_resource.find_record params[:
|
138
|
+
related_resource = Avo.resource_manager.get_resource_by_model_class params[:via_relation_class]
|
139
|
+
related_record = related_resource.find_record params[:via_record_id], params: params
|
140
140
|
|
141
|
-
@
|
142
|
-
@
|
141
|
+
@record.send("#{@reflection.foreign_key}=", related_record.id)
|
142
|
+
@record.save
|
143
143
|
end
|
144
144
|
|
145
145
|
# For when working with has_one, has_one_through, has_many_through, has_and_belongs_to_many, polymorphic
|
146
146
|
if @reflection.is_a? ActiveRecord::Reflection::ThroughReflection
|
147
147
|
# find the record
|
148
|
-
via_resource =
|
149
|
-
@related_record = via_resource.find_record params[:
|
150
|
-
association_name = BaseResource.valid_association_name(@
|
148
|
+
via_resource = Avo.resource_manager.get_resource_by_model_class(params[:via_relation_class])
|
149
|
+
@related_record = via_resource.find_record params[:via_record_id], params: params
|
150
|
+
association_name = BaseResource.valid_association_name(@record, params[:via_relation])
|
151
151
|
|
152
152
|
if params[:via_association_type] == "has_one"
|
153
153
|
# On has_one scenarios we should switch the @record and @related_record
|
154
|
-
@related_record.send("#{@reflection.parent_reflection.inverse_of.name}=", @
|
154
|
+
@related_record.send("#{@reflection.parent_reflection.inverse_of.name}=", @record)
|
155
155
|
else
|
156
|
-
@
|
156
|
+
@record.send(association_name) << @related_record
|
157
157
|
end
|
158
158
|
end
|
159
159
|
end
|
@@ -162,6 +162,8 @@ module Avo
|
|
162
162
|
add_breadcrumb t("avo.new").humanize
|
163
163
|
set_actions
|
164
164
|
|
165
|
+
set_component_for :edit
|
166
|
+
|
165
167
|
if saved
|
166
168
|
create_success_action
|
167
169
|
else
|
@@ -171,14 +173,18 @@ module Avo
|
|
171
173
|
|
172
174
|
def edit
|
173
175
|
set_actions
|
176
|
+
|
177
|
+
set_component_for __method__
|
174
178
|
end
|
175
179
|
|
176
180
|
def update
|
177
|
-
#
|
178
|
-
saved =
|
179
|
-
@resource = @resource.hydrate(
|
181
|
+
# record gets instantiated and filled in the fill_record method
|
182
|
+
saved = save_record
|
183
|
+
@resource = @resource.hydrate(record: @record, view: :edit, user: _current_user)
|
180
184
|
set_actions
|
181
185
|
|
186
|
+
set_component_for :edit
|
187
|
+
|
182
188
|
if saved
|
183
189
|
update_success_action
|
184
190
|
else
|
@@ -194,55 +200,46 @@ module Avo
|
|
194
200
|
end
|
195
201
|
end
|
196
202
|
|
197
|
-
def
|
198
|
-
|
199
|
-
|
200
|
-
if direction.present?
|
201
|
-
@resource
|
202
|
-
.hydrate(model: @model, params: params)
|
203
|
-
.ordering_host
|
204
|
-
.order direction
|
205
|
-
end
|
203
|
+
def preview
|
204
|
+
@resource.hydrate(record: @record, view: :show, user: _current_user, params: params)
|
206
205
|
|
207
|
-
|
208
|
-
format.html { redirect_to params[:referrer] || resources_path(resource: @resource) }
|
209
|
-
end
|
206
|
+
render layout: params[:turbo_frame].blank?
|
210
207
|
end
|
211
208
|
|
212
209
|
private
|
213
210
|
|
214
|
-
def
|
211
|
+
def save_record
|
215
212
|
perform_action_and_record_errors do
|
216
|
-
|
213
|
+
save_record_action
|
217
214
|
end
|
218
215
|
end
|
219
216
|
|
220
|
-
def
|
221
|
-
@
|
217
|
+
def save_record_action
|
218
|
+
@record.save!
|
222
219
|
end
|
223
220
|
|
224
221
|
def destroy_model
|
225
222
|
perform_action_and_record_errors do
|
226
|
-
|
223
|
+
destroy_record_action
|
227
224
|
end
|
228
225
|
end
|
229
226
|
|
230
|
-
def
|
231
|
-
@
|
227
|
+
def destroy_record_action
|
228
|
+
@record.destroy!
|
232
229
|
end
|
233
230
|
|
234
231
|
def perform_action_and_record_errors(&block)
|
235
232
|
begin
|
236
233
|
succeeded = block.call
|
237
234
|
rescue => exception
|
238
|
-
# In case there's an error somewhere else than the
|
235
|
+
# In case there's an error somewhere else than the record
|
239
236
|
# Example: When you save a license that should create a user for it and creating that user throws and error.
|
240
237
|
# Example: When you Try to delete a record and has a foreign key constraint.
|
241
238
|
exception_message = exception.message
|
242
239
|
end
|
243
240
|
|
244
|
-
# Add the errors from the
|
245
|
-
@errors = @
|
241
|
+
# Add the errors from the record
|
242
|
+
@errors = @record.errors.full_messages.reject { |error| exception_message.include? error }.unshift exception_message
|
246
243
|
|
247
244
|
succeeded
|
248
245
|
end
|
@@ -300,7 +297,7 @@ module Avo
|
|
300
297
|
@index_params[:per_page] = cookies[:per_page]
|
301
298
|
end
|
302
299
|
|
303
|
-
if @
|
300
|
+
if @parent_record.present?
|
304
301
|
@index_params[:per_page] = Avo.configuration.via_per_page
|
305
302
|
end
|
306
303
|
|
@@ -319,8 +316,20 @@ module Avo
|
|
319
316
|
@index_params[:sort_direction] = params[:sort_direction] || :desc
|
320
317
|
|
321
318
|
# View types
|
322
|
-
|
323
|
-
@index_params[:available_view_types] =
|
319
|
+
available_view_types = @resource.available_view_types
|
320
|
+
@index_params[:available_view_types] = available_view_types
|
321
|
+
|
322
|
+
@index_params[:view_type] = if params[:view_type].present?
|
323
|
+
params[:view_type]
|
324
|
+
elsif available_view_types.size == 1
|
325
|
+
available_view_types.first
|
326
|
+
else
|
327
|
+
@resource.default_view_type || Avo.configuration.default_view_type
|
328
|
+
end
|
329
|
+
|
330
|
+
if available_view_types.exclude? @index_params[:view_type].to_sym
|
331
|
+
raise "View type '#{@index_params[:view_type]}' is unavailable for #{@resource.class}."
|
332
|
+
end
|
324
333
|
end
|
325
334
|
|
326
335
|
def set_filters
|
@@ -338,7 +347,7 @@ module Avo
|
|
338
347
|
@actions = @resource
|
339
348
|
.get_actions
|
340
349
|
.map do |action|
|
341
|
-
action[:class].new(
|
350
|
+
action[:class].new(record: @record, resource: @resource, view: @view, arguments: action[:arguments])
|
342
351
|
end
|
343
352
|
.select do |action|
|
344
353
|
action.visible_in_view(parent_resource: @parent_resource)
|
@@ -392,28 +401,28 @@ module Avo
|
|
392
401
|
end
|
393
402
|
|
394
403
|
def set_edit_title_and_breadcrumbs
|
395
|
-
@resource = @resource.hydrate(
|
404
|
+
@resource = @resource.hydrate(record: @record, view: :edit, user: _current_user)
|
396
405
|
@page_title = @resource.default_panel_name.to_s
|
397
406
|
|
398
407
|
last_crumb_args = {}
|
399
408
|
# If we're accessing this resource via another resource add the parent to the breadcrumbs.
|
400
|
-
if params[:via_resource_class].present? && params[:
|
401
|
-
via_resource = Avo
|
402
|
-
|
403
|
-
via_resource.
|
409
|
+
if params[:via_resource_class].present? && params[:via_record_id].present?
|
410
|
+
via_resource = Avo.resource_manager.get_resource(params[:via_resource_class])
|
411
|
+
via_record = via_resource.find_record params[:via_record_id], params: params
|
412
|
+
via_resource = via_resource.new record: via_record
|
404
413
|
|
405
414
|
add_breadcrumb via_resource.plural_name, resources_path(resource: @resource)
|
406
|
-
add_breadcrumb via_resource.
|
415
|
+
add_breadcrumb via_resource.record_title, resource_path(record: via_record, resource: via_resource)
|
407
416
|
|
408
417
|
last_crumb_args = {
|
409
418
|
via_resource_class: params[:via_resource_class],
|
410
|
-
|
419
|
+
via_record_id: params[:via_record_id]
|
411
420
|
}
|
412
421
|
else
|
413
422
|
add_breadcrumb @resource.plural_name.humanize, resources_path(resource: @resource)
|
414
423
|
end
|
415
424
|
|
416
|
-
add_breadcrumb @resource.
|
425
|
+
add_breadcrumb @resource.record_title, resource_path(record: @resource.record, resource: @resource, **last_crumb_args)
|
417
426
|
add_breadcrumb t("avo.edit").humanize
|
418
427
|
end
|
419
428
|
|
@@ -445,13 +454,18 @@ module Avo
|
|
445
454
|
def after_create_path
|
446
455
|
# If this is an associated record return to the association show page
|
447
456
|
if is_associated_record?
|
448
|
-
parent_resource =
|
449
|
-
|
457
|
+
parent_resource = if params[:via_resource_class].present?
|
458
|
+
Avo.resource_manager.get_resource(params[:via_resource_class])
|
459
|
+
else
|
460
|
+
Avo.resource_manager.get_resource_by_model_class(params[:via_relation_class])
|
461
|
+
end
|
462
|
+
|
463
|
+
association_name = BaseResource.valid_association_name(@record, params[:via_relation])
|
450
464
|
|
451
465
|
return resource_view_path(
|
452
|
-
|
466
|
+
record: @record.send(association_name),
|
453
467
|
resource: parent_resource,
|
454
|
-
resource_id: params[:
|
468
|
+
resource_id: params[:via_record_id]
|
455
469
|
)
|
456
470
|
end
|
457
471
|
|
@@ -487,7 +501,7 @@ module Avo
|
|
487
501
|
|
488
502
|
# Needs a different name, otwherwise, in some places, this can be called instead helpers.resource_view_path
|
489
503
|
def resource_view_response_path
|
490
|
-
helpers.resource_view_path(
|
504
|
+
helpers.resource_view_path(record: @record, resource: @resource)
|
491
505
|
end
|
492
506
|
|
493
507
|
def destroy_success_action
|
@@ -521,15 +535,15 @@ module Avo
|
|
521
535
|
|
522
536
|
if @resource.class.send(action) == :index
|
523
537
|
resources_path(resource: @resource)
|
524
|
-
elsif @resource.class.send(action) == :edit || Avo.configuration.resource_default_view
|
525
|
-
edit_resource_path(resource: @resource,
|
538
|
+
elsif @resource.class.send(action) == :edit || Avo.configuration.resource_default_view.edit?
|
539
|
+
edit_resource_path(resource: @resource, record: @resource.record)
|
526
540
|
else
|
527
|
-
resource_path(
|
541
|
+
resource_path(record: @record, resource: @resource)
|
528
542
|
end
|
529
543
|
end
|
530
544
|
|
531
545
|
def is_associated_record?
|
532
|
-
params[:via_relation_class].present? && params[:
|
546
|
+
params[:via_relation_class].present? && params[:via_record_id].present?
|
533
547
|
end
|
534
548
|
|
535
549
|
# Set pagy locale from params or from avo configuration, if both nil locale = "en"
|
@@ -537,8 +551,42 @@ module Avo
|
|
537
551
|
@pagy_locale = locale.to_s || Avo.configuration.locale || "en"
|
538
552
|
end
|
539
553
|
|
554
|
+
def safe_call(method)
|
555
|
+
send(method) if respond_to?(method, true)
|
556
|
+
end
|
557
|
+
|
558
|
+
def pagy_query
|
559
|
+
@query
|
560
|
+
end
|
561
|
+
|
562
|
+
# Set the view component for the current view
|
563
|
+
# It will try to use the custom component if it's set, otherwise it will use the default one
|
564
|
+
def set_component_for(view, fallback_view: nil)
|
565
|
+
# Fetch the components from the resource
|
566
|
+
components = Avo::ExecutionContext.new(
|
567
|
+
target: @resource.components,
|
568
|
+
resource: @resource,
|
569
|
+
record: @record,
|
570
|
+
view: @view
|
571
|
+
).handle
|
572
|
+
|
573
|
+
# If the component is not set, use the default one
|
574
|
+
if (custom_component = components.dig("resource_#{view}_component".to_sym)).nil?
|
575
|
+
return @component = "Avo::Views::Resource#{(fallback_view || view).to_s.classify}Component".constantize
|
576
|
+
end
|
577
|
+
|
578
|
+
# If the component is set, try to use it
|
579
|
+
@component = custom_component.to_s.safe_constantize
|
580
|
+
|
581
|
+
# If the component is not found, raise an error
|
582
|
+
if @component.nil?
|
583
|
+
raise "The component '#{custom_component}' was not found.\n" \
|
584
|
+
"That component was fetched from 'self.components' option inside '#{@resource.class}' resource."
|
585
|
+
end
|
586
|
+
end
|
587
|
+
|
540
588
|
def apply_pagination
|
541
|
-
@pagy, @
|
589
|
+
@pagy, @records = @resource.apply_pagination(index_params: @index_params, query: pagy_query)
|
542
590
|
end
|
543
591
|
end
|
544
592
|
end
|
@@ -2,7 +2,19 @@ require_dependency "avo/application_controller"
|
|
2
2
|
|
3
3
|
module Avo
|
4
4
|
class DebugController < ApplicationController
|
5
|
-
def
|
5
|
+
def status
|
6
|
+
end
|
7
|
+
|
8
|
+
def send_to_hq
|
9
|
+
url = "#{ENV["HQ_URL"]}/api/v3/debug_requests"
|
10
|
+
timeout = 10 # seconds
|
11
|
+
license_key = Avo::Services::DebugService.debug_report(request)[:hq_payload][:license_key]
|
12
|
+
body = params[:body]
|
13
|
+
body = {license_key: license_key, body: body, payload: Avo::Services::DebugService.debug_report(request).to_json}.to_json
|
14
|
+
|
15
|
+
HTTParty.post url, body: body, headers: {"Content-Type": "application/json"}, timeout: timeout
|
16
|
+
|
17
|
+
render turbo_stream: turbo_stream.replace(:send_to_hq, plain: "Payload sent to Avo HQ.")
|
6
18
|
end
|
7
19
|
|
8
20
|
def report
|
@@ -13,13 +25,13 @@ module Avo
|
|
13
25
|
|
14
26
|
if license.valid?
|
15
27
|
flash[:notice] = "avohq.io responded: \"#{license.id.humanize} license is valid\"."
|
16
|
-
elsif license.response[
|
17
|
-
flash[:error] = "avohq.io responded: \"#{license.response[
|
28
|
+
elsif license.response["reason"].present?
|
29
|
+
flash[:error] = "avohq.io responded: \"#{license.response["reason"]}\"."
|
18
30
|
else
|
19
|
-
flash[:error] = license.response[
|
31
|
+
flash[:error] = license.response["error"]
|
20
32
|
end
|
21
33
|
|
22
|
-
redirect_back fallback_location: avo.
|
34
|
+
redirect_back fallback_location: avo.avo_private_status_path
|
23
35
|
end
|
24
36
|
end
|
25
37
|
end
|
@@ -14,7 +14,7 @@ module Avo
|
|
14
14
|
redirect_to computed_path
|
15
15
|
elsif !Rails.env.development?
|
16
16
|
@page_title = "Get started"
|
17
|
-
resource = Avo
|
17
|
+
resource = Avo.resource_manager.all.min_by { |resource| resource.model_key }
|
18
18
|
redirect_to resources_path(resource: resource)
|
19
19
|
end
|
20
20
|
end
|