simple-navigation 2.7.3 → 3.0.0.beta1
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 +14 -4
- data/README +1 -2
- data/Rakefile +1 -0
- data/VERSION.yml +4 -4
- data/generators/navigation_config/templates/config/navigation.rb +14 -14
- data/lib/simple_navigation.rb +69 -151
- data/lib/simple_navigation/adapters.rb +9 -0
- data/lib/simple_navigation/adapters/base.rb +37 -0
- data/lib/simple_navigation/adapters/padrino.rb +20 -0
- data/lib/simple_navigation/adapters/rails.rb +93 -0
- data/lib/simple_navigation/adapters/sinatra.rb +76 -0
- data/lib/simple_navigation/core.rb +5 -0
- data/lib/simple_navigation/{configuration.rb → core/configuration.rb} +14 -19
- data/lib/simple_navigation/{item.rb → core/item.rb} +10 -11
- data/lib/simple_navigation/{item_adapter.rb → core/item_adapter.rb} +11 -7
- data/lib/simple_navigation/{item_container.rb → core/item_container.rb} +14 -21
- data/lib/simple_navigation/{items_provider.rb → core/items_provider.rb} +7 -7
- data/lib/simple_navigation/{controller_methods.rb → rails_controller_methods.rb} +67 -5
- data/lib/simple_navigation/rendering.rb +10 -0
- data/lib/simple_navigation/{helpers.rb → rendering/helpers.rb} +16 -18
- data/lib/simple_navigation/{renderer → rendering/renderer}/base.rb +20 -37
- data/lib/simple_navigation/{renderer → rendering/renderer}/breadcrumbs.rb +7 -7
- data/lib/simple_navigation/{renderer → rendering/renderer}/links.rb +7 -7
- data/lib/simple_navigation/{renderer → rendering/renderer}/list.rb +6 -6
- data/rails/init.rb +1 -5
- data/spec/lib/simple_navigation/adapters/padrino_spec.rb +29 -0
- data/spec/lib/simple_navigation/adapters/rails_spec.rb +269 -0
- data/spec/lib/simple_navigation/adapters/sinatra_spec.rb +60 -0
- data/spec/lib/simple_navigation/{configuration_spec.rb → core/configuration_spec.rb} +7 -18
- data/spec/lib/simple_navigation/{item_adapter_spec.rb → core/item_adapter_spec.rb} +11 -11
- data/spec/lib/simple_navigation/{item_container_spec.rb → core/item_container_spec.rb} +29 -46
- data/spec/lib/simple_navigation/{item_spec.rb → core/item_spec.rb} +30 -64
- data/spec/lib/simple_navigation/{items_provider_spec.rb → core/items_provider_spec.rb} +7 -7
- data/spec/lib/simple_navigation/rails_controller_methods_spec.rb +251 -0
- data/spec/lib/simple_navigation/{helpers_spec.rb → rendering/helpers_spec.rb} +34 -53
- data/spec/lib/simple_navigation/{renderer → rendering/renderer}/base_spec.rb +11 -62
- data/spec/lib/simple_navigation/{renderer → rendering/renderer}/breadcrumbs_spec.rb +9 -51
- data/spec/lib/simple_navigation/rendering/renderer/links_spec.rb +59 -0
- data/spec/lib/simple_navigation/{renderer → rendering/renderer}/list_spec.rb +17 -58
- data/spec/lib/simple_navigation_spec.rb +51 -298
- data/spec/spec_helper.rb +16 -5
- metadata +67 -48
- data/lib/simple_navigation/initializer.rb +0 -21
- data/lib/simple_navigation/railtie.rb +0 -7
- data/spec/lib/simple_navigation/controller_methods_spec.rb +0 -90
- data/spec/lib/simple_navigation/renderer/links_spec.rb +0 -121
@@ -1,12 +1,12 @@
|
|
1
1
|
module SimpleNavigation
|
2
|
-
|
3
|
-
# Acts as a proxy to navigation items that are passed into the SimpleNavigation::Configuration#items method. It hides the logic
|
2
|
+
|
3
|
+
# Acts as a proxy to navigation items that are passed into the SimpleNavigation::Configuration#items method. It hides the logic
|
4
4
|
# for finding items from the Configuration object.
|
5
5
|
#
|
6
6
|
class ItemsProvider
|
7
|
-
|
7
|
+
|
8
8
|
attr_reader :provider
|
9
|
-
|
9
|
+
|
10
10
|
# It accepts the following types of provider:
|
11
11
|
# * methodname as symbol - the specified method should return the relevant items and has to be available in the view (a helper method)
|
12
12
|
# * object that responds to :items
|
@@ -17,11 +17,11 @@ module SimpleNavigation
|
|
17
17
|
def initialize(provider)
|
18
18
|
@provider = provider
|
19
19
|
end
|
20
|
-
|
20
|
+
|
21
21
|
# Returns the navigation items
|
22
22
|
def items
|
23
23
|
if provider.instance_of?(Symbol)
|
24
|
-
SimpleNavigation.
|
24
|
+
SimpleNavigation.context_for_eval.send(provider)
|
25
25
|
elsif provider.respond_to?(:items)
|
26
26
|
provider.items
|
27
27
|
elsif provider.respond_to?(:each)
|
@@ -30,6 +30,6 @@ module SimpleNavigation
|
|
30
30
|
raise "items_provider either must be a symbol specifying the helper-method to call, an object with an items-method defined or an enumerable representing the items"
|
31
31
|
end
|
32
32
|
end
|
33
|
-
|
33
|
+
|
34
34
|
end
|
35
35
|
end
|
@@ -1,5 +1,52 @@
|
|
1
|
-
#TODO: add :except and :only options to navigation method
|
2
1
|
module SimpleNavigation
|
2
|
+
|
3
|
+
class << self
|
4
|
+
|
5
|
+
def explicit_navigation_args
|
6
|
+
self.adapter.controller.instance_variable_get(:"@sn_current_navigation_args")
|
7
|
+
end
|
8
|
+
|
9
|
+
# Reads the current navigation for the specified level from the controller.
|
10
|
+
# Returns nil if there is no current navigation set for level.
|
11
|
+
def current_navigation_for(level)
|
12
|
+
self.adapter.controller.instance_variable_get(:"@sn_current_navigation_#{level}")
|
13
|
+
end
|
14
|
+
|
15
|
+
# If any navigation has been explicitely set in the controller this method evaluates the specified args set in the controller and sets
|
16
|
+
# the correct instance variable in the controller.
|
17
|
+
def handle_explicit_navigation
|
18
|
+
if SimpleNavigation.explicit_navigation_args
|
19
|
+
level, navigation = parse_explicit_navigation_args
|
20
|
+
self.adapter.controller.instance_variable_set(:"@sn_current_navigation_#{level}", navigation)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
# TODO: refactor this ugly thing to make it nice and short
|
25
|
+
def parse_explicit_navigation_args
|
26
|
+
args = SimpleNavigation.explicit_navigation_args
|
27
|
+
args = [Hash.new] if args.empty?
|
28
|
+
if args.first.kind_of? Hash
|
29
|
+
options = args.first
|
30
|
+
else # args is a list of current navigation for several levels
|
31
|
+
options = {}
|
32
|
+
if args.size == 1 #only one navi-key has been specified, try to find out level
|
33
|
+
level = SimpleNavigation.primary_navigation.level_for_item(args.first)
|
34
|
+
options[:"level_#{level}"] = args.first if level
|
35
|
+
else
|
36
|
+
args.each_with_index {|arg, i| options[:"level_#{i + 1}"] = arg}
|
37
|
+
end
|
38
|
+
end
|
39
|
+
#only the deepest level is relevant
|
40
|
+
level = options.inject(0) do |max, kv|
|
41
|
+
kv.first.to_s =~ /level_(\d)/
|
42
|
+
max = $1.to_i if $1.to_i > max
|
43
|
+
max
|
44
|
+
end
|
45
|
+
raise ArgumentError, "Invalid level specified or item key not found" if level == 0
|
46
|
+
[level, options[:"level_#{level}"]]
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
3
50
|
|
4
51
|
# Adds methods for explicitely setting the current 'active' navigation to the controllers.
|
5
52
|
# Since version 2.0.0 the simple_navigation plugin determines the active navigation based on the current url by default (auto highlighting),
|
@@ -46,8 +93,6 @@ module SimpleNavigation
|
|
46
93
|
base.class_eval do
|
47
94
|
extend ClassMethods
|
48
95
|
include InstanceMethods
|
49
|
-
include SimpleNavigation::Helpers
|
50
|
-
base.helper_method :render_navigation, :render_primary_navigation, :render_sub_navigation
|
51
96
|
end
|
52
97
|
end
|
53
98
|
|
@@ -56,7 +101,6 @@ module SimpleNavigation
|
|
56
101
|
#
|
57
102
|
# The specified symbol must match the keys for your navigation items in your config/navigation.rb file.
|
58
103
|
def navigation(*args)
|
59
|
-
ActiveSupport::Deprecation.warn("Setting the active navigation in the controllers has been deprecated. Please use the new :highlights_on option in the config file for explicit highlighting")
|
60
104
|
self.class_eval do
|
61
105
|
define_method :sn_set_navigation do
|
62
106
|
current_navigation(*args)
|
@@ -73,10 +117,28 @@ module SimpleNavigation
|
|
73
117
|
#
|
74
118
|
# The specified symbol must match the keys for your navigation items in your config/navigation.rb file.
|
75
119
|
def current_navigation(*args)
|
76
|
-
ActiveSupport::Deprecation.warn("Setting the active navigation in the controllers has been deprecated. Please use the new :highlights_on option in the config file for explicit highlighting")
|
77
120
|
@sn_current_navigation_args = args
|
78
121
|
end
|
79
122
|
end
|
80
123
|
|
81
124
|
end
|
125
|
+
|
126
|
+
class Item
|
127
|
+
|
128
|
+
def selected_by_config?
|
129
|
+
key == SimpleNavigation.current_navigation_for(@container.level)
|
130
|
+
end
|
131
|
+
|
132
|
+
end
|
133
|
+
|
134
|
+
class ItemContainer
|
135
|
+
|
136
|
+
def selected_item
|
137
|
+
self[SimpleNavigation.current_navigation_for(self.level)] || items.find {|i| i.selected?}
|
138
|
+
end
|
139
|
+
|
140
|
+
end
|
141
|
+
|
82
142
|
end
|
143
|
+
|
144
|
+
ActionController::Base.send(:include, SimpleNavigation::ControllerMethods)
|
@@ -0,0 +1,10 @@
|
|
1
|
+
require 'simple_navigation/rendering/helpers'
|
2
|
+
require 'simple_navigation/rendering/renderer/base'
|
3
|
+
|
4
|
+
module SimpleNavigation
|
5
|
+
module Renderer
|
6
|
+
autoload :List, 'simple_navigation/rendering/renderer/list'
|
7
|
+
autoload :Links, 'simple_navigation/rendering/renderer/links'
|
8
|
+
autoload :Breadcrumbs, 'simple_navigation/rendering/renderer/breadcrumbs'
|
9
|
+
end
|
10
|
+
end
|
@@ -1,16 +1,16 @@
|
|
1
1
|
module SimpleNavigation
|
2
|
-
|
2
|
+
|
3
3
|
# View helpers to render the navigation.
|
4
4
|
#
|
5
5
|
# Use render_navigation as following to render your navigation:
|
6
6
|
# * call <tt>render_navigation</tt> without :level option to render your complete navigation as nested tree.
|
7
7
|
# * call <tt>render_navigation(:level => x)</tt> to render a specific navigation level (e.g. :level => 1 to render your primary navigation, :level => 2 to render the sub navigation and so forth)
|
8
|
-
# * call <tt>render_navigation(:level => 2..3)</tt> to render navigation levels 2 and 3).
|
8
|
+
# * call <tt>render_navigation(:level => 2..3)</tt> to render navigation levels 2 and 3).
|
9
9
|
# For example, you could use render_navigation(:level => 1) to render your primary navigation as tabs and render_navigation(:level => 2..3) to render the rest of the navigation as a tree in a sidebar.
|
10
|
-
#
|
10
|
+
#
|
11
11
|
# ==== Examples (using Haml)
|
12
12
|
# #primary_navigation= render_navigation(:level => 1)
|
13
|
-
#
|
13
|
+
#
|
14
14
|
# #sub_navigation= render_navigation(:level => 2)
|
15
15
|
#
|
16
16
|
# #nested_navigation= render_navigation
|
@@ -18,42 +18,40 @@ module SimpleNavigation
|
|
18
18
|
# #top_navigation= render_navigation(:level => 1..2)
|
19
19
|
# #sidebar_navigation= render_navigation(:level => 3)
|
20
20
|
module Helpers
|
21
|
-
|
22
|
-
# Renders the navigation according to the specified options-hash.
|
21
|
+
|
22
|
+
# Renders the navigation according to the specified options-hash.
|
23
23
|
#
|
24
24
|
# The following options are supported:
|
25
|
-
# * <tt>:level</tt> - defaults to :all which renders the the sub_navigation for an active primary_navigation inside that active primary_navigation item.
|
25
|
+
# * <tt>:level</tt> - defaults to :all which renders the the sub_navigation for an active primary_navigation inside that active primary_navigation item.
|
26
26
|
# Specify a specific level to only render that level of navigation (e.g. :level => 1 for primary_navigation etc...).
|
27
27
|
# Specifiy a Range of levels to render only those specific levels (e.g. :level => 1..2 to render both your first and second levels, maybe you want to render your third level somewhere else on the page)
|
28
28
|
# * <tt>:expand_all</tt> - defaults to false. If set to true the all specified levels will be rendered as a fully expanded tree (always open). This is useful for javascript menus like Superfish.
|
29
29
|
# * <tt>:context</tt> - specifies the context for which you would render the navigation. Defaults to :default which loads the default navigation.rb (i.e. config/navigation.rb).
|
30
30
|
# If you specify a context then the plugin tries to load the configuration file for that context, e.g. if you call <tt>render_navigation(:context => :admin)</tt> the file config/admin_navigation.rb
|
31
31
|
# will be loaded and used for rendering the navigation.
|
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.
|
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
34
|
def render_navigation(*args)
|
35
35
|
args = [Hash.new] if args.empty?
|
36
36
|
options = extract_backwards_compatible_options(*args)
|
37
37
|
options = {:context => :default, :level => :all}.merge(options)
|
38
38
|
ctx = options.delete(:context)
|
39
|
-
SimpleNavigation.
|
40
|
-
|
41
|
-
|
42
|
-
SimpleNavigation::Configuration.eval_config(self, ctx)
|
43
|
-
end
|
39
|
+
SimpleNavigation.init_adapter_from self
|
40
|
+
SimpleNavigation.load_config(ctx)
|
41
|
+
SimpleNavigation::Configuration.eval_config(ctx)
|
44
42
|
SimpleNavigation.config.items(options[:items]) if options[:items]
|
45
|
-
SimpleNavigation.handle_explicit_navigation
|
43
|
+
SimpleNavigation.handle_explicit_navigation if SimpleNavigation.respond_to?(:handle_explicit_navigation)
|
46
44
|
raise "no primary navigation defined, either use a navigation config file or pass items directly to render_navigation" unless SimpleNavigation.primary_navigation
|
47
45
|
active_item_container = SimpleNavigation.active_item_container_for(options[:level])
|
48
46
|
active_item_container.render(options) unless active_item_container.nil?
|
49
47
|
end
|
50
|
-
|
48
|
+
|
51
49
|
# Deprecated. Renders the primary_navigation with the configured renderer. Calling render_navigation(:level => 0) has the same effect.
|
52
50
|
def render_primary_navigation(options = {})
|
53
51
|
ActiveSupport::Deprecation.warn("SimpleNavigation::Helpers.render_primary_navigation has been deprecated. Please use render_navigation(:level => 1) instead")
|
54
52
|
render_navigation(options.merge(:level => 1))
|
55
53
|
end
|
56
|
-
|
54
|
+
|
57
55
|
# Deprecated. Renders the sub_navigation with the configured renderer. Calling render_navigation(:level => 1) has the same effect.
|
58
56
|
def render_sub_navigation(options = {})
|
59
57
|
ActiveSupport::Deprecation.warn("SimpleNavigation::Helpers.render_primary_navigation has been deprecated. Please use render_navigation(:level => 2) instead")
|
@@ -89,10 +87,10 @@ module SimpleNavigation
|
|
89
87
|
end
|
90
88
|
options
|
91
89
|
end
|
92
|
-
|
90
|
+
|
93
91
|
def deprecated_api!
|
94
92
|
ActiveSupport::Deprecation.warn("You are using a deprecated API of SimpleNavigation::Helpers.render_navigation, please check the documentation on http://wiki.github.com/andi/simple-navigation")
|
95
93
|
end
|
96
|
-
|
94
|
+
|
97
95
|
end
|
98
96
|
end
|
@@ -1,70 +1,54 @@
|
|
1
|
+
require 'forwardable'
|
2
|
+
|
1
3
|
module SimpleNavigation
|
2
4
|
module Renderer
|
3
|
-
|
5
|
+
|
4
6
|
# This is the base class for all renderers.
|
5
7
|
#
|
6
8
|
# A renderer is responsible for rendering an ItemContainer and its containing items to HTML.
|
7
9
|
class Base
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
attr_reader :controller, :options
|
12
|
-
|
13
|
-
class << self
|
14
|
-
|
15
|
-
# Delegates method calls to the controller.
|
16
|
-
def controller_method(*methods)
|
17
|
-
methods.each do |method|
|
18
|
-
delegate method, :to => :controller
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
end
|
23
|
-
|
24
|
-
controller_method :form_authenticity_token, :protect_against_forgery?, :request_forgery_protection_token
|
10
|
+
extend Forwardable
|
11
|
+
|
12
|
+
attr_reader :options, :adapter
|
25
13
|
|
14
|
+
def_delegators :adapter, :link_to, :content_tag
|
15
|
+
|
26
16
|
def initialize(options) #:nodoc:
|
27
17
|
@options = options
|
28
|
-
@
|
18
|
+
@adapter = SimpleNavigation.adapter
|
29
19
|
end
|
30
|
-
|
20
|
+
|
31
21
|
def expand_all?
|
32
22
|
!!options[:expand_all]
|
33
23
|
end
|
34
|
-
|
24
|
+
|
35
25
|
def level
|
36
26
|
options[:level] || :all
|
37
27
|
end
|
38
|
-
|
28
|
+
|
39
29
|
def skip_if_empty?
|
40
30
|
!!options[:skip_if_empty]
|
41
|
-
end
|
42
|
-
|
31
|
+
end
|
32
|
+
|
43
33
|
def include_sub_navigation?(item)
|
44
34
|
consider_sub_navigation?(item) && expand_sub_navigation?(item)
|
45
|
-
end
|
46
|
-
|
35
|
+
end
|
36
|
+
|
47
37
|
def render_sub_navigation_for(item)
|
48
38
|
item.sub_navigation.render(self.options)
|
49
39
|
end
|
50
|
-
|
51
|
-
# Marks the specified input as html_safe (for Rails3). Does nothing if html_safe is not defined on input.
|
52
|
-
#
|
53
|
-
def html_safe(input)
|
54
|
-
input.respond_to?(:html_safe) ? input.html_safe : input
|
55
|
-
end
|
56
40
|
|
57
41
|
# Renders the specified ItemContainer to HTML.
|
58
42
|
#
|
59
43
|
# When implementing a renderer, please consider to call include_sub_navigation? to determin
|
60
44
|
# whether an item's sub_navigation should be rendered or not.
|
61
|
-
#
|
45
|
+
#
|
62
46
|
def render(item_container)
|
63
47
|
raise 'subclass responsibility'
|
64
48
|
end
|
65
|
-
|
49
|
+
|
66
50
|
protected
|
67
|
-
|
51
|
+
|
68
52
|
def consider_sub_navigation?(item)
|
69
53
|
return false if item.sub_navigation.nil?
|
70
54
|
case level
|
@@ -77,11 +61,10 @@ module SimpleNavigation
|
|
77
61
|
end
|
78
62
|
false
|
79
63
|
end
|
80
|
-
|
64
|
+
|
81
65
|
def expand_sub_navigation?(item)
|
82
66
|
expand_all? || item.selected?
|
83
67
|
end
|
84
|
-
|
85
68
|
|
86
69
|
end
|
87
70
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module SimpleNavigation
|
2
2
|
module Renderer
|
3
|
-
|
4
|
-
# Renders an ItemContainer as a <div> element and its containing items as <a> elements.
|
3
|
+
|
4
|
+
# Renders an ItemContainer as a <div> element and its containing items as <a> elements.
|
5
5
|
# It only renders 'selected' elements.
|
6
6
|
#
|
7
7
|
# By default, the renderer sets the item's key as dom_id for the rendered <a> element unless the config option <tt>autogenerate_item_ids</tt> is set to false.
|
@@ -9,10 +9,10 @@ module SimpleNavigation
|
|
9
9
|
# The ItemContainer's dom_class and dom_id are applied to the surrounding <div> element.
|
10
10
|
#
|
11
11
|
class Breadcrumbs < SimpleNavigation::Renderer::Base
|
12
|
-
|
12
|
+
|
13
13
|
def render(item_container)
|
14
14
|
a_tags = a_tags(item_container)
|
15
|
-
content_tag(:div,
|
15
|
+
content_tag(:div, a_tags(item_container).join(join_with), {:id => item_container.dom_id, :class => item_container.dom_class})
|
16
16
|
end
|
17
17
|
|
18
18
|
protected
|
@@ -20,9 +20,9 @@ module SimpleNavigation
|
|
20
20
|
def a_tags(item_container)
|
21
21
|
item_container.items.inject([]) do |list, item|
|
22
22
|
if item.selected?
|
23
|
-
list << link_to(
|
23
|
+
list << link_to(item.name, item.url, {:method => item.method}.merge(item.html_options.except(:class,:id))) if item.selected?
|
24
24
|
if include_sub_navigation?(item)
|
25
|
-
list.concat a_tags(item.sub_navigation)
|
25
|
+
list.concat a_tags(item.sub_navigation)
|
26
26
|
end
|
27
27
|
end
|
28
28
|
list
|
@@ -33,6 +33,6 @@ module SimpleNavigation
|
|
33
33
|
@join_with ||= options[:join_with] || " "
|
34
34
|
end
|
35
35
|
end
|
36
|
-
|
36
|
+
|
37
37
|
end
|
38
38
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module SimpleNavigation
|
2
2
|
module Renderer
|
3
|
-
|
4
|
-
# Renders an ItemContainer as a <div> element and its containing items as <a> elements.
|
3
|
+
|
4
|
+
# Renders an ItemContainer as a <div> element and its containing items as <a> elements.
|
5
5
|
# It adds the 'selected' class to the <a> element that is currently active.
|
6
6
|
#
|
7
7
|
# The Links renderer cannot be used to render nested navigations. If you would like it to use with nested navigations, you have to render each level separately.
|
@@ -11,15 +11,15 @@ module SimpleNavigation
|
|
11
11
|
# The ItemContainer's dom_class and dom_id are applied to the surrounding <div> element.
|
12
12
|
#
|
13
13
|
class Links < SimpleNavigation::Renderer::Base
|
14
|
-
|
14
|
+
|
15
15
|
def render(item_container)
|
16
16
|
div_content = item_container.items.inject([]) do |list, item|
|
17
|
-
list << link_to(
|
17
|
+
list << link_to(item.name, item.url, {:method => item.method}.merge(item.html_options))
|
18
18
|
end.join
|
19
|
-
content_tag(:div,
|
19
|
+
content_tag(:div, div_content, {:id => item_container.dom_id, :class => item_container.dom_class})
|
20
20
|
end
|
21
|
-
|
21
|
+
|
22
22
|
end
|
23
|
-
|
23
|
+
|
24
24
|
end
|
25
25
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module SimpleNavigation
|
2
2
|
module Renderer
|
3
|
-
|
4
|
-
# Renders an ItemContainer as a <ul> element and its containing items as <li> elements.
|
3
|
+
|
4
|
+
# Renders an ItemContainer as a <ul> element and its containing items as <li> elements.
|
5
5
|
# It adds the 'selected' class to li element AND the link inside the li element that is currently active.
|
6
6
|
#
|
7
7
|
# If the sub navigation should be included (based on the level and expand_all options), it renders another <ul> containing the sub navigation inside the active <li> element.
|
@@ -13,19 +13,19 @@ module SimpleNavigation
|
|
13
13
|
def render(item_container)
|
14
14
|
list_content = item_container.items.inject([]) do |list, item|
|
15
15
|
html_options = item.html_options
|
16
|
-
li_content = link_to(
|
16
|
+
li_content = link_to(item.name, item.url, :class => item.selected_class, :method => item.method)
|
17
17
|
if include_sub_navigation?(item)
|
18
18
|
li_content << render_sub_navigation_for(item)
|
19
|
-
end
|
19
|
+
end
|
20
20
|
list << content_tag(:li, li_content, html_options)
|
21
21
|
end.join
|
22
22
|
if skip_if_empty? && item_container.empty?
|
23
23
|
''
|
24
24
|
else
|
25
|
-
content_tag(:ul,
|
25
|
+
content_tag(:ul, list_content, {:id => item_container.dom_id, :class => item_container.dom_class})
|
26
26
|
end
|
27
27
|
end
|
28
28
|
end
|
29
|
-
|
29
|
+
|
30
30
|
end
|
31
31
|
end
|
data/rails/init.rb
CHANGED