Changeset 6486


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

Location:
sandbox/expressoServiceImap
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • sandbox/expressoServiceImap/expressoMail1_2/js/draw_api.js

    r6469 r6486  
    38293829                        autoOpen:false 
    38303830                }); 
    3831                  
    3832                  
     3831 
    38333832                jQuery.getScript("../prototype/modules/attach_message/attach_message.js", function(){ 
    38343833                        jQuery('#message-attach-dialog').dialog('open'); 
     
    38793878                                jQuery('#message-attach-dialog').dialog('close'); 
    38803879                        });                      
    3881                 }); 
     3880                }).fail(function( jqxhr, settings, exception ){ 
     3881 
     3882                        alert( exception ); 
     3883                        console.log( exception ); 
     3884                   
     3885                }) 
    38823886        }); 
     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            }); 
     3974 
    38833975        return ID; 
    38843976} 
  • sandbox/expressoServiceImap/prototype/Sync.php

    r6328 r6486  
    152152          $dt = prepare( $concept, $id, $dt, $data, $oldIds, $mounted, $synced ); 
    153153 
     154          ob_start(); 
     155        print "\n"; 
     156        print "dt: "; 
     157        print_r( $dt ); 
     158        $output = ob_get_clean(); 
     159        file_put_contents( "/tmp/prototype233.log", $output , FILE_APPEND ); 
     160         
    154161          try{ 
    155162              $result = Controller::put( array( 'concept' => $concept, 'id' => $id ), $dt ); 
     
    160167              continue; 
    161168          } 
     169           
     170        ob_start(); 
     171        print "\n"; 
     172        print "result: "; 
     173        print_r( $result ); 
     174        $output = ob_get_clean(); 
     175        file_put_contents( "/tmp/prototype233.log", $output , FILE_APPEND ); 
     176        ob_start(); 
     177        print "\n"; 
     178        print "old ids "; 
     179        print_r( $oldIds ); 
     180        $output = ob_get_clean(); 
     181        file_put_contents( "/tmp/prototype233.log", $output , FILE_APPEND ); 
    162182 
    163183          if( !$result ) 
  • sandbox/expressoServiceImap/prototype/api/newcontroller.php

    r5715 r6486  
    125125                    $return = array(); 
    126126 
    127                     for( $data as $concept => $dt ) 
     127                    foreach( $data as $concept => $dt ) 
    128128                         $return[] = self::put( $dt, array_merge( array( 'concept' => $concept ), $options ) ); 
    129129                         
     
    176176 
    177177                if( $txId ) 
    178                     return self::commit( $options['service'], $txId ); 
     178                  return self::commit( $options['service'], $txId ); 
    179179            } 
    180180            catch( Exception $e ) 
  • sandbox/expressoServiceImap/prototype/config/OpenLDAP.srv

    r6173 r6486  
    44idAtribute = "uidNumber" 
    55host = 127.0.0.1 
    6 context = "LDAP_DN" 
     6context = "dc=prognus" 
    77; Caso o LDAP requisite autenticacao, configure os parametros a seguir 
    88;user =  
  • sandbox/expressoServiceImap/prototype/config/PostgreSQL.srv

    r6081 r6486  
    77;host = 127.0.0.1 
    88port = 5432 
    9 dbname = expresso 
    10 user = postgres 
    11 ; Caso o usuario tenha senha... 
     9dbname= expresso24natan 
     10user=postgres 
    1211;password= 
  • 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({ 
  • sandbox/expressoServiceImap/prototype/modules/filters/filters.js

    r6452 r6486  
    1 /* Verifica se a regra fora de escritório está ativa */ 
     1/* Verifica se a regra fora de escritório está ativa */ 
    22function outOfficeVerify() { 
    33        DataLayer.remove('filter', false); 
     
    1818} 
    1919 
    20 /* Valida as informações do formulário de filtro de mensagens */ 
     20/* Valida as informações do formulário de filtro de mensagens */ 
    2121valid_save = function(){ 
    2222        var accord = list_container.find(".rule-details-container").accordion({autoHeight: false}); 
     
    154154} 
    155155 
    156 /* Mostra os detalhes do filtro para edição */ 
     156/* Mostra os detalhes do filtro para edição */ 
    157157showDetails = function( filter ){ 
    158158 
     
    311311var allMessages = false; 
    312312 
    313 /* Bloqueio de usuários na tela de mensagem do ExpressoMail */ 
     313/* Bloqueio de usuários na tela de mensagem do ExpressoMail */ 
    314314function block_user_email(email) { 
    315315        delete selectedMessages; 
    316316        var idd = urlencode(email); 
    317         /** TODO - Mudar quando API abstrair atualizações no cache */ 
     317        /** TODO - Mudar quando API abstrair atualizações no cache */ 
    318318        DataLayer.remove('filter', false); 
    319319        var filters = DataLayer.get('filter'); 
     
    400400                                                        } 
    401401                                                }); 
     402         
     403        var numRows = 10; 
    402404 
    403405        var data = DataLayer.get( 'message', { filter: criterias_, criteria: { properties: { context: { folder: 'INBOX' } } } }, true ); 
    404406 
     407        var total = data.length ? Math.ceil( data.length / numRows ) : 0; 
     408 
     409        delete DataLayer.criterias['message:jqGrid'];    
    405410        DataLayer.register( 'criterias', 'message:jqGrid', function( crit ){ 
    406411 
    407                     crit.properties = { context: { folder: 'INBOX' } }; 
    408  
    409                     return { filter: [ "msgNumber", "IN", data ], criteria: crit }; 
     412                    if( crit.page > total ) 
     413                        crit.page = total; 
     414 
     415                    var start = crit.rows * ( crit.page - 1 ); 
     416 
     417                    var msgNumber = []; 
     418 
     419                    for( var i = start; i < start + crit.rows && !!data[i]; i++ ) 
     420                        msgNumber.push( data[i] ); 
     421 
     422                    if( !msgNumber.length ) 
     423                        return( false ); 
     424 
     425                    return { filter: [ "msgNumber", "IN", msgNumber ], criteria: { properties: { context: { folder: 'INBOX' }, order: crit.sidx } } }; 
    410426        }); 
    411427 
     
    438454                        id: "0" 
    439455                }, 
    440                 rowNum:10, 
     456                rowNum:numRows, 
    441457                //rowList:[10,25,50], 
    442458                rowList:[10], 
     
    483499} 
    484500 
    485 /* Gerencia a listagem de filtros do usuário */ 
     501/* Gerencia a listagem de filtros do usuário */ 
    486502function list_filters(html){ 
    487503        outOfficeVerify(); 
     
    589605                                        }); 
    590606                                }).end().filter('.button.search').click(function() { 
    591                                         /* Valida se o usuário preencheu as informações */ 
     607                                        /* Valida se o usuário preencheu as informações */ 
    592608                                        if(valid_save()) 
    593609                                                showGridMessages($(this)); 
     
    650666                        'onClose':  function(caption) { 
    651667                                if(caption == get_lang('Yes')){ 
    652                                 /** TODO - Mudar quando API abstrair atualizações no cache */ 
     668                                /** TODO - Mudar quando API abstrair atualizações no cache */ 
    653669                                        DataLayer.remove('filter', false); 
    654670                                        DataLayer.get('filter'); 
     
    689705                        'onClose':  function(caption) { 
    690706                                if(caption == get_lang('Yes')){ 
    691                                 /** TODO - Mudar quando API abstrair atualizações no cache */ 
     707                                /** TODO - Mudar quando API abstrair atualizações no cache */ 
    692708                                        DataLayer.remove('filter', false); 
    693709                                        DataLayer.get('filter'); 
  • sandbox/expressoServiceImap/prototype/services/ImapServiceAdapter.php

    r6457 r6486  
    8989                        { 
    9090                                //begin: for grid        
    91                                 $page  = isset($criteria['page']) ? $criteria['page'] : 1 ; //{1}    get the requested page 
    92                                 $limit = isset($criteria['rows']) ? $criteria['rows'] : 10 ; //{10}   get how many rows we want to have into the grid 
    93                                 $sidx  = isset($criteria['sidx']) ? $criteria['sidx'] : 0; //{id}   get index row - i.e. user click to sort 
    94                                 $sord  = isset($criteria['sord']) ? $criteria['sord'] : ''; //{desc} get the direction 
     91//                              $page  = isset($criteria['page']) ? $criteria['page'] : 1 ; //{1}    get the requested page 
     92//                              $limit = isset($criteria['rows']) ? $criteria['rows'] : 10 ; //{10}   get how many rows we want to have into the grid 
     93//                              $sidx  = isset($criteria['sidx']) ? $criteria['sidx'] : 0; //{id}   get index row - i.e. user click to sort 
     94//                              $sord  = isset($criteria['sord']) ? $criteria['sord'] : ''; //{desc} get the direction 
    9595 
    9696                                $filter =  isset($criteria['filter']) ? $criteria['filter'] : ''; 
    9797 
    98                                 if( !$sidx ) $sidx = 1; 
     98//                              if( !$sidx ) $sidx = 1; 
    9999 
    100100                                $folder_name =  isset($URI['folder']) ?  $URI['folder'] : str_replace( '.', $this->imap_delimiter, isset($context['folder']) ?  $context['folder'] : 'INBOX'); 
    101101                         
    102102                                $count = imap_num_msg( $this->open_mbox( $folder_name ) ); 
    103  
    104                                 $total_pages = $count > 0 ? ceil( $count/$limit ) : 0; 
    105  
    106                                 if( $page > $total_pages ) 
    107                                         $page = $total_pages; 
    108  
    109                                 $start = $limit * $page - $limit; 
     103//  
     104//                              $total_pages = $count > 0 ? ceil( $count/$limit ) : 0; 
     105//  
     106//                              if( $page > $total_pages ) 
     107//                                      $page = $total_pages; 
     108//  
     109//                              $start = $limit * $page - $limit; 
     110 
    110111                                // do not put $limit*($page - 1) 
    111112                                //end: for grid 
     
    162163                                        if( $filter[0] !== 'msgNumber' ) 
    163164                                        { 
    164                                         for( $i = 0; $i < count($filter); $i++ ) 
    165                                         { 
    166                                                 if( count( $filter[$i] ) === 4 ) 
    167                                                 $criteria['isExact'] = ( array_shift( $filter[$i] ) === 'AND' ); 
    168  
    169                                                 $criteria[ $filter[$i][0] ] = array( 'criteria' => $filter[$i][2], 'filter' => $filter[$i][1] ); 
    170                                         } 
    171  
    172                                         return $this->searchSieveRule($criteria); 
    173                                         } 
    174  
    175                                         $msgNumber = array(); 
    176  
    177                                         for( $i = $start; $i < $start + $limit && isset( $filter[2][$i] ); $i++ ) 
    178                                           $msgNumber[] = $filter[2][$i]; 
    179  
    180                                         if( empty( $msgNumber ) ) 
    181                                         return( false ); 
     165                                            for( $i = 0; $i < count($filter); $i++ ) 
     166                                            { 
     167                                                    if( count( $filter[$i] ) === 4 ) 
     168                                                    $criteria['isExact'] = ( array_shift( $filter[$i] ) === 'AND' ); 
     169 
     170                                                    $criteria[ $filter[$i][0] ] = array( 'criteria' => $filter[$i][2], 'filter' => $filter[$i][1] ); 
     171                                            } 
     172 
     173                                            return $this->searchSieveRule($criteria); 
     174                                        } 
     175 
     176//                                      $msgNumber = array(); 
     177//  
     178//                                      for( $i = $start; $i < $start + $limit && isset( $filter[2][$i] ); $i++ ) 
     179//                                        $msgNumber[] = $filter[2][$i]; 
     180//  
     181//                                      if( empty( $msgNumber ) ) 
     182//                                      return( false ); 
    182183 
    183184                                        $result = $this->get_info_msgs( array( 'folder' => $folder_name,  
    184                                                                            'msgs_number' => implode( ',', $msgNumber ) ) ); 
     185                                                                           'msgs_number' => implode( ',', $filter[2] ) ) ); 
    185186 
    186187                                        foreach( $result as $i => $val ) 
     
    193194                                                array(  
    194195                                                        'folder' => $folder_name, //INBOX 
    195                                                         'msg_range_begin' => $start + 1, //?? 
    196                                                         'msg_range_end' => $start + $limit, //$limit = $_GET['rows']; // get how many rows we want to have into the grid 
     196                                                        'msg_range_begin' => $criteria['offset'] + 1, //?? 
     197                                                        'msg_range_end' => $criteria['limit'], //$limit = $_GET['rows']; // get how many rows we want to have into the grid 
    197198                                                        'sort_box_type' => 'SORTARRIVAL',  
    198199                                                        'search_box_type' => 'ALL', 
     
    203204                                //return var_export($result); 
    204205 
    205                                 $response = array( "page" => $page, "total" => $total_pages, "records" => $count ); 
     206                                $response = array( "page" => $count > 0 ? ceil( $criteria['offset'] / $criteria['limit'] ) + 1 : 0,  
     207                                                   "total" => $count > 0 ? ceil( $count/$criteria['limit'] ) : 0,  
     208                                                   "records" => $count ); 
    206209                                 
    207210                                for ($i=0; $i<count($result); $i++) 
Note: See TracChangeset for help on using the changeset viewer.