Changeset 7972


Ignore:
Timestamp:
03/06/13 15:59:48 (6 years ago)
Author:
antonio
Message:

Ticket #3343 - Refatoração na tela de anexo de mensagens para eliminar redundâncias.

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/expressoMail1_2/js/abas.js

    r7913 r7972  
    303303                            var id_msg = border_id.split("_")[0];  
    304304                            var folder = $("#input_folder_"+border_id+"_r")[0] ? $("#input_folder_"+border_id+"_r").val() : (openTab.imapBox[border_id] ? openTab.imapBox[border_id]:get_current_folder());  
    305                             attach_message(folder, id_msg, onceOpenedHeadersMessages); /* Anexa a mensagem especificada (por folder e id_msg)  
     305                            attach_message(folder, id_msg); /* Anexa a mensagem especificada (por folder e id_msg)  
    306306                                                               na mensagem sendo criada.*/  
    307307                        }  
  • trunk/expressoMail1_2/js/draw_api.js

    r7923 r7972  
    47574757                message_number: id da mensagem sendo anexada.  
    47584758*/  
    4759 function attach_message (folder_name, message_number, message_cache) {  
     4759function attach_message (folder_name, message_number) {  
    47604760    var ID = currentTab;  
    47614761    var fileUploadMSG = $('#fileupload_msg'+ID);  
     
    47654765    att.uid = message_number;  
    47664766    att.type = 'imapMSG';  
    4767     att.name = Base64.encode(message_cache[folder_name][message_number].subject + '.eml');  
     4767    att.name = Base64.encode(onceOpenedHeadersMessages[folder_name][message_number].subject + '.eml');  
    47684768    var idATT = JSON.stringify(att);  
    47694769    addAttachment(ID, idATT);  
    47704770    var attach = {};  
    4771     attach.fileName = message_cache[folder_name][message_number].subject + '.eml';  
    4772     attach.fullFileName = message_cache[folder_name][message_number].subject + '.eml';  
     4771    attach.fileName = onceOpenedHeadersMessages[folder_name][message_number].subject + '.eml';  
     4772    attach.fullFileName = onceOpenedHeadersMessages[folder_name][message_number].subject + '.eml';  
    47734773    if(attach.fileName.length > 20){  
    47744774        attach.fileName = attach.fileName.substr(0, 17) + "... " + attach.fileName.substr(attach.fileName.length - 9, attach.fileName.length);  
     
    47774777    attach.OK = true; 
    47784778    if (folder_name.indexOf('local_messages_') == 0){ 
    4779         attach.fileSize = formatBytes(message_cache[folder_name][message_number].size); 
     4779        attach.fileSize = formatBytes(onceOpenedHeadersMessages[folder_name][message_number].size); 
    47804780    } else { 
    4781         attach.fileSize = formatBytes(message_cache[folder_name][message_number].Size);  
     4781        attach.fileSize = formatBytes(onceOpenedHeadersMessages[folder_name][message_number].Size);  
    47824782    } 
    47834783    var upload = $(DataLayer.render("../prototype/modules/mail/templates/attachment_add_itemlist.ejs", {  
     
    52425242                                                /* Anexa a mensagem especificada (por folder e id_msg)  
    52435243                                                   na mensagem sendo criada.*/  
    5244                                                 attach_message(folder_name, message_number, onceOpenedMessages); 
     5244                                                attach_message(folder_name, message_number); 
    52455245                                        } 
    52465246                                }); 
  • trunk/prototype/modules/attach_message/attach_message.js

    r7951 r7972  
    216216                for (var message in selectedMessages[folder]) { 
    217217                        if (selectedMessages[folder][message]) { 
    218                                 byte_size += parseInt(onceOpenedMessages[folder][message].size); 
     218                                byte_size += parseInt(onceOpenedHeadersMessages[folder][message].size); 
    219219                                total_messages++; 
    220220                        } 
     
    227227var msgAttacherGrid = $("#message_attacher_grid"), msgsTotal = $("#selected_messages_number"); 
    228228var lastLoadedMessages = []; 
    229 var onceOpenedMessages = []; 
    230229var selectedMessages   = {}; 
    231230var selectedFolder     = {}; 
     
    536535                                lastLoadedMessages = data.rows; 
    537536                                $("#mailgrid-container").find(".loading").hide(); 
    538                         //$(".attach-message-search-input").val(""); 
     537 
    539538                                // aplica o contador 
    540539                                jQuery('.timable').each(function (i) { 
     
    560559                                 
    561560                        }, 
    562                         onSelectRow: function (id, selected) { 
    563                                 var message = false; 
    564                                 for (var i=0; i<lastLoadedMessages.length; i++){ 
    565                                         if (lastLoadedMessages[i].msg_number == id) { 
    566                                                 message = lastLoadedMessages[i]; 
    567                                                 break; 
    568                                         } 
    569                                 } 
    570                                 var tabPanelTemplateId = 'mailpreview_tab_' + selectedFolder.id.replace(/[.\/]/g, '_') + '_' + message.msg_number; 
    571                                 var tabPanelTemplateId = tabPanelTemplateId.replace(/[\s\/]/g, '-');  
    572                                  
    573                                 if (selected) {  
    574                    if(selectedFolder['id'].indexOf("local_messages_") != -1){ 
    575                         expresso_mail_archive.getPreviewToAttach(id); 
    576  
    577                         var body = expresso_mail_archive.bodyPreview; 
    578                         var subject = expresso_mail_archive.subjectPreview; 
    579  
    580  
    581                         tabPanelTemplateLabel =  subject.substring(0, $mailpreview_tabs_label_length) + '...'; 
    582  
    583                         if (!$('#' + tabPanelTemplateId).length) { 
    584                             $mailpreview_tabs.tabs("add", '#' + tabPanelTemplateId, tabPanelTemplateLabel) 
    585                             .find('.message.empty-container').hide().end() 
    586                             .find('#' + tabPanelTemplateId).html(body) 
    587                             .prepend( 
    588                                 '<div class="mailpreview-message-info">' +  
    589                                     get_lang('Subject') + ': ' + 
    590                                     html_entities(subject) +  
    591                                 '</div>' 
    592                             ) 
    593                             .find('[class^="ExpressoCssWrapper"]').addClass("mailpreview-message-body"); 
    594                         } else { 
    595                             $mailpreview_tabs.tabs('select', '#' + tabPanelTemplateId) 
    596                             .find('#' + tabPanelTemplateId + ', [href="#' + tabPanelTemplateId + '"]').removeClass('preview-message-unselected'); 
     561            onSelectRow: function(id, selected) 
     562            { 
     563                /* Funções auxiliares:*/ 
     564 
     565                var mark_as_selected = function (folder, msg_number) { 
     566                    if(!selectedMessages[folder]) 
     567                    { 
     568                        selectedMessages[folder] = {}; 
     569                    } 
     570                    selectedMessages[folder][msg_number] = true; 
     571                } 
     572 
     573                var add_msg_to_cache = function (cache, msg) { 
     574                    if(!cache[selectedFolder.id]) 
     575                    { 
     576                        cache[selectedFolder.id] = {}; 
     577                    } 
     578                    cache[selectedFolder.id][msg.msg_number] = msg; 
     579                } 
     580 
     581                var add_preview_tab = function (subject, body) { 
     582                    // Trunca o assunto, para caber na aba de preview: 
     583                    var tabPanelTemplateLabel = html_entities(subject); 
     584                    if(tabPanelTemplateLabel.length > $mailpreview_tabs_label_length + 3) 
     585                    { 
     586                        tabPanelTemplateLabel = tabPanelTemplateLabel.substring(0, $mailpreview_tabs_label_length) + '...'; 
     587                    } 
     588 
     589                    // Se a aba não tiver sido adicionada: 
     590                    if(!$('#' + tabPanelTemplateId).length) 
     591                    { 
     592                        // adiciona-a: 
     593                        $mailpreview_tabs 
     594                        .tabs("add", '#' + tabPanelTemplateId, tabPanelTemplateLabel) 
     595                        .find('.message.empty-container') 
     596                        .hide() 
     597                        .end() 
     598                        .find('#' + tabPanelTemplateId) 
     599                        .html(body) 
     600                        .prepend('<div class="mailpreview-message-info">' + get_lang('Subject') + ': ' + html_entities(subject) + '</div>') 
     601                        .find('[class^="ExpressoCssWrapper"]') 
     602                        .addClass("mailpreview-message-body"); 
     603                    } 
     604                    else 
     605                    { 
     606                        // Senão, só seleciona: 
     607                        $mailpreview_tabs 
     608                        .tabs('select', '#' + tabPanelTemplateId) 
     609                        .find('#' + tabPanelTemplateId + ', [href="#' + tabPanelTemplateId + '"]') 
     610                        .removeClass('preview-message-unselected'); 
     611                    } 
     612                } 
     613 
     614                var message = false; 
     615                for(var i = 0; i < lastLoadedMessages.length; i++) 
     616                { 
     617                    if(lastLoadedMessages[i].msg_number == id) 
     618                    { 
     619                        message = lastLoadedMessages[i]; 
     620                        break; 
     621                    } 
     622                } 
     623                var tabPanelTemplateId = 'mailpreview_tab_' + selectedFolder.id.replace(/[.\/]/g, '_') + '_' + message.msg_number; 
     624                var tabPanelTemplateId = tabPanelTemplateId.replace(/[\s\/]/g, '-'); 
     625 
     626                if(selected) 
     627                { 
     628                    // Se a já mensagem (com preview) já estiver no cache: 
     629                    if(onceOpenedHeadersMessages[selectedFolder.id] && onceOpenedHeadersMessages[selectedFolder.id][message.msg_number]  && onceOpenedHeadersMessages[selectedFolder.id][message.msg_number].body) 
     630                    { 
     631 
     632                        mark_as_selected(selectedFolder.id, message.msg_number); 
     633 
     634                        add_preview_tab( 
     635                            onceOpenedHeadersMessages[selectedFolder.id][message.msg_number].subject, 
     636                            onceOpenedHeadersMessages[selectedFolder.id][message.msg_number].body 
     637                        ); 
     638                    } 
     639                    else // Mensagem não está no cache: 
     640                    { 
     641                        jQuery('#mailpreview_container').block( 
     642                        { 
     643                            message: '<div id="loading-content"><div class="image"></div></div>', 
     644                            css: { 
     645                                backgroundImage: 'url(' + BASE_PATH + 'modules/attach_message/images/loading.gif)', 
     646                                backgroundRepeat: 'no-repeat', 
     647                                backgroundPosition: 'center', 
     648                                backgroundColor: 'transparent', 
     649                                width: '32px', 
     650                                height: '32px', 
     651                                border: 'none' 
     652                            }, 
     653                            overlayCSS: { 
     654                                backgroundColor: '#CCC', 
     655                                opacity: 0.5 
     656                            } 
     657                        }); 
     658 
     659                        mark_as_selected(selectedFolder.id, message.msg_number); 
     660 
     661                        // Se for mensagem local: 
     662                        if(selectedFolder['id'].indexOf("local_messages_") != -1) 
     663                        { 
     664                            expresso_mail_archive.getPreviewToAttach(id); 
     665 
     666                            var body = expresso_mail_archive.bodyPreview; 
     667                            var subject = expresso_mail_archive.subjectPreview; 
     668 
     669                            add_preview_tab(subject, body); 
     670 
     671                            $('#mailpreview_container').unblock(); 
     672 
     673                            add_msg_to_cache(onceOpenedHeadersMessages, message); 
    597674                        } 
    598                     } 
    599                                         if (onceOpenedMessages[selectedFolder.id] && onceOpenedMessages[selectedFolder.id][message.msg_number]) { 
    600  
    601                                                 if (!selectedMessages[selectedFolder.id]) 
    602                                                         selectedMessages[selectedFolder.id] = {}; 
    603                                                          
    604                                                 selectedMessages[selectedFolder.id][message.msg_number] = true; 
    605                                                 $('#mailpreview-container').unblock();                                           
    606  
    607                                                 var tabPanelTemplateLabel = html_entities(onceOpenedMessages[selectedFolder.id][message.msg_number].subject); 
    608                                                 if (tabPanelTemplateLabel.length > $mailpreview_tabs_label_length + 3) 
    609                                                         tabPanelTemplateLabel = tabPanelTemplateLabel.substring(0, $mailpreview_tabs_label_length) + '...'; 
    610                                                  
    611                                                 if (!$('#' + tabPanelTemplateId).length) { 
    612                                                         $mailpreview_tabs.tabs("add", '#' + tabPanelTemplateId, tabPanelTemplateLabel) 
    613                                                         .find('.message.empty-container').hide().end() 
    614                                                         .find('#' + tabPanelTemplateId).html(onceOpenedMessages[selectedFolder.id][message.msg_number].body); 
    615                                                 } else { 
    616                                                         $mailpreview_tabs.tabs('select', '#' + tabPanelTemplateId) 
    617                                                         .find('#' + tabPanelTemplateId + ', [href="#' + tabPanelTemplateId + '"]').removeClass('preview-message-unselected'); 
    618                                                 } 
    619  
    620                          
    621  
    622                                         } else { 
    623                                                 jQuery('#mailpreview_container').block({   
    624                                                         message: '<div id="loading-content"><div class="image"></div></div>',   
    625                                                         css: {   
    626                                                                 backgroundImage: 'url('+BASE_PATH+'modules/attach_message/images/loading.gif)',   
    627                                                                 backgroundRepeat: 'no-repeat',  
    628                                                                 backgroundPosition: 'center',  
    629                                                                 backgroundColor: 'transparent',  
    630                                                                 width: '32px',  
    631                                                                 height: '32px',  
    632                                                                 border:'none'   
    633                                                         },  
    634                                                         overlayCSS: {   
    635                                                                 backgroundColor: '#CCC',   
    636                                                                 opacity:         0.5  
    637                                                         }   
    638                                                 });  
    639  
    640                                                 var offlineCase = ""; 
    641                                                  
    642                                                 if( !selectedFolder.id.indexOf( 'local_messages/' ) ) 
    643                                                     offlineCase = ":offline"; 
    644                                            
    645                                                 if (!selectedMessages[selectedFolder.id]) 
    646                                                         selectedMessages[selectedFolder.id] = {}; 
    647                                                 selectedMessages[selectedFolder.id][message.msg_number] = true; 
    648  
    649  
    650                         if(selectedFolder['id'].indexOf("local_messages_") != -1){ 
    651                             $('#mailpreview_container').unblock(); 
    652                             if (!onceOpenedMessages[selectedFolder.id]) 
    653                                     onceOpenedMessages[selectedFolder.id] = {}; 
    654                                 onceOpenedMessages[selectedFolder.id][message.msg_number] = message; 
    655  
    656                             var tabPanelTemplateLabel = html_entities(onceOpenedMessages[selectedFolder.id][message.msg_number].subject); 
    657                                     if (tabPanelTemplateLabel.length > $mailpreview_tabs_label_length + 3) 
    658                                         tabPanelTemplateLabel = tabPanelTemplateLabel.substring(0, $mailpreview_tabs_label_length) + '...'; 
    659                             selectedMessagesCount(); 
    660                         } else { 
    661                                                 $.ajax({ 
    662                                                         accepts: 'text/html', 
    663                                                         url: BASE_PATH + 'REST.php'+offlineCase+'?q=folder/'+selectedFolder.id.replace(dashes, '.')+'/message/'+id, 
    664                                                         dataType: 'json', 
    665                                                         success: function( mail_preview ){               
    666                                                                 if (!onceOpenedMessages[selectedFolder.id]) 
    667                                                                         onceOpenedMessages[selectedFolder.id] = {}; 
    668                                                                 onceOpenedMessages[selectedFolder.id][message.msg_number] = jQuery.extend(true, message, mail_preview); 
    669  
    670                                                                 $('#mailpreview_container').unblock(); 
    671  
    672                                                                 var tabPanelTemplateLabel = html_entities(onceOpenedMessages[selectedFolder.id][message.msg_number].subject); 
    673                                                                 if (tabPanelTemplateLabel.length > $mailpreview_tabs_label_length + 3) 
    674                                                                         tabPanelTemplateLabel = tabPanelTemplateLabel.substring(0, $mailpreview_tabs_label_length) + '...'; 
    675                                                         selectedMessagesCount(); 
    676                                                                  
    677                                                                 if (!$('#' + tabPanelTemplateId).length) {       
    678                                                                         $mailpreview_tabs.tabs("add", '#' + tabPanelTemplateId, tabPanelTemplateLabel) 
    679                                                                         .find('.message.empty-container').hide().end() 
    680                                                                         .find('#' + tabPanelTemplateId).html(onceOpenedMessages[selectedFolder.id][message.msg_number].body) 
    681                                                                         .prepend( 
    682                                                                                 '<div class="mailpreview-message-info">' +  
    683                                                                                         get_lang('Subject') + ': ' + 
    684                                                                                         html_entities(onceOpenedMessages[selectedFolder.id][message.msg_number].subject) +  
    685                                                                                 '</div>' 
    686                                                                         ) 
    687                                                                         .find('[class^="ExpressoCssWrapper"]').addClass("mailpreview-message-body"); 
    688                                                                 } else { 
    689                                                                         $mailpreview_tabs.tabs('select', '#' + tabPanelTemplateId) 
    690                                                                         .find('#' + tabPanelTemplateId + ', [href="#' + tabPanelTemplateId + '"]').removeClass('preview-message-unselected'); 
    691                                                                 } 
    692                                                         } 
    693                                                 }); 
    694                         }       
    695                                         } 
    696                                 } else { 
    697                                         /** 
    698                                          * if you wants to remove tab on unselect message, 
    699                                          * but still needs to uselect message on remove tab. 
    700                                          *  
    701                                          */ 
    702                                         selectedMessages[selectedFolder.id][message.msg_number] = false; 
    703                                         $mailpreview_tabs.find('#' + tabPanelTemplateId + ', [href="#' + tabPanelTemplateId + '"]').addClass('preview-message-unselected'); 
    704                                 } 
    705                                  
    706                                 if (onceOpenedMessages[selectedFolder.id] && onceOpenedMessages[selectedFolder.id][message.msg_number]) 
    707                                         selectedMessagesCount(); 
    708                         }, 
     675                        else 
     676                        { 
     677                            proxy_mensagens.get_msg(id, selectedFolder.id, '', function (data) { 
     678                                message = $.extend(true, message, data); 
     679 
     680                                add_preview_tab(message.subject, message.body); 
     681 
     682                                $('#mailpreview_container').unblock(); 
     683 
     684                                add_msg_to_cache(onceOpenedHeadersMessages, message); 
     685 
     686 
     687                            }) 
     688                        } 
     689                    } 
     690                } 
     691                else 
     692                { 
     693                    /** 
     694                     * if you wants to remove tab on unselect message, 
     695                     * but still needs to uselect message on remove tab. 
     696                     * 
     697                     */ 
     698                    selectedMessages[selectedFolder.id][message.msg_number] = false; 
     699                    $mailpreview_tabs 
     700                    .find('#' + tabPanelTemplateId + ', [href="#' + tabPanelTemplateId + '"]') 
     701                    .addClass('preview-message-unselected'); 
     702                } 
     703 
     704                selectedMessagesCount(); 
     705            }, 
     706             
    709707                        caption: '<span class="'+selectedFolder['class']+'">'+selectedFolder.name+'</span>' 
    710708                }); 
    711                 //.jqGrid('navGrid','#message_attacher_grid_pager',{edit:false,add:false,del:false}); 
    712709 
    713710        var search_local_messsages = function(param, folder){ 
Note: See TracChangeset for help on using the changeset viewer.