diff --git a/lib/simple_navigation/rendering/renderer/bootstrap.rb b/lib/simple_navigation/rendering/renderer/bootstrap.rb index ef105d0..ace722d 100644 --- a/lib/simple_navigation/rendering/renderer/bootstrap.rb +++ b/lib/simple_navigation/rendering/renderer/bootstrap.rb @@ -6,21 +6,22 @@ def render(item_container) config_selected_class = SimpleNavigation.config.selected_class SimpleNavigation.config.selected_class = 'active' list_content = item_container.items.inject([]) do |list, item| - li_options = item.html_options.reject {|k, v| k == :link} - icon = li_options.delete(:icon) + options = item.send('options') + li_options = item.html_options + icon = options[:icon] dropdown = item_container.dropdown.nil? ? true : item_container.dropdown split = item_container.split - split = (include_sub_navigation?(item) and li_options.delete(:split)) if li_options.include?(:split) - dropdown = (include_sub_navigation?(item) and li_options.delete(:dropdown)) if li_options.include?(:dropdown) + split = (include_sub_navigation?(item) and options.delete(:split)) if options.include?(:split) + dropdown = (include_sub_navigation?(item) and options.delete(:dropdown)) if options.include?(:dropdown) li_content = tag_for(item, item.name, icon, split, dropdown) if include_sub_navigation?(item) if split - lio = li_options.dup - lio[:class] = [li_options[:class], 'dropdown-split-left'].flatten.compact.join(' ') - list << content_tag(:li, li_content, lio) - item.html_options[:link] = nil - li_options[:id] = nil - li_content = tag_for(item) + li_options2 = li_options.dup + li_options2[:class] = [options[:class], 'dropdown-split-left'].flatten.compact.join(' ') + list << content_tag(:li, li_content, li_options2) + item2 = item.dup + item2.instance_variable_set(:'@url', '#') # split should not have a url + li_content = tag_for(item2) end item.sub_navigation.dom_class = [item.sub_navigation.dom_class, dropdown ? 'dropdown-menu' : nil, split ? 'pull-right' : nil].flatten.compact.join(' ') li_content << render_sub_navigation_for(item) @@ -49,18 +50,18 @@ def tag_for(item, name = '', icon = nil, split = false, dropdown = false) link << content_tag(:i, '', :class => [icon].flatten.compact.join(' ')) unless icon.nil? link << name if include_sub_navigation?(item) - item_options = item.html_options - item_options[:link] = Hash.new if item_options[:link].nil? - item_options[:link][:class] = Array.new if item_options[:link][:class].nil? + item_link_html_opts = item.link_html_options || Hash.new + item_link_html_opts[:class] = Array.new if item_link_html_opts[:class].nil? unless split if dropdown - item_options[:link][:class] << 'dropdown-toggle' - item_options[:link][:'data-toggle'] = 'dropdown' - item_options[:link][:'data-target'] = '#' + item_link_html_opts[:class] << 'dropdown-toggle' + item_link_html_opts[:'data-toggle'] = 'dropdown' + item_link_html_opts[:'data-target'] = '#' end link << content_tag(:b, '', :class => 'caret') end - item.html_options = item_options + # if html_options was exposed then item.html_options = item_options[:link] would work + item.instance_variable_set(:'@link_html_options', item_link_html_opts) end link_to(link.join(" ").html_safe, url, options_for(item)) end diff --git a/simple-navigation-bootstrap.gemspec b/simple-navigation-bootstrap.gemspec index 535e2f2..27de091 100644 --- a/simple-navigation-bootstrap.gemspec +++ b/simple-navigation-bootstrap.gemspec @@ -18,6 +18,8 @@ Gem::Specification.new do |s| # specify any dependencies here; for example: s.add_development_dependency "rake" - s.add_runtime_dependency "simple-navigation", ">= 3.7.0", "< 4.0.0" + s.add_runtime_dependency "simple-navigation", ">= 4.0.0" s.add_runtime_dependency "railties", ">= 3.1" + # thor dependencies assume the spurious warning messages bug will be fixed 19.5 + s.add_runtime_dependency "thor", "0.19.1", "!=0.19.2", "!=0.19.3", "!=0.19.4" end