Ignore:
Timestamp:
02/28/12 13:52:26 (12 years ago)
Author:
adriano
Message:

Ticket #2486 - parte do codigo para implementacao do salvamento de novos tipos de sinalizadores

File:
1 edited

Legend:

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

    r5575 r5576  
    1 /** 
    2  * constrói as duas possíveis janela de alerta, utilizando o mesmo template 
    3  */ 
    4 var toIterate = [ 
    5         { 
    6                 attrDeadline: 'doneDeadline',  
    7                 caption: {singular:'Você tem uma mensagem concluindo hoje:', plural:"Você tem %1 mensagens concluindo hoje:"}, 
    8                 onOk: function(event){ 
    9                         if($(event.target).parents('.followupflag-alarm').find('[name="stopAlert"]').is(':checked')){ 
    10                                 $.cookie("fadeCompleted", (new Date).toString("dd/MM/yyyy"), { expires: 1 }); 
    11                         } 
    12                 }, 
    13                 enable: ($.cookie("fadeCompleted") != (new Date).toString("dd/MM/yyyy")) 
    14         }, 
    15         { 
    16                 attrDeadline: 'alarmDeadline',  
    17                 caption: {singular:'Você tem uma mensagem sinalizada para hoje:', plural:'Você tem %1 mensagens sinalizadas para hoje:'}, 
    18                 onOk: function(event){ 
    19                         if($(event.target).parents('.followupflag-alarm').find('[name="stopAlert"]').is(':checked')){ 
    20                                 $.cookie("fadeAlarm", (new Date).toString("dd/MM/yyyy"), { expires: 1 }); 
    21                         } 
    22                 }, 
    23                 enable: ($.cookie("fadeAlarm") != (new Date).toString("dd/MM/yyyy")) 
    24         } 
    25 ]; 
    26  
    27 while (it = toIterate.pop()){ 
    28         if (!it.enable) continue; 
    29          
    30         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')], ['<', toIterate.attrDeadline, (new Date()).set({hour:0, minute:0, second:0}).addHours(24).toString('yyyy-MM-dd 00:00:00')]], criteria: {deepness: 1}}); 
    31         if(alarmInRange.length > 0){ 
    32                 for(var i=0; i<alarmInRange.length; i++){ 
    33                         var date = Date.parseExact(alarmInRange[i].alarmDeadline, 'yyyy-MM-dd hh:mm:ss'); 
    34                         alarmInRange[i].alarmDeadline = date.toString('hh:mm'); 
    35                 } 
    36                 var caption = (alarmInRange.length == 1) ? 
    37                         get_lang(it.caption.singular): 
    38                         get_lang(it.caption.plural, alarmInRange.length); 
    39                          
    40                 var data = {alarmInRange : alarmInRange, caption: caption}; 
    41                 var dialogText = DataLayer.render("../prototype/modules/mail/templates/followupflag_alarm_list.ejs", data); 
    42                  
    43                 /** 
    44                  * A última dialog criada é a dialog mais ao alto 
    45                  */ 
    46                 var offsetHeight = $('.ZebraDialog.right-bottom:last').length ?  
    47                         $(window).height() - $('.ZebraDialog.right-bottom:last').position().top : 0; 
    48  
    49                 /** 
    50                  * Se for a primeira, desloca para cima do rodapé do grid 
    51                  * caso contrário desloca para um pouco acima da última dialog criada 
    52                  */ 
    53                 offsetHeight = !offsetHeight ? 35 : offsetHeight + 20 ; 
    54                 var dialog = new $.Zebra_Dialog(dialogText, { 
    55                         'buttons':  ['Ok'], 
    56                         'modal': false, 
    57                         'vcenter_short_message': false, 
    58                         'position': ['right - 20', 'bottom - ' + offsetHeight.toString() ], 
    59                         'custom_class': 'right-bottom followupflag-alarm', 
    60                 }).dialog; 
    61  
    62                 $(".ZebraDialog.followupflag-alarm .ZebraDialog_Button0").click(it.onOk); 
    63                  
    64                 $(".ZebraDialog.followupflag-alarm .display-options .more").click(function(event) { 
    65                         $(event.target).parents('.followupflag-alarm').find('.message-list').css('height', 'auto'); 
    66                 }); 
    67                  
    68         }                
    69 } 
    70  
    711function init_followup(data){ 
    722 
     
    12454                                                                        } 
    12555                                                                }); 
     56                                                                /* 
    12657                                                                if ( !valid ) { 
    12758                                                                        // remove invalid value, as it didn't match anything 
     
    13061                                                                        input.data( "autocomplete" ).term = ""; 
    13162                                                                        return false; 
     63                                                                } 
     64                                                                */ 
     65                                                                if ( !valid ) { 
     66                                                                        if(select.has('option[value="custom"]').length > 0) { 
     67                                                                                select.find('option:last').val('custom').html($(this).val()).attr('selected', 'selected'); 
     68                                                                        } else { 
     69                                                                                select.append(select.find('option:last').clone().val('custom').html($(this).val())); 
     70                                                                                select.find('option[value="custom"]').attr('selected', 'selected'); 
     71                                                                        } 
    13272                                                                } 
    13373                                                        } 
     
    192132                var backgroundColor = winElement.find('[name="backgroundColor"]').val(); 
    193133                var followupflagId  = winElement.find('[name="name"] option:selected').val(); 
     134                if (followupflagId == 'custom') { 
     135                        DataLayer.put('followupflag', {name:winElement.find('[name="name"] option:selected').text(), uid:User.me.id}); 
     136                        DataLayer.commit(false, false, function(data){ 
     137                                followupflags = DataLayer.get('followupflag',{criteria:{order: 'id'}}, true);            
     138                                followupflagId = followupflags[followupflags.length - 1].id; 
     139                                winElement.find('[name="name"] option[value="custom"]').val(followupflagId); 
     140                        }); 
     141                } 
     142                 
     143                 
    194144                var isDone = winElement.find('[name="done"]').is(':checked') ? 1 : 0; 
    195145                var alarmDate = false; 
     
    209159                        folders.push(folder_name); 
    210160                         
    211                         //var followupflag = DataLayer.get('followupflag', followupflagId.toString()), 
    212                         var idFollowupflagged = winElement.find('.id-followup').val(); 
     161                        var idFollowupflagged = winElement.find('[name="followupflagId"]').val(); 
    213162                        var followupflagged = DataLayer.merge({ 
    214163                                uid : User.me.id, 
    215164                                followupflagId : followupflagId,  
    216165                                folderName : folder_name,  
    217                                 messageNumber : messageNumber,  
    218                                 //alarmDeadline : winElement.find('[name="alarmDate"]').datepicker("getDate"),  
    219                                 //doneDeadline: winElement.find('[name="doneDate"]').datepicker("getDate"), 
     166                                messageNumber : messageNumber, 
    220167                                isDone: isDone, 
    221168                                backgroundColor : backgroundColor 
     
    236183                        } 
    237184                         
     185                        /** 
     186                         * Aplica o ícone correspondente na lista de mensagens do expressoMail 
     187                         */ 
    238188                        var flagged = $('#td_message_followup_' + messageNumber + ', ' + '#td_message_followup_search_' + messageNumber+':first').find(".flag-edited"); 
    239189                        if(isDone){ 
     
    245195                        $('#td_message_followup_' + messageNumber + ', ' +  
    246196                          '#td_message_followup_search_' + messageNumber+':first').find(".flag-edited").css("background", backgroundColor);  
     197                           
     198                        /** 
     199                         * Salva ou, caso já exista, atualiza 
     200                         */ 
    247201                        DataLayer.put('followupflagged', followupflagged); 
    248202                } 
     203                 
    249204                DataLayer.commit(false, false, function(data){ 
    250205                        followupflags = DataLayer.get('followupflagged',{criteria:{order: 'id'}}, true);                 
    251206                        var id = followupflags[followupflags.length - 1].id; 
    252                         winElement.find('.id-followup').val(id); 
    253                 });              
     207                        winElement.find('[name="followupflagId"]').val(id); 
     208                        winElement.find('.menu-configure-followupflag .save').button("option", "disabled", true); 
     209                }); 
     210                 
    254211                var extend = DataLayer.get('followupflagged', { 
    255                 filter: ['AND', ['IN', 'messageNumber', selectedMessageIds], ['IN', 'folderName', folders]],criteria: {deepness: 1}}); 
     212                        filter: ['AND', ['IN', 'messageNumber', selectedMessageIds], ['IN', 'folderName', folders]], 
     213                        criteria: {deepness: 1} 
     214                }); 
     215                 
    256216                if(extend != "" || extend != 'undefined' || extend != []){ 
    257                         for(var ex = 0; ex < extend.length; ex++){ 
    258                                 if(onceOpenedHeadersMessages[extend[ex].folderName]){ 
    259                                         if(onceOpenedHeadersMessages[extend[ex].folderName][extend[ex].messageNumber]){ 
    260                                                 onceOpenedHeadersMessages[extend[ex].folderName][extend[ex].messageNumber]['followupflagged'] = {}; 
    261                                                 DataLayer.merge(onceOpenedHeadersMessages[extend[ex].folderName][extend[ex].messageNumber]['followupflagged'], extend[ex]); 
     217                        for(var i = 0; i < extend.length; i++){ 
     218                                if(onceOpenedHeadersMessages[extend[i].folderName]){ 
     219                                        if(onceOpenedHeadersMessages[extend[i].folderName][extend[i].messageNumber]){ 
     220                                                onceOpenedHeadersMessages[extend[i].folderName][extend[i].messageNumber]['followupflagged'] = {}; 
     221                                                DataLayer.merge(onceOpenedHeadersMessages[extend[i].folderName][extend[i].messageNumber]['followupflagged'], extend[i]); 
    262222                                        } 
    263223                                } 
     
    270230         
    271231        .filter('.menu-configure-followupflag .delete').click(function(){ 
    272  
     232                if (selectedMessageIds.length == 0) $(this).button("option", "disabled", true); 
     233                 
    273234                for(i = 0; i < selectedMessageIds.length; i++){ 
    274235                        var folder_name; 
     
    280241                                folder_name = tr.getAttribute('name'); 
    281242                        } 
    282                         var messageNumber   = selectedMessageIds[i]; 
     243                        var messageNumber = selectedMessageIds[i]; 
    283244                        if(onceOpenedHeadersMessages[folder_name][messageNumber]['followupflagged']){ 
    284245                                if(onceOpenedHeadersMessages[folder_name][messageNumber]['followupflagged'].id){ 
     
    297258                DataLayer.commit(); 
    298259                winElement.dialog("close"); 
    299                  
    300260        }); 
    301261 
     262                                 
     263        if(!winElement.find('[name="followupflagId"]').val()) 
     264                winElement.find('.menu-configure-followupflag .delete').button("option", "disabled", true); 
     265                                 
     266        /** 
     267         * Se houver mudança, habilita o botão "Save" 
     268         */ 
     269        winElement.find(':input').change(function(event){ 
     270                if (event.keyCode != '27' && event.keyCode != '13') 
     271                        $(this).button("option", "disabled", true); 
     272        }).keydown(function(event){ 
     273                if (event.keyCode != '27' && event.keyCode != '13') 
     274                        $(this).button("option", "disabled", true); 
     275        });      
     276         
    302277        winElement.find('.date').datepicker(); 
    303278        winElement.find('.time').timepicker({}); 
    304279        winElement.find('[name="name"]').combobox(); 
    305          
     280 
    306281         
    307282        winElement.find('[name="alarmDate"],[name="alarmTime"]').attr("disabled","disabled"); 
     
    371346 
    372347} 
     348 
     349 
     350 
     351 
     352/** 
     353 * constrói as duas possíveis janela de alerta, utilizando o mesmo template 
     354 */ 
     355 
     356$('#main_table').ready(function(){ 
     357        var toIterate = [ 
     358                { 
     359                        attrDeadline: 'doneDeadline',  
     360                        caption: {singular:'Você tem uma mensagem concluindo hoje:', plural:"Você tem %1 mensagens concluindo hoje:"}, 
     361                        onOk: function(event){ 
     362                                if($(event.target).parents('.followupflag-alarm').find('[name="stopAlert"]').is(':checked')){ 
     363                                        $.cookie("fadeCompleted", (new Date).toString("dd/MM/yyyy"), { expires: 1 }); 
     364                                } 
     365                        }, 
     366                        enable: ($.cookie("fadeCompleted") != (new Date).toString("dd/MM/yyyy")) 
     367                }, 
     368                { 
     369                        attrDeadline: 'alarmDeadline',  
     370                        caption: {singular:'Você tem uma mensagem sinalizada para hoje:', plural:'Você tem %1 mensagens sinalizadas para hoje:'}, 
     371                        onOk: function(event){ 
     372                                if($(event.target).parents('.followupflag-alarm').find('[name="stopAlert"]').is(':checked')){ 
     373                                        $.cookie("fadeAlarm", (new Date).toString("dd/MM/yyyy"), { expires: 1 }); 
     374                                } 
     375                        }, 
     376                        enable: ($.cookie("fadeAlarm") != (new Date).toString("dd/MM/yyyy")) 
     377                } 
     378        ]; 
     379 
     380        while (it = toIterate.pop()){ 
     381                if (!it.enable) continue; 
     382                 
     383                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')], ['<', toIterate.attrDeadline, (new Date()).set({hour:0, minute:0, second:0}).addHours(24).toString('yyyy-MM-dd 00:00:00')]], criteria: {deepness: 1}}); 
     384                if(alarmInRange.length > 0){ 
     385                        for(var i=0; i<alarmInRange.length; i++){ 
     386                                var date = Date.parseExact(alarmInRange[i].alarmDeadline, 'yyyy-MM-dd hh:mm:ss'); 
     387                                alarmInRange[i].alarmDeadline = date.toString('hh:mm'); 
     388                        } 
     389                        var caption = (alarmInRange.length == 1) ? 
     390                                get_lang(it.caption.singular): 
     391                                get_lang(it.caption.plural, alarmInRange.length); 
     392                                 
     393                        var data = {alarmInRange : alarmInRange, caption: caption}; 
     394                        var dialogText = DataLayer.render("../prototype/modules/mail/templates/followupflag_alarm_list.ejs", data); 
     395                         
     396                        /** 
     397                         * A última dialog criada é a dialog mais ao alto 
     398                         */ 
     399                        var offsetHeight = $('.ZebraDialog.right-bottom:last').length ?  
     400                                $(window).height() - $('.ZebraDialog.right-bottom:last').position().top : 0; 
     401 
     402                        /** 
     403                         * Se for a primeira, desloca para cima do rodapé do grid 
     404                         * caso contrário desloca para um pouco acima da última dialog criada 
     405                         */ 
     406                        offsetHeight = !offsetHeight ? 35 : offsetHeight + 20 ; 
     407                        var dialog = new $.Zebra_Dialog(dialogText, { 
     408                                'buttons':  ['Ok'], 
     409                                'modal': false, 
     410                                'vcenter_short_message': false, 
     411                                'position': ['right - 20', 'bottom - ' + offsetHeight.toString() ], 
     412                                'custom_class': 'right-bottom followupflag-alarm', 
     413                        }).dialog; 
     414 
     415                        $(".ZebraDialog.followupflag-alarm .ZebraDialog_Button0").click(it.onOk); 
     416                         
     417                        $(".ZebraDialog.followupflag-alarm .display-options .more").click(function(event) { 
     418                                $(event.target).parents('.followupflag-alarm').find('.message-list').css('height', 'auto'); 
     419                        }); 
     420                         
     421                }                
     422        } 
     423}); 
Note: See TracChangeset for help on using the changeset viewer.