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