simple-navigation 3.8.0 → 3.9.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 +4 -0
- data/README +1 -1
- data/VERSION +1 -1
- data/lib/simple_navigation/rendering/helpers.rb +22 -14
- data/spec/lib/simple_navigation/rendering/helpers_spec.rb +11 -0
- metadata +2 -2
data/CHANGELOG
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
*3.9.0
|
2
|
+
|
3
|
+
* Added ability to pass a block to render_navigation for configuring dynamic navigation items (instead of passing :items). Credits to Ronald Chan.
|
4
|
+
|
1
5
|
*3.8.0
|
2
6
|
|
3
7
|
* Changed the way the context is fetched. Fixes incompatibility with Gretel. Thanks to Ivan Kasatenko.
|
data/README
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
3.
|
1
|
+
3.9.0
|
@@ -31,8 +31,16 @@ module SimpleNavigation
|
|
31
31
|
# will be loaded and used for rendering the navigation.
|
32
32
|
# * <tt>:items</tt> - you can specify the items directly (e.g. if items are dynamically generated from database). See SimpleNavigation::ItemsProvider for documentation on what to provide as items.
|
33
33
|
# * <tt>:renderer</tt> - specify the renderer to be used for rendering the navigation. Either provide the Class or a symbol matching a registered renderer. Defaults to :list (html list renderer).
|
34
|
-
|
35
|
-
|
34
|
+
#
|
35
|
+
# Instead of using the <tt>:items</tt> option, a block can be passed to specify the items dynamically
|
36
|
+
#
|
37
|
+
# render_navigation do |menu|
|
38
|
+
# menu.item :posts, "Posts", posts_path
|
39
|
+
# end
|
40
|
+
#
|
41
|
+
def render_navigation(options={},&block)
|
42
|
+
container = active_navigation_item_container(options,&block)
|
43
|
+
container && container.render(options)
|
36
44
|
end
|
37
45
|
|
38
46
|
# Returns the name of the currently active navigation item belonging to the specified level.
|
@@ -68,12 +76,11 @@ module SimpleNavigation
|
|
68
76
|
# options
|
69
77
|
def active_navigation_item(options={},value_for_nil = nil)
|
70
78
|
options[:level] = :leaves if options[:level].nil? || options[:level] == :all
|
71
|
-
active_navigation_item_container(options)
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
end
|
79
|
+
container = active_navigation_item_container(options)
|
80
|
+
if container && (item = container.selected_item)
|
81
|
+
block_given? ? yield(item) : item
|
82
|
+
else
|
83
|
+
value_for_nil
|
77
84
|
end
|
78
85
|
end
|
79
86
|
|
@@ -88,20 +95,21 @@ module SimpleNavigation
|
|
88
95
|
# * <tt>:items</tt> - you can specify the items directly (e.g. if items are dynamically generated from database). See SimpleNavigation::ItemsProvider for documentation on what to provide as items.
|
89
96
|
#
|
90
97
|
# Returns <tt>nil</tt> if no active item container can be found
|
91
|
-
def active_navigation_item_container(options={})
|
98
|
+
def active_navigation_item_container(options={},&block)
|
92
99
|
options = SimpleNavigation::Helpers::apply_defaults(options)
|
93
|
-
SimpleNavigation::Helpers::load_config(options,self)
|
100
|
+
SimpleNavigation::Helpers::load_config(options,self,&block)
|
94
101
|
container = SimpleNavigation.active_item_container_for(options[:level])
|
95
|
-
block_given? ? yield(container) : container
|
96
102
|
end
|
97
103
|
|
98
104
|
class << self
|
99
|
-
def load_config(options,includer)
|
105
|
+
def load_config(options,includer,&block)
|
100
106
|
ctx = options.delete(:context)
|
101
107
|
SimpleNavigation.init_adapter_from includer
|
102
108
|
SimpleNavigation.load_config(ctx)
|
103
|
-
SimpleNavigation::Configuration.eval_config(ctx)
|
104
|
-
|
109
|
+
SimpleNavigation::Configuration.eval_config(ctx)
|
110
|
+
if block_given? || options[:items]
|
111
|
+
SimpleNavigation.config.items(options[:items],&block)
|
112
|
+
end
|
105
113
|
SimpleNavigation.handle_explicit_navigation if SimpleNavigation.respond_to?(:handle_explicit_navigation)
|
106
114
|
raise "no primary navigation defined, either use a navigation config file or pass items directly to render_navigation" unless SimpleNavigation.primary_navigation
|
107
115
|
end
|
@@ -170,6 +170,17 @@ describe SimpleNavigation::Helpers do
|
|
170
170
|
@controller.render_navigation(:items => @items)
|
171
171
|
end
|
172
172
|
end
|
173
|
+
context 'block given' do
|
174
|
+
it 'should use block' do
|
175
|
+
block_executed = 0
|
176
|
+
expect do
|
177
|
+
@controller.render_navigation do |menu|
|
178
|
+
menu.class.should == SimpleNavigation::ItemContainer
|
179
|
+
block_executed += 1
|
180
|
+
end
|
181
|
+
end.to change{block_executed}.by(1)
|
182
|
+
end
|
183
|
+
end
|
173
184
|
end
|
174
185
|
|
175
186
|
describe 'no primary navigation defined' do
|
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.9.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: 2012-
|
13
|
+
date: 2012-09-02 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activesupport
|