##// END OF EJS Templates
tables: unified tables for main pages of rhodecode repo pages.
marcink -
r4511:c6ccda60 stable
parent child Browse files
Show More
@@ -1,3236 +1,3237 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 @import 'tooltips';
30 30 @import 'sweetalert2';
31 31
32 32
33 33 //--- BASE ------------------//
34 34 .noscript-error {
35 35 top: 0;
36 36 left: 0;
37 37 width: 100%;
38 38 z-index: 101;
39 39 text-align: center;
40 40 font-size: 120%;
41 41 color: white;
42 42 background-color: @alert2;
43 43 padding: 5px 0 5px 0;
44 44 font-weight: @text-semibold-weight;
45 45 font-family: @text-semibold;
46 46 }
47 47
48 48 html {
49 49 display: table;
50 50 height: 100%;
51 51 width: 100%;
52 52 }
53 53
54 54 body {
55 55 display: table-cell;
56 56 width: 100%;
57 57 }
58 58
59 59 //--- LAYOUT ------------------//
60 60
61 61 .hidden{
62 62 display: none !important;
63 63 }
64 64
65 65 .box{
66 66 float: left;
67 67 width: 100%;
68 68 }
69 69
70 70 .browser-header {
71 71 clear: both;
72 72 }
73 73 .main {
74 74 clear: both;
75 75 padding:0 0 @pagepadding;
76 76 height: auto;
77 77
78 78 &:after { //clearfix
79 79 content:"";
80 80 clear:both;
81 81 width:100%;
82 82 display:block;
83 83 }
84 84 }
85 85
86 86 .flex-container {
87 87 display: flex;
88 88 justify-content: space-between;
89 89 }
90 90
91 91 .action-link{
92 92 margin-left: @padding;
93 93 padding-left: @padding;
94 94 border-left: @border-thickness solid @border-default-color;
95 95 }
96 96
97 97 .cursor-pointer {
98 98 cursor: pointer;
99 99 }
100 100
101 101 input + .action-link, .action-link.first{
102 102 border-left: none;
103 103 }
104 104
105 105 .link-disabled {
106 106 color: @grey4;
107 107 cursor: default;
108 108 }
109 109
110 110 .action-link.last{
111 111 margin-right: @padding;
112 112 padding-right: @padding;
113 113 }
114 114
115 115 .action-link.active,
116 116 .action-link.active a{
117 117 color: @grey4;
118 118 }
119 119
120 120 .action-link.disabled {
121 121 color: @grey4;
122 122 cursor: inherit;
123 123 }
124 124
125 125 .grey-link-action {
126 126 cursor: pointer;
127 127 &:hover {
128 128 color: @grey2;
129 129 }
130 130 color: @grey4;
131 131 }
132 132
133 133 .clipboard-action {
134 134 cursor: pointer;
135 135 margin-left: 5px;
136 136
137 137 &:not(.no-grey) {
138 138
139 139 &:hover {
140 140 color: @grey2;
141 141 }
142 142 color: @grey4;
143 143 }
144 144 }
145 145
146 146 ul.simple-list{
147 147 list-style: none;
148 148 margin: 0;
149 149 padding: 0;
150 150 }
151 151
152 152 .main-content {
153 153 padding-bottom: @pagepadding;
154 154 }
155 155
156 156 .wide-mode-wrapper {
157 157 max-width:4000px !important;
158 158 }
159 159
160 160 .wrapper {
161 161 position: relative;
162 162 max-width: @wrapper-maxwidth;
163 163 margin: 0 auto;
164 164 }
165 165
166 166 #content {
167 167 clear: both;
168 168 padding: 0 @contentpadding;
169 169 }
170 170
171 171 .advanced-settings-fields{
172 172 input{
173 173 margin-left: @textmargin;
174 174 margin-right: @padding/2;
175 175 }
176 176 }
177 177
178 178 .cs_files_title {
179 179 margin: @pagepadding 0 0;
180 180 }
181 181
182 182 input.inline[type="file"] {
183 183 display: inline;
184 184 }
185 185
186 186 .error_page {
187 187 margin: 10% auto;
188 188
189 189 h1 {
190 190 color: @grey2;
191 191 }
192 192
193 193 .alert {
194 194 margin: @padding 0;
195 195 }
196 196
197 197 .error-branding {
198 198 color: @grey4;
199 199 font-weight: @text-semibold-weight;
200 200 font-family: @text-semibold;
201 201 }
202 202
203 203 .error_message {
204 204 font-family: @text-regular;
205 205 }
206 206
207 207 .sidebar {
208 208 min-height: 275px;
209 209 margin: 0;
210 210 padding: 0 0 @sidebarpadding @sidebarpadding;
211 211 border: none;
212 212 }
213 213
214 214 .main-content {
215 215 position: relative;
216 216 margin: 0 @sidebarpadding @sidebarpadding;
217 217 padding: 0 0 0 @sidebarpadding;
218 218 border-left: @border-thickness solid @grey5;
219 219
220 220 @media (max-width:767px) {
221 221 clear: both;
222 222 width: 100%;
223 223 margin: 0;
224 224 border: none;
225 225 }
226 226 }
227 227
228 228 .inner-column {
229 229 float: left;
230 230 width: 29.75%;
231 231 min-height: 150px;
232 232 margin: @sidebarpadding 2% 0 0;
233 233 padding: 0 2% 0 0;
234 234 border-right: @border-thickness solid @grey5;
235 235
236 236 @media (max-width:767px) {
237 237 clear: both;
238 238 width: 100%;
239 239 border: none;
240 240 }
241 241
242 242 ul {
243 243 padding-left: 1.25em;
244 244 }
245 245
246 246 &:last-child {
247 247 margin: @sidebarpadding 0 0;
248 248 border: none;
249 249 }
250 250
251 251 h4 {
252 252 margin: 0 0 @padding;
253 253 font-weight: @text-semibold-weight;
254 254 font-family: @text-semibold;
255 255 }
256 256 }
257 257 }
258 258 .error-page-logo {
259 259 width: 130px;
260 260 height: 160px;
261 261 }
262 262
263 263 // HEADER
264 264 .header {
265 265
266 266 // TODO: johbo: Fix login pages, so that they work without a min-height
267 267 // for the header and then remove the min-height. I chose a smaller value
268 268 // intentionally here to avoid rendering issues in the main navigation.
269 269 min-height: 49px;
270 270 min-width: 1024px;
271 271
272 272 position: relative;
273 273 vertical-align: bottom;
274 274 padding: 0 @header-padding;
275 275 background-color: @grey1;
276 276 color: @grey5;
277 277
278 278 .title {
279 279 overflow: visible;
280 280 }
281 281
282 282 &:before,
283 283 &:after {
284 284 content: "";
285 285 clear: both;
286 286 width: 100%;
287 287 }
288 288
289 289 // TODO: johbo: Avoids breaking "Repositories" chooser
290 290 .select2-container .select2-choice .select2-arrow {
291 291 display: none;
292 292 }
293 293 }
294 294
295 295 #header-inner {
296 296 &.title {
297 297 margin: 0;
298 298 }
299 299 &:before,
300 300 &:after {
301 301 content: "";
302 302 clear: both;
303 303 }
304 304 }
305 305
306 306 // Gists
307 307 #files_data {
308 308 clear: both; //for firefox
309 309 padding-top: 10px;
310 310 }
311 311
312 312 #gistid {
313 313 margin-right: @padding;
314 314 }
315 315
316 316 // Global Settings Editor
317 317 .textarea.editor {
318 318 float: left;
319 319 position: relative;
320 320 max-width: @texteditor-width;
321 321
322 322 select {
323 323 position: absolute;
324 324 top:10px;
325 325 right:0;
326 326 }
327 327
328 328 .CodeMirror {
329 329 margin: 0;
330 330 }
331 331
332 332 .help-block {
333 333 margin: 0 0 @padding;
334 334 padding:.5em;
335 335 background-color: @grey6;
336 336 &.pre-formatting {
337 337 white-space: pre;
338 338 }
339 339 }
340 340 }
341 341
342 342 ul.auth_plugins {
343 343 margin: @padding 0 @padding @legend-width;
344 344 padding: 0;
345 345
346 346 li {
347 347 margin-bottom: @padding;
348 348 line-height: 1em;
349 349 list-style-type: none;
350 350
351 351 .auth_buttons .btn {
352 352 margin-right: @padding;
353 353 }
354 354
355 355 }
356 356 }
357 357
358 358
359 359 // My Account PR list
360 360
361 361 #show_closed {
362 362 margin: 0 1em 0 0;
363 363 }
364 364
365 365 #pull_request_list_table {
366 366 .closed {
367 367 background-color: @grey6;
368 368 }
369 369
370 370 .state-creating,
371 371 .state-updating,
372 372 .state-merging
373 373 {
374 374 background-color: @grey6;
375 375 }
376 376
377 377 .td-status {
378 378 padding-left: .5em;
379 379 }
380 380 .log-container .truncate {
381 381 height: 2.75em;
382 382 white-space: pre-line;
383 383 }
384 384 table.rctable .user {
385 385 padding-left: 0;
386 386 }
387 387 table.rctable {
388 388 td.td-description,
389 389 .rc-user {
390 390 min-width: auto;
391 391 }
392 392 }
393 393 }
394 394
395 395 // Pull Requests
396 396
397 397 .pullrequests_section_head {
398 398 display: block;
399 399 clear: both;
400 400 margin: @padding 0;
401 401 font-weight: @text-bold-weight;
402 402 font-family: @text-bold;
403 403 }
404 404
405 405 .pr-commit-flow {
406 406 position: relative;
407 407 font-weight: 600;
408 408
409 409 .tag {
410 410 display: inline-block;
411 411 margin: 0 1em .5em 0;
412 412 }
413 413
414 414 .clone-url {
415 415 display: inline-block;
416 416 margin: 0 0 .5em 0;
417 417 padding: 0;
418 418 line-height: 1.2em;
419 419 }
420 420 }
421 421
422 422 .pr-mergeinfo {
423 423 min-width: 95% !important;
424 424 padding: 0 !important;
425 425 border: 0;
426 426 }
427 427 .pr-mergeinfo-copy {
428 428 padding: 0 0;
429 429 }
430 430
431 431 .pr-pullinfo {
432 432 min-width: 95% !important;
433 433 padding: 0 !important;
434 434 border: 0;
435 435 }
436 436 .pr-pullinfo-copy {
437 437 padding: 0 0;
438 438 }
439 439
440 440 .pr-title-input {
441 441 width: 100%;
442 442 font-size: 18px;
443 443 margin: 0 0 4px 0;
444 444 padding: 0;
445 445 line-height: 1.7em;
446 446 color: @text-color;
447 447 letter-spacing: .02em;
448 448 font-weight: @text-bold-weight;
449 449 font-family: @text-bold;
450 450
451 451 &:hover {
452 452 box-shadow: none;
453 453 }
454 454 }
455 455
456 456 #pr-title {
457 457 input {
458 458 border: 1px transparent;
459 459 color: black;
460 460 opacity: 1;
461 461 background: #fff;
462 462 font-size: 18px;
463 463 }
464 464 }
465 465
466 466 .pr-title-closed-tag {
467 467 font-size: 16px;
468 468 }
469 469
470 470 #pr-desc {
471 471 padding: 10px 0;
472 472
473 473 .markdown-block {
474 474 padding: 0;
475 475 margin-bottom: -30px;
476 476 }
477 477 }
478 478
479 479 #pullrequest_title {
480 480 width: 100%;
481 481 box-sizing: border-box;
482 482 }
483 483
484 484 #pr_open_message {
485 485 border: @border-thickness solid #fff;
486 486 border-radius: @border-radius;
487 487 text-align: left;
488 488 overflow: hidden;
489 489 white-space: pre-line;
490 490 padding-top: 5px
491 491 }
492 492
493 493 #add_reviewer {
494 494 padding-top: 10px;
495 495 }
496 496
497 497 #add_reviewer_input {
498 498 padding-top: 10px
499 499 }
500 500
501 501 .pr-details-title-author-pref {
502 502 padding-right: 10px
503 503 }
504 504
505 505 .label-pr-detail {
506 506 display: table-cell;
507 507 width: 120px;
508 508 padding-top: 7.5px;
509 509 padding-bottom: 7.5px;
510 510 padding-right: 7.5px;
511 511 }
512 512
513 513 .source-details ul {
514 514 padding: 10px 16px;
515 515 }
516 516
517 517 .source-details-action {
518 518 color: @grey4;
519 519 font-size: 11px
520 520 }
521 521
522 522 .pr-submit-button {
523 523 float: right;
524 524 margin: 0 0 0 5px;
525 525 }
526 526
527 527 .pr-spacing-container {
528 528 padding: 20px;
529 529 clear: both
530 530 }
531 531
532 532 #pr-description-input {
533 533 margin-bottom: 0;
534 534 }
535 535
536 536 .pr-description-label {
537 537 vertical-align: top;
538 538 }
539 539
540 540 #open_edit_pullrequest {
541 541 padding: 0;
542 542 }
543 543
544 544 #close_edit_pullrequest {
545 545
546 546 }
547 547
548 548 #delete_pullrequest {
549 549 clear: inherit;
550 550
551 551 form {
552 552 display: inline;
553 553 }
554 554
555 555 }
556 556
557 557 .perms_section_head {
558 558 min-width: 625px;
559 559
560 560 h2 {
561 561 margin-bottom: 0;
562 562 }
563 563
564 564 .label-checkbox {
565 565 float: left;
566 566 }
567 567
568 568 &.field {
569 569 margin: @space 0 @padding;
570 570 }
571 571
572 572 &:first-child.field {
573 573 margin-top: 0;
574 574
575 575 .label {
576 576 margin-top: 0;
577 577 padding-top: 0;
578 578 }
579 579
580 580 .radios {
581 581 padding-top: 0;
582 582 }
583 583 }
584 584
585 585 .radios {
586 586 position: relative;
587 587 width: 505px;
588 588 }
589 589 }
590 590
591 591 //--- MODULES ------------------//
592 592
593 593
594 594 // Server Announcement
595 595 #server-announcement {
596 596 width: 95%;
597 597 margin: @padding auto;
598 598 padding: @padding;
599 599 border-width: 2px;
600 600 border-style: solid;
601 601 .border-radius(2px);
602 602 font-weight: @text-bold-weight;
603 603 font-family: @text-bold;
604 604
605 605 &.info { border-color: @alert4; background-color: @alert4-inner; }
606 606 &.warning { border-color: @alert3; background-color: @alert3-inner; }
607 607 &.error { border-color: @alert2; background-color: @alert2-inner; }
608 608 &.success { border-color: @alert1; background-color: @alert1-inner; }
609 609 &.neutral { border-color: @grey3; background-color: @grey6; }
610 610 }
611 611
612 612 // Fixed Sidebar Column
613 613 .sidebar-col-wrapper {
614 614 padding-left: @sidebar-all-width;
615 615
616 616 .sidebar {
617 617 width: @sidebar-width;
618 618 margin-left: -@sidebar-all-width;
619 619 }
620 620 }
621 621
622 622 .sidebar-col-wrapper.scw-small {
623 623 padding-left: @sidebar-small-all-width;
624 624
625 625 .sidebar {
626 626 width: @sidebar-small-width;
627 627 margin-left: -@sidebar-small-all-width;
628 628 }
629 629 }
630 630
631 631
632 632 // FOOTER
633 633 #footer {
634 634 padding: 0;
635 635 text-align: center;
636 636 vertical-align: middle;
637 637 color: @grey2;
638 638 font-size: 11px;
639 639
640 640 p {
641 641 margin: 0;
642 642 padding: 1em;
643 643 line-height: 1em;
644 644 }
645 645
646 646 .server-instance { //server instance
647 647 display: none;
648 648 }
649 649
650 650 .title {
651 651 float: none;
652 652 margin: 0 auto;
653 653 }
654 654 }
655 655
656 656 button.close {
657 657 padding: 0;
658 658 cursor: pointer;
659 659 background: transparent;
660 660 border: 0;
661 661 .box-shadow(none);
662 662 -webkit-appearance: none;
663 663 }
664 664
665 665 .close {
666 666 float: right;
667 667 font-size: 21px;
668 668 font-family: @text-bootstrap;
669 669 line-height: 1em;
670 670 font-weight: bold;
671 671 color: @grey2;
672 672
673 673 &:hover,
674 674 &:focus {
675 675 color: @grey1;
676 676 text-decoration: none;
677 677 cursor: pointer;
678 678 }
679 679 }
680 680
681 681 // GRID
682 682 .sorting,
683 683 .sorting_desc,
684 684 .sorting_asc {
685 685 cursor: pointer;
686 686 }
687 687 .sorting_desc:after {
688 688 content: "\00A0\25B2";
689 689 font-size: .75em;
690 690 }
691 691 .sorting_asc:after {
692 692 content: "\00A0\25BC";
693 693 font-size: .68em;
694 694 }
695 695
696 696
697 697 .user_auth_tokens {
698 698
699 699 &.truncate {
700 700 white-space: nowrap;
701 701 overflow: hidden;
702 702 text-overflow: ellipsis;
703 703 }
704 704
705 705 .fields .field .input {
706 706 margin: 0;
707 707 }
708 708
709 709 input#description {
710 710 width: 100px;
711 711 margin: 0;
712 712 }
713 713
714 714 .drop-menu {
715 715 // TODO: johbo: Remove this, should work out of the box when
716 716 // having multiple inputs inline
717 717 margin: 0 0 0 5px;
718 718 }
719 719 }
720 720 #user_list_table {
721 721 .closed {
722 722 background-color: @grey6;
723 723 }
724 724 }
725 725
726 726
727 727 input, textarea {
728 728 &.disabled {
729 729 opacity: .5;
730 730 }
731 731
732 732 &:hover {
733 733 border-color: @grey3;
734 734 box-shadow: @button-shadow;
735 735 }
736 736
737 737 &:focus {
738 738 border-color: @rcblue;
739 739 box-shadow: @button-shadow;
740 740 }
741 741 }
742 742
743 743 // remove extra padding in firefox
744 744 input::-moz-focus-inner { border:0; padding:0 }
745 745
746 746 .adjacent input {
747 747 margin-bottom: @padding;
748 748 }
749 749
750 750 .permissions_boxes {
751 751 display: block;
752 752 }
753 753
754 754 //FORMS
755 755
756 756 .medium-inline,
757 757 input#description.medium-inline {
758 758 display: inline;
759 759 width: @medium-inline-input-width;
760 760 min-width: 100px;
761 761 }
762 762
763 763 select {
764 764 //reset
765 765 -webkit-appearance: none;
766 766 -moz-appearance: none;
767 767
768 768 display: inline-block;
769 769 height: 28px;
770 770 width: auto;
771 771 margin: 0 @padding @padding 0;
772 772 padding: 0 18px 0 8px;
773 773 line-height:1em;
774 774 font-size: @basefontsize;
775 775 border: @border-thickness solid @grey5;
776 776 border-radius: @border-radius;
777 777 background:white url("../images/dt-arrow-dn.png") no-repeat 100% 50%;
778 778 color: @grey4;
779 779 box-shadow: @button-shadow;
780 780
781 781 &:after {
782 782 content: "\00A0\25BE";
783 783 }
784 784
785 785 &:focus, &:hover {
786 786 outline: none;
787 787 border-color: @grey4;
788 788 color: @rcdarkblue;
789 789 }
790 790 }
791 791
792 792 option {
793 793 &:focus {
794 794 outline: none;
795 795 }
796 796 }
797 797
798 798 input,
799 799 textarea {
800 800 padding: @input-padding;
801 801 border: @input-border-thickness solid @border-highlight-color;
802 802 .border-radius (@border-radius);
803 803 font-family: @text-light;
804 804 font-size: @basefontsize;
805 805
806 806 &.input-sm {
807 807 padding: 5px;
808 808 }
809 809
810 810 &#description {
811 811 min-width: @input-description-minwidth;
812 812 min-height: 1em;
813 813 padding: 10px;
814 814 }
815 815 }
816 816
817 817 .field-sm {
818 818 input,
819 819 textarea {
820 820 padding: 5px;
821 821 }
822 822 }
823 823
824 824 textarea {
825 825 display: block;
826 826 clear: both;
827 827 width: 100%;
828 828 min-height: 100px;
829 829 margin-bottom: @padding;
830 830 .box-sizing(border-box);
831 831 overflow: auto;
832 832 }
833 833
834 834 label {
835 835 font-family: @text-light;
836 836 }
837 837
838 838 // GRAVATARS
839 839 // centers gravatar on username to the right
840 840
841 841 .gravatar {
842 842 display: inline;
843 843 min-width: 16px;
844 844 min-height: 16px;
845 845 margin: -5px 0;
846 846 padding: 0;
847 847 line-height: 1em;
848 848 box-sizing: content-box;
849 849 border-radius: 50%;
850 850
851 851 &.gravatar-large {
852 852 margin: -0.5em .25em -0.5em 0;
853 853 }
854 854
855 855 & + .user {
856 856 display: inline;
857 857 margin: 0;
858 858 padding: 0 0 0 .17em;
859 859 line-height: 1em;
860 860 }
861 861
862 862 & + .no-margin {
863 863 margin: 0
864 864 }
865 865
866 866 }
867 867
868 868 .user-inline-data {
869 869 display: inline-block;
870 870 float: left;
871 871 padding-left: .5em;
872 872 line-height: 1.3em;
873 873 }
874 874
875 875 .rc-user { // gravatar + user wrapper
876 876 float: left;
877 877 position: relative;
878 878 min-width: 100px;
879 879 max-width: 200px;
880 880 min-height: (@gravatar-size + @border-thickness * 2); // account for border
881 881 display: block;
882 882 padding: 0 0 0 (@gravatar-size + @basefontsize/4);
883 883
884 884
885 885 .gravatar {
886 886 display: block;
887 887 position: absolute;
888 888 top: 0;
889 889 left: 0;
890 890 min-width: @gravatar-size;
891 891 min-height: @gravatar-size;
892 892 margin: 0;
893 893 }
894 894
895 895 .user {
896 896 display: block;
897 897 max-width: 175px;
898 898 padding-top: 2px;
899 899 overflow: hidden;
900 900 text-overflow: ellipsis;
901 901 }
902 902 }
903 903
904 904 .gist-gravatar,
905 905 .journal_container {
906 906 .gravatar-large {
907 907 margin: 0 .5em -10px 0;
908 908 }
909 909 }
910 910
911 911 .gist-type-fields {
912 912 line-height: 30px;
913 913 height: 30px;
914 914
915 915 .gist-type-fields-wrapper {
916 916 vertical-align: middle;
917 917 display: inline-block;
918 918 line-height: 25px;
919 919 }
920 920 }
921 921
922 922 // ADMIN SETTINGS
923 923
924 924 // Tag Patterns
925 925 .tag_patterns {
926 926 .tag_input {
927 927 margin-bottom: @padding;
928 928 }
929 929 }
930 930
931 931 .locked_input {
932 932 position: relative;
933 933
934 934 input {
935 935 display: inline;
936 936 margin: 3px 5px 0px 0px;
937 937 }
938 938
939 939 br {
940 940 display: none;
941 941 }
942 942
943 943 .error-message {
944 944 float: left;
945 945 width: 100%;
946 946 }
947 947
948 948 .lock_input_button {
949 949 display: inline;
950 950 }
951 951
952 952 .help-block {
953 953 clear: both;
954 954 }
955 955 }
956 956
957 957 // Notifications
958 958
959 959 .notifications_buttons {
960 960 margin: 0 0 @space 0;
961 961 padding: 0;
962 962
963 963 .btn {
964 964 display: inline-block;
965 965 }
966 966 }
967 967
968 968 .notification-list {
969 969
970 970 div {
971 971 vertical-align: middle;
972 972 }
973 973
974 974 .container {
975 975 display: block;
976 976 margin: 0 0 @padding 0;
977 977 }
978 978
979 979 .delete-notifications {
980 980 margin-left: @padding;
981 981 text-align: right;
982 982 cursor: pointer;
983 983 }
984 984
985 985 .read-notifications {
986 986 margin-left: @padding/2;
987 987 text-align: right;
988 988 width: 35px;
989 989 cursor: pointer;
990 990 }
991 991
992 992 .icon-minus-sign {
993 993 color: @alert2;
994 994 }
995 995
996 996 .icon-ok-sign {
997 997 color: @alert1;
998 998 }
999 999 }
1000 1000
1001 1001 .user_settings {
1002 1002 float: left;
1003 1003 clear: both;
1004 1004 display: block;
1005 1005 width: 100%;
1006 1006
1007 1007 .gravatar_box {
1008 1008 margin-bottom: @padding;
1009 1009
1010 1010 &:after {
1011 1011 content: " ";
1012 1012 clear: both;
1013 1013 width: 100%;
1014 1014 }
1015 1015 }
1016 1016
1017 1017 .fields .field {
1018 1018 clear: both;
1019 1019 }
1020 1020 }
1021 1021
1022 1022 .advanced_settings {
1023 1023 margin-bottom: @space;
1024 1024
1025 1025 .help-block {
1026 1026 margin-left: 0;
1027 1027 }
1028 1028
1029 1029 button + .help-block {
1030 1030 margin-top: @padding;
1031 1031 }
1032 1032 }
1033 1033
1034 1034 // admin settings radio buttons and labels
1035 1035 .label-2 {
1036 1036 float: left;
1037 1037 width: @label2-width;
1038 1038
1039 1039 label {
1040 1040 color: @grey1;
1041 1041 }
1042 1042 }
1043 1043 .checkboxes {
1044 1044 float: left;
1045 1045 width: @checkboxes-width;
1046 1046 margin-bottom: @padding;
1047 1047
1048 1048 .checkbox {
1049 1049 width: 100%;
1050 1050
1051 1051 label {
1052 1052 margin: 0;
1053 1053 padding: 0;
1054 1054 }
1055 1055 }
1056 1056
1057 1057 .checkbox + .checkbox {
1058 1058 display: inline-block;
1059 1059 }
1060 1060
1061 1061 label {
1062 1062 margin-right: 1em;
1063 1063 }
1064 1064 }
1065 1065
1066 1066 // CHANGELOG
1067 1067 .container_header {
1068 1068 float: left;
1069 1069 display: block;
1070 1070 width: 100%;
1071 1071 margin: @padding 0 @padding;
1072 1072
1073 1073 #filter_changelog {
1074 1074 float: left;
1075 1075 margin-right: @padding;
1076 1076 }
1077 1077
1078 1078 .breadcrumbs_light {
1079 1079 display: inline-block;
1080 1080 }
1081 1081 }
1082 1082
1083 1083 .info_box {
1084 1084 float: right;
1085 1085 }
1086 1086
1087 1087
1088 1088
1089 1089 #graph_content{
1090 1090
1091 1091 // adjust for table headers so that graph renders properly
1092 1092 // #graph_nodes padding - table cell padding
1093 1093 padding-top: (@space - (@basefontsize * 2.4));
1094 1094
1095 1095 &.graph_full_width {
1096 1096 width: 100%;
1097 1097 max-width: 100%;
1098 1098 }
1099 1099 }
1100 1100
1101 1101 #graph {
1102 1102
1103 1103 .pagination-left {
1104 1104 float: left;
1105 1105 clear: both;
1106 1106 }
1107 1107
1108 1108 .log-container {
1109 1109 max-width: 345px;
1110 1110
1111 1111 .message{
1112 1112 max-width: 340px;
1113 1113 }
1114 1114 }
1115 1115
1116 1116 .graph-col-wrapper {
1117 1117
1118 1118 #graph_nodes {
1119 1119 width: 100px;
1120 1120 position: absolute;
1121 1121 left: 70px;
1122 1122 z-index: -1;
1123 1123 }
1124 1124 }
1125 1125
1126 1126 .load-more-commits {
1127 1127 text-align: center;
1128 1128 }
1129 1129 .load-more-commits:hover {
1130 1130 background-color: @grey7;
1131 1131 }
1132 1132 .load-more-commits {
1133 1133 a {
1134 1134 display: block;
1135 1135 }
1136 1136 }
1137 1137 }
1138 1138
1139 1139 .obsolete-toggle {
1140 1140 line-height: 30px;
1141 1141 margin-left: -15px;
1142 1142 }
1143 1143
1144 1144 #rev_range_container, #rev_range_clear, #rev_range_more {
1145 1145 margin-top: -5px;
1146 1146 margin-bottom: -5px;
1147 1147 }
1148 1148
1149 1149 #filter_changelog {
1150 1150 float: left;
1151 1151 }
1152 1152
1153 1153
1154 1154 //--- THEME ------------------//
1155 1155
1156 1156 #logo {
1157 1157 float: left;
1158 1158 margin: 9px 0 0 0;
1159 1159
1160 1160 .header {
1161 1161 background-color: transparent;
1162 1162 }
1163 1163
1164 1164 a {
1165 1165 display: inline-block;
1166 1166 }
1167 1167
1168 1168 img {
1169 1169 height:30px;
1170 1170 }
1171 1171 }
1172 1172
1173 1173 .logo-wrapper {
1174 1174 float:left;
1175 1175 }
1176 1176
1177 1177 .branding {
1178 1178 float: left;
1179 1179 padding: 9px 2px;
1180 1180 line-height: 1em;
1181 1181 font-size: @navigation-fontsize;
1182 1182
1183 1183 a {
1184 1184 color: @grey5
1185 1185 }
1186 1186
1187 1187 // 1024px or smaller
1188 1188 @media screen and (max-width: 1180px) {
1189 1189 display: none;
1190 1190 }
1191 1191
1192 1192 }
1193 1193
1194 1194 img {
1195 1195 border: none;
1196 1196 outline: none;
1197 1197 }
1198 1198 user-profile-header
1199 1199 label {
1200 1200
1201 1201 input[type="checkbox"] {
1202 1202 margin-right: 1em;
1203 1203 }
1204 1204 input[type="radio"] {
1205 1205 margin-right: 1em;
1206 1206 }
1207 1207 }
1208 1208
1209 1209 .review-status {
1210 1210 &.under_review {
1211 1211 color: @alert3;
1212 1212 }
1213 1213 &.approved {
1214 1214 color: @alert1;
1215 1215 }
1216 1216 &.rejected,
1217 1217 &.forced_closed{
1218 1218 color: @alert2;
1219 1219 }
1220 1220 &.not_reviewed {
1221 1221 color: @grey5;
1222 1222 }
1223 1223 }
1224 1224
1225 1225 .review-status-under_review {
1226 1226 color: @alert3;
1227 1227 }
1228 1228 .status-tag-under_review {
1229 1229 border-color: @alert3;
1230 1230 }
1231 1231
1232 1232 .review-status-approved {
1233 1233 color: @alert1;
1234 1234 }
1235 1235 .status-tag-approved {
1236 1236 border-color: @alert1;
1237 1237 }
1238 1238
1239 1239 .review-status-rejected,
1240 1240 .review-status-forced_closed {
1241 1241 color: @alert2;
1242 1242 }
1243 1243 .status-tag-rejected,
1244 1244 .status-tag-forced_closed {
1245 1245 border-color: @alert2;
1246 1246 }
1247 1247
1248 1248 .review-status-not_reviewed {
1249 1249 color: @grey5;
1250 1250 }
1251 1251 .status-tag-not_reviewed {
1252 1252 border-color: @grey5;
1253 1253 }
1254 1254
1255 1255 .test_pattern_preview {
1256 1256 margin: @space 0;
1257 1257
1258 1258 p {
1259 1259 margin-bottom: 0;
1260 1260 border-bottom: @border-thickness solid @border-default-color;
1261 1261 color: @grey3;
1262 1262 }
1263 1263
1264 1264 .btn {
1265 1265 margin-bottom: @padding;
1266 1266 }
1267 1267 }
1268 1268 #test_pattern_result {
1269 1269 display: none;
1270 1270 &:extend(pre);
1271 1271 padding: .9em;
1272 1272 color: @grey3;
1273 1273 background-color: @grey7;
1274 1274 border-right: @border-thickness solid @border-default-color;
1275 1275 border-bottom: @border-thickness solid @border-default-color;
1276 1276 border-left: @border-thickness solid @border-default-color;
1277 1277 }
1278 1278
1279 1279 #repo_vcs_settings {
1280 1280 #inherit_overlay_vcs_default {
1281 1281 display: none;
1282 1282 }
1283 1283 #inherit_overlay_vcs_custom {
1284 1284 display: custom;
1285 1285 }
1286 1286 &.inherited {
1287 1287 #inherit_overlay_vcs_default {
1288 1288 display: block;
1289 1289 }
1290 1290 #inherit_overlay_vcs_custom {
1291 1291 display: none;
1292 1292 }
1293 1293 }
1294 1294 }
1295 1295
1296 1296 .issue-tracker-link {
1297 1297 color: @rcblue;
1298 1298 }
1299 1299
1300 1300 // Issue Tracker Table Show/Hide
1301 1301 #repo_issue_tracker {
1302 1302 #inherit_overlay {
1303 1303 display: none;
1304 1304 }
1305 1305 #custom_overlay {
1306 1306 display: custom;
1307 1307 }
1308 1308 &.inherited {
1309 1309 #inherit_overlay {
1310 1310 display: block;
1311 1311 }
1312 1312 #custom_overlay {
1313 1313 display: none;
1314 1314 }
1315 1315 }
1316 1316 }
1317 1317 table.issuetracker {
1318 1318 &.readonly {
1319 1319 tr, td {
1320 1320 color: @grey3;
1321 1321 }
1322 1322 }
1323 1323 .edit {
1324 1324 display: none;
1325 1325 }
1326 1326 .editopen {
1327 1327 .edit {
1328 1328 display: inline;
1329 1329 }
1330 1330 .entry {
1331 1331 display: none;
1332 1332 }
1333 1333 }
1334 1334 tr td.td-action {
1335 1335 min-width: 117px;
1336 1336 }
1337 1337 td input {
1338 1338 max-width: none;
1339 1339 min-width: 30px;
1340 1340 width: 80%;
1341 1341 }
1342 1342 .issuetracker_pref input {
1343 1343 width: 40%;
1344 1344 }
1345 1345 input.edit_issuetracker_update {
1346 1346 margin-right: 0;
1347 1347 width: auto;
1348 1348 }
1349 1349 }
1350 1350
1351 1351 table.integrations {
1352 1352 .td-icon {
1353 1353 width: 20px;
1354 1354 .integration-icon {
1355 1355 height: 20px;
1356 1356 width: 20px;
1357 1357 }
1358 1358 }
1359 1359 }
1360 1360
1361 1361 .integrations {
1362 1362 a.integration-box {
1363 1363 color: @text-color;
1364 1364 &:hover {
1365 1365 .panel {
1366 1366 background: #fbfbfb;
1367 1367 }
1368 1368 }
1369 1369 .integration-icon {
1370 1370 width: 30px;
1371 1371 height: 30px;
1372 1372 margin-right: 20px;
1373 1373 float: left;
1374 1374 }
1375 1375
1376 1376 .panel-body {
1377 1377 padding: 10px;
1378 1378 }
1379 1379 .panel {
1380 1380 margin-bottom: 10px;
1381 1381 }
1382 1382 h2 {
1383 1383 display: inline-block;
1384 1384 margin: 0;
1385 1385 min-width: 140px;
1386 1386 }
1387 1387 }
1388 1388 a.integration-box.dummy-integration {
1389 1389 color: @grey4
1390 1390 }
1391 1391 }
1392 1392
1393 1393 //Permissions Settings
1394 1394 #add_perm {
1395 1395 margin: 0 0 @padding;
1396 1396 cursor: pointer;
1397 1397 }
1398 1398
1399 1399 .perm_ac {
1400 1400 input {
1401 1401 width: 95%;
1402 1402 }
1403 1403 }
1404 1404
1405 1405 .autocomplete-suggestions {
1406 1406 width: auto !important; // overrides autocomplete.js
1407 1407 min-width: 278px;
1408 1408 margin: 0;
1409 1409 border: @border-thickness solid @grey5;
1410 1410 border-radius: @border-radius;
1411 1411 color: @grey2;
1412 1412 background-color: white;
1413 1413 }
1414 1414
1415 1415 .autocomplete-qfilter-suggestions {
1416 1416 width: auto !important; // overrides autocomplete.js
1417 1417 max-height: 100% !important;
1418 1418 min-width: 376px;
1419 1419 margin: 0;
1420 1420 border: @border-thickness solid @grey5;
1421 1421 color: @grey2;
1422 1422 background-color: white;
1423 1423 }
1424 1424
1425 1425 .autocomplete-selected {
1426 1426 background: #F0F0F0;
1427 1427 }
1428 1428
1429 1429 .ac-container-wrap {
1430 1430 margin: 0;
1431 1431 padding: 8px;
1432 1432 border-bottom: @border-thickness solid @grey5;
1433 1433 list-style-type: none;
1434 1434 cursor: pointer;
1435 1435
1436 1436 &:hover {
1437 1437 background-color: @grey7;
1438 1438 }
1439 1439
1440 1440 img {
1441 1441 height: @gravatar-size;
1442 1442 width: @gravatar-size;
1443 1443 margin-right: 1em;
1444 1444 }
1445 1445
1446 1446 strong {
1447 1447 font-weight: normal;
1448 1448 }
1449 1449 }
1450 1450
1451 1451 // Settings Dropdown
1452 1452 .user-menu .container {
1453 1453 padding: 0 4px;
1454 1454 margin: 0;
1455 1455 }
1456 1456
1457 1457 .user-menu .gravatar {
1458 1458 cursor: pointer;
1459 1459 }
1460 1460
1461 1461 .codeblock {
1462 1462 margin-bottom: @padding;
1463 1463 clear: both;
1464 1464
1465 1465 .stats {
1466 1466 overflow: hidden;
1467 1467 }
1468 1468
1469 1469 .message{
1470 1470 textarea{
1471 1471 margin: 0;
1472 1472 }
1473 1473 }
1474 1474
1475 1475 .code-header {
1476 1476 .stats {
1477 1477 line-height: 2em;
1478 1478
1479 1479 .revision_id {
1480 1480 margin-left: 0;
1481 1481 }
1482 1482 .buttons {
1483 1483 padding-right: 0;
1484 1484 }
1485 1485 }
1486 1486
1487 1487 .item{
1488 1488 margin-right: 0.5em;
1489 1489 }
1490 1490 }
1491 1491
1492 1492 #editor_container {
1493 1493 position: relative;
1494 1494 margin: @padding 10px;
1495 1495 }
1496 1496 }
1497 1497
1498 1498 #file_history_container {
1499 1499 display: none;
1500 1500 }
1501 1501
1502 1502 .file-history-inner {
1503 1503 margin-bottom: 10px;
1504 1504 }
1505 1505
1506 1506 // Pull Requests
1507 1507 .summary-details {
1508 1508 width: 100%;
1509 1509 }
1510 1510 .pr-summary {
1511 1511 border-bottom: @border-thickness solid @grey5;
1512 1512 margin-bottom: @space;
1513 1513 }
1514 1514
1515 1515 .reviewers {
1516 1516 width: 98%;
1517 1517 }
1518 1518
1519 1519 .reviewers ul li {
1520 1520 position: relative;
1521 1521 width: 100%;
1522 1522 padding-bottom: 8px;
1523 1523 list-style-type: none;
1524 1524 }
1525 1525
1526 1526 .reviewer_entry {
1527 1527 min-height: 55px;
1528 1528 }
1529 1529
1530 1530 .reviewer_reason {
1531 1531 padding-left: 20px;
1532 1532 line-height: 1.5em;
1533 1533 }
1534 1534 .reviewer_status {
1535 1535 display: inline-block;
1536 1536 width: 20px;
1537 1537 min-width: 20px;
1538 1538 height: 1.2em;
1539 1539 line-height: 1em;
1540 1540 }
1541 1541
1542 1542 .reviewer_name {
1543 1543 display: inline-block;
1544 1544 max-width: 83%;
1545 1545 padding-right: 20px;
1546 1546 vertical-align: middle;
1547 1547 line-height: 1;
1548 1548
1549 1549 .rc-user {
1550 1550 min-width: 0;
1551 1551 margin: -2px 1em 0 0;
1552 1552 }
1553 1553
1554 1554 .reviewer {
1555 1555 float: left;
1556 1556 }
1557 1557 }
1558 1558
1559 1559 .reviewer_member_mandatory {
1560 1560 width: 16px;
1561 1561 font-size: 11px;
1562 1562 margin: 0;
1563 1563 padding: 0;
1564 1564 color: black;
1565 1565 opacity: 0.4;
1566 1566 }
1567 1567
1568 1568 .reviewer_member_mandatory_remove,
1569 1569 .reviewer_member_remove {
1570 1570 width: 16px;
1571 1571 padding: 0;
1572 1572 color: black;
1573 1573 cursor: pointer;
1574 1574 }
1575 1575
1576 1576 .reviewer_member_mandatory_remove {
1577 1577 color: @grey4;
1578 1578 }
1579 1579
1580 1580 .reviewer_member_status {
1581 1581 margin-top: 5px;
1582 1582 }
1583 1583 .pr-summary #summary{
1584 1584 width: 100%;
1585 1585 }
1586 1586 .pr-summary .action_button:hover {
1587 1587 border: 0;
1588 1588 cursor: pointer;
1589 1589 }
1590 1590 .pr-details-title {
1591 1591 height: 20px;
1592 1592 line-height: 20px;
1593 1593
1594 1594 padding-bottom: 8px;
1595 1595 border-bottom: @border-thickness solid @grey5;
1596 1596
1597 1597 .action_button.disabled {
1598 1598 color: @grey4;
1599 1599 cursor: inherit;
1600 1600 }
1601 1601 .action_button {
1602 1602 color: @rcblue;
1603 1603 }
1604 1604 }
1605 1605 .pr-details-content {
1606 1606 margin-top: @textmargin - 5;
1607 1607 margin-bottom: @textmargin - 5;
1608 1608 }
1609 1609
1610 1610 .pr-reviewer-rules {
1611 1611 padding: 10px 0px 20px 0px;
1612 1612 }
1613 1613
1614 1614 .todo-resolved {
1615 1615 text-decoration: line-through;
1616 1616 }
1617 1617
1618 1618 .todo-table, .comments-table {
1619 1619 width: 100%;
1620 1620
1621 1621 td {
1622 1622 padding: 5px 0px;
1623 1623 }
1624 1624
1625 1625 .td-todo-number {
1626 1626 text-align: left;
1627 1627 white-space: nowrap;
1628 1628 width: 1%;
1629 1629 padding-right: 2px;
1630 1630 }
1631 1631
1632 1632 .td-todo-gravatar {
1633 1633 width: 5%;
1634 1634
1635 1635 img {
1636 1636 margin: -3px 0;
1637 1637 }
1638 1638 }
1639 1639
1640 1640 }
1641 1641
1642 1642 .todo-comment-text-wrapper {
1643 1643 display: inline-grid;
1644 1644 }
1645 1645
1646 1646 .todo-comment-text {
1647 1647 margin-left: 5px;
1648 1648 white-space: nowrap;
1649 1649 overflow: hidden;
1650 1650 text-overflow: ellipsis;
1651 1651 }
1652 1652
1653 1653 table.group_members {
1654 1654 width: 100%
1655 1655 }
1656 1656
1657 1657 .group_members {
1658 1658 margin-top: 0;
1659 1659 padding: 0;
1660 1660
1661 1661 img {
1662 1662 height: @gravatar-size;
1663 1663 width: @gravatar-size;
1664 1664 margin-right: .5em;
1665 1665 margin-left: 3px;
1666 1666 }
1667 1667
1668 1668 .to-delete {
1669 1669 .user {
1670 1670 text-decoration: line-through;
1671 1671 }
1672 1672 }
1673 1673 }
1674 1674
1675 1675 .compare_view_commits_title {
1676 1676 .disabled {
1677 1677 cursor: inherit;
1678 1678 &:hover{
1679 1679 background-color: inherit;
1680 1680 color: inherit;
1681 1681 }
1682 1682 }
1683 1683 }
1684 1684
1685 1685 .subtitle-compare {
1686 1686 margin: -15px 0px 0px 0px;
1687 1687 }
1688 1688
1689 1689 // new entry in group_members
1690 1690 .td-author-new-entry {
1691 1691 background-color: rgba(red(@alert1), green(@alert1), blue(@alert1), 0.3);
1692 1692 }
1693 1693
1694 1694 .usergroup_member_remove {
1695 1695 width: 16px;
1696 1696 margin-bottom: 10px;
1697 1697 padding: 0;
1698 1698 color: black !important;
1699 1699 cursor: pointer;
1700 1700 }
1701 1701
1702 1702 .reviewer_ac .ac-input {
1703 1703 width: 98%;
1704 1704 margin-bottom: 1em;
1705 1705 }
1706 1706
1707 1707 .observer_ac .ac-input {
1708 1708 width: 98%;
1709 1709 margin-bottom: 1em;
1710 1710 }
1711 1711
1712 1712 .rule-table {
1713 1713 width: 100%;
1714 1714 }
1715 1715
1716 1716 .rule-table td {
1717 1717
1718 1718 }
1719 1719
1720 1720 .rule-table .td-role {
1721 1721 width: 100px
1722 1722 }
1723 1723
1724 1724 .rule-table .td-mandatory {
1725 1725 width: 100px
1726 1726 }
1727 1727
1728 1728 .rule-table .td-group-votes {
1729 1729 width: 150px
1730 1730 }
1731 1731
1732 1732 .compare_view_commits tr{
1733 1733 height: 20px;
1734 1734 }
1735 1735 .compare_view_commits td {
1736 1736 vertical-align: top;
1737 1737 padding-top: 10px;
1738 1738 }
1739 1739 .compare_view_commits .author {
1740 1740 margin-left: 5px;
1741 1741 }
1742 1742
1743 1743 .compare_view_commits {
1744 1744 .color-a {
1745 1745 color: @alert1;
1746 1746 }
1747 1747
1748 1748 .color-c {
1749 1749 color: @color3;
1750 1750 }
1751 1751
1752 1752 .color-r {
1753 1753 color: @color5;
1754 1754 }
1755 1755
1756 1756 .color-a-bg {
1757 1757 background-color: @alert1;
1758 1758 }
1759 1759
1760 1760 .color-c-bg {
1761 1761 background-color: @alert3;
1762 1762 }
1763 1763
1764 1764 .color-r-bg {
1765 1765 background-color: @alert2;
1766 1766 }
1767 1767
1768 1768 .color-a-border {
1769 1769 border: 1px solid @alert1;
1770 1770 }
1771 1771
1772 1772 .color-c-border {
1773 1773 border: 1px solid @alert3;
1774 1774 }
1775 1775
1776 1776 .color-r-border {
1777 1777 border: 1px solid @alert2;
1778 1778 }
1779 1779
1780 1780 .commit-change-indicator {
1781 1781 width: 15px;
1782 1782 height: 15px;
1783 1783 position: relative;
1784 1784 left: 15px;
1785 1785 }
1786 1786
1787 1787 .commit-change-content {
1788 1788 text-align: center;
1789 1789 vertical-align: middle;
1790 1790 line-height: 15px;
1791 1791 }
1792 1792 }
1793 1793
1794 1794 .compare_view_filepath {
1795 1795 color: @grey1;
1796 1796 }
1797 1797
1798 1798 .show_more {
1799 1799 display: inline-block;
1800 1800 width: 0;
1801 1801 height: 0;
1802 1802 vertical-align: middle;
1803 1803 content: "";
1804 1804 border: 4px solid;
1805 1805 border-right-color: transparent;
1806 1806 border-bottom-color: transparent;
1807 1807 border-left-color: transparent;
1808 1808 font-size: 0;
1809 1809 }
1810 1810
1811 1811 .journal_more .show_more {
1812 1812 display: inline;
1813 1813
1814 1814 &:after {
1815 1815 content: none;
1816 1816 }
1817 1817 }
1818 1818
1819 1819 .compare_view_commits .collapse_commit:after {
1820 1820 cursor: pointer;
1821 1821 content: "\00A0\25B4";
1822 1822 margin-left: -3px;
1823 1823 font-size: 17px;
1824 1824 color: @grey4;
1825 1825 }
1826 1826
1827 1827 .diff_links {
1828 1828 margin-left: 8px;
1829 1829 }
1830 1830
1831 1831 #pull_request_overview {
1832 1832 div.ancestor {
1833 1833 margin: -33px 0;
1834 1834 }
1835 1835 }
1836 1836
1837 1837 div.ancestor {
1838 1838
1839 1839 }
1840 1840
1841 1841 .cs_icon_td input[type="checkbox"] {
1842 1842 display: none;
1843 1843 }
1844 1844
1845 1845 .cs_icon_td .expand_file_icon:after {
1846 1846 cursor: pointer;
1847 1847 content: "\00A0\25B6";
1848 1848 font-size: 12px;
1849 1849 color: @grey4;
1850 1850 }
1851 1851
1852 1852 .cs_icon_td .collapse_file_icon:after {
1853 1853 cursor: pointer;
1854 1854 content: "\00A0\25BC";
1855 1855 font-size: 12px;
1856 1856 color: @grey4;
1857 1857 }
1858 1858
1859 1859 /*new binary
1860 1860 NEW_FILENODE = 1
1861 1861 DEL_FILENODE = 2
1862 1862 MOD_FILENODE = 3
1863 1863 RENAMED_FILENODE = 4
1864 1864 COPIED_FILENODE = 5
1865 1865 CHMOD_FILENODE = 6
1866 1866 BIN_FILENODE = 7
1867 1867 */
1868 1868 .cs_files_expand {
1869 1869 font-size: @basefontsize + 5px;
1870 1870 line-height: 1.8em;
1871 1871 float: right;
1872 1872 }
1873 1873
1874 1874 .cs_files_expand span{
1875 1875 color: @rcblue;
1876 1876 cursor: pointer;
1877 1877 }
1878 1878 .cs_files {
1879 1879 clear: both;
1880 1880 padding-bottom: @padding;
1881 1881
1882 1882 .cur_cs {
1883 1883 margin: 10px 2px;
1884 1884 font-weight: bold;
1885 1885 }
1886 1886
1887 1887 .node {
1888 1888 float: left;
1889 1889 }
1890 1890
1891 1891 .changes {
1892 1892 float: right;
1893 1893 color: white;
1894 1894 font-size: @basefontsize - 4px;
1895 1895 margin-top: 4px;
1896 1896 opacity: 0.6;
1897 1897 filter: Alpha(opacity=60); /* IE8 and earlier */
1898 1898
1899 1899 .added {
1900 1900 background-color: @alert1;
1901 1901 float: left;
1902 1902 text-align: center;
1903 1903 }
1904 1904
1905 1905 .deleted {
1906 1906 background-color: @alert2;
1907 1907 float: left;
1908 1908 text-align: center;
1909 1909 }
1910 1910
1911 1911 .bin {
1912 1912 background-color: @alert1;
1913 1913 text-align: center;
1914 1914 }
1915 1915
1916 1916 /*new binary*/
1917 1917 .bin.bin1 {
1918 1918 background-color: @alert1;
1919 1919 text-align: center;
1920 1920 }
1921 1921
1922 1922 /*deleted binary*/
1923 1923 .bin.bin2 {
1924 1924 background-color: @alert2;
1925 1925 text-align: center;
1926 1926 }
1927 1927
1928 1928 /*mod binary*/
1929 1929 .bin.bin3 {
1930 1930 background-color: @grey2;
1931 1931 text-align: center;
1932 1932 }
1933 1933
1934 1934 /*rename file*/
1935 1935 .bin.bin4 {
1936 1936 background-color: @alert4;
1937 1937 text-align: center;
1938 1938 }
1939 1939
1940 1940 /*copied file*/
1941 1941 .bin.bin5 {
1942 1942 background-color: @alert4;
1943 1943 text-align: center;
1944 1944 }
1945 1945
1946 1946 /*chmod file*/
1947 1947 .bin.bin6 {
1948 1948 background-color: @grey2;
1949 1949 text-align: center;
1950 1950 }
1951 1951 }
1952 1952 }
1953 1953
1954 1954 .cs_files .cs_added, .cs_files .cs_A,
1955 1955 .cs_files .cs_added, .cs_files .cs_M,
1956 1956 .cs_files .cs_added, .cs_files .cs_D {
1957 1957 height: 16px;
1958 1958 padding-right: 10px;
1959 1959 margin-top: 7px;
1960 1960 text-align: left;
1961 1961 }
1962 1962
1963 1963 .cs_icon_td {
1964 1964 min-width: 16px;
1965 1965 width: 16px;
1966 1966 }
1967 1967
1968 1968 .pull-request-merge {
1969 1969 border: 1px solid @grey5;
1970 1970 padding: 10px 0px 20px;
1971 1971 margin-top: 10px;
1972 1972 margin-bottom: 20px;
1973 1973 }
1974 1974
1975 1975 .pull-request-merge-refresh {
1976 1976 margin: 2px 7px;
1977 1977 a {
1978 1978 color: @grey3;
1979 1979 }
1980 1980 }
1981 1981
1982 1982 .pull-request-merge ul {
1983 1983 padding: 0px 0px;
1984 1984 }
1985 1985
1986 1986 .pull-request-merge li {
1987 1987 list-style-type: none;
1988 1988 }
1989 1989
1990 1990 .pull-request-merge .pull-request-wrap {
1991 1991 height: auto;
1992 1992 padding: 0px 0px;
1993 1993 text-align: right;
1994 1994 }
1995 1995
1996 1996 .pull-request-merge span {
1997 1997 margin-right: 5px;
1998 1998 }
1999 1999
2000 2000 .pull-request-merge-actions {
2001 2001 min-height: 30px;
2002 2002 padding: 0px 0px;
2003 2003 }
2004 2004
2005 2005 .pull-request-merge-info {
2006 2006 padding: 0px 5px 5px 0px;
2007 2007 }
2008 2008
2009 2009 .merge-status {
2010 2010 margin-right: 5px;
2011 2011 }
2012 2012
2013 2013 .merge-message {
2014 2014 font-size: 1.2em
2015 2015 }
2016 2016
2017 2017 .merge-message.success i,
2018 2018 .merge-icon.success i {
2019 2019 color:@alert1;
2020 2020 }
2021 2021
2022 2022 .merge-message.warning i,
2023 2023 .merge-icon.warning i {
2024 2024 color: @alert3;
2025 2025 }
2026 2026
2027 2027 .merge-message.error i,
2028 2028 .merge-icon.error i {
2029 2029 color:@alert2;
2030 2030 }
2031 2031
2032 2032 .pr-versions {
2033 2033 font-size: 1.1em;
2034 2034 padding: 7.5px;
2035 2035
2036 2036 table {
2037 2037
2038 2038 }
2039 2039
2040 2040 td {
2041 2041 line-height: 15px;
2042 2042 }
2043 2043
2044 2044 .compare-radio-button {
2045 2045 position: relative;
2046 2046 top: -3px;
2047 2047 }
2048 2048 }
2049 2049
2050 2050
2051 2051 #close_pull_request {
2052 2052 margin-right: 0px;
2053 2053 }
2054 2054
2055 2055 .empty_data {
2056 2056 color: @grey4;
2057 2057 }
2058 2058
2059 2059 #changeset_compare_view_content {
2060 2060 clear: both;
2061 2061 width: 100%;
2062 2062 box-sizing: border-box;
2063 2063 .border-radius(@border-radius);
2064 2064
2065 2065 .help-block {
2066 2066 margin: @padding 0;
2067 2067 color: @text-color;
2068 2068 &.pre-formatting {
2069 2069 white-space: pre;
2070 2070 }
2071 2071 }
2072 2072
2073 2073 .empty_data {
2074 2074 margin: @padding 0;
2075 2075 }
2076 2076
2077 2077 .alert {
2078 2078 margin-bottom: @space;
2079 2079 }
2080 2080 }
2081 2081
2082 2082 .table_disp {
2083 2083 .status {
2084 2084 width: auto;
2085 2085 }
2086 2086 }
2087 2087
2088 2088
2089 2089 .creation_in_progress {
2090 2090 color: @grey4
2091 2091 }
2092 2092
2093 2093 .status_box_menu {
2094 2094 margin: 0;
2095 2095 }
2096 2096
2097 2097 .notification-table{
2098 2098 margin-bottom: @space;
2099 2099 display: table;
2100 2100 width: 100%;
2101 2101
2102 2102 .container{
2103 2103 display: table-row;
2104 2104
2105 2105 .notification-header{
2106 2106 border-bottom: @border-thickness solid @border-default-color;
2107 2107 }
2108 2108
2109 2109 .notification-subject{
2110 2110 display: table-cell;
2111 2111 }
2112 2112 }
2113 2113 }
2114 2114
2115 2115 // Notifications
2116 2116 .notification-header{
2117 2117 display: table;
2118 2118 width: 100%;
2119 2119 padding: floor(@basefontsize/2) 0;
2120 2120 line-height: 1em;
2121 2121
2122 2122 .desc, .delete-notifications, .read-notifications{
2123 2123 display: table-cell;
2124 2124 text-align: left;
2125 2125 }
2126 2126
2127 2127 .delete-notifications, .read-notifications{
2128 2128 width: 35px;
2129 2129 min-width: 35px; //fixes when only one button is displayed
2130 2130 }
2131 2131 }
2132 2132
2133 2133 .notification-body {
2134 2134 .markdown-block,
2135 2135 .rst-block {
2136 2136 padding: @padding 0;
2137 2137 }
2138 2138
2139 2139 .notification-subject {
2140 2140 padding: @textmargin 0;
2141 2141 border-bottom: @border-thickness solid @border-default-color;
2142 2142 }
2143 2143 }
2144 2144
2145 2145 .notice-messages {
2146 2146 .markdown-block,
2147 2147 .rst-block {
2148 2148 padding: 0;
2149 2149 }
2150 2150 }
2151 2151
2152 2152 .notifications_buttons{
2153 2153 float: right;
2154 2154 }
2155 2155
2156 2156 #notification-status{
2157 2157 display: inline;
2158 2158 }
2159 2159
2160 2160 // Repositories
2161 2161
2162 2162 #summary.fields{
2163 2163 display: table;
2164 2164
2165 2165 .field{
2166 2166 display: table-row;
2167 2167
2168 2168 .label-summary{
2169 2169 display: table-cell;
2170 2170 min-width: @label-summary-minwidth;
2171 2171 padding-top: @padding/2;
2172 2172 padding-bottom: @padding/2;
2173 2173 padding-right: @padding/2;
2174 2174 }
2175 2175
2176 2176 .input{
2177 2177 display: table-cell;
2178 2178 padding: @padding/2;
2179 2179
2180 2180 input{
2181 2181 min-width: 29em;
2182 2182 padding: @padding/4;
2183 2183 }
2184 2184 }
2185 2185 .statistics, .downloads{
2186 2186 .disabled{
2187 2187 color: @grey4;
2188 2188 }
2189 2189 }
2190 2190 }
2191 2191 }
2192 2192
2193 2193 #summary{
2194 2194 width: 70%;
2195 2195 }
2196 2196
2197 2197
2198 2198 // Journal
2199 2199 .journal.title {
2200 2200 h5 {
2201 2201 float: left;
2202 2202 margin: 0;
2203 2203 width: 70%;
2204 2204 }
2205 2205
2206 2206 ul {
2207 2207 float: right;
2208 2208 display: inline-block;
2209 2209 margin: 0;
2210 2210 width: 30%;
2211 2211 text-align: right;
2212 2212
2213 2213 li {
2214 2214 display: inline;
2215 2215 font-size: @journal-fontsize;
2216 2216 line-height: 1em;
2217 2217
2218 2218 list-style-type: none;
2219 2219 }
2220 2220 }
2221 2221 }
2222 2222
2223 2223 .filterexample {
2224 2224 position: absolute;
2225 2225 top: 95px;
2226 2226 left: @contentpadding;
2227 2227 color: @rcblue;
2228 2228 font-size: 11px;
2229 2229 font-family: @text-regular;
2230 2230 cursor: help;
2231 2231
2232 2232 &:hover {
2233 2233 color: @rcdarkblue;
2234 2234 }
2235 2235
2236 2236 @media (max-width:768px) {
2237 2237 position: relative;
2238 2238 top: auto;
2239 2239 left: auto;
2240 2240 display: block;
2241 2241 }
2242 2242 }
2243 2243
2244 2244
2245 2245 #journal{
2246 2246 margin-bottom: @space;
2247 2247
2248 2248 .journal_day{
2249 2249 margin-bottom: @textmargin/2;
2250 2250 padding-bottom: @textmargin/2;
2251 2251 font-size: @journal-fontsize;
2252 2252 border-bottom: @border-thickness solid @border-default-color;
2253 2253 }
2254 2254
2255 2255 .journal_container{
2256 2256 margin-bottom: @space;
2257 2257
2258 2258 .journal_user{
2259 2259 display: inline-block;
2260 2260 }
2261 2261 .journal_action_container{
2262 2262 display: block;
2263 2263 margin-top: @textmargin;
2264 2264
2265 2265 div{
2266 2266 display: inline;
2267 2267 }
2268 2268
2269 2269 div.journal_action_params{
2270 2270 display: block;
2271 2271 }
2272 2272
2273 2273 div.journal_repo:after{
2274 2274 content: "\A";
2275 2275 white-space: pre;
2276 2276 }
2277 2277
2278 2278 div.date{
2279 2279 display: block;
2280 2280 margin-bottom: @textmargin;
2281 2281 }
2282 2282 }
2283 2283 }
2284 2284 }
2285 2285
2286 2286 // Files
2287 2287 .edit-file-title {
2288 2288 font-size: 16px;
2289 2289
2290 2290 .title-heading {
2291 2291 padding: 2px;
2292 2292 }
2293 2293 }
2294 2294
2295 2295 .edit-file-fieldset {
2296 2296 margin: @sidebarpadding 0;
2297 2297
2298 2298 .fieldset {
2299 2299 .left-label {
2300 2300 width: 13%;
2301 2301 }
2302 2302 .right-content {
2303 2303 width: 87%;
2304 2304 max-width: 100%;
2305 2305 }
2306 2306 .filename-label {
2307 2307 margin-top: 13px;
2308 2308 }
2309 2309 .commit-message-label {
2310 2310 margin-top: 4px;
2311 2311 }
2312 2312 .file-upload-input {
2313 2313 input {
2314 2314 display: none;
2315 2315 }
2316 2316 margin-top: 10px;
2317 2317 }
2318 2318 .file-upload-label {
2319 2319 margin-top: 10px;
2320 2320 }
2321 2321 p {
2322 2322 margin-top: 5px;
2323 2323 }
2324 2324
2325 2325 }
2326 2326 .custom-path-link {
2327 2327 margin-left: 5px;
2328 2328 }
2329 2329 #commit {
2330 2330 resize: vertical;
2331 2331 }
2332 2332 }
2333 2333
2334 2334 .delete-file-preview {
2335 2335 max-height: 250px;
2336 2336 }
2337 2337
2338 2338 .new-file,
2339 2339 #filter_activate,
2340 2340 #filter_deactivate {
2341 2341 float: right;
2342 2342 margin: 0 0 0 10px;
2343 2343 }
2344 2344
2345 2345 .file-upload-transaction-wrapper {
2346 2346 margin-top: 57px;
2347 2347 clear: both;
2348 2348 }
2349 2349
2350 2350 .file-upload-transaction-wrapper .error {
2351 2351 color: @color5;
2352 2352 }
2353 2353
2354 2354 .file-upload-transaction {
2355 2355 min-height: 200px;
2356 2356 padding: 54px;
2357 2357 border: 1px solid @grey5;
2358 2358 text-align: center;
2359 2359 clear: both;
2360 2360 }
2361 2361
2362 2362 .file-upload-transaction i {
2363 2363 font-size: 48px
2364 2364 }
2365 2365
2366 2366 h3.files_location{
2367 2367 line-height: 2.4em;
2368 2368 }
2369 2369
2370 2370 .browser-nav {
2371 2371 width: 100%;
2372 2372 display: table;
2373 2373 margin-bottom: 20px;
2374 2374
2375 2375 .info_box {
2376 2376 float: left;
2377 2377 display: inline-table;
2378 2378 height: 2.5em;
2379 2379
2380 2380 .browser-cur-rev, .info_box_elem {
2381 2381 display: table-cell;
2382 2382 vertical-align: middle;
2383 2383 }
2384 2384
2385 2385 .drop-menu {
2386 2386 margin: 0 10px;
2387 2387 }
2388 2388
2389 2389 .info_box_elem {
2390 2390 border-top: @border-thickness solid @grey5;
2391 2391 border-bottom: @border-thickness solid @grey5;
2392 2392 box-shadow: @button-shadow;
2393 2393
2394 2394 #at_rev, a {
2395 2395 padding: 0.6em 0.4em;
2396 2396 margin: 0;
2397 2397 .box-shadow(none);
2398 2398 border: 0;
2399 2399 height: 12px;
2400 2400 color: @grey2;
2401 2401 }
2402 2402
2403 2403 input#at_rev {
2404 2404 max-width: 50px;
2405 2405 text-align: center;
2406 2406 }
2407 2407
2408 2408 &.previous {
2409 2409 border: @border-thickness solid @grey5;
2410 2410 border-top-left-radius: @border-radius;
2411 2411 border-bottom-left-radius: @border-radius;
2412 2412
2413 2413 &:hover {
2414 2414 border-color: @grey4;
2415 2415 }
2416 2416
2417 2417 .disabled {
2418 2418 color: @grey5;
2419 2419 cursor: not-allowed;
2420 2420 opacity: 0.5;
2421 2421 }
2422 2422 }
2423 2423
2424 2424 &.next {
2425 2425 border: @border-thickness solid @grey5;
2426 2426 border-top-right-radius: @border-radius;
2427 2427 border-bottom-right-radius: @border-radius;
2428 2428
2429 2429 &:hover {
2430 2430 border-color: @grey4;
2431 2431 }
2432 2432
2433 2433 .disabled {
2434 2434 color: @grey5;
2435 2435 cursor: not-allowed;
2436 2436 opacity: 0.5;
2437 2437 }
2438 2438 }
2439 2439 }
2440 2440
2441 2441 .browser-cur-rev {
2442 2442
2443 2443 span{
2444 2444 margin: 0;
2445 2445 color: @rcblue;
2446 2446 height: 12px;
2447 2447 display: inline-block;
2448 2448 padding: 0.7em 1em ;
2449 2449 border: @border-thickness solid @rcblue;
2450 2450 margin-right: @padding;
2451 2451 }
2452 2452 }
2453 2453
2454 2454 }
2455 2455
2456 2456 .select-index-number {
2457 2457 margin: 0 0 0 20px;
2458 2458 color: @grey3;
2459 2459 }
2460 2460
2461 2461 .search_activate {
2462 2462 display: table-cell;
2463 2463 vertical-align: middle;
2464 2464
2465 2465 input, label{
2466 2466 margin: 0;
2467 2467 padding: 0;
2468 2468 }
2469 2469
2470 2470 input{
2471 2471 margin-left: @textmargin;
2472 2472 }
2473 2473
2474 2474 }
2475 2475 }
2476 2476
2477 2477 .browser-cur-rev{
2478 2478 margin-bottom: @textmargin;
2479 2479 }
2480 2480
2481 2481 #node_filter_box_loading{
2482 2482 .info_text;
2483 2483 }
2484 2484
2485 2485 .browser-search {
2486 2486 margin: -25px 0px 5px 0px;
2487 2487 }
2488 2488
2489 2489 .files-quick-filter {
2490 2490 float: right;
2491 2491 width: 180px;
2492 2492 position: relative;
2493 2493 }
2494 2494
2495 2495 .files-filter-box {
2496 2496 display: flex;
2497 2497 padding: 0px;
2498 2498 border-radius: 3px;
2499 2499 margin-bottom: 0;
2500 2500
2501 2501 a {
2502 2502 border: none !important;
2503 2503 }
2504 2504
2505 2505 li {
2506 2506 list-style-type: none
2507 2507 }
2508 2508 }
2509 2509
2510 2510 .files-filter-box-path {
2511 2511 line-height: 33px;
2512 2512 padding: 0;
2513 2513 width: 20px;
2514 2514 position: absolute;
2515 2515 z-index: 11;
2516 2516 left: 5px;
2517 2517 }
2518 2518
2519 2519 .files-filter-box-input {
2520 2520 margin-right: 0;
2521 2521
2522 2522 input {
2523 2523 border: 1px solid @white;
2524 2524 padding-left: 25px;
2525 2525 width: 145px;
2526 2526
2527 2527 &:hover {
2528 2528 border-color: @grey6;
2529 2529 }
2530 2530
2531 2531 &:focus {
2532 2532 border-color: @grey5;
2533 2533 }
2534 2534 }
2535 2535 }
2536 2536
2537 2537 .browser-result{
2538 2538 td a{
2539 2539 margin-left: 0.5em;
2540 2540 display: inline-block;
2541 2541
2542 2542 em {
2543 2543 font-weight: @text-bold-weight;
2544 2544 font-family: @text-bold;
2545 2545 }
2546 2546 }
2547 2547 }
2548 2548
2549 2549 .browser-highlight{
2550 2550 background-color: @grey5-alpha;
2551 2551 }
2552 2552
2553 2553
2554 2554 .edit-file-fieldset #location,
2555 2555 .edit-file-fieldset #filename {
2556 2556 display: flex;
2557 2557 width: -moz-available; /* WebKit-based browsers will ignore this. */
2558 2558 width: -webkit-fill-available; /* Mozilla-based browsers will ignore this. */
2559 2559 width: fill-available;
2560 2560 border: 0;
2561 2561 }
2562 2562
2563 2563 .path-items {
2564 2564 display: flex;
2565 2565 padding: 0;
2566 2566 border: 1px solid #eeeeee;
2567 2567 width: 100%;
2568 2568 float: left;
2569 2569
2570 2570 .breadcrumb-path {
2571 2571 line-height: 30px;
2572 2572 padding: 0 4px;
2573 2573 white-space: nowrap;
2574 2574 }
2575 2575
2576 2576 .upload-form {
2577 2577 margin-top: 46px;
2578 2578 }
2579 2579
2580 2580 .location-path {
2581 2581 width: -moz-available; /* WebKit-based browsers will ignore this. */
2582 2582 width: -webkit-fill-available; /* Mozilla-based browsers will ignore this. */
2583 2583 width: fill-available;
2584 2584
2585 2585 .file-name-input {
2586 2586 padding: 0.5em 0;
2587 2587 }
2588 2588
2589 2589 }
2590 2590
2591 2591 ul {
2592 2592 display: flex;
2593 2593 margin: 0;
2594 2594 padding: 0;
2595 2595 width: 100%;
2596 2596 }
2597 2597
2598 2598 li {
2599 2599 list-style-type: none;
2600 2600 }
2601 2601
2602 2602 }
2603 2603
2604 2604 .editor-items {
2605 2605 height: 40px;
2606 2606 margin: 10px 0 -17px 10px;
2607 2607
2608 2608 .editor-action {
2609 2609 cursor: pointer;
2610 2610 }
2611 2611
2612 2612 .editor-action.active {
2613 2613 border-bottom: 2px solid #5C5C5C;
2614 2614 }
2615 2615
2616 2616 li {
2617 2617 list-style-type: none;
2618 2618 }
2619 2619 }
2620 2620
2621 2621 .edit-file-fieldset .message textarea {
2622 2622 border: 1px solid #eeeeee;
2623 2623 }
2624 2624
2625 2625 #files_data .codeblock {
2626 2626 background-color: #F5F5F5;
2627 2627 }
2628 2628
2629 2629 #editor_preview {
2630 2630 background: white;
2631 2631 }
2632 2632
2633 2633 .show-editor {
2634 2634 padding: 10px;
2635 2635 background-color: white;
2636 2636
2637 2637 }
2638 2638
2639 2639 .show-preview {
2640 2640 padding: 10px;
2641 2641 background-color: white;
2642 2642 border-left: 1px solid #eeeeee;
2643 2643 }
2644 2644 // quick filter
2645 2645 .grid-quick-filter {
2646 2646 float: right;
2647 2647 position: relative;
2648 2648 }
2649 2649
2650 2650 .grid-filter-box {
2651 2651 display: flex;
2652 2652 padding: 0px;
2653 2653 border-radius: 3px;
2654 2654 margin-bottom: 0;
2655 2655
2656 2656 a {
2657 2657 border: none !important;
2658 2658 }
2659 2659
2660 2660 li {
2661 2661 list-style-type: none
2662 2662 }
2663
2663 2664 }
2664 2665
2665 2666 .grid-filter-box-icon {
2666 2667 line-height: 33px;
2667 2668 padding: 0;
2668 2669 width: 20px;
2669 2670 position: absolute;
2670 2671 z-index: 11;
2671 2672 left: 5px;
2672 2673 }
2673 2674
2674 2675 .grid-filter-box-input {
2675 2676 margin-right: 0;
2676 2677
2677 2678 input {
2678 2679 border: 1px solid @white;
2679 2680 padding-left: 25px;
2680 2681 width: 145px;
2681 2682
2682 2683 &:hover {
2683 2684 border-color: @grey6;
2684 2685 }
2685 2686
2686 2687 &:focus {
2687 2688 border-color: @grey5;
2688 2689 }
2689 2690 }
2690 2691 }
2691 2692
2692 2693
2693 2694
2694 2695 // Search
2695 2696
2696 2697 .search-form{
2697 2698 #q {
2698 2699 width: @search-form-width;
2699 2700 }
2700 2701 .fields{
2701 2702 margin: 0 0 @space;
2702 2703 }
2703 2704
2704 2705 label{
2705 2706 display: inline-block;
2706 2707 margin-right: @textmargin;
2707 2708 padding-top: 0.25em;
2708 2709 }
2709 2710
2710 2711
2711 2712 .results{
2712 2713 clear: both;
2713 2714 margin: 0 0 @padding;
2714 2715 }
2715 2716
2716 2717 .search-tags {
2717 2718 padding: 5px 0;
2718 2719 }
2719 2720 }
2720 2721
2721 2722 div.search-feedback-items {
2722 2723 display: inline-block;
2723 2724 }
2724 2725
2725 2726 div.search-code-body {
2726 2727 background-color: #ffffff; padding: 5px 0 5px 10px;
2727 2728 pre {
2728 2729 .match { background-color: #faffa6;}
2729 2730 .break { display: block; width: 100%; background-color: #DDE7EF; color: #747474; }
2730 2731 }
2731 2732 }
2732 2733
2733 2734 .expand_commit.search {
2734 2735 .show_more.open {
2735 2736 height: auto;
2736 2737 max-height: none;
2737 2738 }
2738 2739 }
2739 2740
2740 2741 .search-results {
2741 2742
2742 2743 h2 {
2743 2744 margin-bottom: 0;
2744 2745 }
2745 2746 .codeblock {
2746 2747 border: none;
2747 2748 background: transparent;
2748 2749 }
2749 2750
2750 2751 .codeblock-header {
2751 2752 border: none;
2752 2753 background: transparent;
2753 2754 }
2754 2755
2755 2756 .code-body {
2756 2757 border: @border-thickness solid @grey6;
2757 2758 .border-radius(@border-radius);
2758 2759 }
2759 2760
2760 2761 .td-commit {
2761 2762 &:extend(pre);
2762 2763 border-bottom: @border-thickness solid @border-default-color;
2763 2764 }
2764 2765
2765 2766 .message {
2766 2767 height: auto;
2767 2768 max-width: 350px;
2768 2769 white-space: normal;
2769 2770 text-overflow: initial;
2770 2771 overflow: visible;
2771 2772
2772 2773 .match { background-color: #faffa6;}
2773 2774 .break { background-color: #DDE7EF; width: 100%; color: #747474; display: block; }
2774 2775 }
2775 2776
2776 2777 .path {
2777 2778 border-bottom: none !important;
2778 2779 border-left: 1px solid @grey6 !important;
2779 2780 border-right: 1px solid @grey6 !important;
2780 2781 }
2781 2782 }
2782 2783
2783 2784 table.rctable td.td-search-results div {
2784 2785 max-width: 100%;
2785 2786 }
2786 2787
2787 2788 #tip-box, .tip-box{
2788 2789 padding: @menupadding/2;
2789 2790 display: block;
2790 2791 border: @border-thickness solid @border-highlight-color;
2791 2792 .border-radius(@border-radius);
2792 2793 background-color: white;
2793 2794 z-index: 99;
2794 2795 white-space: pre-wrap;
2795 2796 }
2796 2797
2797 2798 #linktt {
2798 2799 width: 79px;
2799 2800 }
2800 2801
2801 2802 #help_kb .modal-content{
2802 2803 max-width: 800px;
2803 2804 margin: 10% auto;
2804 2805
2805 2806 table{
2806 2807 td,th{
2807 2808 border-bottom: none;
2808 2809 line-height: 2.5em;
2809 2810 }
2810 2811 th{
2811 2812 padding-bottom: @textmargin/2;
2812 2813 }
2813 2814 td.keys{
2814 2815 text-align: center;
2815 2816 }
2816 2817 }
2817 2818
2818 2819 .block-left{
2819 2820 width: 45%;
2820 2821 margin-right: 5%;
2821 2822 }
2822 2823 .modal-footer{
2823 2824 clear: both;
2824 2825 }
2825 2826 .key.tag{
2826 2827 padding: 0.5em;
2827 2828 background-color: @rcblue;
2828 2829 color: white;
2829 2830 border-color: @rcblue;
2830 2831 .box-shadow(none);
2831 2832 }
2832 2833 }
2833 2834
2834 2835
2835 2836
2836 2837 //--- IMPORTS FOR REFACTORED STYLES ------------------//
2837 2838
2838 2839 @import 'statistics-graph';
2839 2840 @import 'tables';
2840 2841 @import 'forms';
2841 2842 @import 'diff';
2842 2843 @import 'summary';
2843 2844 @import 'navigation';
2844 2845
2845 2846 //--- SHOW/HIDE SECTIONS --//
2846 2847
2847 2848 .btn-collapse {
2848 2849 float: right;
2849 2850 text-align: right;
2850 2851 font-family: @text-light;
2851 2852 font-size: @basefontsize;
2852 2853 cursor: pointer;
2853 2854 border: none;
2854 2855 color: @rcblue;
2855 2856 }
2856 2857
2857 2858 table.rctable,
2858 2859 table.dataTable {
2859 2860 .btn-collapse {
2860 2861 float: right;
2861 2862 text-align: right;
2862 2863 }
2863 2864 }
2864 2865
2865 2866 table.rctable {
2866 2867 &.permissions {
2867 2868
2868 2869 th.td-owner {
2869 2870 padding: 0;
2870 2871 }
2871 2872
2872 2873 th {
2873 2874 font-weight: normal;
2874 2875 padding: 0 5px;
2875 2876 }
2876 2877
2877 2878 }
2878 2879 }
2879 2880
2880 2881
2881 2882 // TODO: johbo: Fix for IE10, this avoids that we see a border
2882 2883 // and padding around checkboxes and radio boxes. Move to the right place,
2883 2884 // or better: Remove this once we did the form refactoring.
2884 2885 input[type=checkbox],
2885 2886 input[type=radio] {
2886 2887 padding: 0;
2887 2888 border: none;
2888 2889 }
2889 2890
2890 2891 .toggle-ajax-spinner{
2891 2892 height: 16px;
2892 2893 width: 16px;
2893 2894 }
2894 2895
2895 2896
2896 2897 .markup-form .clearfix {
2897 2898 .border-radius(@border-radius);
2898 2899 margin: 0px;
2899 2900 }
2900 2901
2901 2902 .markup-form-area {
2902 2903 padding: 8px 12px;
2903 2904 border: 1px solid @grey4;
2904 2905 .border-radius(@border-radius);
2905 2906 }
2906 2907
2907 2908 .markup-form-area-header .nav-links {
2908 2909 display: flex;
2909 2910 flex-flow: row wrap;
2910 2911 -webkit-flex-flow: row wrap;
2911 2912 width: 100%;
2912 2913 }
2913 2914
2914 2915 .markup-form-area-footer {
2915 2916 display: flex;
2916 2917 }
2917 2918
2918 2919 .markup-form-area-footer .toolbar {
2919 2920
2920 2921 }
2921 2922
2922 2923 // markup Form
2923 2924 div.markup-form {
2924 2925 margin-top: 20px;
2925 2926 }
2926 2927
2927 2928 .markup-form strong {
2928 2929 display: block;
2929 2930 margin-bottom: 15px;
2930 2931 }
2931 2932
2932 2933 .markup-form textarea {
2933 2934 width: 100%;
2934 2935 height: 100px;
2935 2936 font-family: @text-monospace;
2936 2937 }
2937 2938
2938 2939 form.markup-form {
2939 2940 margin-top: 10px;
2940 2941 margin-left: 10px;
2941 2942 }
2942 2943
2943 2944 .markup-form .comment-block-ta,
2944 2945 .markup-form .preview-box {
2945 2946 .border-radius(@border-radius);
2946 2947 .box-sizing(border-box);
2947 2948 background-color: white;
2948 2949 }
2949 2950
2950 2951 .markup-form .preview-box.unloaded {
2951 2952 height: 50px;
2952 2953 text-align: center;
2953 2954 padding: 20px;
2954 2955 background-color: white;
2955 2956 }
2956 2957
2957 2958
2958 2959 .dropzone-wrapper {
2959 2960 border: 1px solid @grey5;
2960 2961 padding: 20px;
2961 2962 }
2962 2963
2963 2964 .dropzone,
2964 2965 .dropzone-pure {
2965 2966 border: 2px dashed @grey5;
2966 2967 border-radius: 5px;
2967 2968 background: white;
2968 2969 min-height: 200px;
2969 2970 padding: 54px;
2970 2971
2971 2972 .dz-message {
2972 2973 font-weight: 700;
2973 2974 text-align: center;
2974 2975 margin: 2em 0;
2975 2976 }
2976 2977
2977 2978 }
2978 2979
2979 2980 .dz-preview {
2980 2981 margin: 10px 0 !important;
2981 2982 position: relative;
2982 2983 vertical-align: top;
2983 2984 padding: 10px;
2984 2985 border-bottom: 1px solid @grey5;
2985 2986 }
2986 2987
2987 2988 .dz-filename {
2988 2989 font-weight: 700;
2989 2990 float: left;
2990 2991 }
2991 2992
2992 2993 .dz-sending {
2993 2994 float: right;
2994 2995 }
2995 2996
2996 2997 .dz-response {
2997 2998 clear: both
2998 2999 }
2999 3000
3000 3001 .dz-filename-size {
3001 3002 float: right
3002 3003 }
3003 3004
3004 3005 .dz-error-message {
3005 3006 color: @alert2;
3006 3007 padding-top: 10px;
3007 3008 clear: both;
3008 3009 }
3009 3010
3010 3011
3011 3012 .user-hovercard {
3012 3013 padding: 5px;
3013 3014 }
3014 3015
3015 3016 .user-hovercard-icon {
3016 3017 display: inline;
3017 3018 padding: 0;
3018 3019 box-sizing: content-box;
3019 3020 border-radius: 50%;
3020 3021 float: left;
3021 3022 }
3022 3023
3023 3024 .user-hovercard-name {
3024 3025 float: right;
3025 3026 vertical-align: top;
3026 3027 padding-left: 10px;
3027 3028 min-width: 150px;
3028 3029 }
3029 3030
3030 3031 .user-hovercard-bio {
3031 3032 clear: both;
3032 3033 padding-top: 10px;
3033 3034 }
3034 3035
3035 3036 .user-hovercard-header {
3036 3037 clear: both;
3037 3038 min-height: 10px;
3038 3039 }
3039 3040
3040 3041 .user-hovercard-footer {
3041 3042 clear: both;
3042 3043 min-height: 10px;
3043 3044 }
3044 3045
3045 3046 .user-group-hovercard {
3046 3047 padding: 5px;
3047 3048 }
3048 3049
3049 3050 .user-group-hovercard-icon {
3050 3051 display: inline;
3051 3052 padding: 0;
3052 3053 box-sizing: content-box;
3053 3054 border-radius: 50%;
3054 3055 float: left;
3055 3056 }
3056 3057
3057 3058 .user-group-hovercard-name {
3058 3059 float: left;
3059 3060 vertical-align: top;
3060 3061 padding-left: 10px;
3061 3062 min-width: 150px;
3062 3063 }
3063 3064
3064 3065 .user-group-hovercard-icon i {
3065 3066 border: 1px solid @grey4;
3066 3067 border-radius: 4px;
3067 3068 }
3068 3069
3069 3070 .user-group-hovercard-bio {
3070 3071 clear: both;
3071 3072 padding-top: 10px;
3072 3073 line-height: 1.0em;
3073 3074 }
3074 3075
3075 3076 .user-group-hovercard-header {
3076 3077 clear: both;
3077 3078 min-height: 10px;
3078 3079 }
3079 3080
3080 3081 .user-group-hovercard-footer {
3081 3082 clear: both;
3082 3083 min-height: 10px;
3083 3084 }
3084 3085
3085 3086 .pr-hovercard-header {
3086 3087 clear: both;
3087 3088 display: block;
3088 3089 line-height: 20px;
3089 3090 }
3090 3091
3091 3092 .pr-hovercard-user {
3092 3093 display: flex;
3093 3094 align-items: center;
3094 3095 padding-left: 5px;
3095 3096 }
3096 3097
3097 3098 .pr-hovercard-title {
3098 3099 padding-top: 5px;
3099 3100 }
3100 3101
3101 3102 .action-divider {
3102 3103 opacity: 0.5;
3103 3104 }
3104 3105
3105 3106 .details-inline-block {
3106 3107 display: inline-block;
3107 3108 position: relative;
3108 3109 }
3109 3110
3110 3111 .details-inline-block summary {
3111 3112 list-style: none;
3112 3113 }
3113 3114
3114 3115 details:not([open]) > :not(summary) {
3115 3116 display: none !important;
3116 3117 }
3117 3118
3118 3119 .details-reset > summary {
3119 3120 list-style: none;
3120 3121 }
3121 3122
3122 3123 .details-reset > summary::-webkit-details-marker {
3123 3124 display: none;
3124 3125 }
3125 3126
3126 3127 .details-dropdown {
3127 3128 position: absolute;
3128 3129 top: 100%;
3129 3130 width: 185px;
3130 3131 list-style: none;
3131 3132 background-color: #fff;
3132 3133 background-clip: padding-box;
3133 3134 border: 1px solid @grey5;
3134 3135 box-shadow: 0 8px 24px rgba(149, 157, 165, .2);
3135 3136 left: -150px;
3136 3137 text-align: left;
3137 3138 z-index: 90;
3138 3139 }
3139 3140
3140 3141 .dropdown-divider {
3141 3142 display: block;
3142 3143 height: 0;
3143 3144 margin: 8px 0;
3144 3145 border-top: 1px solid @grey5;
3145 3146 }
3146 3147
3147 3148 .dropdown-item {
3148 3149 display: block;
3149 3150 padding: 4px 8px 4px 16px;
3150 3151 overflow: hidden;
3151 3152 text-overflow: ellipsis;
3152 3153 white-space: nowrap;
3153 3154 font-weight: normal;
3154 3155 }
3155 3156
3156 3157 .right-sidebar {
3157 3158 position: fixed;
3158 3159 top: 0px;
3159 3160 bottom: 0;
3160 3161 right: 0;
3161 3162
3162 3163 background: #fafafa;
3163 3164 z-index: 50;
3164 3165 }
3165 3166
3166 3167 .right-sidebar {
3167 3168 border-left: 1px solid @grey5;
3168 3169 }
3169 3170
3170 3171 .right-sidebar.right-sidebar-expanded {
3171 3172 width: 300px;
3172 3173 overflow: scroll;
3173 3174 }
3174 3175
3175 3176 .right-sidebar.right-sidebar-collapsed {
3176 3177 width: 40px;
3177 3178 padding: 0;
3178 3179 display: block;
3179 3180 overflow: hidden;
3180 3181 }
3181 3182
3182 3183 .sidenav {
3183 3184 float: right;
3184 3185 will-change: min-height;
3185 3186 background: #fafafa;
3186 3187 width: 100%;
3187 3188 }
3188 3189
3189 3190 .sidebar-toggle {
3190 3191 height: 30px;
3191 3192 text-align: center;
3192 3193 margin: 15px 0px 0 0;
3193 3194 }
3194 3195
3195 3196 .sidebar-toggle a {
3196 3197
3197 3198 }
3198 3199
3199 3200 .sidebar-content {
3200 3201 margin-left: 15px;
3201 3202 margin-right: 15px;
3202 3203 }
3203 3204
3204 3205 .sidebar-heading {
3205 3206 font-size: 1.2em;
3206 3207 font-weight: 700;
3207 3208 margin-top: 10px;
3208 3209 }
3209 3210
3210 3211 .sidebar-element {
3211 3212 margin-top: 20px;
3212 3213 }
3213 3214
3214 3215 .right-sidebar-collapsed-state {
3215 3216 display: flex;
3216 3217 flex-direction: column;
3217 3218 justify-content: center;
3218 3219 align-items: center;
3219 3220 padding: 0 10px;
3220 3221 cursor: pointer;
3221 3222 font-size: 1.3em;
3222 3223 margin: 0 -15px;
3223 3224 }
3224 3225
3225 3226 .right-sidebar-collapsed-state:hover {
3226 3227 background-color: @grey5;
3227 3228 }
3228 3229
3229 3230 .old-comments-marker {
3230 3231 text-align: left;
3231 3232 }
3232 3233
3233 3234 .old-comments-marker td {
3234 3235 padding-top: 15px;
3235 3236 border-bottom: 1px solid @grey5;
3236 3237 }
@@ -1,499 +1,479 b''
1 1 // summary.less
2 2 // For use in RhodeCode applications;
3 3 // Used for headers and file detail summary screens.
4 4
5 5 .summary {
6 6 clear: both;
7 7 float: none;
8 8 position: relative;
9 9 width: 100%;
10 10 margin: 0;
11 11 padding: 0;
12 12 background: #FCFCFC;
13 13 border: 1px solid #EAEAEA;
14 14 border-radius: @border-radius;
15 15 margin-bottom: 20px;
16 16
17 17 .summary-detail-header {
18 18 display: block;
19 19 width: 100%;
20 20 margin-bottom: 10px;
21 21 padding: 0 0 .5em 0;
22 22 border-bottom: @border-thickness solid @border-default-color;
23 23
24 24 .breadcrumbs {
25 25 display: inline;
26 26 margin: 0;
27 27 padding: 0;
28 28 }
29 29
30 30 h4 {
31 31 margin: 0 1em 0 0;
32 32 padding: 10px 0 5px 20px;
33 33 line-height: 1.2em;
34 34 font-size: @basefontsize;
35 35 }
36 36
37 37 .action_link {
38 38 float: right;
39 39 }
40 40
41 41 .new-file {
42 42 float: right;
43 43 margin-top: -1.5em;
44 44 }
45 45 }
46 46
47 47 .summary-detail {
48 48 float: none;
49 49 position: relative;
50 50 width: 100%;
51 51 margin: 0;
52 52 padding: 0 0 20px 0;
53 53
54 54 .file_diff_buttons {
55 55 margin-top: @space;
56 56 }
57 57
58 58 // commit message
59 59 .commit {
60 60 white-space: pre-wrap;
61 61 }
62 62
63 63 .left-clone {
64 64 float: left;
65 65 height: 30px;
66 66 margin: 0;
67 67 padding: 0;
68 68 width: 130px;
69 69 font-weight: @text-semibold-weight;
70 70 font-family: @text-semibold;
71 71 }
72 72 .left-clone select {
73 73 width: 130px;
74 74 margin-right: 0;
75 75 background-color: @grey7;
76 76 border-color: @grey4;
77 77 color: #5C5C5C;
78 78 border-top-right-radius: 0;
79 79 border-bottom-right-radius: 0;
80 80 }
81 81
82 82 .right-clone {
83 83 float: left;
84 84 width: ~"calc(100% - 170px)";
85 85
86 86 .clipboard-action {
87 87 margin-left: -30px;
88 88 }
89 89 }
90 90
91 91 .clone_url_input {
92 92 width: ~"calc(100% - 90px)";
93 93 padding: 6px 30px 6px 10px;
94 94 height: 14px;
95 95 box-shadow: 0 1px 1px 0 rgba(0,0,0,0.07);
96 96 border-top-left-radius: 0;
97 97 border-bottom-left-radius: 0;
98 98 margin-left: -1px;
99 99 }
100 100
101 101 &.directory {
102 102 margin-bottom: 0;
103 103 }
104 104
105 105 .desc {
106 106 white-space: pre-wrap;
107 107 }
108 108 .disabled {
109 109 opacity: .5;
110 110 cursor: inherit;
111 111 }
112 112 .help-block {
113 113 color: inherit;
114 114 margin: 0;
115 115 }
116 116 }
117 117
118 118 .sidebar-right {
119 119 float: left;
120 120 width: 24%;
121 121 margin: 0;
122 122 padding: 0;
123 123
124 124 ul {
125 125 margin-left: 0;
126 126 padding-left: 0;
127 127
128 128 li {
129 129 list-style-type: none;
130 130 }
131 131 }
132 132 }
133 133
134 134 #clone_by_name, #clone_by_id{
135 135 display: inline-block;
136 136 margin-left: 0px;
137 137 }
138 138
139 139 .codeblock {
140 140 border: none;
141 141 background-color: transparent;
142 142 }
143 143
144 144 .code-body {
145 145 border: @border-thickness solid @border-default-color;
146 146 .border-radius(@border-radius);
147 147 }
148 148
149 149 .btn-collapse {
150 150 clear: both;
151 151 float: none;
152 152 background: #F7F7F7;
153 153 text-align: center;
154 154 color: #949494;
155 155 font-size: 11px;
156 156 line-height: 1.3em;
157 157
158 158 &:hover {
159 159 background: #f1f1f1;
160 160 color: #2B2B2D;
161 161 }
162 162 }
163 163 }
164 164
165 165 // this is used outside of just the summary
166 166 .fieldset, // similar to form fieldset
167 167 .summary .sidebar-right-content { // these have to match
168 168 clear: both;
169 169 float: none;
170 170 position: relative;
171 171 display:block;
172 172 width: 100%;
173 173 min-height: 20px;
174 174 margin-bottom: 10px;
175 175 padding: 0;
176 176 line-height: 1.2em;
177 177
178 178 &:after { // clearfix
179 179 content: "";
180 180 clear: both;
181 181 width: 100%;
182 182 height: 1em;
183 183 }
184 184 }
185 185
186 186 .summary .sidebar-right-content {
187 187 margin-bottom: 0;
188 188
189 189 .rc-user {
190 190 min-width: 0;
191 191 }
192 192
193 193 li {
194 194 list-style: none;
195 195 line-height: normal;
196 196 }
197 197 }
198 198
199 199 .summary {
200 200 .fieldset {
201 201 margin-bottom: 0;
202 202 }
203 203
204 204 .tags-main {
205 205 margin-bottom: 5px;
206 206 }
207 207 }
208 208
209 209 .fieldset {
210 210
211 211 .left-label { // similar to form legend
212 212 display: block;
213 213 margin: 0;
214 214 padding: 0;
215 215 font-weight: @text-semibold-weight;
216 216 font-family: @text-semibold;
217 217 }
218 218
219 219 .left-label-summary {
220 220 padding-left: 20px;
221 221 margin-bottom: 5px;
222 222
223 223 p {
224 224 margin-bottom: 5px;
225 225 color: @grey1;
226 226 float: left;
227 227 width: 130px;
228 228
229 229 &.spacing {
230 230 margin-top: 10px;
231 231 }
232 232 }
233 233
234 234 .right-label-summary {
235 235 float: left;
236 236 margin-top: 0px;
237 237 line-height: 2em;
238 238 width: ~"calc(100% - 160px)";
239 239 }
240 240 }
241 241
242 242 .left-label-summary-files {
243 243 padding-left: 45px;
244 244 margin-top: 5px;
245 245
246 246 p {
247 247 margin-bottom: 5px;
248 248 color: @grey1;
249 249 float: left;
250 250 width: 130px;
251 251
252 252 &.spacing {
253 253 margin-top: 10px;
254 254 }
255 255 }
256 256
257 257 .right-label-summary {
258 258 float: left;
259 259 margin-top: 0px;
260 260 line-height: 2em;
261 261 }
262 262 }
263 263
264 264 .left-content {
265 265 width: ~"calc(60% - 20px)";
266 266 float: left;
267 267 margin: 15px 0 15px 20px;
268 268
269 269 .rc-user {
270 270 min-width: auto;
271 271 max-width: none;
272 272 min-height: auto;
273 273 padding-right: 5px;
274 274 }
275 275
276 276 .left-content-avatar {
277 277 width: 45px;
278 278 float: left;
279 279 margin-top: 8px;
280 280 }
281 281
282 282 .left-content-message {
283 283 float: left;
284 284 width: ~"calc(100% - 45px)";
285 285 }
286 286 }
287 287
288 288 .right-content { // similar to form fields
289 289 float: left;
290 290 display: block;
291 291 width: ~"calc(40% - 20px)";
292 292 text-align: right;
293 293 margin: 15px 20px 15px 0;
294 294
295 295 .truncate-wrap,
296 296 .truncate {
297 297 max-width: 100%;
298 298 width: 100%;
299 299 }
300 300
301 301 .commit-long {
302 302 overflow-x: auto;
303 303 }
304 304
305 305 .commit-info {
306 306 margin-top: 7px;
307 307 }
308 308
309 309 .summary-tag,
310 310 .summary-tagtag,
311 311 .summary-branchtag,
312 312 .summary-booktag,
313 313 .summary-metatag,
314 314 .summary-perm_tag {
315 315 background:transparent;
316 316 border: none;
317 317 box-shadow: none;
318 318 margin-left: 10px;
319 319 font-size: 13px;
320 320 }
321 321
322 322 .summary-tag span,
323 323 .summary-tag i,
324 324 .summary-tag a {
325 325 color: @grey1;
326 326 }
327 327
328 328 }
329 329 .commit {
330 330 color: @grey1;
331 331 margin-bottom: 5px;
332 332 white-space: pre;
333 333 }
334 334 .commit.truncate-wrap {
335 335 overflow:hidden;
336 336 text-overflow: ellipsis;
337 337 }
338 338 .commit-author {
339 339 color: @grey1;
340 340 }
341 341 .commit-date {
342 342 color: @grey4;
343 343 }
344 344 .fieldset-text-line {
345 345 line-height: 36px;
346 346 }
347 347 }
348 348
349 349 // expand commit message
350 350 #message_expand {
351 351 clear: both;
352 352 display: block;
353 353 color: @rcblue;
354 354 cursor: pointer;
355 355 }
356 356
357 357 #trimmed_message_box {
358 358 max-height: floor(2 * @basefontsize * 1.2); // 2 lines * line-height
359 359 overflow: hidden;
360 360 }
361 361
362 362 // show/hide comments button
363 363 .show-inline-comments {
364 364 display: inline;
365 365 cursor: pointer;
366 366
367 367 .comments-show { display: inline; }
368 368 .comments-hide { display: none; }
369 369
370 370 &.comments-visible {
371 371 .comments-show { display: none; }
372 372 .comments-hide { display: inline; }
373 373 }
374 374 }
375 375
376 376 // Quick Start section
377 377
378 378 .empty-repo {
379 379 border: 1px solid #EAEAEA;
380 380 border-bottom: 0;
381 381 border-radius: @border-radius;
382 382 padding: 0 20px;
383 383 }
384 384
385 385 .empty-repo h3, .quick_start p {
386 386 margin-bottom: 10px;
387 387 }
388 388
389 389 .quick_start pre {
390 390 background: #FCFEFF;
391 391 border: 1px solid #CBDBEB;
392 392 box-shadow: @button-shadow;
393 393 padding: 10px 15px;
394 394 border-radius: 4px;
395 395 color: @grey2;
396 396 }
397 397
398 398 .clear-fix {
399 399 clear: both;
400 400 }
401 401
402 402 .quick_start {
403 403 display: block;
404 404 position: relative;
405 405 border: 1px solid #EAEAEA;
406 406 border-top: 0;
407 407 border-radius: @border-radius;
408 408 padding: 0 20px;
409 409
410 410 // adds some space to make copy and paste easier
411 411 .left-label,
412 412 .right-content {
413 413 line-height: 1.6em;
414 414 }
415 415 }
416 416
417 417
418 418 .submodule {
419 419 .summary-detail {
420 420 width: 100%;
421 421
422 422 .btn-collapse {
423 423 display: none;
424 424 }
425 425 }
426 426 }
427 427
428 428 .codeblock-header {
429 429 float: left;
430 430 display: block;
431 431 width: 100%;
432 432 margin: 0;
433 433
434 434 .file-filename {
435 435 float:left;
436 436 padding: 10px;
437 437 }
438 438
439 439 .file-stats {
440 440 padding: 10px;
441 441 float:right;
442 442 }
443 443
444 444
445 445 .stats-first-item {
446 446 padding: 0px 0px 0px 3px;
447 447 }
448 448
449 449 .stats-info {
450 450 font-size: 11px;
451 451 color: @grey4;
452 452 }
453 453
454 454 .buttons {
455 455 float: right;
456 456 text-align: right;
457 457 color: @grey4;
458 458 padding: 10px;
459 459 }
460 460
461 461 .file-container {
462 462 display: inline-block;
463 463 width: 100%;
464 464 }
465 465
466 466 }
467 467
468 468 #summary-menu-stats {
469 469
470 470 .stats-bullet {
471 471 color: @grey3;
472 472 min-width: 3em;
473 473 }
474 474
475 475 .repo-size {
476 476 margin-bottom: .5em;
477 477 }
478 478
479 479 }
480
481 .rctable.repo_summary {
482 border: 1px solid #eaeaea;
483 border-radius: 2px;
484 border-collapse: inherit;
485 border-bottom: 0;
486
487 th {
488 background: @grey7;
489 border-bottom: 0;
490 }
491
492 td {
493 border-color: #eaeaea;
494 }
495
496 td.td-status {
497 padding: 0 0 0 10px;
498 }
499 }
@@ -1,566 +1,575 b''
1 1
2 2 // tables.less
3 3 // For use in RhodeCode application tables;
4 4 // see style guide documentation for guidelines.
5 5
6 6 // TABLES
7 table.rctable.table-bordered {
8 border: 1px solid #eaeaea;
9 border-radius: 2px;
10 border-collapse: inherit;
11 border-bottom: 0;
12
13 th {
14 background: @grey7;
15 border-bottom: 0;
16 }
17
18 td {
19 border-color: #eaeaea;
20 }
21
22 td.td-status {
23 padding: 0 0 0 10px;
24 }
25 }
7 26
8 27 .rctable,
9 28 table.rctable,
10 29 table.dataTable {
11 30 clear:both;
12 31 width: 100%;
13 32 margin: 0 auto @padding;
14 33 padding: 0;
15 34 vertical-align: baseline;
16 35 line-height:1.5em;
17 36 border: none;
18 37 outline: none;
19 38 border-collapse: collapse;
20 39 border-spacing: 0;
21 40 color: @grey2;
22 41
23 42 b {
24 43 font-weight: normal;
25 44 }
26 45
27 46 em {
28 47 font-weight: bold;
29 48 font-style: normal;
30 49 }
31 50
32 51 .td-user {
33 52 .rc-user {
34 53 white-space: nowrap;
35 54 }
36 55 .user-perm-duplicate {
37 56 color: @grey4;
38 57 a {
39 58 color: @grey4;
40 59 }
41 60 }
42 61 }
43 62
44 63 .td-email {
45 64 white-space: nowrap;
46 65 }
47 66
48 67 th,
49 68 td {
50 69 height: auto;
51 70 max-width: 20%;
52 71 padding: .65em 0 .65em 1em;
53 72 vertical-align: middle;
54 73 border-bottom: @border-thickness solid @grey5;
55 74 white-space: normal;
56 75
57 76 &.td-radio,
58 77 &.td-checkbox {
59 78 padding-right: 0;
60 79 text-align: center;
61 80
62 81 input {
63 82 margin: 0 1em;
64 83 }
65 84 }
66 85
67 86 &.truncate-wrap {
68 87 white-space: nowrap !important;
69 88 }
70 89
71 90 pre {
72 91 margin: 0;
73 92 }
74 93
75 94 .show_more {
76 95 height: inherit;
77 96 }
78 97 }
79 98
80 99 .expired td {
81 100 background-color: @grey7;
82 101 }
83 102 .inactive td {
84 103 background-color: @grey6;
85 104 }
86 105 th {
87 106 text-align: left;
88 107 font-weight: @text-semibold-weight;
89 108 font-family: @text-semibold;
90 109 }
91 110
92 111 .hl {
93 112 td {
94 113 background-color: lighten(@alert4,25%);
95 114 }
96 115 }
97 116
98 117 // Special Data Cell Types
99 118 // See style guide for desciptions and examples.
100 119
101 120 td {
102 121
103 122 &.user {
104 123 padding-left: 1em;
105 124 }
106 125
107 126 &.td-rss {
108 127 width: 20px;
109 128 min-width: 0;
110 129 margin: 0;
111 130 }
112 131
113 132 &.quick_repo_menu {
114 133 width: 15px;
115 134 text-align: center;
116 135
117 136 &:hover {
118 137 background-color: @grey5;
119 138 }
120 139 }
121 140
122 141 &.td-icon {
123 142 min-width: 20px;
124 143 width: 20px;
125 144 }
126 145
127 146 &.td-hash {
128 147 min-width: 80px;
129 148 width: 200px;
130 149
131 150 .obsolete {
132 151 text-decoration: line-through;
133 152 color: lighten(@grey2,25%);
134 153 }
135 154 }
136 155
137 156 &.td-sha {
138 157 white-space: nowrap;
139 158 }
140 159
141 160 &.td-graphbox {
142 161 width: 100px;
143 162 max-width: 100px;
144 163 min-width: 100px;
145 164 }
146 165
147 166 &.td-time {
148 167 width: 160px;
149 168 white-space: nowrap;
150 169 }
151 170
152 171 &.annotate{
153 172 padding-right: 0;
154 173
155 174 div.annotatediv{
156 175 margin: 0 0.7em;
157 176 }
158 177 }
159 178
160 179 &.tags-col {
161 180 padding-right: 0;
162 181 }
163 182
164 183 &.td-description {
165 184 min-width: 350px;
166 185
167 186 &.truncate, .truncate-wrap {
168 187 white-space: nowrap;
169 188 overflow: hidden;
170 189 text-overflow: ellipsis;
171 190 max-width: 350px;
172 191 }
173 192 }
174 193
175 194 &.td-grid-name {
176 195 white-space: nowrap;
177 196 min-width: 300px;
178 197 }
179 198
180 199 &.td-componentname {
181 200 white-space: nowrap;
182 201 }
183 202
184 203 &.td-name {
185 204
186 205 }
187 206
188 207 &.td-journalaction {
189 208 min-width: 300px;
190 209
191 210 .journal_action_params {
192 211 // waiting for feedback
193 212 }
194 213 }
195 214
196 215 &.td-active {
197 216 padding-left: .65em;
198 217 }
199 218
200 219 &.td-issue-tracker-name {
201 220 width: 180px;
202 221 input {
203 222 width: 180px;
204 223 }
205 224
206 225 }
207 226
208 227 &.td-issue-tracker-regex {
209 228 white-space: nowrap;
210 229
211 230 min-width: 300px;
212 231 input {
213 232 min-width: 300px;
214 233 }
215 234
216 235 }
217 236
218 237 &.td-url {
219 238 white-space: nowrap;
220 239 }
221 240
222 241 &.td-comments {
223 242 min-width: 3em;
224 243 }
225 244
226 245 &.td-buttons {
227 246 padding: .3em 0;
228 247 }
229 248 &.td-align-top {
230 249 vertical-align: text-top
231 250 }
232 251 &.td-action {
233 252 // this is for the remove/delete/edit buttons
234 253 padding-right: 0;
235 254 min-width: 95px;
236 255 text-transform: capitalize;
237 256
238 257 i {
239 258 display: none;
240 259 }
241 260 }
242 261
243 262 // TODO: lisa: this needs to be cleaned up with the buttons
244 263 .grid_edit,
245 264 .grid_delete {
246 265 display: inline-block;
247 266 margin: 0 @padding/3 0 0;
248 267 font-family: @text-light;
249 268
250 269 i {
251 270 display: none;
252 271 }
253 272 }
254 273
255 274 .grid_edit + .grid_delete {
256 275 border-left: @border-thickness solid @grey5;
257 276 padding-left: @padding/2;
258 277 }
259 278
260 279 &.td-compare {
261 280
262 281 input {
263 282 margin-right: 1em;
264 283 }
265 284
266 285 .compare-radio-button {
267 286 margin: 0 1em 0 0;
268 287 }
269 288
270 289
271 290 }
272 291
273 292 &.td-tags {
274 293 padding: .5em 1em .5em 0;
275 294 width: 140px;
276 295
277 296 .tag {
278 297 margin: 1px;
279 298 float: left;
280 299 }
281 300 }
282 301
283 302 .icon-svn, .icon-hg, .icon-git {
284 303 font-size: 1.4em;
285 304 }
286 305
287 306 &.collapse_commit,
288 307 &.expand_commit {
289 308 padding-right: 0;
290 309 padding-left: 1em;
291 310 cursor: pointer;
292 311 width: 20px;
293 312 }
294 313 }
295 314
296 315 .perm_admin_row {
297 316 color: @grey4;
298 317 background-color: @grey6;
299 318 }
300 319
301 320 .noborder {
302 321 border: none;
303 322
304 323 td {
305 324 border: none;
306 325 }
307 326 }
308 327 }
328
309 329 .rctable.audit-log {
310 330 td {
311 331 vertical-align: top;
312 332 }
313 333 }
314 334
335
315 336 // TRUNCATING
316 337 // TODO: lisaq: should this possibly be moved out of tables.less?
317 338 // for truncated text
318 339 // used inside of table cells and in code block headers
319 340 .truncate-wrap {
320 341 white-space: nowrap !important;
321 342
322 343 //truncated text
323 344 .truncate {
324 345 max-width: 450px;
325 346 width: 300px;
326 347 overflow: hidden;
327 348 text-overflow: ellipsis;
328 349 -o-text-overflow: ellipsis;
329 350 -ms-text-overflow: ellipsis;
330 351
331 352 &.autoexpand {
332 353 width: 120px;
333 354 margin-right: 200px;
334 355 }
335 356 }
336 357 &:hover .truncate.autoexpand {
337 358 overflow: visible;
338 359 }
339 360
340 361 .tags-truncate {
341 362 width: 150px;
342 363 height: 22px;
343 364 overflow: hidden;
344 365
345 366 .tag {
346 367 display: inline-block;
347 368 }
348 369
349 370 &.truncate {
350 371 height: 22px;
351 372 max-height:2em;
352 373 width: 140px;
353 374 }
354 375 }
355 376 }
356 377
357 378 .apikeys_wrap {
358 379 margin-bottom: @padding;
359 380
360 381 table.rctable td:first-child {
361 382 width: 120px;
362 383 }
363 384 }
364 385
365 386
366 387
367 388 // SPECIAL CASES
368 389
369 390 // Repository Followers
370 391 table.rctable.followers_data {
371 392 width: 75%;
372 393 margin: 0;
373 394 }
374 395
375 396 // Repository List
376 397 // Group Members List
377 398 table.rctable.group_members,
378 399 table#repo_list_table {
379 400 min-width: 600px;
380 401 }
381 402
382 403 #no_grid_data {
383 404 text-align: center;
384 405 }
385 406
386 407 #grid_data_loading {
387 408 text-align: center;
388 409 font-weight: 600;
389 410 font-size: 16px;
390 411 padding: 80px 20px;
391 412 }
392 413
393 414 // Keyboard mappings
394 415 table.keyboard-mappings {
395 416 th {
396 417 text-align: left;
397 418 font-weight: @text-semibold-weight;
398 419 font-family: @text-semibold;
399 420 }
400 421 }
401 422
402 423 // Branches, Tags, and Bookmarks
403 424 #obj_list_table.dataTable {
404 425 td.td-time {
405 426 padding-right: 1em;
406 427 }
407 428 }
408 429
409 430 // User Admin
410 431 .rctable.useremails,
411 432 .rctable.account_emails {
412 433 .tag,
413 434 .btn {
414 435 float: right;
415 436 }
416 437 .btn { //to line up with tags
417 438 margin-right: 1.65em;
418 439 }
419 440 }
420 441
421 442 // User List
422 443 #user_list_table {
423 444
424 445 td.td-user {
425 446 min-width: 100px;
426 447 }
427 448 }
428 449
429 // Pull Request List Table
430 #pull_request_list_table.dataTable {
431
432 //TODO: lisa: This needs to be removed once the description is adjusted
433 // for using an expand_commit button (see issue 765)
434 td {
435 vertical-align: middle;
436 }
437 }
438 450
439 451 // Settings (no border)
440 452 table.rctable.dl-settings {
441 453 td {
442 454 border: none;
443 455 vertical-align: baseline;
444 456 }
445 457 }
446 458
447 459
448 460 // Statistics
449 461 table.trending_language_tbl {
450 462 width: 100%;
451 463 line-height: 1em;
452 464
453 465 td div {
454 466 overflow: visible;
455 467 }
456 468 }
457 469
458 470 .trending_language_tbl, .trending_language_tbl td {
459 471 border: 0;
460 472 margin: 0;
461 473 padding: 0;
462 474 background: transparent;
463 475 }
464 476
465 477 .trending_language_tbl, .trending_language_tbl tr {
466 478 border-spacing: 0 3px;
467 479 }
468 480
469 481 .trending_language {
470 482 position: relative;
471 483 overflow: hidden;
472 484 color: @text-color;
473 485 width: 400px;
474 486
475 487 .lang-bar {
476 488 z-index: 1;
477 489 overflow: hidden;
478 490 background-color: @rcblue;
479 491 color: #FFF;
480 492 text-decoration: none;
481 493 }
482 494
483 495 }
484 496
485 497 // Changesets
486 498 #changesets.rctable {
487 th {
488 padding: 0 1em 0.65em 0;
489 }
490 499
491 500 // td must be fixed height for graph
492 501 td {
493 502 height: 32px;
494 503 padding: 0 1em 0 0;
495 504 vertical-align: middle;
496 505 white-space: nowrap;
497 506
498 507 &.td-description {
499 508 white-space: normal;
500 509 }
501 510
502 511 &.expand_commit {
503 512 padding-right: 0;
504 513 cursor: pointer;
505 514 width: 20px;
506 515 }
507 516 }
508 517 }
509 518
510 519 // Compare
511 520 table.compare_view_commits {
512 521 margin-top: @space;
513 522
514 523 td.td-time {
515 524 padding-left: .5em;
516 525 }
517 526
518 527 // special case to not show hover actions on hidden indicator
519 528 tr.compare_select_hidden:hover {
520 529 cursor: inherit;
521 530
522 531 td {
523 532 background-color: inherit;
524 533 }
525 534 }
526 535
527 536 tr:hover {
528 537 cursor: pointer;
529 538
530 539 td {
531 540 background-color: lighten(@alert4,25%);
532 541 }
533 542 }
534 543
535 544
536 545 }
537 546
538 547 .file_history {
539 548 td.td-actions {
540 549 text-align: right;
541 550 }
542 551 }
543 552
544 553
545 554 // Gist List
546 555 #gist_list_table {
547 556 td {
548 557 vertical-align: middle;
549 558
550 559 div{
551 560 display: inline-block;
552 561 vertical-align: middle;
553 562 }
554 563
555 564 img{
556 565 vertical-align: middle;
557 566 }
558 567
559 568 &.td-expire {
560 569 width: 200px;
561 570 }
562 571 &.td-gist-type {
563 572 width: 100px;
564 573 }
565 574 }
566 575 }
@@ -1,614 +1,618 b''
1 1 //
2 2 // Typography
3 3 // modified from Bootstrap
4 4 // --------------------------------------------------
5 5
6 6 // Base
7 7 body {
8 8 font-size: @basefontsize;
9 9 font-family: @text-light;
10 10 letter-spacing: .02em;
11 11 color: @grey2;
12 12 }
13 13
14 14 #content, label{
15 15 font-size: @basefontsize;
16 16 }
17 17
18 18 label {
19 19 color: @grey2;
20 20 }
21 21
22 22 ::selection { background: @rchighlightblue; }
23 23
24 24 // Headings
25 25 // -------------------------
26 26
27 27 h1, h2, h3, h4, h5, h6,
28 28 .h1, .h2, .h3, .h4, .h5, .h6 {
29 29 margin: 0 0 @textmargin 0;
30 30 padding: 0;
31 31 line-height: 1.8em;
32 32 color: @text-color;
33 33 a {
34 34 color: @rcblue;
35 35 }
36 36 }
37 37
38 38 h1, .h1 { font-size: 1.54em; font-weight: @text-bold-weight; font-family: @text-bold; }
39 39 h2, .h2 { font-size: 1.23em; font-weight: @text-semibold-weight; font-family: @text-semibold; }
40 40 h3, .h3 { font-size: 1.23em; font-family: @text-regular; }
41 41 h4, .h4 { font-size: 1em; font-weight: @text-bold-weight; font-family: @text-bold; }
42 42 h5, .h5 { font-size: 1em; font-weight: @text-bold-weight; font-family: @text-bold; }
43 43 h6, .h6 { font-size: 1em; font-weight: @text-bold-weight; font-family: @text-bold; }
44 44
45 45 // Breadcrumbs
46 46 .breadcrumbs {
47 47 font-size: @repo-title-fontsize;
48 48 margin: 0;
49 49 width: ~"calc(100% - 180px)";
50 50 float: left;
51 51
52 52 h4 {
53 53 font-size: @basefontsize;
54 54 margin-bottom: 15px;
55 55 }
56 56 }
57 57
58 58 .breadcrumbs_light {
59 59 float:left;
60 60 font-size: 1.3em;
61 61 line-height: 38px;
62 62 }
63 63
64 64 // Body text
65 65 // -------------------------
66 66
67 67 p {
68 68 margin: 0 0 @textmargin 0;
69 69 padding: 0;
70 70 line-height: 2em;
71 71 }
72 72
73 73 .lead {
74 74 margin-bottom: @textmargin;
75 75 font-weight: 300;
76 76 line-height: 1.4;
77 77
78 78 @media (min-width: @screen-sm-min) {
79 79 font-size: (@basefontsize * 1.5);
80 80 }
81 81 }
82 82
83 83 a,
84 84 .link {
85 85 color: @rcblue;
86 86 text-decoration: none;
87 87 outline: none;
88 88 cursor: pointer;
89 89
90 90 &:focus {
91 91 outline: none;
92 92 }
93 93
94 94 &:hover {
95 95 color: @rcdarkblue;
96 96 }
97 97 }
98 98
99 99 img {
100 100 border: none;
101 101 outline: none;
102 102 }
103 103
104 104 strong {
105 105 font-weight: @text-bold-weight;
106 106 font-family: @text-bold;
107 107 }
108 108
109 109 em {
110 110 font-family: @text-italic;
111 111 font-style: italic;
112 112 }
113 113
114 114 strong em,
115 115 em strong {
116 116 font-style: italic;
117 117 font-weight: @text-bold-italic-weight;
118 118 font-family: @text-bold-italic;
119 119 }
120 120
121 121 //TODO: lisa: b and i are depreciated, but we are still using them in places.
122 122 // Should probably make some decision whether to keep or lose these.
123 123 b {
124 124
125 125 }
126 126
127 127 i {
128 128 font-style: normal;
129 129 }
130 130
131 131 label {
132 132 color: @text-color;
133 133
134 134 input[type="checkbox"] {
135 135 margin-right: 1em;
136 136 }
137 137 input[type="radio"] {
138 138 margin-right: 1em;
139 139 }
140 140 }
141 141
142 142 code,
143 143 .code {
144 144 font-size: .95em;
145 145 font-family: @text-code;
146 146 color: @grey3;
147 147
148 148 a {
149 149 color: lighten(@rcblue,10%)
150 150 }
151 151 }
152 152
153 153 pre {
154 154 margin: 0;
155 155 padding: 0;
156 156 border: 0;
157 157 outline: 0;
158 158 font-size: @basefontsize*.95;
159 159 line-height: 1.4em;
160 160 font-family: @text-code;
161 161 color: @grey3;
162 162 }
163 163
164 164 // Emphasis & misc
165 165 // -------------------------
166 166 .discreet {
167 167 color: @grey4;
168 168 font-size: 85%;
169 169 font-weight: normal;
170 170
171 171 a {
172 172 color: @grey4;
173 173
174 174 &:hover {
175 175 color: @rcdarkblue;
176 176 }
177 177 }
178 178 }
179 179
180 180 small,
181 181 .small {
182 182 font-size: 75%;
183 183 font-weight: normal;
184 184 line-height: 1em;
185 185 }
186 186
187 187 mark,
188 188 .mark {
189 189 padding: .2em;
190 190 }
191 191
192 192 // Alignment
193 193 .text-left { text-align: left; }
194 194 .text-right { text-align: right; }
195 195 .text-center { text-align: center; }
196 196 .text-justify { text-align: justify; }
197 197 .text-nowrap { white-space: nowrap; }
198 198
199 199 // Transformation
200 200 .text-lowercase { text-transform: lowercase; }
201 201 .text-uppercase { text-transform: uppercase; }
202 202 .text-capitalize { text-transform: capitalize; }
203 203
204 204 // Contextual colors
205 205 .text-muted {
206 206 color: @grey4;
207 207 }
208 208 .text-primary {
209 209 color: @rcblue;
210 210 }
211 211 .text-success {
212 212 color: @alert1;
213 213 }
214 214 .text-info {
215 215 color: @alert4;
216 216 }
217 217 .text-warning {
218 218 color: @alert3;
219 219 }
220 220 .text-danger {
221 221 color: @alert2;
222 222 }
223 223
224 224 // Contextual backgrounds
225 225 .bg-primary {
226 226 background-color: white;
227 227 }
228 228 .bg-success {
229 229 background-color: @alert1;
230 230 }
231 231 .bg-info {
232 232 background-color: @alert4;
233 233 }
234 234 .bg-warning {
235 235 background-color: @alert3;
236 236 }
237 237 .bg-danger {
238 238 background-color: @alert2;
239 239 }
240 240
241 241
242 242 // Page header
243 243 // -------------------------
244 244
245 245 .page-header {
246 246 margin: @pagepadding 0 @textmargin;
247 247 border-bottom: @border-thickness solid @grey5;
248 248 }
249 249
250 250 .title {
251 251 clear: both;
252 252 float: left;
253 253 width: 100%;
254 254 margin: @pagepadding/2 0 @pagepadding/4;
255 255 min-height: 25px;
256 256
257 257 .breadcrumbs {
258 258 float: left;
259 259 clear: both;
260 260 width: 700px;
261 261 margin: 0;
262 262
263 263 .q_filter_box {
264 264 margin-right: @padding;
265 265 }
266 266 }
267 267
268 268 h1 a {
269 269 color: @rcblue;
270 270 }
271 271
272 272 input{
273 273 margin-right: @padding;
274 274 }
275 275
276 276 h5, .h5 {
277 277 color: @grey1;
278 278 margin-bottom: @space;
279 279
280 280 span {
281 281 display: inline-block;
282 282 }
283 283 }
284 284
285 285 p {
286 286 margin-bottom: 0;
287 287 }
288 288
289 289 .links {
290 290 float: right;
291 291 display: inline;
292 292 margin: 0;
293 293 padding-left: 0;
294 294 list-style: none;
295 295 text-align: right;
296 296
297 297 li {
298 298 float: right;
299 299 list-style-type: none;
300 300 }
301 301
302 302 a {
303 303 display: inline-block;
304 304 margin-left: @textmargin/2;
305 305 }
306 306 }
307 307
308 308 .title-content {
309 309
310 310 &.repo-title {
311 311 float: none
312 312 }
313 313
314 314 float: left;
315 315 margin: 0;
316 316 padding: 0;
317 317
318 318 & + .breadcrumbs {
319 319 margin-top: @padding;
320 320 }
321 321
322 322 & + .links {
323 323 margin-top: -@button-padding;
324 324
325 325 & + .breadcrumbs {
326 326 margin-top: @padding;
327 327 }
328 328 }
329 329
330 330 .repo-group-desc {
331 331 padding: 8px 0px 0px 0px;
332 332 }
333 333 }
334 334
335 335 .title-main {
336 336 font-size: @repo-title-fontsize;
337 337 }
338 338
339 339 .title-description {
340 340 margin-top: .5em;
341 341 }
342 342
343 343 .q_filter_box {
344 344 width: 200px;
345 345 }
346 346
347 #obj_count {
348 line-height: 34px;
349 }
350
347 351 }
348 352
349 353 #readme .title {
350 354 text-transform: none;
351 355 }
352 356
353 357 // Lists
354 358 // -------------------------
355 359
356 360 // Unordered and Ordered lists
357 361 ul,
358 362 ol {
359 363 margin-top: 0;
360 364 margin-bottom: @textmargin;
361 365 ul,
362 366 ol {
363 367 margin-bottom: 0;
364 368 }
365 369 }
366 370
367 371 li {
368 372 line-height: 2em;
369 373 }
370 374
371 375 ul li {
372 376 position: relative;
373 377 list-style-type: disc;
374 378
375 379 p:first-child {
376 380 display:inline;
377 381 }
378 382 }
379 383
380 384 // List options
381 385
382 386 // Unstyled keeps list items block level, just removes default browser padding and list-style
383 387 .list-unstyled {
384 388 padding-left: 0;
385 389 list-style: none;
386 390 li:before { content: none; }
387 391 }
388 392
389 393 // Inline turns list items into inline-block
390 394 .list-inline {
391 395 .list-unstyled();
392 396 margin-left: -5px;
393 397
394 398 > li {
395 399 display: inline-block;
396 400 padding-left: 5px;
397 401 padding-right: 5px;
398 402 }
399 403 }
400 404
401 405 // Description Lists
402 406
403 407 dl {
404 408 margin-top: 0; // Remove browser default
405 409 margin-bottom: @textmargin;
406 410 }
407 411
408 412 dt,
409 413 dd {
410 414 line-height: 1.4em;
411 415 }
412 416
413 417 dt {
414 418 margin: @textmargin 0 0 0;
415 419 font-weight: @text-bold-weight;
416 420 font-family: @text-bold;
417 421 }
418 422
419 423 dd {
420 424 margin-left: 0; // Undo browser default
421 425 }
422 426
423 427 // Horizontal description lists
424 428 // Defaults to being stacked without any of the below styles applied, until the
425 429 // grid breakpoint is reached (default of ~768px).
426 430 // These are used in forms as well; see style guide.
427 431 // TODO: lisa: These should really not be used in forms.
428 432
429 433 .dl-horizontal {
430 434
431 435 overflow: hidden;
432 436 margin-bottom: @space;
433 437
434 438 dt, dd {
435 439 float: left;
436 440 margin: 5px 0 5px 0;
437 441 }
438 442
439 443 dt {
440 444 clear: left;
441 445 width: @label-width - @form-vertical-margin;
442 446 }
443 447
444 448 dd {
445 449 &:extend(.clearfix all); // Clear the floated `dt` if an empty `dd` is present
446 450 margin-left: @form-vertical-margin;
447 451 max-width: @form-max-width - (@label-width - @form-vertical-margin) - @form-vertical-margin;
448 452 }
449 453
450 454 pre {
451 455 margin: 0;
452 456 }
453 457
454 458 &.settings {
455 459 dt {
456 460 text-align: left;
457 461 }
458 462 }
459 463
460 464 @media (min-width: 768px) {
461 465 dt {
462 466 float: left;
463 467 width: 185px;
464 468 clear: left;
465 469 text-align: right;
466 470 }
467 471 dd {
468 472 margin-left: 20px;
469 473 }
470 474 }
471 475
472 476 &.dt-300 {
473 477 dt {
474 478 width: 300px;
475 479 }
476 480 }
477 481
478 482 &.dt-400 {
479 483 dt {
480 484 width: 400px;
481 485 }
482 486 }
483 487
484 488 &.dt-500 {
485 489 dt {
486 490 width: 500px;
487 491 }
488 492 }
489 493
490 494 &.dt-600 {
491 495 dt {
492 496 width: 600px;
493 497 }
494 498 }
495 499
496 500 &.dt-700 {
497 501 dt {
498 502 width: 700px;
499 503 }
500 504 }
501 505
502 506 &.dt-800 {
503 507 dt {
504 508 width: 800px;
505 509 }
506 510 }
507 511 }
508 512
509 513
510 514 // Misc
511 515 // -------------------------
512 516
513 517 // Abbreviations and acronyms
514 518 abbr[title],
515 519 abbr[data-original-title] {
516 520 cursor: help;
517 521 border-bottom: @border-thickness dotted @grey4;
518 522 }
519 523 .initialism {
520 524 font-size: 90%;
521 525 text-transform: uppercase;
522 526 }
523 527
524 528 // Blockquotes
525 529 blockquote {
526 530 padding: 1em 2em;
527 531 margin: 0 0 2em;
528 532 font-size: @basefontsize;
529 533 border-left: 2px solid @grey6;
530 534
531 535 p,
532 536 ul,
533 537 ol {
534 538 &:last-child {
535 539 margin-bottom: 0;
536 540 }
537 541 }
538 542
539 543 footer,
540 544 small,
541 545 .small {
542 546 display: block;
543 547 font-size: 80%;
544 548
545 549 &:before {
546 550 content: '\2014 \00A0'; // em dash, nbsp
547 551 }
548 552 }
549 553 }
550 554
551 555 // Opposite alignment of blockquote
552 556 //
553 557 .blockquote-reverse,
554 558 blockquote.pull-right {
555 559 padding-right: 15px;
556 560 padding-left: 0;
557 561 border-right: 5px solid @grey6;
558 562 border-left: 0;
559 563 text-align: right;
560 564
561 565 // Account for citation
562 566 footer,
563 567 small,
564 568 .small {
565 569 &:before { content: ''; }
566 570 &:after {
567 571 content: '\00A0 \2014'; // nbsp, em dash
568 572 }
569 573 }
570 574 }
571 575
572 576 // Addresses
573 577 address {
574 578 margin-bottom: 2em;
575 579 font-style: normal;
576 580 line-height: 1.8em;
577 581 }
578 582
579 583 .error-message {
580 584 display: block;
581 585 margin: @padding/3 0;
582 586 color: @alert2;
583 587 }
584 588
585 589 .issue-tracker-link {
586 590 color: @rcblue;
587 591 }
588 592
589 593 .info_text{
590 594 font-size: @basefontsize;
591 595 color: @grey4;
592 596 font-family: @text-regular;
593 597 }
594 598
595 599 .help-block-inline {
596 600 margin: 0 !important;
597 601 }
598 602
599 603 // help block text
600 604 .help-block {
601 605 display: block;
602 606 margin: 0 0 @padding;
603 607 color: @grey4;
604 608 font-family: @text-light;
605 609 &.pre-formatting {
606 610 white-space: pre-wrap;
607 611 }
608 612 }
609 613
610 614 .error-message {
611 615 display: block;
612 616 margin: @padding/3 0;
613 617 color: @alert2;
614 618 }
@@ -1,211 +1,212 b''
1 1 // # Copyright (C) 2016-2020 RhodeCode GmbH
2 2 // #
3 3 // # This program is free software: you can redistribute it and/or modify
4 4 // # it under the terms of the GNU Affero General Public License, version 3
5 5 // # (only), as published by the Free Software Foundation.
6 6 // #
7 7 // # This program is distributed in the hope that it will be useful,
8 8 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
9 9 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 10 // # GNU General Public License for more details.
11 11 // #
12 12 // # You should have received a copy of the GNU Affero General Public License
13 13 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
14 14 // #
15 15 // # This program is dual-licensed. If you wish to learn more about the
16 16 // # RhodeCode Enterprise Edition, including its added features, Support services,
17 17 // # and proprietary license terms, please see https://rhodecode.com/licenses/
18 18
19 19
20 20 var CommitsController = function () {
21 21 var self = this;
22 22 this.$graphCanvas = $('#graph_canvas');
23 23 this.$commitCounter = $('#commit-counter');
24 24
25 25 this.getCurrentGraphData = function () {
26 26 // raw form
27 27 return self.$graphCanvas.data('commits');
28 28 };
29 29
30 30 this.setLabelText = function (graphData) {
31 31 var shown = $('.commit_hash').length;
32 32 var total = self.$commitCounter.data('total');
33 33
34 34 if (shown == 1) {
35 35 var text = _gettext('showing {0} out of {1} commit').format(shown, total);
36 36 } else {
37 37 var text = _gettext('showing {0} out of {1} commits').format(shown, total);
38 38 }
39 39 self.$commitCounter.html(text)
40 40 };
41 41
42 42 this.reloadGraph = function (chunk) {
43 43 chunk = chunk || 'next';
44 44
45 45 // reset state on re-render !
46 46 self.$graphCanvas.html('');
47 47
48 48 var edgeData = $("[data-graph]").data('graph') || this.$graphCanvas.data('graph') || [];
49 49 var prev_link = $('.load-more-commits').find('.prev-commits').get(0);
50 50 var next_link = $('.load-more-commits').find('.next-commits').get(0);
51 51
52 52 // Determine max number of edges per row in graph
53 53 var edgeCount = 1;
54 54 $.each(edgeData, function (i, item) {
55 55 $.each(item[2], function (key, value) {
56 56 if (value[1] > edgeCount) {
57 57 edgeCount = value[1];
58 58 }
59 59 });
60 60 });
61 61
62 62 if (prev_link && next_link) {
63 63 var graph_padding = -64;
64 64 }
65 65 else if (next_link) {
66 66 var graph_padding = -32;
67 67 } else {
68 68 var graph_padding = 0;
69 69 }
70 70
71 71 var x_step = Math.min(10, Math.floor(86 / edgeCount));
72 72 var height = $('#changesets').find('.commits-range').height() + graph_padding;
73 73 var graph_options = {
74 74 width: 100,
75 75 height: height,
76 76 x_step: x_step,
77 77 y_step: 42,
78 dotRadius: 3.5,
79 lineWidth: 2.5
78 dotRadius: 3.8,
79 lineWidth: 2.8
80 80 };
81 81
82 82 var prevCommitsData = this.$graphCanvas.data('commits') || [];
83 83 var nextCommitsData = $("[data-graph]").data('commits') || [];
84 84
85 85 if (chunk == 'next') {
86 86 var commitData = $.merge(prevCommitsData, nextCommitsData);
87 87 } else {
88 88 var commitData = $.merge(nextCommitsData, prevCommitsData);
89 89 }
90 90
91 91 this.$graphCanvas.data('graph', edgeData);
92 92 this.$graphCanvas.data('commits', commitData);
93 93
94 94 // destroy dynamic loaded graph
95 95 $("[data-graph]").remove();
96 96
97 97 this.$graphCanvas.commits(graph_options);
98 98
99 99 this.setLabelText(edgeData);
100 100
101 var padding = 90;
101 // main padding from top, aligns the first dot graph
102 var padding = 100;
102 103 if (prev_link) {
103 104 padding += 34;
105 }
104 106
105 }
106 107 $('#graph_nodes').css({'padding-top': padding});
107 108
108 109 $.each($('.message.truncate'), function(idx, value) {
109 110 if(!(value.offsetWidth < value.scrollWidth)){
110 111 var expandTd = $(this).closest('td').siblings('.expand_commit');
111 112 expandTd.find('i').hide();
112 113 expandTd.removeAttr('title');
113 114 expandTd.removeClass('expand_commit');
114 115 }
115 116 });
116 117
117 118 };
118 119
119 120 this.getChunkUrl = function (page, chunk, branch, commit_id, f_path) {
120 121 var urlData = {
121 122 'repo_name': templateContext.repo_name,
122 123 'page': page,
123 124 'chunk': chunk
124 125 };
125 126
126 127 if (branch !== undefined && branch !== '') {
127 128 urlData['branch'] = branch;
128 129 }
129 130 if (commit_id !== undefined && commit_id !== '') {
130 131 urlData['commit_id'] = commit_id;
131 132 }
132 133 if (f_path !== undefined && f_path !== '') {
133 134 urlData['f_path'] = f_path;
134 135 }
135 136
136 137 if (urlData['commit_id'] && urlData['f_path']) {
137 138 return pyroutes.url('repo_commits_elements_file', urlData);
138 139 }
139 140 else {
140 141 return pyroutes.url('repo_commits_elements', urlData);
141 142 }
142 143
143 144 };
144 145
145 146 this.loadNext = function (node, page, branch, commit_id, f_path) {
146 147 var loadUrl = this.getChunkUrl(page, 'next', branch, commit_id, f_path);
147 148 var postData = {'graph': JSON.stringify(this.getCurrentGraphData())};
148 149 $(node).html('loading...').addClass('disabled').css({'cursor':'default'});
149 150 $.post(loadUrl, postData, function (data) {
150 151 $(node).closest('tbody').append(data);
151 152 $(node).closest('td').remove();
152 153 self.reloadGraph('next');
153 154 })
154 155 };
155 156
156 157 this.loadPrev = function (node, page, branch, commit_id, f_path) {
157 158 var loadUrl = this.getChunkUrl(page, 'prev', branch, commit_id, f_path);
158 159 var postData = {'graph': JSON.stringify(this.getCurrentGraphData())};
159 160 $(node).html('loading...').addClass('disabled').css({'cursor':'default'});
160 161 $.post(loadUrl, postData, function (data) {
161 162 $(node).closest('tbody').prepend(data);
162 163 $(node).closest('td').remove();
163 164 self.reloadGraph('prev');
164 165 })
165 166 };
166 167
167 168 this.expandCommit = function (node, reloadGraph) {
168 169 reloadGraph = reloadGraph || false;
169 170
170 171 var target_expand = $(node);
171 172 var cid = target_expand.data('commitId');
172 173
173 174 if (target_expand.hasClass('open')) {
174 175 $('#c-' + cid).css({
175 176 'height': '1.5em',
176 177 'white-space': 'nowrap',
177 178 'text-overflow': 'ellipsis',
178 179 'overflow': 'hidden'
179 180 });
180 181 $('#t-' + cid).css({
181 182 'height': 'auto',
182 183 'line-height': '.9em',
183 184 'text-overflow': 'ellipsis',
184 185 'overflow': 'hidden',
185 186 'white-space': 'nowrap'
186 187 });
187 188 target_expand.removeClass('open');
188 189 }
189 190 else {
190 191 $('#c-' + cid).css({
191 192 'height': 'auto',
192 193 'white-space': 'pre-line',
193 194 'text-overflow': 'initial',
194 195 'overflow': 'visible'
195 196 });
196 197 $('#t-' + cid).css({
197 198 'height': 'auto',
198 199 'max-height': 'none',
199 200 'text-overflow': 'initial',
200 201 'overflow': 'visible',
201 202 'white-space': 'normal'
202 203 });
203 204 target_expand.addClass('open');
204 205 }
205 206
206 207 if (reloadGraph) {
207 208 // redraw the graph
208 209 self.reloadGraph();
209 210 }
210 211 }
211 212 };
@@ -1,144 +1,144 b''
1 1 <%namespace name="base" file="/base/base.mako"/>
2 2
3 3 <div class="panel panel-default">
4 4 <div class="panel-body">
5 5 <div style="height: 35px">
6 6 <%
7 7 selected_filter = 'all'
8 8 if c.closed:
9 9 selected_filter = 'all_closed'
10 10 %>
11 11
12 12 <ul class="button-links">
13 13 <li class="btn ${h.is_active('all', selected_filter)}"><a href="${h.route_path('my_account_pullrequests')}">${_('All')}</a></li>
14 14 <li class="btn ${h.is_active('all_closed', selected_filter)}"><a href="${h.route_path('my_account_pullrequests', _query={'pr_show_closed':1})}">${_('All + Closed')}</a></li>
15 15 </ul>
16 16
17 17 <div class="grid-quick-filter">
18 18 <ul class="grid-filter-box">
19 19 <li class="grid-filter-box-icon">
20 20 <i class="icon-search"></i>
21 21 </li>
22 22 <li class="grid-filter-box-input">
23 23 <input class="q_filter_box" id="q_filter" size="15" type="text" name="filter" placeholder="${_('quick filter...')}" value=""/>
24 24 </li>
25 25 </ul>
26 26 </div>
27 27 </div>
28 28 </div>
29 29 </div>
30 30
31 31 <div class="panel panel-default">
32 32 <div class="panel-heading">
33 33 <h3 class="panel-title">${_('Pull Requests You Participate In')}</h3>
34 34 </div>
35 35 <div class="panel-body panel-body-min-height">
36 <table id="pull_request_list_table" class="display"></table>
36 <table id="pull_request_list_table" class="rctable table-bordered"></table>
37 37 </div>
38 38 </div>
39 39
40 40 <script type="text/javascript">
41 41 $(document).ready(function () {
42 42
43 43 var $pullRequestListTable = $('#pull_request_list_table');
44 44
45 45 // participating object list
46 46 $pullRequestListTable.DataTable({
47 47 processing: true,
48 48 serverSide: true,
49 49 ajax: {
50 50 "url": "${h.route_path('my_account_pullrequests_data')}",
51 51 "data": function (d) {
52 52 d.closed = "${c.closed}";
53 53 },
54 54 "dataSrc": function (json) {
55 55 return json.data;
56 56 }
57 57 },
58 58
59 59 dom: 'rtp',
60 60 pageLength: ${c.visual.dashboard_items},
61 61 order: [[2, "desc"]],
62 62 columns: [
63 63 {
64 64 data: {
65 65 "_": "target_repo",
66 66 "sort": "target_repo"
67 67 }, title: "${_('Target Repo')}", className: "td-targetrepo", orderable: false
68 68 },
69 69 {
70 70 data: {
71 71 "_": "status",
72 72 "sort": "status"
73 73 }, title: "", className: "td-status", orderable: false
74 74 },
75 75 {
76 76 data: {
77 77 "_": "name",
78 78 "sort": "name_raw"
79 79 }, title: "${_('Id')}", className: "td-componentname", "type": "num"
80 80 },
81 81 {
82 82 data: {
83 83 "_": "title",
84 84 "sort": "title"
85 85 }, title: "${_('Title')}", className: "td-description"
86 86 },
87 87 {
88 88 data: {
89 89 "_": "author",
90 90 "sort": "author_raw"
91 91 }, title: "${_('Author')}", className: "td-user", orderable: false
92 92 },
93 93 {
94 94 data: {
95 95 "_": "comments",
96 96 "sort": "comments_raw"
97 97 }, title: "", className: "td-comments", orderable: false
98 98 },
99 99 {
100 100 data: {
101 101 "_": "updated_on",
102 102 "sort": "updated_on_raw"
103 103 }, title: "${_('Last Update')}", className: "td-time"
104 104 }
105 105 ],
106 106 language: {
107 107 paginate: DEFAULT_GRID_PAGINATION,
108 108 sProcessing: _gettext('loading...'),
109 109 emptyTable: _gettext("There are currently no open pull requests requiring your participation.")
110 110 },
111 111 "drawCallback": function (settings, json) {
112 112 timeagoActivate();
113 113 tooltipActivate();
114 114 },
115 115 "createdRow": function (row, data, index) {
116 116 if (data['closed']) {
117 117 $(row).addClass('closed');
118 118 }
119 119 if (data['owned']) {
120 120 $(row).addClass('owned');
121 121 }
122 122 }
123 123 });
124 124 $pullRequestListTable.on('xhr.dt', function (e, settings, json, xhr) {
125 125 $pullRequestListTable.css('opacity', 1);
126 126 });
127 127
128 128 $pullRequestListTable.on('preXhr.dt', function (e, settings, data) {
129 129 $pullRequestListTable.css('opacity', 0.3);
130 130 });
131 131
132 132 // filter
133 133 $('#q_filter').on('keyup',
134 134 $.debounce(250, function () {
135 135 $pullRequestListTable.DataTable().search(
136 136 $('#q_filter').val()
137 137 ).draw();
138 138 })
139 139 );
140 140
141 141 });
142 142
143 143
144 144 </script>
@@ -1,102 +1,114 b''
1 1 ## -*- coding: utf-8 -*-
2 2 <%inherit file="/base/base.mako"/>
3 3
4 4 <%def name="title()">
5 5 ${_('%s Bookmarks') % c.repo_name}
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()"></%def>
12 12
13 13 <%def name="menu_bar_nav()">
14 14 ${self.menu_items(active='repositories')}
15 15 </%def>
16 16
17 17 <%def name="menu_bar_subnav()">
18 18 ${self.repo_menu(active='summary')}
19 19 </%def>
20 20
21 21 <%def name="main()">
22 22 <div class="box">
23 23 <div class="title">
24 24
25 25 %if c.has_references:
26 26 <ul class="links">
27 27 <li>
28 28 <input type="submit" id="compare_action" class="btn" disabled="disabled" value="${_('Compare Selected Bookmarks')}">
29 29 </li>
30 30 </ul>
31 31 %endif
32 32 %if c.has_references:
33 <input class="q_filter_box" id="q_filter" size="15" type="text" name="filter" placeholder="${_('quick filter...')}" value=""/>
34 <span id="obj_count">0</span> ${_('bookmarks')}
33 <div class="grid-quick-filter">
34 <ul class="grid-filter-box">
35 <li class="grid-filter-box-icon">
36 <i class="icon-search"></i>
37 </li>
38 <li class="grid-filter-box-input">
39 <input class="q_filter_box" id="q_filter" size="15" type="text" name="filter" placeholder="${_('quick filter...')}" value=""/>
40 </li>
41 </ul>
42 </div>
43 <div id="obj_count">0</div>
35 44 %endif
36 45 </div>
37 <table id="obj_list_table" class="display"></table>
46
47 <table id="obj_list_table" class="rctable table-bordered"></table>
38 48 </div>
39 49
40 50
41 51 <script type="text/javascript">
42 52 $(document).ready(function() {
43 53
44 54 var get_datatable_count = function(){
45 55 var api = $('#obj_list_table').dataTable().api();
46 $('#obj_count').text(api.page.info().recordsDisplay);
56 var total = api.page.info().recordsDisplay
57 var _text = _ngettext('{0} bookmark', '{0} bookmarks', total).format(total);
58 $('#obj_count').text(_text);
47 59 };
48 60
49 61 // object list
50 62 $('#obj_list_table').DataTable({
51 63 data: ${c.data|n},
52 64 dom: 'rtp',
53 65 pageLength: ${c.visual.dashboard_items},
54 66 order: [[ 0, "asc" ]],
55 67 columns: [
56 68 { data: {"_": "name",
57 69 "sort": "name_raw"}, title: "${_('Name')}", className: "td-tags" },
58 70 { data: {"_": "date",
59 71 "sort": "date_raw"}, title: "${_('Date')}", className: "td-time" },
60 72 { data: {"_": "author",
61 73 "sort": "author"}, title: "${_('Author')}", className: "td-user" },
62 74 { data: {"_": "commit",
63 75 "sort": "commit_raw",
64 76 "type": Number}, title: "${_('Commit')}", className: "td-hash" },
65 77 { data: {"_": "compare",
66 78 "sort": "compare"}, title: "${_('Compare')}", className: "td-compare" }
67 79 ],
68 80 language: {
69 81 paginate: DEFAULT_GRID_PAGINATION,
70 82 emptyTable: _gettext("No bookmarks available yet.")
71 83 },
72 84 "initComplete": function(settings, json) {
73 85 get_datatable_count();
74 86 timeagoActivate();
75 87 tooltipActivate();
76 88 compare_radio_buttons("${c.repo_name}", 'book');
77 89 }
78 90 });
79 91
80 92 // update when things change
81 93 $('#obj_list_table').on('draw.dt', function() {
82 94 get_datatable_count();
83 95 timeagoActivate();
84 96 tooltipActivate();
85 97 });
86 98
87 99 // filter, filter both grids
88 100 $('#q_filter').on('keyup', function() {
89 101 var obj_api = $('#obj_list_table').dataTable().api();
90 102 obj_api
91 103 .columns(0)
92 104 .search(this.value)
93 105 .draw();
94 106 });
95 107
96 108 // refilter table if page load via back button
97 109 $("#q_filter").trigger('keyup');
98 110
99 111 });
100 112
101 113 </script>
102 114 </%def>
@@ -1,101 +1,113 b''
1 1 ## -*- coding: utf-8 -*-
2 2 <%inherit file="/base/base.mako"/>
3 3
4 4 <%def name="title()">
5 5 ${_('%s Branches') % c.repo_name}
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()"></%def>
12 12
13 13 <%def name="menu_bar_nav()">
14 14 ${self.menu_items(active='repositories')}
15 15 </%def>
16 16
17 17 <%def name="menu_bar_subnav()">
18 18 ${self.repo_menu(active='summary')}
19 19 </%def>
20 20
21 21 <%def name="main()">
22 22 <div class="box">
23 23 <div class="title">
24 24
25 25 %if c.has_references:
26 26 <ul class="links">
27 27 <li>
28 28 <input type="submit" id="compare_action" class="btn" disabled="disabled" value="${_('Compare Selected Branches')}"/>
29 29 </li>
30 30 </ul>
31 31 %endif
32 32 %if c.has_references:
33 <input class="q_filter_box" id="q_filter" size="15" type="text" name="filter" placeholder="${_('quick filter...')}" value=""/>
34 <span id="obj_count">0</span> ${_('branches')}
33 <div class="grid-quick-filter">
34 <ul class="grid-filter-box">
35 <li class="grid-filter-box-icon">
36 <i class="icon-search"></i>
37 </li>
38 <li class="grid-filter-box-input">
39 <input class="q_filter_box" id="q_filter" size="15" type="text" name="filter" placeholder="${_('quick filter...')}" value=""/>
40 </li>
41 </ul>
42 </div>
43 <div id="obj_count">0</div>
35 44 %endif
36 45 </div>
37 <table id="obj_list_table" class="display"></table>
46 <table id="obj_list_table" class="rctable table-bordered"></table>
38 47 </div>
39 48
40 49 <script type="text/javascript">
41 50 $(document).ready(function() {
42 51
43 52 var get_datatable_count = function(){
44 53 var api = $('#obj_list_table').dataTable().api();
45 $('#obj_count').text(api.page.info().recordsDisplay);
54 var total = api.page.info().recordsDisplay
55 var _text = _ngettext('{0} branch', '{0} branches', total).format(total);
56
57 $('#obj_count').text(_text);
46 58 };
47 59
48 60 // object list
49 61 $('#obj_list_table').DataTable({
50 62 data: ${c.data|n},
51 63 dom: 'rtp',
52 64 pageLength: ${c.visual.dashboard_items},
53 65 order: [[ 0, "asc" ]],
54 66 columns: [
55 67 { data: {"_": "name",
56 68 "sort": "name_raw"}, title: "${_('Name')}", className: "td-tags" },
57 69 { data: {"_": "date",
58 70 "sort": "date_raw"}, title: "${_('Date')}", className: "td-time" },
59 71 { data: {"_": "author",
60 72 "sort": "author"}, title: "${_('Author')}", className: "td-user" },
61 73 { data: {"_": "commit",
62 74 "sort": "commit_raw",
63 75 "type": Number}, title: "${_('Commit')}", className: "td-hash" },
64 76 { data: {"_": "compare",
65 77 "sort": "compare"}, title: "${_('Compare')}", className: "td-compare" }
66 78 ],
67 79 language: {
68 80 paginate: DEFAULT_GRID_PAGINATION,
69 81 emptyTable: _gettext("No branches available yet.")
70 82 },
71 83 "initComplete": function( settings, json ) {
72 84 get_datatable_count();
73 85 timeagoActivate();
74 86 tooltipActivate();
75 87 compare_radio_buttons("${c.repo_name}", 'branch');
76 88 }
77 89 });
78 90
79 91 // update when things change
80 92 $('#obj_list_table').on('draw.dt', function() {
81 93 get_datatable_count();
82 94 timeagoActivate();
83 95 tooltipActivate();
84 96 });
85 97
86 98 // filter, filter both grids
87 99 $('#q_filter').on( 'keyup', function () {
88 100 var obj_api = $('#obj_list_table').dataTable().api();
89 101 obj_api
90 102 .columns(0)
91 103 .search(this.value)
92 104 .draw();
93 105 });
94 106
95 107 // refilter table if page load via back button
96 108 $("#q_filter").trigger('keyup');
97 109
98 110 });
99 111
100 112 </script>
101 113 </%def>
@@ -1,326 +1,326 b''
1 1 ## -*- coding: utf-8 -*-
2 2
3 3 <%inherit file="/base/base.mako"/>
4 4
5 5 <%def name="title()">
6 6 ${_('%s Changelog') % c.repo_name}
7 7 %if c.changelog_for_path:
8 8 /${c.changelog_for_path}
9 9 %endif
10 10 %if c.rhodecode_name:
11 11 &middot; ${h.branding(c.rhodecode_name)}
12 12 %endif
13 13 </%def>
14 14
15 15 <%def name="breadcrumbs_links()">
16 16 %if c.changelog_for_path:
17 17 /${c.changelog_for_path}
18 18 %endif
19 19 </%def>
20 20
21 21 <%def name="menu_bar_nav()">
22 22 ${self.menu_items(active='repositories')}
23 23 </%def>
24 24
25 25 <%def name="menu_bar_subnav()">
26 26 ${self.repo_menu(active='commits')}
27 27 </%def>
28 28
29 29 <%def name="main()">
30 30
31 31 <div class="box">
32 32
33 33 <div class="title">
34 34 <div id="filter_changelog">
35 35 ${h.hidden('branch_filter')}
36 36 %if c.selected_name:
37 37 <div class="btn btn-default" id="clear_filter" >
38 38 ${_('Clear filter')}
39 39 </div>
40 40 %endif
41 41 </div>
42 42 <div class="pull-left obsolete-toggle">
43 43 % if h.is_hg(c.rhodecode_repo):
44 44 % if c.show_hidden:
45 45 <a class="action-link" href="${h.current_route_path(request, evolve=0)}">${_('Hide obsolete/hidden')}</a>
46 46 % else:
47 47 <a class="action-link" href="${h.current_route_path(request, evolve=1)}">${_('Show obsolete/hidden')}</a>
48 48 % endif
49 49 % else:
50 50 <span class="action-link disabled">${_('Show hidden')}</span>
51 51 % endif
52 52 </div>
53 53 <ul class="links">
54 54 <li>
55 55
56 56 %if c.rhodecode_db_repo.fork:
57 57 <span>
58 58 <a id="compare_fork_button"
59 59 title="${h.tooltip(_('Compare fork with %s' % c.rhodecode_db_repo.fork.repo_name))}"
60 60 class="btn btn-small"
61 61 href="${h.route_path('repo_compare',
62 62 repo_name=c.rhodecode_db_repo.fork.repo_name,
63 63 source_ref_type=c.rhodecode_db_repo.landing_ref_type,
64 64 source_ref=c.rhodecode_db_repo.landing_ref_name,
65 65 target_ref_type='branch' if request.GET.get('branch') else c.rhodecode_db_repo.landing_ref_type,
66 66 target_ref=request.GET.get('branch') or c.rhodecode_db_repo.landing_ref_name,
67 67 _query=dict(merge=1, target_repo=c.repo_name))}"
68 68 >
69 69 ${_('Compare fork with Parent (%s)' % c.rhodecode_db_repo.fork.repo_name)}
70 70 </a>
71 71 </span>
72 72 %endif
73 73
74 74 ## pr open link
75 75 %if h.is_hg(c.rhodecode_repo) or h.is_git(c.rhodecode_repo):
76 76 <span>
77 77 <a id="open_new_pull_request" class="btn btn-small btn-success" href="${h.route_path('pullrequest_new',repo_name=c.repo_name)}">
78 78 ${_('Open new pull request')}
79 79 </a>
80 80 </span>
81 81 %endif
82 82
83 83 </li>
84 84 </ul>
85 85 </div>
86 86
87 87 % if c.pagination:
88 88 <script type="text/javascript" src="${h.asset('js/src/plugins/jquery.commits-graph.js')}"></script>
89 89
90 90 <div class="graph-header">
91 91 ${self.breadcrumbs('breadcrumbs_light')}
92 92 </div>
93 93
94 94 <div id="graph">
95 95 <div class="graph-col-wrapper">
96 96 <div id="graph_nodes">
97 97 <div id="graph_canvas"></div>
98 98 </div>
99 99 <div id="graph_content" class="graph_full_width">
100 100
101 101 <div class="table">
102 <table id="changesets" class="rctable">
102 <table id="changesets" class="rctable table-bordered">
103 103 <tr>
104 104 ## checkbox
105 105 <th colspan="4">
106 106 ## clear selection
107 107 <div title="${_('Clear selection')}" class="btn btn-sm" id="rev_range_clear" style="display:none">
108 108 <i class="icon-cancel-circled2"></i>
109 109 </div>
110 110 <div class="btn btn-sm disabled" disabled="disabled" id="rev_range_more" style="display:none;">${_('Select second commit')}</div>
111 111 <a href="#" class="btn btn-success btn-sm" id="rev_range_container" style="display:none;"></a>
112 112 </th>
113 113
114 114 ## commit message expand arrow
115 115 <th></th>
116 116 <th>${_('Commit Message')}</th>
117 117
118 118 <th>${_('Age')}</th>
119 119 <th>${_('Author')}</th>
120 120
121 121 <th>${_('Refs')}</th>
122 122 ## comments
123 123 <th></th>
124 124 </tr>
125 125
126 126 <tbody class="commits-range">
127 127 <%include file='changelog_elements.mako'/>
128 128 </tbody>
129 129 </table>
130 130 </div>
131 131 </div>
132 132 <div class="pagination-wh pagination-left">
133 133 ${c.pagination.render()}
134 134 </div>
135 135 <div id="commit-counter" data-total=${c.total_cs} class="pull-right">
136 136 ${_ungettext('showing %d out of %d commit', 'showing %d out of %d commits', c.showing_commits) % (c.showing_commits, c.total_cs)}
137 137 </div>
138 138 </div>
139 139
140 140 <script type="text/javascript">
141 141 var cache = {};
142 142 $(function(){
143 143
144 144 // Create links to commit ranges when range checkboxes are selected
145 145 var $commitCheckboxes = $('.commit-range');
146 146 // cache elements
147 147 var $commitRangeMore = $('#rev_range_more');
148 148 var $commitRangeContainer = $('#rev_range_container');
149 149 var $commitRangeClear = $('#rev_range_clear');
150 150
151 151 var checkboxRangeSelector = function(e){
152 152 var selectedCheckboxes = [];
153 153 for (pos in $commitCheckboxes){
154 154 if($commitCheckboxes[pos].checked){
155 155 selectedCheckboxes.push($commitCheckboxes[pos]);
156 156 }
157 157 }
158 158 var open_new_pull_request = $('#open_new_pull_request');
159 159
160 160 if (open_new_pull_request) {
161 161 var selected_changes = selectedCheckboxes.length;
162 162 open_new_pull_request.hide();
163 163 if (selected_changes == 1) {
164 164 open_new_pull_request.html(_gettext('Open new pull request for selected commit'));
165 165 } else {
166 166 open_new_pull_request.html(_gettext('Open new pull request'));
167 167 }
168 168 open_new_pull_request.show();
169 169 }
170 170
171 171 if (selectedCheckboxes.length > 0) {
172 172 $('#compare_fork_button').hide();
173 173 var commitStart = $(selectedCheckboxes[selectedCheckboxes.length-1]).data();
174 174
175 175 var revStart = commitStart.commitId;
176 176
177 177 var commitEnd = $(selectedCheckboxes[0]).data();
178 178 var revEnd = commitEnd.commitId;
179 179
180 180 var lbl_start = '{0}'.format(commitStart.commitIdx, commitStart.shortId);
181 181 var lbl_end = '{0}'.format(commitEnd.commitIdx, commitEnd.shortId);
182 182
183 183 var url = pyroutes.url('repo_commit', {'repo_name': '${c.repo_name}', 'commit_id': revStart+'...'+revEnd});
184 184 var link = _gettext('Show commit range {0} ... {1}').format(lbl_start, lbl_end);
185 185
186 186 if (selectedCheckboxes.length > 1) {
187 187 $commitRangeClear.show();
188 188 $commitRangeMore.hide();
189 189
190 190 $commitRangeContainer
191 191 .attr('href',url)
192 192 .html(link)
193 193 .show();
194 194
195 195
196 196 } else {
197 197 $commitRangeContainer.hide();
198 198 $commitRangeClear.show();
199 199 $commitRangeMore.show();
200 200 }
201 201
202 202 // pull-request link
203 203 if (selectedCheckboxes.length == 1){
204 204 var _url = pyroutes.url('pullrequest_new', {'repo_name': '${c.repo_name}', 'commit': revEnd});
205 205 open_new_pull_request.attr('href', _url);
206 206 } else {
207 207 var _url = pyroutes.url('pullrequest_new', {'repo_name': '${c.repo_name}'});
208 208 open_new_pull_request.attr('href', _url);
209 209 }
210 210
211 211 } else {
212 212 $commitRangeContainer.hide();
213 213 $commitRangeClear.hide();
214 214 $commitRangeMore.hide();
215 215
216 216 %if c.branch_name:
217 217 var _url = pyroutes.url('pullrequest_new', {'repo_name': '${c.repo_name}', 'branch':'${c.branch_name}'});
218 218 open_new_pull_request.attr('href', _url);
219 219 %else:
220 220 var _url = pyroutes.url('pullrequest_new', {'repo_name': '${c.repo_name}'});
221 221 open_new_pull_request.attr('href', _url);
222 222 %endif
223 223 $('#compare_fork_button').show();
224 224 }
225 225 };
226 226
227 227 $commitCheckboxes.on('click', checkboxRangeSelector);
228 228
229 229 $commitRangeClear.on('click',function(e) {
230 230 $commitCheckboxes.attr('checked', false);
231 231 checkboxRangeSelector();
232 232 e.preventDefault();
233 233 });
234 234
235 235 // make sure the buttons are consistent when navigate back and forth
236 236 checkboxRangeSelector();
237 237
238 238 var msgs = $('.message');
239 239 // get first element height
240 240 var el = $('#graph_content .container')[0];
241 241 var row_h = el.clientHeight;
242 242 for (var i=0; i < msgs.length; i++) {
243 243 var m = msgs[i];
244 244
245 245 var h = m.clientHeight;
246 246 var pad = $(m).css('padding');
247 247 if (h > row_h) {
248 248 var offset = row_h - (h+12);
249 249 $(m.nextElementSibling).css('display','block');
250 250 $(m.nextElementSibling).css('margin-top',offset+'px');
251 251 }
252 252 }
253 253
254 254 $("#clear_filter").on("click", function() {
255 255 var filter = {'repo_name': '${c.repo_name}'};
256 256 window.location = pyroutes.url('repo_commits', filter);
257 257 });
258 258
259 259 $("#branch_filter").select2({
260 260 'dropdownAutoWidth': true,
261 261 'width': 'resolve',
262 262 'placeholder': "${c.selected_name or _('Branch filter')}",
263 263 containerCssClass: "drop-menu",
264 264 dropdownCssClass: "drop-menu-dropdown",
265 265 query: function(query){
266 266 var key = 'cache';
267 267 var cached = cache[key] ;
268 268 if(cached) {
269 269 var data = {results: []};
270 270 //filter results
271 271 $.each(cached.results, function(){
272 272 var section = this.text;
273 273 var children = [];
274 274 $.each(this.children, function(){
275 275 if(query.term.length == 0 || this.text.toUpperCase().indexOf(query.term.toUpperCase()) >= 0 ){
276 276 children.push({'id': this.id, 'text': this.text, 'type': this.type})
277 277 }
278 278 });
279 279 data.results.push({'text': section, 'children': children});
280 280 query.callback({results: data.results});
281 281 });
282 282 }else{
283 283 $.ajax({
284 284 url: pyroutes.url('repo_refs_changelog_data', {'repo_name': '${c.repo_name}'}),
285 285 data: {},
286 286 dataType: 'json',
287 287 type: 'GET',
288 288 success: function(data) {
289 289 cache[key] = data;
290 290 query.callback({results: data.results});
291 291 }
292 292 })
293 293 }
294 294 }
295 295 });
296 296 $('#branch_filter').on('change', function(e){
297 297 var data = $('#branch_filter').select2('data');
298 298 //type: branch_closed
299 299 var selected = data.text;
300 300 var filter = {'repo_name': '${c.repo_name}'};
301 301 if(data.type == 'branch' || data.type == 'branch_closed'){
302 302 filter["branch"] = selected;
303 303 if (data.type == 'branch_closed') {
304 304 filter["evolve"] = '1';
305 305 }
306 306 }
307 307 else if (data.type == 'book'){
308 308 filter["bookmark"] = selected;
309 309 }
310 310 window.location = pyroutes.url('repo_commits', filter);
311 311 });
312 312
313 313 commitsController = new CommitsController();
314 314 % if not c.changelog_for_path:
315 315 commitsController.reloadGraph();
316 316 % endif
317 317
318 318 });
319 319
320 320 </script>
321 321 </div>
322 322 % else:
323 323 ${_('There are no changes yet')}
324 324 % endif
325 325 </div>
326 326 </%def>
@@ -1,98 +1,98 b''
1 1 <%namespace name="base" file="/base/base.mako"/>
2 2
3 3 <%
4 4 at_ref = request.GET.get('at')
5 5 if at_ref:
6 6 query={'at': at_ref}
7 7 default_landing_ref = at_ref or c.rhodecode_db_repo.landing_ref_name
8 8 else:
9 9 query=None
10 10 default_landing_ref = c.commit.raw_id
11 11 %>
12 12 <div id="file-tree-wrapper" class="browser-body ${('full-load' if c.full_load else '')}">
13 <table class="code-browser rctable repo_summary">
13 <table class="code-browser rctable table-bordered">
14 14 <thead>
15 15 <tr>
16 16 <th>${_('Name')}</th>
17 17 <th>${_('Size')}</th>
18 18 <th>${_('Modified')}</th>
19 19 <th>${_('Last Commit')}</th>
20 20 <th>${_('Author')}</th>
21 21 </tr>
22 22 </thead>
23 23
24 24 <tbody id="tbody">
25 25 <tr>
26 26 <td colspan="5">
27 27 ${h.files_breadcrumbs(c.repo_name, c.rhodecode_db_repo.repo_type, c.commit.raw_id, c.file.path, c.rhodecode_db_repo.landing_ref_name, request.GET.get('at'), limit_items=True)}
28 28 </td>
29 29 </tr>
30 30
31 31 <% has_files = False %>
32 32 % for cnt,node in enumerate(c.file):
33 33 <% has_files = True %>
34 34 <tr class="parity${(cnt % 2)}">
35 35 <td class="td-componentname">
36 36 % if node.is_submodule():
37 37 <span class="submodule-dir">
38 38 % if node.url.startswith('http://') or node.url.startswith('https://'):
39 39 <a href="${node.url}">
40 40 <i class="icon-directory browser-dir"></i>${node.name}
41 41 </a>
42 42 % else:
43 43 <i class="icon-directory browser-dir"></i>${node.name}
44 44 % endif
45 45 </span>
46 46 % else:
47 47 <a href="${h.repo_files_by_ref_url(c.repo_name, c.rhodecode_db_repo.repo_type, f_path=h.safe_unicode(node.path), ref_name=default_landing_ref, commit_id=c.commit.raw_id, query=query)}">
48 48 <i class="${('icon-file-text browser-file' if node.is_file() else 'icon-directory browser-dir')}"></i>${node.name}
49 49 </a>
50 50 % endif
51 51 </td>
52 52 %if node.is_file():
53 53 <td class="td-size" data-attr-name="size">
54 54 % if c.full_load:
55 55 <span data-size="${node.size}">${h.format_byte_size_binary(node.size)}</span>
56 56 % else:
57 57 ${_('Loading ...')}
58 58 % endif
59 59 </td>
60 60 <td class="td-time" data-attr-name="modified_at">
61 61 % if c.full_load:
62 62 <span data-date="${node.last_commit.date}">${h.age_component(node.last_commit.date)}</span>
63 63 % endif
64 64 </td>
65 65 <td class="td-hash" data-attr-name="commit_id">
66 66 % if c.full_load:
67 67 <div class="tooltip-hovercard" data-hovercard-alt="${node.last_commit.message}" data-hovercard-url="${h.route_path('hovercard_repo_commit', repo_name=c.repo_name, commit_id=node.last_commit.raw_id)}">
68 68 <pre data-commit-id="${node.last_commit.raw_id}">r${node.last_commit.idx}:${node.last_commit.short_id}</pre>
69 69 </div>
70 70 % endif
71 71 </td>
72 72 <td class="td-user" data-attr-name="author">
73 73 % if c.full_load:
74 74 <span data-author="${node.last_commit.author}">${h.gravatar_with_user(request, node.last_commit.author, tooltip=True)|n}</span>
75 75 % endif
76 76 </td>
77 77 %else:
78 78 <td></td>
79 79 <td></td>
80 80 <td></td>
81 81 <td></td>
82 82 %endif
83 83 </tr>
84 84 % endfor
85 85
86 86 % if not has_files:
87 87 <tr>
88 88 <td colspan="5">
89 89 ##empty-dir mostly SVN
90 90 &nbsp;
91 91 </td>
92 92 </tr>
93 93 % endif
94 94
95 95 </tbody>
96 96 <tbody id="tbody_filtered"></tbody>
97 97 </table>
98 98 </div>
@@ -1,140 +1,140 b''
1 1 <%inherit file="/base/base.mako"/>
2 2
3 3 <%def name="title()">
4 4 ${_('{} Pull Requests').format(c.repo_name)}
5 5 %if c.rhodecode_name:
6 6 &middot; ${h.branding(c.rhodecode_name)}
7 7 %endif
8 8 </%def>
9 9
10 10 <%def name="breadcrumbs_links()"></%def>
11 11
12 12 <%def name="menu_bar_nav()">
13 13 ${self.menu_items(active='repositories')}
14 14 </%def>
15 15
16 16
17 17 <%def name="menu_bar_subnav()">
18 18 ${self.repo_menu(active='showpullrequest')}
19 19 </%def>
20 20
21 21
22 22 <%def name="main()">
23 23
24 24 <div class="box">
25 25 <div class="title">
26 26 <ul class="button-links">
27 27 <li class="btn ${h.is_active('open', c.active)}"><a href="${h.route_path('pullrequest_show_all',repo_name=c.repo_name, _query={'source':0})}">${_('Opened')}</a></li>
28 28 <li class="btn ${h.is_active('my', c.active)}"><a href="${h.route_path('pullrequest_show_all',repo_name=c.repo_name, _query={'source':0,'my':1})}">${_('Opened by me')}</a></li>
29 29 <li class="btn ${h.is_active('awaiting', c.active)}"><a href="${h.route_path('pullrequest_show_all',repo_name=c.repo_name, _query={'source':0,'awaiting_review':1})}">${_('Awaiting review')}</a></li>
30 30 <li class="btn ${h.is_active('awaiting_my', c.active)}"><a href="${h.route_path('pullrequest_show_all',repo_name=c.repo_name, _query={'source':0,'awaiting_my_review':1})}">${_('Awaiting my review')}</a></li>
31 31 <li class="btn ${h.is_active('closed', c.active)}"><a href="${h.route_path('pullrequest_show_all',repo_name=c.repo_name, _query={'source':0,'closed':1})}">${_('Closed')}</a></li>
32 32 <li class="btn ${h.is_active('source', c.active)}"><a href="${h.route_path('pullrequest_show_all',repo_name=c.repo_name, _query={'source':1})}">${_('From this repo')}</a></li>
33 33 </ul>
34 34
35 35 <ul class="links">
36 36 % if c.rhodecode_user.username != h.DEFAULT_USER:
37 37 <li>
38 38 <span>
39 39 <a id="open_new_pull_request" class="btn btn-small btn-success" href="${h.route_path('pullrequest_new',repo_name=c.repo_name)}">
40 40 ${_('Open new Pull Request')}
41 41 </a>
42 42 </span>
43 43 </li>
44 44 % endif
45 45
46 46 <li>
47 47 <div class="grid-quick-filter">
48 48 <ul class="grid-filter-box">
49 49 <li class="grid-filter-box-icon">
50 50 <i class="icon-search"></i>
51 51 </li>
52 52 <li class="grid-filter-box-input">
53 53 <input class="q_filter_box" id="q_filter" size="15" type="text" name="filter" placeholder="${_('quick filter...')}" value=""/>
54 54 </li>
55 55 </ul>
56 56 </div>
57 57 </li>
58 58
59 59 </ul>
60 60
61 61 </div>
62 62
63 63 <div class="main-content-full-width">
64 <table id="pull_request_list_table" class="display"></table>
64 <table id="pull_request_list_table" class="rctable table-bordered"></table>
65 65 </div>
66 66
67 67 </div>
68 68
69 69 <script type="text/javascript">
70 70 $(document).ready(function() {
71 71 var $pullRequestListTable = $('#pull_request_list_table');
72 72
73 73 // object list
74 74 $pullRequestListTable.DataTable({
75 75 processing: true,
76 76 serverSide: true,
77 77 ajax: {
78 78 "url": "${h.route_path('pullrequest_show_all_data', repo_name=c.repo_name)}",
79 79 "data": function (d) {
80 80 d.source = "${c.source}";
81 81 d.closed = "${c.closed}";
82 82 d.my = "${c.my}";
83 83 d.awaiting_review = "${c.awaiting_review}";
84 84 d.awaiting_my_review = "${c.awaiting_my_review}";
85 85 }
86 86 },
87 87 dom: 'rtp',
88 88 pageLength: ${c.visual.dashboard_items},
89 89 order: [[ 1, "desc" ]],
90 90 columns: [
91 91 { data: {"_": "status",
92 92 "sort": "status"}, title: "", className: "td-status", orderable: false},
93 93 { data: {"_": "name",
94 94 "sort": "name_raw"}, title: "${_('Id')}", className: "td-componentname", "type": "num" },
95 95 { data: {"_": "title",
96 96 "sort": "title"}, title: "${_('Title')}", className: "td-description" },
97 97 { data: {"_": "author",
98 98 "sort": "author_raw"}, title: "${_('Author')}", className: "td-user", orderable: false },
99 99 { data: {"_": "comments",
100 100 "sort": "comments_raw"}, title: "", className: "td-comments", orderable: false},
101 101 { data: {"_": "updated_on",
102 102 "sort": "updated_on_raw"}, title: "${_('Last Update')}", className: "td-time" }
103 103 ],
104 104 language: {
105 105 paginate: DEFAULT_GRID_PAGINATION,
106 106 sProcessing: _gettext('loading...'),
107 107 emptyTable: _gettext("No pull requests available yet.")
108 108 },
109 109 "drawCallback": function( settings, json ) {
110 110 timeagoActivate();
111 111 tooltipActivate();
112 112 },
113 113 "createdRow": function ( row, data, index ) {
114 114 if (data['closed']) {
115 115 $(row).addClass('closed');
116 116 }
117 117 }
118 118 });
119 119
120 120 $pullRequestListTable.on('xhr.dt', function(e, settings, json, xhr){
121 121 $pullRequestListTable.css('opacity', 1);
122 122 });
123 123
124 124 $pullRequestListTable.on('preXhr.dt', function(e, settings, data){
125 125 $pullRequestListTable.css('opacity', 0.3);
126 126 });
127 127
128 128 // filter
129 129 $('#q_filter').on('keyup',
130 130 $.debounce(250, function() {
131 131 $pullRequestListTable.DataTable().search(
132 132 $('#q_filter').val()
133 133 ).draw();
134 134 })
135 135 );
136 136
137 137 });
138 138
139 139 </script>
140 140 </%def>
@@ -1,167 +1,167 b''
1 1 ## -*- coding: utf-8 -*-
2 2 <%namespace name="base" file="/base/base.mako"/>
3 3 %if c.repo_commits:
4 <table class="rctable repo_summary table_disp">
4 <table class="rctable table-bordered">
5 5 <tr>
6 6
7 7 <th class="status"></th>
8 <th>${_('Commit')}</th>
8 <th></th>
9 9 <th>${_('Commit message')}</th>
10 10 <th>${_('Age')}</th>
11 11 <th>${_('Author')}</th>
12 12 <th colspan="2">${_('Refs')}</th>
13 13 </tr>
14 14
15 15 ## to speed up lookups cache some functions before the loop
16 16 <%
17 17 active_patterns = h.get_active_pattern_entries(c.repo_name)
18 18 urlify_commit_message = h.partial(h.urlify_commit_message, active_pattern_entries=active_patterns)
19 19 %>
20 20 %for cnt,cs in enumerate(c.repo_commits):
21 21 <tr class="parity${cnt%2}">
22 22
23 23 <td class="td-status">
24 24 %if c.statuses.get(cs.raw_id):
25 25 <div class="changeset-status-ico shortlog">
26 26 %if c.statuses.get(cs.raw_id)[2]:
27 27 <a class="tooltip" title="${_('Commit status: %s\nClick to open associated pull request #%s') % (c.statuses.get(cs.raw_id)[0], c.statuses.get(cs.raw_id)[2])}" href="${h.route_path('pullrequest_show',repo_name=c.statuses.get(cs.raw_id)[3],pull_request_id=c.statuses.get(cs.raw_id)[2])}">
28 28 <i class="icon-circle review-status-${c.statuses.get(cs.raw_id)[0]}"></i>
29 29 </a>
30 30 %else:
31 31 <a class="tooltip" title="${_('Commit status: {}').format(h.commit_status_lbl(c.statuses.get(cs.raw_id)[0]))}" href="${h.route_path('repo_commit',repo_name=c.repo_name,commit_id=cs.raw_id,_anchor='comment-%s' % c.comments[cs.raw_id][0].comment_id)}">
32 32 <i class="icon-circle review-status-${c.statuses.get(cs.raw_id)[0]}"></i>
33 33 </a>
34 34 %endif
35 35 </div>
36 36 %else:
37 37 <i class="icon-circle review-status-not_reviewed" title="${_('Commit status: Not Reviewed')}"></i>
38 38 %endif
39 39 </td>
40 40 <td class="td-hash">
41 41 <code>
42 42 <a href="${h.route_path('repo_commit', repo_name=c.repo_name, commit_id=cs.raw_id)}">${h.show_id(cs)}</a>
43 43 <i class="tooltip icon-clipboard clipboard-action" data-clipboard-text="${cs.raw_id}" title="${_('Copy the full commit id')}"></i>
44 44 </code>
45 45 </td>
46 46
47 47 <td class="td-description mid">
48 48 <div class="log-container truncate-wrap">
49 49 <div class="message truncate" id="c-${cs.raw_id}">${urlify_commit_message(cs.message, c.repo_name)}</div>
50 50 </div>
51 51 </td>
52 52
53 53 <td class="td-time">
54 54 ${h.age_component(cs.date)}
55 55 </td>
56 56 <td class="td-user author">
57 57 ${base.gravatar_with_user(cs.author, tooltip=True)}
58 58 </td>
59 59
60 60 <td class="td-tags">
61 61 <div class="autoexpand">
62 62 %if h.is_hg(c.rhodecode_repo):
63 63 %for book in cs.bookmarks:
64 64 <span class="booktag tag" title="${h.tooltip(_('Bookmark %s') % book)}">
65 65 <a href="${h.route_path('repo_files:default_path',repo_name=c.repo_name,commit_id=cs.raw_id, _query=dict(at=book))}"><i class="icon-bookmark"></i>${h.shorter(book)}</a>
66 66 </span>
67 67 %endfor
68 68 %endif
69 69 ## tags
70 70 %for tag in cs.tags:
71 71 <span class="tagtag tag" title="${h.tooltip(_('Tag %s') % tag)}">
72 72 <a href="${h.route_path('repo_files:default_path',repo_name=c.repo_name,commit_id=cs.raw_id, _query=dict(at=tag))}"><i class="icon-tag"></i>${h.shorter(tag)}</a>
73 73 </span>
74 74 %endfor
75 75
76 76 ## branch
77 77 %if cs.branch:
78 78 <span class="branchtag tag" title="${h.tooltip(_('Branch %s') % cs.branch)}">
79 79 <a href="${h.route_path('repo_commits',repo_name=c.repo_name,_query=dict(branch=cs.branch))}"><i class="icon-code-fork"></i>${h.shorter(cs.branch)}</a>
80 80 </span>
81 81 %endif
82 82 </div>
83 83 </td>
84 84 <td class="td-comments">
85 85 <% cs_comments = c.comments.get(cs.raw_id,[]) %>
86 86 % if cs_comments:
87 87 <a title="${_('Commit has comments')}" href="${h.route_path('repo_commit',repo_name=c.repo_name,commit_id=cs.raw_id,_anchor='comment-%s' % cs_comments[0].comment_id)}">
88 88 <i class="icon-comment"></i> ${len(cs_comments)}
89 89 </a>
90 90 % else:
91 91 <i class="icon-comment"></i> ${len(cs_comments)}
92 92 % endif
93 93 </td>
94 94 </tr>
95 95 %endfor
96 96
97 97 </table>
98 98
99 99 <script type="text/javascript">
100 100 $(document).pjax('#shortlog_data .pager_link','#shortlog_data', {timeout: 5000, scrollTo: false, push: false});
101 101 $(document).on('pjax:success', function(){ timeagoActivate(); tooltipActivate();});
102 102 $(document).on('pjax:timeout', function(event) {
103 103 // Prevent default timeout redirection behavior
104 104 event.preventDefault()
105 105 })
106 106
107 107 </script>
108 108
109 109 <div class="pagination-wh pagination-left">
110 110 ${c.repo_commits.render()}
111 111 </div>
112 112 %else:
113 113
114 114 %if h.HasRepoPermissionAny('repository.write','repository.admin')(c.repo_name):
115 115 <div class="quick_start">
116 116 <div class="fieldset">
117 117 <p><b>${_('Add or upload files directly via RhodeCode:')}</b></p>
118 118 <div class="pull-left">
119 119 <a href="${h.route_path('repo_files_add_file',repo_name=c.repo_name,commit_id=0, f_path='')}" class="btn btn-default">${_('Add New File')}</a>
120 120 </div>
121 121 <div class="pull-left">
122 122 <a href="${h.route_path('repo_files_upload_file',repo_name=c.repo_name,commit_id=0, f_path='')}" class="btn btn-default">${_('Upload New File')}</a>
123 123 </div>
124 124 %endif
125 125 </div>
126 126
127 127 <div class="fieldset">
128 128 <p><b>${_('Push new repo:')}</b></p>
129 129 <pre>
130 130 %if h.is_git(c.rhodecode_repo):
131 131 git clone ${c.clone_repo_url}
132 132 git add README # add first file
133 133 git commit -m "Initial commit" # commit with message
134 134 git remote add origin ${c.clone_repo_url}
135 135 git push -u origin master # push changes back to default master branch
136 136 %elif h.is_hg(c.rhodecode_repo):
137 137 hg clone ${c.clone_repo_url}
138 138 hg add README # add first file
139 139 hg commit -m "Initial commit" # commit with message
140 140 hg push ${c.clone_repo_url}
141 141 %elif h.is_svn(c.rhodecode_repo):
142 142 svn co ${c.clone_repo_url}
143 143 svn add README # add first file
144 144 svn commit -m "Initial commit"
145 145 svn commit # send changes back to the server
146 146 %endif
147 147 </pre>
148 148 </div>
149 149
150 150 <div class="fieldset">
151 151 <p><b>${_('Existing repository?')}</b></p>
152 152 <pre>
153 153 %if h.is_git(c.rhodecode_repo):
154 154 git remote add origin ${c.clone_repo_url}
155 155 git push -u origin master
156 156 %elif h.is_hg(c.rhodecode_repo):
157 157 hg push ${c.clone_repo_url}
158 158 %elif h.is_svn(c.rhodecode_repo):
159 159 svn co ${c.clone_repo_url}
160 160 %endif
161 161 </pre>
162 162
163 163 </div>
164 164
165 165
166 166 </div>
167 167 %endif
@@ -1,101 +1,113 b''
1 1 ## -*- coding: utf-8 -*-
2 2 <%inherit file="/base/base.mako"/>
3 3
4 4 <%def name="title()">
5 5 ${_('%s Tags') % c.repo_name}
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()"></%def>
12 12
13 13 <%def name="menu_bar_nav()">
14 14 ${self.menu_items(active='repositories')}
15 15 </%def>
16 16
17 17 <%def name="menu_bar_subnav()">
18 18 ${self.repo_menu(active='summary')}
19 19 </%def>
20 20
21 21 <%def name="main()">
22 22 <div class="box">
23 23 <div class="title">
24 24
25 25 %if c.has_references:
26 26 <ul class="links">
27 27 <li>
28 28 <input type="submit" id="compare_action" class="btn" disabled="disabled" value="${_('Compare Selected Tags')}">
29 29 </li>
30 30 </ul>
31 31 %endif
32 32 %if c.has_references:
33 <input class="q_filter_box" id="q_filter" size="15" type="text" name="filter" placeholder="${_('quick filter...')}" value=""/>
34 <span id="obj_count">0</span> ${_('tags')}
33 <div class="grid-quick-filter">
34 <ul class="grid-filter-box">
35 <li class="grid-filter-box-icon">
36 <i class="icon-search"></i>
37 </li>
38 <li class="grid-filter-box-input">
39 <input class="q_filter_box" id="q_filter" size="15" type="text" name="filter" placeholder="${_('quick filter...')}" value=""/>
40 </li>
41 </ul>
42 </div>
43 <div id="obj_count">0</div>
35 44 %endif
36 45 </div>
37 <table id="obj_list_table" class="display"></table>
46 <table id="obj_list_table" class="rctable table-bordered"></table>
38 47 </div>
39 48
40 49
41 50 <script type="text/javascript">
42 51 $(document).ready(function() {
43 52
44 53 var get_datatable_count = function(){
45 54 var api = $('#obj_list_table').dataTable().api();
46 $('#obj_count').text(api.page.info().recordsDisplay);
55 var total = api.page.info().recordsDisplay
56 var _text = _ngettext('{0} tag', '{0} tags', total).format(total);
57
58 $('#obj_count').text(_text);
47 59 };
48 60
49 61 // object list
50 62 $('#obj_list_table').DataTable({
51 63 data: ${c.data|n},
52 64 dom: 'rtp',
53 65 pageLength: ${c.visual.dashboard_items},
54 66 order: [[ 0, "asc" ]],
55 67 columns: [
56 68 { data: {"_": "name",
57 69 "sort": "name_raw"}, title: "${_('Name')}", className: "td-tags" },
58 70 { data: {"_": "date",
59 71 "sort": "date_raw"}, title: "${_('Date')}", className: "td-time" },
60 72 { data: {"_": "author",
61 73 "sort": "author"}, title: "${_('Author')}", className: "td-user" },
62 74 { data: {"_": "commit",
63 75 "sort": "commit_raw",
64 76 "type": Number}, title: "${_('Commit')}", className: "td-hash" },
65 77 { data: {"_": "compare",
66 78 "sort": "compare"}, title: "${_('Compare')}", className: "td-compare" }
67 79 ],
68 80 language: {
69 81 paginate: DEFAULT_GRID_PAGINATION,
70 82 emptyTable: _gettext("No tags available yet.")
71 83 },
72 84 "initComplete": function(settings, json) {
73 85 get_datatable_count();
74 86 timeagoActivate();
75 87 tooltipActivate();
76 88 compare_radio_buttons("${c.repo_name}", 'tag');
77 89 }
78 90 });
79 91
80 92 // update when things change
81 93 $('#obj_list_table').on('draw.dt', function() {
82 94 get_datatable_count();
83 95 timeagoActivate();
84 96 tooltipActivate();
85 97 });
86 98
87 99 // filter, filter both grids
88 100 $('#q_filter').on('keyup', function() {
89 101 var obj_api = $('#obj_list_table').dataTable().api();
90 102 obj_api
91 103 .columns(0)
92 104 .search(this.value)
93 105 .draw();
94 106 });
95 107
96 108 // refilter table if page load via back button
97 109 $("#q_filter").trigger('keyup');
98 110 });
99 111
100 112 </script>
101 113 </%def>
General Comments 0
You need to be logged in to leave comments. Login now