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