Changeset 6280 for sandbox/2.4.1-1/prototype
- Timestamp:
- 05/23/12 11:44:51 (12 years ago)
- Location:
- sandbox/2.4.1-1/prototype
- Files:
-
- 23 added
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
sandbox/2.4.1-1/prototype/modules/mail/css/followupflag.css
r6167 r6280 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: #fafafa; 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 .freeow .gray .content { 239 margin: 5px; 240 } 241 .freeow .gray .background { 242 background-color: #fafafa; 243 border: 3px solid #fafafa; 244 } 245 .freeow .content { 246 margin: 5px; 247 } 248 .title-alarm { 249 margin-left: 90px; 250 font-size: 16px; 251 } 252 .alert-options { 253 border: none; 254 } 255 .confirm-alarm { 256 float:right; 257 margin: 5px; 258 } 259 .freeow .gray h2 { 260 font-size: 12px; 261 } 262 .freeow { 263 width: 325px; 264 } -
sandbox/2.4.1-1/prototype/modules/mail/js/followupflag.js
r6192 r6280 241 241 updateCacheFollowupflag(selectedMessageIds, folders, true); 242 242 winElement.dialog("close"); 243 alarmFollowupflagged( );243 alarmFollowupflagged('followupflagAlarms'); 244 244 }); 245 245 winElement.find('.menu-configure-followupflag .save').button("option", "disabled", true); … … 318 318 DataLayer.commit(false, false, function(){ 319 319 winElement.dialog("close"); 320 alarmFollowupflagged( );320 alarmFollowupflagged('followupflagAlarms'); 321 321 }); 322 322 … … 462 462 /** 463 463 * constrói as duas possíveis janela de alerta, utilizando o mesmo template 464 * para o parametro alert_type, espera-se vazio, followupflagAlarms ou filtersAlarms 465 * vazio: quando serão carregadas todas as modais de alarmes 466 * followupflagAlarms: quando serão carregadas as modais referentes à sinalizações 467 * 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) 464 468 */ 465 function alarmFollowupflagged(){ 466 $('.followupflag-alarm').remove(); 467 var toIterate = [ 468 { 469 attrDeadline: 'doneDeadline', 470 caption: {singular:'You have one undone message today:', 471 plural:"You have %1 undone messages today:" 472 }, 473 onOk: function(event){ 474 if($(event.target).parents('.doneDeadline').find('[name="stopAlert"]').is(':checked')){ 475 $.cookie("fadeCompleted", (new Date).toString("dd/MM/yyyy"), { 476 expires: 1 477 }); 478 } 479 }, 480 enable: ($.cookie("fadeCompleted") != (new Date).toString("dd/MM/yyyy")) 481 }, 482 { 483 attrDeadline: 'alarmDeadline', 484 caption: { 485 singular:'You have a follow up due for today:', 486 plural:'You have %1 follow ups due for today:' 487 }, 488 onOk: function(event){ 489 if($(event.target).parents('.alarmDeadline').find('[name="stopAlert"]').is(':checked')){ 490 $.cookie("fadeAlarm", (new Date).toString("dd/MM/yyyy"), { 491 expires: 1 492 }); 493 } 494 }, 495 enable: ($.cookie("fadeAlarm") != (new Date).toString("dd/MM/yyyy")) 496 } 497 ]; 469 function alarmFollowupflagged(alert_type, filter_list){ 470 switch(alert_type){ 471 // carregar modais de sinalizadores 472 case 'followupflagAlarms': 473 $('.doneDeadline').remove(); 474 $('.alarmDeadline').remove(); 475 var toIterate = [ 476 { 477 attrDeadline: 'doneDeadline', 478 caption: {singular:'You have one undone message today:', 479 plural:"You have %1 undone messages today:" 480 }, 481 title: 'Concluídas', 482 enable: ($.cookie("fadeCompleted") != (new Date).toString("dd/MM/yyyy")) 483 }, 484 { 485 attrDeadline: 'alarmDeadline', 486 caption: { 487 singular:'You have a follow up due for today:', 488 plural:'You have %1 follow ups due for today:' 489 }, 490 title: 'Sinalizadas', 491 enable: ($.cookie("fadeAlarm") != (new Date).toString("dd/MM/yyyy")) 492 } 493 ]; 494 break; 495 // carregar modal de filtros 496 case 'filtersAlarms': 497 $('.listFilters').remove(); 498 var toIterate = [ 499 { 500 attrDeadline: 'filtersDeadline', 501 caption: { 502 singular:'Você tem uma mensagem arquivada:', 503 plural:'Você tem %1 mensagens arquivadas:' 504 }, 505 title: 'Filtro por remetente', 506 enable: ($.cookie("fadeFilterAlarm") != (new Date).toString("dd/MM/yyyy")) 507 } 508 ]; 509 break; 510 // carregar todas as modais 511 default: 512 $('.gray').remove(); 513 var toIterate = [ 514 { 515 attrDeadline: 'filtersDeadline', 516 caption: { 517 singular:'Você tem uma mensagem arquivada:', 518 plural:'Você tem %1 mensagens arquivadas:' 519 }, 520 title: 'Filtro por remetente', 521 enable: ($.cookie("fadeFilterAlarm") != (new Date).toString("dd/MM/yyyy")) 522 }, 523 { 524 attrDeadline: 'doneDeadline', 525 caption: {singular:'You have one undone message today:', 526 plural:"You have %1 undone messages today:" 527 }, 528 title: 'Concluídas', 529 enable: ($.cookie("fadeCompleted") != (new Date).toString("dd/MM/yyyy")) 530 }, 531 { 532 attrDeadline: 'alarmDeadline', 533 caption: { 534 singular:'You have a follow up due for today:', 535 plural:'You have %1 follow ups due for today:' 536 }, 537 title: 'Sinalizadas', 538 enable: ($.cookie("fadeAlarm") != (new Date).toString("dd/MM/yyyy")) 539 } 540 ]; 541 break; 542 } 498 543 var i = 0; 544 // recupera e monta os dados para serem exibidos nas modais de alarmes 499 545 while (it = toIterate.pop()){ 500 546 if (!it.enable) continue; 501 502 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}}); 547 548 var alarmInRange = {}; 549 // caso for alarme de sinalizadores 550 if(it.attrDeadline == 'doneDeadline' || it.attrDeadline == 'alarmDeadline'){ 551 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}}); 552 if(alarmInRange.length > 0){ 553 for(var i=0; i<alarmInRange.length; i++){ 554 if(alarmInRange[i].isDone == 1){ 555 alarmInRange.splice(i,1); 556 i--; 557 } 558 } 559 } 560 561 if(alarmInRange.length > 0){ 562 var messages_alarm = []; 563 for(var i=0; i<alarmInRange.length; i++){ 564 var date = Date.parseExact(alarmInRange[i][it.attrDeadline], 'yyyy-MM-dd HH:mm:ss'); 565 if(date) 566 alarmInRange[i][it.attrDeadline] = date.toString('HH:mm'); 567 568 if(alarmInRange[i]['followupflag']['id'] < 7){ 569 var nameFollowupflag = get_lang(alarmInRange[i]['followupflag']['name']); 570 }else{ 571 var nameFollowupflag = alarmInRange[i]['followupflag']['name']; 572 } 573 var li_alarm = alarmInRange[i][it.attrDeadline] + ' - ' + nameFollowupflag + ' - ' + truncate(alarmInRange[i]['message']['headers']['subject'], 15); 574 messages_alarm.push({ 575 "msg_number" : alarmInRange[i]['messageNumber'], 576 "msg_folder" : alarmInRange[i]['folderName'], 577 "a" : li_alarm 578 }); 579 } 580 } 581 } 582 // caso for alarme de filtros 583 else if(filter_list){ 584 alarmInRange = filter_list; 585 if(alarmInRange.length > 0){ 586 var messages_alarm = []; 587 for(var i=0; i<alarmInRange.length; i++){ 588 var d = new Date(alarmInRange[i]['udate']*1000); 589 var dia = d.getDate(); 590 if(dia < 10){ 591 dia = "0" + dia; 592 } 593 var mes = (d.getMonth()) + 1; 594 if(mes < 10){ 595 mes = "0" + mes; 596 } 597 var ano = d.getFullYear(); 598 var dtFormatada = dia + '/' + mes + '/' + ano; 599 alarmInRange[i]['udate'] = dtFormatada; 600 601 var li_alarm = alarmInRange[i]['udate'] + ' ' + alarmInRange[i]['smalldate'] + ' - ' + alarmInRange[i]['from'] + ' - ' + truncate(alarmInRange[i]['subject'], 15); 602 messages_alarm.push({ 603 "msg_number" : alarmInRange[i]['msg_number'], 604 "msg_folder" : alarmInRange[i]['msg_folder'], 605 "a" : li_alarm 606 }); 607 } 608 } 609 } 610 503 611 if(alarmInRange.length > 0){ 504 for(var i=0; i<alarmInRange.length; i++){505 if(alarmInRange[i].isDone == 1){506 alarmInRange.splice(i,1);507 i--;508 }509 }510 }511 if(alarmInRange.length > 0){512 for(var i=0; i<alarmInRange.length; i++){513 var date = Date.parseExact(alarmInRange[i][it.attrDeadline], 'yyyy-MM-dd HH:mm:ss');514 if(date)515 alarmInRange[i][it.attrDeadline] = date.toString('HH:mm');516 }517 612 var caption = (alarmInRange.length == 1) ? 518 613 get_lang(it.caption.singular): … … 520 615 521 616 var data = { 522 alarmInRange : alarmInRange,617 alarmInRange : messages_alarm, 523 618 caption: caption, 524 it : it525 619 }; 620 var type_alarm = it.attrDeadline; 621 var ok_function = function(event, type, type_cookie){ 622 if($(event.target).parents('.'+type).find('[name="stopAlert"]').is(':checked')){ 623 $.cookie(type_cookie, (new Date).toString("dd/MM/yyyy"), { 624 expires: 1 625 }); 626 } 627 } 628 // carrega o template dos alarmes e cria a modal utilizando o plugin freeow 526 629 var dialogText = DataLayer.render("../prototype/modules/mail/templates/followupflag_alarm_list.ejs", data); 630 var titulo = '<div class="header-alarm"><span class="title-alarm"><strong>'+it.title+'</strong></span><span name="header-icon" class="maximize-alarm"></span></div>' 631 $("#freeow").freeow(titulo, dialogText, { 632 classes: ["gray", type_alarm], 633 autoHide: false, 634 startStyle: null, 635 onClick: function(event){ 636 var type = ''; 637 var type_cookie = ''; 638 if($(this).hasClass('alarmDeadline')){ 639 type = 'alarmDeadline'; 640 type_cookie = 'fadeAlarm'; 641 }else if($(this).hasClass('doneDeadline')){ 642 type = 'doneDeadline'; 643 type_cookie = 'fadeCompleted'; 644 }else if($(this).hasClass('filtersDeadline')){ 645 type = 'filtersDeadline'; 646 type_cookie = 'fadeFilterAlarm'; 647 } 648 if($(event.target).hasClass('stop-alert-alarm')){ 649 return; 650 } 651 if($(event.target).hasClass('minimize-alarm')){ 652 $('.'+type).find('.content-alarm').hide(); 653 $(event.target).removeClass('minimize-alarm'); 654 $(event.target).addClass('maximize-alarm'); 655 return; 656 } 657 if($(event.target).hasClass('maximize-alarm')){ 658 $('.'+type).find('.content-alarm').show(); 659 $(event.target).removeClass('maximize-alarm'); 660 $(event.target).addClass('minimize-alarm'); 661 return; 662 } 663 if($(event.target).hasClass('confirm-alarm')){ 664 ok_function(event, type, type_cookie); 665 $('.'+type).remove(); 666 return; 667 } 668 return false; 669 } 670 }); 671 // elementos do freeow desnecessários 672 $('.gray .background .content p').remove(); 673 $('.gray .icon').remove(); 674 $('.gray .close').remove(); 527 675 528 /** 529 * A última dialog criada é a dialog mais ao alto 530 */ 531 var offsetHeight = $('.ZebraDialog.right-bottom:last').length ? 532 $(window).height() - $('.ZebraDialog.right-bottom:last').position().top : 0; 533 534 /** 535 * Se for a primeira, desloca para cima do rodapé do grid 536 * caso contrário desloca para um pouco acima da última dialog criada 537 */ 538 offsetHeight = !offsetHeight ? 35 : offsetHeight + 20 ; 539 var dialog = new $.Zebra_Dialog(dialogText, { 540 'buttons': ['Ok'], 541 'modal': false, 542 'vcenter_short_message': false, 543 'position': ['right - 20', 'bottom - ' + offsetHeight.toString() ], 544 'custom_class': 'right-bottom followupflag-alarm '+it.attrDeadline 545 }).dialog; 546 $(".ZebraDialog.followupflag-alarm .ZebraDialog_Button0").click(it.onOk); 547 $(".ZebraDialog.followupflag-alarm .display-options .more").click(function(event) { 548 $(event.target).parents('.followupflag-alarm').find('.message-list').css('height', 'auto'); 549 }); 676 // botão ok da modal com jquery button 677 $('.content-alarm button').button(); 550 678 } 551 679 } 680 681 // controle de qual janela de alarme estará maximizada 682 $('.gray').find('.content-alarm').hide(); 683 if($('.gray').length > 0){ 684 if($('.gray').hasClass('filtersDeadline')){ 685 $('.filtersDeadline').find('.content-alarm').show(); 686 $('.filtersDeadline .header-alarm [name="header-icon"]').removeClass('maximize-alarm'); 687 $('.filtersDeadline .header-alarm [name="header-icon"]').addClass('minimize-alarm'); 688 }else if($('.gray').hasClass('alarmDeadline')){ 689 $('.alarmDeadline').find('.content-alarm').show(); 690 $('.alarmDeadline .header-alarm [name="header-icon"]').removeClass('maximize-alarm'); 691 $('.alarmDeadline .header-alarm [name="header-icon"]').addClass('minimize-alarm'); 692 }else if($('.gray').hasClass('doneDeadline')){ 693 $('.doneDeadline').find('.content-alarm').show(); 694 $('.doneDeadline .header-alarm [name="header-icon"]').removeClass('maximize-alarm'); 695 $('.doneDeadline .header-alarm [name="header-icon"]').addClass('minimize-alarm'); 696 } 697 } 698 552 699 } 553 700 $('#main_table').ready(function(){ -
sandbox/2.4.1-1/prototype/modules/mail/templates/followupflag_alarm_list.ejs
r5738 r6280 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 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);"; 9 %> 10 <li class="message-item"> 11 <a onclick="<%=openMessageScript%>"> 12 <%= data.alarmInRange[i].a %> 13 </a> 14 </li> 15 <% 11 16 } 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> 17 %> 18 </ul> 19 <fieldset class="alert-options"> 20 <input type="checkbox" class="stop-alert-alarm" name="stopAlert"> <label><%= get_lang("Don't show this window anymore today.")%></label> 21 <button class="confirm-alarm">Ok</button> 22 </fieldset> 23 </div>
Note: See TracChangeset
for help on using the changeset viewer.