simple-navigation 2.2.3 → 2.4.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 +5 -0
- data/Rakefile +3 -0
- data/VERSION.yml +2 -2
- data/lib/simple_navigation.rb +14 -2
- data/lib/simple_navigation/initializer.rb +21 -0
- data/lib/simple_navigation/railtie.rb +9 -0
- data/rails/init.rb +5 -3
- data/spec/lib/simple_navigation/controller_methods_spec.rb +13 -6
- data/spec/lib/simple_navigation_spec.rb +37 -4
- data/spec/spec_helper.rb +7 -2
- metadata +25 -4
data/CHANGELOG
CHANGED
data/Rakefile
CHANGED
@@ -38,11 +38,14 @@ begin
|
|
38
38
|
gemspec.email = "andreas.schacke@gmail.com"
|
39
39
|
gemspec.homepage = "http://github.com/andi/simple-navigation"
|
40
40
|
gemspec.description = "With the simple-navigation gem installed you can easily create multilevel navigations for your Ruby on Rails applications. The navigation is defined in a single configuration file. It supports automatic as well as explicit highlighting of the currently active navigation."
|
41
|
+
gemspec.add_dependency('rails', '>= 2.1.0')
|
42
|
+
gemspec.add_development_dependency('rspec', '>= 1.2.8')
|
41
43
|
gemspec.authors = ["Andi Schacke"]
|
42
44
|
gemspec.rdoc_options = ["--inline-source", "--charset=UTF-8"]
|
43
45
|
gemspec.files = FileList["[A-Z]*", "{lib,spec,rails,generators}/**/*"] - FileList["**/*.log"]
|
44
46
|
gemspec.rubyforge_project = 'andi'
|
45
47
|
end
|
48
|
+
Jeweler::GemcutterTasks.new
|
46
49
|
Jeweler::RubyforgeTasks.new do |rubyforge|
|
47
50
|
rubyforge.doc_task = "rdoc"
|
48
51
|
end
|
data/VERSION.yml
CHANGED
data/lib/simple_navigation.rb
CHANGED
@@ -8,15 +8,26 @@ require 'simple_navigation/item_container'
|
|
8
8
|
require 'simple_navigation/items_provider'
|
9
9
|
require 'simple_navigation/renderer/base'
|
10
10
|
require 'simple_navigation/renderer/list'
|
11
|
+
require 'simple_navigation/initializer'
|
12
|
+
require 'simple_navigation/railtie' if Rails::VERSION::MAJOR == 3
|
11
13
|
|
12
14
|
# A plugin for generating a simple navigation. See README for resources on usage instructions.
|
13
15
|
module SimpleNavigation
|
14
16
|
|
15
|
-
mattr_accessor :config_files, :config_file_path, :controller, :template, :explicit_current_navigation
|
17
|
+
mattr_accessor :config_files, :config_file_path, :controller, :template, :explicit_current_navigation, :rails_env, :rails_root
|
16
18
|
|
17
19
|
self.config_files = {}
|
18
20
|
|
19
21
|
class << self
|
22
|
+
|
23
|
+
def init_rails
|
24
|
+
SimpleNavigation.config_file_path = SimpleNavigation.default_config_file_path unless SimpleNavigation.config_file_path
|
25
|
+
ActionController::Base.send(:include, SimpleNavigation::ControllerMethods)
|
26
|
+
end
|
27
|
+
|
28
|
+
def default_config_file_path
|
29
|
+
File.join(SimpleNavigation.rails_root, 'config')
|
30
|
+
end
|
20
31
|
|
21
32
|
def config_file?(navigation_context=nil)
|
22
33
|
File.exists?(config_file_name(navigation_context))
|
@@ -26,7 +37,7 @@ module SimpleNavigation
|
|
26
37
|
def load_config(navigation_context = :default)
|
27
38
|
raise "config_file_path is not set!" unless self.config_file_path
|
28
39
|
raise "Config file '#{config_file_name(navigation_context)}' does not exists!" unless config_file?(navigation_context)
|
29
|
-
if
|
40
|
+
if SimpleNavigation.rails_env == 'production'
|
30
41
|
self.config_files[navigation_context] ||= IO.read(config_file_name(navigation_context))
|
31
42
|
else
|
32
43
|
self.config_files[navigation_context] = IO.read(config_file_name(navigation_context))
|
@@ -146,6 +157,7 @@ module SimpleNavigation
|
|
146
157
|
end
|
147
158
|
|
148
159
|
# TODOs for the next releases:
|
160
|
+
# 0) make sn_set_navigation private in controllers
|
149
161
|
# 1) add ability to specify explicit highlighting in the config-file itself (directly with the item)
|
150
162
|
# - item.highlight_on :controller => 'users', :action => 'show' ...^
|
151
163
|
# --> with that we can get rid of the controller_methods...
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module SimpleNavigation
|
2
|
+
module Initializer
|
3
|
+
|
4
|
+
class Rails2
|
5
|
+
def self.run
|
6
|
+
SimpleNavigation.rails_root = RAILS_ROOT
|
7
|
+
SimpleNavigation.rails_env = RAILS_ENV
|
8
|
+
SimpleNavigation.init_rails
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
class Rails3
|
13
|
+
def self.run
|
14
|
+
SimpleNavigation.rails_root = Rails.root
|
15
|
+
SimpleNavigation.rails_env = Rails.env
|
16
|
+
SimpleNavigation.init_rails
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
end
|
data/rails/init.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
-
|
2
|
-
SimpleNavigation.
|
3
|
-
|
1
|
+
if Rails::VERSION::MAJOR == 3
|
2
|
+
SimpleNavigation::Initializer::Rails3.run
|
3
|
+
else
|
4
|
+
SimpleNavigation::Initializer::Rails2.run
|
5
|
+
end
|
@@ -10,9 +10,18 @@ describe SimpleNavigation::ControllerMethods do
|
|
10
10
|
|
11
11
|
before(:each) do
|
12
12
|
stub_loading_config
|
13
|
-
class
|
13
|
+
class TestController
|
14
|
+
class << self
|
15
|
+
def helper_method(*args)
|
16
|
+
@helper_methods = args
|
17
|
+
end
|
18
|
+
def before_filter(*args)
|
19
|
+
@before_filters = args
|
20
|
+
end
|
21
|
+
end
|
14
22
|
end
|
15
|
-
|
23
|
+
TestController.send(:include, SimpleNavigation::ControllerMethods)
|
24
|
+
@controller = TestController.new
|
16
25
|
end
|
17
26
|
|
18
27
|
describe 'when being included' do
|
@@ -22,10 +31,8 @@ describe SimpleNavigation::ControllerMethods do
|
|
22
31
|
it "should include the InstanceMethods" do
|
23
32
|
@controller.should respond_to(:current_navigation)
|
24
33
|
end
|
25
|
-
it "should install the
|
26
|
-
[:render_navigation, :render_primary_navigation, :render_sub_navigation]
|
27
|
-
@controller.master_helper_module.instance_methods.map(&:to_s).should include(m.to_s)
|
28
|
-
end
|
34
|
+
it "should install the helper methods" do
|
35
|
+
@controller.class.instance_variable_get(:@helper_methods).should == [:render_navigation, :render_primary_navigation, :render_sub_navigation]
|
29
36
|
end
|
30
37
|
end
|
31
38
|
|
@@ -73,6 +73,39 @@ describe SimpleNavigation do
|
|
73
73
|
end
|
74
74
|
end
|
75
75
|
|
76
|
+
describe 'self.init_rails' do
|
77
|
+
before(:each) do
|
78
|
+
SimpleNavigation.stub!(:default_config_file_path => 'default_path')
|
79
|
+
ActionController::Base.stub!(:include)
|
80
|
+
end
|
81
|
+
context 'SimpleNavigation.config_file_path is already set' do
|
82
|
+
before(:each) do
|
83
|
+
SimpleNavigation.config_file_path = 'my_path'
|
84
|
+
end
|
85
|
+
it "should not override the config_file_path" do
|
86
|
+
SimpleNavigation.init_rails
|
87
|
+
SimpleNavigation.config_file_path.should == 'my_path'
|
88
|
+
end
|
89
|
+
end
|
90
|
+
context 'SimpleNavigation.config_file_path is not set' do
|
91
|
+
before(:each) do
|
92
|
+
SimpleNavigation.config_file_path = nil
|
93
|
+
end
|
94
|
+
it "should set the config_file_path to the default" do
|
95
|
+
SimpleNavigation.init_rails
|
96
|
+
SimpleNavigation.config_file_path.should == 'default_path'
|
97
|
+
end
|
98
|
+
end
|
99
|
+
it "should extend the ActionController::Base" do
|
100
|
+
ActionController::Base.should_receive(:include).with(SimpleNavigation::ControllerMethods)
|
101
|
+
SimpleNavigation.init_rails
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
describe 'self.default_config_file_path' do
|
106
|
+
it {SimpleNavigation.default_config_file_path.should == './config'}
|
107
|
+
end
|
108
|
+
|
76
109
|
describe 'self.extract_controller_from' do
|
77
110
|
before(:each) do
|
78
111
|
@nav_context = stub(:nav_context)
|
@@ -192,7 +225,7 @@ describe SimpleNavigation do
|
|
192
225
|
end
|
193
226
|
context "RAILS_ENV undefined" do
|
194
227
|
before(:each) do
|
195
|
-
|
228
|
+
SimpleNavigation.rails_env = nil
|
196
229
|
end
|
197
230
|
it "should load the config file twice" do
|
198
231
|
IO.should_receive(:read).twice
|
@@ -202,7 +235,7 @@ describe SimpleNavigation do
|
|
202
235
|
end
|
203
236
|
context "RAILS_ENV defined" do
|
204
237
|
before(:each) do
|
205
|
-
|
238
|
+
SimpleNavigation.rails_env = 'production'
|
206
239
|
end
|
207
240
|
context "RAILS_ENV=production" do
|
208
241
|
it "should load the config file only once" do
|
@@ -214,7 +247,7 @@ describe SimpleNavigation do
|
|
214
247
|
|
215
248
|
context "RAILS_ENV=development" do
|
216
249
|
before(:each) do
|
217
|
-
|
250
|
+
SimpleNavigation.rails_env = 'development'
|
218
251
|
end
|
219
252
|
it "should load the config file twice" do
|
220
253
|
IO.should_receive(:read).twice
|
@@ -225,7 +258,7 @@ describe SimpleNavigation do
|
|
225
258
|
|
226
259
|
context "RAILS_ENV=test" do
|
227
260
|
before(:each) do
|
228
|
-
|
261
|
+
SimpleNavigation.rails_env = 'test'
|
229
262
|
end
|
230
263
|
it "should load the config file twice" do
|
231
264
|
IO.should_receive(:read).twice
|
data/spec/spec_helper.rb
CHANGED
@@ -1,17 +1,22 @@
|
|
1
1
|
ENV["RAILS_ENV"] = "test"
|
2
|
-
RAILS_ENV = "test" unless defined? RAILS_ENV
|
3
2
|
require 'rubygems'
|
4
3
|
require 'spec'
|
5
4
|
require 'active_support'
|
6
5
|
require 'action_controller'
|
7
6
|
|
8
|
-
|
7
|
+
module Rails
|
8
|
+
module VERSION
|
9
|
+
MAJOR = 2
|
10
|
+
end
|
11
|
+
end unless defined? Rails
|
9
12
|
|
10
13
|
$:.unshift File.dirname(__FILE__)
|
11
14
|
$:.unshift File.join(File.dirname(__FILE__), '../lib')
|
12
15
|
|
13
16
|
require 'simple_navigation'
|
14
17
|
|
18
|
+
SimpleNavigation.rails_root = './'
|
19
|
+
|
15
20
|
# Spec::Runner.configure do |config|
|
16
21
|
# no special config
|
17
22
|
# endx
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: simple-navigation
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andi Schacke
|
@@ -9,10 +9,29 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2010-
|
12
|
+
date: 2010-03-01 00:00:00 +01:00
|
13
13
|
default_executable:
|
14
|
-
dependencies:
|
15
|
-
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: rails
|
17
|
+
type: :runtime
|
18
|
+
version_requirement:
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 2.1.0
|
24
|
+
version:
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: rspec
|
27
|
+
type: :development
|
28
|
+
version_requirement:
|
29
|
+
version_requirements: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 1.2.8
|
34
|
+
version:
|
16
35
|
description: With the simple-navigation gem installed you can easily create multilevel navigations for your Ruby on Rails applications. The navigation is defined in a single configuration file. It supports automatic as well as explicit highlighting of the currently active navigation.
|
17
36
|
email: andreas.schacke@gmail.com
|
18
37
|
executables: []
|
@@ -34,10 +53,12 @@ files:
|
|
34
53
|
- lib/simple_navigation/configuration.rb
|
35
54
|
- lib/simple_navigation/controller_methods.rb
|
36
55
|
- lib/simple_navigation/helpers.rb
|
56
|
+
- lib/simple_navigation/initializer.rb
|
37
57
|
- lib/simple_navigation/item.rb
|
38
58
|
- lib/simple_navigation/item_adapter.rb
|
39
59
|
- lib/simple_navigation/item_container.rb
|
40
60
|
- lib/simple_navigation/items_provider.rb
|
61
|
+
- lib/simple_navigation/railtie.rb
|
41
62
|
- lib/simple_navigation/renderer/base.rb
|
42
63
|
- lib/simple_navigation/renderer/list.rb
|
43
64
|
- rails/init.rb
|