simple-navigation-bootstrap 0.0.2
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/.gitignore +4 -0
- data/Gemfile +4 -0
- data/README.rdoc +44 -0
- data/Rakefile +1 -0
- data/lib/simple-navigation-bootstrap.rb +4 -0
- data/lib/simple-navigation-bootstrap/version.rb +3 -0
- data/lib/simple_navigation/rendering/renderer/bootstrap.rb +47 -0
- data/simple-navigation-bootstrap.gemspec +23 -0
- metadata +84 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/README.rdoc
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
== Simple Navigation for Bootstrap
|
2
|
+
This gem adds a renderer for {Simple Navigation}[http://github.com/andi/simple-navigation] to output markup compatible
|
3
|
+
with {Twitter Bootstrap}[http://twitter.github.com/bootstrap/].
|
4
|
+
|
5
|
+
== Getting Started
|
6
|
+
For Rails >= 3, simply add this gem to your <tt>Gemfile</tt>:
|
7
|
+
gem 'simple-navigation-bootstrap'
|
8
|
+
and run
|
9
|
+
bundle install
|
10
|
+
Follow the {configuration instructions}[https://github.com/andi/simple-navigation/wiki/Configuration] on the Simple Navigation wiki for initial configuration.
|
11
|
+
|
12
|
+
To use the Bootstrap renderer, specify it in your view:
|
13
|
+
render_navigation :expand_all => true, :renderer => :bootstrap
|
14
|
+
|
15
|
+
== Additional Functionality
|
16
|
+
In addition to generating Bootstrap-comptible list markup, you may specify
|
17
|
+
an <tt>:icon</tt> attribute on your navigation items, either as an array
|
18
|
+
or string, containing Bootstrap {icon classes}[http://twitter.github.com/bootstrap/base-css.html#icons], to add an icon to the item.
|
19
|
+
|
20
|
+
== Examples
|
21
|
+
To create a navigation menu, you might do something like this:
|
22
|
+
SimpleNavigation::Configuration.run do |navigation|
|
23
|
+
navigation.items do |primary|
|
24
|
+
primary.item :music, 'Music', musics_path
|
25
|
+
primary.item :dvds, 'Dvds', dvds_path
|
26
|
+
primary.item :books, 'Books', :icon => [:icon-book, :icon-white] do |books|
|
27
|
+
books.item :fiction, 'Fiction', books_fiction_path
|
28
|
+
books.item :history, 'History', books_history_path
|
29
|
+
end
|
30
|
+
primary.dom_class = 'nav'
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
== Caveats
|
35
|
+
Because Bootstrap only supports dropdown on-click, items with sub-navigation
|
36
|
+
may not contain links - any links will be overwritten with a <tt>#</tt> anchor.
|
37
|
+
|
38
|
+
== Further Reading
|
39
|
+
* {Twitter Bootstrap Documentation}[http://twitter.github.com/bootstrap/]
|
40
|
+
* {Simple Navigation Wiki}[https://github.com/andi/simple-navigation/wiki/]
|
41
|
+
|
42
|
+
== TODO
|
43
|
+
So far, only nav markup and dropdowns are supported, may also implement
|
44
|
+
buttons and nav lists in the future.
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
@@ -0,0 +1,47 @@
|
|
1
|
+
module SimpleNavigation
|
2
|
+
module Renderer
|
3
|
+
class Bootstrap < SimpleNavigation::Renderer::Base
|
4
|
+
def render(item_container)
|
5
|
+
config_selected_class = SimpleNavigation.config.selected_class
|
6
|
+
SimpleNavigation.config.selected_class = 'active'
|
7
|
+
list_content = item_container.items.inject([]) do |list, item|
|
8
|
+
li_options = item.html_options.reject {|k, v| k == :link}
|
9
|
+
li_content = tag_for(item, li_options.delete(:icon))
|
10
|
+
if include_sub_navigation?(item)
|
11
|
+
item.sub_navigation.dom_class = [item.sub_navigation.dom_class, 'dropdown-menu'].flatten.compact.join(' ')
|
12
|
+
li_content << render_sub_navigation_for(item)
|
13
|
+
li_options[:class] = [li_options[:class], 'dropdown'].flatten.compact.join(' ')
|
14
|
+
end
|
15
|
+
list << content_tag(:li, li_content, li_options)
|
16
|
+
end.join
|
17
|
+
SimpleNavigation.config.selected_class = config_selected_class
|
18
|
+
if skip_if_empty? && item_container.empty?
|
19
|
+
''
|
20
|
+
else
|
21
|
+
content_tag(:ul, list_content, {:id => item_container.dom_id, :class => item_container.dom_class})
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
protected
|
26
|
+
|
27
|
+
def tag_for(item, icon = nil)
|
28
|
+
url = item.url
|
29
|
+
link = Array.new
|
30
|
+
link << content_tag(:i, '', :class => [icon].flatten.compact.join(' ')) unless icon.nil?
|
31
|
+
link << item.name
|
32
|
+
if include_sub_navigation?(item)
|
33
|
+
url = '#'
|
34
|
+
item_options = item.html_options
|
35
|
+
item_options[:link] = Hash.new if item_options[:link].nil?
|
36
|
+
item_options[:link][:data] = Hash.new if item_options[:link][:data].nil?
|
37
|
+
item_options[:link][:class] = Array.new if item_options[:link][:class].nil?
|
38
|
+
item_options[:link][:class] << 'dropdown-toggle'
|
39
|
+
item_options[:link][:data][:toggle] = 'dropdown'
|
40
|
+
item.html_options = item_options
|
41
|
+
link << content_tag(:b, '', :class => 'caret')
|
42
|
+
end
|
43
|
+
link_to(link.join(" "), url, options_for(item))
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "simple-navigation-bootstrap/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "simple-navigation-bootstrap"
|
7
|
+
s.version = SimpleNavigationBootstrap::VERSION
|
8
|
+
s.authors = ["Peter Fern"]
|
9
|
+
s.email = ["github@obfusc8.org"]
|
10
|
+
s.homepage = "https://github.com/pdf/simple-navigation-bootstrap"
|
11
|
+
s.summary = %q{simple-navigation-bootstrap is a simple-navigation renderer for twitter-bootstrap navigation and dropdowns.}
|
12
|
+
s.description = %q{simple-navigation-bootstrap is a simple-navigation renderer for twitter-bootstrap navigation and dropdowns.}
|
13
|
+
|
14
|
+
s.files = `git ls-files`.split("\n")
|
15
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
16
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
17
|
+
s.require_paths = ["lib"]
|
18
|
+
s.extra_rdoc_files = ["README.rdoc"]
|
19
|
+
|
20
|
+
# specify any dependencies here; for example:
|
21
|
+
s.add_development_dependency "rake"
|
22
|
+
s.add_runtime_dependency "simple-navigation", ">= 3.7.0"
|
23
|
+
end
|
metadata
ADDED
@@ -0,0 +1,84 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: simple-navigation-bootstrap
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.2
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Peter Fern
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-03-17 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rake
|
16
|
+
requirement: &6568100 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *6568100
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: simple-navigation
|
27
|
+
requirement: &6566040 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 3.7.0
|
33
|
+
type: :runtime
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *6566040
|
36
|
+
description: simple-navigation-bootstrap is a simple-navigation renderer for twitter-bootstrap
|
37
|
+
navigation and dropdowns.
|
38
|
+
email:
|
39
|
+
- github@obfusc8.org
|
40
|
+
executables: []
|
41
|
+
extensions: []
|
42
|
+
extra_rdoc_files:
|
43
|
+
- README.rdoc
|
44
|
+
files:
|
45
|
+
- .gitignore
|
46
|
+
- Gemfile
|
47
|
+
- README.rdoc
|
48
|
+
- Rakefile
|
49
|
+
- lib/simple-navigation-bootstrap.rb
|
50
|
+
- lib/simple-navigation-bootstrap/version.rb
|
51
|
+
- lib/simple_navigation/rendering/renderer/bootstrap.rb
|
52
|
+
- simple-navigation-bootstrap.gemspec
|
53
|
+
homepage: https://github.com/pdf/simple-navigation-bootstrap
|
54
|
+
licenses: []
|
55
|
+
post_install_message:
|
56
|
+
rdoc_options: []
|
57
|
+
require_paths:
|
58
|
+
- lib
|
59
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
60
|
+
none: false
|
61
|
+
requirements:
|
62
|
+
- - ! '>='
|
63
|
+
- !ruby/object:Gem::Version
|
64
|
+
version: '0'
|
65
|
+
segments:
|
66
|
+
- 0
|
67
|
+
hash: 1341464271989467196
|
68
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
69
|
+
none: false
|
70
|
+
requirements:
|
71
|
+
- - ! '>='
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
version: '0'
|
74
|
+
segments:
|
75
|
+
- 0
|
76
|
+
hash: 1341464271989467196
|
77
|
+
requirements: []
|
78
|
+
rubyforge_project:
|
79
|
+
rubygems_version: 1.8.10
|
80
|
+
signing_key:
|
81
|
+
specification_version: 3
|
82
|
+
summary: simple-navigation-bootstrap is a simple-navigation renderer for twitter-bootstrap
|
83
|
+
navigation and dropdowns.
|
84
|
+
test_files: []
|