Module: Spree::NavigationHelper

Defined in:
app/helpers/spree/navigation_helper.rb

Instance Method Summary collapse

Instance Method Details



44
45
46
47
48
49
50
51
52
53
# File 'app/helpers/spree/navigation_helper.rb', line 44

def main_nav_image(image_path, title = '')
  image_url = asset_path(asset_exists?(image_path) ? image_path : 'noimage/large.png')

  lazy_image(
    src: image_url,
    alt: title,
    width: 350,
    height: 234
  )
end

#should_render_internationalization_dropdown?Boolean



79
80
81
82
# File 'app/helpers/spree/navigation_helper.rb', line 79

def should_render_internationalization_dropdown?
  (defined?(should_render_locale_dropdown?) && should_render_locale_dropdown?) ||
    (defined?(should_render_currency_dropdown?) && should_render_currency_dropdown?)
end


63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# File 'app/helpers/spree/navigation_helper.rb', line 63

def spree_localized_link(item)
  return if item.link.nil?

  output_locale = if locale_param
                    "/#{I18n.locale}"
                  end

  if ['Spree::Product', 'Spree::Taxon', 'Spree::CmsPage'].include?(item.linked_resource_type)
    output_locale.to_s + item.link
  elsif item.linked_resource_type == 'Home Page'
    "/#{locale_param}"
  else
    item.link
  end
end

#spree_menu(location = 'header') ⇒ Object



55
56
57
58
59
60
61
# File 'app/helpers/spree/navigation_helper.rb', line 55

def spree_menu(location = 'header')
  method_name = "for_#{location}"

  if available_menus.respond_to?(method_name) && Spree::Menu::MENU_LOCATIONS_PARAMETERIZED.include?(location)
    available_menus.send(method_name, I18n.locale) || current_store.default_menu(location)
  end
end

#spree_menu_cache_key(section = 'header') ⇒ Object



34
35
36
37
38
39
40
41
42
# File 'app/helpers/spree/navigation_helper.rb', line 34

def spree_menu_cache_key(section = 'header')
  keys = base_cache_key + [
    current_store.cache_key_with_version,
    spree_menu(section)&.cache_key_with_version,
    stores&.maximum(:updated_at),
    section
  ]
  Digest::MD5.hexdigest(keys.join('-'))
end

#spree_nav_cache_key(section = 'header') ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
# File 'app/helpers/spree/navigation_helper.rb', line 22

def spree_nav_cache_key(section = 'header')
  Spree::Deprecation.warn("    NavigationHelper#spree_nav_cache_key is deprecated and will be removed in Spree 5.0.\n    Please migrate to the new navigation cms system.\n  DEPRECATION\n\n  @spree_nav_cache_key = begin\n    keys = base_cache_key + [current_store, spree_navigation_data_cache_key, stores&.cache_key_with_version, section]\n    Digest::MD5.hexdigest(keys.join('-'))\n  end\nend\n", caller)


84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# File 'app/helpers/spree/navigation_helper.rb', line 84

def spree_nav_link_tag(item, opts = {}, &block)
  if item.new_window
    target = opts[:target] || '_blank'
    rel = opts[:rel] || 'noopener noreferrer'
  end

  active_class = if request && current_page?(spree_localized_link(item))
                   "active #{opts[:class]}"
                 else
                   opts[:class]
                 end

  link_opts = { target: target, rel: rel, class: active_class, id: opts[:id], data: opts[:data], aria: opts[:aria] }

  if block_given?
    link_to spree_localized_link(item), link_opts, &block
  else
    link_to item.name, spree_localized_link(item), link_opts
  end
end

#spree_navigation_dataObject



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'app/helpers/spree/navigation_helper.rb', line 5

def spree_navigation_data
  Spree::Deprecation.warn("    NavigationHelper#spree_navigation_data is deprecated and will be removed in Spree 5.0.\n    Please migrate to the new navigation cms system.\n  DEPRECATION\n\n  @spree_navigation_data ||= SpreeStorefrontConfig.dig(I18n.locale,\n                                                       :navigation) || SpreeStorefrontConfig.dig(current_store.code,\n                                                                                                 :navigation) || SpreeStorefrontConfig.dig(\n                                                                                                   :default, :navigation\n                                                                                                 ) || []\n# safeguard for older Spree installs that don't have spree_navigation initializer\n# or spree.yml file present\nrescue StandardError\n  []\nend\n", caller)