Class: Avo::Configuration

Inherits:
Object
  • Object
show all
Includes:
ResourceConfiguration
Defined in:
lib/avo/configuration.rb,
lib/avo/configuration/resource_configuration.rb

Defined Under Namespace

Modules: ResourceConfiguration Classes: Branding

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from ResourceConfiguration

#resource_controls_placement, #resource_controls_placement=

Constructor Details

#initializeConfiguration

Returns a new instance of Configuration.



62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
# File 'lib/avo/configuration.rb', line 62

def initialize
  @root_path = "/avo"
  @app_name = ::Rails.application.class.to_s.split("::").first.underscore.humanize(keep_id_suffix: true)
  @timezone = "UTC"
  @per_page = 24
  @per_page_steps = [12, 24, 48, 72]
  @via_per_page = 8
  @locale = nil
  @currency = "USD"
  @default_view_type = :table
  @license_key = nil
  @current_user = proc {}
  @authenticate = proc {}
  @explicit_authorization = false
  @authorization_methods = {
    index: "index?",
    show: "show?",
    edit: "edit?",
    new: "new?",
    update: "update?",
    create: "create?",
    destroy: "destroy?"
  }
  @id_links_to_resource = false
  @full_width_container = false
  @full_width_index_view = false
  @cache_resources_on_index_view = Avo::PACKED
  @persistence = {
    driver: nil
  }
  @context = proc {}
  @initial_breadcrumbs = proc {
    add_breadcrumb I18n.t("avo.home").humanize, avo.root_path
  }
  @display_breadcrumbs = true
  @hide_layout_when_printing = false
  @home_path = nil
  @search_debounce = 300
  @view_component_path = "app/components"
  @display_license_request_timeout_error = true
  @current_user_resource_name = "user"
  @raise_error_on_missing_policy = false
  @disabled_features = []
  @buttons_on_form_footers = false
  @main_menu = nil
  @profile_menu = nil
  @model_resource_mapping = {}
  @resource_default_view = Avo::ViewInquirer.new("show")
  @authorization_client = :pundit
  @field_wrapper_layout = :inline
  @resources = nil
  @resource_parent_controller = "Avo::ResourcesController"
  @mount_avo_engines = true
  @cache_store = computed_cache_store
  @logger = default_logger
  @turbo = default_turbo
  @default_url_options = []
  @pagination = {}
  @click_row_to_view_record = false
  @alert_dismiss_time = 5000
  @is_admin_method = :is_admin?
  @is_developer_method = :is_developer?
  @search_results_count = 8
  @first_sorting_option = :desc # :desc or :asc
  @associations_lookup_list_limit = 1000
  @exclude_from_status = []
end

Instance Attribute Details

#alert_dismiss_timeObject

Returns the value of attribute alert_dismiss_time.



55
56
57
# File 'lib/avo/configuration.rb', line 55

def alert_dismiss_time
  @alert_dismiss_time
end

#app_nameObject



182
183
184
# File 'lib/avo/configuration.rb', line 182

def app_name
  Avo::ExecutionContext.new(target: @app_name).handle
end

#associations_lookup_list_limitObject

Returns the value of attribute associations_lookup_list_limit.



60
61
62
# File 'lib/avo/configuration.rb', line 60

def associations_lookup_list_limit
  @associations_lookup_list_limit
end

#authenticateObject

Returns the value of attribute authenticate.



24
25
26
# File 'lib/avo/configuration.rb', line 24

def authenticate
  @authenticate
end

#authorization_clientObject

Returns the value of attribute authorization_client.



46
47
48
# File 'lib/avo/configuration.rb', line 46

def authorization_client
  @authorization_client
end

#authorization_methodsObject

Returns the value of attribute authorization_methods.



23
24
25
# File 'lib/avo/configuration.rb', line 23

def authorization_methods
  @authorization_methods
end

#brandingObject



178
179
180
# File 'lib/avo/configuration.rb', line 178

def branding
  Avo::Configuration::Branding.new(**@branding || {})
end

#buttons_on_form_footersObject

Returns the value of attribute buttons_on_form_footers.



41
42
43
# File 'lib/avo/configuration.rb', line 41

def buttons_on_form_footers
  @buttons_on_form_footers
end

#cache_resources_on_index_viewObject

Returns the value of attribute cache_resources_on_index_view.



29
30
31
# File 'lib/avo/configuration.rb', line 29

def cache_resources_on_index_view
  @cache_resources_on_index_view
