Changeset 6545


Ignore:
Timestamp:
06/19/12 23:40:56 (9 years ago)
Author:
natan
Message:

Ticket #2845 - Atualizacao da API na busca de mensagens - Correcao do problema nas paginacoes

Location:
sandbox/expressoServiceImap/prototype
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • sandbox/expressoServiceImap/prototype/api/datalayer.js

    r6444 r6545  
    11821182        if( !result && (bothSides || oneSide) ) 
    11831183        { 
    1184             result = this.request( concept, id || filter.filter, filter.criteria ); 
     1184            result = this.request( concept, id || filter.filter || false, filter.criteria ); 
    11851185 
    11861186            if( result && bothSides && (!filter ||  
     
    19571957    }, 
    19581958 
    1959     codec: function( concept, namespace, codec ){ 
     1959    codec: function( concept, namespace, codec, set ){ 
    19601960 
    19611961        if( codec.encoder ) 
    1962             this.encoder( concept, namespace, codec.encoder ); 
     1962            this.encoder( concept, namespace, codec.encoder, set ); 
    19631963        if( codec.decoder ) 
    1964             this.decoder( concept, namespace, codec.decoder ); 
     1964            this.decoder( concept, namespace, codec.decoder, set ); 
    19651965        if( codec.criteria ) 
    1966             this.register( "criterias", concept + ":" + namespace, codec.criteria ); 
    1967  
    1968     }, 
    1969  
    1970     encoder: function( concept, namespace, encoder ){ 
    1971  
    1972         this.register( "encoders", concept + ":" + namespace, encoder ); 
     1966            this.register( "criterias", concept + ":" + namespace, codec.criteria, set ); 
     1967 
     1968    }, 
     1969 
     1970    encoder: function( concept, namespace, encoder, set ){ 
     1971 
     1972        this.register( "encoders", concept + ":" + namespace, encoder, set ); 
    19731973 
    19741974    }, 
     
    19841984    }, 
    19851985 
    1986     decoder: function( concept, namespace, decoder ){ 
    1987  
    1988         this.register( "decoders", concept + ":" + namespace, decoder ); 
     1986    decoder: function( concept, namespace, decoder, set ){ 
     1987 
     1988        this.register( "decoders", concept + ":" + namespace, decoder, set ); 
    19891989 
    19901990    }, 
     
    20112011    }, 
    20122012 
    2013     register: function( kind, concept, deployable ){ 
     2013    register: function( kind, concept, deployable, set ){ 
    20142014 
    20152015      if( arguments.length < 3 ) 
     
    20202020      } 
    20212021 
    2022       if( !this[ kind ][ concept ] ) 
     2022      if( !this[ kind ][ concept ] || set ) 
    20232023            this[ kind ][ concept ] = []; 
    20242024 
  • sandbox/expressoServiceImap/prototype/modules/attach_message/attach_message.js

    r6529 r6545  
    4343     
    4444    current_folder = targetId.replace(dashes, '.'); 
    45     current_count = DataLayer.get( 'message', { criteria: { count: true } }, true ); 
     45    current_count = DataLayer.get( 'message', { criteria: { count: true, properties: {context:{folder:current_folder}} } }, true ); 
    4646 
    4747     $("#message_attacher_grid").trigger("reloadGrid") 
  • sandbox/expressoServiceImap/prototype/modules/attach_message/common.js

    r6510 r6545  
    44months = ['Jan','Feb','Mar','Apr','May','June','July','Aug','Sept','Oct','Nov','Dec']; 
    55current_folder = 'INBOX'; 
     6current_count = DataLayer.get( 'message', { criteria: { count: true, properties: {context:{folder:current_folder}} } }, true ); 
    67 
    78DataLayer.codec( 'folder', 'tree', { 
     
    5657 
    5758      encoder: function( data, crit ){ 
    58  
    59             if( !crit.criteria.properties.context.folder.indexOf( 'local_messages/' ) ) 
     59         
     60            crit = crit.criteria; 
     61 
     62            if( !crit.properties.context.folder.indexOf( 'local_messages/' ) ) 
    6063            { 
    61                 var msgs = expresso_local_messages.get_local_range_msgs( crit.criteria.properties.context.folder.replace(dots, "/").replace("local_messages/", ""), 
     64                var msgs = expresso_local_messages.get_local_range_msgs( crit.properties.context.folder.replace(dots, "/").replace("local_messages/", ""), 
    6265                                                                          crit.offset + 1, crit.limit, "SORTARRIVAL", crit.orderDesc, "ALL", 1, 1 ); 
    6366 
     
    7578                } 
    7679 
    77                 return( {"rows": msgs,  
    78                           "records": msgs.length, 
    79                           "page": crit.page,  
    80                           "total": Math.ceil( msgs.num_msgs / crit.limit )} ); 
     80                data = msgs; 
    8181            } 
    8282 
    83             return( data ); 
     83            return( {"rows": data,  
     84                      "records": data.num_msgs || current_count, 
     85                      "page": crit.offset / crit.limit + 1,  
     86                      "total": Math.ceil( data.num_msgs || current_count / crit.limit )} ); 
    8487      }, 
    8588      criteria: function( crit ){ 
    8689 
    87             return { criteria: { properties: {context:{folder: current_folder || 'INBOX'}}, offset: crit.rows * ( crit.page - 1 ), limit: crit.rows, orderDesc: crit.sord == "desc" } }; 
     90            return { criteria: { properties: {context:{folder: current_folder || 'INBOX'}}, offset: crit.rows * ( crit.page - 1 ), limit: crit.rows, orderDesc: crit.sord == "desc", currentCount: current_count } }; 
    8891 
    8992      } 
  • sandbox/expressoServiceImap/prototype/modules/filters/filters.js

    r6529 r6545  
    397397        var total = data.length ? Math.ceil( data.length / numRows ) : 0; 
    398398 
    399         delete DataLayer.criterias['message:inboxSearch']; 
    400         delete DataLayer.encoders['message:inboxSearch']; 
     399//      delete DataLayer.criterias['message:inboxSearch']; 
     400//      delete DataLayer.encoders['message:inboxSearch']; 
    401401 
    402402        DataLayer.codec( 'message', 'inboxSearch', { 
     
    427427                          return( false ); 
    428428 
    429                       return { filter: [ "msgNumber", "IN", msgNumber ], criteria: { properties: { context: { folder: 'INBOX', page: crit.page }, order: crit.sidx } } }; 
     429                      return { filter: [ "IN", "msgNumber", msgNumber ], criteria: { properties: { context: { folder: 'INBOX', page: crit.page }, order: crit.sidx } } }; 
    430430 
    431431                  } 
    432           }); 
     432          }, true ); 
    433433 
    434434        allMessages = data; 
  • sandbox/expressoServiceImap/prototype/services/ImapServiceAdapter.php

    r6529 r6545  
    144144                                if( $filter ) 
    145145                                { 
    146                                         if( $filter[0] !== 'msgNumber' ) 
     146                                        if( $filter[1] !== 'msgNumber' ) 
    147147                                        { 
    148148                                            for( $i = 0; $i < count($filter); $i++ ) 
     
    158158 
    159159                                        $result = $this->get_info_msgs( array( 'folder' => $folder_name,  
    160                                                                            'msgs_number' => implode( ',', $filter[2] ) ) ); 
     160                                                                               'msgs_number' => implode( ',', $filter[2] ) ) ); 
    161161 
    162162                                        foreach( $result as $i => $val ) 
     
    170170                                                        'folder' => $folder_name, //INBOX 
    171171                                                        'msg_range_begin' => $criteria['offset'] + 1, //?? 
    172                                                         'msg_range_end' => $criteria['limit'], //$limit = $_GET['rows']; // get how many rows we want to have into the grid 
     172                                                        'msg_range_end' => $criteria['offset'] + $criteria['limit'], //$limit = $_GET['rows']; // get how many rows we want to have into the grid 
    173173                                                        'sort_box_type' => 'SORTARRIVAL',  
    174174                                                        'search_box_type' => 'ALL', 
     
    198198                                                $response[$i]['timestamp'] = $result[$i]['udate'] * 1000; 
    199199                                                $response[$i]['flags'] = implode(',', $flags_enum); 
    200                                                 $response[$i]['size'] = $response["rows"][$i]['Size']; 
    201                                                 $response[$i]['folder'] = $folder_name;  
     200                                                $response[$i]['size'] = $response[$i]['Size']; 
     201                                                $response[$i]['folder'] = $folder_name; 
     202                                                $response[$i]['msgNumber'] = $response[$i]['msg_number']; 
    202203                                                //$response["rows"][$i]['udate'] = ( $result[$i]['udate'] + $this->functions->CalculateDateOffset()  * 1000 ); 
    203204                                                unset($response[$i]['Size']); 
Note: See TracChangeset for help on using the changeset viewer.