##// END OF EJS Templates
pull-requests: fixed small UI glitches in pull request view.
marcink -
r4291:a3f90209 default
parent child Browse files
Show More
@@ -1,525 +1,527 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: @grey2;
17 color: @grey2;
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, @grey5 );
21 .border ( @border-thickness-buttons, @grey5 );
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;
29 box-shadow: @button-shadow;
30 -webkit-box-shadow: @button-shadow;
30 -webkit-box-shadow: @button-shadow;
31
31
32
32
33
33
34 a {
34 a {
35 display: block;
35 display: block;
36 margin: 0;
36 margin: 0;
37 padding: 0;
37 padding: 0;
38 color: inherit;
38 color: inherit;
39 text-decoration: none;
39 text-decoration: none;
40
40
41 &:hover {
41 &:hover {
42 text-decoration: none;
42 text-decoration: none;
43 }
43 }
44 }
44 }
45
45
46 &:focus,
46 &:focus,
47 &:active {
47 &:active {
48 outline:none;
48 outline:none;
49 }
49 }
50
50
51 &:hover {
51 &:hover {
52 color: @rcdarkblue;
52 color: @rcdarkblue;
53 background-color: @grey6;
53 background-color: @grey6;
54
54
55 }
55 }
56
56
57 &.btn-active {
57 &.btn-active {
58 color: @rcdarkblue;
58 color: @rcdarkblue;
59 background-color: @grey6;
59 background-color: @grey6;
60 }
60 }
61
61
62 .icon-remove {
62 .icon-remove {
63 display: none;
63 display: none;
64 }
64 }
65
65
66 //disabled buttons
66 //disabled buttons
67 //last; overrides any other styles
67 //last; overrides any other styles
68 &:disabled {
68 &:disabled {
69 opacity: .7;
69 opacity: .7;
70 cursor: auto;
70 cursor: auto;
71 background-color: white;
71 background-color: white;
72 color: @grey4;
72 color: @grey4;
73 text-shadow: none;
73 text-shadow: none;
74 }
74 }
75
75
76 &.no-margin {
76 &.no-margin {
77 margin: 0 0 0 0;
77 margin: 0 0 0 0;
78 }
78 }
79
79
80
80
81
81
82 }
82 }
83
83
84
84
85 .btn-default {
85 .btn-default {
86 border: @border-thickness solid @grey5;
86 border: @border-thickness solid @grey5;
87 background-image: none;
87 background-image: none;
88 color: @grey2;
88 color: @grey2;
89
89
90 a {
90 a {
91 color: @grey2;
91 color: @grey2;
92 }
92 }
93
93
94 &:hover,
94 &:hover,
95 &.active {
95 &.active {
96 color: @rcdarkblue;
96 color: @rcdarkblue;
97 background-color: @white;
97 background-color: @white;
98 .border ( @border-thickness, @grey4 );
98 .border ( @border-thickness, @grey4 );
99
99
100 a {
100 a {
101 color: @grey2;
101 color: @grey2;
102 }
102 }
103 }
103 }
104 &:disabled {
104 &:disabled {
105 .border ( @border-thickness-buttons, @grey5 );
105 .border ( @border-thickness-buttons, @grey5 );
106 background-color: transparent;
106 background-color: transparent;
107 }
107 }
108 &.btn-active {
108 &.btn-active {
109 color: @rcdarkblue;
109 color: @rcdarkblue;
110 background-color: @white;
110 background-color: @white;
111 .border ( @border-thickness, @rcdarkblue );
111 .border ( @border-thickness, @rcdarkblue );
112 }
112 }
113 }
113 }
114
114
115 .btn-primary,
115 .btn-primary,
116 .btn-small, /* TODO: anderson: remove .btn-small to not mix with the new btn-sm */
116 .btn-small, /* TODO: anderson: remove .btn-small to not mix with the new btn-sm */
117 .btn-success {
117 .btn-success {
118 .border ( @border-thickness, @rcblue );
118 .border ( @border-thickness, @rcblue );
119 background-color: @rcblue;
119 background-color: @rcblue;
120 color: white;
120 color: white;
121
121
122 a {
122 a {
123 color: white;
123 color: white;
124 }
124 }
125
125
126 &:hover,
126 &:hover,
127 &.active {
127 &.active {
128 .border ( @border-thickness, @rcdarkblue );
128 .border ( @border-thickness, @rcdarkblue );
129 color: white;
129 color: white;
130 background-color: @rcdarkblue;
130 background-color: @rcdarkblue;
131
131
132 a {
132 a {
133 color: white;
133 color: white;
134 }
134 }
135 }
135 }
136 &:disabled {
136 &:disabled {
137 background-color: @rcblue;
137 background-color: @rcblue;
138 }
138 }
139 }
139 }
140
140
141 .btn-secondary {
141 .btn-secondary {
142 &:extend(.btn-default);
142 &:extend(.btn-default);
143
143
144 background-color: white;
144 background-color: white;
145
145
146 &:focus {
146 &:focus {
147 outline: 0;
147 outline: 0;
148 }
148 }
149
149
150 &:hover {
150 &:hover {
151 &:extend(.btn-default:hover);
151 &:extend(.btn-default:hover);
152 }
152 }
153
153
154 &.btn-link {
154 &.btn-link {
155 &:extend(.btn-link);
155 &:extend(.btn-link);
156 color: @rcblue;
156 color: @rcblue;
157 }
157 }
158
158
159 &:disabled {
159 &:disabled {
160 color: @rcblue;
160 color: @rcblue;
161 background-color: white;
161 background-color: white;
162 }
162 }
163 }
163 }
164
164
165 .btn-warning,
165 .btn-warning,
166 .btn-danger,
166 .btn-danger,
167 .revoke_perm,
167 .revoke_perm,
168 .btn-x,
168 .btn-x,
169 .form .action_button.btn-x {
169 .form .action_button.btn-x {
170 .border ( @border-thickness, @alert2 );
170 .border ( @border-thickness, @alert2 );
171 background-color: white;
171 background-color: white;
172 color: @alert2;
172 color: @alert2;
173
173
174 a {
174 a {
175 color: @alert2;
175 color: @alert2;
176 }
176 }
177
177
178 &:hover,
178 &:hover,
179 &.active {
179 &.active {
180 .border ( @border-thickness, @alert2 );
180 .border ( @border-thickness, @alert2 );
181 color: white;
181 color: white;
182 background-color: @alert2;
182 background-color: @alert2;
183
183
184 a {
184 a {
185 color: white;
185 color: white;
186 }
186 }
187 }
187 }
188
188
189 i {
189 i {
190 display:none;
190 display:none;
191 }
191 }
192
192
193 &:disabled {
193 &:disabled {
194 background-color: white;
194 background-color: white;
195 color: @alert2;
195 color: @alert2;
196 }
196 }
197 }
197 }
198
198
199 .btn-approved-status {
199 .btn-approved-status {
200 .border ( @border-thickness, @alert1 );
200 .border ( @border-thickness, @alert1 );
201 background-color: white;
201 background-color: white;
202 color: @alert1;
202 color: @alert1;
203
203
204 }
204 }
205
205
206 .btn-rejected-status {
206 .btn-rejected-status {
207 .border ( @border-thickness, @alert2 );
207 .border ( @border-thickness, @alert2 );
208 background-color: white;
208 background-color: white;
209 color: @alert2;
209 color: @alert2;
210 }
210 }
211
211
212 .btn-sm,
212 .btn-sm,
213 .btn-mini,
213 .btn-mini,
214 .field-sm .btn {
214 .field-sm .btn {
215 padding: @padding/3;
215 padding: @padding/3;
216 }
216 }
217
217
218 .btn-xs {
218 .btn-xs {
219 padding: @padding/4;
219 padding: @padding/4;
220 }
220 }
221
221
222 .btn-lg {
222 .btn-lg {
223 padding: @padding * 1.2;
223 padding: @padding * 1.2;
224 }
224 }
225
225
226 .btn-group {
226 .btn-group {
227 display: inline-block;
227 display: inline-block;
228 .btn {
228 .btn {
229 float: left;
229 float: left;
230 margin: 0 0 0 0;
230 margin: 0 0 0 0;
231 // first item
231 // first item
232 &:first-of-type:not(:last-of-type) {
232 &:first-of-type:not(:last-of-type) {
233 border-radius: @border-radius 0 0 @border-radius;
233 border-radius: @border-radius 0 0 @border-radius;
234
234
235 }
235 }
236 // middle elements
236 // middle elements
237 &:not(:first-of-type):not(:last-of-type) {
237 &:not(:first-of-type):not(:last-of-type) {
238 border-radius: 0;
238 border-radius: 0;
239 border-left-width: 0;
239 border-left-width: 0;
240 border-right-width: 0;
240 border-right-width: 0;
241 }
241 }
242 // last item
242 // last item
243 &:last-of-type:not(:first-of-type) {
243 &:last-of-type:not(:first-of-type) {
244 border-radius: 0 @border-radius @border-radius 0;
244 border-radius: 0 @border-radius @border-radius 0;
245 }
245 }
246
246
247 &:only-child {
247 &:only-child {
248 border-radius: @border-radius;
248 border-radius: @border-radius;
249 }
249 }
250 }
250 }
251
251
252 }
252 }
253
253
254
254
255 .btn-group-actions {
255 .btn-group-actions {
256 position: relative;
256 position: relative;
257 z-index: 100;
257 z-index: 100;
258
258
259 &:not(.open) .btn-action-switcher-container {
259 &:not(.open) .btn-action-switcher-container {
260 display: none;
260 display: none;
261 }
261 }
262 }
262 }
263
263
264
264
265 .btn-action-switcher-container{
265 .btn-action-switcher-container{
266 position: absolute;
266 position: absolute;
267 top: 30px;
267 top: 30px;
268 left: 0px;
268 left: -82px;
269 }
269 }
270
270
271 .btn-action-switcher {
271 .btn-action-switcher {
272 display: block;
272 display: block;
273 position: relative;
273 position: relative;
274 z-index: 300;
274 z-index: 300;
275 min-width: 240px;
275 min-width: 240px;
276 max-width: 500px;
276 max-width: 500px;
277 margin-top: 4px;
277 margin-top: 4px;
278 margin-bottom: 24px;
278 margin-bottom: 24px;
279 font-size: 14px;
279 font-size: 14px;
280 font-weight: 400;
280 font-weight: 400;
281 padding: 8px 0;
281 padding: 8px 0;
282 background-color: #fff;
282 background-color: #fff;
283 border: 1px solid @grey4;
283 border: 1px solid @grey4;
284 border-radius: 3px;
284 border-radius: 3px;
285 box-shadow: @dropdown-shadow;
285 box-shadow: @dropdown-shadow;
286
286
287 li {
287 li {
288 display: block;
288 display: block;
289 text-align: left;
289 text-align: left;
290 list-style: none;
290 list-style: none;
291 padding: 5px 10px;
291 padding: 5px 10px;
292 }
292 }
293
293
294 li .action-help-block {
294 li .action-help-block {
295 font-size: 10px;
295 font-size: 10px;
296 line-height: normal;
296 line-height: normal;
297 color: @grey4;
297 color: @grey4;
298 }
298 }
299
299
300 }
300 }
301
301
302 .btn-link {
302 .btn-link {
303 background: transparent;
303 background: transparent;
304 border: none;
304 border: none;
305 padding: 0;
305 padding: 0;
306 color: @rcblue;
306 color: @rcblue;
307
307
308 &:hover {
308 &:hover {
309 background: transparent;
309 background: transparent;
310 border: none;
310 border: none;
311 color: @rcdarkblue;
311 color: @rcdarkblue;
312 }
312 }
313
313
314 //disabled buttons
314 //disabled buttons
315 //last; overrides any other styles
315 //last; overrides any other styles
316 &:disabled {
316 &:disabled {
317 opacity: .7;
317 opacity: .7;
318 cursor: auto;
318 cursor: auto;
319 background-color: white;
319 background-color: white;
320 color: @grey4;
320 color: @grey4;
321 text-shadow: none;
321 text-shadow: none;
322 }
322 }
323
323
324 // TODO: johbo: Check if we can avoid this, indicates that the structure
324 // TODO: johbo: Check if we can avoid this, indicates that the structure
325 // is not yet good.
325 // is not yet good.
326 // lisa: The button CSS reflects the button HTML; both need a cleanup.
326 // lisa: The button CSS reflects the button HTML; both need a cleanup.
327 &.btn-danger {
327 &.btn-danger {
328 color: @alert2;
328 color: @alert2;
329
329
330 &:hover {
330 &:hover {
331 color: darken(@alert2,30%);
331 color: darken(@alert2,30%);
332 }
332 }
333
333
334 &:disabled {
334 &:disabled {
335 color: @alert2;
335 color: @alert2;
336 }
336 }
337 }
337 }
338 }
338 }
339
339
340 .btn-social {
340 .btn-social {
341 &:extend(.btn-default);
341 &:extend(.btn-default);
342 margin: 5px 5px 5px 0px;
342 margin: 5px 5px 5px 0px;
343 min-width: 160px;
343 min-width: 160px;
344 }
344 }
345
345
346 // TODO: johbo: check these exceptions
346 // TODO: johbo: check these exceptions
347
347
348 .links {
348 .links {
349
349
350 .btn + .btn {
350 .btn + .btn {
351 margin-top: @padding;
351 margin-top: @padding;
352 }
352 }
353 }
353 }
354
354
355
355
356 .action_button {
356 .action_button {
357 display:inline;
357 display:inline;
358 margin: 0;
358 margin: 0;
359 padding: 0 1em 0 0;
359 padding: 0 1em 0 0;
360 font-size: inherit;
360 font-size: inherit;
361 color: @rcblue;
361 color: @rcblue;
362 border: none;
362 border: none;
363 border-radius: 0;
363 border-radius: 0;
364 background-color: transparent;
364 background-color: transparent;
365
365
366 &.last-item {
366 &.last-item {
367 border: none;
367 border: none;
368 padding: 0 0 0 0;
368 padding: 0 0 0 0;
369 }
369 }
370
370
371 &:last-child {
371 &:last-child {
372 border: none;
372 border: none;
373 padding: 0 0 0 0;
373 padding: 0 0 0 0;
374 }
374 }
375
375
376 &:hover {
376 &:hover {
377 color: @rcdarkblue;
377 color: @rcdarkblue;
378 background-color: transparent;
378 background-color: transparent;
379 border: none;
379 border: none;
380 }
380 }
381 .noselect
381 }
382 }
383
382 .grid_delete {
384 .grid_delete {
383 .action_button {
385 .action_button {
384 border: none;
386 border: none;
385 }
387 }
386 }
388 }
387
389
388
390
389 // TODO: johbo: Form button tweaks, check if we can use the classes instead
391 // TODO: johbo: Form button tweaks, check if we can use the classes instead
390 input[type="submit"] {
392 input[type="submit"] {
391 &:extend(.btn-primary);
393 &:extend(.btn-primary);
392
394
393 &:focus {
395 &:focus {
394 outline: 0;
396 outline: 0;
395 }
397 }
396
398
397 &:hover {
399 &:hover {
398 &:extend(.btn-primary:hover);
400 &:extend(.btn-primary:hover);
399 }
401 }
400
402
401 &.btn-link {
403 &.btn-link {
402 &:extend(.btn-link);
404 &:extend(.btn-link);
403 color: @rcblue;
405 color: @rcblue;
404
406
405 &:disabled {
407 &:disabled {
406 color: @rcblue;
408 color: @rcblue;
407 background-color: transparent;
409 background-color: transparent;
408 }
410 }
409 }
411 }
410
412
411 &:disabled {
413 &:disabled {
412 .border ( @border-thickness-buttons, @rcblue );
414 .border ( @border-thickness-buttons, @rcblue );
413 background-color: @rcblue;
415 background-color: @rcblue;
414 color: white;
416 color: white;
415 opacity: 0.5;
417 opacity: 0.5;
416 }
418 }
417 }
419 }
418
420
419 input[type="reset"] {
421 input[type="reset"] {
420 &:extend(.btn-default);
422 &:extend(.btn-default);
421
423
422 // TODO: johbo: Check if this tweak can be avoided.
424 // TODO: johbo: Check if this tweak can be avoided.
423 background: transparent;
425 background: transparent;
424
426
425 &:focus {
427 &:focus {
426 outline: 0;
428 outline: 0;
427 }
429 }
428
430
429 &:hover {
431 &:hover {
430 &:extend(.btn-default:hover);
432 &:extend(.btn-default:hover);
431 }
433 }
432
434
433 &.btn-link {
435 &.btn-link {
434 &:extend(.btn-link);
436 &:extend(.btn-link);
435 color: @rcblue;
437 color: @rcblue;
436
438
437 &:disabled {
439 &:disabled {
438 border: none;
440 border: none;
439 }
441 }
440 }
442 }
441
443
442 &:disabled {
444 &:disabled {
443 .border ( @border-thickness-buttons, @rcblue );
445 .border ( @border-thickness-buttons, @rcblue );
444 background-color: white;
446 background-color: white;
445 color: @rcblue;
447 color: @rcblue;
446 }
448 }
447 }
449 }
448
450
449 input[type="submit"],
451 input[type="submit"],
450 input[type="reset"] {
452 input[type="reset"] {
451 &.btn-danger {
453 &.btn-danger {
452 &:extend(.btn-danger);
454 &:extend(.btn-danger);
453
455
454 &:focus {
456 &:focus {
455 outline: 0;
457 outline: 0;
456 }
458 }
457
459
458 &:hover {
460 &:hover {
459 &:extend(.btn-danger:hover);
461 &:extend(.btn-danger:hover);
460 }
462 }
461
463
462 &.btn-link {
464 &.btn-link {
463 &:extend(.btn-link);
465 &:extend(.btn-link);
464 color: @alert2;
466 color: @alert2;
465
467
466 &:hover {
468 &:hover {
467 color: darken(@alert2,30%);
469 color: darken(@alert2,30%);
468 }
470 }
469 }
471 }
470
472
471 &:disabled {
473 &:disabled {
472 color: @alert2;
474 color: @alert2;
473 background-color: white;
475 background-color: white;
474 }
476 }
475 }
477 }
476 &.btn-danger-action {
478 &.btn-danger-action {
477 .border ( @border-thickness, @alert2 );
479 .border ( @border-thickness, @alert2 );
478 background-color: @alert2;
480 background-color: @alert2;
479 color: white;
481 color: white;
480
482
481 a {
483 a {
482 color: white;
484 color: white;
483 }
485 }
484
486
485 &:hover {
487 &:hover {
486 background-color: darken(@alert2,20%);
488 background-color: darken(@alert2,20%);
487 }
489 }
488
490
489 &.active {
491 &.active {
490 .border ( @border-thickness, @alert2 );
492 .border ( @border-thickness, @alert2 );
491 color: white;
493 color: white;
492 background-color: @alert2;
494 background-color: @alert2;
493
495
494 a {
496 a {
495 color: white;
497 color: white;
496 }
498 }
497 }
499 }
498
500
499 &:disabled {
501 &:disabled {
500 background-color: white;
502 background-color: white;
501 color: @alert2;
503 color: @alert2;
502 }
504 }
503 }
505 }
504 }
506 }
505
507
506
508
507 .button-links {
509 .button-links {
508 float: left;
510 float: left;
509 display: inline;
511 display: inline;
510 margin: 0;
512 margin: 0;
511 padding-left: 0;
513 padding-left: 0;
512 list-style: none;
514 list-style: none;
513 text-align: right;
515 text-align: right;
514
516
515 li {
517 li {
516
518
517
519
518 }
520 }
519
521
520 li.active {
522 li.active {
521 background-color: @grey6;
523 background-color: @grey6;
522 .border ( @border-thickness, @grey4 );
524 .border ( @border-thickness, @grey4 );
523 }
525 }
524
526
525 }
527 }
@@ -1,3041 +1,3048 b''
1 //Primary CSS
1 //Primary CSS
2
2
3 //--- IMPORTS ------------------//
3 //--- IMPORTS ------------------//
4
4
5 @import 'helpers';
5 @import 'helpers';
6 @import 'mixins';
6 @import 'mixins';
7 @import 'rcicons';
7 @import 'rcicons';
8 @import 'variables';
8 @import 'variables';
9 @import 'bootstrap-variables';
9 @import 'bootstrap-variables';
10 @import 'form-bootstrap';
10 @import 'form-bootstrap';
11 @import 'codemirror';
11 @import 'codemirror';
12 @import 'legacy_code_styles';
12 @import 'legacy_code_styles';
13 @import 'readme-box';
13 @import 'readme-box';
14 @import 'progress-bar';
14 @import 'progress-bar';
15
15
16 @import 'type';
16 @import 'type';
17 @import 'alerts';
17 @import 'alerts';
18 @import 'buttons';
18 @import 'buttons';
19 @import 'tags';
19 @import 'tags';
20 @import 'code-block';
20 @import 'code-block';
21 @import 'examples';
21 @import 'examples';
22 @import 'login';
22 @import 'login';
23 @import 'main-content';
23 @import 'main-content';
24 @import 'select2';
24 @import 'select2';
25 @import 'comments';
25 @import 'comments';
26 @import 'panels-bootstrap';
26 @import 'panels-bootstrap';
27 @import 'panels';
27 @import 'panels';
28 @import 'deform';
28 @import 'deform';
29 @import 'tooltips';
29 @import 'tooltips';
30
30
31 //--- BASE ------------------//
31 //--- BASE ------------------//
32 .noscript-error {
32 .noscript-error {
33 top: 0;
33 top: 0;
34 left: 0;
34 left: 0;
35 width: 100%;
35 width: 100%;
36 z-index: 101;
36 z-index: 101;
37 text-align: center;
37 text-align: center;
38 font-size: 120%;
38 font-size: 120%;
39 color: white;
39 color: white;
40 background-color: @alert2;
40 background-color: @alert2;
41 padding: 5px 0 5px 0;
41 padding: 5px 0 5px 0;
42 font-weight: @text-semibold-weight;
42 font-weight: @text-semibold-weight;
43 font-family: @text-semibold;
43 font-family: @text-semibold;
44 }
44 }
45
45
46 html {
46 html {
47 display: table;
47 display: table;
48 height: 100%;
48 height: 100%;
49 width: 100%;
49 width: 100%;
50 }
50 }
51
51
52 body {
52 body {
53 display: table-cell;
53 display: table-cell;
54 width: 100%;
54 width: 100%;
55 }
55 }
56
56
57 //--- LAYOUT ------------------//
57 //--- LAYOUT ------------------//
58
58
59 .hidden{
59 .hidden{
60 display: none !important;
60 display: none !important;
61 }
61 }
62
62
63 .box{
63 .box{
64 float: left;
64 float: left;
65 width: 100%;
65 width: 100%;
66 }
66 }
67
67
68 .browser-header {
68 .browser-header {
69 clear: both;
69 clear: both;
70 }
70 }
71 .main {
71 .main {
72 clear: both;
72 clear: both;
73 padding:0 0 @pagepadding;
73 padding:0 0 @pagepadding;
74 height: auto;
74 height: auto;
75
75
76 &:after { //clearfix
76 &:after { //clearfix
77 content:"";
77 content:"";
78 clear:both;
78 clear:both;
79 width:100%;
79 width:100%;
80 display:block;
80 display:block;
81 }
81 }
82 }
82 }
83
83
84 .action-link{
84 .action-link{
85 margin-left: @padding;
85 margin-left: @padding;
86 padding-left: @padding;
86 padding-left: @padding;
87 border-left: @border-thickness solid @border-default-color;
87 border-left: @border-thickness solid @border-default-color;
88 }
88 }
89
89
90 .cursor-pointer {
90 .cursor-pointer {
91 cursor: pointer;
91 cursor: pointer;
92 }
92 }
93
93
94 input + .action-link, .action-link.first{
94 input + .action-link, .action-link.first{
95 border-left: none;
95 border-left: none;
96 }
96 }
97
97
98 .action-link.last{
98 .action-link.last{
99 margin-right: @padding;
99 margin-right: @padding;
100 padding-right: @padding;
100 padding-right: @padding;
101 }
101 }
102
102
103 .action-link.active,
103 .action-link.active,
104 .action-link.active a{
104 .action-link.active a{
105 color: @grey4;
105 color: @grey4;
106 }
106 }
107
107
108 .action-link.disabled {
108 .action-link.disabled {
109 color: @grey4;
109 color: @grey4;
110 cursor: inherit;
110 cursor: inherit;
111 }
111 }
112
112
113
113
114 .clipboard-action {
114 .clipboard-action {
115 cursor: pointer;
115 cursor: pointer;
116 margin-left: 5px;
116 margin-left: 5px;
117
117
118 &:not(.no-grey) {
118 &:not(.no-grey) {
119
119
120 &:hover {
120 &:hover {
121 color: @grey2;
121 color: @grey2;
122 }
122 }
123 color: @grey4;
123 color: @grey4;
124 }
124 }
125 }
125 }
126
126
127 ul.simple-list{
127 ul.simple-list{
128 list-style: none;
128 list-style: none;
129 margin: 0;
129 margin: 0;
130 padding: 0;
130 padding: 0;
131 }
131 }
132
132
133 .main-content {
133 .main-content {
134 padding-bottom: @pagepadding;
134 padding-bottom: @pagepadding;
135 }
135 }
136
136
137 .wide-mode-wrapper {
137 .wide-mode-wrapper {
138 max-width:4000px !important;
138 max-width:4000px !important;
139 }
139 }
140
140
141 .wrapper {
141 .wrapper {
142 position: relative;
142 position: relative;
143 max-width: @wrapper-maxwidth;
143 max-width: @wrapper-maxwidth;
144 margin: 0 auto;
144 margin: 0 auto;
145 }
145 }
146
146
147 #content {
147 #content {
148 clear: both;
148 clear: both;
149 padding: 0 @contentpadding;
149 padding: 0 @contentpadding;
150 }
150 }
151
151
152 .advanced-settings-fields{
152 .advanced-settings-fields{
153 input{
153 input{
154 margin-left: @textmargin;
154 margin-left: @textmargin;
155 margin-right: @padding/2;
155 margin-right: @padding/2;
156 }
156 }
157 }
157 }
158
158
159 .cs_files_title {
159 .cs_files_title {
160 margin: @pagepadding 0 0;
160 margin: @pagepadding 0 0;
161 }
161 }
162
162
163 input.inline[type="file"] {
163 input.inline[type="file"] {
164 display: inline;
164 display: inline;
165 }
165 }
166
166
167 .error_page {
167 .error_page {
168 margin: 10% auto;
168 margin: 10% auto;
169
169
170 h1 {
170 h1 {
171 color: @grey2;
171 color: @grey2;
172 }
172 }
173
173
174 .alert {
174 .alert {
175 margin: @padding 0;
175 margin: @padding 0;
176 }
176 }
177
177
178 .error-branding {
178 .error-branding {
179 color: @grey4;
179 color: @grey4;
180 font-weight: @text-semibold-weight;
180 font-weight: @text-semibold-weight;
181 font-family: @text-semibold;
181 font-family: @text-semibold;
182 }
182 }
183
183
184 .error_message {
184 .error_message {
185 font-family: @text-regular;
185 font-family: @text-regular;
186 }
186 }
187
187
188 .sidebar {
188 .sidebar {
189 min-height: 275px;
189 min-height: 275px;
190 margin: 0;
190 margin: 0;
191 padding: 0 0 @sidebarpadding @sidebarpadding;
191 padding: 0 0 @sidebarpadding @sidebarpadding;
192 border: none;
192 border: none;
193 }
193 }
194
194
195 .main-content {
195 .main-content {
196 position: relative;
196 position: relative;
197 margin: 0 @sidebarpadding @sidebarpadding;
197 margin: 0 @sidebarpadding @sidebarpadding;
198 padding: 0 0 0 @sidebarpadding;
198 padding: 0 0 0 @sidebarpadding;
199 border-left: @border-thickness solid @grey5;
199 border-left: @border-thickness solid @grey5;
200
200
201 @media (max-width:767px) {
201 @media (max-width:767px) {
202 clear: both;
202 clear: both;
203 width: 100%;
203 width: 100%;
204 margin: 0;
204 margin: 0;
205 border: none;
205 border: none;
206 }
206 }
207 }
207 }
208
208
209 .inner-column {
209 .inner-column {
210 float: left;
210 float: left;
211 width: 29.75%;
211 width: 29.75%;
212 min-height: 150px;
212 min-height: 150px;
213 margin: @sidebarpadding 2% 0 0;
213 margin: @sidebarpadding 2% 0 0;
214 padding: 0 2% 0 0;
214 padding: 0 2% 0 0;
215 border-right: @border-thickness solid @grey5;
215 border-right: @border-thickness solid @grey5;
216
216
217 @media (max-width:767px) {
217 @media (max-width:767px) {
218 clear: both;
218 clear: both;
219 width: 100%;
219 width: 100%;
220 border: none;
220 border: none;
221 }
221 }
222
222
223 ul {
223 ul {
224 padding-left: 1.25em;
224 padding-left: 1.25em;
225 }
225 }
226
226
227 &:last-child {
227 &:last-child {
228 margin: @sidebarpadding 0 0;
228 margin: @sidebarpadding 0 0;
229 border: none;
229 border: none;
230 }
230 }
231
231
232 h4 {
232 h4 {
233 margin: 0 0 @padding;
233 margin: 0 0 @padding;
234 font-weight: @text-semibold-weight;
234 font-weight: @text-semibold-weight;
235 font-family: @text-semibold;
235 font-family: @text-semibold;
236 }
236 }
237 }
237 }
238 }
238 }
239 .error-page-logo {
239 .error-page-logo {
240 width: 130px;
240 width: 130px;
241 height: 160px;
241 height: 160px;
242 }
242 }
243
243
244 // HEADER
244 // HEADER
245 .header {
245 .header {
246
246
247 // TODO: johbo: Fix login pages, so that they work without a min-height
247 // TODO: johbo: Fix login pages, so that they work without a min-height
248 // for the header and then remove the min-height. I chose a smaller value
248 // for the header and then remove the min-height. I chose a smaller value
249 // intentionally here to avoid rendering issues in the main navigation.
249 // intentionally here to avoid rendering issues in the main navigation.
250 min-height: 49px;
250 min-height: 49px;
251 min-width: 1024px;
251 min-width: 1024px;
252
252
253 position: relative;
253 position: relative;
254 vertical-align: bottom;
254 vertical-align: bottom;
255 padding: 0 @header-padding;
255 padding: 0 @header-padding;
256 background-color: @grey1;
256 background-color: @grey1;
257 color: @grey5;
257 color: @grey5;
258
258
259 .title {
259 .title {
260 overflow: visible;
260 overflow: visible;
261 }
261 }
262
262
263 &:before,
263 &:before,
264 &:after {
264 &:after {
265 content: "";
265 content: "";
266 clear: both;
266 clear: both;
267 width: 100%;
267 width: 100%;
268 }
268 }
269
269
270 // TODO: johbo: Avoids breaking "Repositories" chooser
270 // TODO: johbo: Avoids breaking "Repositories" chooser
271 .select2-container .select2-choice .select2-arrow {
271 .select2-container .select2-choice .select2-arrow {
272 display: none;
272 display: none;
273 }
273 }
274 }
274 }
275
275
276 #header-inner {
276 #header-inner {
277 &.title {
277 &.title {
278 margin: 0;
278 margin: 0;
279 }
279 }
280 &:before,
280 &:before,
281 &:after {
281 &:after {
282 content: "";
282 content: "";
283 clear: both;
283 clear: both;
284 }
284 }
285 }
285 }
286
286
287 // Gists
287 // Gists
288 #files_data {
288 #files_data {
289 clear: both; //for firefox
289 clear: both; //for firefox
290 padding-top: 10px;
290 padding-top: 10px;
291 }
291 }
292
292
293 #gistid {
293 #gistid {
294 margin-right: @padding;
294 margin-right: @padding;
295 }
295 }
296
296
297 // Global Settings Editor
297 // Global Settings Editor
298 .textarea.editor {
298 .textarea.editor {
299 float: left;
299 float: left;
300 position: relative;
300 position: relative;
301 max-width: @texteditor-width;
301 max-width: @texteditor-width;
302
302
303 select {
303 select {
304 position: absolute;
304 position: absolute;
305 top:10px;
305 top:10px;
306 right:0;
306 right:0;
307 }
307 }
308
308
309 .CodeMirror {
309 .CodeMirror {
310 margin: 0;
310 margin: 0;
311 }
311 }
312
312
313 .help-block {
313 .help-block {
314 margin: 0 0 @padding;
314 margin: 0 0 @padding;
315 padding:.5em;
315 padding:.5em;
316 background-color: @grey6;
316 background-color: @grey6;
317 &.pre-formatting {
317 &.pre-formatting {
318 white-space: pre;
318 white-space: pre;
319 }
319 }
320 }
320 }
321 }
321 }
322
322
323 ul.auth_plugins {
323 ul.auth_plugins {
324 margin: @padding 0 @padding @legend-width;
324 margin: @padding 0 @padding @legend-width;
325 padding: 0;
325 padding: 0;
326
326
327 li {
327 li {
328 margin-bottom: @padding;
328 margin-bottom: @padding;
329 line-height: 1em;
329 line-height: 1em;
330 list-style-type: none;
330 list-style-type: none;
331
331
332 .auth_buttons .btn {
332 .auth_buttons .btn {
333 margin-right: @padding;
333 margin-right: @padding;
334 }
334 }
335
335
336 }
336 }
337 }
337 }
338
338
339
339
340 // My Account PR list
340 // My Account PR list
341
341
342 #show_closed {
342 #show_closed {
343 margin: 0 1em 0 0;
343 margin: 0 1em 0 0;
344 }
344 }
345
345
346 #pull_request_list_table {
346 #pull_request_list_table {
347 .closed {
347 .closed {
348 background-color: @grey6;
348 background-color: @grey6;
349 }
349 }
350
350
351 .state-creating,
351 .state-creating,
352 .state-updating,
352 .state-updating,
353 .state-merging
353 .state-merging
354 {
354 {
355 background-color: @grey6;
355 background-color: @grey6;
356 }
356 }
357
357
358 .td-status {
358 .td-status {
359 padding-left: .5em;
359 padding-left: .5em;
360 }
360 }
361 .log-container .truncate {
361 .log-container .truncate {
362 height: 2.75em;
362 height: 2.75em;
363 white-space: pre-line;
363 white-space: pre-line;
364 }
364 }
365 table.rctable .user {
365 table.rctable .user {
366 padding-left: 0;
366 padding-left: 0;
367 }
367 }
368 table.rctable {
368 table.rctable {
369 td.td-description,
369 td.td-description,
370 .rc-user {
370 .rc-user {
371 min-width: auto;
371 min-width: auto;
372 }
372 }
373 }
373 }
374 }
374 }
375
375
376 // Pull Requests
376 // Pull Requests
377
377
378 .pullrequests_section_head {
378 .pullrequests_section_head {
379 display: block;
379 display: block;
380 clear: both;
380 clear: both;
381 margin: @padding 0;
381 margin: @padding 0;
382 font-weight: @text-bold-weight;
382 font-weight: @text-bold-weight;
383 font-family: @text-bold;
383 font-family: @text-bold;
384 }
384 }
385
385
386 .pr-commit-flow {
386 .pr-commit-flow {
387 position: relative;
387 position: relative;
388 font-weight: 600;
388 font-weight: 600;
389
389
390 .tag {
390 .tag {
391 display: inline-block;
391 display: inline-block;
392 margin: 0 1em .5em 0;
392 margin: 0 1em .5em 0;
393 }
393 }
394
394
395 .clone-url {
395 .clone-url {
396 display: inline-block;
396 display: inline-block;
397 margin: 0 0 .5em 0;
397 margin: 0 0 .5em 0;
398 padding: 0;
398 padding: 0;
399 line-height: 1.2em;
399 line-height: 1.2em;
400 }
400 }
401 }
401 }
402
402
403 .pr-mergeinfo {
403 .pr-mergeinfo {
404 min-width: 95% !important;
404 min-width: 95% !important;
405 padding: 0 !important;
405 padding: 0 !important;
406 border: 0;
406 border: 0;
407 }
407 }
408 .pr-mergeinfo-copy {
408 .pr-mergeinfo-copy {
409 padding: 0 0;
409 padding: 0 0;
410 }
410 }
411
411
412 .pr-pullinfo {
412 .pr-pullinfo {
413 min-width: 95% !important;
413 min-width: 95% !important;
414 padding: 0 !important;
414 padding: 0 !important;
415 border: 0;
415 border: 0;
416 }
416 }
417 .pr-pullinfo-copy {
417 .pr-pullinfo-copy {
418 padding: 0 0;
418 padding: 0 0;
419 }
419 }
420
420
421 .pr-title-input {
421 .pr-title-input {
422 width: 80%;
422 width: 100%;
423 font-size: 1em;
423 font-size: 18px;
424 margin: 0 0 4px 0;
424 margin: 0 0 4px 0;
425 padding: 0;
425 padding: 0;
426 line-height: 1.7em;
426 line-height: 1.7em;
427 color: @text-color;
427 color: @text-color;
428 letter-spacing: .02em;
428 letter-spacing: .02em;
429 font-weight: @text-bold-weight;
429 font-weight: @text-bold-weight;
430 font-family: @text-bold;
430 font-family: @text-bold;
431
431
432 &:hover {
432 &:hover {
433 box-shadow: none;
433 box-shadow: none;
434 }
434 }
435 }
435 }
436
436
437 #pr-title {
437 #pr-title {
438 input {
438 input {
439 border: 1px transparent;
439 border: 1px transparent;
440 color: black;
440 color: black;
441 opacity: 1;
441 opacity: 1;
442 background: #fff;
442 background: #fff;
443 font-size: 18px;
443 }
444 }
444 }
445 }
445
446
446 .pr-title-closed-tag {
447 .pr-title-closed-tag {
447 font-size: 16px;
448 font-size: 16px;
448 }
449 }
449
450
450 #pr-desc {
451 #pr-desc {
451 padding: 10px 0;
452 padding: 10px 0;
452
453
453 .markdown-block {
454 .markdown-block {
454 padding: 0;
455 padding: 0;
455 margin-bottom: -30px;
456 margin-bottom: -30px;
456 }
457 }
457 }
458 }
458
459
459 #pullrequest_title {
460 #pullrequest_title {
460 width: 100%;
461 width: 100%;
461 box-sizing: border-box;
462 box-sizing: border-box;
462 }
463 }
463
464
464 #pr_open_message {
465 #pr_open_message {
465 border: @border-thickness solid #fff;
466 border: @border-thickness solid #fff;
466 border-radius: @border-radius;
467 border-radius: @border-radius;
467 padding: @padding-large-vertical @padding-large-vertical @padding-large-vertical 0;
468 padding: @padding-large-vertical @padding-large-vertical @padding-large-vertical 0;
468 text-align: left;
469 text-align: left;
469 overflow: hidden;
470 overflow: hidden;
470 }
471 }
471
472
472 .pr-details-title {
473 .pr-details-title {
473 height: 16px
474 height: 16px
474 }
475 }
475
476
476 .pr-details-title-author-pref {
477 .pr-details-title-author-pref {
477 padding-right: 10px
478 padding-right: 10px
478 }
479 }
479
480
480 .label-pr-detail {
481 .label-pr-detail {
481 display: table-cell;
482 display: table-cell;
482 width: 120px;
483 width: 120px;
483 padding-top: 7.5px;
484 padding-top: 7.5px;
484 padding-bottom: 7.5px;
485 padding-bottom: 7.5px;
485 padding-right: 7.5px;
486 padding-right: 7.5px;
486 }
487 }
487
488
488 .source-details ul {
489 .source-details ul {
489 padding: 10px 16px;
490 padding: 10px 16px;
490 }
491 }
491
492
492 .source-details-action {
493 .source-details-action {
493 color: @grey4;
494 color: @grey4;
494 font-size: 11px
495 font-size: 11px
495 }
496 }
496
497
497 .pr-submit-button {
498 .pr-submit-button {
498 float: right;
499 float: right;
499 margin: 0 0 0 5px;
500 margin: 0 0 0 5px;
500 }
501 }
501
502
502 .pr-spacing-container {
503 .pr-spacing-container {
503 padding: 20px;
504 padding: 20px;
504 clear: both
505 clear: both
505 }
506 }
506
507
507 #pr-description-input {
508 #pr-description-input {
508 margin-bottom: 0;
509 margin-bottom: 0;
509 }
510 }
510
511
511 .pr-description-label {
512 .pr-description-label {
512 vertical-align: top;
513 vertical-align: top;
513 }
514 }
514
515
515 #open_edit_pullrequest {
516 #open_edit_pullrequest {
516 padding: 0;
517 padding: 0;
517 }
518 }
518
519
519 #close_edit_pullrequest {
520 #close_edit_pullrequest {
520
521
521 }
522 }
522
523
523 #delete_pullrequest {
524 #delete_pullrequest {
524 clear: inherit;
525 clear: inherit;
525
526
526 form {
527 form {
527 display: inline;
528 display: inline;
528 }
529 }
529
530
530 }
531 }
531
532
532 .perms_section_head {
533 .perms_section_head {
533 min-width: 625px;
534 min-width: 625px;
534
535
535 h2 {
536 h2 {
536 margin-bottom: 0;
537 margin-bottom: 0;
537 }
538 }
538
539
539 .label-checkbox {
540 .label-checkbox {
540 float: left;
541 float: left;
541 }
542 }
542
543
543 &.field {
544 &.field {
544 margin: @space 0 @padding;
545 margin: @space 0 @padding;
545 }
546 }
546
547
547 &:first-child.field {
548 &:first-child.field {
548 margin-top: 0;
549 margin-top: 0;
549
550
550 .label {
551 .label {
551 margin-top: 0;
552 margin-top: 0;
552 padding-top: 0;
553 padding-top: 0;
553 }
554 }
554
555
555 .radios {
556 .radios {
556 padding-top: 0;
557 padding-top: 0;
557 }
558 }
558 }
559 }
559
560
560 .radios {
561 .radios {
561 position: relative;
562 position: relative;
562 width: 505px;
563 width: 505px;
563 }
564 }
564 }
565 }
565
566
566 //--- MODULES ------------------//
567 //--- MODULES ------------------//
567
568
568
569
569 // Server Announcement
570 // Server Announcement
570 #server-announcement {
571 #server-announcement {
571 width: 95%;
572 width: 95%;
572 margin: @padding auto;
573 margin: @padding auto;
573 padding: @padding;
574 padding: @padding;
574 border-width: 2px;
575 border-width: 2px;
575 border-style: solid;
576 border-style: solid;
576 .border-radius(2px);
577 .border-radius(2px);
577 font-weight: @text-bold-weight;
578 font-weight: @text-bold-weight;
578 font-family: @text-bold;
579 font-family: @text-bold;
579
580
580 &.info { border-color: @alert4; background-color: @alert4-inner; }
581 &.info { border-color: @alert4; background-color: @alert4-inner; }
581 &.warning { border-color: @alert3; background-color: @alert3-inner; }
582 &.warning { border-color: @alert3; background-color: @alert3-inner; }
582 &.error { border-color: @alert2; background-color: @alert2-inner; }
583 &.error { border-color: @alert2; background-color: @alert2-inner; }
583 &.success { border-color: @alert1; background-color: @alert1-inner; }
584 &.success { border-color: @alert1; background-color: @alert1-inner; }
584 &.neutral { border-color: @grey3; background-color: @grey6; }
585 &.neutral { border-color: @grey3; background-color: @grey6; }
585 }
586 }
586
587
587 // Fixed Sidebar Column
588 // Fixed Sidebar Column
588 .sidebar-col-wrapper {
589 .sidebar-col-wrapper {
589 padding-left: @sidebar-all-width;
590 padding-left: @sidebar-all-width;
590
591
591 .sidebar {
592 .sidebar {
592 width: @sidebar-width;
593 width: @sidebar-width;
593 margin-left: -@sidebar-all-width;
594 margin-left: -@sidebar-all-width;
594 }
595 }
595 }
596 }
596
597
597 .sidebar-col-wrapper.scw-small {
598 .sidebar-col-wrapper.scw-small {
598 padding-left: @sidebar-small-all-width;
599 padding-left: @sidebar-small-all-width;
599
600
600 .sidebar {
601 .sidebar {
601 width: @sidebar-small-width;
602 width: @sidebar-small-width;
602 margin-left: -@sidebar-small-all-width;
603 margin-left: -@sidebar-small-all-width;
603 }
604 }
604 }
605 }
605
606
606
607
607 // FOOTER
608 // FOOTER
608 #footer {
609 #footer {
609 padding: 0;
610 padding: 0;
610 text-align: center;
611 text-align: center;
611 vertical-align: middle;
612 vertical-align: middle;
612 color: @grey2;
613 color: @grey2;
613 font-size: 11px;
614 font-size: 11px;
614
615
615 p {
616 p {
616 margin: 0;
617 margin: 0;
617 padding: 1em;
618 padding: 1em;
618 line-height: 1em;
619 line-height: 1em;
619 }
620 }
620
621
621 .server-instance { //server instance
622 .server-instance { //server instance
622 display: none;
623 display: none;
623 }
624 }
624
625
625 .title {
626 .title {
626 float: none;
627 float: none;
627 margin: 0 auto;
628 margin: 0 auto;
628 }
629 }
629 }
630 }
630
631
631 button.close {
632 button.close {
632 padding: 0;
633 padding: 0;
633 cursor: pointer;
634 cursor: pointer;
634 background: transparent;
635 background: transparent;
635 border: 0;
636 border: 0;
636 .box-shadow(none);
637 .box-shadow(none);
637 -webkit-appearance: none;
638 -webkit-appearance: none;
638 }
639 }
639
640
640 .close {
641 .close {
641 float: right;
642 float: right;
642 font-size: 21px;
643 font-size: 21px;
643 font-family: @text-bootstrap;
644 font-family: @text-bootstrap;
644 line-height: 1em;
645 line-height: 1em;
645 font-weight: bold;
646 font-weight: bold;
646 color: @grey2;
647 color: @grey2;
647
648
648 &:hover,
649 &:hover,
649 &:focus {
650 &:focus {
650 color: @grey1;
651 color: @grey1;
651 text-decoration: none;
652 text-decoration: none;
652 cursor: pointer;
653 cursor: pointer;
653 }
654 }
654 }
655 }
655
656
656 // GRID
657 // GRID
657 .sorting,
658 .sorting,
658 .sorting_desc,
659 .sorting_desc,
659 .sorting_asc {
660 .sorting_asc {
660 cursor: pointer;
661 cursor: pointer;
661 }
662 }
662 .sorting_desc:after {
663 .sorting_desc:after {
663 content: "\00A0\25B2";
664 content: "\00A0\25B2";
664 font-size: .75em;
665 font-size: .75em;
665 }
666 }
666 .sorting_asc:after {
667 .sorting_asc:after {
667 content: "\00A0\25BC";
668 content: "\00A0\25BC";
668 font-size: .68em;
669 font-size: .68em;
669 }
670 }
670
671
671
672
672 .user_auth_tokens {
673 .user_auth_tokens {
673
674
674 &.truncate {
675 &.truncate {
675 white-space: nowrap;
676 white-space: nowrap;
676 overflow: hidden;
677 overflow: hidden;
677 text-overflow: ellipsis;
678 text-overflow: ellipsis;
678 }
679 }
679
680
680 .fields .field .input {
681 .fields .field .input {
681 margin: 0;
682 margin: 0;
682 }
683 }
683
684
684 input#description {
685 input#description {
685 width: 100px;
686 width: 100px;
686 margin: 0;
687 margin: 0;
687 }
688 }
688
689
689 .drop-menu {
690 .drop-menu {
690 // TODO: johbo: Remove this, should work out of the box when
691 // TODO: johbo: Remove this, should work out of the box when
691 // having multiple inputs inline
692 // having multiple inputs inline
692 margin: 0 0 0 5px;
693 margin: 0 0 0 5px;
693 }
694 }
694 }
695 }
695 #user_list_table {
696 #user_list_table {
696 .closed {
697 .closed {
697 background-color: @grey6;
698 background-color: @grey6;
698 }
699 }
699 }
700 }
700
701
701
702
702 input, textarea {
703 input, textarea {
703 &.disabled {
704 &.disabled {
704 opacity: .5;
705 opacity: .5;
705 }
706 }
706
707
707 &:hover {
708 &:hover {
708 border-color: @grey3;
709 border-color: @grey3;
709 box-shadow: @button-shadow;
710 box-shadow: @button-shadow;
710 }
711 }
711
712
712 &:focus {
713 &:focus {
713 border-color: @rcblue;
714 border-color: @rcblue;
714 box-shadow: @button-shadow;
715 box-shadow: @button-shadow;
715 }
716 }
716 }
717 }
717
718
718 // remove extra padding in firefox
719 // remove extra padding in firefox
719 input::-moz-focus-inner { border:0; padding:0 }
720 input::-moz-focus-inner { border:0; padding:0 }
720
721
721 .adjacent input {
722 .adjacent input {
722 margin-bottom: @padding;
723 margin-bottom: @padding;
723 }
724 }
724
725
725 .permissions_boxes {
726 .permissions_boxes {
726 display: block;
727 display: block;
727 }
728 }
728
729
729 //FORMS
730 //FORMS
730
731
731 .medium-inline,
732 .medium-inline,
732 input#description.medium-inline {
733 input#description.medium-inline {
733 display: inline;
734 display: inline;
734 width: @medium-inline-input-width;
735 width: @medium-inline-input-width;
735 min-width: 100px;
736 min-width: 100px;
736 }
737 }
737
738
738 select {
739 select {
739 //reset
740 //reset
740 -webkit-appearance: none;
741 -webkit-appearance: none;
741 -moz-appearance: none;
742 -moz-appearance: none;
742
743
743 display: inline-block;
744 display: inline-block;
744 height: 28px;
745 height: 28px;
745 width: auto;
746 width: auto;
746 margin: 0 @padding @padding 0;
747 margin: 0 @padding @padding 0;
747 padding: 0 18px 0 8px;
748 padding: 0 18px 0 8px;
748 line-height:1em;
749 line-height:1em;
749 font-size: @basefontsize;
750 font-size: @basefontsize;
750 border: @border-thickness solid @grey5;
751 border: @border-thickness solid @grey5;
751 border-radius: @border-radius;
752 border-radius: @border-radius;
752 background:white url("../images/dt-arrow-dn.png") no-repeat 100% 50%;
753 background:white url("../images/dt-arrow-dn.png") no-repeat 100% 50%;
753 color: @grey4;
754 color: @grey4;
754 box-shadow: @button-shadow;
755 box-shadow: @button-shadow;
755
756
756 &:after {
757 &:after {
757 content: "\00A0\25BE";
758 content: "\00A0\25BE";
758 }
759 }
759
760
760 &:focus, &:hover {
761 &:focus, &:hover {
761 outline: none;
762 outline: none;
762 border-color: @grey4;
763 border-color: @grey4;
763 color: @rcdarkblue;
764 color: @rcdarkblue;
764 }
765 }
765 }
766 }
766
767
767 option {
768 option {
768 &:focus {
769 &:focus {
769 outline: none;
770 outline: none;
770 }
771 }
771 }
772 }
772
773
773 input,
774 input,
774 textarea {
775 textarea {
775 padding: @input-padding;
776 padding: @input-padding;
776 border: @input-border-thickness solid @border-highlight-color;
777 border: @input-border-thickness solid @border-highlight-color;
777 .border-radius (@border-radius);
778 .border-radius (@border-radius);
778 font-family: @text-light;
779 font-family: @text-light;
779 font-size: @basefontsize;
780 font-size: @basefontsize;
780
781
781 &.input-sm {
782 &.input-sm {
782 padding: 5px;
783 padding: 5px;
783 }
784 }
784
785
785 &#description {
786 &#description {
786 min-width: @input-description-minwidth;
787 min-width: @input-description-minwidth;
787 min-height: 1em;
788 min-height: 1em;
788 padding: 10px;
789 padding: 10px;
789 }
790 }
790 }
791 }
791
792
792 .field-sm {
793 .field-sm {
793 input,
794 input,
794 textarea {
795 textarea {
795 padding: 5px;
796 padding: 5px;
796 }
797 }
797 }
798 }
798
799
799 textarea {
800 textarea {
800 display: block;
801 display: block;
801 clear: both;
802 clear: both;
802 width: 100%;
803 width: 100%;
803 min-height: 100px;
804 min-height: 100px;
804 margin-bottom: @padding;
805 margin-bottom: @padding;
805 .box-sizing(border-box);
806 .box-sizing(border-box);
806 overflow: auto;
807 overflow: auto;
807 }
808 }
808
809
809 label {
810 label {
810 font-family: @text-light;
811 font-family: @text-light;
811 }
812 }
812
813
813 // GRAVATARS
814 // GRAVATARS
814 // centers gravatar on username to the right
815 // centers gravatar on username to the right
815
816
816 .gravatar {
817 .gravatar {
817 display: inline;
818 display: inline;
818 min-width: 16px;
819 min-width: 16px;
819 min-height: 16px;
820 min-height: 16px;
820 margin: -5px 0;
821 margin: -5px 0;
821 padding: 0;
822 padding: 0;
822 line-height: 1em;
823 line-height: 1em;
823 box-sizing: content-box;
824 box-sizing: content-box;
824 border-radius: 50%;
825 border-radius: 50%;
825
826
826 &.gravatar-large {
827 &.gravatar-large {
827 margin: -0.5em .25em -0.5em 0;
828 margin: -0.5em .25em -0.5em 0;
828 }
829 }
829
830
830 & + .user {
831 & + .user {
831 display: inline;
832 display: inline;
832 margin: 0;
833 margin: 0;
833 padding: 0 0 0 .17em;
834 padding: 0 0 0 .17em;
834 line-height: 1em;
835 line-height: 1em;
835 }
836 }
836
837
837 & + .no-margin {
838 & + .no-margin {
838 margin: 0
839 margin: 0
839 }
840 }
840
841
841 }
842 }
842
843
843 .user-inline-data {
844 .user-inline-data {
844 display: inline-block;
845 display: inline-block;
845 float: left;
846 float: left;
846 padding-left: .5em;
847 padding-left: .5em;
847 line-height: 1.3em;
848 line-height: 1.3em;
848 }
849 }
849
850
850 .rc-user { // gravatar + user wrapper
851 .rc-user { // gravatar + user wrapper
851 float: left;
852 float: left;
852 position: relative;
853 position: relative;
853 min-width: 100px;
854 min-width: 100px;
854 max-width: 200px;
855 max-width: 200px;
855 min-height: (@gravatar-size + @border-thickness * 2); // account for border
856 min-height: (@gravatar-size + @border-thickness * 2); // account for border
856 display: block;
857 display: block;
857 padding: 0 0 0 (@gravatar-size + @basefontsize/4);
858 padding: 0 0 0 (@gravatar-size + @basefontsize/4);
858
859
859
860
860 .gravatar {
861 .gravatar {
861 display: block;
862 display: block;
862 position: absolute;
863 position: absolute;
863 top: 0;
864 top: 0;
864 left: 0;
865 left: 0;
865 min-width: @gravatar-size;
866 min-width: @gravatar-size;
866 min-height: @gravatar-size;
867 min-height: @gravatar-size;
867 margin: 0;
868 margin: 0;
868 }
869 }
869
870
870 .user {
871 .user {
871 display: block;
872 display: block;
872 max-width: 175px;
873 max-width: 175px;
873 padding-top: 2px;
874 padding-top: 2px;
874 overflow: hidden;
875 overflow: hidden;
875 text-overflow: ellipsis;
876 text-overflow: ellipsis;
876 }
877 }
877 }
878 }
878
879
879 .gist-gravatar,
880 .gist-gravatar,
880 .journal_container {
881 .journal_container {
881 .gravatar-large {
882 .gravatar-large {
882 margin: 0 .5em -10px 0;
883 margin: 0 .5em -10px 0;
883 }
884 }
884 }
885 }
885
886
886 .gist-type-fields {
887 .gist-type-fields {
887 line-height: 30px;
888 line-height: 30px;
888 height: 30px;
889 height: 30px;
889
890
890 .gist-type-fields-wrapper {
891 .gist-type-fields-wrapper {
891 vertical-align: middle;
892 vertical-align: middle;
892 display: inline-block;
893 display: inline-block;
893 line-height: 25px;
894 line-height: 25px;
894 }
895 }
895 }
896 }
896
897
897 // ADMIN SETTINGS
898 // ADMIN SETTINGS
898
899
899 // Tag Patterns
900 // Tag Patterns
900 .tag_patterns {
901 .tag_patterns {
901 .tag_input {
902 .tag_input {
902 margin-bottom: @padding;
903 margin-bottom: @padding;
903 }
904 }
904 }
905 }
905
906
906 .locked_input {
907 .locked_input {
907 position: relative;
908 position: relative;
908
909
909 input {
910 input {
910 display: inline;
911 display: inline;
911 margin: 3px 5px 0px 0px;
912 margin: 3px 5px 0px 0px;
912 }
913 }
913
914
914 br {
915 br {
915 display: none;
916 display: none;
916 }
917 }
917
918
918 .error-message {
919 .error-message {
919 float: left;
920 float: left;
920 width: 100%;
921 width: 100%;
921 }
922 }
922
923
923 .lock_input_button {
924 .lock_input_button {
924 display: inline;
925 display: inline;
925 }
926 }
926
927
927 .help-block {
928 .help-block {
928 clear: both;
929 clear: both;
929 }
930 }
930 }
931 }
931
932
932 // Notifications
933 // Notifications
933
934
934 .notifications_buttons {
935 .notifications_buttons {
935 margin: 0 0 @space 0;
936 margin: 0 0 @space 0;
936 padding: 0;
937 padding: 0;
937
938
938 .btn {
939 .btn {
939 display: inline-block;
940 display: inline-block;
940 }
941 }
941 }
942 }
942
943
943 .notification-list {
944 .notification-list {
944
945
945 div {
946 div {
946 vertical-align: middle;
947 vertical-align: middle;
947 }
948 }
948
949
949 .container {
950 .container {
950 display: block;
951 display: block;
951 margin: 0 0 @padding 0;
952 margin: 0 0 @padding 0;
952 }
953 }
953
954
954 .delete-notifications {
955 .delete-notifications {
955 margin-left: @padding;
956 margin-left: @padding;
956 text-align: right;
957 text-align: right;
957 cursor: pointer;
958 cursor: pointer;
958 }
959 }
959
960
960 .read-notifications {
961 .read-notifications {
961 margin-left: @padding/2;
962 margin-left: @padding/2;
962 text-align: right;
963 text-align: right;
963 width: 35px;
964 width: 35px;
964 cursor: pointer;
965 cursor: pointer;
965 }
966 }
966
967
967 .icon-minus-sign {
968 .icon-minus-sign {
968 color: @alert2;
969 color: @alert2;
969 }
970 }
970
971
971 .icon-ok-sign {
972 .icon-ok-sign {
972 color: @alert1;
973 color: @alert1;
973 }
974 }
974 }
975 }
975
976
976 .user_settings {
977 .user_settings {
977 float: left;
978 float: left;
978 clear: both;
979 clear: both;
979 display: block;
980 display: block;
980 width: 100%;
981 width: 100%;
981
982
982 .gravatar_box {
983 .gravatar_box {
983 margin-bottom: @padding;
984 margin-bottom: @padding;
984
985
985 &:after {
986 &:after {
986 content: " ";
987 content: " ";
987 clear: both;
988 clear: both;
988 width: 100%;
989 width: 100%;
989 }
990 }
990 }
991 }
991
992
992 .fields .field {
993 .fields .field {
993 clear: both;
994 clear: both;
994 }
995 }
995 }
996 }
996
997
997 .advanced_settings {
998 .advanced_settings {
998 margin-bottom: @space;
999 margin-bottom: @space;
999
1000
1000 .help-block {
1001 .help-block {
1001 margin-left: 0;
1002 margin-left: 0;
1002 }
1003 }
1003
1004
1004 button + .help-block {
1005 button + .help-block {
1005 margin-top: @padding;
1006 margin-top: @padding;
1006 }
1007 }
1007 }
1008 }
1008
1009
1009 // admin settings radio buttons and labels
1010 // admin settings radio buttons and labels
1010 .label-2 {
1011 .label-2 {
1011 float: left;
1012 float: left;
1012 width: @label2-width;
1013 width: @label2-width;
1013
1014
1014 label {
1015 label {
1015 color: @grey1;
1016 color: @grey1;
1016 }
1017 }
1017 }
1018 }
1018 .checkboxes {
1019 .checkboxes {
1019 float: left;
1020 float: left;
1020 width: @checkboxes-width;
1021 width: @checkboxes-width;
1021 margin-bottom: @padding;
1022 margin-bottom: @padding;
1022
1023
1023 .checkbox {
1024 .checkbox {
1024 width: 100%;
1025 width: 100%;
1025
1026
1026 label {
1027 label {
1027 margin: 0;
1028 margin: 0;
1028 padding: 0;
1029 padding: 0;
1029 }
1030 }
1030 }
1031 }
1031
1032
1032 .checkbox + .checkbox {
1033 .checkbox + .checkbox {
1033 display: inline-block;
1034 display: inline-block;
1034 }
1035 }
1035
1036
1036 label {
1037 label {
1037 margin-right: 1em;
1038 margin-right: 1em;
1038 }
1039 }
1039 }
1040 }
1040
1041
1041 // CHANGELOG
1042 // CHANGELOG
1042 .container_header {
1043 .container_header {
1043 float: left;
1044 float: left;
1044 display: block;
1045 display: block;
1045 width: 100%;
1046 width: 100%;
1046 margin: @padding 0 @padding;
1047 margin: @padding 0 @padding;
1047
1048
1048 #filter_changelog {
1049 #filter_changelog {
1049 float: left;
1050 float: left;
1050 margin-right: @padding;
1051 margin-right: @padding;
1051 }
1052 }
1052
1053
1053 .breadcrumbs_light {
1054 .breadcrumbs_light {
1054 display: inline-block;
1055 display: inline-block;
1055 }
1056 }
1056 }
1057 }
1057
1058
1058 .info_box {
1059 .info_box {
1059 float: right;
1060 float: right;
1060 }
1061 }
1061
1062
1062
1063
1063
1064
1064 #graph_content{
1065 #graph_content{
1065
1066
1066 // adjust for table headers so that graph renders properly
1067 // adjust for table headers so that graph renders properly
1067 // #graph_nodes padding - table cell padding
1068 // #graph_nodes padding - table cell padding
1068 padding-top: (@space - (@basefontsize * 2.4));
1069 padding-top: (@space - (@basefontsize * 2.4));
1069
1070
1070 &.graph_full_width {
1071 &.graph_full_width {
1071 width: 100%;
1072 width: 100%;
1072 max-width: 100%;
1073 max-width: 100%;
1073 }
1074 }
1074 }
1075 }
1075
1076
1076 #graph {
1077 #graph {
1077
1078
1078 .pagination-left {
1079 .pagination-left {
1079 float: left;
1080 float: left;
1080 clear: both;
1081 clear: both;
1081 }
1082 }
1082
1083
1083 .log-container {
1084 .log-container {
1084 max-width: 345px;
1085 max-width: 345px;
1085
1086
1086 .message{
1087 .message{
1087 max-width: 340px;
1088 max-width: 340px;
1088 }
1089 }
1089 }
1090 }
1090
1091
1091 .graph-col-wrapper {
1092 .graph-col-wrapper {
1092
1093
1093 #graph_nodes {
1094 #graph_nodes {
1094 width: 100px;
1095 width: 100px;
1095 position: absolute;
1096 position: absolute;
1096 left: 70px;
1097 left: 70px;
1097 z-index: -1;
1098 z-index: -1;
1098 }
1099 }
1099 }
1100 }
1100
1101
1101 .load-more-commits {
1102 .load-more-commits {
1102 text-align: center;
1103 text-align: center;
1103 }
1104 }
1104 .load-more-commits:hover {
1105 .load-more-commits:hover {
1105 background-color: @grey7;
1106 background-color: @grey7;
1106 }
1107 }
1107 .load-more-commits {
1108 .load-more-commits {
1108 a {
1109 a {
1109 display: block;
1110 display: block;
1110 }
1111 }
1111 }
1112 }
1112 }
1113 }
1113
1114
1114 .obsolete-toggle {
1115 .obsolete-toggle {
1115 line-height: 30px;
1116 line-height: 30px;
1116 margin-left: -15px;
1117 margin-left: -15px;
1117 }
1118 }
1118
1119
1119 #rev_range_container, #rev_range_clear, #rev_range_more {
1120 #rev_range_container, #rev_range_clear, #rev_range_more {
1120 margin-top: -5px;
1121 margin-top: -5px;
1121 margin-bottom: -5px;
1122 margin-bottom: -5px;
1122 }
1123 }
1123
1124
1124 #filter_changelog {
1125 #filter_changelog {
1125 float: left;
1126 float: left;
1126 }
1127 }
1127
1128
1128
1129
1129 //--- THEME ------------------//
1130 //--- THEME ------------------//
1130
1131
1131 #logo {
1132 #logo {
1132 float: left;
1133 float: left;
1133 margin: 9px 0 0 0;
1134 margin: 9px 0 0 0;
1134
1135
1135 .header {
1136 .header {
1136 background-color: transparent;
1137 background-color: transparent;
1137 }
1138 }
1138
1139
1139 a {
1140 a {
1140 display: inline-block;
1141 display: inline-block;
1141 }
1142 }
1142
1143
1143 img {
1144 img {
1144 height:30px;
1145 height:30px;
1145 }
1146 }
1146 }
1147 }
1147
1148
1148 .logo-wrapper {
1149 .logo-wrapper {
1149 float:left;
1150 float:left;
1150 }
1151 }
1151
1152
1152 .branding {
1153 .branding {
1153 float: left;
1154 float: left;
1154 padding: 9px 2px;
1155 padding: 9px 2px;
1155 line-height: 1em;
1156 line-height: 1em;
1156 font-size: @navigation-fontsize;
1157 font-size: @navigation-fontsize;
1157
1158
1158 a {
1159 a {
1159 color: @grey5
1160 color: @grey5
1160 }
1161 }
1161 @media screen and (max-width: 1200px) {
1162 @media screen and (max-width: 1200px) {
1162 display: none;
1163 display: none;
1163 }
1164 }
1164 }
1165 }
1165
1166
1166 img {
1167 img {
1167 border: none;
1168 border: none;
1168 outline: none;
1169 outline: none;
1169 }
1170 }
1170 user-profile-header
1171 user-profile-header
1171 label {
1172 label {
1172
1173
1173 input[type="checkbox"] {
1174 input[type="checkbox"] {
1174 margin-right: 1em;
1175 margin-right: 1em;
1175 }
1176 }
1176 input[type="radio"] {
1177 input[type="radio"] {
1177 margin-right: 1em;
1178 margin-right: 1em;
1178 }
1179 }
1179 }
1180 }
1180
1181
1181 .review-status {
1182 .review-status {
1182 &.under_review {
1183 &.under_review {
1183 color: @alert3;
1184 color: @alert3;
1184 }
1185 }
1185 &.approved {
1186 &.approved {
1186 color: @alert1;
1187 color: @alert1;
1187 }
1188 }
1188 &.rejected,
1189 &.rejected,
1189 &.forced_closed{
1190 &.forced_closed{
1190 color: @alert2;
1191 color: @alert2;
1191 }
1192 }
1192 &.not_reviewed {
1193 &.not_reviewed {
1193 color: @grey5;
1194 color: @grey5;
1194 }
1195 }
1195 }
1196 }
1196
1197
1197 .review-status-under_review {
1198 .review-status-under_review {
1198 color: @alert3;
1199 color: @alert3;
1199 }
1200 }
1200 .status-tag-under_review {
1201 .status-tag-under_review {
1201 border-color: @alert3;
1202 border-color: @alert3;
1202 }
1203 }
1203
1204
1204 .review-status-approved {
1205 .review-status-approved {
1205 color: @alert1;
1206 color: @alert1;
1206 }
1207 }
1207 .status-tag-approved {
1208 .status-tag-approved {
1208 border-color: @alert1;
1209 border-color: @alert1;
1209 }
1210 }
1210
1211
1211 .review-status-rejected,
1212 .review-status-rejected,
1212 .review-status-forced_closed {
1213 .review-status-forced_closed {
1213 color: @alert2;
1214 color: @alert2;
1214 }
1215 }
1215 .status-tag-rejected,
1216 .status-tag-rejected,
1216 .status-tag-forced_closed {
1217 .status-tag-forced_closed {
1217 border-color: @alert2;
1218 border-color: @alert2;
1218 }
1219 }
1219
1220
1220 .review-status-not_reviewed {
1221 .review-status-not_reviewed {
1221 color: @grey5;
1222 color: @grey5;
1222 }
1223 }
1223 .status-tag-not_reviewed {
1224 .status-tag-not_reviewed {
1224 border-color: @grey5;
1225 border-color: @grey5;
1225 }
1226 }
1226
1227
1227 .test_pattern_preview {
1228 .test_pattern_preview {
1228 margin: @space 0;
1229 margin: @space 0;
1229
1230
1230 p {
1231 p {
1231 margin-bottom: 0;
1232 margin-bottom: 0;
1232 border-bottom: @border-thickness solid @border-default-color;
1233 border-bottom: @border-thickness solid @border-default-color;
1233 color: @grey3;
1234 color: @grey3;
1234 }
1235 }
1235
1236
1236 .btn {
1237 .btn {
1237 margin-bottom: @padding;
1238 margin-bottom: @padding;
1238 }
1239 }
1239 }
1240 }
1240 #test_pattern_result {
1241 #test_pattern_result {
1241 display: none;
1242 display: none;
1242 &:extend(pre);
1243 &:extend(pre);
1243 padding: .9em;
1244 padding: .9em;
1244 color: @grey3;
1245 color: @grey3;
1245 background-color: @grey7;
1246 background-color: @grey7;
1246 border-right: @border-thickness solid @border-default-color;
1247 border-right: @border-thickness solid @border-default-color;
1247 border-bottom: @border-thickness solid @border-default-color;
1248 border-bottom: @border-thickness solid @border-default-color;
1248 border-left: @border-thickness solid @border-default-color;
1249 border-left: @border-thickness solid @border-default-color;
1249 }
1250 }
1250
1251
1251 #repo_vcs_settings {
1252 #repo_vcs_settings {
1252 #inherit_overlay_vcs_default {
1253 #inherit_overlay_vcs_default {
1253 display: none;
1254 display: none;
1254 }
1255 }
1255 #inherit_overlay_vcs_custom {
1256 #inherit_overlay_vcs_custom {
1256 display: custom;
1257 display: custom;
1257 }
1258 }
1258 &.inherited {
1259 &.inherited {
1259 #inherit_overlay_vcs_default {
1260 #inherit_overlay_vcs_default {
1260 display: block;
1261 display: block;
1261 }
1262 }
1262 #inherit_overlay_vcs_custom {
1263 #inherit_overlay_vcs_custom {
1263 display: none;
1264 display: none;
1264 }
1265 }
1265 }
1266 }
1266 }
1267 }
1267
1268
1268 .issue-tracker-link {
1269 .issue-tracker-link {
1269 color: @rcblue;
1270 color: @rcblue;
1270 }
1271 }
1271
1272
1272 // Issue Tracker Table Show/Hide
1273 // Issue Tracker Table Show/Hide
1273 #repo_issue_tracker {
1274 #repo_issue_tracker {
1274 #inherit_overlay {
1275 #inherit_overlay {
1275 display: none;
1276 display: none;
1276 }
1277 }
1277 #custom_overlay {
1278 #custom_overlay {
1278 display: custom;
1279 display: custom;
1279 }
1280 }
1280 &.inherited {
1281 &.inherited {
1281 #inherit_overlay {
1282 #inherit_overlay {
1282 display: block;
1283 display: block;
1283 }
1284 }
1284 #custom_overlay {
1285 #custom_overlay {
1285 display: none;
1286 display: none;
1286 }
1287 }
1287 }
1288 }
1288 }
1289 }
1289 table.issuetracker {
1290 table.issuetracker {
1290 &.readonly {
1291 &.readonly {
1291 tr, td {
1292 tr, td {
1292 color: @grey3;
1293 color: @grey3;
1293 }
1294 }
1294 }
1295 }
1295 .edit {
1296 .edit {
1296 display: none;
1297 display: none;
1297 }
1298 }
1298 .editopen {
1299 .editopen {
1299 .edit {
1300 .edit {
1300 display: inline;
1301 display: inline;
1301 }
1302 }
1302 .entry {
1303 .entry {
1303 display: none;
1304 display: none;
1304 }
1305 }
1305 }
1306 }
1306 tr td.td-action {
1307 tr td.td-action {
1307 min-width: 117px;
1308 min-width: 117px;
1308 }
1309 }
1309 td input {
1310 td input {
1310 max-width: none;
1311 max-width: none;
1311 min-width: 30px;
1312 min-width: 30px;
1312 width: 80%;
1313 width: 80%;
1313 }
1314 }
1314 .issuetracker_pref input {
1315 .issuetracker_pref input {
1315 width: 40%;
1316 width: 40%;
1316 }
1317 }
1317 input.edit_issuetracker_update {
1318 input.edit_issuetracker_update {
1318 margin-right: 0;
1319 margin-right: 0;
1319 width: auto;
1320 width: auto;
1320 }
1321 }
1321 }
1322 }
1322
1323
1323 table.integrations {
1324 table.integrations {
1324 .td-icon {
1325 .td-icon {
1325 width: 20px;
1326 width: 20px;
1326 .integration-icon {
1327 .integration-icon {
1327 height: 20px;
1328 height: 20px;
1328 width: 20px;
1329 width: 20px;
1329 }
1330 }
1330 }
1331 }
1331 }
1332 }
1332
1333
1333 .integrations {
1334 .integrations {
1334 a.integration-box {
1335 a.integration-box {
1335 color: @text-color;
1336 color: @text-color;
1336 &:hover {
1337 &:hover {
1337 .panel {
1338 .panel {
1338 background: #fbfbfb;
1339 background: #fbfbfb;
1339 }
1340 }
1340 }
1341 }
1341 .integration-icon {
1342 .integration-icon {
1342 width: 30px;
1343 width: 30px;
1343 height: 30px;
1344 height: 30px;
1344 margin-right: 20px;
1345 margin-right: 20px;
1345 float: left;
1346 float: left;
1346 }
1347 }
1347
1348
1348 .panel-body {
1349 .panel-body {
1349 padding: 10px;
1350 padding: 10px;
1350 }
1351 }
1351 .panel {
1352 .panel {
1352 margin-bottom: 10px;
1353 margin-bottom: 10px;
1353 }
1354 }
1354 h2 {
1355 h2 {
1355 display: inline-block;
1356 display: inline-block;
1356 margin: 0;
1357 margin: 0;
1357 min-width: 140px;
1358 min-width: 140px;
1358 }
1359 }
1359 }
1360 }
1360 a.integration-box.dummy-integration {
1361 a.integration-box.dummy-integration {
1361 color: @grey4
1362 color: @grey4
1362 }
1363 }
1363 }
1364 }
1364
1365
1365 //Permissions Settings
1366 //Permissions Settings
1366 #add_perm {
1367 #add_perm {
1367 margin: 0 0 @padding;
1368 margin: 0 0 @padding;
1368 cursor: pointer;
1369 cursor: pointer;
1369 }
1370 }
1370
1371
1371 .perm_ac {
1372 .perm_ac {
1372 input {
1373 input {
1373 width: 95%;
1374 width: 95%;
1374 }
1375 }
1375 }
1376 }
1376
1377
1377 .autocomplete-suggestions {
1378 .autocomplete-suggestions {
1378 width: auto !important; // overrides autocomplete.js
1379 width: auto !important; // overrides autocomplete.js
1379 min-width: 278px;
1380 min-width: 278px;
1380 margin: 0;
1381 margin: 0;
1381 border: @border-thickness solid @grey5;
1382 border: @border-thickness solid @grey5;
1382 border-radius: @border-radius;
1383 border-radius: @border-radius;
1383 color: @grey2;
1384 color: @grey2;
1384 background-color: white;
1385 background-color: white;
1385 }
1386 }
1386
1387
1387 .autocomplete-qfilter-suggestions {
1388 .autocomplete-qfilter-suggestions {
1388 width: auto !important; // overrides autocomplete.js
1389 width: auto !important; // overrides autocomplete.js
1389 max-height: 100% !important;
1390 max-height: 100% !important;
1390 min-width: 376px;
1391 min-width: 376px;
1391 margin: 0;
1392 margin: 0;
1392 border: @border-thickness solid @grey5;
1393 border: @border-thickness solid @grey5;
1393 color: @grey2;
1394 color: @grey2;
1394 background-color: white;
1395 background-color: white;
1395 }
1396 }
1396
1397
1397 .autocomplete-selected {
1398 .autocomplete-selected {
1398 background: #F0F0F0;
1399 background: #F0F0F0;
1399 }
1400 }
1400
1401
1401 .ac-container-wrap {
1402 .ac-container-wrap {
1402 margin: 0;
1403 margin: 0;
1403 padding: 8px;
1404 padding: 8px;
1404 border-bottom: @border-thickness solid @grey5;
1405 border-bottom: @border-thickness solid @grey5;
1405 list-style-type: none;
1406 list-style-type: none;
1406 cursor: pointer;
1407 cursor: pointer;
1407
1408
1408 &:hover {
1409 &:hover {
1409 background-color: @grey7;
1410 background-color: @grey7;
1410 }
1411 }
1411
1412
1412 img {
1413 img {
1413 height: @gravatar-size;
1414 height: @gravatar-size;
1414 width: @gravatar-size;
1415 width: @gravatar-size;
1415 margin-right: 1em;
1416 margin-right: 1em;
1416 }
1417 }
1417
1418
1418 strong {
1419 strong {
1419 font-weight: normal;
1420 font-weight: normal;
1420 }
1421 }
1421 }
1422 }
1422
1423
1423 // Settings Dropdown
1424 // Settings Dropdown
1424 .user-menu .container {
1425 .user-menu .container {
1425 padding: 0 4px;
1426 padding: 0 4px;
1426 margin: 0;
1427 margin: 0;
1427 }
1428 }
1428
1429
1429 .user-menu .gravatar {
1430 .user-menu .gravatar {
1430 cursor: pointer;
1431 cursor: pointer;
1431 }
1432 }
1432
1433
1433 .codeblock {
1434 .codeblock {
1434 margin-bottom: @padding;
1435 margin-bottom: @padding;
1435 clear: both;
1436 clear: both;
1436
1437
1437 .stats {
1438 .stats {
1438 overflow: hidden;
1439 overflow: hidden;
1439 }
1440 }
1440
1441
1441 .message{
1442 .message{
1442 textarea{
1443 textarea{
1443 margin: 0;
1444 margin: 0;
1444 }
1445 }
1445 }
1446 }
1446
1447
1447 .code-header {
1448 .code-header {
1448 .stats {
1449 .stats {
1449 line-height: 2em;
1450 line-height: 2em;
1450
1451
1451 .revision_id {
1452 .revision_id {
1452 margin-left: 0;
1453 margin-left: 0;
1453 }
1454 }
1454 .buttons {
1455 .buttons {
1455 padding-right: 0;
1456 padding-right: 0;
1456 }
1457 }
1457 }
1458 }
1458
1459
1459 .item{
1460 .item{
1460 margin-right: 0.5em;
1461 margin-right: 0.5em;
1461 }
1462 }
1462 }
1463 }
1463
1464
1464 #editor_container {
1465 #editor_container {
1465 position: relative;
1466 position: relative;
1466 margin: @padding 10px;
1467 margin: @padding 10px;
1467 }
1468 }
1468 }
1469 }
1469
1470
1470 #file_history_container {
1471 #file_history_container {
1471 display: none;
1472 display: none;
1472 }
1473 }
1473
1474
1474 .file-history-inner {
1475 .file-history-inner {
1475 margin-bottom: 10px;
1476 margin-bottom: 10px;
1476 }
1477 }
1477
1478
1478 // Pull Requests
1479 // Pull Requests
1479 .summary-details {
1480 .summary-details {
1480 width: 72%;
1481 width: 72%;
1481 }
1482 }
1482 .pr-summary {
1483 .pr-summary {
1483 border-bottom: @border-thickness solid @grey5;
1484 border-bottom: @border-thickness solid @grey5;
1484 margin-bottom: @space;
1485 margin-bottom: @space;
1485 }
1486 }
1487
1486 .reviewers-title {
1488 .reviewers-title {
1487 width: 25%;
1489 width: 25%;
1488 min-width: 200px;
1490 min-width: 200px;
1491
1492 &.first-panel {
1493 margin-top: 34px;
1494 }
1489 }
1495 }
1496
1490 .reviewers {
1497 .reviewers {
1491 width: 25%;
1498 width: 25%;
1492 min-width: 200px;
1499 min-width: 200px;
1493 }
1500 }
1494 .reviewers ul li {
1501 .reviewers ul li {
1495 position: relative;
1502 position: relative;
1496 width: 100%;
1503 width: 100%;
1497 padding-bottom: 8px;
1504 padding-bottom: 8px;
1498 list-style-type: none;
1505 list-style-type: none;
1499 }
1506 }
1500
1507
1501 .reviewer_entry {
1508 .reviewer_entry {
1502 min-height: 55px;
1509 min-height: 55px;
1503 }
1510 }
1504
1511
1505 .reviewers_member {
1512 .reviewers_member {
1506 width: 100%;
1513 width: 100%;
1507 overflow: auto;
1514 overflow: auto;
1508 }
1515 }
1509 .reviewer_reason {
1516 .reviewer_reason {
1510 padding-left: 20px;
1517 padding-left: 20px;
1511 line-height: 1.5em;
1518 line-height: 1.5em;
1512 }
1519 }
1513 .reviewer_status {
1520 .reviewer_status {
1514 display: inline-block;
1521 display: inline-block;
1515 width: 25px;
1522 width: 25px;
1516 min-width: 25px;
1523 min-width: 25px;
1517 height: 1.2em;
1524 height: 1.2em;
1518 line-height: 1em;
1525 line-height: 1em;
1519 }
1526 }
1520
1527
1521 .reviewer_name {
1528 .reviewer_name {
1522 display: inline-block;
1529 display: inline-block;
1523 max-width: 83%;
1530 max-width: 83%;
1524 padding-right: 20px;
1531 padding-right: 20px;
1525 vertical-align: middle;
1532 vertical-align: middle;
1526 line-height: 1;
1533 line-height: 1;
1527
1534
1528 .rc-user {
1535 .rc-user {
1529 min-width: 0;
1536 min-width: 0;
1530 margin: -2px 1em 0 0;
1537 margin: -2px 1em 0 0;
1531 }
1538 }
1532
1539
1533 .reviewer {
1540 .reviewer {
1534 float: left;
1541 float: left;
1535 }
1542 }
1536 }
1543 }
1537
1544
1538 .reviewer_member_mandatory {
1545 .reviewer_member_mandatory {
1539 position: absolute;
1546 position: absolute;
1540 left: 15px;
1547 left: 15px;
1541 top: 8px;
1548 top: 8px;
1542 width: 16px;
1549 width: 16px;
1543 font-size: 11px;
1550 font-size: 11px;
1544 margin: 0;
1551 margin: 0;
1545 padding: 0;
1552 padding: 0;
1546 color: black;
1553 color: black;
1547 }
1554 }
1548
1555
1549 .reviewer_member_mandatory_remove,
1556 .reviewer_member_mandatory_remove,
1550 .reviewer_member_remove {
1557 .reviewer_member_remove {
1551 position: absolute;
1558 position: absolute;
1552 right: 0;
1559 right: 0;
1553 top: 0;
1560 top: 0;
1554 width: 16px;
1561 width: 16px;
1555 margin-bottom: 10px;
1562 margin-bottom: 10px;
1556 padding: 0;
1563 padding: 0;
1557 color: black;
1564 color: black;
1558 }
1565 }
1559
1566
1560 .reviewer_member_mandatory_remove {
1567 .reviewer_member_mandatory_remove {
1561 color: @grey4;
1568 color: @grey4;
1562 }
1569 }
1563
1570
1564 .reviewer_member_status {
1571 .reviewer_member_status {
1565 margin-top: 5px;
1572 margin-top: 5px;
1566 }
1573 }
1567 .pr-summary #summary{
1574 .pr-summary #summary{
1568 width: 100%;
1575 width: 100%;
1569 }
1576 }
1570 .pr-summary .action_button:hover {
1577 .pr-summary .action_button:hover {
1571 border: 0;
1578 border: 0;
1572 cursor: pointer;
1579 cursor: pointer;
1573 }
1580 }
1574 .pr-details-title {
1581 .pr-details-title {
1575 padding-bottom: 8px;
1582 padding-bottom: 8px;
1576 border-bottom: @border-thickness solid @grey5;
1583 border-bottom: @border-thickness solid @grey5;
1577
1584
1578 .action_button.disabled {
1585 .action_button.disabled {
1579 color: @grey4;
1586 color: @grey4;
1580 cursor: inherit;
1587 cursor: inherit;
1581 }
1588 }
1582 .action_button {
1589 .action_button {
1583 color: @rcblue;
1590 color: @rcblue;
1584 }
1591 }
1585 }
1592 }
1586 .pr-details-content {
1593 .pr-details-content {
1587 margin-top: @textmargin - 5;
1594 margin-top: @textmargin - 5;
1588 margin-bottom: @textmargin - 5;
1595 margin-bottom: @textmargin - 5;
1589 }
1596 }
1590
1597
1591 .pr-reviewer-rules {
1598 .pr-reviewer-rules {
1592 padding: 10px 0px 20px 0px;
1599 padding: 10px 0px 20px 0px;
1593 }
1600 }
1594
1601
1595 .todo-resolved {
1602 .todo-resolved {
1596 text-decoration: line-through;
1603 text-decoration: line-through;
1597 }
1604 }
1598
1605
1599 .todo-table {
1606 .todo-table {
1600 width: 100%;
1607 width: 100%;
1601
1608
1602 td {
1609 td {
1603 padding: 5px 0px;
1610 padding: 5px 0px;
1604 }
1611 }
1605
1612
1606 .td-todo-number {
1613 .td-todo-number {
1607 text-align: left;
1614 text-align: left;
1608 white-space: nowrap;
1615 white-space: nowrap;
1609 width: 15%;
1616 width: 15%;
1610 }
1617 }
1611
1618
1612 .td-todo-gravatar {
1619 .td-todo-gravatar {
1613 width: 5%;
1620 width: 5%;
1614
1621
1615 img {
1622 img {
1616 margin: -3px 0;
1623 margin: -3px 0;
1617 }
1624 }
1618 }
1625 }
1619
1626
1620 }
1627 }
1621
1628
1622 .todo-comment-text-wrapper {
1629 .todo-comment-text-wrapper {
1623 display: inline-grid;
1630 display: inline-grid;
1624 }
1631 }
1625
1632
1626 .todo-comment-text {
1633 .todo-comment-text {
1627 margin-left: 5px;
1634 margin-left: 5px;
1628 white-space: nowrap;
1635 white-space: nowrap;
1629 overflow: hidden;
1636 overflow: hidden;
1630 text-overflow: ellipsis;
1637 text-overflow: ellipsis;
1631 }
1638 }
1632
1639
1633 .group_members {
1640 .group_members {
1634 margin-top: 0;
1641 margin-top: 0;
1635 padding: 0;
1642 padding: 0;
1636 list-style: outside none none;
1643 list-style: outside none none;
1637
1644
1638 img {
1645 img {
1639 height: @gravatar-size;
1646 height: @gravatar-size;
1640 width: @gravatar-size;
1647 width: @gravatar-size;
1641 margin-right: .5em;
1648 margin-right: .5em;
1642 margin-left: 3px;
1649 margin-left: 3px;
1643 }
1650 }
1644
1651
1645 .to-delete {
1652 .to-delete {
1646 .user {
1653 .user {
1647 text-decoration: line-through;
1654 text-decoration: line-through;
1648 }
1655 }
1649 }
1656 }
1650 }
1657 }
1651
1658
1652 .compare_view_commits_title {
1659 .compare_view_commits_title {
1653 .disabled {
1660 .disabled {
1654 cursor: inherit;
1661 cursor: inherit;
1655 &:hover{
1662 &:hover{
1656 background-color: inherit;
1663 background-color: inherit;
1657 color: inherit;
1664 color: inherit;
1658 }
1665 }
1659 }
1666 }
1660 }
1667 }
1661
1668
1662 .subtitle-compare {
1669 .subtitle-compare {
1663 margin: -15px 0px 0px 0px;
1670 margin: -15px 0px 0px 0px;
1664 }
1671 }
1665
1672
1666 // new entry in group_members
1673 // new entry in group_members
1667 .td-author-new-entry {
1674 .td-author-new-entry {
1668 background-color: rgba(red(@alert1), green(@alert1), blue(@alert1), 0.3);
1675 background-color: rgba(red(@alert1), green(@alert1), blue(@alert1), 0.3);
1669 }
1676 }
1670
1677
1671 .usergroup_member_remove {
1678 .usergroup_member_remove {
1672 width: 16px;
1679 width: 16px;
1673 margin-bottom: 10px;
1680 margin-bottom: 10px;
1674 padding: 0;
1681 padding: 0;
1675 color: black !important;
1682 color: black !important;
1676 cursor: pointer;
1683 cursor: pointer;
1677 }
1684 }
1678
1685
1679 .reviewer_ac .ac-input {
1686 .reviewer_ac .ac-input {
1680 width: 92%;
1687 width: 92%;
1681 margin-bottom: 1em;
1688 margin-bottom: 1em;
1682 }
1689 }
1683
1690
1684 .compare_view_commits tr{
1691 .compare_view_commits tr{
1685 height: 20px;
1692 height: 20px;
1686 }
1693 }
1687 .compare_view_commits td {
1694 .compare_view_commits td {
1688 vertical-align: top;
1695 vertical-align: top;
1689 padding-top: 10px;
1696 padding-top: 10px;
1690 }
1697 }
1691 .compare_view_commits .author {
1698 .compare_view_commits .author {
1692 margin-left: 5px;
1699 margin-left: 5px;
1693 }
1700 }
1694
1701
1695 .compare_view_commits {
1702 .compare_view_commits {
1696 .color-a {
1703 .color-a {
1697 color: @alert1;
1704 color: @alert1;
1698 }
1705 }
1699
1706
1700 .color-c {
1707 .color-c {
1701 color: @color3;
1708 color: @color3;
1702 }
1709 }
1703
1710
1704 .color-r {
1711 .color-r {
1705 color: @color5;
1712 color: @color5;
1706 }
1713 }
1707
1714
1708 .color-a-bg {
1715 .color-a-bg {
1709 background-color: @alert1;
1716 background-color: @alert1;
1710 }
1717 }
1711
1718
1712 .color-c-bg {
1719 .color-c-bg {
1713 background-color: @alert3;
1720 background-color: @alert3;
1714 }
1721 }
1715
1722
1716 .color-r-bg {
1723 .color-r-bg {
1717 background-color: @alert2;
1724 background-color: @alert2;
1718 }
1725 }
1719
1726
1720 .color-a-border {
1727 .color-a-border {
1721 border: 1px solid @alert1;
1728 border: 1px solid @alert1;
1722 }
1729 }
1723
1730
1724 .color-c-border {
1731 .color-c-border {
1725 border: 1px solid @alert3;
1732 border: 1px solid @alert3;
1726 }
1733 }
1727
1734
1728 .color-r-border {
1735 .color-r-border {
1729 border: 1px solid @alert2;
1736 border: 1px solid @alert2;
1730 }
1737 }
1731
1738
1732 .commit-change-indicator {
1739 .commit-change-indicator {
1733 width: 15px;
1740 width: 15px;
1734 height: 15px;
1741 height: 15px;
1735 position: relative;
1742 position: relative;
1736 left: 15px;
1743 left: 15px;
1737 }
1744 }
1738
1745
1739 .commit-change-content {
1746 .commit-change-content {
1740 text-align: center;
1747 text-align: center;
1741 vertical-align: middle;
1748 vertical-align: middle;
1742 line-height: 15px;
1749 line-height: 15px;
1743 }
1750 }
1744 }
1751 }
1745
1752
1746 .compare_view_filepath {
1753 .compare_view_filepath {
1747 color: @grey1;
1754 color: @grey1;
1748 }
1755 }
1749
1756
1750 .show_more {
1757 .show_more {
1751 display: inline-block;
1758 display: inline-block;
1752 width: 0;
1759 width: 0;
1753 height: 0;
1760 height: 0;
1754 vertical-align: middle;
1761 vertical-align: middle;
1755 content: "";
1762 content: "";
1756 border: 4px solid;
1763 border: 4px solid;
1757 border-right-color: transparent;
1764 border-right-color: transparent;
1758 border-bottom-color: transparent;
1765 border-bottom-color: transparent;
1759 border-left-color: transparent;
1766 border-left-color: transparent;
1760 font-size: 0;
1767 font-size: 0;
1761 }
1768 }
1762
1769
1763 .journal_more .show_more {
1770 .journal_more .show_more {
1764 display: inline;
1771 display: inline;
1765
1772
1766 &:after {
1773 &:after {
1767 content: none;
1774 content: none;
1768 }
1775 }
1769 }
1776 }
1770
1777
1771 .compare_view_commits .collapse_commit:after {
1778 .compare_view_commits .collapse_commit:after {
1772 cursor: pointer;
1779 cursor: pointer;
1773 content: "\00A0\25B4";
1780 content: "\00A0\25B4";
1774 margin-left: -3px;
1781 margin-left: -3px;
1775 font-size: 17px;
1782 font-size: 17px;
1776 color: @grey4;
1783 color: @grey4;
1777 }
1784 }
1778
1785
1779 .diff_links {
1786 .diff_links {
1780 margin-left: 8px;
1787 margin-left: 8px;
1781 }
1788 }
1782
1789
1783 #pull_request_overview {
1790 #pull_request_overview {
1784 div.ancestor {
1791 div.ancestor {
1785 margin: -33px 0;
1792 margin: -33px 0;
1786 }
1793 }
1787 }
1794 }
1788
1795
1789 div.ancestor {
1796 div.ancestor {
1790 line-height: 33px;
1797 line-height: 33px;
1791 }
1798 }
1792
1799
1793 .cs_icon_td input[type="checkbox"] {
1800 .cs_icon_td input[type="checkbox"] {
1794 display: none;
1801 display: none;
1795 }
1802 }
1796
1803
1797 .cs_icon_td .expand_file_icon:after {
1804 .cs_icon_td .expand_file_icon:after {
1798 cursor: pointer;
1805 cursor: pointer;
1799 content: "\00A0\25B6";
1806 content: "\00A0\25B6";
1800 font-size: 12px;
1807 font-size: 12px;
1801 color: @grey4;
1808 color: @grey4;
1802 }
1809 }
1803
1810
1804 .cs_icon_td .collapse_file_icon:after {
1811 .cs_icon_td .collapse_file_icon:after {
1805 cursor: pointer;
1812 cursor: pointer;
1806 content: "\00A0\25BC";
1813 content: "\00A0\25BC";
1807 font-size: 12px;
1814 font-size: 12px;
1808 color: @grey4;
1815 color: @grey4;
1809 }
1816 }
1810
1817
1811 /*new binary
1818 /*new binary
1812 NEW_FILENODE = 1
1819 NEW_FILENODE = 1
1813 DEL_FILENODE = 2
1820 DEL_FILENODE = 2
1814 MOD_FILENODE = 3
1821 MOD_FILENODE = 3
1815 RENAMED_FILENODE = 4
1822 RENAMED_FILENODE = 4
1816 COPIED_FILENODE = 5
1823 COPIED_FILENODE = 5
1817 CHMOD_FILENODE = 6
1824 CHMOD_FILENODE = 6
1818 BIN_FILENODE = 7
1825 BIN_FILENODE = 7
1819 */
1826 */
1820 .cs_files_expand {
1827 .cs_files_expand {
1821 font-size: @basefontsize + 5px;
1828 font-size: @basefontsize + 5px;
1822 line-height: 1.8em;
1829 line-height: 1.8em;
1823 float: right;
1830 float: right;
1824 }
1831 }
1825
1832
1826 .cs_files_expand span{
1833 .cs_files_expand span{
1827 color: @rcblue;
1834 color: @rcblue;
1828 cursor: pointer;
1835 cursor: pointer;
1829 }
1836 }
1830 .cs_files {
1837 .cs_files {
1831 clear: both;
1838 clear: both;
1832 padding-bottom: @padding;
1839 padding-bottom: @padding;
1833
1840
1834 .cur_cs {
1841 .cur_cs {
1835 margin: 10px 2px;
1842 margin: 10px 2px;
1836 font-weight: bold;
1843 font-weight: bold;
1837 }
1844 }
1838
1845
1839 .node {
1846 .node {
1840 float: left;
1847 float: left;
1841 }
1848 }
1842
1849
1843 .changes {
1850 .changes {
1844 float: right;
1851 float: right;
1845 color: white;
1852 color: white;
1846 font-size: @basefontsize - 4px;
1853 font-size: @basefontsize - 4px;
1847 margin-top: 4px;
1854 margin-top: 4px;
1848 opacity: 0.6;
1855 opacity: 0.6;
1849 filter: Alpha(opacity=60); /* IE8 and earlier */
1856 filter: Alpha(opacity=60); /* IE8 and earlier */
1850
1857
1851 .added {
1858 .added {
1852 background-color: @alert1;
1859 background-color: @alert1;
1853 float: left;
1860 float: left;
1854 text-align: center;
1861 text-align: center;
1855 }
1862 }
1856
1863
1857 .deleted {
1864 .deleted {
1858 background-color: @alert2;
1865 background-color: @alert2;
1859 float: left;
1866 float: left;
1860 text-align: center;
1867 text-align: center;
1861 }
1868 }
1862
1869
1863 .bin {
1870 .bin {
1864 background-color: @alert1;
1871 background-color: @alert1;
1865 text-align: center;
1872 text-align: center;
1866 }
1873 }
1867
1874
1868 /*new binary*/
1875 /*new binary*/
1869 .bin.bin1 {
1876 .bin.bin1 {
1870 background-color: @alert1;
1877 background-color: @alert1;
1871 text-align: center;
1878 text-align: center;
1872 }
1879 }
1873
1880
1874 /*deleted binary*/
1881 /*deleted binary*/
1875 .bin.bin2 {
1882 .bin.bin2 {
1876 background-color: @alert2;
1883 background-color: @alert2;
1877 text-align: center;
1884 text-align: center;
1878 }
1885 }
1879
1886
1880 /*mod binary*/
1887 /*mod binary*/
1881 .bin.bin3 {
1888 .bin.bin3 {
1882 background-color: @grey2;
1889 background-color: @grey2;
1883 text-align: center;
1890 text-align: center;
1884 }
1891 }
1885
1892
1886 /*rename file*/
1893 /*rename file*/
1887 .bin.bin4 {
1894 .bin.bin4 {
1888 background-color: @alert4;
1895 background-color: @alert4;
1889 text-align: center;
1896 text-align: center;
1890 }
1897 }
1891
1898
1892 /*copied file*/
1899 /*copied file*/
1893 .bin.bin5 {
1900 .bin.bin5 {
1894 background-color: @alert4;
1901 background-color: @alert4;
1895 text-align: center;
1902 text-align: center;
1896 }
1903 }
1897
1904
1898 /*chmod file*/
1905 /*chmod file*/
1899 .bin.bin6 {
1906 .bin.bin6 {
1900 background-color: @grey2;
1907 background-color: @grey2;
1901 text-align: center;
1908 text-align: center;
1902 }
1909 }
1903 }
1910 }
1904 }
1911 }
1905
1912
1906 .cs_files .cs_added, .cs_files .cs_A,
1913 .cs_files .cs_added, .cs_files .cs_A,
1907 .cs_files .cs_added, .cs_files .cs_M,
1914 .cs_files .cs_added, .cs_files .cs_M,
1908 .cs_files .cs_added, .cs_files .cs_D {
1915 .cs_files .cs_added, .cs_files .cs_D {
1909 height: 16px;
1916 height: 16px;
1910 padding-right: 10px;
1917 padding-right: 10px;
1911 margin-top: 7px;
1918 margin-top: 7px;
1912 text-align: left;
1919 text-align: left;
1913 }
1920 }
1914
1921
1915 .cs_icon_td {
1922 .cs_icon_td {
1916 min-width: 16px;
1923 min-width: 16px;
1917 width: 16px;
1924 width: 16px;
1918 }
1925 }
1919
1926
1920 .pull-request-merge {
1927 .pull-request-merge {
1921 border: 1px solid @grey5;
1928 border: 1px solid @grey5;
1922 padding: 10px 0px 20px;
1929 padding: 10px 0px 20px;
1923 margin-top: 10px;
1930 margin-top: 10px;
1924 margin-bottom: 20px;
1931 margin-bottom: 20px;
1925 }
1932 }
1926
1933
1927 .pull-request-merge-refresh {
1934 .pull-request-merge-refresh {
1928 margin: 2px 7px;
1935 margin: 2px 7px;
1929 a {
1936 a {
1930 color: @grey3;
1937 color: @grey3;
1931 }
1938 }
1932 }
1939 }
1933
1940
1934 .pull-request-merge ul {
1941 .pull-request-merge ul {
1935 padding: 0px 0px;
1942 padding: 0px 0px;
1936 }
1943 }
1937
1944
1938 .pull-request-merge li {
1945 .pull-request-merge li {
1939 list-style-type: none;
1946 list-style-type: none;
1940 }
1947 }
1941
1948
1942 .pull-request-merge .pull-request-wrap {
1949 .pull-request-merge .pull-request-wrap {
1943 height: auto;
1950 height: auto;
1944 padding: 0px 0px;
1951 padding: 0px 0px;
1945 text-align: right;
1952 text-align: right;
1946 }
1953 }
1947
1954
1948 .pull-request-merge span {
1955 .pull-request-merge span {
1949 margin-right: 5px;
1956 margin-right: 5px;
1950 }
1957 }
1951
1958
1952 .pull-request-merge-actions {
1959 .pull-request-merge-actions {
1953 min-height: 30px;
1960 min-height: 30px;
1954 padding: 0px 0px;
1961 padding: 0px 0px;
1955 }
1962 }
1956
1963
1957 .pull-request-merge-info {
1964 .pull-request-merge-info {
1958 padding: 0px 5px 5px 0px;
1965 padding: 0px 5px 5px 0px;
1959 }
1966 }
1960
1967
1961 .merge-status {
1968 .merge-status {
1962 margin-right: 5px;
1969 margin-right: 5px;
1963 }
1970 }
1964
1971
1965 .merge-message {
1972 .merge-message {
1966 font-size: 1.2em
1973 font-size: 1.2em
1967 }
1974 }
1968
1975
1969 .merge-message.success i,
1976 .merge-message.success i,
1970 .merge-icon.success i {
1977 .merge-icon.success i {
1971 color:@alert1;
1978 color:@alert1;
1972 }
1979 }
1973
1980
1974 .merge-message.warning i,
1981 .merge-message.warning i,
1975 .merge-icon.warning i {
1982 .merge-icon.warning i {
1976 color: @alert3;
1983 color: @alert3;
1977 }
1984 }
1978
1985
1979 .merge-message.error i,
1986 .merge-message.error i,
1980 .merge-icon.error i {
1987 .merge-icon.error i {
1981 color:@alert2;
1988 color:@alert2;
1982 }
1989 }
1983
1990
1984 .pr-versions {
1991 .pr-versions {
1985 font-size: 1.1em;
1992 font-size: 1.1em;
1986 padding: 7.5px;
1993 padding: 7.5px;
1987
1994
1988 table {
1995 table {
1989
1996
1990 }
1997 }
1991
1998
1992 td {
1999 td {
1993 line-height: 15px;
2000 line-height: 15px;
1994 }
2001 }
1995
2002
1996 .compare-radio-button {
2003 .compare-radio-button {
1997 position: relative;
2004 position: relative;
1998 top: -3px;
2005 top: -3px;
1999 }
2006 }
2000 }
2007 }
2001
2008
2002
2009
2003 #close_pull_request {
2010 #close_pull_request {
2004 margin-right: 0px;
2011 margin-right: 0px;
2005 }
2012 }
2006
2013
2007 .empty_data {
2014 .empty_data {
2008 color: @grey4;
2015 color: @grey4;
2009 }
2016 }
2010
2017
2011 #changeset_compare_view_content {
2018 #changeset_compare_view_content {
2012 clear: both;
2019 clear: both;
2013 width: 100%;
2020 width: 100%;
2014 box-sizing: border-box;
2021 box-sizing: border-box;
2015 .border-radius(@border-radius);
2022 .border-radius(@border-radius);
2016
2023
2017 .help-block {
2024 .help-block {
2018 margin: @padding 0;
2025 margin: @padding 0;
2019 color: @text-color;
2026 color: @text-color;
2020 &.pre-formatting {
2027 &.pre-formatting {
2021 white-space: pre;
2028 white-space: pre;
2022 }
2029 }
2023 }
2030 }
2024
2031
2025 .empty_data {
2032 .empty_data {
2026 margin: @padding 0;
2033 margin: @padding 0;
2027 }
2034 }
2028
2035
2029 .alert {
2036 .alert {
2030 margin-bottom: @space;
2037 margin-bottom: @space;
2031 }
2038 }
2032 }
2039 }
2033
2040
2034 .table_disp {
2041 .table_disp {
2035 .status {
2042 .status {
2036 width: auto;
2043 width: auto;
2037 }
2044 }
2038 }
2045 }
2039
2046
2040
2047
2041 .creation_in_progress {
2048 .creation_in_progress {
2042 color: @grey4
2049 color: @grey4
2043 }
2050 }
2044
2051
2045 .status_box_menu {
2052 .status_box_menu {
2046 margin: 0;
2053 margin: 0;
2047 }
2054 }
2048
2055
2049 .notification-table{
2056 .notification-table{
2050 margin-bottom: @space;
2057 margin-bottom: @space;
2051 display: table;
2058 display: table;
2052 width: 100%;
2059 width: 100%;
2053
2060
2054 .container{
2061 .container{
2055 display: table-row;
2062 display: table-row;
2056
2063
2057 .notification-header{
2064 .notification-header{
2058 border-bottom: @border-thickness solid @border-default-color;
2065 border-bottom: @border-thickness solid @border-default-color;
2059 }
2066 }
2060
2067
2061 .notification-subject{
2068 .notification-subject{
2062 display: table-cell;
2069 display: table-cell;
2063 }
2070 }
2064 }
2071 }
2065 }
2072 }
2066
2073
2067 // Notifications
2074 // Notifications
2068 .notification-header{
2075 .notification-header{
2069 display: table;
2076 display: table;
2070 width: 100%;
2077 width: 100%;
2071 padding: floor(@basefontsize/2) 0;
2078 padding: floor(@basefontsize/2) 0;
2072 line-height: 1em;
2079 line-height: 1em;
2073
2080
2074 .desc, .delete-notifications, .read-notifications{
2081 .desc, .delete-notifications, .read-notifications{
2075 display: table-cell;
2082 display: table-cell;
2076 text-align: left;
2083 text-align: left;
2077 }
2084 }
2078
2085
2079 .delete-notifications, .read-notifications{
2086 .delete-notifications, .read-notifications{
2080 width: 35px;
2087 width: 35px;
2081 min-width: 35px; //fixes when only one button is displayed
2088 min-width: 35px; //fixes when only one button is displayed
2082 }
2089 }
2083 }
2090 }
2084
2091
2085 .notification-body {
2092 .notification-body {
2086 .markdown-block,
2093 .markdown-block,
2087 .rst-block {
2094 .rst-block {
2088 padding: @padding 0;
2095 padding: @padding 0;
2089 }
2096 }
2090
2097
2091 .notification-subject {
2098 .notification-subject {
2092 padding: @textmargin 0;
2099 padding: @textmargin 0;
2093 border-bottom: @border-thickness solid @border-default-color;
2100 border-bottom: @border-thickness solid @border-default-color;
2094 }
2101 }
2095 }
2102 }
2096
2103
2097
2104
2098 .notifications_buttons{
2105 .notifications_buttons{
2099 float: right;
2106 float: right;
2100 }
2107 }
2101
2108
2102 #notification-status{
2109 #notification-status{
2103 display: inline;
2110 display: inline;
2104 }
2111 }
2105
2112
2106 // Repositories
2113 // Repositories
2107
2114
2108 #summary.fields{
2115 #summary.fields{
2109 display: table;
2116 display: table;
2110
2117
2111 .field{
2118 .field{
2112 display: table-row;
2119 display: table-row;
2113
2120
2114 .label-summary{
2121 .label-summary{
2115 display: table-cell;
2122 display: table-cell;
2116 min-width: @label-summary-minwidth;
2123 min-width: @label-summary-minwidth;
2117 padding-top: @padding/2;
2124 padding-top: @padding/2;
2118 padding-bottom: @padding/2;
2125 padding-bottom: @padding/2;
2119 padding-right: @padding/2;
2126 padding-right: @padding/2;
2120 }
2127 }
2121
2128
2122 .input{
2129 .input{
2123 display: table-cell;
2130 display: table-cell;
2124 padding: @padding/2;
2131 padding: @padding/2;
2125
2132
2126 input{
2133 input{
2127 min-width: 29em;
2134 min-width: 29em;
2128 padding: @padding/4;
2135 padding: @padding/4;
2129 }
2136 }
2130 }
2137 }
2131 .statistics, .downloads{
2138 .statistics, .downloads{
2132 .disabled{
2139 .disabled{
2133 color: @grey4;
2140 color: @grey4;
2134 }
2141 }
2135 }
2142 }
2136 }
2143 }
2137 }
2144 }
2138
2145
2139 #summary{
2146 #summary{
2140 width: 70%;
2147 width: 70%;
2141 }
2148 }
2142
2149
2143
2150
2144 // Journal
2151 // Journal
2145 .journal.title {
2152 .journal.title {
2146 h5 {
2153 h5 {
2147 float: left;
2154 float: left;
2148 margin: 0;
2155 margin: 0;
2149 width: 70%;
2156 width: 70%;
2150 }
2157 }
2151
2158
2152 ul {
2159 ul {
2153 float: right;
2160 float: right;
2154 display: inline-block;
2161 display: inline-block;
2155 margin: 0;
2162 margin: 0;
2156 width: 30%;
2163 width: 30%;
2157 text-align: right;
2164 text-align: right;
2158
2165
2159 li {
2166 li {
2160 display: inline;
2167 display: inline;
2161 font-size: @journal-fontsize;
2168 font-size: @journal-fontsize;
2162 line-height: 1em;
2169 line-height: 1em;
2163
2170
2164 list-style-type: none;
2171 list-style-type: none;
2165 }
2172 }
2166 }
2173 }
2167 }
2174 }
2168
2175
2169 .filterexample {
2176 .filterexample {
2170 position: absolute;
2177 position: absolute;
2171 top: 95px;
2178 top: 95px;
2172 left: @contentpadding;
2179 left: @contentpadding;
2173 color: @rcblue;
2180 color: @rcblue;
2174 font-size: 11px;
2181 font-size: 11px;
2175 font-family: @text-regular;
2182 font-family: @text-regular;
2176 cursor: help;
2183 cursor: help;
2177
2184
2178 &:hover {
2185 &:hover {
2179 color: @rcdarkblue;
2186 color: @rcdarkblue;
2180 }
2187 }
2181
2188
2182 @media (max-width:768px) {
2189 @media (max-width:768px) {
2183 position: relative;
2190 position: relative;
2184 top: auto;
2191 top: auto;
2185 left: auto;
2192 left: auto;
2186 display: block;
2193 display: block;
2187 }
2194 }
2188 }
2195 }
2189
2196
2190
2197
2191 #journal{
2198 #journal{
2192 margin-bottom: @space;
2199 margin-bottom: @space;
2193
2200
2194 .journal_day{
2201 .journal_day{
2195 margin-bottom: @textmargin/2;
2202 margin-bottom: @textmargin/2;
2196 padding-bottom: @textmargin/2;
2203 padding-bottom: @textmargin/2;
2197 font-size: @journal-fontsize;
2204 font-size: @journal-fontsize;
2198 border-bottom: @border-thickness solid @border-default-color;
2205 border-bottom: @border-thickness solid @border-default-color;
2199 }
2206 }
2200
2207
2201 .journal_container{
2208 .journal_container{
2202 margin-bottom: @space;
2209 margin-bottom: @space;
2203
2210
2204 .journal_user{
2211 .journal_user{
2205 display: inline-block;
2212 display: inline-block;
2206 }
2213 }
2207 .journal_action_container{
2214 .journal_action_container{
2208 display: block;
2215 display: block;
2209 margin-top: @textmargin;
2216 margin-top: @textmargin;
2210
2217
2211 div{
2218 div{
2212 display: inline;
2219 display: inline;
2213 }
2220 }
2214
2221
2215 div.journal_action_params{
2222 div.journal_action_params{
2216 display: block;
2223 display: block;
2217 }
2224 }
2218
2225
2219 div.journal_repo:after{
2226 div.journal_repo:after{
2220 content: "\A";
2227 content: "\A";
2221 white-space: pre;
2228 white-space: pre;
2222 }
2229 }
2223
2230
2224 div.date{
2231 div.date{
2225 display: block;
2232 display: block;
2226 margin-bottom: @textmargin;
2233 margin-bottom: @textmargin;
2227 }
2234 }
2228 }
2235 }
2229 }
2236 }
2230 }
2237 }
2231
2238
2232 // Files
2239 // Files
2233 .edit-file-title {
2240 .edit-file-title {
2234 font-size: 16px;
2241 font-size: 16px;
2235
2242
2236 .title-heading {
2243 .title-heading {
2237 padding: 2px;
2244 padding: 2px;
2238 }
2245 }
2239 }
2246 }
2240
2247
2241 .edit-file-fieldset {
2248 .edit-file-fieldset {
2242 margin: @sidebarpadding 0;
2249 margin: @sidebarpadding 0;
2243
2250
2244 .fieldset {
2251 .fieldset {
2245 .left-label {
2252 .left-label {
2246 width: 13%;
2253 width: 13%;
2247 }
2254 }
2248 .right-content {
2255 .right-content {
2249 width: 87%;
2256 width: 87%;
2250 max-width: 100%;
2257 max-width: 100%;
2251 }
2258 }
2252 .filename-label {
2259 .filename-label {
2253 margin-top: 13px;
2260 margin-top: 13px;
2254 }
2261 }
2255 .commit-message-label {
2262 .commit-message-label {
2256 margin-top: 4px;
2263 margin-top: 4px;
2257 }
2264 }
2258 .file-upload-input {
2265 .file-upload-input {
2259 input {
2266 input {
2260 display: none;
2267 display: none;
2261 }
2268 }
2262 margin-top: 10px;
2269 margin-top: 10px;
2263 }
2270 }
2264 .file-upload-label {
2271 .file-upload-label {
2265 margin-top: 10px;
2272 margin-top: 10px;
2266 }
2273 }
2267 p {
2274 p {
2268 margin-top: 5px;
2275 margin-top: 5px;
2269 }
2276 }
2270
2277
2271 }
2278 }
2272 .custom-path-link {
2279 .custom-path-link {
2273 margin-left: 5px;
2280 margin-left: 5px;
2274 }
2281 }
2275 #commit {
2282 #commit {
2276 resize: vertical;
2283 resize: vertical;
2277 }
2284 }
2278 }
2285 }
2279
2286
2280 .delete-file-preview {
2287 .delete-file-preview {
2281 max-height: 250px;
2288 max-height: 250px;
2282 }
2289 }
2283
2290
2284 .new-file,
2291 .new-file,
2285 #filter_activate,
2292 #filter_activate,
2286 #filter_deactivate {
2293 #filter_deactivate {
2287 float: right;
2294 float: right;
2288 margin: 0 0 0 10px;
2295 margin: 0 0 0 10px;
2289 }
2296 }
2290
2297
2291 .file-upload-transaction-wrapper {
2298 .file-upload-transaction-wrapper {
2292 margin-top: 57px;
2299 margin-top: 57px;
2293 clear: both;
2300 clear: both;
2294 }
2301 }
2295
2302
2296 .file-upload-transaction-wrapper .error {
2303 .file-upload-transaction-wrapper .error {
2297 color: @color5;
2304 color: @color5;
2298 }
2305 }
2299
2306
2300 .file-upload-transaction {
2307 .file-upload-transaction {
2301 min-height: 200px;
2308 min-height: 200px;
2302 padding: 54px;
2309 padding: 54px;
2303 border: 1px solid @grey5;
2310 border: 1px solid @grey5;
2304 text-align: center;
2311 text-align: center;
2305 clear: both;
2312 clear: both;
2306 }
2313 }
2307
2314
2308 .file-upload-transaction i {
2315 .file-upload-transaction i {
2309 font-size: 48px
2316 font-size: 48px
2310 }
2317 }
2311
2318
2312 h3.files_location{
2319 h3.files_location{
2313 line-height: 2.4em;
2320 line-height: 2.4em;
2314 }
2321 }
2315
2322
2316 .browser-nav {
2323 .browser-nav {
2317 width: 100%;
2324 width: 100%;
2318 display: table;
2325 display: table;
2319 margin-bottom: 20px;
2326 margin-bottom: 20px;
2320
2327
2321 .info_box {
2328 .info_box {
2322 float: left;
2329 float: left;
2323 display: inline-table;
2330 display: inline-table;
2324 height: 2.5em;
2331 height: 2.5em;
2325
2332
2326 .browser-cur-rev, .info_box_elem {
2333 .browser-cur-rev, .info_box_elem {
2327 display: table-cell;
2334 display: table-cell;
2328 vertical-align: middle;
2335 vertical-align: middle;
2329 }
2336 }
2330
2337
2331 .drop-menu {
2338 .drop-menu {
2332 margin: 0 10px;
2339 margin: 0 10px;
2333 }
2340 }
2334
2341
2335 .info_box_elem {
2342 .info_box_elem {
2336 border-top: @border-thickness solid @grey5;
2343 border-top: @border-thickness solid @grey5;
2337 border-bottom: @border-thickness solid @grey5;
2344 border-bottom: @border-thickness solid @grey5;
2338 box-shadow: @button-shadow;
2345 box-shadow: @button-shadow;
2339
2346
2340 #at_rev, a {
2347 #at_rev, a {
2341 padding: 0.6em 0.4em;
2348 padding: 0.6em 0.4em;
2342 margin: 0;
2349 margin: 0;
2343 .box-shadow(none);
2350 .box-shadow(none);
2344 border: 0;
2351 border: 0;
2345 height: 12px;
2352 height: 12px;
2346 color: @grey2;
2353 color: @grey2;
2347 }
2354 }
2348
2355
2349 input#at_rev {
2356 input#at_rev {
2350 max-width: 50px;
2357 max-width: 50px;
2351 text-align: center;
2358 text-align: center;
2352 }
2359 }
2353
2360
2354 &.previous {
2361 &.previous {
2355 border: @border-thickness solid @grey5;
2362 border: @border-thickness solid @grey5;
2356 border-top-left-radius: @border-radius;
2363 border-top-left-radius: @border-radius;
2357 border-bottom-left-radius: @border-radius;
2364 border-bottom-left-radius: @border-radius;
2358
2365
2359 &:hover {
2366 &:hover {
2360 border-color: @grey4;
2367 border-color: @grey4;
2361 }
2368 }
2362
2369
2363 .disabled {
2370 .disabled {
2364 color: @grey5;
2371 color: @grey5;
2365 cursor: not-allowed;
2372 cursor: not-allowed;
2366 opacity: 0.5;
2373 opacity: 0.5;
2367 }
2374 }
2368 }
2375 }
2369
2376
2370 &.next {
2377 &.next {
2371 border: @border-thickness solid @grey5;
2378 border: @border-thickness solid @grey5;
2372 border-top-right-radius: @border-radius;
2379 border-top-right-radius: @border-radius;
2373 border-bottom-right-radius: @border-radius;
2380 border-bottom-right-radius: @border-radius;
2374
2381
2375 &:hover {
2382 &:hover {
2376 border-color: @grey4;
2383 border-color: @grey4;
2377 }
2384 }
2378
2385
2379 .disabled {
2386 .disabled {
2380 color: @grey5;
2387 color: @grey5;
2381 cursor: not-allowed;
2388 cursor: not-allowed;
2382 opacity: 0.5;
2389 opacity: 0.5;
2383 }
2390 }
2384 }
2391 }
2385 }
2392 }
2386
2393
2387 .browser-cur-rev {
2394 .browser-cur-rev {
2388
2395
2389 span{
2396 span{
2390 margin: 0;
2397 margin: 0;
2391 color: @rcblue;
2398 color: @rcblue;
2392 height: 12px;
2399 height: 12px;
2393 display: inline-block;
2400 display: inline-block;
2394 padding: 0.7em 1em ;
2401 padding: 0.7em 1em ;
2395 border: @border-thickness solid @rcblue;
2402 border: @border-thickness solid @rcblue;
2396 margin-right: @padding;
2403 margin-right: @padding;
2397 }
2404 }
2398 }
2405 }
2399
2406
2400 }
2407 }
2401
2408
2402 .select-index-number {
2409 .select-index-number {
2403 margin: 0 0 0 20px;
2410 margin: 0 0 0 20px;
2404 color: @grey3;
2411 color: @grey3;
2405 }
2412 }
2406
2413
2407 .search_activate {
2414 .search_activate {
2408 display: table-cell;
2415 display: table-cell;
2409 vertical-align: middle;
2416 vertical-align: middle;
2410
2417
2411 input, label{
2418 input, label{
2412 margin: 0;
2419 margin: 0;
2413 padding: 0;
2420 padding: 0;
2414 }
2421 }
2415
2422
2416 input{
2423 input{
2417 margin-left: @textmargin;
2424 margin-left: @textmargin;
2418 }
2425 }
2419
2426
2420 }
2427 }
2421 }
2428 }
2422
2429
2423 .browser-cur-rev{
2430 .browser-cur-rev{
2424 margin-bottom: @textmargin;
2431 margin-bottom: @textmargin;
2425 }
2432 }
2426
2433
2427 #node_filter_box_loading{
2434 #node_filter_box_loading{
2428 .info_text;
2435 .info_text;
2429 }
2436 }
2430
2437
2431 .browser-search {
2438 .browser-search {
2432 margin: -25px 0px 5px 0px;
2439 margin: -25px 0px 5px 0px;
2433 }
2440 }
2434
2441
2435 .files-quick-filter {
2442 .files-quick-filter {
2436 float: right;
2443 float: right;
2437 width: 180px;
2444 width: 180px;
2438 position: relative;
2445 position: relative;
2439 }
2446 }
2440
2447
2441 .files-filter-box {
2448 .files-filter-box {
2442 display: flex;
2449 display: flex;
2443 padding: 0px;
2450 padding: 0px;
2444 border-radius: 3px;
2451 border-radius: 3px;
2445 margin-bottom: 0;
2452 margin-bottom: 0;
2446
2453
2447 a {
2454 a {
2448 border: none !important;
2455 border: none !important;
2449 }
2456 }
2450
2457
2451 li {
2458 li {
2452 list-style-type: none
2459 list-style-type: none
2453 }
2460 }
2454 }
2461 }
2455
2462
2456 .files-filter-box-path {
2463 .files-filter-box-path {
2457 line-height: 33px;
2464 line-height: 33px;
2458 padding: 0;
2465 padding: 0;
2459 width: 20px;
2466 width: 20px;
2460 position: absolute;
2467 position: absolute;
2461 z-index: 11;
2468 z-index: 11;
2462 left: 5px;
2469 left: 5px;
2463 }
2470 }
2464
2471
2465 .files-filter-box-input {
2472 .files-filter-box-input {
2466 margin-right: 0;
2473 margin-right: 0;
2467
2474
2468 input {
2475 input {
2469 border: 1px solid @white;
2476 border: 1px solid @white;
2470 padding-left: 25px;
2477 padding-left: 25px;
2471 width: 145px;
2478 width: 145px;
2472
2479
2473 &:hover {
2480 &:hover {
2474 border-color: @grey6;
2481 border-color: @grey6;
2475 }
2482 }
2476
2483
2477 &:focus {
2484 &:focus {
2478 border-color: @grey5;
2485 border-color: @grey5;
2479 }
2486 }
2480 }
2487 }
2481 }
2488 }
2482
2489
2483 .browser-result{
2490 .browser-result{
2484 td a{
2491 td a{
2485 margin-left: 0.5em;
2492 margin-left: 0.5em;
2486 display: inline-block;
2493 display: inline-block;
2487
2494
2488 em {
2495 em {
2489 font-weight: @text-bold-weight;
2496 font-weight: @text-bold-weight;
2490 font-family: @text-bold;
2497 font-family: @text-bold;
2491 }
2498 }
2492 }
2499 }
2493 }
2500 }
2494
2501
2495 .browser-highlight{
2502 .browser-highlight{
2496 background-color: @grey5-alpha;
2503 background-color: @grey5-alpha;
2497 }
2504 }
2498
2505
2499
2506
2500 .edit-file-fieldset #location,
2507 .edit-file-fieldset #location,
2501 .edit-file-fieldset #filename {
2508 .edit-file-fieldset #filename {
2502 display: flex;
2509 display: flex;
2503 width: -moz-available; /* WebKit-based browsers will ignore this. */
2510 width: -moz-available; /* WebKit-based browsers will ignore this. */
2504 width: -webkit-fill-available; /* Mozilla-based browsers will ignore this. */
2511 width: -webkit-fill-available; /* Mozilla-based browsers will ignore this. */
2505 width: fill-available;
2512 width: fill-available;
2506 border: 0;
2513 border: 0;
2507 }
2514 }
2508
2515
2509 .path-items {
2516 .path-items {
2510 display: flex;
2517 display: flex;
2511 padding: 0;
2518 padding: 0;
2512 border: 1px solid #eeeeee;
2519 border: 1px solid #eeeeee;
2513 width: 100%;
2520 width: 100%;
2514 float: left;
2521 float: left;
2515
2522
2516 .breadcrumb-path {
2523 .breadcrumb-path {
2517 line-height: 30px;
2524 line-height: 30px;
2518 padding: 0 4px;
2525 padding: 0 4px;
2519 white-space: nowrap;
2526 white-space: nowrap;
2520 }
2527 }
2521
2528
2522 .location-path {
2529 .location-path {
2523 width: -moz-available; /* WebKit-based browsers will ignore this. */
2530 width: -moz-available; /* WebKit-based browsers will ignore this. */
2524 width: -webkit-fill-available; /* Mozilla-based browsers will ignore this. */
2531 width: -webkit-fill-available; /* Mozilla-based browsers will ignore this. */
2525 width: fill-available;
2532 width: fill-available;
2526
2533
2527 .file-name-input {
2534 .file-name-input {
2528 padding: 0.5em 0;
2535 padding: 0.5em 0;
2529 }
2536 }
2530
2537
2531 }
2538 }
2532
2539
2533 ul {
2540 ul {
2534 display: flex;
2541 display: flex;
2535 margin: 0;
2542 margin: 0;
2536 padding: 0;
2543 padding: 0;
2537 width: 100%;
2544 width: 100%;
2538 }
2545 }
2539
2546
2540 li {
2547 li {
2541 list-style-type: none;
2548 list-style-type: none;
2542 }
2549 }
2543
2550
2544 }
2551 }
2545
2552
2546 .editor-items {
2553 .editor-items {
2547 height: 40px;
2554 height: 40px;
2548 margin: 10px 0 -17px 10px;
2555 margin: 10px 0 -17px 10px;
2549
2556
2550 .editor-action {
2557 .editor-action {
2551 cursor: pointer;
2558 cursor: pointer;
2552 }
2559 }
2553
2560
2554 .editor-action.active {
2561 .editor-action.active {
2555 border-bottom: 2px solid #5C5C5C;
2562 border-bottom: 2px solid #5C5C5C;
2556 }
2563 }
2557
2564
2558 li {
2565 li {
2559 list-style-type: none;
2566 list-style-type: none;
2560 }
2567 }
2561 }
2568 }
2562
2569
2563 .edit-file-fieldset .message textarea {
2570 .edit-file-fieldset .message textarea {
2564 border: 1px solid #eeeeee;
2571 border: 1px solid #eeeeee;
2565 }
2572 }
2566
2573
2567 #files_data .codeblock {
2574 #files_data .codeblock {
2568 background-color: #F5F5F5;
2575 background-color: #F5F5F5;
2569 }
2576 }
2570
2577
2571 #editor_preview {
2578 #editor_preview {
2572 background: white;
2579 background: white;
2573 }
2580 }
2574
2581
2575 .show-editor {
2582 .show-editor {
2576 padding: 10px;
2583 padding: 10px;
2577 background-color: white;
2584 background-color: white;
2578
2585
2579 }
2586 }
2580
2587
2581 .show-preview {
2588 .show-preview {
2582 padding: 10px;
2589 padding: 10px;
2583 background-color: white;
2590 background-color: white;
2584 border-left: 1px solid #eeeeee;
2591 border-left: 1px solid #eeeeee;
2585 }
2592 }
2586 // quick filter
2593 // quick filter
2587 .grid-quick-filter {
2594 .grid-quick-filter {
2588 float: right;
2595 float: right;
2589 position: relative;
2596 position: relative;
2590 }
2597 }
2591
2598
2592 .grid-filter-box {
2599 .grid-filter-box {
2593 display: flex;
2600 display: flex;
2594 padding: 0px;
2601 padding: 0px;
2595 border-radius: 3px;
2602 border-radius: 3px;
2596 margin-bottom: 0;
2603 margin-bottom: 0;
2597
2604
2598 a {
2605 a {
2599 border: none !important;
2606 border: none !important;
2600 }
2607 }
2601
2608
2602 li {
2609 li {
2603 list-style-type: none
2610 list-style-type: none
2604 }
2611 }
2605 }
2612 }
2606
2613
2607 .grid-filter-box-icon {
2614 .grid-filter-box-icon {
2608 line-height: 33px;
2615 line-height: 33px;
2609 padding: 0;
2616 padding: 0;
2610 width: 20px;
2617 width: 20px;
2611 position: absolute;
2618 position: absolute;
2612 z-index: 11;
2619 z-index: 11;
2613 left: 5px;
2620 left: 5px;
2614 }
2621 }
2615
2622
2616 .grid-filter-box-input {
2623 .grid-filter-box-input {
2617 margin-right: 0;
2624 margin-right: 0;
2618
2625
2619 input {
2626 input {
2620 border: 1px solid @white;
2627 border: 1px solid @white;
2621 padding-left: 25px;
2628 padding-left: 25px;
2622 width: 145px;
2629 width: 145px;
2623
2630
2624 &:hover {
2631 &:hover {
2625 border-color: @grey6;
2632 border-color: @grey6;
2626 }
2633 }
2627
2634
2628 &:focus {
2635 &:focus {
2629 border-color: @grey5;
2636 border-color: @grey5;
2630 }
2637 }
2631 }
2638 }
2632 }
2639 }
2633
2640
2634
2641
2635
2642
2636 // Search
2643 // Search
2637
2644
2638 .search-form{
2645 .search-form{
2639 #q {
2646 #q {
2640 width: @search-form-width;
2647 width: @search-form-width;
2641 }
2648 }
2642 .fields{
2649 .fields{
2643 margin: 0 0 @space;
2650 margin: 0 0 @space;
2644 }
2651 }
2645
2652
2646 label{
2653 label{
2647 display: inline-block;
2654 display: inline-block;
2648 margin-right: @textmargin;
2655 margin-right: @textmargin;
2649 padding-top: 0.25em;
2656 padding-top: 0.25em;
2650 }
2657 }
2651
2658
2652
2659
2653 .results{
2660 .results{
2654 clear: both;
2661 clear: both;
2655 margin: 0 0 @padding;
2662 margin: 0 0 @padding;
2656 }
2663 }
2657
2664
2658 .search-tags {
2665 .search-tags {
2659 padding: 5px 0;
2666 padding: 5px 0;
2660 }
2667 }
2661 }
2668 }
2662
2669
2663 div.search-feedback-items {
2670 div.search-feedback-items {
2664 display: inline-block;
2671 display: inline-block;
2665 }
2672 }
2666
2673
2667 div.search-code-body {
2674 div.search-code-body {
2668 background-color: #ffffff; padding: 5px 0 5px 10px;
2675 background-color: #ffffff; padding: 5px 0 5px 10px;
2669 pre {
2676 pre {
2670 .match { background-color: #faffa6;}
2677 .match { background-color: #faffa6;}
2671 .break { display: block; width: 100%; background-color: #DDE7EF; color: #747474; }
2678 .break { display: block; width: 100%; background-color: #DDE7EF; color: #747474; }
2672 }
2679 }
2673 }
2680 }
2674
2681
2675 .expand_commit.search {
2682 .expand_commit.search {
2676 .show_more.open {
2683 .show_more.open {
2677 height: auto;
2684 height: auto;
2678 max-height: none;
2685 max-height: none;
2679 }
2686 }
2680 }
2687 }
2681
2688
2682 .search-results {
2689 .search-results {
2683
2690
2684 h2 {
2691 h2 {
2685 margin-bottom: 0;
2692 margin-bottom: 0;
2686 }
2693 }
2687 .codeblock {
2694 .codeblock {
2688 border: none;
2695 border: none;
2689 background: transparent;
2696 background: transparent;
2690 }
2697 }
2691
2698
2692 .codeblock-header {
2699 .codeblock-header {
2693 border: none;
2700 border: none;
2694 background: transparent;
2701 background: transparent;
2695 }
2702 }
2696
2703
2697 .code-body {
2704 .code-body {
2698 border: @border-thickness solid @grey6;
2705 border: @border-thickness solid @grey6;
2699 .border-radius(@border-radius);
2706 .border-radius(@border-radius);
2700 }
2707 }
2701
2708
2702 .td-commit {
2709 .td-commit {
2703 &:extend(pre);
2710 &:extend(pre);
2704 border-bottom: @border-thickness solid @border-default-color;
2711 border-bottom: @border-thickness solid @border-default-color;
2705 }
2712 }
2706
2713
2707 .message {
2714 .message {
2708 height: auto;
2715 height: auto;
2709 max-width: 350px;
2716 max-width: 350px;
2710 white-space: normal;
2717 white-space: normal;
2711 text-overflow: initial;
2718 text-overflow: initial;
2712 overflow: visible;
2719 overflow: visible;
2713
2720
2714 .match { background-color: #faffa6;}
2721 .match { background-color: #faffa6;}
2715 .break { background-color: #DDE7EF; width: 100%; color: #747474; display: block; }
2722 .break { background-color: #DDE7EF; width: 100%; color: #747474; display: block; }
2716 }
2723 }
2717
2724
2718 .path {
2725 .path {
2719 border-bottom: none !important;
2726 border-bottom: none !important;
2720 border-left: 1px solid @grey6 !important;
2727 border-left: 1px solid @grey6 !important;
2721 border-right: 1px solid @grey6 !important;
2728 border-right: 1px solid @grey6 !important;
2722 }
2729 }
2723 }
2730 }
2724
2731
2725 table.rctable td.td-search-results div {
2732 table.rctable td.td-search-results div {
2726 max-width: 100%;
2733 max-width: 100%;
2727 }
2734 }
2728
2735
2729 #tip-box, .tip-box{
2736 #tip-box, .tip-box{
2730 padding: @menupadding/2;
2737 padding: @menupadding/2;
2731 display: block;
2738 display: block;
2732 border: @border-thickness solid @border-highlight-color;
2739 border: @border-thickness solid @border-highlight-color;
2733 .border-radius(@border-radius);
2740 .border-radius(@border-radius);
2734 background-color: white;
2741 background-color: white;
2735 z-index: 99;
2742 z-index: 99;
2736 white-space: pre-wrap;
2743 white-space: pre-wrap;
2737 }
2744 }
2738
2745
2739 #linktt {
2746 #linktt {
2740 width: 79px;
2747 width: 79px;
2741 }
2748 }
2742
2749
2743 #help_kb .modal-content{
2750 #help_kb .modal-content{
2744 max-width: 750px;
2751 max-width: 750px;
2745 margin: 10% auto;
2752 margin: 10% auto;
2746
2753
2747 table{
2754 table{
2748 td,th{
2755 td,th{
2749 border-bottom: none;
2756 border-bottom: none;
2750 line-height: 2.5em;
2757 line-height: 2.5em;
2751 }
2758 }
2752 th{
2759 th{
2753 padding-bottom: @textmargin/2;
2760 padding-bottom: @textmargin/2;
2754 }
2761 }
2755 td.keys{
2762 td.keys{
2756 text-align: center;
2763 text-align: center;
2757 }
2764 }
2758 }
2765 }
2759
2766
2760 .block-left{
2767 .block-left{
2761 width: 45%;
2768 width: 45%;
2762 margin-right: 5%;
2769 margin-right: 5%;
2763 }
2770 }
2764 .modal-footer{
2771 .modal-footer{
2765 clear: both;
2772 clear: both;
2766 }
2773 }
2767 .key.tag{
2774 .key.tag{
2768 padding: 0.5em;
2775 padding: 0.5em;
2769 background-color: @rcblue;
2776 background-color: @rcblue;
2770 color: white;
2777 color: white;
2771 border-color: @rcblue;
2778 border-color: @rcblue;
2772 .box-shadow(none);
2779 .box-shadow(none);
2773 }
2780 }
2774 }
2781 }
2775
2782
2776
2783
2777
2784
2778 //--- IMPORTS FOR REFACTORED STYLES ------------------//
2785 //--- IMPORTS FOR REFACTORED STYLES ------------------//
2779
2786
2780 @import 'statistics-graph';
2787 @import 'statistics-graph';
2781 @import 'tables';
2788 @import 'tables';
2782 @import 'forms';
2789 @import 'forms';
2783 @import 'diff';
2790 @import 'diff';
2784 @import 'summary';
2791 @import 'summary';
2785 @import 'navigation';
2792 @import 'navigation';
2786
2793
2787 //--- SHOW/HIDE SECTIONS --//
2794 //--- SHOW/HIDE SECTIONS --//
2788
2795
2789 .btn-collapse {
2796 .btn-collapse {
2790 float: right;
2797 float: right;
2791 text-align: right;
2798 text-align: right;
2792 font-family: @text-light;
2799 font-family: @text-light;
2793 font-size: @basefontsize;
2800 font-size: @basefontsize;
2794 cursor: pointer;
2801 cursor: pointer;
2795 border: none;
2802 border: none;
2796 color: @rcblue;
2803 color: @rcblue;
2797 }
2804 }
2798
2805
2799 table.rctable,
2806 table.rctable,
2800 table.dataTable {
2807 table.dataTable {
2801 .btn-collapse {
2808 .btn-collapse {
2802 float: right;
2809 float: right;
2803 text-align: right;
2810 text-align: right;
2804 }
2811 }
2805 }
2812 }
2806
2813
2807 table.rctable {
2814 table.rctable {
2808 &.permissions {
2815 &.permissions {
2809
2816
2810 th.td-owner {
2817 th.td-owner {
2811 padding: 0;
2818 padding: 0;
2812 }
2819 }
2813
2820
2814 th {
2821 th {
2815 font-weight: normal;
2822 font-weight: normal;
2816 padding: 0 5px;
2823 padding: 0 5px;
2817 }
2824 }
2818
2825
2819 }
2826 }
2820 }
2827 }
2821
2828
2822
2829
2823 // TODO: johbo: Fix for IE10, this avoids that we see a border
2830 // TODO: johbo: Fix for IE10, this avoids that we see a border
2824 // and padding around checkboxes and radio boxes. Move to the right place,
2831 // and padding around checkboxes and radio boxes. Move to the right place,
2825 // or better: Remove this once we did the form refactoring.
2832 // or better: Remove this once we did the form refactoring.
2826 input[type=checkbox],
2833 input[type=checkbox],
2827 input[type=radio] {
2834 input[type=radio] {
2828 padding: 0;
2835 padding: 0;
2829 border: none;
2836 border: none;
2830 }
2837 }
2831
2838
2832 .toggle-ajax-spinner{
2839 .toggle-ajax-spinner{
2833 height: 16px;
2840 height: 16px;
2834 width: 16px;
2841 width: 16px;
2835 }
2842 }
2836
2843
2837
2844
2838 .markup-form .clearfix {
2845 .markup-form .clearfix {
2839 .border-radius(@border-radius);
2846 .border-radius(@border-radius);
2840 margin: 0px;
2847 margin: 0px;
2841 }
2848 }
2842
2849
2843 .markup-form-area {
2850 .markup-form-area {
2844 padding: 8px 12px;
2851 padding: 8px 12px;
2845 border: 1px solid @grey4;
2852 border: 1px solid @grey4;
2846 .border-radius(@border-radius);
2853 .border-radius(@border-radius);
2847 }
2854 }
2848
2855
2849 .markup-form-area-header .nav-links {
2856 .markup-form-area-header .nav-links {
2850 display: flex;
2857 display: flex;
2851 flex-flow: row wrap;
2858 flex-flow: row wrap;
2852 -webkit-flex-flow: row wrap;
2859 -webkit-flex-flow: row wrap;
2853 width: 100%;
2860 width: 100%;
2854 }
2861 }
2855
2862
2856 .markup-form-area-footer {
2863 .markup-form-area-footer {
2857 display: flex;
2864 display: flex;
2858 }
2865 }
2859
2866
2860 .markup-form-area-footer .toolbar {
2867 .markup-form-area-footer .toolbar {
2861
2868
2862 }
2869 }
2863
2870
2864 // markup Form
2871 // markup Form
2865 div.markup-form {
2872 div.markup-form {
2866 margin-top: 20px;
2873 margin-top: 20px;
2867 }
2874 }
2868
2875
2869 .markup-form strong {
2876 .markup-form strong {
2870 display: block;
2877 display: block;
2871 margin-bottom: 15px;
2878 margin-bottom: 15px;
2872 }
2879 }
2873
2880
2874 .markup-form textarea {
2881 .markup-form textarea {
2875 width: 100%;
2882 width: 100%;
2876 height: 100px;
2883 height: 100px;
2877 font-family: @text-monospace;
2884 font-family: @text-monospace;
2878 }
2885 }
2879
2886
2880 form.markup-form {
2887 form.markup-form {
2881 margin-top: 10px;
2888 margin-top: 10px;
2882 margin-left: 10px;
2889 margin-left: 10px;
2883 }
2890 }
2884
2891
2885 .markup-form .comment-block-ta,
2892 .markup-form .comment-block-ta,
2886 .markup-form .preview-box {
2893 .markup-form .preview-box {
2887 .border-radius(@border-radius);
2894 .border-radius(@border-radius);
2888 .box-sizing(border-box);
2895 .box-sizing(border-box);
2889 background-color: white;
2896 background-color: white;
2890 }
2897 }
2891
2898
2892 .markup-form .preview-box.unloaded {
2899 .markup-form .preview-box.unloaded {
2893 height: 50px;
2900 height: 50px;
2894 text-align: center;
2901 text-align: center;
2895 padding: 20px;
2902 padding: 20px;
2896 background-color: white;
2903 background-color: white;
2897 }
2904 }
2898
2905
2899
2906
2900 .dropzone-wrapper {
2907 .dropzone-wrapper {
2901 border: 1px solid @grey5;
2908 border: 1px solid @grey5;
2902 padding: 20px;
2909 padding: 20px;
2903 }
2910 }
2904
2911
2905 .dropzone,
2912 .dropzone,
2906 .dropzone-pure {
2913 .dropzone-pure {
2907 border: 2px dashed @grey5;
2914 border: 2px dashed @grey5;
2908 border-radius: 5px;
2915 border-radius: 5px;
2909 background: white;
2916 background: white;
2910 min-height: 200px;
2917 min-height: 200px;
2911 padding: 54px;
2918 padding: 54px;
2912
2919
2913 .dz-message {
2920 .dz-message {
2914 font-weight: 700;
2921 font-weight: 700;
2915 text-align: center;
2922 text-align: center;
2916 margin: 2em 0;
2923 margin: 2em 0;
2917 }
2924 }
2918
2925
2919 }
2926 }
2920
2927
2921 .dz-preview {
2928 .dz-preview {
2922 margin: 10px 0 !important;
2929 margin: 10px 0 !important;
2923 position: relative;
2930 position: relative;
2924 vertical-align: top;
2931 vertical-align: top;
2925 padding: 10px;
2932 padding: 10px;
2926 border-bottom: 1px solid @grey5;
2933 border-bottom: 1px solid @grey5;
2927 }
2934 }
2928
2935
2929 .dz-filename {
2936 .dz-filename {
2930 font-weight: 700;
2937 font-weight: 700;
2931 float: left;
2938 float: left;
2932 }
2939 }
2933
2940
2934 .dz-sending {
2941 .dz-sending {
2935 float: right;
2942 float: right;
2936 }
2943 }
2937
2944
2938 .dz-response {
2945 .dz-response {
2939 clear: both
2946 clear: both
2940 }
2947 }
2941
2948
2942 .dz-filename-size {
2949 .dz-filename-size {
2943 float: right
2950 float: right
2944 }
2951 }
2945
2952
2946 .dz-error-message {
2953 .dz-error-message {
2947 color: @alert2;
2954 color: @alert2;
2948 padding-top: 10px;
2955 padding-top: 10px;
2949 clear: both;
2956 clear: both;
2950 }
2957 }
2951
2958
2952
2959
2953 .user-hovercard {
2960 .user-hovercard {
2954 padding: 5px;
2961 padding: 5px;
2955 }
2962 }
2956
2963
2957 .user-hovercard-icon {
2964 .user-hovercard-icon {
2958 display: inline;
2965 display: inline;
2959 padding: 0;
2966 padding: 0;
2960 box-sizing: content-box;
2967 box-sizing: content-box;
2961 border-radius: 50%;
2968 border-radius: 50%;
2962 float: left;
2969 float: left;
2963 }
2970 }
2964
2971
2965 .user-hovercard-name {
2972 .user-hovercard-name {
2966 float: right;
2973 float: right;
2967 vertical-align: top;
2974 vertical-align: top;
2968 padding-left: 10px;
2975 padding-left: 10px;
2969 min-width: 150px;
2976 min-width: 150px;
2970 }
2977 }
2971
2978
2972 .user-hovercard-bio {
2979 .user-hovercard-bio {
2973 clear: both;
2980 clear: both;
2974 padding-top: 10px;
2981 padding-top: 10px;
2975 }
2982 }
2976
2983
2977 .user-hovercard-header {
2984 .user-hovercard-header {
2978 clear: both;
2985 clear: both;
2979 min-height: 10px;
2986 min-height: 10px;
2980 }
2987 }
2981
2988
2982 .user-hovercard-footer {
2989 .user-hovercard-footer {
2983 clear: both;
2990 clear: both;
2984 min-height: 10px;
2991 min-height: 10px;
2985 }
2992 }
2986
2993
2987 .user-group-hovercard {
2994 .user-group-hovercard {
2988 padding: 5px;
2995 padding: 5px;
2989 }
2996 }
2990
2997
2991 .user-group-hovercard-icon {
2998 .user-group-hovercard-icon {
2992 display: inline;
2999 display: inline;
2993 padding: 0;
3000 padding: 0;
2994 box-sizing: content-box;
3001 box-sizing: content-box;
2995 border-radius: 50%;
3002 border-radius: 50%;
2996 float: left;
3003 float: left;
2997 }
3004 }
2998
3005
2999 .user-group-hovercard-name {
3006 .user-group-hovercard-name {
3000 float: left;
3007 float: left;
3001 vertical-align: top;
3008 vertical-align: top;
3002 padding-left: 10px;
3009 padding-left: 10px;
3003 min-width: 150px;
3010 min-width: 150px;
3004 }
3011 }
3005
3012
3006 .user-group-hovercard-icon i {
3013 .user-group-hovercard-icon i {
3007 border: 1px solid @grey4;
3014 border: 1px solid @grey4;
3008 border-radius: 4px;
3015 border-radius: 4px;
3009 }
3016 }
3010
3017
3011 .user-group-hovercard-bio {
3018 .user-group-hovercard-bio {
3012 clear: both;
3019 clear: both;
3013 padding-top: 10px;
3020 padding-top: 10px;
3014 line-height: 1.0em;
3021 line-height: 1.0em;
3015 }
3022 }
3016
3023
3017 .user-group-hovercard-header {
3024 .user-group-hovercard-header {
3018 clear: both;
3025 clear: both;
3019 min-height: 10px;
3026 min-height: 10px;
3020 }
3027 }
3021
3028
3022 .user-group-hovercard-footer {
3029 .user-group-hovercard-footer {
3023 clear: both;
3030 clear: both;
3024 min-height: 10px;
3031 min-height: 10px;
3025 }
3032 }
3026
3033
3027 .pr-hovercard-header {
3034 .pr-hovercard-header {
3028 clear: both;
3035 clear: both;
3029 display: block;
3036 display: block;
3030 line-height: 20px;
3037 line-height: 20px;
3031 }
3038 }
3032
3039
3033 .pr-hovercard-user {
3040 .pr-hovercard-user {
3034 display: flex;
3041 display: flex;
3035 align-items: center;
3042 align-items: center;
3036 padding-left: 5px;
3043 padding-left: 5px;
3037 }
3044 }
3038
3045
3039 .pr-hovercard-title {
3046 .pr-hovercard-title {
3040 padding-top: 5px;
3047 padding-top: 5px;
3041 } No newline at end of file
3048 }
@@ -1,19 +1,18 b''
1 <%page args="config"/>
1 <%page args="config"/>
2
2
3 <script>
3 <script>
4 var CHANNELSTREAM_URLS = ${config['url_gen'](request)|n};
4 var CHANNELSTREAM_URLS = ${config['url_gen'](request)|n};
5 %if request.registry.rhodecode_plugins['channelstream']['enabled'] and getattr(c.rhodecode_user, 'username', '') != h.DEFAULT_USER:
5 %if request.registry.rhodecode_plugins['channelstream']['enabled'] and getattr(c.rhodecode_user, 'username', '') != h.DEFAULT_USER:
6 var CHANNELSTREAM_SETTINGS = {
6 var CHANNELSTREAM_SETTINGS = {
7 'enabled': true,
7 'enabled': true,
8 'ws_location': '${request.registry.settings.get('channelstream.ws_url')}',
8 'ws_location': '${request.registry.settings.get('channelstream.ws_url')}',
9 'webapp_location': '${h.route_url('home').rstrip('/')}'
9 'webapp_location': '${h.route_url('home').rstrip('/')}'
10 };
10 };
11 %else:
11 %else:
12 var CHANNELSTREAM_SETTINGS = {
12 var CHANNELSTREAM_SETTINGS = {
13 'enabled':false,
13 'enabled':false,
14 'ws_location': '',
14 'ws_location': '',
15 'webapp_location': '${h.route_url('home').rstrip('/')}'
15 'webapp_location': '${h.route_url('home').rstrip('/')}'
16 };
16 };
17 %endif
17 %endif
18
19 </script>
18 </script>
@@ -1,912 +1,911 b''
1 <%inherit file="/base/base.mako"/>
1 <%inherit file="/base/base.mako"/>
2 <%namespace name="base" file="/base/base.mako"/>
2 <%namespace name="base" file="/base/base.mako"/>
3 <%namespace name="dt" file="/data_table/_dt_elements.mako"/>
3 <%namespace name="dt" file="/data_table/_dt_elements.mako"/>
4
4
5 <%def name="title()">
5 <%def name="title()">
6 ${_('{} Pull Request !{}').format(c.repo_name, c.pull_request.pull_request_id)}
6 ${_('{} Pull Request !{}').format(c.repo_name, c.pull_request.pull_request_id)}
7 %if c.rhodecode_name:
7 %if c.rhodecode_name:
8 &middot; ${h.branding(c.rhodecode_name)}
8 &middot; ${h.branding(c.rhodecode_name)}
9 %endif
9 %endif
10 </%def>
10 </%def>
11
11
12 <%def name="breadcrumbs_links()">
12 <%def name="breadcrumbs_links()">
13
13
14 <div id="pr-title">
15 % if c.pull_request.is_closed():
16 <span class="pr-title-closed-tag tag">${_('Closed')}</span>
17 % endif
18 <input class="pr-title-input large disabled" disabled="disabled" name="pullrequest_title" type="text" value="${c.pull_request.title}">
19 </div>
20 <div id="pr-title-edit" class="input" style="display: none;">
21 <input class="pr-title-input large" id="pr-title-input" name="pullrequest_title" type="text" value="${c.pull_request.title}">
22 </div>
23 </%def>
14 </%def>
24
15
25 <%def name="menu_bar_nav()">
16 <%def name="menu_bar_nav()">
26 ${self.menu_items(active='repositories')}
17 ${self.menu_items(active='repositories')}
27 </%def>
18 </%def>
28
19
29 <%def name="menu_bar_subnav()">
20 <%def name="menu_bar_subnav()">
30 ${self.repo_menu(active='showpullrequest')}
21 ${self.repo_menu(active='showpullrequest')}
31 </%def>
22 </%def>
32
23
33 <%def name="main()">
24 <%def name="main()">
34
25
35 <script type="text/javascript">
26 <script type="text/javascript">
36 // TODO: marcink switch this to pyroutes
27 // TODO: marcink switch this to pyroutes
37 AJAX_COMMENT_DELETE_URL = "${h.route_path('pullrequest_comment_delete',repo_name=c.repo_name,pull_request_id=c.pull_request.pull_request_id,comment_id='__COMMENT_ID__')}";
28 AJAX_COMMENT_DELETE_URL = "${h.route_path('pullrequest_comment_delete',repo_name=c.repo_name,pull_request_id=c.pull_request.pull_request_id,comment_id='__COMMENT_ID__')}";
38 templateContext.pull_request_data.pull_request_id = ${c.pull_request.pull_request_id};
29 templateContext.pull_request_data.pull_request_id = ${c.pull_request.pull_request_id};
39 </script>
30 </script>
40
31
41 <div class="box">
32 <div class="box">
42
33
43 ${self.breadcrumbs()}
44
45 <div class="box pr-summary">
34 <div class="box pr-summary">
46
35
47 <div class="summary-details block-left">
36 <div class="summary-details block-left">
37 <div id="pr-title">
38 % if c.pull_request.is_closed():
39 <span class="pr-title-closed-tag tag">${_('Closed')}</span>
40 % endif
41 <input class="pr-title-input large disabled" disabled="disabled" name="pullrequest_title" type="text" value="${c.pull_request.title}">
42 </div>
43 <div id="pr-title-edit" class="input" style="display: none;">
44 <input class="pr-title-input large" id="pr-title-input" name="pullrequest_title" type="text" value="${c.pull_request.title}">
45 </div>
46
48 <% summary = lambda n:{False:'summary-short'}.get(n) %>
47 <% summary = lambda n:{False:'summary-short'}.get(n) %>
49 <div class="pr-details-title">
48 <div class="pr-details-title">
50 <div class="pull-left">
49 <div class="pull-left">
51 <a href="${h.route_path('pull_requests_global', pull_request_id=c.pull_request.pull_request_id)}">${_('Pull request !{}').format(c.pull_request.pull_request_id)}</a>
50 <a href="${h.route_path('pull_requests_global', pull_request_id=c.pull_request.pull_request_id)}">${_('Pull request !{}').format(c.pull_request.pull_request_id)}</a>
52 ${_('Created on')}
51 ${_('Created on')}
53 <span class="tooltip" title="${_('Last updated on')} ${h.format_date(c.pull_request.updated_on)}">${h.format_date(c.pull_request.created_on)},</span>
52 <span class="tooltip" title="${_('Last updated on')} ${h.format_date(c.pull_request.updated_on)}">${h.format_date(c.pull_request.created_on)},</span>
54 <span class="pr-details-title-author-pref">${_('by')}</span>
53 <span class="pr-details-title-author-pref">${_('by')}</span>
55 </div>
54 </div>
56
55
57 <div class="pull-left">
56 <div class="pull-left">
58 ${self.gravatar_with_user(c.pull_request.author.email, 16, tooltip=True)}
57 ${self.gravatar_with_user(c.pull_request.author.email, 16, tooltip=True)}
59 </div>
58 </div>
60
59
61 %if c.allowed_to_update:
60 %if c.allowed_to_update:
62 <div class="pull-right">
61 <div class="pull-right">
63 <div id="edit_pull_request" class="action_button pr-save" style="display: none;">${_('Update title & description')}</div>
62 <div id="edit_pull_request" class="action_button pr-save" style="display: none;">${_('Update title & description')}</div>
64 <div id="delete_pullrequest" class="action_button pr-save ${('' if c.allowed_to_delete else 'disabled' )}" style="display: none;">
63 <div id="delete_pullrequest" class="action_button pr-save ${('' if c.allowed_to_delete else 'disabled' )}" style="display: none;">
65 % if c.allowed_to_delete:
64 % if c.allowed_to_delete:
66 ${h.secure_form(h.route_path('pullrequest_delete', repo_name=c.pull_request.target_repo.repo_name, pull_request_id=c.pull_request.pull_request_id), request=request)}
65 ${h.secure_form(h.route_path('pullrequest_delete', repo_name=c.pull_request.target_repo.repo_name, pull_request_id=c.pull_request.pull_request_id), request=request)}
67 ${h.submit('remove_%s' % c.pull_request.pull_request_id, _('Delete pull request'),
66 ${h.submit('remove_%s' % c.pull_request.pull_request_id, _('Delete pull request'),
68 class_="btn btn-link btn-danger no-margin",onclick="return confirm('"+_('Confirm to delete this pull request')+"');")}
67 class_="btn btn-link btn-danger no-margin",onclick="return confirm('"+_('Confirm to delete this pull request')+"');")}
69 ${h.end_form()}
68 ${h.end_form()}
70 % else:
69 % else:
71 <span class="tooltip" title="${_('Not allowed to delete this pull request')}">${_('Delete pull request')}</span>
70 <span class="tooltip" title="${_('Not allowed to delete this pull request')}">${_('Delete pull request')}</span>
72 % endif
71 % endif
73 </div>
72 </div>
74 <div id="open_edit_pullrequest" class="action_button">${_('Edit')}</div>
73 <div id="open_edit_pullrequest" class="action_button">${_('Edit')}</div>
75 <div id="close_edit_pullrequest" class="action_button" style="display: none;">${_('Cancel')}</div>
74 <div id="close_edit_pullrequest" class="action_button" style="display: none;">${_('Cancel')}</div>
76 </div>
75 </div>
77
76
78 %endif
77 %endif
79 </div>
78 </div>
80
79
81 <div id="pr-desc" class="input" title="${_('Rendered using {} renderer').format(c.renderer)}">
80 <div id="pr-desc" class="input" title="${_('Rendered using {} renderer').format(c.renderer)}">
82 ${h.render(c.pull_request.description, renderer=c.renderer, repo_name=c.repo_name)}
81 ${h.render(c.pull_request.description, renderer=c.renderer, repo_name=c.repo_name)}
83 </div>
82 </div>
84
83
85 <div id="pr-desc-edit" class="input textarea" style="display: none;">
84 <div id="pr-desc-edit" class="input textarea" style="display: none;">
86 <input id="pr-renderer-input" type="hidden" name="description_renderer" value="${c.visual.default_renderer}">
85 <input id="pr-renderer-input" type="hidden" name="description_renderer" value="${c.visual.default_renderer}">
87 ${dt.markup_form('pr-description-input', form_text=c.pull_request.description)}
86 ${dt.markup_form('pr-description-input', form_text=c.pull_request.description)}
88 </div>
87 </div>
89
88
90 <div id="summary" class="fields pr-details-content">
89 <div id="summary" class="fields pr-details-content">
91
90
92 ## review
91 ## review
93 <div class="field">
92 <div class="field">
94 <div class="label-pr-detail">
93 <div class="label-pr-detail">
95 <label>${_('Review status')}:</label>
94 <label>${_('Review status')}:</label>
96 </div>
95 </div>
97 <div class="input">
96 <div class="input">
98 %if c.pull_request_review_status:
97 %if c.pull_request_review_status:
99 <div class="tag status-tag-${c.pull_request_review_status}">
98 <div class="tag status-tag-${c.pull_request_review_status}">
100 <i class="icon-circle review-status-${c.pull_request_review_status}"></i>
99 <i class="icon-circle review-status-${c.pull_request_review_status}"></i>
101 <span class="changeset-status-lbl">
100 <span class="changeset-status-lbl">
102 %if c.pull_request.is_closed():
101 %if c.pull_request.is_closed():
103 ${_('Closed')},
102 ${_('Closed')},
104 %endif
103 %endif
105
104
106 ${h.commit_status_lbl(c.pull_request_review_status)}
105 ${h.commit_status_lbl(c.pull_request_review_status)}
107
106
108 </span>
107 </span>
109 </div>
108 </div>
110 - ${_ungettext('calculated based on {} reviewer vote', 'calculated based on {} reviewers votes', len(c.pull_request_reviewers)).format(len(c.pull_request_reviewers))}
109 - ${_ungettext('calculated based on {} reviewer vote', 'calculated based on {} reviewers votes', len(c.pull_request_reviewers)).format(len(c.pull_request_reviewers))}
111 %endif
110 %endif
112 </div>
111 </div>
113 </div>
112 </div>
114
113
115 ## source
114 ## source
116 <div class="field">
115 <div class="field">
117 <div class="label-pr-detail">
116 <div class="label-pr-detail">
118 <label>${_('Commit flow')}:</label>
117 <label>${_('Commit flow')}:</label>
119 </div>
118 </div>
120 <div class="input">
119 <div class="input">
121 <div class="pr-commit-flow">
120 <div class="pr-commit-flow">
122 ## Source
121 ## Source
123 %if c.pull_request.source_ref_parts.type == 'branch':
122 %if c.pull_request.source_ref_parts.type == 'branch':
124 <a href="${h.route_path('repo_commits', repo_name=c.pull_request.source_repo.repo_name, _query=dict(branch=c.pull_request.source_ref_parts.name))}"><code class="pr-source-info">${c.pull_request.source_ref_parts.type}:${c.pull_request.source_ref_parts.name}</code></a>
123 <a href="${h.route_path('repo_commits', repo_name=c.pull_request.source_repo.repo_name, _query=dict(branch=c.pull_request.source_ref_parts.name))}"><code class="pr-source-info">${c.pull_request.source_ref_parts.type}:${c.pull_request.source_ref_parts.name}</code></a>
125 %else:
124 %else:
126 <code class="pr-source-info">${'{}:{}'.format(c.pull_request.source_ref_parts.type, c.pull_request.source_ref_parts.name)}</code>
125 <code class="pr-source-info">${'{}:{}'.format(c.pull_request.source_ref_parts.type, c.pull_request.source_ref_parts.name)}</code>
127 %endif
126 %endif
128 ${_('of')} <a href="${h.route_path('repo_summary', repo_name=c.pull_request.source_repo.repo_name)}">${c.pull_request.source_repo.repo_name}</a>
127 ${_('of')} <a href="${h.route_path('repo_summary', repo_name=c.pull_request.source_repo.repo_name)}">${c.pull_request.source_repo.repo_name}</a>
129 &rarr;
128 &rarr;
130 ## Target
129 ## Target
131 %if c.pull_request.target_ref_parts.type == 'branch':
130 %if c.pull_request.target_ref_parts.type == 'branch':
132 <a href="${h.route_path('repo_commits', repo_name=c.pull_request.target_repo.repo_name, _query=dict(branch=c.pull_request.target_ref_parts.name))}"><code class="pr-target-info">${c.pull_request.target_ref_parts.type}:${c.pull_request.target_ref_parts.name}</code></a>
131 <a href="${h.route_path('repo_commits', repo_name=c.pull_request.target_repo.repo_name, _query=dict(branch=c.pull_request.target_ref_parts.name))}"><code class="pr-target-info">${c.pull_request.target_ref_parts.type}:${c.pull_request.target_ref_parts.name}</code></a>
133 %else:
132 %else:
134 <code class="pr-target-info">${'{}:{}'.format(c.pull_request.target_ref_parts.type, c.pull_request.target_ref_parts.name)}</code>
133 <code class="pr-target-info">${'{}:{}'.format(c.pull_request.target_ref_parts.type, c.pull_request.target_ref_parts.name)}</code>
135 %endif
134 %endif
136
135
137 ${_('of')} <a href="${h.route_path('repo_summary', repo_name=c.pull_request.target_repo.repo_name)}">${c.pull_request.target_repo.repo_name}</a>
136 ${_('of')} <a href="${h.route_path('repo_summary', repo_name=c.pull_request.target_repo.repo_name)}">${c.pull_request.target_repo.repo_name}</a>
138
137
139 <a class="source-details-action" href="#expand-source-details" onclick="return versionController.toggleElement(this, '.source-details')" data-toggle-on='<i class="icon-angle-down">more details</i>' data-toggle-off='<i class="icon-angle-up">less details</i>'>
138 <a class="source-details-action" href="#expand-source-details" onclick="return versionController.toggleElement(this, '.source-details')" data-toggle-on='<i class="icon-angle-down">more details</i>' data-toggle-off='<i class="icon-angle-up">less details</i>'>
140 <i class="icon-angle-down">more details</i>
139 <i class="icon-angle-down">more details</i>
141 </a>
140 </a>
142
141
143 </div>
142 </div>
144
143
145 <div class="source-details" style="display: none">
144 <div class="source-details" style="display: none">
146
145
147 <ul>
146 <ul>
148
147
149 ## common ancestor
148 ## common ancestor
150 <li>
149 <li>
151 ${_('Common ancestor')}:
150 ${_('Common ancestor')}:
152 % if c.ancestor_commit:
151 % if c.ancestor_commit:
153 <a href="${h.route_path('repo_commit', repo_name=c.target_repo.repo_name, commit_id=c.ancestor_commit.raw_id)}">${h.show_id(c.ancestor_commit)}</a>
152 <a href="${h.route_path('repo_commit', repo_name=c.target_repo.repo_name, commit_id=c.ancestor_commit.raw_id)}">${h.show_id(c.ancestor_commit)}</a>
154 % else:
153 % else:
155 ${_('not available')}
154 ${_('not available')}
156 % endif
155 % endif
157 </li>
156 </li>
158
157
159 ## pull url
158 ## pull url
160 <li>
159 <li>
161 %if h.is_hg(c.pull_request.source_repo):
160 %if h.is_hg(c.pull_request.source_repo):
162 <% clone_url = 'hg pull -r {} {}'.format(h.short_id(c.source_ref), c.pull_request.source_repo.clone_url()) %>
161 <% clone_url = 'hg pull -r {} {}'.format(h.short_id(c.source_ref), c.pull_request.source_repo.clone_url()) %>
163 %elif h.is_git(c.pull_request.source_repo):
162 %elif h.is_git(c.pull_request.source_repo):
164 <% clone_url = 'git pull {} {}'.format(c.pull_request.source_repo.clone_url(), c.pull_request.source_ref_parts.name) %>
163 <% clone_url = 'git pull {} {}'.format(c.pull_request.source_repo.clone_url(), c.pull_request.source_ref_parts.name) %>
165 %endif
164 %endif
166
165
167 <span>${_('Pull changes from source')}</span>: <input type="text" class="input-monospace pr-pullinfo" value="${clone_url}" readonly="readonly">
166 <span>${_('Pull changes from source')}</span>: <input type="text" class="input-monospace pr-pullinfo" value="${clone_url}" readonly="readonly">
168 <i class="tooltip icon-clipboard clipboard-action pull-right pr-pullinfo-copy" data-clipboard-text="${clone_url}" title="${_('Copy the pull url')}"></i>
167 <i class="tooltip icon-clipboard clipboard-action pull-right pr-pullinfo-copy" data-clipboard-text="${clone_url}" title="${_('Copy the pull url')}"></i>
169 </li>
168 </li>
170
169
171 ## Shadow repo
170 ## Shadow repo
172 <li>
171 <li>
173 % if not c.pull_request.is_closed() and c.pull_request.shadow_merge_ref:
172 % if not c.pull_request.is_closed() and c.pull_request.shadow_merge_ref:
174 %if h.is_hg(c.pull_request.target_repo):
173 %if h.is_hg(c.pull_request.target_repo):
175 <% clone_url = 'hg clone --update {} {} pull-request-{}'.format(c.pull_request.shadow_merge_ref.name, c.shadow_clone_url, c.pull_request.pull_request_id) %>
174 <% clone_url = 'hg clone --update {} {} pull-request-{}'.format(c.pull_request.shadow_merge_ref.name, c.shadow_clone_url, c.pull_request.pull_request_id) %>
176 %elif h.is_git(c.pull_request.target_repo):
175 %elif h.is_git(c.pull_request.target_repo):
177 <% clone_url = 'git clone --branch {} {} pull-request-{}'.format(c.pull_request.shadow_merge_ref.name, c.shadow_clone_url, c.pull_request.pull_request_id) %>
176 <% clone_url = 'git clone --branch {} {} pull-request-{}'.format(c.pull_request.shadow_merge_ref.name, c.shadow_clone_url, c.pull_request.pull_request_id) %>
178 %endif
177 %endif
179
178
180 <span class="tooltip" title="${_('Clone repository in its merged state using shadow repository')}">${_('Clone from shadow repository')}</span>: <input type="text" class="input-monospace pr-mergeinfo" value="${clone_url}" readonly="readonly">
179 <span class="tooltip" title="${_('Clone repository in its merged state using shadow repository')}">${_('Clone from shadow repository')}</span>: <input type="text" class="input-monospace pr-mergeinfo" value="${clone_url}" readonly="readonly">
181 <i class="tooltip icon-clipboard clipboard-action pull-right pr-mergeinfo-copy" data-clipboard-text="${clone_url}" title="${_('Copy the clone url')}"></i>
180 <i class="tooltip icon-clipboard clipboard-action pull-right pr-mergeinfo-copy" data-clipboard-text="${clone_url}" title="${_('Copy the clone url')}"></i>
182
181
183 % else:
182 % else:
184 <div class="">
183 <div class="">
185 ${_('Shadow repository data not available')}.
184 ${_('Shadow repository data not available')}.
186 </div>
185 </div>
187 % endif
186 % endif
188 </li>
187 </li>
189
188
190 </ul>
189 </ul>
191
190
192 </div>
191 </div>
193
192
194 </div>
193 </div>
195
194
196 </div>
195 </div>
197
196
198 ## versions
197 ## versions
199 <div class="field">
198 <div class="field">
200 <div class="label-pr-detail">
199 <div class="label-pr-detail">
201 <label>${_('Versions')}:</label>
200 <label>${_('Versions')}:</label>
202 </div>
201 </div>
203
202
204 <% outdated_comm_count_ver = len(c.inline_versions[None]['outdated']) %>
203 <% outdated_comm_count_ver = len(c.inline_versions[None]['outdated']) %>
205 <% general_outdated_comm_count_ver = len(c.comment_versions[None]['outdated']) %>
204 <% general_outdated_comm_count_ver = len(c.comment_versions[None]['outdated']) %>
206
205
207 <div class="pr-versions">
206 <div class="pr-versions">
208 % if c.show_version_changes:
207 % if c.show_version_changes:
209 <% outdated_comm_count_ver = len(c.inline_versions[c.at_version_num]['outdated']) %>
208 <% outdated_comm_count_ver = len(c.inline_versions[c.at_version_num]['outdated']) %>
210 <% general_outdated_comm_count_ver = len(c.comment_versions[c.at_version_num]['outdated']) %>
209 <% general_outdated_comm_count_ver = len(c.comment_versions[c.at_version_num]['outdated']) %>
211 ${_ungettext('{} version available for this pull request, ', '{} versions available for this pull request, ', len(c.versions)).format(len(c.versions))}
210 ${_ungettext('{} version available for this pull request, ', '{} versions available for this pull request, ', len(c.versions)).format(len(c.versions))}
212 <a id="show-pr-versions" onclick="return versionController.toggleVersionView(this)" href="#show-pr-versions"
211 <a id="show-pr-versions" onclick="return versionController.toggleVersionView(this)" href="#show-pr-versions"
213 data-toggle-on="${_('show versions')}."
212 data-toggle-on="${_('show versions')}."
214 data-toggle-off="${_('hide versions')}.">
213 data-toggle-off="${_('hide versions')}.">
215 ${_('show versions')}.
214 ${_('show versions')}.
216 </a>
215 </a>
217 <table>
216 <table>
218 ## SHOW ALL VERSIONS OF PR
217 ## SHOW ALL VERSIONS OF PR
219 <% ver_pr = None %>
218 <% ver_pr = None %>
220
219
221 % for data in reversed(list(enumerate(c.versions, 1))):
220 % for data in reversed(list(enumerate(c.versions, 1))):
222 <% ver_pos = data[0] %>
221 <% ver_pos = data[0] %>
223 <% ver = data[1] %>
222 <% ver = data[1] %>
224 <% ver_pr = ver.pull_request_version_id %>
223 <% ver_pr = ver.pull_request_version_id %>
225 <% display_row = '' if c.at_version and (c.at_version_num == ver_pr or c.from_version_num == ver_pr) else 'none' %>
224 <% display_row = '' if c.at_version and (c.at_version_num == ver_pr or c.from_version_num == ver_pr) else 'none' %>
226
225
227 <tr class="version-pr" style="display: ${display_row}">
226 <tr class="version-pr" style="display: ${display_row}">
228 <td>
227 <td>
229 <code>
228 <code>
230 <a href="${request.current_route_path(_query=dict(version=ver_pr or 'latest'))}">v${ver_pos}</a>
229 <a href="${request.current_route_path(_query=dict(version=ver_pr or 'latest'))}">v${ver_pos}</a>
231 </code>
230 </code>
232 </td>
231 </td>
233 <td>
232 <td>
234 <input ${('checked="checked"' if c.from_version_num == ver_pr else '')} class="compare-radio-button" type="radio" name="ver_source" value="${ver_pr or 'latest'}" data-ver-pos="${ver_pos}"/>
233 <input ${('checked="checked"' if c.from_version_num == ver_pr else '')} class="compare-radio-button" type="radio" name="ver_source" value="${ver_pr or 'latest'}" data-ver-pos="${ver_pos}"/>
235 <input ${('checked="checked"' if c.at_version_num == ver_pr else '')} class="compare-radio-button" type="radio" name="ver_target" value="${ver_pr or 'latest'}" data-ver-pos="${ver_pos}"/>
234 <input ${('checked="checked"' if c.at_version_num == ver_pr else '')} class="compare-radio-button" type="radio" name="ver_target" value="${ver_pr or 'latest'}" data-ver-pos="${ver_pos}"/>
236 </td>
235 </td>
237 <td>
236 <td>
238 <% review_status = c.review_versions[ver_pr].status if ver_pr in c.review_versions else 'not_reviewed' %>
237 <% review_status = c.review_versions[ver_pr].status if ver_pr in c.review_versions else 'not_reviewed' %>
239 <i class="tooltip icon-circle review-status-${review_status}" title="${_('Your review status at this version')}"></i>
238 <i class="tooltip icon-circle review-status-${review_status}" title="${_('Your review status at this version')}"></i>
240
239
241 </td>
240 </td>
242 <td>
241 <td>
243 % if c.at_version_num != ver_pr:
242 % if c.at_version_num != ver_pr:
244 <i class="tooltip icon-comment" title="${_('Comments from pull request version v{0}').format(ver_pos)}"></i>
243 <i class="tooltip icon-comment" title="${_('Comments from pull request version v{0}').format(ver_pos)}"></i>
245 <code>
244 <code>
246 General:${len(c.comment_versions[ver_pr]['at'])} / Inline:${len(c.inline_versions[ver_pr]['at'])}
245 General:${len(c.comment_versions[ver_pr]['at'])} / Inline:${len(c.inline_versions[ver_pr]['at'])}
247 </code>
246 </code>
248 % endif
247 % endif
249 </td>
248 </td>
250 <td>
249 <td>
251 ##<code>${ver.source_ref_parts.commit_id[:6]}</code>
250 ##<code>${ver.source_ref_parts.commit_id[:6]}</code>
252 </td>
251 </td>
253 <td>
252 <td>
254 <code>${h.age_component(ver.updated_on, time_is_local=True, tooltip=False)}</code>
253 <code>${h.age_component(ver.updated_on, time_is_local=True, tooltip=False)}</code>
255 </td>
254 </td>
256 </tr>
255 </tr>
257 % endfor
256 % endfor
258
257
259 <tr>
258 <tr>
260 <td colspan="6">
259 <td colspan="6">
261 <button id="show-version-diff" onclick="return versionController.showVersionDiff()" class="btn btn-sm" style="display: none"
260 <button id="show-version-diff" onclick="return versionController.showVersionDiff()" class="btn btn-sm" style="display: none"
262 data-label-text-locked="${_('select versions to show changes')}"
261 data-label-text-locked="${_('select versions to show changes')}"
263 data-label-text-diff="${_('show changes between versions')}"
262 data-label-text-diff="${_('show changes between versions')}"
264 data-label-text-show="${_('show pull request for this version')}"
263 data-label-text-show="${_('show pull request for this version')}"
265 >
264 >
266 ${_('select versions to show changes')}
265 ${_('select versions to show changes')}
267 </button>
266 </button>
268 </td>
267 </td>
269 </tr>
268 </tr>
270 </table>
269 </table>
271 % else:
270 % else:
272 <div>
271 <div>
273 ${_('Pull request versions not available')}.
272 ${_('Pull request versions not available')}.
274 </div>
273 </div>
275 % endif
274 % endif
276 </div>
275 </div>
277 </div>
276 </div>
278
277
279 </div>
278 </div>
280
279
281 </div>
280 </div>
282
281
283 ## REVIEW RULES
282 ## REVIEW RULES
284 <div id="review_rules" style="display: none" class="reviewers-title block-right">
283 <div id="review_rules" style="display: none" class="reviewers-title block-right">
285 <div class="pr-details-title">
284 <div class="pr-details-title">
286 ${_('Reviewer rules')}
285 ${_('Reviewer rules')}
287 %if c.allowed_to_update:
286 %if c.allowed_to_update:
288 <span id="close_edit_reviewers" class="block-right action_button last-item" style="display: none;">${_('Close')}</span>
287 <span id="close_edit_reviewers" class="block-right action_button last-item" style="display: none;">${_('Close')}</span>
289 %endif
288 %endif
290 </div>
289 </div>
291 <div class="pr-reviewer-rules">
290 <div class="pr-reviewer-rules">
292 ## review rules will be appended here, by default reviewers logic
291 ## review rules will be appended here, by default reviewers logic
293 </div>
292 </div>
294 <input id="review_data" type="hidden" name="review_data" value="">
293 <input id="review_data" type="hidden" name="review_data" value="">
295 </div>
294 </div>
296
295
297 ## REVIEWERS
296 ## REVIEWERS
298 <div class="reviewers-title block-right">
297 <div class="reviewers-title first-panel block-right">
299 <div class="pr-details-title">
298 <div class="pr-details-title">
300 ${_('Pull request reviewers')}
299 ${_('Pull request reviewers')}
301 %if c.allowed_to_update:
300 %if c.allowed_to_update:
302 <span id="open_edit_reviewers" class="block-right action_button last-item">${_('Edit')}</span>
301 <span id="open_edit_reviewers" class="block-right action_button last-item">${_('Edit')}</span>
303 %endif
302 %endif
304 </div>
303 </div>
305 </div>
304 </div>
306 <div id="reviewers" class="block-right pr-details-content reviewers">
305 <div id="reviewers" class="block-right pr-details-content reviewers">
307
306
308 ## members redering block
307 ## members redering block
309 <input type="hidden" name="__start__" value="review_members:sequence">
308 <input type="hidden" name="__start__" value="review_members:sequence">
310 <ul id="review_members" class="group_members">
309 <ul id="review_members" class="group_members">
311
310
312 % for review_obj, member, reasons, mandatory, status in c.pull_request_reviewers:
311 % for review_obj, member, reasons, mandatory, status in c.pull_request_reviewers:
313 <script>
312 <script>
314 var member = ${h.json.dumps(h.reviewer_as_json(member, reasons=reasons, mandatory=mandatory, user_group=review_obj.rule_user_group_data()))|n};
313 var member = ${h.json.dumps(h.reviewer_as_json(member, reasons=reasons, mandatory=mandatory, user_group=review_obj.rule_user_group_data()))|n};
315 var status = "${(status[0][1].status if status else 'not_reviewed')}";
314 var status = "${(status[0][1].status if status else 'not_reviewed')}";
316 var status_lbl = "${h.commit_status_lbl(status[0][1].status if status else 'not_reviewed')}";
315 var status_lbl = "${h.commit_status_lbl(status[0][1].status if status else 'not_reviewed')}";
317 var allowed_to_update = ${h.json.dumps(c.allowed_to_update)};
316 var allowed_to_update = ${h.json.dumps(c.allowed_to_update)};
318
317
319 var entry = renderTemplate('reviewMemberEntry', {
318 var entry = renderTemplate('reviewMemberEntry', {
320 'member': member,
319 'member': member,
321 'mandatory': member.mandatory,
320 'mandatory': member.mandatory,
322 'reasons': member.reasons,
321 'reasons': member.reasons,
323 'allowed_to_update': allowed_to_update,
322 'allowed_to_update': allowed_to_update,
324 'review_status': status,
323 'review_status': status,
325 'review_status_label': status_lbl,
324 'review_status_label': status_lbl,
326 'user_group': member.user_group,
325 'user_group': member.user_group,
327 'create': false
326 'create': false
328 });
327 });
329 $('#review_members').append(entry)
328 $('#review_members').append(entry)
330 </script>
329 </script>
331
330
332 % endfor
331 % endfor
333
332
334 </ul>
333 </ul>
335
334
336 <input type="hidden" name="__end__" value="review_members:sequence">
335 <input type="hidden" name="__end__" value="review_members:sequence">
337 ## end members redering block
336 ## end members redering block
338
337
339 %if not c.pull_request.is_closed():
338 %if not c.pull_request.is_closed():
340 <div id="add_reviewer" class="ac" style="display: none;">
339 <div id="add_reviewer" class="ac" style="display: none;">
341 %if c.allowed_to_update:
340 %if c.allowed_to_update:
342 % if not c.forbid_adding_reviewers:
341 % if not c.forbid_adding_reviewers:
343 <div id="add_reviewer_input" class="reviewer_ac">
342 <div id="add_reviewer_input" class="reviewer_ac">
344 ${h.text('user', class_='ac-input', placeholder=_('Add reviewer or reviewer group'))}
343 ${h.text('user', class_='ac-input', placeholder=_('Add reviewer or reviewer group'))}
345 <div id="reviewers_container"></div>
344 <div id="reviewers_container"></div>
346 </div>
345 </div>
347 % endif
346 % endif
348 <div class="pull-right">
347 <div class="pull-right">
349 <button id="update_pull_request" class="btn btn-small no-margin">${_('Save Changes')}</button>
348 <button id="update_pull_request" class="btn btn-small no-margin">${_('Save Changes')}</button>
350 </div>
349 </div>
351 %endif
350 %endif
352 </div>
351 </div>
353 %endif
352 %endif
354 </div>
353 </div>
355
354
356 ## TODOs will be listed here
355 ## TODOs will be listed here
357 <div class="reviewers-title block-right">
356 <div class="reviewers-title block-right">
358 <div class="pr-details-title">
357 <div class="pr-details-title">
359 ## Only show unresolved, that is only what matters
358 ## Only show unresolved, that is only what matters
360 TODO Comments - ${len(c.unresolved_comments)} / ${(len(c.unresolved_comments) + len(c.resolved_comments))}
359 TODO Comments - ${len(c.unresolved_comments)} / ${(len(c.unresolved_comments) + len(c.resolved_comments))}
361
360
362 % if not c.at_version:
361 % if not c.at_version:
363 % if c.resolved_comments:
362 % if c.resolved_comments:
364 <span class="block-right action_button last-item noselect" onclick="$('.unresolved-todo-text').toggle(); return versionController.toggleElement(this, '.unresolved-todo');" data-toggle-on="Show resolved" data-toggle-off="Hide resolved">Show resolved</span>
363 <span class="block-right action_button last-item noselect" onclick="$('.unresolved-todo-text').toggle(); return versionController.toggleElement(this, '.unresolved-todo');" data-toggle-on="Show resolved" data-toggle-off="Hide resolved">Show resolved</span>
365 % else:
364 % else:
366 <span class="block-right last-item noselect">Show resolved</span>
365 <span class="block-right last-item noselect">Show resolved</span>
367 % endif
366 % endif
368 % endif
367 % endif
369 </div>
368 </div>
370 </div>
369 </div>
371 <div class="block-right pr-details-content reviewers">
370 <div class="block-right pr-details-content reviewers">
372
371
373 <table class="todo-table">
372 <table class="todo-table">
374 <%
373 <%
375 def sorter(entry):
374 def sorter(entry):
376 user_id = entry.author.user_id
375 user_id = entry.author.user_id
377 resolved = '1' if entry.resolved else '0'
376 resolved = '1' if entry.resolved else '0'
378 if user_id == c.rhodecode_user.user_id:
377 if user_id == c.rhodecode_user.user_id:
379 # own comments first
378 # own comments first
380 user_id = 0
379 user_id = 0
381 return '{}_{}_{}'.format(resolved, user_id, str(entry.comment_id).zfill(100))
380 return '{}_{}_{}'.format(resolved, user_id, str(entry.comment_id).zfill(100))
382 %>
381 %>
383
382
384 % if c.at_version:
383 % if c.at_version:
385 <tr>
384 <tr>
386 <td class="unresolved-todo-text">${_('unresolved TODOs unavailable in this view')}.</td>
385 <td class="unresolved-todo-text">${_('unresolved TODOs unavailable in this view')}.</td>
387 </tr>
386 </tr>
388 % else:
387 % else:
389 % for todo_comment in sorted(c.unresolved_comments + c.resolved_comments, key=sorter):
388 % for todo_comment in sorted(c.unresolved_comments + c.resolved_comments, key=sorter):
390 <% resolved = todo_comment.resolved %>
389 <% resolved = todo_comment.resolved %>
391 % if inline:
390 % if inline:
392 <% outdated_at_ver = todo_comment.outdated_at_version(getattr(c, 'at_version_num', None)) %>
391 <% outdated_at_ver = todo_comment.outdated_at_version(getattr(c, 'at_version_num', None)) %>
393 % else:
392 % else:
394 <% outdated_at_ver = todo_comment.older_than_version(getattr(c, 'at_version_num', None)) %>
393 <% outdated_at_ver = todo_comment.older_than_version(getattr(c, 'at_version_num', None)) %>
395 % endif
394 % endif
396
395
397 <tr ${('class="unresolved-todo" style="display: none"' if resolved else '') |n}>
396 <tr ${('class="unresolved-todo" style="display: none"' if resolved else '') |n}>
398
397
399 <td class="td-todo-number">
398 <td class="td-todo-number">
400 % if resolved:
399 % if resolved:
401 <a class="permalink todo-resolved tooltip" title="${_('Resolved by comment #{}').format(todo_comment.resolved.comment_id)}" href="#comment-${todo_comment.comment_id}" onclick="return Rhodecode.comments.scrollToComment($('#comment-${todo_comment.comment_id}'), 0, ${h.json.dumps(outdated_at_ver)})">
400 <a class="permalink todo-resolved tooltip" title="${_('Resolved by comment #{}').format(todo_comment.resolved.comment_id)}" href="#comment-${todo_comment.comment_id}" onclick="return Rhodecode.comments.scrollToComment($('#comment-${todo_comment.comment_id}'), 0, ${h.json.dumps(outdated_at_ver)})">
402 <i class="icon-flag-filled"></i> ${todo_comment.comment_id}</a>
401 <i class="icon-flag-filled"></i> ${todo_comment.comment_id}</a>
403 % else:
402 % else:
404 <a class="permalink" href="#comment-${todo_comment.comment_id}" onclick="return Rhodecode.comments.scrollToComment($('#comment-${todo_comment.comment_id}'), 0, ${h.json.dumps(outdated_at_ver)})">
403 <a class="permalink" href="#comment-${todo_comment.comment_id}" onclick="return Rhodecode.comments.scrollToComment($('#comment-${todo_comment.comment_id}'), 0, ${h.json.dumps(outdated_at_ver)})">
405 <i class="icon-flag-filled"></i> ${todo_comment.comment_id}</a>
404 <i class="icon-flag-filled"></i> ${todo_comment.comment_id}</a>
406 % endif
405 % endif
407 </td>
406 </td>
408 <td class="td-todo-gravatar">
407 <td class="td-todo-gravatar">
409 ${base.gravatar(todo_comment.author.email, 16, user=todo_comment.author, tooltip=True, extra_class=['no-margin'])}
408 ${base.gravatar(todo_comment.author.email, 16, user=todo_comment.author, tooltip=True, extra_class=['no-margin'])}
410 </td>
409 </td>
411 <td class="todo-comment-text-wrapper">
410 <td class="todo-comment-text-wrapper">
412 <div class="todo-comment-text">
411 <div class="todo-comment-text">
413 <code>${h.chop_at_smart(todo_comment.text, '\n', suffix_if_chopped='...')}</code>
412 <code>${h.chop_at_smart(todo_comment.text, '\n', suffix_if_chopped='...')}</code>
414 </div>
413 </div>
415 </td>
414 </td>
416
415
417 </tr>
416 </tr>
418 % endfor
417 % endfor
419
418
420 % if len(c.unresolved_comments) == 0:
419 % if len(c.unresolved_comments) == 0:
421 <tr>
420 <tr>
422 <td class="unresolved-todo-text">${_('No unresolved TODOs')}.</td>
421 <td class="unresolved-todo-text">${_('No unresolved TODOs')}.</td>
423 </tr>
422 </tr>
424 % endif
423 % endif
425
424
426 % endif
425 % endif
427
426
428 </table>
427 </table>
429
428
430 </div>
429 </div>
431 </div>
430 </div>
432
431
433 </div>
432 </div>
434
433
435 <div class="box">
434 <div class="box">
436
435
437 % if c.state_progressing:
436 % if c.state_progressing:
438
437
439 <h2 style="text-align: center">
438 <h2 style="text-align: center">
440 ${_('Cannot show diff when pull request state is changing. Current progress state')}: <span class="tag tag-merge-state-${c.pull_request.state}">${c.pull_request.state}</span>
439 ${_('Cannot show diff when pull request state is changing. Current progress state')}: <span class="tag tag-merge-state-${c.pull_request.state}">${c.pull_request.state}</span>
441
440
442 % if c.is_super_admin:
441 % if c.is_super_admin:
443 <br/>
442 <br/>
444 If you think this is an error try <a href="${h.current_route_path(request, force_state='created')}">forced state reset</a> to <span class="tag tag-merge-state-created">created</span> state.
443 If you think this is an error try <a href="${h.current_route_path(request, force_state='created')}">forced state reset</a> to <span class="tag tag-merge-state-created">created</span> state.
445 % endif
444 % endif
446 </h2>
445 </h2>
447
446
448 % else:
447 % else:
449
448
450 ## Diffs rendered here
449 ## Diffs rendered here
451 <div class="table" >
450 <div class="table" >
452 <div id="changeset_compare_view_content">
451 <div id="changeset_compare_view_content">
453 ##CS
452 ##CS
454 % if c.missing_requirements:
453 % if c.missing_requirements:
455 <div class="box">
454 <div class="box">
456 <div class="alert alert-warning">
455 <div class="alert alert-warning">
457 <div>
456 <div>
458 <strong>${_('Missing requirements:')}</strong>
457 <strong>${_('Missing requirements:')}</strong>
459 ${_('These commits cannot be displayed, because this repository uses the Mercurial largefiles extension, which was not enabled.')}
458 ${_('These commits cannot be displayed, because this repository uses the Mercurial largefiles extension, which was not enabled.')}
460 </div>
459 </div>
461 </div>
460 </div>
462 </div>
461 </div>
463 % elif c.missing_commits:
462 % elif c.missing_commits:
464 <div class="box">
463 <div class="box">
465 <div class="alert alert-warning">
464 <div class="alert alert-warning">
466 <div>
465 <div>
467 <strong>${_('Missing commits')}:</strong>
466 <strong>${_('Missing commits')}:</strong>
468 ${_('This pull request cannot be displayed, because one or more commits no longer exist in the source repository.')}
467 ${_('This pull request cannot be displayed, because one or more commits no longer exist in the source repository.')}
469 ${_('Please update this pull request, push the commits back into the source repository, or consider closing this pull request.')}
468 ${_('Please update this pull request, push the commits back into the source repository, or consider closing this pull request.')}
470 ${_('Consider doing a {force_refresh_url} in case you think this is an error.').format(force_refresh_url=h.link_to('force refresh', h.current_route_path(request, force_refresh='1')))|n}
469 ${_('Consider doing a {force_refresh_url} in case you think this is an error.').format(force_refresh_url=h.link_to('force refresh', h.current_route_path(request, force_refresh='1')))|n}
471 </div>
470 </div>
472 </div>
471 </div>
473 </div>
472 </div>
474 % endif
473 % endif
475
474
476 <div class="compare_view_commits_title">
475 <div class="compare_view_commits_title">
477 % if not c.compare_mode:
476 % if not c.compare_mode:
478
477
479 % if c.at_version_pos:
478 % if c.at_version_pos:
480 <h4>
479 <h4>
481 ${_('Showing changes at v%d, commenting is disabled.') % c.at_version_pos}
480 ${_('Showing changes at v%d, commenting is disabled.') % c.at_version_pos}
482 </h4>
481 </h4>
483 % endif
482 % endif
484
483
485 <div class="pull-left">
484 <div class="pull-left">
486 <div class="btn-group">
485 <div class="btn-group">
487 <a class="${('collapsed' if c.collapse_all_commits else '')}" href="#expand-commits" onclick="toggleCommitExpand(this); return false" data-toggle-commits-cnt=${len(c.commit_ranges)} >
486 <a class="${('collapsed' if c.collapse_all_commits else '')}" href="#expand-commits" onclick="toggleCommitExpand(this); return false" data-toggle-commits-cnt=${len(c.commit_ranges)} >
488 % if c.collapse_all_commits:
487 % if c.collapse_all_commits:
489 <i class="icon-plus-squared-alt icon-no-margin"></i>
488 <i class="icon-plus-squared-alt icon-no-margin"></i>
490 ${_ungettext('Expand {} commit', 'Expand {} commits', len(c.commit_ranges)).format(len(c.commit_ranges))}
489 ${_ungettext('Expand {} commit', 'Expand {} commits', len(c.commit_ranges)).format(len(c.commit_ranges))}
491 % else:
490 % else:
492 <i class="icon-minus-squared-alt icon-no-margin"></i>
491 <i class="icon-minus-squared-alt icon-no-margin"></i>
493 ${_ungettext('Collapse {} commit', 'Collapse {} commits', len(c.commit_ranges)).format(len(c.commit_ranges))}
492 ${_ungettext('Collapse {} commit', 'Collapse {} commits', len(c.commit_ranges)).format(len(c.commit_ranges))}
494 % endif
493 % endif
495 </a>
494 </a>
496 </div>
495 </div>
497 </div>
496 </div>
498
497
499 <div class="pull-right">
498 <div class="pull-right">
500 % if c.allowed_to_update and not c.pull_request.is_closed():
499 % if c.allowed_to_update and not c.pull_request.is_closed():
501
500
502 <div class="btn-group btn-group-actions">
501 <div class="btn-group btn-group-actions">
503 <a id="update_commits" class="btn btn-primary no-margin" onclick="updateController.updateCommits(this); return false">
502 <a id="update_commits" class="btn btn-primary no-margin" onclick="updateController.updateCommits(this); return false">
504 ${_('Update commits')}
503 ${_('Update commits')}
505 </a>
504 </a>
506
505
507 <a id="update_commits_switcher" class="tooltip btn btn-primary" style="margin-left: -1px" data-toggle="dropdown" aria-pressed="false" role="button" title="${_('more update options')}">
506 <a id="update_commits_switcher" class="tooltip btn btn-primary" style="margin-left: -1px" data-toggle="dropdown" aria-pressed="false" role="button" title="${_('more update options')}">
508 <i class="icon-down"></i>
507 <i class="icon-down"></i>
509 </a>
508 </a>
510
509
511 <div class="btn-action-switcher-container" id="update-commits-switcher">
510 <div class="btn-action-switcher-container" id="update-commits-switcher">
512 <ul class="btn-action-switcher" role="menu">
511 <ul class="btn-action-switcher" role="menu">
513 <li>
512 <li>
514 <a href="#forceUpdate" onclick="updateController.forceUpdateCommits(this); return false">
513 <a href="#forceUpdate" onclick="updateController.forceUpdateCommits(this); return false">
515 ${_('Force update commits')}
514 ${_('Force update commits')}
516 </a>
515 </a>
517 <div class="action-help-block">
516 <div class="action-help-block">
518 ${_('Update commits and force refresh this pull request.')}
517 ${_('Update commits and force refresh this pull request.')}
519 </div>
518 </div>
520 </li>
519 </li>
521 </ul>
520 </ul>
522 </div>
521 </div>
523 </div>
522 </div>
524
523
525 % else:
524 % else:
526 <a class="tooltip btn disabled pull-right" disabled="disabled" title="${_('Update is disabled for current view')}">${_('Update commits')}</a>
525 <a class="tooltip btn disabled pull-right" disabled="disabled" title="${_('Update is disabled for current view')}">${_('Update commits')}</a>
527 % endif
526 % endif
528
527
529 </div>
528 </div>
530 % endif
529 % endif
531 </div>
530 </div>
532
531
533 % if not c.missing_commits:
532 % if not c.missing_commits:
534 % if c.compare_mode:
533 % if c.compare_mode:
535 % if c.at_version:
534 % if c.at_version:
536 <h4>
535 <h4>
537 ${_('Commits and changes between v{ver_from} and {ver_to} of this pull request, commenting is disabled').format(ver_from=c.from_version_pos, ver_to=c.at_version_pos if c.at_version_pos else 'latest')}:
536 ${_('Commits and changes between v{ver_from} and {ver_to} of this pull request, commenting is disabled').format(ver_from=c.from_version_pos, ver_to=c.at_version_pos if c.at_version_pos else 'latest')}:
538 </h4>
537 </h4>
539
538
540 <div class="subtitle-compare">
539 <div class="subtitle-compare">
541 ${_('commits added: {}, removed: {}').format(len(c.commit_changes_summary.added), len(c.commit_changes_summary.removed))}
540 ${_('commits added: {}, removed: {}').format(len(c.commit_changes_summary.added), len(c.commit_changes_summary.removed))}
542 </div>
541 </div>
543
542
544 <div class="container">
543 <div class="container">
545 <table class="rctable compare_view_commits">
544 <table class="rctable compare_view_commits">
546 <tr>
545 <tr>
547 <th></th>
546 <th></th>
548 <th>${_('Time')}</th>
547 <th>${_('Time')}</th>
549 <th>${_('Author')}</th>
548 <th>${_('Author')}</th>
550 <th>${_('Commit')}</th>
549 <th>${_('Commit')}</th>
551 <th></th>
550 <th></th>
552 <th>${_('Description')}</th>
551 <th>${_('Description')}</th>
553 </tr>
552 </tr>
554
553
555 % for c_type, commit in c.commit_changes:
554 % for c_type, commit in c.commit_changes:
556 % if c_type in ['a', 'r']:
555 % if c_type in ['a', 'r']:
557 <%
556 <%
558 if c_type == 'a':
557 if c_type == 'a':
559 cc_title = _('Commit added in displayed changes')
558 cc_title = _('Commit added in displayed changes')
560 elif c_type == 'r':
559 elif c_type == 'r':
561 cc_title = _('Commit removed in displayed changes')
560 cc_title = _('Commit removed in displayed changes')
562 else:
561 else:
563 cc_title = ''
562 cc_title = ''
564 %>
563 %>
565 <tr id="row-${commit.raw_id}" commit_id="${commit.raw_id}" class="compare_select">
564 <tr id="row-${commit.raw_id}" commit_id="${commit.raw_id}" class="compare_select">
566 <td>
565 <td>
567 <div class="commit-change-indicator color-${c_type}-border">
566 <div class="commit-change-indicator color-${c_type}-border">
568 <div class="commit-change-content color-${c_type} tooltip" title="${h.tooltip(cc_title)}">
567 <div class="commit-change-content color-${c_type} tooltip" title="${h.tooltip(cc_title)}">
569 ${c_type.upper()}
568 ${c_type.upper()}
570 </div>
569 </div>
571 </div>
570 </div>
572 </td>
571 </td>
573 <td class="td-time">
572 <td class="td-time">
574 ${h.age_component(commit.date)}
573 ${h.age_component(commit.date)}
575 </td>
574 </td>
576 <td class="td-user">
575 <td class="td-user">
577 ${base.gravatar_with_user(commit.author, 16, tooltip=True)}
576 ${base.gravatar_with_user(commit.author, 16, tooltip=True)}
578 </td>
577 </td>
579 <td class="td-hash">
578 <td class="td-hash">
580 <code>
579 <code>
581 <a href="${h.route_path('repo_commit', repo_name=c.target_repo.repo_name, commit_id=commit.raw_id)}">
580 <a href="${h.route_path('repo_commit', repo_name=c.target_repo.repo_name, commit_id=commit.raw_id)}">
582 r${commit.idx}:${h.short_id(commit.raw_id)}
581 r${commit.idx}:${h.short_id(commit.raw_id)}
583 </a>
582 </a>
584 ${h.hidden('revisions', commit.raw_id)}
583 ${h.hidden('revisions', commit.raw_id)}
585 </code>
584 </code>
586 </td>
585 </td>
587 <td class="td-message expand_commit" data-commit-id="${commit.raw_id}" title="${_( 'Expand commit message')}" onclick="commitsController.expandCommit(this); return false">
586 <td class="td-message expand_commit" data-commit-id="${commit.raw_id}" title="${_( 'Expand commit message')}" onclick="commitsController.expandCommit(this); return false">
588 <i class="icon-expand-linked"></i>
587 <i class="icon-expand-linked"></i>
589 </td>
588 </td>
590 <td class="mid td-description">
589 <td class="mid td-description">
591 <div class="log-container truncate-wrap">
590 <div class="log-container truncate-wrap">
592 <div class="message truncate" id="c-${commit.raw_id}" data-message-raw="${commit.message}">${h.urlify_commit_message(commit.message, c.repo_name)}</div>
591 <div class="message truncate" id="c-${commit.raw_id}" data-message-raw="${commit.message}">${h.urlify_commit_message(commit.message, c.repo_name)}</div>
593 </div>
592 </div>
594 </td>
593 </td>
595 </tr>
594 </tr>
596 % endif
595 % endif
597 % endfor
596 % endfor
598 </table>
597 </table>
599 </div>
598 </div>
600
599
601 % endif
600 % endif
602
601
603 % else:
602 % else:
604 <%include file="/compare/compare_commits.mako" />
603 <%include file="/compare/compare_commits.mako" />
605 % endif
604 % endif
606
605
607 <div class="cs_files">
606 <div class="cs_files">
608 <%namespace name="cbdiffs" file="/codeblocks/diffs.mako"/>
607 <%namespace name="cbdiffs" file="/codeblocks/diffs.mako"/>
609 % if c.at_version:
608 % if c.at_version:
610 <% c.inline_cnt = len(c.inline_versions[c.at_version_num]['display']) %>
609 <% c.inline_cnt = len(c.inline_versions[c.at_version_num]['display']) %>
611 <% c.comments = c.comment_versions[c.at_version_num]['display'] %>
610 <% c.comments = c.comment_versions[c.at_version_num]['display'] %>
612 % else:
611 % else:
613 <% c.inline_cnt = len(c.inline_versions[c.at_version_num]['until']) %>
612 <% c.inline_cnt = len(c.inline_versions[c.at_version_num]['until']) %>
614 <% c.comments = c.comment_versions[c.at_version_num]['until'] %>
613 <% c.comments = c.comment_versions[c.at_version_num]['until'] %>
615 % endif
614 % endif
616
615
617 <%
616 <%
618 pr_menu_data = {
617 pr_menu_data = {
619 'outdated_comm_count_ver': outdated_comm_count_ver
618 'outdated_comm_count_ver': outdated_comm_count_ver
620 }
619 }
621 %>
620 %>
622
621
623 ${cbdiffs.render_diffset_menu(c.diffset, range_diff_on=c.range_diff_on)}
622 ${cbdiffs.render_diffset_menu(c.diffset, range_diff_on=c.range_diff_on)}
624
623
625 % if c.range_diff_on:
624 % if c.range_diff_on:
626 % for commit in c.commit_ranges:
625 % for commit in c.commit_ranges:
627 ${cbdiffs.render_diffset(
626 ${cbdiffs.render_diffset(
628 c.changes[commit.raw_id],
627 c.changes[commit.raw_id],
629 commit=commit, use_comments=True,
628 commit=commit, use_comments=True,
630 collapse_when_files_over=5,
629 collapse_when_files_over=5,
631 disable_new_comments=True,
630 disable_new_comments=True,
632 deleted_files_comments=c.deleted_files_comments,
631 deleted_files_comments=c.deleted_files_comments,
633 inline_comments=c.inline_comments,
632 inline_comments=c.inline_comments,
634 pull_request_menu=pr_menu_data, show_todos=False)}
633 pull_request_menu=pr_menu_data, show_todos=False)}
635 % endfor
634 % endfor
636 % else:
635 % else:
637 ${cbdiffs.render_diffset(
636 ${cbdiffs.render_diffset(
638 c.diffset, use_comments=True,
637 c.diffset, use_comments=True,
639 collapse_when_files_over=30,
638 collapse_when_files_over=30,
640 disable_new_comments=not c.allowed_to_comment,
639 disable_new_comments=not c.allowed_to_comment,
641 deleted_files_comments=c.deleted_files_comments,
640 deleted_files_comments=c.deleted_files_comments,
642 inline_comments=c.inline_comments,
641 inline_comments=c.inline_comments,
643 pull_request_menu=pr_menu_data, show_todos=False)}
642 pull_request_menu=pr_menu_data, show_todos=False)}
644 % endif
643 % endif
645
644
646 </div>
645 </div>
647 % else:
646 % else:
648 ## skipping commits we need to clear the view for missing commits
647 ## skipping commits we need to clear the view for missing commits
649 <div style="clear:both;"></div>
648 <div style="clear:both;"></div>
650 % endif
649 % endif
651
650
652 </div>
651 </div>
653 </div>
652 </div>
654
653
655 ## template for inline comment form
654 ## template for inline comment form
656 <%namespace name="comment" file="/changeset/changeset_file_comment.mako"/>
655 <%namespace name="comment" file="/changeset/changeset_file_comment.mako"/>
657
656
658 ## comments heading with count
657 ## comments heading with count
659 <div class="comments-heading">
658 <div class="comments-heading">
660 <i class="icon-comment"></i>
659 <i class="icon-comment"></i>
661 ${_('Comments')} ${len(c.comments)}
660 ${_('Comments')} ${len(c.comments)}
662 </div>
661 </div>
663
662
664 ## render general comments
663 ## render general comments
665 <div id="comment-tr-show">
664 <div id="comment-tr-show">
666 % if general_outdated_comm_count_ver:
665 % if general_outdated_comm_count_ver:
667 <div class="info-box">
666 <div class="info-box">
668 % if general_outdated_comm_count_ver == 1:
667 % if general_outdated_comm_count_ver == 1:
669 ${_('there is {num} general comment from older versions').format(num=general_outdated_comm_count_ver)},
668 ${_('there is {num} general comment from older versions').format(num=general_outdated_comm_count_ver)},
670 <a href="#show-hidden-comments" onclick="$('.comment-general.comment-outdated').show(); $(this).parent().hide(); return false;">${_('show it')}</a>
669 <a href="#show-hidden-comments" onclick="$('.comment-general.comment-outdated').show(); $(this).parent().hide(); return false;">${_('show it')}</a>
671 % else:
670 % else:
672 ${_('there are {num} general comments from older versions').format(num=general_outdated_comm_count_ver)},
671 ${_('there are {num} general comments from older versions').format(num=general_outdated_comm_count_ver)},
673 <a href="#show-hidden-comments" onclick="$('.comment-general.comment-outdated').show(); $(this).parent().hide(); return false;">${_('show them')}</a>
672 <a href="#show-hidden-comments" onclick="$('.comment-general.comment-outdated').show(); $(this).parent().hide(); return false;">${_('show them')}</a>
674 % endif
673 % endif
675 </div>
674 </div>
676 % endif
675 % endif
677 </div>
676 </div>
678
677
679 ${comment.generate_comments(c.comments, include_pull_request=True, is_pull_request=True)}
678 ${comment.generate_comments(c.comments, include_pull_request=True, is_pull_request=True)}
680
679
681 % if not c.pull_request.is_closed():
680 % if not c.pull_request.is_closed():
682 ## main comment form and it status
681 ## main comment form and it status
683 ${comment.comments(h.route_path('pullrequest_comment_create', repo_name=c.repo_name,
682 ${comment.comments(h.route_path('pullrequest_comment_create', repo_name=c.repo_name,
684 pull_request_id=c.pull_request.pull_request_id),
683 pull_request_id=c.pull_request.pull_request_id),
685 c.pull_request_review_status,
684 c.pull_request_review_status,
686 is_pull_request=True, change_status=c.allowed_to_change_status)}
685 is_pull_request=True, change_status=c.allowed_to_change_status)}
687
686
688 ## merge status, and merge action
687 ## merge status, and merge action
689 <div class="pull-request-merge">
688 <div class="pull-request-merge">
690 <%include file="/pullrequests/pullrequest_merge_checks.mako"/>
689 <%include file="/pullrequests/pullrequest_merge_checks.mako"/>
691 </div>
690 </div>
692
691
693 %endif
692 %endif
694
693
695 % endif
694 % endif
696 </div>
695 </div>
697
696
698 <script type="text/javascript">
697 <script type="text/javascript">
699
698
700 versionController = new VersionController();
699 versionController = new VersionController();
701 versionController.init();
700 versionController.init();
702
701
703 reviewersController = new ReviewersController();
702 reviewersController = new ReviewersController();
704 commitsController = new CommitsController();
703 commitsController = new CommitsController();
705
704
706 updateController = new UpdatePrController();
705 updateController = new UpdatePrController();
707
706
708 $(function () {
707 $(function () {
709
708
710 // custom code mirror
709 // custom code mirror
711 var codeMirrorInstance = $('#pr-description-input').get(0).MarkupForm.cm;
710 var codeMirrorInstance = $('#pr-description-input').get(0).MarkupForm.cm;
712
711
713 var PRDetails = {
712 var PRDetails = {
714 editButton: $('#open_edit_pullrequest'),
713 editButton: $('#open_edit_pullrequest'),
715 closeButton: $('#close_edit_pullrequest'),
714 closeButton: $('#close_edit_pullrequest'),
716 deleteButton: $('#delete_pullrequest'),
715 deleteButton: $('#delete_pullrequest'),
717 viewFields: $('#pr-desc, #pr-title'),
716 viewFields: $('#pr-desc, #pr-title'),
718 editFields: $('#pr-desc-edit, #pr-title-edit, .pr-save'),
717 editFields: $('#pr-desc-edit, #pr-title-edit, .pr-save'),
719
718
720 init: function () {
719 init: function () {
721 var that = this;
720 var that = this;
722 this.editButton.on('click', function (e) {
721 this.editButton.on('click', function (e) {
723 that.edit();
722 that.edit();
724 });
723 });
725 this.closeButton.on('click', function (e) {
724 this.closeButton.on('click', function (e) {
726 that.view();
725 that.view();
727 });
726 });
728 },
727 },
729
728
730 edit: function (event) {
729 edit: function (event) {
731 this.viewFields.hide();
730 this.viewFields.hide();
732 this.editButton.hide();
731 this.editButton.hide();
733 this.deleteButton.hide();
732 this.deleteButton.hide();
734 this.closeButton.show();
733 this.closeButton.show();
735 this.editFields.show();
734 this.editFields.show();
736 codeMirrorInstance.refresh();
735 codeMirrorInstance.refresh();
737 },
736 },
738
737
739 view: function (event) {
738 view: function (event) {
740 this.editButton.show();
739 this.editButton.show();
741 this.deleteButton.show();
740 this.deleteButton.show();
742 this.editFields.hide();
741 this.editFields.hide();
743 this.closeButton.hide();
742 this.closeButton.hide();
744 this.viewFields.show();
743 this.viewFields.show();
745 }
744 }
746 };
745 };
747
746
748 var ReviewersPanel = {
747 var ReviewersPanel = {
749 editButton: $('#open_edit_reviewers'),
748 editButton: $('#open_edit_reviewers'),
750 closeButton: $('#close_edit_reviewers'),
749 closeButton: $('#close_edit_reviewers'),
751 addButton: $('#add_reviewer'),
750 addButton: $('#add_reviewer'),
752 removeButtons: $('.reviewer_member_remove,.reviewer_member_mandatory_remove'),
751 removeButtons: $('.reviewer_member_remove,.reviewer_member_mandatory_remove'),
753
752
754 init: function () {
753 init: function () {
755 var self = this;
754 var self = this;
756 this.editButton.on('click', function (e) {
755 this.editButton.on('click', function (e) {
757 self.edit();
756 self.edit();
758 });
757 });
759 this.closeButton.on('click', function (e) {
758 this.closeButton.on('click', function (e) {
760 self.close();
759 self.close();
761 });
760 });
762 },
761 },
763
762
764 edit: function (event) {
763 edit: function (event) {
765 this.editButton.hide();
764 this.editButton.hide();
766 this.closeButton.show();
765 this.closeButton.show();
767 this.addButton.show();
766 this.addButton.show();
768 this.removeButtons.css('visibility', 'visible');
767 this.removeButtons.css('visibility', 'visible');
769 // review rules
768 // review rules
770 reviewersController.loadReviewRules(
769 reviewersController.loadReviewRules(
771 ${c.pull_request.reviewer_data_json | n});
770 ${c.pull_request.reviewer_data_json | n});
772 },
771 },
773
772
774 close: function (event) {
773 close: function (event) {
775 this.editButton.show();
774 this.editButton.show();
776 this.closeButton.hide();
775 this.closeButton.hide();
777 this.addButton.hide();
776 this.addButton.hide();
778 this.removeButtons.css('visibility', 'hidden');
777 this.removeButtons.css('visibility', 'hidden');
779 // hide review rules
778 // hide review rules
780 reviewersController.hideReviewRules()
779 reviewersController.hideReviewRules()
781 }
780 }
782 };
781 };
783
782
784 PRDetails.init();
783 PRDetails.init();
785 ReviewersPanel.init();
784 ReviewersPanel.init();
786
785
787 showOutdated = function (self) {
786 showOutdated = function (self) {
788 $('.comment-inline.comment-outdated').show();
787 $('.comment-inline.comment-outdated').show();
789 $('.filediff-outdated').show();
788 $('.filediff-outdated').show();
790 $('.showOutdatedComments').hide();
789 $('.showOutdatedComments').hide();
791 $('.hideOutdatedComments').show();
790 $('.hideOutdatedComments').show();
792 };
791 };
793
792
794 hideOutdated = function (self) {
793 hideOutdated = function (self) {
795 $('.comment-inline.comment-outdated').hide();
794 $('.comment-inline.comment-outdated').hide();
796 $('.filediff-outdated').hide();
795 $('.filediff-outdated').hide();
797 $('.hideOutdatedComments').hide();
796 $('.hideOutdatedComments').hide();
798 $('.showOutdatedComments').show();
797 $('.showOutdatedComments').show();
799 };
798 };
800
799
801 refreshMergeChecks = function () {
800 refreshMergeChecks = function () {
802 var loadUrl = "${request.current_route_path(_query=dict(merge_checks=1))}";
801 var loadUrl = "${request.current_route_path(_query=dict(merge_checks=1))}";
803 $('.pull-request-merge').css('opacity', 0.3);
802 $('.pull-request-merge').css('opacity', 0.3);
804 $('.action-buttons-extra').css('opacity', 0.3);
803 $('.action-buttons-extra').css('opacity', 0.3);
805
804
806 $('.pull-request-merge').load(
805 $('.pull-request-merge').load(
807 loadUrl, function () {
806 loadUrl, function () {
808 $('.pull-request-merge').css('opacity', 1);
807 $('.pull-request-merge').css('opacity', 1);
809
808
810 $('.action-buttons-extra').css('opacity', 1);
809 $('.action-buttons-extra').css('opacity', 1);
811 }
810 }
812 );
811 );
813 };
812 };
814
813
815 closePullRequest = function (status) {
814 closePullRequest = function (status) {
816 if (!confirm(_gettext('Are you sure to close this pull request without merging?'))) {
815 if (!confirm(_gettext('Are you sure to close this pull request without merging?'))) {
817 return false;
816 return false;
818 }
817 }
819 // inject closing flag
818 // inject closing flag
820 $('.action-buttons-extra').append('<input type="hidden" class="close-pr-input" id="close_pull_request" value="1">');
819 $('.action-buttons-extra').append('<input type="hidden" class="close-pr-input" id="close_pull_request" value="1">');
821 $(generalCommentForm.statusChange).select2("val", status).trigger('change');
820 $(generalCommentForm.statusChange).select2("val", status).trigger('change');
822 $(generalCommentForm.submitForm).submit();
821 $(generalCommentForm.submitForm).submit();
823 };
822 };
824
823
825 $('#show-outdated-comments').on('click', function (e) {
824 $('#show-outdated-comments').on('click', function (e) {
826 var button = $(this);
825 var button = $(this);
827 var outdated = $('.comment-outdated');
826 var outdated = $('.comment-outdated');
828
827
829 if (button.html() === "(Show)") {
828 if (button.html() === "(Show)") {
830 button.html("(Hide)");
829 button.html("(Hide)");
831 outdated.show();
830 outdated.show();
832 } else {
831 } else {
833 button.html("(Show)");
832 button.html("(Show)");
834 outdated.hide();
833 outdated.hide();
835 }
834 }
836 });
835 });
837
836
838 $('.show-inline-comments').on('change', function (e) {
837 $('.show-inline-comments').on('change', function (e) {
839 var show = 'none';
838 var show = 'none';
840 var target = e.currentTarget;
839 var target = e.currentTarget;
841 if (target.checked) {
840 if (target.checked) {
842 show = ''
841 show = ''
843 }
842 }
844 var boxid = $(target).attr('id_for');
843 var boxid = $(target).attr('id_for');
845 var comments = $('#{0} .inline-comments'.format(boxid));
844 var comments = $('#{0} .inline-comments'.format(boxid));
846 var fn_display = function (idx) {
845 var fn_display = function (idx) {
847 $(this).css('display', show);
846 $(this).css('display', show);
848 };
847 };
849 $(comments).each(fn_display);
848 $(comments).each(fn_display);
850 var btns = $('#{0} .inline-comments-button'.format(boxid));
849 var btns = $('#{0} .inline-comments-button'.format(boxid));
851 $(btns).each(fn_display);
850 $(btns).each(fn_display);
852 });
851 });
853
852
854 $('#merge_pull_request_form').submit(function () {
853 $('#merge_pull_request_form').submit(function () {
855 if (!$('#merge_pull_request').attr('disabled')) {
854 if (!$('#merge_pull_request').attr('disabled')) {
856 $('#merge_pull_request').attr('disabled', 'disabled');
855 $('#merge_pull_request').attr('disabled', 'disabled');
857 }
856 }
858 return true;
857 return true;
859 });
858 });
860
859
861 $('#edit_pull_request').on('click', function (e) {
860 $('#edit_pull_request').on('click', function (e) {
862 var title = $('#pr-title-input').val();
861 var title = $('#pr-title-input').val();
863 var description = codeMirrorInstance.getValue();
862 var description = codeMirrorInstance.getValue();
864 var renderer = $('#pr-renderer-input').val();
863 var renderer = $('#pr-renderer-input').val();
865 editPullRequest(
864 editPullRequest(
866 "${c.repo_name}", "${c.pull_request.pull_request_id}",
865 "${c.repo_name}", "${c.pull_request.pull_request_id}",
867 title, description, renderer);
866 title, description, renderer);
868 });
867 });
869
868
870 $('#update_pull_request').on('click', function (e) {
869 $('#update_pull_request').on('click', function (e) {
871 $(this).attr('disabled', 'disabled');
870 $(this).attr('disabled', 'disabled');
872 $(this).addClass('disabled');
871 $(this).addClass('disabled');
873 $(this).html(_gettext('Saving...'));
872 $(this).html(_gettext('Saving...'));
874 reviewersController.updateReviewers(
873 reviewersController.updateReviewers(
875 "${c.repo_name}", "${c.pull_request.pull_request_id}");
874 "${c.repo_name}", "${c.pull_request.pull_request_id}");
876 });
875 });
877
876
878
877
879 // fixing issue with caches on firefox
878 // fixing issue with caches on firefox
880 $('#update_commits').removeAttr("disabled");
879 $('#update_commits').removeAttr("disabled");
881
880
882 $('.show-inline-comments').on('click', function (e) {
881 $('.show-inline-comments').on('click', function (e) {
883 var boxid = $(this).attr('data-comment-id');
882 var boxid = $(this).attr('data-comment-id');
884 var button = $(this);
883 var button = $(this);
885
884
886 if (button.hasClass("comments-visible")) {
885 if (button.hasClass("comments-visible")) {
887 $('#{0} .inline-comments'.format(boxid)).each(function (index) {
886 $('#{0} .inline-comments'.format(boxid)).each(function (index) {
888 $(this).hide();
887 $(this).hide();
889 });
888 });
890 button.removeClass("comments-visible");
889 button.removeClass("comments-visible");
891 } else {
890 } else {
892 $('#{0} .inline-comments'.format(boxid)).each(function (index) {
891 $('#{0} .inline-comments'.format(boxid)).each(function (index) {
893 $(this).show();
892 $(this).show();
894 });
893 });
895 button.addClass("comments-visible");
894 button.addClass("comments-visible");
896 }
895 }
897 });
896 });
898
897
899 // register submit callback on commentForm form to track TODOs
898 // register submit callback on commentForm form to track TODOs
900 window.commentFormGlobalSubmitSuccessCallback = function () {
899 window.commentFormGlobalSubmitSuccessCallback = function () {
901 refreshMergeChecks();
900 refreshMergeChecks();
902 };
901 };
903
902
904 ReviewerAutoComplete('#user');
903 ReviewerAutoComplete('#user');
905
904
906 })
905 })
907
906
908 </script>
907 </script>
909
908
910 </div>
909 </div>
911
910
912 </%def>
911 </%def>
General Comments 0
You need to be logged in to leave comments. Login now