end

#cache_storeObject



208
209
210
211
212
213
# File 'lib/avo/configuration.rb', line 208

def cache_store
  Avo::ExecutionContext.new(
    target: @cache_store,
    production_rejected_cache_stores: %w[ActiveSupport::Cache::MemoryStore ActiveSupport::Cache::NullStore]
  ).handle
end

#click_row_to_view_recordObject

Returns the value of attribute click_row_to_view_record.



54
55
56
# File 'lib/avo/configuration.rb', line 54

def click_row_to_view_record
  @click_row_to_view_record
end

#contextObject

Returns the value of attribute context.



30
31
32
# File 'lib/avo/configuration.rb', line 30

def context
  @context
end

#currencyObject

Returns the value of attribute currency.



20
21
22
# File 'lib/avo/configuration.rb', line 20

def currency
  @currency
end

#current_userObject

Returns the value of attribute current_user.



25
26
27
# File 'lib/avo/configuration.rb', line 25

def current_user
  @current_user
end

#current_user_resource_nameObject

Returns the value of attribute current_user_resource_name.



38
39
40
# File 'lib/avo/configuration.rb', line 38

def current_user_resource_name
  @current_user_resource_name
end

#default_url_optionsObject

Returns the value of attribute default_url_options.



53
54
55
# File 'lib/avo/configuration.rb', line 53

def default_url_options
  @default_url_options
end

#default_view_typeObject

Returns the value of attribute default_view_type.



21
22
23
# File 'lib/avo/configuration.rb', line 21

def default_view_type
  @default_view_type
end

#disabled_featuresObject



170
171
172
# File 'lib/avo/configuration.rb', line 170

def disabled_features
  Avo::ExecutionContext.new(target: @disabled_features).handle
end

#display_breadcrumbsObject

Returns the value of attribute display_breadcrumbs.



31
32
33
# File 'lib/avo/configuration.rb', line 31

def display_breadcrumbs
  @display_breadcrumbs
end

#display_license_request_timeout_errorObject

Returns the value of attribute display_license_request_timeout_error.



37
38
39
# File 'lib/avo/configuration.rb', line 37

def display_license_request_timeout_error
  @display_license_request_timeout_error
end

#exclude_from_statusObject



258
259
260
# File 'lib/avo/configuration.rb', line 258

def exclude_from_status
  Avo::ExecutionContext.new(target: @exclude_from_status).handle
end

#explicit_authorizationObject



278
279
280
# File 'lib/avo/configuration.rb', line 278

def explicit_authorization
  Avo::ExecutionContext.new(target: @explicit_authorization).handle
end

#field_wrapper_layoutObject

Returns the value of attribute field_wrapper_layout.



47
48
49
# File 'lib/avo/configuration.rb', line 47

def field_wrapper_layout
  @field_wrapper_layout
end

#first_sorting_optionObject

Returns the value of attribute first_sorting_option.



59
60
61
# File 'lib/avo/configuration.rb', line 59

def first_sorting_option
  @first_sorting_option
end

#full_width_containerObject

Returns the value of attribute full_width_container.



27
28
29
# File 'lib/avo/configuration.rb', line 27

def full_width_container
  @full_width_container
end

#full_width_index_viewObject

Returns the value of attribute full_width_index_view.



28
29
30
# File 'lib/avo/configuration.rb', line 28

def full_width_index_view
  @full_width_index_view
end

#hide_layout_when_printingObject

Returns the value of attribute hide_layout_when_printing.



32
33
34
# File 'lib/avo/configuration.rb', line 32

def hide_layout_when_printing
  @hide_layout_when_printing
end

#home_pathObject

Returns the value of attribute home_path.



34
35
36
# File 'lib/avo/configuration.rb', line 34

def home_path
  @home_path
end

Returns the value of attribute id_links_to_resource.



26
27
28
# File 'lib/avo/configuration.rb', line 26

def id_links_to_resource
  @id_links_to_resource
end

#initial_breadcrumbsObject

Returns the value of attribute initial_breadcrumbs.



33
34
35
# File 'lib/avo/configuration.rb', line 33

def initial_breadcrumbs
  @initial_breadcrumbs
end

#is_admin_methodObject

Returns the value of attribute is_admin_method.



56
57
58
# File 'lib/avo/configuration.rb', line 56

def is_admin_method
  @is_admin_method
end

#is_developer_methodObject

Returns the value of attribute is_developer_method.



