semantic_navigation 0.1.8 → 0.1.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -13
- data/lib/semantic_navigation/configuration.rb +10 -0
- data/lib/semantic_navigation/railtie.rb +21 -13
- data/lib/semantic_navigation/renderers.rb +3 -0
- data/lib/semantic_navigation/twitter_bootstrap_3/breadcrumb.rb +66 -0
- data/lib/semantic_navigation/twitter_bootstrap_3/list.rb +87 -0
- data/lib/semantic_navigation/twitter_bootstrap_3/tabs.rb +76 -0
- data/lib/semantic_navigation/version.rb +1 -1
- metadata +22 -18
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
NjZjZTlhZDU3MTE0MTZjMTlkMDc2MjljMjU2M2E1MGYwMmVjYWQwYw==
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: abaa34622db084f42353e8bd203fc9a8033dc5bb
|
4
|
+
data.tar.gz: a03e0dd5a7cacb1051566512b85a61a40ee39909
|
7
5
|
SHA512:
|
8
|
-
metadata.gz:
|
9
|
-
|
10
|
-
ZTliNjFjZDEyODA0YTkzNDU5ZDQ3M2VlMjU0NWVlYWM3YjI3MDVmNDk3ZmY4
|
11
|
-
YWVkNTg5MmRiMzc3MWRmMjQ5NTcxZTQwZjU3MGQwOWIxNDZhYTE=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
ZDE1MTRlY2M1ZjBiYjdjM2I0NGYwYzE1NGI0Nzg0NmNkNzk5ZjYzOGJjNzYx
|
14
|
-
MTUxOWI4OTg3MzE4MTdmYmU2ZGRlNGU0OGJkYmU1MGY0Mjg3ZTg1MWYxNTAw
|
15
|
-
Yjk3ZTJhOTJjMTQ3YzE0Nzg1ODE5MDY0NGQ5MDFiZWE1MmNlNmI=
|
6
|
+
metadata.gz: 1d9059d2ce1e114d204295bde77b555c2be3fe27b527d105fbc66454fed87212057f88499fb1963ec85964c68f11e296ac4c64ad26f43a7032b595d7e0dbc51b
|
7
|
+
data.tar.gz: 9f0a9ad6f392626b0a4e6ef11f8082821351ce019ea5f84f0fab314f7e14ba6d2e345e13f04b2e80c75339c2415f4e8243a63bcd673b8d2da6f14bfd9ae9924b
|
@@ -1,6 +1,8 @@
|
|
1
1
|
module SemanticNavigation
|
2
2
|
class Configuration
|
3
3
|
|
4
|
+
@@bootstrap_version = 2
|
5
|
+
|
4
6
|
@@navigations = {}
|
5
7
|
@@renderers = {}
|
6
8
|
@@render_styles = {}
|
@@ -63,5 +65,13 @@ module SemanticNavigation
|
|
63
65
|
@@navigations[name]
|
64
66
|
end
|
65
67
|
|
68
|
+
def self.bootstrap_version(version=nil)
|
69
|
+
if version
|
70
|
+
@@bootstrap_version = version
|
71
|
+
else
|
72
|
+
@@bootstrap_version
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
66
76
|
end
|
67
77
|
end
|
@@ -11,10 +11,16 @@ module SemanticNavigation
|
|
11
11
|
conf = SemanticNavigation::Configuration
|
12
12
|
conf.register_renderer :list, Renderers::List
|
13
13
|
conf.register_renderer :breadcrumb, Renderers::BreadCrumb
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
conf
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.register_bootstrap_renderers
|
17
|
+
conf = SemanticNavigation::Configuration
|
18
|
+
namespace = conf.bootstrap_version == 2 ? TwitterBootstrap : TwitterBootstrap3
|
19
|
+
conf.register_renderer :bootstrap_breadcrumb, namespace::Breadcrumb
|
20
|
+
conf.register_renderer :bootstrap_list, namespace::List
|
21
|
+
conf.register_renderer :bootstrap_tabs, namespace::Tabs
|
22
|
+
conf.register_renderer :bootstrap_pills, namespace::Tabs
|
23
|
+
|
18
24
|
conf.register_renderer :bootstrap_simple_nav, SemanticNavigation::Renderers::List
|
19
25
|
|
20
26
|
conf.styles_for :bootstrap_pills do
|
@@ -25,15 +31,17 @@ module SemanticNavigation
|
|
25
31
|
end
|
26
32
|
end
|
27
33
|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
34
|
+
if Rails.env == "production"
|
35
|
+
config.after_initialize {
|
36
|
+
load SemanticNavigation.actual_config_location
|
37
|
+
SemanticNavigation::Railtie.register_bootstrap_renderers
|
38
|
+
}
|
39
|
+
else
|
40
|
+
ActionDispatch::Callbacks.before {
|
41
|
+
load SemanticNavigation.actual_config_location
|
42
|
+
SemanticNavigation::Railtie.register_bootstrap_renderers
|
43
|
+
}
|
44
|
+
end
|
37
45
|
|
38
46
|
end
|
39
47
|
end
|
@@ -10,6 +10,9 @@ renderers/bread_crumb
|
|
10
10
|
twitter_bootstrap/breadcrumb
|
11
11
|
twitter_bootstrap/list
|
12
12
|
twitter_bootstrap/tabs
|
13
|
+
twitter_bootstrap_3/breadcrumb
|
14
|
+
twitter_bootstrap_3/list
|
15
|
+
twitter_bootstrap_3/tabs
|
13
16
|
).each do |file|
|
14
17
|
require "semantic_navigation/#{file}"
|
15
18
|
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
module SemanticNavigation
|
2
|
+
module TwitterBootstrap3
|
3
|
+
class Breadcrumb
|
4
|
+
include SemanticNavigation::Renderers::MixIn::RenderHelpers
|
5
|
+
include SemanticNavigation::Renderers::MixIn::ActsAsBreadcrumb
|
6
|
+
|
7
|
+
style_accessor last_as_link: false,
|
8
|
+
breadcrumb_separator: '/'
|
9
|
+
|
10
|
+
navigation_default_classes [:breadcrumb]
|
11
|
+
|
12
|
+
show_navigation_active_class false
|
13
|
+
show_node_active_class false
|
14
|
+
show_leaf_active_class false
|
15
|
+
show_link_active_class false
|
16
|
+
show_navigation_id false
|
17
|
+
show_node_id false
|
18
|
+
show_leaf_id false
|
19
|
+
show_link_id false
|
20
|
+
|
21
|
+
property_for :base, :ico
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
def navigation(object)
|
26
|
+
content_tag :ol, nil, {id: show_id(:navigation, object.id),
|
27
|
+
class: merge_classes(:navigation, object.active, object.classes)
|
28
|
+
}.merge(object.html) do
|
29
|
+
yield
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def node(object)
|
34
|
+
content_tag(:li, nil, {id: show_id(:leaf, object.id),
|
35
|
+
class: merge_classes(:leaf, object.active, object.classes)
|
36
|
+
}.merge(object.html)) do
|
37
|
+
[object.ico ? content_tag(:i, nil, class: "icon-#{object.ico}") : ''.html_safe,
|
38
|
+
link_to(object_name(object),
|
39
|
+
object.url,
|
40
|
+
{id: show_id(:link, object.id),
|
41
|
+
class: merge_classes(:link, object.active, object.link_classes)
|
42
|
+
}.merge(object.link_html))].sum
|
43
|
+
end +
|
44
|
+
yield
|
45
|
+
end
|
46
|
+
|
47
|
+
def leaf(object)
|
48
|
+
content_tag :li, nil, {id: show_id(:leaf, object.id),
|
49
|
+
class: merge_classes(:leaf, object.active, object.classes)
|
50
|
+
}.merge(object.html) do
|
51
|
+
[object.ico ? content_tag(:i, nil, class: "icon-#{object.ico}") : ''.html_safe,
|
52
|
+
if last_as_link
|
53
|
+
link_to(object_name(object),
|
54
|
+
object.url,
|
55
|
+
{id: show_id(:link, object.id),
|
56
|
+
class: merge_classes(:link, object.active, object.link_classes)
|
57
|
+
}.merge(object.link_html))
|
58
|
+
else
|
59
|
+
object_name(object)
|
60
|
+
end].sum
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
@@ -0,0 +1,87 @@
|
|
1
|
+
module SemanticNavigation
|
2
|
+
module TwitterBootstrap3
|
3
|
+
class List
|
4
|
+
include SemanticNavigation::Renderers::MixIn::RenderHelpers
|
5
|
+
include SemanticNavigation::Renderers::MixIn::ActsAsList
|
6
|
+
|
7
|
+
navigation_default_classes [:nav, 'navbar-nav']
|
8
|
+
node_default_classes ['dropdown-menu']
|
9
|
+
show_navigation_id false
|
10
|
+
show_node_id false
|
11
|
+
show_leaf_id false
|
12
|
+
show_link_id false
|
13
|
+
|
14
|
+
property_for :base, :ico
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def navigation(object)
|
19
|
+
content_tag :ul, nil, {id: show_id(:navigation, object.id),
|
20
|
+
class: merge_classes(:navigation, object.active, object.classes)
|
21
|
+
}.merge(object.html) do
|
22
|
+
yield
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def node(object)
|
27
|
+
if object.ico
|
28
|
+
name = [content_tag(:i,nil, class: "icon-#{object.ico}"),
|
29
|
+
object_name(object),
|
30
|
+
content_tag(:span, nil, class: 'caret')].sum
|
31
|
+
else
|
32
|
+
name = [object_name(object),
|
33
|
+
content_tag(:span, nil, class: 'caret')].sum
|
34
|
+
end
|
35
|
+
|
36
|
+
content_tag :li, nil, {id: show_id(:leaf, object.id),
|
37
|
+
class: merge_classes(:leaf, object.active, [*object.classes, 'dropdown'])
|
38
|
+
}.merge(object.html) do
|
39
|
+
link_to(name.html_safe, object.url,
|
40
|
+
{id: show_id(:link, object.id),
|
41
|
+
class: merge_classes(:link, object.active, [*object.link_classes, 'dropdown-toggle']),
|
42
|
+
'data-toggle' => 'dropdown'
|
43
|
+
}.merge(object.link_html)) +
|
44
|
+
yield
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def node_content(object)
|
49
|
+
content_tag(:ul, nil, {id: show_id(:node, object.id),
|
50
|
+
class: merge_classes(:node, object.active, object.node_classes)
|
51
|
+
}.merge(object.node_html)) do
|
52
|
+
yield
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def leaf(object)
|
57
|
+
if object_name(object).empty? && object.url.nil?
|
58
|
+
classes = 'divider'
|
59
|
+
elsif object.url.nil?
|
60
|
+
classes = 'nav-header'
|
61
|
+
else
|
62
|
+
classes = merge_classes(:leaf, object.active, object.classes)
|
63
|
+
end
|
64
|
+
|
65
|
+
if object.ico
|
66
|
+
name = [content_tag(:i,nil,class: "icon-#{object.ico}"),
|
67
|
+
object_name(object)].sum
|
68
|
+
else
|
69
|
+
name = object_name(object)
|
70
|
+
end
|
71
|
+
|
72
|
+
content_tag :li, nil, {id: show_id(:leaf, object.id),
|
73
|
+
class: classes
|
74
|
+
}.merge(object.html) do
|
75
|
+
if object.url.nil?
|
76
|
+
name
|
77
|
+
else
|
78
|
+
link_to name, object.url, {id: show_id(:link, object.id),
|
79
|
+
class: merge_classes(:link, object.active, object.link_classes)
|
80
|
+
}.merge(object.link_html)
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
@@ -0,0 +1,76 @@
|
|
1
|
+
module SemanticNavigation
|
2
|
+
module TwitterBootstrap3
|
3
|
+
class Tabs
|
4
|
+
include SemanticNavigation::Renderers::MixIn::RenderHelpers
|
5
|
+
include SemanticNavigation::Renderers::MixIn::ActsAsList
|
6
|
+
|
7
|
+
style_accessor direction: 'left'
|
8
|
+
|
9
|
+
navigation_default_classes [:nav, 'nav-tabs']
|
10
|
+
show_navigation_id false
|
11
|
+
show_node_id false
|
12
|
+
show_leaf_id false
|
13
|
+
show_link_id false
|
14
|
+
|
15
|
+
property_for :base, :ico
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def navigation(object)
|
20
|
+
content_tag :ul, nil, {id: show_id(:navigation, object.id),
|
21
|
+
class: merge_classes(:navigation, object.active, [object.classes,"pull-#{direction}"])
|
22
|
+
}.merge(object.html) do
|
23
|
+
yield
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def node(object)
|
28
|
+
content_tag :li, nil, {id: show_id(:leaf, object.id),
|
29
|
+
class: merge_classes(:leaf, object.active, [object.classes,'dropdown'].flatten)
|
30
|
+
}.merge(object.html) do
|
31
|
+
content_tag(:a, {:href => '#',
|
32
|
+
id: show_id(:link, object.id),
|
33
|
+
class: merge_classes(:link, object.active, [object.link_classes,'dropdown-toggle'].flatten),
|
34
|
+
'data-toggle'=> :dropdown
|
35
|
+
}.merge(object.link_html)) do
|
36
|
+
[object.ico ? content_tag(:i,nil,class: "icon-#{object.ico}") : '',
|
37
|
+
object_name(object),
|
38
|
+
content_tag(:b,nil,class: :caret)
|
39
|
+
].sum.html_safe
|
40
|
+
end +
|
41
|
+
yield
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def node_content(object)
|
46
|
+
content_tag(:ul, nil, {id: show_id(:node, object.id),
|
47
|
+
class: merge_classes(:node, false, [object.node_classes,'dropdown-menu'].flatten)
|
48
|
+
}.merge(object.node_html)) do
|
49
|
+
yield
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def leaf(object)
|
54
|
+
if object.ico
|
55
|
+
name = [content_tag(:i,nil,class: "icon-#{object.ico}"),
|
56
|
+
object_name(object)].sum
|
57
|
+
else
|
58
|
+
name = object_name(object)
|
59
|
+
end
|
60
|
+
|
61
|
+
content_tag :li, nil, {id: show_id(:leaf, object.id),
|
62
|
+
class: merge_classes(:leaf, object.active, object.classes)
|
63
|
+
}.merge(object.html) do
|
64
|
+
if object.url.nil?
|
65
|
+
name
|
66
|
+
else
|
67
|
+
link_to name, object.url, {id: show_id(:link, object.id),
|
68
|
+
class: merge_classes(:link, object.active, object.link_classes)
|
69
|
+
}.merge(object.link_html)
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
metadata
CHANGED
@@ -1,82 +1,83 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: semantic_navigation
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sergey Gribovski
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-09-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: 2.0.1
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 2.0.1
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: simplecov
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: appraisal
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rails
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: 3.2.0
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: 3.2.0
|
69
|
-
description:
|
70
|
-
|
69
|
+
description: |-
|
70
|
+
Simply and customizable navigation in the Ruby on Rails 3 application.
|
71
|
+
Predefined bootstrap renderers
|
71
72
|
email:
|
72
73
|
- megacoder@rambler.ru
|
73
74
|
executables: []
|
74
75
|
extensions: []
|
75
76
|
extra_rdoc_files: []
|
76
77
|
files:
|
77
|
-
- .editorconfig
|
78
|
-
- .gitignore
|
79
|
-
- .travis.yml
|
78
|
+
- ".editorconfig"
|
79
|
+
- ".gitignore"
|
80
|
+
- ".travis.yml"
|
80
81
|
- Appraisals
|
81
82
|
- Changelog.md
|
82
83
|
- Gemfile
|
@@ -120,6 +121,9 @@ files:
|
|
120
121
|
- lib/semantic_navigation/twitter_bootstrap/breadcrumb.rb
|
121
122
|
- lib/semantic_navigation/twitter_bootstrap/list.rb
|
122
123
|
- lib/semantic_navigation/twitter_bootstrap/tabs.rb
|
124
|
+
- lib/semantic_navigation/twitter_bootstrap_3/breadcrumb.rb
|
125
|
+
- lib/semantic_navigation/twitter_bootstrap_3/list.rb
|
126
|
+
- lib/semantic_navigation/twitter_bootstrap_3/tabs.rb
|
123
127
|
- lib/semantic_navigation/version.rb
|
124
128
|
- semantic_navigation.gemspec
|
125
129
|
- spec/lib/semantic_navigation/configuration_spec.rb
|
@@ -144,17 +148,17 @@ require_paths:
|
|
144
148
|
- lib
|
145
149
|
required_ruby_version: !ruby/object:Gem::Requirement
|
146
150
|
requirements:
|
147
|
-
- -
|
151
|
+
- - ">="
|
148
152
|
- !ruby/object:Gem::Version
|
149
153
|
version: '0'
|
150
154
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
151
155
|
requirements:
|
152
|
-
- -
|
156
|
+
- - ">="
|
153
157
|
- !ruby/object:Gem::Version
|
154
158
|
version: '0'
|
155
159
|
requirements: []
|
156
160
|
rubyforge_project: semantic_navigation
|
157
|
-
rubygems_version: 2.
|
161
|
+
rubygems_version: 2.2.2
|
158
162
|
signing_key:
|
159
163
|
specification_version: 4
|
160
164
|
summary: Make the navigation in your Rails app by several lines
|