##// END OF EJS Templates
Tab-buttons: add some user-feedback (#20632)....
Jean-Philippe Lang -
r14867:d2001dc949cd
parent child
Show More
@@ -1,687 +1,702
1 1 /* Redmine - project management software
2 2 Copyright (C) 2006-2016 Jean-Philippe Lang */
3 3
4 4 function checkAll(id, checked) {
5 5 $('#'+id).find('input[type=checkbox]:enabled').prop('checked', checked);
6 6 }
7 7
8 8 function toggleCheckboxesBySelector(selector) {
9 9 var all_checked = true;
10 10 $(selector).each(function(index) {
11 11 if (!$(this).is(':checked')) { all_checked = false; }
12 12 });
13 13 $(selector).prop('checked', !all_checked);
14 14 }
15 15
16 16 function showAndScrollTo(id, focus) {
17 17 $('#'+id).show();
18 18 if (focus !== null) {
19 19 $('#'+focus).focus();
20 20 }
21 21 $('html, body').animate({scrollTop: $('#'+id).offset().top}, 100);
22 22 }
23 23
24 24 function toggleRowGroup(el) {
25 25 var tr = $(el).parents('tr').first();
26 26 var n = tr.next();
27 27 tr.toggleClass('open');
28 28 while (n.length && !n.hasClass('group')) {
29 29 n.toggle();
30 30 n = n.next('tr');
31 31 }
32 32 }
33 33
34 34 function collapseAllRowGroups(el) {
35 35 var tbody = $(el).parents('tbody').first();
36 36 tbody.children('tr').each(function(index) {
37 37 if ($(this).hasClass('group')) {
38 38 $(this).removeClass('open');
39 39 } else {
40 40 $(this).hide();
41 41 }
42 42 });
43 43 }
44 44
45 45 function expandAllRowGroups(el) {
46 46 var tbody = $(el).parents('tbody').first();
47 47 tbody.children('tr').each(function(index) {
48 48 if ($(this).hasClass('group')) {
49 49 $(this).addClass('open');
50 50 } else {
51 51 $(this).show();
52 52 }
53 53 });
54 54 }
55 55
56 56 function toggleAllRowGroups(el) {
57 57 var tr = $(el).parents('tr').first();
58 58 if (tr.hasClass('open')) {
59 59 collapseAllRowGroups(el);
60 60 } else {
61 61 expandAllRowGroups(el);
62 62 }
63 63 }
64 64
65 65 function toggleFieldset(el) {
66 66 var fieldset = $(el).parents('fieldset').first();
67 67 fieldset.toggleClass('collapsed');
68 68 fieldset.children('div').toggle();
69 69 }
70 70
71 71 function hideFieldset(el) {
72 72 var fieldset = $(el).parents('fieldset').first();
73 73 fieldset.toggleClass('collapsed');
74 74 fieldset.children('div').hide();
75 75 }
76 76
77 77 // columns selection
78 78 function moveOptions(theSelFrom, theSelTo) {
79 79 $(theSelFrom).find('option:selected').detach().prop("selected", false).appendTo($(theSelTo));
80 80 }
81 81
82 82 function moveOptionUp(theSel) {
83 83 $(theSel).find('option:selected').each(function(){
84 84 $(this).prev(':not(:selected)').detach().insertAfter($(this));
85 85 });
86 86 }
87 87
88 88 function moveOptionTop(theSel) {
89 89 $(theSel).find('option:selected').detach().prependTo($(theSel));
90 90 }
91 91
92 92 function moveOptionDown(theSel) {
93 93 $($(theSel).find('option:selected').get().reverse()).each(function(){
94 94 $(this).next(':not(:selected)').detach().insertBefore($(this));
95 95 });
96 96 }
97 97
98 98 function moveOptionBottom(theSel) {
99 99 $(theSel).find('option:selected').detach().appendTo($(theSel));
100 100 }
101 101
102 102 function initFilters() {
103 103 $('#add_filter_select').change(function() {
104 104 addFilter($(this).val(), '', []);
105 105 });
106 106 $('#filters-table td.field input[type=checkbox]').each(function() {
107 107 toggleFilter($(this).val());
108 108 });
109 109 $('#filters-table').on('click', 'td.field input[type=checkbox]', function() {
110 110 toggleFilter($(this).val());
111 111 });
112 112 $('#filters-table').on('click', '.toggle-multiselect', function() {
113 113 toggleMultiSelect($(this).siblings('select'));
114 114 });
115 115 $('#filters-table').on('keypress', 'input[type=text]', function(e) {
116 116 if (e.keyCode == 13) $(this).closest('form').submit();
117 117 });
118 118 }
119 119
120 120 function addFilter(field, operator, values) {
121 121 var fieldId = field.replace('.', '_');
122 122 var tr = $('#tr_'+fieldId);
123 123 if (tr.length > 0) {
124 124 tr.show();
125 125 } else {
126 126 buildFilterRow(field, operator, values);
127 127 }
128 128 $('#cb_'+fieldId).prop('checked', true);
129 129 toggleFilter(field);
130 130 $('#add_filter_select').val('').find('option').each(function() {
131 131 if ($(this).attr('value') == field) {
132 132 $(this).attr('disabled', true);
133 133 }
134 134 });
135 135 }
136 136
137 137 function buildFilterRow(field, operator, values) {
138 138 var fieldId = field.replace('.', '_');
139 139 var filterTable = $("#filters-table");
140 140 var filterOptions = availableFilters[field];
141 141 if (!filterOptions) return;
142 142 var operators = operatorByType[filterOptions['type']];
143 143 var filterValues = filterOptions['values'];
144 144 var i, select;
145 145
146 146 var tr = $('<tr class="filter">').attr('id', 'tr_'+fieldId).html(
147 147 '<td class="field"><input checked="checked" id="cb_'+fieldId+'" name="f[]" value="'+field+'" type="checkbox"><label for="cb_'+fieldId+'"> '+filterOptions['name']+'</label></td>' +
148 148 '<td class="operator"><select id="operators_'+fieldId+'" name="op['+field+']"></td>' +
149 149 '<td class="values"></td>'
150 150 );
151 151 filterTable.append(tr);
152 152
153 153 select = tr.find('td.operator select');
154 154 for (i = 0; i < operators.length; i++) {
155 155 var option = $('<option>').val(operators[i]).text(operatorLabels[operators[i]]);
156 156 if (operators[i] == operator) { option.attr('selected', true); }
157 157 select.append(option);
158 158 }
159 159 select.change(function(){ toggleOperator(field); });
160 160
161 161 switch (filterOptions['type']) {
162 162 case "list":
163 163 case "list_optional":
164 164 case "list_status":
165 165 case "list_subprojects":
166 166 tr.find('td.values').append(
167 167 '<span style="display:none;"><select class="value" id="values_'+fieldId+'_1" name="v['+field+'][]"></select>' +
168 168 ' <span class="toggle-multiselect">&nbsp;</span></span>'
169 169 );
170 170 select = tr.find('td.values select');
171 171 if (values.length > 1) { select.attr('multiple', true); }
172 172 for (i = 0; i < filterValues.length; i++) {
173 173 var filterValue = filterValues[i];
174 174 var option = $('<option>');
175 175 if ($.isArray(filterValue)) {
176 176 option.val(filterValue[1]).text(filterValue[0]);
177 177 if ($.inArray(filterValue[1], values) > -1) {option.attr('selected', true);}
178 178 } else {
179 179 option.val(filterValue).text(filterValue);
180 180 if ($.inArray(filterValue, values) > -1) {option.attr('selected', true);}
181 181 }
182 182 select.append(option);
183 183 }
184 184 break;
185 185 case "date":
186 186 case "date_past":
187 187 tr.find('td.values').append(
188 188 '<span style="display:none;"><input type="text" name="v['+field+'][]" id="values_'+fieldId+'_1" size="10" class="value date_value" /></span>' +
189 189 ' <span style="display:none;"><input type="text" name="v['+field+'][]" id="values_'+fieldId+'_2" size="10" class="value date_value" /></span>' +
190 190 ' <span style="display:none;"><input type="text" name="v['+field+'][]" id="values_'+fieldId+'" size="3" class="value" /> '+labelDayPlural+'</span>'
191 191 );
192 192 $('#values_'+fieldId+'_1').val(values[0]).datepicker(datepickerOptions);
193 193 $('#values_'+fieldId+'_2').val(values[1]).datepicker(datepickerOptions);
194 194 $('#values_'+fieldId).val(values[0]);
195 195 break;
196 196 case "string":
197 197 case "text":
198 198 tr.find('td.values').append(
199 199 '<span style="display:none;"><input type="text" name="v['+field+'][]" id="values_'+fieldId+'" size="30" class="value" /></span>'
200 200 );
201 201 $('#values_'+fieldId).val(values[0]);
202 202 break;
203 203 case "relation":
204 204 tr.find('td.values').append(
205 205 '<span style="display:none;"><input type="text" name="v['+field+'][]" id="values_'+fieldId+'" size="6" class="value" /></span>' +
206 206 '<span style="display:none;"><select class="value" name="v['+field+'][]" id="values_'+fieldId+'_1"></select></span>'
207 207 );
208 208 $('#values_'+fieldId).val(values[0]);
209 209 select = tr.find('td.values select');
210 210 for (i = 0; i < allProjects.length; i++) {
211 211 var filterValue = allProjects[i];
212 212 var option = $('<option>');
213 213 option.val(filterValue[1]).text(filterValue[0]);
214 214 if (values[0] == filterValue[1]) { option.attr('selected', true); }
215 215 select.append(option);
216 216 }
217 217 break;
218 218 case "integer":
219 219 case "float":
220 220 case "tree":
221 221 tr.find('td.values').append(
222 222 '<span style="display:none;"><input type="text" name="v['+field+'][]" id="values_'+fieldId+'_1" size="6" class="value" /></span>' +
223 223 ' <span style="display:none;"><input type="text" name="v['+field+'][]" id="values_'+fieldId+'_2" size="6" class="value" /></span>'
224 224 );
225 225 $('#values_'+fieldId+'_1').val(values[0]);
226 226 $('#values_'+fieldId+'_2').val(values[1]);
227 227 break;
228 228 }
229 229 }
230 230
231 231 function toggleFilter(field) {
232 232 var fieldId = field.replace('.', '_');
233 233 if ($('#cb_' + fieldId).is(':checked')) {
234 234 $("#operators_" + fieldId).show().removeAttr('disabled');
235 235 toggleOperator(field);
236 236 } else {
237 237 $("#operators_" + fieldId).hide().attr('disabled', true);
238 238 enableValues(field, []);
239 239 }
240 240 }
241 241
242 242 function enableValues(field, indexes) {
243 243 var fieldId = field.replace('.', '_');
244 244 $('#tr_'+fieldId+' td.values .value').each(function(index) {
245 245 if ($.inArray(index, indexes) >= 0) {
246 246 $(this).removeAttr('disabled');
247 247 $(this).parents('span').first().show();
248 248 } else {
249 249 $(this).val('');
250 250 $(this).attr('disabled', true);
251 251 $(this).parents('span').first().hide();
252 252 }
253 253
254 254 if ($(this).hasClass('group')) {
255 255 $(this).addClass('open');
256 256 } else {
257 257 $(this).show();
258 258 }
259 259 });
260 260 }
261 261
262 262 function toggleOperator(field) {
263 263 var fieldId = field.replace('.', '_');
264 264 var operator = $("#operators_" + fieldId);
265 265 switch (operator.val()) {
266 266 case "!*":
267 267 case "*":
268 268 case "t":
269 269 case "ld":
270 270 case "w":
271 271 case "lw":
272 272 case "l2w":
273 273 case "m":
274 274 case "lm":
275 275 case "y":
276 276 case "o":
277 277 case "c":
278 278 case "*o":
279 279 case "!o":
280 280 enableValues(field, []);
281 281 break;
282 282 case "><":
283 283 enableValues(field, [0,1]);
284 284 break;
285 285 case "<t+":
286 286 case ">t+":
287 287 case "><t+":
288 288 case "t+":
289 289 case ">t-":
290 290 case "<t-":
291 291 case "><t-":
292 292 case "t-":
293 293 enableValues(field, [2]);
294 294 break;
295 295 case "=p":
296 296 case "=!p":
297 297 case "!p":
298 298 enableValues(field, [1]);
299 299 break;
300 300 default:
301 301 enableValues(field, [0]);
302 302 break;
303 303 }
304 304 }
305 305
306 306 function toggleMultiSelect(el) {
307 307 if (el.attr('multiple')) {
308 308 el.removeAttr('multiple');
309 309 el.attr('size', 1);
310 310 } else {
311 311 el.attr('multiple', true);
312 312 if (el.children().length > 10)
313 313 el.attr('size', 10);
314 314 else
315 315 el.attr('size', 4);
316 316 }
317 317 }
318 318
319 319 function showTab(name, url) {
320 320 $('#tab-content-' + name).parent().find('.tab-content').hide();
321 321 $('#tab-content-' + name).parent().find('div.tabs a').removeClass('selected');
322 322 $('#tab-content-' + name).show();
323 323 $('#tab-' + name).addClass('selected');
324 324 //replaces current URL with the "href" attribute of the current link
325 325 //(only triggered if supported by browser)
326 326 if ("replaceState" in window.history) {
327 327 window.history.replaceState(null, document.title, url);
328 328 }
329 329 return false;
330 330 }
331 331
332 332 function moveTabRight(el) {
333 333 var lis = $(el).parents('div.tabs').first().find('ul').children();
334 var bw = $(el).parents('div.tabs-buttons').outerWidth(true);
334 335 var tabsWidth = 0;
335 336 var i = 0;
336 337 lis.each(function() {
337 338 if ($(this).is(':visible')) {
338 tabsWidth += $(this).width() + 6;
339 tabsWidth += $(this).outerWidth(true);
339 340 }
340 341 });
341 if (tabsWidth < $(el).parents('div.tabs').first().width() - 60) { return; }
342 if (tabsWidth < $(el).parents('div.tabs').first().width() - bw) { return; }
343 $(el).siblings('.tab-left').removeClass('disabled');
342 344 while (i<lis.length && !lis.eq(i).is(':visible')) { i++; }
345 var w = lis.eq(i).width();
343 346 lis.eq(i).hide();
347 if (tabsWidth - w < $(el).parents('div.tabs').first().width() - bw) {
348 $(el).addClass('disabled');
349 }
344 350 }
345 351
346 352 function moveTabLeft(el) {
347 353 var lis = $(el).parents('div.tabs').first().find('ul').children();
348 354 var i = 0;
349 355 while (i < lis.length && !lis.eq(i).is(':visible')) { i++; }
350 356 if (i > 0) {
351 357 lis.eq(i-1).show();
358 $(el).siblings('.tab-right').removeClass('disabled');
359 }
360 if (i <= 1) {
361 $(el).addClass('disabled');
352 362 }
353 363 }
354 364
355 365 function displayTabsButtons() {
356 366 var lis;
357 367 var tabsWidth;
358 368 var el;
369 var numHidden;
359 370 $('div.tabs').each(function() {
360 371 el = $(this);
361 372 lis = el.find('ul').children();
362 373 tabsWidth = 0;
374 numHidden = 0;
363 375 lis.each(function(){
364 376 if ($(this).is(':visible')) {
365 tabsWidth += $(this).width() + 6;
377 tabsWidth += $(this).outerWidth(true);
378 } else {
379 numHidden++;
366 380 }
367 381 });
368 if ((tabsWidth < el.width() - 60) && (lis.first().is(':visible'))) {
382 var bw = $(el).parents('div.tabs-buttons').outerWidth(true);
383 if ((tabsWidth < el.width() - bw) && (lis.first().is(':visible'))) {
369 384 el.find('div.tabs-buttons').hide();
370 385 } else {
371 el.find('div.tabs-buttons').show();
386 el.find('div.tabs-buttons').show().children('button.tab-left').toggleClass('disabled', numHidden == 0);
372 387 }
373 388 });
374 389 }
375 390
376 391 function setPredecessorFieldsVisibility() {
377 392 var relationType = $('#relation_relation_type');
378 393 if (relationType.val() == "precedes" || relationType.val() == "follows") {
379 394 $('#predecessor_fields').show();
380 395 } else {
381 396 $('#predecessor_fields').hide();
382 397 }
383 398 }
384 399
385 400 function showModal(id, width, title) {
386 401 var el = $('#'+id).first();
387 402 if (el.length === 0 || el.is(':visible')) {return;}
388 403 if (!title) title = el.find('h3.title').text();
389 404 // moves existing modals behind the transparent background
390 405 $(".modal").zIndex(99);
391 406 el.dialog({
392 407 width: width,
393 408 modal: true,
394 409 resizable: false,
395 410 dialogClass: 'modal',
396 411 title: title
397 412 }).on('dialogclose', function(){
398 413 $(".modal").zIndex(101);
399 414 });
400 415 el.find("input[type=text], input[type=submit]").first().focus();
401 416 }
402 417
403 418 function hideModal(el) {
404 419 var modal;
405 420 if (el) {
406 421 modal = $(el).parents('.ui-dialog-content');
407 422 } else {
408 423 modal = $('#ajax-modal');
409 424 }
410 425 modal.dialog("close");
411 426 }
412 427
413 428 function submitPreview(url, form, target) {
414 429 $.ajax({
415 430 url: url,
416 431 type: 'post',
417 432 data: $('#'+form).serialize(),
418 433 success: function(data){
419 434 $('#'+target).html(data);
420 435 }
421 436 });
422 437 }
423 438
424 439 function collapseScmEntry(id) {
425 440 $('.'+id).each(function() {
426 441 if ($(this).hasClass('open')) {
427 442 collapseScmEntry($(this).attr('id'));
428 443 }
429 444 $(this).hide();
430 445 });
431 446 $('#'+id).removeClass('open');
432 447 }
433 448
434 449 function expandScmEntry(id) {
435 450 $('.'+id).each(function() {
436 451 $(this).show();
437 452 if ($(this).hasClass('loaded') && !$(this).hasClass('collapsed')) {
438 453 expandScmEntry($(this).attr('id'));
439 454 }
440 455 });
441 456 $('#'+id).addClass('open');
442 457 }
443 458
444 459 function scmEntryClick(id, url) {
445 460 var el = $('#'+id);
446 461 if (el.hasClass('open')) {
447 462 collapseScmEntry(id);
448 463 el.addClass('collapsed');
449 464 return false;
450 465 } else if (el.hasClass('loaded')) {
451 466 expandScmEntry(id);
452 467 el.removeClass('collapsed');
453 468 return false;
454 469 }
455 470 if (el.hasClass('loading')) {
456 471 return false;
457 472 }
458 473 el.addClass('loading');
459 474 $.ajax({
460 475 url: url,
461 476 success: function(data) {
462 477 el.after(data);
463 478 el.addClass('open').addClass('loaded').removeClass('loading');
464 479 }
465 480 });
466 481 return true;
467 482 }
468 483
469 484 function randomKey(size) {
470 485 var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
471 486 var key = '';
472 487 for (var i = 0; i < size; i++) {
473 488 key += chars.charAt(Math.floor(Math.random() * chars.length));
474 489 }
475 490 return key;
476 491 }
477 492
478 493 function updateIssueFrom(url, el) {
479 494 $('#all_attributes input, #all_attributes textarea, #all_attributes select').each(function(){
480 495 $(this).data('valuebeforeupdate', $(this).val());
481 496 });
482 497 if (el) {
483 498 $("#form_update_triggered_by").val($(el).attr('id'));
484 499 }
485 500 return $.ajax({
486 501 url: url,
487 502 type: 'post',
488 503 data: $('#issue-form').serialize()
489 504 });
490 505 }
491 506
492 507 function replaceIssueFormWith(html){
493 508 var replacement = $(html);
494 509 $('#all_attributes input, #all_attributes textarea, #all_attributes select').each(function(){
495 510 var object_id = $(this).attr('id');
496 511 if (object_id && $(this).data('valuebeforeupdate')!=$(this).val()) {
497 512 replacement.find('#'+object_id).val($(this).val());
498 513 }
499 514 });
500 515 $('#all_attributes').empty();
501 516 $('#all_attributes').prepend(replacement);
502 517 }
503 518
504 519 function updateBulkEditFrom(url) {
505 520 $.ajax({
506 521 url: url,
507 522 type: 'post',
508 523 data: $('#bulk_edit_form').serialize()
509 524 });
510 525 }
511 526
512 527 function observeAutocompleteField(fieldId, url, options) {
513 528 $(document).ready(function() {
514 529 $('#'+fieldId).autocomplete($.extend({
515 530 source: url,
516 531 minLength: 2,
517 532 search: function(){$('#'+fieldId).addClass('ajax-loading');},
518 533 response: function(){$('#'+fieldId).removeClass('ajax-loading');}
519 534 }, options));
520 535 $('#'+fieldId).addClass('autocomplete');
521 536 });
522 537 }
523 538
524 539 function observeSearchfield(fieldId, targetId, url) {
525 540 $('#'+fieldId).each(function() {
526 541 var $this = $(this);
527 542 $this.addClass('autocomplete');
528 543 $this.attr('data-value-was', $this.val());
529 544 var check = function() {
530 545 var val = $this.val();
531 546 if ($this.attr('data-value-was') != val){
532 547 $this.attr('data-value-was', val);
533 548 $.ajax({
534 549 url: url,
535 550 type: 'get',
536 551 data: {q: $this.val()},
537 552 success: function(data){ if(targetId) $('#'+targetId).html(data); },
538 553 beforeSend: function(){ $this.addClass('ajax-loading'); },
539 554 complete: function(){ $this.removeClass('ajax-loading'); }
540 555 });
541 556 }
542 557 };
543 558 var reset = function() {
544 559 if (timer) {
545 560 clearInterval(timer);
546 561 timer = setInterval(check, 300);
547 562 }
548 563 };
549 564 var timer = setInterval(check, 300);
550 565 $this.bind('keyup click mousemove', reset);
551 566 });
552 567 }
553 568
554 569 function beforeShowDatePicker(input, inst) {
555 570 var default_date = null;
556 571 switch ($(input).attr("id")) {
557 572 case "issue_start_date" :
558 573 if ($("#issue_due_date").size() > 0) {
559 574 default_date = $("#issue_due_date").val();
560 575 }
561 576 break;
562 577 case "issue_due_date" :
563 578 if ($("#issue_start_date").size() > 0) {
564 579 var start_date = $("#issue_start_date").val();
565 580 if (start_date != "") {
566 581 start_date = new Date(Date.parse(start_date));
567 582 if (start_date > new Date()) {
568 583 default_date = $("#issue_start_date").val();
569 584 }
570 585 }
571 586 }
572 587 break;
573 588 }
574 589 $(input).datepicker("option", "defaultDate", default_date);
575 590 }
576 591
577 592 function initMyPageSortable(list, url) {
578 593 $('#list-'+list).sortable({
579 594 connectWith: '.block-receiver',
580 595 tolerance: 'pointer',
581 596 update: function(){
582 597 $.ajax({
583 598 url: url,
584 599 type: 'post',
585 600 data: {'blocks': $.map($('#list-'+list).children(), function(el){return $(el).attr('id');})}
586 601 });
587 602 }
588 603 });
589 604 $("#list-top, #list-left, #list-right").disableSelection();
590 605 }
591 606
592 607 var warnLeavingUnsavedMessage;
593 608 function warnLeavingUnsaved(message) {
594 609 warnLeavingUnsavedMessage = message;
595 610 $(document).on('submit', 'form', function(){
596 611 $('textarea').removeData('changed');
597 612 });
598 613 $(document).on('change', 'textarea', function(){
599 614 $(this).data('changed', 'changed');
600 615 });
601 616 window.onbeforeunload = function(){
602 617 var warn = false;
603 618 $('textarea').blur().each(function(){
604 619 if ($(this).data('changed')) {
605 620 warn = true;
606 621 }
607 622 });
608 623 if (warn) {return warnLeavingUnsavedMessage;}
609 624 };
610 625 }
611 626
612 627 function setupAjaxIndicator() {
613 628 $(document).bind('ajaxSend', function(event, xhr, settings) {
614 629 if ($('.ajax-loading').length === 0 && settings.contentType != 'application/octet-stream') {
615 630 $('#ajax-indicator').show();
616 631 }
617 632 });
618 633 $(document).bind('ajaxStop', function() {
619 634 $('#ajax-indicator').hide();
620 635 });
621 636 }
622 637
623 638 function setupTabs() {
624 639 if($('.tabs').length > 0) {
625 640 displayTabsButtons();
626 641 $(window).resize(displayTabsButtons);
627 642 }
628 643 }
629 644
630 645 function hideOnLoad() {
631 646 $('.hol').hide();
632 647 }
633 648
634 649 function addFormObserversForDoubleSubmit() {
635 650 $('form[method=post]').each(function() {
636 651 if (!$(this).hasClass('multiple-submit')) {
637 652 $(this).submit(function(form_submission) {
638 653 if ($(form_submission.target).attr('data-submitted')) {
639 654 form_submission.preventDefault();
640 655 } else {
641 656 $(form_submission.target).attr('data-submitted', true);
642 657 }
643 658 });
644 659 }
645 660 });
646 661 }
647 662
648 663 function defaultFocus(){
649 664 if (($('#content :focus').length == 0) && (window.location.hash == '')) {
650 665 $('#content input[type=text], #content textarea').first().focus();
651 666 }
652 667 }
653 668
654 669 function blockEventPropagation(event) {
655 670 event.stopPropagation();
656 671 event.preventDefault();
657 672 }
658 673
659 674 function toggleDisabledOnChange() {
660 675 var checked = $(this).is(':checked');
661 676 $($(this).data('disables')).attr('disabled', checked);
662 677 $($(this).data('enables')).attr('disabled', !checked);
663 678 }
664 679 function toggleDisabledInit() {
665 680 $('input[data-disables], input[data-enables]').each(toggleDisabledOnChange);
666 681 }
667 682 $(document).ready(function(){
668 683 $('#content').on('change', 'input[data-disables], input[data-enables]', toggleDisabledOnChange);
669 684 toggleDisabledInit();
670 685 });
671 686
672 687 function keepAnchorOnSignIn(form){
673 688 var hash = decodeURIComponent(self.document.location.hash);
674 689 if (hash) {
675 690 if (hash.indexOf("#") === -1) {
676 691 hash = "#" + hash;
677 692 }
678 693 form.action = form.action + hash;
679 694 }
680 695 return true;
681 696 }
682 697
683 698 $(document).ready(setupAjaxIndicator);
684 699 $(document).ready(hideOnLoad);
685 700 $(document).ready(addFormObserversForDoubleSubmit);
686 701 $(document).ready(defaultFocus);
687 702 $(document).ready(setupTabs);
@@ -1,1341 +1,1352
1 1 html {overflow-y:scroll;}
2 2 body { font-family: Verdana, sans-serif; font-size: 12px; color:#333; margin: 0; padding: 0; min-width: 900px; }
3 3
4 4 h1, h2, h3, h4 {font-family: "Trebuchet MS", Verdana, sans-serif;padding: 2px 10px 1px 0px;margin: 0 0 10px 0;}
5 5 #content h1, h2, h3, h4 {color: #555;}
6 6 h2, .wiki h1 {font-size: 20px;}
7 7 h3, .wiki h2 {font-size: 16px;}
8 8 h4, .wiki h3 {font-size: 13px;}
9 9 h4 {border-bottom: 1px dotted #bbb;}
10 10 pre, code {font-family: Consolas, Menlo, "Liberation Mono", Courier, monospace;}
11 11
12 12 /***** Layout *****/
13 13 #wrapper {background: white;overflow: hidden;}
14 14
15 15 #top-menu {background: #3E5B76; color: #fff; height:1.8em; font-size: 0.8em; padding: 2px 2px 0px 6px;}
16 16 #top-menu ul {margin: 0; padding: 0;}
17 17 #top-menu li {
18 18 float:left;
19 19 list-style-type:none;
20 20 margin: 0px 0px 0px 0px;
21 21 padding: 0px 0px 0px 0px;
22 22 white-space:nowrap;
23 23 }
24 24 #top-menu a {color: #fff; margin-right: 8px; font-weight: bold;}
25 25 #top-menu #loggedas { float: right; margin-right: 0.5em; color: #fff; }
26 26
27 27 #account {float:right;}
28 28
29 29 #header {min-height:5.3em;margin:0;background-color:#628DB6;color:#f8f8f8; padding: 4px 8px 20px 6px; position:relative;}
30 30 #header a {color:#f8f8f8;}
31 31 #header h1 a.ancestor { font-size: 80%; }
32 32 #quick-search {float:right;}
33 33
34 34 #main-menu {position: absolute; bottom: 0px; left:6px; margin-right: -500px; width: 100%;}
35 35 #main-menu ul {margin: 0; padding: 0; width: 100%; white-space: nowrap;}
36 36 #main-menu li {
37 37 float:none;
38 38 list-style-type:none;
39 39 margin: 0px 2px 0px 0px;
40 40 padding: 0px 0px 0px 0px;
41 41 white-space:nowrap;
42 42 display:inline-block;
43 43 }
44 44 #main-menu li a {
45 45 display: block;
46 46 color: #fff;
47 47 text-decoration: none;
48 48 font-weight: bold;
49 49 margin: 0;
50 50 padding: 4px 10px 4px 10px;
51 51 }
52 52 #main-menu li a:hover {background:#759FCF; color:#fff;}
53 53 #main-menu li a.selected, #main-menu li a.selected:hover {background:#fff; color:#555;}
54 54 #main-menu .tabs-buttons {
55 55 right: 6px;
56 56 background-color: transparent;
57 57 border-bottom-color: transparent;
58 58 }
59 59
60 60 #admin-menu ul {margin: 0; padding: 0;}
61 61 #admin-menu li {margin: 0; padding: 0 0 6px 0; list-style-type:none;}
62 62
63 63 #admin-menu a { background-position: 0% 40%; background-repeat: no-repeat; padding-left: 20px; padding-top: 2px; padding-bottom: 3px;}
64 64 #admin-menu a.projects { background-image: url(../images/projects.png); }
65 65 #admin-menu a.users { background-image: url(../images/user.png); }
66 66 #admin-menu a.groups { background-image: url(../images/group.png); }
67 67 #admin-menu a.roles { background-image: url(../images/database_key.png); }
68 68 #admin-menu a.trackers { background-image: url(../images/ticket.png); }
69 69 #admin-menu a.issue_statuses { background-image: url(../images/ticket_edit.png); }
70 70 #admin-menu a.workflows { background-image: url(../images/ticket_go.png); }
71 71 #admin-menu a.custom_fields { background-image: url(../images/textfield.png); }
72 72 #admin-menu a.enumerations { background-image: url(../images/text_list_bullets.png); }
73 73 #admin-menu a.settings { background-image: url(../images/changeset.png); }
74 74 #admin-menu a.plugins { background-image: url(../images/plugin.png); }
75 75 #admin-menu a.info { background-image: url(../images/help.png); }
76 76 #admin-menu a.server_authentication { background-image: url(../images/server_key.png); }
77 77
78 78 #main {background-color:#EEEEEE;}
79 79
80 80 #sidebar{ float: right; width: 22%; position: relative; z-index: 9; padding: 0; margin: 0;}
81 81 * html #sidebar{ width: 22%; }
82 82 #sidebar h3{ font-size: 14px; margin-top:14px; color: #666; }
83 83 #sidebar hr{ width: 100%; margin: 0 auto; height: 1px; background: #ccc; border: 0; }
84 84 * html #sidebar hr{ width: 95%; position: relative; left: -6px; color: #ccc; }
85 85 #sidebar .contextual { margin-right: 1em; }
86 86 #sidebar ul, ul.flat {margin: 0; padding: 0;}
87 87 #sidebar ul li, ul.flat li {list-style-type:none;margin: 0px 2px 0px 0px; padding: 0px 0px 0px 0px;}
88 88 #sidebar div.wiki h3 {font-size:13px; margin-top:0; color:#555;}
89 89 #sidebar div.wiki ul {margin:inherit; padding-left:40px;}
90 90 #sidebar div.wiki ul li {list-style-type:inherit;}
91 91
92 92 #content { width: 75%; background-color: #fff; margin: 0px; border-right: 1px solid #ddd; padding: 6px 10px 10px 10px; z-index: 10; }
93 93 * html #content{ width: 75%; padding-left: 0; margin-top: 0px; padding: 6px 10px 10px 10px;}
94 94 html>body #content { min-height: 600px; }
95 95 * html body #content { height: 600px; } /* IE */
96 96
97 97 #main.nosidebar #sidebar{ display: none; }
98 98 #main.nosidebar #content{ width: auto; border-right: 0; }
99 99
100 100 #footer {clear: both; border-top: 1px solid #bbb; font-size: 0.9em; color: #aaa; padding: 5px; text-align:center; background:#fff;}
101 101
102 102 #login-form table {margin-top:5em; padding:1em; margin-left: auto; margin-right: auto; border: 2px solid #FDBF3B; background-color:#FFEBC1; }
103 103 #login-form table td {padding: 6px;}
104 104 #login-form label {font-weight: bold;}
105 105 #login-form input#username, #login-form input#password { width: 300px; }
106 106
107 107 div.modal { border-radius:5px; background:#fff; z-index:50; padding:4px;}
108 108 div.modal h3.title {display:none;}
109 109 div.modal p.buttons {text-align:right; margin-bottom:0;}
110 110 div.modal .box p {margin: 0.3em 0;}
111 111
112 112 input#openid_url { background: url(../images/openid-bg.gif) no-repeat; background-color: #fff; background-position: 0 50%; padding-left: 18px; }
113 113
114 114 .clear:after{ content: "."; display: block; height: 0; clear: both; visibility: hidden; }
115 115
116 116 .mobile-show {display: none;}
117 117
118 118 /***** Links *****/
119 119 a, a:link, a:visited{ color: #169; text-decoration: none; }
120 120 a:hover, a:active{ color: #c61a1a; text-decoration: underline;}
121 121 a img{ border: 0; }
122 122
123 123 a.issue.closed, a.issue.closed:link, a.issue.closed:visited { color: #999; text-decoration: line-through; }
124 124 a.project.closed, a.project.closed:link, a.project.closed:visited { color: #999; }
125 125 a.user.locked, a.user.locked:link, a.user.locked:visited {color: #999;}
126 126
127 127 #sidebar a.selected {line-height:1.7em; padding:1px 3px 2px 2px; margin-left:-2px; background-color:#9DB9D5; color:#fff; border-radius:2px;}
128 128 #sidebar a.selected:hover {text-decoration:none;}
129 129 #admin-menu a {line-height:1.7em;}
130 130 #admin-menu a.selected {padding-left: 20px !important; background-position: 2px 40%;}
131 131
132 132 a.collapsible {padding-left: 12px; background: url(../images/arrow_expanded.png) no-repeat -3px 40%;}
133 133 a.collapsible.collapsed {background: url(../images/arrow_collapsed.png) no-repeat -5px 40%;}
134 134
135 135 a#toggle-completed-versions {color:#999;}
136 136
137 137 a.toggle-checkboxes { margin-left: 5px; padding-left: 12px; background: url(../images/toggle_check.png) no-repeat 0% 50%; }
138 138
139 139 /***** Tables *****/
140 140 table.list { border: 1px solid #e4e4e4; border-collapse: collapse; width: 100%; margin-bottom: 4px; }
141 141 table.list th { background-color:#EEEEEE; padding: 4px; white-space:nowrap; }
142 142 table.list td {text-align:center; vertical-align:top; padding-right:10px;}
143 143 table.list td.id { width: 2%; text-align: center;}
144 144 table.list td.name, table.list td.description, table.list td.subject, table.list td.comments, table.list td.roles {text-align: left;}
145 145 table.list td.tick {width:15%}
146 146 table.list td.checkbox { width: 15px; padding: 2px 0 0 0; }
147 147 table.list td.checkbox input {padding:0px;}
148 148 table.list td.buttons { width: 15%; white-space:nowrap; text-align: right; }
149 149 table.list td.buttons a { padding-right: 0.6em; }
150 150 table.list td.buttons img {vertical-align:middle;}
151 151 table.list td.reorder {width:15%; white-space:nowrap; text-align:center; }
152 152 table.list caption { text-align: left; padding: 0.5em 0.5em 0.5em 0; }
153 153
154 154 tr.project td.name a { white-space:nowrap; }
155 155 tr.project.closed, tr.project.archived { color: #aaa; }
156 156 tr.project.closed a, tr.project.archived a { color: #aaa; }
157 157
158 158 tr.project.idnt td.name span {background: url(../images/bullet_arrow_right.png) no-repeat 0 50%; padding-left: 16px;}
159 159 tr.project.idnt-1 td.name {padding-left: 0.5em;}
160 160 tr.project.idnt-2 td.name {padding-left: 2em;}
161 161 tr.project.idnt-3 td.name {padding-left: 3.5em;}
162 162 tr.project.idnt-4 td.name {padding-left: 5em;}
163 163 tr.project.idnt-5 td.name {padding-left: 6.5em;}
164 164 tr.project.idnt-6 td.name {padding-left: 8em;}
165 165 tr.project.idnt-7 td.name {padding-left: 9.5em;}
166 166 tr.project.idnt-8 td.name {padding-left: 11em;}
167 167 tr.project.idnt-9 td.name {padding-left: 12.5em;}
168 168
169 169 tr.issue { text-align: center; white-space: nowrap; }
170 170 tr.issue td.subject, tr.issue td.category, td.assigned_to, tr.issue td.string, tr.issue td.text, tr.issue td.relations, tr.issue td.parent { white-space: normal; }
171 171 tr.issue td.relations { text-align: left; }
172 172 tr.issue td.done_ratio table.progress { margin-left:auto; margin-right: auto;}
173 173 tr.issue td.relations span {white-space: nowrap;}
174 174 table.issues td.description {color:#777; font-size:90%; padding:4px 4px 4px 24px; text-align:left; white-space:normal;}
175 175 table.issues td.description pre {white-space:normal;}
176 176
177 177 tr.issue.idnt td.subject a {background: url(../images/bullet_arrow_right.png) no-repeat 0 50%; padding-left: 16px;}
178 178 tr.issue.idnt-1 td.subject {padding-left: 0.5em;}
179 179 tr.issue.idnt-2 td.subject {padding-left: 2em;}
180 180 tr.issue.idnt-3 td.subject {padding-left: 3.5em;}
181 181 tr.issue.idnt-4 td.subject {padding-left: 5em;}
182 182 tr.issue.idnt-5 td.subject {padding-left: 6.5em;}
183 183 tr.issue.idnt-6 td.subject {padding-left: 8em;}
184 184 tr.issue.idnt-7 td.subject {padding-left: 9.5em;}
185 185 tr.issue.idnt-8 td.subject {padding-left: 11em;}
186 186 tr.issue.idnt-9 td.subject {padding-left: 12.5em;}
187 187
188 188 table.issue-report {table-layout:fixed;}
189 189
190 190 tr.entry { border: 1px solid #f8f8f8; }
191 191 tr.entry td { white-space: nowrap; }
192 192 tr.entry td.filename {width:30%; text-align:left;}
193 193 tr.entry td.filename_no_report {width:70%; text-align:left;}
194 194 tr.entry td.size { text-align: right; font-size: 90%; }
195 195 tr.entry td.revision, tr.entry td.author { text-align: center; }
196 196 tr.entry td.age { text-align: right; }
197 197 tr.entry.file td.filename a { margin-left: 16px; }
198 198 tr.entry.file td.filename_no_report a { margin-left: 16px; }
199 199
200 200 tr span.expander {background-image: url(../images/bullet_toggle_plus.png); padding-left: 8px; margin-left: 0; cursor: pointer;}
201 201 tr.open span.expander {background-image: url(../images/bullet_toggle_minus.png);}
202 202
203 203 tr.changeset { height: 20px }
204 204 tr.changeset ul, ol { margin-top: 0px; margin-bottom: 0px; }
205 205 tr.changeset td.revision_graph { width: 15%; background-color: #fffffb; }
206 206 tr.changeset td.author { text-align: center; width: 15%; white-space:nowrap;}
207 207 tr.changeset td.committed_on { text-align: center; width: 15%; white-space:nowrap;}
208 208
209 209 table.files tbody th {text-align:left;}
210 210 table.files tr.file td.filename { text-align: left; padding-left: 24px; }
211 211 table.files tr.file td.digest { font-size: 80%; }
212 212
213 213 table.members td.roles, table.memberships td.roles { width: 45%; }
214 214
215 215 tr.message { height: 2.6em; }
216 216 tr.message td.subject { padding-left: 20px; }
217 217 tr.message td.created_on { white-space: nowrap; }
218 218 tr.message td.last_message { font-size: 80%; white-space: nowrap; }
219 219 tr.message.locked td.subject { background: url(../images/locked.png) no-repeat 0 1px; }
220 220 tr.message.sticky td.subject { background: url(../images/bullet_go.png) no-repeat 0 1px; font-weight: bold; }
221 221
222 222 tr.version.closed, tr.version.closed a { color: #999; }
223 223 tr.version td.name { padding-left: 20px; }
224 224 tr.version.shared td.name { background: url(../images/link.png) no-repeat 0% 70%; }
225 225 tr.version td.date, tr.version td.status, tr.version td.sharing { text-align: center; white-space:nowrap; }
226 226
227 227 tr.user td {width:13%;white-space: nowrap;}
228 228 td.username, td.firstname, td.lastname, td.email {text-align:left !important;}
229 229 tr.user td.email { width:18%; }
230 230 tr.user.locked, tr.user.registered { color: #aaa; }
231 231 tr.user.locked a, tr.user.registered a { color: #aaa; }
232 232
233 233 table.permissions td.role {color:#999;font-size:90%;font-weight:normal !important;text-align:center;vertical-align:bottom;}
234 234
235 235 tr.wiki-page-version td.updated_on, tr.wiki-page-version td.author {text-align:center;}
236 236
237 237 tr.time-entry { text-align: center; white-space: nowrap; }
238 238 tr.time-entry td.issue, tr.time-entry td.comments, tr.time-entry td.subject, tr.time-entry td.activity { text-align: left; white-space: normal; }
239 239 td.hours { text-align: right; font-weight: bold; padding-right: 0.5em; }
240 240 td.hours .hours-dec { font-size: 0.9em; }
241 241
242 242 table.plugins td { vertical-align: middle; }
243 243 table.plugins td.configure { text-align: right; padding-right: 1em; }
244 244 table.plugins span.name { font-weight: bold; display: block; margin-bottom: 6px; }
245 245 table.plugins span.description { display: block; font-size: 0.9em; }
246 246 table.plugins span.url { display: block; font-size: 0.9em; }
247 247
248 248 tr.group td { padding: 0.8em 0 0.5em 0.3em; border-bottom: 1px solid #ccc; text-align:left; }
249 249 tr.group span.name {font-weight:bold;}
250 250 tr.group span.count {font-weight:bold; position:relative; top:-1px; color:#fff; font-size:10px; background:#9DB9D5; padding:0px 6px 1px 6px; border-radius:3px; margin-left:4px;}
251 251 tr.group span.totals {color: #aaa; font-size: 80%;}
252 252 tr.group span.totals .value {font-weight:bold; color:#777;}
253 253 tr.group a.toggle-all { color: #aaa; font-size: 80%; display:none; float:right; margin-right:4px;}
254 254 tr.group:hover a.toggle-all { display:inline;}
255 255 a.toggle-all:hover {text-decoration:none;}
256 256
257 257 table.list tbody tr:hover { background-color:#ffffdd; }
258 258 table.list tbody tr.group:hover { background-color:inherit; }
259 259 table td {padding:2px;}
260 260 table p {margin:0;}
261 261 .odd {background-color:#f6f7f8;}
262 262 .even {background-color: #fff;}
263 263
264 264 tr.builtin td.name {font-style:italic;}
265 265
266 266 a.sort { padding-right: 16px; background-position: 100% 50%; background-repeat: no-repeat; }
267 267 a.sort.asc { background-image: url(../images/sort_asc.png); }
268 268 a.sort.desc { background-image: url(../images/sort_desc.png); }
269 269
270 270 table.boards a.board, h3.comments { background: url(../images/comment.png) no-repeat 0% 50%; padding-left: 20px; }
271 271 table.boards td.last-message {text-align:left;font-size:80%;}
272 272
273 273 table.messages td.last_message {text-align:left;}
274 274
275 275 #query_form_content {font-size:90%;}
276 276
277 277 .query_sort_criteria_count {
278 278 display: inline-block;
279 279 min-width: 1em;
280 280 }
281 281
282 282 table.query-columns {
283 283 border-collapse: collapse;
284 284 border: 0;
285 285 }
286 286
287 287 table.query-columns td.buttons {
288 288 vertical-align: middle;
289 289 text-align: center;
290 290 }
291 291 table.query-columns td.buttons input[type=button] {width:35px;}
292 292 .query-totals {text-align:right; margin-top:-2.3em;}
293 293 .query-totals>span {margin-left:0.6em;}
294 294 .query-totals .value {font-weight:bold;}
295 295
296 296 td.center {text-align:center;}
297 297
298 298 h3.version { background: url(../images/package.png) no-repeat 0% 50%; padding-left: 20px; }
299 299
300 300 div.issues h3 { background: url(../images/ticket.png) no-repeat 0% 50%; padding-left: 20px; }
301 301 div.members h3 { background: url(../images/group.png) no-repeat 0% 50%; padding-left: 20px; }
302 302 div.news h3 { background: url(../images/news.png) no-repeat 0% 50%; padding-left: 20px; }
303 303 div.projects h3 { background: url(../images/projects.png) no-repeat 0% 50%; padding-left: 20px; }
304 304
305 305 #watchers select {width: 95%; display: block;}
306 306 #watchers a.delete {opacity: 0.4; margin-left: 5px;}
307 307 #watchers a.delete:hover {opacity: 1;}
308 308 #watchers img.gravatar {margin: 0 4px 2px 0;}
309 309
310 310 span#watchers_inputs {overflow:auto; display:block;}
311 311 span.search_for_watchers {display:block;}
312 312 span.search_for_watchers, span.add_attachment {font-size:80%; line-height:2.5em;}
313 313 span.search_for_watchers a, span.add_attachment a {padding-left:16px; background: url(../images/bullet_add.png) no-repeat 0 50%; }
314 314
315 315
316 316 .highlight { background-color: #FCFD8D;}
317 317 .highlight.token-1 { background-color: #faa;}
318 318 .highlight.token-2 { background-color: #afa;}
319 319 .highlight.token-3 { background-color: #aaf;}
320 320
321 321 .box{
322 322 padding:6px;
323 323 margin-bottom: 10px;
324 324 background-color:#f6f6f6;
325 325 color:#505050;
326 326 line-height:1.5em;
327 327 border: 1px solid #e4e4e4;
328 328 word-wrap: break-word;
329 329 border-radius: 3px;
330 330 }
331 331 .pagination .per-page span.selected {
332 332 font-weight: bold;
333 333 }
334 334
335 335 div.square {
336 336 border: 1px solid #999;
337 337 float: left;
338 338 margin: .3em .4em 0 .4em;
339 339 overflow: hidden;
340 340 width: .6em; height: .6em;
341 341 }
342 342 .contextual {float:right; white-space: nowrap; line-height:1.4em;margin-top:5px; padding-left: 10px; font-size:0.9em;}
343 343 .contextual input, .contextual select {font-size:0.9em;}
344 344 .message .contextual { margin-top: 0; }
345 345
346 346 .splitcontent {overflow:auto;}
347 347 .splitcontentleft{float:left; width:49%;}
348 348 .splitcontentright{float:right; width:49%;}
349 349 form {display: inline;}
350 350 input, select {vertical-align: middle; margin-top: 1px; margin-bottom: 1px;}
351 351 fieldset {border: 1px solid #e4e4e4; margin:0;}
352 352 legend {color: #333;}
353 353 hr { width: 100%; height: 1px; background: #ccc; border: 0;}
354 354 blockquote { font-style: italic; border-left: 3px solid #e0e0e0; padding-left: 0.6em; margin-left: 2.4em;}
355 355 blockquote blockquote { margin-left: 0;}
356 356 abbr, span.field-description[title] { border-bottom: 1px dotted #aaa; cursor: help; }
357 357 textarea.wiki-edit {width:99%; resize:vertical;}
358 358 li p {margin-top: 0;}
359 359 div.issue {background:#ffffdd; padding:6px; margin-bottom:6px; border: 1px solid #d7d7d7; border-radius:3px;}
360 360 p.breadcrumb { font-size: 0.9em; margin: 4px 0 4px 0;}
361 361 p.subtitle { font-size: 0.9em; margin: -6px 0 12px 0; font-style: italic; }
362 362 p.footnote { font-size: 0.9em; margin-top: 0px; margin-bottom: 0px; }
363 363 .ltr {direction:ltr !important; unicode-bidi:bidi-override;}
364 364 .rtl {direction:rtl !important; unicode-bidi:bidi-override;}
365 365
366 366 div.issue div.subject div div { padding-left: 16px; }
367 367 div.issue div.subject p {margin: 0; margin-bottom: 0.1em; font-size: 90%; color: #999;}
368 368 div.issue div.subject>div>p { margin-top: 0.5em; }
369 369 div.issue div.subject h3 {margin: 0; margin-bottom: 0.1em;}
370 370 div.issue span.private, div.journal span.private { position:relative; bottom: 2px; text-transform: uppercase; background: #d22; color: #fff; font-weight:bold; padding: 0px 2px 0px 2px; font-size: 60%; margin-right: 2px; border-radius: 2px;}
371 371 div.issue .next-prev-links {color:#999;}
372 372 div.issue .attributes {margin-top: 2em;}
373 373 div.issue .attribute {padding-left:180px; clear:left; min-height: 1.8em;}
374 374 div.issue .attribute .label {width: 170px; margin-left:-180px; font-weight:bold; float:left;}
375 375 div.issue.overdue .due-date .value { color: #c22; }
376 376
377 377 #issue_tree table.issues, #relations table.issues { border: 0; }
378 378 #issue_tree td.checkbox, #relations td.checkbox {display:none;}
379 379 #relations td.buttons {padding:0;}
380 380
381 381 fieldset.collapsible {border-width: 1px 0 0 0;}
382 382 fieldset.collapsible>legend { padding-left: 16px; background: url(../images/arrow_expanded.png) no-repeat 0% 40%; cursor:pointer; }
383 383 fieldset.collapsible.collapsed>legend { background-image: url(../images/arrow_collapsed.png); }
384 384
385 385 fieldset#date-range p { margin: 2px 0 2px 0; }
386 386 fieldset#filters table { border-collapse: collapse; }
387 387 fieldset#filters table td { padding: 0; vertical-align: middle; }
388 388 fieldset#filters tr.filter { height: 2.1em; }
389 389 fieldset#filters td.field { width:230px; }
390 390 fieldset#filters td.operator { width:180px; }
391 391 fieldset#filters td.operator select {max-width:170px;}
392 392 fieldset#filters td.values { white-space:nowrap; }
393 393 fieldset#filters td.values select {min-width:130px;}
394 394 fieldset#filters td.values input {height:1em;}
395 395
396 396 #filters-table {width:60%; float:left;}
397 397 .add-filter {width:35%; float:right; text-align: right; vertical-align: top;}
398 398
399 399 #issue_is_private_wrap {float:right; margin-right:1em;}
400 400 .toggle-multiselect {background: url(../images/bullet_toggle_plus.png) no-repeat 0% 40%; padding-left:16px; margin-left:0; margin-right:5px; cursor:pointer;}
401 401 .buttons { font-size: 0.9em; margin-bottom: 1.4em; margin-top: 1em; }
402 402
403 403 div#issue-changesets {float:right; width:45%; margin-left: 1em; margin-bottom: 1em; background: #fff; padding-left: 1em; font-size: 90%;}
404 404 div#issue-changesets div.changeset { padding: 4px;}
405 405 div#issue-changesets div.changeset { border-bottom: 1px solid #ddd; }
406 406 div#issue-changesets p { margin-top: 0; margin-bottom: 1em;}
407 407
408 408 .journal ul.details img {margin:0 0 -3px 4px;}
409 409 div.journal {overflow:auto;}
410 410 div.journal.private-notes {border-left:2px solid #d22; padding-left:4px; margin-left:-6px;}
411 411 div.journal ul.details {color:#959595; margin-bottom: 1.5em;}
412 412 div.journal ul.details a {color:#70A7CD;}
413 413 div.journal ul.details a:hover {color:#D14848;}
414 414
415 415 div#activity dl, #search-results { margin-left: 2em; }
416 416 div#activity dd, #search-results dd { margin-bottom: 1em; padding-left: 18px; font-size: 0.9em; }
417 417 div#activity dt, #search-results dt { margin-bottom: 0px; padding-left: 20px; line-height: 18px; background-position: 0 50%; background-repeat: no-repeat; }
418 418 div#activity dt.me .time { border-bottom: 1px solid #999; }
419 419 div#activity dt .time { color: #777; font-size: 80%; }
420 420 div#activity dd .description, #search-results dd .description { font-style: italic; }
421 421 div#activity span.project:after, #search-results span.project:after { content: " -"; }
422 422 div#activity dd span.description, #search-results dd span.description { display:block; color: #808080; }
423 423 div#activity dt.grouped {margin-left:5em;}
424 424 div#activity dd.grouped {margin-left:9em;}
425 425
426 426 #search-results dd { margin-bottom: 1em; padding-left: 20px; margin-left:0px; }
427 427
428 428 div#search-results-counts {float:right;}
429 429 div#search-results-counts ul { margin-top: 0.5em; }
430 430 div#search-results-counts li { list-style-type:none; float: left; margin-left: 1em; }
431 431
432 432 dt.issue { background-image: url(../images/ticket.png); }
433 433 dt.issue-edit { background-image: url(../images/ticket_edit.png); }
434 434 dt.issue-closed { background-image: url(../images/ticket_checked.png); }
435 435 dt.issue-note { background-image: url(../images/ticket_note.png); }
436 436 dt.changeset { background-image: url(../images/changeset.png); }
437 437 dt.news { background-image: url(../images/news.png); }
438 438 dt.message { background-image: url(../images/message.png); }
439 439 dt.reply { background-image: url(../images/comments.png); }
440 440 dt.wiki-page { background-image: url(../images/wiki_edit.png); }
441 441 dt.attachment { background-image: url(../images/attachment.png); }
442 442 dt.document { background-image: url(../images/document.png); }
443 443 dt.project { background-image: url(../images/projects.png); }
444 444 dt.time-entry { background-image: url(../images/time.png); }
445 445
446 446 #search-results dt.issue.closed { background-image: url(../images/ticket_checked.png); }
447 447
448 448 div#roadmap .related-issues { margin-bottom: 1em; }
449 449 div#roadmap .related-issues td.checkbox { display: none; }
450 450 div#roadmap .wiki h1:first-child { display: none; }
451 451 div#roadmap .wiki h1 { font-size: 120%; }
452 452 div#roadmap .wiki h2 { font-size: 110%; }
453 453 body.controller-versions.action-show div#roadmap .related-issues {width:70%;}
454 454
455 455 div#version-summary { float:right; width:28%; margin-left: 16px; margin-bottom: 16px; background-color: #fff; }
456 456 div#version-summary fieldset { margin-bottom: 1em; }
457 457 div#version-summary fieldset.time-tracking table { width:100%; }
458 458 div#version-summary th, div#version-summary td.total-hours { text-align: right; }
459 459
460 460 table#time-report td.hours, table#time-report th.period, table#time-report th.total { text-align: right; padding-right: 0.5em; }
461 461 table#time-report tbody tr.subtotal { font-style: italic; color:#777;}
462 462 table#time-report tbody tr.subtotal td.hours { color:#b0b0b0; }
463 463 table#time-report tbody tr.total { font-weight: bold; background-color:#EEEEEE; border-top:1px solid #e4e4e4;}
464 464 table#time-report .hours-dec { font-size: 0.9em; }
465 465
466 466 div.wiki-page .contextual a {opacity: 0.4}
467 467 div.wiki-page .contextual a:hover {opacity: 1}
468 468
469 469 form .attributes select { width: 60%; }
470 470 form .attributes select + a.icon-only { vertical-align: middle; margin-left: 4px; }
471 471 input#issue_subject, input#document_title { width: 99%; }
472 472 select#issue_done_ratio { width: 95px; }
473 473
474 474 ul.projects {margin:0; padding-left:1em;}
475 475 ul.projects ul {padding-left:1.6em;}
476 476 ul.projects.root {margin:0; padding:0;}
477 477 ul.projects li {list-style-type:none;}
478 478
479 479 #projects-index ul.projects ul.projects { border-left: 3px solid #e0e0e0; padding-left:1em;}
480 480 #projects-index ul.projects li.root {margin-bottom: 1em;}
481 481 #projects-index ul.projects li.child {margin-top: 1em;}
482 482 #projects-index ul.projects div.root a.project { font-family: "Trebuchet MS", Verdana, sans-serif; font-weight: bold; font-size: 16px; margin: 0 0 10px 0; }
483 483 .my-project { padding-left: 18px; background: url(../images/fav.png) no-repeat 0 50%; }
484 484
485 485 #notified-projects>ul, #tracker_project_ids>ul, #custom_field_project_ids>ul {max-height:250px; overflow-y:auto;}
486 486
487 487 #related-issues li img {vertical-align:middle;}
488 488
489 489 ul.properties {padding:0; font-size: 0.9em; color: #777;}
490 490 ul.properties li {list-style-type:none;}
491 491 ul.properties li span {font-style:italic;}
492 492
493 493 .total-hours { font-size: 110%; font-weight: bold; }
494 494 .total-hours span.hours-int { font-size: 120%; }
495 495
496 496 .autoscroll {overflow-x: auto; padding:1px; margin-bottom: 1.2em;}
497 497 #user_login, #user_firstname, #user_lastname, #user_mail, #my_account_form select, #user_form select, #user_identity_url { width: 90%; }
498 498
499 499 #workflow_copy_form select { width: 200px; }
500 500 table.transitions td.enabled {background: #bfb;}
501 501 #workflow_form table select {font-size:90%; max-width:100px;}
502 502 table.fields_permissions td.readonly {background:#ddd;}
503 503 table.fields_permissions td.required {background:#d88;}
504 504
505 505 select.expandable {vertical-align:top;}
506 506
507 507 textarea#custom_field_possible_values {width: 95%; resize:vertical}
508 508 textarea#custom_field_default_value {width: 95%; resize:vertical}
509 509 .sort-handle {display:inline-block; vertical-align:middle;}
510 510
511 511 input#content_comments {width: 99%}
512 512
513 513 span.pagination {margin-left:3px; color:#888;}
514 514 .pagination ul.pages {
515 515 margin: 0 5px 0 0;
516 516 padding: 0;
517 517 display: inline;
518 518 }
519 519 .pagination ul.pages li {
520 520 display: inline-block;
521 521 padding: 0;
522 522 border: 1px solid #ccc;
523 523 margin-left: -1px;
524 524 line-height: 2em;
525 525 margin-bottom: 1em;
526 526 white-space: nowrap;
527 527 text-align: center;
528 528 }
529 529 .pagination ul.pages li a,
530 530 .pagination ul.pages li span {
531 531 padding: 3px 8px;
532 532 }
533 533 .pagination ul.pages li:first-child {
534 534 border-top-left-radius: 4px;
535 535 border-bottom-left-radius: 4px;
536 536 }
537 537 .pagination ul.pages li:last-child {
538 538 border-top-right-radius: 4px;
539 539 border-bottom-right-radius: 4px;
540 540 }
541 541 .pagination ul.pages li.current {
542 542 color: white;
543 543 background-color: #628DB6;
544 544 border-color: #628DB6;
545 545 }
546 546 .pagination ul.pages li.page:hover {
547 547 background-color: #EEE;
548 548 }
549 549 .pagination ul.pages li.page a:hover,
550 550 .pagination ul.pages li.page a:active {
551 551 color: inherit;
552 552 text-decoration: inherit;
553 553 }
554 554 span.pagination>span {white-space:nowrap;}
555 555
556 556 #search-form fieldset p {margin:0.2em 0;}
557 557
558 558 /***** Tabular forms ******/
559 559 .tabular p{
560 560 margin: 0;
561 561 padding: 3px 0 3px 0;
562 562 padding-left: 180px; /* width of left column containing the label elements */
563 563 min-height: 1.8em;
564 564 clear:left;
565 565 }
566 566
567 567 html>body .tabular p {overflow:hidden;}
568 568
569 569 .tabular input, .tabular select {max-width:95%}
570 570 .tabular textarea {width:95%; resize:vertical;}
571 571
572 572 .tabular label{
573 573 font-weight: bold;
574 574 float: left;
575 575 text-align: right;
576 576 /* width of left column */
577 577 margin-left: -180px;
578 578 /* width of labels. Should be smaller than left column to create some right margin */
579 579 width: 175px;
580 580 }
581 581
582 582 .tabular label.floating{
583 583 font-weight: normal;
584 584 margin-left: 0px;
585 585 text-align: left;
586 586 width: 270px;
587 587 }
588 588
589 589 .tabular label.block{
590 590 font-weight: normal;
591 591 margin-left: 0px !important;
592 592 text-align: left;
593 593 float: none;
594 594 display: block;
595 595 width: auto !important;
596 596 }
597 597
598 598 .tabular label.inline{
599 599 font-weight: normal;
600 600 float:none;
601 601 margin-left: 5px !important;
602 602 width: auto;
603 603 }
604 604
605 605 label.no-css {
606 606 font-weight: inherit;
607 607 float:none;
608 608 text-align:left;
609 609 margin-left:0px;
610 610 width:auto;
611 611 }
612 612 input#time_entry_comments { width: 90%;}
613 613
614 614 #preview fieldset {margin-top: 1em; background: url(../images/draft.png)}
615 615
616 616 .tabular.settings p{ padding-left: 300px; }
617 617 .tabular.settings label{ margin-left: -300px; width: 295px; }
618 618 .tabular.settings textarea { width: 99%; }
619 619
620 620 .settings.enabled_scm table {width:100%}
621 621 .settings.enabled_scm td.scm_name{ font-weight: bold; }
622 622
623 623 fieldset.settings label { display: block; }
624 624 fieldset#notified_events .parent { padding-left: 20px; }
625 625
626 626 span.required {color: #bb0000;}
627 627 .summary {font-style: italic;}
628 628
629 629 .check_box_group {
630 630 display:block;
631 631 width:95%;
632 632 max-height:300px;
633 633 overflow-y:auto;
634 634 padding:2px 4px 4px 2px;
635 635 background:#fff;
636 636 border:1px solid #9EB1C2;
637 637 border-radius:2px
638 638 }
639 639 .check_box_group label {
640 640 font-weight: normal;
641 641 margin-left: 0px !important;
642 642 text-align: left;
643 643 float: none;
644 644 display: block;
645 645 width: auto;
646 646 }
647 647 .check_box_group.bool_cf {border:0; background:inherit;}
648 648 .check_box_group.bool_cf label {display: inline;}
649 649
650 650 #attachments_fields input.description {margin-left:4px; width:340px;}
651 651 #attachments_fields span {display:block; white-space:nowrap;}
652 652 #attachments_fields input.filename {border:0; height:1.8em; width:250px; color:#555; background-color:inherit; background:url(../images/attachment.png) no-repeat 1px 50%; padding-left:18px;}
653 653 #attachments_fields .ajax-waiting input.filename {background:url(../images/hourglass.png) no-repeat 0px 50%;}
654 654 #attachments_fields .ajax-loading input.filename {background:url(../images/loading.gif) no-repeat 0px 50%;}
655 655 #attachments_fields div.ui-progressbar { width: 100px; height:14px; margin: 2px 0 -5px 8px; display: inline-block; }
656 656 a.remove-upload {background: url(../images/delete.png) no-repeat 1px 50%; width:1px; display:inline-block; padding-left:16px;}
657 657 a.remove-upload:hover {text-decoration:none !important;}
658 658
659 659 div.fileover { background-color: lavender; }
660 660
661 661 div.attachments { margin-top: 12px; }
662 662 div.attachments p { margin:4px 0 2px 0; }
663 663 div.attachments img { vertical-align: middle; }
664 664 div.attachments span.author { font-size: 0.9em; color: #888; }
665 665
666 666 div.thumbnails {margin-top:0.6em;}
667 667 div.thumbnails div {background:#fff;border:2px solid #ddd;display:inline-block;margin-right:2px;}
668 668 div.thumbnails img {margin: 3px; vertical-align: middle;}
669 669 #history div.thumbnails {margin-left: 2em;}
670 670
671 671 p.other-formats { text-align: right; font-size:0.9em; color: #666; }
672 672 .other-formats span + span:before { content: "| "; }
673 673
674 674 a.atom { background: url(../images/feed.png) no-repeat 1px 50%; padding: 2px 0px 3px 16px; }
675 675
676 676 em.info {font-style:normal;font-size:90%;color:#888;display:block;}
677 677 em.info.error {padding-left:20px; background:url(../images/exclamation.png) no-repeat 0 50%;}
678 678
679 679 textarea.text_cf {width:95%; resize:vertical;}
680 680 input.string_cf, input.link_cf {width:95%;}
681 681 select.bool_cf {width:auto !important;}
682 682
683 683 #tab-content-modules fieldset p {margin:3px 0 4px 0;}
684 684
685 685 #tab-content-users .splitcontentleft {width: 64%;}
686 686 #tab-content-users .splitcontentright {width: 34%;}
687 687 #tab-content-users fieldset {padding:1em; margin-bottom: 1em;}
688 688 #tab-content-users fieldset legend {font-weight: bold;}
689 689 #tab-content-users fieldset label {display: block;}
690 690 #tab-content-users #principals {max-height: 400px; overflow: auto;}
691 691
692 692 #users_for_watcher {height: 200px; overflow:auto;}
693 693 #users_for_watcher label {display: block;}
694 694
695 695 table.members td.name {padding-left: 20px;}
696 696 table.members td.group, table.members td.groupnonmember, table.members td.groupanonymous {background: url(../images/group.png) no-repeat 0% 1px;}
697 697
698 698 input#principal_search, input#user_search {width:90%}
699 699 .roles-selection label {display:inline-block; width:210px;}
700 700
701 701 input.autocomplete {
702 702 background: #fff url(../images/magnifier.png) no-repeat 2px 50%; padding-left:20px !important;
703 703 border:1px solid #9EB1C2; border-radius:2px; height:1.5em;
704 704 }
705 705 input.autocomplete.ajax-loading {
706 706 background-image: url(../images/loading.gif);
707 707 }
708 708
709 709 .role-visibility {padding-left:2em;}
710 710
711 711 .objects-selection {
712 712 height: 300px;
713 713 overflow: auto;
714 714 margin-bottom: 1em;
715 715 }
716 716
717 717 .objects-selection label {
718 718 display: block;
719 719 }
720 720
721 721 .objects-selection>div {
722 722 column-count: auto;
723 723 column-width: 200px;
724 724 -webkit-column-count: auto;
725 725 -webkit-column-width: 200px;
726 726 -webkit-column-gap : 0.5rem;
727 727 -webkit-column-rule: 1px solid #ccc;
728 728 -moz-column-count: auto;
729 729 -moz-column-width: 200px;
730 730 -moz-column-gap : 0.5rem;
731 731 -moz-column-rule: 1px solid #ccc;
732 732 }
733 733
734 734 /***** Flash & error messages ****/
735 735 #errorExplanation, div.flash, .nodata, .warning, .conflict {
736 736 padding: 4px 4px 4px 30px;
737 737 margin-bottom: 12px;
738 738 font-size: 1.1em;
739 739 border: 2px solid;
740 740 border-radius: 3px;
741 741 }
742 742
743 743 div.flash {margin-top: 8px;}
744 744
745 745 div.flash.error, #errorExplanation {
746 746 background: url(../images/exclamation.png) 8px 50% no-repeat;
747 747 background-color: #ffe3e3;
748 748 border-color: #dd0000;
749 749 color: #880000;
750 750 }
751 751
752 752 div.flash.notice {
753 753 background: url(../images/true.png) 8px 5px no-repeat;
754 754 background-color: #dfffdf;
755 755 border-color: #9fcf9f;
756 756 color: #005f00;
757 757 }
758 758
759 759 div.flash.warning, .conflict {
760 760 background: url(../images/warning.png) 8px 5px no-repeat;
761 761 background-color: #FFEBC1;
762 762 border-color: #FDBF3B;
763 763 color: #A6750C;
764 764 text-align: left;
765 765 }
766 766
767 767 .nodata, .warning {
768 768 text-align: center;
769 769 background-color: #FFEBC1;
770 770 border-color: #FDBF3B;
771 771 color: #A6750C;
772 772 }
773 773
774 774 #errorExplanation ul { font-size: 0.9em;}
775 775 #errorExplanation h2, #errorExplanation p { display: none; }
776 776
777 777 .conflict-details {font-size:80%;}
778 778
779 779 /***** Ajax indicator ******/
780 780 #ajax-indicator {
781 781 position: absolute; /* fixed not supported by IE */
782 782 background-color:#eee;
783 783 border: 1px solid #bbb;
784 784 top:35%;
785 785 left:40%;
786 786 width:20%;
787 787 font-weight:bold;
788 788 text-align:center;
789 789 padding:0.6em;
790 790 z-index:100;
791 791 opacity: 0.5;
792 792 }
793 793
794 794 html>body #ajax-indicator { position: fixed; }
795 795
796 796 #ajax-indicator span {
797 797 background-position: 0% 40%;
798 798 background-repeat: no-repeat;
799 799 background-image: url(../images/loading.gif);
800 800 padding-left: 26px;
801 801 vertical-align: bottom;
802 802 }
803 803
804 804 /***** Calendar *****/
805 805 table.cal {border-collapse: collapse; width: 100%; margin: 0px 0 6px 0;border: 1px solid #d7d7d7;}
806 806 table.cal thead th {width: 14%; background-color:#EEEEEE; padding: 4px; }
807 807 table.cal thead th.week-number {width: auto;}
808 808 table.cal tbody tr {height: 100px;}
809 809 table.cal td {border: 1px solid #d7d7d7; vertical-align: top; font-size: 0.9em;}
810 810 table.cal td.week-number { background-color:#EEEEEE; padding: 4px; border:none; font-size: 1em;}
811 811 table.cal td p.day-num {font-size: 1.1em; text-align:right;}
812 812 table.cal td.odd p.day-num {color: #bbb;}
813 813 table.cal td.today {background:#ffffdd;}
814 814 table.cal td.today p.day-num {font-weight: bold;}
815 815 table.cal .starting a, p.cal.legend .starting {background: url(../images/bullet_go.png) no-repeat -1px -2px; padding-left:16px;}
816 816 table.cal .ending a, p.cal.legend .ending {background: url(../images/bullet_end.png) no-repeat -1px -2px; padding-left:16px;}
817 817 table.cal .starting.ending a, p.cal.legend .starting.ending {background: url(../images/bullet_diamond.png) no-repeat -1px -2px; padding-left:16px;}
818 818 p.cal.legend span {display:block;}
819 819
820 820 /***** Tooltips ******/
821 821 .tooltip{position:relative;z-index:24;}
822 822 .tooltip:hover{z-index:25;color:#000;}
823 823 .tooltip span.tip{display: none; text-align:left;}
824 824
825 825 div.tooltip:hover span.tip{
826 826 display:block;
827 827 position:absolute;
828 828 top:12px; width:270px;
829 829 border:1px solid #555;
830 830 background-color:#fff;
831 831 padding: 4px;
832 832 font-size: 0.8em;
833 833 color:#505050;
834 834 }
835 835
836 836 img.ui-datepicker-trigger {
837 837 cursor: pointer;
838 838 vertical-align: middle;
839 839 margin-left: 4px;
840 840 }
841 841
842 842 /***** Progress bar *****/
843 843 table.progress {
844 844 border-collapse: collapse;
845 845 border-spacing: 0pt;
846 846 empty-cells: show;
847 847 text-align: center;
848 848 float:left;
849 849 margin: 1px 6px 1px 0px;
850 850 }
851 851
852 852 table.progress {width:80px;}
853 853 table.progress td { height: 1em; }
854 854 table.progress td.closed { background: #BAE0BA none repeat scroll 0%; }
855 855 table.progress td.done { background: #D3EDD3 none repeat scroll 0%; }
856 856 table.progress td.todo { background: #eee none repeat scroll 0%; }
857 857 p.percent {font-size: 80%; margin:0;}
858 858 p.progress-info {clear: left; font-size: 80%; margin-top:-4px; color:#777;}
859 859
860 860 .version-overview table.progress {width:40em;}
861 861 .version-overview table.progress td { height: 1.2em; }
862 862
863 863 /***** Tabs *****/
864 864 #content .tabs {height: 2.6em; margin-bottom:1.2em; position:relative; overflow:hidden;}
865 865 #content .tabs ul {margin:0; position:absolute; bottom:0; padding-left:0.5em; width: 2000px; border-bottom: 1px solid #bbbbbb;}
866 866 #content .tabs ul li {
867 867 float:left;
868 868 list-style-type:none;
869 869 white-space:nowrap;
870 870 margin-right:4px;
871 871 background:#fff;
872 872 position:relative;
873 873 margin-bottom:-1px;
874 874 }
875 875 #content .tabs ul li a{
876 876 display:block;
877 877 font-size: 0.9em;
878 878 text-decoration:none;
879 879 line-height:1.3em;
880 880 padding:4px 6px 4px 6px;
881 881 border: 1px solid #ccc;
882 882 border-bottom: 1px solid #bbbbbb;
883 883 background-color: #f6f6f6;
884 884 color:#999;
885 885 font-weight:bold;
886 886 border-top-left-radius:3px;
887 887 border-top-right-radius:3px;
888 888 }
889 889
890 890 #content .tabs ul li a:hover {
891 891 background-color: #ffffdd;
892 892 text-decoration:none;
893 893 }
894 894
895 895 #content .tabs ul li a.selected {
896 896 background-color: #fff;
897 897 border: 1px solid #bbbbbb;
898 898 border-bottom: 1px solid #fff;
899 899 color:#444;
900 900 }
901 901
902 902 #content .tabs ul li a.selected:hover {background-color: #fff;}
903 903
904 div.tabs-buttons { position:absolute; right: 0; width: 48px; height: 24px; background: white; bottom: 0; border-bottom: 1px solid #bbbbbb; }
904 div.tabs-buttons { position:absolute; right: 0; width: 54px; height: 24px; background: white; bottom: 0; border-bottom: 1px solid #bbbbbb; }
905 905
906 906 button.tab-left, button.tab-right {
907 907 font-size: 0.9em;
908 908 cursor: pointer;
909 909 height:24px;
910 910 border: 1px solid #ccc;
911 911 border-bottom: 1px solid #bbbbbb;
912 912 position:absolute;
913 913 padding:4px;
914 914 width: 20px;
915 915 bottom: -1px;
916 916 }
917 button.tab-left:hover, button.tab-right:hover {
918 background-color: #f5f5f5;
919 }
920 button.tab-left:focus, button.tab-right:focus {
921 outline: 0;
922 }
917 923
918 924 button.tab-left {
919 925 right: 20px;
920 926 background: #eeeeee url(../images/bullet_arrow_left.png) no-repeat 50% 50%;
921 927 border-top-left-radius:3px;
922 928 }
923 929
924 930 button.tab-right {
925 931 right: 0;
926 932 background: #eeeeee url(../images/bullet_arrow_right.png) no-repeat 50% 50%;
927 933 border-top-right-radius:3px;
928 934 }
929 935
936 button.tab-left.disabled, button.tab-right.disabled {
937 background-color: #ccc;
938 cursor: unset;
939 }
940
930 941 /***** Diff *****/
931 942 .diff_out { background: #fcc; }
932 943 .diff_out span { background: #faa; }
933 944 .diff_in { background: #cfc; }
934 945 .diff_in span { background: #afa; }
935 946
936 947 .text-diff {
937 948 padding: 1em;
938 949 background-color:#f6f6f6;
939 950 color:#505050;
940 951 border: 1px solid #e4e4e4;
941 952 }
942 953
943 954 /***** Wiki *****/
944 955 div.wiki table {
945 956 border-collapse: collapse;
946 957 margin-bottom: 1em;
947 958 }
948 959
949 960 div.wiki table, div.wiki td, div.wiki th {
950 961 border: 1px solid #bbb;
951 962 padding: 4px;
952 963 }
953 964
954 965 div.wiki .noborder, div.wiki .noborder td, div.wiki .noborder th {border:0;}
955 966
956 967 div.wiki .external {
957 968 background-position: 0% 60%;
958 969 background-repeat: no-repeat;
959 970 padding-left: 12px;
960 971 background-image: url(../images/external.png);
961 972 }
962 973
963 974 div.wiki a {word-wrap: break-word;}
964 975 div.wiki a.new {color: #b73535;}
965 976
966 977 div.wiki ul, div.wiki ol {margin-bottom:1em;}
967 978 div.wiki li>ul, div.wiki li>ol {margin-bottom: 0;}
968 979
969 980 div.wiki pre {
970 981 margin: 1em 1em 1em 1.6em;
971 982 padding: 8px;
972 983 background-color: #fafafa;
973 984 border: 1px solid #e2e2e2;
974 985 border-radius: 3px;
975 986 width:auto;
976 987 overflow-x: auto;
977 988 overflow-y: hidden;
978 989 }
979 990
980 991 div.wiki ul.toc {
981 992 background-color: #ffffdd;
982 993 border: 1px solid #e4e4e4;
983 994 padding: 4px;
984 995 line-height: 1.2em;
985 996 margin-bottom: 12px;
986 997 margin-right: 12px;
987 998 margin-left: 0;
988 999 display: table
989 1000 }
990 1001 * html div.wiki ul.toc { width: 50%; } /* IE6 doesn't autosize div */
991 1002
992 1003 div.wiki ul.toc.right { float: right; margin-left: 12px; margin-right: 0; width: auto; }
993 1004 div.wiki ul.toc.left { float: left; margin-right: 12px; margin-left: 0; width: auto; }
994 1005 div.wiki ul.toc ul { margin: 0; padding: 0; }
995 1006 div.wiki ul.toc li {list-style-type:none; margin: 0; font-size:12px;}
996 1007 div.wiki ul.toc li li {margin-left: 1.5em; font-size:10px;}
997 1008 div.wiki ul.toc a {
998 1009 font-size: 0.9em;
999 1010 font-weight: normal;
1000 1011 text-decoration: none;
1001 1012 color: #606060;
1002 1013 }
1003 1014 div.wiki ul.toc a:hover { color: #c61a1a; text-decoration: underline;}
1004 1015
1005 1016 a.wiki-anchor { display: none; margin-left: 6px; text-decoration: none; }
1006 1017 a.wiki-anchor:hover { color: #aaa !important; text-decoration: none; }
1007 1018 h1:hover a.wiki-anchor, h2:hover a.wiki-anchor, h3:hover a.wiki-anchor { display: inline; color: #ddd; }
1008 1019
1009 1020 div.wiki img {vertical-align:middle; max-width:100%;}
1010 1021
1011 1022 /***** My page layout *****/
1012 1023 .block-receiver {
1013 1024 border:1px dashed #c0c0c0;
1014 1025 margin-bottom: 20px;
1015 1026 padding: 15px 0 15px 0;
1016 1027 }
1017 1028
1018 1029 .mypage-box {
1019 1030 margin:0 0 20px 0;
1020 1031 color:#505050;
1021 1032 line-height:1.5em;
1022 1033 }
1023 1034
1024 1035 .handle {cursor: move;}
1025 1036
1026 1037 a.close-icon {
1027 1038 display:block;
1028 1039 margin-top:3px;
1029 1040 overflow:hidden;
1030 1041 width:12px;
1031 1042 height:12px;
1032 1043 background-repeat: no-repeat;
1033 1044 cursor:pointer;
1034 1045 background-image:url('../images/close.png');
1035 1046 }
1036 1047 a.close-icon:hover {background-image:url('../images/close_hl.png');}
1037 1048
1038 1049 /***** Gantt chart *****/
1039 1050 .gantt_hdr {
1040 1051 position:absolute;
1041 1052 top:0;
1042 1053 height:16px;
1043 1054 border-top: 1px solid #c0c0c0;
1044 1055 border-bottom: 1px solid #c0c0c0;
1045 1056 border-right: 1px solid #c0c0c0;
1046 1057 text-align: center;
1047 1058 overflow: hidden;
1048 1059 }
1049 1060
1050 1061 .gantt_hdr.nwday {background-color:#f1f1f1; color:#999;}
1051 1062
1052 1063 .gantt_subjects { font-size: 0.8em; }
1053 1064 .gantt_subjects div { line-height:16px;height:16px;overflow:hidden;white-space:nowrap;text-overflow: ellipsis; }
1054 1065
1055 1066 .task {
1056 1067 position: absolute;
1057 1068 height:8px;
1058 1069 font-size:0.8em;
1059 1070 color:#888;
1060 1071 padding:0;
1061 1072 margin:0;
1062 1073 line-height:16px;
1063 1074 white-space:nowrap;
1064 1075 }
1065 1076
1066 1077 .task.label {width:100%;}
1067 1078 .task.label.project, .task.label.version { font-weight: bold; }
1068 1079
1069 1080 .task_late { background:#f66 url(../images/task_late.png); border: 1px solid #f66; }
1070 1081 .task_done { background:#00c600 url(../images/task_done.png); border: 1px solid #00c600; }
1071 1082 .task_todo { background:#aaa url(../images/task_todo.png); border: 1px solid #aaa; }
1072 1083
1073 1084 .task_todo.parent { background: #888; border: 1px solid #888; height: 3px;}
1074 1085 .task_late.parent, .task_done.parent { height: 3px;}
1075 1086 .task.parent.marker.starting { position: absolute; background: url(../images/task_parent_end.png) no-repeat 0 0; width: 8px; height: 16px; margin-left: -4px; left: 0px; top: -1px;}
1076 1087 .task.parent.marker.ending { position: absolute; background: url(../images/task_parent_end.png) no-repeat 0 0; width: 8px; height: 16px; margin-left: -4px; right: 0px; top: -1px;}
1077 1088
1078 1089 .version.task_late { background:#f66 url(../images/milestone_late.png); border: 1px solid #f66; height: 2px; margin-top: 3px;}
1079 1090 .version.task_done { background:#00c600 url(../images/milestone_done.png); border: 1px solid #00c600; height: 2px; margin-top: 3px;}
1080 1091 .version.task_todo { background:#fff url(../images/milestone_todo.png); border: 1px solid #fff; height: 2px; margin-top: 3px;}
1081 1092 .version.marker { background-image:url(../images/version_marker.png); background-repeat: no-repeat; border: 0; margin-left: -4px; margin-top: 1px; }
1082 1093
1083 1094 .project.task_late { background:#f66 url(../images/milestone_late.png); border: 1px solid #f66; height: 2px; margin-top: 3px;}
1084 1095 .project.task_done { background:#00c600 url(../images/milestone_done.png); border: 1px solid #00c600; height: 2px; margin-top: 3px;}
1085 1096 .project.task_todo { background:#fff url(../images/milestone_todo.png); border: 1px solid #fff; height: 2px; margin-top: 3px;}
1086 1097 .project.marker { background-image:url(../images/project_marker.png); background-repeat: no-repeat; border: 0; margin-left: -4px; margin-top: 1px; }
1087 1098
1088 1099 .version-behind-schedule a, .issue-behind-schedule a {color: #f66914;}
1089 1100 .version-overdue a, .issue-overdue a, .project-overdue a {color: #f00;}
1090 1101
1091 1102 /***** Icons *****/
1092 1103 .icon {
1093 1104 background-position: 0% 50%;
1094 1105 background-repeat: no-repeat;
1095 1106 padding-left: 20px;
1096 1107 padding-top: 2px;
1097 1108 padding-bottom: 3px;
1098 1109 }
1099 1110 .icon-only {
1100 1111 background-position: 0% 50%;
1101 1112 background-repeat: no-repeat;
1102 1113 padding-left: 16px;
1103 1114 }
1104 1115
1105 1116 .icon-add { background-image: url(../images/add.png); }
1106 1117 .icon-edit { background-image: url(../images/edit.png); }
1107 1118 .icon-copy { background-image: url(../images/copy.png); }
1108 1119 .icon-duplicate { background-image: url(../images/duplicate.png); }
1109 1120 .icon-del { background-image: url(../images/delete.png); }
1110 1121 .icon-move { background-image: url(../images/move.png); }
1111 1122 .icon-save { background-image: url(../images/save.png); }
1112 1123 .icon-cancel { background-image: url(../images/cancel.png); }
1113 1124 .icon-multiple { background-image: url(../images/table_multiple.png); }
1114 1125 .icon-folder { background-image: url(../images/folder.png); }
1115 1126 .open .icon-folder { background-image: url(../images/folder_open.png); }
1116 1127 .icon-package { background-image: url(../images/package.png); }
1117 1128 .icon-user { background-image: url(../images/user.png); }
1118 1129 .icon-projects { background-image: url(../images/projects.png); }
1119 1130 .icon-help { background-image: url(../images/help.png); }
1120 1131 .icon-attachment { background-image: url(../images/attachment.png); }
1121 1132 .icon-history { background-image: url(../images/history.png); }
1122 1133 .icon-time { background-image: url(../images/time.png); }
1123 1134 .icon-time-add { background-image: url(../images/time_add.png); }
1124 1135 .icon-stats { background-image: url(../images/stats.png); }
1125 1136 .icon-warning { background-image: url(../images/warning.png); }
1126 1137 .icon-error { background-image: url(../images/exclamation.png); }
1127 1138 .icon-fav { background-image: url(../images/fav.png); }
1128 1139 .icon-fav-off { background-image: url(../images/fav_off.png); }
1129 1140 .icon-reload { background-image: url(../images/reload.png); }
1130 1141 .icon-lock { background-image: url(../images/locked.png); }
1131 1142 .icon-unlock { background-image: url(../images/unlock.png); }
1132 1143 .icon-checked { background-image: url(../images/toggle_check.png); }
1133 1144 .icon-details { background-image: url(../images/zoom_in.png); }
1134 1145 .icon-report { background-image: url(../images/report.png); }
1135 1146 .icon-comment { background-image: url(../images/comment.png); }
1136 1147 .icon-summary { background-image: url(../images/lightning.png); }
1137 1148 .icon-server-authentication { background-image: url(../images/server_key.png); }
1138 1149 .icon-issue { background-image: url(../images/ticket.png); }
1139 1150 .icon-zoom-in { background-image: url(../images/zoom_in.png); }
1140 1151 .icon-zoom-out { background-image: url(../images/zoom_out.png); }
1141 1152 .icon-magnifier { background-image: url(../images/magnifier.png); }
1142 1153 .icon-passwd { background-image: url(../images/textfield_key.png); }
1143 1154 .icon-test { background-image: url(../images/bullet_go.png); }
1144 1155 .icon-email { background-image: url(../images/email.png); }
1145 1156 .icon-email-disabled { background-image: url(../images/email_disabled.png); }
1146 1157 .icon-email-add { background-image: url(../images/email_add.png); }
1147 1158 .icon-move-up { background-image: url(../images/1uparrow.png); }
1148 1159 .icon-move-top { background-image: url(../images/2uparrow.png); }
1149 1160 .icon-move-down { background-image: url(../images/1downarrow.png); }
1150 1161 .icon-move-bottom { background-image: url(../images/2downarrow.png); }
1151 1162 .icon-ok { background-image: url(../images/true.png); }
1152 1163 .icon-not-ok { background-image: url(../images/false.png); }
1153 1164 .icon-link-break { background-image: url(../images/link_break.png); }
1154 1165
1155 1166 .icon-file { background-image: url(../images/files/default.png); }
1156 1167 .icon-file.text-plain { background-image: url(../images/files/text.png); }
1157 1168 .icon-file.text-x-c { background-image: url(../images/files/c.png); }
1158 1169 .icon-file.text-x-csharp { background-image: url(../images/files/csharp.png); }
1159 1170 .icon-file.text-x-java { background-image: url(../images/files/java.png); }
1160 1171 .icon-file.text-x-javascript { background-image: url(../images/files/js.png); }
1161 1172 .icon-file.text-x-php { background-image: url(../images/files/php.png); }
1162 1173 .icon-file.text-x-ruby { background-image: url(../images/files/ruby.png); }
1163 1174 .icon-file.text-xml { background-image: url(../images/files/xml.png); }
1164 1175 .icon-file.text-css { background-image: url(../images/files/css.png); }
1165 1176 .icon-file.text-html { background-image: url(../images/files/html.png); }
1166 1177 .icon-file.image-gif { background-image: url(../images/files/image.png); }
1167 1178 .icon-file.image-jpeg { background-image: url(../images/files/image.png); }
1168 1179 .icon-file.image-png { background-image: url(../images/files/image.png); }
1169 1180 .icon-file.image-tiff { background-image: url(../images/files/image.png); }
1170 1181 .icon-file.application-pdf { background-image: url(../images/files/pdf.png); }
1171 1182 .icon-file.application-zip { background-image: url(../images/files/zip.png); }
1172 1183 .icon-file.application-x-gzip { background-image: url(../images/files/zip.png); }
1173 1184
1174 1185 img.gravatar {
1175 1186 padding: 2px;
1176 1187 border: solid 1px #d5d5d5;
1177 1188 background: #fff;
1178 1189 vertical-align: middle;
1179 1190 }
1180 1191
1181 1192 div.issue img.gravatar {
1182 1193 float: left;
1183 1194 margin: 0 6px 0 0;
1184 1195 padding: 5px;
1185 1196 }
1186 1197
1187 1198 div.issue .attributes img.gravatar {
1188 1199 height: 14px;
1189 1200 width: 14px;
1190 1201 padding: 2px;
1191 1202 float: left;
1192 1203 margin: 0 0.5em 0 0;
1193 1204 }
1194 1205
1195 1206 h2 img.gravatar {margin: -2px 4px -4px 0;}
1196 1207 h3 img.gravatar {margin: -4px 4px -4px 0;}
1197 1208 h4 img.gravatar {margin: -6px 4px -4px 0;}
1198 1209 td.username img.gravatar {margin: 0 0.5em 0 0; vertical-align: top;}
1199 1210 #activity dt img.gravatar {float: left; margin: 0 1em 1em 0;}
1200 1211 /* Used on 12px Gravatar img tags without the icon background */
1201 1212 .icon-gravatar {float: left; margin-right: 4px;}
1202 1213
1203 1214 #activity dt, .journal {clear: left;}
1204 1215
1205 1216 .journal-link {float: right;}
1206 1217
1207 1218 h2 img { vertical-align:middle; }
1208 1219
1209 1220 .hascontextmenu { cursor: context-menu; }
1210 1221
1211 1222 .sample-data {border:1px solid #ccc; border-collapse:collapse; background-color:#fff; margin:0.5em;}
1212 1223 .sample-data td {border:1px solid #ccc; padding: 2px 4px; font-family: Consolas, Menlo, "Liberation Mono", Courier, monospace;}
1213 1224 .sample-data tr:first-child td {font-weight:bold; text-align:center;}
1214 1225
1215 1226 .ui-progressbar {position: relative;}
1216 1227 #progress-label {
1217 1228 position: absolute; left: 50%; top: 4px;
1218 1229 font-weight: bold;
1219 1230 color: #555; text-shadow: 1px 1px 0 #fff;
1220 1231 }
1221 1232
1222 1233 /* Custom JQuery styles */
1223 1234 .ui-datepicker-title select {width:70px !important; margin-top:-2px !important; margin-right:4px !important;}
1224 1235
1225 1236
1226 1237 /************* CodeRay styles *************/
1227 1238 .syntaxhl div {display: inline;}
1228 1239 .syntaxhl .code pre { overflow: auto }
1229 1240
1230 1241 .syntaxhl .annotation { color:#007 }
1231 1242 .syntaxhl .attribute-name { color:#b48 }
1232 1243 .syntaxhl .attribute-value { color:#700 }
1233 1244 .syntaxhl .binary { color:#549 }
1234 1245 .syntaxhl .binary .char { color:#325 }
1235 1246 .syntaxhl .binary .delimiter { color:#325 }
1236 1247 .syntaxhl .char { color:#D20 }
1237 1248 .syntaxhl .char .content { color:#D20 }
1238 1249 .syntaxhl .char .delimiter { color:#710 }
1239 1250 .syntaxhl .class { color:#258; font-weight:bold }
1240 1251 .syntaxhl .class-variable { color:#369 }
1241 1252 .syntaxhl .color { color:#0A0 }
1242 1253 .syntaxhl .comment { color:#385 }
1243 1254 .syntaxhl .comment .char { color:#385 }
1244 1255 .syntaxhl .comment .delimiter { color:#385 }
1245 1256 .syntaxhl .constant { color:#258; font-weight:bold }
1246 1257 .syntaxhl .decorator { color:#B0B }
1247 1258 .syntaxhl .definition { color:#099; font-weight:bold }
1248 1259 .syntaxhl .delimiter { color:black }
1249 1260 .syntaxhl .directive { color:#088; font-weight:bold }
1250 1261 .syntaxhl .docstring { color:#D42; }
1251 1262 .syntaxhl .doctype { color:#34b }
1252 1263 .syntaxhl .done { text-decoration: line-through; color: gray }
1253 1264 .syntaxhl .entity { color:#800; font-weight:bold }
1254 1265 .syntaxhl .error { color:#F00; background-color:#FAA }
1255 1266 .syntaxhl .escape { color:#666 }
1256 1267 .syntaxhl .exception { color:#C00; font-weight:bold }
1257 1268 .syntaxhl .float { color:#06D }
1258 1269 .syntaxhl .function { color:#06B; font-weight:bold }
1259 1270 .syntaxhl .function .delimiter { color:#024; font-weight:bold }
1260 1271 .syntaxhl .global-variable { color:#d70 }
1261 1272 .syntaxhl .hex { color:#02b }
1262 1273 .syntaxhl .id { color:#33D; font-weight:bold }
1263 1274 .syntaxhl .include { color:#B44; font-weight:bold }
1264 1275 .syntaxhl .inline { background-color: hsla(0,0%,0%,0.07); color: black }
1265 1276 .syntaxhl .inline-delimiter { font-weight: bold; color: #666 }
1266 1277 .syntaxhl .instance-variable { color:#33B }
1267 1278 .syntaxhl .integer { color:#06D }
1268 1279 .syntaxhl .imaginary { color:#f00 }
1269 1280 .syntaxhl .important { color:#D00 }
1270 1281 .syntaxhl .key { color: #606 }
1271 1282 .syntaxhl .key .char { color: #60f }
1272 1283 .syntaxhl .key .delimiter { color: #404 }
1273 1284 .syntaxhl .keyword { color:#939; font-weight:bold }
1274 1285 .syntaxhl .label { color:#970; font-weight:bold }
1275 1286 .syntaxhl .local-variable { color:#950 }
1276 1287 .syntaxhl .map .content { color:#808 }
1277 1288 .syntaxhl .map .delimiter { color:#40A}
1278 1289 .syntaxhl .map { background-color:hsla(200,100%,50%,0.06); }
1279 1290 .syntaxhl .namespace { color:#707; font-weight:bold }
1280 1291 .syntaxhl .octal { color:#40E }
1281 1292 .syntaxhl .operator { }
1282 1293 .syntaxhl .predefined { color:#369; font-weight:bold }
1283 1294 .syntaxhl .predefined-constant { color:#069 }
1284 1295 .syntaxhl .predefined-type { color:#0a8; font-weight:bold }
1285 1296 .syntaxhl .preprocessor { color:#579 }
1286 1297 .syntaxhl .pseudo-class { color:#00C; font-weight:bold }
1287 1298 .syntaxhl .regexp { background-color:hsla(300,100%,50%,0.06); }
1288 1299 .syntaxhl .regexp .content { color:#808 }
1289 1300 .syntaxhl .regexp .delimiter { color:#404 }
1290 1301 .syntaxhl .regexp .modifier { color:#C2C }
1291 1302 .syntaxhl .reserved { color:#080; font-weight:bold }
1292 1303 .syntaxhl .shell { background-color:hsla(120,100%,50%,0.06); }
1293 1304 .syntaxhl .shell .content { color:#2B2 }
1294 1305 .syntaxhl .shell .delimiter { color:#161 }
1295 1306 .syntaxhl .string .char { color: #46a }
1296 1307 .syntaxhl .string .content { color: #46a }
1297 1308 .syntaxhl .string .delimiter { color: #46a }
1298 1309 .syntaxhl .string .modifier { color: #46a }
1299 1310 .syntaxhl .symbol { color:#d33 }
1300 1311 .syntaxhl .symbol .content { color:#d33 }
1301 1312 .syntaxhl .symbol .delimiter { color:#d33 }
1302 1313 .syntaxhl .tag { color:#070; font-weight:bold }
1303 1314 .syntaxhl .type { color:#339; font-weight:bold }
1304 1315 .syntaxhl .value { color: #088 }
1305 1316 .syntaxhl .variable { color:#037 }
1306 1317
1307 1318 .syntaxhl .insert { background: hsla(120,100%,50%,0.12) }
1308 1319 .syntaxhl .delete { background: hsla(0,100%,50%,0.12) }
1309 1320 .syntaxhl .change { color: #bbf; background: #007 }
1310 1321 .syntaxhl .head { color: #f8f; background: #505 }
1311 1322 .syntaxhl .head .filename { color: white; }
1312 1323
1313 1324 .syntaxhl .delete .eyecatcher { background-color: hsla(0,100%,50%,0.2); border: 1px solid hsla(0,100%,45%,0.5); margin: -1px; border-bottom: none; border-top-left-radius: 5px; border-top-right-radius: 5px; }
1314 1325 .syntaxhl .insert .eyecatcher { background-color: hsla(120,100%,50%,0.2); border: 1px solid hsla(120,100%,25%,0.5); margin: -1px; border-top: none; border-bottom-left-radius: 5px; border-bottom-right-radius: 5px; }
1315 1326
1316 1327 .syntaxhl .insert .insert { color: #0c0; background:transparent; font-weight:bold }
1317 1328 .syntaxhl .delete .delete { color: #c00; background:transparent; font-weight:bold }
1318 1329 .syntaxhl .change .change { color: #88f }
1319 1330 .syntaxhl .head .head { color: #f4f }
1320 1331
1321 1332 /***** Media print specific styles *****/
1322 1333 @media print {
1323 1334 #top-menu, #header, #main-menu, #sidebar, #footer, .contextual, .other-formats { display:none; }
1324 1335 #main { background: #fff; }
1325 1336 #content { width: 99%; margin: 0; padding: 0; border: 0; background: #fff; overflow: visible !important;}
1326 1337 #wiki_add_attachment { display:none; }
1327 1338 .hide-when-print { display: none; }
1328 1339 .autoscroll {overflow-x: visible;}
1329 1340 table.list {margin-top:0.5em;}
1330 1341 table.list th, table.list td {border: 1px solid #aaa;}
1331 1342 }
1332 1343
1333 1344 /* Accessibility specific styles */
1334 1345 .hidden-for-sighted {
1335 1346 position:absolute;
1336 1347 left:-10000px;
1337 1348 top:auto;
1338 1349 width:1px;
1339 1350 height:1px;
1340 1351 overflow:hidden;
1341 1352 }
General Comments 0
You need to be logged in to leave comments. Login now