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

Location:
trunk/prototype/modules/mail
Files:
3 edited
4 copied

Legend:

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

    r6167 r6487  
    209209span.removeLabeledMsg {margin:0 5px 0 5px;font-weight: bold;} 
    210210span.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  
    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 
  • 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        <% 
    1119        } 
    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.