simple-navigation 3.0.0.beta1 → 3.0.0.beta2
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 +4 -0
- data/Rakefile +2 -2
- data/VERSION +1 -0
- data/lib/simple_navigation/adapters/sinatra.rb +0 -10
- data/lib/simple_navigation/core/configuration.rb +1 -7
- data/lib/simple_navigation/rendering/helpers.rb +5 -46
- data/spec/lib/simple_navigation/core/configuration_spec.rb +0 -9
- data/spec/lib/simple_navigation/core/item_container_spec.rb +1 -0
- data/spec/lib/simple_navigation/rails_controller_methods_spec.rb +4 -6
- data/spec/lib/simple_navigation/rendering/helpers_spec.rb +3 -53
- metadata +6 -6
- data/VERSION.yml +0 -4
data/CHANGELOG
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
*3.0.0.beta2
|
2
|
+
|
3
|
+
* moving code for initializing plugin in sinatra to separate gem
|
4
|
+
|
1
5
|
*3.0.0.beta1
|
2
6
|
|
3
7
|
* moving deprecated rails controller methods (navigation, current_navigation) to separate file 'rails_controller_methods'. Deprecations removed. File can be required explicitly if controller methods should be still available.
|
data/Rakefile
CHANGED
@@ -34,10 +34,10 @@ begin
|
|
34
34
|
require 'jeweler'
|
35
35
|
Jeweler::Tasks.new do |gemspec|
|
36
36
|
gemspec.name = "simple-navigation"
|
37
|
-
gemspec.summary = "
|
37
|
+
gemspec.summary = "simple-navigation is a ruby library for creating navigations (with multiple levels) for your Rails2, Rails3, Sinatra or Padrino application."
|
38
38
|
gemspec.email = "andreas.schacke@gmail.com"
|
39
39
|
gemspec.homepage = "http://github.com/andi/simple-navigation"
|
40
|
-
gemspec.description = "With the simple-navigation gem installed you can easily create multilevel navigations for your
|
40
|
+
gemspec.description = "With the simple-navigation gem installed you can easily create multilevel navigations for your Rails, Sinatra or Padrino applications. The navigation is defined in a single configuration file. It supports automatic as well as explicit highlighting of the currently active navigation through regular expressions."
|
41
41
|
gemspec.add_development_dependency('rspec', '>= 1.2.8')
|
42
42
|
gemspec.add_dependency('activesupport', '>= 2.3.2')
|
43
43
|
gemspec.authors = ["Andi Schacke"]
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
3.0.0
|
@@ -64,13 +64,3 @@ module SimpleNavigation
|
|
64
64
|
end
|
65
65
|
end
|
66
66
|
end
|
67
|
-
|
68
|
-
module SimpleNavigation
|
69
|
-
|
70
|
-
# Adds registered method to SimpleNavigation. This is called when executing 'register SimpleNavigation'.
|
71
|
-
def self.registered(app)
|
72
|
-
register
|
73
|
-
app.helpers Helpers
|
74
|
-
end
|
75
|
-
|
76
|
-
end
|
@@ -7,7 +7,7 @@ module SimpleNavigation
|
|
7
7
|
include Singleton
|
8
8
|
|
9
9
|
attr_accessor :renderer, :selected_class, :autogenerate_item_ids, :id_generator, :auto_highlight
|
10
|
-
attr_reader :
|
10
|
+
attr_reader :primary_navigation
|
11
11
|
|
12
12
|
class << self
|
13
13
|
|
@@ -32,12 +32,6 @@ module SimpleNavigation
|
|
32
32
|
@auto_highlight = true
|
33
33
|
end
|
34
34
|
|
35
|
-
# Adds a deprecation warning when this options is set in the config file
|
36
|
-
def render_all_levels=(do_it)
|
37
|
-
ActiveSupport::Deprecation.warn("Setting render_all_levels in the config-file has been deprected. Please use render_navigation(:expand_all => true) instead")
|
38
|
-
@render_all_levels = do_it
|
39
|
-
end
|
40
|
-
|
41
35
|
# This is the main method for specifying the navigation items. It can be used in two ways:
|
42
36
|
#
|
43
37
|
# 1. Declaratively specify your items in the config/navigation.rb file using a block. It then yields an SimpleNavigation::ItemContainer for adding navigation items.
|
@@ -31,10 +31,8 @@ module SimpleNavigation
|
|
31
31
|
# will be loaded and used for rendering the navigation.
|
32
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
|
-
def render_navigation(
|
35
|
-
|
36
|
-
options = extract_backwards_compatible_options(*args)
|
37
|
-
options = {:context => :default, :level => :all}.merge(options)
|
34
|
+
def render_navigation(options={})
|
35
|
+
options = apply_defaults(options)
|
38
36
|
ctx = options.delete(:context)
|
39
37
|
SimpleNavigation.init_adapter_from self
|
40
38
|
SimpleNavigation.load_config(ctx)
|
@@ -46,50 +44,11 @@ module SimpleNavigation
|
|
46
44
|
active_item_container.render(options) unless active_item_container.nil?
|
47
45
|
end
|
48
46
|
|
49
|
-
# Deprecated. Renders the primary_navigation with the configured renderer. Calling render_navigation(:level => 0) has the same effect.
|
50
|
-
def render_primary_navigation(options = {})
|
51
|
-
ActiveSupport::Deprecation.warn("SimpleNavigation::Helpers.render_primary_navigation has been deprecated. Please use render_navigation(:level => 1) instead")
|
52
|
-
render_navigation(options.merge(:level => 1))
|
53
|
-
end
|
54
|
-
|
55
|
-
# Deprecated. Renders the sub_navigation with the configured renderer. Calling render_navigation(:level => 1) has the same effect.
|
56
|
-
def render_sub_navigation(options = {})
|
57
|
-
ActiveSupport::Deprecation.warn("SimpleNavigation::Helpers.render_primary_navigation has been deprecated. Please use render_navigation(:level => 2) instead")
|
58
|
-
render_navigation(options.merge(:level => 2))
|
59
|
-
end
|
60
|
-
|
61
47
|
private
|
62
48
|
|
63
|
-
def
|
64
|
-
|
65
|
-
|
66
|
-
options = args.first
|
67
|
-
options[:level] = options.delete(:levels) if options[:levels]
|
68
|
-
deprecated_api! if options[:level] == :primary || options[:level] == :secondary || options[:level] == :nested
|
69
|
-
options[:level] = 1 if options[:level] == :primary
|
70
|
-
options[:level] = 2 if options[:level] == :secondary
|
71
|
-
options[:level] = :all if options[:level] == :nested
|
72
|
-
when Symbol
|
73
|
-
deprecated_api!
|
74
|
-
raise ArgumentError, "Invalid arguments" unless [:primary, :secondary, :nested].include? args.first
|
75
|
-
options = Hash.new
|
76
|
-
options[:level] = args.first
|
77
|
-
options[:level] = :all if options[:level] == :nested
|
78
|
-
options[:level] = 1 if options[:level] == :primary
|
79
|
-
options[:level] = 2 if options[:level] == :secondary
|
80
|
-
options.merge!(args[1] || {})
|
81
|
-
else
|
82
|
-
raise ArgumentError, "Invalid arguments"
|
83
|
-
end
|
84
|
-
if options[:all_open]
|
85
|
-
options[:expand_all] = options.delete(:all_open)
|
86
|
-
ActiveSupport::Deprecation.warn("render_navigation(:all_open => true) has been deprecated, please use render_navigation(:expand_all => true) instead")
|
87
|
-
end
|
88
|
-
options
|
89
|
-
end
|
90
|
-
|
91
|
-
def deprecated_api!
|
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")
|
49
|
+
def apply_defaults(options)
|
50
|
+
options[:level] = options.delete(:levels) if options[:levels]
|
51
|
+
{:context => :default, :level => :all}.merge(options)
|
93
52
|
end
|
94
53
|
|
95
54
|
end
|
@@ -106,15 +106,6 @@ describe SimpleNavigation::Configuration do
|
|
106
106
|
end
|
107
107
|
end
|
108
108
|
|
109
|
-
describe 'render_all_levels=' do
|
110
|
-
it "should set the instance var" do
|
111
|
-
ActiveSupport::Deprecation.silence do
|
112
|
-
@config.render_all_levels = true
|
113
|
-
@config.render_all_levels.should be_true
|
114
|
-
end
|
115
|
-
end
|
116
|
-
end
|
117
|
-
|
118
109
|
describe 'loaded?' do
|
119
110
|
it "should return true if primary_nav is set" do
|
120
111
|
@config.instance_variable_set(:@primary_navigation, :bla)
|
@@ -74,6 +74,7 @@ describe SimpleNavigation::ItemContainer do
|
|
74
74
|
|
75
75
|
describe 'selected_item' do
|
76
76
|
before(:each) do
|
77
|
+
SimpleNavigation.stub!(:current_navigation_for => :nav)
|
77
78
|
@item_container.stub!(:[] => nil)
|
78
79
|
@item_1 = stub(:item, :selected? => false)
|
79
80
|
@item_2 = stub(:item, :selected? => false)
|
@@ -43,10 +43,8 @@ describe 'explicit navigation in rails' do
|
|
43
43
|
describe 'navigation' do
|
44
44
|
|
45
45
|
def call_navigation(key1, key2=nil)
|
46
|
-
|
47
|
-
|
48
|
-
navigation key1, key2
|
49
|
-
end
|
46
|
+
@controller.class_eval do
|
47
|
+
navigation key1, key2
|
50
48
|
end
|
51
49
|
end
|
52
50
|
|
@@ -78,11 +76,11 @@ describe 'explicit navigation in rails' do
|
|
78
76
|
|
79
77
|
describe 'current_navigation' do
|
80
78
|
it "should set the sn_current_navigation_args as specified" do
|
81
|
-
|
79
|
+
@controller.current_navigation(:first)
|
82
80
|
@controller.instance_variable_get(:@sn_current_navigation_args).should == [:first]
|
83
81
|
end
|
84
82
|
it "should set the sn_current_navigation_args as specified" do
|
85
|
-
|
83
|
+
@controller.current_navigation(:first, :second)
|
86
84
|
@controller.instance_variable_get(:@sn_current_navigation_args).should == [:first, :second]
|
87
85
|
end
|
88
86
|
end
|
@@ -89,14 +89,6 @@ describe SimpleNavigation::Helpers do
|
|
89
89
|
end
|
90
90
|
|
91
91
|
context 'primary' do
|
92
|
-
it "should call render on the primary_navigation" do
|
93
|
-
@primary_navigation.should_receive(:render)
|
94
|
-
ActiveSupport::Deprecation.silence {@controller.render_navigation(:primary)}
|
95
|
-
end
|
96
|
-
it "should call render on the primary_navigation (specifying level through options)" do
|
97
|
-
@primary_navigation.should_receive(:render)
|
98
|
-
ActiveSupport::Deprecation.silence {@controller.render_navigation(:level => :primary)}
|
99
|
-
end
|
100
92
|
it "should call render on the primary_navigation (specifying level through options)" do
|
101
93
|
@primary_navigation.should_receive(:render).with(:level => 1)
|
102
94
|
@controller.render_navigation(:level => 1)
|
@@ -111,11 +103,7 @@ describe SimpleNavigation::Helpers do
|
|
111
103
|
end
|
112
104
|
it "should find the selected sub_navigation for the specified level" do
|
113
105
|
SimpleNavigation.should_receive(:active_item_container_for).with(2)
|
114
|
-
|
115
|
-
end
|
116
|
-
it "should find the selected sub_navigation for the specified level" do
|
117
|
-
SimpleNavigation.should_receive(:active_item_container_for).with(2)
|
118
|
-
ActiveSupport::Deprecation.silence {@controller.render_navigation(:level => :secondary)}
|
106
|
+
@controller.render_navigation(:level => 2)
|
119
107
|
end
|
120
108
|
it "should find the selected sub_navigation for the specified level" do
|
121
109
|
SimpleNavigation.should_receive(:active_item_container_for).with(1)
|
@@ -123,7 +111,7 @@ describe SimpleNavigation::Helpers do
|
|
123
111
|
end
|
124
112
|
it "should call render on the active item_container" do
|
125
113
|
@selected_item_container.should_receive(:render).with(:level => 2)
|
126
|
-
|
114
|
+
@controller.render_navigation(:level => 2)
|
127
115
|
end
|
128
116
|
end
|
129
117
|
context 'without an active item_container set' do
|
@@ -131,47 +119,16 @@ describe SimpleNavigation::Helpers do
|
|
131
119
|
SimpleNavigation.stub!(:active_item_container_for => nil)
|
132
120
|
end
|
133
121
|
it "should not raise an error" do
|
134
|
-
lambda
|
122
|
+
lambda {@controller.render_navigation(:level => 2)}.should_not raise_error
|
135
123
|
end
|
136
124
|
end
|
137
125
|
|
138
126
|
end
|
139
127
|
|
140
|
-
context 'nested' do
|
141
|
-
it "should call render on the primary navigation with the :level => :all option set" do
|
142
|
-
@primary_navigation.should_receive(:render).with(:level => :all)
|
143
|
-
ActiveSupport::Deprecation.silence {@controller.render_navigation(:nested)}
|
144
|
-
end
|
145
|
-
end
|
146
|
-
|
147
128
|
context 'unknown level' do
|
148
|
-
it "should raise an error" do
|
149
|
-
lambda {ActiveSupport::Deprecation.silence {@controller.render_navigation(:unknown)}}.should raise_error(ArgumentError)
|
150
|
-
end
|
151
129
|
it "should raise an error" do
|
152
130
|
lambda {@controller.render_navigation(:level => :unknown)}.should raise_error(ArgumentError)
|
153
131
|
end
|
154
|
-
it "should raise an error" do
|
155
|
-
lambda {@controller.render_navigation('level')}.should raise_error(ArgumentError)
|
156
|
-
end
|
157
|
-
end
|
158
|
-
end
|
159
|
-
|
160
|
-
describe 'render_primary_navigation' do
|
161
|
-
it "should delegate to render_navigation(:level => 1)" do
|
162
|
-
ActiveSupport::Deprecation.silence do
|
163
|
-
@controller.should_receive(:render_navigation).with(:level => 1)
|
164
|
-
@controller.render_primary_navigation
|
165
|
-
end
|
166
|
-
end
|
167
|
-
end
|
168
|
-
|
169
|
-
describe 'render_sub_navigation' do
|
170
|
-
it "should delegate to render_navigation(:level => 2)" do
|
171
|
-
ActiveSupport::Deprecation.silence do
|
172
|
-
@controller.should_receive(:render_navigation).with(:level => 2)
|
173
|
-
@controller.render_sub_navigation
|
174
|
-
end
|
175
132
|
end
|
176
133
|
end
|
177
134
|
|
@@ -186,11 +143,4 @@ describe SimpleNavigation::Helpers do
|
|
186
143
|
end
|
187
144
|
end
|
188
145
|
|
189
|
-
describe 'option all_open should work as expand_all' do
|
190
|
-
it "should call render on the primary navigation with the include_subnavigation option set" do
|
191
|
-
@primary_navigation.should_receive(:render).with(:level => :all, :expand_all => true)
|
192
|
-
ActiveSupport::Deprecation.silence {@controller.render_navigation(:level => :all, :all_open => true)}
|
193
|
-
end
|
194
|
-
end
|
195
|
-
|
196
146
|
end
|
metadata
CHANGED
@@ -6,8 +6,8 @@ version: !ruby/object:Gem::Version
|
|
6
6
|
- 3
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 3.0.0.
|
9
|
+
- beta2
|
10
|
+
version: 3.0.0.beta2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Andi Schacke
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-09-
|
18
|
+
date: 2010-09-02 00:00:00 +02:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -46,7 +46,7 @@ dependencies:
|
|
46
46
|
version: 2.3.2
|
47
47
|
type: :runtime
|
48
48
|
version_requirements: *id002
|
49
|
-
description: With the simple-navigation gem installed you can easily create multilevel navigations for your
|
49
|
+
description: With the simple-navigation gem installed you can easily create multilevel navigations for your Rails, Sinatra or Padrino applications. The navigation is defined in a single configuration file. It supports automatic as well as explicit highlighting of the currently active navigation through regular expressions.
|
50
50
|
email: andreas.schacke@gmail.com
|
51
51
|
executables: []
|
52
52
|
|
@@ -58,7 +58,7 @@ files:
|
|
58
58
|
- CHANGELOG
|
59
59
|
- README
|
60
60
|
- Rakefile
|
61
|
-
- VERSION
|
61
|
+
- VERSION
|
62
62
|
- generators/navigation_config/USAGE
|
63
63
|
- generators/navigation_config/navigation_config_generator.rb
|
64
64
|
- generators/navigation_config/templates/config/navigation.rb
|
@@ -130,7 +130,7 @@ rubyforge_project: andi
|
|
130
130
|
rubygems_version: 1.3.6
|
131
131
|
signing_key:
|
132
132
|
specification_version: 3
|
133
|
-
summary:
|
133
|
+
summary: simple-navigation is a ruby library for creating navigations (with multiple levels) for your Rails2, Rails3, Sinatra or Padrino application.
|
134
134
|
test_files:
|
135
135
|
- spec/lib/simple_navigation/adapters/padrino_spec.rb
|
136
136
|
- spec/lib/simple_navigation/adapters/rails_spec.rb
|
data/VERSION.yml
DELETED