innetra-easy_navigation 2.1.0 → 2.1.2
Sign up to get free protection for your applications and to get access to all the features.
- data/Manifest +6 -0
- data/README.rdoc +2 -1
- data/Rakefile +1 -1
- data/easy_navigation.gemspec +3 -3
- data/generators/easy_navigation/easy_navigation_generator.rb +53 -0
- data/generators/easy_navigation/templates/images/arrow.png +0 -0
- data/generators/easy_navigation/templates/images/arrow.svg +99 -0
- data/generators/easy_navigation/templates/javascripts/easy_navigation.js +37 -0
- data/generators/easy_navigation/templates/stylesheets/sass/easy_navigation.sass +84 -0
- data/lib/easy_navigation.rb +91 -51
- metadata +8 -3
data/Manifest
CHANGED
@@ -1,4 +1,10 @@
|
|
1
1
|
Manifest
|
2
|
+
easy_navigation.gemspec
|
3
|
+
generators/easy_navigation/templates/stylesheets/sass/easy_navigation.sass
|
4
|
+
generators/easy_navigation/templates/javascripts/easy_navigation.js
|
5
|
+
generators/easy_navigation/templates/images/arrow.png
|
6
|
+
generators/easy_navigation/templates/images/arrow.svg
|
7
|
+
generators/easy_navigation/easy_navigation_generator.rb
|
2
8
|
README.rdoc
|
3
9
|
Rakefile
|
4
10
|
init.rb
|
data/README.rdoc
CHANGED
@@ -4,7 +4,8 @@ Rails gem/plugin for generating a tabbed navigation for Rails.
|
|
4
4
|
|
5
5
|
== Requirements
|
6
6
|
|
7
|
-
This gem/plugin is intented to be used with Rails 2.2 as it uses i18n
|
7
|
+
This gem/plugin is intented to be used with Rails 2.2 as it uses i18n,
|
8
|
+
also you'll need to install Haml as it uses Sass for CSS.
|
8
9
|
|
9
10
|
== Install
|
10
11
|
|
data/Rakefile
CHANGED
@@ -2,7 +2,7 @@ require 'rubygems'
|
|
2
2
|
require 'rake'
|
3
3
|
require 'echoe'
|
4
4
|
|
5
|
-
Echoe.new('easy_navigation', '2.1.
|
5
|
+
Echoe.new('easy_navigation', '2.1.2') do |e|
|
6
6
|
e.description = "Easy navigation for Ruby on Rails 2.2 (i18n)"
|
7
7
|
e.url = "http://github.com/innetra/easy_navigation"
|
8
8
|
e.author = "Ivan Torres"
|
data/easy_navigation.gemspec
CHANGED
@@ -2,15 +2,15 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{easy_navigation}
|
5
|
-
s.version = "2.1.
|
5
|
+
s.version = "2.1.2"
|
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
|
-
s.date = %q{2009-
|
9
|
+
s.date = %q{2009-05-02}
|
10
10
|
s.description = %q{Easy navigation for Ruby on Rails 2.2 (i18n)}
|
11
11
|
s.email = %q{mexpolk@gmail.com}
|
12
12
|
s.extra_rdoc_files = ["README.rdoc", "lib/easy_navigation.rb"]
|
13
|
-
s.files = ["Manifest", "README.rdoc", "Rakefile", "init.rb", "lib/easy_navigation.rb"
|
13
|
+
s.files = ["Manifest", "easy_navigation.gemspec", "generators/easy_navigation/templates/stylesheets/sass/easy_navigation.sass", "generators/easy_navigation/templates/javascripts/easy_navigation.js", "generators/easy_navigation/templates/images/arrow.png", "generators/easy_navigation/templates/images/arrow.svg", "generators/easy_navigation/easy_navigation_generator.rb", "README.rdoc", "Rakefile", "init.rb", "lib/easy_navigation.rb"]
|
14
14
|
s.has_rdoc = true
|
15
15
|
s.homepage = %q{http://github.com/innetra/easy_navigation}
|
16
16
|
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Easy_navigation", "--main", "README.rdoc"]
|
@@ -0,0 +1,53 @@
|
|
1
|
+
class EasyNavigationGenerator < Rails::Generator::Base
|
2
|
+
attr_accessor :controllers
|
3
|
+
def manifest
|
4
|
+
|
5
|
+
record do |m|
|
6
|
+
|
7
|
+
# CSS rules for EasyNavigation
|
8
|
+
m.directory("public/stylesheets/sass")
|
9
|
+
m.template "stylesheets/sass/easy_navigation.sass", "public/stylesheets/sass/easy_navigation.sass"
|
10
|
+
|
11
|
+
# Javascript for horizontal dropdown menu's
|
12
|
+
m.directory("public/javascripts")
|
13
|
+
m.template "javascripts/easy_navigation.js", "public/javascripts/easy_navigation.js"
|
14
|
+
|
15
|
+
m.directory("public/images/easy_navigation")
|
16
|
+
m.file "images/arrow.png", "public/images/arrow.png"
|
17
|
+
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
protected
|
22
|
+
|
23
|
+
def extract_routes
|
24
|
+
|
25
|
+
self.controllers = {}
|
26
|
+
|
27
|
+
ActionController::Routing::Routes.routes.each do |route|
|
28
|
+
|
29
|
+
if route.parameter_shell.has_key?(:controller)
|
30
|
+
|
31
|
+
unless self.controllers.has_key?(route.parameter_shell[:controller])
|
32
|
+
self.controllers[route.parameter_shell[:controller]] = { :actions => [] }
|
33
|
+
end
|
34
|
+
|
35
|
+
unless self.controllers[route.parameter_shell[:controller]].include? route.parameter_shell[:action]
|
36
|
+
self.controllers[route.parameter_shell[:controller]][:actions] << route.parameter_shell[:action]
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
|
44
|
+
def build_easy_navigation_configuration
|
45
|
+
extract_routes
|
46
|
+
self.controllers.keys.sort.each do |controller_name|
|
47
|
+
self.controllers[controller_name][:actions].each do |action_name|
|
48
|
+
p "#{controller_name} => #{action_name}"
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
Binary file
|
@@ -0,0 +1,99 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
2
|
+
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
3
|
+
<svg
|
4
|
+
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
5
|
+
xmlns:cc="http://creativecommons.org/ns#"
|
6
|
+
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
7
|
+
xmlns:svg="http://www.w3.org/2000/svg"
|
8
|
+
xmlns="http://www.w3.org/2000/svg"
|
9
|
+
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
10
|
+
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
11
|
+
width="744.09448819"
|
12
|
+
height="1052.3622047"
|
13
|
+
id="svg2"
|
14
|
+
sodipodi:version="0.32"
|
15
|
+
inkscape:version="0.46"
|
16
|
+
sodipodi:docname="arrow.svg"
|
17
|
+
inkscape:output_extension="org.inkscape.output.svg.inkscape">
|
18
|
+
<defs
|
19
|
+
id="defs4">
|
20
|
+
<inkscape:perspective
|
21
|
+
sodipodi:type="inkscape:persp3d"
|
22
|
+
inkscape:vp_x="0 : 526.18109 : 1"
|
23
|
+
inkscape:vp_y="0 : 1000 : 0"
|
24
|
+
inkscape:vp_z="744.09448 : 526.18109 : 1"
|
25
|
+
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
|
26
|
+
id="perspective10" />
|
27
|
+
</defs>
|
28
|
+
<sodipodi:namedview
|
29
|
+
id="base"
|
30
|
+
pagecolor="#ffffff"
|
31
|
+
bordercolor="#666666"
|
32
|
+
borderopacity="1.0"
|
33
|
+
gridtolerance="10000"
|
34
|
+
guidetolerance="10"
|
35
|
+
objecttolerance="10"
|
36
|
+
inkscape:pageopacity="0.0"
|
37
|
+
inkscape:pageshadow="2"
|
38
|
+
inkscape:zoom="12.068065"
|
39
|
+
inkscape:cx="27.92494"
|
40
|
+
inkscape:cy="998.95349"
|
41
|
+
inkscape:document-units="px"
|
42
|
+
inkscape:current-layer="layer1"
|
43
|
+
showgrid="false"
|
44
|
+
inkscape:window-width="1280"
|
45
|
+
inkscape:window-height="725"
|
46
|
+
inkscape:window-x="0"
|
47
|
+
inkscape:window-y="25" />
|
48
|
+
<metadata
|
49
|
+
id="metadata7">
|
50
|
+
<rdf:RDF>
|
51
|
+
<cc:Work
|
52
|
+
rdf:about="">
|
53
|
+
<dc:format>image/svg+xml</dc:format>
|
54
|
+
<dc:type
|
55
|
+
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
56
|
+
</cc:Work>
|
57
|
+
</rdf:RDF>
|
58
|
+
</metadata>
|
59
|
+
<g
|
60
|
+
inkscape:label="Layer 1"
|
61
|
+
inkscape:groupmode="layer"
|
62
|
+
id="layer1">
|
63
|
+
<g
|
64
|
+
id="g2502"
|
65
|
+
inkscape:export-filename="/home/itorres/code/easy_navigation/generators/easy_navigation/templates/images/arrow.png"
|
66
|
+
inkscape:export-xdpi="90"
|
67
|
+
inkscape:export-ydpi="90">
|
68
|
+
<rect
|
69
|
+
inkscape:export-ydpi="90"
|
70
|
+
inkscape:export-xdpi="90"
|
71
|
+
inkscape:export-filename="/home/itorres/Desktop/arrow.png"
|
72
|
+
y="40.312904"
|
73
|
+
x="30.299774"
|
74
|
+
height="14"
|
75
|
+
width="10"
|
76
|
+
id="rect3277"
|
77
|
+
style="fill:none;fill-opacity:1;stroke:none;stroke-width:5;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
78
|
+
<path
|
79
|
+
inkscape:export-ydpi="90"
|
80
|
+
inkscape:export-xdpi="90"
|
81
|
+
inkscape:export-filename="/home/itorres/Desktop/arrow.png"
|
82
|
+
transform="matrix(-0.9483359,0,0,-0.821283,49.36601,77.264811)"
|
83
|
+
d="M 18.52321,39.665869 L 14.832535,39.665869 L 11.141859,39.665869 L 12.987197,36.469651 L 14.832535,33.273432 L 16.677872,36.469651 L 18.52321,39.665869 z"
|
84
|
+
inkscape:randomized="0"
|
85
|
+
inkscape:rounded="0"
|
86
|
+
inkscape:flatsided="false"
|
87
|
+
sodipodi:arg2="1.5707963"
|
88
|
+
sodipodi:arg1="0.52359878"
|
89
|
+
sodipodi:r2="2.1308122"
|
90
|
+
sodipodi:r1="4.2616248"
|
91
|
+
sodipodi:cy="37.535057"
|
92
|
+
sodipodi:cx="14.832535"
|
93
|
+
sodipodi:sides="3"
|
94
|
+
id="path2385"
|
95
|
+
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:5;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
96
|
+
sodipodi:type="star" />
|
97
|
+
</g>
|
98
|
+
</g>
|
99
|
+
</svg>
|
@@ -0,0 +1,37 @@
|
|
1
|
+
var EasyNavigation = Class.create();
|
2
|
+
EasyNavigation.prototype = {
|
3
|
+
|
4
|
+
timeout: null,
|
5
|
+
menu: null,
|
6
|
+
|
7
|
+
initialize: function(navigation) {
|
8
|
+
$(navigation).select('li.tab.drop, li.tab div').each(
|
9
|
+
function(node) {
|
10
|
+
Event.observe(node, 'mouseover', this.displayMenu.bind(this));
|
11
|
+
Event.observe(node, 'mouseout', this.hideMenu.bind(this));
|
12
|
+
}.bind(this)
|
13
|
+
);
|
14
|
+
},
|
15
|
+
|
16
|
+
displayMenu: function(event) {
|
17
|
+
clearTimeout(this.timeout);
|
18
|
+
this.menu = $(Event.element(event)).up('.tab div') ||
|
19
|
+
$(Event.element(event)).down('.tab div') ||
|
20
|
+
$(Event.element(event)).next('.tab div');
|
21
|
+
if (this.menu.style.display == 'none')
|
22
|
+
this.toggleMenu(this.menu);
|
23
|
+
},
|
24
|
+
|
25
|
+
hideMenu: function(event) {
|
26
|
+
if (this.menu.style.display == 'none') {
|
27
|
+
clearTimeout(this.timeout);
|
28
|
+
} else {
|
29
|
+
this.timeout = window.setTimeout(this.toggleMenu.bind(this, this.menu), 1000);
|
30
|
+
}
|
31
|
+
},
|
32
|
+
|
33
|
+
toggleMenu: function(element) {
|
34
|
+
Effect.toggle($(element), 'slide', {duration: 0.3});
|
35
|
+
}
|
36
|
+
|
37
|
+
}
|
@@ -0,0 +1,84 @@
|
|
1
|
+
// Default colors
|
2
|
+
!tab_text_color = #FFF
|
3
|
+
!tab_bg_color = transparent
|
4
|
+
!menu_text_color = #FFF
|
5
|
+
!menu_bg_color = #257291
|
6
|
+
|
7
|
+
// Current tab|menu being viewed
|
8
|
+
!current_tab_text_color = #FFFF00
|
9
|
+
!current_tab_bg_color = #257291
|
10
|
+
!current_menu_text_color = #FFFF00
|
11
|
+
!current_menu_bg_color = #257291
|
12
|
+
|
13
|
+
// Hover style for tab and menus
|
14
|
+
!hover_tab_bg_color = #257291
|
15
|
+
!hover_menu_bg_color = #258BB4
|
16
|
+
|
17
|
+
// Drop down menu image (arrow down)
|
18
|
+
!drop_down_image = "url(/images/easy_navigation/arrow.png)"
|
19
|
+
|
20
|
+
.navigation
|
21
|
+
font-size: 12px
|
22
|
+
font-weight: bold
|
23
|
+
line-height: 30px
|
24
|
+
margin: 0
|
25
|
+
padding: 0
|
26
|
+
|
27
|
+
a
|
28
|
+
display: block
|
29
|
+
padding: 0 10px
|
30
|
+
text-decoration: none
|
31
|
+
|
32
|
+
li
|
33
|
+
list-style: none
|
34
|
+
|
35
|
+
ul
|
36
|
+
margin: 0
|
37
|
+
padding: 0
|
38
|
+
|
39
|
+
.tab
|
40
|
+
float: left
|
41
|
+
margin-right: 5px
|
42
|
+
|
43
|
+
a.tab_link
|
44
|
+
color = !tab_text_color
|
45
|
+
background-color = !tab_bg_color
|
46
|
+
|
47
|
+
div
|
48
|
+
background-color: !tab_bg_color
|
49
|
+
left: auto
|
50
|
+
min-width: 150px
|
51
|
+
padding: 0
|
52
|
+
position: absolute
|
53
|
+
top: auto
|
54
|
+
z-index: 10000
|
55
|
+
|
56
|
+
.menu, a.menu_link
|
57
|
+
color = !menu_text_color
|
58
|
+
background-color = !menu_bg_color
|
59
|
+
|
60
|
+
.drop
|
61
|
+
background:
|
62
|
+
image: url(/images/arrow.png)
|
63
|
+
repeat: no-repeat
|
64
|
+
position: 95% 60%
|
65
|
+
padding-right: 5px
|
66
|
+
|
67
|
+
// Current
|
68
|
+
.tab.current
|
69
|
+
background-color = !current_tab_bg_color
|
70
|
+
a.tab_link
|
71
|
+
color = !current_tab_text_color
|
72
|
+
|
73
|
+
.menu.current a.menu_link
|
74
|
+
background-color = !current_menu_bg_color
|
75
|
+
color = !current_menu_text_color
|
76
|
+
|
77
|
+
// Hovers
|
78
|
+
.tab
|
79
|
+
&:hover
|
80
|
+
background-color = !hover_tab_bg_color
|
81
|
+
|
82
|
+
.menu a.menu_link
|
83
|
+
&:hover
|
84
|
+
background-color = !hover_menu_bg_color
|
data/lib/easy_navigation.rb
CHANGED
@@ -13,65 +13,95 @@ module EasyNavigation
|
|
13
13
|
tabs_html = ""
|
14
14
|
|
15
15
|
EasyNavigation::Builder.navigation[name][:tabs].each do |tab|
|
16
|
+
|
16
17
|
menus_html = ""
|
17
18
|
current_tab = false
|
19
|
+
|
18
20
|
tab[:menus].each do |menu|
|
19
|
-
|
20
|
-
|
21
|
-
|
21
|
+
|
22
|
+
current_tab = true if current = current_menu?(menu)
|
23
|
+
|
24
|
+
# Render menu's HTML class attribute
|
25
|
+
menu_class = ""
|
26
|
+
menu_class << menu_class_name
|
27
|
+
menu_class << " current" if current
|
28
|
+
|
29
|
+
# Render menu's HTML
|
22
30
|
menus_html << self.render_menu(menu[:name], menu[:text],
|
23
|
-
menu[:url].merge!(:skip_relative_url_root => true),
|
24
|
-
("#{menu_class_name} current" if current) || menu_class_name)
|
31
|
+
menu[:url].merge!(:skip_relative_url_root => true), menu_class)
|
25
32
|
if separator
|
26
|
-
|
33
|
+
menus_html << self.render_separator(separator_class_name)
|
27
34
|
end
|
35
|
+
|
36
|
+
end
|
37
|
+
|
38
|
+
# If tab has no menus mark detect if match current url
|
39
|
+
current_tab = current_menu?(tab) if tab[:menus].empty?
|
40
|
+
|
41
|
+
# Render tab's HTML class attribute
|
42
|
+
tab_class = ""
|
43
|
+
tab_class << tab_class_name
|
44
|
+
tab_class << " current" if current_tab
|
45
|
+
|
46
|
+
if tab[:menus].empty?
|
47
|
+
tabs_html << self.render_empty_tab(tab[:name], tab[:text],
|
48
|
+
tab[:url].merge!(:skip_relative_url_root => true),
|
49
|
+
tab_class)
|
50
|
+
else
|
51
|
+
tab_class << " drop"
|
52
|
+
tabs_html << self.render_tab(tab[:name], tab[:text],
|
53
|
+
tab[:url].merge!(:skip_relative_url_root => true),
|
54
|
+
menus_html, tab_class)
|
28
55
|
end
|
29
|
-
|
30
|
-
tab[:text],
|
31
|
-
tab[:url].merge!(:skip_relative_url_root => true),
|
32
|
-
menus_html, ("#{tab_class_name} current" if current_tab) || tab_class_name)
|
56
|
+
|
33
57
|
end
|
34
58
|
self.render_navigation("navigation_" << name.to_s, tabs_html, navigation_class_name)
|
35
59
|
end
|
36
60
|
|
37
61
|
protected
|
38
62
|
|
39
|
-
|
40
|
-
|
41
|
-
|
63
|
+
def render_separator(class_name)
|
64
|
+
content_tag("li", "|", :class => class_name)
|
65
|
+
end
|
42
66
|
|
43
|
-
|
44
|
-
|
45
|
-
|
67
|
+
def render_menu(id, text, url, class_name)
|
68
|
+
content_tag("li", link_to(text, url, :class => "menu_link"),
|
69
|
+
:id => id, :class => class_name)
|
70
|
+
end
|
46
71
|
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
72
|
+
def render_tab(id, text, url, menus_html, class_name)
|
73
|
+
content_tag(:li,"#{link_to(text, url, :class => 'tab_link')} #{content_tag(:div,
|
74
|
+
content_tag(:ul, menus_html), :id => "#{id}_menus", :style => "display:none;")}",
|
75
|
+
:id => id, :class => class_name)
|
76
|
+
end
|
52
77
|
|
53
|
-
|
54
|
-
|
55
|
-
|
78
|
+
def render_empty_tab(id, text, url, class_name)
|
79
|
+
content_tag("li", link_to(text, url, :class => 'tab_link'), :id => id, :class => class_name)
|
80
|
+
end
|
56
81
|
|
57
|
-
|
58
|
-
|
59
|
-
(
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
82
|
+
def render_navigation(id, tabs_html, class_name)
|
83
|
+
tabs_html << javascript_tag("var navigation = new EasyNavigation('#{id}');")
|
84
|
+
content_tag("ul", tabs_html, :id => id, :class => class_name)
|
85
|
+
end
|
86
|
+
|
87
|
+
def current_menu?(menu)
|
88
|
+
current = controller.params[:controller] == menu[:url][:controller].gsub(/^\//, "") &&
|
89
|
+
(controller.action_name == menu[:url][:action] || menu[:url][:action] == nil)
|
90
|
+
if menu.has_key?:on
|
91
|
+
(menu[:on].is_a?(Array) ? menu[:on] : [menu[:on]]).each do |controllers|
|
92
|
+
(controllers.is_a?(Array) ? controllers : [controllers]).each do |c|
|
93
|
+
current |= controller.params[:controller] == c[:controller].gsub(/^\//, "")
|
94
|
+
if c.has_key?:only
|
95
|
+
current &= (c[:only].is_a?(Array) ? c[:only] : [c[:only]]).include?controller.action_name
|
96
|
+
end
|
97
|
+
if c.has_key?:except
|
98
|
+
current &= !((c[:except].is_a?(Array) ? c[:except] : [c[:except]]).include?controller.action_name)
|
99
|
+
end
|
69
100
|
end
|
70
101
|
end
|
71
102
|
end
|
103
|
+
current
|
72
104
|
end
|
73
|
-
current
|
74
|
-
end
|
75
105
|
|
76
106
|
end # EasyNavigation::Helper
|
77
107
|
|
@@ -120,9 +150,11 @@ module EasyNavigation
|
|
120
150
|
end
|
121
151
|
|
122
152
|
def tab(name, options = {}, &block)
|
123
|
-
options
|
124
|
-
|
125
|
-
|
153
|
+
# Pass i18n and prefix options
|
154
|
+
options.merge!(:i18n => self.options[:i18n] || false)
|
155
|
+
options.merge!(:prefix => [self.options[:prefix], self.name])
|
156
|
+
tab = Tab.new(name, options)
|
157
|
+
yield tab if block
|
126
158
|
self.tabs << tab.build
|
127
159
|
end
|
128
160
|
|
@@ -139,14 +171,19 @@ module EasyNavigation
|
|
139
171
|
self.menus = []
|
140
172
|
self.name = name
|
141
173
|
self.options = options
|
142
|
-
self.
|
143
|
-
|
174
|
+
if self.options[:i18n] == true
|
175
|
+
self.text = I18n.t([self.options[:prefix], self.name, "title"].join("."))
|
176
|
+
else
|
177
|
+
self.text = name.to_s.gsub(/_/, " ").gsub(/\b('?[a-z])/) { $1.capitalize }
|
178
|
+
end
|
144
179
|
end
|
145
180
|
|
146
181
|
def menu(name, options = {}, &block)
|
147
|
-
options
|
148
|
-
|
149
|
-
|
182
|
+
# Pass i18n and prefix options
|
183
|
+
options.merge!(:i18n => self.options[:i18n] || false)
|
184
|
+
options.merge!(:prefix => [self.options[:prefix], self.name, "menus"])
|
185
|
+
menu = Menu.new(name, options)
|
186
|
+
yield menu if block
|
150
187
|
self.menus << menu.build
|
151
188
|
end
|
152
189
|
|
@@ -164,15 +201,18 @@ module EasyNavigation
|
|
164
201
|
|
165
202
|
def initialize(name, options = {})
|
166
203
|
self.active_urls = []
|
167
|
-
self.name = name
|
168
204
|
self.options = options
|
169
|
-
self.
|
170
|
-
|
205
|
+
self.name = [options[:prefix], name].join("_")
|
206
|
+
if options[:i18n] == true
|
207
|
+
self.text = I18n.t([self.options[:prefix], name].join("."))
|
208
|
+
else
|
209
|
+
self.text = name.to_s.gsub(/_/, " ").gsub(/\b('?[a-z])/) { $1.capitalize }
|
210
|
+
end
|
171
211
|
end
|
172
212
|
|
173
213
|
def build
|
174
|
-
{ :name => self.
|
175
|
-
:text => text,
|
214
|
+
{ :name => self.name,
|
215
|
+
:text => self.text,
|
176
216
|
:url => self.options[:url],
|
177
217
|
:on => self.active_urls }
|
178
218
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: innetra-easy_navigation
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.1.
|
4
|
+
version: 2.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ivan Torres
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-
|
12
|
+
date: 2009-05-02 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -24,11 +24,16 @@ extra_rdoc_files:
|
|
24
24
|
- lib/easy_navigation.rb
|
25
25
|
files:
|
26
26
|
- Manifest
|
27
|
+
- easy_navigation.gemspec
|
28
|
+
- generators/easy_navigation/templates/stylesheets/sass/easy_navigation.sass
|
29
|
+
- generators/easy_navigation/templates/javascripts/easy_navigation.js
|
30
|
+
- generators/easy_navigation/templates/images/arrow.png
|
31
|
+
- generators/easy_navigation/templates/images/arrow.svg
|
32
|
+
- generators/easy_navigation/easy_navigation_generator.rb
|
27
33
|
- README.rdoc
|
28
34
|
- Rakefile
|
29
35
|
- init.rb
|
30
36
|
- lib/easy_navigation.rb
|
31
|
-
- easy_navigation.gemspec
|
32
37
|
has_rdoc: true
|
33
38
|
homepage: http://github.com/innetra/easy_navigation
|
34
39
|
post_install_message:
|