Ignore:
Timestamp:
06/14/12 01:17:45 (12 years ago)
Author:
natan
Message:

Ticket #2845 - Atualizacao da API na busca de mensagens - Migracao do anexar mensagens para API atual

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sandbox/expressoServiceImap/prototype/modules/attach_message/attach_message.js

    r6303 r6486  
    66dashes = /\//gi; 
    77flags = [ 'Attachment', 'Forwarded' ,'Recent', 'Unseen',  'Answered',  'Draft',  'Deleted', 'Flagged', 'Followupflag', 'Label' ]; 
    8  
    9 $.ajaxPrefilter(function( options, originalOptions, jqXHR ){ 
    10  
    11       var offlineAction = isOffline.exec( options.url ); 
    12  
    13       if( offlineAction ) 
    14       { 
    15           offlineAction = offlineAction[1] || ""; 
    16          
    17           jqXHR.abort(); 
    18  
    19           var params = {}; 
    20            
    21           if( offlineAction ) 
    22               offlineAction +=  options.data ? "&" +  options.data : ""; 
    23  
    24           offlineAction = offlineAction.split( breakParams ); 
    25  
    26           for( var i = 0; i < offlineAction.length; ) 
    27               params[ offlineAction[i++] ] = offlineAction[i++]; 
    28  
    29           rest = params["q"].split("/"); 
    30  
    31           if( !(rest.length % 2) ) 
    32               var id = rest.pop(); 
    33  
    34           var concept = rest.pop(); 
    35  
    36           for( var i = 0; i < rest.length; ) 
    37             params[ rest[i++] ] = rest[ i++ ]; 
    38  
    39           switch( concept ) 
    40           { 
    41             case "message": 
    42             { 
    43                 if( id ){ 
    44                     var mail = expresso_local_messages.get_local_mail( id ); 
    45                     mail.eml = expresso_local_messages.get_src( mail.url_export_file ); 
    46  
    47                     ( options.success || options.complete )( mail ); 
    48                     return; 
    49                 } 
    50  
    51                 var msgs = expresso_local_messages.get_local_range_msgs( params["folder"].replace(dots, "/").replace("local_messages/", ""), 
    52                                                                           params["rows"] * ( params["page"] - 1 ) + 1, 
    53                                                                           params["rows"], "SORTARRIVAL", (params["sord"] == "desc"), 
    54                                                                           "ALL", 1, 1 ); 
    55  
    56                 for( var i = 0; i < msgs.length; i++ ) 
    57                 { 
    58                       msgs[i].size = msgs[i].Size; 
    59                       msgs[i].timestamp = msgs[i].udate * 1000; 
    60                       msgs[i].flags = []; 
    61  
    62                       for( var ii = 0; ii < flags.length; ii++ ) 
    63                           if( f = $.trim( msgs[i][ flags[ii] ] ) ) 
    64                               msgs[i].flags[ msgs[i].flags.length ] =  f; 
    65  
    66                       msgs[i].flags = msgs[i].flags.join(','); 
    67                 } 
    68  
    69                 ( options.success || options.complete )( {"rows": msgs,  
    70                                                            "records": msgs.length, 
    71                                                            "page": params["page"],  
    72                                                            "total": Math.ceil( msgs.num_msgs / params["rows"] )} ); 
    73             } 
    74           } 
    75       } 
    76 }); 
     8months = ['Jan','Feb','Mar','Apr','May','June','July','Aug','Sept','Oct','Nov','Dec']; 
    779 
    7810var BASE_PATH = '../prototype/'; 
     
    14678} 
    14779 
    148 function numberMonths (months){ 
    149         switch(months){ 
    150                 case 'Jan': 
    151                         return 1; 
    152                 case 'Feb': 
    153                         return 2; 
    154                 case 'Mar': 
    155                         return 3; 
    156                 case 'Apr': 
    157                         return 4; 
    158                 case 'May': 
    159                         return 5; 
    160                 case 'June': 
    161                         return 6; 
    162                 case 'July': 
    163                         return 7; 
    164                 case 'Aug': 
    165                         return 8; 
    166                 case 'Sept': 
    167                         return 9; 
    168                 case 'Oct': 
    169                         return 10; 
    170                 case 'Nov': 
    171                         return 11; 
    172                 case 'Dec': 
    173                         return 12; 
    174         }        
    175 } 
    176  
    17780NormaliseFrom = function(cellvalue, options, rowObject) { 
    17881        rowObject['flags'] = rowObject['flags'].split(","); 
     
    18992date2Time = function (timestamp) { 
    19093        date = new Date(); 
     94        if( typeof timestamp === "string" ) 
     95            timestamp = parseInt( timestamp, 10 ); 
    19196        dat = new Date(timestamp); 
    19297        if ((date.getTime() - timestamp) < (24*60*60*1000)) { 
     
    196101                if(is_ie){ 
    197102                        var b = date.toString().split(' '); 
    198                         var c = b[2] + "/" + numberMonths(b[1]) + "/" + b[5]; 
     103                        var c = b[2] + "/" + months.indexOf(b[1]) + "/" + b[5]; 
    199104                        return '<span class="datable">' + c + '</span>'; 
    200105                }else{ 
     
    209114//      jQuery('#foldertree').attr('tabIndex', '1').focus(); 
    210115} 
    211  
    212116 
    213117selectedMessagesCount = function() { 
     
    231135var selectedFolder     = {}; 
    232136 
    233 function adaptOffline( data ) 
    234 { 
    235     if( preferences.use_local_messages == 1 || expresso_offline) 
    236     { 
    237         var folders = expresso_local_messages.list_local_folders(); 
    238          
    239         var stripParents = /^(.*)\/([^\/]*)/; 
    240  
    241         $.each( folders, function( i, folder ){ 
    242                  
    243                   if(typeof(folder) == 'undefined')  return; 
    244                    
    245               var id = 'local_messages/' + folder[0]; 
    246  
    247               var parts = stripParents.exec( id ); 
    248            
    249               data[data.length] = {'id' : id, 
    250                                     'commonName' : parts[2], 
    251                                     'parentFolder' : parts[1]}; 
    252         }); 
    253     } 
    254          
    255     return( data ); 
    256          
    257 } 
    258  
    259137$mailpreview_tabs_label_length = 15; 
    260138 
     
    263141jQuery('#buttons-container .button').button(); 
    264142 
    265 jQuery.ajax({ 
    266         url: BASE_PATH + "REST.php?q=folder", 
    267         dataType: 'json', 
    268  
    269         success: function( data ){ 
    270  
    271                 data = adaptOffline( data ); 
    272  
    273                 var tree1 = new Array(); 
    274                 var tree2 = new Array(); 
    275                 var tree3 = new Array(); 
    276                 for (var i=0; i<data.length; i++) { 
    277  
    278                         if (/^INBOX/.test(data[i].id)) { 
    279                                 if (!unorphanize(tree1, data[i])) { 
    280                                         data[i].children = new Array(); 
    281                                         tree1.push(data[i]); 
    282                                 } 
    283                         } 
    284                         else if (/^user/.test(data[i].id)) { 
    285                                 if (!unorphanize(tree2, data[i])) { 
    286                                         data[i].children = new Array(); 
    287                                         tree2.push(data[i]); 
    288                                 } 
    289                         } 
    290                         else if (/^local_messages/.test(data[i].id)) { 
    291                                 if (!unorphanize(tree3, data[i])) { 
    292                                         data[i].children = new Array(); 
    293                                         tree3.push(data[i]); 
    294                                 } 
    295                         } 
    296                          
    297                 } 
    298  
    299                 var firstFolder = jQuery("#foldertree-container") 
    300                 .removeClass('empty-container') 
    301                 .html(DataLayer.render(BASE_PATH + 'api/templates/foldertree.ejs', {folders: [tree1, tree2, tree3]})) 
    302                 .find("#foldertree").treeview() 
    303                 .click(function(event){ 
    304                         //request new selected folder messages 
    305                         var target = $(event.target); 
    306  
    307                         if( target.is('.collapsable-hitarea, .expandable-hitarea, .lastCollapsable, .lastExpandable, .treeview') ) 
    308                             return; 
    309  
    310                         if( !target.attr('id') ) 
    311                             target = target.parent(); 
    312  
    313             if (target.attr('id') == "foldertree") return; 
    314                          
    315                         var targetId = target.attr('id'); 
    316                         var child = target.find('.folder'); 
    317                
    318                         $('.filetree span.folder.selected').removeClass('selected'); 
    319                         if(!target.is('#foldertree > .expandable, #foldertree > .collapsable')) 
    320                                 $(target).children('.folder').addClass('selected'); 
    321                          
    322                         selectedFolder = { 
    323                             id: targetId,  
    324                             name: child.attr('title'), 
    325                             'class': child.attr('class') 
    326                         }; 
    327  
    328                         var grid = $("#message_attacher_grid"), offlineCase = ""; 
    329                          
    330                         if( !targetId.indexOf( 'local_messages/' ) ) 
    331                             offlineCase = ":offline"; 
    332                          
    333  
    334                         grid.jqGrid('setGridParam',{url:BASE_PATH + 'REST.php'+offlineCase+'?q=folder/'+targetId.replace(dashes, '.')+'/message'}) 
    335                             .trigger("reloadGrid") 
    336                             .jqGrid('setCaption', '<span class="'+child.attr('class')+'">'+child.attr('title')+'</span>'); 
    337                 }) 
    338                 .find('span:first-child'); 
    339                 $('span.folder.inbox').addClass('selected'); 
    340                 selectedFolder = { 
    341                         id: firstFolder.parent().attr('id'),  
    342                         name: firstFolder.attr('title'), 
    343                         'class': firstFolder.attr('class') 
    344                 }; 
    345  
    346                 //jqgrid 
    347                 jQuery("#mailgrid-container") 
    348                 .removeClass('empty-container') 
    349                 .html(DataLayer.render(BASE_PATH + 'api/templates/messagegrid.ejs', {})) 
    350                 .find("#message_attacher_grid") 
    351                 .jqGrid({ 
    352                         url:BASE_PATH + 'REST.php?q=folder/INBOX/message', 
    353                         datatype: "json", 
    354                         mtype: 'GET', 
    355                         colNames:['#',' ', 'De', 'Assunto', 'Data', 'Tamanho'], 
    356                         colModel:[ 
    357                                 {name:'msg_number',index:'msg_number', width:45, hidden:true, sortable:false}, 
    358                                 {name:'flags',index:'msg_number',edittype: 'image', width:100, sortable:false, formatter:flags2Class, title :false}, 
    359                                 {name:'from.name',index:'msg_number', width:70, sortable:false, formatter:NormaliseFrom}, 
    360                                 {name:'subject',index:'subject', width:245, sortable:false,formatter:NormaliseSubject}, 
    361                                 {name:'timestamp',index:'timestamp', width:65, align:"center", sortable:false, formatter:date2Time}, 
    362                                 {name:'size',index:'size', width:55, align:"right", sortable:false, formatter:bytes2Size} 
    363                         ], 
    364                         jsonReader : { 
    365                                   root:"rows", 
    366                                   page: "page", 
    367                                   total: "total", 
    368                                   records: "records", 
    369                                   repeatitems: false, 
    370                                   id: "0" 
    371                         }, 
    372                         rowNum:10, 
    373                         rowList:[10,25,50], 
    374                         pager: '#message_attacher_grid_pager', 
    375                         sortname: 'id', 
    376                         viewrecords: true, 
    377                         sortorder: "desc", 
    378                         multiselect: true, 
    379                         autowidth: true, 
    380                         loadComplete: function(data) { 
    381                                 lastLoadedMessages = data.rows; 
    382                                  
    383                                 // aplica o contador 
    384                                 jQuery('.timable').each(function (i) { 
    385                                         jQuery(this).countdown({ 
    386                                                 since: new Date(parseInt(this.title)),  
    387                                                 significant: 1, 
    388                                                 layout: 'h&aacute; {d<}{dn} {dl} {d>}{h<}{hn} {hl} {h>}{m<}{mn} {ml} {m>}{s<}{sn} {sl}{s>}',  
    389                                                 description: ' atr&aacute;s' 
    390                                         });                                      
    391                                 }); 
    392                                  
    393                                 // reconstrói a seleção das mensagens mesmo depois da mudança de pasta 
    394                                 if (selectedMessages[selectedFolder.id]) { 
    395                                         for (var message in selectedMessages[selectedFolder.id]){ 
    396                                                 for (var j=0; j<data.rows.length; j++){  
    397                                                         if (selectedMessages[selectedFolder.id][message] && message == data.rows[j].msg_number) { 
    398                                                                 jQuery("#message_attacher_grid").setSelection(jQuery("#message_attacher_grid").getDataIDs()[j], false); 
    399                                                         } 
    400                                                 } 
    401                                         } 
    402                                 } 
    403                                 $('#cb_message_attacher_grid').css('display', 'none'); 
    404                                  
    405                         }, 
    406                         onSelectRow: function (id, selected) { 
    407                                 var message = false; 
    408                                 for (var i=0; i<lastLoadedMessages.length; i++){ 
    409                                         if (lastLoadedMessages[i].msg_number == id) { 
    410                                                 message = lastLoadedMessages[i]; 
    411                                                 break; 
    412                                         } 
    413                                 } 
    414                                  
    415                                 var tabPanelTemplateId = 'mailpreview_tab_' + selectedFolder.id.replace(/[.\/]/g, '_') + '_' + message.msg_number; 
    416                                 var tabPanelTemplateId = tabPanelTemplateId.replace(/[\s\/]/g, '-');  
    417                                  
    418                                 if (selected) {  
    419                                         if (onceOpenedMessages[selectedFolder.id] && onceOpenedMessages[selectedFolder.id][message.msg_number]) { 
    420                                                 if (!selectedMessages[selectedFolder.id]) 
    421                                                         selectedMessages[selectedFolder.id] = {}; 
    422                                                          
    423                                                 selectedMessages[selectedFolder.id][message.msg_number] = true; 
    424                                                 $('#mailpreview-container').unblock();                                           
    425  
    426                                                 var tabPanelTemplateLabel = html_entities(onceOpenedMessages[selectedFolder.id][message.msg_number].subject); 
    427                                                 if (tabPanelTemplateLabel.length > $mailpreview_tabs_label_length + 3) 
    428                                                         tabPanelTemplateLabel = tabPanelTemplateLabel.substring(0, $mailpreview_tabs_label_length) + '...'; 
    429                                                  
    430                                                 if (!$('#' + tabPanelTemplateId).length) {                                                               
    431                                                         $mailpreview_tabs.tabs("add", '#' + tabPanelTemplateId, tabPanelTemplateLabel) 
    432                                                         .find('.message.empty-container').hide().end() 
    433                                                         .find('#' + tabPanelTemplateId).html(onceOpenedMessages[selectedFolder.id][message.msg_number].body); 
    434                                                 } else { 
    435                                                         $mailpreview_tabs.tabs('select', '#' + tabPanelTemplateId) 
    436                                                         .find('#' + tabPanelTemplateId + ', [href="#' + tabPanelTemplateId + '"]').removeClass('preview-message-unselected'); 
    437                                                 } 
    438                                                  
    439                                         } else { 
    440                                                 jQuery('#mailpreview_container').block({   
    441                                                         message: '<div id="loading-content"><div class="image"></div></div>',   
    442                                                         css: {   
    443                                                                 backgroundImage: 'url('+BASE_PATH+'modules/attach_message/images/loading.gif)',   
    444                                                                 backgroundRepeat: 'no-repeat',  
    445                                                                 backgroundPosition: 'center',  
    446                                                                 backgroundColor: 'transparent',  
    447                                                                 width: '32px',  
    448                                                                 height: '32px',  
    449                                                                 border:'none'   
    450                                                         },  
    451                                                         overlayCSS: {   
    452                                                                 backgroundColor: '#CCC',   
    453                                                                 opacity:         0.5  
    454                                                         }   
    455                                                 });  
    456  
    457                                                 var offlineCase = ""; 
    458                                                  
    459                                                 if( !selectedFolder.id.indexOf( 'local_messages/' ) ) 
    460                                                     offlineCase = ":offline"; 
    461                                            
    462                                                 if (!selectedMessages[selectedFolder.id]) 
    463                                                         selectedMessages[selectedFolder.id] = {}; 
    464                                                 selectedMessages[selectedFolder.id][message.msg_number] = true; 
    465                                                 $.ajax({ 
    466                                                         accepts: 'text/html', 
    467                                                         url: BASE_PATH + 'REST.php'+offlineCase+'?q=folder/'+selectedFolder.id.replace(dashes, '.')+'/message/'+id, 
    468                                                         dataType: 'json', 
    469                                                         success: function( mail_preview ){               
    470                                                                 //selectedMessagesCount(); 
    471                                                                 if (!onceOpenedMessages[selectedFolder.id]) 
    472                                                                         onceOpenedMessages[selectedFolder.id] = {}; 
    473                                                                 onceOpenedMessages[selectedFolder.id][message.msg_number] = jQuery.extend(true, message, mail_preview); 
    474  
    475                                                                 $('#mailpreview_container').unblock(); 
    476  
    477                                                                 var tabPanelTemplateLabel = html_entities(onceOpenedMessages[selectedFolder.id][message.msg_number].subject); 
    478                                                                 if (tabPanelTemplateLabel.length > $mailpreview_tabs_label_length + 3) 
    479                                                                         tabPanelTemplateLabel = tabPanelTemplateLabel.substring(0, $mailpreview_tabs_label_length) + '...'; 
    480                                                         selectedMessagesCount(); 
    481                                                                  
    482                                                                 if (!$('#' + tabPanelTemplateId).length) {                                                               
    483                                                                         $mailpreview_tabs.tabs("add", '#' + tabPanelTemplateId, tabPanelTemplateLabel) 
    484                                                                         .find('.message.empty-container').hide().end() 
    485                                                                         .find('#' + tabPanelTemplateId).html(onceOpenedMessages[selectedFolder.id][message.msg_number].body) 
    486                                                                         .prepend( 
    487                                                                                 '<div class="mailpreview-message-info">' +  
    488                                                                                         get_lang('Subject') + ': ' + 
    489                                                                                         html_entities(onceOpenedMessages[selectedFolder.id][message.msg_number].subject) +  
    490                                                                                 '</div>' 
    491                                                                         ) 
    492                                                                         .find('[class^="ExpressoCssWrapper"]').addClass("mailpreview-message-body"); 
    493                                                                 } else { 
    494                                                                         $mailpreview_tabs.tabs('select', '#' + tabPanelTemplateId) 
    495                                                                         .find('#' + tabPanelTemplateId + ', [href="#' + tabPanelTemplateId + '"]').removeClass('preview-message-unselected'); 
    496                                                                 } 
    497                                                         } 
    498                                                 }); 
    499                                         } 
    500                                 } else { 
    501                                         /** 
    502                                          * if you wants to remove tab on unselect message, 
    503                                          * but still needs to uselect message on remove tab. 
    504                                          *  
    505                                          */ 
    506                                         /* 
    507                                         if ($('#' + tabPanelTemplateId).length) { 
    508                                                 $mailpreview_tabs.tabs('remove', '#' + tabPanelTemplateId); 
    509                                         } 
    510                                          */ 
    511                                         selectedMessages[selectedFolder.id][message.msg_number] = false; 
    512                                         $mailpreview_tabs.find('#' + tabPanelTemplateId + ', [href="#' + tabPanelTemplateId + '"]').addClass('preview-message-unselected'); 
    513                                 } 
    514                                  
    515                                 if (onceOpenedMessages[selectedFolder.id] && onceOpenedMessages[selectedFolder.id][message.msg_number]) 
    516                                         selectedMessagesCount(); 
    517                         }, 
    518                         caption: '<span class="'+selectedFolder['class']+'">'+selectedFolder.name+'</span>' 
    519                 }); 
    520                 //.jqGrid('navGrid','#message_attacher_grid_pager',{edit:false,add:false,del:false}); 
    521                 var title = [get_lang("First page"), get_lang("Prev page"), get_lang("Next page"), get_lang("Last page")]; 
    522                 $("#first_message_attacher_grid_pager").attr("title",title[0]); 
    523                 $("#prev_message_attacher_grid_pager").attr("title",title[1]); 
    524                 $("#next_message_attacher_grid_pager").attr("title",title[2]); 
    525                 $("#last_message_attacher_grid_pager").attr("title",title[3]); 
    526         } 
     143var firstFolder = jQuery("#foldertree-container") 
     144.removeClass('empty-container') 
     145.html(DataLayer.render(BASE_PATH + 'api/templates/foldertree.ejs', 'folder:tree', false, false, true)) 
     146.find("#foldertree").treeview() 
     147.click(function(event){ 
     148        //request new selected folder messages 
     149    var target = $(event.target); 
     150 
     151    if( target.is('.collapsable-hitarea, .expandable-hitarea, .lastCollapsable, .lastExpandable, .treeview') ) 
     152        return; 
     153 
     154    if( !target.attr('id') ) 
     155        target = target.parent(); 
     156 
     157    if (target.attr('id') == "foldertree") return; 
     158 
     159    var targetId = target.attr('id'); 
     160    var child = target.find('.folder'); 
     161 
     162    $('.filetree span.folder.selected').removeClass('selected'); 
     163    if(!target.is('#foldertree > .expandable, #foldertree > .collapsable')) 
     164            $(target).children('.folder').addClass('selected'); 
     165 
     166    selectedFolder = { 
     167        id: targetId,  
     168        name: child.attr('title'), 
     169        'class': child.attr('class') 
     170    }; 
     171     
     172    current_folder = targetId.replace(dashes, '.'); 
     173 
     174     $("#message_attacher_grid").trigger("reloadGrid") 
     175        .jqGrid('setCaption', '<span class="'+child.attr('class')+'">'+child.attr('title')+'</span>'); 
     176}) 
     177.find('span:first-child'); 
     178$('span.folder.inbox').addClass('selected'); 
     179selectedFolder = { 
     180    id: firstFolder.parent().attr('id'),  
     181    name: firstFolder.attr('title'), 
     182    'class': firstFolder.attr('class') 
     183}; 
     184 
     185//jqgrid 
     186jQuery("#mailgrid-container") 
     187.removeClass('empty-container') 
     188.html(DataLayer.render(BASE_PATH + 'api/templates/messagegrid.ejs', {})) 
     189.find("#message_attacher_grid") 
     190.jqGrid({ 
     191    url: 'message:jqGrid', 
     192    datatype: "json", 
     193    mtype: 'GET', 
     194    colNames:['#',' ', 'De', 'Assunto', 'Data', 'Tamanho'], 
     195    colModel:[ 
     196            {name:'msg_number',index:'msg_number', width:45,  sortable:false, hidden:true}, 
     197            {name:'flags',     index:'msg_number', width:100, sortable:false, formatter:flags2Class, edittype: 'image', title :false}, 
     198            {name:'from.name', index:'msg_number', width:70,  sortable:false, formatter:NormaliseFrom}, 
     199            {name:'subject',   index:'subject',    width:245, sortable:false, formatter:NormaliseSubject}, 
     200            {name:'timestamp', index:'timestamp',  width:65,  sortable:false, formatter:date2Time,  align:"center"}, 
     201            {name:'size',      index:'size',       width:55,  sortable:false, formatter:bytes2Size, align:"right"} 
     202    ], 
     203    jsonReader : { 
     204              root:"rows", 
     205              page: "page", 
     206              total: "total", 
     207              records: "records", 
     208              repeatitems: false, 
     209              id: "0" 
     210    }, 
     211    rowNum:10, 
     212    rowList:[10,25,50], 
     213    pager: '#message_attacher_grid_pager', 
     214    sortname: 'id', 
     215    viewrecords: true, 
     216    sortorder: "desc", 
     217    multiselect: true, 
     218    autowidth: true, 
     219    loadComplete: function(data) { 
     220            lastLoadedMessages = data.rows; 
     221             
     222            // aplica o contador 
     223            jQuery('.timable').each(function (i) { 
     224                    jQuery(this).countdown({ 
     225                            since: new Date(parseInt(this.title)),  
     226                            significant: 1, 
     227                            layout: 'h&aacute; {d<}{dn} {dl} {d>}{h<}{hn} {hl} {h>}{m<}{mn} {ml} {m>}{s<}{sn} {sl}{s>}',  
     228                            description: ' atr&aacute;s' 
     229                    });                                  
     230            }); 
     231             
     232            // reconstrói a seleção das mensagens mesmo depois da mudança de pasta 
     233            if (selectedMessages[selectedFolder.id]) { 
     234                    for (var message in selectedMessages[selectedFolder.id]){ 
     235                            for (var j=0; j<data.rows.length; j++){      
     236                                    if (selectedMessages[selectedFolder.id][message] && message == data.rows[j].msg_number) { 
     237                                            jQuery("#message_attacher_grid").setSelection(jQuery("#message_attacher_grid").getDataIDs()[j], false); 
     238                                    } 
     239                            } 
     240                    } 
     241            } 
     242            $('#cb_message_attacher_grid').css('display', 'none'); 
     243             
     244    }, 
     245    onSelectRow: function (id, selected) { 
     246            var message = false; 
     247            for (var i=0; i<lastLoadedMessages.length; i++){ 
     248                    if (lastLoadedMessages[i].msg_number == id) { 
     249                            message = lastLoadedMessages[i]; 
     250                            break; 
     251                    } 
     252            } 
     253             
     254            var tabPanelTemplateId = 'mailpreview_tab_' + selectedFolder.id.replace(/[.\/]/g, '_') + '_' + message.msg_number; 
     255            var tabPanelTemplateId = tabPanelTemplateId.replace(/[\s\/]/g, '-');  
     256             
     257            if (selected) {      
     258                    if (onceOpenedMessages[selectedFolder.id] && onceOpenedMessages[selectedFolder.id][message.msg_number]) { 
     259                            if (!selectedMessages[selectedFolder.id]) 
     260                                    selectedMessages[selectedFolder.id] = {}; 
     261                                     
     262                            selectedMessages[selectedFolder.id][message.msg_number] = true; 
     263                            $('#mailpreview-container').unblock();                                               
     264 
     265                            var tabPanelTemplateLabel = html_entities(onceOpenedMessages[selectedFolder.id][message.msg_number].subject); 
     266                            if (tabPanelTemplateLabel.length > $mailpreview_tabs_label_length + 3) 
     267                                    tabPanelTemplateLabel = tabPanelTemplateLabel.substring(0, $mailpreview_tabs_label_length) + '...'; 
     268                             
     269                            if (!$('#' + tabPanelTemplateId).length) {                                                           
     270                                    $mailpreview_tabs.tabs("add", '#' + tabPanelTemplateId, tabPanelTemplateLabel) 
     271                                    .find('.message.empty-container').hide().end() 
     272                                    .find('#' + tabPanelTemplateId).html(onceOpenedMessages[selectedFolder.id][message.msg_number].body); 
     273                            } else { 
     274                                    $mailpreview_tabs.tabs('select', '#' + tabPanelTemplateId) 
     275                                    .find('#' + tabPanelTemplateId + ', [href="#' + tabPanelTemplateId + '"]').removeClass('preview-message-unselected'); 
     276                            } 
     277                             
     278                    } else { 
     279                            jQuery('#mailpreview_container').block({   
     280                                    message: '<div id="loading-content"><div class="image"></div></div>',   
     281                                    css: {   
     282                                            backgroundImage: 'url('+BASE_PATH+'modules/attach_message/images/loading.gif)',   
     283                                            backgroundRepeat: 'no-repeat',  
     284                                            backgroundPosition: 'center',  
     285                                            backgroundColor: 'transparent',  
     286                                            width: '32px',  
     287                                            height: '32px',  
     288                                            border:'none'   
     289                                    },  
     290                                    overlayCSS: {   
     291                                            backgroundColor: '#CCC',   
     292                                            opacity:         0.5  
     293                                    }   
     294                            });  
     295                       
     296                            if (!selectedMessages[selectedFolder.id]) 
     297                                    selectedMessages[selectedFolder.id] = {}; 
     298                            selectedMessages[selectedFolder.id][message.msg_number] = true; 
     299                             
     300                            var folder = selectedFolder.id.replace(dashes, '.'), mail_preview = null; 
     301                             
     302                            if( !folder.indexOf( 'local_messages/' ) ) 
     303                            { 
     304                              mail_preview = expresso_local_messages.get_local_mail( id ); 
     305                              mail_preview.eml = expresso_local_messages.get_src( mail_preview.url_export_file ); 
     306                            } 
     307                            else 
     308                              mail_preview = DataLayer.get( 'message', { filter: id, criteria: { properties: {context:{folder:folder}} } } ); 
     309 
     310                              if (!onceOpenedMessages[selectedFolder.id]) 
     311                                      onceOpenedMessages[selectedFolder.id] = {}; 
     312                              onceOpenedMessages[selectedFolder.id][message.msg_number] = jQuery.extend(true, message, mail_preview); 
     313 
     314                              $('#mailpreview_container').unblock(); 
     315 
     316                              var tabPanelTemplateLabel = html_entities(onceOpenedMessages[selectedFolder.id][message.msg_number].subject); 
     317                              if (tabPanelTemplateLabel.length > $mailpreview_tabs_label_length + 3) 
     318                                      tabPanelTemplateLabel = tabPanelTemplateLabel.substring(0, $mailpreview_tabs_label_length) + '...'; 
     319                              selectedMessagesCount(); 
     320                               
     321                              if (!$('#' + tabPanelTemplateId).length) {                                                                 
     322                                      $mailpreview_tabs.tabs("add", '#' + tabPanelTemplateId, tabPanelTemplateLabel) 
     323                                      .find('.message.empty-container').hide().end() 
     324                                      .find('#' + tabPanelTemplateId).html(onceOpenedMessages[selectedFolder.id][message.msg_number].body) 
     325                                      .prepend( 
     326                                              '<div class="mailpreview-message-info">' +  
     327                                                      get_lang('Subject') + ': ' + 
     328                                                      html_entities(onceOpenedMessages[selectedFolder.id][message.msg_number].subject) +  
     329                                              '</div>' 
     330                                      ) 
     331                                      .find('[class^="ExpressoCssWrapper"]').addClass("mailpreview-message-body"); 
     332                              } else { 
     333                                      $mailpreview_tabs.tabs('select', '#' + tabPanelTemplateId) 
     334                                      .find('#' + tabPanelTemplateId + ', [href="#' + tabPanelTemplateId + '"]').removeClass('preview-message-unselected'); 
     335                              } 
     336                    } 
     337            } else { 
     338                    /** 
     339                      * if you wants to remove tab on unselect message, 
     340                      * but still needs to uselect message on remove tab. 
     341                      *  
     342                      */ 
     343                    /* 
     344                    if ($('#' + tabPanelTemplateId).length) { 
     345                            $mailpreview_tabs.tabs('remove', '#' + tabPanelTemplateId); 
     346                    } 
     347                      */ 
     348                    selectedMessages[selectedFolder.id][message.msg_number] = false; 
     349                    $mailpreview_tabs.find('#' + tabPanelTemplateId + ', [href="#' + tabPanelTemplateId + '"]').addClass('preview-message-unselected'); 
     350            } 
     351             
     352            if (onceOpenedMessages[selectedFolder.id] && onceOpenedMessages[selectedFolder.id][message.msg_number]) 
     353                    selectedMessagesCount(); 
     354    }, 
     355    caption: '<span class="'+selectedFolder['class']+'">'+selectedFolder.name+'</span>' 
    527356}); 
    528  
     357//.jqGrid('navGrid','#message_attacher_grid_pager',{edit:false,add:false,del:false}); 
     358var title = [get_lang("First page"), get_lang("Prev page"), get_lang("Next page"), get_lang("Last page")]; 
     359$("#first_message_attacher_grid_pager").attr("title",title[0]); 
     360$("#prev_message_attacher_grid_pager").attr("title",title[1]); 
     361$("#next_message_attacher_grid_pager").attr("title",title[2]); 
     362$("#last_message_attacher_grid_pager").attr("title",title[3]); 
    529363 
    530364var $mailpreview_tabs = $( "#mailpreview_container").tabs({ 
Note: See TracChangeset for help on using the changeset viewer.