padrino-admin 0.11.3 → 0.11.4
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 +7 -0
- data/README.rdoc +3 -3
- data/lib/padrino-admin/access_control.rb +46 -47
- data/lib/padrino-admin/bootstrap-less/alerts.less +29 -55
- data/lib/padrino-admin/bootstrap-less/badges.less +13 -15
- data/lib/padrino-admin/bootstrap-less/bootstrap.less +17 -21
- data/lib/padrino-admin/bootstrap-less/breadcrumbs.less +6 -11
- data/lib/padrino-admin/bootstrap-less/button-groups.less +114 -32
- data/lib/padrino-admin/bootstrap-less/buttons.less +41 -41
- data/lib/padrino-admin/bootstrap-less/carousel.less +43 -18
- data/lib/padrino-admin/bootstrap-less/close.less +4 -4
- data/lib/padrino-admin/bootstrap-less/code.less +8 -10
- data/lib/padrino-admin/bootstrap-less/component-animations.less +10 -4
- data/lib/padrino-admin/bootstrap-less/dropdowns.less +78 -51
- data/lib/padrino-admin/bootstrap-less/forms.less +183 -274
- data/lib/padrino-admin/bootstrap-less/glyphicons.less +232 -0
- data/lib/padrino-admin/bootstrap-less/grid.less +230 -88
- data/lib/padrino-admin/bootstrap-less/input-groups.less +127 -0
- data/lib/padrino-admin/bootstrap-less/jumbotron.less +16 -8
- data/lib/padrino-admin/bootstrap-less/labels.less +25 -37
- data/lib/padrino-admin/bootstrap-less/list-group.less +34 -35
- data/lib/padrino-admin/bootstrap-less/media.less +7 -5
- data/lib/padrino-admin/bootstrap-less/mixins.less +321 -108
- data/lib/padrino-admin/bootstrap-less/modals.less +24 -20
- data/lib/padrino-admin/bootstrap-less/navbar.less +474 -216
- data/lib/padrino-admin/bootstrap-less/navs.less +67 -85
- data/lib/padrino-admin/bootstrap-less/pager.less +4 -4
- data/lib/padrino-admin/bootstrap-less/pagination.less +64 -69
- data/lib/padrino-admin/bootstrap-less/panels.less +114 -62
- data/lib/padrino-admin/bootstrap-less/popovers.less +18 -18
- data/lib/padrino-admin/bootstrap-less/print.less +22 -7
- data/lib/padrino-admin/bootstrap-less/progress-bars.less +10 -33
- data/lib/padrino-admin/bootstrap-less/responsive-utilities.less +141 -40
- data/lib/padrino-admin/bootstrap-less/scaffolding.less +66 -19
- data/lib/padrino-admin/bootstrap-less/tables.less +154 -158
- data/lib/padrino-admin/bootstrap-less/theme.less +232 -0
- data/lib/padrino-admin/bootstrap-less/thumbnails.less +9 -20
- data/lib/padrino-admin/bootstrap-less/tooltip.less +3 -3
- data/lib/padrino-admin/bootstrap-less/type.less +47 -55
- data/lib/padrino-admin/bootstrap-less/utilities.less +2 -2
- data/lib/padrino-admin/bootstrap-less/variables.less +289 -93
- data/lib/padrino-admin/bootstrap-less/wells.less +2 -2
- data/lib/padrino-admin/generators/actions.rb +11 -10
- data/lib/padrino-admin/generators/admin_app.rb +11 -11
- data/lib/padrino-admin/generators/admin_page.rb +9 -9
- data/lib/padrino-admin/generators/orm.rb +6 -7
- data/lib/padrino-admin/generators/templates/account/activerecord.rb.tt +7 -7
- data/lib/padrino-admin/generators/templates/account/couchrest.rb.tt +16 -16
- data/lib/padrino-admin/generators/templates/account/datamapper.rb.tt +7 -7
- data/lib/padrino-admin/generators/templates/account/minirecord.rb.tt +7 -7
- data/lib/padrino-admin/generators/templates/account/mongoid.rb.tt +8 -8
- data/lib/padrino-admin/generators/templates/account/mongomapper.rb.tt +7 -7
- data/lib/padrino-admin/generators/templates/account/ohm.rb.tt +9 -9
- data/lib/padrino-admin/generators/templates/account/sequel.rb.tt +8 -8
- data/lib/padrino-admin/generators/templates/assets/javascripts/bootstrap/affix.js +9 -3
- data/lib/padrino-admin/generators/templates/assets/javascripts/bootstrap/alert.js +4 -2
- data/lib/padrino-admin/generators/templates/assets/javascripts/bootstrap/bootstrap.min.js +4 -4
- data/lib/padrino-admin/generators/templates/assets/javascripts/bootstrap/button.js +9 -5
- data/lib/padrino-admin/generators/templates/assets/javascripts/bootstrap/carousel.js +19 -12
- data/lib/padrino-admin/generators/templates/assets/javascripts/bootstrap/collapse.js +68 -45
- data/lib/padrino-admin/generators/templates/assets/javascripts/bootstrap/dropdown.js +6 -7
- data/lib/padrino-admin/generators/templates/assets/javascripts/bootstrap/modal.js +43 -40
- data/lib/padrino-admin/generators/templates/assets/javascripts/bootstrap/popover.js +16 -10
- data/lib/padrino-admin/generators/templates/assets/javascripts/bootstrap/scrollspy.js +6 -4
- data/lib/padrino-admin/generators/templates/assets/javascripts/bootstrap/tab.js +4 -2
- data/lib/padrino-admin/generators/templates/assets/javascripts/bootstrap/tooltip.js +78 -48
- data/lib/padrino-admin/generators/templates/assets/javascripts/bootstrap/transition.js +10 -1
- data/lib/padrino-admin/generators/templates/assets/stylesheets/application.css +1 -0
- data/lib/padrino-admin/generators/templates/assets/stylesheets/bootstrap.css +622 -334
- data/lib/padrino-admin/generators/templates/erb/app/layouts/error.erb.tt +2 -2
- data/lib/padrino-admin/generators/templates/erb/app/sessions/new.erb.tt +9 -9
- data/lib/padrino-admin/generators/templates/erb/page/_form.erb.tt +3 -3
- data/lib/padrino-admin/generators/templates/erb/page/index.erb.tt +3 -3
- data/lib/padrino-admin/generators/templates/haml/app/layouts/error.haml.tt +1 -1
- data/lib/padrino-admin/generators/templates/haml/app/sessions/new.haml.tt +9 -7
- data/lib/padrino-admin/generators/templates/haml/page/_form.haml.tt +2 -2
- data/lib/padrino-admin/generators/templates/haml/page/index.haml.tt +2 -2
- data/lib/padrino-admin/generators/templates/page/controller.rb.tt +3 -3
- data/lib/padrino-admin/generators/templates/slim/app/layouts/error.slim.tt +1 -1
- data/lib/padrino-admin/generators/templates/slim/app/sessions/new.slim.tt +9 -7
- data/lib/padrino-admin/generators/templates/slim/page/_form.slim.tt +2 -2
- data/lib/padrino-admin/generators/templates/slim/page/index.slim.tt +2 -2
- data/lib/padrino-admin/helpers/authentication_helpers.rb +35 -35
- data/lib/padrino-admin/helpers/view_helpers.rb +12 -19
- data/lib/padrino-admin/utils/crypt.rb +10 -9
- data/lib/padrino-admin.rb +4 -5
- data/test/fixtures/data_mapper.rb +10 -9
- data/test/generators/test_account_model_generator.rb +2 -2
- metadata +14 -21
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: cf3dcdd045be97a348167272e0164460b6df4162
|
4
|
+
data.tar.gz: bd4f782b57d442725eb6729d7a0fbc8681c008be
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 6b5b0e6d13948f5cb6c90d25e0e9cab1f888f3da99124fe2c7138da8f47e20ec55db5e2ad6c998cf899b2b07e72da603d958516872f5ad16ac092dbacb848740
|
7
|
+
data.tar.gz: 75a724d82e3e3b787d4f441a88c9fc08fcc5885133df0996f67a4ae3c6c9f61b798e882e4b376dcdf270c32997dd987d12f84b6718af5d71bd051cee56df0808
|
data/README.rdoc
CHANGED
@@ -6,7 +6,7 @@ Padrino has a beautiful Admin management dashboard with these features:
|
|
6
6
|
|
7
7
|
Orm Agnostic:: Data Adapters for Datamapper, Activerecord, Sequel, Mongomapper, Mongoid, Couchrest
|
8
8
|
Template Agnostic:: Erb, Erubis and Haml Renderer
|
9
|
-
Authentication:: Support for Account authentication, Account Permission
|
9
|
+
Authentication:: Support for Account authentication, Account Permission management
|
10
10
|
Scaffold:: You can simply create a new "admin interface" by providing a Model
|
11
11
|
Access Control:: Supports authentication and role permissions for your application
|
12
12
|
|
@@ -59,7 +59,7 @@ by the admin access control features:
|
|
59
59
|
end
|
60
60
|
end
|
61
61
|
|
62
|
-
In this example +if+ we visit
|
62
|
+
In this example +if+ we visit URLs that start with /+customer+/+orders+ or /+cart/checkout+ we will be redirected
|
63
63
|
to our :+login_page+ "/login". Once we are correctly logged in we can visit these pages.
|
64
64
|
|
65
65
|
For a more complete look at using the Admin panel functionality and access features, be sure to check out the
|
@@ -67,4 +67,4 @@ For a more complete look at using the Admin panel functionality and access featu
|
|
67
67
|
|
68
68
|
== Copyright
|
69
69
|
|
70
|
-
Copyright (c) 2011 Padrino. See LICENSE for details.
|
70
|
+
Copyright (c) 2011-2013 Padrino. See LICENSE for details.
|
@@ -2,15 +2,15 @@ require 'active_support/core_ext/class/attribute_accessors'
|
|
2
2
|
|
3
3
|
module Padrino
|
4
4
|
module Admin
|
5
|
-
class AccessControlError < StandardError
|
5
|
+
class AccessControlError < StandardError
|
6
6
|
end
|
7
7
|
##
|
8
|
-
# This module enables access control functionality within a
|
8
|
+
# This module enables access control functionality within a Padrino application.
|
9
9
|
#
|
10
10
|
module AccessControl
|
11
11
|
class << self
|
12
12
|
##
|
13
|
-
# Method used by Padrino::Application when we register the extension
|
13
|
+
# Method used by Padrino::Application when we register the extension.
|
14
14
|
#
|
15
15
|
def registered(app)
|
16
16
|
app.set :session_id, "_padrino_#{File.basename(Padrino.root)}_#{app.app_name}".to_sym
|
@@ -28,12 +28,12 @@ module Padrino
|
|
28
28
|
# This base access control class where roles are defined as are authorizations.
|
29
29
|
#
|
30
30
|
class Base
|
31
|
-
def initialize
|
31
|
+
def initialize
|
32
32
|
@roles, @authorizations, @project_modules = [], [], []
|
33
33
|
end
|
34
34
|
|
35
35
|
##
|
36
|
-
# We map project modules for a given role or roles
|
36
|
+
# We map project modules for a given role or roles.
|
37
37
|
#
|
38
38
|
def roles_for(*roles, &block)
|
39
39
|
raise Padrino::Admin::AccessControlError, "Role #{role} must be present and must be a symbol!" if roles.any? { |r| !r.kind_of?(Symbol) } || roles.empty?
|
@@ -44,14 +44,14 @@ module Padrino
|
|
44
44
|
end
|
45
45
|
|
46
46
|
##
|
47
|
-
# Return an array of roles
|
47
|
+
# Return an array of roles.
|
48
48
|
#
|
49
49
|
def roles
|
50
50
|
@roles.uniq.reject { |r| r == :any }
|
51
51
|
end
|
52
52
|
|
53
53
|
##
|
54
|
-
# Return an array of project_modules
|
54
|
+
# Return an array of project_modules.
|
55
55
|
#
|
56
56
|
def project_modules(account)
|
57
57
|
role = account.role.to_sym rescue :any
|
@@ -62,37 +62,37 @@ module Padrino
|
|
62
62
|
##
|
63
63
|
# Return true if the given account is allowed to see the given path.
|
64
64
|
#
|
65
|
-
# @example Hiding a disallowed link from a user
|
65
|
+
# @example Hiding a disallowed link from a user.
|
66
66
|
#
|
67
|
-
#
|
68
|
-
#
|
69
|
-
#
|
67
|
+
# # File: config/apps.rb
|
68
|
+
# # [...]
|
69
|
+
# Padrino.mount('Admin').to('/admin')
|
70
70
|
#
|
71
|
-
#
|
72
|
-
#
|
73
|
-
#
|
74
|
-
#
|
75
|
-
#
|
71
|
+
# # File: admin/app.rb
|
72
|
+
# class Admin < Padrino::Application
|
73
|
+
# # [...]
|
74
|
+
# register Padrino::Admin::AccessControl
|
75
|
+
# # [...]
|
76
76
|
#
|
77
|
-
#
|
78
|
-
#
|
79
|
-
#
|
77
|
+
# # Goals:
|
78
|
+
# # * Admins can manage widgets and accounts.
|
79
|
+
# # * Workers can only manage widgets.
|
80
80
|
#
|
81
|
-
#
|
82
|
-
#
|
83
|
-
#
|
84
|
-
#
|
81
|
+
# access_control.roles_for :admin do |role|
|
82
|
+
# role.project_module :accounts, '/accounts'
|
83
|
+
# role.project_module :widgets, '/widgets'
|
84
|
+
# end
|
85
85
|
#
|
86
|
-
#
|
87
|
-
#
|
88
|
-
#
|
89
|
-
#
|
86
|
+
# access_control.roles_for :worker do |role|
|
87
|
+
# role.project_module :widgets, '/widgets'
|
88
|
+
# end
|
89
|
+
# end
|
90
90
|
#
|
91
|
-
#
|
92
|
-
#
|
93
|
-
#
|
94
|
-
#
|
95
|
-
#
|
91
|
+
# # File: admin/views/layouts/application.haml
|
92
|
+
# # NOTE The un-mounted path is used ('/accounts' instead of '/admin/accounts')
|
93
|
+
# - if access_control.allowed?(current_account, '/accounts')
|
94
|
+
# # Admins see the "Profile" link, but Workers do not
|
95
|
+
# = link_to 'Profile', url(:accounts, :edit, :id => current_account.id)
|
96
96
|
#
|
97
97
|
def allowed?(account=nil, path=nil)
|
98
98
|
path = "/" if path.blank?
|
@@ -114,15 +114,15 @@ module Padrino
|
|
114
114
|
return false if denied_paths.any? { |p| path =~ /^#{p}/ }
|
115
115
|
true
|
116
116
|
end
|
117
|
-
end
|
117
|
+
end
|
118
118
|
|
119
119
|
###
|
120
|
-
# Project Authorization Class
|
120
|
+
# Project Authorization Class.
|
121
121
|
#
|
122
122
|
class Authorization
|
123
123
|
attr_reader :allowed, :denied, :project_modules, :roles
|
124
124
|
|
125
|
-
def initialize(*roles, &block)
|
125
|
+
def initialize(*roles, &block)
|
126
126
|
@roles = roles
|
127
127
|
@allowed = []
|
128
128
|
@denied = []
|
@@ -131,35 +131,35 @@ module Padrino
|
|
131
131
|
end
|
132
132
|
|
133
133
|
##
|
134
|
-
# Allow a specified path
|
134
|
+
# Allow a specified path.
|
135
135
|
#
|
136
136
|
def allow(path)
|
137
137
|
@allowed << path unless @allowed.include?(path)
|
138
138
|
end
|
139
139
|
|
140
140
|
##
|
141
|
-
# Protect access from
|
141
|
+
# Protect access from.
|
142
142
|
#
|
143
143
|
def protect(path)
|
144
144
|
@denied << path unless @denied.include?(path)
|
145
145
|
end
|
146
146
|
|
147
147
|
##
|
148
|
-
# Create a project module
|
148
|
+
# Create a project module.
|
149
149
|
#
|
150
150
|
def project_module(name, path, options={})
|
151
151
|
allow(path)
|
152
152
|
@project_modules << ProjectModule.new(name, path, options)
|
153
153
|
end
|
154
|
-
end
|
154
|
+
end
|
155
155
|
|
156
156
|
##
|
157
|
-
# Project Module class
|
157
|
+
# Project Module class.
|
158
158
|
#
|
159
159
|
class ProjectModule
|
160
160
|
attr_reader :name, :options
|
161
161
|
|
162
|
-
def initialize(name, path, options={})
|
162
|
+
def initialize(name, path, options={})
|
163
163
|
@name, @path, @options = name, path, options
|
164
164
|
end
|
165
165
|
|
@@ -171,7 +171,7 @@ module Padrino
|
|
171
171
|
end
|
172
172
|
|
173
173
|
##
|
174
|
-
# Return the path of the project module. If a prefix given will be
|
174
|
+
# Return the path of the project module. If a prefix given will be pre pended.
|
175
175
|
#
|
176
176
|
# @example
|
177
177
|
# # => /accounts/new
|
@@ -184,8 +184,7 @@ module Padrino
|
|
184
184
|
path = File.join(ENV['RACK_BASE_URI'].to_s, path) if ENV['RACK_BASE_URI']
|
185
185
|
path
|
186
186
|
end
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
end # Padrino
|
187
|
+
end
|
188
|
+
end
|
189
|
+
end
|
190
|
+
end
|
@@ -7,11 +7,9 @@
|
|
7
7
|
// -------------------------
|
8
8
|
|
9
9
|
.alert {
|
10
|
-
padding:
|
10
|
+
padding: @alert-padding;
|
11
11
|
margin-bottom: @line-height-computed;
|
12
|
-
|
13
|
-
background-color: @alert-bg;
|
14
|
-
border: 1px solid @alert-border;
|
12
|
+
border: 1px solid transparent;
|
15
13
|
border-radius: @alert-border-radius;
|
16
14
|
|
17
15
|
// Headings for larger alerts
|
@@ -20,15 +18,27 @@
|
|
20
18
|
// Specified for the h4 to prevent conflicts of changing @headingsColor
|
21
19
|
color: inherit;
|
22
20
|
}
|
23
|
-
// Match the hr to the border of the alert
|
24
|
-
hr {
|
25
|
-
border-top-color: darken(@alert-border, 5%);
|
26
|
-
}
|
27
21
|
// Provide class for links that match alerts
|
28
22
|
.alert-link {
|
29
|
-
font-weight:
|
30
|
-
|
23
|
+
font-weight: @alert-link-font-weight;
|
24
|
+
}
|
25
|
+
|
26
|
+
// Improve alignment and spacing of inner content
|
27
|
+
> p,
|
28
|
+
> ul {
|
29
|
+
margin-bottom: 0;
|
30
|
+
}
|
31
|
+
> p + p {
|
32
|
+
margin-top: 5px;
|
31
33
|
}
|
34
|
+
}
|
35
|
+
|
36
|
+
// Dismissable alerts
|
37
|
+
//
|
38
|
+
// Expand the right padding and account for the close button's positioning.
|
39
|
+
|
40
|
+
.alert-dismissable {
|
41
|
+
padding-right: (@alert-padding + 20);
|
32
42
|
|
33
43
|
// Adjust close link position
|
34
44
|
.close {
|
@@ -40,54 +50,18 @@
|
|
40
50
|
}
|
41
51
|
|
42
52
|
// Alternate styles
|
43
|
-
//
|
53
|
+
//
|
54
|
+
// Generate contextual modifier classes for colorizing the alert.
|
44
55
|
|
45
56
|
.alert-success {
|
46
|
-
|
47
|
-
border-color: @alert-success-border;
|
48
|
-
color: @alert-success-text;
|
49
|
-
hr {
|
50
|
-
border-top-color: darken(@alert-success-border, 5%);
|
51
|
-
}
|
52
|
-
.alert-link {
|
53
|
-
color: darken(@alert-success-text, 10%);
|
54
|
-
}
|
55
|
-
}
|
56
|
-
.alert-danger {
|
57
|
-
background-color: @alert-danger-bg;
|
58
|
-
border-color: @alert-danger-border;
|
59
|
-
color: @alert-danger-text;
|
60
|
-
hr {
|
61
|
-
border-top-color: darken(@alert-danger-border, 5%);
|
62
|
-
}
|
63
|
-
.alert-link {
|
64
|
-
color: darken(@alert-danger-text, 10%);
|
65
|
-
}
|
57
|
+
.alert-variant(@alert-success-bg; @alert-success-border; @alert-success-text);
|
66
58
|
}
|
67
59
|
.alert-info {
|
68
|
-
|
69
|
-
border-color: @alert-info-border;
|
70
|
-
color: @alert-info-text;
|
71
|
-
hr {
|
72
|
-
border-top-color: darken(@alert-info-border, 5%);
|
73
|
-
}
|
74
|
-
.alert-link {
|
75
|
-
color: darken(@alert-info-text, 10%);
|
76
|
-
}
|
60
|
+
.alert-variant(@alert-info-bg; @alert-info-border; @alert-info-text);
|
77
61
|
}
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
.alert-
|
83
|
-
padding-top: 15px;
|
84
|
-
padding-bottom: 15px;
|
85
|
-
|
86
|
-
> p,
|
87
|
-
> ul {
|
88
|
-
margin-bottom: 0;
|
89
|
-
}
|
90
|
-
p + p {
|
91
|
-
margin-top: 5px;
|
92
|
-
}
|
62
|
+
.alert-warning {
|
63
|
+
.alert-variant(@alert-warning-bg; @alert-warning-border; @alert-warning-text);
|
64
|
+
}
|
65
|
+
.alert-danger {
|
66
|
+
.alert-variant(@alert-danger-bg; @alert-danger-border; @alert-danger-text);
|
93
67
|
}
|
@@ -9,16 +9,16 @@
|
|
9
9
|
min-width: 10px;
|
10
10
|
padding: 3px 7px;
|
11
11
|
font-size: @font-size-small;
|
12
|
-
font-weight:
|
13
|
-
color:
|
14
|
-
line-height:
|
15
|
-
vertical-align:
|
12
|
+
font-weight: @badge-font-weight;
|
13
|
+
color: @badge-color;
|
14
|
+
line-height: @badge-line-height;
|
15
|
+
vertical-align: baseline;
|
16
16
|
white-space: nowrap;
|
17
17
|
text-align: center;
|
18
|
-
background-color: @
|
19
|
-
border-radius:
|
18
|
+
background-color: @badge-bg;
|
19
|
+
border-radius: @badge-border-radius;
|
20
20
|
|
21
|
-
// Empty
|
21
|
+
// Empty badges collapse automatically (not available in IE8)
|
22
22
|
&:empty {
|
23
23
|
display: none;
|
24
24
|
}
|
@@ -28,25 +28,23 @@
|
|
28
28
|
a.badge {
|
29
29
|
&:hover,
|
30
30
|
&:focus {
|
31
|
-
color:
|
31
|
+
color: @badge-link-hover-color;
|
32
32
|
text-decoration: none;
|
33
33
|
cursor: pointer;
|
34
34
|
}
|
35
35
|
}
|
36
36
|
|
37
37
|
// Quick fix for labels/badges in buttons
|
38
|
-
.btn {
|
39
|
-
|
40
|
-
|
41
|
-
top: -1px;
|
42
|
-
}
|
38
|
+
.btn .badge {
|
39
|
+
position: relative;
|
40
|
+
top: -1px;
|
43
41
|
}
|
44
42
|
|
45
43
|
// Account for counters in navs
|
46
44
|
a.list-group-item.active > .badge,
|
47
45
|
.nav-pills > .active > a > .badge {
|
48
|
-
color: @
|
49
|
-
background-color:
|
46
|
+
color: @badge-active-color;
|
47
|
+
background-color: @badge-active-bg;
|
50
48
|
}
|
51
49
|
.nav-pills > li > a > .badge {
|
52
50
|
margin-left: 3px;
|
@@ -21,43 +21,39 @@
|
|
21
21
|
@import "type.less";
|
22
22
|
@import "code.less";
|
23
23
|
@import "grid.less";
|
24
|
-
|
25
24
|
@import "tables.less";
|
26
25
|
@import "forms.less";
|
27
26
|
@import "buttons.less";
|
28
27
|
|
29
|
-
// Components
|
28
|
+
// Components
|
30
29
|
@import "component-animations.less";
|
30
|
+
@import "glyphicons.less";
|
31
31
|
@import "dropdowns.less";
|
32
|
-
@import "
|
33
|
-
@import "
|
34
|
-
@import "wells.less";
|
35
|
-
@import "close.less";
|
36
|
-
|
37
|
-
// Components: Nav
|
32
|
+
@import "button-groups.less";
|
33
|
+
@import "input-groups.less";
|
38
34
|
@import "navs.less";
|
39
35
|
@import "navbar.less";
|
40
|
-
@import "button-groups.less";
|
41
36
|
@import "breadcrumbs.less";
|
42
37
|
@import "pagination.less";
|
43
38
|
@import "pager.less";
|
39
|
+
@import "labels.less";
|
40
|
+
@import "badges.less";
|
41
|
+
@import "jumbotron.less";
|
42
|
+
@import "thumbnails.less";
|
43
|
+
@import "alerts.less";
|
44
|
+
@import "progress-bars.less";
|
45
|
+
@import "media.less";
|
46
|
+
@import "list-group.less";
|
47
|
+
@import "panels.less";
|
48
|
+
@import "wells.less";
|
49
|
+
@import "close.less";
|
44
50
|
|
45
|
-
// Components
|
51
|
+
// Components w/ JavaScript
|
46
52
|
@import "modals.less";
|
47
53
|
@import "tooltip.less";
|
48
54
|
@import "popovers.less";
|
49
|
-
|
50
|
-
// Components: Misc
|
51
|
-
@import "alerts.less";
|
52
|
-
@import "thumbnails.less";
|
53
|
-
@import "media.less";
|
54
|
-
@import "labels.less";
|
55
|
-
@import "badges.less";
|
56
|
-
@import "progress-bars.less";
|
57
|
-
@import "accordion.less";
|
58
55
|
@import "carousel.less";
|
59
|
-
@import "jumbotron.less";
|
60
56
|
|
61
57
|
// Utility classes
|
62
|
-
@import "utilities.less";
|
58
|
+
@import "utilities.less";
|
63
59
|
@import "responsive-utilities.less";
|
@@ -5,24 +5,19 @@
|
|
5
5
|
|
6
6
|
.breadcrumb {
|
7
7
|
padding: 8px 15px;
|
8
|
-
margin:
|
8
|
+
margin-bottom: @line-height-computed;
|
9
9
|
list-style: none;
|
10
|
-
background-color:
|
10
|
+
background-color: @breadcrumb-bg;
|
11
11
|
border-radius: @border-radius-base;
|
12
12
|
> li {
|
13
13
|
display: inline-block;
|
14
|
-
|
15
|
-
|
16
|
-
display: inline-block;
|
17
|
-
content: "\00a0 /"; // Unicode space added since inline-block means non-collapsing white-space
|
14
|
+
&+li:before {
|
15
|
+
content: "/\00a0"; // Unicode space added since inline-block means non-collapsing white-space
|
18
16
|
padding: 0 5px;
|
19
|
-
color:
|
20
|
-
}
|
21
|
-
&:last-child:after {
|
22
|
-
display: none; // No divider after last element
|
17
|
+
color: @breadcrumb-color;
|
23
18
|
}
|
24
19
|
}
|
25
20
|
> .active {
|
26
|
-
color: @
|
21
|
+
color: @breadcrumb-active-color;
|
27
22
|
}
|
28
23
|
}
|