avo 1.3.0.pre.1 → 1.3.4

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.

Files changed (88) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +2 -0
  3. data/Gemfile.lock +12 -8
  4. data/README.md +3 -2
  5. data/app/components/avo/edit/fields/markdown_field_component.html.erb +1 -0
  6. data/app/components/avo/edit/fields/trix_field_component.html.erb +1 -1
  7. data/app/components/avo/panel_component.html.erb +5 -3
  8. data/app/components/avo/panel_component.rb +6 -1
  9. data/app/components/avo/show/fields/markdown_field_component.html.erb +1 -0
  10. data/app/components/avo/views/resource_index_component.html.erb +1 -1
  11. data/app/components/avo/views/resource_show_component.html.erb +1 -1
  12. data/app/controllers/avo/application_controller.rb +27 -0
  13. data/app/controllers/avo/home_controller.rb +4 -3
  14. data/app/helpers/avo/application_helper.rb +8 -2
  15. data/app/packs/entrypoints/application.js +10 -14
  16. data/app/packs/js/controllers/fields/code_field_controller.js +4 -1
  17. data/app/packs/js/controllers/fields/simple_mde_controller.js +9 -0
  18. data/app/packs/stylesheets/components/code.css +5 -0
  19. data/app/views/avo/home/_actions.html.erb +5 -5
  20. data/app/views/avo/home/_docs.html.erb +1 -1
  21. data/app/views/avo/home/_filters.html.erb +4 -4
  22. data/app/views/avo/home/_resources.html.erb +15 -2
  23. data/app/views/avo/home/index.html.erb +1 -1
  24. data/app/views/avo/partials/_custom_tools_alert.html.erb +6 -0
  25. data/app/views/avo/partials/_head.html.erb +0 -0
  26. data/app/views/avo/partials/_logo.html.erb +1 -1
  27. data/app/views/avo/sidebar/_license_warning.html.erb +3 -7
  28. data/app/views/avo/sidebar/_sidebar.html.erb +2 -1
  29. data/app/views/layouts/avo/application.html.erb +9 -4
  30. data/avo.gemspec +1 -1
  31. data/bin/helpers.rb +1 -1
  32. data/bin/spring +5 -5
  33. data/config/webpacker.yml +1 -1
  34. data/lib/avo.rb +13 -0
  35. data/lib/avo/app.rb +7 -3
  36. data/lib/avo/configuration.rb +6 -0
  37. data/lib/avo/fields/base_field.rb +3 -1
  38. data/lib/avo/fields/key_value_field.rb +1 -24
  39. data/lib/avo/fields/markdown_field.rb +3 -4
  40. data/lib/avo/licensing/h_q.rb +3 -3
  41. data/lib/avo/licensing/license.rb +2 -0
  42. data/lib/avo/licensing/pro_license.rb +2 -1
  43. data/lib/avo/version.rb +1 -1
  44. data/lib/generators/avo/action_generator.rb +1 -1
  45. data/lib/generators/avo/eject_generator.rb +5 -4
  46. data/lib/generators/avo/filter_generator.rb +1 -1
  47. data/lib/generators/avo/locales_generator.rb +2 -2
  48. data/lib/generators/avo/resource_generator.rb +1 -4
  49. data/lib/generators/avo/templates/action.tt +5 -9
  50. data/lib/generators/avo/templates/initializer/avo.tt +10 -1
  51. data/lib/generators/avo/templates/locales/avo.en.yml +1 -0
  52. data/lib/generators/avo/templates/locales/avo.nb-NO.yml +81 -0
  53. data/lib/generators/avo/templates/locales/avo.pt-BR.yml +82 -0
  54. data/lib/generators/avo/templates/locales/avo.ro.yml +70 -0
  55. data/lib/generators/avo/tool_generator.rb +2 -2
  56. data/public/avo-packs/css/{application-5af67922.css → application-af3e670d.css} +40 -103
  57. data/public/avo-packs/css/application-af3e670d.css.br +0 -0
  58. data/public/avo-packs/css/application-af3e670d.css.gz +0 -0
  59. data/public/avo-packs/css/application-af3e670d.css.map +1 -0
  60. data/public/avo-packs/css/application-af3e670d.css.map.br +0 -0
  61. data/public/avo-packs/css/application-af3e670d.css.map.gz +0 -0
  62. data/public/avo-packs/js/application-801f1297670a4c6df1b6.js +26 -0
  63. data/public/avo-packs/js/{application-a48a99244065c8d7a1d1.js.LICENSE.txt → application-801f1297670a4c6df1b6.js.LICENSE.txt} +0 -0
  64. data/public/avo-packs/js/application-801f1297670a4c6df1b6.js.br +0 -0
  65. data/public/avo-packs/js/application-801f1297670a4c6df1b6.js.gz +0 -0
  66. data/public/avo-packs/js/application-801f1297670a4c6df1b6.js.map +1 -0
  67. data/public/avo-packs/js/application-801f1297670a4c6df1b6.js.map.br +0 -0
  68. data/public/avo-packs/js/application-801f1297670a4c6df1b6.js.map.gz +0 -0
  69. data/public/avo-packs/manifest.json +15 -15
  70. metadata +33 -35
  71. data/app/components/avo/common/key_value_component.html.erb +0 -53
  72. data/app/components/avo/common/key_value_component.rb +0 -11
  73. data/app/components/avo/edit/fields/key_value_field_component.html.erb +0 -3
  74. data/app/components/avo/edit/fields/key_value_field_component.rb +0 -4
  75. data/app/components/avo/show/fields/key_value_field_component.html.erb +0 -3
  76. data/app/components/avo/show/fields/key_value_field_component.rb +0 -4
  77. data/app/packs/js/controllers/fields/key_value_controller.js +0 -132
  78. data/public/avo-packs/css/application-5af67922.css.br +0 -0
  79. data/public/avo-packs/css/application-5af67922.css.gz +0 -0
  80. data/public/avo-packs/css/application-5af67922.css.map +0 -1
  81. data/public/avo-packs/css/application-5af67922.css.map.br +0 -0
  82. data/public/avo-packs/css/application-5af67922.css.map.gz +0 -0
  83. data/public/avo-packs/js/application-a48a99244065c8d7a1d1.js +0 -26
  84. data/public/avo-packs/js/application-a48a99244065c8d7a1d1.js.br +0 -0
  85. data/public/avo-packs/js/application-a48a99244065c8d7a1d1.js.gz +0 -0
  86. data/public/avo-packs/js/application-a48a99244065c8d7a1d1.js.map +0 -1
  87. data/public/avo-packs/js/application-a48a99244065c8d7a1d1.js.map.br +0 -0
  88. data/public/avo-packs/js/application-a48a99244065c8d7a1d1.js.map.gz +0 -0
