semantic_navigation 0.1.8 → 0.1.9
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.
- 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
|