innetra-easy_navigation 1.0.8 → 2.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/Rakefile CHANGED
@@ -2,8 +2,8 @@ require 'rubygems'
2
2
  require 'rake'
3
3
  require 'echoe'
4
4
 
5
- Echoe.new('easy_navigation', '1.0.8') do |e|
6
- e.description = "Easy navigation for ruby on rails 2.2 (i18n)"
5
+ Echoe.new('easy_navigation', '2.0.0') do |e|
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"
9
9
  e.email = "mexpolk@gmail.com"
@@ -2,12 +2,12 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{easy_navigation}
5
- s.version = "1.0.8"
5
+ s.version = "2.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 = ["Ivan Torres"]
9
- s.date = %q{2008-12-19}
10
- s.description = %q{Easy navigation for ruby on rails 2.2 (i18n)}
9
+ s.date = %q{2008-12-21}
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
13
  s.files = ["Manifest", "README.rdoc", "Rakefile", "init.rb", "lib/easy_navigation.rb", "easy_navigation.gemspec"]
@@ -17,7 +17,7 @@ Gem::Specification.new do |s|
17
17
  s.require_paths = ["lib"]
18
18
  s.rubyforge_project = %q{easy_navigation}
19
19
  s.rubygems_version = %q{1.3.1}
20
- s.summary = %q{Easy navigation for ruby on rails 2.2 (i18n)}
20
+ s.summary = %q{Easy navigation for Ruby on Rails 2.2 (i18n)}
21
21
 
22
22
  if s.respond_to? :specification_version then
23
23
  current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
@@ -2,44 +2,65 @@ module EasyNavigation
2
2
 
3
3
  module Helper
4
4
 
5
- def render_navigation(name)
6
-
7
- html = ""
8
- class_name = ""
5
+ def easy_navigation(name, options = {})
6
+
7
+ navigation_class_name = (options[:navigation_class] || "navigation").to_s
8
+ tab_class_name = (options[:tab_class] || "tab").to_s
9
+ menu_class_name = (options[:menu_class] || "menu").to_s
10
+ separator_class_name = (options[:separator_class] || "separator").to_s
11
+ separator = options[:separator] || false
12
+
13
+ tabs_html = ""
9
14
 
10
15
  EasyNavigation::Builder.navigation[name][:tabs].each do |tab|
11
16
  menus_html = ""
12
17
  current_tab = false
13
18
  tab[:menus].each do |menu|
14
- class_name = "menu"
15
- if current_menu?(menu)
16
- class_name << " current"
19
+ if current = current_menu?(menu)
17
20
  current_tab = true
18
- end
19
- menus_html << content_tag("li", link_to(t(menu[:text]), menu[:url]),
20
- :class => class_name, :id => menu[:name])
21
- if EasyNavigation::Builder.navigation[name][:options][:separator]
22
- menus_html << content_tag("li", "|", :class => "separator")
23
- end
21
+ end
22
+ 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)
25
+ if separator
26
+ menus_html << self.render_separator(separator_class_name)
27
+ end
24
28
  end
25
- class_name = "tab"
26
- class_name << " current" if current_tab
27
- html << content_tag("li",
28
- "#{link_to(t(tab[:text]), tab[:url])} #{content_tag("ul", menus_html)}",
29
- :class => class_name, :id => tab[:name])
29
+ tabs_html << self.render_tab(tab[:name],
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)
30
33
  end
31
- content_tag("ul", html, :id => "navigation")
34
+ self.render_navigation("navigation_" << name.to_s, tabs_html, navigation_class_name)
35
+ end
36
+
37
+ protected
38
+
39
+ def render_separator(class_name)
40
+ content_tag("li", "|", :class => class_name)
41
+ end
42
+
43
+ def render_menu(id, text, url, class_name)
44
+ content_tag("li", link_to(t(text), url), :id => id, :class => class_name)
45
+ end
46
+
47
+ def render_tab(id, text, url, menus_html, class_name)
48
+ content_tag("li",
49
+ "#{link_to(t(text), url)} #{content_tag("ul", menus_html)}",
50
+ :id => id, :class => class_name)
51
+ end
52
+
53
+ def render_navigation(id, tabs_html, class_name)
54
+ content_tag("ul", tabs_html, :id => id, :class => class_name)
32
55
  end
33
56
 
34
- private
35
-
36
57
  def current_menu?(menu)
37
- current = controller.controller_name == menu[:url][:controller] &&
58
+ current = controller.params[:controller] == menu[:url][:controller].gsub(/^\//, "") &&
38
59
  (controller.action_name == menu[:url][:action] || menu[:url][:action] == nil)
39
60
  if menu.has_key?:on
40
61
  (menu[:on].is_a?(Array) ? menu[:on] : [menu[:on]]).each do |controllers|
41
62
  (controllers.is_a?(Array) ? controllers : [controllers]).each do |c|
42
- current |= controller.controller_name == c[:controller]
63
+ current |= controller.params[:controller] == c[:controller].gsub(/^\//, "")
43
64
  if c.has_key?:only
44
65
  current &= (c[:only].is_a?(Array) ? c[:only] : [c[:only]]).include?controller.action_name
45
66
  end
@@ -79,7 +100,7 @@ module EasyNavigation
79
100
  end
80
101
 
81
102
  def navigation(name, options = {}, &block)
82
- navigation = Navigation.new(name, options.merge!(:prefix => "easy_navigation"))
103
+ navigation = Navigation.new(name, options.merge!(:prefix => "navigation"))
83
104
  yield navigation
84
105
  self.navigations << navigation.build
85
106
  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: 1.0.8
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ivan Torres
@@ -9,11 +9,11 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-12-19 00:00:00 -08:00
12
+ date: 2008-12-21 00:00:00 -08:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
16
- description: Easy navigation for ruby on rails 2.2 (i18n)
16
+ description: Easy navigation for Ruby on Rails 2.2 (i18n)
17
17
  email: mexpolk@gmail.com
18
18
  executables: []
19
19
 
@@ -59,6 +59,6 @@ rubyforge_project: easy_navigation
59
59
  rubygems_version: 1.2.0
60
60
  signing_key:
61
61
  specification_version: 2
62
- summary: Easy navigation for ruby on rails 2.2 (i18n)
62
+ summary: Easy navigation for Ruby on Rails 2.2 (i18n)
63
63
  test_files: []
64
64