##// END OF EJS Templates
ui: fixed commit range page
dan -
r3759:d422b6a5 new-ui
parent child Browse files
Show More
@@ -1,481 +1,484 b''
1 // summary.less
1 // summary.less
2 // For use in RhodeCode applications;
2 // For use in RhodeCode applications;
3 // Used for headers and file detail summary screens.
3 // Used for headers and file detail summary screens.
4
4
5 .summary {
5 .summary {
6 clear: both;
6 clear: both;
7 float: none;
7 float: none;
8 position: relative;
8 position: relative;
9 width: 100%;
9 width: 100%;
10 margin: 0;
10 margin: 0;
11 padding: 0;
11 padding: 0;
12 background: #FCFCFC;
12 background: #FCFCFC;
13 border: 1px solid #EAEAEA;
13 border: 1px solid #EAEAEA;
14 border-radius: @border-radius;
14 border-radius: @border-radius;
15 margin-bottom: 20px;
15 margin-bottom: 20px;
16
16
17 .summary-detail-header {
17 .summary-detail-header {
18 display: block;
18 display: block;
19 width: 100%;
19 width: 100%;
20 margin-bottom: 10px;
20 margin-bottom: 10px;
21 padding: 0 0 .5em 0;
21 padding: 0 0 .5em 0;
22 border-bottom: @border-thickness solid @border-default-color;
22 border-bottom: @border-thickness solid @border-default-color;
23
23
24 .breadcrumbs {
24 .breadcrumbs {
25 display: inline;
25 display: inline;
26 margin: 0;
26 margin: 0;
27 padding: 0;
27 padding: 0;
28 }
28 }
29
29
30 h4 {
30 h4 {
31 margin: 0 1em 0 0;
31 margin: 0 1em 0 0;
32 padding: 10px 0 5px 20px;
32 padding: 10px 0 5px 20px;
33 line-height: 1.2em;
33 line-height: 1.2em;
34 font-size: @basefontsize;
34 font-size: @basefontsize;
35 }
35 }
36
36
37 .action_link {
37 .action_link {
38 float: right;
38 float: right;
39 }
39 }
40
40
41 .new-file {
41 .new-file {
42 float: right;
42 float: right;
43 margin-top: -1.5em;
43 margin-top: -1.5em;
44 }
44 }
45 }
45 }
46
46
47 .summary-detail {
47 .summary-detail {
48 float: none;
48 float: none;
49 position: relative;
49 position: relative;
50 width: 100%;
50 width: 100%;
51 margin: 0;
51 margin: 0;
52 padding: 0 0 20px 0;
52 padding: 0 0 20px 0;
53
53
54 .file_diff_buttons {
54 .file_diff_buttons {
55 margin-top: @space;
55 margin-top: @space;
56 }
56 }
57
57
58 // commit message
58 // commit message
59 .commit {
59 .commit {
60 white-space: pre-wrap;
60 white-space: pre-wrap;
61 }
61 }
62
62
63 .left-clone {
63 .left-clone {
64 float: left;
64 float: left;
65 height: 30px;
65 height: 30px;
66 margin: 0;
66 margin: 0;
67 padding: 0;
67 padding: 0;
68 width: 130px;
68 width: 130px;
69 font-weight: @text-semibold-weight;
69 font-weight: @text-semibold-weight;
70 font-family: @text-semibold;
70 font-family: @text-semibold;
71 }
71 }
72 .left-clone select {
72 .left-clone select {
73 width: 130px;
73 width: 130px;
74 margin-right: 0;
74 margin-right: 0;
75 background-color: @grey7;
75 background-color: @grey7;
76 border-color: @grey4;
76 border-color: @grey4;
77 color: #5C5C5C;
77 color: #5C5C5C;
78 border-top-right-radius: 0;
78 border-top-right-radius: 0;
79 border-bottom-right-radius: 0;
79 border-bottom-right-radius: 0;
80 }
80 }
81
81
82 .right-clone {
82 .right-clone {
83 float: left;
83 float: left;
84 width: ~"calc(100% - 170px)";
84 width: ~"calc(100% - 170px)";
85
85
86 .clipboard-action {
86 .clipboard-action {
87 margin-left: -30px;
87 margin-left: -30px;
88 }
88 }
89 }
89 }
90
90
91 .clone_url_input {
91 .clone_url_input {
92 width: ~"calc(100% - 90px)";
92 width: ~"calc(100% - 90px)";
93 padding: 6px 30px 6px 10px;
93 padding: 6px 30px 6px 10px;
94 height: 14px;
94 height: 14px;
95 box-shadow: 0 1px 1px 0 rgba(0,0,0,0.07);
95 box-shadow: 0 1px 1px 0 rgba(0,0,0,0.07);
96 border-top-left-radius: 0;
96 border-top-left-radius: 0;
97 border-bottom-left-radius: 0;
97 border-bottom-left-radius: 0;
98 margin-left: -1px;
98 margin-left: -1px;
99 }
99 }
100
100
101 &.directory {
101 &.directory {
102 margin-bottom: 0;
102 margin-bottom: 0;
103 }
103 }
104
104
105 .desc {
105 .desc {
106 white-space: pre-wrap;
106 white-space: pre-wrap;
107 }
107 }
108 .disabled {
108 .disabled {
109 opacity: .5;
109 opacity: .5;
110 cursor: inherit;
110 cursor: inherit;
111 }
111 }
112 .help-block {
112 .help-block {
113 color: inherit;
113 color: inherit;
114 margin: 0;
114 margin: 0;
115 }
115 }
116 }
116 }
117
117
118 .sidebar-right {
118 .sidebar-right {
119 float: left;
119 float: left;
120 width: 24%;
120 width: 24%;
121 margin: 0;
121 margin: 0;
122 padding: 0;
122 padding: 0;
123
123
124 ul {
124 ul {
125 margin-left: 0;
125 margin-left: 0;
126 padding-left: 0;
126 padding-left: 0;
127
127
128 li {
128 li {
129 list-style-type: none;
129 list-style-type: none;
130 }
130 }
131 }
131 }
132 }
132 }
133
133
134 #clone_by_name, #clone_by_id{
134 #clone_by_name, #clone_by_id{
135 display: inline-block;
135 display: inline-block;
136 margin-left: 0px;
136 margin-left: 0px;
137 }
137 }
138
138
139 .codeblock {
139 .codeblock {
140 border: none;
140 border: none;
141 background-color: transparent;
141 background-color: transparent;
142 }
142 }
143
143
144 .code-body {
144 .code-body {
145 border: @border-thickness solid @border-default-color;
145 border: @border-thickness solid @border-default-color;
146 .border-radius(@border-radius);
146 .border-radius(@border-radius);
147 }
147 }
148
148
149 .btn-collapse {
149 .btn-collapse {
150 clear: both;
150 clear: both;
151 float: none;
151 float: none;
152 background: #F7F7F7;
152 background: #F7F7F7;
153 text-align: center;
153 text-align: center;
154 color: #949494;
154 color: #949494;
155 font-size: 11px;
155 font-size: 11px;
156
156
157 &:hover {
157 &:hover {
158 background: #f1f1f1;
158 background: #f1f1f1;
159 color: #2B2B2D;
159 color: #2B2B2D;
160 }
160 }
161 }
161 }
162 }
162 }
163
163
164 // this is used outside of just the summary
164 // this is used outside of just the summary
165 .fieldset, // similar to form fieldset
165 .fieldset, // similar to form fieldset
166 .summary .sidebar-right-content { // these have to match
166 .summary .sidebar-right-content { // these have to match
167 clear: both;
167 clear: both;
168 float: none;
168 float: none;
169 position: relative;
169 position: relative;
170 display:block;
170 display:block;
171 width: 100%;
171 width: 100%;
172 min-height: 20px;
172 min-height: 20px;
173 margin-bottom: 10px;
173 margin-bottom: 10px;
174 padding: 0;
174 padding: 0;
175 line-height: 1.2em;
175 line-height: 1.2em;
176
176
177 &:after { // clearfix
177 &:after { // clearfix
178 content: "";
178 content: "";
179 clear: both;
179 clear: both;
180 width: 100%;
180 width: 100%;
181 height: 1em;
181 height: 1em;
182 }
182 }
183 }
183 }
184
184
185 .summary .sidebar-right-content {
185 .summary .sidebar-right-content {
186 margin-bottom: 0;
186 margin-bottom: 0;
187
187
188 .rc-user {
188 .rc-user {
189 min-width: 0;
189 min-width: 0;
190 }
190 }
191
191
192 li {
192 li {
193 list-style: none;
193 list-style: none;
194 line-height: normal;
194 line-height: normal;
195 }
195 }
196 }
196 }
197
197
198 .summary {
198 .summary {
199 .fieldset {
199 .fieldset {
200 margin-bottom: 0;
200 margin-bottom: 0;
201 }
201 }
202 }
202 }
203
203
204 .fieldset {
204 .fieldset {
205
205
206 .left-label { // similar to form legend
206 .left-label { // similar to form legend
207 display: block;
207 display: block;
208 margin: 0;
208 margin: 0;
209 padding: 0;
209 padding: 0;
210 font-weight: @text-semibold-weight;
210 font-weight: @text-semibold-weight;
211 font-family: @text-semibold;
211 font-family: @text-semibold;
212 }
212 }
213
213
214 .left-label-summary {
214 .left-label-summary {
215 padding-left: 20px;
215 padding-left: 20px;
216 margin-bottom: 5px;
216 margin-bottom: 5px;
217
217
218 p {
218 p {
219 margin-bottom: 5px;
219 margin-bottom: 5px;
220 color: @grey1;
220 color: @grey1;
221 float: left;
221 float: left;
222 width: 130px;
222 width: 130px;
223
223
224 &.spacing {
224 &.spacing {
225 margin-top: 10px;
225 margin-top: 10px;
226 }
226 }
227 }
227 }
228
228
229 .right-label-summary {
229 .right-label-summary {
230 float: left;
230 float: left;
231 margin-top: 7px;
231 margin-top: 7px;
232 width: ~"calc(100% - 160px)";
232 width: ~"calc(100% - 160px)";
233 }
233 }
234 }
234 }
235
235
236 .left-label-summary-files {
236 .left-label-summary-files {
237 padding-left: 45px;
237 padding-left: 45px;
238 margin-top: 5px;
238 margin-top: 5px;
239
239
240 p {
240 p {
241 margin-bottom: 5px;
241 margin-bottom: 5px;
242 color: @grey1;
242 color: @grey1;
243 float: left;
243 float: left;
244 width: 130px;
244 width: 130px;
245
245
246 &.spacing {
246 &.spacing {
247 margin-top: 10px;
247 margin-top: 10px;
248 }
248 }
249 }
249 }
250
250
251 .right-label-summary {
251 .right-label-summary {
252 float: left;
252 float: left;
253 margin-top: 7px;
253 margin-top: 7px;
254 }
254 }
255 }
255 }
256
256
257 .left-content {
257 .left-content {
258 width: ~"calc(60% - 20px)";
258 width: ~"calc(60% - 20px)";
259 float: left;
259 float: left;
260 margin: 15px 0 15px 20px;
260 margin: 15px 0 15px 20px;
261
261
262 .rc-user {
262 .rc-user {
263 min-width: auto;
263 min-width: auto;
264 max-width: none;
264 max-width: none;
265 min-height: auto;
265 min-height: auto;
266 padding-right: 5px;
266 padding-right: 5px;
267 }
267 }
268
268
269 .left-content-avatar {
269 .left-content-avatar {
270 width: 45px;
270 width: 45px;
271 float: left;
271 float: left;
272 margin-top: 8px;
272 margin-top: 8px;
273 }
273 }
274
274
275 .left-content-message {
275 .left-content-message {
276 float: left;
276 float: left;
277 width: ~"calc(100% - 45px)";
277 width: ~"calc(100% - 45px)";
278 }
278 }
279 }
279 }
280
280
281 .right-content { // similar to form fields
281 .right-content { // similar to form fields
282 float: left;
282 float: left;
283 display: block;
283 display: block;
284 width: ~"calc(40% - 20px)";
284 width: ~"calc(40% - 20px)";
285 text-align: right;
285 text-align: right;
286 margin: 15px 20px 15px 0;
286 margin: 15px 20px 15px 0;
287
287
288 .truncate-wrap,
288 .truncate-wrap,
289 .truncate {
289 .truncate {
290 max-width: 100%;
290 max-width: 100%;
291 width: 100%;
291 width: 100%;
292 }
292 }
293
293
294 .commit-long {
294 .commit-long {
295 overflow-x: auto;
295 overflow-x: auto;
296 }
296 }
297
297
298 .commit-info {
298 .commit-info {
299 margin-top: 7px;
299 margin-top: 7px;
300 }
300 }
301
301
302 .tag, .tagtag, .branchtag, .booktag, .metatag, .perm_tag {
302 .tag, .tagtag, .branchtag, .booktag, .metatag, .perm_tag {
303 background:transparent;
303 background:transparent;
304 border: none;
304 border: none;
305 box-shadow: none;
305 box-shadow: none;
306 margin-left: 10px;
306 margin-left: 10px;
307 font-size: 13px;
307 font-size: 13px;
308 }
308 }
309
309
310 .tag span, .tag i {
310 .tag span, .tag i {
311 color: @grey1;
311 color: @grey1;
312 }
312 }
313 }
313 }
314 .commit {
314 .commit {
315 color: @grey1;
315 color: @grey1;
316 margin-bottom: 5px;
316 margin-bottom: 5px;
317 white-space: pre;
317 white-space: pre;
318 }
318 }
319 .commit.truncate-wrap {
319 .commit.truncate-wrap {
320 overflow:hidden;
320 overflow:hidden;
321 text-overflow: ellipsis;
321 text-overflow: ellipsis;
322 }
322 }
323 .commit-author {
323 .commit-author {
324 color: @grey1;
324 color: @grey1;
325 }
325 }
326 .commit-date {
326 .commit-date {
327 color: @grey4;
327 color: @grey4;
328 }
328 }
329 .fieldset-text-line {
330 line-height: 36px;
331 }
329 }
332 }
330
333
331 // expand commit message
334 // expand commit message
332 #message_expand {
335 #message_expand {
333 clear: both;
336 clear: both;
334 display: block;
337 display: block;
335 color: @rcblue;
338 color: @rcblue;
336 cursor: pointer;
339 cursor: pointer;
337 }
340 }
338
341
339 #trimmed_message_box {
342 #trimmed_message_box {
340 max-height: floor(2 * @basefontsize * 1.2); // 2 lines * line-height
343 max-height: floor(2 * @basefontsize * 1.2); // 2 lines * line-height
341 overflow: hidden;
344 overflow: hidden;
342 }
345 }
343
346
344 // show/hide comments button
347 // show/hide comments button
345 .show-inline-comments {
348 .show-inline-comments {
346 display: inline;
349 display: inline;
347 cursor: pointer;
350 cursor: pointer;
348
351
349 .comments-show { display: inline; }
352 .comments-show { display: inline; }
350 .comments-hide { display: none; }
353 .comments-hide { display: none; }
351
354
352 &.comments-visible {
355 &.comments-visible {
353 .comments-show { display: none; }
356 .comments-show { display: none; }
354 .comments-hide { display: inline; }
357 .comments-hide { display: inline; }
355 }
358 }
356 }
359 }
357
360
358 // Quick Start section
361 // Quick Start section
359
362
360 .empty-repo {
363 .empty-repo {
361 border: 1px solid #EAEAEA;
364 border: 1px solid #EAEAEA;
362 border-bottom: 0;
365 border-bottom: 0;
363 border-radius: @border-radius;
366 border-radius: @border-radius;
364 padding: 0 20px;
367 padding: 0 20px;
365 }
368 }
366
369
367 .empty-repo h3, .quick_start p {
370 .empty-repo h3, .quick_start p {
368 margin-bottom: 10px;
371 margin-bottom: 10px;
369 }
372 }
370
373
371 .quick_start pre {
374 .quick_start pre {
372 background: #FCFEFF;
375 background: #FCFEFF;
373 border: 1px solid #CBDBEB;
376 border: 1px solid #CBDBEB;
374 box-shadow: @button-shadow;
377 box-shadow: @button-shadow;
375 padding: 10px 15px;
378 padding: 10px 15px;
376 border-radius: 4px;
379 border-radius: 4px;
377 color: @grey2;
380 color: @grey2;
378 }
381 }
379
382
380 .clear-fix {
383 .clear-fix {
381 clear: both;
384 clear: both;
382 }
385 }
383
386
384 .quick_start {
387 .quick_start {
385 display: block;
388 display: block;
386 position: relative;
389 position: relative;
387 border: 1px solid #EAEAEA;
390 border: 1px solid #EAEAEA;
388 border-top: 0;
391 border-top: 0;
389 border-radius: @border-radius;
392 border-radius: @border-radius;
390 padding: 0 20px;
393 padding: 0 20px;
391
394
392 // adds some space to make copy and paste easier
395 // adds some space to make copy and paste easier
393 .left-label,
396 .left-label,
394 .right-content {
397 .right-content {
395 line-height: 1.6em;
398 line-height: 1.6em;
396 }
399 }
397 }
400 }
398
401
399
402
400 .submodule {
403 .submodule {
401 .summary-detail {
404 .summary-detail {
402 width: 100%;
405 width: 100%;
403
406
404 .btn-collapse {
407 .btn-collapse {
405 display: none;
408 display: none;
406 }
409 }
407 }
410 }
408 }
411 }
409
412
410 .codeblock-header {
413 .codeblock-header {
411 float: left;
414 float: left;
412 display: block;
415 display: block;
413 width: 100%;
416 width: 100%;
414 margin: 0;
417 margin: 0;
415
418
416 .file-filename {
419 .file-filename {
417 float:left;
420 float:left;
418 padding: 10px;
421 padding: 10px;
419 }
422 }
420
423
421 .file-stats {
424 .file-stats {
422 padding: 10px;
425 padding: 10px;
423 float:right;
426 float:right;
424 }
427 }
425
428
426
429
427 .stats-first-item {
430 .stats-first-item {
428 padding: 0px 0px 0px 3px;
431 padding: 0px 0px 0px 3px;
429 }
432 }
430
433
431 .stats-info {
434 .stats-info {
432 font-size: 11px;
435 font-size: 11px;
433 color: @grey4;
436 color: @grey4;
434 }
437 }
435
438
436 .buttons {
439 .buttons {
437 float: right;
440 float: right;
438 text-align: right;
441 text-align: right;
439 color: @grey4;
442 color: @grey4;
440 padding: 10px;
443 padding: 10px;
441 }
444 }
442
445
443 .file-container {
446 .file-container {
444 display: inline-block;
447 display: inline-block;
445 width: 100%;
448 width: 100%;
446 }
449 }
447
450
448 }
451 }
449
452
450 #summary-menu-stats {
453 #summary-menu-stats {
451
454
452 .stats-bullet {
455 .stats-bullet {
453 color: @grey3;
456 color: @grey3;
454 min-width: 3em;
457 min-width: 3em;
455 }
458 }
456
459
457 .repo-size {
460 .repo-size {
458 margin-bottom: .5em;
461 margin-bottom: .5em;
459 }
462 }
460
463
461 }
464 }
462
465
463 .rctable.repo_summary {
466 .rctable.repo_summary {
464 border: 1px solid #eaeaea;
467 border: 1px solid #eaeaea;
465 border-radius: 2px;
468 border-radius: 2px;
466 border-collapse: inherit;
469 border-collapse: inherit;
467 border-bottom: 0;
470 border-bottom: 0;
468
471
469 th {
472 th {
470 background: @grey7;
473 background: @grey7;
471 border-bottom: 0;
474 border-bottom: 0;
472 }
475 }
473
476
474 td {
477 td {
475 border-color: #eaeaea;
478 border-color: #eaeaea;
476 }
479 }
477
480
478 td.td-status {
481 td.td-status {
479 padding: 0 0 0 10px;
482 padding: 0 0 0 10px;
480 }
483 }
481 }
484 }
@@ -1,102 +1,119 b''
1 ## -*- coding: utf-8 -*-
1 ## -*- coding: utf-8 -*-
2 <%inherit file="/base/base.mako"/>
2 <%inherit file="/base/base.mako"/>
3
3
4 <%def name="title()">
4 <%def name="title()">
5 ${_('%s Commits') % c.repo_name} -
5 ${_('%s Commits') % c.repo_name} -
6 r${c.commit_ranges[0].idx}:${h.short_id(c.commit_ranges[0].raw_id)}
6 r${c.commit_ranges[0].idx}:${h.short_id(c.commit_ranges[0].raw_id)}
7 ...
7 ...
8 r${c.commit_ranges[-1].idx}:${h.short_id(c.commit_ranges[-1].raw_id)}
8 r${c.commit_ranges[-1].idx}:${h.short_id(c.commit_ranges[-1].raw_id)}
9 ${_ungettext('(%s commit)','(%s commits)', len(c.commit_ranges)) % len(c.commit_ranges)}
9 ${_ungettext('(%s commit)','(%s commits)', len(c.commit_ranges)) % len(c.commit_ranges)}
10 %if c.rhodecode_name:
10 %if c.rhodecode_name:
11 &middot; ${h.branding(c.rhodecode_name)}
11 &middot; ${h.branding(c.rhodecode_name)}
12 %endif
12 %endif
13 </%def>
13 </%def>
14
14
15 <%def name="breadcrumbs_links()">
15 <%def name="breadcrumbs_links()"></%def>
16 ${_('Commits')} -
17 r${c.commit_ranges[0].idx}:${h.short_id(c.commit_ranges[0].raw_id)}
18 ...
19 r${c.commit_ranges[-1].idx}:${h.short_id(c.commit_ranges[-1].raw_id)}
20 ${_ungettext('(%s commit)','(%s commits)', len(c.commit_ranges)) % len(c.commit_ranges)}
21 </%def>
22
16
23 <%def name="menu_bar_nav()">
17 <%def name="menu_bar_nav()">
24 ${self.menu_items(active='repositories')}
18 ${self.menu_items(active='repositories')}
25 </%def>
19 </%def>
26
20
27 <%def name="menu_bar_subnav()">
21 <%def name="menu_bar_subnav()">
28 ${self.repo_menu(active='commits')}
22 ${self.repo_menu(active='commits')}
29 </%def>
23 </%def>
30
24
31 <%def name="main()">
25 <%def name="main()">
26 <div class="box">
27 <div class="summary changeset">
28 <div class="summary-detail">
29 <div class="summary-detail-header">
30 <span class="breadcrumbs files_location">
31 <h4>
32 ${_('Commit Range')}
33 </h4>
34 </span>
32
35
33 <div class="summary changeset">
36 <div class="clear-fix"></div>
34 <div class="summary-detail">
37 </div>
35 <div class="summary-detail-header">
36 <span class="breadcrumbs files_location">
37 <h4>
38 ${_('Commit Range')}
39 <code>
40 r${c.commit_ranges[0].idx}:${h.short_id(c.commit_ranges[0].raw_id)}...r${c.commit_ranges[-1].idx}:${h.short_id(c.commit_ranges[-1].raw_id)}
41 </code>
42 </h4>
43 </span>
44 </div>
45
38
46 <div class="fieldset">
39 <div class="fieldset">
47 <div class="left-label">
40 <div class="left-label-summary">
48 ${_('Diff option')}:
41 <p class="spacing">${_('Range')}:</p>
49 </div>
42 <div class="right-label-summary">
50 <div class="right-content">
43 <div class="code-header" >
51 <div class="btn btn-primary">
44 <div class="compare_header">
52 <a href="${h.route_path('repo_compare',
45 <code class="fieldset-text-line">
53 repo_name=c.repo_name,
46 r${c.commit_ranges[0].idx}:${h.short_id(c.commit_ranges[0].raw_id)}
54 source_ref_type='rev',
47 ...
55 source_ref=getattr(c.commit_ranges[0].parents[0] if c.commit_ranges[0].parents else h.EmptyCommit(), 'raw_id'),
48 r${c.commit_ranges[-1].idx}:${h.short_id(c.commit_ranges[-1].raw_id)}
56 target_ref_type='rev',
49 ${_ungettext('(%s commit)','(%s commits)', len(c.commit_ranges)) % len(c.commit_ranges)}
57 target_ref=c.commit_ranges[-1].raw_id)}"
50 </code>
58 >
51 </div>
59 ${_('Show combined compare')}
52 </div>
60 </a>
53 </div>
54 </div>
61 </div>
55 </div>
62 </div>
63 </div>
64
56
65 </div> <!-- end summary-detail -->
57 <div class="fieldset">
58 <div class="left-label-summary">
59 <p class="spacing">${_('Diff Option')}:</p>
60 <div class="right-label-summary">
61 <div class="code-header" >
62 <div class="compare_header">
63 <div class="btn btn-primary">
64 <a href="${h.route_path('repo_compare',
65 repo_name=c.repo_name,
66 source_ref_type='rev',
67 source_ref=getattr(c.commit_ranges[0].parents[0] if c.commit_ranges[0].parents else h.EmptyCommit(), 'raw_id'),
68 target_ref_type='rev',
69 target_ref=c.commit_ranges[-1].raw_id)}"
70 >
71 ${_('Show combined diff')}
72 </a>
73 </div>
74 </div>
75 </div>
76 </div>
77 </div>
78 </div>
66
79
67 </div> <!-- end summary -->
80 <div class="clear-fix"></div>
81 </div> <!-- end summary-detail -->
82 </div> <!-- end summary -->
68
83
69 <div id="changeset_compare_view_content">
84 <div id="changeset_compare_view_content">
70 <div class="pull-left">
85 <div class="pull-left">
71 <div class="btn-group">
86 <div class="btn-group">
72 <a
87 <a
73 class="btn"
88 class="btn"
74 href="#"
89 href="#"
75 onclick="$('.compare_select').show();$('.compare_select_hidden').hide(); return false">
90 onclick="$('.compare_select').show();$('.compare_select_hidden').hide(); return false">
76 ${_ungettext('Expand %s commit','Expand %s commits', len(c.commit_ranges)) % len(c.commit_ranges)}
91 ${_ungettext('Expand %s commit','Expand %s commits', len(c.commit_ranges)) % len(c.commit_ranges)}
77 </a>
92 </a>
78 <a
93 <a
79 class="btn"
94 class="btn"
80 href="#"
95 href="#"
81 onclick="$('.compare_select').hide();$('.compare_select_hidden').show(); return false">
96 onclick="$('.compare_select').hide();$('.compare_select_hidden').show(); return false">
82 ${_ungettext('Collapse %s commit','Collapse %s commits', len(c.commit_ranges)) % len(c.commit_ranges)}
97 ${_ungettext('Collapse %s commit','Collapse %s commits', len(c.commit_ranges)) % len(c.commit_ranges)}
83 </a>
98 </a>
84 </div>
99 </div>
85 </div>
100 </div>
86 ## Commit range generated below
101 ## Commit range generated below
87 <%include file="../compare/compare_commits.mako"/>
102 <%include file="../compare/compare_commits.mako"/>
88 <div class="cs_files">
103 <div class="cs_files">
89 <%namespace name="cbdiffs" file="/codeblocks/diffs.mako"/>
104 <%namespace name="cbdiffs" file="/codeblocks/diffs.mako"/>
90 <%namespace name="comment" file="/changeset/changeset_file_comment.mako"/>
105 <%namespace name="comment" file="/changeset/changeset_file_comment.mako"/>
91 <%namespace name="diff_block" file="/changeset/diff_block.mako"/>
106 <%namespace name="diff_block" file="/changeset/diff_block.mako"/>
92 ${cbdiffs.render_diffset_menu()}
107 ${cbdiffs.render_diffset_menu()}
93 %for commit in c.commit_ranges:
108 %for commit in c.commit_ranges:
94 ${cbdiffs.render_diffset(
109 ${cbdiffs.render_diffset(
95 diffset=c.changes[commit.raw_id],
110 diffset=c.changes[commit.raw_id],
96 collapse_when_files_over=5,
111 collapse_when_files_over=5,
97 commit=commit,
112 commit=commit,
98 )}
113 )}
99 %endfor
114 %endfor
100 </div>
115 </div>
101 </div>
116 </div>
117 </div>
118
102 </%def>
119 </%def>
@@ -1,313 +1,311 b''
1 ## -*- coding: utf-8 -*-
1 ## -*- coding: utf-8 -*-
2 <%inherit file="/base/base.mako"/>
2 <%inherit file="/base/base.mako"/>
3 <%namespace name="cbdiffs" file="/codeblocks/diffs.mako"/>
3 <%namespace name="cbdiffs" file="/codeblocks/diffs.mako"/>
4
4
5 <%def name="title()">
5 <%def name="title()">
6 %if c.compare_home:
6 %if c.compare_home:
7 ${_('%s Compare') % c.repo_name}
7 ${_('%s Compare') % c.repo_name}
8 %else:
8 %else:
9 ${_('%s Compare') % c.repo_name} - ${'%s@%s' % (c.source_repo.repo_name, c.source_ref)} &gt; ${'%s@%s' % (c.target_repo.repo_name, c.target_ref)}
9 ${_('%s Compare') % c.repo_name} - ${'%s@%s' % (c.source_repo.repo_name, c.source_ref)} &gt; ${'%s@%s' % (c.target_repo.repo_name, c.target_ref)}
10 %endif
10 %endif
11 %if c.rhodecode_name:
11 %if c.rhodecode_name:
12 &middot; ${h.branding(c.rhodecode_name)}
12 &middot; ${h.branding(c.rhodecode_name)}
13 %endif
13 %endif
14 </%def>
14 </%def>
15
15
16 <%def name="breadcrumbs_links()"></%def>
16 <%def name="breadcrumbs_links()"></%def>
17
17
18 <%def name="menu_bar_nav()">
18 <%def name="menu_bar_nav()">
19 ${self.menu_items(active='repositories')}
19 ${self.menu_items(active='repositories')}
20 </%def>
20 </%def>
21
21
22 <%def name="menu_bar_subnav()">
22 <%def name="menu_bar_subnav()">
23 ${self.repo_menu(active='compare')}
23 ${self.repo_menu(active='compare')}
24 </%def>
24 </%def>
25
25
26 <%def name="main()">
26 <%def name="main()">
27 <script type="text/javascript">
27 <script type="text/javascript">
28 // set fake commitId on this commit-range page
28 // set fake commitId on this commit-range page
29 templateContext.commit_data.commit_id = "${h.EmptyCommit().raw_id}";
29 templateContext.commit_data.commit_id = "${h.EmptyCommit().raw_id}";
30 </script>
30 </script>
31
31
32 <div class="box">
32 <div class="box">
33 <div class="summary changeset">
33 <div class="summary changeset">
34 <div class="summary-detail">
34 <div class="summary-detail">
35 <div class="summary-detail-header">
35 <div class="summary-detail-header">
36 <span class="breadcrumbs files_location">
36 <span class="breadcrumbs files_location">
37 <h4>
37 <h4>
38 ${_('Compare Commits')}
38 ${_('Compare Commits')}
39 % if c.file_path:
39 % if c.file_path:
40 ${_('for file')} <a href="#${'a_' + h.FID('',c.file_path)}">${c.file_path}</a>
40 ${_('for file')} <a href="#${'a_' + h.FID('',c.file_path)}">${c.file_path}</a>
41 % endif
41 % endif
42
42
43 % if c.commit_ranges:
43 % if c.commit_ranges:
44 <code>
44 <code>
45 r${c.source_commit.idx}:${h.short_id(c.source_commit.raw_id)}...r${c.target_commit.idx}:${h.short_id(c.target_commit.raw_id)}
45 r${c.source_commit.idx}:${h.short_id(c.source_commit.raw_id)}...r${c.target_commit.idx}:${h.short_id(c.target_commit.raw_id)}
46 </code>
46 </code>
47 % endif
47 % endif
48 </h4>
48 </h4>
49 </span>
49 </span>
50
50
51 <div class="clear-fix"></div>
51 <div class="clear-fix"></div>
52 </div>
52 </div>
53
53
54 <div class="fieldset">
54 <div class="fieldset">
55 <div class="left-label-summary">
55 <div class="left-label-summary">
56 <p class="spacing">${_('Target')}:</p>
56 <p class="spacing">${_('Target')}:</p>
57 <div class="right-label-summary">
57 <div class="right-label-summary">
58 <div class="code-header" >
58 <div class="code-header" >
59 <div class="compare_header">
59 <div class="compare_header">
60 ## The hidden elements are replaced with a select2 widget
60 ## The hidden elements are replaced with a select2 widget
61 ${h.hidden('compare_source')}
61 ${h.hidden('compare_source')}
62 </div>
62 </div>
63 </div>
63 </div>
64 </div>
64 </div>
65 </div>
65 </div>
66 </div>
66 </div>
67
67
68 <div class="fieldset">
68 <div class="fieldset">
69 <div class="left-label-summary">
69 <div class="left-label-summary">
70 <p class="spacing">${_('Source')}:</p>
70 <p class="spacing">${_('Source')}:</p>
71 <div class="right-label-summary">
71 <div class="right-label-summary">
72 <div class="code-header" >
72 <div class="code-header" >
73 <div class="compare_header">
73 <div class="compare_header">
74 ## The hidden elements are replaced with a select2 widget
74 ## The hidden elements are replaced with a select2 widget
75 ${h.hidden('compare_target')}
75 ${h.hidden('compare_target')}
76 </div>
76 </div>
77 </div>
77 </div>
78 </div>
78 </div>
79 </div>
79 </div>
80 </div>
80 </div>
81
81
82 <div class="fieldset">
82 <div class="fieldset">
83 <div class="left-label-summary">
83 <div class="left-label-summary">
84 <p class="spacing">${_('Actions')}:</p>
84 <p class="spacing">${_('Actions')}:</p>
85 <div class="right-label-summary">
85 <div class="right-label-summary">
86 <div class="code-header" >
86 <div class="code-header" >
87 <div class="compare_header">
87 <div class="compare_header">
88 <div class="compare-buttons">
88 <div class="compare-buttons">
89 % if c.compare_home:
89 % if c.compare_home:
90 <a id="compare_revs" class="btn btn-primary"> ${_('Compare Commits')}</a>
90 <a id="compare_revs" class="btn btn-primary"> ${_('Compare Commits')}</a>
91 %if c.rhodecode_db_repo.fork:
91 %if c.rhodecode_db_repo.fork:
92
92
93 <a class="btn btn-default" title="${h.tooltip(_('Compare fork with %s' % c.rhodecode_db_repo.fork.repo_name))}"
93 <a class="btn btn-default" title="${h.tooltip(_('Compare fork with %s' % c.rhodecode_db_repo.fork.repo_name))}"
94 href="${h.route_path('repo_compare',
94 href="${h.route_path('repo_compare',
95 repo_name=c.rhodecode_db_repo.fork.repo_name,
95 repo_name=c.rhodecode_db_repo.fork.repo_name,
96 source_ref_type=c.rhodecode_db_repo.landing_rev[0],
96 source_ref_type=c.rhodecode_db_repo.landing_rev[0],
97 source_ref=c.rhodecode_db_repo.landing_rev[1],
97 source_ref=c.rhodecode_db_repo.landing_rev[1],
98 target_repo=c.repo_name,target_ref_type='branch' if request.GET.get('branch') else c.rhodecode_db_repo.landing_rev[0],
98 target_repo=c.repo_name,target_ref_type='branch' if request.GET.get('branch') else c.rhodecode_db_repo.landing_rev[0],
99 target_ref=request.GET.get('branch') or c.rhodecode_db_repo.landing_rev[1],
99 target_ref=request.GET.get('branch') or c.rhodecode_db_repo.landing_rev[1],
100 _query=dict(merge=1))}"
100 _query=dict(merge=1))}"
101 >
101 >
102 ${_('Compare with origin')}
102 ${_('Compare with origin')}
103 </a>
103 </a>
104
104
105 %endif
105 %endif
106
106
107 <a class="btn disabled tooltip" disabled="disabled" title="${_('Action unavailable in current view')}">${_('Swap')}</a>
107 <a class="btn disabled tooltip" disabled="disabled" title="${_('Action unavailable in current view')}">${_('Swap')}</a>
108 <a class="btn disabled tooltip" disabled="disabled" title="${_('Action unavailable in current view')}">${_('Comment')}</a>
108 <a class="btn disabled tooltip" disabled="disabled" title="${_('Action unavailable in current view')}">${_('Comment')}</a>
109 <div id="changeset_compare_view_content">
109 <div id="changeset_compare_view_content">
110 <div class="help-block">${_('Compare commits, branches, bookmarks or tags.')}</div>
110 <div class="help-block">${_('Compare commits, branches, bookmarks or tags.')}</div>
111 </div>
111 </div>
112
112
113 % elif c.preview_mode:
113 % elif c.preview_mode:
114 <a class="btn disabled tooltip" disabled="disabled" title="${_('Action unavailable in current view')}">${_('Compare Commits')}</a>
114 <a class="btn disabled tooltip" disabled="disabled" title="${_('Action unavailable in current view')}">${_('Compare Commits')}</a>
115 <a class="btn disabled tooltip" disabled="disabled" title="${_('Action unavailable in current view')}">${_('Swap')}</a>
115 <a class="btn disabled tooltip" disabled="disabled" title="${_('Action unavailable in current view')}">${_('Swap')}</a>
116 <a class="btn disabled tooltip" disabled="disabled" title="${_('Action unavailable in current view')}">${_('Comment')}</a>
116 <a class="btn disabled tooltip" disabled="disabled" title="${_('Action unavailable in current view')}">${_('Comment')}</a>
117
117
118 % else:
118 % else:
119 <a id="compare_revs" class="btn btn-primary"> ${_('Compare Commits')}</a>
119 <a id="compare_revs" class="btn btn-primary"> ${_('Compare Commits')}</a>
120 <a id="btn-swap" class="btn btn-primary" href="${c.swap_url}">${_('Swap')}</a>
120 <a id="btn-swap" class="btn btn-primary" href="${c.swap_url}">${_('Swap')}</a>
121
121
122 ## allow comment only if there are commits to comment on
122 ## allow comment only if there are commits to comment on
123 % if c.diffset and c.diffset.files and c.commit_ranges:
123 % if c.diffset and c.diffset.files and c.commit_ranges:
124 <a id="compare_changeset_status_toggle" class="btn btn-primary">${_('Comment')}</a>
124 <a id="compare_changeset_status_toggle" class="btn btn-primary">${_('Comment')}</a>
125 % else:
125 % else:
126 <a class="btn disabled tooltip" disabled="disabled" title="${_('Action unavailable in current view')}">${_('Comment')}</a>
126 <a class="btn disabled tooltip" disabled="disabled" title="${_('Action unavailable in current view')}">${_('Comment')}</a>
127 % endif
127 % endif
128 % endif
128 % endif
129 </div>
129 </div>
130 </div>
130 </div>
131 </div>
131 </div>
132 </div>
132 </div>
133 </div>
133 </div>
134 </div>
134 </div>
135
135
136 ## commit status form
136 ## commit status form
137 <div class="fieldset" id="compare_changeset_status" style="display: none; margin-bottom: -80px;">
137 <div class="fieldset" id="compare_changeset_status" style="display: none; margin-bottom: -80px;">
138 <div class="left-label-summary">
138 <div class="left-label-summary">
139 <p class="spacing">${_('Commit status')}:</p>
139 <p class="spacing">${_('Commit status')}:</p>
140 <div class="right-label-summary">
140 <div class="right-label-summary">
141 <%namespace name="comment" file="/changeset/changeset_file_comment.mako"/>
141 <%namespace name="comment" file="/changeset/changeset_file_comment.mako"/>
142 ## main comment form and it status
142 ## main comment form and it status
143 <%
143 <%
144 def revs(_revs):
144 def revs(_revs):
145 form_inputs = []
145 form_inputs = []
146 for cs in _revs:
146 for cs in _revs:
147 tmpl = '<input type="hidden" data-commit-id="%(cid)s" name="commit_ids" value="%(cid)s">' % {'cid': cs.raw_id}
147 tmpl = '<input type="hidden" data-commit-id="%(cid)s" name="commit_ids" value="%(cid)s">' % {'cid': cs.raw_id}
148 form_inputs.append(tmpl)
148 form_inputs.append(tmpl)
149 return form_inputs
149 return form_inputs
150 %>
150 %>
151 <div>
151 <div>
152 ${comment.comments(h.route_path('repo_commit_comment_create', repo_name=c.repo_name, commit_id='0'*16), None, is_compare=True, form_extras=revs(c.commit_ranges))}
152 ${comment.comments(h.route_path('repo_commit_comment_create', repo_name=c.repo_name, commit_id='0'*16), None, is_compare=True, form_extras=revs(c.commit_ranges))}
153 </div>
153 </div>
154 </div>
154 </div>
155 </div>
155 </div>
156 </div>
156 </div>
157 <div class="clear-fix"></div>
157 <div class="clear-fix"></div>
158 </div> <!-- end summary-detail -->
158 </div> <!-- end summary-detail -->
159 </div> <!-- end summary -->
159 </div> <!-- end summary -->
160
160
161 ## use JS script to load it quickly before potentially large diffs render long time
161 ## use JS script to load it quickly before potentially large diffs render long time
162 ## this prevents from situation when large diffs block rendering of select2 fields
162 ## this prevents from situation when large diffs block rendering of select2 fields
163 <script type="text/javascript">
163 <script type="text/javascript">
164
164
165 var cache = {};
165 var cache = {};
166
166
167 var formatSelection = function(repoName){
167 var formatSelection = function(repoName){
168 return function(data, container, escapeMarkup) {
168 return function(data, container, escapeMarkup) {
169 var selection = data ? this.text(data) : "";
169 var selection = data ? this.text(data) : "";
170 return escapeMarkup('{0}@{1}'.format(repoName, selection));
170 return escapeMarkup('{0}@{1}'.format(repoName, selection));
171 }
171 }
172 };
172 };
173
173
174 var feedCompareData = function(query, cachedValue){
174 var feedCompareData = function(query, cachedValue){
175 var data = {results: []};
175 var data = {results: []};
176 //filter results
176 //filter results
177 $.each(cachedValue.results, function() {
177 $.each(cachedValue.results, function() {
178 var section = this.text;
178 var section = this.text;
179 var children = [];
179 var children = [];
180 $.each(this.children, function() {
180 $.each(this.children, function() {
181 if (query.term.length === 0 || this.text.toUpperCase().indexOf(query.term.toUpperCase()) >= 0) {
181 if (query.term.length === 0 || this.text.toUpperCase().indexOf(query.term.toUpperCase()) >= 0) {
182 children.push({
182 children.push({
183 'id': this.id,
183 'id': this.id,
184 'text': this.text,
184 'text': this.text,
185 'type': this.type
185 'type': this.type
186 })
186 })
187 }
187 }
188 });
188 });
189 data.results.push({
189 data.results.push({
190 'text': section,
190 'text': section,
191 'children': children
191 'children': children
192 })
192 })
193 });
193 });
194 //push the typed in changeset
194 //push the typed in changeset
195 data.results.push({
195 data.results.push({
196 'text': _gettext('specify commit'),
196 'text': _gettext('specify commit'),
197 'children': [{
197 'children': [{
198 'id': query.term,
198 'id': query.term,
199 'text': query.term,
199 'text': query.term,
200 'type': 'rev'
200 'type': 'rev'
201 }]
201 }]
202 });
202 });
203 query.callback(data);
203 query.callback(data);
204 };
204 };
205
205
206 var loadCompareData = function(repoName, query, cache){
206 var loadCompareData = function(repoName, query, cache){
207 $.ajax({
207 $.ajax({
208 url: pyroutes.url('repo_refs_data', {'repo_name': repoName}),
208 url: pyroutes.url('repo_refs_data', {'repo_name': repoName}),
209 data: {},
209 data: {},
210 dataType: 'json',
210 dataType: 'json',
211 type: 'GET',
211 type: 'GET',
212 success: function(data) {
212 success: function(data) {
213 cache[repoName] = data;
213 cache[repoName] = data;
214 query.callback({results: data.results});
214 query.callback({results: data.results});
215 }
215 }
216 })
216 })
217 };
217 };
218
218
219 var enable_fields = ${"false" if c.preview_mode else "true"};
219 var enable_fields = ${"false" if c.preview_mode else "true"};
220 $("#compare_source").select2({
220 $("#compare_source").select2({
221 placeholder: "${'%s@%s' % (c.source_repo.repo_name, c.source_ref)}",
221 placeholder: "${'%s@%s' % (c.source_repo.repo_name, c.source_ref)}",
222 containerCssClass: "drop-menu",
222 containerCssClass: "drop-menu",
223 dropdownCssClass: "drop-menu-dropdown",
223 dropdownCssClass: "drop-menu-dropdown",
224 formatSelection: formatSelection("${c.source_repo.repo_name}"),
224 formatSelection: formatSelection("${c.source_repo.repo_name}"),
225 dropdownAutoWidth: true,
225 dropdownAutoWidth: true,
226 query: function(query) {
226 query: function(query) {
227 var repoName = '${c.source_repo.repo_name}';
227 var repoName = '${c.source_repo.repo_name}';
228 var cachedValue = cache[repoName];
228 var cachedValue = cache[repoName];
229
229
230 if (cachedValue){
230 if (cachedValue){
231 feedCompareData(query, cachedValue);
231 feedCompareData(query, cachedValue);
232 }
232 }
233 else {
233 else {
234 loadCompareData(repoName, query, cache);
234 loadCompareData(repoName, query, cache);
235 }
235 }
236 }
236 }
237 }).select2("enable", enable_fields);
237 }).select2("enable", enable_fields);
238
238
239 $("#compare_target").select2({
239 $("#compare_target").select2({
240 placeholder: "${'%s@%s' % (c.target_repo.repo_name, c.target_ref)}",
240 placeholder: "${'%s@%s' % (c.target_repo.repo_name, c.target_ref)}",
241 dropdownAutoWidth: true,
241 dropdownAutoWidth: true,
242 containerCssClass: "drop-menu",
242 containerCssClass: "drop-menu",
243 dropdownCssClass: "drop-menu-dropdown",
243 dropdownCssClass: "drop-menu-dropdown",
244 formatSelection: formatSelection("${c.target_repo.repo_name}"),
244 formatSelection: formatSelection("${c.target_repo.repo_name}"),
245 query: function(query) {
245 query: function(query) {
246 var repoName = '${c.target_repo.repo_name}';
246 var repoName = '${c.target_repo.repo_name}';
247 var cachedValue = cache[repoName];
247 var cachedValue = cache[repoName];
248
248
249 if (cachedValue){
249 if (cachedValue){
250 feedCompareData(query, cachedValue);
250 feedCompareData(query, cachedValue);
251 }
251 }
252 else {
252 else {
253 loadCompareData(repoName, query, cache);
253 loadCompareData(repoName, query, cache);
254 }
254 }
255 }
255 }
256 }).select2("enable", enable_fields);
256 }).select2("enable", enable_fields);
257 var initial_compare_source = {id: "${c.source_ref}", type:"${c.source_ref_type}"};
257 var initial_compare_source = {id: "${c.source_ref}", type:"${c.source_ref_type}"};
258 var initial_compare_target = {id: "${c.target_ref}", type:"${c.target_ref_type}"};
258 var initial_compare_target = {id: "${c.target_ref}", type:"${c.target_ref_type}"};
259
259
260 $('#compare_revs').on('click', function(e) {
260 $('#compare_revs').on('click', function(e) {
261 var source = $('#compare_source').select2('data') || initial_compare_source;
261 var source = $('#compare_source').select2('data') || initial_compare_source;
262 var target = $('#compare_target').select2('data') || initial_compare_target;
262 var target = $('#compare_target').select2('data') || initial_compare_target;
263 if (source && target) {
263 if (source && target) {
264 var url_data = {
264 var url_data = {
265 repo_name: "${c.repo_name}",
265 repo_name: "${c.repo_name}",
266 source_ref: source.id,
266 source_ref: source.id,
267 source_ref_type: source.type,
267 source_ref_type: source.type,
268 target_ref: target.id,
268 target_ref: target.id,
269 target_ref_type: target.type
269 target_ref_type: target.type
270 };
270 };
271 window.location = pyroutes.url('repo_compare', url_data);
271 window.location = pyroutes.url('repo_compare', url_data);
272 }
272 }
273 });
273 });
274 $('#compare_changeset_status_toggle').on('click', function(e) {
274 $('#compare_changeset_status_toggle').on('click', function(e) {
275 $('#compare_changeset_status').toggle();
275 $('#compare_changeset_status').toggle();
276 });
276 });
277
277
278 </script>
278 </script>
279
279
280 ## table diff data
280 ## table diff data
281 <div class="table">
281 <div class="table">
282
283
284 % if not c.compare_home:
282 % if not c.compare_home:
285 <div id="changeset_compare_view_content">
283 <div id="changeset_compare_view_content">
286 <div class="pull-left">
284 <div class="pull-left">
287 <div class="btn-group">
285 <div class="btn-group">
288 <a
286 <a
289 class="btn"
287 class="btn"
290 href="#"
288 href="#"
291 onclick="$('.compare_select').show();$('.compare_select_hidden').hide(); return false">
289 onclick="$('.compare_select').show();$('.compare_select_hidden').hide(); return false">
292 ${_ungettext('Expand %s commit','Expand %s commits', len(c.commit_ranges)) % len(c.commit_ranges)}
290 ${_ungettext('Expand %s commit','Expand %s commits', len(c.commit_ranges)) % len(c.commit_ranges)}
293 </a>
291 </a>
294 <a
292 <a
295 class="btn"
293 class="btn"
296 href="#"
294 href="#"
297 onclick="$('.compare_select').hide();$('.compare_select_hidden').show(); return false">
295 onclick="$('.compare_select').hide();$('.compare_select_hidden').show(); return false">
298 ${_ungettext('Collapse %s commit','Collapse %s commits', len(c.commit_ranges)) % len(c.commit_ranges)}
296 ${_ungettext('Collapse %s commit','Collapse %s commits', len(c.commit_ranges)) % len(c.commit_ranges)}
299 </a>
297 </a>
300 </div>
298 </div>
301 </div>
299 </div>
302 <div style="padding:0 10px 10px 0px" class="pull-left"></div>
300 <div style="padding:0 10px 10px 0px" class="pull-left"></div>
303 ## commit compare generated below
301 ## commit compare generated below
304 <%include file="compare_commits.mako"/>
302 <%include file="compare_commits.mako"/>
305 ${cbdiffs.render_diffset_menu(c.diffset)}
303 ${cbdiffs.render_diffset_menu(c.diffset)}
306 ${cbdiffs.render_diffset(c.diffset)}
304 ${cbdiffs.render_diffset(c.diffset)}
307 </div>
305 </div>
308 % endif
306 % endif
309
307
310 </div>
308 </div>
311 </div>
309 </div>
312
310
313 </%def>
311 </%def>
General Comments 0
You need to be logged in to leave comments. Login now