tabs_on_rails 0.8.2 → 1.0.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.rdoc +9 -0
- data/Manifest +11 -10
- data/README.rdoc +19 -3
- data/Rakefile +8 -13
- data/lib/tabs_on_rails/controller_mixin.rb +7 -8
- data/lib/tabs_on_rails/tabs.rb +7 -101
- data/lib/tabs_on_rails/tabs/builder.rb +79 -0
- data/lib/tabs_on_rails/tabs/tabs_builder.rb +81 -0
- data/lib/tabs_on_rails/version.rb +4 -4
- data/tabs_on_rails.gemspec +11 -11
- data/test/controller_mixin_helpers_test.rb +4 -4
- data/test/controller_mixin_with_controller_test.rb +19 -1
- data/test/fixtures/mixin/{standard.html.erb → default.html.erb} +0 -0
- data/test/fixtures/mixin/with_open_close_tabs.html.erb +4 -0
- data/test/{builder_test.rb → tabs/builder_test.rb} +27 -23
- data/test/{tabs_builder_test.rb → tabs/tabs_builder_test.rb} +20 -2
- data/test/test_helper.rb +1 -6
- metadata +26 -22
- data/test/tabs_on_rails_test.rb +0 -9
data/CHANGELOG.rdoc
CHANGED
@@ -1,6 +1,15 @@
|
|
1
1
|
= Changelog
|
2
2
|
|
3
3
|
|
4
|
+
== Release 1.0.0
|
5
|
+
|
6
|
+
* ADDED: Ability to pass arbitrary options to open_tabs and close_tags method. Thanks to aaronchi (closes #315)
|
7
|
+
|
8
|
+
* REMOVED: tabs_tag no longer accepts a Builder as first parameter. Removed deprecation warning.
|
9
|
+
|
10
|
+
First stable release.
|
11
|
+
|
12
|
+
|
4
13
|
== Release 0.8.2
|
5
14
|
|
6
15
|
* CHANGED: GitHub Gem Building is Defunct. The gem is now hosted on Gemcutter (see http://github.com/blog/515-gem-building-is-defunct)
|
data/Manifest
CHANGED
@@ -1,23 +1,24 @@
|
|
1
1
|
CHANGELOG.rdoc
|
2
|
+
LICENSE.rdoc
|
3
|
+
Manifest
|
4
|
+
README.rdoc
|
5
|
+
Rakefile
|
2
6
|
init.rb
|
3
7
|
install.rb
|
8
|
+
lib/tabs_on_rails.rb
|
4
9
|
lib/tabs_on_rails/controller_mixin.rb
|
5
10
|
lib/tabs_on_rails/tabs.rb
|
11
|
+
lib/tabs_on_rails/tabs/builder.rb
|
12
|
+
lib/tabs_on_rails/tabs/tabs_builder.rb
|
6
13
|
lib/tabs_on_rails/version.rb
|
7
|
-
lib/tabs_on_rails.rb
|
8
|
-
LICENSE.rdoc
|
9
|
-
Manifest
|
10
14
|
rails/init.rb
|
11
|
-
Rakefile
|
12
|
-
README.rdoc
|
13
|
-
tabs_on_rails.gemspec
|
14
15
|
tasks/tabs_on_rails_tasks.rake
|
15
|
-
test/builder_test.rb
|
16
16
|
test/controller_mixin_helpers_test.rb
|
17
17
|
test/controller_mixin_test.rb
|
18
18
|
test/controller_mixin_with_controller_test.rb
|
19
|
-
test/fixtures/mixin/
|
20
|
-
test/
|
21
|
-
test/
|
19
|
+
test/fixtures/mixin/default.html.erb
|
20
|
+
test/fixtures/mixin/with_open_close_tabs.html.erb
|
21
|
+
test/tabs/builder_test.rb
|
22
|
+
test/tabs/tabs_builder_test.rb
|
22
23
|
test/test_helper.rb
|
23
24
|
uninstall.rb
|
data/README.rdoc
CHANGED
@@ -84,6 +84,22 @@ Use the <tt>current_tab</tt> helper method if you need to access the value of cu
|
|
84
84
|
# In your view
|
85
85
|
<p>The name of current tab is <%= current_tab %>.</p>
|
86
86
|
|
87
|
+
The open tag can be customized with the `:open_tabs` option.
|
88
|
+
|
89
|
+
<% tabs_tag :open_tabs => { :id => "tabs", :class => "cool" } do |tab| %>
|
90
|
+
<%= tab.home 'Homepage', root_path %>
|
91
|
+
<%= tab.dashboard 'Dashboard', dashboard_path %>
|
92
|
+
<%= tab.account 'Account', account_path %>
|
93
|
+
<% end %>
|
94
|
+
|
95
|
+
<ul id="tabs" class="cool">
|
96
|
+
<li><a href="/">Homepage</a></li>
|
97
|
+
<li><a href="/dashboard">Dashboard</a></li>
|
98
|
+
<li><a href="/account">Account</a></li>
|
99
|
+
</ul>
|
100
|
+
|
101
|
+
Further customizations require a custom Builder (see below).
|
102
|
+
|
87
103
|
|
88
104
|
== Restricting set_tab scope
|
89
105
|
|
@@ -172,7 +188,7 @@ To switch namespace in your template, just pass the :namespace option to the <tt
|
|
172
188
|
|
173
189
|
=== Namespace scope
|
174
190
|
|
175
|
-
As a bonus feature, the namespace
|
191
|
+
As a bonus feature, the namespace needs to be unique within current request scope, not necessarily across the entire application.
|
176
192
|
|
177
193
|
Back to the previous example, you can reuse the same namespace in the other controllers. In this way, you can reuse your templates as well.
|
178
194
|
|
@@ -208,7 +224,7 @@ The <tt>Builder</tt> is responsible for creating the tabs HTML code. This librar
|
|
208
224
|
|
209
225
|
=== Understanding the Builder
|
210
226
|
|
211
|
-
Builders act as formatters. A Builder
|
227
|
+
Builders act as formatters. A Builder encapsulates all the logic behind the tab creation including the code required to toggle tabs status.
|
212
228
|
|
213
229
|
When the <tt>tabs_tag</tt> helper is called, it creates a new <tt>Tabs</tt> instance with selected Builder.
|
214
230
|
If you don't provide a custom builder, then <tt>Tabs::TabsBuilder</tt> is used by default.
|
@@ -222,7 +238,7 @@ Additional overridable methods include:
|
|
222
238
|
<tt>close_tabs</tt>:: the method called after the tab set
|
223
239
|
<tt>tab_for</tt>:: the method called to create a single tab item
|
224
240
|
|
225
|
-
The following example creates a custom tab builder called
|
241
|
+
The following example creates a custom tab builder called <tt>MenuTabBuilder</tt>.
|
226
242
|
|
227
243
|
class MenuTabBuilder < TabsOnRails::Tabs::Builder
|
228
244
|
def tab_for(tab, name, options, item_options = {})
|
data/Rakefile
CHANGED
@@ -1,18 +1,13 @@
|
|
1
|
+
$:.unshift(File.dirname(__FILE__) + "/lib")
|
2
|
+
|
1
3
|
require 'rubygems'
|
2
4
|
require 'rake'
|
3
5
|
require 'echoe'
|
4
|
-
|
5
|
-
$:.unshift(File.dirname(__FILE__) + "/lib")
|
6
6
|
require 'tabs_on_rails'
|
7
7
|
|
8
8
|
|
9
9
|
PKG_NAME = ENV['PKG_NAME'] || TabsOnRails::GEM
|
10
10
|
PKG_VERSION = ENV['PKG_VERSION'] || TabsOnRails::VERSION
|
11
|
-
PKG_SUMMARY = "A simple Ruby on Rails plugin for creating and managing Tabs."
|
12
|
-
PKG_FILES = FileList.new("{lib,rails,tasks,test}/**/*") do |files|
|
13
|
-
files.include %w(*.{rdoc,rb})
|
14
|
-
files.include %w(Rakefile)
|
15
|
-
end
|
16
11
|
RUBYFORGE_PROJECT = nil
|
17
12
|
|
18
13
|
if ENV['SNAPSHOT'].to_i == 1
|
@@ -23,20 +18,20 @@ end
|
|
23
18
|
Echoe.new(PKG_NAME, PKG_VERSION) do |p|
|
24
19
|
p.author = "Simone Carletti"
|
25
20
|
p.email = "weppos@weppos.net"
|
26
|
-
p.summary =
|
21
|
+
p.summary = "A simple Ruby on Rails plugin for creating and managing Tabs."
|
22
|
+
p.url = "http://code.simonecarletti.com/tabsonrails"
|
27
23
|
p.description = <<-EOD
|
28
24
|
TabsOnRails is a simple Ruby on Rails plugin for creating and managing Tabs. \
|
29
25
|
It provides helpers for creating tabs with a flexible interface.
|
30
26
|
EOD
|
31
|
-
p.url = "http://code.simonecarletti.com/tabsonrails"
|
32
27
|
p.project = RUBYFORGE_PROJECT
|
33
28
|
|
34
29
|
p.need_zip = true
|
35
|
-
p.rcov_options = ["--main << README.rdoc -x Rakefile -x rcov"]
|
36
|
-
p.rdoc_pattern = /^(lib|CHANGELOG.rdoc|README.rdoc|LICENSE.rdoc)/
|
37
30
|
|
38
|
-
p.development_dependencies += ["rake
|
39
|
-
"echoe
|
31
|
+
p.development_dependencies += ["rake ~>0.8.7",
|
32
|
+
"echoe ~>3.2.0"]
|
33
|
+
|
34
|
+
p.rcov_options = ["-Itest -x Rakefile,rcov,json,mocha,rack,actionpack,activesupport"]
|
40
35
|
end
|
41
36
|
|
42
37
|
|
@@ -115,16 +115,15 @@ module TabsOnRails
|
|
115
115
|
|
116
116
|
def tabs_tag(options = {}, &block)
|
117
117
|
raise LocalJumpError, "no block given" unless block_given?
|
118
|
+
|
119
|
+
options = options.dup
|
120
|
+
open_tabs_options = options.delete(:open_tabs) || {}
|
121
|
+
close_tabs_options = options.delete(:close_tabs) || {}
|
122
|
+
tabs = Tabs.new(self, { :namespace => :default }.merge(options))
|
118
123
|
|
119
|
-
|
120
|
-
ActiveSupport::Deprecation.warn('tabs_tag takes a Hash of options, no longer a builder class. Use :builder => BuilderClass.', caller)
|
121
|
-
options = { :builder => options }
|
122
|
-
end
|
123
|
-
tabs = Tabs.new(self, { :namespace => :default }.merge(options))
|
124
|
-
|
125
|
-
concat(tabs.open_tabs.to_s)
|
124
|
+
concat(tabs.open_tabs(open_tabs_options).to_s)
|
126
125
|
yield tabs
|
127
|
-
concat(tabs.close_tabs.to_s)
|
126
|
+
concat(tabs.close_tabs(close_tabs_options).to_s)
|
128
127
|
end
|
129
128
|
|
130
129
|
end
|
data/lib/tabs_on_rails/tabs.rb
CHANGED
@@ -14,107 +14,13 @@
|
|
14
14
|
#++
|
15
15
|
|
16
16
|
|
17
|
+
require 'tabs_on_rails/tabs/builder'
|
18
|
+
require 'tabs_on_rails/tabs/tabs_builder'
|
19
|
+
|
20
|
+
|
17
21
|
module TabsOnRails
|
18
|
-
|
19
|
-
class Tabs
|
20
|
-
|
21
|
-
#
|
22
|
-
# = Builder
|
23
|
-
#
|
24
|
-
# The Builder class represents the interface for any custom Builder.
|
25
|
-
#
|
26
|
-
# To create a custom Builder extend this class
|
27
|
-
# and implement the following abstract methods:
|
28
|
-
#
|
29
|
-
# * tab_for(args)
|
30
|
-
#
|
31
|
-
class Builder
|
32
|
-
|
33
|
-
# Initializes a new builder with +context+.
|
34
|
-
#
|
35
|
-
# Note. You should not overwrite this method to prevent incompatibility with future versions.
|
36
|
-
def initialize(context, options = {})
|
37
|
-
@context = context
|
38
|
-
@namespace = options.delete(:namespace) || :default
|
39
|
-
end
|
40
|
-
|
41
|
-
# Returns true if +tab+ is the +current_tab+.
|
42
|
-
#
|
43
|
-
# ==== Examples
|
44
|
-
#
|
45
|
-
# class MyController < ApplicationController
|
46
|
-
# tab :foo
|
47
|
-
# end
|
48
|
-
#
|
49
|
-
# current_tab? :foo # => true
|
50
|
-
# current_tab? 'foo' # => true
|
51
|
-
# current_tab? :bar # => false
|
52
|
-
# current_tab? 'bar' # => false
|
53
|
-
#
|
54
|
-
def current_tab?(tab)
|
55
|
-
tab.to_s == @context.current_tab(@namespace).to_s
|
56
|
-
end
|
57
22
|
|
58
|
-
|
59
|
-
# Creates and returns a tab with given +args+.
|
60
|
-
#
|
61
|
-
# ==== Raises
|
62
|
-
#
|
63
|
-
# NotImplemented:: you should implement this method in your custom Builder.
|
64
|
-
#
|
65
|
-
def tab_for(*args)
|
66
|
-
raise NotImplementedError
|
67
|
-
end
|
68
|
-
|
69
|
-
# Overwrite this method to use a custom open tag for your tabs.
|
70
|
-
def open_tabs
|
71
|
-
end
|
72
|
-
|
73
|
-
# Overwrite this method to use a custom close tag for your tabs.
|
74
|
-
def close_tabs
|
75
|
-
end
|
76
|
-
|
77
|
-
end
|
78
|
-
|
79
|
-
#
|
80
|
-
# = Tabs Builder
|
81
|
-
#
|
82
|
-
# The TabsBuilder is and example of custom Builder.
|
83
|
-
# It creates a new tab
|
84
|
-
#
|
85
|
-
class TabsBuilder < Builder
|
86
|
-
|
87
|
-
# Implements Builder#tab_for.
|
88
|
-
# Returns a link_to +tab+ with +name+ and +options+ if +tab+ is not the current tab,
|
89
|
-
# a simple tab name wrapped by a span tag otherwise.
|
90
|
-
#
|
91
|
-
# current_tab? :foo # => true
|
92
|
-
#
|
93
|
-
# tab_for :foo, 'Foo', foo_path
|
94
|
-
# # => <li><span>Foo</span></li>
|
95
|
-
#
|
96
|
-
# tab_for :bar, 'Bar', bar_path
|
97
|
-
# # => <li><a href="/link/to/bar">Bar</a></li>
|
98
|
-
#
|
99
|
-
def tab_for(tab, name, options)
|
100
|
-
content = @context.link_to_unless(current_tab?(tab), name, options) do
|
101
|
-
@context.content_tag(:span, name)
|
102
|
-
end
|
103
|
-
@context.content_tag(:li, content)
|
104
|
-
end
|
105
|
-
|
106
|
-
# Implements Builder#open_tabs.
|
107
|
-
def open_tabs
|
108
|
-
'<ul>'
|
109
|
-
end
|
110
|
-
|
111
|
-
# Implements Builder#close_tabs.
|
112
|
-
def close_tabs
|
113
|
-
'</ul>'
|
114
|
-
end
|
115
|
-
|
116
|
-
end
|
117
|
-
|
23
|
+
class Tabs
|
118
24
|
|
119
25
|
def initialize(context, options = {}, &block)
|
120
26
|
@context = context
|
@@ -122,8 +28,8 @@ module TabsOnRails
|
|
122
28
|
end
|
123
29
|
|
124
30
|
%w(open_tabs close_tabs).each do |method|
|
125
|
-
define_method(method) do
|
126
|
-
@builder.send(method)
|
31
|
+
define_method(method) do |*args|
|
32
|
+
@builder.send(method, *args)
|
127
33
|
end
|
128
34
|
end
|
129
35
|
|
@@ -0,0 +1,79 @@
|
|
1
|
+
#
|
2
|
+
# = Tabs on Rails
|
3
|
+
#
|
4
|
+
# A simple Ruby on Rails plugin for creating and managing Tabs.
|
5
|
+
#
|
6
|
+
#
|
7
|
+
# Category:: Rails
|
8
|
+
# Package:: TabsOnRails
|
9
|
+
# Author:: Simone Carletti <weppos@weppos.net>
|
10
|
+
# License:: MIT License
|
11
|
+
#
|
12
|
+
#--
|
13
|
+
#
|
14
|
+
#++
|
15
|
+
|
16
|
+
|
17
|
+
module TabsOnRails
|
18
|
+
class Tabs
|
19
|
+
|
20
|
+
#
|
21
|
+
# = Builder
|
22
|
+
#
|
23
|
+
# The Builder class represents the interface for any custom Builder.
|
24
|
+
#
|
25
|
+
# To create a custom Builder extend this class
|
26
|
+
# and implement the following abstract methods:
|
27
|
+
#
|
28
|
+
# * tab_for(args)
|
29
|
+
#
|
30
|
+
class Builder
|
31
|
+
|
32
|
+
# Initializes a new builder with +context+.
|
33
|
+
#
|
34
|
+
# Note. You should not overwrite this method to prevent incompatibility with future versions.
|
35
|
+
def initialize(context, options = {})
|
36
|
+
@context = context
|
37
|
+
@namespace = options.delete(:namespace) || :default
|
38
|
+
end
|
39
|
+
|
40
|
+
# Returns true if +tab+ is the +current_tab+.
|
41
|
+
#
|
42
|
+
# ==== Examples
|
43
|
+
#
|
44
|
+
# class MyController < ApplicationController
|
45
|
+
# tab :foo
|
46
|
+
# end
|
47
|
+
#
|
48
|
+
# current_tab? :foo # => true
|
49
|
+
# current_tab? 'foo' # => true
|
50
|
+
# current_tab? :bar # => false
|
51
|
+
# current_tab? 'bar' # => false
|
52
|
+
#
|
53
|
+
def current_tab?(tab)
|
54
|
+
tab.to_s == @context.current_tab(@namespace).to_s
|
55
|
+
end
|
56
|
+
|
57
|
+
|
58
|
+
# Creates and returns a tab with given +args+.
|
59
|
+
#
|
60
|
+
# ==== Raises
|
61
|
+
#
|
62
|
+
# NotImplemented:: you should implement this method in your custom Builder.
|
63
|
+
#
|
64
|
+
def tab_for(*args)
|
65
|
+
raise NotImplementedError
|
66
|
+
end
|
67
|
+
|
68
|
+
# Overwrite this method to use a custom open tag for your tabs.
|
69
|
+
def open_tabs(*args)
|
70
|
+
end
|
71
|
+
|
72
|
+
# Overwrite this method to use a custom close tag for your tabs.
|
73
|
+
def close_tabs(*args)
|
74
|
+
end
|
75
|
+
|
76
|
+
end
|
77
|
+
|
78
|
+
end
|
79
|
+
end
|
@@ -0,0 +1,81 @@
|
|
1
|
+
#
|
2
|
+
# = Tabs on Rails
|
3
|
+
#
|
4
|
+
# A simple Ruby on Rails plugin for creating and managing Tabs.
|
5
|
+
#
|
6
|
+
#
|
7
|
+
# Category:: Rails
|
8
|
+
# Package:: TabsOnRails
|
9
|
+
# Author:: Simone Carletti <weppos@weppos.net>
|
10
|
+
# License:: MIT License
|
11
|
+
#
|
12
|
+
#--
|
13
|
+
#
|
14
|
+
#++
|
15
|
+
|
16
|
+
|
17
|
+
module TabsOnRails
|
18
|
+
class Tabs
|
19
|
+
|
20
|
+
#
|
21
|
+
# = Tabs Builder
|
22
|
+
#
|
23
|
+
# The TabsBuilder is and example of custom Builder.
|
24
|
+
# It creates a new tab
|
25
|
+
#
|
26
|
+
class TabsBuilder < Builder
|
27
|
+
|
28
|
+
# Implements Builder#tab_for.
|
29
|
+
# Returns a link_to +tab+ with +name+ and +options+ if +tab+ is not the current tab,
|
30
|
+
# a simple tab name wrapped by a span tag otherwise.
|
31
|
+
#
|
32
|
+
# current_tab? :foo # => true
|
33
|
+
#
|
34
|
+
# tab_for :foo, 'Foo', foo_path
|
35
|
+
# # => <li><span>Foo</span></li>
|
36
|
+
#
|
37
|
+
# tab_for :bar, 'Bar', bar_path
|
38
|
+
# # => <li><a href="/link/to/bar">Bar</a></li>
|
39
|
+
#
|
40
|
+
def tab_for(tab, name, options)
|
41
|
+
content = @context.link_to_unless(current_tab?(tab), name, options) do
|
42
|
+
@context.content_tag(:span, name)
|
43
|
+
end
|
44
|
+
@context.content_tag(:li, content)
|
45
|
+
end
|
46
|
+
|
47
|
+
# Implements Builder#open_tabs.
|
48
|
+
#
|
49
|
+
# Returns an unordered list open tag.
|
50
|
+
# The <tt>options</tt> is used to customize the HTML attributes of the tag.
|
51
|
+
#
|
52
|
+
# open_tag
|
53
|
+
# # => "<ul>"
|
54
|
+
#
|
55
|
+
# open_tag :class => "centered"
|
56
|
+
# # => "<ul class=\"centered\">"
|
57
|
+
#
|
58
|
+
def open_tabs(options = {})
|
59
|
+
@context.tag("ul", options, open = true)
|
60
|
+
end
|
61
|
+
|
62
|
+
# Implements Builder#close_tabs.
|
63
|
+
#
|
64
|
+
# Returns an unordered list close tag.
|
65
|
+
# The <tt>options</tt> hash is ignored. It exists only for
|
66
|
+
# coeherence with the parent Builder API.
|
67
|
+
#
|
68
|
+
# close_tag
|
69
|
+
# # => "</ul>"
|
70
|
+
#
|
71
|
+
# close_tag :class => "centered"
|
72
|
+
# # => "</ul>"
|
73
|
+
#
|
74
|
+
def close_tabs(options = {})
|
75
|
+
"</ul>"
|
76
|
+
end
|
77
|
+
|
78
|
+
end
|
79
|
+
|
80
|
+
end
|
81
|
+
end
|
@@ -17,15 +17,15 @@
|
|
17
17
|
module TabsOnRails
|
18
18
|
|
19
19
|
module Version
|
20
|
-
MAJOR =
|
21
|
-
MINOR =
|
22
|
-
TINY =
|
20
|
+
MAJOR = 1
|
21
|
+
MINOR = 0
|
22
|
+
TINY = 0
|
23
23
|
|
24
24
|
STRING = [MAJOR, MINOR, TINY].join('.')
|
25
25
|
end
|
26
26
|
|
27
27
|
VERSION = Version::STRING
|
28
|
-
STATUS = '
|
28
|
+
STATUS = 'stable'
|
29
29
|
BUILD = ''.match(/(\d+)/).to_a.first
|
30
30
|
|
31
31
|
end
|
data/tabs_on_rails.gemspec
CHANGED
@@ -2,36 +2,36 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{tabs_on_rails}
|
5
|
-
s.version = "0.
|
5
|
+
s.version = "1.0.0"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Simone Carletti"]
|
9
|
-
s.date = %q{2009-10-
|
9
|
+
s.date = %q{2009-10-29}
|
10
10
|
s.description = %q{ TabsOnRails is a simple Ruby on Rails plugin for creating and managing Tabs. It provides helpers for creating tabs with a flexible interface.
|
11
11
|
}
|
12
12
|
s.email = %q{weppos@weppos.net}
|
13
|
-
s.extra_rdoc_files = ["CHANGELOG.rdoc", "lib/tabs_on_rails/controller_mixin.rb", "lib/tabs_on_rails/tabs.rb", "lib/tabs_on_rails/
|
14
|
-
s.files = ["CHANGELOG.rdoc", "init.rb", "install.rb", "lib/tabs_on_rails
|
13
|
+
s.extra_rdoc_files = ["CHANGELOG.rdoc", "LICENSE.rdoc", "README.rdoc", "lib/tabs_on_rails.rb", "lib/tabs_on_rails/controller_mixin.rb", "lib/tabs_on_rails/tabs.rb", "lib/tabs_on_rails/tabs/builder.rb", "lib/tabs_on_rails/tabs/tabs_builder.rb", "lib/tabs_on_rails/version.rb", "tasks/tabs_on_rails_tasks.rake"]
|
14
|
+
s.files = ["CHANGELOG.rdoc", "LICENSE.rdoc", "Manifest", "README.rdoc", "Rakefile", "init.rb", "install.rb", "lib/tabs_on_rails.rb", "lib/tabs_on_rails/controller_mixin.rb", "lib/tabs_on_rails/tabs.rb", "lib/tabs_on_rails/tabs/builder.rb", "lib/tabs_on_rails/tabs/tabs_builder.rb", "lib/tabs_on_rails/version.rb", "rails/init.rb", "tasks/tabs_on_rails_tasks.rake", "test/controller_mixin_helpers_test.rb", "test/controller_mixin_test.rb", "test/controller_mixin_with_controller_test.rb", "test/fixtures/mixin/default.html.erb", "test/fixtures/mixin/with_open_close_tabs.html.erb", "test/tabs/builder_test.rb", "test/tabs/tabs_builder_test.rb", "test/test_helper.rb", "uninstall.rb", "tabs_on_rails.gemspec"]
|
15
15
|
s.homepage = %q{http://code.simonecarletti.com/tabsonrails}
|
16
16
|
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Tabs_on_rails", "--main", "README.rdoc"]
|
17
17
|
s.require_paths = ["lib"]
|
18
18
|
s.rubygems_version = %q{1.3.5}
|
19
19
|
s.summary = %q{A simple Ruby on Rails plugin for creating and managing Tabs.}
|
20
|
-
s.test_files = ["test/
|
20
|
+
s.test_files = ["test/controller_mixin_helpers_test.rb", "test/controller_mixin_test.rb", "test/controller_mixin_with_controller_test.rb", "test/tabs/builder_test.rb", "test/tabs/tabs_builder_test.rb", "test/test_helper.rb"]
|
21
21
|
|
22
22
|
if s.respond_to? :specification_version then
|
23
23
|
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
24
24
|
s.specification_version = 3
|
25
25
|
|
26
26
|
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
27
|
-
s.add_development_dependency(%q<rake>, ["
|
28
|
-
s.add_development_dependency(%q<echoe>, ["
|
27
|
+
s.add_development_dependency(%q<rake>, ["~> 0.8.7"])
|
28
|
+
s.add_development_dependency(%q<echoe>, ["~> 3.2.0"])
|
29
29
|
else
|
30
|
-
s.add_dependency(%q<rake>, ["
|
31
|
-
s.add_dependency(%q<echoe>, ["
|
30
|
+
s.add_dependency(%q<rake>, ["~> 0.8.7"])
|
31
|
+
s.add_dependency(%q<echoe>, ["~> 3.2.0"])
|
32
32
|
end
|
33
33
|
else
|
34
|
-
s.add_dependency(%q<rake>, ["
|
35
|
-
s.add_dependency(%q<echoe>, ["
|
34
|
+
s.add_dependency(%q<rake>, ["~> 0.8.7"])
|
35
|
+
s.add_dependency(%q<echoe>, ["~> 3.2.0"])
|
36
36
|
end
|
37
37
|
end
|
@@ -23,13 +23,13 @@ class NilBoundariesBuilder < TabsOnRails::Tabs::Builder
|
|
23
23
|
end
|
24
24
|
|
25
25
|
class NilOpenBoundaryBuilder < NilBoundariesBuilder
|
26
|
-
def close_tabs
|
26
|
+
def close_tabs(options = {})
|
27
27
|
'<br />'
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
31
31
|
class NilCloseBoundaryBuilder < NilBoundariesBuilder
|
32
|
-
def open_tabs
|
32
|
+
def open_tabs(options = {})
|
33
33
|
'<br />'
|
34
34
|
end
|
35
35
|
end
|
@@ -57,8 +57,8 @@ class ControllerMixinHelpersTest < ActionView::TestCase
|
|
57
57
|
assert_equal(:custom, builder.instance_variable_get(:'@namespace'))
|
58
58
|
end
|
59
59
|
end
|
60
|
-
|
61
|
-
|
60
|
+
|
61
|
+
|
62
62
|
def test_tabs_tag_should_not_concat_open_close_tabs_when_nil
|
63
63
|
content = tabs_tag(:builder => NilBoundariesBuilder) do |t|
|
64
64
|
concat t.single('Single', '#')
|
@@ -16,7 +16,7 @@ class ControllerMixinWithControllerTest < ActionController::TestCase
|
|
16
16
|
|
17
17
|
def method_missing(method, *args)
|
18
18
|
if method =~ /^action_(.*)/
|
19
|
-
render :action => (params[:template] || '
|
19
|
+
render :action => (params[:template] || 'default')
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
@@ -33,6 +33,23 @@ class ControllerMixinWithControllerTest < ActionController::TestCase
|
|
33
33
|
end
|
34
34
|
|
35
35
|
|
36
|
+
def test_render_default
|
37
|
+
get :action_dashboard
|
38
|
+
assert_equal(%Q{<ul>
|
39
|
+
<li><span>Dashboard</span></li>
|
40
|
+
<li><a href="/w">Welcome</a></li>
|
41
|
+
</ul>}, @response.body)
|
42
|
+
end
|
43
|
+
|
44
|
+
def test_render_with_open_close_tabs
|
45
|
+
get :action_dashboard, :template => "with_open_close_tabs"
|
46
|
+
assert_equal(%Q{<ul id="tabs">
|
47
|
+
<li><span>Dashboard</span></li>
|
48
|
+
<li><a href="/w">Welcome</a></li>
|
49
|
+
</ul>}, @response.body)
|
50
|
+
end
|
51
|
+
|
52
|
+
|
36
53
|
def test_set_tab
|
37
54
|
get :action_dashboard
|
38
55
|
assert_equal(:dashboard, controller.current_tab)
|
@@ -64,6 +81,7 @@ class ControllerMixinWithControllerTest < ActionController::TestCase
|
|
64
81
|
</ul>}, @response.body)
|
65
82
|
end
|
66
83
|
|
84
|
+
|
67
85
|
def test_current_tab
|
68
86
|
get :action_dashboard
|
69
87
|
assert_equal :dashboard, controller.current_tab
|
File without changes
|
@@ -1,26 +1,26 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
|
-
class
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
3
|
+
class BuilderTest < ActiveSupport::TestCase
|
4
|
+
|
5
|
+
BuilderTemplate = Class.new do
|
6
|
+
include ActionView::Helpers::TagHelper
|
7
|
+
include ActionView::Helpers::UrlHelper
|
8
|
+
|
9
|
+
def current_tab(namespace)
|
10
|
+
case namespace
|
11
|
+
when nil, :default
|
12
|
+
:dashboard
|
13
|
+
when :foospace
|
14
|
+
:footab
|
15
|
+
else
|
16
|
+
:elsetab
|
17
|
+
end
|
15
18
|
end
|
16
19
|
end
|
17
|
-
end
|
18
|
-
|
19
|
-
|
20
|
-
class BuilderTest < ActiveSupport::TestCase
|
21
20
|
|
22
21
|
def setup
|
23
22
|
@template = BuilderTemplate.new
|
23
|
+
@builder = TabsOnRails::Tabs::Builder.new(@template)
|
24
24
|
end
|
25
25
|
|
26
26
|
|
@@ -34,7 +34,6 @@ class BuilderTest < ActiveSupport::TestCase
|
|
34
34
|
end
|
35
35
|
|
36
36
|
def test_initialize_should_set_context
|
37
|
-
@builder = TabsOnRails::Tabs::Builder.new(@template)
|
38
37
|
assert_equal(@template, @builder.instance_variable_get(:'@context'))
|
39
38
|
end
|
40
39
|
|
@@ -65,21 +64,26 @@ class BuilderTest < ActiveSupport::TestCase
|
|
65
64
|
|
66
65
|
|
67
66
|
def test_open_tabs
|
68
|
-
@builder
|
69
|
-
|
67
|
+
assert_equal nil, @builder.open_tabs
|
68
|
+
end
|
69
|
+
|
70
|
+
def test_open_tabs_with_options
|
71
|
+
assert_equal nil, @builder.open_tabs(:foo => "bar")
|
70
72
|
end
|
71
73
|
|
72
74
|
def test_close_tabs
|
73
|
-
@builder
|
74
|
-
|
75
|
+
assert_equal nil, @builder.close_tabs
|
76
|
+
end
|
77
|
+
|
78
|
+
def test_close_tabs_with_options
|
79
|
+
assert_equal nil, @builder.close_tabs(:foo => "bar")
|
75
80
|
end
|
76
81
|
|
77
82
|
|
78
83
|
def test_tab_for_should_raise_not_implemented_error
|
79
|
-
@builder = TabsOnRails::Tabs::Builder.new(@template)
|
80
84
|
assert_raise(NotImplementedError) { @builder.tab_for }
|
81
85
|
assert_raise(NotImplementedError) { @builder.tab_for('foo') }
|
82
86
|
assert_raise(NotImplementedError) { @builder.tab_for('foo', 'bar') }
|
83
87
|
end
|
84
88
|
|
85
|
-
end
|
89
|
+
end
|
@@ -2,7 +2,7 @@ require 'test_helper'
|
|
2
2
|
|
3
3
|
class TabsBuilderTest < ActionView::TestCase
|
4
4
|
|
5
|
-
|
5
|
+
TabsBuilderTemplate = Class.new do
|
6
6
|
include ActionView::Helpers::TagHelper
|
7
7
|
include ActionView::Helpers::UrlHelper
|
8
8
|
|
@@ -22,7 +22,25 @@ class TabsBuilderTest < ActionView::TestCase
|
|
22
22
|
@template = TabsBuilderTemplate.new
|
23
23
|
@builder = TabsOnRails::Tabs::TabsBuilder.new(@template)
|
24
24
|
end
|
25
|
-
|
25
|
+
|
26
|
+
|
27
|
+
def test_open_tabs
|
28
|
+
assert_equal '<ul>', @builder.open_tabs
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_open_tabs_with_options
|
32
|
+
assert_equal '<ul style="foo">', @builder.open_tabs(:style => "foo")
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_close_tabs
|
36
|
+
assert_equal "</ul>", @builder.close_tabs
|
37
|
+
end
|
38
|
+
|
39
|
+
def test_close_tabs_with_options
|
40
|
+
assert_equal '</ul>', @builder.close_tabs(:foo => "bar")
|
41
|
+
end
|
42
|
+
|
43
|
+
|
26
44
|
def test_should_implement_builder
|
27
45
|
assert_equal(TabsOnRails::Tabs::Builder, TabsOnRails::Tabs::TabsBuilder.superclass)
|
28
46
|
end
|
data/test/test_helper.rb
CHANGED
@@ -1,8 +1,6 @@
|
|
1
|
-
|
2
|
-
|
3
1
|
require 'rubygems'
|
4
2
|
gem 'rails', '~>2.3.0'
|
5
|
-
gem 'mocha', '0.9.7'
|
3
|
+
gem 'mocha', '~>0.9.7'
|
6
4
|
|
7
5
|
# Remember! Due to some Mocha internal changes,
|
8
6
|
# Rails 2.2.x requires Mocha 0.9.5 and
|
@@ -10,12 +8,9 @@ gem 'mocha', '0.9.7'
|
|
10
8
|
# gem 'rails', '2.2.2'
|
11
9
|
# gem 'mocha', '0.9.5'
|
12
10
|
|
13
|
-
require 'mocha'
|
14
11
|
require 'test/unit'
|
15
12
|
require 'active_support'
|
16
13
|
require 'action_controller'
|
17
|
-
require 'action_controller/cgi_ext'
|
18
|
-
require 'action_controller/test_process'
|
19
14
|
require 'action_view/test_case'
|
20
15
|
|
21
16
|
$:.unshift File.dirname(__FILE__) + '/../lib'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tabs_on_rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Simone Carletti
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-10-
|
12
|
+
date: 2009-10-29 00:00:00 +01:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -18,9 +18,9 @@ dependencies:
|
|
18
18
|
version_requirement:
|
19
19
|
version_requirements: !ruby/object:Gem::Requirement
|
20
20
|
requirements:
|
21
|
-
- -
|
21
|
+
- - ~>
|
22
22
|
- !ruby/object:Gem::Version
|
23
|
-
version:
|
23
|
+
version: 0.8.7
|
24
24
|
version:
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: echoe
|
@@ -28,9 +28,9 @@ dependencies:
|
|
28
28
|
version_requirement:
|
29
29
|
version_requirements: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ~>
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 3.2.0
|
34
34
|
version:
|
35
35
|
description: " TabsOnRails is a simple Ruby on Rails plugin for creating and managing Tabs. It provides helpers for creating tabs with a flexible interface.\n"
|
36
36
|
email: weppos@weppos.net
|
@@ -40,36 +40,41 @@ extensions: []
|
|
40
40
|
|
41
41
|
extra_rdoc_files:
|
42
42
|
- CHANGELOG.rdoc
|
43
|
+
- LICENSE.rdoc
|
44
|
+
- README.rdoc
|
45
|
+
- lib/tabs_on_rails.rb
|
43
46
|
- lib/tabs_on_rails/controller_mixin.rb
|
44
47
|
- lib/tabs_on_rails/tabs.rb
|
48
|
+
- lib/tabs_on_rails/tabs/builder.rb
|
49
|
+
- lib/tabs_on_rails/tabs/tabs_builder.rb
|
45
50
|
- lib/tabs_on_rails/version.rb
|
46
|
-
-
|
47
|
-
- LICENSE.rdoc
|
48
|
-
- README.rdoc
|
51
|
+
- tasks/tabs_on_rails_tasks.rake
|
49
52
|
files:
|
50
53
|
- CHANGELOG.rdoc
|
54
|
+
- LICENSE.rdoc
|
55
|
+
- Manifest
|
56
|
+
- README.rdoc
|
57
|
+
- Rakefile
|
51
58
|
- init.rb
|
52
59
|
- install.rb
|
60
|
+
- lib/tabs_on_rails.rb
|
53
61
|
- lib/tabs_on_rails/controller_mixin.rb
|
54
62
|
- lib/tabs_on_rails/tabs.rb
|
63
|
+
- lib/tabs_on_rails/tabs/builder.rb
|
64
|
+
- lib/tabs_on_rails/tabs/tabs_builder.rb
|
55
65
|
- lib/tabs_on_rails/version.rb
|
56
|
-
- lib/tabs_on_rails.rb
|
57
|
-
- LICENSE.rdoc
|
58
|
-
- Manifest
|
59
66
|
- rails/init.rb
|
60
|
-
- Rakefile
|
61
|
-
- README.rdoc
|
62
|
-
- tabs_on_rails.gemspec
|
63
67
|
- tasks/tabs_on_rails_tasks.rake
|
64
|
-
- test/builder_test.rb
|
65
68
|
- test/controller_mixin_helpers_test.rb
|
66
69
|
- test/controller_mixin_test.rb
|
67
70
|
- test/controller_mixin_with_controller_test.rb
|
68
|
-
- test/fixtures/mixin/
|
69
|
-
- test/
|
70
|
-
- test/
|
71
|
+
- test/fixtures/mixin/default.html.erb
|
72
|
+
- test/fixtures/mixin/with_open_close_tabs.html.erb
|
73
|
+
- test/tabs/builder_test.rb
|
74
|
+
- test/tabs/tabs_builder_test.rb
|
71
75
|
- test/test_helper.rb
|
72
76
|
- uninstall.rb
|
77
|
+
- tabs_on_rails.gemspec
|
73
78
|
has_rdoc: true
|
74
79
|
homepage: http://code.simonecarletti.com/tabsonrails
|
75
80
|
licenses: []
|
@@ -104,10 +109,9 @@ signing_key:
|
|
104
109
|
specification_version: 3
|
105
110
|
summary: A simple Ruby on Rails plugin for creating and managing Tabs.
|
106
111
|
test_files:
|
107
|
-
- test/builder_test.rb
|
108
112
|
- test/controller_mixin_helpers_test.rb
|
109
113
|
- test/controller_mixin_test.rb
|
110
114
|
- test/controller_mixin_with_controller_test.rb
|
111
|
-
- test/
|
112
|
-
- test/
|
115
|
+
- test/tabs/builder_test.rb
|
116
|
+
- test/tabs/tabs_builder_test.rb
|
113
117
|
- test/test_helper.rb
|