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