comparison public/javascripts/application.js @ 1298:4f746d8966dd redmine_2.3_integration

Merge from redmine-2.3 branch to create new branch redmine-2.3-integration
author Chris Cannam
date Fri, 14 Jun 2013 09:28:30 +0100
parents bb32da3bea34 622f24f53b42
children
comparison
equal deleted inserted replaced
1297:0a574315af3e 1298:4f746d8966dd
1 /* Redmine - project management software 1 /* Redmine - project management software
2 Copyright (C) 2006-2012 Jean-Philippe Lang */ 2 Copyright (C) 2006-2013 Jean-Philippe Lang */
3 3
4 function checkAll(id, checked) { 4 function checkAll(id, checked) {
5 if (checked) { 5 if (checked) {
6 $('#'+id).find('input[type=checkbox]').attr('checked', true); 6 $('#'+id).find('input[type=checkbox]').attr('checked', true);
7 } else { 7 } else {
12 function toggleCheckboxesBySelector(selector) { 12 function toggleCheckboxesBySelector(selector) {
13 var all_checked = true; 13 var all_checked = true;
14 $(selector).each(function(index) { 14 $(selector).each(function(index) {
15 if (!$(this).is(':checked')) { all_checked = false; } 15 if (!$(this).is(':checked')) { all_checked = false; }
16 }); 16 });
17 $(selector).attr('checked', !all_checked) 17 $(selector).attr('checked', !all_checked);
18 } 18 }
19 19
20 function showAndScrollTo(id, focus) { 20 function showAndScrollTo(id, focus) {
21 $('#'+id).show(); 21 $('#'+id).show();
22 if (focus!=null) { 22 if (focus !== null) {
23 $('#'+focus).focus(); 23 $('#'+focus).focus();
24 } 24 }
25 $('html, body').animate({scrollTop: $('#'+id).offset().top}, 100); 25 $('html, body').animate({scrollTop: $('#'+id).offset().top}, 100);
26 } 26 }
27 27
129 filterTable.append(tr); 129 filterTable.append(tr);
130 130
131 select = tr.find('td.operator select'); 131 select = tr.find('td.operator select');
132 for (i=0;i<operators.length;i++){ 132 for (i=0;i<operators.length;i++){
133 var option = $('<option>').val(operators[i]).text(operatorLabels[operators[i]]); 133 var option = $('<option>').val(operators[i]).text(operatorLabels[operators[i]]);
134 if (operators[i] == operator) {option.attr('selected', true)}; 134 if (operators[i] == operator) { option.attr('selected', true); }
135 select.append(option); 135 select.append(option);
136 } 136 }
137 select.change(function(){toggleOperator(field)}); 137 select.change(function(){ toggleOperator(field); });
138 138
139 switch (filterOptions['type']){ 139 switch (filterOptions['type']){
140 case "list": 140 case "list":
141 case "list_optional": 141 case "list_optional":
142 case "list_status": 142 case "list_status":
144 tr.find('td.values').append( 144 tr.find('td.values').append(
145 '<span style="display:none;"><select class="value" id="values_'+fieldId+'_1" name="v['+field+'][]"></select>' + 145 '<span style="display:none;"><select class="value" id="values_'+fieldId+'_1" name="v['+field+'][]"></select>' +
146 ' <span class="toggle-multiselect">&nbsp;</span></span>' 146 ' <span class="toggle-multiselect">&nbsp;</span></span>'
147 ); 147 );
148 select = tr.find('td.values select'); 148 select = tr.find('td.values select');
149 if (values.length > 1) {select.attr('multiple', true)}; 149 if (values.length > 1) { select.attr('multiple', true); }
150 for (i=0;i<filterValues.length;i++){ 150 for (i=0;i<filterValues.length;i++){
151 var filterValue = filterValues[i]; 151 var filterValue = filterValues[i];
152 var option = $('<option>'); 152 var option = $('<option>');
153 if ($.isArray(filterValue)) { 153 if ($.isArray(filterValue)) {
154 option.val(filterValue[1]).text(filterValue[0]); 154 option.val(filterValue[1]).text(filterValue[0]);
187 select = tr.find('td.values select'); 187 select = tr.find('td.values select');
188 for (i=0;i<allProjects.length;i++){ 188 for (i=0;i<allProjects.length;i++){
189 var filterValue = allProjects[i]; 189 var filterValue = allProjects[i];
190 var option = $('<option>'); 190 var option = $('<option>');
191 option.val(filterValue[1]).text(filterValue[0]); 191 option.val(filterValue[1]).text(filterValue[0]);
192 if (values[0] == filterValue[1]) {option.attr('selected', true)}; 192 if (values[0] == filterValue[1]) { option.attr('selected', true); }
193 select.append(option); 193 select.append(option);
194 } 194 }
195 case "integer": 195 case "integer":
196 case "float": 196 case "float":
197 tr.find('td.values').append( 197 tr.find('td.values').append(
240 var operator = $("#operators_" + fieldId); 240 var operator = $("#operators_" + fieldId);
241 switch (operator.val()) { 241 switch (operator.val()) {
242 case "!*": 242 case "!*":
243 case "*": 243 case "*":
244 case "t": 244 case "t":
245 case "ld":
245 case "w": 246 case "w":
247 case "lw":
248 case "l2w":
249 case "m":
250 case "lm":
251 case "y":
246 case "o": 252 case "o":
247 case "c": 253 case "c":
248 enableValues(field, []); 254 enableValues(field, []);
249 break; 255 break;
250 case "><": 256 case "><":
282 function submit_query_form(id) { 288 function submit_query_form(id) {
283 selectAllOptions("selected_columns"); 289 selectAllOptions("selected_columns");
284 $('#'+id).submit(); 290 $('#'+id).submit();
285 } 291 }
286 292
287 var fileFieldCount = 1;
288 function addFileField() {
289 var fields = $('#attachments_fields');
290 if (fields.children().length >= 10) return false;
291 fileFieldCount++;
292 var s = fields.children('span').first().clone();
293 s.children('input.file').attr('name', "attachments[" + fileFieldCount + "][file]").val('');
294 s.children('input.description').attr('name', "attachments[" + fileFieldCount + "][description]").val('');
295 fields.append(s);
296 }
297
298 function removeFileField(el) {
299 var fields = $('#attachments_fields');
300 var s = $(el).parents('span').first();
301 if (fields.children().length > 1) {
302 s.remove();
303 } else {
304 s.children('input.file').val('');
305 s.children('input.description').val('');
306 }
307 }
308
309 function checkFileSize(el, maxSize, message) {
310 var files = el.files;
311 if (files) {
312 for (var i=0; i<files.length; i++) {
313 if (files[i].size > maxSize) {
314 alert(message);
315 el.value = "";
316 }
317 }
318 }
319 }
320
321 function showTab(name) { 293 function showTab(name) {
322 $('div#content .tab-content').hide(); 294 $('div#content .tab-content').hide();
323 $('div.tabs a').removeClass('selected'); 295 $('div.tabs a').removeClass('selected');
324 $('#tab-content-' + name).show(); 296 $('#tab-content-' + name).show();
325 $('#tab-' + name).addClass('selected'); 297 $('#tab-' + name).addClass('selected');
378 } 350 }
379 } 351 }
380 352
381 function showModal(id, width) { 353 function showModal(id, width) {
382 var el = $('#'+id).first(); 354 var el = $('#'+id).first();
383 if (el.length == 0 || el.is(':visible')) {return;} 355 if (el.length === 0 || el.is(':visible')) {return;}
384 var title = el.find('h3.title').text(); 356 var title = el.find('h3.title').text();
385 el.dialog({ 357 el.dialog({
386 width: width, 358 width: width,
387 modal: true, 359 modal: true,
388 resizable: false, 360 resizable: false,
482 type: 'post', 454 type: 'post',
483 data: $('#bulk_edit_form').serialize() 455 data: $('#bulk_edit_form').serialize()
484 }); 456 });
485 } 457 }
486 458
487 function observeAutocompleteField(fieldId, url) { 459 function observeAutocompleteField(fieldId, url, options) {
488 $(document).ready(function() { 460 $(document).ready(function() {
489 $('#'+fieldId).autocomplete({ 461 $('#'+fieldId).autocomplete($.extend({
490 source: url, 462 source: url,
491 minLength: 2 463 minLength: 2,
492 }); 464 search: function(){$('#'+fieldId).addClass('ajax-loading');},
465 response: function(){$('#'+fieldId).removeClass('ajax-loading');}
466 }, options));
467 $('#'+fieldId).addClass('autocomplete');
493 }); 468 });
494 } 469 }
495 470
496 function observeSearchfield(fieldId, targetId, url) { 471 function observeSearchfield(fieldId, targetId, url) {
497 $('#'+fieldId).each(function() { 472 $('#'+fieldId).each(function() {
498 var $this = $(this); 473 var $this = $(this);
474 $this.addClass('autocomplete');
499 $this.attr('data-value-was', $this.val()); 475 $this.attr('data-value-was', $this.val());
500 var check = function() { 476 var check = function() {
501 var val = $this.val(); 477 var val = $this.val();
502 if ($this.attr('data-value-was') != val){ 478 if ($this.attr('data-value-was') != val){
503 $this.attr('data-value-was', val); 479 $this.attr('data-value-was', val);
504 $.ajax({ 480 $.ajax({
505 url: url, 481 url: url,
506 type: 'get', 482 type: 'get',
507 data: {q: $this.val()}, 483 data: {q: $this.val()},
508 success: function(data){ $('#'+targetId).html(data); }, 484 success: function(data){ if(targetId) $('#'+targetId).html(data); },
509 beforeSend: function(){ $this.addClass('ajax-loading'); }, 485 beforeSend: function(){ $this.addClass('ajax-loading'); },
510 complete: function(){ $this.removeClass('ajax-loading'); } 486 complete: function(){ $this.removeClass('ajax-loading'); }
511 }); 487 });
512 } 488 }
513 }; 489 };
568 warn = true; 544 warn = true;
569 } 545 }
570 }); 546 });
571 if (warn) {return warnLeavingUnsavedMessage;} 547 if (warn) {return warnLeavingUnsavedMessage;}
572 }; 548 };
573 }; 549 }
574 550
575 $(document).ready(function(){ 551 function setupAjaxIndicator() {
576 $('#ajax-indicator').bind('ajaxSend', function(){ 552
577 if ($('.ajax-loading').length == 0) { 553 $('#ajax-indicator').bind('ajaxSend', function(event, xhr, settings) {
554
555 if ($('.ajax-loading').length === 0 && settings.contentType != 'application/octet-stream') {
578 $('#ajax-indicator').show(); 556 $('#ajax-indicator').show();
579 } 557 }
580 }); 558 });
581 $('#ajax-indicator').bind('ajaxStop', function(){ 559
560 $('#ajax-indicator').bind('ajaxStop', function() {
582 $('#ajax-indicator').hide(); 561 $('#ajax-indicator').hide();
583 }); 562 });
584 }); 563 }
585 564
586 function hideOnLoad() { 565 function hideOnLoad() {
587 $('.hol').hide(); 566 $('.hol').hide();
588 } 567 }
589 568
599 }); 578 });
600 } 579 }
601 }); 580 });
602 } 581 }
603 582
583 function blockEventPropagation(event) {
584 event.stopPropagation();
585 event.preventDefault();
586 }
587
588 $(document).ready(setupAjaxIndicator);
604 $(document).ready(hideOnLoad); 589 $(document).ready(hideOnLoad);
605 $(document).ready(addFormObserversForDoubleSubmit); 590 $(document).ready(addFormObserversForDoubleSubmit);
606 591