@@ -27,7 +27,7 @@
27
27
  <li><span class="mr-2">👍</span> Grid view</li>
28
28
  <li><span class="mr-2">👍</span> Authorization</li>
29
29
  <li><span class="mr-2">👍</span> Localization</li>
30
- <li><span class="mr-2">⏳</span> Custom tools</li>
30
+ <li><span class="mr-2">👍</span> Custom tools</li>
31
31
  <li><span class="mr-2">⏳</span> Custom fields</li>
32
32
  <li><span class="mr-2">⏳</span> Search</li>
33
33
  <li><span class="mr-2">🕐</span> Dashboards</li>
@@ -0,0 +1,6 @@
1
+ <div class="w-full inset-auto bottom-0 z-50 mb-4 opacity-75 hover:opacity-100 transition-opacity duration-150">
2
+ <a href="https://avohq.io/pricing" target="_blank" class="rounded bg-green-700 text-white py-2 px-4 text-sm block items-center flex leading-tight">
3
+ <%= svg "exclamation", class: "h-6 inline mr-2 text-bold flex-shrink-0" %> Warning. Your license is invalid or doesn't support custom tools. This page will not be visible in a production environment.
4
+ </a>
5
+ </div>
6
+
File without changes
@@ -1 +1 @@
1
- <%= image_pack_tag 'logo.png', class: 'h-full', title: 'Avo' %>
1
+ <%= image_manifest_tag 'logo.png', class: 'h-full', title: 'Avo' %>
@@ -1,12 +1,8 @@
1
1
  <div class="w-10/12 ml-1/12 inset-auto bottom-0 z-50 my-4 opacity-50 hover:opacity-100 transition-opacity duration-150 group">
