Changeset 6558


Ignore:
Timestamp:
06/20/12 22:41:51 (6 years ago)
Author:
natan
Message:

Ticket #2845 - Atualizacao da API na busca de mensagens - Correcao no alinhamento do grid

File:
1 edited

Legend:

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

    r6545 r6558  
    1313jQuery('#buttons-container .button').button(); 
    1414 
    15 var firstFolder = jQuery("#foldertree-container") 
    16 .removeClass('empty-container') 
    17 .html(DataLayer.render(BASE_PATH + 'api/templates/foldertree.ejs', 'folder:tree', false, false, true)) 
    18 .find("#foldertree").treeview() 
    19 .click(function(event){ 
    20         //request new selected folder messages 
    21     var target = $(event.target); 
    22  
    23     if( target.is('.collapsable-hitarea, .expandable-hitarea, .lastCollapsable, .lastExpandable, .treeview') ) 
    24         return; 
    25  
    26     if( !target.attr('id') ) 
    27         target = target.parent(); 
    28  
    29     if (target.attr('id') == "foldertree") return; 
    30  
    31     var targetId = target.attr('id'); 
    32     var child = target.find('.folder'); 
    33  
    34     $('.filetree span.folder.selected').removeClass('selected'); 
    35     if(!target.is('#foldertree > .expandable, #foldertree > .collapsable')) 
    36             $(target).children('.folder').addClass('selected'); 
    37  
     15DataLayer.render(BASE_PATH + 'api/templates/foldertree.ejs', 'folder:tree', function(contentFolders){ 
     16 
     17    var firstFolder = jQuery("#foldertree-container") 
     18    .removeClass('empty-container') 
     19    .html(contentFolders) 
     20    .find("#foldertree").treeview() 
     21    .click(function(event){ 
     22            //request new selected folder messages 
     23        var target = $(event.target); 
     24 
     25        if( target.is('.collapsable-hitarea, .expandable-hitarea, .lastCollapsable, .lastExpandable, .treeview') ) 
     26            return; 
     27 
     28        if( !target.attr('id') ) 
     29            target = target.parent(); 
     30 
     31        if (target.attr('id') == "foldertree") return; 
     32 
     33        var targetId = target.attr('id'); 
     34        var child = target.find('.folder'); 
     35 
     36        $('.filetree span.folder.selected').removeClass('selected'); 
     37        if(!target.is('#foldertree > .expandable, #foldertree > .collapsable')) 
     38                $(target).children('.folder').addClass('selected'); 
     39 
     40        selectedFolder = { 
     41            id: targetId,  
     42            name: child.attr('title'), 
     43            'class': child.attr('class') 
     44        }; 
     45         
     46        current_folder = targetId.replace(dashes, '.'); 
     47        current_count = DataLayer.get( 'message', { criteria: { count: true, properties: {context:{folder:current_folder}} } }, true ); 
     48 
     49        $("#message_attacher_grid").trigger("reloadGrid") 
     50            .jqGrid('setCaption', '<span class="'+child.attr('class')+'">'+child.attr('title')+'</span>'); 
     51    }) 
     52    .find('span:first-child'); 
     53    $('span.folder.inbox').addClass('selected'); 
    3854    selectedFolder = { 
    39         id: targetId,  
    40         name: child.attr('title'), 
    41         'class': child.attr('class') 
     55        id: firstFolder.parent().attr('id'),  
     56        name: firstFolder.attr('title'), 
     57        'class': firstFolder.attr('class') 
    4258    }; 
    43      
    44     current_folder = targetId.replace(dashes, '.'); 
    45     current_count = DataLayer.get( 'message', { criteria: { count: true, properties: {context:{folder:current_folder}} } }, true ); 
    46  
    47      $("#message_attacher_grid").trigger("reloadGrid") 
    48         .jqGrid('setCaption', '<span class="'+child.attr('class')+'">'+child.attr('title')+'</span>'); 
    49 }) 
    50 .find('span:first-child'); 
    51 $('span.folder.inbox').addClass('selected'); 
    52 selectedFolder = { 
    53     id: firstFolder.parent().attr('id'),  
    54     name: firstFolder.attr('title'), 
    55     'class': firstFolder.attr('class') 
    56 }; 
    57  
    58 //jqgrid 
    59 jQuery("#mailgrid-container") 
    60 .removeClass('empty-container') 
    61 .html(DataLayer.render(BASE_PATH + 'api/templates/messagegrid.ejs', {})) 
    62 .find("#message_attacher_grid") 
    63 .jqGrid({ 
    64     url: 'message:jqGrid', 
    65     datatype: "json", 
    66     mtype: 'GET', 
    67     colNames:['#',' ', 'De', 'Assunto', 'Data', 'Tamanho'], 
    68     colModel:[ 
    69             {name:'msg_number',index:'msg_number', width:45,  sortable:false, hidden:true}, 
    70             {name:'flags',     index:'msg_number', width:100, sortable:false, formatter:flags2Class, edittype: 'image', title :false}, 
    71             {name:'from.name', index:'msg_number', width:70,  sortable:false, formatter:NormaliseFrom}, 
    72             {name:'subject',   index:'subject',    width:245, sortable:false, formatter:NormaliseSubject}, 
    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"} 
    75     ], 
    76     jsonReader : { 
    77               root:"rows", 
    78               page: "page", 
    79               total: "total", 
    80               records: "records", 
    81               repeatitems: false, 
    82               id: "0" 
    83     }, 
    84     rowNum:10, 
    85     rowList:[10,25,50], 
    86     pager: '#message_attacher_grid_pager', 
    87     sortname: 'id', 
    88     viewrecords: true, 
    89     sortorder: "desc", 
    90     multiselect: true, 
    91     autowidth: true, 
    92     loadComplete: function(data) { 
    93             lastLoadedMessages = data.rows; 
    94              
    95             // aplica o contador 
    96             jQuery('.timable').each(function (i) { 
    97                     jQuery(this).countdown({ 
    98                             since: new Date(parseInt(this.title)),  
    99                             significant: 1, 
    100                             layout: 'h&aacute; {d<}{dn} {dl} {d>}{h<}{hn} {hl} {h>}{m<}{mn} {ml} {m>}{s<}{sn} {sl}{s>}',  
    101                             description: ' atr&aacute;s' 
    102                     });                                  
    103             }); 
    104              
    105             // reconstrói a seleção das mensagens mesmo depois da mudança de pasta 
    106             if (selectedMessages[selectedFolder.id]) { 
    107                     for (var message in selectedMessages[selectedFolder.id]){ 
    108                             for (var j=0; j<data.rows.length; j++){      
    109                                     if (selectedMessages[selectedFolder.id][message] && message == data.rows[j].msg_number) { 
    110                                             jQuery("#message_attacher_grid").setSelection(jQuery("#message_attacher_grid").getDataIDs()[j], false); 
    111                                     } 
    112                             } 
    113                     } 
    114             } 
    115             $('#cb_message_attacher_grid').css('display', 'none'); 
    116              
    117     }, 
    118     onSelectRow: function (id, selected) { 
    119             var message = false; 
    120             for (var i=0; i<lastLoadedMessages.length; i++){ 
    121                     if (lastLoadedMessages[i].msg_number == id) { 
    122                             message = lastLoadedMessages[i]; 
    123                             break; 
    124                     } 
    125             } 
    126              
    127             var tabPanelTemplateId = 'mailpreview_tab_' + selectedFolder.id.replace(/[.\/]/g, '_') + '_' + message.msg_number; 
    128             var tabPanelTemplateId = tabPanelTemplateId.replace(/[\s\/]/g, '-');  
    129              
    130             if (selected) {      
    131                     if (onceOpenedMessages[selectedFolder.id] && onceOpenedMessages[selectedFolder.id][message.msg_number]) { 
    132                             if (!selectedMessages[selectedFolder.id]) 
    133                                     selectedMessages[selectedFolder.id] = {}; 
    134                                      
    135                             selectedMessages[selectedFolder.id][message.msg_number] = true; 
    136                             $('#mailpreview-container').unblock();                                               
    137  
    138                             var tabPanelTemplateLabel = html_entities(onceOpenedMessages[selectedFolder.id][message.msg_number].subject); 
    139                             if (tabPanelTemplateLabel.length > $mailpreview_tabs_label_length + 3) 
    140                                     tabPanelTemplateLabel = tabPanelTemplateLabel.substring(0, $mailpreview_tabs_label_length) + '...'; 
    141                              
    142                             if (!$('#' + tabPanelTemplateId).length) {                                                           
    143                                     $mailpreview_tabs.tabs("add", '#' + tabPanelTemplateId, tabPanelTemplateLabel) 
    144                                     .find('.message.empty-container').hide().end() 
    145                                     .find('#' + tabPanelTemplateId).html(onceOpenedMessages[selectedFolder.id][message.msg_number].body); 
    146                             } else { 
    147                                     $mailpreview_tabs.tabs('select', '#' + tabPanelTemplateId) 
    148                                     .find('#' + tabPanelTemplateId + ', [href="#' + tabPanelTemplateId + '"]').removeClass('preview-message-unselected'); 
    149                             } 
    150                              
    151                     } else { 
    152                             jQuery('#mailpreview_container').block({   
    153                                     message: '<div id="loading-content"><div class="image"></div></div>',   
    154                                     css: {   
    155                                             backgroundImage: 'url('+BASE_PATH+'modules/attach_message/images/loading.gif)',   
    156                                             backgroundRepeat: 'no-repeat',  
    157                                             backgroundPosition: 'center',  
    158                                             backgroundColor: 'transparent',  
    159                                             width: '32px',  
    160                                             height: '32px',  
    161                                             border:'none'   
    162                                     },  
    163                                     overlayCSS: {   
    164                                             backgroundColor: '#CCC',   
    165                                             opacity:         0.5  
    166                                     }   
    167                             });  
    168                        
    169                             if (!selectedMessages[selectedFolder.id]) 
    170                                     selectedMessages[selectedFolder.id] = {}; 
    171                             selectedMessages[selectedFolder.id][message.msg_number] = true; 
    172                              
    173                             var folder = selectedFolder.id.replace(dashes, '.'), mail_preview = null; 
    174                              
    175                             if( !folder.indexOf( 'local_messages/' ) ) 
    176                             { 
    177                               mail_preview = expresso_local_messages.get_local_mail( id ); 
    178                               mail_preview.eml = expresso_local_messages.get_src( mail_preview.url_export_file ); 
    179                             } 
    180                             else 
    181                               mail_preview = DataLayer.get( 'message', { filter: id, criteria: { properties: {context:{folder:folder}} } } ); 
    182  
    183                               if (!onceOpenedMessages[selectedFolder.id]) 
    184                                       onceOpenedMessages[selectedFolder.id] = {}; 
    185                               onceOpenedMessages[selectedFolder.id][message.msg_number] = jQuery.extend(true, message, mail_preview); 
    186  
    187                               $('#mailpreview_container').unblock(); 
    188  
    189                               var tabPanelTemplateLabel = html_entities(onceOpenedMessages[selectedFolder.id][message.msg_number].subject); 
    190                               if (tabPanelTemplateLabel.length > $mailpreview_tabs_label_length + 3) 
    191                                       tabPanelTemplateLabel = tabPanelTemplateLabel.substring(0, $mailpreview_tabs_label_length) + '...'; 
    192                               selectedMessagesCount(); 
    193                                
    194                               if (!$('#' + tabPanelTemplateId).length) {                                                                 
    195                                       $mailpreview_tabs.tabs("add", '#' + tabPanelTemplateId, tabPanelTemplateLabel) 
    196                                       .find('.message.empty-container').hide().end() 
    197                                       .find('#' + tabPanelTemplateId).html(onceOpenedMessages[selectedFolder.id][message.msg_number].body) 
    198                                       .prepend( 
    199                                               '<div class="mailpreview-message-info">' +  
    200                                                       get_lang('Subject') + ': ' + 
    201                                                       html_entities(onceOpenedMessages[selectedFolder.id][message.msg_number].subject) +  
    202                                               '</div>' 
    203                                       ) 
    204                                       .find('[class^="ExpressoCssWrapper"]').addClass("mailpreview-message-body"); 
    205                               } else { 
    206                                       $mailpreview_tabs.tabs('select', '#' + tabPanelTemplateId) 
    207                                       .find('#' + tabPanelTemplateId + ', [href="#' + tabPanelTemplateId + '"]').removeClass('preview-message-unselected'); 
    208                               } 
    209                     } 
    210             } else { 
    211                     /** 
    212                       * if you wants to remove tab on unselect message, 
    213                       * but still needs to uselect message on remove tab. 
    214                       *  
    215                       */ 
    216                     /* 
    217                     if ($('#' + tabPanelTemplateId).length) { 
    218                             $mailpreview_tabs.tabs('remove', '#' + tabPanelTemplateId); 
    219                     } 
    220                       */ 
    221                     selectedMessages[selectedFolder.id][message.msg_number] = false; 
    222                     $mailpreview_tabs.find('#' + tabPanelTemplateId + ', [href="#' + tabPanelTemplateId + '"]').addClass('preview-message-unselected'); 
    223             } 
    224              
    225             if (onceOpenedMessages[selectedFolder.id] && onceOpenedMessages[selectedFolder.id][message.msg_number]) 
    226                     selectedMessagesCount(); 
    227     }, 
    228     caption: '<span class="'+selectedFolder['class']+'">'+selectedFolder.name+'</span>' 
    229 }); 
    230 //.jqGrid('navGrid','#message_attacher_grid_pager',{edit:false,add:false,del:false}); 
    231 var title = [get_lang("First page"), get_lang("Prev page"), get_lang("Next page"), get_lang("Last page")]; 
    232 $("#first_message_attacher_grid_pager").attr("title",title[0]); 
    233 $("#prev_message_attacher_grid_pager").attr("title",title[1]); 
    234 $("#next_message_attacher_grid_pager").attr("title",title[2]); 
    235 $("#last_message_attacher_grid_pager").attr("title",title[3]); 
     59 
     60    //jqgrid 
     61    jQuery("#mailgrid-container") 
     62    .removeClass('empty-container') 
     63    .html(DataLayer.render(BASE_PATH + 'api/templates/messagegrid.ejs', {})) 
     64    .find("#message_attacher_grid") 
     65    .jqGrid({ 
     66        url: 'message:jqGrid', 
     67        datatype: "json", 
     68        mtype: 'GET', 
     69        colNames:['#',' ', 'De', 'Assunto', 'Data', 'Tamanho'], 
     70        colModel:[ 
     71                {name:'msg_number',index:'msg_number', width:45,  sortable:false, hidden:true}, 
     72                {name:'flags',     index:'msg_number', width:100, sortable:false, formatter:flags2Class, edittype: 'image', title :false}, 
     73                {name:'from.name', index:'msg_number', width:70,  sortable:false, formatter:NormaliseFrom}, 
     74                {name:'subject',   index:'subject',    width:245, sortable:false, formatter:NormaliseSubject}, 
     75                {name:'timestamp', index:'timestamp',  width:65,  sortable:false, formatter:date2Time,   align:"center"}, 
     76                {name:'size',      index:'size',       width:55,  sortable:false, formatter:bytes2Size,  align:"right"} 
     77        ], 
     78        jsonReader : { 
     79                  root:"rows", 
     80                  page: "page", 
     81                  total: "total", 
     82                  records: "records", 
     83                  repeatitems: false, 
     84                  id: "0" 
     85        }, 
     86        rowNum:10, 
     87        rowList:[10,25,50], 
     88        pager: '#message_attacher_grid_pager', 
     89        sortname: 'id', 
     90        viewrecords: true, 
     91        sortorder: "desc", 
     92        multiselect: true, 
     93        autowidth: true, 
     94        loadComplete: function(data) { 
     95                lastLoadedMessages = data.rows; 
     96                 
     97                // aplica o contador 
     98                jQuery('.timable').each(function (i) { 
     99                        jQuery(this).countdown({ 
     100                                since: new Date(parseInt(this.title)),  
     101                                significant: 1, 
     102                                layout: 'h&aacute; {d<}{dn} {dl} {d>}{h<}{hn} {hl} {h>}{m<}{mn} {ml} {m>}{s<}{sn} {sl}{s>}',  
     103                                description: ' atr&aacute;s' 
     104                        });                                      
     105                }); 
     106                 
     107                // reconstrói a seleção das mensagens mesmo depois da mudança de pasta 
     108                if (selectedMessages[selectedFolder.id]) { 
     109                        for (var message in selectedMessages[selectedFolder.id]){ 
     110                                for (var j=0; j<data.rows.length; j++){  
     111                                        if (selectedMessages[selectedFolder.id][message] && message == data.rows[j].msg_number) { 
     112                                                jQuery("#message_attacher_grid").setSelection(jQuery("#message_attacher_grid").getDataIDs()[j], false); 
     113                                        } 
     114                                } 
     115                        } 
     116                } 
     117                $('#cb_message_attacher_grid').css('display', 'none'); 
     118                 
     119        }, 
     120        onSelectRow: function (id, selected) { 
     121                var message = false; 
     122                for (var i=0; i<lastLoadedMessages.length; i++){ 
     123                        if (lastLoadedMessages[i].msg_number == id) { 
     124                                message = lastLoadedMessages[i]; 
     125                                break; 
     126                        } 
     127                } 
     128                 
     129                var tabPanelTemplateId = 'mailpreview_tab_' + selectedFolder.id.replace(/[.\/]/g, '_') + '_' + message.msg_number; 
     130                var tabPanelTemplateId = tabPanelTemplateId.replace(/[\s\/]/g, '-');  
     131                 
     132                if (selected) {  
     133                        if (onceOpenedMessages[selectedFolder.id] && onceOpenedMessages[selectedFolder.id][message.msg_number]) { 
     134                                if (!selectedMessages[selectedFolder.id]) 
     135                                        selectedMessages[selectedFolder.id] = {}; 
     136                                         
     137                                selectedMessages[selectedFolder.id][message.msg_number] = true; 
     138                                $('#mailpreview-container').unblock();                                           
     139 
     140                                var tabPanelTemplateLabel = html_entities(onceOpenedMessages[selectedFolder.id][message.msg_number].subject); 
     141                                if (tabPanelTemplateLabel.length > $mailpreview_tabs_label_length + 3) 
     142                                        tabPanelTemplateLabel = tabPanelTemplateLabel.substring(0, $mailpreview_tabs_label_length) + '...'; 
     143                                 
     144                                if (!$('#' + tabPanelTemplateId).length) {                                                               
     145                                        $mailpreview_tabs.tabs("add", '#' + tabPanelTemplateId, tabPanelTemplateLabel) 
     146                                        .find('.message.empty-container').hide().end() 
     147                                        .find('#' + tabPanelTemplateId).html(onceOpenedMessages[selectedFolder.id][message.msg_number].body); 
     148                                } else { 
     149                                        $mailpreview_tabs.tabs('select', '#' + tabPanelTemplateId) 
     150                                        .find('#' + tabPanelTemplateId + ', [href="#' + tabPanelTemplateId + '"]').removeClass('preview-message-unselected'); 
     151                                } 
     152                                 
     153                        } else { 
     154                                jQuery('#mailpreview_container').block({   
     155                                        message: '<div id="loading-content"><div class="image"></div></div>',   
     156                                        css: {   
     157                                                backgroundImage: 'url('+BASE_PATH+'modules/attach_message/images/loading.gif)',   
     158                                                backgroundRepeat: 'no-repeat',  
     159                                                backgroundPosition: 'center',  
     160                                                backgroundColor: 'transparent',  
     161                                                width: '32px',  
     162                                                height: '32px',  
     163                                                border:'none'   
     164                                        },  
     165                                        overlayCSS: {   
     166                                                backgroundColor: '#CCC',   
     167                                                opacity:         0.5  
     168                                        }   
     169                                });  
     170                           
     171                                if (!selectedMessages[selectedFolder.id]) 
     172                                        selectedMessages[selectedFolder.id] = {}; 
     173                                selectedMessages[selectedFolder.id][message.msg_number] = true; 
     174                                 
     175                                var folder = selectedFolder.id.replace(dashes, '.'), mail_preview = null; 
     176                                 
     177                                if( !folder.indexOf( 'local_messages/' ) ) 
     178                                { 
     179                                  mail_preview = expresso_local_messages.get_local_mail( id ); 
     180                                  mail_preview.eml = expresso_local_messages.get_src( mail_preview.url_export_file ); 
     181                                } 
     182                                else 
     183                                  mail_preview = DataLayer.get( 'message', { filter: id, criteria: { properties: {context:{folder:folder}} } } ); 
     184 
     185                                  if (!onceOpenedMessages[selectedFolder.id]) 
     186                                          onceOpenedMessages[selectedFolder.id] = {}; 
     187                                  onceOpenedMessages[selectedFolder.id][message.msg_number] = jQuery.extend(true, message, mail_preview); 
     188 
     189                                  $('#mailpreview_container').unblock(); 
     190 
     191                                  var tabPanelTemplateLabel = html_entities(onceOpenedMessages[selectedFolder.id][message.msg_number].subject); 
     192                                  if (tabPanelTemplateLabel.length > $mailpreview_tabs_label_length + 3) 
     193                                          tabPanelTemplateLabel = tabPanelTemplateLabel.substring(0, $mailpreview_tabs_label_length) + '...'; 
     194                                  selectedMessagesCount(); 
     195                                   
     196                                  if (!$('#' + tabPanelTemplateId).length) {                                                             
     197                                          $mailpreview_tabs.tabs("add", '#' + tabPanelTemplateId, tabPanelTemplateLabel) 
     198                                          .find('.message.empty-container').hide().end() 
     199                                          .find('#' + tabPanelTemplateId).html(onceOpenedMessages[selectedFolder.id][message.msg_number].body) 
     200                                          .prepend( 
     201                                                  '<div class="mailpreview-message-info">' +  
     202                                                          get_lang('Subject') + ': ' + 
     203                                                          html_entities(onceOpenedMessages[selectedFolder.id][message.msg_number].subject) +  
     204                                                  '</div>' 
     205                                          ) 
     206                                          .find('[class^="ExpressoCssWrapper"]').addClass("mailpreview-message-body"); 
     207                                  } else { 
     208                                          $mailpreview_tabs.tabs('select', '#' + tabPanelTemplateId) 
     209                                          .find('#' + tabPanelTemplateId + ', [href="#' + tabPanelTemplateId + '"]').removeClass('preview-message-unselected'); 
     210                                  } 
     211                        } 
     212                } else { 
     213                        /** 
     214                          * if you wants to remove tab on unselect message, 
     215                          * but still needs to uselect message on remove tab. 
     216                          *  
     217                          */ 
     218                        /* 
     219                        if ($('#' + tabPanelTemplateId).length) { 
     220                                $mailpreview_tabs.tabs('remove', '#' + tabPanelTemplateId); 
     221                        } 
     222                          */ 
     223                        selectedMessages[selectedFolder.id][message.msg_number] = false; 
     224                        $mailpreview_tabs.find('#' + tabPanelTemplateId + ', [href="#' + tabPanelTemplateId + '"]').addClass('preview-message-unselected'); 
     225                } 
     226                 
     227                if (onceOpenedMessages[selectedFolder.id] && onceOpenedMessages[selectedFolder.id][message.msg_number]) 
     228                        selectedMessagesCount(); 
     229        }, 
     230        caption: '<span class="'+selectedFolder['class']+'">'+selectedFolder.name+'</span>' 
     231    }); 
     232    //.jqGrid('navGrid','#message_attacher_grid_pager',{edit:false,add:false,del:false}); 
     233    var title = [get_lang("First page"), get_lang("Prev page"), get_lang("Next page"), get_lang("Last page")]; 
     234    $("#first_message_attacher_grid_pager").attr("title",title[0]); 
     235    $("#prev_message_attacher_grid_pager").attr("title",title[1]); 
     236    $("#next_message_attacher_grid_pager").attr("title",title[2]); 
     237    $("#last_message_attacher_grid_pager").attr("title",title[3]); 
     238 
     239}, true); 
    236240 
    237241var $mailpreview_tabs = $( "#mailpreview_container").tabs({ 
Note: See TracChangeset for help on using the changeset viewer.