simple_navigation 1.4.3 → 1.4.4
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.tar.gz.sig +0 -0
- data/Rakefile +1 -1
- data/lib/simple_navigation.rb +45 -19
- data/simple_navigation.gemspec +2 -2
- metadata +4 -4
- metadata.gz.sig +0 -0
data.tar.gz.sig
CHANGED
Binary file
|
data/Rakefile
CHANGED
@@ -2,7 +2,7 @@ require 'rubygems'
|
|
2
2
|
require 'rake'
|
3
3
|
require 'echoe'
|
4
4
|
|
5
|
-
Echoe.new('simple_navigation', '1.4.
|
5
|
+
Echoe.new('simple_navigation', '1.4.4') do |e|
|
6
6
|
e.description = "Simple navigation menu gem for Ruby on Rails"
|
7
7
|
e.url = "http://github.com/mexpolk/simple_navigation"
|
8
8
|
e.author = "Ivan Torres"
|
data/lib/simple_navigation.rb
CHANGED
@@ -14,11 +14,27 @@ module SimpleNavigation
|
|
14
14
|
# Reset current menu
|
15
15
|
self.current_menu_id = nil
|
16
16
|
|
17
|
-
|
18
|
-
|
17
|
+
options = {
|
18
|
+
:id => navigation[:id],
|
19
|
+
:class => 'simple_navigation'
|
20
|
+
}
|
21
|
+
|
22
|
+
# Set CSS class that user may added
|
23
|
+
if navigation.has_key?(:options) && navigation[:options].has_key?(:class)
|
24
|
+
options[:class] << " #{navigation[:options][:class]}"
|
25
|
+
end
|
19
26
|
|
20
27
|
# Render root menus
|
21
|
-
|
28
|
+
if navigation.has_key?(:menus) && !navigation[:menus].empty?
|
29
|
+
menus = navigation[:menus].enum_with_index.collect do |item, index|
|
30
|
+
item_options = { :class => item[:options][:class].clone || '' }
|
31
|
+
item_options[:class] << ' first' if index == 0
|
32
|
+
item_options[:class] << ' last' if index == navigation[:menus].size - 1
|
33
|
+
render_menu(item, item_options)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
content_tag(:ul, menus || '', options)
|
22
38
|
|
23
39
|
end # simple_navigation(name)
|
24
40
|
|
@@ -28,28 +44,36 @@ module SimpleNavigation
|
|
28
44
|
def render_menu(menu, options = {})
|
29
45
|
|
30
46
|
# Set default html attributes
|
31
|
-
|
32
|
-
html_attrs[:class] = menu[:class] || ""
|
47
|
+
options[:id] = menu[:id]
|
33
48
|
|
34
|
-
#
|
49
|
+
# FIXME: Make the following code block DRY, by including it
|
50
|
+
# on render_menu method
|
51
|
+
|
52
|
+
# Render sub-menus first so we can detect if current menu
|
35
53
|
# is between child menu's
|
36
54
|
menus = ''
|
37
|
-
menus
|
38
|
-
menu[:menus].
|
55
|
+
if menu.has_key?(:menus) && !menu[:menus].empty?
|
56
|
+
menus = menu[:menus].enum_with_index.collect do |item, index|
|
57
|
+
item_options = { :class => item[:options][:class].clone || '' }
|
58
|
+
item_options[:class] << ' first' if index == 0
|
59
|
+
item_options[:class] << ' last' if index == menu[:menus].size - 1
|
60
|
+
render_menu(item, item_options)
|
61
|
+
end
|
62
|
+
menus = content_tag(:ul, menus)
|
63
|
+
end
|
39
64
|
|
40
65
|
# Is this menu is the current?
|
41
66
|
if current_menu?(menu)
|
42
|
-
|
67
|
+
options[:class] << ' current'
|
43
68
|
self.current_menu_id = menu[:id]
|
44
69
|
# If any of the children menus is the current
|
45
70
|
# mark parent menu as current too
|
46
71
|
elsif self.current_menu_id
|
47
|
-
|
48
|
-
self.current_menu_id.to_s.match(/^#{menu[:id]}/)
|
72
|
+
options[:class] << ' current' if self.current_menu_id.to_s.match(/^#{menu[:id]}/)
|
49
73
|
end
|
50
74
|
|
51
75
|
# Render menu
|
52
|
-
content_tag(:li, render_menu_title(menu) + menus,
|
76
|
+
content_tag(:li, render_menu_title(menu) + menus, options)
|
53
77
|
|
54
78
|
end # render_menu(menu)
|
55
79
|
|
@@ -68,7 +92,7 @@ module SimpleNavigation
|
|
68
92
|
menu[:name].to_s.titleize
|
69
93
|
end
|
70
94
|
end
|
71
|
-
link_to(title, (menu.has_key?(:url) ? url_for(menu[:url]) : "#" ))
|
95
|
+
link_to(content_tag(:span, title), (menu.has_key?(:url) ? url_for(menu[:url]) : "#" ))
|
72
96
|
end # render_menu_title(menu)
|
73
97
|
|
74
98
|
# Detects if the menu being rendered is the current
|
@@ -79,13 +103,13 @@ module SimpleNavigation
|
|
79
103
|
(controller.params[:action] == menu[:url][:action])
|
80
104
|
if menu.has_key?(:urls)
|
81
105
|
(menu[:urls].is_a?(Array) ? menu[:urls] : [menu[:urls]]).each do |controllers|
|
82
|
-
(controllers.is_a?(Array) ? controllers : [controllers]).each do |
|
83
|
-
current |= controller.params[:controller] ==
|
84
|
-
if
|
85
|
-
current &= (
|
106
|
+
(controllers.is_a?(Array) ? controllers : [controllers]).each do |item|
|
107
|
+
current |= controller.params[:controller] == item[:controller].gsub(/^\//, "")
|
108
|
+
if item.has_key?(:only)
|
109
|
+
current &= (item[:only].is_a?(Array) ? item[:only] : [item[:only]]).include?(controller.params[:action])
|
86
110
|
end
|
87
|
-
if
|
88
|
-
current &= !((
|
111
|
+
if item.has_key?(:except)
|
112
|
+
current &= !((item[:except].is_a?(Array) ? item[:except] : [item[:except]]).include?(controller.params[:action]))
|
89
113
|
end
|
90
114
|
end
|
91
115
|
end
|
@@ -153,6 +177,7 @@ module SimpleNavigation
|
|
153
177
|
options.merge!(:i18n => self.options[:i18n])
|
154
178
|
options.merge!(:translation => [self.translation, 'menus'].join('.'))
|
155
179
|
options.merge!(:prefix => self.id)
|
180
|
+
options.merge!(:class => "") unless options.has_key?(:class)
|
156
181
|
menu = Menu.new(name, title, options)
|
157
182
|
yield menu if block
|
158
183
|
self.menus << menu.build
|
@@ -191,6 +216,7 @@ module SimpleNavigation
|
|
191
216
|
options.merge!(:i18n => self.options[:i18n])
|
192
217
|
options.merge!(:translation => [self.translation, 'menus'].join('.'))
|
193
218
|
options.merge!(:prefix => self.id)
|
219
|
+
options.merge!(:class => "") unless options.has_key?(:class)
|
194
220
|
menu = Menu.new(name, title, options)
|
195
221
|
yield menu if block
|
196
222
|
self.menus << menu.build
|
data/simple_navigation.gemspec
CHANGED
@@ -2,12 +2,12 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{simple_navigation}
|
5
|
-
s.version = "1.4.
|
5
|
+
s.version = "1.4.4"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Ivan Torres"]
|
9
9
|
s.cert_chain = ["/Users/ivan/.ssh/gem-public_cert.pem"]
|
10
|
-
s.date = %q{2010-09-
|
10
|
+
s.date = %q{2010-09-24}
|
11
11
|
s.description = %q{Simple navigation menu gem for Ruby on Rails}
|
12
12
|
s.email = %q{mexpolk@gmail.com}
|
13
13
|
s.extra_rdoc_files = ["README.rdoc", "lib/simple_navigation.rb"]
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: simple_navigation
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 15
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 4
|
9
|
-
-
|
10
|
-
version: 1.4.
|
9
|
+
- 4
|
10
|
+
version: 1.4.4
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Ivan Torres
|
@@ -36,7 +36,7 @@ cert_chain:
|
|
36
36
|
MKLC1g==
|
37
37
|
-----END CERTIFICATE-----
|
38
38
|
|
39
|
-
date: 2010-09-
|
39
|
+
date: 2010-09-24 00:00:00 -05:00
|
40
40
|
default_executable:
|
41
41
|
dependencies: []
|
42
42
|
|
metadata.gz.sig
CHANGED
Binary file
|