Changeset 6487 for trunk/prototype/modules/mail/js/followupflag.js
- Timestamp:
- 06/14/12 09:02:04 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/prototype/modules/mail/js/followupflag.js
r6253 r6487 251 251 updateCacheFollowupflag(selectedMessageIds, folders, true); 252 252 winElement.dialog("close"); 253 alarmFollowupflagged( );253 alarmFollowupflagged('followupflagAlarms'); 254 254 }); 255 255 winElement.find('.menu-configure-followupflag .save').button("option", "disabled", true); … … 328 328 DataLayer.commit(false, false, function(){ 329 329 winElement.dialog("close"); 330 alarmFollowupflagged( );330 alarmFollowupflagged('followupflagAlarms'); 331 331 }); 332 332 … … 471 471 472 472 /** 473 * constrói as duas possíveis janela de alerta, utilizando o mesmo template 473 * constrói as três possíveis janelas de alerta, utilizando o mesmo template 474 * para o parametro alert_type, espera-se vazio, followupflagAlarms ou filtersAlarms 475 * vazio: quando serão carregadas todas as modais de alarmes 476 * followupflagAlarms: quando serão carregadas as modais referentes à sinalizações 477 * filtersAlarms: quando será carregada a modal de filtros (nesse caso o parametro filter_list deve conter a lista de mensagens a ser exibida na modal) 474 478 */ 475 function alarmFollowupflagged(){ 476 $('.followupflag-alarm').remove(); 477 var toIterate = [ 478 { 479 attrDeadline: 'doneDeadline', 480 caption: {singular:'You have one undone message today:', 481 plural:"You have %1 undone messages today:" 482 }, 483 onOk: function(event){ 484 if($(event.target).parents('.doneDeadline').find('[name="stopAlert"]').is(':checked')){ 485 $.cookie("fadeCompleted", (new Date).toString("dd/MM/yyyy"), { 486 expires: 1 487 }); 488 } 489 }, 490 enable: ($.cookie("fadeCompleted") != (new Date).toString("dd/MM/yyyy")) 491 }, 492 { 493 attrDeadline: 'alarmDeadline', 494 caption: { 495 singular:'You have a follow up due for today:', 496 plural:'You have %1 follow ups due for today:' 497 }, 498 onOk: function(event){ 499 if($(event.target).parents('.alarmDeadline').find('[name="stopAlert"]').is(':checked')){ 500 $.cookie("fadeAlarm", (new Date).toString("dd/MM/yyyy"), { 501 expires: 1 502 }); 503 } 504 }, 505 enable: ($.cookie("fadeAlarm") != (new Date).toString("dd/MM/yyyy")) 506 } 507 ]; 479 function alarmFollowupflagged(alert_type, filter_list){ 480 switch(alert_type){ 481 // carregar modais de sinalizadores 482 case 'followupflagAlarms': 483 $('.doneDeadline').remove(); 484 $('.alarmDeadline').remove(); 485 var toIterate = [ 486 { 487 attrDeadline: 'doneDeadline', 488 caption: {singular:'You have one undone message today:', 489 plural:"You have %1 undone messages today:" 490 }, 491 title: get_lang('Done'), 492 enable: ($.cookie("fadeCompleted") != (new Date).toString("dd/MM/yyyy")) 493 }, 494 { 495 attrDeadline: 'alarmDeadline', 496 caption: { 497 singular:'You have a follow up due for today:', 498 plural:'You have %1 follow ups due for today:' 499 }, 500 title: get_lang('Follow ups'), 501 enable: ($.cookie("fadeAlarm") != (new Date).toString("dd/MM/yyyy")) 502 } 503 ]; 504 break; 505 // carregar modal de filtros 506 case 'filtersAlarms': 507 $('.filtersDeadline').remove(); 508 var toIterate = [ 509 { 510 attrDeadline: 'filtersDeadline', 511 caption: { 512 singular:'You have an archived message:', 513 plural:'You have %1 messages archived:' 514 }, 515 title: get_lang('Filter by sender'), 516 enable: ($.cookie("fadeFilterAlarm") != (new Date).toString("dd/MM/yyyy")) 517 } 518 ]; 519 break; 520 // carregar todas as modais 521 default: 522 $('.gray').remove(); 523 var toIterate = [ 524 { 525 attrDeadline: 'filtersDeadline', 526 caption: { 527 singular:'You have an archived message:', 528 plural:'You have %1 messages archived:' 529 }, 530 title: get_lang('Filter by sender'), 531 enable: ($.cookie("fadeFilterAlarm") != (new Date).toString("dd/MM/yyyy")) 532 }, 533 { 534 attrDeadline: 'doneDeadline', 535 caption: {singular:'You have one undone message today:', 536 plural:"You have %1 undone messages today:" 537 }, 538 title: get_lang('Done'), 539 enable: ($.cookie("fadeCompleted") != (new Date).toString("dd/MM/yyyy")) 540 }, 541 { 542 attrDeadline: 'alarmDeadline', 543 caption: { 544 singular:'You have a follow up due for today:', 545 plural:'You have %1 follow ups due for today:' 546 }, 547 title: get_lang('Follow ups'), 548 enable: ($.cookie("fadeAlarm") != (new Date).toString("dd/MM/yyyy")) 549 } 550 ]; 551 break; 552 } 508 553 var i = 0; 554 // recupera e monta os dados para serem exibidos nas modais de alarmes 509 555 while (it = toIterate.pop()){ 510 556 if (!it.enable) continue; 511 512 var alarmInRange = DataLayer.get('followupflagged', {filter: ['AND', ['>', it.attrDeadline, (new Date()).set({hour:0, minute:0, second:0}).toString('yyyy-MM-dd 00:00:00')], ['<', it.attrDeadline, (new Date()).set({hour:0, minute:0, second:0}).addHours(24).toString('yyyy-MM-dd 00:00:00')]], criteria: {deepness: 1}}); 557 558 var alarmInRange = {}; 559 // caso for alarme de sinalizadores 560 if(it.attrDeadline == 'doneDeadline' || it.attrDeadline == 'alarmDeadline'){ 561 alarmInRange = DataLayer.get('followupflagged', {filter: ['AND', ['>', it.attrDeadline, (new Date()).set({hour:0, minute:0, second:0}).toString('yyyy-MM-dd 00:00:00')], ['<', it.attrDeadline, (new Date()).set({hour:0, minute:0, second:0}).addHours(24).toString('yyyy-MM-dd 00:00:00')]], criteria: {deepness: 1}}); 562 if(alarmInRange.length > 0){ 563 for(var i=0; i<alarmInRange.length; i++){ 564 if(alarmInRange[i].isDone == 1){ 565 alarmInRange.splice(i,1); 566 i--; 567 } 568 } 569 } 570 571 if(alarmInRange.length > 0){ 572 var messages_alarm = []; 573 for(var i=0; i<alarmInRange.length; i++){ 574 var date = Date.parseExact(alarmInRange[i][it.attrDeadline], 'yyyy-MM-dd HH:mm:ss'); 575 if(date) 576 alarmInRange[i][it.attrDeadline] = date.toString('HH:mm'); 577 578 if(alarmInRange[i]['followupflag']['id'] < 7){ 579 var nameFollowupflag = get_lang(alarmInRange[i]['followupflag']['name']); 580 }else{ 581 var nameFollowupflag = alarmInRange[i]['followupflag']['name']; 582 } 583 var li_alarm = alarmInRange[i][it.attrDeadline] + ' - ' + nameFollowupflag + ' - ' + truncate(alarmInRange[i]['message']['headers']['subject'], 15); 584 messages_alarm.push({ 585 "msg_number" : alarmInRange[i]['messageNumber'], 586 "msg_folder" : alarmInRange[i]['folderName'], 587 "a" : li_alarm 588 }); 589 } 590 } 591 } 592 // caso for alarme de filtros 593 else if(filter_list){ 594 alarmInRange = filter_list; 595 if(alarmInRange.length > 0){ 596 var messages_alarm = []; 597 for(var i=0; i<alarmInRange.length; i++){ 598 var d = new Date(alarmInRange[i]['udate']*1000); 599 var dia = d.getDate(); 600 if(dia < 10){ 601 dia = "0" + dia; 602 } 603 var mes = (d.getMonth()) + 1; 604 if(mes < 10){ 605 mes = "0" + mes; 606 } 607 var ano = d.getFullYear(); 608 var dtFormatada = dia + '/' + mes + '/' + ano; 609 alarmInRange[i]['udate'] = dtFormatada; 610 611 var li_alarm = alarmInRange[i]['udate'] + ' ' + alarmInRange[i]['smalldate'] + ' - ' + alarmInRange[i]['from'] + ' - ' + truncate(alarmInRange[i]['subject'], 15); 612 messages_alarm.push({ 613 "msg_number" : alarmInRange[i]['msg_number'], 614 "msg_folder" : alarmInRange[i]['msg_folder'], 615 "a" : li_alarm 616 }); 617 } 618 } 619 } 620 513 621 if(alarmInRange.length > 0){ 514 for(var i=0; i<alarmInRange.length; i++){ 515 if(alarmInRange[i].isDone == 1){ 516 alarmInRange.splice(i,1); 517 i--; 518 } 519 } 520 } 521 if(alarmInRange.length > 0){ 522 for(var i=0; i<alarmInRange.length; i++){ 523 var date = Date.parseExact(alarmInRange[i][it.attrDeadline], 'yyyy-MM-dd HH:mm:ss'); 524 if(date) 525 alarmInRange[i][it.attrDeadline] = date.toString('HH:mm'); 526 } 622 // monta o subtitulo da modal 527 623 var caption = (alarmInRange.length == 1) ? 528 624 get_lang(it.caption.singular): 529 625 get_lang(it.caption.plural, alarmInRange.length); 530 626 // monta o array de dados a ser passado para o template 531 627 var data = { 532 alarmInRange : alarmInRange,628 alarmInRange : messages_alarm, 533 629 caption: caption, 534 it : it 630 type: it.attrDeadline, 631 captions: it.caption 535 632 }; 633 // tipo de modal a ser exibida 634 var type_alarm = it.attrDeadline; 635 //função chamada ao clicar no botão Ok da modal 636 var ok_function = function(event, type, type_cookie){ 637 if($(event.target).parents('.'+type).find('[name="stopAlert"]').is(':checked')){ 638 $.cookie(type_cookie, (new Date).toString("dd/MM/yyyy"), { 639 expires: 1 640 }); 641 } 642 } 643 // carrega o template dos alarmes e cria a modal utilizando o plugin freeow 536 644 var dialogText = DataLayer.render("../prototype/modules/mail/templates/followupflag_alarm_list.ejs", data); 645 var titulo = '<div class="header-alarm"><span class="img_title"></span><span class="title-alarm"><strong>'+it.title+'</strong></span><span name="header-icon" class="maximize-alarm"></span></div>'; 646 $("#freeow").freeow(titulo, dialogText, { 647 classes: ["gray", type_alarm], 648 autoHide: false, 649 startStyle: null, 650 onClick: function(event){ 651 var type = ''; 652 var type_cookie = ''; 653 if($(this).hasClass('alarmDeadline')){ 654 type = 'alarmDeadline'; 655 type_cookie = 'fadeAlarm'; 656 }else if($(this).hasClass('doneDeadline')){ 657 type = 'doneDeadline'; 658 type_cookie = 'fadeCompleted'; 659 }else if($(this).hasClass('filtersDeadline')){ 660 type = 'filtersDeadline'; 661 type_cookie = 'fadeFilterAlarm'; 662 } 663 if($(event.target).hasClass('stop-alert-alarm')){ 664 return; 665 } 666 if($(event.target).hasClass('minimize-alarm')){ 667 $('.'+type).find('.content-alarm').hide(); 668 $(event.target).removeClass('minimize-alarm').addClass('maximize-alarm'); 669 return; 670 } 671 if($(event.target).hasClass('maximize-alarm')){ 672 $('.'+type).find('.content-alarm').show(); 673 $(event.target).removeClass('maximize-alarm').addClass('minimize-alarm'); 674 return; 675 } 676 if($(event.target).hasClass('confirm-alarm')){ 677 ok_function(event, type, type_cookie); 678 $('.'+type).remove(); 679 return; 680 } 681 return false; 682 } 683 }); 684 // elementos do freeow desnecessários 685 $('.gray .background .content p').remove(); 686 $('.gray .icon').remove(); 687 $('.gray .close').remove(); 537 688 538 /** 539 * A última dialog criada é a dialog mais ao alto 540 */ 541 var offsetHeight = $('.ZebraDialog.right-bottom:last').length ? 542 $(window).height() - $('.ZebraDialog.right-bottom:last').position().top : 0; 543 544 /** 545 * Se for a primeira, desloca para cima do rodapé do grid 546 * caso contrário desloca para um pouco acima da última dialog criada 547 */ 548 offsetHeight = !offsetHeight ? 35 : offsetHeight + 20 ; 549 var dialog = new $.Zebra_Dialog(dialogText, { 550 'buttons': ['Ok'], 551 'modal': false, 552 'vcenter_short_message': false, 553 'position': ['right - 20', 'bottom - ' + offsetHeight.toString() ], 554 'custom_class': 'right-bottom followupflag-alarm '+it.attrDeadline 555 }).dialog; 556 $(".ZebraDialog.followupflag-alarm .ZebraDialog_Button0").click(it.onOk); 557 $(".ZebraDialog.followupflag-alarm .display-options .more").click(function(event) { 558 $(event.target).parents('.followupflag-alarm').find('.message-list').css('height', 'auto'); 559 }); 689 // botão ok da modal com jquery button 690 $('.content-alarm button').button(); 560 691 } 561 692 } 693 694 // controle de qual janela de alarme estará maximizada 695 $('.gray').find('.content-alarm').hide(); 696 $('.gray').find('.header-alarm [name="header-icon"]').removeClass('minimize-alarm').addClass('maximize-alarm'); 697 698 if($('.gray').length > 0){ 699 if($('.gray').hasClass('filtersDeadline')){ 700 $('.filtersDeadline').find('.content-alarm').show(); 701 $('.filtersDeadline .header-alarm [name="header-icon"]').removeClass('maximize-alarm').addClass('minimize-alarm'); 702 }else if($('.gray').hasClass('alarmDeadline')){ 703 $('.alarmDeadline').find('.content-alarm').show(); 704 $('.alarmDeadline .header-alarm [name="header-icon"]').removeClass('maximize-alarm').addClass('minimize-alarm'); 705 }else if($('.gray').hasClass('doneDeadline')){ 706 $('.doneDeadline').find('.content-alarm').show(); 707 $('.doneDeadline .header-alarm [name="header-icon"]').removeClass('maximize-alarm').addClass('minimize-alarm'); 708 } 709 } 710 562 711 } 712 563 713 $('#main_table').ready(function(){ 564 alarmFollowupflagged(); 714 handlerMessageFilter = function (data) { 715 alarmFollowupflagged(null, data); 716 } 717 /* Busca nas pastas indexadas para ver se há novas mensagens com a flag $FilteredMessage */ 718 cExecute ("$this.imap_functions.getFlaggedAlertMessages&folders="+fromRules, handlerMessageFilter); 565 719 }); 720
Note: See TracChangeset
for help on using the changeset viewer.