Ignore:
Timestamp:
06/14/12 09:02:04 (12 years ago)
Author:
marcieli
Message:

Ticket #2764 - Após o merge e correção de bugs, commit da melhoria no trunk

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/prototype/modules/mail/js/followupflag.js

    r6253 r6487  
    251251                                        updateCacheFollowupflag(selectedMessageIds, folders, true); 
    252252                                        winElement.dialog("close"); 
    253                                         alarmFollowupflagged(); 
     253                                        alarmFollowupflagged('followupflagAlarms'); 
    254254                                }); 
    255255                                winElement.find('.menu-configure-followupflag .save').button("option", "disabled", true); 
     
    328328                DataLayer.commit(false, false, function(){ 
    329329                        winElement.dialog("close"); 
    330                         alarmFollowupflagged(); 
     330                        alarmFollowupflagged('followupflagAlarms'); 
    331331                }); 
    332332                 
     
    471471 
    472472/** 
    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) 
    474478 */ 
    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         ]; 
     479function 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        } 
    508553        var i = 0; 
     554        // recupera e monta os dados para serem exibidos nas modais de alarmes 
    509555        while (it = toIterate.pop()){ 
    510556                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                                 
    513621                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 
    527623                        var caption = (alarmInRange.length == 1) ? 
    528624                                get_lang(it.caption.singular): 
    529625                                get_lang(it.caption.plural, alarmInRange.length); 
    530                                  
     626                        // monta o array de dados a ser passado para o template  
    531627                        var data = { 
    532                                 alarmInRange : alarmInRange,  
     628                                alarmInRange : messages_alarm,  
    533629                                caption: caption,  
    534                                 it : it 
     630                                type: it.attrDeadline, 
     631                                captions: it.caption 
    535632                        }; 
     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 
    536644                        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(); 
    537688                         
    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(); 
    560691                }                
    561692        } 
     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         
    562711} 
     712                 
    563713$('#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); 
    565719}); 
     720 
Note: See TracChangeset for help on using the changeset viewer.