simple-navigation 3.9.0 → 3.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +6 -0
- data/Gemfile +1 -0
- data/VERSION +1 -1
- data/lib/simple_navigation/adapters/rails.rb +5 -5
- data/lib/simple_navigation/core/item.rb +3 -2
- data/lib/simple_navigation/core/item_container.rb +1 -1
- data/spec/lib/simple_navigation/core/item_spec.rb +15 -1
- metadata +18 -2
data/CHANGELOG
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
*3.10.0
|
2
|
+
|
3
|
+
* Added ability to set selected_class on container level. Credits to Joost Hietbrink.
|
4
|
+
* do not highlight items that are only partial matches. Thanks to Troy Thompson.
|
5
|
+
* adding support for rails 4. Credits to Samer Masry.
|
6
|
+
|
1
7
|
*3.9.0
|
2
8
|
|
3
9
|
* Added ability to pass a block to render_navigation for configuring dynamic navigation items (instead of passing :items). Credits to Ronald Chan.
|
data/Gemfile
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
3.
|
1
|
+
3.10.0
|
@@ -49,15 +49,15 @@ module SimpleNavigation
|
|
49
49
|
protected
|
50
50
|
|
51
51
|
def self.rails_root
|
52
|
-
|
52
|
+
gte_rails3? ? ::Rails.root : ::RAILS_ROOT
|
53
53
|
end
|
54
54
|
|
55
55
|
def self.rails_env
|
56
|
-
|
56
|
+
gte_rails3? ? ::Rails.env : ::RAILS_ENV
|
57
57
|
end
|
58
58
|
|
59
|
-
def self.
|
60
|
-
::Rails::VERSION::MAJOR
|
59
|
+
def self.gte_rails3?
|
60
|
+
::Rails::VERSION::MAJOR >= 3
|
61
61
|
end
|
62
62
|
|
63
63
|
def template_from(controller)
|
@@ -82,7 +82,7 @@ module SimpleNavigation
|
|
82
82
|
end
|
83
83
|
|
84
84
|
# Initializer for Rails3
|
85
|
-
if defined?(Rails) &&
|
85
|
+
if defined?(Rails) && SimpleNavigation::Adapters::Rails.gte_rails3?
|
86
86
|
module SimpleNavigation
|
87
87
|
class Railtie < Rails::Railtie
|
88
88
|
initializer "simple_navigation.register" do |app|
|
@@ -13,6 +13,7 @@ module SimpleNavigation
|
|
13
13
|
options = setup_url_and_options(url_or_options, options_or_nil)
|
14
14
|
@container.dom_class = options.delete(:container_class) if options[:container_class]
|
15
15
|
@container.dom_id = options.delete(:container_id) if options[:container_id]
|
16
|
+
@container.selected_class = options.delete(:selected_class) if options[:selected_class]
|
16
17
|
@key = key
|
17
18
|
@method = options.delete(:method)
|
18
19
|
@name = name
|
@@ -65,7 +66,7 @@ module SimpleNavigation
|
|
65
66
|
# Returns the configured selected_class if the item is selected,
|
66
67
|
# nil otherwise
|
67
68
|
def selected_class
|
68
|
-
selected? ? SimpleNavigation.config.selected_class : nil
|
69
|
+
selected? ? (@container.selected_class || SimpleNavigation.config.selected_class) : nil
|
69
70
|
end
|
70
71
|
|
71
72
|
protected
|
@@ -88,7 +89,7 @@ module SimpleNavigation
|
|
88
89
|
when Proc
|
89
90
|
highlights_on.call
|
90
91
|
when :subpath
|
91
|
-
!!(SimpleNavigation.request_uri =~ /^#{Regexp.escape url_without_anchor}/)
|
92
|
+
!!(SimpleNavigation.request_uri =~ /^#{Regexp.escape url_without_anchor}(\/|$|\?)/i)
|
92
93
|
else
|
93
94
|
raise ArgumentError, ':highlights_on must be a Regexp, Proc or :subpath'
|
94
95
|
end
|
@@ -4,7 +4,7 @@ module SimpleNavigation
|
|
4
4
|
class ItemContainer
|
5
5
|
|
6
6
|
attr_reader :items, :level
|
7
|
-
attr_accessor :renderer, :dom_id, :dom_class, :auto_highlight
|
7
|
+
attr_accessor :renderer, :dom_id, :dom_class, :auto_highlight, :selected_class
|
8
8
|
|
9
9
|
def initialize(level=1) #:nodoc:
|
10
10
|
@level = level
|
@@ -3,7 +3,7 @@ require 'spec_helper'
|
|
3
3
|
describe SimpleNavigation::Item do
|
4
4
|
|
5
5
|
before(:each) do
|
6
|
-
@item_container = stub(:item_container, :level => 1).as_null_object
|
6
|
+
@item_container = stub(:item_container, :level => 1, :selected_class => nil).as_null_object
|
7
7
|
@item = SimpleNavigation::Item.new(@item_container, :my_key, 'name', 'url', {})
|
8
8
|
@adapter = stub(:adapter)
|
9
9
|
SimpleNavigation.stub!(:adapter => @adapter)
|
@@ -215,6 +215,14 @@ describe SimpleNavigation::Item do
|
|
215
215
|
end
|
216
216
|
|
217
217
|
describe 'selected_class' do
|
218
|
+
context 'selected_class is defined in context' do
|
219
|
+
before(:each) do
|
220
|
+
@item_container = stub(:item_container, :level => 1, :selected_class => 'context_defined').as_null_object
|
221
|
+
@item = SimpleNavigation::Item.new(@item_container, :my_key, 'name', 'url', {})
|
222
|
+
@item.stub!(:selected? => true)
|
223
|
+
end
|
224
|
+
it {@item.instance_eval {selected_class.should == 'context_defined'}}
|
225
|
+
end
|
218
226
|
context 'item is selected' do
|
219
227
|
before(:each) do
|
220
228
|
@item.stub!(:selected? => true)
|
@@ -389,6 +397,12 @@ describe SimpleNavigation::Item do
|
|
389
397
|
end
|
390
398
|
it {@item.send(:selected_by_condition?).should be_true}
|
391
399
|
end
|
400
|
+
context 'we are in a route that has a similar name' do
|
401
|
+
before(:each) do
|
402
|
+
SimpleNavigation.stub!(:request_uri => '/resources_group/id')
|
403
|
+
end
|
404
|
+
it {@item.send(:selected_by_condition?).should be_false}
|
405
|
+
end
|
392
406
|
context 'we are in a route not beginning with this item path' do
|
393
407
|
before(:each) do
|
394
408
|
SimpleNavigation.stub!(:request_uri => '/another_resource/id')
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: simple-navigation
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.10.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2013-01-26 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activesupport
|
@@ -76,6 +76,22 @@ dependencies:
|
|
76
76
|
- - ! '>='
|
77
77
|
- !ruby/object:Gem::Version
|
78
78
|
version: '0'
|
79
|
+
- !ruby/object:Gem::Dependency
|
80
|
+
name: jeweler
|
81
|
+
requirement: !ruby/object:Gem::Requirement
|
82
|
+
none: false
|
83
|
+
requirements:
|
84
|
+
- - ! '>='
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
version: '0'
|
87
|
+
type: :development
|
88
|
+
prerelease: false
|
89
|
+
version_requirements: !ruby/object:Gem::Requirement
|
90
|
+
none: false
|
91
|
+
requirements:
|
92
|
+
- - ! '>='
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: '0'
|
79
95
|
description: With the simple-navigation gem installed you can easily create multilevel
|
80
96
|
navigations for your Rails, Sinatra or Padrino applications. The navigation is defined
|
81
97
|
in a single configuration file. It supports automatic as well as explicit highlighting
|