##// END OF EJS Templates
Multiple changes for the navigation and buttons
Liviu -
r3570:b39f2bc2 new-ui
parent child Browse files
Show More
@@ -1,418 +1,422 b''
1
1
2
2
3 //BUTTONS
3 //BUTTONS
4 button,
4 button,
5 .btn,
5 .btn,
6 input[type="button"] {
6 input[type="button"] {
7 -webkit-appearance: none;
7 -webkit-appearance: none;
8 display: inline-block;
8 display: inline-block;
9 margin: 0 @padding/3 0 0;
9 margin: 0 @padding/3 0 0;
10 padding: @button-padding;
10 padding: @button-padding;
11 text-align: center;
11 text-align: center;
12 font-size: @basefontsize;
12 font-size: @basefontsize;
13 line-height: 1em;
13 line-height: 1em;
14 font-family: @text-light;
14 font-family: @text-light;
15 text-decoration: none;
15 text-decoration: none;
16 text-shadow: none;
16 text-shadow: none;
17 color: @grey4;
17 color: @grey4;
18 background-color: white;
18 background-color: white;
19 background-image: none;
19 background-image: none;
20 border: none;
20 border: none;
21 .border ( @border-thickness-buttons, @grey4 );
21 .border ( @border-thickness-buttons, @grey4 );
22 .border-radius (@border-radius);
22 .border-radius (@border-radius);
23 cursor: pointer;
23 cursor: pointer;
24 white-space: nowrap;
24 white-space: nowrap;
25 -webkit-transition: background .3s,color .3s;
25 -webkit-transition: background .3s,color .3s;
26 -moz-transition: background .3s,color .3s;
26 -moz-transition: background .3s,color .3s;
27 -o-transition: background .3s,color .3s;
27 -o-transition: background .3s,color .3s;
28 transition: background .3s,color .3s;
28 transition: background .3s,color .3s;
29 box-shadow: @button-shadow;
30 -webkit-box-shadow: @button-shadow;
31
32
29
33
30 a {
34 a {
31 display: block;
35 display: block;
32 margin: 0;
36 margin: 0;
33 padding: 0;
37 padding: 0;
34 color: inherit;
38 color: inherit;
35 text-decoration: none;
39 text-decoration: none;
36
40
37 &:hover {
41 &:hover {
38 text-decoration: none;
42 text-decoration: none;
39 }
43 }
40 }
44 }
41
45
42 &:focus,
46 &:focus,
43 &:active {
47 &:active {
44 outline:none;
48 outline:none;
45 }
49 }
46 &:hover {
50 &:hover {
47 color: white;
51 color: white;
48 background-color: @grey4;
52 background-color: @grey4;
49 }
53 }
50
54
51 .icon-remove-sign {
55 .icon-remove-sign {
52 display: none;
56 display: none;
53 }
57 }
54
58
55 //disabled buttons
59 //disabled buttons
56 //last; overrides any other styles
60 //last; overrides any other styles
57 &:disabled {
61 &:disabled {
58 opacity: .7;
62 opacity: .7;
59 cursor: auto;
63 cursor: auto;
60 background-color: white;
64 background-color: white;
61 color: @grey4;
65 color: @grey4;
62 text-shadow: none;
66 text-shadow: none;
63 }
67 }
64
68
65 &.no-margin {
69 &.no-margin {
66 margin: 0 0 0 0;
70 margin: 0 0 0 0;
67 }
71 }
68
72
69 }
73 }
70
74
71
75
72 .btn-default {
76 .btn-default {
73 .border ( @border-thickness-buttons, @rcblue );
77 .border ( @border-thickness-buttons, @rcblue );
74 background-image: none;
78 background-image: none;
75 color: @rcblue;
79 color: @rcblue;
76
80
77 a {
81 a {
78 color: @rcblue;
82 color: @rcblue;
79 }
83 }
80
84
81 &:hover,
85 &:hover,
82 &.active {
86 &.active {
83 color: white;
87 color: @rcblue;
84 background-color: @rcdarkblue;
88 background-color: @grey7;
85 .border ( @border-thickness, @rcdarkblue );
89 .border ( @border-thickness, @rcdarkblue );
86
90
87 a {
91 a {
88 color: white;
92 color: @rcblue;
89 }
93 }
90 }
94 }
91 &:disabled {
95 &:disabled {
92 .border ( @border-thickness-buttons, @grey4 );
96 .border ( @border-thickness-buttons, @grey4 );
93 background-color: transparent;
97 background-color: transparent;
94 }
98 }
95 }
99 }
96
100
97 .btn-primary,
101 .btn-primary,
98 .btn-small, /* TODO: anderson: remove .btn-small to not mix with the new btn-sm */
102 .btn-small, /* TODO: anderson: remove .btn-small to not mix with the new btn-sm */
99 .btn-success {
103 .btn-success {
100 .border ( @border-thickness, @rcblue );
104 .border ( @border-thickness, @rcblue );
101 background-color: @rcblue;
105 background-color: @rcblue;
102 color: white;
106 color: white;
103
107
104 a {
108 a {
105 color: white;
109 color: white;
106 }
110 }
107
111
108 &:hover,
112 &:hover,
109 &.active {
113 &.active {
110 .border ( @border-thickness, @rcdarkblue );
114 .border ( @border-thickness, @rcdarkblue );
111 color: white;
115 color: white;
112 background-color: @rcdarkblue;
116 background-color: @rcdarkblue;
113
117
114 a {
118 a {
115 color: white;
119 color: white;
116 }
120 }
117 }
121 }
118 &:disabled {
122 &:disabled {
119 background-color: @rcblue;
123 background-color: @rcblue;
120 }
124 }
121 }
125 }
122
126
123 .btn-secondary {
127 .btn-secondary {
124 &:extend(.btn-default);
128 &:extend(.btn-default);
125
129
126 background-color: white;
130 background-color: white;
127
131
128 &:focus {
132 &:focus {
129 outline: 0;
133 outline: 0;
130 }
134 }
131
135
132 &:hover {
136 &:hover {
133 &:extend(.btn-default:hover);
137 &:extend(.btn-default:hover);
134 }
138 }
135
139
136 &.btn-link {
140 &.btn-link {
137 &:extend(.btn-link);
141 &:extend(.btn-link);
138 color: @rcblue;
142 color: @rcblue;
139 }
143 }
140
144
141 &:disabled {
145 &:disabled {
142 color: @rcblue;
146 color: @rcblue;
143 background-color: white;
147 background-color: white;
144 }
148 }
145 }
149 }
146
150
147 .btn-warning,
151 .btn-warning,
148 .btn-danger,
152 .btn-danger,
149 .revoke_perm,
153 .revoke_perm,
150 .btn-x,
154 .btn-x,
151 .form .action_button.btn-x {
155 .form .action_button.btn-x {
152 .border ( @border-thickness, @alert2 );
156 .border ( @border-thickness, @alert2 );
153 background-color: white;
157 background-color: white;
154 color: @alert2;
158 color: @alert2;
155
159
156 a {
160 a {
157 color: @alert2;
161 color: @alert2;
158 }
162 }
159
163
160 &:hover,
164 &:hover,
161 &.active {
165 &.active {
162 .border ( @border-thickness, @alert2 );
166 .border ( @border-thickness, @alert2 );
163 color: white;
167 color: white;
164 background-color: @alert2;
168 background-color: @alert2;
165
169
166 a {
170 a {
167 color: white;
171 color: white;
168 }
172 }
169 }
173 }
170
174
171 i {
175 i {
172 display:none;
176 display:none;
173 }
177 }
174
178
175 &:disabled {
179 &:disabled {
176 background-color: white;
180 background-color: white;
177 color: @alert2;
181 color: @alert2;
178 }
182 }
179 }
183 }
180
184
181 .btn-approved-status {
185 .btn-approved-status {
182 .border ( @border-thickness, @alert1 );
186 .border ( @border-thickness, @alert1 );
183 background-color: white;
187 background-color: white;
184 color: @alert1;
188 color: @alert1;
185
189
186 }
190 }
187
191
188 .btn-rejected-status {
192 .btn-rejected-status {
189 .border ( @border-thickness, @alert2 );
193 .border ( @border-thickness, @alert2 );
190 background-color: white;
194 background-color: white;
191 color: @alert2;
195 color: @alert2;
192 }
196 }
193
197
194 .btn-sm,
198 .btn-sm,
195 .btn-mini,
199 .btn-mini,
196 .field-sm .btn {
200 .field-sm .btn {
197 padding: @padding/3;
201 padding: @padding/3;
198 }
202 }
199
203
200 .btn-xs {
204 .btn-xs {
201 padding: @padding/4;
205 padding: @padding/4;
202 }
206 }
203
207
204 .btn-lg {
208 .btn-lg {
205 padding: @padding * 1.2;
209 padding: @padding * 1.2;
206 }
210 }
207
211
208 .btn-group {
212 .btn-group {
209 display: inline-block;
213 display: inline-block;
210 .btn {
214 .btn {
211 float: left;
215 float: left;
212 margin: 0 0 0 -1px;
216 margin: 0 0 0 -1px;
213 }
217 }
214 }
218 }
215
219
216 .btn-link {
220 .btn-link {
217 background: transparent;
221 background: transparent;
218 border: none;
222 border: none;
219 padding: 0;
223 padding: 0;
220 color: @rcblue;
224 color: @rcblue;
221
225
222 &:hover {
226 &:hover {
223 background: transparent;
227 background: transparent;
224 border: none;
228 border: none;
225 color: @rcdarkblue;
229 color: @rcdarkblue;
226 }
230 }
227
231
228 //disabled buttons
232 //disabled buttons
229 //last; overrides any other styles
233 //last; overrides any other styles
230 &:disabled {
234 &:disabled {
231 opacity: .7;
235 opacity: .7;
232 cursor: auto;
236 cursor: auto;
233 background-color: white;
237 background-color: white;
234 color: @grey4;
238 color: @grey4;
235 text-shadow: none;
239 text-shadow: none;
236 }
240 }
237
241
238 // TODO: johbo: Check if we can avoid this, indicates that the structure
242 // TODO: johbo: Check if we can avoid this, indicates that the structure
239 // is not yet good.
243 // is not yet good.
240 // lisa: The button CSS reflects the button HTML; both need a cleanup.
244 // lisa: The button CSS reflects the button HTML; both need a cleanup.
241 &.btn-danger {
245 &.btn-danger {
242 color: @alert2;
246 color: @alert2;
243
247
244 &:hover {
248 &:hover {
245 color: darken(@alert2,30%);
249 color: darken(@alert2,30%);
246 }
250 }
247
251
248 &:disabled {
252 &:disabled {
249 color: @alert2;
253 color: @alert2;
250 }
254 }
251 }
255 }
252 }
256 }
253
257
254 .btn-social {
258 .btn-social {
255 &:extend(.btn-default);
259 &:extend(.btn-default);
256 margin: 5px 5px 5px 0px;
260 margin: 5px 5px 5px 0px;
257 min-width: 160px;
261 min-width: 160px;
258 }
262 }
259
263
260 // TODO: johbo: check these exceptions
264 // TODO: johbo: check these exceptions
261
265
262 .links {
266 .links {
263
267
264 .btn + .btn {
268 .btn + .btn {
265 margin-top: @padding;
269 margin-top: @padding;
266 }
270 }
267 }
271 }
268
272
269
273
270 .action_button {
274 .action_button {
271 display:inline;
275 display:inline;
272 margin: 0;
276 margin: 0;
273 padding: 0 1em 0 0;
277 padding: 0 1em 0 0;
274 font-size: inherit;
278 font-size: inherit;
275 color: @rcblue;
279 color: @rcblue;
276 border: none;
280 border: none;
277 border-radius: 0;
281 border-radius: 0;
278 background-color: transparent;
282 background-color: transparent;
279
283
280 &.last-item {
284 &.last-item {
281 border: none;
285 border: none;
282 padding: 0 0 0 0;
286 padding: 0 0 0 0;
283 }
287 }
284
288
285 &:last-child {
289 &:last-child {
286 border: none;
290 border: none;
287 padding: 0 0 0 0;
291 padding: 0 0 0 0;
288 }
292 }
289
293
290 &:hover {
294 &:hover {
291 color: @rcdarkblue;
295 color: @rcdarkblue;
292 background-color: transparent;
296 background-color: transparent;
293 border: none;
297 border: none;
294 }
298 }
295 }
299 }
296 .grid_delete {
300 .grid_delete {
297 .action_button {
301 .action_button {
298 border: none;
302 border: none;
299 }
303 }
300 }
304 }
301
305
302
306
303 // TODO: johbo: Form button tweaks, check if we can use the classes instead
307 // TODO: johbo: Form button tweaks, check if we can use the classes instead
304 input[type="submit"] {
308 input[type="submit"] {
305 &:extend(.btn-primary);
309 &:extend(.btn-primary);
306
310
307 &:focus {
311 &:focus {
308 outline: 0;
312 outline: 0;
309 }
313 }
310
314
311 &:hover {
315 &:hover {
312 &:extend(.btn-primary:hover);
316 &:extend(.btn-primary:hover);
313 }
317 }
314
318
315 &.btn-link {
319 &.btn-link {
316 &:extend(.btn-link);
320 &:extend(.btn-link);
317 color: @rcblue;
321 color: @rcblue;
318
322
319 &:disabled {
323 &:disabled {
320 color: @rcblue;
324 color: @rcblue;
321 background-color: transparent;
325 background-color: transparent;
322 }
326 }
323 }
327 }
324
328
325 &:disabled {
329 &:disabled {
326 .border ( @border-thickness-buttons, @rcblue );
330 .border ( @border-thickness-buttons, @rcblue );
327 background-color: @rcblue;
331 background-color: @rcblue;
328 color: white;
332 color: white;
329 }
333 }
330 }
334 }
331
335
332 input[type="reset"] {
336 input[type="reset"] {
333 &:extend(.btn-default);
337 &:extend(.btn-default);
334
338
335 // TODO: johbo: Check if this tweak can be avoided.
339 // TODO: johbo: Check if this tweak can be avoided.
336 background: transparent;
340 background: transparent;
337
341
338 &:focus {
342 &:focus {
339 outline: 0;
343 outline: 0;
340 }
344 }
341
345
342 &:hover {
346 &:hover {
343 &:extend(.btn-default:hover);
347 &:extend(.btn-default:hover);
344 }
348 }
345
349
346 &.btn-link {
350 &.btn-link {
347 &:extend(.btn-link);
351 &:extend(.btn-link);
348 color: @rcblue;
352 color: @rcblue;
349
353
350 &:disabled {
354 &:disabled {
351 border: none;
355 border: none;
352 }
356 }
353 }
357 }
354
358
355 &:disabled {
359 &:disabled {
356 .border ( @border-thickness-buttons, @rcblue );
360 .border ( @border-thickness-buttons, @rcblue );
357 background-color: white;
361 background-color: white;
358 color: @rcblue;
362 color: @rcblue;
359 }
363 }
360 }
364 }
361
365
362 input[type="submit"],
366 input[type="submit"],
363 input[type="reset"] {
367 input[type="reset"] {
364 &.btn-danger {
368 &.btn-danger {
365 &:extend(.btn-danger);
369 &:extend(.btn-danger);
366
370
367 &:focus {
371 &:focus {
368 outline: 0;
372 outline: 0;
369 }
373 }
370
374
371 &:hover {
375 &:hover {
372 &:extend(.btn-danger:hover);
376 &:extend(.btn-danger:hover);
373 }
377 }
374
378
375 &.btn-link {
379 &.btn-link {
376 &:extend(.btn-link);
380 &:extend(.btn-link);
377 color: @alert2;
381 color: @alert2;
378
382
379 &:hover {
383 &:hover {
380 color: darken(@alert2,30%);
384 color: darken(@alert2,30%);
381 }
385 }
382 }
386 }
383
387
384 &:disabled {
388 &:disabled {
385 color: @alert2;
389 color: @alert2;
386 background-color: white;
390 background-color: white;
387 }
391 }
388 }
392 }
389 &.btn-danger-action {
393 &.btn-danger-action {
390 .border ( @border-thickness, @alert2 );
394 .border ( @border-thickness, @alert2 );
391 background-color: @alert2;
395 background-color: @alert2;
392 color: white;
396 color: white;
393
397
394 a {
398 a {
395 color: white;
399 color: white;
396 }
400 }
397
401
398 &:hover {
402 &:hover {
399 background-color: darken(@alert2,20%);
403 background-color: darken(@alert2,20%);
400 }
404 }
401
405
402 &.active {
406 &.active {
403 .border ( @border-thickness, @alert2 );
407 .border ( @border-thickness, @alert2 );
404 color: white;
408 color: white;
405 background-color: @alert2;
409 background-color: @alert2;
406
410
407 a {
411 a {
408 color: white;
412 color: white;
409 }
413 }
410 }
414 }
411
415
412 &:disabled {
416 &:disabled {
413 background-color: white;
417 background-color: white;
414 color: @alert2;
418 color: @alert2;
415 }
419 }
416 }
420 }
417 }
421 }
418
422
@@ -1,578 +1,578 b''
1 // comments.less
1 // comments.less
2 // For use in RhodeCode applications;
2 // For use in RhodeCode applications;
3 // see style guide documentation for guidelines.
3 // see style guide documentation for guidelines.
4
4
5
5
6 // Comments
6 // Comments
7 @comment-outdated-opacity: 0.6;
7 @comment-outdated-opacity: 0.6;
8
8
9 .comments {
9 .comments {
10 width: 100%;
10 width: 100%;
11 }
11 }
12
12
13 tr.inline-comments div {
13 tr.inline-comments div {
14 max-width: 100%;
14 max-width: 100%;
15
15
16 p {
16 p {
17 white-space: normal;
17 white-space: normal;
18 }
18 }
19
19
20 code, pre, .code, dd {
20 code, pre, .code, dd {
21 overflow-x: auto;
21 overflow-x: auto;
22 width: 1062px;
22 width: 1062px;
23 }
23 }
24
24
25 dd {
25 dd {
26 width: auto;
26 width: auto;
27 }
27 }
28 }
28 }
29
29
30 #injected_page_comments {
30 #injected_page_comments {
31 .comment-previous-link,
31 .comment-previous-link,
32 .comment-next-link,
32 .comment-next-link,
33 .comment-links-divider {
33 .comment-links-divider {
34 display: none;
34 display: none;
35 }
35 }
36 }
36 }
37
37
38 .add-comment {
38 .add-comment {
39 margin-bottom: 10px;
39 margin-bottom: 10px;
40 }
40 }
41 .hide-comment-button .add-comment {
41 .hide-comment-button .add-comment {
42 display: none;
42 display: none;
43 }
43 }
44
44
45 .comment-bubble {
45 .comment-bubble {
46 color: @grey4;
46 color: @grey4;
47 margin-top: 4px;
47 margin-top: 4px;
48 margin-right: 30px;
48 margin-right: 30px;
49 visibility: hidden;
49 visibility: hidden;
50 }
50 }
51
51
52 .comment-label {
52 .comment-label {
53 float: left;
53 float: left;
54
54
55 padding: 0.4em 0.4em;
55 padding: 0.4em 0.4em;
56 margin: 3px 5px 0px -10px;
56 margin: 3px 5px 0px -10px;
57 display: inline-block;
57 display: inline-block;
58 min-height: 0;
58 min-height: 0;
59
59
60 text-align: center;
60 text-align: center;
61 font-size: 10px;
61 font-size: 10px;
62 line-height: .8em;
62 line-height: .8em;
63
63
64 font-family: @text-italic;
64 font-family: @text-italic;
65 font-style: italic;
65 font-style: italic;
66 background: #fff none;
66 background: #fff none;
67 color: @grey4;
67 color: @grey4;
68 border: 1px solid @grey4;
68 border: 1px solid @grey4;
69 white-space: nowrap;
69 white-space: nowrap;
70
70
71 text-transform: uppercase;
71 text-transform: uppercase;
72 min-width: 40px;
72 min-width: 40px;
73
73
74 &.todo {
74 &.todo {
75 color: @color5;
75 color: @color5;
76 font-style: italic;
76 font-style: italic;
77 font-weight: @text-bold-italic-weight;
77 font-weight: @text-bold-italic-weight;
78 font-family: @text-bold-italic;
78 font-family: @text-bold-italic;
79 }
79 }
80
80
81 .resolve {
81 .resolve {
82 cursor: pointer;
82 cursor: pointer;
83 text-decoration: underline;
83 text-decoration: underline;
84 }
84 }
85
85
86 .resolved {
86 .resolved {
87 text-decoration: line-through;
87 text-decoration: line-through;
88 color: @color1;
88 color: @color1;
89 }
89 }
90 .resolved a {
90 .resolved a {
91 text-decoration: line-through;
91 text-decoration: line-through;
92 color: @color1;
92 color: @color1;
93 }
93 }
94 .resolve-text {
94 .resolve-text {
95 color: @color1;
95 color: @color1;
96 margin: 2px 8px;
96 margin: 2px 8px;
97 font-family: @text-italic;
97 font-family: @text-italic;
98 font-style: italic;
98 font-style: italic;
99 }
99 }
100 }
100 }
101
101
102 .has-spacer-after {
102 .has-spacer-after {
103 &:after {
103 &:after {
104 content: ' | ';
104 content: ' | ';
105 color: @grey5;
105 color: @grey5;
106 }
106 }
107 }
107 }
108
108
109 .has-spacer-before {
109 .has-spacer-before {
110 &:before {
110 &:before {
111 content: ' | ';
111 content: ' | ';
112 color: @grey5;
112 color: @grey5;
113 }
113 }
114 }
114 }
115
115
116 .comment {
116 .comment {
117
117
118 &.comment-general {
118 &.comment-general {
119 border: 1px solid @grey5;
119 border: 1px solid @grey5;
120 padding: 5px 5px 5px 5px;
120 padding: 5px 5px 5px 5px;
121 }
121 }
122
122
123 margin: @padding 0;
123 margin: @padding 0;
124 padding: 4px 0 0 0;
124 padding: 4px 0 0 0;
125 line-height: 1em;
125 line-height: 1em;
126
126
127 .rc-user {
127 .rc-user {
128 min-width: 0;
128 min-width: 0;
129 margin: 0px .5em 0 0;
129 margin: 0px .5em 0 0;
130
130
131 .user {
131 .user {
132 display: inline;
132 display: inline;
133 }
133 }
134 }
134 }
135
135
136 .meta {
136 .meta {
137 position: relative;
137 position: relative;
138 width: 100%;
138 width: 100%;
139 border-bottom: 1px solid @grey5;
139 border-bottom: 1px solid @grey5;
140 margin: -5px 0px;
140 margin: -5px 0px;
141 line-height: 24px;
141 line-height: 24px;
142
142
143 &:hover .permalink {
143 &:hover .permalink {
144 visibility: visible;
144 visibility: visible;
145 color: @rcblue;
145 color: @rcblue;
146 }
146 }
147 }
147 }
148
148
149 .author,
149 .author,
150 .date {
150 .date {
151 display: inline;
151 display: inline;
152
152
153 &:after {
153 &:after {
154 content: ' | ';
154 content: ' | ';
155 color: @grey5;
155 color: @grey5;
156 }
156 }
157 }
157 }
158
158
159 .author-general img {
159 .author-general img {
160 top: 3px;
160 top: 3px;
161 }
161 }
162 .author-inline img {
162 .author-inline img {
163 top: 3px;
163 top: 3px;
164 }
164 }
165
165
166 .status-change,
166 .status-change,
167 .permalink,
167 .permalink,
168 .changeset-status-lbl {
168 .changeset-status-lbl {
169 display: inline;
169 display: inline;
170 }
170 }
171
171
172 .permalink {
172 .permalink {
173 visibility: hidden;
173 visibility: hidden;
174 }
174 }
175
175
176 .comment-links-divider {
176 .comment-links-divider {
177 display: inline;
177 display: inline;
178 }
178 }
179
179
180 .comment-links-block {
180 .comment-links-block {
181 float:right;
181 float:right;
182 text-align: right;
182 text-align: right;
183 min-width: 85px;
183 min-width: 85px;
184
184
185 [class^="icon-"]:before,
185 [class^="icon-"]:before,
186 [class*=" icon-"]:before {
186 [class*=" icon-"]:before {
187 margin-left: 0;
187 margin-left: 0;
188 margin-right: 0;
188 margin-right: 0;
189 }
189 }
190 }
190 }
191
191
192 .comment-previous-link {
192 .comment-previous-link {
193 display: inline-block;
193 display: inline-block;
194
194
195 .arrow_comment_link{
195 .arrow_comment_link{
196 cursor: pointer;
196 cursor: pointer;
197 i {
197 i {
198 font-size:10px;
198 font-size:10px;
199 }
199 }
200 }
200 }
201 .arrow_comment_link.disabled {
201 .arrow_comment_link.disabled {
202 cursor: default;
202 cursor: default;
203 color: @grey5;
203 color: @grey5;
204 }
204 }
205 }
205 }
206
206
207 .comment-next-link {
207 .comment-next-link {
208 display: inline-block;
208 display: inline-block;
209
209
210 .arrow_comment_link{
210 .arrow_comment_link{
211 cursor: pointer;
211 cursor: pointer;
212 i {
212 i {
213 font-size:10px;
213 font-size:10px;
214 }
214 }
215 }
215 }
216 .arrow_comment_link.disabled {
216 .arrow_comment_link.disabled {
217 cursor: default;
217 cursor: default;
218 color: @grey5;
218 color: @grey5;
219 }
219 }
220 }
220 }
221
221
222 .flag_status {
222 .flag_status {
223 display: inline-block;
223 display: inline-block;
224 margin: -2px .5em 0 .25em
224 margin: -2px .5em 0 .25em
225 }
225 }
226
226
227 .delete-comment {
227 .delete-comment {
228 display: inline-block;
228 display: inline-block;
229 color: @rcblue;
229 color: @rcblue;
230
230
231 &:hover {
231 &:hover {
232 cursor: pointer;
232 cursor: pointer;
233 }
233 }
234 }
234 }
235
235
236 .text {
236 .text {
237 clear: both;
237 clear: both;
238 .border-radius(@border-radius);
238 .border-radius(@border-radius);
239 .box-sizing(border-box);
239 .box-sizing(border-box);
240
240
241 .markdown-block p,
241 .markdown-block p,
242 .rst-block p {
242 .rst-block p {
243 margin: .5em 0 !important;
243 margin: .5em 0 !important;
244 // TODO: lisa: This is needed because of other rst !important rules :[
244 // TODO: lisa: This is needed because of other rst !important rules :[
245 }
245 }
246 }
246 }
247
247
248 .pr-version {
248 .pr-version {
249 float: left;
249 float: left;
250 margin: 0px 4px;
250 margin: 0px 4px;
251 }
251 }
252 .pr-version-inline {
252 .pr-version-inline {
253 float: left;
253 float: left;
254 margin: 0px 4px;
254 margin: 0px 4px;
255 }
255 }
256 .pr-version-num {
256 .pr-version-num {
257 font-size: 10px;
257 font-size: 10px;
258 }
258 }
259 }
259 }
260
260
261 @comment-padding: 5px;
261 @comment-padding: 5px;
262
262
263 .general-comments {
263 .general-comments {
264 .comment-outdated {
264 .comment-outdated {
265 opacity: @comment-outdated-opacity;
265 opacity: @comment-outdated-opacity;
266 }
266 }
267 }
267 }
268
268
269 .inline-comments {
269 .inline-comments {
270 border-radius: @border-radius;
270 border-radius: @border-radius;
271 .comment {
271 .comment {
272 margin: 0;
272 margin: 0;
273 border-radius: @border-radius;
273 border-radius: @border-radius;
274 }
274 }
275 .comment-outdated {
275 .comment-outdated {
276 opacity: @comment-outdated-opacity;
276 opacity: @comment-outdated-opacity;
277 }
277 }
278
278
279 .comment-inline {
279 .comment-inline {
280 background: white;
280 background: white;
281 padding: @comment-padding @comment-padding;
281 padding: @comment-padding @comment-padding;
282 border: @comment-padding solid @grey6;
282 border: @comment-padding solid @grey6;
283
283
284 .text {
284 .text {
285 border: none;
285 border: none;
286 }
286 }
287 .meta {
287 .meta {
288 border-bottom: 1px solid @grey6;
288 border-bottom: 1px solid @grey6;
289 margin: -5px 0px;
289 margin: -5px 0px;
290 line-height: 24px;
290 line-height: 24px;
291 }
291 }
292 }
292 }
293 .comment-selected {
293 .comment-selected {
294 border-left: 6px solid @comment-highlight-color;
294 border-left: 6px solid @comment-highlight-color;
295 }
295 }
296 .comment-inline-form {
296 .comment-inline-form {
297 padding: @comment-padding;
297 padding: @comment-padding;
298 display: none;
298 display: none;
299 }
299 }
300 .cb-comment-add-button {
300 .cb-comment-add-button {
301 margin: @comment-padding;
301 margin: @comment-padding;
302 }
302 }
303 /* hide add comment button when form is open */
303 /* hide add comment button when form is open */
304 .comment-inline-form-open ~ .cb-comment-add-button {
304 .comment-inline-form-open ~ .cb-comment-add-button {
305 display: none;
305 display: none;
306 }
306 }
307 .comment-inline-form-open {
307 .comment-inline-form-open {
308 display: block;
308 display: block;
309 }
309 }
310 /* hide add comment button when form but no comments */
310 /* hide add comment button when form but no comments */
311 .comment-inline-form:first-child + .cb-comment-add-button {
311 .comment-inline-form:first-child + .cb-comment-add-button {
312 display: none;
312 display: none;
313 }
313 }
314 /* hide add comment button when no comments or form */
314 /* hide add comment button when no comments or form */
315 .cb-comment-add-button:first-child {
315 .cb-comment-add-button:first-child {
316 display: none;
316 display: none;
317 }
317 }
318 /* hide add comment button when only comment is being deleted */
318 /* hide add comment button when only comment is being deleted */
319 .comment-deleting:first-child + .cb-comment-add-button {
319 .comment-deleting:first-child + .cb-comment-add-button {
320 display: none;
320 display: none;
321 }
321 }
322 }
322 }
323
323
324
324
325 .show-outdated-comments {
325 .show-outdated-comments {
326 display: inline;
326 display: inline;
327 color: @rcblue;
327 color: @rcblue;
328 }
328 }
329
329
330 // Comment Form
330 // Comment Form
331 div.comment-form {
331 div.comment-form {
332 margin-top: 20px;
332 margin-top: 20px;
333 }
333 }
334
334
335 .comment-form strong {
335 .comment-form strong {
336 display: block;
336 display: block;
337 margin-bottom: 15px;
337 margin-bottom: 15px;
338 }
338 }
339
339
340 .comment-form textarea {
340 .comment-form textarea {
341 width: 100%;
341 width: 100%;
342 height: 100px;
342 height: 100px;
343 font-family: @text-monospace;
343 font-family: @text-monospace;
344 }
344 }
345
345
346 form.comment-form {
346 form.comment-form {
347 margin-top: 10px;
347 margin-top: 10px;
348 margin-left: 10px;
348 margin-left: 10px;
349 }
349 }
350
350
351 .comment-inline-form .comment-block-ta,
351 .comment-inline-form .comment-block-ta,
352 .comment-form .comment-block-ta,
352 .comment-form .comment-block-ta,
353 .comment-form .preview-box {
353 .comment-form .preview-box {
354 .border-radius(@border-radius);
354 .border-radius(@border-radius);
355 .box-sizing(border-box);
355 .box-sizing(border-box);
356 background-color: white;
356 background-color: white;
357 }
357 }
358
358
359 .comment-form-submit {
359 .comment-form-submit {
360 margin-top: 5px;
360 margin-top: 5px;
361 margin-left: 525px;
361 margin-left: 525px;
362 }
362 }
363
363
364 .file-comments {
364 .file-comments {
365 display: none;
365 display: none;
366 }
366 }
367
367
368 .comment-form .preview-box.unloaded,
368 .comment-form .preview-box.unloaded,
369 .comment-inline-form .preview-box.unloaded {
369 .comment-inline-form .preview-box.unloaded {
370 height: 50px;
370 height: 50px;
371 text-align: center;
371 text-align: center;
372 padding: 20px;
372 padding: 20px;
373 background-color: white;
373 background-color: white;
374 }
374 }
375
375
376 .comment-footer {
376 .comment-footer {
377 position: relative;
377 position: relative;
378 width: 100%;
378 width: 100%;
379 min-height: 42px;
379 min-height: 42px;
380
380
381 .status_box,
381 .status_box,
382 .cancel-button {
382 .cancel-button {
383 float: left;
383 float: left;
384 display: inline-block;
384 display: inline-block;
385 }
385 }
386
386
387 .action-buttons {
387 .action-buttons {
388 float: right;
388 float: right;
389 display: inline-block;
389 display: inline-block;
390 }
390 }
391
391
392 .action-buttons-extra {
392 .action-buttons-extra {
393 display: inline-block;
393 display: inline-block;
394 }
394 }
395 }
395 }
396
396
397 .comment-form {
397 .comment-form {
398
398
399 .comment {
399 .comment {
400 margin-left: 10px;
400 margin-left: 10px;
401 }
401 }
402
402
403 .comment-help {
403 .comment-help {
404 color: @grey4;
404 color: @grey4;
405 padding: 5px 0 5px 0;
405 padding: 5px 0 5px 0;
406 }
406 }
407
407
408 .comment-title {
408 .comment-title {
409 padding: 5px 0 5px 0;
409 padding: 5px 0 5px 0;
410 }
410 }
411
411
412 .comment-button {
412 .comment-button {
413 display: inline-block;
413 display: inline-block;
414 }
414 }
415
415
416 .comment-button-input {
416 .comment-button-input {
417 margin-right: 0;
417 margin-right: 0;
418 }
418 }
419
419
420 .comment-footer {
420 .comment-footer {
421 margin-bottom: 110px;
421 margin-bottom: 110px;
422 margin-top: 10px;
422 margin-top: 10px;
423 }
423 }
424 }
424 }
425
425
426
426
427 .comment-form-login {
427 .comment-form-login {
428 .comment-help {
428 .comment-help {
429 padding: 0.9em; //same as the button
429 padding: 0.7em; //same as the button
430 }
430 }
431
431
432 div.clearfix {
432 div.clearfix {
433 clear: both;
433 clear: both;
434 width: 100%;
434 width: 100%;
435 display: block;
435 display: block;
436 }
436 }
437 }
437 }
438
438
439 .comment-type {
439 .comment-type {
440 margin: 0px;
440 margin: 0px;
441 border-radius: inherit;
441 border-radius: inherit;
442 border-color: @grey6;
442 border-color: @grey6;
443 }
443 }
444
444
445 .preview-box {
445 .preview-box {
446 min-height: 105px;
446 min-height: 105px;
447 margin-bottom: 15px;
447 margin-bottom: 15px;
448 background-color: white;
448 background-color: white;
449 .border-radius(@border-radius);
449 .border-radius(@border-radius);
450 .box-sizing(border-box);
450 .box-sizing(border-box);
451 }
451 }
452
452
453 .add-another-button {
453 .add-another-button {
454 margin-left: 10px;
454 margin-left: 10px;
455 margin-top: 10px;
455 margin-top: 10px;
456 margin-bottom: 10px;
456 margin-bottom: 10px;
457 }
457 }
458
458
459 .comment .buttons {
459 .comment .buttons {
460 float: right;
460 float: right;
461 margin: -1px 0px 0px 0px;
461 margin: -1px 0px 0px 0px;
462 }
462 }
463
463
464 // Inline Comment Form
464 // Inline Comment Form
465 .injected_diff .comment-inline-form,
465 .injected_diff .comment-inline-form,
466 .comment-inline-form {
466 .comment-inline-form {
467 background-color: white;
467 background-color: white;
468 margin-top: 10px;
468 margin-top: 10px;
469 margin-bottom: 20px;
469 margin-bottom: 20px;
470 }
470 }
471
471
472 .inline-form {
472 .inline-form {
473 padding: 10px 7px;
473 padding: 10px 7px;
474 }
474 }
475
475
476 .inline-form div {
476 .inline-form div {
477 max-width: 100%;
477 max-width: 100%;
478 }
478 }
479
479
480 .overlay {
480 .overlay {
481 display: none;
481 display: none;
482 position: absolute;
482 position: absolute;
483 width: 100%;
483 width: 100%;
484 text-align: center;
484 text-align: center;
485 vertical-align: middle;
485 vertical-align: middle;
486 font-size: 16px;
486 font-size: 16px;
487 background: none repeat scroll 0 0 white;
487 background: none repeat scroll 0 0 white;
488
488
489 &.submitting {
489 &.submitting {
490 display: block;
490 display: block;
491 opacity: 0.5;
491 opacity: 0.5;
492 z-index: 100;
492 z-index: 100;
493 }
493 }
494 }
494 }
495 .comment-inline-form .overlay.submitting .overlay-text {
495 .comment-inline-form .overlay.submitting .overlay-text {
496 margin-top: 5%;
496 margin-top: 5%;
497 }
497 }
498
498
499 .comment-inline-form .clearfix,
499 .comment-inline-form .clearfix,
500 .comment-form .clearfix {
500 .comment-form .clearfix {
501 .border-radius(@border-radius);
501 .border-radius(@border-radius);
502 margin: 0px;
502 margin: 0px;
503 }
503 }
504
504
505 .comment-inline-form .comment-footer {
505 .comment-inline-form .comment-footer {
506 margin: 10px 0px 0px 0px;
506 margin: 10px 0px 0px 0px;
507 }
507 }
508
508
509 .hide-inline-form-button {
509 .hide-inline-form-button {
510 margin-left: 5px;
510 margin-left: 5px;
511 }
511 }
512 .comment-button .hide-inline-form {
512 .comment-button .hide-inline-form {
513 background: white;
513 background: white;
514 }
514 }
515
515
516 .comment-area {
516 .comment-area {
517 padding: 8px 12px;
517 padding: 8px 12px;
518 border: 1px solid @grey5;
518 border: 1px solid @grey5;
519 .border-radius(@border-radius);
519 .border-radius(@border-radius);
520
520
521 .resolve-action {
521 .resolve-action {
522 padding: 1px 0px 0px 6px;
522 padding: 1px 0px 0px 6px;
523 }
523 }
524
524
525 }
525 }
526
526
527 .comment-area-header .nav-links {
527 .comment-area-header .nav-links {
528 display: flex;
528 display: flex;
529 flex-flow: row wrap;
529 flex-flow: row wrap;
530 -webkit-flex-flow: row wrap;
530 -webkit-flex-flow: row wrap;
531 width: 100%;
531 width: 100%;
532 }
532 }
533
533
534 .comment-area-footer {
534 .comment-area-footer {
535 display: flex;
535 display: flex;
536 }
536 }
537
537
538 .comment-footer .toolbar {
538 .comment-footer .toolbar {
539
539
540 }
540 }
541
541
542 .nav-links {
542 .nav-links {
543 padding: 0;
543 padding: 0;
544 margin: 0;
544 margin: 0;
545 list-style: none;
545 list-style: none;
546 height: auto;
546 height: auto;
547 border-bottom: 1px solid @grey5;
547 border-bottom: 1px solid @grey5;
548 }
548 }
549 .nav-links li {
549 .nav-links li {
550 display: inline-block;
550 display: inline-block;
551 list-style-type: none;
551 list-style-type: none;
552 }
552 }
553
553
554 .nav-links li a.disabled {
554 .nav-links li a.disabled {
555 cursor: not-allowed;
555 cursor: not-allowed;
556 }
556 }
557
557
558 .nav-links li.active a {
558 .nav-links li.active a {
559 border-bottom: 2px solid @rcblue;
559 border-bottom: 2px solid @rcblue;
560 color: #000;
560 color: #000;
561 font-weight: 600;
561 font-weight: 600;
562 }
562 }
563 .nav-links li a {
563 .nav-links li a {
564 display: inline-block;
564 display: inline-block;
565 padding: 0px 10px 5px 10px;
565 padding: 0px 10px 5px 10px;
566 margin-bottom: -1px;
566 margin-bottom: -1px;
567 font-size: 14px;
567 font-size: 14px;
568 line-height: 28px;
568 line-height: 28px;
569 color: #8f8f8f;
569 color: #8f8f8f;
570 border-bottom: 2px solid transparent;
570 border-bottom: 2px solid transparent;
571 }
571 }
572
572
573 .toolbar-text {
573 .toolbar-text {
574 float: left;
574 float: left;
575 margin: -5px 0px 0px 0px;
575 margin: -5px 0px 0px 0px;
576 font-size: 12px;
576 font-size: 12px;
577 }
577 }
578
578
@@ -1,139 +1,139 b''
1 .deform {
1 .deform {
2
2
3 * {
3 * {
4 box-sizing: border-box;
4 box-sizing: border-box;
5 }
5 }
6
6
7 .required:after {
7 .required:after {
8 color: #e32;
8 color: #e32;
9 content: '*';
9 content: '*';
10 display:inline;
10 display:inline;
11 }
11 }
12
12
13 .control-label {
13 .control-label {
14 width: 200px;
14 width: 200px;
15 padding: 10px 0px;
15 padding: 10px 0px;
16 float: left;
16 float: left;
17 }
17 }
18 .control-inputs {
18 .control-inputs {
19 width: 400px;
19 width: 400px;
20 float: left;
20 float: left;
21 }
21 }
22 .form-group .radio, .form-group .checkbox {
22 .form-group .radio, .form-group .checkbox {
23 position: relative;
23 position: relative;
24 display: block;
24 display: block;
25 /* margin-bottom: 10px; */
25 /* margin-bottom: 10px; */
26 }
26 }
27
27
28 .form-group {
28 .form-group {
29 clear: left;
29 clear: left;
30 margin-bottom: 20px;
30 margin-bottom: 20px;
31
31
32 &:after { /* clear fix */
32 &:after { /* clear fix */
33 content: " ";
33 content: " ";
34 display: block;
34 display: block;
35 clear: left;
35 clear: left;
36 }
36 }
37 }
37 }
38
38
39 .form-control {
39 .form-control {
40 width: 100%;
40 width: 100%;
41 padding: 0.9em;
41 padding: 0.7em;
42 border: 1px solid #979797;
42 border: 1px solid #979797;
43 border-radius: 2px;
43 border-radius: 2px;
44 }
44 }
45 .form-control.select2-container {
45 .form-control.select2-container {
46 padding: 0; /* padding already applied in .drop-menu a */
46 padding: 0; /* padding already applied in .drop-menu a */
47 }
47 }
48
48
49 .form-control.readonly {
49 .form-control.readonly {
50 background: #eeeeee;
50 background: #eeeeee;
51 cursor: not-allowed;
51 cursor: not-allowed;
52 }
52 }
53
53
54 .error-block {
54 .error-block {
55 color: red;
55 color: red;
56 margin: 0;
56 margin: 0;
57 }
57 }
58
58
59 .help-block {
59 .help-block {
60 margin: 0;
60 margin: 0;
61 }
61 }
62
62
63 .deform-seq-container .control-inputs {
63 .deform-seq-container .control-inputs {
64 width: 100%;
64 width: 100%;
65 }
65 }
66
66
67 .deform-seq-container .deform-seq-item-handle {
67 .deform-seq-container .deform-seq-item-handle {
68 width: 8.3%;
68 width: 8.3%;
69 float: left;
69 float: left;
70 }
70 }
71
71
72 .deform-seq-container .deform-seq-item-group {
72 .deform-seq-container .deform-seq-item-group {
73 width: 91.6%;
73 width: 91.6%;
74 float: left;
74 float: left;
75 }
75 }
76
76
77 .form-control {
77 .form-control {
78 input {
78 input {
79 height: 40px;
79 height: 40px;
80 }
80 }
81 input[type=checkbox], input[type=radio] {
81 input[type=checkbox], input[type=radio] {
82 height: auto;
82 height: auto;
83 }
83 }
84 select {
84 select {
85 height: 40px;
85 height: 40px;
86 }
86 }
87 }
87 }
88
88
89 .form-control.select2-container {
89 .form-control.select2-container {
90 height: 40px;
90 height: 40px;
91 }
91 }
92
92
93 .deform-full-field-sequence.control-inputs {
93 .deform-full-field-sequence.control-inputs {
94 width: 100%;
94 width: 100%;
95 }
95 }
96
96
97 .deform-table-sequence {
97 .deform-table-sequence {
98 .deform-seq-container {
98 .deform-seq-container {
99 .deform-seq-item {
99 .deform-seq-item {
100 margin: 0;
100 margin: 0;
101 label {
101 label {
102 display: none;
102 display: none;
103 }
103 }
104 .panel-heading {
104 .panel-heading {
105 display: none;
105 display: none;
106 }
106 }
107 .deform-seq-item-group > .panel {
107 .deform-seq-item-group > .panel {
108 padding: 0;
108 padding: 0;
109 margin: 5px 0;
109 margin: 5px 0;
110 border: none;
110 border: none;
111 &> .panel-body {
111 &> .panel-body {
112 padding: 0;
112 padding: 0;
113 }
113 }
114 }
114 }
115 &:first-child label {
115 &:first-child label {
116 display: block;
116 display: block;
117 }
117 }
118 }
118 }
119 }
119 }
120 }
120 }
121 .deform-table-2-sequence {
121 .deform-table-2-sequence {
122 .deform-seq-container {
122 .deform-seq-container {
123 .deform-seq-item {
123 .deform-seq-item {
124 .form-group {
124 .form-group {
125 width: 45% !important; padding: 0 2px; float: left; clear: none;
125 width: 45% !important; padding: 0 2px; float: left; clear: none;
126 }
126 }
127 }
127 }
128 }
128 }
129 }
129 }
130 .deform-table-3-sequence {
130 .deform-table-3-sequence {
131 .deform-seq-container {
131 .deform-seq-container {
132 .deform-seq-item {
132 .deform-seq-item {
133 .form-group {
133 .form-group {
134 width: 30% !important; padding: 0 2px; float: left; clear: none;
134 width: 30% !important; padding: 0 2px; float: left; clear: none;
135 }
135 }
136 }
136 }
137 }
137 }
138 }
138 }
139 }
139 }
@@ -1,742 +1,740 b''
1 // navigation.less
1 // navigation.less
2 // For use in RhodeCode applications;
2 // For use in RhodeCode applications;
3 // see style guide documentation for guidelines.
3 // see style guide documentation for guidelines.
4
4
5 // TOP MAIN DARK NAVIGATION
5 // TOP MAIN DARK NAVIGATION
6
6
7 .header .main_nav.horizontal-list {
7 .header .main_nav.horizontal-list {
8 float: right;
8 float: right;
9 color: @grey4;
9 color: @grey4;
10 > li {
10 > li {
11 a {
11 a {
12 color: @grey4;
12 color: @grey4;
13 }
13 }
14 }
14 }
15 }
15 }
16
16
17 // HEADER NAVIGATION
17 // HEADER NAVIGATION
18
18
19 .horizontal-list {
19 .horizontal-list {
20 display: block;
20 display: block;
21 margin: 0;
21 margin: 0;
22 padding: 0;
22 padding: 0;
23 -webkit-padding-start: 0;
23 -webkit-padding-start: 0;
24 text-align: left;
24 text-align: left;
25 font-size: @navigation-fontsize;
25 font-size: @navigation-fontsize;
26 color: @grey6;
26 color: @grey6;
27 z-index:10;
27 z-index:10;
28
28
29 li {
29 li {
30 line-height: 1em;
30 line-height: 1em;
31 list-style-type: none;
31 list-style-type: none;
32 margin: 0 20px 0 0;
32 margin: 0 20px 0 0;
33
33
34 a {
34 a {
35 padding: 0 .5em;
35 padding: 0 .5em;
36
36
37 &.menu_link_notifications {
37 &.menu_link_notifications {
38 .pill(7px,@rcblue);
38 .pill(7px,@rcblue);
39 display: inline;
39 display: inline;
40 margin: 0 7px 0 .7em;
40 margin: 0 7px 0 .7em;
41 font-size: @basefontsize;
41 font-size: @basefontsize;
42 color: white;
42 color: white;
43
43
44 &.empty {
44 &.empty {
45 background-color: @grey4;
45 background-color: @grey4;
46 }
46 }
47
47
48 &:hover {
48 &:hover {
49 background-color: @rcdarkblue;
49 background-color: @rcdarkblue;
50 }
50 }
51 }
51 }
52 }
52 }
53 .pill_container {
53 .pill_container {
54 margin: 1.25em 0px 0px 0px;
54 margin: 1.25em 0px 0px 0px;
55 float: right;
55 float: right;
56 }
56 }
57
57
58 &#quick_login_li {
58 &#quick_login_li {
59 &:hover {
59 &:hover {
60 color: @grey5;
60 color: @grey5;
61 }
61 }
62
62
63 a.menu_link_notifications {
63 a.menu_link_notifications {
64 color: white;
64 color: white;
65 }
65 }
66
66
67 .user {
67 .user {
68 padding-bottom: 10px;
68 padding-bottom: 10px;
69 }
69 }
70 }
70 }
71
71
72 &:before { content: none; }
72 &:before { content: none; }
73
73
74 &:last-child {
74 &:last-child {
75 .menulabel {
75 .menulabel {
76 padding-right: 0;
76 padding-right: 0;
77 border-right: none;
77 border-right: none;
78
78
79 .show_more {
79 .show_more {
80 padding-right: 0;
80 padding-right: 0;
81 }
81 }
82 }
82 }
83
83
84 &> a {
84 &> a {
85 border-bottom: none;
85 border-bottom: none;
86 }
86 }
87 }
87 }
88
88
89 &.open {
89 &.open {
90
90
91 a {
91 a {
92 color: white;
92 color: white;
93 }
93 }
94 }
94 }
95
95
96 &:focus {
96 &:focus {
97 outline: none;
97 outline: none;
98 }
98 }
99
99
100 ul li {
100 ul li {
101 display: block;
101 display: block;
102
102
103 &:last-child> a {
103 &:last-child> a {
104 border-bottom: none;
104 border-bottom: none;
105 }
105 }
106
106
107 ul li:last-child a {
107 ul li:last-child a {
108 /* we don't expect more then 3 levels of submenu and the third
108 /* we don't expect more then 3 levels of submenu and the third
109 level can have different html structure */
109 level can have different html structure */
110 border-bottom: none;
110 border-bottom: none;
111 }
111 }
112 }
112 }
113 }
113 }
114
114
115 > li {
115 > li {
116 float: left;
116 float: left;
117 display: block;
117 display: block;
118 padding: 0;
118 padding: 0;
119
119
120 > a,
120 > a,
121 &.has_select2 a {
121 &.has_select2 a {
122 display: block;
122 display: block;
123 padding: 10px 0;
123 padding: 10px 0;
124 }
124 }
125
125
126 .menulabel {
126 .menulabel {
127 padding: 0 0 0.4em 0;
128 line-height: 1em;
127 line-height: 1em;
129 // for this specifically we do not use a variable
128 // for this specifically we do not use a variable
130 }
129 }
131
130
132 .pr_notifications {
131 .pr_notifications {
133 padding-left: .5em;
132 padding-left: .5em;
134 }
133 }
135
134
136 .pr_notifications + .menulabel {
135 .pr_notifications + .menulabel {
137 display:inline;
136 display:inline;
138 padding-left: 0;
137 padding-left: 0;
139 }
138 }
140
139
141 &:hover,
140 &:hover,
142 &.open,
141 &.open,
143 &.active {
142 &.active {
144 a {
143 a {
145 color: @rcblue;
144 color: @rcblue;
146 }
145 }
147 }
146 }
148 }
147 }
149
148
150 pre {
149 pre {
151 margin: 0;
150 margin: 0;
152 padding: 0;
151 padding: 0;
153 }
152 }
154
153
155 .select2-container,
154 .select2-container,
156 .menulink.childs {
155 .menulink.childs {
157 position: relative;
156 position: relative;
158 }
157 }
159
158
160 #quick_login {
159 #quick_login {
161
160
162 li a {
161 li a {
163 padding: .5em 0;
162 padding: .5em 0;
164 border-bottom: none;
163 border-bottom: none;
165 color: @grey2;
164 color: @grey2;
166
165
167 &:hover { color: @grey1; }
166 &:hover { color: @grey1; }
168 }
167 }
169 }
168 }
170
169
171 #quick_login_link {
170 #quick_login_link {
172 display: inline-block;
171 display: inline-block;
173
172
174 .gravatar {
173 .gravatar {
175 border: 1px solid @grey5;
174 border: 1px solid @grey5;
176 }
175 }
177
176
178 .gravatar-login {
177 .gravatar-login {
179 height: 20px;
178 height: 20px;
180 width: 20px;
179 width: 20px;
181 margin: -8px 0;
180 margin: -8px 0;
182 padding: 0;
181 padding: 0;
183 }
182 }
184
183
185 &:hover .user {
184 &:hover .user {
186 color: @grey6;
185 color: @grey6;
187 }
186 }
188 }
187 }
189 }
188 }
190 .header .horizontal-list {
189 .header .horizontal-list {
191
190
192 li {
191 li {
193
192
194 &#quick_login_li {
193 &#quick_login_li {
195 padding-left: .5em;
194 padding-left: .5em;
196
195
197 &:hover #quick_login_link {
196 &:hover #quick_login_link {
198 color: inherit;
197 color: inherit;
199 }
198 }
200
199
201 .menu_link_user {
200 .menu_link_user {
202 padding: 0 2px;
201 padding: 0 2px;
203 }
202 }
204 }
203 }
205 list-style-type: none;
204 list-style-type: none;
206 }
205 }
207
206
208 > li {
207 > li {
209
208
210 a {
209 a {
211 padding: 18px 0 12px 0;
210 padding: 18px 0 12px 0;
212 color: @nav-grey;
211 color: @nav-grey;
213
212
214 &.menu_link_notifications {
213 &.menu_link_notifications {
215 padding: 1px 8px;
214 padding: 1px 8px;
216 }
215 }
217 }
216 }
218
217
219 &:hover,
218 &:hover,
220 &.open,
219 &.open,
221 &.active {
220 &.active {
222 .pill_container a {
221 .pill_container a {
223 // don't select text for the pill container, it has it' own
222 // don't select text for the pill container, it has it' own
224 // hover behaviour
223 // hover behaviour
225 color: @nav-grey;
224 color: @nav-grey;
226 }
225 }
227 }
226 }
228
227
229 &:hover,
228 &:hover,
230 &.open,
229 &.open,
231 &.active {
230 &.active {
232 a {
231 a {
233 color: @grey6;
232 color: @grey6;
234 }
233 }
235 }
234 }
236
235
237 .select2-dropdown-open a {
236 .select2-dropdown-open a {
238 color: @grey6;
237 color: @grey6;
239 }
238 }
240
239
241 .repo-switcher {
240 .repo-switcher {
242 padding-left: 0;
241 padding-left: 0;
243
242
244 .menulabel {
243 .menulabel {
245 padding-left: 0;
244 padding-left: 0;
246 }
245 }
247 }
246 }
248 }
247 }
249
248
250 li ul li {
249 li ul li {
251 background-color:@grey2;
250 background-color:@grey2;
252
251
253 a {
252 a {
254 padding: .5em 0;
253 padding: .5em 0;
255 border-bottom: @border-thickness solid @border-default-color;
254 border-bottom: @border-thickness solid @border-default-color;
256 color: @grey6;
255 color: @grey6;
257 }
256 }
258
257
259 &:last-child a, &.last a{
258 &:last-child a, &.last a{
260 border-bottom: none;
259 border-bottom: none;
261 }
260 }
262
261
263 &:hover {
262 &:hover {
264 background-color: @grey3;
263 background-color: @grey3;
265 }
264 }
266 }
265 }
267
266
268 .submenu {
267 .submenu {
269 margin-top: 5px;
268 margin-top: 5px;
270 }
269 }
271 }
270 }
272
271
273 // SUBMENUS
272 // SUBMENUS
274 .navigation .submenu {
273 .navigation .submenu {
275 display: none;
274 display: none;
276 }
275 }
277
276
278 .navigation li.open {
277 .navigation li.open {
279 .submenu {
278 .submenu {
280 display: block;
279 display: block;
281 }
280 }
282 }
281 }
283
282
284 .navigation li:last-child .submenu {
283 .navigation li:last-child .submenu {
285 right: -20px;
284 right: -20px;
286 left: auto;
285 left: auto;
287 }
286 }
288
287
289 .submenu {
288 .submenu {
290 position: absolute;
289 position: absolute;
291 top: 100%;
290 top: 100%;
292 left: 0;
291 left: 0;
293 min-width: 150px;
292 min-width: 150px;
294 margin: 6px 0 0;
293 margin: 6px 0 0;
295 padding: 0;
294 padding: 0;
296 text-align: left;
295 text-align: left;
297 font-family: @text-light;
296 font-family: @text-light;
298 border-radius: @border-radius;
297 border-radius: @border-radius;
299 z-index: 20;
298 z-index: 20;
300
299
301 li {
300 li {
302 display: block;
301 display: block;
303 margin: 0;
302 margin: 0;
304 padding: 0 .5em;
303 padding: 0 .5em;
305 line-height: 1em;
304 line-height: 1em;
306 color: @grey3;
305 color: @grey3;
307 background-color: @grey6;
306 background-color: @grey6;
308 list-style-type: none;
307 list-style-type: none;
309
308
310 a {
309 a {
311 display: block;
310 display: block;
312 width: 100%;
311 width: 100%;
313 padding: .5em 0;
312 padding: .5em 0;
314 border-right: none;
313 border-right: none;
315 border-bottom: @border-thickness solid white;
314 border-bottom: @border-thickness solid white;
316 color: @grey3;
315 color: @grey3;
317 }
316 }
318
317
319 ul {
318 ul {
320 display: none;
319 display: none;
321 position: absolute;
320 position: absolute;
322 top: 0;
321 top: 0;
323 right: 100%;
322 right: 100%;
324 padding: 0;
323 padding: 0;
325 z-index: 30;
324 z-index: 30;
326 }
325 }
327 &:hover {
326 &:hover {
328 background-color: @grey5;
327 background-color: @grey5;
329 -webkit-transition: background .3s;
328 -webkit-transition: background .3s;
330 -moz-transition: background .3s;
329 -moz-transition: background .3s;
331 -o-transition: background .3s;
330 -o-transition: background .3s;
332 transition: background .3s;
331 transition: background .3s;
333
332
334 ul {
333 ul {
335 display: block;
334 display: block;
336 }
335 }
337 }
336 }
338 }
337 }
339
338
340 }
339 }
341
340
342
341
343
342
344
343
345 // repo dropdown
344 // repo dropdown
346 .quick_repo_menu {
345 .quick_repo_menu {
347 width: 15px;
346 width: 15px;
348 text-align: center;
347 text-align: center;
349 position: relative;
348 position: relative;
350 cursor: pointer;
349 cursor: pointer;
351
350
352 div {
351 div {
353 overflow: visible !important;
352 overflow: visible !important;
354 }
353 }
355
354
356 &.sorting {
355 &.sorting {
357 cursor: auto;
356 cursor: auto;
358 }
357 }
359
358
360 &:hover {
359 &:hover {
361 .menu_items_container {
360 .menu_items_container {
362 position: absolute;
361 position: absolute;
363 display: block;
362 display: block;
364 }
363 }
365 .menu_items {
364 .menu_items {
366 display: block;
365 display: block;
367 }
366 }
368 }
367 }
369
368
370 i {
369 i {
371 margin: 0;
370 margin: 0;
372 color: @grey4;
371 color: @grey4;
373 }
372 }
374
373
375 .menu_items_container {
374 .menu_items_container {
376 position: absolute;
375 position: absolute;
377 top: 0;
376 top: 0;
378 left: 100%;
377 left: 100%;
379 margin: 0;
378 margin: 0;
380 padding: 0;
379 padding: 0;
381 list-style: none;
380 list-style: none;
382 background-color: @grey6;
381 background-color: @grey6;
383 z-index: 999;
382 z-index: 999;
384 text-align: left;
383 text-align: left;
385
384
386 a {
385 a {
387 color: @grey2;
386 color: @grey2;
388 }
387 }
389
388
390 ul.menu_items {
389 ul.menu_items {
391 margin: 0;
390 margin: 0;
392 padding: 0;
391 padding: 0;
393 }
392 }
394
393
395 li {
394 li {
396 margin: 0;
395 margin: 0;
397 padding: 0;
396 padding: 0;
398 line-height: 1em;
397 line-height: 1em;
399 list-style-type: none;
398 list-style-type: none;
400
399
401 a {
400 a {
402 display: block;
401 display: block;
403 height: 16px;
402 height: 16px;
404 padding: 8px; //must add up to td height (28px)
403 padding: 8px; //must add up to td height (28px)
405 width: 120px; // set width
404 width: 120px; // set width
406
405
407 &:hover {
406 &:hover {
408 background-color: @grey5;
407 background-color: @grey5;
409 -webkit-transition: background .3s;
408 -webkit-transition: background .3s;
410 -moz-transition: background .3s;
409 -moz-transition: background .3s;
411 -o-transition: background .3s;
410 -o-transition: background .3s;
412 transition: background .3s;
411 transition: background .3s;
413 }
412 }
414 }
413 }
415 }
414 }
416 }
415 }
417 }
416 }
418
417
419 // Header Repository Switcher
418 // Header Repository Switcher
420 // Select2 Dropdown
419 // Select2 Dropdown
421 #select2-drop.select2-drop.repo-switcher-dropdown {
420 #select2-drop.select2-drop.repo-switcher-dropdown {
422 width: auto !important;
421 width: auto !important;
423 margin-top: 5px;
422 margin-top: 5px;
424 padding: 1em 0;
423 padding: 1em 0;
425 text-align: left;
424 text-align: left;
426 .border-radius-bottom(@border-radius);
425 .border-radius-bottom(@border-radius);
427 border-color: transparent;
426 border-color: transparent;
428 color: @grey6;
427 color: @grey6;
429 background-color: @grey2;
428 background-color: @grey2;
430
429
431 input {
430 input {
432 min-width: 90%;
431 min-width: 90%;
433 }
432 }
434
433
435 ul.select2-result-sub {
434 ul.select2-result-sub {
436
435
437 li {
436 li {
438 line-height: 1em;
437 line-height: 1em;
439
438
440 &:hover,
439 &:hover,
441 &.select2-highlighted {
440 &.select2-highlighted {
442 background-color: @grey3;
441 background-color: @grey3;
443 }
442 }
444 }
443 }
445
444
446 &:before { content: none; }
445 &:before { content: none; }
447 }
446 }
448
447
449 ul.select2-results {
448 ul.select2-results {
450 min-width: 200px;
449 min-width: 200px;
451 margin: 0;
450 margin: 0;
452 padding: 0;
451 padding: 0;
453 list-style-type: none;
452 list-style-type: none;
454 overflow-x: visible;
453 overflow-x: visible;
455 overflow-y: scroll;
454 overflow-y: scroll;
456
455
457 li {
456 li {
458 padding: 0 8px;
457 padding: 0 8px;
459 line-height: 1em;
458 line-height: 1em;
460 color: @grey6;
459 color: @grey6;
461
460
462 &>.select2-result-label {
461 &>.select2-result-label {
463 padding: 8px 0;
462 padding: 8px 0;
464 border-bottom: @border-thickness solid @grey3;
463 border-bottom: @border-thickness solid @grey3;
465 white-space: nowrap;
464 white-space: nowrap;
466 color: @grey5;
465 color: @grey5;
467 cursor: pointer;
466 cursor: pointer;
468 }
467 }
469
468
470 &.select2-result-with-children {
469 &.select2-result-with-children {
471 margin: 0;
470 margin: 0;
472 padding: 0;
471 padding: 0;
473 }
472 }
474
473
475 &.select2-result-unselectable > .select2-result-label {
474 &.select2-result-unselectable > .select2-result-label {
476 margin: 0 8px;
475 margin: 0 8px;
477 }
476 }
478
477
479 }
478 }
480 }
479 }
481
480
482 ul.select2-result-sub {
481 ul.select2-result-sub {
483 margin: 0;
482 margin: 0;
484 padding: 0;
483 padding: 0;
485
484
486 li {
485 li {
487 display: block;
486 display: block;
488 margin: 0;
487 margin: 0;
489 border-right: none;
488 border-right: none;
490 line-height: 1em;
489 line-height: 1em;
491 font-family: @text-light;
490 font-family: @text-light;
492 color: @grey2;
491 color: @grey2;
493 list-style-type: none;
492 list-style-type: none;
494
493
495 &:hover {
494 &:hover {
496 background-color: @grey3;
495 background-color: @grey3;
497 }
496 }
498 }
497 }
499 }
498 }
500 }
499 }
501
500
502
501
503 #context-bar {
502 #context-bar {
504 display: block;
503 display: block;
505 margin: 0 auto;
504 margin: 0 auto 20px 0;
506 padding: 0 @header-padding;
505 padding: 0 @header-padding;
507 background-color: @grey7;
506 background-color: @grey7;
508
507
509 .clear {
508 .clear {
510 clear: both;
509 clear: both;
511 }
510 }
512 }
511 }
513
512
514 ul#context-pages {
513 ul#context-pages {
515 li {
514 li {
516 line-height: 2em;
517 list-style-type: none;
515 list-style-type: none;
518
516
519 a {
517 a {
520 color: @grey3;
518 color: @grey3;
521
519
522 &:hover {
520 &:hover {
523 color: @grey2;
521 color: @grey2;
524 }
522 }
525 }
523 }
526
524
527 &.active {
525 &.active {
528 // special case, non-variable color
526 // special case, non-variable color
529 border-bottom: 2px solid @rcblue;
527 border-bottom: 2px solid @rcblue;
530
528
531 a {
529 a {
532 color: @rcblue;
530 color: @rcblue;
533 }
531 }
534 }
532 }
535 }
533 }
536 }
534 }
537
535
538 // PAGINATION
536 // PAGINATION
539
537
540 .pagination {
538 .pagination {
541 border: @border-thickness solid @rcblue;
539 border: @border-thickness solid @rcblue;
542 color: @rcblue;
540 color: @rcblue;
543
541
544 .current {
542 .current {
545 color: @grey4;
543 color: @grey4;
546 }
544 }
547 }
545 }
548
546
549 .dataTables_processing {
547 .dataTables_processing {
550 text-align: center;
548 text-align: center;
551 font-size: 1.1em;
549 font-size: 1.1em;
552 position: relative;
550 position: relative;
553 top: 95px;
551 top: 95px;
554 }
552 }
555
553
556 .dataTables_paginate, .pagination-wh {
554 .dataTables_paginate, .pagination-wh {
557 text-align: left;
555 text-align: left;
558 display: inline-block;
556 display: inline-block;
559 border-left: 1px solid @rcblue;
557 border-left: 1px solid @rcblue;
560 float: none;
558 float: none;
561 overflow: hidden;
559 overflow: hidden;
562
560
563 .paginate_button, .pager_curpage,
561 .paginate_button, .pager_curpage,
564 .pager_link, .pg-previous, .pg-next, .pager_dotdot {
562 .pager_link, .pg-previous, .pg-next, .pager_dotdot {
565 display: inline-block;
563 display: inline-block;
566 padding: @menupadding/4 @menupadding;
564 padding: @menupadding/4 @menupadding;
567 border: 1px solid @rcblue;
565 border: 1px solid @rcblue;
568 border-left: 0;
566 border-left: 0;
569 color: @rcblue;
567 color: @rcblue;
570 cursor: pointer;
568 cursor: pointer;
571 float: left;
569 float: left;
572 }
570 }
573
571
574 .pager_curpage, .pager_dotdot,
572 .pager_curpage, .pager_dotdot,
575 .paginate_button.current, .paginate_button.disabled,
573 .paginate_button.current, .paginate_button.disabled,
576 .disabled {
574 .disabled {
577 color: @grey3;
575 color: @grey3;
578 cursor: default;
576 cursor: default;
579 }
577 }
580
578
581 .ellipsis {
579 .ellipsis {
582 display: inline-block;
580 display: inline-block;
583 text-align: left;
581 text-align: left;
584 padding: @menupadding/4 @menupadding;
582 padding: @menupadding/4 @menupadding;
585 border: 1px solid @rcblue;
583 border: 1px solid @rcblue;
586 border-left: 0;
584 border-left: 0;
587 float: left;
585 float: left;
588 }
586 }
589 }
587 }
590
588
591 // SIDEBAR
589 // SIDEBAR
592
590
593 .sidebar {
591 .sidebar {
594 .block-left;
592 .block-left;
595 clear: left;
593 clear: left;
596 max-width: @sidebar-width;
594 max-width: @sidebar-width;
597 margin-right: @sidebarpadding;
595 margin-right: @sidebarpadding;
598 padding-right: @sidebarpadding;
596 padding-right: @sidebarpadding;
599 font-family: @text-regular;
597 font-family: @text-regular;
600 color: @grey1;
598 color: @grey1;
601
599
602 &#graph_nodes {
600 &#graph_nodes {
603 clear:both;
601 clear:both;
604 width: auto;
602 width: auto;
605 margin-left: -100px;
603 margin-left: -100px;
606 padding: 0;
604 padding: 0;
607 border: none;
605 border: none;
608 }
606 }
609
607
610 .nav-pills {
608 .nav-pills {
611 margin: 0;
609 margin: 0;
612 }
610 }
613
611
614 .nav {
612 .nav {
615 list-style: none;
613 list-style: none;
616 padding: 0;
614 padding: 0;
617
615
618 li {
616 li {
619 padding-bottom: @menupadding;
617 padding-bottom: @menupadding;
620 line-height: 1em;
618 line-height: 1em;
621 color: @grey4;
619 color: @grey4;
622 list-style-type: none;
620 list-style-type: none;
623
621
624 &.active a {
622 &.active a {
625 color: @grey2;
623 color: @grey2;
626 }
624 }
627
625
628 a {
626 a {
629 color: @grey4;
627 color: @grey4;
630 }
628 }
631 }
629 }
632
630
633 }
631 }
634 }
632 }
635
633
636 .main_filter_help_box {
634 .main_filter_help_box {
637 padding: 7px 7px;
635 padding: 7px 7px;
638 display: inline-block;
636 display: inline-block;
639 vertical-align: top;
637 vertical-align: top;
640 background: inherit;
638 background: inherit;
641 position: absolute;
639 position: absolute;
642 right: 0;
640 right: 0;
643 top: 9px;
641 top: 9px;
644 }
642 }
645
643
646 .main_filter_input_box {
644 .main_filter_input_box {
647 display: inline-block;
645 display: inline-block;
648
646
649 .searchItems {
647 .searchItems {
650 display:flex;
648 display:flex;
651 background: @black;
649 background: @black;
652 padding: 0px;
650 padding: 0px;
653 border-radius: 3px;
651 border-radius: 3px;
654 border: 1px solid @black;
652 border: 1px solid @black;
655
653
656 a {
654 a {
657 border: none !important;
655 border: none !important;
658 }
656 }
659 }
657 }
660
658
661 .searchTag {
659 .searchTag {
662 line-height: 28px;
660 line-height: 28px;
663 padding: 0 5px;
661 padding: 0 5px;
664
662
665 .tag {
663 .tag {
666 color: @grey5;
664 color: @grey5;
667 border-color: @grey2;
665 border-color: @grey2;
668 background: @grey1;
666 background: @grey1;
669 }
667 }
670 }
668 }
671
669
672 .searchTagFilter {
670 .searchTagFilter {
673 background-color: @black !important;
671 background-color: @black !important;
674 margin-right: 0;
672 margin-right: 0;
675 }
673 }
676
674
677 .searchTagHelp {
675 .searchTagHelp {
678 background-color: @grey1 !important;
676 background-color: @grey1 !important;
679 margin: 0;
677 margin: 0;
680 }
678 }
681 .searchTagHelp:hover {
679 .searchTagHelp:hover {
682 background-color: @grey1 !important;
680 background-color: @grey1 !important;
683 }
681 }
684 .searchTagInput {
682 .searchTagInput {
685 background-color: @grey1 !important;
683 background-color: @grey1 !important;
686 margin-right: 0;
684 margin-right: 0;
687 }
685 }
688 }
686 }
689
687
690 .main_filter_box {
688 .main_filter_box {
691 margin: 9px 0 0 0;
689 margin: 9px 0 0 0;
692 }
690 }
693
691
694 #main_filter_help {
692 #main_filter_help {
695 background: @grey3;
693 background: @grey3;
696 border: 1px solid black;
694 border: 1px solid black;
697 position: absolute;
695 position: absolute;
698 white-space: pre;
696 white-space: pre;
699 z-index: 9999;
697 z-index: 9999;
700 color: @nav-grey;
698 color: @nav-grey;
701 margin: 1px 7px;
699 margin: 1px 7px;
702 padding: 0 10px;
700 padding: 0 10px;
703 }
701 }
704
702
705 input {
703 input {
706
704
707 &.main_filter_input {
705 &.main_filter_input {
708 padding: 5px 10px;
706 padding: 5px 10px;
709 min-width: 260px;
707 min-width: 260px;
710 color: @grey7;
708 color: @grey7;
711 background: @black;
709 background: @black;
712 min-height: 18px;
710 min-height: 18px;
713 border: 0;
711 border: 0;
714
712
715 &:active {
713 &:active {
716 color: @grey2 !important;
714 color: @grey2 !important;
717 background: white !important;
715 background: white !important;
718 }
716 }
719 &:focus {
717 &:focus {
720 color: @grey2 !important;
718 color: @grey2 !important;
721 background: white !important;
719 background: white !important;
722 }
720 }
723 }
721 }
724 }
722 }
725
723
726
724
727
725
728 .main_filter_input::placeholder {
726 .main_filter_input::placeholder {
729 color: @nav-grey;
727 color: @nav-grey;
730 opacity: 1;
728 opacity: 1;
731 }
729 }
732
730
733 .notice-box {
731 .notice-box {
734 display:block !important;
732 display:block !important;
735 padding: 9px 0 !important;
733 padding: 9px 0 !important;
736 }
734 }
737
735
738 .menulabel-notice {
736 .menulabel-notice {
739 border: 1px solid @color5;
737 border: 1px solid @color5;
740 padding:7px 10px;
738 padding:7px 10px;
741 color: @color5;
739 color: @color5;
742 }
740 }
@@ -1,221 +1,226 b''
1 // select2.less
1 // select2.less
2 // For use in RhodeCode application drop down select boxes;
2 // For use in RhodeCode application drop down select boxes;
3 // see style guide documentation for guidelines.
3 // see style guide documentation for guidelines.
4
4
5
5
6 // SELECT2 DROPDOWN MENUS
6 // SELECT2 DROPDOWN MENUS
7
7
8 //Select2 Dropdown
8 //Select2 Dropdown
9 .select2-results{
9 .select2-results{
10 .box-sizing(border-box);
10 .box-sizing(border-box);
11 overflow-y: scroll;
11 overflow-y: scroll;
12 }
12 }
13
13
14 .select2-container{margin: 0; position: relative; display: inline-block; zoom: 1;}
14 .select2-container{margin: 0; position: relative; display: inline-block; zoom: 1;}
15 .select2-container,
15 .select2-container,
16 .select2-drop,
16 .select2-drop,
17 .select2-search,
17 .select2-search,
18 .select2-search input {.box-sizing(border-box);}
18 .select2-search input {.box-sizing(border-box);}
19 .select2-container .select2-choice{display:block; line-height:1em; -webkit-touch-callout:none;-moz-user-select:none;-ms-user-select:none;user-select:none; }
19 .select2-container .select2-choice{display:block; line-height:1em; -webkit-touch-callout:none;-moz-user-select:none;-ms-user-select:none;user-select:none; }
20 .main .select2-container .select2-choice { background-color: white; }
20 .main .select2-container .select2-choice { background-color: white; box-shadow: @button-shadow;}
21 .select2-container .select2-choice abbr { display: none; width: 12px; height: 12px; position: absolute; right: 24px; top: 8px; font-size: 1px; text-decoration: none; border: 0; background: url('../images/select2.png') right top no-repeat; cursor: pointer; outline: 0; }
21 .select2-container .select2-choice abbr { display: none; width: 12px; height: 12px; position: absolute; right: 24px; top: 8px; font-size: 1px; text-decoration: none; border: 0; background: url('../images/select2.png') right top no-repeat; cursor: pointer; outline: 0; }
22 .select2-container.select2-allowclear .select2-choice abbr {display: inline-block;}
22 .select2-container.select2-allowclear .select2-choice abbr {display: inline-block;}
23 .select2-container .select2-choice abbr:hover { background-position: right -11px; cursor: pointer; }
23 .select2-container .select2-choice abbr:hover { background-position: right -11px; cursor: pointer; }
24 .select2-drop-mask { border: 0; margin: 0; padding: 0; position: fixed; left: 0; top: 0; min-height: 100%; min-width: 100%; height: auto; width: auto; opacity: 0; z-index: 998; background-color: #fff; filter: alpha(opacity=0); }
24 .select2-drop-mask { border: 0; margin: 0; padding: 0; position: fixed; left: 0; top: 0; min-height: 100%; min-width: 100%; height: auto; width: auto; opacity: 0; z-index: 998; background-color: #fff; filter: alpha(opacity=0); }
25 .select2-drop { width: 100%; margin-top: -1px; position: absolute; z-index: 999; top: 100%; background: #fff; color: #000; border: @border-thickness solid @rcblue; border-top: 0; border-radius: 0 0 @border-radius @border-radius; }
25 .select2-drop { width: 100%; margin-top: -1px; position: absolute; z-index: 999; top: 100%; background: #fff; color: #000; border: @border-thickness solid @rcblue; border-top: 0; border-radius: 0 0 @border-radius @border-radius; }
26 .select2-drop.select2-drop-above { margin-top: 1px; border-top: @border-thickness solid @rclightblue; border-bottom: 0; border-radius: @border-radius @border-radius 0 0; }
26 .select2-drop.select2-drop-above { margin-top: 1px; border-top: @border-thickness solid @rclightblue; border-bottom: 0; border-radius: @border-radius @border-radius 0 0; }
27 .select2-drop-active { border: @border-thickness solid #5897fb; border-top: none; }
27 .select2-drop-active { border: @border-thickness solid #5897fb; border-top: none; }
28 .select2-drop.select2-drop-above.select2-drop-active {border-top: @border-thickness solid #5897fb;}
28 .select2-drop.select2-drop-above.select2-drop-active {border-top: @border-thickness solid #5897fb;}
29 .select2-drop-auto-width { border-top: @border-thickness solid #aaa; width: auto; }
29 .select2-drop-auto-width { border-top: @border-thickness solid #aaa; width: auto; }
30 .select2-drop-auto-width .select2-search {padding-top: 4px;}
30 .select2-drop-auto-width .select2-search {padding-top: 4px;}
31 html[dir="rtl"] .select2-container .select2-choice .select2-arrow { left: 0; right: auto; border-left: none; border-right: @border-thickness solid @grey5; border-radius: @border-radius 0 0 @border-radius; }
31 html[dir="rtl"] .select2-container .select2-choice .select2-arrow { left: 0; right: auto; border-left: none; border-right: @border-thickness solid @grey5; border-radius: @border-radius 0 0 @border-radius; }
32 html[dir="rtl"] .select2-container .select2-choice .select2-arrow b {background-position: 2px 1px;}
32 html[dir="rtl"] .select2-container .select2-choice .select2-arrow b {background-position: 2px 1px;}
33 .select2-search { display: inline-block; width: 100%; min-height: 26px; margin: 0; padding-left: 4px; padding-right: 4px; position: relative; z-index: 1000; white-space: nowrap; }
33 .select2-search { display: inline-block; width: 100%; min-height: 26px; margin: 0; padding-left: 4px; padding-right: 4px; position: relative; z-index: 1000; white-space: nowrap; }
34 .select2-search input { width: 100%; height: auto !important; min-height: 26px; padding: 4px 20px 4px 5px; margin: 0; outline: 0; }
34 .select2-search input { width: 100%; height: auto !important; min-height: 26px; padding: 4px 20px 4px 5px; margin: 0; outline: 0; }
35 html[dir="rtl"] .select2-search input { padding: 4px 5px 4px 20px; background: #fff url('../images/select2.png') no-repeat -37px -22px; }
35 html[dir="rtl"] .select2-search input { padding: 4px 5px 4px 20px; background: #fff url('../images/select2.png') no-repeat -37px -22px; }
36 .select2-drop.select2-drop-above .select2-search input {margin-top: 4px;}
36 .select2-drop.select2-drop-above .select2-search input {margin-top: 4px;}
37 .select2-dropdown-open .select2-choice .select2-arrow { background: transparent; border-left: none; filter: none; }
37 .select2-dropdown-open .select2-choice .select2-arrow { background: transparent; border-left: none; filter: none; }
38 html[dir="rtl"] .select2-dropdown-open .select2-choice .select2-arrow {border-right: none;}
38 html[dir="rtl"] .select2-dropdown-open .select2-choice .select2-arrow {border-right: none;}
39 .select2-hidden-accessible { border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; }
39 .select2-hidden-accessible { border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; }
40 /* results */
40 /* results */
41 .select2-results { max-height: 200px; padding: 0 0 0 4px; margin: 4px 4px 4px 0; position: relative; overflow-x: hidden; overflow-y: auto; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); }
41 .select2-results { max-height: 200px; padding: 0 0 0 4px; margin: 4px 4px 4px 0; position: relative; overflow-x: hidden; overflow-y: auto; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); }
42 html[dir="rtl"] .select2-results { padding: 0 4px 0 0; margin: 4px 0 4px 4px; }
42 html[dir="rtl"] .select2-results { padding: 0 4px 0 0; margin: 4px 0 4px 4px; }
43 .select2-results .select2-disabled{background:@grey6;display:list-item;cursor:default}
43 .select2-results .select2-disabled{background:@grey6;display:list-item;cursor:default}
44 .select2-results .select2-selected{display:none}
44 .select2-results .select2-selected{display:none}
45 .select2-more-results.select2-active{background:#f4f4f4 url('../images/select2-spinner.gif') no-repeat 100%}
45 .select2-more-results.select2-active{background:#f4f4f4 url('../images/select2-spinner.gif') no-repeat 100%}
46 .select2-container.select2-container-disabled .select2-choice abbr{display:none}
46 .select2-container.select2-container-disabled .select2-choice abbr{display:none}
47 .select2-container.select2-container-disabled {background:@grey6;cursor:default}
47 .select2-container.select2-container-disabled {background:@grey6;cursor:default}
48 .select2-container.select2-container-disabled .select2-choice {background:@grey6;cursor:default}
48 .select2-container.select2-container-disabled .select2-choice {background:@grey6;cursor:default}
49 .select2-container-multi .select2-choices li{float:left;list-style:none}
49 .select2-container-multi .select2-choices li{float:left;list-style:none}
50 .select2-container-multi .select2-choices .select2-search-field{margin:0;padding:0;white-space:nowrap}
50 .select2-container-multi .select2-choices .select2-search-field{margin:0;padding:0;white-space:nowrap}
51 .select2-container-multi .select2-choices .select2-search-choice .select2-chosen{cursor:default}
51 .select2-container-multi .select2-choices .select2-search-choice .select2-chosen{cursor:default}
52 .select2-search-choice-close{display:block;width:12px;height:13px;position:absolute;right:3px;top:4px;font-size:1px;outline:none;background:url('../images/select2.png') right top no-repeat}
52 .select2-search-choice-close{display:block;width:12px;height:13px;position:absolute;right:3px;top:4px;font-size:1px;outline:none;background:url('../images/select2.png') right top no-repeat}
53 .select2-container-multi .select2-search-choice-close{left:3px}
53 .select2-container-multi .select2-search-choice-close{left:3px}
54 .select2-container-multi .select2-choices .select2-search-choice .select2-search-choice-close:hover{background-position:right -11px}
54 .select2-container-multi .select2-choices .select2-search-choice .select2-search-choice-close:hover{background-position:right -11px}
55 .select2-container-multi .select2-choices .select2-search-choice-focus .select2-search-choice-close{background-position:right -11px}
55 .select2-container-multi .select2-choices .select2-search-choice-focus .select2-search-choice-close{background-position:right -11px}
56 .select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice .select2-search-choice-close{display:none;background:none}
56 .select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice .select2-search-choice-close{display:none;background:none}
57 .select2-offscreen,.select2-offscreen:focus{clip:rect(0 0 0 0) !important;width:1px !important;height:1px !important;
57 .select2-offscreen,.select2-offscreen:focus{clip:rect(0 0 0 0) !important;width:1px !important;height:1px !important;
58 border:0 !important;margin:0 !important;padding:0 !important;overflow:hidden !important;
58 border:0 !important;margin:0 !important;padding:0 !important;overflow:hidden !important;
59 position: absolute !important;outline:0 !important;left:0 !important;top:0 !important}
59 position: absolute !important;outline:0 !important;left:0 !important;top:0 !important}
60 .select2-display-none,
60 .select2-display-none,
61 .select2-search-hidden {display:none}
61 .select2-search-hidden {display:none}
62 .select2-search input { border-color: @rclightblue; }
62 .select2-search input { border-color: @rclightblue; }
63
63
64 .select2-measure-scrollbar{position:absolute;top:-10000px;left:-10000px;width:100px;height:100px;overflow:scroll}
64 .select2-measure-scrollbar{position:absolute;top:-10000px;left:-10000px;width:100px;height:100px;overflow:scroll}
65 @media only screen and (-webkit-min-device-pixel-ratio:1.5),
65 @media only screen and (-webkit-min-device-pixel-ratio:1.5),
66 only screen and (min-resolution:144dpi){
66 only screen and (min-resolution:144dpi){
67 .select2-search input,
67 .select2-search input,
68 .select2-search-choice-close,
68 .select2-search-choice-close,
69 .select2-container .select2-choice abbr,
69 .select2-container .select2-choice abbr,
70 .select2-container .select2-choice .select2-arrow b{background-image:url('../images/select2x2.png');background-repeat:no-repeat;background-size:60px 40px;}
70 .select2-container .select2-choice .select2-arrow b{background-image:url('../images/select2x2.png');background-repeat:no-repeat;background-size:60px 40px;}
71 .select2-search input{background-position:100% -21px}
71 .select2-search input{background-position:100% -21px}
72 }
72 }
73 [class^="input-"] [class^="select2-choice"]>div{display:none}
73 [class^="input-"] [class^="select2-choice"]>div{display:none}
74 [class^="input-"] .select2-offscreen{position:absolute}
74 [class^="input-"] .select2-offscreen{position:absolute}
75 select.select2{height:28px;visibility:hidden}
75 select.select2{height:28px;visibility:hidden}
76 .autocomplete-suggestions{overflow:auto}
76 .autocomplete-suggestions{overflow:auto}
77 .autocomplete-suggestion{white-space:nowrap;overflow:hidden}
77 .autocomplete-suggestion{white-space:nowrap;overflow:hidden}
78
78
79 /* Retina-ize icons */
79 /* Retina-ize icons */
80 @media only screen and (-webkit-min-device-pixel-ratio:1.5),
80 @media only screen and (-webkit-min-device-pixel-ratio:1.5),
81 only screen and (min-resolution:144dpi){
81 only screen and (min-resolution:144dpi){
82 .select2-search input,
82 .select2-search input,
83 .select2-search-choice-close,
83 .select2-search-choice-close,
84 .select2-container .select2-choice abbr,
84 .select2-container .select2-choice abbr,
85 .select2-container .select2-choice .select2-arrow b{background-image:url('../images/select2x2.png');background-repeat:no-repeat;background-size:60px 40px;}
85 .select2-container .select2-choice .select2-arrow b{background-image:url('../images/select2x2.png');background-repeat:no-repeat;background-size:60px 40px;}
86 .select2-search input{background-position:100% -21px}
86 .select2-search input{background-position:100% -21px}
87 }
87 }
88
88
89 //Internal Select2 Dropdown Menus
89 //Internal Select2 Dropdown Menus
90
90
91 .drop-menu-core {
91 .drop-menu-core {
92 min-width: 160px;
92 min-width: 160px;
93 margin: 0 @padding 0 0;
93 margin: 0 @padding 0 0;
94 padding: 0;
94 padding: 0;
95 border: @border-thickness solid @rcblue;
95 border: @border-thickness solid @rcblue;
96 border-radius: @border-radius;
96 border-radius: @border-radius;
97 color: @rcblue;
97 color: @rcblue;
98 background-color: white;
98 background-color: white;
99 }
99 }
100
100
101 .drop-menu-dropdown {
101 .drop-menu-dropdown {
102 .drop-menu-core;
102 .drop-menu-core;
103
103
104 .flag_status {
104 .flag_status {
105 margin-top: 0;
105 margin-top: 0;
106 }
106 }
107 }
107 }
108
108
109 .drop-menu-base {
109 .drop-menu-base {
110 .drop-menu-core;
110 .drop-menu-core;
111 position: relative;
111 position: relative;
112 display: inline-block;
112 display: inline-block;
113 line-height: 1em;
113 line-height: 1em;
114 z-index: 2;
114 z-index: 2;
115 cursor: pointer;
115 cursor: pointer;
116
116
117 .flag_status {
117 .flag_status {
118 margin-top: 0;
118 margin-top: 0;
119 }
119 }
120
120
121 a {
121 a {
122 display:block;
122 display:block;
123 padding: .9em;
123 padding: .7em;
124 padding-right: 2em;
124 padding-right: 2em;
125 position: relative;
125 position: relative;
126
126
127 &:after {
127 &:after {
128 position: absolute;
128 position: absolute;
129 content: "\00A0\25BE";
129 content: "\00A0\25BE";
130 right: .1em;
130 right: .1em;
131 line-height: 1em;
131 line-height: 1em;
132 top: 0.4em;
132 top: 0.2em;
133 width: 1em;
133 width: 1em;
134 font-size: 20px;
134 font-size: 20px;
135 }
135 }
136 }
136 }
137 }
137 }
138
138
139 .drop-menu {
139 .drop-menu {
140 .drop-menu-base;
140 .drop-menu-base;
141 width: auto !important;
141 width: auto !important;
142 }
142 }
143
143
144 .drop-menu-no-width {
144 .drop-menu-no-width {
145 .drop-menu-base;
145 .drop-menu-base;
146 width: auto;
146 width: auto;
147 }
147 }
148
148
149 .field-sm .drop-menu {
149 .field-sm .drop-menu {
150 padding: 1px 0 0 0;
150 padding: 1px 0 0 0;
151 a {
151 a {
152 padding: 6px;
152 padding: 6px;
153 };
153 };
154 }
154 }
155
155
156 .select2-search input {
156 .select2-search input {
157 width: 100%;
157 width: 100%;
158 margin: .5em 0;
158 margin: .5em 0;
159 padding: .5em;
159 padding: .5em;
160 }
160 }
161
161
162 .select2-no-results {
162 .select2-no-results {
163 padding: .5em;
163 padding: .5em;
164 }
164 }
165
165
166 .drop-menu-dropdown ul {
166 .drop-menu-dropdown ul {
167 width: auto;
167 width: auto;
168 margin: 0;
168 margin: 0;
169 padding: 0;
169 padding: 0;
170 z-index: 50;
170 z-index: 50;
171
171
172 li {
172 li {
173 margin: 0;
173 margin: 0;
174 line-height: 1em;
174 line-height: 1em;
175 list-style-type: none;
175 list-style-type: none;
176
176
177 &:hover,
177 &:hover,
178 &.select2-highlighted {
178 &.select2-highlighted {
179 background-color: @rclightblue;
179 background-color: @grey7;
180
181 .select2-result-label {
182 &:hover {
183 color: @grey1!important;
184 }
185 }
180 }
186 }
181
187
182 &.select2-result-with-children {
188 &.select2-result-with-children {
183 &:hover {
189 &:hover {
184 background-color: white;
190 background-color: white;
185 }
191 }
186 }
192 }
187
193
188 .select2-result-label {
194 .select2-result-label {
189 display:block;
195 display:block;
190 padding: 8px;
196 padding: 8px;
191 font-family: @text-regular;
197 font-family: @text-regular;
192 border-bottom: @border-thickness solid @rclightblue;
198 color: @grey2;
193 color: @rcblue;
194 cursor: pointer;
199 cursor: pointer;
195 }
200 }
196 &.select2-result-with-children {
201 &.select2-result-with-children {
197
202
198 .select2-result-label {
203 .select2-result-label {
199 color: @rcdarkblue;
204 color: @rcdarkblue;
200 cursor: default;
205 cursor: default;
201 font-weight: @text-semibold-weight;
206 font-weight: @text-semibold-weight;
202 font-family: @text-semibold;
207 font-family: @text-semibold;
203 }
208 }
204
209
205 ul.select2-result-sub li .select2-result-label {
210 ul.select2-result-sub li .select2-result-label {
206 padding-left: 16px;
211 padding-left: 16px;
207 font-family: @text-regular;
212 font-family: @text-regular;
208 color: @rcblue;
213 color: @grey2;
209 cursor: pointer;
214 cursor: pointer;
210 }
215 }
211 }
216 }
212 }
217 }
213 }
218 }
214
219
215 .side-by-side-selector {
220 .side-by-side-selector {
216 .left-group,
221 .left-group,
217 .middle-group,
222 .middle-group,
218 .right-group {
223 .right-group {
219 margin-bottom: @padding;
224 margin-bottom: @padding;
220 }
225 }
221 }
226 }
@@ -1,552 +1,566 b''
1 //
1 //
2 // Typography
2 // Typography
3 // modified from Bootstrap
3 // modified from Bootstrap
4 // --------------------------------------------------
4 // --------------------------------------------------
5
5
6 // Base
6 // Base
7 body {
7 body {
8 font-size: @basefontsize;
8 font-size: @basefontsize;
9 font-family: @text-light;
9 font-family: @text-light;
10 letter-spacing: .02em;
10 letter-spacing: .02em;
11 color: @grey2;
11 color: @grey2;
12 }
12 }
13
13
14 #content, label{
14 #content, label{
15 font-size: @basefontsize;
15 font-size: @basefontsize;
16 }
16 }
17
17
18 label {
18 label {
19 color: @grey2;
19 color: @grey2;
20 }
20 }
21
21
22 ::selection { background: @rchighlightblue; }
22 ::selection { background: @rchighlightblue; }
23
23
24 // Headings
24 // Headings
25 // -------------------------
25 // -------------------------
26
26
27 h1, h2, h3, h4, h5, h6,
27 h1, h2, h3, h4, h5, h6,
28 .h1, .h2, .h3, .h4, .h5, .h6 {
28 .h1, .h2, .h3, .h4, .h5, .h6 {
29 margin: 0 0 @textmargin 0;
29 margin: 0 0 @textmargin 0;
30 padding: 0;
30 padding: 0;
31 line-height: 1.8em;
31 line-height: 1.8em;
32 color: @text-color;
32 color: @text-color;
33 a {
33 a {
34 color: @rcblue;
34 color: @rcblue;
35 }
35 }
36 }
36 }
37
37
38 h1, .h1 { font-size: 1.54em; font-weight: @text-bold-weight; font-family: @text-bold; }
38 h1, .h1 { font-size: 1.54em; font-weight: @text-bold-weight; font-family: @text-bold; }
39 h2, .h2 { font-size: 1.23em; font-weight: @text-semibold-weight; font-family: @text-semibold; }
39 h2, .h2 { font-size: 1.23em; font-weight: @text-semibold-weight; font-family: @text-semibold; }
40 h3, .h3 { font-size: 1.23em; font-family: @text-regular; }
40 h3, .h3 { font-size: 1.23em; font-family: @text-regular; }
41 h4, .h4 { font-size: 1em; font-weight: @text-bold-weight; font-family: @text-bold; }
41 h4, .h4 { font-size: 1em; font-weight: @text-bold-weight; font-family: @text-bold; }
42 h5, .h5 { font-size: 1em; font-weight: @text-bold-weight; font-family: @text-bold; }
42 h5, .h5 { font-size: 1em; font-weight: @text-bold-weight; font-family: @text-bold; }
43 h6, .h6 { font-size: 1em; font-weight: @text-bold-weight; font-family: @text-bold; }
43 h6, .h6 { font-size: 1em; font-weight: @text-bold-weight; font-family: @text-bold; }
44
44
45 // Breadcrumbs
45 // Breadcrumbs
46 .breadcrumbs {
46 .breadcrumbs {
47 font-size: @repo-title-fontsize;
47 font-size: @repo-title-fontsize;
48 margin: 0;
48 margin: 0;
49 }
49 }
50
50
51 .breadcrumbs_light {
51 .breadcrumbs_light {
52 float:left;
52 float:left;
53 font-size: 1.3em;
53 font-size: 1.3em;
54 line-height: 38px;
54 line-height: 38px;
55 }
55 }
56
56
57 // Body text
57 // Body text
58 // -------------------------
58 // -------------------------
59
59
60 p {
60 p {
61 margin: 0 0 @textmargin 0;
61 margin: 0 0 @textmargin 0;
62 padding: 0;
62 padding: 0;
63 line-height: 2em;
63 line-height: 2em;
64 }
64 }
65
65
66 .lead {
66 .lead {
67 margin-bottom: @textmargin;
67 margin-bottom: @textmargin;
68 font-weight: 300;
68 font-weight: 300;
69 line-height: 1.4;
69 line-height: 1.4;
70
70
71 @media (min-width: @screen-sm-min) {
71 @media (min-width: @screen-sm-min) {
72 font-size: (@basefontsize * 1.5);
72 font-size: (@basefontsize * 1.5);
73 }
73 }
74 }
74 }
75
75
76 a,
76 a,
77 .link {
77 .link {
78 color: @rcblue;
78 color: @rcblue;
79 text-decoration: none;
79 text-decoration: none;
80 outline: none;
80 outline: none;
81 cursor: pointer;
81 cursor: pointer;
82
82
83 &:focus {
83 &:focus {
84 outline: none;
84 outline: none;
85 }
85 }
86
86
87 &:hover {
87 &:hover {
88 color: @rcdarkblue;
88 color: @rcdarkblue;
89 }
89 }
90 }
90 }
91
91
92 img {
92 img {
93 border: none;
93 border: none;
94 outline: none;
94 outline: none;
95 }
95 }
96
96
97 strong {
97 strong {
98 font-weight: @text-bold-weight;
98 font-weight: @text-bold-weight;
99 font-family: @text-bold;
99 font-family: @text-bold;
100 }
100 }
101
101
102 em {
102 em {
103 font-family: @text-italic;
103 font-family: @text-italic;
104 font-style: italic;
104 font-style: italic;
105 }
105 }
106
106
107 strong em,
107 strong em,
108 em strong {
108 em strong {
109 font-style: italic;
109 font-style: italic;
110 font-weight: @text-bold-italic-weight;
110 font-weight: @text-bold-italic-weight;
111 font-family: @text-bold-italic;
111 font-family: @text-bold-italic;
112 }
112 }
113
113
114 //TODO: lisa: b and i are depreciated, but we are still using them in places.
114 //TODO: lisa: b and i are depreciated, but we are still using them in places.
115 // Should probably make some decision whether to keep or lose these.
115 // Should probably make some decision whether to keep or lose these.
116 b {
116 b {
117
117
118 }
118 }
119
119
120 i {
120 i {
121 font-style: normal;
121 font-style: normal;
122 }
122 }
123
123
124 label {
124 label {
125 color: @text-color;
125 color: @text-color;
126
126
127 input[type="checkbox"] {
127 input[type="checkbox"] {
128 margin-right: 1em;
128 margin-right: 1em;
129 }
129 }
130 input[type="radio"] {
130 input[type="radio"] {
131 margin-right: 1em;
131 margin-right: 1em;
132 }
132 }
133 }
133 }
134
134
135 code,
135 code,
136 .code {
136 .code {
137 font-size: .95em;
137 font-size: .95em;
138 font-family: @text-code;
138 font-family: @text-code;
139 color: @grey3;
139 color: @grey3;
140
140
141 a {
141 a {
142 color: lighten(@rcblue,10%)
142 color: lighten(@rcblue,10%)
143 }
143 }
144 }
144 }
145
145
146 pre {
146 pre {
147 margin: 0;
147 margin: 0;
148 padding: 0;
148 padding: 0;
149 border: 0;
149 border: 0;
150 outline: 0;
150 outline: 0;
151 font-size: @basefontsize*.95;
151 font-size: @basefontsize*.95;
152 line-height: 1.4em;
152 line-height: 1.4em;
153 font-family: @text-code;
153 font-family: @text-code;
154 color: @grey3;
154 color: @grey3;
155 }
155 }
156
156
157 // Emphasis & misc
157 // Emphasis & misc
158 // -------------------------
158 // -------------------------
159 .discreet {
160 color: @grey4;
161 font-size: 85%;
162 font-weight: normal;
163
164 a {
165 color: @grey4;
166
167 &:hover {
168 color: @rcdarkblue;
169 }
170 }
171 }
159
172
160 small,
173 small,
161 .small {
174 .small {
162 font-size: 75%;
175 font-size: 75%;
163 font-weight: normal;
176 font-weight: normal;
164 line-height: 1em;
177 line-height: 1em;
165 }
178 }
166
179
167 mark,
180 mark,
168 .mark {
181 .mark {
169 padding: .2em;
182 padding: .2em;
170 }
183 }
171
184
172 // Alignment
185 // Alignment
173 .text-left { text-align: left; }
186 .text-left { text-align: left; }
174 .text-right { text-align: right; }
187 .text-right { text-align: right; }
175 .text-center { text-align: center; }
188 .text-center { text-align: center; }
176 .text-justify { text-align: justify; }
189 .text-justify { text-align: justify; }
177 .text-nowrap { white-space: nowrap; }
190 .text-nowrap { white-space: nowrap; }
178
191
179 // Transformation
192 // Transformation
180 .text-lowercase { text-transform: lowercase; }
193 .text-lowercase { text-transform: lowercase; }
181 .text-uppercase { text-transform: uppercase; }
194 .text-uppercase { text-transform: uppercase; }
182 .text-capitalize { text-transform: capitalize; }
195 .text-capitalize { text-transform: capitalize; }
183
196
184 // Contextual colors
197 // Contextual colors
185 .text-muted {
198 .text-muted {
186 color: @grey4;
199 color: @grey4;
187 }
200 }
188 .text-primary {
201 .text-primary {
189 color: @rcblue;
202 color: @rcblue;
190 }
203 }
191 .text-success {
204 .text-success {
192 color: @alert1;
205 color: @alert1;
193 }
206 }
194 .text-info {
207 .text-info {
195 color: @alert4;
208 color: @alert4;
196 }
209 }
197 .text-warning {
210 .text-warning {
198 color: @alert3;
211 color: @alert3;
199 }
212 }
200 .text-danger {
213 .text-danger {
201 color: @alert2;
214 color: @alert2;
202 }
215 }
203
216
204 // Contextual backgrounds
217 // Contextual backgrounds
205 .bg-primary {
218 .bg-primary {
206 background-color: white;
219 background-color: white;
207 }
220 }
208 .bg-success {
221 .bg-success {
209 background-color: @alert1;
222 background-color: @alert1;
210 }
223 }
211 .bg-info {
224 .bg-info {
212 background-color: @alert4;
225 background-color: @alert4;
213 }
226 }
214 .bg-warning {
227 .bg-warning {
215 background-color: @alert3;
228 background-color: @alert3;
216 }
229 }
217 .bg-danger {
230 .bg-danger {
218 background-color: @alert2;
231 background-color: @alert2;
219 }
232 }
220
233
221
234
222 // Page header
235 // Page header
223 // -------------------------
236 // -------------------------
224
237
225 .page-header {
238 .page-header {
226 margin: @pagepadding 0 @textmargin;
239 margin: @pagepadding 0 @textmargin;
227 border-bottom: @border-thickness solid @grey5;
240 border-bottom: @border-thickness solid @grey5;
228 }
241 }
229
242
230 .title {
243 .title {
231 clear: both;
244 clear: both;
232 float: left;
245 float: left;
233 width: 100%;
246 width: 100%;
234 margin: @pagepadding/2 0 @pagepadding/4;
247 margin: @pagepadding/2 0 0;
248 min-height: 25px;
235
249
236 .breadcrumbs {
250 .breadcrumbs {
237 float: left;
251 float: left;
238 clear: both;
252 clear: both;
239 width: 700px;
253 width: 700px;
240 margin: 0;
254 margin: 0;
241
255
242 .q_filter_box {
256 .q_filter_box {
243 margin-right: @padding;
257 margin-right: @padding;
244 }
258 }
245 }
259 }
246
260
247 h1 a {
261 h1 a {
248 color: @rcblue;
262 color: @rcblue;
249 }
263 }
250
264
251 input{
265 input{
252 margin-right: @padding;
266 margin-right: @padding;
253 }
267 }
254
268
255 h5, .h5 {
269 h5, .h5 {
256 color: @grey1;
270 color: @grey1;
257 margin-bottom: @space;
271 margin-bottom: @space;
258
272
259 span {
273 span {
260 display: inline-block;
274 display: inline-block;
261 }
275 }
262 }
276 }
263
277
264 p {
278 p {
265 margin-bottom: 0;
279 margin-bottom: 0;
266 }
280 }
267
281
268 .links {
282 .links {
269 float: right;
283 float: right;
270 display: inline;
284 display: inline;
271 margin: 0;
285 margin: 0;
272 padding-left: 0;
286 padding-left: 0;
273 list-style: none;
287 list-style: none;
274 text-align: right;
288 text-align: right;
275
289
276 li {
290 li {
277 float: right;
291 float: right;
278 list-style-type: none;
292 list-style-type: none;
279 }
293 }
280
294
281 a {
295 a {
282 display: inline-block;
296 display: inline-block;
283 margin-left: @textmargin/2;
297 margin-left: @textmargin/2;
284 }
298 }
285 }
299 }
286
300
287 .title-content {
301 .title-content {
288 float: left;
302 float: left;
289 margin: 0;
303 margin: 0;
290 padding: 0;
304 padding: 0;
291
305
292 & + .breadcrumbs {
306 & + .breadcrumbs {
293 margin-top: @padding;
307 margin-top: @padding;
294 }
308 }
295
309
296 & + .links {
310 & + .links {
297 margin-top: -@button-padding;
311 margin-top: -@button-padding;
298
312
299 & + .breadcrumbs {
313 & + .breadcrumbs {
300 margin-top: @padding;
314 margin-top: @padding;
301 }
315 }
302 }
316 }
303
317
304 .repo-group-desc {
318 .repo-group-desc {
305 padding: 8px 0px 0px 0px;
319 padding: 8px 0px 0px 0px;
306 }
320 }
307 }
321 }
308
322
309 .title-main {
323 .title-main {
310 font-size: @repo-title-fontsize;
324 font-size: @repo-title-fontsize;
311 }
325 }
312
326
313 .title-description {
327 .title-description {
314 margin-top: .5em;
328 margin-top: .5em;
315 }
329 }
316
330
317 .q_filter_box {
331 .q_filter_box {
318 width: 200px;
332 width: 200px;
319 }
333 }
320
334
321 }
335 }
322
336
323 #readme .title {
337 #readme .title {
324 text-transform: none;
338 text-transform: none;
325 }
339 }
326
340
327 // Lists
341 // Lists
328 // -------------------------
342 // -------------------------
329
343
330 // Unordered and Ordered lists
344 // Unordered and Ordered lists
331 ul,
345 ul,
332 ol {
346 ol {
333 margin-top: 0;
347 margin-top: 0;
334 margin-bottom: @textmargin;
348 margin-bottom: @textmargin;
335 ul,
349 ul,
336 ol {
350 ol {
337 margin-bottom: 0;
351 margin-bottom: 0;
338 }
352 }
339 }
353 }
340
354
341 li {
355 li {
342 line-height: 2em;
356 line-height: 2em;
343 }
357 }
344
358
345 ul li {
359 ul li {
346 position: relative;
360 position: relative;
347 list-style-type: disc;
361 list-style-type: disc;
348
362
349 p:first-child {
363 p:first-child {
350 display:inline;
364 display:inline;
351 }
365 }
352 }
366 }
353
367
354 // List options
368 // List options
355
369
356 // Unstyled keeps list items block level, just removes default browser padding and list-style
370 // Unstyled keeps list items block level, just removes default browser padding and list-style
357 .list-unstyled {
371 .list-unstyled {
358 padding-left: 0;
372 padding-left: 0;
359 list-style: none;
373 list-style: none;
360 li:before { content: none; }
374 li:before { content: none; }
361 }
375 }
362
376
363 // Inline turns list items into inline-block
377 // Inline turns list items into inline-block
364 .list-inline {
378 .list-inline {
365 .list-unstyled();
379 .list-unstyled();
366 margin-left: -5px;
380 margin-left: -5px;
367
381
368 > li {
382 > li {
369 display: inline-block;
383 display: inline-block;
370 padding-left: 5px;
384 padding-left: 5px;
371 padding-right: 5px;
385 padding-right: 5px;
372 }
386 }
373 }
387 }
374
388
375 // Description Lists
389 // Description Lists
376
390
377 dl {
391 dl {
378 margin-top: 0; // Remove browser default
392 margin-top: 0; // Remove browser default
379 margin-bottom: @textmargin;
393 margin-bottom: @textmargin;
380 }
394 }
381
395
382 dt,
396 dt,
383 dd {
397 dd {
384 line-height: 1.4em;
398 line-height: 1.4em;
385 }
399 }
386
400
387 dt {
401 dt {
388 margin: @textmargin 0 0 0;
402 margin: @textmargin 0 0 0;
389 font-weight: @text-bold-weight;
403 font-weight: @text-bold-weight;
390 font-family: @text-bold;
404 font-family: @text-bold;
391 }
405 }
392
406
393 dd {
407 dd {
394 margin-left: 0; // Undo browser default
408 margin-left: 0; // Undo browser default
395 }
409 }
396
410
397 // Horizontal description lists
411 // Horizontal description lists
398 // Defaults to being stacked without any of the below styles applied, until the
412 // Defaults to being stacked without any of the below styles applied, until the
399 // grid breakpoint is reached (default of ~768px).
413 // grid breakpoint is reached (default of ~768px).
400 // These are used in forms as well; see style guide.
414 // These are used in forms as well; see style guide.
401 // TODO: lisa: These should really not be used in forms.
415 // TODO: lisa: These should really not be used in forms.
402
416
403 .dl-horizontal {
417 .dl-horizontal {
404
418
405 overflow: hidden;
419 overflow: hidden;
406 margin-bottom: @space;
420 margin-bottom: @space;
407
421
408 dt, dd {
422 dt, dd {
409 float: left;
423 float: left;
410 margin: 5px 0 5px 0;
424 margin: 5px 0 5px 0;
411 }
425 }
412
426
413 dt {
427 dt {
414 clear: left;
428 clear: left;
415 width: @label-width - @form-vertical-margin;
429 width: @label-width - @form-vertical-margin;
416 }
430 }
417
431
418 dd {
432 dd {
419 &:extend(.clearfix all); // Clear the floated `dt` if an empty `dd` is present
433 &:extend(.clearfix all); // Clear the floated `dt` if an empty `dd` is present
420 margin-left: @form-vertical-margin;
434 margin-left: @form-vertical-margin;
421 max-width: @form-max-width - (@label-width - @form-vertical-margin) - @form-vertical-margin;
435 max-width: @form-max-width - (@label-width - @form-vertical-margin) - @form-vertical-margin;
422 }
436 }
423
437
424 pre {
438 pre {
425 margin: 0;
439 margin: 0;
426 }
440 }
427
441
428 &.settings {
442 &.settings {
429 dt {
443 dt {
430 text-align: left;
444 text-align: left;
431 }
445 }
432 }
446 }
433
447
434 @media (min-width: 768px) {
448 @media (min-width: 768px) {
435 dt {
449 dt {
436 float: left;
450 float: left;
437 width: 185px;
451 width: 185px;
438 clear: left;
452 clear: left;
439 text-align: right;
453 text-align: right;
440 }
454 }
441 dd {
455 dd {
442 margin-left: 20px;
456 margin-left: 20px;
443 }
457 }
444 }
458 }
445 }
459 }
446
460
447
461
448 // Misc
462 // Misc
449 // -------------------------
463 // -------------------------
450
464
451 // Abbreviations and acronyms
465 // Abbreviations and acronyms
452 abbr[title],
466 abbr[title],
453 abbr[data-original-title] {
467 abbr[data-original-title] {
454 cursor: help;
468 cursor: help;
455 border-bottom: @border-thickness dotted @grey4;
469 border-bottom: @border-thickness dotted @grey4;
456 }
470 }
457 .initialism {
471 .initialism {
458 font-size: 90%;
472 font-size: 90%;
459 text-transform: uppercase;
473 text-transform: uppercase;
460 }
474 }
461
475
462 // Blockquotes
476 // Blockquotes
463 blockquote {
477 blockquote {
464 padding: 1em 2em;
478 padding: 1em 2em;
465 margin: 0 0 2em;
479 margin: 0 0 2em;
466 font-size: @basefontsize;
480 font-size: @basefontsize;
467 border-left: 2px solid @grey6;
481 border-left: 2px solid @grey6;
468
482
469 p,
483 p,
470 ul,
484 ul,
471 ol {
485 ol {
472 &:last-child {
486 &:last-child {
473 margin-bottom: 0;
487 margin-bottom: 0;
474 }
488 }
475 }
489 }
476
490
477 footer,
491 footer,
478 small,
492 small,
479 .small {
493 .small {
480 display: block;
494 display: block;
481 font-size: 80%;
495 font-size: 80%;
482
496
483 &:before {
497 &:before {
484 content: '\2014 \00A0'; // em dash, nbsp
498 content: '\2014 \00A0'; // em dash, nbsp
485 }
499 }
486 }
500 }
487 }
501 }
488
502
489 // Opposite alignment of blockquote
503 // Opposite alignment of blockquote
490 //
504 //
491 .blockquote-reverse,
505 .blockquote-reverse,
492 blockquote.pull-right {
506 blockquote.pull-right {
493 padding-right: 15px;
507 padding-right: 15px;
494 padding-left: 0;
508 padding-left: 0;
495 border-right: 5px solid @grey6;
509 border-right: 5px solid @grey6;
496 border-left: 0;
510 border-left: 0;
497 text-align: right;
511 text-align: right;
498
512
499 // Account for citation
513 // Account for citation
500 footer,
514 footer,
501 small,
515 small,
502 .small {
516 .small {
503 &:before { content: ''; }
517 &:before { content: ''; }
504 &:after {
518 &:after {
505 content: '\00A0 \2014'; // nbsp, em dash
519 content: '\00A0 \2014'; // nbsp, em dash
506 }
520 }
507 }
521 }
508 }
522 }
509
523
510 // Addresses
524 // Addresses
511 address {
525 address {
512 margin-bottom: 2em;
526 margin-bottom: 2em;
513 font-style: normal;
527 font-style: normal;
514 line-height: 1.8em;
528 line-height: 1.8em;
515 }
529 }
516
530
517 .error-message {
531 .error-message {
518 display: block;
532 display: block;
519 margin: @padding/3 0;
533 margin: @padding/3 0;
520 color: @alert2;
534 color: @alert2;
521 }
535 }
522
536
523 .issue-tracker-link {
537 .issue-tracker-link {
524 color: @rcblue;
538 color: @rcblue;
525 }
539 }
526
540
527 .info_text{
541 .info_text{
528 font-size: @basefontsize;
542 font-size: @basefontsize;
529 color: @grey4;
543 color: @grey4;
530 font-family: @text-regular;
544 font-family: @text-regular;
531 }
545 }
532
546
533 .help-block-inline {
547 .help-block-inline {
534 margin: 0;
548 margin: 0;
535 }
549 }
536
550
537 // help block text
551 // help block text
538 .help-block {
552 .help-block {
539 display: block;
553 display: block;
540 margin: 0 0 @padding;
554 margin: 0 0 @padding;
541 color: @grey4;
555 color: @grey4;
542 font-family: @text-light;
556 font-family: @text-light;
543 &.pre-formatting {
557 &.pre-formatting {
544 white-space: pre-wrap;
558 white-space: pre-wrap;
545 }
559 }
546 }
560 }
547
561
548 .error-message {
562 .error-message {
549 display: block;
563 display: block;
550 margin: @padding/3 0;
564 margin: @padding/3 0;
551 color: @alert2;
565 color: @alert2;
552 }
566 }
@@ -1,150 +1,152 b''
1 // variables for use in all RhodeCode products
1 // variables for use in all RhodeCode products
2
2
3 // FONTS
3 // FONTS
4 //Primary Colors (brand)
4 //Primary Colors (brand)
5 @rcblue: #427cc9; //RhodeCode blue
5 @rcblue: #427cc9; //RhodeCode blue
6 @rcdarkblue: #305b91; //RhodeCode dark blue
6 @rcdarkblue: #305b91; //RhodeCode dark blue
7 @rclightblue: lighten(@rcblue, 30%);
7 @rclightblue: lighten(@rcblue, 30%);
8 @rchighlightblue: lighten(@rcblue, 35%);
8 @rchighlightblue: lighten(@rcblue, 35%);
9
9
10 // Secondary Colors (greyscale)
10 // Secondary Colors (greyscale)
11 @black: #000;
11 @black: #000;
12 @white: #fff;
12 @white: #fff;
13 @grey1: #2B2B2D; //midnight
13 @grey1: #2B2B2D; //midnight
14 @grey2: #5C5C5C; //charcoal
14 @grey2: #5C5C5C; //charcoal
15 @grey3: #7E7F7F; //tungsten
15 @grey3: #7E7F7F; //tungsten
16 @grey4: #949494; //light grey
16 @grey4: #949494; //light grey
17 @grey5: #dbd9da; //greyish
17 @grey5: #dbd9da; //greyish
18 @grey6: #eeeeee; //silver
18 @grey6: #eeeeee; //silver
19 @grey7: #F5F5F5; //light silver
19 @grey7: #F5F5F5; //light silver
20
20
21 // special for navigation
21 // special for navigation
22 @nav-grey: #CDCCCD;
22 @nav-grey: #CDCCCD;
23
23
24 @grey5-alpha: rgba(219, 217, 218, 0.3);
24 @grey5-alpha: rgba(219, 217, 218, 0.3);
25
25
26 // Tertiary Colors
26 // Tertiary Colors
27 @color1: #879938; //olive green
27 @color1: #879938; //olive green
28 @color2: #fcc93a; //bright yellow
28 @color2: #fcc93a; //bright yellow
29 @color3: #ff9e07; //orange-yellow
29 @color3: #ff9e07; //orange-yellow
30 @color4: #fc663a; //bright orange
30 @color4: #fc663a; //bright orange
31 @color5: #d63d44; //signal red
31 @color5: #d63d44; //signal red
32 @color6: #99287c; //violet
32 @color6: #99287c; //violet
33 @color7: #682668; //dark purple
33 @color7: #682668; //dark purple
34 @color8: #194f8e; //dark blue
34 @color8: #194f8e; //dark blue
35
35
36 // Alert Colors (bright)
36 // Alert Colors (bright)
37 @alert1: #0ac878; //bright green
37 @alert1: #0ac878; //bright green
38 @alert2: #e85e4d; //soft red
38 @alert2: #e85e4d; //soft red
39 @alert3: #ffc854; //corn yellow
39 @alert3: #ffc854; //corn yellow
40 @alert4: #84a5d2; //light blue
40 @alert4: #84a5d2; //light blue
41
41
42 // Alert Inner Colors
42 // Alert Inner Colors
43 @alert1-inner: #daf7eb; //bright green
43 @alert1-inner: #daf7eb; //bright green
44 @alert2-inner: #fbdfdb; //soft red
44 @alert2-inner: #fbdfdb; //soft red
45 @alert3-inner: #fff4dd; //corn yellow
45 @alert3-inner: #fff4dd; //corn yellow
46 @alert4-inner: #e6edf6; //light blue
46 @alert4-inner: #e6edf6; //light blue
47
47
48 // Highlight color for lines and colors
48 // Highlight color for lines and colors
49 @comment-highlight-color: #ffd887;
49 @comment-highlight-color: #ffd887;
50
50
51 // FONTS
51 // FONTS
52 @basefontsize: 13px;
52 @basefontsize: 13px;
53 @navigation-fontsize: 14px;
53 @navigation-fontsize: 14px;
54 @journal-fontsize: @basefontsize+7px;
54 @journal-fontsize: @basefontsize+7px;
55 @text-color: @grey2;
55 @text-color: @grey2;
56 @repo-title-fontsize: 18px;
56 @repo-title-fontsize: 18px;
57
57
58 @text-regular: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
58 @text-regular: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
59 @text-monospace: 'Menlo', 'Liberation Mono', 'Consolas', 'DejaVu Sans Mono', 'Ubuntu Mono', 'Courier New', 'andale mono', 'lucida console', monospace;
59 @text-monospace: 'Menlo', 'Liberation Mono', 'Consolas', 'DejaVu Sans Mono', 'Ubuntu Mono', 'Courier New', 'andale mono', 'lucida console', monospace;
60
60
61 @text-italic: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
61 @text-italic: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
62
62
63 @text-bold: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
63 @text-bold: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
64 @text-bold-weight: 600;
64 @text-bold-weight: 600;
65
65
66 @text-semibold: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
66 @text-semibold: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
67 @text-semibold-weight: 500;
67 @text-semibold-weight: 500;
68
68
69 @text-bold-italic: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
69 @text-bold-italic: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
70 @text-bold-italic-weight: 600;
70 @text-bold-italic-weight: 600;
71
71
72 @text-code: @text-monospace;
72 @text-code: @text-monospace;
73 @text-light: @text-regular;
73 @text-light: @text-regular;
74
74
75
75
76 // Used for .close buttons
76 // Used for .close buttons
77 @text-bootstrap: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
77 @text-bootstrap: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
78
78
79 @panel-title: @basefontsize;
79 @panel-title: @basefontsize;
80 @panel-footer: @basefontsize;
80 @panel-footer: @basefontsize;
81
81
82 // BORDERS
82 // BORDERS
83 @border-thickness: 1px;
83 @border-thickness: 1px;
84 @border-thickness-buttons: 1px;
84 @border-thickness-buttons: 1px;
85 @border-thickness-tags: 1px;
85 @border-thickness-tags: 1px;
86 @border-radius: 2px;
86 @border-radius: 2px;
87 @border-default-color: @grey5;
87 @border-default-color: @grey5;
88 @border-highlight-color: @grey4;
88 @border-highlight-color: @grey4;
89
89
90 // SPACING
90 // SPACING
91 @contentpadding: 15px; //padding on left and right of pages
91 @contentpadding: 15px; //padding on left and right of pages
92 @pagepadding: 40px; //padding on top and bottom of pages
92 @pagepadding: 40px; //padding on top and bottom of pages
93 @menupadding: 12px; //padding for sidebar and content
93 @menupadding: 12px; //padding for sidebar and content
94 @sidebarpadding: 15px; //spacing between sections
94 @sidebarpadding: 15px; //spacing between sections
95 @space: 40px; //spacing between sections
95 @space: 40px; //spacing between sections
96 @padding: 15px; //padding inside modules
96 @padding: 15px; //padding inside modules
97 @textmargin: 20px; //spacing below headers
97 @textmargin: 20px; //spacing below headers
98 @header-padding: 20px;
98 @header-padding: 20px;
99 @panel-padding: @padding;
99 @panel-padding: @padding;
100 @gravatar-size: 16px; // height/width of gravatar w/o border
100 @gravatar-size: 16px; // height/width of gravatar w/o border
101
101
102 // ADMIN
102 // ADMIN
103 @form-max-width: 750px;
103 @form-max-width: 750px;
104
104
105 // FORMS (new)
105 // FORMS (new)
106 @border-thickness-inputs: 1px;
106 @border-thickness-inputs: 1px;
107 @input-padding: @button-padding; //needs to match button padding
107 @input-padding: @button-padding; //needs to match button padding
108 // TODO: johbo: Needed for working computation of paddings around labels etc.
108 // TODO: johbo: Needed for working computation of paddings around labels etc.
109 // Expected to be replaced once we are done with the form refactoring.
109 // Expected to be replaced once we are done with the form refactoring.
110 @input-padding-px: 12px;
110 @input-padding-px: 12px;
111 @legend-width: 220px;
111 @legend-width: 220px;
112 @form-vertical-margin: 20px;
112 @form-vertical-margin: 20px;
113 @form-check-width: 20px;
113 @form-check-width: 20px;
114 @form-radio-width: 10px;
114 @form-radio-width: 10px;
115 @form-textcolor: @grey3;
115 @form-textcolor: @grey3;
116
116
117 // FORMS
117 // FORMS
118 @label-width: 220px;
118 @label-width: 220px;
119 //TODO: lisa: Eventually we don't need both of these; remove
119 //TODO: lisa: Eventually we don't need both of these; remove
120 // label-width when legend-width is no longer used
120 // label-width when legend-width is no longer used
121
121
122 @input-border-thickness: @border-thickness;
122 @input-border-thickness: @border-thickness;
123 @medium-inline-input-width: 115px;
123 @medium-inline-input-width: 115px;
124 @input-description-minwidth: 300px;
124 @input-description-minwidth: 300px;
125 @label2-width: 200px;
125 @label2-width: 200px;
126 @checkboxes-width: 420px;
126 @checkboxes-width: 420px;
127 @label-summary-minwidth: 80px;
127 @label-summary-minwidth: 80px;
128 @search-form-width: 400px;
128 @search-form-width: 400px;
129 @fields-input-m: 400px;
129 @fields-input-m: 400px;
130 @fields-input-l: 720px;
130 @fields-input-l: 720px;
131
131
132 // BUTTONS
132 // BUTTONS
133 @button-padding: .9em;
133 @button-padding: .7em;
134 @button-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.15);
135
134
136
135 // DEFAULT WIDTHS
137 // DEFAULT WIDTHS
136 @wrapper-maxwidth: 1600px;
138 @wrapper-maxwidth: 1600px;
137 @sidebar-width: 145px;
139 @sidebar-width: 145px;
138 @sidebar-all-width: @sidebar-width + 2 * @sidebarpadding;
140 @sidebar-all-width: @sidebar-width + 2 * @sidebarpadding;
139 @sidebar-small-width: 100px;
141 @sidebar-small-width: 100px;
140 @sidebar-small-all-width: @sidebar-small-width + 2 * @sidebarpadding;
142 @sidebar-small-all-width: @sidebar-small-width + 2 * @sidebarpadding;
141 @texteditor-width: 660px;
143 @texteditor-width: 660px;
142 @maincontent-maxwidth: 940px;
144 @maincontent-maxwidth: 940px;
143 @pullrequest-width: 1025px;
145 @pullrequest-width: 1025px;
144 @summary-menu-stats-width: 200px;
146 @summary-menu-stats-width: 200px;
145
147
146 // SCREEN WIDTHS
148 // SCREEN WIDTHS
147 @screen-sm-min: 320px;
149 @screen-sm-min: 320px;
148
150
149 // For Bootstrap
151 // For Bootstrap
150 @panel-border-radius: @border-radius;
152 @panel-border-radius: @border-radius;
@@ -1,48 +1,44 b''
1 ## -*- coding: utf-8 -*-
1 ## -*- coding: utf-8 -*-
2 <%inherit file="/base/base.mako"/>
2 <%inherit file="/base/base.mako"/>
3
3
4 <%def name="title()">
4 <%def name="title()">
5 ${_('%s repository group settings') % c.repo_group.name}
5 ${_('%s repository group settings') % c.repo_group.name}
6 %if c.rhodecode_name:
6 %if c.rhodecode_name:
7 &middot; ${h.branding(c.rhodecode_name)}
7 &middot; ${h.branding(c.rhodecode_name)}
8 %endif
8 %endif
9 </%def>
9 </%def>
10
10
11 <%def name="menu_bar_nav()">
11 <%def name="menu_bar_nav()">
12 ${self.menu_items(active='admin')}
12 ${self.menu_items(active='admin')}
13 </%def>
13 </%def>
14
14
15 <%def name="menu_bar_subnav()">
15 <%def name="menu_bar_subnav()">
16 ${self.repo_group_menu(active='settings')}
16 ${self.repo_group_menu(active='settings')}
17 </%def>
17 </%def>
18
18
19 <%def name="main_content()">
19 <%def name="main_content()">
20 <%include file="/admin/repo_groups/repo_group_edit_${c.active}.mako"/>
20 <%include file="/admin/repo_groups/repo_group_edit_${c.active}.mako"/>
21 </%def>
21 </%def>
22
22
23 <%def name="main()">
23 <%def name="main()">
24
24
25 <div class="box">
25 <div class="box">
26 <div class="title">
27 ${self.repo_group_page_title(c.repo_group)}
28 </div>
29
30 <div class="sidebar-col-wrapper">
26 <div class="sidebar-col-wrapper">
31 ##main
27 ##main
32 <div class="sidebar">
28 <div class="sidebar">
33 <ul class="nav nav-pills nav-stacked">
29 <ul class="nav nav-pills nav-stacked">
34 <li class="${'active' if c.active=='settings' else ''}"><a href="${h.route_path('edit_repo_group', repo_group_name=c.repo_group.group_name)}">${_('Settings')}</a></li>
30 <li class="${'active' if c.active=='settings' else ''}"><a href="${h.route_path('edit_repo_group', repo_group_name=c.repo_group.group_name)}">${_('Settings')}</a></li>
35 <li class="${'active' if c.active=='permissions' else ''}"><a href="${h.route_path('edit_repo_group_perms', repo_group_name=c.repo_group.group_name)}">${_('Permissions')}</a></li>
31 <li class="${'active' if c.active=='permissions' else ''}"><a href="${h.route_path('edit_repo_group_perms', repo_group_name=c.repo_group.group_name)}">${_('Permissions')}</a></li>
36 <li class="${'active' if c.active=='advanced' else ''}"><a href="${h.route_path('edit_repo_group_advanced', repo_group_name=c.repo_group.group_name)}">${_('Advanced')}</a></li>
32 <li class="${'active' if c.active=='advanced' else ''}"><a href="${h.route_path('edit_repo_group_advanced', repo_group_name=c.repo_group.group_name)}">${_('Advanced')}</a></li>
37 <li class="${'active' if c.active=='integrations' else ''}"><a href="${h.route_path('repo_group_integrations_home', repo_group_name=c.repo_group.group_name)}">${_('Integrations')}</a></li>
33 <li class="${'active' if c.active=='integrations' else ''}"><a href="${h.route_path('repo_group_integrations_home', repo_group_name=c.repo_group.group_name)}">${_('Integrations')}</a></li>
38 </ul>
34 </ul>
39 </div>
35 </div>
40
36
41 <div class="main-content-full-width">
37 <div class="main-content-full-width">
42 ${self.main_content()}
38 ${self.main_content()}
43 </div>
39 </div>
44
40
45 </div>
41 </div>
46 </div>
42 </div>
47
43
48 </%def>
44 </%def>
@@ -1,923 +1,933 b''
1 ## -*- coding: utf-8 -*-
1 ## -*- coding: utf-8 -*-
2 <%inherit file="root.mako"/>
2 <%inherit file="root.mako"/>
3
3
4 <%include file="/ejs_templates/templates.html"/>
4 <%include file="/ejs_templates/templates.html"/>
5
5
6 <div class="outerwrapper">
6 <div class="outerwrapper">
7 <!-- HEADER -->
7 <!-- HEADER -->
8 <div class="header">
8 <div class="header">
9 <div id="header-inner" class="wrapper">
9 <div id="header-inner" class="wrapper">
10 <div id="logo">
10 <div id="logo">
11 <div class="logo-wrapper">
11 <div class="logo-wrapper">
12 <a href="${h.route_path('home')}"><img src="${h.asset('images/rhodecode-logo-white-60x60.png')}" alt="RhodeCode"/></a>
12 <a href="${h.route_path('home')}"><img src="${h.asset('images/rhodecode-logo-white-60x60.png')}" alt="RhodeCode"/></a>
13 </div>
13 </div>
14 % if c.rhodecode_name:
14 % if c.rhodecode_name:
15 <div class="branding">
15 <div class="branding">
16 <a href="${h.route_path('home')}">${h.branding(c.rhodecode_name)}</a>
16 <a href="${h.route_path('home')}">${h.branding(c.rhodecode_name)}</a>
17 </div>
17 </div>
18 % endif
18 % endif
19 </div>
19 </div>
20 <!-- MENU BAR NAV -->
20 <!-- MENU BAR NAV -->
21 ${self.menu_bar_nav()}
21 ${self.menu_bar_nav()}
22 <!-- END MENU BAR NAV -->
22 <!-- END MENU BAR NAV -->
23 </div>
23 </div>
24 </div>
24 </div>
25 ${self.menu_bar_subnav()}
25 ${self.menu_bar_subnav()}
26 <!-- END HEADER -->
26 <!-- END HEADER -->
27
27
28 <!-- CONTENT -->
28 <!-- CONTENT -->
29 <div id="content" class="wrapper">
29 <div id="content" class="wrapper">
30
30
31 <rhodecode-toast id="notifications"></rhodecode-toast>
31 <rhodecode-toast id="notifications"></rhodecode-toast>
32
32
33 <div class="main">
33 <div class="main">
34 ${next.main()}
34 ${next.main()}
35 </div>
35 </div>
36 </div>
36 </div>
37 <!-- END CONTENT -->
37 <!-- END CONTENT -->
38
38
39 </div>
39 </div>
40 <!-- FOOTER -->
40 <!-- FOOTER -->
41 <div id="footer">
41 <div id="footer">
42 <div id="footer-inner" class="title wrapper">
42 <div id="footer-inner" class="title wrapper">
43 <div>
43 <div>
44 <p class="footer-link-right">
44 <p class="footer-link-right">
45 % if c.visual.show_version:
45 % if c.visual.show_version:
46 RhodeCode Enterprise ${c.rhodecode_version} ${c.rhodecode_edition}
46 RhodeCode Enterprise ${c.rhodecode_version} ${c.rhodecode_edition}
47 % endif
47 % endif
48 &copy; 2010-${h.datetime.today().year}, <a href="${h.route_url('rhodecode_official')}" target="_blank">RhodeCode GmbH</a>. All rights reserved.
48 &copy; 2010-${h.datetime.today().year}, <a href="${h.route_url('rhodecode_official')}" target="_blank">RhodeCode GmbH</a>. All rights reserved.
49 % if c.visual.rhodecode_support_url:
49 % if c.visual.rhodecode_support_url:
50 <a href="${c.visual.rhodecode_support_url}" target="_blank">${_('Support')}</a>
50 <a href="${c.visual.rhodecode_support_url}" target="_blank">${_('Support')}</a>
51 % endif
51 % endif
52 </p>
52 </p>
53 <% sid = 'block' if request.GET.get('showrcid') else 'none' %>
53 <% sid = 'block' if request.GET.get('showrcid') else 'none' %>
54 <p class="server-instance" style="display:${sid}">
54 <p class="server-instance" style="display:${sid}">
55 ## display hidden instance ID if specially defined
55 ## display hidden instance ID if specially defined
56 % if c.rhodecode_instanceid:
56 % if c.rhodecode_instanceid:
57 ${_('RhodeCode instance id: {}').format(c.rhodecode_instanceid)}
57 ${_('RhodeCode instance id: {}').format(c.rhodecode_instanceid)}
58 % endif
58 % endif
59 </p>
59 </p>
60 </div>
60 </div>
61 </div>
61 </div>
62 </div>
62 </div>
63
63
64 <!-- END FOOTER -->
64 <!-- END FOOTER -->
65
65
66 ### MAKO DEFS ###
66 ### MAKO DEFS ###
67
67
68 <%def name="menu_bar_subnav()">
68 <%def name="menu_bar_subnav()">
69 </%def>
69 </%def>
70
70
71 <%def name="breadcrumbs(class_='breadcrumbs')">
71 <%def name="breadcrumbs(class_='breadcrumbs')">
72 <div class="${class_}">
72 <div class="${class_}">
73 ${self.breadcrumbs_links()}
73 ${self.breadcrumbs_links()}
74 </div>
74 </div>
75 </%def>
75 </%def>
76
76
77 <%def name="admin_menu(active=None)">
77 <%def name="admin_menu(active=None)">
78 <div id="context-bar">
78 <div id="context-bar">
79 <div class="wrapper">
79 <div class="wrapper">
80 <div class="title">
81 <div class="title-content">
82 <div class="title-main">
83 Admin Panel
84 </div>
85 </div>
86 </div>
87
80 <ul id="context-pages" class="navigation horizontal-list">
88 <ul id="context-pages" class="navigation horizontal-list">
81 <%
89 <%
82 repositories=c.rhodecode_user.repositories_admin
90 repositories=c.rhodecode_user.repositories_admin
83 repository_groups=c.rhodecode_user.repository_groups_admin
91 repository_groups=c.rhodecode_user.repository_groups_admin
84 user_groups=c.rhodecode_user.user_groups_admin or h.HasPermissionAny('hg.usergroup.create.true')()
92 user_groups=c.rhodecode_user.user_groups_admin or h.HasPermissionAny('hg.usergroup.create.true')()
85 def is_active(selected):
93 def is_active(selected):
86 if selected == active:
94 if selected == active:
87 return "active"
95 return "active"
88 %>
96 %>
89 ## super admin case
97 ## super admin case
90 % if c.rhodecode_user.is_admin:
98 % if c.rhodecode_user.is_admin:
91 <li class="${is_active('audit_logs')}"><a href="${h.route_path('admin_audit_logs')}">${_('Admin audit logs')}</a></li>
99 <li class="${is_active('audit_logs')}"><a href="${h.route_path('admin_audit_logs')}">${_('Admin audit logs')}</a></li>
92 <li class="${is_active('repositories')}"><a href="${h.route_path('repos')}">${_('Repositories')}</a></li>
100 <li class="${is_active('repositories')}"><a href="${h.route_path('repos')}">${_('Repositories')}</a></li>
93 <li class="${is_active('repository_groups')}"><a href="${h.route_path('repo_groups')}">${_('Repository groups')}</a></li>
101 <li class="${is_active('repository_groups')}"><a href="${h.route_path('repo_groups')}">${_('Repository groups')}</a></li>
94 <li class="${is_active('users')}"><a href="${h.route_path('users')}">${_('Users')}</a></li>
102 <li class="${is_active('users')}"><a href="${h.route_path('users')}">${_('Users')}</a></li>
95 <li class="${is_active('user_groups')}"><a href="${h.route_path('user_groups')}">${_('User groups')}</a></li>
103 <li class="${is_active('user_groups')}"><a href="${h.route_path('user_groups')}">${_('User groups')}</a></li>
96 <li class="${is_active('permissions')}"><a href="${h.route_path('admin_permissions_application')}">${_('Permissions')}</a></li>
104 <li class="${is_active('permissions')}"><a href="${h.route_path('admin_permissions_application')}">${_('Permissions')}</a></li>
97 <li class="${is_active('authentication')}"><a href="${h.route_path('auth_home', traverse='')}">${_('Authentication')}</a></li>
105 <li class="${is_active('authentication')}"><a href="${h.route_path('auth_home', traverse='')}">${_('Authentication')}</a></li>
98 <li class="${is_active('integrations')}"><a href="${h.route_path('global_integrations_home')}">${_('Integrations')}</a></li>
106 <li class="${is_active('integrations')}"><a href="${h.route_path('global_integrations_home')}">${_('Integrations')}</a></li>
99 <li class="${is_active('defaults')}"><a href="${h.route_path('admin_defaults_repositories')}">${_('Defaults')}</a></li>
107 <li class="${is_active('defaults')}"><a href="${h.route_path('admin_defaults_repositories')}">${_('Defaults')}</a></li>
100 <li class="${is_active('settings')}"><a href="${h.route_path('admin_settings')}">${_('Settings')}</a></li>
108 <li class="${is_active('settings')}"><a href="${h.route_path('admin_settings')}">${_('Settings')}</a></li>
101
109
102 ## delegated admin
110 ## delegated admin
103 % elif repositories or repository_groups or user_groups:
111 % elif repositories or repository_groups or user_groups:
104
112
105 %if repositories:
113 %if repositories:
106 <li class="${is_active('repositories')} local-admin-repos"><a href="${h.route_path('repos')}">${_('Repositories')}</a></li>
114 <li class="${is_active('repositories')} local-admin-repos"><a href="${h.route_path('repos')}">${_('Repositories')}</a></li>
107 %endif
115 %endif
108 %if repository_groups:
116 %if repository_groups:
109 <li class="${is_active('repository_groups')} local-admin-repo-groups"><a href="${h.route_path('repo_groups')}">${_('Repository groups')}</a></li>
117 <li class="${is_active('repository_groups')} local-admin-repo-groups"><a href="${h.route_path('repo_groups')}">${_('Repository groups')}</a></li>
110 %endif
118 %endif
111 %if user_groups:
119 %if user_groups:
112 <li class="${is_active('user_groups')} local-admin-user-groups"><a href="${h.route_path('user_groups')}">${_('User groups')}</a></li>
120 <li class="${is_active('user_groups')} local-admin-user-groups"><a href="${h.route_path('user_groups')}">${_('User groups')}</a></li>
113 %endif
121 %endif
114 % endif
122 % endif
115 </ul>
123 </ul>
116 </div>
124 </div>
117 <div class="clear"></div>
125 <div class="clear"></div>
118 </div>
126 </div>
119 </%def>
127 </%def>
120
128
121
122 <%def name="dt_info_panel(elements)">
129 <%def name="dt_info_panel(elements)">
123 <dl class="dl-horizontal">
130 <dl class="dl-horizontal">
124 %for dt, dd, title, show_items in elements:
131 %for dt, dd, title, show_items in elements:
125 <dt>${dt}:</dt>
132 <dt>${dt}:</dt>
126 <dd title="${h.tooltip(title)}">
133 <dd title="${h.tooltip(title)}">
127 %if callable(dd):
134 %if callable(dd):
128 ## allow lazy evaluation of elements
135 ## allow lazy evaluation of elements
129 ${dd()}
136 ${dd()}
130 %else:
137 %else:
131 ${dd}
138 ${dd}
132 %endif
139 %endif
133 %if show_items:
140 %if show_items:
134 <span class="btn-collapse" data-toggle="item-${h.md5_safe(dt)[:6]}-details">${_('Show More')} </span>
141 <span class="btn-collapse" data-toggle="item-${h.md5_safe(dt)[:6]}-details">${_('Show More')} </span>
135 %endif
142 %endif
136 </dd>
143 </dd>
137
144
138 %if show_items:
145 %if show_items:
139 <div class="collapsable-content" data-toggle="item-${h.md5_safe(dt)[:6]}-details" style="display: none">
146 <div class="collapsable-content" data-toggle="item-${h.md5_safe(dt)[:6]}-details" style="display: none">
140 %for item in show_items:
147 %for item in show_items:
141 <dt></dt>
148 <dt></dt>
142 <dd>${item}</dd>
149 <dd>${item}</dd>
143 %endfor
150 %endfor
144 </div>
151 </div>
145 %endif
152 %endif
146
153
147 %endfor
154 %endfor
148 </dl>
155 </dl>
149 </%def>
156 </%def>
150
157
151
152 <%def name="gravatar(email, size=16)">
158 <%def name="gravatar(email, size=16)">
153 <%
159 <%
154 if (size > 16):
160 if (size > 16):
155 gravatar_class = 'gravatar gravatar-large'
161 gravatar_class = 'gravatar gravatar-large'
156 else:
162 else:
157 gravatar_class = 'gravatar'
163 gravatar_class = 'gravatar'
158 %>
164 %>
159 <%doc>
165 <%doc>
160 TODO: johbo: For now we serve double size images to make it smooth
166 TODO: johbo: For now we serve double size images to make it smooth
161 for retina. This is how it worked until now. Should be replaced
167 for retina. This is how it worked until now. Should be replaced
162 with a better solution at some point.
168 with a better solution at some point.
163 </%doc>
169 </%doc>
164 <img class="${gravatar_class}" src="${h.gravatar_url(email, size * 2)}" height="${size}" width="${size}">
170 <img class="${gravatar_class}" src="${h.gravatar_url(email, size * 2)}" height="${size}" width="${size}">
165 </%def>
171 </%def>
166
172
167
173
168 <%def name="gravatar_with_user(contact, size=16, show_disabled=False)">
174 <%def name="gravatar_with_user(contact, size=16, show_disabled=False)">
169 <% email = h.email_or_none(contact) %>
175 <% email = h.email_or_none(contact) %>
170 <div class="rc-user tooltip" title="${h.tooltip(h.author_string(email))}">
176 <div class="rc-user tooltip" title="${h.tooltip(h.author_string(email))}">
171 ${self.gravatar(email, size)}
177 ${self.gravatar(email, size)}
172 <span class="${'user user-disabled' if show_disabled else 'user'}"> ${h.link_to_user(contact)}</span>
178 <span class="${'user user-disabled' if show_disabled else 'user'}"> ${h.link_to_user(contact)}</span>
173 </div>
179 </div>
174 </%def>
180 </%def>
175
181
176
182
177 <%def name="repo_page_title(repo_instance)">
183 <%def name="repo_page_title(repo_instance)">
178 <div class="title-content">
184 <div class="title-content">
179 <div class="title-main">
185 <div class="title-main">
180 ## SVN/HG/GIT icons
186 ## SVN/HG/GIT icons
181 %if h.is_hg(repo_instance):
187 %if h.is_hg(repo_instance):
182 <i class="icon-hg"></i>
188 <i class="icon-hg"></i>
183 %endif
189 %endif
184 %if h.is_git(repo_instance):
190 %if h.is_git(repo_instance):
185 <i class="icon-git"></i>
191 <i class="icon-git"></i>
186 %endif
192 %endif
187 %if h.is_svn(repo_instance):
193 %if h.is_svn(repo_instance):
188 <i class="icon-svn"></i>
194 <i class="icon-svn"></i>
189 %endif
195 %endif
190
196
191 ## public/private
197 ## public/private
192 %if repo_instance.private:
198 %if repo_instance.private:
193 <i class="icon-repo-private"></i>
199 <i class="icon-repo-private"></i>
194 %else:
200 %else:
195 <i class="icon-repo-public"></i>
201 <i class="icon-repo-public"></i>
196 %endif
202 %endif
197
203
198 ## repo name with group name
204 ## repo name with group name
199 ${h.breadcrumb_repo_link(repo_instance)}
205 ${h.breadcrumb_repo_link(repo_instance)}
200
206
201 </div>
207 </div>
202
208
203 ## FORKED
209 ## FORKED
204 %if repo_instance.fork:
210 %if repo_instance.fork:
205 <p>
211 <p class="discreet">
206 <i class="icon-code-fork"></i> ${_('Fork of')}
212 <i class="icon-code-fork"></i> ${_('Fork of')}
207 ${h.link_to_if(c.has_origin_repo_read_perm,repo_instance.fork.repo_name, h.route_path('repo_summary', repo_name=repo_instance.fork.repo_name))}
213 ${h.link_to_if(c.has_origin_repo_read_perm,repo_instance.fork.repo_name, h.route_path('repo_summary', repo_name=repo_instance.fork.repo_name))}
208 </p>
214 </p>
209 %endif
215 %endif
210
216
211 ## IMPORTED FROM REMOTE
217 ## IMPORTED FROM REMOTE
212 %if repo_instance.clone_uri:
218 %if repo_instance.clone_uri:
213 <p>
219 <p class="discreet">
214 <i class="icon-code-fork"></i> ${_('Clone from')}
220 <i class="icon-code-fork"></i> ${_('Clone from')}
215 <a href="${h.safe_str(h.hide_credentials(repo_instance.clone_uri))}">${h.hide_credentials(repo_instance.clone_uri)}</a>
221 <a href="${h.safe_str(h.hide_credentials(repo_instance.clone_uri))}">${h.hide_credentials(repo_instance.clone_uri)}</a>
216 </p>
222 </p>
217 %endif
223 %endif
218
224
219 ## LOCKING STATUS
225 ## LOCKING STATUS
220 %if repo_instance.locked[0]:
226 %if repo_instance.locked[0]:
221 <p class="locking_locked">
227 <p class="locking_locked discreet">
222 <i class="icon-repo-lock"></i>
228 <i class="icon-repo-lock"></i>
223 ${_('Repository locked by %(user)s') % {'user': h.person_by_id(repo_instance.locked[0])}}
229 ${_('Repository locked by %(user)s') % {'user': h.person_by_id(repo_instance.locked[0])}}
224 </p>
230 </p>
225 %elif repo_instance.enable_locking:
231 %elif repo_instance.enable_locking:
226 <p class="locking_unlocked">
232 <p class="locking_unlocked discreet">
227 <i class="icon-repo-unlock"></i>
233 <i class="icon-repo-unlock"></i>
228 ${_('Repository not locked. Pull repository to lock it.')}
234 ${_('Repository not locked. Pull repository to lock it.')}
229 </p>
235 </p>
230 %endif
236 %endif
231
237
232 </div>
238 </div>
233 </%def>
239 </%def>
234
240
235 <%def name="repo_menu(active=None)">
241 <%def name="repo_menu(active=None)">
236 <%
242 <%
237 def is_active(selected):
243 def is_active(selected):
238 if selected == active:
244 if selected == active:
239 return "active"
245 return "active"
240 %>
246 %>
241
247
242 <!--- REPO CONTEXT BAR -->
248 <!--- REPO CONTEXT BAR -->
243 <div id="context-bar">
249 <div id="context-bar">
244 <div class="wrapper">
250 <div class="wrapper">
245
251
246 <div class="title">
252 <div class="title">
247 ${self.repo_page_title(c.rhodecode_db_repo)}
253 ${self.repo_page_title(c.rhodecode_db_repo)}
248 </div>
254 </div>
249
255
250 <ul id="context-pages" class="navigation horizontal-list">
256 <ul id="context-pages" class="navigation horizontal-list">
251 <li class="${is_active('summary')}"><a class="menulink" href="${h.route_path('repo_summary', repo_name=c.repo_name)}"><div class="menulabel">${_('Summary')}</div></a></li>
257 <li class="${is_active('summary')}"><a class="menulink" href="${h.route_path('repo_summary', repo_name=c.repo_name)}"><div class="menulabel">${_('Summary')}</div></a></li>
252 <li class="${is_active('changelog')}"><a class="menulink" href="${h.route_path('repo_changelog', repo_name=c.repo_name)}"><div class="menulabel">${_('Changelog')}</div></a></li>
258 <li class="${is_active('changelog')}"><a class="menulink" href="${h.route_path('repo_changelog', repo_name=c.repo_name)}"><div class="menulabel">${_('Changelog')}</div></a></li>
253 <li class="${is_active('files')}"><a class="menulink" href="${h.route_path('repo_files', repo_name=c.repo_name, commit_id=c.rhodecode_db_repo.landing_rev[1], f_path='')}"><div class="menulabel">${_('Files')}</div></a></li>
259 <li class="${is_active('files')}"><a class="menulink" href="${h.route_path('repo_files', repo_name=c.repo_name, commit_id=c.rhodecode_db_repo.landing_rev[1], f_path='')}"><div class="menulabel">${_('Files')}</div></a></li>
254 <li class="${is_active('compare')}"><a class="menulink" href="${h.route_path('repo_compare_select',repo_name=c.repo_name)}"><div class="menulabel">${_('Compare')}</div></a></li>
260 <li class="${is_active('compare')}"><a class="menulink" href="${h.route_path('repo_compare_select',repo_name=c.repo_name)}"><div class="menulabel">${_('Compare')}</div></a></li>
255
261
256 ## TODO: anderson: ideally it would have a function on the scm_instance "enable_pullrequest() and enable_fork()"
262 ## TODO: anderson: ideally it would have a function on the scm_instance "enable_pullrequest() and enable_fork()"
257 %if c.rhodecode_db_repo.repo_type in ['git','hg']:
263 %if c.rhodecode_db_repo.repo_type in ['git','hg']:
258 <li class="${is_active('showpullrequest')}">
264 <li class="${is_active('showpullrequest')}">
259 <a class="menulink" href="${h.route_path('pullrequest_show_all', repo_name=c.repo_name)}" title="${h.tooltip(_('Show Pull Requests for %s') % c.repo_name)}">
265 <a class="menulink" href="${h.route_path('pullrequest_show_all', repo_name=c.repo_name)}" title="${h.tooltip(_('Show Pull Requests for %s') % c.repo_name)}">
260 <div class="menulabel">
266 <div class="menulabel">
261 %if c.repository_pull_requests == 1:
267 %if c.repository_pull_requests == 1:
262 ${c.repository_pull_requests} ${_('Pull Request')}
268 ${c.repository_pull_requests} ${_('Pull Request')}
263 %else:
269 %else:
264 ${c.repository_pull_requests} ${_('Pull Requests')}
270 ${c.repository_pull_requests} ${_('Pull Requests')}
265 %endif
271 %endif
266 </div>
272 </div>
267 </a>
273 </a>
268 </li>
274 </li>
269 %endif
275 %endif
270
276
271 %if h.HasRepoPermissionAll('repository.admin')(c.repo_name):
277 %if h.HasRepoPermissionAll('repository.admin')(c.repo_name):
272 <li class="${is_active('settings')}"><a class="menulink" href="${h.route_path('edit_repo',repo_name=c.repo_name)}"><div class="menulabel">${_('Repository Settings')}</div></a></li>
278 <li class="${is_active('settings')}"><a class="menulink" href="${h.route_path('edit_repo',repo_name=c.repo_name)}"><div class="menulabel">${_('Repository Settings')}</div></a></li>
273 %endif
279 %endif
274
280
275 <li class="${is_active('options')}">
281 <li class="${is_active('options')}">
276 <a class="menulink dropdown">
282 <a class="menulink dropdown">
277 <div class="menulabel">${_('Options')} <div class="show_more"></div></div>
283 <div class="menulabel">${_('Options')} <div class="show_more"></div></div>
278 </a>
284 </a>
279 <ul class="submenu">
285 <ul class="submenu">
280
286
281 %if c.rhodecode_db_repo.fork:
287 %if c.rhodecode_db_repo.fork:
282 <li>
288 <li>
283 <a title="${h.tooltip(_('Compare fork with %s' % c.rhodecode_db_repo.fork.repo_name))}"
289 <a title="${h.tooltip(_('Compare fork with %s' % c.rhodecode_db_repo.fork.repo_name))}"
284 href="${h.route_path('repo_compare',
290 href="${h.route_path('repo_compare',
285 repo_name=c.rhodecode_db_repo.fork.repo_name,
291 repo_name=c.rhodecode_db_repo.fork.repo_name,
286 source_ref_type=c.rhodecode_db_repo.landing_rev[0],
292 source_ref_type=c.rhodecode_db_repo.landing_rev[0],
287 source_ref=c.rhodecode_db_repo.landing_rev[1],
293 source_ref=c.rhodecode_db_repo.landing_rev[1],
288 target_repo=c.repo_name,target_ref_type='branch' if request.GET.get('branch') else c.rhodecode_db_repo.landing_rev[0],
294 target_repo=c.repo_name,target_ref_type='branch' if request.GET.get('branch') else c.rhodecode_db_repo.landing_rev[0],
289 target_ref=request.GET.get('branch') or c.rhodecode_db_repo.landing_rev[1],
295 target_ref=request.GET.get('branch') or c.rhodecode_db_repo.landing_rev[1],
290 _query=dict(merge=1))}"
296 _query=dict(merge=1))}"
291 >
297 >
292 ${_('Compare fork')}
298 ${_('Compare fork')}
293 </a>
299 </a>
294 </li>
300 </li>
295 %endif
301 %endif
296
302
297 %if h.HasRepoPermissionAny('repository.write','repository.admin')(c.repo_name) and c.rhodecode_db_repo.enable_locking:
303 %if h.HasRepoPermissionAny('repository.write','repository.admin')(c.repo_name) and c.rhodecode_db_repo.enable_locking:
298 %if c.rhodecode_db_repo.locked[0]:
304 %if c.rhodecode_db_repo.locked[0]:
299 <li><a class="locking_del" href="${h.route_path('repo_edit_toggle_locking',repo_name=c.repo_name)}">${_('Unlock')}</a></li>
305 <li><a class="locking_del" href="${h.route_path('repo_edit_toggle_locking',repo_name=c.repo_name)}">${_('Unlock')}</a></li>
300 %else:
306 %else:
301 <li><a class="locking_add" href="${h.route_path('repo_edit_toggle_locking',repo_name=c.repo_name)}">${_('Lock')}</a></li>
307 <li><a class="locking_add" href="${h.route_path('repo_edit_toggle_locking',repo_name=c.repo_name)}">${_('Lock')}</a></li>
302 %endif
308 %endif
303 %endif
309 %endif
304 %if c.rhodecode_user.username != h.DEFAULT_USER:
310 %if c.rhodecode_user.username != h.DEFAULT_USER:
305 %if c.rhodecode_db_repo.repo_type in ['git','hg']:
311 %if c.rhodecode_db_repo.repo_type in ['git','hg']:
306 <li><a href="${h.route_path('repo_fork_new',repo_name=c.repo_name)}">${_('Fork')}</a></li>
312 <li><a href="${h.route_path('repo_fork_new',repo_name=c.repo_name)}">${_('Fork')}</a></li>
307 <li><a href="${h.route_path('pullrequest_new',repo_name=c.repo_name)}">${_('Create Pull Request')}</a></li>
313 <li><a href="${h.route_path('pullrequest_new',repo_name=c.repo_name)}">${_('Create Pull Request')}</a></li>
308 %endif
314 %endif
309 %endif
315 %endif
310 </ul>
316 </ul>
311 </li>
317 </li>
312 </ul>
318 </ul>
313 </div>
319 </div>
314 <div class="clear"></div>
320 <div class="clear"></div>
315 </div>
321 </div>
316 % if c.rhodecode_db_repo.archived:
322 % if c.rhodecode_db_repo.archived:
317 <div class="alert alert-warning text-center">
323 <div class="alert alert-warning text-center">
318 <strong>${_('This repository has been archived. It is now read-only.')}</strong>
324 <strong>${_('This repository has been archived. It is now read-only.')}</strong>
319 </div>
325 </div>
320 % endif
326 % endif
321 <!--- REPO END CONTEXT BAR -->
327 <!--- REPO END CONTEXT BAR -->
322
328
323 </%def>
329 </%def>
324
330
325 <%def name="repo_group_page_title(repo_group_instance)">
331 <%def name="repo_group_page_title(repo_group_instance)">
326 <div class="title-content">
332 <div class="title-content">
327 <div class="title-main">
333 <div class="title-main">
328 ## Repository Group icon
334 ## Repository Group icon
329 <i class="icon-folder-close"></i>
335 <i class="icon-folder-close"></i>
330
336
331 ## repo name with group name
337 ## repo name with group name
332 ${h.breadcrumb_repo_group_link(repo_group_instance)}
338 ${h.breadcrumb_repo_group_link(repo_group_instance)}
333 </div>
339 </div>
334
340
335 <%namespace name="dt" file="/data_table/_dt_elements.mako"/>
341 <%namespace name="dt" file="/data_table/_dt_elements.mako"/>
336 <div class="repo-group-desc">
342 <div class="repo-group-desc">
337 ${dt.repo_group_desc(repo_group_instance.description_safe, repo_group_instance.personal, c.visual.stylify_metatags)}
343 ${dt.repo_group_desc(repo_group_instance.description_safe, repo_group_instance.personal, c.visual.stylify_metatags)}
338 </div>
344 </div>
339
345
340 </div>
346 </div>
341 </%def>
347 </%def>
342
348
343 <%def name="repo_group_menu(active=None)">
349 <%def name="repo_group_menu(active=None)">
344 <%
350 <%
345 def is_active(selected):
351 def is_active(selected):
346 if selected == active:
352 if selected == active:
347 return "active"
353 return "active"
348
354
349 is_admin = h.HasPermissionAny('hg.admin')('can create repos index page')
355 is_admin = h.HasPermissionAny('hg.admin')('can create repos index page')
350
356
351 gr_name = c.repo_group.group_name if c.repo_group else None
357 gr_name = c.repo_group.group_name if c.repo_group else None
352 # create repositories with write permission on group is set to true
358 # create repositories with write permission on group is set to true
353 create_on_write = h.HasPermissionAny('hg.create.write_on_repogroup.true')()
359 create_on_write = h.HasPermissionAny('hg.create.write_on_repogroup.true')()
354 group_admin = h.HasRepoGroupPermissionAny('group.admin')(gr_name, 'group admin index page')
360 group_admin = h.HasRepoGroupPermissionAny('group.admin')(gr_name, 'group admin index page')
355 group_write = h.HasRepoGroupPermissionAny('group.write')(gr_name, 'can write into group index page')
361 group_write = h.HasRepoGroupPermissionAny('group.write')(gr_name, 'can write into group index page')
356
362
357 %>
363 %>
358
364
359 <!--- REPO GROUP CONTEXT BAR -->
365 <!--- REPO GROUP CONTEXT BAR -->
360 <div id="context-bar">
366 <div id="context-bar">
361 <div class="wrapper">
367 <div class="wrapper">
368 <div class="title">
369 ${self.repo_group_page_title(c.repo_group)}
370 </div>
371
362 <ul id="context-pages" class="navigation horizontal-list">
372 <ul id="context-pages" class="navigation horizontal-list">
363 <li class="${is_active('home')}"><a class="menulink" href="${h.route_path('repo_group_home', repo_group_name=c.repo_group.group_name)}"><div class="menulabel">${_('Group Home')}</div></a></li>
373 <li class="${is_active('home')}"><a class="menulink" href="${h.route_path('repo_group_home', repo_group_name=c.repo_group.group_name)}"><div class="menulabel">${_('Group Home')}</div></a></li>
364 % if is_admin or group_admin:
374 % if is_admin or group_admin:
365 <li class="${is_active('settings')}"><a class="menulink" href="${h.route_path('edit_repo_group',repo_group_name=c.repo_group.group_name)}" title="${_('You have admin right to this group, and can edit it')}"><div class="menulabel">${_('Group Settings')}</div></a></li>
375 <li class="${is_active('settings')}"><a class="menulink" href="${h.route_path('edit_repo_group',repo_group_name=c.repo_group.group_name)}" title="${_('You have admin right to this group, and can edit it')}"><div class="menulabel">${_('Group Settings')}</div></a></li>
366 % endif
376 % endif
367
377
368 <li class="${is_active('options')}">
378 <li class="${is_active('options')}">
369 <a class="menulink dropdown">
379 <a class="menulink dropdown">
370 <div class="menulabel">${_('Options')} <div class="show_more"></div></div>
380 <div class="menulabel">${_('Options')} <div class="show_more"></div></div>
371 </a>
381 </a>
372 <ul class="submenu">
382 <ul class="submenu">
373 %if is_admin or group_admin or (group_write and create_on_write):
383 %if is_admin or group_admin or (group_write and create_on_write):
374 <li><a href="${h.route_path('repo_new',_query=dict(parent_group=c.repo_group.group_id))}">${_('Add Repository')}</a></li>
384 <li><a href="${h.route_path('repo_new',_query=dict(parent_group=c.repo_group.group_id))}">${_('Add Repository')}</a></li>
375 %endif
385 %endif
376 %if is_admin or group_admin:
386 %if is_admin or group_admin:
377 <li><a href="${h.route_path('repo_group_new',_query=dict(parent_group=c.repo_group.group_id))}">${_(u'Add Parent Group')}</a></li>
387 <li><a href="${h.route_path('repo_group_new',_query=dict(parent_group=c.repo_group.group_id))}">${_(u'Add Parent Group')}</a></li>
378 %endif
388 %endif
379 </ul>
389 </ul>
380 </li>
390 </li>
381 </ul>
391 </ul>
382 </div>
392 </div>
383 <div class="clear"></div>
393 <div class="clear"></div>
384 </div>
394 </div>
385
395
386 <!--- REPO GROUP CONTEXT BAR -->
396 <!--- REPO GROUP CONTEXT BAR -->
387
397
388 </%def>
398 </%def>
389
399
390
400
391 <%def name="usermenu(active=False)">
401 <%def name="usermenu(active=False)">
392 ## USER MENU
402 ## USER MENU
393 <li id="quick_login_li" class="${'active' if active else ''}">
403 <li id="quick_login_li" class="${'active' if active else ''}">
394 % if c.rhodecode_user.username == h.DEFAULT_USER:
404 % if c.rhodecode_user.username == h.DEFAULT_USER:
395 <a id="quick_login_link" class="menulink childs" href="${h.route_path('login', _query={'came_from': h.current_route_path(request)})}">
405 <a id="quick_login_link" class="menulink childs" href="${h.route_path('login', _query={'came_from': h.current_route_path(request)})}">
396 ${gravatar(c.rhodecode_user.email, 20)}
406 ${gravatar(c.rhodecode_user.email, 20)}
397 <span class="user">
407 <span class="user">
398 <span>${_('Sign in')}</span>
408 <span>${_('Sign in')}</span>
399 </span>
409 </span>
400 </a>
410 </a>
401 % else:
411 % else:
402 ## logged in user
412 ## logged in user
403 <a id="quick_login_link" class="menulink childs">
413 <a id="quick_login_link" class="menulink childs">
404 ${gravatar(c.rhodecode_user.email, 20)}
414 ${gravatar(c.rhodecode_user.email, 20)}
405 <span class="user">
415 <span class="user">
406 <span class="menu_link_user">${c.rhodecode_user.username}</span>
416 <span class="menu_link_user">${c.rhodecode_user.username}</span>
407 <div class="show_more"></div>
417 <div class="show_more"></div>
408 </span>
418 </span>
409 </a>
419 </a>
410 ## subnav with menu for logged in user
420 ## subnav with menu for logged in user
411 <div class="user-menu submenu">
421 <div class="user-menu submenu">
412 <div id="quick_login">
422 <div id="quick_login">
413 %if c.rhodecode_user.username != h.DEFAULT_USER:
423 %if c.rhodecode_user.username != h.DEFAULT_USER:
414 <div class="">
424 <div class="">
415 <div class="big_gravatar">${gravatar(c.rhodecode_user.email, 48)}</div>
425 <div class="big_gravatar">${gravatar(c.rhodecode_user.email, 48)}</div>
416 <div class="full_name">${c.rhodecode_user.full_name_or_username}</div>
426 <div class="full_name">${c.rhodecode_user.full_name_or_username}</div>
417 <div class="email">${c.rhodecode_user.email}</div>
427 <div class="email">${c.rhodecode_user.email}</div>
418 </div>
428 </div>
419 <div class="">
429 <div class="">
420 <ol class="links">
430 <ol class="links">
421 <li>${h.link_to(_(u'My account'),h.route_path('my_account_profile'))}</li>
431 <li>${h.link_to(_(u'My account'),h.route_path('my_account_profile'))}</li>
422 % if c.rhodecode_user.personal_repo_group:
432 % if c.rhodecode_user.personal_repo_group:
423 <li>${h.link_to(_(u'My personal group'), h.route_path('repo_group_home', repo_group_name=c.rhodecode_user.personal_repo_group.group_name))}</li>
433 <li>${h.link_to(_(u'My personal group'), h.route_path('repo_group_home', repo_group_name=c.rhodecode_user.personal_repo_group.group_name))}</li>
424 % endif
434 % endif
425 <li>${h.link_to(_(u'Pull Requests'), h.route_path('my_account_pullrequests'))}</li>
435 <li>${h.link_to(_(u'Pull Requests'), h.route_path('my_account_pullrequests'))}</li>
426 ## bookmark-items
436 ## bookmark-items
427 <li class="bookmark-items">
437 <li class="bookmark-items">
428 ${_('Bookmarks')}
438 ${_('Bookmarks')}
429 <div class="pull-right">
439 <div class="pull-right">
430 <a href="${h.route_path('my_account_bookmarks')}">${_('Manage')}</a>
440 <a href="${h.route_path('my_account_bookmarks')}">${_('Manage')}</a>
431 </div>
441 </div>
432 </li>
442 </li>
433 % if not c.bookmark_items:
443 % if not c.bookmark_items:
434 <li>
444 <li>
435 <a href="${h.route_path('my_account_bookmarks')}">${_('No Bookmarks yet.')}</a>
445 <a href="${h.route_path('my_account_bookmarks')}">${_('No Bookmarks yet.')}</a>
436 </li>
446 </li>
437 % endif
447 % endif
438 % for item in c.bookmark_items:
448 % for item in c.bookmark_items:
439 <li>
449 <li>
440 % if item.repository:
450 % if item.repository:
441 <div>
451 <div>
442 <a class="bookmark-item" href="${h.route_path('my_account_goto_bookmark', bookmark_id=item.position)}">
452 <a class="bookmark-item" href="${h.route_path('my_account_goto_bookmark', bookmark_id=item.position)}">
443 <code>${item.position}</code>
453 <code>${item.position}</code>
444 % if item.repository.repo_type == 'hg':
454 % if item.repository.repo_type == 'hg':
445 <i class="icon-hg" title="${_('Repository')}" style="font-size: 16px"></i>
455 <i class="icon-hg" title="${_('Repository')}" style="font-size: 16px"></i>
446 % elif item.repository.repo_type == 'git':
456 % elif item.repository.repo_type == 'git':
447 <i class="icon-git" title="${_('Repository')}" style="font-size: 16px"></i>
457 <i class="icon-git" title="${_('Repository')}" style="font-size: 16px"></i>
448 % elif item.repository.repo_type == 'svn':
458 % elif item.repository.repo_type == 'svn':
449 <i class="icon-svn" title="${_('Repository')}" style="font-size: 16px"></i>
459 <i class="icon-svn" title="${_('Repository')}" style="font-size: 16px"></i>
450 % endif
460 % endif
451 ${(item.title or h.shorter(item.repository.repo_name, 30))}
461 ${(item.title or h.shorter(item.repository.repo_name, 30))}
452 </a>
462 </a>
453 </div>
463 </div>
454 % elif item.repository_group:
464 % elif item.repository_group:
455 <div>
465 <div>
456 <a class="bookmark-item" href="${h.route_path('my_account_goto_bookmark', bookmark_id=item.position)}">
466 <a class="bookmark-item" href="${h.route_path('my_account_goto_bookmark', bookmark_id=item.position)}">
457 <code>${item.position}</code>
467 <code>${item.position}</code>
458 <i class="icon-folder-close" title="${_('Repository group')}" style="font-size: 16px"></i>
468 <i class="icon-folder-close" title="${_('Repository group')}" style="font-size: 16px"></i>
459 ${(item.title or h.shorter(item.repository_group.group_name, 30))}
469 ${(item.title or h.shorter(item.repository_group.group_name, 30))}
460 </a>
470 </a>
461 </div>
471 </div>
462 % else:
472 % else:
463 <a class="bookmark-item" href="${h.route_path('my_account_goto_bookmark', bookmark_id=item.position)}">
473 <a class="bookmark-item" href="${h.route_path('my_account_goto_bookmark', bookmark_id=item.position)}">
464 <code>${item.position}</code>
474 <code>${item.position}</code>
465 ${item.title}
475 ${item.title}
466 </a>
476 </a>
467 % endif
477 % endif
468 </li>
478 </li>
469 % endfor
479 % endfor
470
480
471 <li class="logout">
481 <li class="logout">
472 ${h.secure_form(h.route_path('logout'), request=request)}
482 ${h.secure_form(h.route_path('logout'), request=request)}
473 ${h.submit('log_out', _(u'Sign Out'),class_="btn btn-primary")}
483 ${h.submit('log_out', _(u'Sign Out'),class_="btn btn-primary")}
474 ${h.end_form()}
484 ${h.end_form()}
475 </li>
485 </li>
476 </ol>
486 </ol>
477 </div>
487 </div>
478 %endif
488 %endif
479 </div>
489 </div>
480 </div>
490 </div>
481 ## unread counter
491 ## unread counter
482 <div class="pill_container">
492 <div class="pill_container">
483 <a class="menu_link_notifications ${'empty' if c.unread_notifications == 0 else ''}" href="${h.route_path('notifications_show_all')}">${c.unread_notifications}</a>
493 <a class="menu_link_notifications ${'empty' if c.unread_notifications == 0 else ''}" href="${h.route_path('notifications_show_all')}">${c.unread_notifications}</a>
484 </div>
494 </div>
485 % endif
495 % endif
486 </li>
496 </li>
487 </%def>
497 </%def>
488
498
489 <%def name="menu_items(active=None)">
499 <%def name="menu_items(active=None)">
490 <%
500 <%
491 def is_active(selected):
501 def is_active(selected):
492 if selected == active:
502 if selected == active:
493 return "active"
503 return "active"
494 return ""
504 return ""
495 %>
505 %>
496
506
497 <ul id="quick" class="main_nav navigation horizontal-list">
507 <ul id="quick" class="main_nav navigation horizontal-list">
498 ## notice box for important system messages
508 ## notice box for important system messages
499 <li style="display: none">
509 <li style="display: none">
500 <a class="notice-box" href="#openNotice" onclick="showNoticeBox(); return false">
510 <a class="notice-box" href="#openNotice" onclick="showNoticeBox(); return false">
501 <div class="menulabel-notice" >
511 <div class="menulabel-notice" >
502 0
512 0
503 </div>
513 </div>
504 </a>
514 </a>
505 </li>
515 </li>
506
516
507 ## Main filter
517 ## Main filter
508 <li>
518 <li>
509 <div class="menulabel main_filter_box">
519 <div class="menulabel main_filter_box">
510 <div class="main_filter_input_box">
520 <div class="main_filter_input_box">
511 <ul class="searchItems">
521 <ul class="searchItems">
512
522
513 % if c.template_context['search_context']['repo_id']:
523 % if c.template_context['search_context']['repo_id']:
514 <li class="searchTag searchTagFilter searchTagHidable" >
524 <li class="searchTag searchTagFilter searchTagHidable" >
515 ##<a href="${h.route_path('search_repo',repo_name=c.template_context['search_context']['repo_name'])}">
525 ##<a href="${h.route_path('search_repo',repo_name=c.template_context['search_context']['repo_name'])}">
516 <span class="tag">
526 <span class="tag">
517 This repo
527 This repo
518 <a href="#removeGoToFilter" onclick="removeGoToFilter(); return false"><i class="icon-delete"></i></a>
528 <a href="#removeGoToFilter" onclick="removeGoToFilter(); return false"><i class="icon-delete"></i></a>
519 </span>
529 </span>
520 ##</a>
530 ##</a>
521 </li>
531 </li>
522 % elif c.template_context['search_context']['repo_group_id']:
532 % elif c.template_context['search_context']['repo_group_id']:
523 <li class="searchTag searchTagFilter searchTagHidable">
533 <li class="searchTag searchTagFilter searchTagHidable">
524 ##<a href="${h.route_path('search_repo_group',repo_group_name=c.template_context['search_context']['repo_group_name'])}">
534 ##<a href="${h.route_path('search_repo_group',repo_group_name=c.template_context['search_context']['repo_group_name'])}">
525 <span class="tag">
535 <span class="tag">
526 This group
536 This group
527 <a href="#removeGoToFilter" onclick="removeGoToFilter(); return false"><i class="icon-delete"></i></a>
537 <a href="#removeGoToFilter" onclick="removeGoToFilter(); return false"><i class="icon-delete"></i></a>
528 </span>
538 </span>
529 ##</a>
539 ##</a>
530 </li>
540 </li>
531 % endif
541 % endif
532
542
533 <li class="searchTagInput">
543 <li class="searchTagInput">
534 <input class="main_filter_input" id="main_filter" size="15" type="text" name="main_filter" placeholder="${_('search / go to...')}" value="" />
544 <input class="main_filter_input" id="main_filter" size="15" type="text" name="main_filter" placeholder="${_('search / go to...')}" value="" />
535 </li>
545 </li>
536 <li class="searchTag searchTagHelp">
546 <li class="searchTag searchTagHelp">
537 <a href="#showFilterHelp" onclick="showMainFilterBox(); return false">?</a>
547 <a href="#showFilterHelp" onclick="showMainFilterBox(); return false">?</a>
538 </li>
548 </li>
539 </ul>
549 </ul>
540 </div>
550 </div>
541 </div>
551 </div>
542
552
543 <div id="main_filter_help" style="display: none">
553 <div id="main_filter_help" style="display: none">
544 - Use '/' key to quickly access this field.
554 - Use '/' key to quickly access this field.
545
555
546 - Enter a name of repository, or repository group for quick search.
556 - Enter a name of repository, or repository group for quick search.
547
557
548 - Prefix query to allow special search:
558 - Prefix query to allow special search:
549
559
550 user:admin, to search for usernames, always global
560 user:admin, to search for usernames, always global
551
561
552 user_group:devops, to search for user groups, always global
562 user_group:devops, to search for user groups, always global
553
563
554 commit:efced4, to search for commits, scoped to repositories or groups
564 commit:efced4, to search for commits, scoped to repositories or groups
555
565
556 file:models.py, to search for file paths, scoped to repositories or groups
566 file:models.py, to search for file paths, scoped to repositories or groups
557
567
558 % if c.template_context['search_context']['repo_id']:
568 % if c.template_context['search_context']['repo_id']:
559 For advanced full text search visit: <a href="${h.route_path('search_repo',repo_name=c.template_context['search_context']['repo_name'])}">repository search</a>
569 For advanced full text search visit: <a href="${h.route_path('search_repo',repo_name=c.template_context['search_context']['repo_name'])}">repository search</a>
560 % elif c.template_context['search_context']['repo_group_id']:
570 % elif c.template_context['search_context']['repo_group_id']:
561 For advanced full text search visit: <a href="${h.route_path('search_repo_group',repo_group_name=c.template_context['search_context']['repo_group_name'])}">repository group search</a>
571 For advanced full text search visit: <a href="${h.route_path('search_repo_group',repo_group_name=c.template_context['search_context']['repo_group_name'])}">repository group search</a>
562 % else:
572 % else:
563 For advanced full text search visit: <a href="${h.route_path('search')}">global search</a>
573 For advanced full text search visit: <a href="${h.route_path('search')}">global search</a>
564 % endif
574 % endif
565 </div>
575 </div>
566 </li>
576 </li>
567
577
568 ## ROOT MENU
578 ## ROOT MENU
569 <li class="${is_active('home')}">
579 <li class="${is_active('home')}">
570 <a class="menulink" title="${_('Home')}" href="${h.route_path('home')}">
580 <a class="menulink" title="${_('Home')}" href="${h.route_path('home')}">
571 <div class="menulabel">${_('Home')}</div>
581 <div class="menulabel">${_('Home')}</div>
572 </a>
582 </a>
573 </li>
583 </li>
574
584
575 %if c.rhodecode_user.username != h.DEFAULT_USER:
585 %if c.rhodecode_user.username != h.DEFAULT_USER:
576 <li class="${is_active('journal')}">
586 <li class="${is_active('journal')}">
577 <a class="menulink" title="${_('Show activity journal')}" href="${h.route_path('journal')}">
587 <a class="menulink" title="${_('Show activity journal')}" href="${h.route_path('journal')}">
578 <div class="menulabel">${_('Journal')}</div>
588 <div class="menulabel">${_('Journal')}</div>
579 </a>
589 </a>
580 </li>
590 </li>
581 %else:
591 %else:
582 <li class="${is_active('journal')}">
592 <li class="${is_active('journal')}">
583 <a class="menulink" title="${_('Show Public activity journal')}" href="${h.route_path('journal_public')}">
593 <a class="menulink" title="${_('Show Public activity journal')}" href="${h.route_path('journal_public')}">
584 <div class="menulabel">${_('Public journal')}</div>
594 <div class="menulabel">${_('Public journal')}</div>
585 </a>
595 </a>
586 </li>
596 </li>
587 %endif
597 %endif
588
598
589 <li class="${is_active('gists')}">
599 <li class="${is_active('gists')}">
590 <a class="menulink childs" title="${_('Show Gists')}" href="${h.route_path('gists_show')}">
600 <a class="menulink childs" title="${_('Show Gists')}" href="${h.route_path('gists_show')}">
591 <div class="menulabel">${_('Gists')}</div>
601 <div class="menulabel">${_('Gists')}</div>
592 </a>
602 </a>
593 </li>
603 </li>
594
604
595 <li class="${is_active('admin')}">
605 <li class="${is_active('admin')}">
596 <a class="menulink childs" title="${_('Admin settings')}" href="${h.route_path('admin_home')}">
606 <a class="menulink childs" title="${_('Admin settings')}" href="${h.route_path('admin_home')}">
597 <div class="menulabel">${_('Admin')} </div>
607 <div class="menulabel">${_('Admin')} </div>
598 </a>
608 </a>
599 </li>
609 </li>
600
610
601 ## render extra user menu
611 ## render extra user menu
602 ${usermenu(active=(active=='my_account'))}
612 ${usermenu(active=(active=='my_account'))}
603
613
604 % if c.debug_style:
614 % if c.debug_style:
605 <li>
615 <li>
606 <a class="menulink" title="${_('Style')}" href="${h.route_path('debug_style_home')}">
616 <a class="menulink" title="${_('Style')}" href="${h.route_path('debug_style_home')}">
607 <div class="menulabel">${_('[Style]')}</div>
617 <div class="menulabel">${_('[Style]')}</div>
608 </a>
618 </a>
609 </li>
619 </li>
610 % endif
620 % endif
611 </ul>
621 </ul>
612
622
613 <script type="text/javascript">
623 <script type="text/javascript">
614 var visualShowPublicIcon = "${c.visual.show_public_icon}" == "True";
624 var visualShowPublicIcon = "${c.visual.show_public_icon}" == "True";
615
625
616 var formatRepoResult = function(result, container, query, escapeMarkup) {
626 var formatRepoResult = function(result, container, query, escapeMarkup) {
617 return function(data, escapeMarkup) {
627 return function(data, escapeMarkup) {
618 if (!data.repo_id){
628 if (!data.repo_id){
619 return data.text; // optgroup text Repositories
629 return data.text; // optgroup text Repositories
620 }
630 }
621
631
622 var tmpl = '';
632 var tmpl = '';
623 var repoType = data['repo_type'];
633 var repoType = data['repo_type'];
624 var repoName = data['text'];
634 var repoName = data['text'];
625
635
626 if(data && data.type == 'repo'){
636 if(data && data.type == 'repo'){
627 if(repoType === 'hg'){
637 if(repoType === 'hg'){
628 tmpl += '<i class="icon-hg"></i> ';
638 tmpl += '<i class="icon-hg"></i> ';
629 }
639 }
630 else if(repoType === 'git'){
640 else if(repoType === 'git'){
631 tmpl += '<i class="icon-git"></i> ';
641 tmpl += '<i class="icon-git"></i> ';
632 }
642 }
633 else if(repoType === 'svn'){
643 else if(repoType === 'svn'){
634 tmpl += '<i class="icon-svn"></i> ';
644 tmpl += '<i class="icon-svn"></i> ';
635 }
645 }
636 if(data['private']){
646 if(data['private']){
637 tmpl += '<i class="icon-lock" ></i> ';
647 tmpl += '<i class="icon-lock" ></i> ';
638 }
648 }
639 else if(visualShowPublicIcon){
649 else if(visualShowPublicIcon){
640 tmpl += '<i class="icon-unlock-alt"></i> ';
650 tmpl += '<i class="icon-unlock-alt"></i> ';
641 }
651 }
642 }
652 }
643 tmpl += escapeMarkup(repoName);
653 tmpl += escapeMarkup(repoName);
644 return tmpl;
654 return tmpl;
645
655
646 }(result, escapeMarkup);
656 }(result, escapeMarkup);
647 };
657 };
648
658
649 var formatRepoGroupResult = function(result, container, query, escapeMarkup) {
659 var formatRepoGroupResult = function(result, container, query, escapeMarkup) {
650 return function(data, escapeMarkup) {
660 return function(data, escapeMarkup) {
651 if (!data.repo_group_id){
661 if (!data.repo_group_id){
652 return data.text; // optgroup text Repositories
662 return data.text; // optgroup text Repositories
653 }
663 }
654
664
655 var tmpl = '';
665 var tmpl = '';
656 var repoGroupName = data['text'];
666 var repoGroupName = data['text'];
657
667
658 if(data){
668 if(data){
659
669
660 tmpl += '<i class="icon-folder-close"></i> ';
670 tmpl += '<i class="icon-folder-close"></i> ';
661
671
662 }
672 }
663 tmpl += escapeMarkup(repoGroupName);
673 tmpl += escapeMarkup(repoGroupName);
664 return tmpl;
674 return tmpl;
665
675
666 }(result, escapeMarkup);
676 }(result, escapeMarkup);
667 };
677 };
668
678
669 var escapeRegExChars = function (value) {
679 var escapeRegExChars = function (value) {
670 return value.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
680 return value.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
671 };
681 };
672
682
673 var getRepoIcon = function(repo_type) {
683 var getRepoIcon = function(repo_type) {
674 if (repo_type === 'hg') {
684 if (repo_type === 'hg') {
675 return '<i class="icon-hg"></i> ';
685 return '<i class="icon-hg"></i> ';
676 }
686 }
677 else if (repo_type === 'git') {
687 else if (repo_type === 'git') {
678 return '<i class="icon-git"></i> ';
688 return '<i class="icon-git"></i> ';
679 }
689 }
680 else if (repo_type === 'svn') {
690 else if (repo_type === 'svn') {
681 return '<i class="icon-svn"></i> ';
691 return '<i class="icon-svn"></i> ';
682 }
692 }
683 return ''
693 return ''
684 };
694 };
685
695
686 var autocompleteMainFilterFormatResult = function (data, value, org_formatter) {
696 var autocompleteMainFilterFormatResult = function (data, value, org_formatter) {
687
697
688 if (value.split(':').length === 2) {
698 if (value.split(':').length === 2) {
689 value = value.split(':')[1]
699 value = value.split(':')[1]
690 }
700 }
691
701
692 var searchType = data['type'];
702 var searchType = data['type'];
693 var valueDisplay = data['value_display'];
703 var valueDisplay = data['value_display'];
694
704
695 var pattern = '(' + escapeRegExChars(value) + ')';
705 var pattern = '(' + escapeRegExChars(value) + ')';
696
706
697 valueDisplay = Select2.util.escapeMarkup(valueDisplay);
707 valueDisplay = Select2.util.escapeMarkup(valueDisplay);
698
708
699 // highlight match
709 // highlight match
700 if (searchType != 'text') {
710 if (searchType != 'text') {
701 valueDisplay = valueDisplay.replace(new RegExp(pattern, 'gi'), '<strong>$1<\/strong>');
711 valueDisplay = valueDisplay.replace(new RegExp(pattern, 'gi'), '<strong>$1<\/strong>');
702 }
712 }
703
713
704 var icon = '';
714 var icon = '';
705
715
706 if (searchType === 'hint') {
716 if (searchType === 'hint') {
707 icon += '<i class="icon-folder-close"></i> ';
717 icon += '<i class="icon-folder-close"></i> ';
708 }
718 }
709 // full text search
719 // full text search
710 else if (searchType === 'search') {
720 else if (searchType === 'search') {
711 icon += '<i class="icon-more"></i> ';
721 icon += '<i class="icon-more"></i> ';
712 }
722 }
713 // repository
723 // repository
714 else if (searchType === 'repo') {
724 else if (searchType === 'repo') {
715
725
716 var repoIcon = getRepoIcon(data['repo_type']);
726 var repoIcon = getRepoIcon(data['repo_type']);
717 icon += repoIcon;
727 icon += repoIcon;
718
728
719 if (data['private']) {
729 if (data['private']) {
720 icon += '<i class="icon-lock" ></i> ';
730 icon += '<i class="icon-lock" ></i> ';
721 }
731 }
722 else if (visualShowPublicIcon) {
732 else if (visualShowPublicIcon) {
723 icon += '<i class="icon-unlock-alt"></i> ';
733 icon += '<i class="icon-unlock-alt"></i> ';
724 }
734 }
725 }
735 }
726 // repository groups
736 // repository groups
727 else if (searchType === 'repo_group') {
737 else if (searchType === 'repo_group') {
728 icon += '<i class="icon-folder-close"></i> ';
738 icon += '<i class="icon-folder-close"></i> ';
729 }
739 }
730 // user group
740 // user group
731 else if (searchType === 'user_group') {
741 else if (searchType === 'user_group') {
732 icon += '<i class="icon-group"></i> ';
742 icon += '<i class="icon-group"></i> ';
733 }
743 }
734 // user
744 // user
735 else if (searchType === 'user') {
745 else if (searchType === 'user') {
736 icon += '<img class="gravatar" src="{0}"/>'.format(data['icon_link']);
746 icon += '<img class="gravatar" src="{0}"/>'.format(data['icon_link']);
737 }
747 }
738 // commit
748 // commit
739 else if (searchType === 'commit') {
749 else if (searchType === 'commit') {
740 var repo_data = data['repo_data'];
750 var repo_data = data['repo_data'];
741 var repoIcon = getRepoIcon(repo_data['repository_type']);
751 var repoIcon = getRepoIcon(repo_data['repository_type']);
742 if (repoIcon) {
752 if (repoIcon) {
743 icon += repoIcon;
753 icon += repoIcon;
744 } else {
754 } else {
745 icon += '<i class="icon-tag"></i>';
755 icon += '<i class="icon-tag"></i>';
746 }
756 }
747 }
757 }
748 // file
758 // file
749 else if (searchType === 'file') {
759 else if (searchType === 'file') {
750 var repo_data = data['repo_data'];
760 var repo_data = data['repo_data'];
751 var repoIcon = getRepoIcon(repo_data['repository_type']);
761 var repoIcon = getRepoIcon(repo_data['repository_type']);
752 if (repoIcon) {
762 if (repoIcon) {
753 icon += repoIcon;
763 icon += repoIcon;
754 } else {
764 } else {
755 icon += '<i class="icon-tag"></i>';
765 icon += '<i class="icon-tag"></i>';
756 }
766 }
757 }
767 }
758 // generic text
768 // generic text
759 else if (searchType === 'text') {
769 else if (searchType === 'text') {
760 icon = '';
770 icon = '';
761 }
771 }
762
772
763 var tmpl = '<div class="ac-container-wrap">{0}{1}</div>';
773 var tmpl = '<div class="ac-container-wrap">{0}{1}</div>';
764 return tmpl.format(icon, valueDisplay);
774 return tmpl.format(icon, valueDisplay);
765 };
775 };
766
776
767 var handleSelect = function(element, suggestion) {
777 var handleSelect = function(element, suggestion) {
768 if (suggestion.type === "hint") {
778 if (suggestion.type === "hint") {
769 // we skip action
779 // we skip action
770 $('#main_filter').focus();
780 $('#main_filter').focus();
771 }
781 }
772 else if (suggestion.type === "text") {
782 else if (suggestion.type === "text") {
773 // we skip action
783 // we skip action
774 $('#main_filter').focus();
784 $('#main_filter').focus();
775
785
776 } else {
786 } else {
777 window.location = suggestion['url'];
787 window.location = suggestion['url'];
778 }
788 }
779 };
789 };
780
790
781 var autocompleteMainFilterResult = function (suggestion, originalQuery, queryLowerCase) {
791 var autocompleteMainFilterResult = function (suggestion, originalQuery, queryLowerCase) {
782 if (queryLowerCase.split(':').length === 2) {
792 if (queryLowerCase.split(':').length === 2) {
783 queryLowerCase = queryLowerCase.split(':')[1]
793 queryLowerCase = queryLowerCase.split(':')[1]
784 }
794 }
785 if (suggestion.type === "text") {
795 if (suggestion.type === "text") {
786 // special case we don't want to "skip" display for
796 // special case we don't want to "skip" display for
787 return true
797 return true
788 }
798 }
789 return suggestion.value_display.toLowerCase().indexOf(queryLowerCase) !== -1;
799 return suggestion.value_display.toLowerCase().indexOf(queryLowerCase) !== -1;
790 };
800 };
791
801
792 var cleanContext = {
802 var cleanContext = {
793 repo_view_type: null,
803 repo_view_type: null,
794
804
795 repo_id: null,
805 repo_id: null,
796 repo_name: "",
806 repo_name: "",
797
807
798 repo_group_id: null,
808 repo_group_id: null,
799 repo_group_name: null
809 repo_group_name: null
800 };
810 };
801 var removeGoToFilter = function () {
811 var removeGoToFilter = function () {
802 $('.searchTagHidable').hide();
812 $('.searchTagHidable').hide();
803 $('#main_filter').autocomplete(
813 $('#main_filter').autocomplete(
804 'setOptions', {params:{search_context: cleanContext}});
814 'setOptions', {params:{search_context: cleanContext}});
805 };
815 };
806
816
807 $('#main_filter').autocomplete({
817 $('#main_filter').autocomplete({
808 serviceUrl: pyroutes.url('goto_switcher_data'),
818 serviceUrl: pyroutes.url('goto_switcher_data'),
809 params: {
819 params: {
810 "search_context": templateContext.search_context
820 "search_context": templateContext.search_context
811 },
821 },
812 minChars:2,
822 minChars:2,
813 maxHeight:400,
823 maxHeight:400,
814 deferRequestBy: 300, //miliseconds
824 deferRequestBy: 300, //miliseconds
815 tabDisabled: true,
825 tabDisabled: true,
816 autoSelectFirst: false,
826 autoSelectFirst: false,
817 formatResult: autocompleteMainFilterFormatResult,
827 formatResult: autocompleteMainFilterFormatResult,
818 lookupFilter: autocompleteMainFilterResult,
828 lookupFilter: autocompleteMainFilterResult,
819 onSelect: function (element, suggestion) {
829 onSelect: function (element, suggestion) {
820 handleSelect(element, suggestion);
830 handleSelect(element, suggestion);
821 return false;
831 return false;
822 },
832 },
823 onSearchError: function (element, query, jqXHR, textStatus, errorThrown) {
833 onSearchError: function (element, query, jqXHR, textStatus, errorThrown) {
824 if (jqXHR !== 'abort') {
834 if (jqXHR !== 'abort') {
825 alert("Error during search.\nError code: {0}".format(textStatus));
835 alert("Error during search.\nError code: {0}".format(textStatus));
826 window.location = '';
836 window.location = '';
827 }
837 }
828 }
838 }
829 });
839 });
830
840
831 showMainFilterBox = function () {
841 showMainFilterBox = function () {
832 $('#main_filter_help').toggle();
842 $('#main_filter_help').toggle();
833 };
843 };
834
844
835 $('#main_filter').on('keydown.autocomplete', function (e) {
845 $('#main_filter').on('keydown.autocomplete', function (e) {
836
846
837 var BACKSPACE = 8;
847 var BACKSPACE = 8;
838 var el = $(e.currentTarget);
848 var el = $(e.currentTarget);
839 if(e.which === BACKSPACE){
849 if(e.which === BACKSPACE){
840 var inputVal = el.val();
850 var inputVal = el.val();
841 if (inputVal === ""){
851 if (inputVal === ""){
842 removeGoToFilter()
852 removeGoToFilter()
843 }
853 }
844 }
854 }
845 });
855 });
846
856
847 </script>
857 </script>
848 <script src="${h.asset('js/rhodecode/base/keyboard-bindings.js', ver=c.rhodecode_version_hash)}"></script>
858 <script src="${h.asset('js/rhodecode/base/keyboard-bindings.js', ver=c.rhodecode_version_hash)}"></script>
849 </%def>
859 </%def>
850
860
851 <div class="modal" id="help_kb" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
861 <div class="modal" id="help_kb" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
852 <div class="modal-dialog">
862 <div class="modal-dialog">
853 <div class="modal-content">
863 <div class="modal-content">
854 <div class="modal-header">
864 <div class="modal-header">
855 <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
865 <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
856 <h4 class="modal-title" id="myModalLabel">${_('Keyboard shortcuts')}</h4>
866 <h4 class="modal-title" id="myModalLabel">${_('Keyboard shortcuts')}</h4>
857 </div>
867 </div>
858 <div class="modal-body">
868 <div class="modal-body">
859 <div class="block-left">
869 <div class="block-left">
860 <table class="keyboard-mappings">
870 <table class="keyboard-mappings">
861 <tbody>
871 <tbody>
862 <tr>
872 <tr>
863 <th></th>
873 <th></th>
864 <th>${_('Site-wide shortcuts')}</th>
874 <th>${_('Site-wide shortcuts')}</th>
865 </tr>
875 </tr>
866 <%
876 <%
867 elems = [
877 elems = [
868 ('/', 'Use quick search box'),
878 ('/', 'Use quick search box'),
869 ('g h', 'Goto home page'),
879 ('g h', 'Goto home page'),
870 ('g g', 'Goto my private gists page'),
880 ('g g', 'Goto my private gists page'),
871 ('g G', 'Goto my public gists page'),
881 ('g G', 'Goto my public gists page'),
872 ('g 0-9', 'Goto bookmarked items from 0-9'),
882 ('g 0-9', 'Goto bookmarked items from 0-9'),
873 ('n r', 'New repository page'),
883 ('n r', 'New repository page'),
874 ('n g', 'New gist page'),
884 ('n g', 'New gist page'),
875 ]
885 ]
876 %>
886 %>
877 %for key, desc in elems:
887 %for key, desc in elems:
878 <tr>
888 <tr>
879 <td class="keys">
889 <td class="keys">
880 <span class="key tag">${key}</span>
890 <span class="key tag">${key}</span>
881 </td>
891 </td>
882 <td>${desc}</td>
892 <td>${desc}</td>
883 </tr>
893 </tr>
884 %endfor
894 %endfor
885 </tbody>
895 </tbody>
886 </table>
896 </table>
887 </div>
897 </div>
888 <div class="block-left">
898 <div class="block-left">
889 <table class="keyboard-mappings">
899 <table class="keyboard-mappings">
890 <tbody>
900 <tbody>
891 <tr>
901 <tr>
892 <th></th>
902 <th></th>
893 <th>${_('Repositories')}</th>
903 <th>${_('Repositories')}</th>
894 </tr>
904 </tr>
895 <%
905 <%
896 elems = [
906 elems = [
897 ('g s', 'Goto summary page'),
907 ('g s', 'Goto summary page'),
898 ('g c', 'Goto changelog page'),
908 ('g c', 'Goto changelog page'),
899 ('g f', 'Goto files page'),
909 ('g f', 'Goto files page'),
900 ('g F', 'Goto files page with file search activated'),
910 ('g F', 'Goto files page with file search activated'),
901 ('g p', 'Goto pull requests page'),
911 ('g p', 'Goto pull requests page'),
902 ('g o', 'Goto repository settings'),
912 ('g o', 'Goto repository settings'),
903 ('g O', 'Goto repository permissions settings'),
913 ('g O', 'Goto repository permissions settings'),
904 ]
914 ]
905 %>
915 %>
906 %for key, desc in elems:
916 %for key, desc in elems:
907 <tr>
917 <tr>
908 <td class="keys">
918 <td class="keys">
909 <span class="key tag">${key}</span>
919 <span class="key tag">${key}</span>
910 </td>
920 </td>
911 <td>${desc}</td>
921 <td>${desc}</td>
912 </tr>
922 </tr>
913 %endfor
923 %endfor
914 </tbody>
924 </tbody>
915 </table>
925 </table>
916 </div>
926 </div>
917 </div>
927 </div>
918 <div class="modal-footer">
928 <div class="modal-footer">
919 </div>
929 </div>
920 </div><!-- /.modal-content -->
930 </div><!-- /.modal-content -->
921 </div><!-- /.modal-dialog -->
931 </div><!-- /.modal-dialog -->
922 </div><!-- /.modal -->
932 </div><!-- /.modal -->
923
933
General Comments 0
You need to be logged in to leave comments. Login now