xebec 2.4.0 → 2.5.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/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.
|
1
|
+
2.5.0
|
@@ -93,7 +93,7 @@ module Xebec
|
|
93
93
|
is_current = is_current_nav_item?(item, href)
|
94
94
|
klass = item.name.to_s
|
95
95
|
klass << " #{Xebec.currently_selected_nav_item_class}" if is_current
|
96
|
-
helper.content_tag
|
96
|
+
helper.content_tag(*list_item_tag(item, klass, text, href, is_current)) do
|
97
97
|
if is_current
|
98
98
|
helper.content_tag :span, text
|
99
99
|
else
|
@@ -102,6 +102,18 @@ module Xebec
|
|
102
102
|
end
|
103
103
|
end
|
104
104
|
|
105
|
+
# @param [Xebec::NavItem] item the navigation item
|
106
|
+
# @param [String] klass the HTML class attribute generated (including
|
107
|
+
# the "current" class if applicable)
|
108
|
+
# @param [String] text
|
109
|
+
# @param [String] href
|
110
|
+
# @param [true, false] is_current
|
111
|
+
# @return the first two arguments to a <tt>content_tag</tt> call --
|
112
|
+
# the name and HTML properties of the tag
|
113
|
+
def list_item_tag(item, klass, text, href, is_current)
|
114
|
+
return :li, :class => klass
|
115
|
+
end
|
116
|
+
|
105
117
|
def text_for_nav_item(item)
|
106
118
|
item_name = item.name
|
107
119
|
I18n.t "navbar.#{bar.name}.#{item_name}", :default => item_name.to_s.titleize
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'xebec/nav_bar_renderer'
|
2
|
+
|
3
|
+
module Xebec
|
4
|
+
|
5
|
+
# Replaces the default Xebec::NavBarRenderer with a version
|
6
|
+
# that supports separate "text" and "title" internationalization
|
7
|
+
# options for each navigation item. Instead of
|
8
|
+
# "navbar.#{bar.name}.#{item_name}" for the text, use
|
9
|
+
# "navbar.#{bar.name}.#{item_name}.text". Additionally,
|
10
|
+
# use "navbar.#{bar.name}.#{item_name}.title" for a separate
|
11
|
+
# title. The title will default to the text if not specified.
|
12
|
+
#
|
13
|
+
# @see Xebec::NavBarRenderer
|
14
|
+
class TitleEnhancedNavBarRenderer < ::Xebec::NavBarRenderer
|
15
|
+
|
16
|
+
protected
|
17
|
+
|
18
|
+
def list_item_tag(item, klass, text, href, is_current)
|
19
|
+
return :li, :class => klass, :title => title_for_nav_item(item, text)
|
20
|
+
end
|
21
|
+
|
22
|
+
def text_for_nav_item(item)
|
23
|
+
item_name = item.name
|
24
|
+
I18n.t "navbar.#{bar.name}.#{item_name}.text", :default => item_name.to_s.titleize
|
25
|
+
end
|
26
|
+
|
27
|
+
def title_for_nav_item(item, text)
|
28
|
+
item_name = item.name
|
29
|
+
I18n.t "navbar.#{bar.name}.#{item_name}.title", :default => text
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
|
36
|
+
Xebec::renderer_class = Xebec::TitleEnhancedNavBarRenderer
|
@@ -0,0 +1,85 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), 'test_helper')
|
2
|
+
require 'xebec'
|
3
|
+
|
4
|
+
class TitleEnhancedNavBarRendererTest < Test::Unit::TestCase
|
5
|
+
|
6
|
+
def setup
|
7
|
+
@old_renderer_class = Xebec::renderer_class
|
8
|
+
load 'xebec/title_enhanced_nav_bar_renderer.rb'
|
9
|
+
clear_translations!
|
10
|
+
@bar = Xebec::NavBar.new('elements')
|
11
|
+
@helper = new_nav_bar_helper
|
12
|
+
@renderer = Xebec::renderer_class.new(@bar, @helper)
|
13
|
+
@bar.nav_item :zn, '/elements/zn'
|
14
|
+
end
|
15
|
+
|
16
|
+
def teardown
|
17
|
+
Xebec::renderer_class = @old_renderer_class
|
18
|
+
end
|
19
|
+
|
20
|
+
context 'using the title-enhanced renderer' do
|
21
|
+
|
22
|
+
should 'replace the default renderer class automatically' do
|
23
|
+
assert_equal Xebec::TitleEnhancedNavBarRenderer, Xebec::renderer_class
|
24
|
+
end
|
25
|
+
|
26
|
+
context 'with neither text nor a title translation specified' do
|
27
|
+
should "use the nav item's name titleized for the link text" do
|
28
|
+
assert_select_from @renderer.to_s, 'ul li.zn' do
|
29
|
+
assert_select 'a', 'Zn'
|
30
|
+
end
|
31
|
+
end
|
32
|
+
should "use the nav item's name titleized for the <li>'s title" do
|
33
|
+
assert_select_from @renderer.to_s, 'ul li.zn[title="Zn"]'
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
context 'with a text but not a title translation specified' do
|
38
|
+
setup do
|
39
|
+
define_translation 'navbar.elements.zn.text', 'Zinc'
|
40
|
+
@bar.nav_item :zn, '/zn'
|
41
|
+
end
|
42
|
+
should "use the text translation for the link text" do
|
43
|
+
assert_select_from @renderer.to_s, 'ul li.zn' do
|
44
|
+
assert_select 'a', 'Zinc'
|
45
|
+
end
|
46
|
+
end
|
47
|
+
should "use the text translation for the <li>'s title" do
|
48
|
+
assert_select_from @renderer.to_s, 'ul li.zn[title="Zinc"]'
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
context 'with a title but no text translation specified' do
|
53
|
+
setup do
|
54
|
+
define_translation 'navbar.elements.zn.title', 'Zinc'
|
55
|
+
@bar.nav_item :zn, '/zn'
|
56
|
+
end
|
57
|
+
should "use the nav item's name titleized for the link text" do
|
58
|
+
assert_select_from @renderer.to_s, 'ul li.zn' do
|
59
|
+
assert_select 'a', 'Zn'
|
60
|
+
end
|
61
|
+
end
|
62
|
+
should "use the title translation for the <li>'s title" do
|
63
|
+
assert_select_from @renderer.to_s, 'ul li.zn[title="Zinc"]'
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
context 'with both a title and a text translation specified' do
|
68
|
+
setup do
|
69
|
+
define_translation 'navbar.elements.zn.text', 'Zinc'
|
70
|
+
define_translation 'navbar.elements.zn.title', '30: Zinc'
|
71
|
+
@bar.nav_item :zn, '/zn'
|
72
|
+
end
|
73
|
+
should "use the text translation for the link text" do
|
74
|
+
assert_select_from @renderer.to_s, 'ul li.zn' do
|
75
|
+
assert_select 'a', 'Zinc'
|
76
|
+
end
|
77
|
+
end
|
78
|
+
should "use the title translation for the <li>'s title" do
|
79
|
+
assert_select_from @renderer.to_s, 'ul li.zn[title="30: Zinc"]'
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
end
|
84
|
+
|
85
|
+
end
|
@@ -1,16 +1,21 @@
|
|
1
1
|
require File.join(File.dirname(__FILE__), 'test_helper')
|
2
2
|
require 'xebec'
|
3
|
-
require 'xebec/web_app_theme_renderer'
|
4
3
|
|
5
4
|
class WebAppThemeRendererTest < Test::Unit::TestCase
|
6
5
|
|
7
6
|
def setup
|
7
|
+
@old_renderer_class = Xebec::renderer_class
|
8
|
+
load 'xebec/web_app_theme_renderer.rb'
|
8
9
|
@bar = Xebec::NavBar.new('plants')
|
9
10
|
@helper = new_nav_bar_helper
|
10
11
|
@renderer = Xebec::renderer_class.new(@bar, @helper)
|
11
12
|
@bar.nav_item :baz, '/baz'
|
12
13
|
end
|
13
14
|
|
15
|
+
def teardown
|
16
|
+
Xebec::renderer_class = @old_renderer_class
|
17
|
+
end
|
18
|
+
|
14
19
|
context 'using the Web-App-Theme support' do
|
15
20
|
should 'replace the default renderer class automatically' do
|
16
21
|
assert_equal Xebec::WebAppThemeRenderer, Xebec::renderer_class
|
data/xebec.gemspec
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{xebec}
|
8
|
-
s.version = "2.
|
8
|
+
s.version = "2.5.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["James A. Rosen"]
|
@@ -55,6 +55,7 @@ Gem::Specification.new do |s|
|
|
55
55
|
"lib/xebec/nav_bar_renderer.rb",
|
56
56
|
"lib/xebec/nav_item.rb",
|
57
57
|
"lib/xebec/stylesheet_generator.rb",
|
58
|
+
"lib/xebec/title_enhanced_nav_bar_renderer.rb",
|
58
59
|
"lib/xebec/web_app_theme_renderer.rb",
|
59
60
|
"rails/init.rb",
|
60
61
|
"tasks/README.md",
|
@@ -64,6 +65,7 @@ Gem::Specification.new do |s|
|
|
64
65
|
"test/nav_bar_renderer_test.rb",
|
65
66
|
"test/nav_bar_test.rb",
|
66
67
|
"test/test_helper.rb",
|
68
|
+
"test/title_enhanced_nav_bar_renderer_test.rb",
|
67
69
|
"test/web_app_theme_renderer_test.rb",
|
68
70
|
"xebec.gemspec"
|
69
71
|
]
|
@@ -79,6 +81,7 @@ Gem::Specification.new do |s|
|
|
79
81
|
"test/nav_bar_renderer_test.rb",
|
80
82
|
"test/nav_bar_test.rb",
|
81
83
|
"test/test_helper.rb",
|
84
|
+
"test/title_enhanced_nav_bar_renderer_test.rb",
|
82
85
|
"test/web_app_theme_renderer_test.rb"
|
83
86
|
]
|
84
87
|
|
metadata
CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 2
|
7
|
-
-
|
7
|
+
- 5
|
8
8
|
- 0
|
9
|
-
version: 2.
|
9
|
+
version: 2.5.0
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- James A. Rosen
|
@@ -107,6 +107,7 @@ files:
|
|
107
107
|
- lib/xebec/nav_bar_renderer.rb
|
108
108
|
- lib/xebec/nav_item.rb
|
109
109
|
- lib/xebec/stylesheet_generator.rb
|
110
|
+
- lib/xebec/title_enhanced_nav_bar_renderer.rb
|
110
111
|
- lib/xebec/web_app_theme_renderer.rb
|
111
112
|
- rails/init.rb
|
112
113
|
- tasks/README.md
|
@@ -116,6 +117,7 @@ files:
|
|
116
117
|
- test/nav_bar_renderer_test.rb
|
117
118
|
- test/nav_bar_test.rb
|
118
119
|
- test/test_helper.rb
|
120
|
+
- test/title_enhanced_nav_bar_renderer_test.rb
|
119
121
|
- test/web_app_theme_renderer_test.rb
|
120
122
|
- xebec.gemspec
|
121
123
|
has_rdoc: true
|
@@ -160,4 +162,5 @@ test_files:
|
|
160
162
|
- test/nav_bar_renderer_test.rb
|
161
163
|
- test/nav_bar_test.rb
|
162
164
|
- test/test_helper.rb
|
165
|
+
- test/title_enhanced_nav_bar_renderer_test.rb
|
163
166
|
- test/web_app_theme_renderer_test.rb
|