Ignore:
Timestamp:
06/18/12 02:47:37 (12 years ago)
Author:
natan
Message:

Ticket #2845 - Atualizacao da API na busca de mensagens - Migracao das funcionalidades do ImapServiceAdapter?

Location:
sandbox/expressoServiceImap/prototype
Files:
3 edited

Legend:

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

    r6509 r6529  
    4343     
    4444    current_folder = targetId.replace(dashes, '.'); 
     45    current_count = DataLayer.get( 'message', { criteria: { count: true } }, true ); 
    4546 
    4647     $("#message_attacher_grid").trigger("reloadGrid") 
     
    7071            {name:'from.name', index:'msg_number', width:70,  sortable:false, formatter:NormaliseFrom}, 
    7172            {name:'subject',   index:'subject',    width:245, sortable:false, formatter:NormaliseSubject}, 
    72             {name:'timestamp', index:'timestamp',  width:65,  sortable:false, formatter:date2Time,  align:"center"}, 
    73             {name:'size',      index:'size',       width:55,  sortable:false, formatter:bytes2Size, align:"right"} 
     73            {name:'timestamp', index:'timestamp',  width:65,  sortable:false, formatter:date2Time,   align:"center"}, 
     74            {name:'size',      index:'size',       width:55,  sortable:false, formatter:bytes2Size,  align:"right"} 
    7475    ], 
    7576    jsonReader : { 
  • sandbox/expressoServiceImap/prototype/modules/filters/filters.js

    r6486 r6529  
     1keys = function( object ){ 
     2 
     3  var array = []; 
     4 
     5  for( var key in object ) 
     6       array[ array.length ] = key; 
     7 
     8  return( array ); 
     9 
     10} 
     11 
    112/* Verifica se a regra fora de escritório está ativa */ 
    213function outOfficeVerify() { 
     
    112123} 
    113124 
    114 bytes2Size = function(bytes) { 
    115         var sizes = ['B', 'KB', 'MB', 'GB', 'TB']; 
    116         if (bytes === 0) return 'n/a'; 
    117         var i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024))); 
    118         var size = (i<2) ? Math.round((bytes / Math.pow(1024, i))) : Math.round((bytes / Math.pow(1024, i)) * 100)/100; 
    119         return  size + ' ' + sizes[i]; 
    120 }; 
    121  
    122 flags2Class = function(cellvalue) { 
    123         var flags_enum = cellvalue.split(','); 
    124         var classes = ''; 
    125         for (var i=0; i<flags_enum.length; i++){ 
    126                 classes += '<span class="icon-'+flags_enum[i].toLowerCase()+'"> </span>'; 
    127         } 
    128         return classes; 
    129 }; 
    130  
    131 date2Time = function (timestamp) { 
    132         var date = new Date(); 
    133         if( typeof timestamp === "string" ) 
    134             timestamp = parseInt( timestamp, 10 ); 
    135         if ((date.getTime() - timestamp) < (24*60*60*1000)) { 
    136                 return '<span class="timable" title="'+timestamp+'"> </span>'; 
    137         } else { 
    138                 date = new Date(timestamp); 
    139                 var b = date.toISOString().split("T")[0].split("-"); 
    140                 var c = b[2] + "/" + b[1] + "/" + b[0]; 
    141                 return '<span class="datable">' + c + '</span>'; 
    142         } 
    143 }; 
    144  
    145 keys = function( object ){ 
    146  
    147   var array = []; 
    148  
    149   for( var key in object ) 
    150        array[ array.length ] = key; 
    151  
    152   return( array ); 
    153  
    154 } 
     125// bytes2Size = function(bytes) { 
     126//      var sizes = ['B', 'KB', 'MB', 'GB', 'TB']; 
     127//      if (bytes === 0) return 'n/a'; 
     128//      var i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024))); 
     129//      var size = (i<2) ? Math.round((bytes / Math.pow(1024, i))) : Math.round((bytes / Math.pow(1024, i)) * 100)/100; 
     130//      return  size + ' ' + sizes[i]; 
     131// }; 
     132 
     133// flags2Class2 = function(cellvalue) { 
     134//      var flags_enum = cellvalue.split(','); 
     135//      var classes = ''; 
     136//      for (var i=0; i<flags_enum.length; i++){ 
     137//              classes += '<span class="icon-'+flags_enum[i].toLowerCase()+'"> </span>'; 
     138//      } 
     139//      return classes; 
     140// }; 
     141 
     142// date2Time = function (timestamp) { 
     143//      var date = new Date(); 
     144//      if( typeof timestamp === "string" ) 
     145//          timestamp = parseInt( timestamp, 10 ); 
     146//      if ((date.getTime() - timestamp) < (24*60*60*1000)) { 
     147//              return '<span class="timable" title="'+timestamp+'"> </span>'; 
     148//      } else { 
     149//              date = new Date(timestamp); 
     150//              var b = date.toISOString().split("T")[0].split("-"); 
     151//              var c = b[2] + "/" + b[1] + "/" + b[0]; 
     152//              return '<span class="datable">' + c + '</span>'; 
     153//      } 
     154// }; 
    155155 
    156156/* Mostra os detalhes do filtro para edição */ 
     
    348348} 
    349349 
    350  
    351 DataLayer.codec( 'message', 'jqGrid', { 
    352  
    353       encoder: function( data ){ 
    354  
    355           return( data ); 
    356  
    357       } 
    358 }); 
    359  
    360350/* Gerencia o grid das mensagens da caixa de entrada */ 
    361351function showGridMessages(thiss) { 
     
    407397        var total = data.length ? Math.ceil( data.length / numRows ) : 0; 
    408398 
    409         delete DataLayer.criterias['message:jqGrid'];    
    410         DataLayer.register( 'criterias', 'message:jqGrid', function( crit ){ 
    411  
    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 } } }; 
    426         }); 
     399        delete DataLayer.criterias['message:inboxSearch']; 
     400        delete DataLayer.encoders['message:inboxSearch']; 
     401 
     402        DataLayer.codec( 'message', 'inboxSearch', { 
     403 
     404                  encoder: function( dt, crit ){ 
     405 
     406                      return({"rows": dt,  
     407                              "records": data.length, 
     408                              "page": crit.criteria.properties.context.page,  
     409                              "total": total}); 
     410 
     411                  }, 
     412                  criteria: function( crit ){ 
     413 
     414                      if( crit.page > total ) 
     415                          crit.page = total; 
     416 
     417                      var start = crit.rows * ( crit.page - 1 ); 
     418                       
     419                      start / crit.rows + 1 
     420 
     421                      var msgNumber = []; 
     422 
     423                      for( var i = start; i < start + crit.rows && !!data[i]; i++ ) 
     424                          msgNumber.push( data[i] ); 
     425 
     426                      if( !msgNumber.length ) 
     427                          return( false ); 
     428 
     429                      return { filter: [ "msgNumber", "IN", msgNumber ], criteria: { properties: { context: { folder: 'INBOX', page: crit.page }, order: crit.sidx } } }; 
     430 
     431                  } 
     432          }); 
    427433 
    428434        allMessages = data; 
    429435 
    430436        if (typeof grid !== "undefined") { 
    431                 grid.jqGrid( 'setGridParam', { url: 'message:jqGrid', postData: data } ).trigger( 'reloadGrid' ); 
     437                grid/*.jqGrid( 'setGridParam', { url: 'message:inboxSearch', postData: data } )*/.trigger( 'reloadGrid' ); 
    432438                //return; 
    433439        } 
     
    435441        .html('<table class="hidden fields-search-messages-grid" id="fields-search-messages-grid"><tr><td/></tr></table><div class="hidden fields-search-messages-grid-pager" id="fields-search-messages-grid-pager"></div>') 
    436442        .children(".fields-search-messages-grid, .fields-search-messages-grid-pager").removeClass('hidden').filter(".fields-search-messages-grid").trigger( 'reloadGrid' ).jqGrid({ 
    437                 url: 'message:jqGrid', 
     443                url: 'message:inboxSearch', 
    438444                datatype: "json", 
    439445                mtype: 'GET', 
  • sandbox/expressoServiceImap/prototype/services/ImapServiceAdapter.php

    r6486 r6529  
    8888                        case 'message': 
    8989                        { 
    90                                 //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 
    95  
    9690                                $filter =  isset($criteria['filter']) ? $criteria['filter'] : ''; 
    97  
    98 //                              if( !$sidx ) $sidx = 1; 
    9991 
    10092                                $folder_name =  isset($URI['folder']) ?  $URI['folder'] : str_replace( '.', $this->imap_delimiter, isset($context['folder']) ?  $context['folder'] : 'INBOX'); 
    10193                         
    102                                 $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; 
    110  
    111                                 // do not put $limit*($page - 1) 
    112                                 //end: for grid 
    113                                  
    114                                  
     94                                if( isset($criteria['count']) ) 
     95                                { 
     96                                    return imap_num_msg( $this->open_mbox( $folder_name ) ); 
     97                                } 
    11598                                /** 
    11699                                 * Trata o caso específico de retorno do atributo messageId 
     
    174157                                        } 
    175158 
    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 ); 
    183  
    184159                                        $result = $this->get_info_msgs( array( 'folder' => $folder_name,  
    185160                                                                           'msgs_number' => implode( ',', $filter[2] ) ) ); 
     
    204179                                //return var_export($result); 
    205180 
    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 ); 
     181                                $response = array(); 
    209182                                 
    210183                                for ($i=0; $i<count($result); $i++) 
     
    222195                                        if (array_key_exists($i, $result)) 
    223196                                        { 
    224                                                 $response["rows"][$i] = $result[$i]; 
    225                                                 $response["rows"][$i]['timestamp'] = $result[$i]['udate'] * 1000; 
    226                                                 $response["rows"][$i]['flags'] = implode(',', $flags_enum); 
    227                                                 $response["rows"][$i]['size'] = $response["rows"][$i]['Size']; 
    228                                                 $response["rows"][$i]['folder'] = $folder_name;  
     197                                                $response[$i] = $result[$i]; 
     198                                                $response[$i]['timestamp'] = $result[$i]['udate'] * 1000; 
     199                                                $response[$i]['flags'] = implode(',', $flags_enum); 
     200                                                $response[$i]['size'] = $response["rows"][$i]['Size']; 
     201                                                $response[$i]['folder'] = $folder_name;  
    229202                                                //$response["rows"][$i]['udate'] = ( $result[$i]['udate'] + $this->functions->CalculateDateOffset()  * 1000 ); 
    230                                                 unset($response["rows"][$i]['Size']); 
     203                                                unset($response[$i]['Size']); 
    231204                                        } 
    232205                                 } 
Note: See TracChangeset for help on using the changeset viewer.