57
58
59
# File 'lib/avo/configuration.rb', line 57

def is_developer_method
  @is_developer_method
end

#license_keyObject

Returns the value of attribute license_key.



22
23
24
# File 'lib/avo/configuration.rb', line 22

def license_key
  @license_key
end

#localeObject

Returns the value of attribute locale.



19
20
21
# File 'lib/avo/configuration.rb', line 19

def locale
  @locale
end

#loggerObject



235
236
237
# File 'lib/avo/configuration.rb', line 235

def logger
  Avo::ExecutionContext.new(target: @logger).handle
end

Returns the value of attribute main_menu.



42
43
44
# File 'lib/avo/configuration.rb', line 42

def main_menu
  @main_menu
end

#model_resource_mappingObject

Returns the value of attribute model_resource_mapping.



44
45
46
# File 'lib/avo/configuration.rb', line 44

def model_resource_mapping
  @model_resource_mapping
end

#mount_avo_enginesObject

Returns the value of attribute mount_avo_engines.



52
53
54
# File 'lib/avo/configuration.rb', line 52

def mount_avo_engines
  @mount_avo_engines
end

#paginationObject



270
271
272
# File 'lib/avo/configuration.rb', line 270

def pagination
  Avo::ExecutionContext.new(target: @pagination).handle
end

#per_pageObject

Returns the value of attribute per_page.



16
17
18
# File 'lib/avo/configuration.rb', line 16

def per_page
  @per_page
end

#per_page_stepsObject

Returns the value of attribute per_page_steps.



17
18
19
# File 'lib/avo/configuration.rb', line 17

def per_page_steps
  @per_page_steps
end

#persistenceObject



282
283
284
# File 'lib/avo/configuration.rb', line 282

def persistence
  Avo::ExecutionContext.new(target: @persistence).handle
end

#prefix_pathObject

Returns the value of attribute prefix_path.



50
51
52
# File 'lib/avo/configuration.rb', line 50

def prefix_path
  @prefix_path
end

#profile_menuObject

Returns the value of attribute profile_menu.



43
44
45
# File 'lib/avo/configuration.rb', line 43

def profile_menu
  @profile_menu
end

#raise_error_on_missing_policyObject

Returns the value of attribute raise_error_on_missing_policy.



39
40
41
# File 'lib/avo/configuration.rb', line 39

def raise_error_on_missing_policy
  @raise_error_on_missing_policy
end

#resource_default_viewObject

Returns the value of attribute resource_default_view.



45
46
47
# File 'lib/avo/configuration.rb', line 45

def resource_default_view
  @resource_default_view
end

#resource_parent_controllerObject

Returns the value of attribute resource_parent_controller.



51
52
53
# File 'lib/avo/configuration.rb', line 51

def resource_parent_controller
  @resource_parent_controller
end

#resourcesObject

Returns the value of attribute resources.



49
50
51
# File 'lib/avo/configuration.rb', line 49

def resources
  @resources
end

#root_pathObject



164
165
166
167
168
# File 'lib/avo/configuration.rb', line 164

def root_path
  return "" if @root_path === "/"

  @root_path
end

#search_debounceObject

Returns the value of attribute search_debounce.



35
36
37
# File 'lib/avo/configuration.rb', line 35

def search_debounce
  @search_debounce
end

#search_results_countObject

Returns the value of attribute search_results_count.



58
59
60
# File 'lib/avo/configuration.rb', line 58

def search_results_count
  @search_results_count
end

#sign_out_path_nameObject

Returns the value of attribute sign_out_path_name.



48
49
50
# File 'lib/avo/configuration.rb', line 48

def sign_out_path_name
  @sign_out_path_name
end

#timezoneObject

Returns the value of attribute timezone.



15
16
17
# File 'lib/avo/configuration.rb', line 15

def timezone
  @timezone
end

#turboObject



254
255
256
# File 'lib/avo/configuration.rb', line 254

def turbo
  Avo::ExecutionContext.new(target: @turbo).handle
end

#via_per_pageObject

Returns the value of attribute via_per_page.



18
19
20
# File 'lib/avo/configuration.rb', line 18

def via_per_page
  @via_per_page
end

#view_component_pathObject

Returns the value of attribute view_component_path.



36
37
38
# File 'lib/avo/configuration.rb', line 36

def view_component_path
  @view_component_path
end

Instance Method Details

#authenticate_with(&block) ⇒ Object



144
145
146
# File 'lib/avo/configuration.rb', line 144

