From 0c391dd19af48d938f8177e0e1bd083a8aa00d3c Mon Sep 17 00:00:00 2001 From: Greg Tarsa Date: Fri, 6 Jan 2017 13:28:38 -0500 Subject: [PATCH 1/6] Incorporates psgz's PR to make V4.0.0 compatible --- lib/simple-navigation-bootstrap/version.rb | 2 +- .../rendering/renderer/bootstrap.rb | 13 ++++++------- simple-navigation-bootstrap.gemspec | 2 +- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/lib/simple-navigation-bootstrap/version.rb b/lib/simple-navigation-bootstrap/version.rb index d493a8b..e2ab2d4 100644 --- a/lib/simple-navigation-bootstrap/version.rb +++ b/lib/simple-navigation-bootstrap/version.rb @@ -1,3 +1,3 @@ module SimpleNavigationBootstrap - VERSION = "1.0.2" + VERSION = "1.0.3" end diff --git a/lib/simple_navigation/rendering/renderer/bootstrap.rb b/lib/simple_navigation/rendering/renderer/bootstrap.rb index ef105d0..0f3bb9e 100644 --- a/lib/simple_navigation/rendering/renderer/bootstrap.rb +++ b/lib/simple_navigation/rendering/renderer/bootstrap.rb @@ -49,18 +49,17 @@ 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 + 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..6c43b81 100644 --- a/simple-navigation-bootstrap.gemspec +++ b/simple-navigation-bootstrap.gemspec @@ -18,6 +18,6 @@ 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" end From f4edf2be70a85c2058b2dcc604d2624f8bbd3d14 Mon Sep 17 00:00:00 2001 From: Greg Tarsa Date: Thu, 12 Jan 2017 17:03:27 -0500 Subject: [PATCH 2/6] Fixes bug in icon: processing --- .../rendering/renderer/bootstrap.rb | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/lib/simple_navigation/rendering/renderer/bootstrap.rb b/lib/simple_navigation/rendering/renderer/bootstrap.rb index 0f3bb9e..b75fc51 100644 --- a/lib/simple_navigation/rendering/renderer/bootstrap.rb +++ b/lib/simple_navigation/rendering/renderer/bootstrap.rb @@ -7,12 +7,11 @@ def render(item_container) 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) 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) - li_content = tag_for(item, item.name, icon, split, dropdown) + li_content = tag_for(item, item.name, item.send("options")[:icon], split, dropdown) if include_sub_navigation?(item) if split lio = li_options.dup @@ -49,17 +48,19 @@ 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_link_html_opts = item.link_html_options || Hash.new - item_link_html_opts[:class] = Array.new if item_link_html_opts[:class].nil? + 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? unless split if dropdown - item_link_html_opts[:class] << 'dropdown-toggle' - item_link_html_opts[:'data-toggle'] = 'dropdown' - item_link_html_opts[:'data-target'] = '#' + item_options[:link][:class] << 'dropdown-toggle' + item_options[:link][:'data-toggle'] = 'dropdown' + item_options[:link][:'data-target'] = '#' end link << content_tag(:b, '', :class => 'caret') end - item.instance_variable_set(:'@link_html_options', item_link_html_opts) + # if html_options was exposed then item.html_options = item_options[:link] would work + item.instance_variable_set(:'@link_html_options', item_options[:link]) end link_to(link.join(" ").html_safe, url, options_for(item)) end From 9e2e62e4feb95c283f639bca245619338175b95e Mon Sep 17 00:00:00 2001 From: Greg Tarsa Date: Fri, 13 Jan 2017 22:02:51 -0500 Subject: [PATCH 3/6] Increments patch version number --- lib/simple-navigation-bootstrap/version.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/simple-navigation-bootstrap/version.rb b/lib/simple-navigation-bootstrap/version.rb index e2ab2d4..e2d3742 100644 --- a/lib/simple-navigation-bootstrap/version.rb +++ b/lib/simple-navigation-bootstrap/version.rb @@ -1,3 +1,3 @@ module SimpleNavigationBootstrap - VERSION = "1.0.3" + VERSION = "1.0.4" end From 524be0b827efb0c458aabaf0f9ff4fd6b74b1861 Mon Sep 17 00:00:00 2001 From: Greg Tarsa Date: Fri, 13 Jan 2017 22:24:17 -0500 Subject: [PATCH 4/6] Removes version bump, per author's request --- lib/simple-navigation-bootstrap/version.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/simple-navigation-bootstrap/version.rb b/lib/simple-navigation-bootstrap/version.rb index e2d3742..d493a8b 100644 --- a/lib/simple-navigation-bootstrap/version.rb +++ b/lib/simple-navigation-bootstrap/version.rb @@ -1,3 +1,3 @@ module SimpleNavigationBootstrap - VERSION = "1.0.4" + VERSION = "1.0.2" end From eb3c38b85424d47597cf97ba73edd9f5716fcb72 Mon Sep 17 00:00:00 2001 From: Greg Tarsa Date: Mon, 16 Jan 2017 16:46:52 -0500 Subject: [PATCH 5/6] Fixes V4 compatibility and known bugs Prior to this commit split:true was not working properly, nor were dividers. This commit fixes a number of places where the structure of the Item class changed between versions, including changes where attributes which were not exposed were accessed. --- .../rendering/renderer/bootstrap.rb | 35 ++++++++++--------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/lib/simple_navigation/rendering/renderer/bootstrap.rb b/lib/simple_navigation/rendering/renderer/bootstrap.rb index b75fc51..ace722d 100644 --- a/lib/simple_navigation/rendering/renderer/bootstrap.rb +++ b/lib/simple_navigation/rendering/renderer/bootstrap.rb @@ -6,20 +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} + 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) - li_content = tag_for(item, item.name, item.send("options")[:icon], split, 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) @@ -48,19 +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 # if html_options was exposed then item.html_options = item_options[:link] would work - item.instance_variable_set(:'@link_html_options', item_options[:link]) + item.instance_variable_set(:'@link_html_options', item_link_html_opts) end link_to(link.join(" ").html_safe, url, options_for(item)) end From 0a2c9bb73c573fbb8d5e27d4aad7af91f187a60e Mon Sep 17 00:00:00 2001 From: Greg Tarsa Date: Wed, 18 Jan 2017 15:51:09 -0500 Subject: [PATCH 6/6] Locks 'thor' gem to 19.1 to workaround thor issue #538 Thor versions 19.2-19.4 generate these warning messages: Expected string default value for '--helper'; got true (boolean) Expected string default value for '--assets'; got true (boolean) Expected string default value for '--decorator'; got true (boolean) Expected string default value for '--decorator'; got true (boolean) Expected string default value for '--serializer'; got true (boolean) Thor is used in rails and jquery-ui, among other gems. None of them locks the version. This commit requests at least version 19.1 and refuses to load .2, .3 or .4. The assumption is that this will be fixed in the next release and this fix should only prove a problem if it is not AND some other gem is updated. --- simple-navigation-bootstrap.gemspec | 2 ++ 1 file changed, 2 insertions(+) diff --git a/simple-navigation-bootstrap.gemspec b/simple-navigation-bootstrap.gemspec index 6c43b81..27de091 100644 --- a/simple-navigation-bootstrap.gemspec +++ b/simple-navigation-bootstrap.gemspec @@ -20,4 +20,6 @@ Gem::Specification.new do |s| s.add_development_dependency "rake" 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