Changeset 5354
- Timestamp:
- 01/11/12 10:53:58 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/prototype/modules/calendar/js/helpers.js
r5353 r5354 223 223 */ 224 224 if (!clicked) { 225 zebraDiscardEventDialog = true;226 225 window.setTimeout(function() { 227 226 zebraDiscardEventDialog = false; … … 298 297 UI.dialogs.addEvent.find('input[name="defaultAlarm"]').click(function(){ 299 298 if($(this).attr("checked")){ 300 $('input[name ="isDefaultAlarm[]"]').parent().remove();299 $('input[name="isDefaultAlarm[]"]').parent().remove(); 301 300 var calendarSelected = Calendar.signatureOf[$('select[name="calendar"]').val()]; 302 301 calendarSelected.useAlarmDefault = 1; … … 310 309 }); 311 310 } 312 }else 313 $('input[name = "isDefaultAlarm[]"]').parent().remove(); 311 } else { 312 $('input[name="isDefaultAlarm[]"]').parent().remove(); 313 } 314 314 }); 315 315 /* Checkbox allday */ … … 329 329 330 330 // ==== validation events ==== 331 $(".input-group .h1").Watermark("Evento sem título");332 if(User.preferences.hourFormat.length == 5) 333 $(".new-event-win.active .end-time, .new-event-win.active.start-time").mask("99:99");334 else{331 UI.dialogs.addEvent.find(".input-group .h1").Watermark("Evento sem título"); 332 if(User.preferences.hourFormat.length == 5) { 333 UI.dialogs.addEvent.find(".end-time, .start-time").mask("99:99"); 334 } else { 335 335 $.mask.definitions['{']='[ap]'; 336 336 $.mask.definitions['}']='[m]'; 337 $(".new-event-win.active .end-time, .new-event-win.active .start-time").mask("99:99 {}",338 {completed:function(){337 UI.dialogs.addEvent.find(".end-time, .start-time").mask("99:99 {}", { 338 completed:function(){ 339 339 $(this).val(defaultToAmPm($(this).val())); 340 340 $(this).timepicker("refresh"); 341 341 $(this).val($(this).val().replace(/[\.]/gi, "")); 342 }}); 342 } 343 }); 343 344 } 344 $(".number").numeric();345 UI.dialogs.addEvent.find(".number").numeric(); 345 346 if(User.preferences.dateFormat.indexOf('-') > 0) 346 $(".date").mask("99-99-9999");347 UI.dialogs.addEvent.find(".date").mask("99-99-9999"); 347 348 else 348 $(".date").mask("99/99/9999");349 UI.dialogs.addEvent.find(".date").mask("99/99/9999"); 349 350 350 351 UI.dialogs.addEvent.find(".menu-addevent") 351 352 352 .children(".delete").click(function(){ 353 353 $.Zebra_Dialog('Tem certeza que deseja excluir o evento?', { … … 371 371 .children(".save").click(function(){ 372 372 /* Validação */ 373 374 var msg = false; 375 if(msg = validDateEvent()){ 376 $(".new-event-win.active").find('.messages-validation').removeClass('hidden').find('.message label').html(msg); 377 return false; 378 } 373 var msg = false; 374 if(msg = validDateEvent()){ 375 $(".new-event-win.active").find('.messages-validation').removeClass('hidden').find('.message label').html(msg); 376 return false; 377 } 379 378 380 379 canDiscardEventDialog = true; … … 419 418 }); 420 419 421 UI.dialogs.addEvent.find('.button-add-attachment').click(function(){422 var li_attach =423 '<li class="input_label">' +424 '<input type="file" name="attachments[]"" />' +425 '</li>';426 jQuery('.attachments-list').append(li_attach);427 });420 // UI.dialogs.addEvent.find('.button-add-attachment').click(function(){ 421 // var li_attach = 422 // '<li class="input_label">' + 423 // '<input type="file" name="attachments[]"" />' + 424 // '</li>'; 425 // jQuery('.attachments-list').append(li_attach); 426 // }); 428 427 429 428 DataLayer.render( 'templates/attendee_add.ejs', {event:objEvent}, function( attendeeHtml ){ … … 441 440 //blkAddAtendee.find('.block-attendee-list #attendees-users li').click(show_permissions_attendees); 442 441 443 $(".attendee-list-add .add-attendee-input input").Watermark("digite um email para convidar");442 UI.dialogs.addEvent.find(".attendee-list-add .add-attendee-input input").Watermark("digite um email para convidar"); 444 443 /* Trata a edição de um novo participante adicionado 445 444 * 446 445 */ 447 446 var hasNewAttendee = false; 448 $('.attendee-list-add .add-attendee-input input').keydown(function(event) {447 UI.dialogs.addEvent.find('.attendee-list-add .add-attendee-input input').keydown(function(event) { 449 448 450 449 if (event.keyCode == '13' && $(this).val() != '') { … … 453 452 454 453 newAttendeeEmail = false; 455 newAttendeeName = false; 454 newAttendeeName = false; 455 skipAddNewLine = false; 456 456 457 457 var info = $(this).val(); … … 475 475 var user = DataLayer.get('user', ["=", "mail", $(this).val()], true); 476 476 477 478 /** 479 * guarda o último tooltip aberto referente à lista de participantes 480 */ 481 lastEditAttendeeToolTip = []; 482 483 /** 484 * Valida email e salva um participante externo 485 */ 486 var saveContact = function() { 487 Encoder.EncodeType = "entity"; 488 489 var currentTip = $('.qtip-active'); 490 newAttendeeName = currentTip.find('input[name="name"]').val(); 491 newAttendeeEmail = currentTip.find('input[name="mail"]').val(); 492 493 var isValidMail = newAttendeeEmail.match(/^[\w!#$%&'*+\/=?^`{|}~-]+(\.[\w!#$%&'*+\/=?^`{|}~-]+)*@(([\w-]+\.)+[A-Za-z]{2,6}|\[\d{1,3}(\.\d{1,3}){3}\])$/); 494 if (!isValidMail) { 495 currentTip.find('.messages').removeClass('hidden').find('.message label').append('Email inválido.'); 496 return false; 497 } 498 499 DataLayer.put('user', {id:newAttendeeId, name:newAttendeeName, mail:newAttendeeEmail, isExternal:isExternal}); 500 501 $('dd.attendee-list ul.attendee-list li:last label') 502 .filter('.name').html(Encoder.htmlEncode(newAttendeeName)).attr('title', Encoder.htmlEncode(newAttendeeName)).end() 503 .filter('.mail').html(Encoder.htmlEncode(newAttendeeEmail)).attr('title', Encoder.htmlEncode(newAttendeeEmail)); 504 505 return true; 506 } 507 508 /** 509 * Formata e adequa um tootip abert para edição de um participante na lista 510 */ 477 511 var onShowToolTip = function(arg0) { 478 512 $('.qtip-active .button.close').button({ … … 483 517 .filter('.save').click(function(event, ui) { 484 518 if (saveContact()) { 485 $('dd.attendee-list li:last').qtip("destroy");519 lastEditAttendeeToolTip.qtip("destroy"); 486 520 } else { 487 521 return false; … … 489 523 }).end() 490 524 .filter('.cancel').click(function(event, ui) { 491 492 $('dd.attendee-list li:last').qtip("destroy"); 525 lastEditAttendeeToolTip.qtip("destroy"); 493 526 }) 494 527 … … 500 533 if (event.keyCode == '13') { 501 534 if (saveContact()) { 502 $('dd.attendee-list li:last').qtip("destroy");535 lastEditAttendeeToolTip.qtip("destroy"); 503 536 } 504 537 505 $('dd.attendee-list li:last').qtip("destroy");538 lastEditAttendeeToolTip.qtip("destroy"); 506 539 event.preventDefault(); 507 540 } … … 512 545 513 546 514 if($('label.mail[title="' + $(this).val() + '"]').length) { 515 $(".new-event-win.active").find('.email-validation').removeClass('hidden') 547 /** 548 * Se o email digitado já foi adicionado na lista, 549 * o usuário deve ser avisado e um botão de edição deve ser exibido 550 */ 551 if(blkAddAtendee.find('label.mail[title="' + newAttendeeEmail + '"]').length) { 552 newAttendeeName = blkAddAtendee.find('label.mail[title="' + newAttendeeEmail + '"]').parents('li').find('label.name').attr('title'); 553 554 blkAddAtendee.find('.email-validation').removeClass('hidden') 516 555 .find('.message label').html("O usuário acima já foi adicionado! <a class=\"small button\">Editar</a>") 517 556 .find(".button").button().click(function () { 518 $("ul.attendee-list").scrollTo('label.mail[title="' + $(".add-attendee-input input").val() + '"]'); 519 blkAddAtendee.find('ul.attendee-list label.mail[title="' + $(".add-attendee-input input").val() + '"]').parents('li').qtip({ 557 /** 558 * Se o usuário optar por editar o participante anteriormente adicionado, 559 * uma tooltip deve ser aberta para este participante, viabilizando a edição 560 */ 561 blkAddAtendee.find("ul.attendee-list").scrollTo('label.mail[title="' + newAttendeeEmail + '"]'); 562 /** 563 * Remove tooltip possivelmente existente 564 */ 565 if (hasNewAttendee && lastEditAttendeeToolTip.length && lastEditAttendeeToolTip.data('qtip')) 566 lastEditAttendeeToolTip.qtip('destroy'); 567 568 lastEditAttendeeToolTip = blkAddAtendee.find('label.mail[title="' + newAttendeeEmail + '"]').parents('li'); 569 lastEditAttendeeToolTip.qtip({ 520 570 show: {ready: true, solo: true, when: {event: 'click'}}, 521 571 hide: false, … … 536 586 } 537 587 }); 538 });539 blkAddAtendee.find('ul.attendee-list label.mail[title="' + $(".add-attendee-input input").val() + '"]').parents('li').qtip("api").onShow = onShowToolTip;540 return false;588 lastEditAttendeeToolTip.qtip("api").onShow = onShowToolTip; 589 }); 590 skipAddNewLine = true; 541 591 } 542 592 … … 547 597 * Remove tooltip possivelmente existente 548 598 */ 549 if (hasNewAttendee && blkAddAtendee.find('dd.attendee-list li:last').data('qtip'))550 blkAddAtendee.find('dd.attendee-list li:last').qtip('destroy');599 if (hasNewAttendee && lastEditAttendeeToolTip.length && lastEditAttendeeToolTip.data('qtip')) 600 lastEditAttendeeToolTip.qtip('destroy'); 551 601 552 602 var newAttendeeId = ''; … … 558 608 newAttendeeId = 'internal:'+user[0].id; 559 609 560 blkAddAtendee.find('dd.attendee-list ul.attendee-list').append( 561 DataLayer.render('templates/participants_add_itemlist.ejs', [{id:newAttendeeId, name: user[0].name, mail: user[0].mail}]) 562 ) 563 .find('.button.close').addClass('small').button({text:false, icons:{primary:'ui-icon-close'}}).click(function() { 564 var participant = DataLayer.get('participant', ['AND',['=', 'user', $(this).parent().find('[type=checkbox]').val().replace(/[a-z:]/g, "")],['=', 'schedulable',$(this).parents().find('.id-event').first().val()]]); 565 if(participant) 566 DataLayer.remove('participant', participant[0].id); 567 $(this).parent().remove(); 568 }).end() 569 .scrollTo('max'); 610 if (!skipAddNewLine) { 611 blkAddAtendee.find('dd.attendee-list ul.attendee-list').append( 612 DataLayer.render('templates/participants_add_itemlist.ejs', [{id:newAttendeeId, name: user[0].name, mail: user[0].mail}]) 613 ) 614 .find('.button.close').addClass('small').button({text:false, icons:{primary:'ui-icon-close'}}).click(function() { 615 var participant = DataLayer.get('participant', ['AND',['=', 'user', $(this).parent().find('[type=checkbox]').val().replace(/[a-z:]/g, "")],['=', 'schedulable',$(this).parents().find('.id-event').first().val()]]); 616 if(participant) 617 DataLayer.remove('participant', participant[0].id); 618 $(this).parent().remove(); 619 }).end() 620 .scrollTo('max'); 621 } 570 622 571 623 $(this).val(''); 572 624 573 } else {625 } else if (!skipAddNewLine) { 574 626 /** 575 627 * a) salva como novo usuario externo no banco (apenas com email) e... … … 579 631 newAttendeeId = DataLayer.put('user', {name: newAttendeeName, mail: newAttendeeEmail, isExternal: isExternal}); 580 632 633 581 634 blkAddAtendee.find('dd.attendee-list ul.attendee-list').append( 582 635 DataLayer.render('templates/participants_add_itemlist.ejs', [{id:newAttendeeId, name: newAttendeeName, mail: newAttendeeEmail}]) … … 595 648 * recém adicionado. 596 649 */ 597 blkAddAtendee.find('dd.attendee-list li:last').qtip({ 650 lastEditAttendeeToolTip = blkAddAtendee.find('dd.attendee-list li:last'); 651 lastEditAttendeeToolTip.qtip({ 598 652 show: {ready: true, solo: true, when: {event: 'click'}}, 599 653 hide: false, … … 614 668 } 615 669 }); 616 617 var saveContact = function() { 618 Encoder.EncodeType = "entity"; 619 620 var currentTip = $('.qtip-active'); 621 newAttendeeName = currentTip.find('input[name="name"]').val(); 622 newAttendeeEmail = currentTip.find('input[name="mail"]').val(); 623 624 var isValidMail = newAttendeeEmail.match(/^[\w!#$%&'*+\/=?^`{|}~-]+(\.[\w!#$%&'*+\/=?^`{|}~-]+)*@(([\w-]+\.)+[A-Za-z]{2,6}|\[\d{1,3}(\.\d{1,3}){3}\])$/); 625 if (!isValidMail) { 626 currentTip.find('.messages').removeClass('hidden').find('.message label').append('Email inválido.'); 627 return false; 628 } 629 630 DataLayer.put('user', {id:newAttendeeId, name:newAttendeeName, mail:newAttendeeEmail, isExternal:isExternal}); 631 632 $('dd.attendee-list ul.attendee-list li:last label') 633 .filter('.name').html(Encoder.htmlEncode(newAttendeeName)).attr('title', Encoder.htmlEncode(newAttendeeName)).end() 634 .filter('.mail').html(Encoder.htmlEncode(newAttendeeEmail)).attr('title', Encoder.htmlEncode(newAttendeeEmail)); 635 636 return true; 637 } 670 671 lastEditAttendeeToolTip.qtip("api").onShow = onShowToolTip; 672 673 $(this).val(''); 638 674 639 675 640 $('dd.attendee-list li:last').qtip("api").onShow = onShowToolTip;641 642 643 $(this).val('');644 645 event.preventDefault();646 676 } 677 event.preventDefault(); 647 678 } 679 648 680 }); 649 681
Note: See TracChangeset
for help on using the changeset viewer.