Changeset 6487 for trunk/prototype/modules/mail
- Timestamp:
- 06/14/12 09:02:04 (12 years ago)
- Location:
- trunk/prototype/modules/mail
- Files:
-
- 3 edited
- 4 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/prototype/modules/mail/css/followupflag.css
r6167 r6487 209 209 span.removeLabeledMsg {margin:0 5px 0 5px;font-weight: bold;} 210 210 span.removeLabeledMsg:hover {cursor: pointer;} 211 212 .freeow .gray:hover .background { 213 border-color: #BBB; 214 } 215 .minimize-alarm { 216 background: url("../img/minimizar.png") no-repeat scroll 0 0 transparent; 217 height: 16px; 218 position: relative; 219 width: 16px; 220 float:right; 221 margin-right:5px; 222 } 223 .maximize-alarm { 224 background: url("../img/maximizar.png") no-repeat scroll 0 0 transparent; 225 height: 16px; 226 position: relative; 227 width: 16px; 228 float:right; 229 margin-right:5px; 230 } 231 .content-alarm ul { 232 max-height: 100px; 233 overflow: auto; 234 } 235 .content-alarm { 236 margin-top: 5px; 237 } 238 .title-alarm { 239 margin-left: 90px; 240 font-size: 16px; 241 } 242 .alert-options { 243 border: none; 244 } 245 .confirm-alarm { 246 float:right; 247 } 248 .freeow .gray h2 { 249 font-size: 12px; 250 } 251 .freeow { 252 width: 325px; 253 } 254 .freeow .gray .content { 255 margin: 5px; 256 } 257 .freeow .gray .background { 258 background-color: #fafafa; 259 border: 2px solid #BBB; 260 } 261 .freeow .content { 262 margin: 5px; 263 } 264 265 .filtersDeadline .img_title { 266 background: url("../img/email.png") no-repeat scroll 0 0 transparent; 267 height: 20px; 268 position: absolute; 269 width: 20px; 270 float:left; 271 margin-left:40px; 272 top: 7px; 273 } 274 .alarmDeadline .img_title { 275 background: url("../img/flagDefault4.png") no-repeat scroll 0 0 transparent; 276 height: 10px; 277 position: absolute; 278 width: 10px; 279 float:left; 280 margin-left:42px; 281 top: 11px; 282 } 283 .doneDeadline .img_title { 284 background: url("../img/flagDone.png") no-repeat scroll 0 0 transparent; 285 height: 10px; 286 position: absolute; 287 width: 10px; 288 float:left; 289 margin-left:43px; 290 top: 11px; 291 } -
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 -
trunk/prototype/modules/mail/templates/followupflag_alarm_list.ejs
r5738 r6487 1 <p class="title"><strong><%= data.caption %> </strong></p> 2 3 <ul class="message-list"> 4 <% 5 for(var i=0; i<data.alarmInRange.length; i++){ 6 var openMessageScript = "cExecute('$this.imap_functions.get_info_msg&msg_number="+data.alarmInRange[i].messageNumber+"&msg_folder="+data.alarmInRange[i].folderName+"&alarm=true', show_msg);"; 7 if(data.alarmInRange[i].followupflag.id < 7){ 8 var nameFollowupflag = get_lang(data.alarmInRange[i].followupflag.name); 9 }else{ 10 var nameFollowupflag = data.alarmInRange[i].followupflag.name; 1 <div class="content-alarm"> 2 <span class="subtitle-alarm"> 3 <strong><%=data.caption %></strong> 4 </span> 5 <ul class="message-list"> 6 <% 7 for(var i=0; i<data.alarmInRange.length; i++){ 8 if(data.type == 'filtersDeadline') 9 var openMessageScript = "$(this).parent().remove(); var msgs_count = $('.filtersDeadline').find('.message-item').length; if(msgs_count == 0){ $('.filtersDeadline').remove(); } $('.subtitle-alarm').find('strong').html((msgs_count == 1)?get_lang('"+data.captions.singular+"'):get_lang('"+data.captions.plural+"', msgs_count)); cExecute('$this.imap_functions.open_flagged_msg&msg_number="+data.alarmInRange[i].msg_number+"&msg_folder="+data.alarmInRange[i].msg_folder+"&alarm=true', show_msg);"; 10 else 11 var openMessageScript = "cExecute('$this.imap_functions.get_info_msg&msg_number="+data.alarmInRange[i].msg_number+"&msg_folder="+data.alarmInRange[i].msg_folder+"&alarm=true', show_msg);"; 12 %> 13 <li class="message-item"> 14 <a onclick="<%=openMessageScript%>"> 15 <%= data.alarmInRange[i].a %> 16 </a> 17 </li> 18 <% 11 19 } 12 %> 13 <li class="message-item"> 14 <a onclick="<%=openMessageScript%>"> 15 <%= (it.attrDeadline == 'alarmDeadline') ? data.alarmInRange[i].alarmDeadline : data.alarmInRange[i].doneDeadline %> - <%= nameFollowupflag %> - <%= data.alarmInRange[i].message.headers.subject %> 16 </a> 17 </li> 18 <% 19 } 20 %> 21 </ul> 22 23 <fieldset class="alert-options"> 24 <input type="checkbox" name="stopAlert"> <label><%= get_lang("Don't show this window anymore today.")%></label> 25 </fieldset> 20 %> 21 </ul> 22 <fieldset class="alert-options"> 23 <input type="checkbox" class="stop-alert-alarm" name="stopAlert"> <label><%= get_lang("Don't show this window anymore today.")%></label> 24 <button class="confirm-alarm">Ok</button> 25 </fieldset> 26 </div>
Note: See TracChangeset
for help on using the changeset viewer.