Changeset 6509


Ignore:
Timestamp:
06/14/12 23:39:50 (7 years ago)
Author:
natan
Message:

Ticket #2845 - Atualizacao da API na busca de mensagens - Otimizando o carregamento do anexar mensagens

Location:
sandbox/expressoServiceImap
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • sandbox/expressoServiceImap/expressoMail1_2/index.php

    r6237 r6509  
    2929                <link rel="stylesheet" type="text/css" href="../prototype/plugins/fullcalendar/fullcalendar.print.css"></link> 
    3030                <link rel="stylesheet" type="text/css" href="../prototype/plugins/icalendar/jquery.icalendar.css"></link> 
    31                  
    32                 <script type="text/javascript" src="../prototype/plugins/jquery/jquery.min.js"></script> 
    3331                <link href="../prototype/modules/filters/filters.css" rel="stylesheet" type="text/css"> 
    34                 <script type="text/javascript" src="../prototype/plugins/jquery/jquery-ui.min.js"></script> 
    35                 <script src="../prototype/plugins/json2/json2.js" language="javascript"></script> 
    36                 <script src="../prototype/plugins/ejs/ejs.js" language="javascript"></script> 
    37                 <script src="../prototype/plugins/store/jquery.store.js" language="javascript"></script> 
    38                 <script src="../prototype/plugins/farbtastic/farbtastic.js" language="javascript"></script> 
    39                 <script src="../prototype/api/datalayer.js" language="javascript"></script>                                      
    40                 <script type="text/javascript" src="../prototype/plugins/scrollto/jquery.scrollTo.js"></script> 
     32 
     33                <script language="javascript" src="../prototype/plugins/jquery/jquery.min.js"></script> 
     34                <script language="javascript" src="../prototype/plugins/jquery/jquery-ui.min.js"></script> 
     35                <script language="javascript" src="../prototype/plugins/json2/json2.js"></script> 
     36                <script language="javascript" src="../prototype/plugins/ejs/ejs.js"></script> 
     37                <script language="javascript" src="../prototype/plugins/store/jquery.store.js"></script> 
     38                <script language="javascript" src="../prototype/plugins/farbtastic/farbtastic.js"></script> 
     39                <script language="javascript" src="../prototype/api/datalayer.js"></script>                                      
     40                <script language="javascript" src="../prototype/plugins/scrollto/jquery.scrollTo.js"></script> 
    4141                <script language="javascript">DataLayer.dispatchPath = "../prototype/";</script>                                         
    42                 <script src="../library/ckeditor/ckeditor.js" language="javascript" charset="utf-8"></script>  
    43                 <script src="../library/ckeditor/adapters/jquery.js" language="javascript"></script>  
    44                 <script src="../prototype/plugins/lazy/jquery.lazy.js" language="javascript"></script>  
    45                  
     42                <script language="javascript" src="../library/ckeditor/ckeditor.js" charset="utf-8"></script>  
     43                <script language="javascript" src="../library/ckeditor/adapters/jquery.js"></script>  
     44                <script language="javascript" src="../prototype/plugins/lazy/jquery.lazy.js"></script>  
     45                <script language="javascript" src="../prototype/modules/attach_message/common.js"></script> 
     46 
    4647                <link rel="Stylesheet" type="text/css" href="../prototype/plugins/jquery/jquery-ui.css" />                                       
    4748                 
     
    6869                 
    6970                <script type="text/javascript" src="../prototype/modules/calendar/js/timezone.js"></script> 
    70         <script type="text/javascript" src="../prototype/plugins/dateFormat/dateFormat.js"></script> 
     71                <script type="text/javascript" src="../prototype/plugins/dateFormat/dateFormat.js"></script> 
    7172                <script type="text/javascript" src="../prototype/modules/calendar/js/calendar.date.js"></script> 
    7273                <script type="text/javascript" src="../prototype/modules/calendar/js/calendar.codecs.js"></script> 
  • sandbox/expressoServiceImap/expressoMail1_2/js/draw_api.js

    r6486 r6509  
    38853885                }) 
    38863886        }); 
    3887          
    3888         DataLayer.codec( 'folder', 'tree', { 
    3889  
    3890                     encoder: function( data ){ 
    3891                  
    3892                         if( preferences.use_local_messages == 1 || expresso_offline) 
    3893                         { 
    3894                             var folders = expresso_local_messages.list_local_folders(); 
    3895                              
    3896                             var stripParents = /^(.*)\/([^\/]*)/; 
    3897  
    3898                             $.each( folders, function( i, folder ){ 
    3899                                      
    3900                                     if(typeof(folder) == 'undefined')  return; 
    3901                                        
    3902                                     var id = 'local_messages/' + folder[0]; 
    3903  
    3904                                     var parts = stripParents.exec( id ); 
    3905                                  
    3906                                     data[data.length] = { 'id' : id, 
    3907                                                           'commonName' : parts[2], 
    3908                                                           'parentFolder' : parts[1] }; 
    3909                             }); 
    3910                         } 
    3911  
    3912                         var trees = [[],[],[]], 
    3913  
    3914                         root = { inbox: /^INBOX/, share: /^user/, local: /^local_messages/ }; 
    3915  
    3916                         for (var i = 0; i < data.length; i++ ) 
    3917                         { 
    3918                             var index = root.inbox.test(data[i].id) ? 0 : 
    3919                                         root.share.test(data[i].id) ? 1 : 
    3920                                         root.local.test(data[i].id) ? 2 : 
    3921                                         'false'; 
    3922  
    3923                             if( isNaN(index) ) continue; 
    3924  
    3925                             if (!unorphanize(trees[index], data[i])) 
    3926                             { 
    3927                                 data[i].children = []; 
    3928                                 trees[index].push(data[i]); 
    3929                             } 
    3930                         } 
    3931  
    3932                         return( { folders: trees } ); 
    3933                     } 
    3934             } ); 
    3935  
    3936             current_folder = 'INBOX'; 
    3937  
    3938             DataLayer.codec( 'message', 'jqGrid', { 
    3939  
    3940                   encoder: function( data, crit ){ 
    3941  
    3942                         if( !crit.criteria.properties.context.folder.indexOf( 'local_messages/' ) ) 
    3943                         { 
    3944                             var msgs = expresso_local_messages.get_local_range_msgs( crit.criteria.properties.context.folder.replace(dots, "/").replace("local_messages/", ""), 
    3945                                                                                       crit.offset + 1, crit.limit, "SORTARRIVAL", crit.orderDesc, "ALL", 1, 1 ); 
    3946  
    3947                             for( var i = 0; i < msgs.length; i++ ) 
    3948                             { 
    3949                                   msgs[i].size = msgs[i].Size; 
    3950                                   msgs[i].timestamp = msgs[i].udate * 1000; 
    3951                                   msgs[i].flags = []; 
    3952  
    3953                                   for( var ii = 0; ii < flags.length; ii++ ) 
    3954                                       if( f = $.trim( msgs[i][ flags[ii] ] ) ) 
    3955                                           msgs[i].flags[ msgs[i].flags.length ] =  f; 
    3956  
    3957                                   msgs[i].flags = msgs[i].flags.join(','); 
    3958                             } 
    3959  
    3960                             return( {"rows": msgs,  
    3961                                       "records": msgs.length, 
    3962                                       "page": crit.page,  
    3963                                       "total": Math.ceil( msgs.num_msgs / crit.limit )} ); 
    3964                         } 
    3965  
    3966                         return( data ); 
    3967                   }, 
    3968                   criteria: function( crit ){ 
    3969  
    3970                         return { criteria: { properties: {context:{folder: current_folder || 'INBOX'}}, offset: crit.rows * ( crit.page - 1 ), limit: crit.rows, orderDesc: crit.sord == "desc" } }; 
    3971  
    3972                   } 
    3973             }); 
    39743887 
    39753888        return ID; 
  • sandbox/expressoServiceImap/prototype/modules/attach_message/attach_message.js

    r6486 r6509  
    1 // $.storage = new $.store(); 
    2   
    3 isOffline = /[A-z0-9-_\/\.]*:offline\?(.*)/; 
    4 breakParams = /[&=]/; 
    5 dots = /\./gi; 
    6 dashes = /\//gi; 
    7 flags = [ 'Attachment', 'Forwarded' ,'Recent', 'Unseen',  'Answered',  'Draft',  'Deleted', 'Flagged', 'Followupflag', 'Label' ]; 
    8 months = ['Jan','Feb','Mar','Apr','May','June','July','Aug','Sept','Oct','Nov','Dec']; 
    9  
    101var BASE_PATH = '../prototype/'; 
    11 //BASE_PATH = '../'; 
    12 //encontra os pais de todas as pastas e cria uma nova estrutura adicionando os filhos a um array no atributo 'children' do respectivo pai 
    13 unorphanize = function(root, element) { 
    14         var ok = false; 
    15         for (var i=0; i<root.length; i++) { 
    16                 if (root[i].id == element.parentFolder) { 
    17                         element.children = new Array();  
    18                         root[i].children.push(element); 
    19                         return true; 
    20                 } else if (ok = unorphanize(root[i].children, element)) { 
    21                         break; 
    22                 } 
    23         } 
    24  
    25         return ok; 
    26 } 
    27  
    28 /* --- helpers --- */ 
    29 bytes2Size = function(bytes) { 
    30         var sizes = ['B', 'KB', 'MB', 'GB', 'TB']; 
    31         if (bytes == 0) return 'n/a'; 
    32         var i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024))); 
    33         var size = (i<2) ? Math.round((bytes / Math.pow(1024, i))) : Math.round((bytes / Math.pow(1024, i)) * 100)/100; 
    34         return  size + ' ' + sizes[i]; 
    35 } 
    36  
    37 flags2Class = function(cellvalue, options, rowObject) { 
    38         var classes = '';        
    39         cellvalue = cellvalue.split(','); 
    40         cell = { 
    41                         Unseen: parseInt(cellvalue[0])  ? 'Unseen' : 'Seen',  
    42                         Answered: parseInt(cellvalue[1]) ? 'Answered' : (parseInt(cellvalue[2]) ? 'Forwarded' : ''),  
    43                         Flagged: parseInt(cellvalue[3]) ? 'Flagged' : '', 
    44                         Recent: parseInt(cellvalue[4])  ? 'Recent' : '',                         
    45                         Draft: parseInt(cellvalue[5]) ? 'Draft' : ''             
    46                 }; 
    47         for(var flag in cell){ 
    48                 classes += '<span class="flags '+ (cell[flag]).toLowerCase() + '"' + (cell[flag] != "" ? 'title="'+ get_lang(cell[flag])+'"' : '')+'> </span>';  
    49         } 
    50         if(rowObject.labels){    
    51                 var titles = []; 
    52                 var count = 0; 
    53                  for(i in rowObject.labels){ 
    54                         titles[count] = " "+rowObject.labels[i].name; 
    55                         count++; 
    56                 } 
    57                 titles = titles.join(); 
    58                 classes += '<span class="flags labeled" title="'+titles+'"> </span>'; 
    59         }else{ 
    60                 classes += '<span class="flags"> </span>'; 
    61         } 
    62          
    63         if(rowObject.followupflagged){           
    64                 if(rowObject.followupflagged.followupflag.id < 7){ 
    65                         var nameFollowupflag = get_lang(rowObject.followupflagged.followupflag.name); 
    66                 }else{ 
    67                         var nameFollowupflag = rowObject.followupflagged.followupflag.name; 
    68                 } 
    69                 if(rowObject.followupflagged.isDone == 1){ 
    70                         classes += '<span class="flags followupflagged" title="'+nameFollowupflag+'" style="background:'+rowObject.followupflagged.backgroundColor+';"><img style=" margin-left:-3px;" src="../prototype/modules/mail/img/flagChecked.png"></span>'; 
    71                 }else{                   
    72                         classes += '<span class="flags followupflagged" title="'+nameFollowupflag+'" style="background:'+rowObject.followupflagged.backgroundColor+';"><img src="../prototype/modules/mail/img/flagEditor.png"></span>'; 
    73                 } 
    74                  
    75         } 
    76  
    77         return classes; 
    78 } 
    79  
    80 NormaliseFrom = function(cellvalue, options, rowObject) { 
    81         rowObject['flags'] = rowObject['flags'].split(","); 
    82         if(rowObject['flags'][rowObject['flags'].length-1] ==  1){ 
    83                 return get_lang(special_folders["Drafts"]); 
    84         } 
    85         return cellvalue;        
    86 } 
    87  
    88 NormaliseSubject = function(cellvalue, options, rowObject) { 
    89         return html_entities(cellvalue); 
    90 } 
    91  
    92 date2Time = function (timestamp) { 
    93         date = new Date(); 
    94         if( typeof timestamp === "string" ) 
    95             timestamp = parseInt( timestamp, 10 ); 
    96         dat = new Date(timestamp); 
    97         if ((date.getTime() - timestamp) < (24*60*60*1000)) { 
    98                 return '<span class="timable" title="'+dat.getTime()+'"></span>'; 
    99         } else { 
    100                 date = new Date(timestamp); 
    101                 if(is_ie){ 
    102                         var b = date.toString().split(' '); 
    103                         var c = b[2] + "/" + months.indexOf(b[1]) + "/" + b[5]; 
    104                         return '<span class="datable">' + c + '</span>'; 
    105                 }else{ 
    106                         var b = date.toISOString().split("T")[0].split("-"); 
    107                         var c = b[2] + "/" + b[1] + "/" + b[0]; 
    108                         return '<span class="datable">' + c + '</span>'; 
    109                 } 
    110         } 
    111 } 
    112  
    113 changeTabIndex = function (elements) { 
    114 //      jQuery('#foldertree').attr('tabIndex', '1').focus(); 
    115 } 
    116  
    117 selectedMessagesCount = function() { 
    118         var byte_size = 0, total_messages = 0; 
    119         for (var folder in selectedMessages) { 
    120                 for (var message in selectedMessages[folder]) { 
    121                         if (selectedMessages[folder][message]) { 
    122                                 byte_size += parseInt(onceOpenedMessages[folder][message].size); 
    123                                 total_messages++; 
    124                         } 
    125                 } 
    126         } 
    127         $("#selected_messages_number").html(total_messages).next().html(bytes2Size(byte_size)); 
    128         return total_messages; 
    129 } 
    1302 
    1313var msgAttacherGrid = $("#message_attacher_grid"), msgsTotal = $("#selected_messages_number"); 
Note: See TracChangeset for help on using the changeset viewer.