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