2
- <a href="https://avohq.io/pricing" target="_blank" class="rounded bg-teal-700 text-white py-2 px-4 text-sm block group-hover:pt-4">
3
- <% if icon.present? %>
4
- <div class="h-6 inline mr-1 text-bold" :is="iconElement" v-if="icon">
5
- <%= title %>
6
- </div>
7
- <% end %>
2
+ <a href="https://avohq.io/pricing" target="_blank" class="rounded bg-green-700 text-white py-2 px-4 text-sm block group-hover:pt-4">
3
+ <%= svg 'exclamation', class: 'h-6 inline mr-1 text-bold' %> <%= title %>
8
4
  <div class="group-hover:block hidden py-2">
9
- <%= message %> <arrow-circle-right-icon class="h-6 inline float-right"></arrow-circle-right-icon>
5
+ <%= message %> <%= svg 'arrow-circle-right', class: "h-6 inline float-right" %>
10
6
  </div>
11
7
  </a>
12
8
  </div>
@@ -6,7 +6,8 @@
6
6
 
7
7
  <div class="flex-1 flex flex-col justify-between">
8
8
  <div class="tools py-4">
9
- <%= render Avo::NavigationLinkComponent.new label: 'Get started', path: '/avo', active: :exclusive if Rails.env.development? %>
9
+ <%= render Avo::NavigationLinkComponent.new label: 'Get started', path: Avo.configuration.root_path, active: :exclusive if Rails.env.development? && Avo.configuration.home_path.nil? %>
10
+
10
11
  <%= render Avo::NavigationHeadingComponent.new label: t('avo.resources') %>
11
12
 
12
13
  <div class="w-full">
@@ -7,9 +7,10 @@
7
7
  <%= csp_meta_tag %>
8
8
 
9
9
  <%= render partial: 'avo/partials/javascript' %>
10
+ <%= render partial: 'avo/partials/head' %>
10
11
 
11
- <%= javascript_pack_tag 'application' %>
12
- <%= stylesheet_pack_tag 'application', media: 'all' %>
12
+ <%= javascript_manifest_tag 'application' %>
13
+ <%= stylesheet_manifest_tag 'application', media: 'all' %>
13
14
  </head>
14
15
  <body class="bg-blue-gray-200">
15
16
 
@@ -30,8 +31,12 @@
30
31
  </div>
31
32
 
32
33
  <div class="content p-8 flex-1 flex flex-col justify-between items-stretch <%= @container_classes %>">
33
- <%= yield %>
34
- <%= render partial: "avo/partials/footer" %>
34
+ <%= render partial: "avo/partials/custom_tools_alert" if @custom_tools_alert_visible %>
35
+
36
+ <div class="flex flex-1 flex-col justify-between items-stretch">
37
+ <%= yield %>
38
+ <%= render partial: "avo/partials/footer" %>
39
+ </div>
35
40
  </div>
36
41
  </div>
37
42
  </div>
data/avo.gemspec CHANGED
@@ -34,7 +34,6 @@ Gem::Specification.new do |spec|
34
34
  spec.add_dependency "rails", ">= 6.0"
35
35
  spec.add_dependency "pagy"
36
36
  spec.add_dependency "zeitwerk"
37
- spec.add_dependency "webpacker"
38
37
  spec.add_dependency "countries"
39
38
  spec.add_dependency "pundit"
40
39
  spec.add_dependency "httparty"
@@ -45,4 +44,5 @@ Gem::Specification.new do |spec|
45
44
  spec.add_dependency "addressable"
46
45
  spec.add_dependency "meta-tags"
47
46
  spec.add_dependency "breadcrumbs_on_rails"
47
+ spec.add_dependency "manifester"
48
48
  end
data/bin/helpers.rb CHANGED
@@ -23,7 +23,7 @@ end
23
23
  def ask(question:, valid_answers: [])
24
24
  puts "\n#{question} (#{valid_answers.join('/')})"
25
25
 
26
- input = gets.downcase.chomp
26
+ input = gets.chomp
27
27
 
28
28
  while !valid_answers.include?(input)
29
29
  puts 'Invalid input, please try again.'
data/bin/spring CHANGED
@@ -4,14 +4,14 @@
4
4
  # It gets overwritten when you run the `spring binstub` command.
5
5
 
6
6
  unless defined?(Spring)
7
- require 'rubygems'
8
- require 'bundler'
7
+ require "rubygems"
8
+ require "bundler"
9
9
 
10
10
  lockfile = Bundler::LockfileParser.new(Bundler.default_lockfile.read)
