##// END OF EJS Templates
rhodecode.js: more jQuery and general cleanup...
Mads Kiilerich -
r4160:4451b2ea rhodecode-2.2.5-gpl
parent child Browse files
Show More
@@ -1,5062 +1,5062
1 1 html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,font,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td {
2 2 border: 0;
3 3 outline: 0;
4 4 font-size: 100%;
5 5 vertical-align: baseline;
6 6 background: transparent;
7 7 margin: 0;
8 8 padding: 0;
9 9 }
10 10
11 11 body {
12 12 line-height: 1;
13 13 height: 100%;
14 14 background: url("../images/background.png") repeat scroll 0 0 #B0B0B0;
15 15 font-family: Lucida Grande, Verdana, Lucida Sans Regular,
16 16 Lucida Sans Unicode, Arial, sans-serif; font-size : 12px;
17 17 color: #000;
18 18 margin: 0;
19 19 padding: 0;
20 20 font-size: 12px;
21 21 }
22 22
23 23 ol, ul {
24 24 list-style: none;
25 25 }
26 26
27 27 blockquote, q {
28 28 quotes: none;
29 29 }
30 30
31 31 blockquote:before, blockquote:after, q:before, q:after {
32 32 content: none;
33 33 }
34 34
35 35 :focus {
36 36 outline: 0;
37 37 }
38 38
39 39 del {
40 40 text-decoration: line-through;
41 41 }
42 42
43 43 table {
44 44 border-collapse: collapse;
45 45 border-spacing: 0;
46 46 }
47 47
48 48 html {
49 49 height: 100%;
50 50 }
51 51
52 52 a {
53 53 color: #003367;
54 54 text-decoration: none;
55 55 cursor: pointer;
56 56 }
57 57
58 58 a:hover {
59 59 color: #316293;
60 60 text-decoration: underline;
61 61 }
62 62
63 63 h1, h2, h3, h4, h5, h6,
64 64 div.h1, div.h2, div.h3, div.h4, div.h5, div.h6 {
65 65 color: #292929;
66 66 font-weight: 700;
67 67 }
68 68
69 69 h1, div.h1 {
70 70 font-size: 22px;
71 71 }
72 72
73 73 h2, div.h2 {
74 74 font-size: 20px;
75 75 }
76 76
77 77 h3, div.h3 {
78 78 font-size: 18px;
79 79 }
80 80
81 81 h4, div.h4 {
82 82 font-size: 16px;
83 83 }
84 84
85 85 h5, div.h5 {
86 86 font-size: 14px;
87 87 }
88 88
89 89 h6, div.h6 {
90 90 font-size: 11px;
91 91 }
92 92
93 93 ul.circle {
94 94 list-style-type: circle;
95 95 }
96 96
97 97 ul.disc {
98 98 list-style-type: disc;
99 99 }
100 100
101 101 ul.square {
102 102 list-style-type: square;
103 103 }
104 104
105 105 ol.lower-roman {
106 106 list-style-type: lower-roman;
107 107 }
108 108
109 109 ol.upper-roman {
110 110 list-style-type: upper-roman;
111 111 }
112 112
113 113 ol.lower-alpha {
114 114 list-style-type: lower-alpha;
115 115 }
116 116
117 117 ol.upper-alpha {
118 118 list-style-type: upper-alpha;
119 119 }
120 120
121 121 ol.decimal {
122 122 list-style-type: decimal;
123 123 }
124 124
125 125 div.color {
126 126 clear: both;
127 127 overflow: hidden;
128 128 position: absolute;
129 129 background: #FFF;
130 130 margin: 7px 0 0 60px;
131 131 padding: 1px 1px 1px 0;
132 132 }
133 133
134 134 div.color a {
135 135 width: 15px;
136 136 height: 15px;
137 137 display: block;
138 138 float: left;
139 139 margin: 0 0 0 1px;
140 140 padding: 0;
141 141 }
142 142
143 143 div.options {
144 144 clear: both;
145 145 overflow: hidden;
146 146 position: absolute;
147 147 background: #FFF;
148 148 margin: 7px 0 0 162px;
149 149 padding: 0;
150 150 }
151 151
152 152 div.options a {
153 153 height: 1%;
154 154 display: block;
155 155 text-decoration: none;
156 156 margin: 0;
157 157 padding: 3px 8px;
158 158 }
159 159
160 160 .top-left-rounded-corner {
161 161 -webkit-border-top-left-radius: 8px;
162 162 -khtml-border-radius-topleft: 8px;
163 163 border-top-left-radius: 8px;
164 164 }
165 165
166 166 .top-right-rounded-corner {
167 167 -webkit-border-top-right-radius: 8px;
168 168 -khtml-border-radius-topright: 8px;
169 169 border-top-right-radius: 8px;
170 170 }
171 171
172 172 .bottom-left-rounded-corner {
173 173 -webkit-border-bottom-left-radius: 8px;
174 174 -khtml-border-radius-bottomleft: 8px;
175 175 border-bottom-left-radius: 8px;
176 176 }
177 177
178 178 .bottom-right-rounded-corner {
179 179 -webkit-border-bottom-right-radius: 8px;
180 180 -khtml-border-radius-bottomright: 8px;
181 181 border-bottom-right-radius: 8px;
182 182 }
183 183
184 184 .top-left-rounded-corner-mid {
185 185 -webkit-border-top-left-radius: 4px;
186 186 -khtml-border-radius-topleft: 4px;
187 187 border-top-left-radius: 4px;
188 188 }
189 189
190 190 .top-right-rounded-corner-mid {
191 191 -webkit-border-top-right-radius: 4px;
192 192 -khtml-border-radius-topright: 4px;
193 193 border-top-right-radius: 4px;
194 194 }
195 195
196 196 .bottom-left-rounded-corner-mid {
197 197 -webkit-border-bottom-left-radius: 4px;
198 198 -khtml-border-radius-bottomleft: 4px;
199 199 border-bottom-left-radius: 4px;
200 200 }
201 201
202 202 .bottom-right-rounded-corner-mid {
203 203 -webkit-border-bottom-right-radius: 4px;
204 204 -khtml-border-radius-bottomright: 4px;
205 205 border-bottom-right-radius: 4px;
206 206 }
207 207
208 208 .help-block {
209 209 color: #999999;
210 210 display: block;
211 211 margin-bottom: 0;
212 212 margin-top: 5px;
213 213 }
214 214
215 215 .empty_data {
216 216 color: #B9B9B9;
217 217 }
218 218
219 219 .truncate {
220 220 white-space: nowrap;
221 221 overflow: hidden;
222 222 text-overflow: ellipsis;
223 223 -o-text-overflow: ellipsis;
224 224 -ms-text-overflow: ellipsis;
225 225 }
226 226
227 227 .truncate.autoexpand:hover {
228 228 text-overflow: none;
229 229 overflow: visible;
230 230 }
231 231
232 232 a.permalink {
233 233 visibility: hidden;
234 234 position: absolute;
235 235 margin: 3px 4px;
236 236 }
237 237
238 238 a.permalink:hover {
239 239 text-decoration: none;
240 240 }
241 241
242 242 h1:hover > a.permalink,
243 243 h2:hover > a.permalink,
244 244 h3:hover > a.permalink,
245 245 h4:hover > a.permalink,
246 246 h5:hover > a.permalink,
247 247 h6:hover > a.permalink,
248 248 div:hover > a.permalink {
249 249 visibility: visible;
250 250 }
251 251
252 252 #header #logo {
253 253 padding-left: 20px;
254 254 }
255 255
256 256 #header #logo div.header,
257 257 #header #logo div.branding {
258 258 font-size: 20px;
259 259 color: white;
260 260 float: left;
261 261 height: 44px;
262 262 line-height: 44px;
263 263 margin-right: 10px;
264 264 }
265 265
266 266 #header ul#logged-user {
267 267 margin-bottom: 5px !important;
268 268 -webkit-border-radius: 0px 0px 8px 8px;
269 269 -khtml-border-radius: 0px 0px 8px 8px;
270 270 border-radius: 0px 0px 8px 8px;
271 271 height: 37px;
272 272 background-color: #003B76;
273 273 background-repeat: repeat-x;
274 274 background-image: -khtml-gradient(linear, left top, left bottom, from(#003B76), to(#00376E) );
275 275 background-image: -moz-linear-gradient(top, #003b76, #00376e);
276 276 background-image: -ms-linear-gradient(top, #003b76, #00376e);
277 277 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76), color-stop(100%, #00376e) );
278 278 background-image: -webkit-linear-gradient(top, #003b76, #00376e);
279 279 background-image: -o-linear-gradient(top, #003b76, #00376e);
280 280 background-image: linear-gradient(to bottom, #003b76, #00376e);
281 281 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76',endColorstr='#00376e', GradientType=0 );
282 282 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
283 283 }
284 284
285 285 #header ul#logged-user li {
286 286 list-style: none;
287 287 float: left;
288 288 margin: 8px 0 0;
289 289 padding: 4px 12px;
290 290 border-left: 1px solid #316293;
291 291 }
292 292
293 293 #header ul#logged-user li.first {
294 294 border-left: none;
295 295 margin: 4px;
296 296 }
297 297
298 298 #header ul#logged-user li.first div.gravatar {
299 299 margin-top: -2px;
300 300 }
301 301
302 302 #header ul#logged-user li.first div.account {
303 303 padding-top: 4px;
304 304 float: left;
305 305 }
306 306
307 307 #header ul#logged-user li.last {
308 308 border-right: none;
309 309 }
310 310
311 311 #header ul#logged-user li a {
312 312 color: #fff;
313 313 font-weight: 700;
314 314 text-decoration: none;
315 315 }
316 316
317 317 #header ul#logged-user li a:hover {
318 318 text-decoration: underline;
319 319 }
320 320
321 321 #header ul#logged-user li.highlight a {
322 322 color: #fff;
323 323 }
324 324
325 325 #header ul#logged-user li.highlight a:hover {
326 326 color: #FFF;
327 327 }
328 328 #header-dd {
329 329 clear: both;
330 330 position: fixed !important;
331 331 background-color: #003B76;
332 332 opacity: 0.01;
333 333 cursor: pointer;
334 334 min-height: 10px;
335 335 width: 100% !important;
336 336 -webkit-border-radius: 0px 0px 4px 4px;
337 337 -khtml-border-radius: 0px 0px 4px 4px;
338 338 border-radius: 0px 0px 4px 4px;
339 339 }
340 340
341 341 #header-dd:hover {
342 342 opacity: 0.2;
343 343 -webkit-transition: opacity 0.5s ease-in-out;
344 344 -moz-transition: opacity 0.5s ease-in-out;
345 345 transition: opacity 0.5s ease-in-out;
346 346 }
347 347
348 348 #header #header-inner {
349 349 min-height: 44px;
350 350 clear: both;
351 351 position: relative;
352 352 background-color: #003B76;
353 353 background-repeat: repeat-x;
354 354 background-image: -khtml-gradient(linear, left top, left bottom, from(#003B76), to(#00376E) );
355 355 background-image: -moz-linear-gradient(top, #003b76, #00376e);
356 356 background-image: -ms-linear-gradient(top, #003b76, #00376e);
357 357 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76),color-stop(100%, #00376e) );
358 358 background-image: -webkit-linear-gradient(top, #003b76, #00376e);
359 359 background-image: -o-linear-gradient(top, #003b76, #00376e);
360 360 background-image: linear-gradient(to bottom, #003b76, #00376e);
361 361 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76',endColorstr='#00376e', GradientType=0 );
362 362 margin: 0;
363 363 padding: 0;
364 364 display: block;
365 365 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
366 366 -webkit-border-radius: 0px 0px 4px 4px;
367 367 -khtml-border-radius: 0px 0px 4px 4px;
368 368 border-radius: 0px 0px 4px 4px;
369 369 }
370 370 #header #header-inner.hover {
371 371 width: 100% !important;
372 372 -webkit-border-radius: 0px 0px 0px 0px;
373 373 -khtml-border-radius: 0px 0px 0px 0px;
374 374 border-radius: 0px 0px 0px 0px;
375 375 position: fixed !important;
376 376 z-index: 10000;
377 377 }
378 378
379 379 .ie7 #header #header-inner.hover,
380 380 .ie8 #header #header-inner.hover,
381 381 .ie9 #header #header-inner.hover
382 382 {
383 383 z-index: auto !important;
384 384 }
385 385
386 386 .header-pos-fix, .anchor {
387 387 margin-top: -46px;
388 388 padding-top: 46px;
389 389 }
390 390
391 391 #header #header-inner #home a {
392 392 height: 40px;
393 393 width: 46px;
394 394 display: block;
395 395 background-position: 0 0;
396 396 margin: 0;
397 397 padding: 0;
398 398 }
399 399
400 400 #header #header-inner #home a:hover {
401 401 background-position: 0 -40px;
402 402 }
403 403
404 404 #header #header-inner #logo {
405 405 float: left;
406 406 position: absolute;
407 407 }
408 408
409 409 #header #header-inner #logo h1 {
410 410 color: #FFF;
411 411 font-size: 20px;
412 412 margin: 12px 0 0 13px;
413 413 padding: 0;
414 414 }
415 415
416 416 #header #header-inner #logo a {
417 417 color: #fff;
418 418 text-decoration: none;
419 419 }
420 420
421 421 #header #header-inner #logo a:hover {
422 422 color: #bfe3ff;
423 423 }
424 424
425 425 #header #header-inner #quick {
426 426 position: relative;
427 427 float: right;
428 428 list-style-type: none;
429 429 list-style-position: outside;
430 430 margin: 4px 8px 0 0;
431 431 padding: 0;
432 432 border-radius: 4px;
433 433 }
434 434
435 435 #header #header-inner #quick li span.short {
436 436 padding: 9px 6px 8px 6px;
437 437 }
438 438
439 439 #header #header-inner #quick li span {
440 440 display: inline;
441 441 margin: 0;
442 442 }
443 443
444 444 #header #header-inner #quick li span.normal {
445 445 border: none;
446 446 padding: 10px 12px 8px;
447 447 }
448 448
449 449 #header #header-inner #quick li span.icon {
450 450 border-left: none;
451 451 padding-left: 10px;
452 452 }
453 453
454 454 #header #header-inner #quick li span.icon_short {
455 455 top: 0;
456 456 left: 0;
457 457 border-left: none;
458 458 border-right: 1px solid #2e5c89;
459 459 padding: 8px 6px 4px;
460 460 }
461 461
462 462 #header #header-inner #quick li span.icon img, #header #header-inner #quick li span.icon_short img {
463 463 vertical-align: middle;
464 464 margin-bottom: 2px;
465 465 }
466 466
467 467 #header #header-inner #quick ul.repo_switcher {
468 468 max-height: 275px;
469 469 overflow-x: hidden;
470 470 overflow-y: auto;
471 471 }
472 472
473 473 #header #header-inner #quick ul.repo_switcher li.qfilter_rs {
474 474 padding: 2px 3px;
475 475 padding-right: 17px;
476 476 }
477 477
478 478 #header #header-inner #quick ul.repo_switcher li.qfilter_rs input {
479 479 width: 100%;
480 480 border-radius: 10px;
481 481 padding: 2px 7px;
482 482 }
483 483
484 484 #header #header-inner #quick .repo_switcher_type {
485 485 position: absolute;
486 486 left: 0;
487 487 top: 9px;
488 488 margin: 0px 2px 0px 2px;
489 489 }
490 490
491 491 #header #header-inner #quick li ul li a.journal, #header #header-inner #quick li ul li a.journal:hover {
492 492 background-image: url("../images/icons/book.png");
493 493 }
494 494
495 495 #header #header-inner #quick li ul li a.private_repo, #header #header-inner #quick li ul li a.private_repo:hover {
496 496 background-image: url("../images/icons/private_repo.png")
497 497 }
498 498
499 499 #header #header-inner #quick li ul li a.public_repo, #header #header-inner #quick li ul li a.public_repo:hover {
500 500 background-image: url("../images/icons/public_repo.png");
501 501 }
502 502
503 503 #header #header-inner #quick li ul li a.hg, #header #header-inner #quick li ul li a.hg:hover {
504 504 background-image: url("../images/icons/hgicon.png");
505 505 padding-left: 42px;
506 506 background-position: 20px 9px;
507 507 }
508 508
509 509 #header #header-inner #quick li ul li a.git, #header #header-inner #quick li ul li a.git:hover {
510 510 background-image: url("../images/icons/giticon.png");
511 511 padding-left: 42px;
512 512 background-position: 20px 9px;
513 513 }
514 514
515 515 #header #header-inner #quick li ul li a.repos, #header #header-inner #quick li ul li a.repos:hover {
516 516 background-image: url("../images/icons/database_edit.png");
517 517 }
518 518
519 519 #header #header-inner #quick li ul li a.repos_groups, #header #header-inner #quick li ul li a.repos_groups:hover {
520 520 background-image: url("../images/icons/database_link.png");
521 521 }
522 522
523 523 #header #header-inner #quick li ul li a.users, #header #header-inner #quick li ul li a.users:hover {
524 524 background-image: url("../images/icons/user_edit.png");
525 525 }
526 526
527 527 #header #header-inner #quick li ul li a.groups, #header #header-inner #quick li ul li a.groups:hover {
528 528 background-image: url("../images/icons/group_edit.png");
529 529 }
530 530
531 531 #header #header-inner #quick li ul li a.defaults, #header #header-inner #quick li ul li a.defaults:hover {
532 532 background-image: url("../images/icons/wrench.png");
533 533 }
534 534
535 535 #header #header-inner #quick li ul li a.settings, #header #header-inner #quick li ul li a.settings:hover {
536 536 background-image: url("../images/icons/cog.png");
537 537 }
538 538
539 539 #header #header-inner #quick li ul li a.permissions, #header #header-inner #quick li ul li a.permissions:hover {
540 540 background-image: url("../images/icons/key.png");
541 541 }
542 542
543 543 #header #header-inner #quick li ul li a.ldap, #header #header-inner #quick li ul li a.ldap:hover {
544 544 background-image: url("../images/icons/server_key.png");
545 545 }
546 546
547 547 #header #header-inner #quick li ul li a.fork, #header #header-inner #quick li ul li a.fork:hover {
548 548 background-image: url("../images/icons/arrow_divide.png");
549 549 }
550 550
551 551 #header #header-inner #quick li ul li a.locking_add, #header #header-inner #quick li ul li a.locking_add:hover {
552 552 background-image: url("../images/icons/lock_add.png");
553 553 }
554 554
555 555 #header #header-inner #quick li ul li a.locking_del, #header #header-inner #quick li ul li a.locking_del:hover {
556 556 background-image: url("../images/icons/lock_delete.png");
557 557 }
558 558
559 559 #header #header-inner #quick li ul li a.pull_request, #header #header-inner #quick li ul li a.pull_request:hover {
560 560 background-image: url("../images/icons/arrow_join.png") ;
561 561 }
562 562
563 563 #header #header-inner #quick li ul li a.compare_request, #header #header-inner #quick li ul li a.compare_request:hover {
564 564 background-image: url("../images/icons/arrow_inout.png");
565 565 }
566 566
567 567 #header #header-inner #quick li ul li a.search, #header #header-inner #quick li ul li a.search:hover {
568 568 background-image: url("../images/icons/search_16.png");
569 569 }
570 570
571 571 #header #header-inner #quick li ul li a.delete, #header #header-inner #quick li ul li a.delete:hover {
572 572 background-image: url("../images/icons/delete.png");
573 573 }
574 574
575 575 #header #header-inner #quick li ul li a.branches, #header #header-inner #quick li ul li a.branches:hover {
576 576 background-image: url("../images/icons/arrow_branch.png");
577 577 }
578 578
579 579 #header #header-inner #quick li ul li a.tags,
580 580 #header #header-inner #quick li ul li a.tags:hover {
581 581 background: #FFF url("../images/icons/tag_blue.png") no-repeat 4px 9px;
582 582 width: 167px;
583 583 margin: 0;
584 584 padding: 12px 9px 7px 24px;
585 585 }
586 586
587 587 #header #header-inner #quick li ul li a.bookmarks,
588 588 #header #header-inner #quick li ul li a.bookmarks:hover {
589 589 background: #FFF url("../images/icons/tag_green.png") no-repeat 4px 9px;
590 590 width: 167px;
591 591 margin: 0;
592 592 padding: 12px 9px 7px 24px;
593 593 }
594 594
595 595 #header #header-inner #quick li ul li a.admin,
596 596 #header #header-inner #quick li ul li a.admin:hover {
597 597 background: #FFF url("../images/icons/cog_edit.png") no-repeat 4px 9px;
598 598 width: 167px;
599 599 margin: 0;
600 600 padding: 12px 9px 7px 24px;
601 601 }
602 602
603 603 .groups_breadcrumbs a {
604 604 color: #fff;
605 605 }
606 606
607 607 .groups_breadcrumbs a:hover {
608 608 color: #bfe3ff;
609 609 text-decoration: none;
610 610 }
611 611
612 612 td.quick_repo_menu {
613 613 background: #FFF url("../images/vertical-indicator.png") 8px 50% no-repeat !important;
614 614 cursor: pointer;
615 615 width: 8px;
616 616 border: 1px solid transparent;
617 617 }
618 618
619 619 td.quick_repo_menu.active {
620 620 background: url("../images/dt-arrow-dn.png") no-repeat scroll 5px 50% #FFFFFF !important;
621 621 border: 1px solid #003367;
622 622 box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
623 623 cursor: pointer;
624 624 }
625 625
626 626 td.quick_repo_menu .menu_items {
627 627 margin-top: 10px;
628 628 margin-left: -6px;
629 629 width: 150px;
630 630 position: absolute;
631 631 background-color: #FFF;
632 632 background: none repeat scroll 0 0 #FFFFFF;
633 633 border-color: #003367 #666666 #666666;
634 634 border-right: 1px solid #666666;
635 635 border-style: solid;
636 636 border-width: 1px;
637 637 box-shadow: 2px 8px 4px rgba(0, 0, 0, 0.2);
638 638 border-top-style: none;
639 639 }
640 640
641 641 td.quick_repo_menu .menu_items li {
642 642 padding: 0 !important;
643 643 }
644 644
645 645 td.quick_repo_menu .menu_items a {
646 646 display: block;
647 647 padding: 4px 12px 4px 8px;
648 648 }
649 649
650 650 td.quick_repo_menu .menu_items a:hover {
651 651 background-color: #EEE;
652 652 text-decoration: none;
653 653 }
654 654
655 655 td.quick_repo_menu .menu_items .icon img {
656 656 margin-bottom: -2px;
657 657 }
658 658
659 659 td.quick_repo_menu .menu_items.hidden {
660 660 display: none;
661 661 }
662 662
663 663 .yui-dt-first th {
664 664 text-align: left;
665 665 }
666 666
667 667 /*
668 668 Copyright (c) 2011, Yahoo! Inc. All rights reserved.
669 669 Code licensed under the BSD License:
670 670 http://developer.yahoo.com/yui/license.html
671 671 version: 2.9.0
672 672 */
673 673 .yui-skin-sam .yui-dt-mask {
674 674 position: absolute;
675 675 z-index: 9500;
676 676 }
677 677 .yui-dt-tmp {
678 678 position: absolute;
679 679 left: -9000px;
680 680 }
681 681 .yui-dt-scrollable .yui-dt-bd { overflow: auto }
682 682 .yui-dt-scrollable .yui-dt-hd {
683 683 overflow: hidden;
684 684 position: relative;
685 685 }
686 686 .yui-dt-scrollable .yui-dt-bd thead tr,
687 687 .yui-dt-scrollable .yui-dt-bd thead th {
688 688 position: absolute;
689 689 left: -1500px;
690 690 }
691 691 .yui-dt-scrollable tbody { -moz-outline: 0 }
692 692 .yui-skin-sam thead .yui-dt-sortable { cursor: pointer }
693 693 .yui-skin-sam thead .yui-dt-draggable { cursor: move }
694 694 .yui-dt-coltarget {
695 695 position: absolute;
696 696 z-index: 999;
697 697 }
698 698 .yui-dt-hd { zoom: 1 }
699 699 th.yui-dt-resizeable .yui-dt-resizerliner { position: relative }
700 700 .yui-dt-resizer {
701 701 position: absolute;
702 702 right: 0;
703 703 bottom: 0;
704 704 height: 100%;
705 705 cursor: e-resize;
706 706 cursor: col-resize;
707 707 background-color: #CCC;
708 708 opacity: 0;
709 709 filter: alpha(opacity=0);
710 710 }
711 711 .yui-dt-resizerproxy {
712 712 visibility: hidden;
713 713 position: absolute;
714 714 z-index: 9000;
715 715 background-color: #CCC;
716 716 opacity: 0;
717 717 filter: alpha(opacity=0);
718 718 }
719 719 th.yui-dt-hidden .yui-dt-liner,
720 720 td.yui-dt-hidden .yui-dt-liner,
721 721 th.yui-dt-hidden .yui-dt-resizer { display: none }
722 722 .yui-dt-editor,
723 723 .yui-dt-editor-shim {
724 724 position: absolute;
725 725 z-index: 9000;
726 726 }
727 727 .yui-skin-sam .yui-dt table {
728 728 margin: 0;
729 729 padding: 0;
730 730 font-family: arial;
731 731 font-size: inherit;
732 732 border-collapse: separate;
733 733 *border-collapse: collapse;
734 734 border-spacing: 0;
735 735 border: 1px solid #7f7f7f;
736 736 }
737 737 .yui-skin-sam .yui-dt thead { border-spacing: 0 }
738 738 .yui-skin-sam .yui-dt caption {
739 739 color: #000;
740 740 font-size: 85%;
741 741 font-weight: normal;
742 742 font-style: italic;
743 743 line-height: 1;
744 744 padding: 1em 0;
745 745 text-align: center;
746 746 }
747 747 .yui-skin-sam .yui-dt th { background: #d8d8da url(../images/sprite.png) repeat-x 0 0 }
748 748 .yui-skin-sam .yui-dt th,
749 749 .yui-skin-sam .yui-dt th a {
750 750 font-weight: normal;
751 751 text-decoration: none;
752 752 color: #000;
753 753 vertical-align: bottom;
754 754 }
755 755 .yui-skin-sam .yui-dt th {
756 756 margin: 0;
757 757 padding: 0;
758 758 border: 0;
759 759 border-right: 1px solid #cbcbcb;
760 760 }
761 761 .yui-skin-sam .yui-dt tr.yui-dt-first td { border-top: 1px solid #7f7f7f }
762 762 .yui-skin-sam .yui-dt th .yui-dt-liner { white-space: nowrap }
763 763 .yui-skin-sam .yui-dt-liner {
764 764 margin: 0;
765 765 padding: 0;
766 766 }
767 767 .yui-skin-sam .yui-dt-coltarget {
768 768 width: 5px;
769 769 background-color: red;
770 770 }
771 771 .yui-skin-sam .yui-dt td {
772 772 margin: 0;
773 773 padding: 0;
774 774 border: 0;
775 775 border-right: 1px solid #cbcbcb;
776 776 text-align: left;
777 777 }
778 778 .yui-skin-sam .yui-dt-list td { border-right: 0 }
779 779 .yui-skin-sam .yui-dt-resizer { width: 6px }
780 780 .yui-skin-sam .yui-dt-mask {
781 781 background-color: #000;
782 782 opacity: .25;
783 783 filter: alpha(opacity=25);
784 784 }
785 785 .yui-skin-sam .yui-dt-message { background-color: #FFF }
786 786 .yui-skin-sam .yui-dt-scrollable table { border: 0 }
787 787 .yui-skin-sam .yui-dt-scrollable .yui-dt-hd {
788 788 border-left: 1px solid #7f7f7f;
789 789 border-top: 1px solid #7f7f7f;
790 790 border-right: 1px solid #7f7f7f;
791 791 }
792 792 .yui-skin-sam .yui-dt-scrollable .yui-dt-bd {
793 793 border-left: 1px solid #7f7f7f;
794 794 border-bottom: 1px solid #7f7f7f;
795 795 border-right: 1px solid #7f7f7f;
796 796 background-color: #FFF;
797 797 }
798 798 .yui-skin-sam .yui-dt-scrollable .yui-dt-data tr.yui-dt-last td { border-bottom: 1px solid #7f7f7f }
799 799 .yui-skin-sam th.yui-dt-asc,
800 800 .yui-skin-sam th.yui-dt-desc { background: url(../images/sprite.png) repeat-x 0 -100px }
801 801 .yui-skin-sam th.yui-dt-sortable .yui-dt-label { margin-right: 10px }
802 802 .yui-skin-sam th.yui-dt-asc .yui-dt-liner { background: url(../images/dt-arrow-up.png) no-repeat right }
803 803 .yui-skin-sam th.yui-dt-desc .yui-dt-liner { background: url(../images/dt-arrow-dn.png) no-repeat right }
804 804 tbody .yui-dt-editable { cursor: pointer }
805 805 .yui-dt-editor {
806 806 text-align: left;
807 807 background-color: #f2f2f2;
808 808 border: 1px solid #808080;
809 809 padding: 6px;
810 810 }
811 811 .yui-dt-editor label {
812 812 padding-left: 4px;
813 813 padding-right: 6px;
814 814 }
815 815 .yui-dt-editor .yui-dt-button {
816 816 padding-top: 6px;
817 817 text-align: right;
818 818 }
819 819 .yui-dt-editor .yui-dt-button button {
820 820 background: url(../images/sprite.png) repeat-x 0 0;
821 821 border: 1px solid #999;
822 822 width: 4em;
823 823 height: 1.8em;
824 824 margin-left: 6px;
825 825 }
826 826 .yui-dt-editor .yui-dt-button button.yui-dt-default {
827 827 background: url(../images/sprite.png) repeat-x 0 -1400px;
828 828 background-color: #5584e0;
829 829 border: 1px solid #304369;
830 830 color: #FFF;
831 831 }
832 832 .yui-dt-editor .yui-dt-button button:hover {
833 833 background: url(../images/sprite.png) repeat-x 0 -1300px;
834 834 color: #000;
835 835 }
836 836 .yui-dt-editor .yui-dt-button button:active {
837 837 background: url(../images/sprite.png) repeat-x 0 -1700px;
838 838 color: #000;
839 839 }
840 840 .yui-skin-sam tr.yui-dt-even { background-color: #FFF }
841 841 .yui-skin-sam tr.yui-dt-odd { background-color: #edf5ff }
842 842 .yui-skin-sam tr.yui-dt-even td.yui-dt-asc,
843 843 .yui-skin-sam tr.yui-dt-even td.yui-dt-desc { background-color: #edf5ff }
844 844 .yui-skin-sam tr.yui-dt-odd td.yui-dt-asc,
845 845 .yui-skin-sam tr.yui-dt-odd td.yui-dt-desc { background-color: #dbeaff }
846 846 .yui-skin-sam .yui-dt-list tr.yui-dt-even { background-color: #FFF }
847 847 .yui-skin-sam .yui-dt-list tr.yui-dt-odd { background-color: #FFF }
848 848 .yui-skin-sam .yui-dt-list tr.yui-dt-even td.yui-dt-asc,
849 849 .yui-skin-sam .yui-dt-list tr.yui-dt-even td.yui-dt-desc { background-color: #edf5ff }
850 850 .yui-skin-sam .yui-dt-list tr.yui-dt-odd td.yui-dt-asc,
851 851 .yui-skin-sam .yui-dt-list tr.yui-dt-odd td.yui-dt-desc { background-color: #edf5ff }
852 852 .yui-skin-sam th.yui-dt-highlighted,
853 853 .yui-skin-sam th.yui-dt-highlighted a { background-color: #b2d2ff }
854 854 .yui-skin-sam tr.yui-dt-highlighted,
855 855 .yui-skin-sam tr.yui-dt-highlighted td.yui-dt-asc,
856 856 .yui-skin-sam tr.yui-dt-highlighted td.yui-dt-desc,
857 857 .yui-skin-sam tr.yui-dt-even td.yui-dt-highlighted,
858 858 .yui-skin-sam tr.yui-dt-odd td.yui-dt-highlighted {
859 859 cursor: pointer;
860 860 background-color: #b2d2ff;
861 861 }
862 862 .yui-skin-sam .yui-dt-list th.yui-dt-highlighted,
863 863 .yui-skin-sam .yui-dt-list th.yui-dt-highlighted a { background-color: #b2d2ff }
864 864 .yui-skin-sam .yui-dt-list tr.yui-dt-highlighted,
865 865 .yui-skin-sam .yui-dt-list tr.yui-dt-highlighted td.yui-dt-asc,
866 866 .yui-skin-sam .yui-dt-list tr.yui-dt-highlighted td.yui-dt-desc,
867 867 .yui-skin-sam .yui-dt-list tr.yui-dt-even td.yui-dt-highlighted,
868 868 .yui-skin-sam .yui-dt-list tr.yui-dt-odd td.yui-dt-highlighted {
869 869 cursor: pointer;
870 870 background-color: #b2d2ff;
871 871 }
872 872 .yui-skin-sam th.yui-dt-selected,
873 873 .yui-skin-sam th.yui-dt-selected a { background-color: #446cd7 }
874 874 .yui-skin-sam tr.yui-dt-selected td,
875 875 .yui-skin-sam tr.yui-dt-selected td.yui-dt-asc,
876 876 .yui-skin-sam tr.yui-dt-selected td.yui-dt-desc {
877 877 background-color: #426fd9;
878 878 color: #FFF;
879 879 }
880 880 .yui-skin-sam tr.yui-dt-even td.yui-dt-selected,
881 881 .yui-skin-sam tr.yui-dt-odd td.yui-dt-selected {
882 882 background-color: #446cd7;
883 883 color: #FFF;
884 884 }
885 885 .yui-skin-sam .yui-dt-list th.yui-dt-selected,
886 886 .yui-skin-sam .yui-dt-list th.yui-dt-selected a { background-color: #446cd7 }
887 887 .yui-skin-sam .yui-dt-list tr.yui-dt-selected td,
888 888 .yui-skin-sam .yui-dt-list tr.yui-dt-selected td.yui-dt-asc,
889 889 .yui-skin-sam .yui-dt-list tr.yui-dt-selected td.yui-dt-desc {
890 890 background-color: #426fd9;
891 891 color: #FFF;
892 892 }
893 893 .yui-skin-sam .yui-dt-list tr.yui-dt-even td.yui-dt-selected,
894 894 .yui-skin-sam .yui-dt-list tr.yui-dt-odd td.yui-dt-selected {
895 895 background-color: #446cd7;
896 896 color: #FFF;
897 897 }
898 898 .yui-skin-sam .yui-dt-paginator {
899 899 display: block;
900 900 margin: 6px 0;
901 901 white-space: nowrap;
902 902 }
903 903 .yui-skin-sam .yui-dt-paginator .yui-dt-first,
904 904 .yui-skin-sam .yui-dt-paginator .yui-dt-last,
905 905 .yui-skin-sam .yui-dt-paginator .yui-dt-selected { padding: 2px 6px }
906 906 .yui-skin-sam .yui-dt-paginator a.yui-dt-first,
907 907 .yui-skin-sam .yui-dt-paginator a.yui-dt-last { text-decoration: none }
908 908 .yui-skin-sam .yui-dt-paginator .yui-dt-previous,
909 909 .yui-skin-sam .yui-dt-paginator .yui-dt-next { display: none }
910 910 .yui-skin-sam a.yui-dt-page {
911 911 border: 1px solid #cbcbcb;
912 912 padding: 2px 6px;
913 913 text-decoration: none;
914 914 background-color: #fff;
915 915 }
916 916 .yui-skin-sam .yui-dt-selected {
917 917 border: 1px solid #fff;
918 918 background-color: #fff;
919 919 }
920 920
921 921 #content #left {
922 922 left: 0;
923 923 width: 280px;
924 924 position: absolute;
925 925 }
926 926
927 927 #content #right {
928 928 margin: 0 60px 10px 290px;
929 929 }
930 930
931 931 #content div.box {
932 932 clear: both;
933 933 background: #fff;
934 934 margin: 0 0 10px;
935 935 padding: 0 0 10px;
936 936 -webkit-border-radius: 4px 4px 4px 4px;
937 937 -khtml-border-radius: 4px 4px 4px 4px;
938 938 border-radius: 4px 4px 4px 4px;
939 939 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
940 940 }
941 941
942 942 #content div.box-left {
943 943 width: 49%;
944 944 clear: none;
945 945 float: left;
946 946 margin: 0 0 10px;
947 947 }
948 948
949 949 #content div.box-right {
950 950 width: 49%;
951 951 clear: none;
952 952 float: right;
953 953 margin: 0 0 10px;
954 954 }
955 955
956 956 #content div.box div.title {
957 957 clear: both;
958 958 overflow: hidden;
959 959 background-color: #003B76;
960 960 background-repeat: repeat-x;
961 961 background-image: -khtml-gradient(linear, left top, left bottom, from(#003B76), to(#00376E) );
962 962 background-image: -moz-linear-gradient(top, #003b76, #00376e);
963 963 background-image: -ms-linear-gradient(top, #003b76, #00376e);
964 964 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76), color-stop(100%, #00376e) );
965 965 background-image: -webkit-linear-gradient(top, #003b76, #00376e);
966 966 background-image: -o-linear-gradient(top, #003b76, #00376e);
967 967 background-image: linear-gradient(to bottom, #003b76, #00376e);
968 968 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76', endColorstr='#00376e', GradientType=0 );
969 969 margin: 0 0 20px;
970 970 padding: 0;
971 971 border-radius: 4px 4px 0 0;
972 972 }
973 973
974 974 #content div.box div.title h5 {
975 975 float: left;
976 976 border: none;
977 977 color: #fff;
978 978 margin: 0;
979 979 padding: 11px 0 11px 10px;
980 980 }
981 981
982 982 #content div.box div.title .link-white {
983 983 color: #FFFFFF;
984 984 }
985 985
986 986 #content div.box div.title .link-white.current {
987 987 color: #BFE3FF;
988 988 }
989 989
990 990 #content div.box div.title ul.links li {
991 991 list-style: none;
992 992 float: left;
993 993 margin: 0;
994 994 padding: 0;
995 995 }
996 996
997 997 #content div.box div.title ul.links li a {
998 998 font-size: 13px;
999 999 font-weight: 700;
1000 1000 height: 1%;
1001 1001 margin: 4px;
1002 1002 text-decoration: none;
1003 1003 }
1004 1004
1005 1005 #content div.box h1, #content div.box h2, #content div.box h3, #content div.box h4, #content div.box h5, #content div.box h6,
1006 1006 #content div.box div.h1, #content div.box div.h2, #content div.box div.h3, #content div.box div.h4, #content div.box div.h5, #content div.box div.h6 {
1007 1007 clear: both;
1008 1008 overflow: hidden;
1009 1009 margin: 8px 20px 5px;
1010 1010 }
1011 1011
1012 1012 #content div.box p {
1013 1013 color: #5f5f5f;
1014 1014 font-size: 12px;
1015 1015 line-height: 150%;
1016 1016 margin: 0 24px 10px;
1017 1017 padding: 0;
1018 1018 }
1019 1019
1020 1020 #content div.box blockquote {
1021 1021 border-left: 4px solid #DDD;
1022 1022 color: #5f5f5f;
1023 1023 font-size: 11px;
1024 1024 line-height: 150%;
1025 1025 margin: 0 34px;
1026 1026 padding: 0 0 0 14px;
1027 1027 }
1028 1028
1029 1029 #content div.box blockquote p {
1030 1030 margin: 10px 0;
1031 1031 padding: 0;
1032 1032 }
1033 1033
1034 1034 #content div.box dl {
1035 1035 margin: 10px 0px;
1036 1036 }
1037 1037
1038 1038 #content div.box dt {
1039 1039 font-size: 12px;
1040 1040 margin: 0;
1041 1041 }
1042 1042
1043 1043 #content div.box dd {
1044 1044 font-size: 12px;
1045 1045 margin: 0;
1046 1046 padding: 8px 0 8px 15px;
1047 1047 }
1048 1048
1049 1049 #content div.box li {
1050 1050 font-size: 12px;
1051 1051 padding: 4px 0;
1052 1052 }
1053 1053
1054 1054 #content div.box ul.disc, #content div.box ul.circle {
1055 1055 margin: 10px 24px 10px 38px;
1056 1056 }
1057 1057
1058 1058 #content div.box ul.square {
1059 1059 margin: 10px 24px 10px 40px;
1060 1060 }
1061 1061
1062 1062 #content div.box img.left {
1063 1063 border: none;
1064 1064 float: left;
1065 1065 margin: 10px 10px 10px 0;
1066 1066 }
1067 1067
1068 1068 #content div.box img.right {
1069 1069 border: none;
1070 1070 float: right;
1071 1071 margin: 10px 0 10px 10px;
1072 1072 }
1073 1073
1074 1074 #content div.box div.messages {
1075 1075 clear: both;
1076 1076 overflow: hidden;
1077 1077 margin: 0 20px;
1078 1078 padding: 0;
1079 1079 }
1080 1080
1081 1081 #content div.box div.message {
1082 1082 clear: both;
1083 1083 overflow: hidden;
1084 1084 margin: 0;
1085 1085 padding: 5px 0;
1086 1086 white-space: pre-wrap;
1087 1087 }
1088 1088 #content div.box div.expand {
1089 1089 width: 110%;
1090 1090 height: 14px;
1091 1091 font-size: 10px;
1092 1092 text-align: center;
1093 1093 cursor: pointer;
1094 1094 color: #666;
1095 1095
1096 1096 background: -webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,rgba(255,255,255,0)),color-stop(100%,rgba(64,96,128,0.1)));
1097 1097 background: -webkit-linear-gradient(top,rgba(255,255,255,0),rgba(64,96,128,0.1));
1098 1098 background: -moz-linear-gradient(top,rgba(255,255,255,0),rgba(64,96,128,0.1));
1099 1099 background: -o-linear-gradient(top,rgba(255,255,255,0),rgba(64,96,128,0.1));
1100 1100 background: -ms-linear-gradient(top,rgba(255,255,255,0),rgba(64,96,128,0.1));
1101 1101 background: linear-gradient(to bottom,rgba(255,255,255,0),rgba(64,96,128,0.1));
1102 1102
1103 1103 display: none;
1104 1104 overflow: hidden;
1105 1105 }
1106 1106 #content div.box div.expand .expandtext {
1107 1107 background-color: #ffffff;
1108 1108 padding: 2px;
1109 1109 border-radius: 2px;
1110 1110 }
1111 1111
1112 1112 #content div.box div.message a {
1113 1113 font-weight: 400 !important;
1114 1114 }
1115 1115
1116 1116 #content div.box div.message div.image {
1117 1117 float: left;
1118 1118 margin: 9px 0 0 5px;
1119 1119 padding: 6px;
1120 1120 }
1121 1121
1122 1122 #content div.box div.message div.image img {
1123 1123 vertical-align: middle;
1124 1124 margin: 0;
1125 1125 }
1126 1126
1127 1127 #content div.box div.message div.text {
1128 1128 float: left;
1129 1129 margin: 0;
1130 1130 padding: 9px 6px;
1131 1131 }
1132 1132
1133 1133 #content div.box div.message div.dismiss a {
1134 1134 height: 16px;
1135 1135 width: 16px;
1136 1136 display: block;
1137 1137 background: url("../images/icons/cross.png") no-repeat;
1138 1138 margin: 15px 14px 0 0;
1139 1139 padding: 0;
1140 1140 }
1141 1141
1142 1142 #content div.box div.message div.text h1, #content div.box div.message div.text h2, #content div.box div.message div.text h3, #content div.box div.message div.text h4, #content div.box div.message div.text h5, #content div.box div.message div.text h6 {
1143 1143 border: none;
1144 1144 margin: 0;
1145 1145 padding: 0;
1146 1146 }
1147 1147
1148 1148 #content div.box div.message div.text span {
1149 1149 height: 1%;
1150 1150 display: block;
1151 1151 margin: 0;
1152 1152 padding: 5px 0 0;
1153 1153 }
1154 1154
1155 1155 #content div.box div.message-error {
1156 1156 height: 1%;
1157 1157 clear: both;
1158 1158 overflow: hidden;
1159 1159 background: #FBE3E4;
1160 1160 border: 1px solid #FBC2C4;
1161 1161 color: #860006;
1162 1162 }
1163 1163
1164 1164 #content div.box div.message-error h6 {
1165 1165 color: #860006;
1166 1166 }
1167 1167
1168 1168 #content div.box div.message-warning {
1169 1169 height: 1%;
1170 1170 clear: both;
1171 1171 overflow: hidden;
1172 1172 background: #FFF6BF;
1173 1173 border: 1px solid #FFD324;
1174 1174 color: #5f5200;
1175 1175 }
1176 1176
1177 1177 #content div.box div.message-warning h6 {
1178 1178 color: #5f5200;
1179 1179 }
1180 1180
1181 1181 #content div.box div.message-notice {
1182 1182 height: 1%;
1183 1183 clear: both;
1184 1184 overflow: hidden;
1185 1185 background: #8FBDE0;
1186 1186 border: 1px solid #6BACDE;
1187 1187 color: #003863;
1188 1188 }
1189 1189
1190 1190 #content div.box div.message-notice h6 {
1191 1191 color: #003863;
1192 1192 }
1193 1193
1194 1194 #content div.box div.message-success {
1195 1195 height: 1%;
1196 1196 clear: both;
1197 1197 overflow: hidden;
1198 1198 background: #E6EFC2;
1199 1199 border: 1px solid #C6D880;
1200 1200 color: #4e6100;
1201 1201 }
1202 1202
1203 1203 #content div.box div.message-success h6 {
1204 1204 color: #4e6100;
1205 1205 }
1206 1206
1207 1207 #content div.box div.form div.fields div.field {
1208 1208 height: 1%;
1209 1209 min-height: 12px;
1210 1210 border-bottom: 1px solid #DDD;
1211 1211 clear: both;
1212 1212 margin: 0;
1213 1213 padding: 10px 0;
1214 1214 }
1215 1215
1216 1216 #content div.box div.form div.fields div.field-first {
1217 1217 padding: 0 0 10px;
1218 1218 }
1219 1219
1220 1220 #content div.box div.form div.fields div.field-noborder {
1221 1221 border-bottom: 0 !important;
1222 1222 }
1223 1223
1224 1224 #content div.box div.form div.fields div.field span.error-message {
1225 1225 height: 1%;
1226 1226 display: inline-block;
1227 1227 color: red;
1228 1228 margin: 8px 0 0 4px;
1229 1229 padding: 0;
1230 1230 }
1231 1231
1232 1232 #content div.box div.form div.fields div.field span.success {
1233 1233 height: 1%;
1234 1234 display: block;
1235 1235 color: #316309;
1236 1236 margin: 8px 0 0;
1237 1237 padding: 0;
1238 1238 }
1239 1239
1240 1240 #content div.box div.form div.fields div.field div.label {
1241 1241 left: 70px;
1242 1242 width: 155px;
1243 1243 position: absolute;
1244 1244 margin: 0;
1245 1245 padding: 5px 0 0 0px;
1246 1246 }
1247 1247
1248 1248 #content div.box div.form div.fields div.field div.label-summary {
1249 1249 left: 30px;
1250 1250 width: 155px;
1251 1251 position: absolute;
1252 1252 margin: 0;
1253 1253 padding: 0px 0 0 0px;
1254 1254 }
1255 1255
1256 1256 #content div.box-left div.form div.fields div.field div.label,
1257 1257 #content div.box-right div.form div.fields div.field div.label,
1258 1258 #content div.box-left div.form div.fields div.field div.label,
1259 1259 #content div.box-left div.form div.fields div.field div.label-summary,
1260 1260 #content div.box-right div.form div.fields div.field div.label-summary,
1261 1261 #content div.box-left div.form div.fields div.field div.label-summary {
1262 1262 clear: both;
1263 1263 overflow: hidden;
1264 1264 left: 0;
1265 1265 width: auto;
1266 1266 position: relative;
1267 1267 margin: 0;
1268 1268 padding: 0 0 8px;
1269 1269 }
1270 1270
1271 1271 #content div.box div.form div.fields div.field div.label-select {
1272 1272 padding: 5px 0 0 5px;
1273 1273 }
1274 1274
1275 1275 #content div.box-left div.form div.fields div.field div.label-select,
1276 1276 #content div.box-right div.form div.fields div.field div.label-select {
1277 1277 padding: 0 0 8px;
1278 1278 }
1279 1279
1280 1280 #content div.box-left div.form div.fields div.field div.label-textarea,
1281 1281 #content div.box-right div.form div.fields div.field div.label-textarea {
1282 1282 padding: 0 0 8px !important;
1283 1283 }
1284 1284
1285 1285 #content div.box div.form div.fields div.field div.label label, div.label label {
1286 1286 color: #393939;
1287 1287 font-weight: 700;
1288 1288 }
1289 1289 #content div.box div.form div.fields div.field div.label label, div.label-summary label {
1290 1290 color: #393939;
1291 1291 font-weight: 700;
1292 1292 }
1293 1293 #content div.box div.form div.fields div.field div.input {
1294 1294 margin: 0 0 0 200px;
1295 1295 }
1296 1296
1297 1297 #content div.box div.form div.fields div.field div.input.summary {
1298 1298 margin: 0 0 0 110px;
1299 1299 }
1300 1300 #content div.box div.form div.fields div.field div.input.summary-short {
1301 1301 margin: 0 0 0 110px;
1302 1302 }
1303 1303 #content div.box div.form div.fields div.field div.file {
1304 1304 margin: 0 0 0 200px;
1305 1305 }
1306 1306 #content div.box div.form div.fields div.field div.editor {
1307 1307 margin: 0 0 0 200px;
1308 1308 }
1309 1309
1310 1310 #content div.box-left div.form div.fields div.field div.input, #content div.box-right div.form div.fields div.field div.input {
1311 1311 margin: 0 0 0 0px;
1312 1312 }
1313 1313
1314 1314 #content div.box div.form div.fields div.field div.input input,
1315 1315 .reviewer_ac input {
1316 1316 background: #FFF;
1317 1317 border-top: 1px solid #b3b3b3;
1318 1318 border-left: 1px solid #b3b3b3;
1319 1319 border-right: 1px solid #eaeaea;
1320 1320 border-bottom: 1px solid #eaeaea;
1321 1321 color: #000;
1322 1322 font-size: 12px;
1323 1323 margin: 0;
1324 1324 padding: 7px 7px 6px;
1325 1325 }
1326 1326
1327 1327 #content div.box div.form div.fields div.field div.input input#clone_url,
1328 1328 #content div.box div.form div.fields div.field div.input input#clone_url_id
1329 1329 {
1330 1330 font-size: 16px;
1331 1331 padding: 2px;
1332 1332 }
1333 1333
1334 1334 #content div.box div.form div.fields div.field div.file input {
1335 1335 background: none repeat scroll 0 0 #FFFFFF;
1336 1336 border-color: #B3B3B3 #EAEAEA #EAEAEA #B3B3B3;
1337 1337 border-style: solid;
1338 1338 border-width: 1px;
1339 1339 color: #000000;
1340 1340 font-size: 12px;
1341 1341 margin: 0;
1342 1342 padding: 7px 7px 6px;
1343 1343 }
1344 1344
1345 1345 input.disabled {
1346 1346 background-color: #F5F5F5 !important;
1347 1347 }
1348 1348 #content div.box div.form div.fields div.field div.input input.small {
1349 1349 width: 30%;
1350 1350 }
1351 1351
1352 1352 #content div.box div.form div.fields div.field div.input input.medium {
1353 1353 width: 55%;
1354 1354 }
1355 1355
1356 1356 #content div.box div.form div.fields div.field div.input input.large {
1357 1357 width: 85%;
1358 1358 }
1359 1359
1360 1360 #content div.box div.form div.fields div.field div.input input.date {
1361 1361 width: 177px;
1362 1362 }
1363 1363
1364 1364 #content div.box div.form div.fields div.field div.input input.button {
1365 1365 background: #D4D0C8;
1366 1366 border-top: 1px solid #FFF;
1367 1367 border-left: 1px solid #FFF;
1368 1368 border-right: 1px solid #404040;
1369 1369 border-bottom: 1px solid #404040;
1370 1370 color: #000;
1371 1371 margin: 0;
1372 1372 padding: 4px 8px;
1373 1373 }
1374 1374
1375 1375 #content div.box div.form div.fields div.field div.textarea {
1376 1376 border-top: 1px solid #b3b3b3;
1377 1377 border-left: 1px solid #b3b3b3;
1378 1378 border-right: 1px solid #eaeaea;
1379 1379 border-bottom: 1px solid #eaeaea;
1380 1380 margin: 0 0 0 200px;
1381 1381 padding: 7px 7px 6px;
1382 1382 }
1383 1383
1384 1384 #content div.box div.form div.fields div.field div.textarea-editor {
1385 1385 border: 1px solid #ddd;
1386 1386 padding: 0;
1387 1387 }
1388 1388
1389 1389 #content div.box div.form div.fields div.field div.textarea textarea {
1390 1390 width: 100%;
1391 1391 height: 220px;
1392 1392 overflow: hidden;
1393 1393 background: #FFF;
1394 1394 color: #000;
1395 1395 font-size: 12px;
1396 1396 outline: none;
1397 1397 border-width: 0;
1398 1398 margin: 0;
1399 1399 padding: 0;
1400 1400 }
1401 1401
1402 1402 #content div.box-left div.form div.fields div.field div.textarea textarea, #content div.box-right div.form div.fields div.field div.textarea textarea {
1403 1403 width: 100%;
1404 1404 height: 100px;
1405 1405 }
1406 1406
1407 1407 #content div.box div.form div.fields div.field div.textarea table {
1408 1408 width: 100%;
1409 1409 border: none;
1410 1410 margin: 0;
1411 1411 padding: 0;
1412 1412 }
1413 1413
1414 1414 #content div.box div.form div.fields div.field div.textarea table td {
1415 1415 background: #DDD;
1416 1416 border: none;
1417 1417 padding: 0;
1418 1418 }
1419 1419
1420 1420 #content div.box div.form div.fields div.field div.textarea table td table {
1421 1421 width: auto;
1422 1422 border: none;
1423 1423 margin: 0;
1424 1424 padding: 0;
1425 1425 }
1426 1426
1427 1427 #content div.box div.form div.fields div.field div.textarea table td table td {
1428 1428 font-size: 11px;
1429 1429 padding: 5px 5px 5px 0;
1430 1430 }
1431 1431
1432 1432 #content div.box div.form div.fields div.field input[type=text]:focus,
1433 1433 #content div.box div.form div.fields div.field input[type=password]:focus,
1434 1434 #content div.box div.form div.fields div.field input[type=file]:focus,
1435 1435 #content div.box div.form div.fields div.field textarea:focus,
1436 1436 #content div.box div.form div.fields div.field select:focus,
1437 1437 .reviewer_ac input:focus {
1438 1438 background: #f6f6f6;
1439 1439 border-color: #666;
1440 1440 }
1441 1441
1442 1442 .reviewer_ac {
1443 1443 padding: 10px
1444 1444 }
1445 1445
1446 1446 div.form div.fields div.field div.button {
1447 1447 margin: 0;
1448 1448 padding: 0 0 0 8px;
1449 1449 }
1450 1450 #content div.box table.noborder {
1451 1451 border: 1px solid transparent;
1452 1452 }
1453 1453
1454 1454 #content div.box table {
1455 1455 width: 100%;
1456 1456 border-collapse: separate;
1457 1457 margin: 0;
1458 1458 padding: 0;
1459 1459 border: 1px solid #eee;
1460 1460 -webkit-border-radius: 4px;
1461 1461 border-radius: 4px;
1462 1462 }
1463 1463
1464 1464 #content div.box table th {
1465 1465 background: #eee;
1466 1466 border-bottom: 1px solid #ddd;
1467 1467 padding: 5px 0px 5px 5px;
1468 1468 text-align: left;
1469 1469 }
1470 1470
1471 1471 #content div.box table th.left {
1472 1472 text-align: left;
1473 1473 }
1474 1474
1475 1475 #content div.box table th.right {
1476 1476 text-align: right;
1477 1477 }
1478 1478
1479 1479 #content div.box table th.center {
1480 1480 text-align: center;
1481 1481 }
1482 1482
1483 1483 #content div.box table th.selected {
1484 1484 vertical-align: middle;
1485 1485 padding: 0;
1486 1486 }
1487 1487
1488 1488 #content div.box table td {
1489 1489 background: #fff;
1490 1490 border-bottom: 1px solid #cdcdcd;
1491 1491 vertical-align: middle;
1492 1492 padding: 5px;
1493 1493 }
1494 1494
1495 1495 #content div.box table tr.selected td {
1496 1496 background: #FFC;
1497 1497 }
1498 1498
1499 1499 #content div.box table td.selected {
1500 1500 width: 3%;
1501 1501 text-align: center;
1502 1502 vertical-align: middle;
1503 1503 padding: 0;
1504 1504 }
1505 1505
1506 1506 #content div.box table td.action {
1507 1507 width: 45%;
1508 1508 text-align: left;
1509 1509 }
1510 1510
1511 1511 #content div.box table td.date {
1512 1512 width: 33%;
1513 1513 text-align: center;
1514 1514 }
1515 1515
1516 1516 #content div.box div.action {
1517 1517 float: right;
1518 1518 background: #FFF;
1519 1519 text-align: right;
1520 1520 margin: 10px 0 0;
1521 1521 padding: 0;
1522 1522 }
1523 1523
1524 1524 #content div.box div.action select {
1525 1525 font-size: 11px;
1526 1526 margin: 0;
1527 1527 }
1528 1528
1529 1529 #content div.box div.action .ui-selectmenu {
1530 1530 margin: 0;
1531 1531 padding: 0;
1532 1532 }
1533 1533
1534 1534 #content div.box div.pagination {
1535 1535 height: 1%;
1536 1536 clear: both;
1537 1537 overflow: hidden;
1538 1538 margin: 10px 0 0;
1539 1539 padding: 0;
1540 1540 }
1541 1541
1542 1542 #content div.box div.pagination ul.pager {
1543 1543 float: right;
1544 1544 text-align: right;
1545 1545 margin: 0;
1546 1546 padding: 0;
1547 1547 }
1548 1548
1549 1549 #content div.box div.pagination ul.pager li {
1550 1550 height: 1%;
1551 1551 float: left;
1552 1552 list-style: none;
1553 1553 background: #ebebeb url("../images/pager.png") repeat-x;
1554 1554 border-top: 1px solid #dedede;
1555 1555 border-left: 1px solid #cfcfcf;
1556 1556 border-right: 1px solid #c4c4c4;
1557 1557 border-bottom: 1px solid #c4c4c4;
1558 1558 color: #4A4A4A;
1559 1559 font-weight: 700;
1560 1560 margin: 0 0 0 4px;
1561 1561 padding: 0;
1562 1562 }
1563 1563
1564 1564 #content div.box div.pagination ul.pager li.separator {
1565 1565 padding: 6px;
1566 1566 }
1567 1567
1568 1568 #content div.box div.pagination ul.pager li.current {
1569 1569 background: #b4b4b4 url("../images/pager_selected.png") repeat-x;
1570 1570 border-top: 1px solid #ccc;
1571 1571 border-left: 1px solid #bebebe;
1572 1572 border-right: 1px solid #b1b1b1;
1573 1573 border-bottom: 1px solid #afafaf;
1574 1574 color: #515151;
1575 1575 padding: 6px;
1576 1576 }
1577 1577
1578 1578 #content div.box div.pagination ul.pager li a {
1579 1579 height: 1%;
1580 1580 display: block;
1581 1581 float: left;
1582 1582 color: #515151;
1583 1583 text-decoration: none;
1584 1584 margin: 0;
1585 1585 padding: 6px;
1586 1586 }
1587 1587
1588 1588 #content div.box div.pagination ul.pager li a:hover,
1589 1589 #content div.box div.pagination ul.pager li a:active {
1590 1590 background: #b4b4b4 url("../images/pager_selected.png") repeat-x;
1591 1591 border-top: 1px solid #ccc;
1592 1592 border-left: 1px solid #bebebe;
1593 1593 border-right: 1px solid #b1b1b1;
1594 1594 border-bottom: 1px solid #afafaf;
1595 1595 margin: -1px;
1596 1596 }
1597 1597
1598 1598 #content div.box div.pagination-right {
1599 1599 float: right;
1600 1600 }
1601 1601
1602 1602 #content div.box div.pagination-wh {
1603 1603 height: 1%;
1604 1604 overflow: hidden;
1605 1605 text-align: right;
1606 1606 margin: 10px 0 0;
1607 1607 padding: 0;
1608 1608 }
1609 1609
1610 1610 #content div.box div.pagination-wh > :first-child {
1611 1611 border-radius: 4px 0px 0px 4px;
1612 1612 }
1613 1613
1614 1614 #content div.box div.pagination-wh > :last-child {
1615 1615 border-radius: 0px 4px 4px 0px;
1616 1616 border-right: 1px solid #cfcfcf;
1617 1617 }
1618 1618
1619 1619 #content div.box div.pagination-wh a,
1620 1620 #content div.box div.pagination-wh span.pager_dotdot,
1621 1621 #content div.box div.pagination-wh span.yui-pg-previous,
1622 1622 #content div.box div.pagination-wh span.yui-pg-last,
1623 1623 #content div.box div.pagination-wh span.yui-pg-next,
1624 1624 #content div.box div.pagination-wh span.yui-pg-first {
1625 1625 height: 1%;
1626 1626 float: left;
1627 1627 background: #ebebeb url("../images/pager.png") repeat-x;
1628 1628 border-top: 1px solid #dedede;
1629 1629 border-left: 1px solid #cfcfcf;
1630 1630 border-bottom: 1px solid #c4c4c4;
1631 1631 color: #4A4A4A;
1632 1632 font-weight: 700;
1633 1633 padding: 6px;
1634 1634 }
1635 1635
1636 1636 #content div.box div.pagination-wh span.pager_curpage {
1637 1637 height: 1%;
1638 1638 float: left;
1639 1639 background: #b4b4b4 url("../images/pager_selected.png") repeat-x;
1640 1640 border-top: 1px solid #ccc;
1641 1641 border-left: 1px solid #bebebe;
1642 1642 border-bottom: 1px solid #afafaf;
1643 1643 color: #515151;
1644 1644 font-weight: 700;
1645 1645 padding: 6px;
1646 1646 }
1647 1647
1648 1648 #content div.box div.pagination-wh a:hover, #content div.box div.pagination-wh a:active {
1649 1649 background: #b4b4b4 url("../images/pager_selected.png") repeat-x;
1650 1650 border-top: 1px solid #ccc;
1651 1651 border-left: 1px solid #bebebe;
1652 1652 border-bottom: 1px solid #afafaf;
1653 1653 text-decoration: none;
1654 1654 }
1655 1655
1656 1656 #content div.box div.traffic div.legend {
1657 1657 clear: both;
1658 1658 overflow: hidden;
1659 1659 border-bottom: 1px solid #ddd;
1660 1660 margin: 0 0 10px;
1661 1661 padding: 0 0 10px;
1662 1662 }
1663 1663
1664 1664 #content div.box div.traffic div.legend h6 {
1665 1665 float: left;
1666 1666 border: none;
1667 1667 margin: 0;
1668 1668 padding: 0;
1669 1669 }
1670 1670
1671 1671 #content div.box div.traffic div.legend li {
1672 1672 list-style: none;
1673 1673 float: left;
1674 1674 font-size: 11px;
1675 1675 margin: 0;
1676 1676 padding: 0 8px 0 4px;
1677 1677 }
1678 1678
1679 1679 #content div.box div.traffic div.legend li.visits {
1680 1680 border-left: 12px solid #edc240;
1681 1681 }
1682 1682
1683 1683 #content div.box div.traffic div.legend li.pageviews {
1684 1684 border-left: 12px solid #afd8f8;
1685 1685 }
1686 1686
1687 1687 #content div.box div.traffic table {
1688 1688 width: auto;
1689 1689 }
1690 1690
1691 1691 #content div.box div.traffic table td {
1692 1692 background: transparent;
1693 1693 border: none;
1694 1694 padding: 2px 3px 3px;
1695 1695 }
1696 1696
1697 1697 #content div.box div.traffic table td.legendLabel {
1698 1698 padding: 0 3px 2px;
1699 1699 }
1700 1700
1701 1701 #content div.box #summary {
1702 1702 margin-right: 200px;
1703 1703 min-height: 240px;
1704 1704 }
1705 1705
1706 1706 #summary-menu-stats {
1707 1707 float: left;
1708 1708 width: 180px;
1709 1709 position: absolute;
1710 1710 top: 0;
1711 1711 right: 0;
1712 1712 }
1713 1713
1714 1714 #summary-menu-stats ul {
1715 1715 margin: 0 10px;
1716 1716 display: block;
1717 1717 background-color: #f9f9f9;
1718 1718 border: 1px solid #d1d1d1;
1719 1719 border-radius: 4px;
1720 1720 }
1721 1721
1722 1722 #content #summary-menu-stats li {
1723 1723 border-top: 1px solid #d1d1d1;
1724 1724 padding: 0;
1725 1725 }
1726 1726
1727 1727 #content #summary-menu-stats li:hover {
1728 1728 background: #f0f0f0;
1729 1729 }
1730 1730
1731 1731 #content #summary-menu-stats li:first-child {
1732 1732 border-top: none;
1733 1733 }
1734 1734
1735 1735 #summary-menu-stats a.followers { background-image: url('../images/icons/heart.png')}
1736 1736 #summary-menu-stats a.forks { background-image: url('../images/icons/arrow_divide.png')}
1737 1737 #summary-menu-stats a.settings { background-image: url('../images/icons/cog_edit.png')}
1738 1738 #summary-menu-stats a.feed { background-image: url('../images/icons/rss_16.png')}
1739 1739 #summary-menu-stats a.repo-size { background-image: url('../images/icons/server.png')}
1740 1740
1741 1741 #summary-menu-stats a {
1742 1742 display: block;
1743 1743 padding: 12px 10px;
1744 1744 background-repeat: no-repeat;
1745 1745 background-position: 10px 50%;
1746 1746 padding-right: 10px;
1747 1747 }
1748 1748
1749 1749 #repo_size_2.loaded {
1750 1750 margin-left: 30px;
1751 1751 display: block;
1752 1752 padding-right: 10px;
1753 1753 padding-bottom: 7px;
1754 1754 }
1755 1755
1756 1756 #summary-menu-stats a:hover {
1757 1757 text-decoration: none;
1758 1758 }
1759 1759
1760 1760 #summary-menu-stats a span {
1761 1761 background-color: #DEDEDE;
1762 1762 color: #888 !important;
1763 1763 border-radius: 4px;
1764 1764 padding: 2px 4px;
1765 1765 font-size: 10px;
1766 1766 }
1767 1767
1768 1768 #summary .metatag {
1769 1769 display: inline-block;
1770 1770 padding: 3px 5px;
1771 1771 margin-bottom: 3px;
1772 1772 margin-right: 1px;
1773 1773 border-radius: 5px;
1774 1774 }
1775 1775
1776 1776 #content div.box #summary p {
1777 1777 margin-bottom: -5px;
1778 1778 width: 600px;
1779 1779 white-space: pre-wrap;
1780 1780 }
1781 1781
1782 1782 #content div.box #summary p:last-child {
1783 1783 margin-bottom: 9px;
1784 1784 }
1785 1785
1786 1786 #content div.box #summary p:first-of-type {
1787 1787 margin-top: 9px;
1788 1788 }
1789 1789
1790 1790 .metatag {
1791 1791 display: inline-block;
1792 1792 margin-right: 1px;
1793 1793 -webkit-border-radius: 4px 4px 4px 4px;
1794 1794 -khtml-border-radius: 4px 4px 4px 4px;
1795 1795 border-radius: 4px 4px 4px 4px;
1796 1796
1797 1797 border: solid 1px #9CF;
1798 1798 padding: 2px 3px 2px 3px !important;
1799 1799 background-color: #DEF;
1800 1800 }
1801 1801
1802 1802 .metatag[tag="dead"] {
1803 1803 background-color: #E44;
1804 1804 }
1805 1805
1806 1806 .metatag[tag="stale"] {
1807 1807 background-color: #EA4;
1808 1808 }
1809 1809
1810 1810 .metatag[tag="featured"] {
1811 1811 background-color: #AEA;
1812 1812 }
1813 1813
1814 1814 .metatag[tag="requires"] {
1815 1815 background-color: #9CF;
1816 1816 }
1817 1817
1818 1818 .metatag[tag="recommends"] {
1819 1819 background-color: #BDF;
1820 1820 }
1821 1821
1822 1822 .metatag[tag="lang"] {
1823 1823 background-color: #FAF474;
1824 1824 }
1825 1825
1826 1826 .metatag[tag="license"] {
1827 1827 border: solid 1px #9CF;
1828 1828 background-color: #DEF;
1829 1829 target-new: tab !important;
1830 1830 }
1831 1831 .metatag[tag="see"] {
1832 1832 border: solid 1px #CBD;
1833 1833 background-color: #EDF;
1834 1834 }
1835 1835
1836 1836 a.metatag[tag="license"]:hover {
1837 1837 background-color: #003367;
1838 1838 color: #FFF;
1839 1839 text-decoration: none;
1840 1840 }
1841 1841
1842 1842 #summary .desc {
1843 1843 white-space: pre;
1844 1844 width: 100%;
1845 1845 }
1846 1846
1847 1847 #summary .repo_name {
1848 1848 font-size: 1.6em;
1849 1849 font-weight: bold;
1850 1850 vertical-align: baseline;
1851 1851 clear: right
1852 1852 }
1853 1853
1854 1854 #footer {
1855 1855 clear: both;
1856 1856 overflow: hidden;
1857 1857 text-align: right;
1858 1858 margin: 0;
1859 1859 padding: 0 10px 4px;
1860 1860 margin: -10px 0 0;
1861 1861 }
1862 1862
1863 1863 #footer div#footer-inner {
1864 1864 background-color: #003B76;
1865 1865 background-repeat: repeat-x;
1866 1866 background-image: -khtml-gradient( linear, left top, left bottom, from(#003B76), to(#00376E));
1867 1867 background-image: -moz-linear-gradient(top, #003b76, #00376e);
1868 1868 background-image: -ms-linear-gradient( top, #003b76, #00376e);
1869 1869 background-image: -webkit-gradient( linear, left top, left bottom, color-stop( 0%, #003b76), color-stop( 100%, #00376e));
1870 1870 background-image: -webkit-linear-gradient( top, #003b76, #00376e));
1871 1871 background-image: -o-linear-gradient( top, #003b76, #00376e));
1872 1872 background-image: linear-gradient(to bottom, #003b76, #00376e);
1873 1873 filter: progid : DXImageTransform.Microsoft.gradient ( startColorstr = '#003b76', endColorstr = '#00376e', GradientType = 0);
1874 1874 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
1875 1875 -webkit-border-radius: 4px 4px 4px 4px;
1876 1876 -khtml-border-radius: 4px 4px 4px 4px;
1877 1877 border-radius: 4px 4px 4px 4px;
1878 1878 }
1879 1879
1880 1880 #footer div#footer-inner p {
1881 1881 padding: 15px 25px 15px 0;
1882 1882 color: #FFF;
1883 1883 font-weight: 700;
1884 1884 }
1885 1885
1886 1886 #footer div#footer-inner .footer-link {
1887 1887 float: left;
1888 1888 padding-left: 10px;
1889 1889 }
1890 1890
1891 1891 #footer div#footer-inner .footer-link a, #footer div#footer-inner .footer-link-right a {
1892 1892 color: #FFF;
1893 1893 }
1894 1894
1895 1895 #login div.title {
1896 1896 clear: both;
1897 1897 overflow: hidden;
1898 1898 position: relative;
1899 1899 background-color: #003B76;
1900 1900 background-repeat: repeat-x;
1901 1901 background-image: -khtml-gradient( linear, left top, left bottom, from(#003B76), to(#00376E));
1902 1902 background-image: -moz-linear-gradient( top, #003b76, #00376e);
1903 1903 background-image: -ms-linear-gradient( top, #003b76, #00376e);
1904 1904 background-image: -webkit-gradient( linear, left top, left bottom, color-stop( 0%, #003b76), color-stop( 100%, #00376e));
1905 1905 background-image: -webkit-linear-gradient( top, #003b76, #00376e));
1906 1906 background-image: -o-linear-gradient( top, #003b76, #00376e));
1907 1907 background-image: linear-gradient(to bottom, #003b76, #00376e);
1908 1908 filter: progid : DXImageTransform.Microsoft.gradient ( startColorstr = '#003b76', endColorstr = '#00376e', GradientType = 0);
1909 1909 margin: 0 auto;
1910 1910 padding: 0;
1911 1911 }
1912 1912
1913 1913 #login div.inner {
1914 1914 background: #FFF url("../images/login.png") no-repeat top left;
1915 1915 border-top: none;
1916 1916 border-bottom: none;
1917 1917 margin: 0 auto;
1918 1918 padding: 20px;
1919 1919 }
1920 1920
1921 1921 #login div.form div.fields div.field div.label {
1922 1922 width: 173px;
1923 1923 float: left;
1924 1924 text-align: right;
1925 1925 margin: 2px 10px 0 0;
1926 1926 padding: 5px 0 0 5px;
1927 1927 }
1928 1928
1929 1929 #login div.form div.fields div.field div.input input {
1930 1930 background: #FFF;
1931 1931 border-top: 1px solid #b3b3b3;
1932 1932 border-left: 1px solid #b3b3b3;
1933 1933 border-right: 1px solid #eaeaea;
1934 1934 border-bottom: 1px solid #eaeaea;
1935 1935 color: #000;
1936 1936 font-size: 11px;
1937 1937 margin: 0;
1938 1938 padding: 7px 7px 6px;
1939 1939 }
1940 1940
1941 1941 #login div.form div.fields div.buttons {
1942 1942 clear: both;
1943 1943 overflow: hidden;
1944 1944 border-top: 1px solid #DDD;
1945 1945 text-align: right;
1946 1946 margin: 0;
1947 1947 padding: 10px 0 0;
1948 1948 }
1949 1949
1950 1950 #login div.form div.links {
1951 1951 clear: both;
1952 1952 overflow: hidden;
1953 1953 margin: 10px 0 0;
1954 1954 padding: 0 0 2px;
1955 1955 }
1956 1956
1957 1957 .user-menu {
1958 1958 margin: 0px !important;
1959 1959 float: left;
1960 1960 }
1961 1961
1962 1962 .user-menu .container {
1963 1963 padding: 0px 4px 0px 4px;
1964 1964 margin: 0px 0px 0px 0px;
1965 1965 }
1966 1966
1967 1967 .user-menu .gravatar {
1968 1968 margin: 0px 0px 0px 0px;
1969 1969 cursor: pointer;
1970 1970 }
1971 1971 .user-menu .gravatar.enabled {
1972 1972 background-color: #FDF784 !important;
1973 1973 }
1974 1974 .user-menu .gravatar:hover {
1975 1975 background-color: #FDF784 !important;
1976 1976 }
1977 1977 #quick_login {
1978 1978 min-height: 110px;
1979 1979 padding: 4px;
1980 1980 position: absolute;
1981 1981 right: 0;
1982 1982 background-color: #003B76;
1983 1983 background-repeat: repeat-x;
1984 1984 background-image: -khtml-gradient(linear, left top, left bottom, from(#003B76), to(#00376E) );
1985 1985 background-image: -moz-linear-gradient(top, #003b76, #00376e);
1986 1986 background-image: -ms-linear-gradient(top, #003b76, #00376e);
1987 1987 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76), color-stop(100%, #00376e) );
1988 1988 background-image: -webkit-linear-gradient(top, #003b76, #00376e);
1989 1989 background-image: -o-linear-gradient(top, #003b76, #00376e);
1990 1990 background-image: linear-gradient(to bottom, #003b76, #00376e);
1991 1991 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76', endColorstr='#00376e', GradientType=0 );
1992 1992
1993 1993 z-index: 999;
1994 1994 -webkit-border-radius: 0px 0px 4px 4px;
1995 1995 -khtml-border-radius: 0px 0px 4px 4px;
1996 1996 border-radius: 0px 0px 4px 4px;
1997 1997 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
1998 1998
1999 1999 overflow: hidden;
2000 2000 }
2001 2001 #quick_login h4 {
2002 2002 color: #fff;
2003 2003 padding: 5px 0px 5px 14px;
2004 2004 }
2005 2005
2006 2006 #quick_login .password_forgoten {
2007 2007 padding-right: 0px;
2008 2008 padding-top: 0px;
2009 2009 text-align: left;
2010 2010 }
2011 2011
2012 2012 #quick_login .password_forgoten a {
2013 2013 font-size: 10px;
2014 2014 color: #fff;
2015 2015 padding: 0px !important;
2016 2016 line-height: 20px !important;
2017 2017 }
2018 2018
2019 2019 #quick_login .register {
2020 2020 padding-right: 10px;
2021 2021 padding-top: 5px;
2022 2022 text-align: left;
2023 2023 }
2024 2024
2025 2025 #quick_login .register a {
2026 2026 font-size: 10px;
2027 2027 color: #fff;
2028 2028 padding: 0px !important;
2029 2029 line-height: 20px !important;
2030 2030 }
2031 2031
2032 2032 #quick_login .submit {
2033 2033 margin: -20px 0 0 0px;
2034 2034 position: absolute;
2035 2035 right: 15px;
2036 2036 }
2037 2037
2038 2038 #quick_login .links_left {
2039 2039 float: left;
2040 2040 margin-right: 130px;
2041 2041 width: 170px;
2042 2042 }
2043 2043 #quick_login .links_right {
2044 2044
2045 2045 position: absolute;
2046 2046 right: 0;
2047 2047 }
2048 2048 #quick_login .full_name {
2049 2049 color: #FFFFFF;
2050 2050 font-weight: bold;
2051 2051 padding: 3px 3px 3px 6px;
2052 2052 }
2053 2053 #quick_login .big_gravatar {
2054 2054 padding: 4px 0px 0px 6px;
2055 2055 }
2056 2056 #quick_login .notifications {
2057 2057 padding: 2px 0px 0px 6px;
2058 2058 color: #FFFFFF;
2059 2059 font-weight: bold;
2060 2060 line-height: 10px !important;
2061 2061 }
2062 2062 #quick_login .notifications a,
2063 2063 #quick_login .unread a {
2064 2064 color: #FFFFFF;
2065 2065 display: block;
2066 2066 padding: 0px !important;
2067 2067 }
2068 2068 #quick_login .notifications a:hover,
2069 2069 #quick_login .unread a:hover {
2070 2070 background-color: inherit !important;
2071 2071 }
2072 2072 #quick_login .email, #quick_login .unread {
2073 2073 color: #FFFFFF;
2074 2074 padding: 3px 3px 3px 6px;
2075 2075 }
2076 2076 #quick_login .links .logout {
2077 2077 }
2078 2078
2079 2079 #quick_login div.form div.fields {
2080 2080 padding-top: 2px;
2081 2081 padding-left: 10px;
2082 2082 }
2083 2083
2084 2084 #quick_login div.form div.fields div.field {
2085 2085 padding: 5px;
2086 2086 }
2087 2087
2088 2088 #quick_login div.form div.fields div.field div.label label {
2089 2089 color: #fff;
2090 2090 padding-bottom: 3px;
2091 2091 }
2092 2092
2093 2093 #quick_login div.form div.fields div.field div.input input {
2094 2094 width: 236px;
2095 2095 background: #FFF;
2096 2096 border-top: 1px solid #b3b3b3;
2097 2097 border-left: 1px solid #b3b3b3;
2098 2098 border-right: 1px solid #eaeaea;
2099 2099 border-bottom: 1px solid #eaeaea;
2100 2100 color: #000;
2101 2101 font-size: 11px;
2102 2102 margin: 0;
2103 2103 padding: 5px 7px 4px;
2104 2104 }
2105 2105
2106 2106 #quick_login div.form div.fields div.buttons {
2107 2107 clear: both;
2108 2108 overflow: hidden;
2109 2109 text-align: right;
2110 2110 margin: 0;
2111 2111 padding: 5px 14px 0px 5px;
2112 2112 }
2113 2113
2114 2114 #quick_login div.form div.links {
2115 2115 clear: both;
2116 2116 overflow: hidden;
2117 2117 margin: 10px 0 0;
2118 2118 padding: 0 0 2px;
2119 2119 }
2120 2120
2121 2121 #quick_login ol.links {
2122 2122 display: block;
2123 2123 font-weight: bold;
2124 2124 list-style: none outside none;
2125 2125 text-align: right;
2126 2126 }
2127 2127 #quick_login ol.links li {
2128 2128 line-height: 27px;
2129 2129 margin: 0;
2130 2130 padding: 0;
2131 2131 color: #fff;
2132 2132 display: block;
2133 2133 float: none !important;
2134 2134 }
2135 2135
2136 2136 #quick_login ol.links li a {
2137 2137 color: #fff;
2138 2138 display: block;
2139 2139 padding: 2px;
2140 2140 }
2141 2141 #quick_login ol.links li a:HOVER {
2142 2142 background-color: inherit !important;
2143 2143 }
2144 2144
2145 2145 #register div.title {
2146 2146 clear: both;
2147 2147 overflow: hidden;
2148 2148 position: relative;
2149 2149 background-color: #003B76;
2150 2150 background-repeat: repeat-x;
2151 2151 background-image: -khtml-gradient(linear, left top, left bottom, from(#003B76), to(#00376E) );
2152 2152 background-image: -moz-linear-gradient(top, #003b76, #00376e);
2153 2153 background-image: -ms-linear-gradient(top, #003b76, #00376e);
2154 2154 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #003b76), color-stop(100%, #00376e) );
2155 2155 background-image: -webkit-linear-gradient(top, #003b76, #00376e);
2156 2156 background-image: -o-linear-gradient(top, #003b76, #00376e);
2157 2157 background-image: linear-gradient(to bottom, #003b76, #00376e);
2158 2158 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76',
2159 2159 endColorstr='#00376e', GradientType=0 );
2160 2160 margin: 0 auto;
2161 2161 padding: 0;
2162 2162 }
2163 2163
2164 2164 #register div.inner {
2165 2165 background: #FFF;
2166 2166 border-top: none;
2167 2167 border-bottom: none;
2168 2168 margin: 0 auto;
2169 2169 padding: 20px;
2170 2170 }
2171 2171
2172 2172 #register div.form div.fields div.field div.label {
2173 2173 width: 135px;
2174 2174 float: left;
2175 2175 text-align: right;
2176 2176 margin: 2px 10px 0 0;
2177 2177 padding: 5px 0 0 5px;
2178 2178 }
2179 2179
2180 2180 #register div.form div.fields div.field div.input input {
2181 2181 width: 300px;
2182 2182 background: #FFF;
2183 2183 border-top: 1px solid #b3b3b3;
2184 2184 border-left: 1px solid #b3b3b3;
2185 2185 border-right: 1px solid #eaeaea;
2186 2186 border-bottom: 1px solid #eaeaea;
2187 2187 color: #000;
2188 2188 font-size: 11px;
2189 2189 margin: 0;
2190 2190 padding: 7px 7px 6px;
2191 2191 }
2192 2192
2193 2193 #register div.form div.fields div.buttons {
2194 2194 clear: both;
2195 2195 overflow: hidden;
2196 2196 border-top: 1px solid #DDD;
2197 2197 text-align: left;
2198 2198 margin: 0;
2199 2199 padding: 10px 0 0 150px;
2200 2200 }
2201 2201
2202 2202 #register div.form div.activation_msg {
2203 2203 padding-top: 4px;
2204 2204 padding-bottom: 4px;
2205 2205 }
2206 2206
2207 2207 #journal .journal_day {
2208 2208 font-size: 20px;
2209 2209 padding: 10px 0px;
2210 2210 border-bottom: 2px solid #DDD;
2211 2211 margin-left: 10px;
2212 2212 margin-right: 10px;
2213 2213 }
2214 2214
2215 2215 #journal .journal_container {
2216 2216 padding: 5px;
2217 2217 clear: both;
2218 2218 margin: 0px 5px 0px 10px;
2219 2219 }
2220 2220
2221 2221 #journal .journal_action_container {
2222 2222 padding-left: 38px;
2223 2223 }
2224 2224
2225 2225 #journal .journal_user {
2226 2226 color: #747474;
2227 2227 font-size: 14px;
2228 2228 font-weight: bold;
2229 2229 height: 30px;
2230 2230 }
2231 2231
2232 2232 #journal .journal_user.deleted {
2233 2233 color: #747474;
2234 2234 font-size: 14px;
2235 2235 font-weight: normal;
2236 2236 height: 30px;
2237 2237 font-style: italic;
2238 2238 }
2239 2239
2240 2240
2241 2241 #journal .journal_icon {
2242 2242 clear: both;
2243 2243 float: left;
2244 2244 padding-right: 4px;
2245 2245 padding-top: 3px;
2246 2246 }
2247 2247
2248 2248 #journal .journal_action {
2249 2249 padding-top: 4px;
2250 2250 min-height: 2px;
2251 2251 float: left
2252 2252 }
2253 2253
2254 2254 #journal .journal_action_params {
2255 2255 clear: left;
2256 2256 padding-left: 22px;
2257 2257 }
2258 2258
2259 2259 #journal .journal_repo {
2260 2260 float: left;
2261 2261 margin-left: 6px;
2262 2262 padding-top: 3px;
2263 2263 }
2264 2264
2265 2265 #journal .date {
2266 2266 clear: both;
2267 2267 color: #777777;
2268 2268 font-size: 11px;
2269 2269 padding-left: 22px;
2270 2270 }
2271 2271
2272 2272 #journal .journal_repo .journal_repo_name {
2273 2273 font-weight: bold;
2274 2274 font-size: 1.1em;
2275 2275 }
2276 2276
2277 2277 #journal .compare_view {
2278 2278 padding: 5px 0px 5px 0px;
2279 2279 width: 95px;
2280 2280 }
2281 2281
2282 2282 .journal_highlight {
2283 2283 font-weight: bold;
2284 2284 padding: 0 2px;
2285 2285 vertical-align: bottom;
2286 2286 }
2287 2287
2288 2288 .trending_language_tbl, .trending_language_tbl td {
2289 2289 border: 0 !important;
2290 2290 margin: 0 !important;
2291 2291 padding: 0 !important;
2292 2292 }
2293 2293
2294 2294 .trending_language_tbl, .trending_language_tbl tr {
2295 2295 border-spacing: 1px;
2296 2296 }
2297 2297
2298 2298 .trending_language {
2299 2299 background-color: #003367;
2300 2300 color: #FFF;
2301 2301 display: block;
2302 2302 min-width: 20px;
2303 2303 text-decoration: none;
2304 2304 height: 12px;
2305 2305 margin-bottom: 0px;
2306 2306 margin-left: 5px;
2307 2307 white-space: pre;
2308 2308 padding: 3px;
2309 2309 }
2310 2310
2311 2311 h3.files_location {
2312 2312 font-size: 1.8em;
2313 2313 font-weight: 700;
2314 2314 border-bottom: none !important;
2315 2315 margin: 10px 0 !important;
2316 2316 }
2317 2317
2318 2318 #files_data dl dt {
2319 2319 float: left;
2320 2320 width: 60px;
2321 2321 margin: 0 !important;
2322 2322 padding: 5px;
2323 2323 }
2324 2324
2325 2325 #files_data dl dd {
2326 2326 margin: 0 !important;
2327 2327 padding: 5px !important;
2328 2328 }
2329 2329
2330 2330 #files_data .codeblock #editor_container .error-message {
2331 2331 color: red;
2332 2332 padding: 10px 10px 10px 26px
2333 2333 }
2334 2334
2335 2335 .file_history {
2336 2336 padding-top: 10px;
2337 2337 font-size: 16px;
2338 2338 }
2339 2339 .file_author {
2340 2340 float: left;
2341 2341 }
2342 2342
2343 2343 .file_author .item {
2344 2344 float: left;
2345 2345 padding: 5px;
2346 2346 color: #888;
2347 2347 }
2348 2348
2349 2349 .tablerow0 {
2350 2350 background-color: #F8F8F8;
2351 2351 }
2352 2352
2353 2353 .tablerow1 {
2354 2354 background-color: #FFFFFF;
2355 2355 }
2356 2356
2357 2357 .changeset_id {
2358 2358 color: #666666;
2359 2359 margin-right: -3px;
2360 2360 }
2361 2361
2362 2362 .changeset_hash {
2363 2363 color: #000000;
2364 2364 }
2365 2365
2366 2366 #changeset_content {
2367 2367 border-left: 1px solid #CCC;
2368 2368 border-right: 1px solid #CCC;
2369 2369 border-bottom: 1px solid #CCC;
2370 2370 padding: 5px;
2371 2371 }
2372 2372
2373 2373 #changeset_compare_view_content {
2374 2374 border: 1px solid #CCC;
2375 2375 padding: 5px;
2376 2376 }
2377 2377
2378 2378 #changeset_content .container {
2379 2379 min-height: 100px;
2380 2380 font-size: 1.2em;
2381 2381 overflow: hidden;
2382 2382 }
2383 2383
2384 2384 #changeset_compare_view_content .compare_view_commits {
2385 2385 width: auto !important;
2386 2386 }
2387 2387
2388 2388 #changeset_compare_view_content .compare_view_commits td {
2389 2389 padding: 0px 0px 0px 12px !important;
2390 2390 }
2391 2391
2392 2392 #changeset_content .container .right {
2393 2393 float: right;
2394 2394 width: 20%;
2395 2395 text-align: right;
2396 2396 }
2397 2397
2398 2398 #changeset_content .container .message {
2399 2399 white-space: pre-wrap;
2400 2400 }
2401 2401 #changeset_content .container .message a:hover {
2402 2402 text-decoration: none;
2403 2403 }
2404 2404 .cs_files .cur_cs {
2405 2405 margin: 10px 2px;
2406 2406 font-weight: bold;
2407 2407 }
2408 2408
2409 2409 .cs_files .node {
2410 2410 float: left;
2411 2411 }
2412 2412
2413 2413 .cs_files .changes {
2414 2414 float: right;
2415 2415 color: #003367;
2416 2416 }
2417 2417
2418 2418 .cs_files .changes .added {
2419 2419 background-color: #BBFFBB;
2420 2420 float: left;
2421 2421 text-align: center;
2422 2422 font-size: 9px;
2423 2423 padding: 2px 0px 2px 0px;
2424 2424 }
2425 2425
2426 2426 .cs_files .changes .deleted {
2427 2427 background-color: #FF8888;
2428 2428 float: left;
2429 2429 text-align: center;
2430 2430 font-size: 9px;
2431 2431 padding: 2px 0px 2px 0px;
2432 2432 }
2433 2433 /*new binary
2434 2434 NEW_FILENODE = 1
2435 2435 DEL_FILENODE = 2
2436 2436 MOD_FILENODE = 3
2437 2437 RENAMED_FILENODE = 4
2438 2438 CHMOD_FILENODE = 5
2439 2439 BIN_FILENODE = 6
2440 2440 */
2441 2441 .cs_files .changes .bin {
2442 2442 background-color: #BBFFBB;
2443 2443 float: left;
2444 2444 text-align: center;
2445 2445 font-size: 9px;
2446 2446 padding: 2px 0px 2px 0px;
2447 2447 }
2448 2448 .cs_files .changes .bin.bin1 {
2449 2449 background-color: #BBFFBB;
2450 2450 }
2451 2451
2452 2452 /*deleted binary*/
2453 2453 .cs_files .changes .bin.bin2 {
2454 2454 background-color: #FF8888;
2455 2455 }
2456 2456
2457 2457 /*mod binary*/
2458 2458 .cs_files .changes .bin.bin3 {
2459 2459 background-color: #DDDDDD;
2460 2460 }
2461 2461
2462 2462 /*rename file*/
2463 2463 .cs_files .changes .bin.bin4 {
2464 2464 background-color: #6D99FF;
2465 2465 }
2466 2466
2467 2467 /*rename file*/
2468 2468 .cs_files .changes .bin.bin4 {
2469 2469 background-color: #6D99FF;
2470 2470 }
2471 2471
2472 2472 /*chmod file*/
2473 2473 .cs_files .changes .bin.bin5 {
2474 2474 background-color: #6D99FF;
2475 2475 }
2476 2476
2477 2477 .cs_files .cs_added, .cs_files .cs_A {
2478 2478 background: url("../images/icons/page_white_add.png") no-repeat scroll
2479 2479 3px;
2480 2480 height: 16px;
2481 2481 padding-left: 20px;
2482 2482 margin-top: 7px;
2483 2483 text-align: left;
2484 2484 }
2485 2485
2486 2486 .cs_files .cs_changed, .cs_files .cs_M {
2487 2487 background: url("../images/icons/page_white_edit.png") no-repeat scroll
2488 2488 3px;
2489 2489 height: 16px;
2490 2490 padding-left: 20px;
2491 2491 margin-top: 7px;
2492 2492 text-align: left;
2493 2493 }
2494 2494
2495 2495 .cs_files .cs_removed, .cs_files .cs_D {
2496 2496 background: url("../images/icons/page_white_delete.png") no-repeat
2497 2497 scroll 3px;
2498 2498 height: 16px;
2499 2499 padding-left: 20px;
2500 2500 margin-top: 7px;
2501 2501 text-align: left;
2502 2502 }
2503 2503
2504 2504 .table {
2505 2505 position: relative;
2506 2506 }
2507 2507
2508 2508 #graph {
2509 2509 position: relative;
2510 2510 overflow: hidden;
2511 2511 }
2512 2512
2513 2513 #graph_nodes {
2514 2514 position: absolute;
2515 2515 }
2516 2516
2517 2517 #graph_content,
2518 2518 #graph .info_box,
2519 2519 #graph .container_header {
2520 2520 margin-left: 100px;
2521 2521 }
2522 2522
2523 2523 #graph_content {
2524 2524 position: relative;
2525 2525 }
2526 2526
2527 2527 #graph .container_header {
2528 2528 padding: 10px;
2529 2529 height: 25px;
2530 2530 }
2531 2531
2532 2532 #graph_content #rev_range_container {
2533 2533 float: left;
2534 2534 margin: 0px 0px 0px 3px;
2535 2535 }
2536 2536
2537 2537 #graph_content #rev_range_clear {
2538 2538 float: left;
2539 2539 margin: 0px 0px 0px 3px;
2540 2540 }
2541 2541
2542 2542 #graph_content #changesets {
2543 2543 table-layout: fixed;
2544 2544 border-collapse: collapse;
2545 2545 border-left: none;
2546 2546 border-right: none;
2547 2547 border-color: #cdcdcd;
2548 2548 }
2549 2549
2550 2550 #graph_content #changesets td {
2551 2551 overflow: hidden;
2552 2552 text-overflow: ellipsis;
2553 2553 white-space: nowrap;
2554 2554 height: 31px;
2555 2555 border-color: #cdcdcd;
2556 2556 text-align: left;
2557 2557 }
2558 2558
2559 2559 #graph_content .container .checkbox {
2560 2560 width: 12px;
2561 2561 font-size: 0.85em;
2562 2562 }
2563 2563
2564 2564 #graph_content .container .status {
2565 2565 width: 14px;
2566 2566 font-size: 0.85em;
2567 2567 }
2568 2568
2569 2569 #graph_content .container .author {
2570 2570 width: 105px;
2571 2571 }
2572 2572
2573 2573 #graph_content .container .hash {
2574 2574 width: 100px;
2575 2575 font-size: 0.85em;
2576 2576 }
2577 2577
2578 2578 #graph_content #changesets .container .date {
2579 2579 width: 76px;
2580 2580 color: #666;
2581 2581 font-size: 10px;
2582 2582 }
2583 2583
2584 2584 #graph_content_pr .compare_view_commits .expand_commit,
2585 2585 #graph_content .container .expand_commit {
2586 2586 width: 24px;
2587 2587 cursor: pointer;
2588 2588 }
2589 2589
2590 2590 #graph_content #changesets .container .right {
2591 2591 width: 120px;
2592 2592 padding-right: 0px;
2593 2593 overflow: visible;
2594 2594 position: relative;
2595 2595 }
2596 2596
2597 2597 #graph_content .container .mid {
2598 2598 padding: 0;
2599 2599 }
2600 2600
2601 2601 #graph_content .log-container {
2602 2602 position: relative;
2603 2603 }
2604 2604
2605 2605 #graph_content .container .changeset_range {
2606 2606 float: left;
2607 2607 margin: 6px 3px;
2608 2608 }
2609 2609
2610 2610 #graph_content .container .author img {
2611 2611 vertical-align: middle;
2612 2612 }
2613 2613
2614 2614 #graph_content .container .author .user {
2615 2615 color: #444444;
2616 2616 }
2617 2617
2618 2618 #graph_content .container .mid .message {
2619 2619 white-space: pre-wrap;
2620 2620 padding: 0;
2621 2621 overflow: hidden;
2622 2622 height: 1.1em;
2623 2623 }
2624 2624
2625 2625 #graph_content .container .extra-container {
2626 2626 display: block;
2627 2627 position: absolute;
2628 2628 top: -15px;
2629 2629 right: 0;
2630 2630 padding-left: 5px;
2631 2631 background: #FFFFFF;
2632 2632 height: 41px;
2633 2633 }
2634 2634
2635 2635 #graph_content .comments-container,
2636 2636 #shortlog_data .comments-container,
2637 2637 #graph_content .logtags {
2638 2638 display: block;
2639 2639 float: left;
2640 2640 overflow: hidden;
2641 2641 padding: 0;
2642 2642 margin: 0;
2643 2643 }
2644 2644
2645 2645 #graph_content .comments-container {
2646 2646 margin: 0.8em 0;
2647 2647 margin-right: 0.5em;
2648 2648 }
2649 2649
2650 2650 #graph_content .tagcontainer {
2651 2651 width: 80px;
2652 2652 position: relative;
2653 2653 float: right;
2654 2654 height: 100%;
2655 2655 top: 7px;
2656 2656 margin-left: 0.5em;
2657 2657 }
2658 2658
2659 2659 #graph_content .logtags {
2660 2660 min-width: 80px;
2661 2661 height: 1.1em;
2662 2662 position: absolute;
2663 2663 left: 0px;
2664 2664 width: auto;
2665 2665 top: 0px;
2666 2666 }
2667 2667
2668 2668 #graph_content .logtags.tags {
2669 2669 top: 14px;
2670 2670 }
2671 2671
2672 2672 #graph_content .logtags:hover {
2673 2673 overflow: visible;
2674 2674 position: absolute;
2675 2675 width: auto;
2676 2676 right: 0;
2677 2677 left: initial;
2678 2678 }
2679 2679
2680 2680 #graph_content .logtags .booktag,
2681 2681 #graph_content .logtags .tagtag {
2682 2682 float: left;
2683 2683 line-height: 1em;
2684 2684 margin-bottom: 1px;
2685 2685 margin-right: 1px;
2686 2686 padding: 1px 3px;
2687 2687 font-size: 10px;
2688 2688 }
2689 2689
2690 2690 #graph_content .container .mid .message a:hover {
2691 2691 text-decoration: none;
2692 2692 }
2693 2693
2694 2694 .revision-link {
2695 2695 color: #3F6F9F;
2696 2696 font-weight: bold !important;
2697 2697 }
2698 2698
2699 2699 .issue-tracker-link {
2700 2700 color: #3F6F9F;
2701 2701 font-weight: bold !important;
2702 2702 }
2703 2703
2704 2704 .changeset-status-container {
2705 2705 padding-right: 5px;
2706 2706 margin-top: 1px;
2707 2707 float: right;
2708 2708 height: 14px;
2709 2709 }
2710 2710 .code-header .changeset-status-container {
2711 2711 float: left;
2712 2712 padding: 2px 0px 0px 2px;
2713 2713 }
2714 2714 .changeset-status-container .changeset-status-lbl {
2715 2715 float: left;
2716 2716 padding: 3px 4px 0px 0px
2717 2717 }
2718 2718 .code-header .changeset-status-container .changeset-status-lbl {
2719 2719 float: left;
2720 2720 padding: 0px 4px 0px 0px;
2721 2721 }
2722 2722 .changeset-status-container .changeset-status-ico {
2723 2723 float: left;
2724 2724 }
2725 2725 .code-header .changeset-status-container .changeset-status-ico, .container .changeset-status-ico {
2726 2726 float: left;
2727 2727 }
2728 2728
2729 2729 #graph_content .comments-cnt {
2730 2730 color: rgb(136, 136, 136);
2731 2731 padding: 5px 0;
2732 2732 }
2733 2733
2734 2734 #shortlog_data .comments-cnt {
2735 2735 color: rgb(136, 136, 136);
2736 2736 padding: 3px 0;
2737 2737 }
2738 2738
2739 2739 #graph_content .comments-cnt a,
2740 2740 #shortlog_data .comments-cnt a {
2741 2741 background-image: url('../images/icons/comments.png');
2742 2742 background-repeat: no-repeat;
2743 2743 background-position: 100% 50%;
2744 2744 padding: 5px 0;
2745 2745 padding-right: 20px;
2746 2746 }
2747 2747
2748 2748 .right .changes {
2749 2749 clear: both;
2750 2750 }
2751 2751
2752 2752 .right .changes .changed_total {
2753 2753 display: block;
2754 2754 float: right;
2755 2755 text-align: center;
2756 2756 min-width: 45px;
2757 2757 cursor: pointer;
2758 2758 color: #444444;
2759 2759 background: #FEA;
2760 2760 -webkit-border-radius: 0px 0px 0px 6px;
2761 2761 border-radius: 0px 0px 0px 6px;
2762 2762 padding: 1px;
2763 2763 }
2764 2764
2765 2765 .right .changes .added, .changed, .removed {
2766 2766 display: block;
2767 2767 padding: 1px;
2768 2768 color: #444444;
2769 2769 float: right;
2770 2770 text-align: center;
2771 2771 min-width: 15px;
2772 2772 }
2773 2773
2774 2774 .right .changes .added {
2775 2775 background: #CFC;
2776 2776 }
2777 2777
2778 2778 .right .changes .changed {
2779 2779 background: #FEA;
2780 2780 }
2781 2781
2782 2782 .right .changes .removed {
2783 2783 background: #FAA;
2784 2784 }
2785 2785
2786 2786 .right .merge {
2787 2787 padding: 1px 3px 1px 3px;
2788 2788 background-color: #fca062;
2789 2789 font-size: 10px;
2790 2790 color: #ffffff;
2791 2791 text-transform: uppercase;
2792 2792 white-space: nowrap;
2793 2793 -webkit-border-radius: 3px;
2794 2794 border-radius: 3px;
2795 2795 margin-right: 2px;
2796 2796 }
2797 2797
2798 2798 .right .parent {
2799 2799 color: #666666;
2800 2800 clear: both;
2801 2801 }
2802 2802 .right .logtags {
2803 2803 line-height: 2.2em;
2804 2804 }
2805 2805 .branchtag, .logtags .tagtag, .logtags .booktag {
2806 2806 margin: 0px 2px;
2807 2807 }
2808 2808
2809 2809 .branchtag,
2810 2810 .tagtag,
2811 2811 .booktag,
2812 2812 .spantag {
2813 2813 padding: 1px 3px 1px 3px;
2814 2814 font-size: 10px;
2815 2815 color: #336699;
2816 2816 white-space: nowrap;
2817 2817 -webkit-border-radius: 4px;
2818 2818 border-radius: 4px;
2819 2819 border: 1px solid #d9e8f8;
2820 2820 line-height: 1.5em;
2821 2821 }
2822 2822
2823 2823 #graph_content .branchtag,
2824 2824 #graph_content .tagtag,
2825 2825 #graph_content .booktag {
2826 2826 margin: 1.1em 0;
2827 2827 margin-right: 0.5em;
2828 2828 }
2829 2829
2830 2830 .branchtag,
2831 2831 .tagtag,
2832 2832 .booktag {
2833 2833 float: left;
2834 2834 }
2835 2835
2836 2836 .right .logtags .branchtag,
2837 2837 .right .logtags .tagtag,
2838 2838 .right .logtags .booktag,
2839 2839 .right .merge {
2840 2840 float: right;
2841 2841 line-height: 1em;
2842 2842 margin: 1px 1px !important;
2843 2843 display: block;
2844 2844 }
2845 2845
2846 2846 .booktag {
2847 2847 border-color: #46A546;
2848 2848 color: #46A546;
2849 2849 }
2850 2850
2851 2851 .tagtag {
2852 2852 border-color: #62cffc;
2853 2853 color: #62cffc;
2854 2854 }
2855 2855
2856 2856 .logtags .branchtag a:hover,
2857 2857 .logtags .branchtag a,
2858 2858 .branchtag a,
2859 2859 .branchtag a:hover {
2860 2860 text-decoration: none;
2861 2861 color: inherit;
2862 2862 }
2863 2863 .logtags .tagtag {
2864 2864 padding: 1px 3px 1px 3px;
2865 2865 background-color: #62cffc;
2866 2866 font-size: 10px;
2867 2867 color: #ffffff;
2868 2868 white-space: nowrap;
2869 2869 -webkit-border-radius: 3px;
2870 2870 border-radius: 3px;
2871 2871 }
2872 2872
2873 2873 .tagtag a,
2874 2874 .tagtag a:hover,
2875 2875 .logtags .tagtag a,
2876 2876 .logtags .tagtag a:hover {
2877 2877 text-decoration: none;
2878 2878 color: inherit;
2879 2879 }
2880 2880 .logbooks .booktag, .logbooks .booktag, .logtags .booktag, .logtags .booktag {
2881 2881 padding: 1px 3px 1px 3px;
2882 2882 background-color: #46A546;
2883 2883 font-size: 10px;
2884 2884 color: #ffffff;
2885 2885 white-space: nowrap;
2886 2886 -webkit-border-radius: 3px;
2887 2887 border-radius: 3px;
2888 2888 }
2889 2889 .logbooks .booktag, .logbooks .booktag a, .right .logtags .booktag, .logtags .booktag a {
2890 2890 color: #ffffff;
2891 2891 }
2892 2892
2893 2893 .logbooks .booktag, .logbooks .booktag a:hover,
2894 2894 .logtags .booktag, .logtags .booktag a:hover,
2895 2895 .booktag a,
2896 2896 .booktag a:hover {
2897 2897 text-decoration: none;
2898 2898 color: inherit;
2899 2899 }
2900 2900 div.browserblock {
2901 2901 overflow: hidden;
2902 2902 border: 1px solid #ccc;
2903 2903 background: #f8f8f8;
2904 2904 font-size: 100%;
2905 2905 line-height: 125%;
2906 2906 padding: 0;
2907 2907 -webkit-border-radius: 6px 6px 0px 0px;
2908 2908 border-radius: 6px 6px 0px 0px;
2909 2909 }
2910 2910
2911 2911 div.browserblock .browser-header {
2912 2912 background: #FFF;
2913 2913 padding: 10px 0px 15px 0px;
2914 2914 width: 100%;
2915 2915 }
2916 2916
2917 2917 div.browserblock .browser-nav {
2918 2918 float: left
2919 2919 }
2920 2920
2921 2921 div.browserblock .browser-branch {
2922 2922 float: left;
2923 2923 }
2924 2924
2925 2925 div.browserblock .browser-branch label {
2926 2926 color: #4A4A4A;
2927 2927 vertical-align: text-top;
2928 2928 }
2929 2929
2930 2930 div.browserblock .browser-header span {
2931 2931 margin-left: 5px;
2932 2932 font-weight: 700;
2933 2933 }
2934 2934
2935 2935 div.browserblock .browser-search {
2936 2936 clear: both;
2937 2937 padding: 8px 8px 0px 5px;
2938 2938 height: 20px;
2939 2939 }
2940 2940
2941 2941 div.browserblock #node_filter_box {
2942 2942 }
2943 2943
2944 2944 div.browserblock .search_activate {
2945 2945 float: left
2946 2946 }
2947 2947
2948 2948 div.browserblock .add_node {
2949 2949 float: left;
2950 2950 padding-left: 5px;
2951 2951 }
2952 2952
2953 2953 div.browserblock .search_activate a:hover, div.browserblock .add_node a:hover {
2954 2954 text-decoration: none !important;
2955 2955 }
2956 2956
2957 2957 div.browserblock .browser-body {
2958 2958 background: #EEE;
2959 2959 border-top: 1px solid #CCC;
2960 2960 }
2961 2961
2962 2962 table.code-browser {
2963 2963 border-collapse: collapse;
2964 2964 width: 100%;
2965 2965 }
2966 2966
2967 2967 table.code-browser tr {
2968 2968 margin: 3px;
2969 2969 }
2970 2970
2971 2971 table.code-browser thead th {
2972 2972 background-color: #EEE;
2973 2973 height: 20px;
2974 2974 font-size: 1.1em;
2975 2975 font-weight: 700;
2976 2976 text-align: left;
2977 2977 padding-left: 10px;
2978 2978 }
2979 2979
2980 2980 table.code-browser tbody td {
2981 2981 padding-left: 10px;
2982 2982 height: 20px;
2983 2983 }
2984 2984
2985 2985 table.code-browser .browser-file {
2986 2986 background: url("../images/icons/document_16.png") no-repeat scroll 3px;
2987 2987 height: 16px;
2988 2988 padding-left: 20px;
2989 2989 text-align: left;
2990 2990 }
2991 2991 .diffblock .changeset_header {
2992 2992 height: 16px;
2993 2993 }
2994 2994 .diffblock .changeset_file {
2995 2995 float: left;
2996 2996 }
2997 2997 .diffblock .diff-menu-wrapper {
2998 2998 float: left;
2999 2999 }
3000 3000
3001 3001 .diffblock .diff-menu {
3002 3002 position: absolute;
3003 3003 background: none repeat scroll 0 0 #FFFFFF;
3004 3004 border-color: #003367 #666666 #666666;
3005 3005 border-right: 1px solid #666666;
3006 3006 border-style: solid solid solid;
3007 3007 border-width: 1px;
3008 3008 box-shadow: 2px 8px 4px rgba(0, 0, 0, 0.2);
3009 3009 margin-top: 5px;
3010 3010 margin-left: 1px;
3011 3011
3012 3012 }
3013 3013 .diffblock .diff-actions {
3014 3014 padding: 2px 0px 0px 2px;
3015 3015 float: left;
3016 3016 }
3017 3017 .diffblock .diff-menu ul li {
3018 3018 padding: 0px 0px 0px 0px !important;
3019 3019 }
3020 3020 .diffblock .diff-menu ul li a {
3021 3021 display: block;
3022 3022 padding: 3px 8px 3px 8px !important;
3023 3023 }
3024 3024 .diffblock .diff-menu ul li a:hover {
3025 3025 text-decoration: none;
3026 3026 background-color: #EEEEEE;
3027 3027 }
3028 3028 table.code-browser .browser-dir {
3029 3029 background: url("../images/icons/folder_16.png") no-repeat scroll 3px;
3030 3030 height: 16px;
3031 3031 padding-left: 20px;
3032 3032 text-align: left;
3033 3033 }
3034 3034
3035 3035 table.code-browser .submodule-dir {
3036 3036 background: url("../images/icons/disconnect.png") no-repeat scroll 3px;
3037 3037 height: 16px;
3038 3038 padding-left: 20px;
3039 3039 text-align: left;
3040 3040 }
3041 3041
3042 3042
3043 3043 .box .search {
3044 3044 clear: both;
3045 3045 overflow: hidden;
3046 3046 margin: 0;
3047 3047 padding: 0 20px 10px;
3048 3048 }
3049 3049
3050 3050 .box .search div.search_path {
3051 3051 background: none repeat scroll 0 0 #EEE;
3052 3052 border: 1px solid #CCC;
3053 3053 color: blue;
3054 3054 margin-bottom: 10px;
3055 3055 padding: 10px 0;
3056 3056 }
3057 3057
3058 3058 .box .search div.search_path div.link {
3059 3059 font-weight: 700;
3060 3060 margin-left: 25px;
3061 3061 }
3062 3062
3063 3063 .box .search div.search_path div.link a {
3064 3064 color: #003367;
3065 3065 cursor: pointer;
3066 3066 text-decoration: none;
3067 3067 }
3068 3068
3069 3069 #path_unlock {
3070 3070 color: red;
3071 3071 font-size: 1.2em;
3072 3072 padding-left: 4px;
3073 3073 }
3074 3074
3075 3075 .info_box span {
3076 3076 margin-left: 3px;
3077 3077 margin-right: 3px;
3078 3078 }
3079 3079
3080 3080 .info_box .rev {
3081 3081 color: #003367;
3082 3082 font-size: 1.6em;
3083 3083 font-weight: bold;
3084 3084 vertical-align: sub;
3085 3085 }
3086 3086
3087 3087 .info_box input#at_rev, .info_box input#size {
3088 3088 background: #FFF;
3089 3089 border-top: 1px solid #b3b3b3;
3090 3090 border-left: 1px solid #b3b3b3;
3091 3091 border-right: 1px solid #eaeaea;
3092 3092 border-bottom: 1px solid #eaeaea;
3093 3093 color: #000;
3094 3094 font-size: 12px;
3095 3095 margin: 0;
3096 3096 padding: 1px 5px 1px;
3097 3097 }
3098 3098
3099 3099 .info_box input#view {
3100 3100 text-align: center;
3101 3101 padding: 4px 3px 2px 2px;
3102 3102 }
3103 3103
3104 3104 .info_box_elem {
3105 3105 display: inline-block;
3106 3106 padding: 0 2px;
3107 3107 }
3108 3108
3109 3109 .yui-overlay, .yui-panel-container {
3110 3110 visibility: hidden;
3111 3111 position: absolute;
3112 3112 z-index: 2;
3113 3113 }
3114 3114
3115 3115 #tip-box {
3116 3116 position: absolute;
3117 3117
3118 3118 background-color: #FFF;
3119 3119 border: 2px solid #003367;
3120 3120 font: 100% sans-serif;
3121 3121 width: auto;
3122 3122 opacity: 1;
3123 3123 padding: 8px;
3124 3124
3125 3125 white-space: pre-wrap;
3126 3126 -webkit-border-radius: 8px 8px 8px 8px;
3127 3127 -khtml-border-radius: 8px 8px 8px 8px;
3128 3128 border-radius: 8px 8px 8px 8px;
3129 3129 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
3130 3130 -webkit-box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
3131 3131 z-index: 100000;
3132 3132 }
3133 3133
3134 3134 .hl-tip-box {
3135 visibility: hidden;
3135 z-index: 1;
3136 3136 position: absolute;
3137 3137 color: #666;
3138 3138 background-color: #FFF;
3139 3139 border: 2px solid #003367;
3140 3140 font: 100% sans-serif;
3141 3141 width: auto;
3142 3142 opacity: 1;
3143 3143 padding: 8px;
3144 3144 white-space: pre-wrap;
3145 3145 -webkit-border-radius: 8px 8px 8px 8px;
3146 3146 -khtml-border-radius: 8px 8px 8px 8px;
3147 3147 border-radius: 8px 8px 8px 8px;
3148 3148 box-shadow: 0 2px 2px rgba(0, 0, 0, 0.6);
3149 3149 }
3150 3150
3151 3151
3152 3152 .mentions-container {
3153 3153 width: 90% !important;
3154 3154 }
3155 3155 .mentions-container .yui-ac-content {
3156 3156 width: 100% !important;
3157 3157 }
3158 3158
3159 3159 .ac {
3160 3160 vertical-align: top;
3161 3161 }
3162 3162
3163 3163 .ac .yui-ac {
3164 3164 position: inherit;
3165 3165 font-size: 100%;
3166 3166 }
3167 3167
3168 3168 .ac .perm_ac {
3169 3169 width: 20em;
3170 3170 }
3171 3171
3172 3172 .ac .yui-ac-input {
3173 3173 width: 100%;
3174 3174 }
3175 3175
3176 3176 .ac .yui-ac-container {
3177 3177 position: absolute;
3178 3178 top: 1.6em;
3179 3179 width: auto;
3180 3180 }
3181 3181
3182 3182 .ac .yui-ac-content {
3183 3183 position: absolute;
3184 3184 border: 1px solid gray;
3185 3185 background: #fff;
3186 3186 z-index: 9050;
3187 3187 }
3188 3188
3189 3189 .ac .yui-ac-shadow {
3190 3190 position: absolute;
3191 3191 width: 100%;
3192 3192 background: #000;
3193 3193 opacity: .10;
3194 3194 filter: alpha(opacity = 10);
3195 3195 z-index: 9049;
3196 3196 margin: .3em;
3197 3197 }
3198 3198
3199 3199 .ac .yui-ac-content ul {
3200 3200 width: 100%;
3201 3201 margin: 0;
3202 3202 padding: 0;
3203 3203 z-index: 9050;
3204 3204 }
3205 3205
3206 3206 .ac .yui-ac-content li {
3207 3207 cursor: default;
3208 3208 white-space: nowrap;
3209 3209 margin: 0;
3210 3210 padding: 2px 5px;
3211 3211 height: 18px;
3212 3212 z-index: 9050;
3213 3213 display: block;
3214 3214 width: auto !important;
3215 3215 }
3216 3216
3217 3217 .ac .yui-ac-content li .ac-container-wrap {
3218 3218 width: auto;
3219 3219 }
3220 3220
3221 3221 .ac .yui-ac-content li.yui-ac-prehighlight {
3222 3222 background: #B3D4FF;
3223 3223 z-index: 9050;
3224 3224 }
3225 3225
3226 3226 .ac .yui-ac-content li.yui-ac-highlight {
3227 3227 background: #556CB5;
3228 3228 color: #FFF;
3229 3229 z-index: 9050;
3230 3230 }
3231 3231 .ac .yui-ac-bd {
3232 3232 z-index: 9050;
3233 3233 }
3234 3234
3235 3235 .reposize {
3236 3236 background: url("../images/icons/server.png") no-repeat scroll 3px;
3237 3237 height: 16px;
3238 3238 width: 20px;
3239 3239 cursor: pointer;
3240 3240 display: block;
3241 3241 float: right;
3242 3242 margin-top: 2px;
3243 3243 }
3244 3244
3245 3245 #repo_size {
3246 3246 display: block;
3247 3247 margin-top: 4px;
3248 3248 color: #666;
3249 3249 float: right;
3250 3250 }
3251 3251
3252 3252 .locking_locked {
3253 3253 background: #FFF url("../images/icons/block_16.png") no-repeat scroll 3px;
3254 3254 height: 16px;
3255 3255 width: 20px;
3256 3256 cursor: pointer;
3257 3257 display: block;
3258 3258 float: right;
3259 3259 margin-top: 2px;
3260 3260 }
3261 3261
3262 3262 .locking_unlocked {
3263 3263 background: #FFF url("../images/icons/accept.png") no-repeat scroll 3px;
3264 3264 height: 16px;
3265 3265 width: 20px;
3266 3266 cursor: pointer;
3267 3267 display: block;
3268 3268 float: right;
3269 3269 margin-top: 2px;
3270 3270 }
3271 3271
3272 3272 .currently_following {
3273 3273 padding-left: 10px;
3274 3274 padding-bottom: 5px;
3275 3275 }
3276 3276
3277 3277 .add_icon {
3278 3278 background: url("../images/icons/add.png") no-repeat scroll 3px;
3279 3279 padding-left: 20px;
3280 3280 padding-top: 0px;
3281 3281 text-align: left;
3282 3282 }
3283 3283
3284 3284 .accept_icon {
3285 3285 background: url("../images/icons/accept.png") no-repeat scroll 3px;
3286 3286 padding-left: 20px;
3287 3287 padding-top: 0px;
3288 3288 text-align: left;
3289 3289 }
3290 3290
3291 3291 .edit_icon {
3292 3292 background: url("../images/icons/application_form_edit.png") no-repeat scroll 3px;
3293 3293 padding-left: 20px;
3294 3294 padding-top: 0px;
3295 3295 text-align: left;
3296 3296 }
3297 3297
3298 3298 .delete_icon {
3299 3299 background: url("../images/icons/delete.png") no-repeat scroll 3px;
3300 3300 padding-left: 20px;
3301 3301 padding-top: 0px;
3302 3302 text-align: left;
3303 3303 }
3304 3304
3305 3305 .refresh_icon {
3306 3306 background: url("../images/icons/arrow_refresh.png") no-repeat scroll
3307 3307 3px;
3308 3308 padding-left: 20px;
3309 3309 padding-top: 0px;
3310 3310 text-align: left;
3311 3311 }
3312 3312
3313 3313 .pull_icon {
3314 3314 background: url("../images/icons/connect.png") no-repeat scroll 3px;
3315 3315 padding-left: 20px;
3316 3316 padding-top: 0px;
3317 3317 text-align: left;
3318 3318 }
3319 3319
3320 3320 .rss_icon {
3321 3321 background: url("../images/icons/rss_16.png") no-repeat scroll 3px;
3322 3322 padding-left: 20px;
3323 3323 padding-top: 4px;
3324 3324 text-align: left;
3325 3325 font-size: 8px
3326 3326 }
3327 3327
3328 3328 .atom_icon {
3329 3329 background: url("../images/icons/rss_16.png") no-repeat scroll 3px;
3330 3330 padding-left: 20px;
3331 3331 padding-top: 4px;
3332 3332 text-align: left;
3333 3333 font-size: 8px
3334 3334 }
3335 3335
3336 3336 .archive_icon {
3337 3337 background: url("../images/icons/compress.png") no-repeat scroll 3px;
3338 3338 padding-left: 20px;
3339 3339 text-align: left;
3340 3340 padding-top: 1px;
3341 3341 }
3342 3342
3343 3343 .start_following_icon {
3344 3344 background: url("../images/icons/heart_add.png") no-repeat scroll 3px;
3345 3345 padding-left: 20px;
3346 3346 text-align: left;
3347 3347 padding-top: 0px;
3348 3348 }
3349 3349
3350 3350 .stop_following_icon {
3351 3351 background: url("../images/icons/heart_delete.png") no-repeat scroll 3px;
3352 3352 padding-left: 20px;
3353 3353 text-align: left;
3354 3354 padding-top: 0px;
3355 3355 }
3356 3356
3357 3357 .action_button {
3358 3358 border: 0;
3359 3359 display: inline;
3360 3360 }
3361 3361
3362 3362 .action_button:hover {
3363 3363 border: 0;
3364 3364 text-decoration: underline;
3365 3365 cursor: pointer;
3366 3366 }
3367 3367
3368 3368 #switch_repos {
3369 3369 position: absolute;
3370 3370 height: 25px;
3371 3371 z-index: 1;
3372 3372 }
3373 3373
3374 3374 #switch_repos select {
3375 3375 min-width: 150px;
3376 3376 max-height: 250px;
3377 3377 z-index: 1;
3378 3378 }
3379 3379
3380 3380 .breadcrumbs {
3381 3381 border: medium none;
3382 3382 color: #FFF;
3383 3383 float: left;
3384 3384 font-weight: 700;
3385 3385 font-size: 14px;
3386 3386 margin: 0;
3387 3387 padding: 11px 0 11px 10px;
3388 3388 }
3389 3389
3390 3390 .breadcrumbs .hash {
3391 3391 text-transform: none;
3392 3392 color: #fff;
3393 3393 }
3394 3394
3395 3395 .breadcrumbs a {
3396 3396 color: #FFF;
3397 3397 }
3398 3398
3399 3399 .flash_msg {
3400 3400 }
3401 3401
3402 3402 .flash_msg ul {
3403 3403 }
3404 3404
3405 3405 .error_red {
3406 3406 color: red;
3407 3407 }
3408 3408
3409 3409 .flash_msg .alert-error {
3410 3410 background-color: #c43c35;
3411 3411 background-repeat: repeat-x;
3412 3412 background-image: -khtml-gradient(linear, left top, left bottom, from(#ee5f5b), to(#c43c35) );
3413 3413 background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35);
3414 3414 background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35);
3415 3415 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ee5f5b), color-stop(100%, #c43c35) );
3416 3416 background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35);
3417 3417 background-image: -o-linear-gradient(top, #ee5f5b, #c43c35);
3418 3418 background-image: linear-gradient(to bottom, #ee5f5b, #c43c35);
3419 3419 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b',endColorstr='#c43c35', GradientType=0 );
3420 3420 border-color: #c43c35 #c43c35 #882a25;
3421 3421 }
3422 3422
3423 3423 .flash_msg .alert-error a {
3424 3424 text-decoration: underline;
3425 3425 }
3426 3426
3427 3427 .flash_msg .alert-warning {
3428 3428 color: #404040 !important;
3429 3429 background-color: #eedc94;
3430 3430 background-repeat: repeat-x;
3431 3431 background-image: -khtml-gradient(linear, left top, left bottom, from(#fceec1), to(#eedc94) );
3432 3432 background-image: -moz-linear-gradient(top, #fceec1, #eedc94);
3433 3433 background-image: -ms-linear-gradient(top, #fceec1, #eedc94);
3434 3434 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #fceec1), color-stop(100%, #eedc94) );
3435 3435 background-image: -webkit-linear-gradient(top, #fceec1, #eedc94);
3436 3436 background-image: -o-linear-gradient(top, #fceec1, #eedc94);
3437 3437 background-image: linear-gradient(to bottom, #fceec1, #eedc94);
3438 3438 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fceec1', endColorstr='#eedc94', GradientType=0 );
3439 3439 border-color: #eedc94 #eedc94 #e4c652;
3440 3440 }
3441 3441
3442 3442 .flash_msg .alert-warning a {
3443 3443 text-decoration: underline;
3444 3444 }
3445 3445
3446 3446 .flash_msg .alert-success {
3447 3447 background-color: #57a957;
3448 3448 background-repeat: repeat-x !important;
3449 3449 background-image: -khtml-gradient(linear, left top, left bottom, from(#62c462), to(#57a957) );
3450 3450 background-image: -moz-linear-gradient(top, #62c462, #57a957);
3451 3451 background-image: -ms-linear-gradient(top, #62c462, #57a957);
3452 3452 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #62c462), color-stop(100%, #57a957) );
3453 3453 background-image: -webkit-linear-gradient(top, #62c462, #57a957);
3454 3454 background-image: -o-linear-gradient(top, #62c462, #57a957);
3455 3455 background-image: linear-gradient(to bottom, #62c462, #57a957);
3456 3456 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0 );
3457 3457 border-color: #57a957 #57a957 #3d773d;
3458 3458 }
3459 3459
3460 3460 .flash_msg .alert-success a {
3461 3461 text-decoration: underline;
3462 3462 color: #FFF !important;
3463 3463 }
3464 3464
3465 3465 .flash_msg .alert-info {
3466 3466 background-color: #339bb9;
3467 3467 background-repeat: repeat-x;
3468 3468 background-image: -khtml-gradient(linear, left top, left bottom, from(#5bc0de), to(#339bb9) );
3469 3469 background-image: -moz-linear-gradient(top, #5bc0de, #339bb9);
3470 3470 background-image: -ms-linear-gradient(top, #5bc0de, #339bb9);
3471 3471 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #5bc0de), color-stop(100%, #339bb9) );
3472 3472 background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9);
3473 3473 background-image: -o-linear-gradient(top, #5bc0de, #339bb9);
3474 3474 background-image: linear-gradient(to bottom, #5bc0de, #339bb9);
3475 3475 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0 );
3476 3476 border-color: #339bb9 #339bb9 #22697d;
3477 3477 }
3478 3478
3479 3479 .flash_msg .alert-info a {
3480 3480 text-decoration: underline;
3481 3481 }
3482 3482
3483 3483 .flash_msg .alert-error,
3484 3484 .flash_msg .alert-warning,
3485 3485 .flash_msg .alert-success,
3486 3486 .flash_msg .alert-info {
3487 3487 font-size: 12px;
3488 3488 font-weight: 700;
3489 3489 min-height: 14px;
3490 3490 line-height: 14px;
3491 3491 margin-bottom: 10px;
3492 3492 margin-top: 0;
3493 3493 display: block;
3494 3494 overflow: auto;
3495 3495 padding: 6px 10px 6px 10px;
3496 3496 border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
3497 3497 position: relative;
3498 3498 color: #FFF;
3499 3499 border-width: 1px;
3500 3500 border-style: solid;
3501 3501 -webkit-border-radius: 4px;
3502 3502 border-radius: 4px;
3503 3503 -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
3504 3504 box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
3505 3505 }
3506 3506
3507 3507 #msg_close {
3508 3508 background: transparent url("../images/cross_grey_small.png") no-repeat scroll 0 0;
3509 3509 cursor: pointer;
3510 3510 height: 16px;
3511 3511 position: absolute;
3512 3512 right: 5px;
3513 3513 top: 5px;
3514 3514 width: 16px;
3515 3515 }
3516 3516 div#legend_data {
3517 3517 padding-left: 10px;
3518 3518 }
3519 3519 div#legend_container table {
3520 3520 border: none !important;
3521 3521 }
3522 3522 div#legend_container table, div#legend_choices table {
3523 3523 width: auto !important;
3524 3524 }
3525 3525
3526 3526 table#permissions_manage {
3527 3527 width: 0 !important;
3528 3528 }
3529 3529
3530 3530 table#permissions_manage span.private_repo_msg {
3531 3531 font-size: 0.8em;
3532 3532 opacity: 0.6;
3533 3533 }
3534 3534
3535 3535 table#permissions_manage td.private_repo_msg {
3536 3536 font-size: 0.8em;
3537 3537 }
3538 3538
3539 3539 table#permissions_manage tr#add_perm_input td {
3540 3540 vertical-align: middle;
3541 3541 }
3542 3542
3543 3543 div.gravatar {
3544 3544 background-color: #FFF;
3545 3545 float: left;
3546 3546 margin-right: 0.7em;
3547 3547 padding: 1px 1px 1px 1px;
3548 3548 line-height: 0;
3549 3549 -webkit-border-radius: 3px;
3550 3550 -khtml-border-radius: 3px;
3551 3551 border-radius: 3px;
3552 3552 }
3553 3553
3554 3554 div.gravatar img {
3555 3555 -webkit-border-radius: 2px;
3556 3556 -khtml-border-radius: 2px;
3557 3557 border-radius: 2px;
3558 3558 }
3559 3559
3560 3560 #header, #content, #footer {
3561 3561 min-width: 978px;
3562 3562 }
3563 3563
3564 3564 #content {
3565 3565 clear: both;
3566 3566 padding: 10px 10px 14px 10px;
3567 3567 }
3568 3568
3569 3569 #content.hover {
3570 3570 padding: 55px 10px 14px 10px !important;
3571 3571 }
3572 3572
3573 3573 #content div.box div.title div.search {
3574 3574 border-left: 1px solid #316293;
3575 3575 }
3576 3576
3577 3577 #content div.box div.title div.search div.input input {
3578 3578 border: 1px solid #316293;
3579 3579 }
3580 3580
3581 3581 .btn {
3582 3582 color: #515151;
3583 3583 background-color: #DADADA;
3584 3584 background-repeat: repeat-x;
3585 3585 background-image: -khtml-gradient(linear, left top, left bottom, from(#F4F4F4),to(#DADADA) );
3586 3586 background-image: -moz-linear-gradient(top, #F4F4F4, #DADADA);
3587 3587 background-image: -ms-linear-gradient(top, #F4F4F4, #DADADA);
3588 3588 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #F4F4F4),color-stop(100%, #DADADA) );
3589 3589 background-image: -webkit-linear-gradient(top, #F4F4F4, #DADADA) );
3590 3590 background-image: -o-linear-gradient(top, #F4F4F4, #DADADA) );
3591 3591 background-image: linear-gradient(to bottom, #F4F4F4, #DADADA);
3592 3592 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#F4F4F4', endColorstr='#DADADA', GradientType=0);
3593 3593
3594 3594 border-top: 1px solid #DDD;
3595 3595 border-left: 1px solid #c6c6c6;
3596 3596 border-right: 1px solid #DDD;
3597 3597 border-bottom: 1px solid #c6c6c6;
3598 3598 color: #515151;
3599 3599 outline: none;
3600 3600 margin: 0px 3px 3px 0px;
3601 3601 -webkit-border-radius: 4px 4px 4px 4px !important;
3602 3602 -khtml-border-radius: 4px 4px 4px 4px !important;
3603 3603 border-radius: 4px 4px 4px 4px !important;
3604 3604 cursor: pointer !important;
3605 3605 padding: 3px 3px 3px 3px;
3606 3606 background-position: 0 -100px;
3607 3607 display: inline-block;
3608 3608 }
3609 3609
3610 3610 ul.nav-stacked {
3611 3611 margin: 20px;
3612 3612 color: #393939;
3613 3613 font-weight: 700;
3614 3614 }
3615 3615
3616 3616 ul.nav-stacked a {
3617 3617 color: inherit;
3618 3618 }
3619 3619
3620 3620 /* make .btn inputs and buttons and divs look the same */
3621 3621 button.btn,
3622 3622 input.btn {
3623 3623 font-family: inherit;
3624 3624 font-size: inherit;
3625 3625 line-height: inherit;
3626 3626 }
3627 3627
3628 3628 .btn::-moz-focus-inner {
3629 3629 border: 0;
3630 3630 padding: 0;
3631 3631 }
3632 3632
3633 3633 .btn.badge {
3634 3634 cursor: default !important;
3635 3635 }
3636 3636
3637 3637 .btn.disabled {
3638 3638 color: #999;
3639 3639 }
3640 3640
3641 3641 .btn.btn-danger.disabled {
3642 3642 color: #eee;
3643 3643 background-color: #c77;
3644 3644 border-color: #b66
3645 3645 }
3646 3646
3647 3647 .btn.btn-small {
3648 3648 padding: 2px 6px;
3649 3649 }
3650 3650
3651 3651 .btn.btn-mini {
3652 3652 padding: 0px 4px;
3653 3653 }
3654 3654
3655 3655 .btn.clone {
3656 3656 padding: 5px 2px 6px 1px;
3657 3657 margin: 0px 0px 3px -4px;
3658 3658 -webkit-border-radius: 0px 4px 4px 0px !important;
3659 3659 -khtml-border-radius: 0px 4px 4px 0px !important;
3660 3660 border-radius: 0px 4px 4px 0px !important;
3661 3661 width: 100px;
3662 3662 text-align: center;
3663 3663 display: inline-block;
3664 3664 position: relative;
3665 3665 top: -2px;
3666 3666 }
3667 3667 .btn:focus {
3668 3668 outline: none;
3669 3669 }
3670 3670 .btn:hover {
3671 3671 background-position: 0 -100px;
3672 3672 text-decoration: none;
3673 3673 color: #515151;
3674 3674 box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25), 0 0 3px #FFFFFF !important;
3675 3675 }
3676 3676 .btn.badge:hover {
3677 3677 box-shadow: none !important;
3678 3678 }
3679 3679 .btn.disabled:hover {
3680 3680 background-position: 0;
3681 3681 color: #999;
3682 3682 text-decoration: none;
3683 3683 box-shadow: none !important;
3684 3684 }
3685 3685
3686 3686 .btn.red {
3687 3687 color: #fff;
3688 3688 background-color: #c43c35;
3689 3689 background-repeat: repeat-x;
3690 3690 background-image: -khtml-gradient(linear, left top, left bottom, from(#ee5f5b), to(#c43c35));
3691 3691 background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35);
3692 3692 background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35);
3693 3693 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ee5f5b), color-stop(100%, #c43c35));
3694 3694 background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35);
3695 3695 background-image: -o-linear-gradient(top, #ee5f5b, #c43c35);
3696 3696 background-image: linear-gradient(to bottom, #ee5f5b, #c43c35);
3697 3697 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0);
3698 3698 border-color: #c43c35 #c43c35 #882a25;
3699 3699 border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
3700 3700 }
3701 3701
3702 3702
3703 3703 .btn.blue {
3704 3704 color: #fff;
3705 3705 background-color: #339bb9;
3706 3706 background-repeat: repeat-x;
3707 3707 background-image: -khtml-gradient(linear, left top, left bottom, from(#5bc0de), to(#339bb9));
3708 3708 background-image: -moz-linear-gradient(top, #5bc0de, #339bb9);
3709 3709 background-image: -ms-linear-gradient(top, #5bc0de, #339bb9);
3710 3710 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #5bc0de), color-stop(100%, #339bb9));
3711 3711 background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9);
3712 3712 background-image: -o-linear-gradient(top, #5bc0de, #339bb9);
3713 3713 background-image: linear-gradient(to bottom, #5bc0de, #339bb9);
3714 3714 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0);
3715 3715 border-color: #339bb9 #339bb9 #22697d;
3716 3716 border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
3717 3717 }
3718 3718
3719 3719 .btn.green {
3720 3720 color: #fff;
3721 3721 background-color: #57a957;
3722 3722 background-repeat: repeat-x;
3723 3723 background-image: -khtml-gradient(linear, left top, left bottom, from(#62c462), to(#57a957));
3724 3724 background-image: -moz-linear-gradient(top, #62c462, #57a957);
3725 3725 background-image: -ms-linear-gradient(top, #62c462, #57a957);
3726 3726 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #62c462), color-stop(100%, #57a957));
3727 3727 background-image: -webkit-linear-gradient(top, #62c462, #57a957);
3728 3728 background-image: -o-linear-gradient(top, #62c462, #57a957);
3729 3729 background-image: linear-gradient(to bottom, #62c462, #57a957);
3730 3730 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0);
3731 3731 border-color: #57a957 #57a957 #3d773d;
3732 3732 border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
3733 3733 }
3734 3734
3735 3735 .btn.yellow {
3736 3736 color: #fff;
3737 3737 background-color: #faa732;
3738 3738 background-repeat: repeat-x;
3739 3739 background-image: -khtml-gradient(linear, left top, left bottom, from(#fbb450), to(#f89406));
3740 3740 background-image: -moz-linear-gradient(top, #fbb450, #f89406);
3741 3741 background-image: -ms-linear-gradient(top, #fbb450, #f89406);
3742 3742 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #fbb450), color-stop(100%, #f89406));
3743 3743 background-image: -webkit-linear-gradient(top, #fbb450, #f89406);
3744 3744 background-image: -o-linear-gradient(top, #fbb450, #f89406);
3745 3745 background-image: linear-gradient(to bottom, #fbb450, #f89406);
3746 3746 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0);
3747 3747 border-color: #f89406 #f89406 #ad6704;
3748 3748 border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
3749 3749 }
3750 3750
3751 3751 label.disabled {
3752 3752 color: #aaa;
3753 3753 }
3754 3754
3755 3755 .btn.blue.hidden {
3756 3756 display: none;
3757 3757 }
3758 3758
3759 3759 .btn.active {
3760 3760 font-weight: bold;
3761 3761 }
3762 3762
3763 3763 ins, div.options a:hover {
3764 3764 text-decoration: none;
3765 3765 }
3766 3766
3767 3767 img,
3768 3768 #header #header-inner #quick li a:hover span.normal,
3769 3769 #content div.box div.form div.fields div.field div.textarea table td table td a,
3770 3770 #clone_url,
3771 3771 #clone_url_id
3772 3772 {
3773 3773 border: none;
3774 3774 }
3775 3775
3776 3776 img.icon, .right .merge img {
3777 3777 vertical-align: bottom;
3778 3778 }
3779 3779
3780 3780 #header ul#logged-user, #content div.box div.title ul.links,
3781 3781 #content div.box div.message div.dismiss,
3782 3782 #content div.box div.traffic div.legend ul {
3783 3783 float: right;
3784 3784 margin: 0;
3785 3785 padding: 0;
3786 3786 }
3787 3787
3788 3788 #header #header-inner #home, #header #header-inner #logo,
3789 3789 #content div.box ul.left, #content div.box ol.left,
3790 3790 div#commit_history,
3791 3791 div#legend_data, div#legend_container, div#legend_choices {
3792 3792 float: left;
3793 3793 }
3794 3794
3795 3795 #header #header-inner #quick li #quick_login,
3796 3796 #header #header-inner #quick li:hover ul ul,
3797 3797 #header #header-inner #quick li:hover ul ul ul,
3798 3798 #header #header-inner #quick li:hover ul ul ul ul,
3799 3799 #content #left #menu ul.closed, #content #left #menu li ul.collapsed, .yui-tt-shadow {
3800 3800 display: none;
3801 3801 }
3802 3802
3803 3803 #header #header-inner #quick li:hover #quick_login,
3804 3804 #header #header-inner #quick li:hover ul, #header #header-inner #quick li li:hover ul, #header #header-inner #quick li li li:hover ul, #header #header-inner #quick li li li li:hover ul, #content #left #menu ul.opened, #content #left #menu li ul.expanded {
3805 3805 display: block;
3806 3806 }
3807 3807
3808 3808 .repo-switcher .select2-choice {
3809 3809 padding: 0px 8px 1px !important;
3810 3810 display: block;
3811 3811 height: 100%;
3812 3812 }
3813 3813
3814 3814 .repo-switcher .select2-container,
3815 3815 .repo-switcher .select2-choice,
3816 3816 .repo-switcher .select2-choice span {
3817 3817 background: transparent !important;
3818 3818 border: 0 !important;
3819 3819 box-shadow: none !important;
3820 3820 color: #FFFFFF !important;
3821 3821 }
3822 3822
3823 3823 .repo-switcher .select2-arrow {
3824 3824 display: none !important;
3825 3825 }
3826 3826
3827 3827 .repo-switcher .select2-chosen:after {
3828 3828 content: ' \25BE';
3829 3829 }
3830 3830
3831 3831 .repo-switcher-dropdown.select2-drop.select2-drop-active {
3832 3832 xborder-color: black;
3833 3833 -webkit-box-shadow: none;
3834 3834 -moz-box-shadow: none;
3835 3835 box-shadow: none;
3836 3836 color: #fff;
3837 3837 background-color: #316293;
3838 3838 }
3839 3839
3840 3840 .repo-switcher-dropdown.select2-drop.select2-drop-active .select2-results .select2-highlighted {
3841 3841 background-color: #6388ad;
3842 3842 }
3843 3843
3844 3844 #content div.graph {
3845 3845 padding: 0 10px 10px;
3846 3846 }
3847 3847
3848 3848 #content div.box div.title ul.links li a:hover,
3849 3849 #content div.box div.title ul.links li.ui-tabs-selected a {
3850 3850
3851 3851 background: #6388ad; /* Old browsers */
3852 3852 background: -moz-linear-gradient(top, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0.1) 100%); /* FF3.6+ */
3853 3853 background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(255,255,255,0.1)), color-stop(100%,rgba(255,255,255,0))); /* Chrome,Safari4+ */
3854 3854 background: -webkit-linear-gradient(top, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0.1) 100%); /* Chrome10+,Safari5.1+ */
3855 3855 background: -o-linear-gradient(top, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0.1) 100%); /* Opera 11.10+ */
3856 3856 background: -ms-linear-gradient(top, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0.1) 100%); /* IE10+ */
3857 3857 background: linear-gradient(to bottom, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0.1) 100%); /* W3C */
3858 3858 /*filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#88bfe8', endColorstr='#70b0e0',GradientType=0 ); /* IE6-9 */
3859 3859 }
3860 3860
3861 3861 #content div.box ol.lower-roman, #content div.box ol.upper-roman, #content div.box ol.lower-alpha, #content div.box ol.upper-alpha, #content div.box ol.decimal {
3862 3862 margin: 10px 24px 10px 44px;
3863 3863 }
3864 3864
3865 3865 #content div.box div.form, #content div.box div.table, #content div.box div.traffic {
3866 3866 position: relative;
3867 3867 clear: both;
3868 3868 margin: 0;
3869 3869 padding: 0 20px 10px;
3870 3870 }
3871 3871
3872 3872 #content div.box div.form div.fields, #login div.form, #login div.form div.fields, #register div.form, #register div.form div.fields {
3873 3873 clear: both;
3874 3874 overflow: hidden;
3875 3875 margin: 0;
3876 3876 padding: 0;
3877 3877 }
3878 3878
3879 3879 #content div.box div.form div.fields div.field div.label span, #login div.form div.fields div.field div.label span, #register div.form div.fields div.field div.label span {
3880 3880 height: 1%;
3881 3881 display: block;
3882 3882 color: #363636;
3883 3883 margin: 0;
3884 3884 padding: 2px 0 0;
3885 3885 }
3886 3886
3887 3887 #content div.box div.form div.fields div.field div.input input.error, #login div.form div.fields div.field div.input input.error, #register div.form div.fields div.field div.input input.error {
3888 3888 background: #FBE3E4;
3889 3889 border-top: 1px solid #e1b2b3;
3890 3890 border-left: 1px solid #e1b2b3;
3891 3891 border-right: 1px solid #FBC2C4;
3892 3892 border-bottom: 1px solid #FBC2C4;
3893 3893 }
3894 3894
3895 3895 #content div.box div.form div.fields div.field div.input input.success, #login div.form div.fields div.field div.input input.success, #register div.form div.fields div.field div.input input.success {
3896 3896 background: #E6EFC2;
3897 3897 border-top: 1px solid #cebb98;
3898 3898 border-left: 1px solid #cebb98;
3899 3899 border-right: 1px solid #c6d880;
3900 3900 border-bottom: 1px solid #c6d880;
3901 3901 }
3902 3902
3903 3903 #content div.box-left div.form div.fields div.field div.textarea, #content div.box-right div.form div.fields div.field div.textarea, #content div.box div.form div.fields div.field div.select select, #content div.box table th.selected input, #content div.box table td.selected input {
3904 3904 margin: 0;
3905 3905 }
3906 3906
3907 3907 #content div.box-left div.form div.fields div.field div.select, #content div.box-left div.form div.fields div.field div.checkboxes, #content div.box-left div.form div.fields div.field div.radios, #content div.box-right div.form div.fields div.field div.select, #content div.box-right div.form div.fields div.field div.checkboxes, #content div.box-right div.form div.fields div.field div.radios {
3908 3908 margin: 0 0 0 0px !important;
3909 3909 padding: 0;
3910 3910 }
3911 3911
3912 3912 #content div.box div.form div.fields div.field div.select, #content div.box div.form div.fields div.field div.checkboxes, #content div.box div.form div.fields div.field div.radios {
3913 3913 margin: 0 0 0 200px;
3914 3914 padding: 0;
3915 3915 }
3916 3916
3917 3917 #content div.box div.form div.fields div.field div.select a:hover, #content div.box div.form div.fields div.field div.select a.ui-selectmenu:hover, #content div.box div.action a:hover {
3918 3918 color: #000;
3919 3919 text-decoration: none;
3920 3920 }
3921 3921
3922 3922 #content div.box div.form div.fields div.field div.select a.ui-selectmenu-focus, #content div.box div.action a.ui-selectmenu-focus {
3923 3923 border: 1px solid #666;
3924 3924 }
3925 3925
3926 3926 #content div.box div.form div.fields div.field div.checkboxes div.checkbox, #content div.box div.form div.fields div.field div.radios div.radio {
3927 3927 clear: both;
3928 3928 overflow: hidden;
3929 3929 margin: 0;
3930 3930 padding: 8px 0 2px;
3931 3931 }
3932 3932
3933 3933 #content div.box div.form div.fields div.field div.checkboxes div.checkbox input, #content div.box div.form div.fields div.field div.radios div.radio input {
3934 3934 float: left;
3935 3935 margin: 0;
3936 3936 }
3937 3937
3938 3938 #content div.box div.form div.fields div.field div.checkboxes div.checkbox label, #content div.box div.form div.fields div.field div.radios div.radio label {
3939 3939 height: 1%;
3940 3940 display: block;
3941 3941 float: left;
3942 3942 margin: 2px 0 0 4px;
3943 3943 }
3944 3944
3945 3945 div.form div.fields div.field div.button input,
3946 3946 #content div.box div.form div.fields div.buttons input
3947 3947 div.form div.fields div.buttons input,
3948 3948 #content div.box div.action div.button input {
3949 3949 font-size: 11px;
3950 3950 font-weight: 700;
3951 3951 margin: 0;
3952 3952 }
3953 3953
3954 3954 input.ui-button {
3955 3955 background: #e5e3e3 url("../images/button.png") repeat-x;
3956 3956 border-top: 1px solid #DDD;
3957 3957 border-left: 1px solid #c6c6c6;
3958 3958 border-right: 1px solid #DDD;
3959 3959 border-bottom: 1px solid #c6c6c6;
3960 3960 color: #515151 !important;
3961 3961 outline: none;
3962 3962 margin: 0;
3963 3963 padding: 6px 12px;
3964 3964 -webkit-border-radius: 4px 4px 4px 4px;
3965 3965 -khtml-border-radius: 4px 4px 4px 4px;
3966 3966 border-radius: 4px 4px 4px 4px;
3967 3967 box-shadow: 0 1px 0 #ececec;
3968 3968 cursor: pointer;
3969 3969 }
3970 3970
3971 3971 input.ui-button:hover {
3972 3972 background: #b4b4b4 url("../images/button_selected.png") repeat-x;
3973 3973 border-top: 1px solid #ccc;
3974 3974 border-left: 1px solid #bebebe;
3975 3975 border-right: 1px solid #b1b1b1;
3976 3976 border-bottom: 1px solid #afafaf;
3977 3977 }
3978 3978
3979 3979 div.form div.fields div.field div.highlight, #content div.box div.form div.fields div.buttons div.highlight {
3980 3980 display: inline;
3981 3981 }
3982 3982
3983 3983 #content div.box div.form div.fields div.buttons, div.form div.fields div.buttons {
3984 3984 margin: 10px 0 0 200px;
3985 3985 padding: 0;
3986 3986 }
3987 3987
3988 3988 #content div.box-left div.form div.fields div.buttons, #content div.box-right div.form div.fields div.buttons, div.box-left div.form div.fields div.buttons, div.box-right div.form div.fields div.buttons {
3989 3989 margin: 10px 0 0;
3990 3990 }
3991 3991
3992 3992 #content div.box table td.user, #content div.box table td.address {
3993 3993 width: 10%;
3994 3994 text-align: center;
3995 3995 }
3996 3996
3997 3997 #content div.box div.action div.button, #login div.form div.fields div.field div.input div.link, #register div.form div.fields div.field div.input div.link {
3998 3998 text-align: right;
3999 3999 margin: 6px 0 0;
4000 4000 padding: 0;
4001 4001 }
4002 4002
4003 4003 #content div.box div.action div.button input.ui-state-hover, #login div.form div.fields div.buttons input.ui-state-hover, #register div.form div.fields div.buttons input.ui-state-hover {
4004 4004 background: #b4b4b4 url("../images/button_selected.png") repeat-x;
4005 4005 border-top: 1px solid #ccc;
4006 4006 border-left: 1px solid #bebebe;
4007 4007 border-right: 1px solid #b1b1b1;
4008 4008 border-bottom: 1px solid #afafaf;
4009 4009 color: #515151;
4010 4010 margin: 0;
4011 4011 padding: 6px 12px;
4012 4012 }
4013 4013
4014 4014 #content div.box div.pagination div.results, #content div.box div.pagination-wh div.results {
4015 4015 text-align: left;
4016 4016 float: left;
4017 4017 margin: 0;
4018 4018 padding: 0;
4019 4019 }
4020 4020
4021 4021 #content div.box div.pagination div.results span, #content div.box div.pagination-wh div.results span {
4022 4022 height: 1%;
4023 4023 display: block;
4024 4024 float: left;
4025 4025 background: #ebebeb url("../images/pager.png") repeat-x;
4026 4026 border-top: 1px solid #dedede;
4027 4027 border-left: 1px solid #cfcfcf;
4028 4028 border-right: 1px solid #c4c4c4;
4029 4029 border-bottom: 1px solid #c4c4c4;
4030 4030 color: #4A4A4A;
4031 4031 font-weight: 700;
4032 4032 margin: 0;
4033 4033 padding: 6px 8px;
4034 4034 }
4035 4035
4036 4036 #content div.box div.pagination ul.pager li.disabled, #content div.box div.pagination-wh a.disabled {
4037 4037 color: #B4B4B4;
4038 4038 padding: 6px;
4039 4039 }
4040 4040
4041 4041 #login, #register {
4042 4042 width: 520px;
4043 4043 margin: 10% auto 0;
4044 4044 padding: 0;
4045 4045 }
4046 4046
4047 4047 #login div.color, #register div.color {
4048 4048 clear: both;
4049 4049 overflow: hidden;
4050 4050 background: #FFF;
4051 4051 margin: 10px auto 0;
4052 4052 padding: 3px 3px 3px 0;
4053 4053 }
4054 4054
4055 4055 #login div.color a, #register div.color a {
4056 4056 width: 20px;
4057 4057 height: 20px;
4058 4058 display: block;
4059 4059 float: left;
4060 4060 margin: 0 0 0 3px;
4061 4061 padding: 0;
4062 4062 }
4063 4063
4064 4064 #login div.title h5, #register div.title h5 {
4065 4065 color: #fff;
4066 4066 margin: 10px;
4067 4067 padding: 0;
4068 4068 }
4069 4069
4070 4070 #login div.form div.fields div.field, #register div.form div.fields div.field {
4071 4071 clear: both;
4072 4072 overflow: hidden;
4073 4073 margin: 0;
4074 4074 padding: 0 0 10px;
4075 4075 }
4076 4076
4077 4077 #login div.form div.fields div.field span.error-message, #register div.form div.fields div.field span.error-message {
4078 4078 height: 1%;
4079 4079 display: block;
4080 4080 color: red;
4081 4081 margin: 8px 0 0;
4082 4082 padding: 0;
4083 4083 max-width: 320px;
4084 4084 }
4085 4085
4086 4086 #login div.form div.fields div.field div.label label, #register div.form div.fields div.field div.label label {
4087 4087 color: #000;
4088 4088 font-weight: 700;
4089 4089 }
4090 4090
4091 4091 #login div.form div.fields div.field div.input, #register div.form div.fields div.field div.input {
4092 4092 float: left;
4093 4093 margin: 0;
4094 4094 padding: 0;
4095 4095 }
4096 4096
4097 4097 #login div.form div.fields div.field div.input input.large {
4098 4098 width: 250px;
4099 4099 }
4100 4100
4101 4101 #login div.form div.fields div.field div.checkbox, #register div.form div.fields div.field div.checkbox {
4102 4102 margin: 0 0 0 184px;
4103 4103 padding: 0;
4104 4104 }
4105 4105
4106 4106 #login div.form div.fields div.field div.checkbox label, #register div.form div.fields div.field div.checkbox label {
4107 4107 color: #565656;
4108 4108 font-weight: 700;
4109 4109 }
4110 4110
4111 4111 #login div.form div.fields div.buttons input, #register div.form div.fields div.buttons input {
4112 4112 color: #000;
4113 4113 font-size: 1em;
4114 4114 font-weight: 700;
4115 4115 margin: 0;
4116 4116 }
4117 4117
4118 4118 #changeset_content .container .wrapper, #graph_content .container .wrapper {
4119 4119 width: 600px;
4120 4120 }
4121 4121
4122 4122 #changeset_content .container .date, .ac .match {
4123 4123 font-weight: 700;
4124 4124 padding-top: 5px;
4125 4125 padding-bottom: 5px;
4126 4126 }
4127 4127
4128 4128 div#legend_container table td, div#legend_choices table td {
4129 4129 border: none !important;
4130 4130 height: 20px !important;
4131 4131 padding: 0 !important;
4132 4132 }
4133 4133
4134 4134 .q_filter_box {
4135 4135 -webkit-box-shadow: rgba(0,0,0,0.07) 0 1px 2px inset;
4136 4136 -webkit-border-radius: 4px;
4137 4137 border-radius: 4px;
4138 4138 border: 0 none;
4139 4139 margin-bottom: -4px;
4140 4140 margin-top: -4px;
4141 4141 padding-left: 3px;
4142 4142 }
4143 4143
4144 4144 #node_filter {
4145 4145 border: 0px solid #545454;
4146 4146 color: #AAAAAA;
4147 4147 padding-left: 3px;
4148 4148 }
4149 4149
4150 4150
4151 4151 .group_members_wrap {
4152 4152 min-height: 85px;
4153 4153 padding-left: 20px;
4154 4154 }
4155 4155
4156 4156 .group_members .group_member {
4157 4157 height: 30px;
4158 4158 padding: 0px 0px 0px 0px;
4159 4159 }
4160 4160
4161 4161 .reviewer_status {
4162 4162 float: left;
4163 4163 }
4164 4164
4165 4165 .reviewers_member {
4166 4166 height: 15px;
4167 4167 padding: 0px 0px 0px 10px;
4168 4168 }
4169 4169
4170 4170 .emails_wrap {
4171 4171 padding: 0px 20px;
4172 4172 }
4173 4173
4174 4174 .emails_wrap .email_entry {
4175 4175 height: 30px;
4176 4176 padding: 0px 0px 0px 10px;
4177 4177 }
4178 4178 .emails_wrap .email_entry .email {
4179 4179 float: left
4180 4180 }
4181 4181 .emails_wrap .email_entry .email_action {
4182 4182 float: left
4183 4183 }
4184 4184
4185 4185 .ips_wrap {
4186 4186 padding: 0px 20px;
4187 4187 }
4188 4188
4189 4189 .ips_wrap .ip_entry {
4190 4190 height: 30px;
4191 4191 padding: 0px 0px 0px 10px;
4192 4192 }
4193 4193 .ips_wrap .ip_entry .ip {
4194 4194 float: left
4195 4195 }
4196 4196 .ips_wrap .ip_entry .ip_action {
4197 4197 float: left
4198 4198 }
4199 4199
4200 4200
4201 4201 /*README STYLE*/
4202 4202
4203 4203 div.readme {
4204 4204 padding: 0px;
4205 4205 }
4206 4206
4207 4207 div.readme h2 {
4208 4208 font-weight: normal;
4209 4209 }
4210 4210
4211 4211 div.readme .readme_box {
4212 4212 background-color: #fafafa;
4213 4213 }
4214 4214
4215 4215 div.readme .readme_box {
4216 4216 clear: both;
4217 4217 overflow: hidden;
4218 4218 margin: 0;
4219 4219 padding: 0 20px 10px;
4220 4220 }
4221 4221
4222 4222 div.readme .readme_box h1, div.readme .readme_box h2, div.readme .readme_box h3, div.readme .readme_box h4, div.readme .readme_box h5, div.readme .readme_box h6 {
4223 4223 border-bottom: 0 !important;
4224 4224 margin: 0 !important;
4225 4225 padding: 0 !important;
4226 4226 line-height: 1.5em !important;
4227 4227 }
4228 4228
4229 4229
4230 4230 div.readme .readme_box h1:first-child {
4231 4231 padding-top: .25em !important;
4232 4232 }
4233 4233
4234 4234 div.readme .readme_box h2, div.readme .readme_box h3 {
4235 4235 margin: 1em 0 !important;
4236 4236 }
4237 4237
4238 4238 div.readme .readme_box h2 {
4239 4239 margin-top: 1.5em !important;
4240 4240 border-top: 4px solid #e0e0e0 !important;
4241 4241 padding-top: .5em !important;
4242 4242 }
4243 4243
4244 4244 div.readme .readme_box p {
4245 4245 color: black !important;
4246 4246 margin: 1em 0 !important;
4247 4247 line-height: 1.5em !important;
4248 4248 }
4249 4249
4250 4250 div.readme .readme_box ul {
4251 4251 list-style: disc !important;
4252 4252 margin: 1em 0 1em 2em !important;
4253 4253 }
4254 4254
4255 4255 div.readme .readme_box ol {
4256 4256 list-style: decimal;
4257 4257 margin: 1em 0 1em 2em !important;
4258 4258 }
4259 4259
4260 4260 div.readme .readme_box pre, code {
4261 4261 font: 12px "Bitstream Vera Sans Mono","Courier",monospace;
4262 4262 }
4263 4263
4264 4264 div.readme .readme_box code {
4265 4265 font-size: 12px !important;
4266 4266 background-color: ghostWhite !important;
4267 4267 color: #444 !important;
4268 4268 padding: 0 .2em !important;
4269 4269 border: 1px solid #dedede !important;
4270 4270 }
4271 4271
4272 4272 div.readme .readme_box pre code {
4273 4273 padding: 0 !important;
4274 4274 font-size: 12px !important;
4275 4275 background-color: #eee !important;
4276 4276 border: none !important;
4277 4277 }
4278 4278
4279 4279 div.readme .readme_box pre {
4280 4280 margin: 1em 0;
4281 4281 font-size: 12px;
4282 4282 background-color: #eee;
4283 4283 border: 1px solid #ddd;
4284 4284 padding: 5px;
4285 4285 color: #444;
4286 4286 overflow: auto;
4287 4287 -webkit-box-shadow: rgba(0,0,0,0.07) 0 1px 2px inset;
4288 4288 -webkit-border-radius: 3px;
4289 4289 border-radius: 3px;
4290 4290 }
4291 4291
4292 4292 div.readme .readme_box table {
4293 4293 display: table;
4294 4294 border-collapse: separate;
4295 4295 border-spacing: 2px;
4296 4296 border-color: gray;
4297 4297 width: auto !important;
4298 4298 }
4299 4299
4300 4300
4301 4301 /** RST STYLE **/
4302 4302
4303 4303
4304 4304 div.rst-block {
4305 4305 padding: 0px;
4306 4306 }
4307 4307
4308 4308 div.rst-block h2 {
4309 4309 font-weight: normal;
4310 4310 }
4311 4311
4312 4312 div.rst-block {
4313 4313 background-color: #fafafa;
4314 4314 }
4315 4315
4316 4316 div.rst-block {
4317 4317 clear: both;
4318 4318 overflow: hidden;
4319 4319 margin: 0;
4320 4320 padding: 0 20px 10px;
4321 4321 }
4322 4322
4323 4323 div.rst-block h1, div.rst-block h2, div.rst-block h3, div.rst-block h4, div.rst-block h5, div.rst-block h6 {
4324 4324 border-bottom: 0 !important;
4325 4325 margin: 0 !important;
4326 4326 padding: 0 !important;
4327 4327 line-height: 1.5em !important;
4328 4328 }
4329 4329
4330 4330
4331 4331 div.rst-block h1:first-child {
4332 4332 padding-top: .25em !important;
4333 4333 }
4334 4334
4335 4335 div.rst-block h2, div.rst-block h3 {
4336 4336 margin: 1em 0 !important;
4337 4337 }
4338 4338
4339 4339 div.rst-block h2 {
4340 4340 margin-top: 1.5em !important;
4341 4341 border-top: 4px solid #e0e0e0 !important;
4342 4342 padding-top: .5em !important;
4343 4343 }
4344 4344
4345 4345 div.rst-block p {
4346 4346 color: black !important;
4347 4347 margin: 1em 0 !important;
4348 4348 line-height: 1.5em !important;
4349 4349 }
4350 4350
4351 4351 div.rst-block ul {
4352 4352 list-style: disc !important;
4353 4353 margin: 1em 0 1em 2em !important;
4354 4354 }
4355 4355
4356 4356 div.rst-block ol {
4357 4357 list-style: decimal;
4358 4358 margin: 1em 0 1em 2em !important;
4359 4359 }
4360 4360
4361 4361 div.rst-block pre, code {
4362 4362 font: 12px "Bitstream Vera Sans Mono","Courier",monospace;
4363 4363 }
4364 4364
4365 4365 div.rst-block code {
4366 4366 font-size: 12px !important;
4367 4367 background-color: ghostWhite !important;
4368 4368 color: #444 !important;
4369 4369 padding: 0 .2em !important;
4370 4370 border: 1px solid #dedede !important;
4371 4371 }
4372 4372
4373 4373 div.rst-block pre code {
4374 4374 padding: 0 !important;
4375 4375 font-size: 12px !important;
4376 4376 background-color: #eee !important;
4377 4377 border: none !important;
4378 4378 }
4379 4379
4380 4380 div.rst-block pre {
4381 4381 margin: 1em 0;
4382 4382 font-size: 12px;
4383 4383 background-color: #eee;
4384 4384 border: 1px solid #ddd;
4385 4385 padding: 5px;
4386 4386 color: #444;
4387 4387 overflow: auto;
4388 4388 -webkit-box-shadow: rgba(0,0,0,0.07) 0 1px 2px inset;
4389 4389 -webkit-border-radius: 3px;
4390 4390 border-radius: 3px;
4391 4391 }
4392 4392
4393 4393
4394 4394 /** comment main **/
4395 4395 .comments {
4396 4396 padding: 10px 20px;
4397 4397 }
4398 4398
4399 4399 .comments .comment {
4400 4400 border: 1px solid #ddd;
4401 4401 margin-top: 10px;
4402 4402 -webkit-border-radius: 4px;
4403 4403 border-radius: 4px;
4404 4404 }
4405 4405
4406 4406 .comments .comment .meta {
4407 4407 background: #f8f8f8;
4408 4408 padding: 4px;
4409 4409 border-bottom: 1px solid #ddd;
4410 4410 height: 18px;
4411 4411 }
4412 4412
4413 4413 .comments .comment .meta img {
4414 4414 vertical-align: middle;
4415 4415 }
4416 4416
4417 4417 .comments .comment .meta .user {
4418 4418 font-weight: bold;
4419 4419 float: left;
4420 4420 padding: 4px 2px 2px 2px;
4421 4421 }
4422 4422
4423 4423 .comments .comment .meta .date {
4424 4424 float: left;
4425 4425 padding: 4px 4px 0px 4px;
4426 4426 }
4427 4427
4428 4428 .comments .comment .text {
4429 4429 background-color: #FAFAFA;
4430 4430 }
4431 4431 .comment .text div.rst-block p {
4432 4432 margin: 0.5em 0px !important;
4433 4433 }
4434 4434
4435 4435 .comments .comments-number {
4436 4436 padding: 0px 0px 10px 0px;
4437 4437 font-weight: bold;
4438 4438 color: #666;
4439 4439 font-size: 16px;
4440 4440 }
4441 4441
4442 4442 /** comment form **/
4443 4443
4444 4444 .status-block {
4445 4445 min-height: 80px;
4446 4446 clear: both
4447 4447 }
4448 4448
4449 4449
4450 4450 div.comment-form {
4451 4451 margin-top: 20px;
4452 4452 }
4453 4453
4454 4454 .comment-form strong {
4455 4455 display: block;
4456 4456 margin-bottom: 15px;
4457 4457 }
4458 4458
4459 4459 .comment-form textarea {
4460 4460 width: 100%;
4461 4461 height: 100px;
4462 4462 font-family: 'Monaco', 'Courier', 'Courier New', monospace;
4463 4463 }
4464 4464
4465 4465 form.comment-form {
4466 4466 margin-top: 10px;
4467 4467 margin-left: 10px;
4468 4468 }
4469 4469
4470 4470 .comment-inline-form .comment-block-ta,
4471 4471 .comment-form .comment-block-ta {
4472 4472 border: 1px solid #ccc;
4473 4473 border-radius: 3px;
4474 4474 box-sizing: border-box;
4475 4475 }
4476 4476
4477 4477 .comment-form-submit {
4478 4478 margin-top: 5px;
4479 4479 margin-left: 525px;
4480 4480 }
4481 4481
4482 4482 .file-comments {
4483 4483 display: none;
4484 4484 }
4485 4485
4486 4486 .comment-form .comment {
4487 4487 margin-left: 10px;
4488 4488 }
4489 4489
4490 4490 .comment-form .comment-help {
4491 4491 padding: 5px 5px 5px 5px;
4492 4492 color: #666;
4493 4493 }
4494 4494 .comment-form .comment-help .preview-btn,
4495 4495 .comment-form .comment-help .edit-btn {
4496 4496 float: right;
4497 4497 margin: -6px 0px 0px 0px;
4498 4498 }
4499 4499
4500 4500 .comment-form .preview-box.unloaded,
4501 4501 .comment-inline-form .preview-box.unloaded {
4502 4502 height: 50px;
4503 4503 text-align: center;
4504 4504 padding: 20px;
4505 4505 background-color: #fafafa;
4506 4506 }
4507 4507
4508 4508 .comment-form .comment-button {
4509 4509 padding-top: 5px;
4510 4510 }
4511 4511
4512 4512 .add-another-button {
4513 4513 margin-left: 10px;
4514 4514 margin-top: 10px;
4515 4515 margin-bottom: 10px;
4516 4516 }
4517 4517
4518 4518 .comment .buttons {
4519 4519 float: right;
4520 4520 margin: -1px 0px 0px 0px;
4521 4521 }
4522 4522
4523 4523
4524 4524 .show-inline-comments {
4525 4525 position: relative;
4526 4526 top: 1px
4527 4527 }
4528 4528
4529 4529 /** comment inline form **/
4530 4530 .comment-inline-form {
4531 4531 margin: 4px;
4532 4532 }
4533 4533 .comment-inline-form .overlay {
4534 4534 display: none;
4535 4535 }
4536 4536 .comment-inline-form .overlay.submitting {
4537 4537 display: block;
4538 4538 background: none repeat scroll 0 0 white;
4539 4539 font-size: 16px;
4540 4540 opacity: 0.5;
4541 4541 position: absolute;
4542 4542 text-align: center;
4543 4543 vertical-align: top;
4544 4544
4545 4545 }
4546 4546 .comment-inline-form .overlay.submitting .overlay-text {
4547 4547 width: 100%;
4548 4548 margin-top: 5%;
4549 4549 }
4550 4550
4551 4551 .comment-inline-form .clearfix,
4552 4552 .comment-form .clearfix {
4553 4553 background: #EEE;
4554 4554 -webkit-border-radius: 4px;
4555 4555 border-radius: 4px;
4556 4556 padding: 5px;
4557 4557 margin: 0px;
4558 4558 }
4559 4559
4560 4560 div.comment-inline-form {
4561 4561 padding: 4px 0px 6px 0px;
4562 4562 }
4563 4563
4564 4564 .comment-inline-form strong {
4565 4565 display: block;
4566 4566 margin-bottom: 15px;
4567 4567 }
4568 4568
4569 4569 .comment-inline-form textarea {
4570 4570 width: 100%;
4571 4571 height: 100px;
4572 4572 font-family: 'Monaco', 'Courier', 'Courier New', monospace;
4573 4573 }
4574 4574
4575 4575 form.comment-inline-form {
4576 4576 margin-top: 10px;
4577 4577 margin-left: 10px;
4578 4578 }
4579 4579
4580 4580 .comment-inline-form-submit {
4581 4581 margin-top: 5px;
4582 4582 margin-left: 525px;
4583 4583 }
4584 4584
4585 4585 .file-comments {
4586 4586 display: none;
4587 4587 }
4588 4588
4589 4589 .comment-inline-form .comment {
4590 4590 margin-left: 10px;
4591 4591 }
4592 4592
4593 4593 .comment-inline-form .comment-help {
4594 4594 padding: 5px 5px 5px 5px;
4595 4595 color: #666;
4596 4596 }
4597 4597
4598 4598 .comment-inline-form .comment-help .preview-btn,
4599 4599 .comment-inline-form .comment-help .edit-btn {
4600 4600 float: right;
4601 4601 margin: -6px 0px 0px 0px;
4602 4602 }
4603 4603
4604 4604 .comment-inline-form .comment-button {
4605 4605 padding-top: 5px;
4606 4606 }
4607 4607
4608 4608 /** comment inline **/
4609 4609 .inline-comments {
4610 4610 padding: 10px 20px;
4611 4611 }
4612 4612
4613 4613 .inline-comments div.rst-block {
4614 4614 clear: both;
4615 4615 overflow: hidden;
4616 4616 margin: 0;
4617 4617 padding: 0 20px 0px;
4618 4618 }
4619 4619 .inline-comments .comment {
4620 4620 border: 1px solid #ddd;
4621 4621 -webkit-border-radius: 4px;
4622 4622 border-radius: 4px;
4623 4623 margin: 3px 3px 5px 5px;
4624 4624 background-color: #FAFAFA;
4625 4625 }
4626 4626 .inline-comments .add-comment {
4627 4627 padding: 2px 4px 8px 5px;
4628 4628 }
4629 4629
4630 4630 .inline-comments .comment-wrapp {
4631 4631 padding: 1px;
4632 4632 }
4633 4633 .inline-comments .comment .meta {
4634 4634 background: #f8f8f8;
4635 4635 padding: 4px;
4636 4636 border-bottom: 1px solid #ddd;
4637 4637 height: 20px;
4638 4638 }
4639 4639
4640 4640 .inline-comments .comment .meta img {
4641 4641 vertical-align: middle;
4642 4642 }
4643 4643
4644 4644 .inline-comments .comment .meta .user {
4645 4645 font-weight: bold;
4646 4646 float: left;
4647 4647 padding: 3px;
4648 4648 }
4649 4649
4650 4650 .inline-comments .comment .meta .date {
4651 4651 float: left;
4652 4652 padding: 3px;
4653 4653 }
4654 4654
4655 4655 .inline-comments .comment .text {
4656 4656 background-color: #FAFAFA;
4657 4657 }
4658 4658
4659 4659 .inline-comments .comments-number {
4660 4660 padding: 0px 0px 10px 0px;
4661 4661 font-weight: bold;
4662 4662 color: #666;
4663 4663 font-size: 16px;
4664 4664 }
4665 4665 .inline-comments-button .add-comment {
4666 4666 margin: 2px 0px 8px 5px !important
4667 4667 }
4668 4668
4669 4669 .notification-paginator {
4670 4670 padding: 0px 0px 4px 16px;
4671 4671 }
4672 4672
4673 4673 #context-pages .pull-request span,
4674 4674 .menu_link_notifications {
4675 4675 padding: 4px 4px !important;
4676 4676 text-align: center;
4677 4677 color: #888 !important;
4678 4678 background-color: #DEDEDE !important;
4679 4679 border-radius: 4px !important;
4680 4680 -webkit-border-radius: 4px !important;
4681 4681 }
4682 4682
4683 4683 #context-pages .forks span,
4684 4684 .menu_link_notifications {
4685 4685 padding: 4px 4px !important;
4686 4686 text-align: center;
4687 4687 color: #888 !important;
4688 4688 background-color: #DEDEDE !important;
4689 4689 border-radius: 4px !important;
4690 4690 -webkit-border-radius: 4px !important;
4691 4691 }
4692 4692
4693 4693
4694 4694 .notification-header {
4695 4695 padding-top: 6px;
4696 4696 }
4697 4697 .notification-header .desc {
4698 4698 font-size: 16px;
4699 4699 height: 24px;
4700 4700 float: left
4701 4701 }
4702 4702 .notification-list .container.unread {
4703 4703 background: none repeat scroll 0 0 rgba(255, 255, 180, 0.6);
4704 4704 }
4705 4705 .notification-header .gravatar {
4706 4706 background: none repeat scroll 0 0 transparent;
4707 4707 padding: 0px 0px 0px 8px;
4708 4708 }
4709 4709 .notification-list .container .notification-header .desc {
4710 4710 font-weight: bold;
4711 4711 font-size: 17px;
4712 4712 }
4713 4713 .notification-table {
4714 4714 border: 1px solid #ccc;
4715 4715 -webkit-border-radius: 6px 6px 6px 6px;
4716 4716 border-radius: 6px 6px 6px 6px;
4717 4717 clear: both;
4718 4718 margin: 0px 20px 0px 20px;
4719 4719 }
4720 4720 .notification-header .delete-notifications {
4721 4721 float: right;
4722 4722 padding-top: 8px;
4723 4723 cursor: pointer;
4724 4724 }
4725 4725 .notification-header .read-notifications {
4726 4726 float: right;
4727 4727 padding-top: 8px;
4728 4728 cursor: pointer;
4729 4729 }
4730 4730 .notification-subject {
4731 4731 clear: both;
4732 4732 border-bottom: 1px solid #eee;
4733 4733 padding: 5px 0px 5px 38px;
4734 4734 }
4735 4735
4736 4736 .notification-body {
4737 4737 clear: both;
4738 4738 margin: 34px 2px 2px 8px
4739 4739 }
4740 4740
4741 4741 /****
4742 4742 PULL REQUESTS
4743 4743 *****/
4744 4744 .pullrequests_section_head {
4745 4745 padding: 10px 10px 10px 0px;
4746 4746 font-size: 16px;
4747 4747 font-weight: bold;
4748 4748 }
4749 4749
4750 4750 div.pr-details-title.closed,
4751 4751 #pullrequests_container li.closed a
4752 4752 {
4753 4753 color: #555;
4754 4754 background: #eee;
4755 4755 }
4756 4756
4757 4757 div.pr-title {
4758 4758 font-size: 1.6em;
4759 4759 }
4760 4760 div.pr-details-title {
4761 4761 font-size: 1.6em;
4762 4762 margin: 0px 20px 0px 20px;
4763 4763 padding: 5px 0px 5px 10px;
4764 4764 }
4765 4765
4766 4766 div.pr {
4767 4767 border-bottom: 1px solid #DDD;
4768 4768 margin: 0px 20px;
4769 4769 padding: 10px 4px;
4770 4770 }
4771 4771 div.pr-desc {
4772 4772 margin: 0px 20px;
4773 4773 }
4774 4774 div.pr-closed {
4775 4775 background-color: #eee;
4776 4776 }
4777 4777
4778 4778 span.pr-closed-tag {
4779 4779 margin-bottom: 1px;
4780 4780 margin-right: 1px;
4781 4781 padding: 1px 3px;
4782 4782 font-size: 10px;
4783 4783 padding: 1px 3px 1px 3px;
4784 4784 font-size: 10px;
4785 4785 color: #336699;
4786 4786 white-space: nowrap;
4787 4787 -webkit-border-radius: 4px;
4788 4788 border-radius: 4px;
4789 4789 border: 1px solid #d9e8f8;
4790 4790 line-height: 1.5em;
4791 4791 }
4792 4792
4793 4793 /****
4794 4794 PERMS
4795 4795 *****/
4796 4796 #perms .perms_section_head {
4797 4797 padding: 10px 10px 10px 0px;
4798 4798 font-size: 16px;
4799 4799 font-weight: bold;
4800 4800 }
4801 4801
4802 4802 #perms .perm_tag {
4803 4803 padding: 1px 3px 1px 3px;
4804 4804 font-size: 10px;
4805 4805 font-weight: bold;
4806 4806 text-transform: uppercase;
4807 4807 white-space: nowrap;
4808 4808 -webkit-border-radius: 3px;
4809 4809 border-radius: 3px;
4810 4810 }
4811 4811
4812 4812 #perms .perm_tag.admin {
4813 4813 background-color: #B94A48;
4814 4814 color: #ffffff;
4815 4815 }
4816 4816
4817 4817 #perms .perm_tag.write {
4818 4818 background-color: #DB7525;
4819 4819 color: #ffffff;
4820 4820 }
4821 4821
4822 4822 #perms .perm_tag.read {
4823 4823 background-color: #468847;
4824 4824 color: #ffffff;
4825 4825 }
4826 4826
4827 4827 #perms .perm_tag.none {
4828 4828 background-color: #bfbfbf;
4829 4829 color: #ffffff;
4830 4830 }
4831 4831
4832 4832 .perm-gravatar {
4833 4833 vertical-align: middle;
4834 4834 padding: 2px;
4835 4835 }
4836 4836 .perm-gravatar-ac {
4837 4837 vertical-align: middle;
4838 4838 padding: 2px;
4839 4839 width: 14px;
4840 4840 height: 14px;
4841 4841 }
4842 4842
4843 4843 /*****************************************************************************
4844 4844 DIFFS CSS
4845 4845 ******************************************************************************/
4846 4846 .diff-collapse {
4847 4847 text-align: center;
4848 4848 margin-bottom: -15px;
4849 4849 }
4850 4850 .diff-collapse-button {
4851 4851 cursor: pointer;
4852 4852 color: #666;
4853 4853 font-size: 16px;
4854 4854 }
4855 4855 .diff-container {
4856 4856
4857 4857 }
4858 4858
4859 4859 .diff-container.hidden {
4860 4860 display: none;
4861 4861 overflow: hidden;
4862 4862 }
4863 4863
4864 4864
4865 4865 div.diffblock {
4866 4866 overflow: auto;
4867 4867 padding: 0px;
4868 4868 border: 1px solid #ccc;
4869 4869 background: #f8f8f8;
4870 4870 font-size: 100%;
4871 4871 line-height: 100%;
4872 4872 /* new */
4873 4873 line-height: 125%;
4874 4874 -webkit-border-radius: 6px 6px 0px 0px;
4875 4875 border-radius: 6px 6px 0px 0px;
4876 4876 }
4877 4877 div.diffblock.margined {
4878 4878 margin: 0px 20px 0px 20px;
4879 4879 }
4880 4880 div.diffblock .code-header {
4881 4881 border-bottom: 1px solid #CCCCCC;
4882 4882 background: #EEEEEE;
4883 4883 padding: 10px 0 10px 0;
4884 4884 min-height: 14px;
4885 4885 }
4886 4886
4887 4887 div.diffblock .code-header.banner {
4888 4888 border-bottom: 1px solid #CCCCCC;
4889 4889 background: #EEEEEE;
4890 4890 height: 14px;
4891 4891 margin: 0px 95px 0px 95px;
4892 4892 padding: 3px 3px 11px 3px;
4893 4893 }
4894 4894
4895 4895 div.diffblock .code-header-title {
4896 4896 padding: 0px 0px 10px 5px !important;
4897 4897 margin: 0 !important;
4898 4898 }
4899 4899 div.diffblock .code-header .hash {
4900 4900 float: left;
4901 4901 padding: 2px 0 0 2px;
4902 4902 }
4903 4903 div.diffblock .code-header .date {
4904 4904 float: left;
4905 4905 text-transform: uppercase;
4906 4906 padding: 2px 0px 0px 2px;
4907 4907 }
4908 4908 div.diffblock .code-header div {
4909 4909 margin-left: 4px;
4910 4910 font-weight: bold;
4911 4911 font-size: 14px;
4912 4912 }
4913 4913
4914 4914 div.diffblock .parents {
4915 4915 float: left;
4916 4916 height: 26px;
4917 4917 width: 100px;
4918 4918 font-size: 10px;
4919 4919 font-weight: 400;
4920 4920 vertical-align: middle;
4921 4921 padding: 0px 2px 2px 2px;
4922 4922 background-color: #eeeeee;
4923 4923 border-bottom: 1px solid #CCCCCC;
4924 4924 }
4925 4925
4926 4926 div.diffblock .children {
4927 4927 float: right;
4928 4928 height: 26px;
4929 4929 width: 100px;
4930 4930 font-size: 10px;
4931 4931 font-weight: 400;
4932 4932 vertical-align: middle;
4933 4933 text-align: right;
4934 4934 padding: 0px 2px 2px 2px;
4935 4935 background-color: #eeeeee;
4936 4936 border-bottom: 1px solid #CCCCCC;
4937 4937 }
4938 4938
4939 4939 div.diffblock .code-body {
4940 4940 background: #FFFFFF;
4941 4941 }
4942 4942 div.diffblock pre.raw {
4943 4943 background: #FFFFFF;
4944 4944 color: #000000;
4945 4945 }
4946 4946 table.code-difftable {
4947 4947 border-collapse: collapse;
4948 4948 width: 99%;
4949 4949 border-radius: 0px !important;
4950 4950 }
4951 4951 table.code-difftable td {
4952 4952 padding: 0 !important;
4953 4953 background: none !important;
4954 4954 border: 0 !important;
4955 4955 vertical-align: baseline !important
4956 4956 }
4957 4957 table.code-difftable .context {
4958 4958 background: none repeat scroll 0 0 #DDE7EF;
4959 4959 }
4960 4960 table.code-difftable .add {
4961 4961 background: none repeat scroll 0 0 #DDFFDD;
4962 4962 }
4963 4963 table.code-difftable .add ins {
4964 4964 background: none repeat scroll 0 0 #AAFFAA;
4965 4965 text-decoration: none;
4966 4966 }
4967 4967 table.code-difftable .del {
4968 4968 background: none repeat scroll 0 0 #FFDDDD;
4969 4969 }
4970 4970 table.code-difftable .del del {
4971 4971 background: none repeat scroll 0 0 #FFAAAA;
4972 4972 text-decoration: none;
4973 4973 }
4974 4974
4975 4975 /** LINE NUMBERS **/
4976 4976 table.code-difftable .lineno {
4977 4977
4978 4978 padding-left: 2px;
4979 4979 padding-right: 2px;
4980 4980 text-align: right;
4981 4981 width: 32px;
4982 4982 -moz-user-select: none;
4983 4983 -webkit-user-select: none;
4984 4984 border-right: 1px solid #CCC !important;
4985 4985 border-left: 0px solid #CCC !important;
4986 4986 border-top: 0px solid #CCC !important;
4987 4987 border-bottom: none !important;
4988 4988 vertical-align: middle !important;
4989 4989
4990 4990 }
4991 4991 table.code-difftable .lineno.new {
4992 4992 }
4993 4993 table.code-difftable .lineno.old {
4994 4994 }
4995 4995 table.code-difftable .lineno a {
4996 4996 color: #747474 !important;
4997 4997 font: 11px "Bitstream Vera Sans Mono",Monaco,"Courier New",Courier,monospace !important;
4998 4998 letter-spacing: -1px;
4999 4999 text-align: right;
5000 5000 padding-right: 2px;
5001 5001 cursor: pointer;
5002 5002 display: block;
5003 5003 width: 32px;
5004 5004 }
5005 5005
5006 5006 table.code-difftable .lineno-inline {
5007 5007 background: none repeat scroll 0 0 #FFF !important;
5008 5008 padding-left: 2px;
5009 5009 padding-right: 2px;
5010 5010 text-align: right;
5011 5011 width: 30px;
5012 5012 -moz-user-select: none;
5013 5013 -webkit-user-select: none;
5014 5014 }
5015 5015
5016 5016 /** CODE **/
5017 5017 table.code-difftable .code {
5018 5018 display: block;
5019 5019 width: 100%;
5020 5020 }
5021 5021 table.code-difftable .code td {
5022 5022 margin: 0;
5023 5023 padding: 0;
5024 5024 }
5025 5025 table.code-difftable .code pre {
5026 5026 margin: 0;
5027 5027 padding: 0;
5028 5028 height: 17px;
5029 5029 line-height: 17px;
5030 5030 }
5031 5031
5032 5032
5033 5033 .diffblock.margined.comm .line .code:hover {
5034 5034 background-color: #FFFFCC !important;
5035 5035 cursor: pointer !important;
5036 5036 background-image: url("../images/icons/comment_add.png") !important;
5037 5037 background-repeat: no-repeat !important;
5038 5038 background-position: right !important;
5039 5039 background-position: 0% 50% !important;
5040 5040 }
5041 5041 .diffblock.margined.comm .line .code.no-comment:hover {
5042 5042 background-image: none !important;
5043 5043 cursor: auto !important;
5044 5044 background-color: inherit !important;
5045 5045 }
5046 5046
5047 5047 div.comment:target>.comment-wrapp {
5048 5048 border: solid 2px #ee0 !important;
5049 5049 }
5050 5050
5051 5051 .lineno:target a {
5052 5052 border: solid 2px #ee0 !important;
5053 5053 margin: -2px;
5054 5054 }
5055 5055
5056 5056 #help_kb {
5057 5057 display: none;
5058 5058 }
5059 5059
5060 5060 .repo-switcher-dropdown .select2-result-label span.repo-icons {
5061 5061 margin-left: -12px;
5062 5062 }
This diff has been collapsed as it changes many lines, (1083 lines changed) Show them Hide them
@@ -1,2343 +1,2038
1 1 /**
2 2 RhodeCode JS Files
3 3 **/
4 4
5 5 if (typeof console == "undefined" || typeof console.log == "undefined"){
6 6 console = { log: function() {} }
7 7 }
8 8
9 9 /**
10 10 * INJECT .format function into String
11 11 * Usage: "My name is {0} {1}".format("Johny","Bravo")
12 12 * Return "My name is Johny Bravo"
13 13 * Inspired by https://gist.github.com/1049426
14 14 */
15 15 String.prototype.format = function() {
16 16 function format() {
17 17 var str = this;
18 18 var len = arguments.length+1;
19 19 var safe = undefined;
20 20 var arg = undefined;
21 21
22 22 // For each {0} {1} {n...} replace with the argument in that position. If
23 23 // the argument is an object or an array it will be stringified to JSON.
24 24 for (var i=0; i < len; arg = arguments[i++]) {
25 25 safe = typeof arg === 'object' ? JSON.stringify(arg) : arg;
26 26 str = str.replace(RegExp('\\{'+(i-1)+'\\}', 'g'), safe);
27 27 }
28 28 return str;
29 29 }
30 30
31 31 // Save a reference of what may already exist under the property native.
32 32 // Allows for doing something like: if("".format.native) { /* use native */ }
33 33 format.native = String.prototype.format;
34 34
35 35 // Replace the prototype property
36 36 return format;
37 37
38 38 }();
39 39
40 40 String.prototype.strip = function(char) {
41 41 if(char === undefined){
42 42 char = '\\s';
43 43 }
44 44 return this.replace(new RegExp('^'+char+'+|'+char+'+$','g'), '');
45 45 }
46 46
47 47 String.prototype.lstrip = function(char) {
48 48 if(char === undefined){
49 49 char = '\\s';
50 50 }
51 51 return this.replace(new RegExp('^'+char+'+'),'');
52 52 }
53 53
54 54 String.prototype.rstrip = function(char) {
55 55 if(char === undefined){
56 56 char = '\\s';
57 57 }
58 58 return this.replace(new RegExp(''+char+'+$'),'');
59 59 }
60 60
61 61
62 62 if(!Array.prototype.indexOf) {
63 63 Array.prototype.indexOf = function(needle) {
64 64 for(var i = 0; i < this.length; i++) {
65 65 if(this[i] === needle) {
66 66 return i;
67 67 }
68 68 }
69 69 return -1;
70 70 };
71 71 }
72 72
73 // IE(CRAP) doesn't support previousElementSibling
74 var prevElementSibling = function( el ) {
75 if( el.previousElementSibling ) {
76 return el.previousElementSibling;
77 } else {
78 while( el = el.previousSibling ) {
79 if( el.nodeType === 1 ) return el;
80 }
81 }
82 }
83
84 73 /**
85 74 * A customized version of PyRoutes.JS from https://pypi.python.org/pypi/pyroutes.js/
86 75 * which is copyright Stephane Klein and was made available under the BSD License.
87 76 *
88 77 * Usage pyroutes.url('mark_error_fixed',{"error_id":error_id}) // /mark_error_fixed/<error_id>
89 78 */
90 79 var pyroutes = (function() {
91 80 // access global map defined in special file pyroutes
92 81 var matchlist = PROUTES_MAP;
93 82 var sprintf = (function() {
94 83 function get_type(variable) {
95 84 return Object.prototype.toString.call(variable).slice(8, -1).toLowerCase();
96 85 }
97 86 function str_repeat(input, multiplier) {
98 87 for (var output = []; multiplier > 0; output[--multiplier] = input) {/* do nothing */}
99 88 return output.join('');
100 89 }
101 90
102 91 var str_format = function() {
103 92 if (!str_format.cache.hasOwnProperty(arguments[0])) {
104 93 str_format.cache[arguments[0]] = str_format.parse(arguments[0]);
105 94 }
106 95 return str_format.format.call(null, str_format.cache[arguments[0]], arguments);
107 96 };
108 97
109 98 str_format.format = function(parse_tree, argv) {
110 99 var cursor = 1, tree_length = parse_tree.length, node_type = '', arg, output = [], i, k, match, pad, pad_character, pad_length;
111 100 for (i = 0; i < tree_length; i++) {
112 101 node_type = get_type(parse_tree[i]);
113 102 if (node_type === 'string') {
114 103 output.push(parse_tree[i]);
115 104 }
116 105 else if (node_type === 'array') {
117 106 match = parse_tree[i]; // convenience purposes only
118 107 if (match[2]) { // keyword argument
119 108 arg = argv[cursor];
120 109 for (k = 0; k < match[2].length; k++) {
121 110 if (!arg.hasOwnProperty(match[2][k])) {
122 111 throw(sprintf('[sprintf] property "%s" does not exist', match[2][k]));
123 112 }
124 113 arg = arg[match[2][k]];
125 114 }
126 115 }
127 116 else if (match[1]) { // positional argument (explicit)
128 117 arg = argv[match[1]];
129 118 }
130 119 else { // positional argument (implicit)
131 120 arg = argv[cursor++];
132 121 }
133 122
134 123 if (/[^s]/.test(match[8]) && (get_type(arg) != 'number')) {
135 124 throw(sprintf('[sprintf] expecting number but found %s', get_type(arg)));
136 125 }
137 126 switch (match[8]) {
138 127 case 'b': arg = arg.toString(2); break;
139 128 case 'c': arg = String.fromCharCode(arg); break;
140 129 case 'd': arg = parseInt(arg, 10); break;
141 130 case 'e': arg = match[7] ? arg.toExponential(match[7]) : arg.toExponential(); break;
142 131 case 'f': arg = match[7] ? parseFloat(arg).toFixed(match[7]) : parseFloat(arg); break;
143 132 case 'o': arg = arg.toString(8); break;
144 133 case 's': arg = ((arg = String(arg)) && match[7] ? arg.substring(0, match[7]) : arg); break;
145 134 case 'u': arg = Math.abs(arg); break;
146 135 case 'x': arg = arg.toString(16); break;
147 136 case 'X': arg = arg.toString(16).toUpperCase(); break;
148 137 }
149 138 arg = (/[def]/.test(match[8]) && match[3] && arg >= 0 ? '+'+ arg : arg);
150 139 pad_character = match[4] ? match[4] == '0' ? '0' : match[4].charAt(1) : ' ';
151 140 pad_length = match[6] - String(arg).length;
152 141 pad = match[6] ? str_repeat(pad_character, pad_length) : '';
153 142 output.push(match[5] ? arg + pad : pad + arg);
154 143 }
155 144 }
156 145 return output.join('');
157 146 };
158 147
159 148 str_format.cache = {};
160 149
161 150 str_format.parse = function(fmt) {
162 151 var _fmt = fmt, match = [], parse_tree = [], arg_names = 0;
163 152 while (_fmt) {
164 153 if ((match = /^[^\x25]+/.exec(_fmt)) !== null) {
165 154 parse_tree.push(match[0]);
166 155 }
167 156 else if ((match = /^\x25{2}/.exec(_fmt)) !== null) {
168 157 parse_tree.push('%');
169 158 }
170 159 else if ((match = /^\x25(?:([1-9]\d*)\$|\(([^\)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-fosuxX])/.exec(_fmt)) !== null) {
171 160 if (match[2]) {
172 161 arg_names |= 1;
173 162 var field_list = [], replacement_field = match[2], field_match = [];
174 163 if ((field_match = /^([a-z_][a-z_\d]*)/i.exec(replacement_field)) !== null) {
175 164 field_list.push(field_match[1]);
176 165 while ((replacement_field = replacement_field.substring(field_match[0].length)) !== '') {
177 166 if ((field_match = /^\.([a-z_][a-z_\d]*)/i.exec(replacement_field)) !== null) {
178 167 field_list.push(field_match[1]);
179 168 }
180 169 else if ((field_match = /^\[(\d+)\]/.exec(replacement_field)) !== null) {
181 170 field_list.push(field_match[1]);
182 171 }
183 172 else {
184 173 throw('[sprintf] huh?');
185 174 }
186 175 }
187 176 }
188 177 else {
189 178 throw('[sprintf] huh?');
190 179 }
191 180 match[2] = field_list;
192 181 }
193 182 else {
194 183 arg_names |= 2;
195 184 }
196 185 if (arg_names === 3) {
197 186 throw('[sprintf] mixing positional and named placeholders is not (yet) supported');
198 187 }
199 188 parse_tree.push(match);
200 189 }
201 190 else {
202 191 throw('[sprintf] huh?');
203 192 }
204 193 _fmt = _fmt.substring(match[0].length);
205 194 }
206 195 return parse_tree;
207 196 };
208 197
209 198 return str_format;
210 199 })();
211 200
212 201 var vsprintf = function(fmt, argv) {
213 202 argv.unshift(fmt);
214 203 return sprintf.apply(null, argv);
215 204 };
216 205 return {
217 206 'url': function(route_name, params) {
218 207 var result = route_name;
219 208 if (typeof(params) != 'object'){
220 209 params = {};
221 210 }
222 211 if (matchlist.hasOwnProperty(route_name)) {
223 212 var route = matchlist[route_name];
224 213 // param substitution
225 214 for(var i=0; i < route[1].length; i++) {
226 215 if (!params.hasOwnProperty(route[1][i]))
227 216 throw new Error(route[1][i] + ' missing in "' + route_name + '" route generation');
228 217 }
229 218 result = sprintf(route[0], params);
230 219
231 220 var ret = [];
232 221 //extra params => GET
233 222 for(param in params){
234 223 if (route[1].indexOf(param) == -1){
235 224 ret.push(encodeURIComponent(param) + "=" + encodeURIComponent(params[param]));
236 225 }
237 226 }
238 227 var _parts = ret.join("&");
239 228 if(_parts){
240 229 result = result +'?'+ _parts
241 230 }
242 231 }
243 232
244 233 return result;
245 234 },
246 235 'register': function(route_name, route_tmpl, req_params) {
247 236 if (typeof(req_params) != 'object') {
248 237 req_params = [];
249 238 }
250 239 //fix escape
251 240 route_tmpl = unescape(route_tmpl);
252 241 keys = [];
253 242 for (o in req_params){
254 243 keys.push(req_params[o])
255 244 }
256 245 matchlist[route_name] = [
257 246 route_tmpl,
258 247 keys
259 248 ]
260 249 },
261 250 '_routes': function(){
262 251 return matchlist;
263 252 }
264 253 }
265 254 })();
266 255
267 256
268 257 /**
269 258 * GLOBAL YUI Shortcuts
270 259 */
271 260 var YUC = YAHOO.util.Connect;
272 261 var YUD = YAHOO.util.Dom;
273 262 var YUE = YAHOO.util.Event;
274 263 var YUQ = YAHOO.util.Selector.query;
275 264
265 /* Invoke all functions in callbacks */
276 266 var _run_callbacks = function(callbacks){
277 267 if (callbacks !== undefined){
278 268 var _l = callbacks.length;
279 269 for (var i=0;i<_l;i++){
280 270 var func = callbacks[i];
281 271 if(typeof(func)=='function'){
282 272 try{
283 273 func();
284 274 }catch (err){};
285 275 }
286 276 }
287 277 }
288 278 }
289 279
290 280 /**
291 281 * turns objects into GET query string
292 282 */
293 var toQueryString = function(o) {
283 var _toQueryString = function(o) {
294 284 if(typeof o !== 'object') {
295 285 return false;
296 286 }
297 287 var _p, _qs = [];
298 288 for(_p in o) {
299 289 _qs.push(encodeURIComponent(_p) + '=' + encodeURIComponent(o[_p]));
300 290 }
301 291 return _qs.join('&');
302 292 };
303 293
304 294 /**
305 295 * Partial Ajax Implementation
306 296 *
307 297 * @param url: defines url to make partial request
308 298 * @param container: defines id of container to input partial result
309 299 * @param s_call: success callback function that takes o as arg
310 300 * o.tId
311 301 * o.status
312 302 * o.statusText
313 303 * o.getResponseHeader[ ]
314 304 * o.getAllResponseHeaders
315 305 * o.responseText
316 306 * o.responseXML
317 307 * o.argument
318 308 * @param f_call: failure callback
319 309 * @param args arguments
320 310 */
321 311 function ypjax(url,container,s_call,f_call,args){
322 312 var method='GET';
323 313 if(args===undefined){
324 314 args=null;
325 315 }
316 $container = $('#' + container);
326 317
327 318 // Set special header for partial ajax == HTTP_X_PARTIAL_XHR
328 319 YUC.initHeader('X-PARTIAL-XHR',true);
329 320
330 321 // wrapper of passed callback
331 322 var s_wrapper = (function(o){
332 323 return function(o){
333 YUD.get(container).innerHTML=o.responseText;
334 YUD.setStyle(container,'opacity','1.0');
324 $container.html(o.responseText);
325 $container.css('opacity','1.0');
335 326 //execute the given original callback
336 327 if (s_call !== undefined){
337 328 s_call(o);
338 329 }
339 330 }
340 331 })()
341 YUD.setStyle(container,'opacity','0.3');
332 $container.css('opacity','0.3');
342 333 YUC.asyncRequest(method,url,{
343 334 success:s_wrapper,
344 335 failure:function(o){
345 console.log(o);
346 YUD.get(container).innerHTML='<span class="error_red">ERROR: {0}</span>'.format(o.status);
347 YUD.setStyle(container,'opacity','1.0');
336 console.log('ypjax failure: '+o);
337 $container.html('<span class="error_red">ERROR: {0}</span>'.format(o.status));
338 $container.css('opacity','1.0');
348 339 },
349 340 cache:false
350 341 },args);
351 342
352 343 };
353 344
354 345 var ajaxGET = function(url,success) {
355 346 // Set special header for ajax == HTTP_X_PARTIAL_XHR
356 347 YUC.initHeader('X-PARTIAL-XHR',true);
357 348
358 349 var sUrl = url;
359 350 var callback = {
360 351 success: success,
361 352 failure: function (o) {
362 353 if (o.status != 0) {
363 354 alert("error: " + o.statusText);
364 355 };
365 356 },
366 357 };
367 358
368 359 var request = YAHOO.util.Connect.asyncRequest('GET', sUrl, callback);
369 360 return request;
370 361 };
371 362
372 363 var ajaxPOST = function(url,postData,success) {
373 364 // Set special header for ajax == HTTP_X_PARTIAL_XHR
374 365 YUC.initHeader('X-PARTIAL-XHR',true);
375 366
376 367 var sUrl = url;
377 368 var callback = {
378 369 success: success,
379 370 failure: function (o) {
380 371 alert("error");
381 372 },
382 373 };
383 var postData = toQueryString(postData);
374 var postData = _toQueryString(postData);
384 375 var request = YAHOO.util.Connect.asyncRequest('POST', sUrl, callback, postData);
385 376 return request;
386 377 };
387 378
388 379
389 380 /**
390 * tooltip activate
391 */
392 var tooltip_activate = function(){
393 yt = YAHOO.yuitip.main;
394 YUE.onDOMReady(yt.init);
395 };
396
397 /**
398 * show more
381 * activate .show_more links
382 * the .show_more must have an id that is the the id of an element to hide prefixed with _
383 * the parentnode will be displayed
399 384 */
400 385 var show_more_event = function(){
401 YUE.on(YUD.getElementsByClassName('show_more'),'click',function(e){
402 var el = e.target;
403 YUD.setStyle(YUD.get(el.id.substring(1)),'display','');
404 YUD.setStyle(el.parentNode,'display','none');
386 $('.show_more').click(function(e){
387 var el = e.currentTarget;
388 $('#' + el.id.substring(1)).hide();
389 $(el.parentNode).show();
405 390 });
406 391 };
407 392
408 393 /**
409 * show changeset tooltip
394 * activate .lazy-cs mouseover for showing changeset tooltip
410 395 */
411 396 var show_changeset_tooltip = function(){
412 YUE.on(YUD.getElementsByClassName('lazy-cs'), 'mouseover', function(e){
413 var target = e.currentTarget;
414 var rid = YUD.getAttribute(target,'raw_id');
415 var repo_name = YUD.getAttribute(target,'repo_name');
416 var ttid = 'tt-'+rid;
417 var success = function(o){
418 var json = JSON.parse(o.responseText);
419 YUD.addClass(target,'tooltip')
420 YUD.setAttribute(target, 'title',json['message']);
421 YAHOO.yuitip.main.show_yuitip(e, target);
422 }
423 if(rid && !YUD.hasClass(target, 'tooltip')){
424 YUD.setAttribute(target,'id',ttid);
425 YUD.setAttribute(target, 'title',_TM['loading ...']);
426 YAHOO.yuitip.main.set_listeners(target);
427 YAHOO.yuitip.main.show_yuitip(e, target);
428 var url = pyroutes.url('changeset_info', {"repo_name":repo_name, "revision": rid});
429 ajaxGET(url, success)
397 $('.lazy-cs').mouseover(function(e){
398 var $target = $(e.currentTarget);
399 var rid = $target.attr('raw_id');
400 var repo_name = $target.attr('repo_name');
401 if(rid && !$target.hasClass('tooltip')){
402 _show_tooltip(e, _TM['loading ...']);
403 var url = pyroutes.url('changeset_info', {"repo_name": repo_name, "revision": rid});
404 ajaxGET(url, function(o){
405 var json = JSON.parse(o.responseText);
406 $target.addClass('tooltip')
407 _show_tooltip(e, json['message']);
408 _activate_tooltip($target);
409 });
430 410 }
431 411 });
432 412 };
433 413
434 var onSuccessFollow = function(target){
435 var f = YUD.get(target);
436 var f_cnt = YUD.get('current_followers_count');
437
438 if(YUD.hasClass(f, 'follow')){
439 f.setAttribute('class','following');
440 f.setAttribute('title',_TM['Stop following this repository']);
441
442 if(f_cnt){
443 var cnt = Number(f_cnt.innerHTML)+1;
444 f_cnt.innerHTML = cnt;
414 var _onSuccessFollow = function(target){
415 var $target = $(target);
416 var $f_cnt = $('#current_followers_count');
417 if($target.hasClass('follow')){
418 $target.attr('class', 'following');
419 $target.attr('title', _TM['Stop following this repository']);
420 if($f_cnt.html()){
421 var cnt = Number($f_cnt.html())+1;
422 $f_cnt.html(cnt);
445 423 }
446 424 }
447 425 else{
448 f.setAttribute('class','follow');
449 f.setAttribute('title',_TM['Start following this repository']);
450 if(f_cnt){
451 var cnt = Number(f_cnt.innerHTML)-1;
452 f_cnt.innerHTML = cnt;
426 $target.attr('class', 'follow');
427 $target.attr('title', _TM['Start following this repository']);
428 if($f_cnt.html()){
429 var cnt = Number($f_cnt.html())-1;
430 $f_cnt.html(cnt);
453 431 }
454 432 }
455 433 }
456 434
457 var toggleFollowingRepo = function(target,fallows_repo_id,token,user_id){
458 args = 'follows_repo_id='+fallows_repo_id;
435 var toggleFollowingRepo = function(target, follows_repo_id, token, user_id){
436 args = 'follows_repo_id='+follows_repo_id;
459 437 args+= '&amp;auth_token='+token;
460 438 if(user_id != undefined){
461 439 args+="&amp;user_id="+user_id;
462 440 }
463 441 $.post(TOGGLE_FOLLOW_URL, args, function(data){
464 onSuccessFollow(target);
442 _onSuccessFollow(target);
465 443 });
466 444 return false;
467 }
445 };
468 446
469 447 var showRepoSize = function(target, repo_name, token){
470 448 var args= 'auth_token='+token;
471 449
472 450 if(!$("#" + target).hasClass('loaded')){
473 451 $("#" + target).html(_TM['Loading ...']);
474 452 var url = pyroutes.url('repo_size', {"repo_name":repo_name});
475 453 $.post(url, args, function(data) {
476 454 $("#" + target).html(data);
477 455 $("#" + target).addClass('loaded');
478 456 });
479 457 }
480 458 return false;
481 }
459 };
482 460
483 461 /**
484 * TOOLTIP IMPL.
462 * tooltips
485 463 */
486 YAHOO.namespace('yuitip');
487 YAHOO.yuitip.main = {
488
489 $: YAHOO.util.Dom.get,
490 464
491 bgColor: '#000',
492 speed: 0.3,
493 opacity: 0.9,
494 offset: [15,15],
495 useAnim: false,
496 maxWidth: 600,
497 add_links: false,
498 yuitips: [],
465 var tooltip_activate = function(){
466 $(document).ready(_init_tooltip);
467 };
499 468
500 set_listeners: function(tt){
501 YUE.on(tt, 'mouseover', yt.show_yuitip, tt);
502 YUE.on(tt, 'mousemove', yt.move_yuitip, tt);
503 YUE.on(tt, 'mouseout', yt.close_yuitip, tt);
504 },
469 var _activate_tooltip = function($tt){
470 $tt.mouseover(_show_tooltip);
471 $tt.mousemove(_move_tooltip);
472 $tt.mouseout(_close_tooltip);
473 };
505 474
506 init: function(){
507 yt.tipBox = yt.$('tip-box');
508 if(!yt.tipBox){
509 yt.tipBox = document.createElement('div');
510 document.body.appendChild(yt.tipBox);
511 yt.tipBox.id = 'tip-box';
512 }
475 var _init_tooltip = function(){
476 var $tipBox = $('#tip-box');
477 if(!$tipBox.length){
478 $tipBox = $('<div id="tip-box"></div>')
479 $(document.body).append($tipBox);
480 }
513 481
514 YUD.setStyle(yt.tipBox, 'display', 'none');
515 YUD.setStyle(yt.tipBox, 'position', 'absolute');
516 if(yt.maxWidth !== null){
517 YUD.setStyle(yt.tipBox, 'max-width', yt.maxWidth+'px');
518 }
519
520 var yuitips = YUD.getElementsByClassName('tooltip');
482 $tipBox.hide();
483 $tipBox.css('position', 'absolute');
484 $tipBox.css('max-width', '600px');
521 485
522 if(yt.add_links === true){
523 var links = document.getElementsByTagName('a');
524 var linkLen = links.length;
525 for(i=0;i<linkLen;i++){
526 yuitips.push(links[i]);
527 }
528 }
529
530 var yuiLen = yuitips.length;
486 _activate_tooltip($('.tooltip'));
487 };
531 488
532 for(i=0;i<yuiLen;i++){
533 yt.set_listeners(yuitips[i]);
534 }
535 },
489 var _show_tooltip = function(e, tipText){
490 e.stopImmediatePropagation();
491 var el = e.currentTarget;
492 if(tipText){
493 // just use it
494 } else if(el.tagName.toLowerCase() === 'img'){
495 tipText = el.alt ? el.alt : '';
496 } else {
497 tipText = el.title ? el.title : '';
498 }
536 499
537 show_yuitip: function(e, el){
538 YUE.stopEvent(e);
539 if(el.tagName.toLowerCase() === 'img'){
540 yt.tipText = el.alt ? el.alt : '';
541 } else {
542 yt.tipText = el.title ? el.title : '';
543 }
544
545 if(yt.tipText !== ''){
546 // save org title
547 YUD.setAttribute(el, 'tt_title', yt.tipText);
548 // reset title to not show org tooltips
549 YUD.setAttribute(el, 'title', '');
500 if(tipText !== ''){
501 // save org title
502 $(el).attr('tt_title', tipText);
503 // reset title to not show org tooltips
504 $(el).attr('title', '');
550 505
551 yt.tipBox.innerHTML = yt.tipText;
552 YUD.setStyle(yt.tipBox, 'display', 'block');
553 if(yt.useAnim === true){
554 YUD.setStyle(yt.tipBox, 'opacity', '0');
555 var newAnim = new YAHOO.util.Anim(yt.tipBox,
556 {
557 opacity: { to: yt.opacity }
558 }, yt.speed, YAHOO.util.Easing.easeOut
559 );
560 newAnim.animate();
561 }
562 }
563 },
506 var $tipBox = $('#tip-box');
507 $tipBox.html(tipText);
508 $tipBox.css('display', 'block');
509 }
510 };
564 511
565 move_yuitip: function(e, el){
566 YUE.stopEvent(e);
567 var movePos = YUE.getXY(e);
568 YUD.setStyle(yt.tipBox, 'top', (movePos[1] + yt.offset[1]) + 'px');
569 YUD.setStyle(yt.tipBox, 'left', (movePos[0] + yt.offset[0]) + 'px');
570 },
571
572 close_yuitip: function(e, el){
573 YUE.stopEvent(e);
512 var _move_tooltip = function(e){
513 e.stopImmediatePropagation();
514 var $tipBox = $('#tip-box');
515 $tipBox.css('top', (e.pageY + 15) + 'px');
516 $tipBox.css('left', (e.pageX + 15) + 'px');
517 };
574 518
575 if(yt.useAnim === true){
576 var newAnim = new YAHOO.util.Anim(yt.tipBox,
577 {
578 opacity: { to: 0 }
579 }, yt.speed, YAHOO.util.Easing.easeOut
580 );
581 newAnim.animate();
582 } else {
583 YUD.setStyle(yt.tipBox, 'display', 'none');
584 }
585 YUD.setAttribute(el,'title', YUD.getAttribute(el, 'tt_title'));
586 }
587 }
519 var _close_tooltip = function(e){
520 e.stopImmediatePropagation();
521 var $tipBox = $('#tip-box');
522 $tipBox.hide();
523 var el = e.currentTarget;
524 $(el).attr('title', $(el).attr('tt_title'));
525 };
588 526
589 527 /**
590 528 * Quick filter widget
591 529 *
592 530 * @param target: filter input target
593 531 * @param nodes: list of nodes in html we want to filter.
594 532 * @param display_element function that takes current node from nodes and
595 533 * does hide or show based on the node
596 *
597 534 */
598 var q_filter = function(target,nodes,display_element){
599
535 var q_filter = function(target, nodes, display_element){
600 536 var nodes = nodes;
601 var q_filter_field = YUD.get(target);
537 var $q_filter_field = $('#' + target);
602 538 var F = YAHOO.namespace(target);
603 539
604 YUE.on(q_filter_field,'keyup',function(e){
540 $q_filter_field.keyup(function(e){
605 541 clearTimeout(F.filterTimeout);
606 F.filterTimeout = setTimeout(F.updateFilter,600);
542 F.filterTimeout = setTimeout(F.updateFilter, 600);
607 543 });
608 544
609 545 F.filterTimeout = null;
610 546
611 var show_node = function(node){
612 YUD.setStyle(node,'display','')
613 }
614 var hide_node = function(node){
615 YUD.setStyle(node,'display','none');
616 }
617
618 547 F.updateFilter = function() {
619 548 // Reset timeout
620 549 F.filterTimeout = null;
621 550
622 551 var obsolete = [];
623 552
624 var req = q_filter_field.value.toLowerCase();
553 var req = $q_filter_field.val().toLowerCase();
625 554
626 555 var l = nodes.length;
627 556 var i;
628 557 var showing = 0;
629 558
630 for (i=0;i<l;i++ ){
559 for (i=0; i<l; i++ ){
631 560 var n = nodes[i];
632 561 var target_element = display_element(n)
633 562 if(req && n.innerHTML.toLowerCase().indexOf(req) == -1){
634 hide_node(target_element);
563 $(target_element).hide();
635 564 }
636 565 else{
637 show_node(target_element);
638 showing+=1;
566 $(target_element).show();
567 showing += 1;
639 568 }
640 569 }
641 570
642 // if repo_count is set update the number
643 var cnt = YUD.get('repo_count');
644 if(cnt){
645 YUD.get('repo_count').innerHTML = showing;
646 }
571 $('#repo_count').html(showing); /* FIXME: don't hardcode */
647 572 }
648 573 };
649 574
650 var tableTr = function(cls, body){
651 var _el = document.createElement('div');
652 var cont = new YAHOO.util.Element(body);
653 var comment_id = fromHTML(body).children[0].id.split('comment-')[1];
654 var id = 'comment-tr-{0}'.format(comment_id);
655 var _html = ('<table><tbody><tr id="{0}" class="{1}">'+
575 /* return jQuery expression with a tr with body in 3rd column and class cls and id named after the body */
576 var _table_tr = function(cls, body){
577 // like: <div class="comment" id="comment-8" line="o92"><div class="comment-wrapp">...
578 // except new inlines which are different ...
579 var comment_id = ($(body).attr('id') || 'comment-new').split('comment-')[1];
580 var tr_id = 'comment-tr-{0}'.format(comment_id);
581 return $(('<tr id="{0}" class="{1}">'+
656 582 '<td class="lineno-inline new-inline"></td>'+
657 583 '<td class="lineno-inline old-inline"></td>'+
658 584 '<td>{2}</td>'+
659 '</tr></tbody></table>').format(id, cls, body);
660 _el.innerHTML = _html;
661 return _el.children[0].children[0].children[0];
585 '</tr>').format(tr_id, cls, body));
662 586 };
663 587
664 var createInlineForm = function(parent_tr, f_path, line) {
665 var tmpl = $('#comment-inline-form-template').html();
666 tmpl = tmpl.format(f_path, line);
667 var form = tableTr('comment-form-inline',tmpl)
588 /** return jQuery expression with new inline form based on template **/
589 var _createInlineForm = function(parent_tr, f_path, line) {
590 var $tmpl = $('#comment-inline-form-template').html().format(f_path, line);
591 var $form = _table_tr('comment-form-inline', $tmpl)
668 592
669 593 // create event for hide button
670 form = new YAHOO.util.Element(form);
671 var form_hide_button = new YAHOO.util.Element(YUD.getElementsByClassName('hide-inline-form',null,form)[0]);
672 form_hide_button.on('click', function(e) {
594 $form.find('.hide-inline-form').click(function(e) {
673 595 var newtr = e.currentTarget.parentNode.parentNode.parentNode.parentNode.parentNode;
674 if(YUD.hasClass(newtr.nextElementSibling,'inline-comments-button')){
675 YUD.setStyle(newtr.nextElementSibling,'display','');
596 if($(newtr).next().hasClass('inline-comments-button')){
597 $(newtr).next().show();
676 598 }
677 removeInlineForm(newtr);
678 YUD.removeClass(parent_tr, 'form-open');
679 YUD.removeClass(parent_tr, 'hl-comment');
680
599 $(newtr).remove();
600 $(parent_tr).removeClass('form-open');
601 $(parent_tr).removeClass('hl-comment');
681 602 });
682 603
683 return form
604 return $form
684 605 };
685 606
686 607 /**
687 * Inject inline comment for on given TR this tr should be always an .line
688 * tr containing the line. Code will detect comment, and always put the comment
689 * block at the very bottom
608 * Inject inline comment for an given TR. This tr should always be a .line .
609 * The form will be inject after any comments.
690 610 */
691 611 var injectInlineForm = function(tr){
692 if(!$(tr).hasClass('line')){
612 $tr = $(tr);
613 if(!$tr.hasClass('line')){
693 614 return
694 615 }
695 616 var submit_url = AJAX_COMMENT_URL;
696 var _td = YUD.getElementsByClassName('code',null,tr)[0];
697 if($(tr).hasClass('form-open') || $(tr).hasClass('context') || $(_td).hasClass('no-comment')){
617 var $td = $tr.find('.code');
618 if($tr.hasClass('form-open') || $tr.hasClass('context') || $td.hasClass('no-comment')){
698 619 return
699 620 }
700 $(tr).addClass('form-open hl-comment');
701 var node = YUD.getElementsByClassName('full_f_path',null,tr.parentNode.parentNode.parentNode)[0];
702 var f_path = YUD.getAttribute(node,'path');
703 var lineno = getLineNo(tr);
704 var form = createInlineForm(tr, f_path, lineno, submit_url);
621 $tr.addClass('form-open hl-comment');
622 var $node = $tr.parent().parent().parent().find('.full_f_path');
623 var f_path = $node.attr('path');
624 var lineno = _getLineNo(tr);
625 var $form = _createInlineForm(tr, f_path, lineno, submit_url);
705 626
706 var parent = tr;
707 while (1){
708 var n = parent.nextElementSibling;
709 // next element are comments !
710 if($(n).hasClass('inline-comments')){
711 parent = n;
712 }
713 else{
714 break;
715 }
627 var $parent = $tr;
628 while ($parent.next().hasClass('inline-comments')){
629 var $parent = $parent.next();
716 630 }
717 YUD.insertAfter(form,parent);
718 var f = YUD.get(form);
719 var overlay = YUD.getElementsByClassName('overlay',null,f)[0];
720 var _form = YUD.getElementsByClassName('inline-form',null,f)[0];
721
722 YUE.on(YUD.get(_form), 'submit',function(e){
723 YUE.preventDefault(e);
631 $form.insertAfter($parent);
632 var $overlay = $form.find('.overlay');
633 var $inlineform = $form.find('.inline-form');
724 634
725 //ajax submit
726 var text = YUD.get('text_'+lineno).value;
727 var postData = {
728 'text':text,
729 'f_path':f_path,
730 'line':lineno
731 };
635 $form.submit(function(e){
636 e.preventDefault();
732 637
733 638 if(lineno === undefined){
734 639 alert('missing line !');
735 640 return
736 641 }
737 642 if(f_path === undefined){
738 643 alert('missing file path !');
739 644 return
740 645 }
741 646
647 var text = $('#text_'+lineno).val();
742 648 if(text == ""){
743 649 return
744 650 }
745 651
746 var success = function(o){
747 YUD.removeClass(tr, 'form-open');
748 removeInlineForm(f);
749 var json_data = JSON.parse(o.responseText);
750 renderInlineComment(json_data);
751 };
652 if ($overlay.hasClass('overlay')){
653 $overlay.css('width', $inlineform.offsetWidth + 'px');
654 $overlay.css('height', $inlineform.offsetHeight + 'px');
655 }
656 $overlay.addClass('submitting');
752 657
753 if (YUD.hasClass(overlay,'overlay')){
754 var w = _form.offsetWidth;
755 var h = _form.offsetHeight;
756 YUD.setStyle(overlay,'width',w+'px');
757 YUD.setStyle(overlay,'height',h+'px');
758 }
759 YUD.addClass(overlay, 'submitting');
760
658 var success = function(o){
659 $tr.removeClass('form-open');
660 $form.remove();
661 var json_data = JSON.parse(o.responseText);
662 _renderInlineComment(json_data);
663 };
664 var postData = {
665 'text': text,
666 'f_path': f_path,
667 'line': lineno
668 };
761 669 ajaxPOST(submit_url, postData, success);
762 670 });
763 671
764 YUE.on('preview-btn_'+lineno, 'click', function(e){
765 var _text = YUD.get('text_'+lineno).value;
766 if(!_text){
672 $('#preview-btn_'+lineno).click(function(e){
673 var text = $('#text_'+lineno).val();
674 if(!text){
767 675 return
768 676 }
769 var post_data = {'text': _text};
770 YUD.addClass('preview-box_'+lineno, 'unloaded');
771 YUD.get('preview-box_'+lineno).innerHTML = _TM['Loading ...'];
772 YUD.setStyle('edit-container_'+lineno, 'display', 'none');
773 YUD.setStyle('preview-container_'+lineno, 'display', '');
677 $('#preview-box_'+lineno).addClass('unloaded');
678 $('#preview-box_'+lineno).html(_TM['Loading ...']);
679 $('#edit-container_'+lineno).hide();
680 $('#preview-container_'+lineno).show();
774 681
775 682 var url = pyroutes.url('changeset_comment_preview', {'repo_name': REPO_NAME});
776 ajaxPOST(url,post_data,function(o){
777 YUD.get('preview-box_'+lineno).innerHTML = o.responseText;
778 YUD.removeClass('preview-box_'+lineno, 'unloaded');
683 var post_data = {'text': text};
684 ajaxPOST(url, post_data, function(o){
685 $('#preview-box_'+lineno).html(o.responseText);
686 $('#preview-box_'+lineno).removeClass('unloaded');
779 687 })
780 688 })
781 YUE.on('edit-btn_'+lineno, 'click', function(e){
782 YUD.setStyle('edit-container_'+lineno, 'display', '');
783 YUD.setStyle('preview-container_'+lineno, 'display', 'none');
689 $('#edit-btn_'+lineno).click(function(e){
690 $('#edit-container_'+lineno).show();
691 $('#preview-container_'+lineno).hide();
784 692 })
785 693
786 694 setTimeout(function(){
787 695 // callbacks
788 696 tooltip_activate();
789 697 MentionsAutoComplete('text_'+lineno, 'mentions_container_'+lineno,
790 698 _USERS_AC_DATA, _GROUPS_AC_DATA);
791 var _e = YUD.get('text_'+lineno);
792 if(_e){
793 _e.focus();
794 }
699 $('#text_'+lineno).focus();
795 700 },10)
796 701 };
797 702
798 703 var deleteComment = function(comment_id){
799 704 var url = AJAX_COMMENT_DELETE_URL.replace('__COMMENT_ID__',comment_id);
800 705 var postData = {'_method':'delete'};
801 706 var success = function(o){
802 var n = YUD.get('comment-tr-'+comment_id);
803 var root = prevElementSibling(prevElementSibling(n));
804 n.parentNode.removeChild(n);
805
806 // scann nodes, and attach add button to last one only for TR
807 // which are the inline comments
808 if(root && root.tagName == 'TR'){
809 placeAddButton(root);
810 }
707 var $deleted = $('#comment-tr-'+comment_id);
708 var $prev = $deleted.prev('tr');
709 $deleted.remove();
710 _placeAddButton($prev);
811 711 }
812 712 ajaxPOST(url,postData,success);
813 713 }
814 714
815 var createInlineAddButton = function(tr){
816
817 var label = TRANSLATION_MAP['Add another comment'];
818
819 var html_el = document.createElement('div');
820 YUD.addClass(html_el, 'add-comment');
821 html_el.innerHTML = '<span class="ui-btn">{0}</span>'.format(label);
822
823 var add = new YAHOO.util.Element(html_el);
824 add.on('click', function(e) {
825 injectInlineForm(tr);
826 });
827 return add;
828 };
829
830 var getLineNo = function(tr) {
715 var _getLineNo = function(tr) {
831 716 var line;
832 var o = tr.children[0].id.split('_');
833 var n = tr.children[1].id.split('_');
717 var o = $(tr).children()[0].id.split('_');
718 var n = $(tr).children()[1].id.split('_');
834 719
835 720 if (n.length >= 2) {
836 721 line = n[n.length-1];
837 722 } else if (o.length >= 2) {
838 723 line = o[o.length-1];
839 724 }
840 725
841 726 return line
842 727 };
843 728
844 var placeAddButton = function(target_tr){
845 if(!target_tr){
846 return
729 var _placeAddButton = function($line_tr){
730 var $tr = $line_tr;
731 while ($tr.next().hasClass('inline-comments')){
732 $tr.find('.add-comment').remove();
733 $tr = $tr.next();
847 734 }
848 var last_node = target_tr;
849 //scann
850 while (1){
851 var n = last_node.nextElementSibling;
852 // next element are comments !
853 if($(n).hasClass('inline-comments')){
854 last_node = n;
855 //also remove the comment button from previous
856 var comment_add_buttons = YUD.getElementsByClassName('add-comment',null,last_node);
857 for(var i=0;i<comment_add_buttons.length;i++){
858 var b = comment_add_buttons[i];
859 b.parentNode.removeChild(b);
860 }
861 }
862 else{
863 break;
864 }
865 }
866
867 var add = createInlineAddButton(target_tr);
868 // get the comment div
869 var comment_block = YUD.getElementsByClassName('comment',null,last_node)[0];
870 // attach add button
871 YUD.insertAfter(add,comment_block);
872 }
735 $tr.find('.add-comment').remove();
736 var label = TRANSLATION_MAP['Add another comment'];
737 var $html_el = $('<div class="add-comment"><span class="ui-btn">{0}</span></div>'.format(label));
738 $html_el.click(function(e) {
739 injectInlineForm($line_tr);
740 });
741 $tr.find('.comment').after($html_el);
742 };
873 743
874 744 /**
875 745 * Places the inline comment into the changeset block in proper line position
876 746 */
877 var placeInline = function(target_container,lineno,html){
878 var lineid = "{0}_{1}".format(target_container,lineno);
879 var target_line = YUD.get(lineid);
880 var comment = new YAHOO.util.Element(tableTr('inline-comments',html))
747 var _placeInline = function(target_id, lineno, html){
748 var $td = $("#{0}_{1}".format(target_id, lineno));
881 749
882 750 // check if there are comments already !
883 var parent = target_line.parentNode;
884 var root_parent = parent;
885 while (1){
886 var n = parent.nextElementSibling;
887 // next element are comments !
888 if($(n).hasClass('inline-comments')){
889 parent = n;
890 }
891 else{
892 break;
893 }
751 var $line_tr = $td.parent(); // the tr
752 var $after_tr = $line_tr;
753 while ($after_tr.next().hasClass('inline-comments')){
754 $after_tr = $after_tr.next();
894 755 }
895 756 // put in the comment at the bottom
896 YUD.insertAfter(comment,parent);
757 $after_tr.after(_table_tr('inline-comments', html));
897 758
898 // scann nodes, and attach add button to last one
899 placeAddButton(root_parent);
900
901 return target_line;
759 // scan nodes, and attach add button to last one
760 _placeAddButton($line_tr);
902 761 }
903 762
904 763 /**
905 764 * make a single inline comment and place it inside
906 765 */
907 var renderInlineComment = function(json_data){
908 try{
909 var html = json_data['rendered_text'];
910 var lineno = json_data['line_no'];
911 var target_id = json_data['target_id'];
912 placeInline(target_id, lineno, html);
913 }catch(e){
914 console.log(e);
915 }
766 var _renderInlineComment = function(json_data){
767 var html = json_data['rendered_text'];
768 var lineno = json_data['line_no'];
769 var target_id = json_data['target_id'];
770 _placeInline(target_id, lineno, html);
916 771 }
917 772
918 773 /**
919 774 * Iterates over all the inlines, and places them inside proper blocks of data
920 775 */
921 776 var renderInlineComments = function(file_comments){
922 777 for (f in file_comments){
923 778 // holding all comments for a FILE
924 779 var box = file_comments[f];
925 780
926 var target_id = YUD.getAttribute(box,'target_id');
927 // actually comments with line numbers
781 var target_id = $(box).attr('target_id');
782 // actual comments with line numbers
928 783 var comments = box.children;
929 784 for(var i=0; i<comments.length; i++){
930 785 var data = {
931 786 'rendered_text': comments[i].outerHTML,
932 'line_no': YUD.getAttribute(comments[i],'line'),
787 'line_no': $(comments[i]).attr('line'),
933 788 'target_id': target_id
934 789 }
935 renderInlineComment(data);
790 _renderInlineComment(data);
936 791 }
937 792 }
938 793 }
939 794
795 /* activate files.html stuff */
940 796 var fileBrowserListeners = function(current_url, node_list_url, url_base){
941 var current_url_branch = +"?branch=__BRANCH__";
797 var current_url_branch = "?branch=__BRANCH__";
942 798
943 799 $('#stay_at_branch').on('click',function(e){
944 if(e.target.checked){
800 if(e.currentTarget.checked){
945 801 var uri = current_url_branch;
946 uri = uri.replace('__BRANCH__',e.target.value);
802 uri = uri.replace('__BRANCH__',e.currentTarget.value);
947 803 window.location = uri;
948 804 }
949 805 else{
950 806 window.location = current_url;
951 807 }
952 808 })
953 809
954 var n_filter = YUD.get('node_filter');
955 var F = YAHOO.namespace('node_filter');
810 var $node_filter = $('#node_filter');
956 811
957 F.filterTimeout = null;
812 var filterTimeout = null;
958 813 var nodes = null;
959 814
960 F.initFilter = function(){
961 $('#node_filter_box_loading').css('display','');
962 $('#search_activate_id').css('display','none');
963 $('#add_node_id').css('display','none');
815 var initFilter = function(){
816 $('#node_filter_box_loading').show();
817 $('#search_activate_id').hide();
818 $('#add_node_id').hide();
964 819 YUC.initHeader('X-PARTIAL-XHR',true);
965 820 YUC.asyncRequest('GET', node_list_url, {
966 821 success:function(o){
967 822 nodes = JSON.parse(o.responseText).nodes;
968 $('#node_filter_box_loading').css('display','none');
969 $('#node_filter_box').css('display','');
970 n_filter.focus();
971 if(YUD.hasClass(n_filter,'init')){
972 n_filter.value = '';
973 YUD.removeClass(n_filter,'init');
823 $('#node_filter_box_loading').hide();
824 $('#node_filter_box').show();
825 $node_filter.focus();
826 if($node_filter.hasClass('init')){
827 $node_filter.val('');
828 $node_filter.removeClass('init');
974 829 }
975 830 },
976 831 failure:function(o){
977 832 console.log('failed to load');
978 833 }
979 834 },null);
980 835 }
981 836
982 F.updateFilter = function(e) {
837 var updateFilter = function(e) {
983 838 return function(){
984 839 // Reset timeout
985 F.filterTimeout = null;
986 var query = e.target.value.toLowerCase();
840 filterTimeout = null;
841 var query = e.currentTarget.value.toLowerCase();
987 842 var match = [];
988 843 var matches = 0;
989 844 var matches_max = 20;
990 845 if (query != ""){
991 846 for(var i=0;i<nodes.length;i++){
992 847 var pos = nodes[i].name.toLowerCase().indexOf(query)
993 848 if(query && pos != -1){
994 849 matches++
995 850 //show only certain amount to not kill browser
996 851 if (matches > matches_max){
997 852 break;
998 853 }
999 854
1000 855 var n = nodes[i].name;
1001 856 var t = nodes[i].type;
1002 857 var n_hl = n.substring(0,pos)
1003 858 +"<b>{0}</b>".format(n.substring(pos,pos+query.length))
1004 859 +n.substring(pos+query.length)
1005 860 var new_url = url_base.replace('__FPATH__',n);
1006 861 match.push('<tr><td><a class="browser-{0}" href="{1}">{2}</a></td><td colspan="5"></td></tr>'.format(t,new_url,n_hl));
1007 862 }
1008 863 if(match.length >= matches_max){
1009 864 match.push('<tr><td>{0}</td><td colspan="5"></td></tr>'.format(_TM['Search truncated']));
1010 865 }
1011 866 }
1012 867 }
1013 868 if(query != ""){
1014 $('#tbody').css('display','none');
1015 $('#tbody_filtered').css('display','');
869 $('#tbody').hide();
870 $('#tbody_filtered').show();
1016 871
1017 872 if (match.length==0){
1018 873 match.push('<tr><td>{0}</td><td colspan="5"></td></tr>'.format(_TM['No matching files']));
1019 874 }
1020 875
1021 YUD.get('tbody_filtered').innerHTML = match.join("");
876 $('#tbody_filtered').html(match.join(""));
1022 877 }
1023 878 else{
1024 $('#tbody').css('display','');
1025 $('#tbody_filtered').css('display','none');
879 $('#tbody').show();
880 $('#tbody_filtered').hide();
1026 881 }
1027 882 }
1028 883 };
1029 884
1030 YUE.on(YUD.get('filter_activate'),'click',function(){
1031 F.initFilter();
1032 })
1033 YUE.on(n_filter,'click',function(){
1034 if(YUD.hasClass(n_filter,'init')){
1035 n_filter.value = '';
1036 YUD.removeClass(n_filter,'init');
885 $('#filter_activate').click(function(){
886 initFilter();
887 });
888 $node_filter.click(function(){
889 if($node_filter.hasClass('init')){
890 $node_filter.val('');
891 $node_filter.removeClass('init');
1037 892 }
1038 893 });
1039 YUE.on(n_filter,'keyup',function(e){
1040 clearTimeout(F.filterTimeout);
1041 F.filterTimeout = setTimeout(F.updateFilter(e),600);
894 $node_filter.keyup(function(e){
895 clearTimeout(filterTimeout);
896 filterTimeout = setTimeout(updateFilter(e),600);
1042 897 });
1043 898 };
1044 899
1045 900
1046 var initCodeMirror = function(textAreadId,resetUrl){
1047 var myCodeMirror = CodeMirror.fromTextArea(YUD.get(textAreadId),{
1048 mode: "null",
1049 lineNumbers:true,
901 var initCodeMirror = function(textarea_id, resetUrl){
902 var myCodeMirror = CodeMirror.fromTextArea($('#' + textarea_id)[0], {
903 mode: "null",
904 lineNumbers: true,
1050 905 indentUnit: 4
1051 906 });
1052 YUE.on('reset','click',function(e){
1053 window.location=resetUrl
907 $('#reset').click(function(e){
908 window.location=resetUrl;
1054 909 });
1055 910
1056 YUE.on('file_enable','click',function(){
1057 $('#editor_container').css('display','');
1058 $('#upload_file_container').css('display','none');
1059 $('#filename_container').css('display','');
911 $('#file_enable').click(function(){
912 $('#editor_container').show();
913 $('#upload_file_container').hide();
914 $('#filename_container').show();
1060 915 });
1061 916
1062 YUE.on('upload_file_enable','click',function(){
1063 $('#editor_container').css('display','none');
1064 $('#upload_file_container').css('display','');
1065 $('#filename_container').css('display','none');
917 $('#upload_file_enable').click(function(){
918 $('#editor_container').hide();
919 $('#upload_file_container').show();
920 $('#filename_container').hide();
1066 921 });
1067 922
1068 923 return myCodeMirror
1069 924 };
1070 925
1071 926 var setCodeMirrorMode = function(codeMirrorInstance, mode) {
1072 927 codeMirrorInstance.setOption("mode", mode);
1073 928 CodeMirror.autoLoadMode(codeMirrorInstance, mode);
1074 929 }
1075 930
1076 931
1077 var getIdentNode = function(n){
1078 //iterate thru nodes untill matched interesting node !
932 var _getIdentNode = function(n){
933 //iterate thrugh nodes until matching interesting node
1079 934
1080 935 if (typeof n == 'undefined'){
1081 936 return -1
1082 937 }
1083 938
1084 939 if(typeof n.id != "undefined" && n.id.match('L[0-9]+')){
1085 940 return n
1086 941 }
1087 942 else{
1088 return getIdentNode(n.parentNode);
943 return _getIdentNode(n.parentNode);
1089 944 }
1090 945 };
1091 946
947 /* generate links for multi line selects that can be shown by files.html page_highlights.
948 * This is a mouseup handler for hlcode from CodeHtmlFormatter and pygmentize */
1092 949 var getSelectionLink = function(e) {
1093 950 //get selection from start/to nodes
1094 951 if (typeof window.getSelection != "undefined") {
1095 952 s = window.getSelection();
1096 953
1097 from = getIdentNode(s.anchorNode);
1098 till = getIdentNode(s.focusNode);
954 from = _getIdentNode(s.anchorNode);
955 till = _getIdentNode(s.focusNode);
1099 956
1100 957 f_int = parseInt(from.id.replace('L',''));
1101 958 t_int = parseInt(till.id.replace('L',''));
1102 959
1103 if (f_int > t_int){
960 var yoffset = 35;
961 var ranges = [parseInt(from.id.replace('L','')), parseInt(till.id.replace('L',''))];
962 if (ranges[0] > ranges[1]){
1104 963 //highlight from bottom
1105 offset = -35;
1106 ranges = [t_int,f_int];
1107
964 yoffset = -yoffset;
965 ranges = [ranges[1], ranges[0]];
1108 966 }
1109 else{
1110 //highligth from top
1111 offset = 35;
1112 ranges = [f_int,t_int];
1113 }
967 var $hl_div = $('div#linktt');
1114 968 // if we select more than 2 lines
1115 969 if (ranges[0] != ranges[1]){
1116 if(YUD.get('linktt') == null){
1117 hl_div = document.createElement('div');
1118 hl_div.id = 'linktt';
970 if ($hl_div.length) {
971 $hl_div.html('');
972 } else {
973 $hl_div = $('<div id="linktt" class="hl-tip-box">');
974 $('body').prepend($hl_div);
1119 975 }
1120 hl_div.innerHTML = '';
1121 976
1122 anchor = '#L'+ranges[0]+'-'+ranges[1];
1123 var link = document.createElement('a');
1124 link.href = location.href.substring(0,location.href.indexOf('#'))+anchor;
1125 link.innerHTML = _TM['Selection link'];
1126 hl_div.appendChild(link);
1127 YUD.get('body').appendChild(hl_div);
1128
1129 xy = YUD.getXY(till.id);
1130
1131 YUD.addClass('linktt', 'hl-tip-box');
1132 $('#linktt').css('top',xy[1]+offset+'px');
1133 $('#linktt').css('left',xy[0]+'px');
1134 $('#linktt').css('visibility','visible');
1135
977 $hl_div.append($('<a>').html(_TM['Selection link']).attr('href', location.href.substring(0, location.href.indexOf('#')) + '#L' + ranges[0] + '-'+ranges[1]));
978 xy = $(till).offset();
979 $hl_div.css('top', (xy.top + yoffset) + 'px').css('left', xy.left + 'px');
980 $hl_div.show();
1136 981 }
1137 982 else{
1138 $('#linktt').css('visibility','hidden');
983 $hl_div.hide();
1139 984 }
1140 985 }
1141 986 };
1142 987
1143 var deleteNotification = function(url, notification_id,callbacks){
988 var deleteNotification = function(url, notification_id, callbacks){
1144 989 var callback = {
1145 990 success:function(o){
1146 var obj = YUD.get(String("notification_"+notification_id));
1147 if(obj.parentNode !== undefined){
1148 obj.parentNode.removeChild(obj);
1149 }
991 $("#notification_"+notification_id).remove();
1150 992 _run_callbacks(callbacks);
1151 993 },
1152 994 failure:function(o){
1153 995 alert("error");
1154 996 },
1155 997 };
1156 998 var postData = '_method=delete';
1157 999 var sUrl = url.replace('__NOTIFICATION_ID__',notification_id);
1158 1000 var request = YAHOO.util.Connect.asyncRequest('POST', sUrl,
1159 1001 callback, postData);
1160 1002 };
1161 1003
1162 var readNotification = function(url, notification_id,callbacks){
1004 var readNotification = function(url, notification_id, callbacks){
1163 1005 var callback = {
1164 1006 success:function(o){
1165 var obj = YUD.get(String("notification_"+notification_id));
1166 YUD.removeClass(obj, 'unread');
1167 var r_button = YUD.getElementsByClassName('read-notification',null,obj.children[0])[0];
1168
1169 if(r_button.parentNode !== undefined){
1170 r_button.parentNode.removeChild(r_button);
1171 }
1007 var $obj = $("#notification_"+notification_id);
1008 $obj.removeClass('unread');
1009 $obj.find('.read-notification').remove();
1172 1010 _run_callbacks(callbacks);
1173 1011 },
1174 1012 failure:function(o){
1175 1013 alert("error");
1176 1014 },
1177 1015 };
1178 1016 var postData = '_method=put';
1179 1017 var sUrl = url.replace('__NOTIFICATION_ID__',notification_id);
1180 1018 var request = YAHOO.util.Connect.asyncRequest('POST', sUrl,
1181 1019 callback, postData);
1182 1020 };
1183 1021
1184 1022 /** MEMBERS AUTOCOMPLETE WIDGET **/
1185 1023
1186 var MembersAutoComplete = function (divid, cont, users_list, groups_list) {
1024 var _MembersAutoComplete = function (divid, cont, users_list, groups_list) {
1187 1025 var myUsers = users_list;
1188 1026 var myGroups = groups_list;
1189 1027
1190 1028 // Define a custom search function for the DataSource of users
1191 1029 var matchUsers = function (sQuery) {
1192 1030 // Case insensitive matching
1193 1031 var query = sQuery.toLowerCase();
1194 1032 var i = 0;
1195 1033 var l = myUsers.length;
1196 1034 var matches = [];
1197 1035
1198 1036 // Match against each name of each contact
1199 1037 for (; i < l; i++) {
1200 1038 contact = myUsers[i];
1201 1039 if (((contact.fname+"").toLowerCase().indexOf(query) > -1) ||
1202 1040 ((contact.lname+"").toLowerCase().indexOf(query) > -1) ||
1203 1041 ((contact.nname) && ((contact.nname).toLowerCase().indexOf(query) > -1))) {
1204 1042 matches[matches.length] = contact;
1205 1043 }
1206 1044 }
1207 1045 return matches;
1208 1046 };
1209 1047
1210 1048 // Define a custom search function for the DataSource of userGroups
1211 1049 var matchGroups = function (sQuery) {
1212 1050 // Case insensitive matching
1213 1051 var query = sQuery.toLowerCase();
1214 1052 var i = 0;
1215 1053 var l = myGroups.length;
1216 1054 var matches = [];
1217 1055
1218 1056 // Match against each name of each contact
1219 1057 for (; i < l; i++) {
1220 1058 matched_group = myGroups[i];
1221 1059 if (matched_group.grname.toLowerCase().indexOf(query) > -1) {
1222 1060 matches[matches.length] = matched_group;
1223 1061 }
1224 1062 }
1225 1063 return matches;
1226 1064 };
1227 1065
1228 1066 //match all
1229 1067 var matchAll = function (sQuery) {
1230 1068 u = matchUsers(sQuery);
1231 1069 g = matchGroups(sQuery);
1232 1070 return u.concat(g);
1233 1071 };
1234 1072
1235 1073 // DataScheme for members
1236 1074 var memberDS = new YAHOO.util.FunctionDataSource(matchAll);
1237 1075 memberDS.responseSchema = {
1238 1076 fields: ["id", "fname", "lname", "nname", "grname", "grmembers", "gravatar_lnk"]
1239 1077 };
1240 1078
1241 1079 // DataScheme for owner
1242 1080 var ownerDS = new YAHOO.util.FunctionDataSource(matchUsers);
1243 1081 ownerDS.responseSchema = {
1244 1082 fields: ["id", "fname", "lname", "nname", "gravatar_lnk"]
1245 1083 };
1246 1084
1247 1085 // Instantiate AutoComplete for perms
1248 1086 var membersAC = new YAHOO.widget.AutoComplete(divid, cont, memberDS);
1249 1087 membersAC.useShadow = false;
1250 1088 membersAC.resultTypeList = false;
1251 1089 membersAC.animVert = false;
1252 1090 membersAC.animHoriz = false;
1253 1091 membersAC.animSpeed = 0.1;
1254 1092
1255 1093 // Instantiate AutoComplete for owner
1256 1094 var ownerAC = new YAHOO.widget.AutoComplete("user", "owner_container", ownerDS);
1257 1095 ownerAC.useShadow = false;
1258 1096 ownerAC.resultTypeList = false;
1259 1097 ownerAC.animVert = false;
1260 1098 ownerAC.animHoriz = false;
1261 1099 ownerAC.animSpeed = 0.1;
1262 1100
1263 1101 // Helper highlight function for the formatter
1264 1102 var highlightMatch = function (full, snippet, matchindex) {
1265 1103 return full.substring(0, matchindex)
1266 1104 + "<span class='match'>"
1267 1105 + full.substr(matchindex, snippet.length)
1268 1106 + "</span>" + full.substring(matchindex + snippet.length);
1269 1107 };
1270 1108
1271 1109 // Custom formatter to highlight the matching letters
1272 1110 var custom_formatter = function (oResultData, sQuery, sResultMatch) {
1273 1111 var query = sQuery.toLowerCase();
1274 1112 var _gravatar = function(res, em, group){
1275 1113 if (group !== undefined){
1276 1114 em = '/images/icons/group.png'
1277 1115 }
1278 1116 tmpl = '<div class="ac-container-wrap"><img class="perm-gravatar-ac" src="{0}"/>{1}</div>'
1279 1117 return tmpl.format(em,res)
1280 1118 }
1281 1119 // group
1282 1120 if (oResultData.grname != undefined) {
1283 1121 var grname = oResultData.grname;
1284 1122 var grmembers = oResultData.grmembers;
1285 1123 var grnameMatchIndex = grname.toLowerCase().indexOf(query);
1286 1124 var grprefix = "{0}: ".format(_TM['Group']);
1287 1125 var grsuffix = " (" + grmembers + " )";
1288 1126 var grsuffix = " ({0} {1})".format(grmembers, _TM['members']);
1289 1127
1290 1128 if (grnameMatchIndex > -1) {
1291 1129 return _gravatar(grprefix + highlightMatch(grname, query, grnameMatchIndex) + grsuffix,null,true);
1292 1130 }
1293 1131 return _gravatar(grprefix + oResultData.grname + grsuffix, null,true);
1294 1132 // Users
1295 1133 } else if (oResultData.nname != undefined) {
1296 1134 var fname = oResultData.fname || "";
1297 1135 var lname = oResultData.lname || "";
1298 1136 var nname = oResultData.nname;
1299 1137
1300 1138 // Guard against null value
1301 1139 var fnameMatchIndex = fname.toLowerCase().indexOf(query),
1302 1140 lnameMatchIndex = lname.toLowerCase().indexOf(query),
1303 1141 nnameMatchIndex = nname.toLowerCase().indexOf(query),
1304 1142 displayfname, displaylname, displaynname;
1305 1143
1306 1144 if (fnameMatchIndex > -1) {
1307 1145 displayfname = highlightMatch(fname, query, fnameMatchIndex);
1308 1146 } else {
1309 1147 displayfname = fname;
1310 1148 }
1311 1149
1312 1150 if (lnameMatchIndex > -1) {
1313 1151 displaylname = highlightMatch(lname, query, lnameMatchIndex);
1314 1152 } else {
1315 1153 displaylname = lname;
1316 1154 }
1317 1155
1318 1156 if (nnameMatchIndex > -1) {
1319 1157 displaynname = "(" + highlightMatch(nname, query, nnameMatchIndex) + ")";
1320 1158 } else {
1321 1159 displaynname = nname ? "(" + nname + ")" : "";
1322 1160 }
1323 1161
1324 1162 return _gravatar(displayfname + " " + displaylname + " " + displaynname, oResultData.gravatar_lnk);
1325 1163 } else {
1326 1164 return '';
1327 1165 }
1328 1166 };
1329 1167 membersAC.formatResult = custom_formatter;
1330 1168 ownerAC.formatResult = custom_formatter;
1331 1169
1332 1170 var myHandler = function (sType, aArgs) {
1333 1171 var nextId = divid.split('perm_new_member_name_')[1];
1334 1172 var myAC = aArgs[0]; // reference back to the AC instance
1335 1173 var elLI = aArgs[1]; // reference to the selected LI element
1336 1174 var oData = aArgs[2]; // object literal of selected item's result data
1337 1175 //fill the autocomplete with value
1338 1176 if (oData.nname != undefined) {
1339 1177 //users
1340 1178 myAC.getInputEl().value = oData.nname;
1341 YUD.get('perm_new_member_type_'+nextId).value = 'user';
1179 $('#perm_new_member_type_'+nextId).val('user');
1342 1180 } else {
1343 1181 //groups
1344 1182 myAC.getInputEl().value = oData.grname;
1345 YUD.get('perm_new_member_type_'+nextId).value = 'users_group';
1183 $('#perm_new_member_type_'+nextId).val('users_group');
1346 1184 }
1347 1185 };
1348 1186
1349 1187 membersAC.itemSelectEvent.subscribe(myHandler);
1350 1188 if(ownerAC.itemSelectEvent){
1351 1189 ownerAC.itemSelectEvent.subscribe(myHandler);
1352 1190 }
1353 1191
1354 1192 return {
1355 1193 memberDS: memberDS,
1356 1194 ownerDS: ownerDS,
1357 1195 membersAC: membersAC,
1358 1196 ownerAC: ownerAC,
1359 1197 };
1360 1198 }
1361 1199
1362 1200 var MentionsAutoComplete = function (divid, cont, users_list, groups_list) {
1363 1201 var myUsers = users_list;
1364 1202 var myGroups = groups_list;
1365 1203
1366 1204 // Define a custom search function for the DataSource of users
1367 1205 var matchUsers = function (sQuery) {
1368 1206 var org_sQuery = sQuery;
1369 1207 if(this.mentionQuery == null){
1370 1208 return []
1371 1209 }
1372 1210 sQuery = this.mentionQuery;
1373 1211 // Case insensitive matching
1374 1212 var query = sQuery.toLowerCase();
1375 1213 var i = 0;
1376 1214 var l = myUsers.length;
1377 1215 var matches = [];
1378 1216
1379 1217 // Match against each name of each contact
1380 1218 for (; i < l; i++) {
1381 1219 contact = myUsers[i];
1382 1220 if (((contact.fname+"").toLowerCase().indexOf(query) > -1) ||
1383 1221 ((contact.lname+"").toLowerCase().indexOf(query) > -1) ||
1384 1222 ((contact.nname) && ((contact.nname).toLowerCase().indexOf(query) > -1))) {
1385 1223 matches[matches.length] = contact;
1386 1224 }
1387 1225 }
1388 1226 return matches
1389 1227 };
1390 1228
1391 1229 //match all
1392 1230 var matchAll = function (sQuery) {
1393 1231 u = matchUsers(sQuery);
1394 1232 return u
1395 1233 };
1396 1234
1397 1235 // DataScheme for owner
1398 1236 var ownerDS = new YAHOO.util.FunctionDataSource(matchUsers);
1399 1237
1400 1238 ownerDS.responseSchema = {
1401 1239 fields: ["id", "fname", "lname", "nname", "gravatar_lnk"]
1402 1240 };
1403 1241
1404 1242 // Instantiate AutoComplete for mentions
1405 1243 var ownerAC = new YAHOO.widget.AutoComplete(divid, cont, ownerDS);
1406 1244 ownerAC.useShadow = false;
1407 1245 ownerAC.resultTypeList = false;
1408 1246 ownerAC.suppressInputUpdate = true;
1409 1247 ownerAC.animVert = false;
1410 1248 ownerAC.animHoriz = false;
1411 1249 ownerAC.animSpeed = 0.1;
1412 1250
1413 1251 // Helper highlight function for the formatter
1414 1252 var highlightMatch = function (full, snippet, matchindex) {
1415 1253 return full.substring(0, matchindex)
1416 1254 + "<span class='match'>"
1417 1255 + full.substr(matchindex, snippet.length)
1418 1256 + "</span>" + full.substring(matchindex + snippet.length);
1419 1257 };
1420 1258
1421 1259 // Custom formatter to highlight the matching letters
1422 1260 ownerAC.formatResult = function (oResultData, sQuery, sResultMatch) {
1423 1261 var org_sQuery = sQuery;
1424 1262 if(this.dataSource.mentionQuery != null){
1425 1263 sQuery = this.dataSource.mentionQuery;
1426 1264 }
1427 1265
1428 1266 var query = sQuery.toLowerCase();
1429 1267 var _gravatar = function(res, em, group){
1430 1268 if (group !== undefined){
1431 1269 em = '/images/icons/group.png'
1432 1270 }
1433 1271 tmpl = '<div class="ac-container-wrap"><img class="perm-gravatar-ac" src="{0}"/>{1}</div>'
1434 1272 return tmpl.format(em,res)
1435 1273 }
1436 1274 if (oResultData.nname != undefined) {
1437 1275 var fname = oResultData.fname || "";
1438 1276 var lname = oResultData.lname || "";
1439 1277 var nname = oResultData.nname;
1440 1278
1441 1279 // Guard against null value
1442 1280 var fnameMatchIndex = fname.toLowerCase().indexOf(query),
1443 1281 lnameMatchIndex = lname.toLowerCase().indexOf(query),
1444 1282 nnameMatchIndex = nname.toLowerCase().indexOf(query),
1445 1283 displayfname, displaylname, displaynname;
1446 1284
1447 1285 if (fnameMatchIndex > -1) {
1448 1286 displayfname = highlightMatch(fname, query, fnameMatchIndex);
1449 1287 } else {
1450 1288 displayfname = fname;
1451 1289 }
1452 1290
1453 1291 if (lnameMatchIndex > -1) {
1454 1292 displaylname = highlightMatch(lname, query, lnameMatchIndex);
1455 1293 } else {
1456 1294 displaylname = lname;
1457 1295 }
1458 1296
1459 1297 if (nnameMatchIndex > -1) {
1460 1298 displaynname = "(" + highlightMatch(nname, query, nnameMatchIndex) + ")";
1461 1299 } else {
1462 1300 displaynname = nname ? "(" + nname + ")" : "";
1463 1301 }
1464 1302
1465 1303 return _gravatar(displayfname + " " + displaylname + " " + displaynname, oResultData.gravatar_lnk);
1466 1304 } else {
1467 1305 return '';
1468 1306 }
1469 1307 };
1470 1308
1471 1309 if(ownerAC.itemSelectEvent){
1472 1310 ownerAC.itemSelectEvent.subscribe(function (sType, aArgs) {
1473 1311
1474 1312 var myAC = aArgs[0]; // reference back to the AC instance
1475 1313 var elLI = aArgs[1]; // reference to the selected LI element
1476 1314 var oData = aArgs[2]; // object literal of selected item's result data
1477 1315 //fill the autocomplete with value
1478 1316 if (oData.nname != undefined) {
1479 1317 //users
1480 1318 //Replace the mention name with replaced
1481 1319 var re = new RegExp();
1482 1320 var org = myAC.getInputEl().value;
1483 1321 var chunks = myAC.dataSource.chunks
1484 1322 // replace middle chunk(the search term) with actuall match
1485 1323 chunks[1] = chunks[1].replace('@'+myAC.dataSource.mentionQuery,
1486 1324 '@'+oData.nname+' ');
1487 1325 myAC.getInputEl().value = chunks.join('')
1488 YUD.get(myAC.getInputEl()).focus(); // Y U NO WORK !?
1326 myAC.getInputEl().focus(); // Y U NO WORK !?
1489 1327 } else {
1490 1328 //groups
1491 1329 myAC.getInputEl().value = oData.grname;
1492 YUD.get('perm_new_member_type').value = 'users_group';
1330 $('#perm_new_member_type').val('users_group');
1493 1331 }
1494 1332 });
1495 1333 }
1496 1334
1497 1335 // in this keybuffer we will gather current value of search !
1498 1336 // since we need to get this just when someone does `@` then we do the
1499 1337 // search
1500 1338 ownerAC.dataSource.chunks = [];
1501 1339 ownerAC.dataSource.mentionQuery = null;
1502 1340
1503 1341 ownerAC.get_mention = function(msg, max_pos) {
1504 1342 var org = msg;
1505 1343 var re = new RegExp('(?:^@|\s@)([a-zA-Z0-9]{1}[a-zA-Z0-9\-\_\.]+)$')
1506 1344 var chunks = [];
1507 1345
1508 1346 // cut first chunk until curret pos
1509 1347 var to_max = msg.substr(0, max_pos);
1510 1348 var at_pos = Math.max(0,to_max.lastIndexOf('@')-1);
1511 1349 var msg2 = to_max.substr(at_pos);
1512 1350
1513 1351 chunks.push(org.substr(0,at_pos))// prefix chunk
1514 1352 chunks.push(msg2) // search chunk
1515 1353 chunks.push(org.substr(max_pos)) // postfix chunk
1516 1354
1517 1355 // clean up msg2 for filtering and regex match
1518 1356 var msg2 = msg2.lstrip(' ').lstrip('\n');
1519 1357
1520 1358 if(re.test(msg2)){
1521 1359 var unam = re.exec(msg2)[1];
1522 1360 return [unam, chunks];
1523 1361 }
1524 1362 return [null, null];
1525 1363 };
1526 1364
1527 1365 if (ownerAC.textboxKeyUpEvent){
1528 1366 ownerAC.textboxKeyUpEvent.subscribe(function(type, args){
1529 1367
1530 1368 var ac_obj = args[0];
1531 1369 var currentMessage = args[1];
1532 1370 var currentCaretPosition = args[0]._elTextbox.selectionStart;
1533 1371
1534 1372 var unam = ownerAC.get_mention(currentMessage, currentCaretPosition);
1535 1373 var curr_search = null;
1536 1374 if(unam[0]){
1537 1375 curr_search = unam[0];
1538 1376 }
1539 1377
1540 1378 ownerAC.dataSource.chunks = unam[1];
1541 1379 ownerAC.dataSource.mentionQuery = curr_search;
1542 1380
1543 1381 })
1544 1382 }
1545 1383 return {
1546 1384 ownerDS: ownerDS,
1547 1385 ownerAC: ownerAC,
1548 1386 };
1549 1387 }
1550 1388
1551 1389 var addReviewMember = function(id,fname,lname,nname,gravatar_link){
1552 var members = YUD.get('review_members');
1553 1390 var tmpl = '<li id="reviewer_{2}">'+
1554 1391 '<div class="reviewers_member">'+
1555 1392 '<div class="gravatar"><img alt="gravatar" src="{0}"/> </div>'+
1556 1393 '<div style="float:left">{1}</div>'+
1557 1394 '<input type="hidden" value="{2}" name="review_members" />'+
1558 1395 '<span class="delete_icon action_button" onclick="removeReviewMember({2})"></span>'+
1559 1396 '</div>'+
1560 1397 '</li>' ;
1561 1398 var displayname = "{0} {1} ({2})".format(fname,lname,nname);
1562 1399 var element = tmpl.format(gravatar_link,displayname,id);
1563 1400 // check if we don't have this ID already in
1564 1401 var ids = [];
1565 var _els = YUQ('#review_members li');
1566 for (el in _els){
1567 ids.push(_els[el].id)
1568 }
1402 $('#review_members').find('li').each(function() {
1403 ids.push(this.id);
1404 });
1569 1405 if(ids.indexOf('reviewer_'+id) == -1){
1570 1406 //only add if it's not there
1571 members.innerHTML += element;
1407 $('#review_members').append(element);
1572 1408 }
1573 1409 }
1574 1410
1575 1411 var removeReviewMember = function(reviewer_id, repo_name, pull_request_id){
1576 var el = YUD.get('reviewer_{0}'.format(reviewer_id));
1577 if (el.parentNode !== undefined){
1578 el.parentNode.removeChild(el);
1579 }
1412 $('#reviewer_{0}'.format(reviewer_id)).remove();
1580 1413 }
1581 1414
1415 /* handle "Save Changes" of addReviewMember and removeReviewMember on PR */
1582 1416 var updateReviewers = function(reviewers_ids, repo_name, pull_request_id){
1583 1417 if (reviewers_ids === undefined){
1584 1418 var reviewers_ids = [];
1585 var ids = YUQ('#review_members input');
1586 for(var i=0; i<ids.length;i++){
1587 var id = ids[i].value
1588 reviewers_ids.push(id);
1589 }
1419 $('#review_members').find('input').each(function(){
1420 reviewers_ids.push(this.value);
1421 });
1590 1422 }
1591 1423 var url = pyroutes.url('pullrequest_update', {"repo_name":repo_name,
1592 1424 "pull_request_id": pull_request_id});
1593 1425 var postData = {'_method':'put',
1594 1426 'reviewers_ids': reviewers_ids};
1595 1427 var success = function(o){
1596 1428 window.location.reload();
1597 1429 }
1598 1430 ajaxPOST(url,postData,success);
1599 1431 }
1600 1432
1433 /* activate auto completion of users and groups ... but only used for users as PR reviewers */
1601 1434 var PullRequestAutoComplete = function (divid, cont, users_list, groups_list) {
1602 1435 var myUsers = users_list;
1603 1436 var myGroups = groups_list;
1604 1437
1605 1438 // Define a custom search function for the DataSource of users
1606 1439 var matchUsers = function (sQuery) {
1607 1440 // Case insensitive matching
1608 1441 var query = sQuery.toLowerCase();
1609 1442 var i = 0;
1610 1443 var l = myUsers.length;
1611 1444 var matches = [];
1612 1445
1613 1446 // Match against each name of each contact
1614 1447 for (; i < l; i++) {
1615 1448 contact = myUsers[i];
1616 1449 if (((contact.fname+"").toLowerCase().indexOf(query) > -1) ||
1617 1450 ((contact.lname+"").toLowerCase().indexOf(query) > -1) ||
1618 1451 ((contact.nname) && ((contact.nname).toLowerCase().indexOf(query) > -1))) {
1619 1452 matches[matches.length] = contact;
1620 1453 }
1621 1454 }
1622 1455 return matches;
1623 1456 };
1624 1457
1625 1458 // Define a custom search function for the DataSource of userGroups
1626 1459 var matchGroups = function (sQuery) {
1627 1460 // Case insensitive matching
1628 1461 var query = sQuery.toLowerCase();
1629 1462 var i = 0;
1630 1463 var l = myGroups.length;
1631 1464 var matches = [];
1632 1465
1633 1466 // Match against each name of each contact
1634 1467 for (; i < l; i++) {
1635 1468 matched_group = myGroups[i];
1636 1469 if (matched_group.grname.toLowerCase().indexOf(query) > -1) {
1637 1470 matches[matches.length] = matched_group;
1638 1471 }
1639 1472 }
1640 1473 return matches;
1641 1474 };
1642 1475
1643 1476 //match all
1644 1477 var matchAll = function (sQuery) {
1645 1478 u = matchUsers(sQuery);
1646 1479 return u
1647 1480 };
1648 1481
1649 1482 // DataScheme for owner
1650 1483 var ownerDS = new YAHOO.util.FunctionDataSource(matchUsers);
1651 1484
1652 1485 ownerDS.responseSchema = {
1653 1486 fields: ["id", "fname", "lname", "nname", "gravatar_lnk"]
1654 1487 };
1655 1488
1656 1489 // Instantiate AutoComplete for mentions
1657 1490 var reviewerAC = new YAHOO.widget.AutoComplete(divid, cont, ownerDS);
1658 1491 reviewerAC.useShadow = false;
1659 1492 reviewerAC.resultTypeList = false;
1660 1493 reviewerAC.suppressInputUpdate = true;
1661 1494 reviewerAC.animVert = false;
1662 1495 reviewerAC.animHoriz = false;
1663 1496 reviewerAC.animSpeed = 0.1;
1664 1497
1665 1498 // Helper highlight function for the formatter
1666 1499 var highlightMatch = function (full, snippet, matchindex) {
1667 1500 return full.substring(0, matchindex)
1668 1501 + "<span class='match'>"
1669 1502 + full.substr(matchindex, snippet.length)
1670 1503 + "</span>" + full.substring(matchindex + snippet.length);
1671 1504 };
1672 1505
1673 1506 // Custom formatter to highlight the matching letters
1674 1507 reviewerAC.formatResult = function (oResultData, sQuery, sResultMatch) {
1675 1508 var org_sQuery = sQuery;
1676 1509 if(this.dataSource.mentionQuery != null){
1677 1510 sQuery = this.dataSource.mentionQuery;
1678 1511 }
1679 1512
1680 1513 var query = sQuery.toLowerCase();
1681 1514 var _gravatar = function(res, em, group){
1682 1515 if (group !== undefined){
1683 1516 em = '/images/icons/group.png'
1684 1517 }
1685 1518 tmpl = '<div class="ac-container-wrap"><img class="perm-gravatar-ac" src="{0}"/>{1}</div>'
1686 1519 return tmpl.format(em,res)
1687 1520 }
1688 1521 if (oResultData.nname != undefined) {
1689 1522 var fname = oResultData.fname || "";
1690 1523 var lname = oResultData.lname || "";
1691 1524 var nname = oResultData.nname;
1692 1525
1693 1526 // Guard against null value
1694 1527 var fnameMatchIndex = fname.toLowerCase().indexOf(query),
1695 1528 lnameMatchIndex = lname.toLowerCase().indexOf(query),
1696 1529 nnameMatchIndex = nname.toLowerCase().indexOf(query),
1697 1530 displayfname, displaylname, displaynname;
1698 1531
1699 1532 if (fnameMatchIndex > -1) {
1700 1533 displayfname = highlightMatch(fname, query, fnameMatchIndex);
1701 1534 } else {
1702 1535 displayfname = fname;
1703 1536 }
1704 1537
1705 1538 if (lnameMatchIndex > -1) {
1706 1539 displaylname = highlightMatch(lname, query, lnameMatchIndex);
1707 1540 } else {
1708 1541 displaylname = lname;
1709 1542 }
1710 1543
1711 1544 if (nnameMatchIndex > -1) {
1712 1545 displaynname = "(" + highlightMatch(nname, query, nnameMatchIndex) + ")";
1713 1546 } else {
1714 1547 displaynname = nname ? "(" + nname + ")" : "";
1715 1548 }
1716 1549
1717 1550 return _gravatar(displayfname + " " + displaylname + " " + displaynname, oResultData.gravatar_lnk);
1718 1551 } else {
1719 1552 return '';
1720 1553 }
1721 1554 };
1722 1555
1723 1556 //members cache to catch duplicates
1724 1557 reviewerAC.dataSource.cache = [];
1725 1558 // hack into select event
1726 1559 if(reviewerAC.itemSelectEvent){
1727 1560 reviewerAC.itemSelectEvent.subscribe(function (sType, aArgs) {
1728 1561
1729 1562 var myAC = aArgs[0]; // reference back to the AC instance
1730 1563 var elLI = aArgs[1]; // reference to the selected LI element
1731 1564 var oData = aArgs[2]; // object literal of selected item's result data
1732 1565
1733 1566 //fill the autocomplete with value
1734
1735 1567 if (oData.nname != undefined) {
1736 1568 addReviewMember(oData.id, oData.fname, oData.lname, oData.nname,
1737 1569 oData.gravatar_lnk);
1738 1570 myAC.dataSource.cache.push(oData.id);
1739 YUD.get('user').value = ''
1571 $('#user').val('');
1740 1572 }
1741 1573 });
1742 1574 }
1743 return {
1744 ownerDS: ownerDS,
1745 reviewerAC: reviewerAC,
1746 };
1747 1575 }
1748 1576
1749 1577 /**
1750 * QUICK REPO MENU
1578 * Activate .quick_repo_menu
1751 1579 */
1752 1580 var quick_repo_menu = function(){
1753 YUE.on(YUQ('.quick_repo_menu'),'mouseenter',function(e){
1754 var menu = e.currentTarget.firstElementChild.firstElementChild;
1755 if(YUD.hasClass(menu,'hidden')){
1756 YUD.replaceClass(e.currentTarget,'hidden', 'active');
1757 YUD.replaceClass(menu, 'hidden', 'active');
1581 $(".quick_repo_menu").mouseenter(function(e) {
1582 var $menu = $(e.currentTarget).children().first().children().first();
1583 if($menu.hasClass('hidden')){
1584 $menu.removeClass('hidden').addClass('active');
1585 $(e.currentTarget).removeClass('hidden').addClass('active');
1758 1586 }
1759 1587 })
1760 YUE.on(YUQ('.quick_repo_menu'),'mouseleave',function(e){
1761 var menu = e.currentTarget.firstElementChild.firstElementChild;
1762 if(YUD.hasClass(menu,'active')){
1763 YUD.replaceClass(e.currentTarget, 'active', 'hidden');
1764 YUD.replaceClass(menu, 'active', 'hidden');
1588 $(".quick_repo_menu").mouseleave(function(e) {
1589 var $menu = $(e.currentTarget).children().first().children().first();
1590 if($menu.hasClass('active')){
1591 $menu.removeClass('active').addClass('hidden');
1592 $(e.currentTarget).removeClass('active').addClass('hidden');
1765 1593 }
1766 1594 })
1767 1595 };
1768 1596
1769 1597
1770 1598 /**
1771 1599 * TABLE SORTING
1772 1600 */
1773 1601
1774 1602 // returns a node from given html;
1775 1603 var fromHTML = function(html){
1776 1604 var _html = document.createElement('element');
1777 1605 _html.innerHTML = html;
1778 1606 return _html;
1779 1607 }
1780 1608
1781 1609 var get_rev = function(node){
1782 1610 var n = node.firstElementChild.firstElementChild;
1783 1611
1784 1612 if (n===null){
1785 1613 return -1
1786 1614 }
1787 1615 else{
1788 1616 out = n.firstElementChild.innerHTML.split(':')[0].replace('r','');
1789 1617 return parseInt(out);
1790 1618 }
1791 1619 }
1792 1620
1793 1621 var get_date = function(node){
1794 var date_ = YUD.getAttribute(node.firstElementChild,'date');
1795 return date_
1622 return $(node.firstElementChild).attr('date');
1796 1623 }
1797 1624
1798 1625 var revisionSort = function(a, b, desc, field) {
1799 var a_ = fromHTML(a.getData(field));
1800 var b_ = fromHTML(b.getData(field));
1626 var a_ = get_rev(fromHTML(a.getData(field)));
1627 var b_ = get_rev(fromHTML(b.getData(field)));
1801 1628
1802 // extract revisions from string nodes
1803 a_ = get_rev(a_)
1804 b_ = get_rev(b_)
1805
1806 var comp = YAHOO.util.Sort.compare;
1807 var compState = comp(a_, b_, desc);
1808 return compState;
1629 return YAHOO.util.Sort.compare(a_, b_, desc);
1809 1630 };
1810 1631
1811 1632 var ageSort = function(a, b, desc, field) {
1812 var a_ = fromHTML(a.getData(field));
1813 var b_ = fromHTML(b.getData(field));
1633 // data is like: <span class="tooltip" date="2014-06-04 18:18:55.325474" title="Wed, 04 Jun 2014 18:18:55">1 day and 23 hours ago</span>
1634 var a_ = $(a.getData(field)).attr('date');
1635 var b_ = $(b.getData(field)).attr('date');
1814 1636
1815 // extract name from table
1816 a_ = get_date(a_)
1817 b_ = get_date(b_)
1818
1819 var comp = YAHOO.util.Sort.compare;
1820 var compState = comp(a_, b_, desc);
1821 return compState;
1637 return YAHOO.util.Sort.compare(a_, b_, desc);
1822 1638 };
1823 1639
1824 1640 var lastLoginSort = function(a, b, desc, field) {
1825 1641 var a_ = a.getData('last_login_raw') || 0;
1826 1642 var b_ = b.getData('last_login_raw') || 0;
1827 1643
1828 var comp = YAHOO.util.Sort.compare;
1829 var compState = comp(a_, b_, desc);
1830 return compState;
1644 return YAHOO.util.Sort.compare(a_, b_, desc);
1831 1645 };
1832 1646
1833 1647 var nameSort = function(a, b, desc, field) {
1834 1648 var a_ = a.getData('raw_name') || 0;
1835 1649 var b_ = b.getData('raw_name') || 0;
1836 1650
1837 var comp = YAHOO.util.Sort.compare;
1838 var compState = comp(a_, b_, desc);
1839 return compState;
1651 return YAHOO.util.Sort.compare(a_, b_, desc);
1840 1652 };
1841 1653
1842 1654 var dateSort = function(a, b, desc, field) {
1843 var a_ = fromHTML(a.getData(field));
1844 var b_ = fromHTML(b.getData(field));
1655 var a_ = get_date(fromHTML(a.getData(field)));
1656 var b_ = get_date(fromHTML(b.getData(field)));
1845 1657
1846 // extract name from table
1847 a_ = get_date(a_)
1848 b_ = get_date(b_)
1849
1850 var comp = YAHOO.util.Sort.compare;
1851 var compState = comp(a_, b_, desc);
1852 return compState;
1658 return YAHOO.util.Sort.compare(a_, b_, desc);
1853 1659 };
1854 1660
1855 1661 var addPermAction = function(_html, users_list, groups_list){
1856 var elmts = YUD.getElementsByClassName('last_new_member');
1857 var last_node = elmts[elmts.length-1];
1858 if (last_node){
1859 var next_id = (YUD.getElementsByClassName('new_members')).length;
1860 _html = _html.format(next_id);
1861 last_node.innerHTML = _html;
1862 YUD.setStyle(last_node, 'display', '');
1863 YUD.removeClass(last_node, 'last_new_member');
1864 MembersAutoComplete("perm_new_member_name_"+next_id,
1865 "perm_container_"+next_id, users_list, groups_list);
1866 //create new last NODE
1867 var el = document.createElement('tr');
1868 el.id = 'add_perm_input';
1869 YUD.addClass(el,'last_new_member');
1870 YUD.addClass(el,'new_members');
1871 YUD.insertAfter(el, last_node);
1872 }
1662 var $last_node = $('.last_new_member').last(); // empty tr between last and add
1663 var next_id = $('.new_members').length;
1664 $last_node.before($('<tr class="new_members">').append(_html.format(next_id)));
1665 _MembersAutoComplete("perm_new_member_name_"+next_id,
1666 "perm_container_"+next_id, users_list, groups_list);
1873 1667 }
1874 1668
1875 1669 function ajaxActionRevokePermission(url, obj_id, obj_type, field_id, extra_data) {
1876 1670 var callback = {
1877 1671 success: function (o) {
1878 var tr = YUD.get(String(field_id));
1879 tr.parentNode.removeChild(tr);
1672 $('#' + field_id).remove();
1880 1673 },
1881 1674 failure: function (o) {
1882 1675 alert(_TM['Failed to remoke permission'] + ": " + o.status);
1883 1676 },
1884 1677 };
1885 1678 query_params = {
1886 1679 '_method': 'delete'
1887 1680 }
1888 1681 // put extra data into POST
1889 1682 if (extra_data !== undefined && (typeof extra_data === 'object')){
1890 1683 for(k in extra_data){
1891 1684 query_params[k] = extra_data[k];
1892 1685 }
1893 1686 }
1894 1687
1895 1688 if (obj_type=='user'){
1896 1689 query_params['user_id'] = obj_id;
1897 1690 query_params['obj_type'] = 'user';
1898 1691 }
1899 1692 else if (obj_type=='user_group'){
1900 1693 query_params['user_group_id'] = obj_id;
1901 1694 query_params['obj_type'] = 'user_group';
1902 1695 }
1903 1696
1904 1697 var request = YAHOO.util.Connect.asyncRequest('POST', url, callback,
1905 toQueryString(query_params));
1698 _toQueryString(query_params));
1906 1699 };
1907 1700
1908 1701 /* Multi selectors */
1909 1702
1910 1703 var MultiSelectWidget = function(selected_id, available_id, form_id){
1911 //definition of containers ID's
1912 var selected_container = selected_id;
1913 var available_container = available_id;
1914
1915 //temp container for selected storage.
1916 var cache = new Array();
1917 var av_cache = new Array();
1918 var c = YUD.get(selected_container);
1919 var ac = YUD.get(available_container);
1920
1921 //get only selected options for further fullfilment
1922 for(var i = 0;node =c.options[i];i++){
1923 if(node.selected){
1924 //push selected to my temp storage left overs :)
1925 cache.push(node);
1926 }
1927 }
1928
1929 //get all available options to cache
1930 for(var i = 0;node =ac.options[i];i++){
1931 //push selected to my temp storage left overs :)
1932 av_cache.push(node);
1933 }
1934
1935 //fill available only with those not in chosen
1936 ac.options.length=0;
1937 tmp_cache = new Array();
1704 var $availableselect = $('#' + available_id);
1705 var $selectedselect = $('#' + selected_id);
1938 1706
1939 for(var i = 0;node = av_cache[i];i++){
1940 var add = true;
1941 for(var i2 = 0;node_2 = cache[i2];i2++){
1942 if(node.value == node_2.value){
1943 add=false;
1944 break;
1945 }
1946 }
1947 if(add){
1948 tmp_cache.push(new Option(node.text, node.value, false, false));
1949 }
1950 }
1951
1952 for(var i = 0;node = tmp_cache[i];i++){
1953 ac.options[i] = node;
1954 }
1955
1956 function prompts_action_callback(e){
1957
1958 var chosen = YUD.get(selected_container);
1959 var available = YUD.get(available_container);
1960
1961 //get checked and unchecked options from field
1962 function get_checked(from_field){
1963 //temp container for storage.
1964 var sel_cache = new Array();
1965 var oth_cache = new Array();
1966
1967 for(var i = 0;node = from_field.options[i];i++){
1968 if(node.selected){
1969 //push selected fields :)
1970 sel_cache.push(node);
1971 }
1972 else{
1973 oth_cache.push(node)
1707 //fill available only with those not in selected
1708 var $selectedoptions = $selectedselect.children('option');
1709 $availableselect.children('option').filter(function(i, e){
1710 for(var j = 0, node; node = $selectedoptions[j]; j++){
1711 if(node.value == e.value){
1712 return true;
1974 1713 }
1975 1714 }
1976
1977 return [sel_cache,oth_cache]
1978 }
1979
1980 //fill the field with given options
1981 function fill_with(field,options){
1982 //clear firtst
1983 field.options.length=0;
1984 for(var i = 0;node = options[i];i++){
1985 field.options[i]=new Option(node.text, node.value,
1986 false, false);
1987 }
1988
1989 }
1990 //adds to current field
1991 function add_to(field,options){
1992 for(var i = 0;node = options[i];i++){
1993 field.appendChild(new Option(node.text, node.value,
1994 false, false));
1995 }
1996 }
1715 return false;
1716 }).remove();
1997 1717
1998 // add action
1999 if (this.id=='add_element'){
2000 var c = get_checked(available);
2001 add_to(chosen,c[0]);
2002 fill_with(available,c[1]);
2003 }
2004 // remove action
2005 if (this.id=='remove_element'){
2006 var c = get_checked(chosen);
2007 add_to(available,c[0]);
2008 fill_with(chosen,c[1]);
2009 }
2010 // add all elements
2011 if(this.id=='add_all_elements'){
2012 for(var i=0; node = available.options[i];i++){
2013 chosen.appendChild(new Option(node.text,
2014 node.value, false, false));
2015 }
2016 available.options.length = 0;
2017 }
2018 //remove all elements
2019 if(this.id=='remove_all_elements'){
2020 for(var i=0; node = chosen.options[i];i++){
2021 available.appendChild(new Option(node.text,
2022 node.value, false, false));
2023 }
2024 chosen.options.length = 0;
2025 }
1718 $('#add_element').click(function(e){
1719 $selectedselect.append($availableselect.children('option:selected'));
1720 });
1721 $('#remove_element').click(function(e){
1722 $availableselect.append($selectedselect.children('option:selected'));
1723 });
1724 $('#add_all_elements').click(function(e){
1725 $selectedselect.append($availableselect.children('option'));
1726 });
1727 $('#remove_all_elements').click(function(e){
1728 $availableselect.append($selectedselect.children('option'));
1729 });
2026 1730
2027 }
2028
2029 YUE.addListener(['add_element','remove_element',
2030 'add_all_elements','remove_all_elements'],'click',
2031 prompts_action_callback)
2032 if (form_id !== undefined) {
2033 YUE.addListener(form_id,'submit',function(){
2034 var chosen = YUD.get(selected_container);
2035 for (var i = 0; i < chosen.options.length; i++) {
2036 chosen.options[i].selected = 'selected';
2037 }
1731 $('#'+form_id).submit(function(){
1732 $selectedselect.children('option').each(function(i, e){
1733 e.selected = 'selected';
1734 });
2038 1735 });
2039 }
2040 1736 }
2041 1737
2042 1738 // custom paginator
2043 1739 var YUI_paginator = function(links_per_page, containers){
2044 1740
2045 1741 (function () {
2046 1742
2047 1743 var Paginator = YAHOO.widget.Paginator,
2048 1744 l = YAHOO.lang,
2049 1745 setId = YAHOO.util.Dom.generateId;
2050 1746
2051 1747 Paginator.ui.MyFirstPageLink = function (p) {
2052 1748 this.paginator = p;
2053 1749
2054 1750 p.subscribe('recordOffsetChange',this.update,this,true);
2055 1751 p.subscribe('rowsPerPageChange',this.update,this,true);
2056 1752 p.subscribe('totalRecordsChange',this.update,this,true);
2057 1753 p.subscribe('destroy',this.destroy,this,true);
2058 1754
2059 1755 // TODO: make this work
2060 1756 p.subscribe('firstPageLinkLabelChange',this.update,this,true);
2061 1757 p.subscribe('firstPageLinkClassChange',this.update,this,true);
2062 1758 };
2063 1759
2064 1760 Paginator.ui.MyFirstPageLink.init = function (p) {
2065 1761 p.setAttributeConfig('firstPageLinkLabel', {
2066 1762 value : 1,
2067 1763 validator : l.isString
2068 1764 });
2069 1765 p.setAttributeConfig('firstPageLinkClass', {
2070 1766 value : 'yui-pg-first',
2071 1767 validator : l.isString
2072 1768 });
2073 1769 p.setAttributeConfig('firstPageLinkTitle', {
2074 1770 value : 'First Page',
2075 1771 validator : l.isString
2076 1772 });
2077 1773 };
2078 1774
2079 1775 // Instance members and methods
2080 1776 Paginator.ui.MyFirstPageLink.prototype = {
2081 1777 current : null,
2082 1778 leftmost_page: null,
2083 1779 rightmost_page: null,
2084 1780 link : null,
2085 1781 span : null,
2086 1782 dotdot : null,
2087 1783 getPos : function(cur_page, max_page, items){
2088 1784 var edge = parseInt(items / 2) + 1;
2089 1785 if (cur_page <= edge){
2090 1786 var radius = Math.max(parseInt(items / 2), items - cur_page);
2091 1787 }
2092 1788 else if ((max_page - cur_page) < edge) {
2093 1789 var radius = (items - 1) - (max_page - cur_page);
2094 1790 }
2095 1791 else{
2096 1792 var radius = parseInt(items / 2);
2097 1793 }
2098 1794
2099 1795 var left = Math.max(1, (cur_page - (radius)))
2100 1796 var right = Math.min(max_page, cur_page + (radius))
2101 1797 return [left, cur_page, right]
2102 1798 },
2103 1799 render : function (id_base) {
2104 1800 var p = this.paginator,
2105 1801 c = p.get('firstPageLinkClass'),
2106 1802 label = p.get('firstPageLinkLabel'),
2107 1803 title = p.get('firstPageLinkTitle');
2108 1804
2109 1805 this.link = document.createElement('a');
2110 1806 this.span = document.createElement('span');
2111 YUD.setStyle(this.span, 'display', 'none');
1807 $(this.span).hide();
2112 1808
2113 1809 var _pos = this.getPos(p.getCurrentPage(), p.getTotalPages(), 5);
2114 1810 this.leftmost_page = _pos[0];
2115 1811 this.rightmost_page = _pos[2];
2116 1812
2117 1813 setId(this.link, id_base + '-first-link');
2118 1814 this.link.href = '#';
2119 1815 this.link.className = c;
2120 1816 this.link.innerHTML = label;
2121 1817 this.link.title = title;
2122 YAHOO.util.Event.on(this.link,'click',this.onClick,this,true);
1818 YUE.on(this.link,'click',this.onClick,this,true);
2123 1819
2124 1820 setId(this.span, id_base + '-first-span');
2125 1821 this.span.className = c;
2126 1822 this.span.innerHTML = label;
2127 1823
2128 1824 this.current = p.getCurrentPage() > 1 ? this.link : this.span;
2129 1825 return this.current;
2130 1826 },
2131 1827 update : function (e) {
2132 1828 var p = this.paginator;
2133 1829 var _pos = this.getPos(p.getCurrentPage(), p.getTotalPages(), 5);
2134 1830 this.leftmost_page = _pos[0];
2135 1831 this.rightmost_page = _pos[2];
2136 1832
2137 1833 if (e && e.prevValue === e.newValue) {
2138 1834 return;
2139 1835 }
2140 1836
2141 1837 var par = this.current ? this.current.parentNode : null;
2142 1838 if (this.leftmost_page > 1) {
2143 1839 if (par && this.current === this.span) {
2144 1840 par.replaceChild(this.link,this.current);
2145 1841 this.current = this.link;
2146 1842 }
2147 1843 } else {
2148 1844 if (par && this.current === this.link) {
2149 1845 par.replaceChild(this.span,this.current);
2150 1846 this.current = this.span;
2151 1847 }
2152 1848 }
2153 1849 },
2154 1850 destroy : function () {
2155 YAHOO.util.Event.purgeElement(this.link);
1851 YUE.purgeElement(this.link);
2156 1852 this.current.parentNode.removeChild(this.current);
2157 1853 this.link = this.span = null;
2158 1854 },
2159 1855 onClick : function (e) {
2160 YAHOO.util.Event.stopEvent(e);
1856 YUE.stopEvent(e);
2161 1857 this.paginator.setPage(1);
2162 1858 }
2163 1859 };
2164 1860
2165 1861 })();
2166 1862
2167 1863 (function () {
2168 1864
2169 1865 var Paginator = YAHOO.widget.Paginator,
2170 1866 l = YAHOO.lang,
2171 1867 setId = YAHOO.util.Dom.generateId;
2172 1868
2173 1869 Paginator.ui.MyLastPageLink = function (p) {
2174 1870 this.paginator = p;
2175 1871
2176 1872 p.subscribe('recordOffsetChange',this.update,this,true);
2177 1873 p.subscribe('rowsPerPageChange',this.update,this,true);
2178 1874 p.subscribe('totalRecordsChange',this.update,this,true);
2179 1875 p.subscribe('destroy',this.destroy,this,true);
2180 1876
2181 1877 // TODO: make this work
2182 1878 p.subscribe('lastPageLinkLabelChange',this.update,this,true);
2183 1879 p.subscribe('lastPageLinkClassChange', this.update,this,true);
2184 1880 };
2185 1881
2186 1882 Paginator.ui.MyLastPageLink.init = function (p) {
2187 1883 p.setAttributeConfig('lastPageLinkLabel', {
2188 1884 value : -1,
2189 1885 validator : l.isString
2190 1886 });
2191 1887 p.setAttributeConfig('lastPageLinkClass', {
2192 1888 value : 'yui-pg-last',
2193 1889 validator : l.isString
2194 1890 });
2195 1891 p.setAttributeConfig('lastPageLinkTitle', {
2196 1892 value : 'Last Page',
2197 1893 validator : l.isString
2198 1894 });
2199 1895
2200 1896 };
2201 1897
2202 1898 Paginator.ui.MyLastPageLink.prototype = {
2203 1899
2204 1900 current : null,
2205 1901 leftmost_page: null,
2206 1902 rightmost_page: null,
2207 1903 link : null,
2208 1904 span : null,
2209 1905 dotdot : null,
2210 1906 na : null,
2211 1907 getPos : function(cur_page, max_page, items){
2212 1908 var edge = parseInt(items / 2) + 1;
2213 1909 if (cur_page <= edge){
2214 1910 var radius = Math.max(parseInt(items / 2), items - cur_page);
2215 1911 }
2216 1912 else if ((max_page - cur_page) < edge) {
2217 1913 var radius = (items - 1) - (max_page - cur_page);
2218 1914 }
2219 1915 else{
2220 1916 var radius = parseInt(items / 2);
2221 1917 }
2222 1918
2223 1919 var left = Math.max(1, (cur_page - (radius)))
2224 1920 var right = Math.min(max_page, cur_page + (radius))
2225 1921 return [left, cur_page, right]
2226 1922 },
2227 1923 render : function (id_base) {
2228 1924 var p = this.paginator,
2229 1925 c = p.get('lastPageLinkClass'),
2230 1926 label = p.get('lastPageLinkLabel'),
2231 1927 last = p.getTotalPages(),
2232 1928 title = p.get('lastPageLinkTitle');
2233 1929
2234 1930 var _pos = this.getPos(p.getCurrentPage(), p.getTotalPages(), 5);
2235 1931 this.leftmost_page = _pos[0];
2236 1932 this.rightmost_page = _pos[2];
2237 1933
2238 1934 this.link = document.createElement('a');
2239 1935 this.span = document.createElement('span');
2240 YUD.setStyle(this.span, 'display', 'none');
1936 $(this.span).hide();
2241 1937
2242 1938 this.na = this.span.cloneNode(false);
2243 1939
2244 1940 setId(this.link, id_base + '-last-link');
2245 1941 this.link.href = '#';
2246 1942 this.link.className = c;
2247 1943 this.link.innerHTML = label;
2248 1944 this.link.title = title;
2249 YAHOO.util.Event.on(this.link,'click',this.onClick,this,true);
1945 YUE.on(this.link,'click',this.onClick,this,true);
2250 1946
2251 1947 setId(this.span, id_base + '-last-span');
2252 1948 this.span.className = c;
2253 1949 this.span.innerHTML = label;
2254 1950
2255 1951 setId(this.na, id_base + '-last-na');
2256 1952
2257 1953 if (this.rightmost_page < p.getTotalPages()){
2258 1954 this.current = this.link;
2259 1955 }
2260 1956 else{
2261 1957 this.current = this.span;
2262 1958 }
2263 1959
2264 1960 this.current.innerHTML = p.getTotalPages();
2265 1961 return this.current;
2266 1962 },
2267 1963
2268 1964 update : function (e) {
2269 1965 var p = this.paginator;
2270 1966
2271 1967 var _pos = this.getPos(p.getCurrentPage(), p.getTotalPages(), 5);
2272 1968 this.leftmost_page = _pos[0];
2273 1969 this.rightmost_page = _pos[2];
2274 1970
2275 1971 if (e && e.prevValue === e.newValue) {
2276 1972 return;
2277 1973 }
2278 1974
2279 1975 var par = this.current ? this.current.parentNode : null,
2280 1976 after = this.link;
2281 1977 if (par) {
2282 1978
2283 1979 // only show the last page if the rightmost one is
2284 1980 // lower, so we don't have doubled entries at the end
2285 1981 if (!(this.rightmost_page < p.getTotalPages())){
2286 1982 after = this.span
2287 1983 }
2288 1984
2289 1985 if (this.current !== after) {
2290 1986 par.replaceChild(after,this.current);
2291 1987 this.current = after;
2292 1988 }
2293 1989 }
2294 1990 this.current.innerHTML = this.paginator.getTotalPages();
2295 1991
2296 1992 },
2297 1993 destroy : function () {
2298 YAHOO.util.Event.purgeElement(this.link);
1994 YUE.purgeElement(this.link);
2299 1995 this.current.parentNode.removeChild(this.current);
2300 1996 this.link = this.span = null;
2301 1997 },
2302 1998 onClick : function (e) {
2303 YAHOO.util.Event.stopEvent(e);
1999 YUE.stopEvent(e);
2304 2000 this.paginator.setPage(this.paginator.getTotalPages());
2305 2001 }
2306 2002 };
2307 2003
2308 2004 })();
2309 2005
2310 2006 var pagi = new YAHOO.widget.Paginator({
2311 2007 rowsPerPage: links_per_page,
2312 2008 alwaysVisible: false,
2313 2009 template : "{PreviousPageLink} {MyFirstPageLink} {PageLinks} {MyLastPageLink} {NextPageLink}",
2314 2010 pageLinks: 5,
2315 2011 containerClass: 'pagination-wh',
2316 2012 currentPageClass: 'pager_curpage',
2317 2013 pageLinkClass: 'pager_link',
2318 2014 nextPageLinkLabel: '&gt;',
2319 2015 previousPageLinkLabel: '&lt;',
2320 2016 containers:containers
2321 2017 })
2322 2018
2323 2019 return pagi
2324 2020 }
2325 2021
2326 2022
2327 2023 // global hooks after DOM is loaded
2328 2024
2329 YUE.onDOMReady(function(){
2330 YUE.on(YUQ('.diff-collapse-button'), 'click', function(e){
2331 var button = e.currentTarget;
2332 var t = YUD.get(button).getAttribute('target');
2333 console.log(t);
2334 if(YUD.hasClass(t, 'hidden')){
2335 YUD.removeClass(t, 'hidden');
2336 YUD.get(button).innerHTML = "&uarr; {0} &uarr;".format(_TM['Collapse diff']);
2025 $(document).ready(function(){
2026 $('.diff-collapse-button').click(function(e) {
2027 var $button = $(e.currentTarget);
2028 var $target = $('#' + $button.attr('target'));
2029 if($target.hasClass('hidden')){
2030 $target.removeClass('hidden');
2031 $button.html("&uarr; {0} &uarr;".format(_TM['Collapse diff']));
2337 2032 }
2338 else if(!YUD.hasClass(t, 'hidden')){
2339 YUD.addClass(t, 'hidden');
2340 YUD.get(button).innerHTML = "&darr; {0} &darr;".format(_TM['Expand diff']);
2033 else if(!$target.hasClass('hidden')){
2034 $target.addClass('hidden');
2035 $button.html("&darr; {0} &darr;".format(_TM['Expand diff']));
2341 2036 }
2342 2037 });
2343 2038 });
General Comments 0
You need to be logged in to leave comments. Login now