def authenticate_with(&block)
  @authenticate = block if block.present?
end

#authorization_enabled?Boolean

Authorization is enabled when: (avo-pro gem is installed) AND (authorization_client is NOT nil)

Returns:

  • (Boolean)


132
133
134
# File 'lib/avo/configuration.rb', line 132

def authorization_enabled?
  @authorization_enabled ||= Avo.plugin_manager.installed?(:avo_pro) && !authorization_client.nil?
end

#computed_cache_storeObject

When not in production or test we’ll just use the MemoryStore which is good enough. When running in production we’ll use Rails.cache if it’s not ActiveSupport::Cache::MemoryStore or ActiveSupport::Cache::NullStore. If it’s one of rejected cache stores, we’ll use the FileStore. We decided against the MemoryStore in production because it will not be shared between multiple processes (when using Puma).



219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
# File 'lib/avo/configuration.rb', line 219

def computed_cache_store
  -> {
    if Rails.env.production?
      if Rails.cache.class.to_s.in?(production_rejected_cache_stores)
        ActiveSupport::Cache.lookup_store(:file_store, Rails.root.join("tmp", "cache"))
      else
        Rails.cache
      end
    elsif Rails.env.test?
      Rails.cache
    else
      ActiveSupport::Cache.lookup_store(:memory_store)
    end
  }
end

#current_user_method(&block) ⇒ Object



136
137
138
# File 'lib/avo/configuration.rb', line 136

def current_user_method(&block)
  @current_user = block if block.present?
end

#current_user_method=(method) ⇒ Object



140
141
142
# File 'lib/avo/configuration.rb', line 140

def current_user_method=(method)
  @current_user = method if method.present?
end

#default_localeObject



274
275
276
# File 'lib/avo/configuration.rb', line 274

def default_locale
  @locale || I18n.default_locale
end

#default_loggerObject



239
240
241
242
243
244
245
246
247
248
249
250
251
252
# File 'lib/avo/configuration.rb', line 239

def default_logger
  -> {
    file_logger = ActiveSupport::Logger.new(Rails.root.join("log", "avo.log"))

    file_logger.datetime_format = "%Y-%m-%d %H:%M:%S"
    file_logger.formatter = proc do |severity, time, progname, msg|
      "[Avo->] #{time}: #{msg}\n".tap do |i|
        puts i
      end
    end

    file_logger
  }
end

#default_turboObject



262
263
264
265
266
267
268
# File 'lib/avo/configuration.rb', line 262

def default_turbo
  -> do
    {
      instant_click: true
    }
  end
end

#feature_enabled?(feature) ⇒ Boolean

Returns:

  • (Boolean)


174
175
176
# File 'lib/avo/configuration.rb', line 174

def feature_enabled?(feature)
  !disabled_features.map(&:to_sym).include?(feature.to_sym)
end

#licenseObject



192
193
194
195
196
197
198
199
200
201
202
# File 'lib/avo/configuration.rb', line 192

def license
  gems = Gem::Specification.map {|gem| gem.name}

  @license ||= if gems.include?("avo-advanced")
    "advanced"
  elsif gems.include?("avo-pro")
    "pro"
  elsif gems.include?("avo")
    "community"
  end
end

#license=(value) ⇒ Object



186
187
188
189
190
# File 'lib/avo/configuration.rb', line 186

def license=(value)
  if Rails.env.development?
    puts "[Avo DEPRECATION WARNING]: The `config.license` configuration option is no longer supported and will be removed in future versions. Please discontinue its use and solely utilize the `license_key` instead."
  end
end

#namespaceObject



156
157
158
159
160
161
162
# File 'lib/avo/configuration.rb', line 156

def namespace
  if Avo.configuration.root_path.present?
    Avo.configuration.root_path.delete "/"
  else
    root_path.delete "/"
  end
end

#session_persistence_enabled?Boolean

Returns:

  • (Boolean)


286
287
288
# File 'lib/avo/configuration.rb', line 286

def session_persistence_enabled?
  persistence[:driver] == :session
end

#set_context(&block) ⇒ Object



148
149
150
# File 'lib/avo/configuration.rb', line 148

def set_context(&block)
  @context = block if block.present?
end

#set_initial_breadcrumbs(&block) ⇒ Object



152
153
154
# File 'lib/avo/configuration.rb', line 152

def set_initial_breadcrumbs(&block)
  @initial_breadcrumbs = block if block.present?
end