11
- spring = lockfile.specs.detect { |spec| spec.name == 'spring' }
11
+ spring = lockfile.specs.detect { |spec| spec.name == "spring" }
12
12
  if spring
13
13
  Gem.use_paths Gem.dir, Bundler.bundle_path.to_s, *Gem.path
14
- gem 'spring', spring.version
15
- require 'spring/binstub'
14
+ gem "spring", spring.version
15
+ require "spring/binstub"
16
16
  end
17
17
  end
data/config/webpacker.yml CHANGED
@@ -13,7 +13,7 @@ default: &default
13
13
 
14
14
  # Additional paths webpack should lookup modules
15
15
  # ['app/assets', 'engine/foo/app/assets']
16
- additional_paths_paths: []
16
+ additional_paths: []
17
17
 
18
18
  # Reload manifest.json on all requests so we reload latest compiled packs
19
19
  cache_manifest: false
data/lib/avo.rb CHANGED
@@ -10,6 +10,10 @@ module Avo
10
10
  IN_DEVELOPMENT = ENV["AVO_IN_DEVELOPMENT"] == "1"
11
11
  PACKED = !IN_DEVELOPMENT
12
12
 
13
+ class LicenseVerificationTemperedError < StandardError; end
14
+
15
+ class LicenseInvalidError < StandardError; end
16
+
13
17
  class << self
14
18
  def webpacker
15
19
  @webpacker ||= ::Webpacker::Instance.new(
@@ -17,6 +21,15 @@ module Avo
17
21
  config_path: ROOT_PATH.join("config/webpacker.yml")
18
22
  )
19
23
  end
24
+
25
+ def manifester
26
+ @manifester ||= ::Manifester::Instance.new(
27
+ root_path: ROOT_PATH,
28
+ public_output_dir: "avo-packs",
29
+ cache_manifest: Rails.env.production?,
30
+ fallback_to_webpacker: -> { Avo::IN_DEVELOPMENT || Rails.env.test?}
31
+ )
32
+ end
20
33
  end
21
34
  end
22
35
 
data/lib/avo/app.rb CHANGED
@@ -26,12 +26,16 @@ module Avo
26
26
  self.request = request
27
27
  self.context = context
28
28
 
29
+ self.license = Licensing::LicenseManager.new(Licensing::HQ.new(request).response).license
30
+
29
31
  # Set the current host for ActiveStorage
30
- ActiveStorage::Current.host = request.base_url
32
+ begin
33
+ ActiveStorage::Current.host = request.base_url
34
+ rescue => exception
35
+ Rails.logger.debug "[Avo] Failed to set ActiveStorage::Current.host, #{exception.inspect}"
36
+ end
31
37
 
32
38
  init_resources
33
-
34
- self.license = Licensing::LicenseManager.new(Licensing::HQ.new(request).response).license
35
39
  end
36
40
 
37
41
  def cache_store
@@ -21,6 +21,7 @@ module Avo
21
21
  attr_accessor :context
22
22
  attr_accessor :display_breadcrumbs
23
23
  attr_accessor :initial_breadcrumbs
24
+ attr_accessor :home_path
24
25
 
25
26
  def initialize
26
27
  @root_path = "/avo"
@@ -54,6 +55,7 @@ module Avo
54
55
  add_breadcrumb I18n.t("avo.home").humanize, avo.root_path
55
56
  }
56
57
  @display_breadcrumbs = true
58
+ @home_path = nil
57
59
  end
58
60
 
59
61
  def locale_tag
@@ -81,6 +83,10 @@ module Avo
81
83
  def set_initial_breadcrumbs(&block)
82
84
  @initial_breadcrumbs = block if block.present?
83
85
  end
86
+
87
+ def namespace
88
+ root_path.delete "/"
89
+ end
84
90
  end
85
91
 
86
92
  def self.configuration
@@ -33,6 +33,7 @@ module Avo
33
33
  attr_accessor :meta
34
34
  attr_accessor :panel_name
35
35
  attr_accessor :link_to_resource
36
+ attr_accessor :options
36
37
 
37
38
  class_attribute :field_name_attribute
38
39
 
@@ -67,7 +68,8 @@ module Avo
67
68
  default: nil,
68
69
  visible: true,
69
70
  meta: {},
70
- panel_name: nil
71
+ panel_name: nil,
72
+ options: {}
71
73
  }
