module Avo
def self.asset_manager
def self.asset_manager @manager ||= AssetManager.new end
def self.configuration
def self.configuration @configuration ||= Configuration.new end
def self.configuration=(config)
def self.configuration=(config) @configuration = config end
def self.configure
def self.configure yield configuration end
def self.plugin_manager
def self.plugin_manager @plugin_manager ||= PluginManager.new end
def app_status
def app_status license.valid? end
def avo_dynamic_filters_installed?
def avo_dynamic_filters_installed? defined?(Avo::DynamicFilters).present? end
def boot
def boot @logger = Avo.configuration.logger @field_manager = Avo::Fields::FieldManager.build @cache_store = Avo.configuration.cache_store plugin_manager.boot_plugins Avo.run_load_hooks(:boot, self) eager_load_actions end
def eager_load_actions
def eager_load_actions Rails.autoloaders.main.eager_load_namespace(Avo::Actions) if defined?(Avo::Actions) end
def extra_gems
def extra_gems [:pro, :advanced, :menu, :dynamic_filters, :dashboards, :enterprise, :audits] end
def has_main_menu?
def has_main_menu? return false if Avo.license.lacks_with_trial(:menu_editor) return false if Avo.configuration.main_menu.nil? true end
def has_profile_menu?
def has_profile_menu? return false if Avo.license.lacks_with_trial(:menu_editor) return false if Avo.configuration.profile_menu.nil? true end
def init
def init Avo::Current.error_manager = Avo::ErrorManager.build Avo::Current.resource_manager = Avo::Resources::ResourceManager.build Avo::Current.tool_manager = Avo::Tools::ToolManager.build Avo.run_load_hooks(:init, self) end
def main_menu
def main_menu return unless Avo.plugin_manager.installed?("avo-menu") # Return empty menu if the app doesn't have the profile menu configured return Avo::Menu::Builder.new.build unless has_main_menu? Avo::Menu::Builder.parse_menu(&Avo.configuration.main_menu) end
def mount_engines
def mount_engines -> { mount Avo::DynamicFilters::Engine, at: "/avo-dynamic_filters" if defined?(Avo::DynamicFilters::Engine) mount Avo::Dashboards::Engine, at: "/dashboards" if defined?(Avo::Dashboards::Engine) mount Avo::Pro::Engine, at: "/avo-pro" if defined?(Avo::Pro::Engine) } end
def mount_path
def mount_path Avo::Engine.routes.find_script_name({}) end
def profile_menu
def profile_menu return unless Avo.plugin_manager.installed?("avo-menu") # Return empty menu if the app doesn't have the profile menu configured return Avo::Menu::Builder.new.build unless has_profile_menu? Avo::Menu::Builder.parse_menu(&Avo.configuration.profile_menu) end
def root_path(paths: [], query: {}, **args)
def root_path(paths: [], query: {}, **args) Avo::Services::URIService.parse(Avo::Current.view_context.avo.root_url.to_s) .append_paths(paths) .append_query(query) .to_s end