72
74
 
73
75
  # Set the values in the following order
@@ -3,11 +3,6 @@ require "json"
3
3
  module Avo
4
4
  module Fields
5
5
  class KeyValueField < BaseField
6
- attr_reader :key_label
7
- attr_reader :value_label
8
- attr_reader :action_text
9
- attr_reader :disable_adding_rows
10
-
11
6
  def initialize(name, **args, &block)
12
7
  @defaults = {
13
8
  partial_name: "key-value-field"
@@ -38,13 +33,7 @@ module Avo
38
33
  [:"#{id}", "#{id}": {}]
39
34
  end
40
35
 
41
- def parsed_value
42
- value.to_json
43
- rescue
44
- {}
45
- end
46
-
47
- def options
36
+ def hydrate_field(fields, model, resource, view)
48
37
  {
49
38
  key_label: @key_label,
50
39
  value_label: @value_label,
@@ -55,18 +44,6 @@ module Avo
55
44
  disable_deleting_rows: @disable_deleting_rows
56
45
  }
57
46
  end
58
-
59
- def fill_field(model, key, value)
60
- begin
61
- new_value = JSON.parse(value)
62
- rescue
63
- new_value = {}
64
- end
65
-
66
- model[key] = new_value
67
-
68
- model
69
- end
70
47
  end
71
48
  end
72
49
  end
@@ -12,10 +12,9 @@ module Avo
12
12
 
13
13
  @always_show = args[:always_show].present? ? args[:always_show] : false
14
14
  @height = args[:height].present? ? args[:height].to_s : "auto"
15
- end
16
-
17
- def hydrate_field(fields, model, resource, view)
18
- {
15
+ @spell_checker = args[:spell_checker].present? ? args[:spell_checker] : false
16
+ @options = {
17
+ spell_checker: @spell_checker,
19
18
  always_show: @always_show,
20
19
  height: @height
21
20
  }
@@ -3,8 +3,8 @@ module Avo
3
3
  class HQ
4
4
  attr_accessor :current_request
5
5
 
6
- ENDPOINT = "https://avohq.io/api/v1/licenses/check" unless const_defined?(:ENDPOINT)
7
- CACHE_KEY = "avo.hq.response" unless const_defined?(:CACHE_KEY)
6
+ ENDPOINT = "https://avohq.io/api/v1/licenses/check".freeze unless const_defined?(:ENDPOINT)
7
+ CACHE_KEY = "avo.hq.response".freeze unless const_defined?(:CACHE_KEY)
8
8
  REQUEST_TIMEOUT = 5 unless const_defined?(:REQUEST_TIMEOUT) # seconds
9
9
 
10
10
  def initialize(current_request)
@@ -54,7 +54,7 @@ module Avo
54
54
  end
55
55
 
56
56
  def perform_request
57
- puts "Performing request to avohq.io API to check license availability.".inspect if Rails.env.development?
57
+ ::Rails.logger.debug "[Avo] Performing request to avohq.io API to check license availability." if Rails.env.development?
58
58
 
59
59
  HTTParty.post ENDPOINT, body: payload.to_json, headers: {'Content-type': "application/json"}, timeout: REQUEST_TIMEOUT
60
60
  end
@@ -4,11 +4,13 @@ module Avo
4
4
  attr_accessor :id
5
5
  attr_accessor :response
6
6
  attr_accessor :valid
7
+ attr_accessor :payload
7
8
 
8
9
  def initialize(response)
9
10
  @response = response
10
11
  @id = response["id"]
11
12
  @valid = response["valid"]
13
+ @payload = response["payload"]
12
14
  end
13
15
 
14
16
  def valid?
@@ -3,7 +3,8 @@ module Avo
3
3
  class ProLicense < License
4
4
  def abilities
5
5
  [
6
- :authorization
6
+ :authorization,
7
+ :custom_tools
7
8
  ]
8
9
  end
9
10
  end
data/lib/avo/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Avo
2
- VERSION = "1.3.0.pre.1"
2
+ VERSION = "1.3.4"
3
3
  end
@@ -7,7 +7,7 @@ module Generators
7
7
  namespace "avo:action"
8
8
 
9
9
  def create_resource_file
10
- template "action.rb", "app/avo/actions/#{singular_name}.rb"
10
+ template "action.tt", "app/avo/actions/#{singular_name}.rb"
11
11
  end
12
12
  end
13
13
  end
@@ -12,10 +12,11 @@ module Generators
12
12
 
13
13
  TEMPLATES = {
14
14
  sidebar: "app/views/avo/sidebar/_sidebar.html.erb",
15
- logo: "app/views/avo/partials/logo.html.erb",
16
- header: "app/views/avo/partials/header.html.erb",
17
- footer: "app/views/avo/partials/footer.html.erb",
18
- scripts: "app/views/avo/partials/scripts.html.erb"
15
+ logo: "app/views/avo/partials/_logo.html.erb",
16
+ head: "app/views/avo/partials/_head.html.erb",
17
+ header: "app/views/avo/partials/_header.html.erb",
18
+ footer: "app/views/avo/partials/_footer.html.erb",
19
+ scripts: "app/views/avo/partials/_scripts.html.erb"
19
20
  }
20
21
 
21
22
  def handle
@@ -13,7 +13,7 @@ module Generators
13
13
 
14
14
  type = "select" if options[:select]
15
15
 
16
- template "filters/#{type}_filter.rb", "app/services/avo/filters/#{singular_name}.rb"
16
+ template "filters/#{type}_filter.tt", "app/services/avo/filters/#{singular_name}.rb"
17
17
  end
18
18
  end
19
19
  end
@@ -6,10 +6,10 @@ module Generators
6
6
  source_root File.expand_path("templates", __dir__)
7
7
 
8
8
  namespace "avo:locales"
9
- desc "Creates an Avo initializer adds the route to the routes file."
9
+ desc "Add Avo locale files to your project."
10
10
 
11
11
  def create_files
12
- template "locales/avo.en.yml", "config/locales/avo.en.yml"
12
+ directory File.join(__dir__, "templates", "locales"), "config/locales"
13
13
  end
14
14
  end
15
15
  end
@@ -10,9 +10,6 @@ module Generators
10
10
  def create
11
11
  template "resource/resource.tt", "app/avo/resources/#{resource_name}.rb"
12
12
  template "resource/controller.tt", "app/controllers/avo/#{controller_name}.rb"
13
-
14
- # Show a warning if the model doesn't exists
15
- say("We couldn't find the #{class_name} model in your codebase. You should have one present for Avo to display the resource.", :yellow) unless current_models.include? class_name
16
13
  end
17
14
 
18
15
  def resource_class
@@ -20,7 +17,7 @@ module Generators
20
17
  end
21
18
 
22
19
  def controller_class
23
- "Avo::#{plural_name.humanize}Controller"
20
+ "Avo::#{class_name.camelize.pluralize}Controller"
24
21
  end
25
22
 
26
23
  def resource_name
@@ -1,13 +1,9 @@
1
- module Avo
2
- module Actions
3
- class <%= class_name.camelize %> < Action
4
- self.name = '<%= name.underscore.humanize %>'
1
+ class <%= class_name.camelize %> < Avo::BaseAction
2
+ self.name = '<%= name.underscore.humanize %>'
5
3
 
6
- def handle(models:, fields:)
7
- models.each do |model|
8
- # Do something with your models.
9
- end
10
- end
4
+ def handle(models:, fields:)
5
+ models.each do |model|
6
+ # Do something with your models.
11
7
  end
12
8
  end
13
9
  end
@@ -29,10 +29,10 @@ Avo.configure do |config|
29
29
  # }
30
30
 
31
31
  ## == Localization ==
32
+ # config.locale = 'en-US'
32
33
 
33
34
  ## == Customization ==
34
35
  # config.app_name = 'Avocadelicious'
35
- # config.locale = 'en-US'
36
36
  # config.timezone = 'UTC'
37
37
  # config.currency = 'USD'
38
38
  # config.per_page = 24
@@ -43,4 +43,13 @@ Avo.configure do |config|
43
43
  # config.full_width_container = false
44
44
  # config.full_width_index_view = false
45
45
  # config.cache_resources_on_index_view = true
46
+
47
+ # Where should the user be redirected when he hits the `/<%= options[:path] %>` url
48
+ # config.home_path = nil
49
+
50
+ ## == Breadcrumbs ==
51
+ # config.display_breadcrumbs = true
52
+ # config.set_initial_breadcrumbs do
53
+ # add_breadcrumb "Home", '/<%= options[:path] %>'
54
+ # end
46
55
  end