Ignore:
Timestamp:
10/11/12 18:14:36 (12 years ago)
Author:
marcosw
Message:

Ticket #3088 - Realização de merge da melhoria do MailArchiver?

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/expressoMail1_2/js/doiMenuData.js

    r7222 r7414  
    1 function labeledMessages(isLabel){ 
    2                         if (isLabel) { 
    3                                 var label = { 
    4                                         id: isLabel 
    5                                 }        
    6                                 var lableleds = new Array(); 
    7                                 var msg_folder = current_folder; 
    8                                 var messages = new Array(); 
    9                                 if(currentTab == 0){ 
    10                                         var id = get_selected_messages().split(','); 
    11                                         for (i = 0; i < id.length; i++){ 
    12                                                 messages.push({ 
    13                                                         msg_number: id[i], 
    14                                                         msg_folder: msg_folder 
    15                                                 }); 
    16                                         } 
    17                                 }else{ 
    18                                         // var id = get_selected_messages_search().split(','); 
    19                                         // var id_border = currentTab.replace(/[a-zA-Z_]+/, ""); 
    20                                         // for (i = 0; i < id.length; i++){ 
    21                                                 // var tr = Element(id[i]+'_s'+id_border); 
    22                                                 // msg_folder = tr.getAttribute('name');  
    23                                                 // messages.push({ 
    24                                                         // "msg_number": id[i], 
    25                                                         // "msg_folder": msg_folder, 
    26                                                 // }); 
    27                                         // }     
    28                                          
    29                                         var roles = get_selected_messages_search_role().split(','); 
    30                                         for (i = 0; i < roles.length; i++){ 
    31                                                 var tr = $('[role="'+roles[i]+'"]'); 
    32                                                 msg_folder = $(tr).attr('name');  
    33                                                 var id = $(tr).attr('id');  
    34                                                 messages.push({ 
    35                                                         "msg_number": id.replace(/_[a-zA-Z0-9]+/,""), 
    36                                                         "msg_folder": msg_folder 
    37                                                 }); 
    38                                         } 
    39                                 } 
    40  
    41                                 for (var i=0; i < messages.length; i++) { 
    42                                         var hasLabel = DataLayer.get('labeled', { 
    43                                                 filter: [ 
    44                                                         'AND', 
    45                                                         ['=', 'labelId', label.id],  
    46                                                         ['=', 'folderName', messages[i].msg_folder],  
    47                                                         ['=', 'messageNumber', messages[i].msg_number] 
    48                                         ]}); 
    49                                         if (!hasLabel || hasLabel == "") { 
    50                                                 lableleds.push( 
    51                                                         DataLayer.put('labeled', { 
    52                                                                 labelId:label.id,  
    53                                                                 folderName:messages[i].msg_folder,  
    54                                                                 messageNumber:messages[i].msg_number 
    55                                                         }) 
    56                                                 ); 
    57                                                  
    58                                         } 
    59                                 } 
    60                                 DataLayer.commit(false, false, function(data){ 
    61                                         for (var i=0; i < messages.length; i++) { 
    62                                                 updateLabelsColumn({msg_number:messages[i].msg_number, boxname:messages[i].msg_folder, labels:false}); 
    63                                         }                
    64                                 }); 
    65                                  
    66  
    67                         } 
    68 } 
    69  
    70 function openListUsers(border_id) { 
    71         connector.loadScript("QuickCatalogSearch"); 
    72         if (typeof(QuickCatalogSearch) == 'undefined'){ 
    73                                         setTimeout('openListUsers('+border_id+')',500); 
    74                                         return false; 
    75                                 } 
    76         QuickCatalogSearch.showCatalogList(border_id); 
    77 } 
    78  
    79  
    80 /** 
    81  * Cria a lista de marcadores para o submenu "Marcadores" 
    82  */ 
    83 function getLabels(){ 
    84         var labels = DataLayer.get('label',{criteria:{order: 'name'}}); 
    85         var menuLabelItems = {}; 
    86                 menuLabelItems["new"] = { 
    87                         "name" : get_lang('New Label'), 
    88                         callback:function() {configureLabels({applyToSelectedMessages:true});} 
    89                 }; 
    90         for(var i=0; i<labels.length; i++) { 
    91                 menuLabelItems["label"+labels[i].id] = { 
    92                         "name" : labels[i].name 
    93                 } 
    94         } 
    95         return menuLabelItems; 
    96 } 
    97  
    98 /** 
    99  *      Carrega o menu de opção de uma mensagem 
    100  */ 
    101 function loadMenu(){ 
    102         var labelItems = getLabels(); 
    103         $.contextMenu({ 
    104                 selector: ".table_box tbody tr", 
    105                 callback: function(key, options) { 
    106                         //TODO - default actions 
    107                          
    108                         /**  
    109                          * Apply labels to selected messages 
    110                          */ 
    111                         var isLabel = key.match(/label(.*)/); 
    112                         if (isLabel && isLabel.length > 1) { 
    113                                 labeledMessages(isLabel[1]); 
    114                         } 
    115                         selectAllFolderMsgs(false); 
    116                 }, 
    117                 items: { 
    118                         "flagSeen":      {"name": get_lang("Mark as") + " " + get_lang('seen'), "icon": "seen", callback: function(key, opt){ proxy_mensagens.proxy_set_messages_flag('seen','get_selected_messages'); }}, 
    119                         "flagUnseen":    {"name": get_lang("Mark as") + " " + get_lang('unseen'), "icon": "unseen", callback: function(key, opt){ proxy_mensagens.proxy_set_messages_flag('unseen','get_selected_messages'); }}, 
    120                         "flagFlagged":   {"name": get_lang("Mark as") + " " + get_lang('important'), "icon": "important", callback: function(key, opt){ proxy_mensagens.proxy_set_messages_flag('flagged','get_selected_messages'); }}, 
    121                         "flagUnflagged": {"name": get_lang("Mark as") + " " + get_lang('normal'), callback: function(key, opt){ proxy_mensagens.proxy_set_messages_flag('unflagged','get_selected_messages'); }}, 
    122                          
    123                         "sep1": "---------", 
    124                         "label": { "name": get_lang("Labels"), "items": labelItems}, 
    125                         "follouwpflag":{"name": get_lang("Follow up"), callback: function(key, opt){ configureFollowupflag(); } }, 
    126                          
    127                         "sep2": "---------", 
    128                         "move": {"name": get_lang("Move to")+"...", "icon": "move", callback: function(key, opt){ wfolders.makeWindow('', 'move_to'); }}, 
    129                         "remove": {"name": get_lang("Delete"),      "icon": "delete", callback: function(key, opt){ proxy_mensagens.delete_msgs('null','selected','null'); }}, 
    130                         "export": {"name": get_lang("Export"),      "icon": "export", callback: function(key, opt){ proxy_mensagens.export_all_messages(); }} 
    131                 } 
    132         }); 
    133 } 
    134 /*FIM*/ 
    135 loadMenu(); 
    136  
    137 if (!expresso_offline) { 
    138         var menuToolsItems = { 
    139                 "i01": {"name": get_lang("Preferences"), "icon": "preferences-mail", callback: preferences_mail }, 
    140                 "i02": {"name": get_lang("Search"), "icon": "search-mail", callback: function(key, opt){ search_emails(""); }}, 
    141                 "103": {"name": get_lang("Edit filters"), "icon": "filter", callback: filterbox2 }, 
    142                 "i05": {"name": get_lang("Share mailbox"), "icon": "share-mailbox", callback: sharebox }, 
    143                 "i06": {"name": get_lang("Labels"), "icon": "tag", callback: configureLabels },  
    144                 "i08": {"name": get_lang("Empty trash"), "icon": "empty-trash", callback: function(key, opt){ empty_trash_imap(); }} 
    145         }; 
    146                  
    147         if(preferences.use_local_messages==1) { 
    148                 if(expresso_local_messages.is_offline_installed()) { 
    149                         menuToolsItems["i09"] = {"name": get_lang("Send from queue"), "icon": "queue", callback: force_check_queue }; 
    150                 } 
    151         } 
    152 } else { 
    153         var menuToolsItems = { 
    154                 "i01": {"name": get_lang("Search"), "icon": "search-mail", callback: function(key, opt){ search_emails(""); }} 
    155         } 
    156 } 
    157 $.contextMenu({ 
    158         selector: "#link_tools", 
    159         trigger: 'hover', 
    160         className: 'context-menu-tools', 
    161         position: function($menu, x, y){ 
    162                 $menu.$menu.position({ my: "center top", at: "center bottom", of: this, offset:"0 0"}); 
    163         }, 
    164         determinePosition: function($menu, x, y){ 
    165                 $menu.css('display', 'block').position({ my: "center top", at: "center bottom", of: this}).css('display', 'none'); 
    166         }, 
    167         delay:500, 
    168         autoHide:true, 
    169         events: { 
    170                 show: function(opt) { 
    171                         var $trigger = $(opt.selector).css({'background-color': '#ffffff', 'border': '1px solid #CCCCCC'}); 
    172                         $('.context-menu-tools.context-menu-list.context-menu-root').css({'width': $trigger.css('width') }); 
    173                         $('.context-menu-tools.context-menu-list').css({'background': '#ffffff'}) 
    174                         .find(".context-menu-item").css({'background-color': '#ffffff'}).hover( 
    175                                 function(){ 
    176                                         $(this).css({'background-color': '#CCCCCC'}); 
    177                                 },  
    178                                 function(){ 
    179                                         $(this).css({'background-color': '#ffffff'}); 
    180                                 } 
    181                         ); 
    182                         return true; 
    183                 }, 
    184                 hide: function(opt) { 
    185                         $(opt.selector).css({'background-color': '', 'border': 'none'}); 
    186                         return true; 
    187                 } 
    188         }, 
    189         callback: function(key, options) { 
    190                 //TODO - default actions 
    191  
    192         }, 
    193         items: menuToolsItems 
    194 }); 
    195 var reComplexEmail = /<([^<]*)>[\s]*$/; 
    196 $.contextMenu({ 
    197         selector: ".box", 
    198         autoHide:true, 
    199         items: { 
    200                 "add" : {name: get_lang("Quick Add"), icon : "quick-add",callback: function(key, opt){ var fname = $(opt.$trigger).find("input").val().split('"')[1];ccQuickAddOne.showList(','+fname+', ,'+$.trim($(opt.$trigger).find("input").val()).match(reComplexEmail)[1]); }}, 
    201                 "remove" : {name:get_lang("Remove recipient"), icon:"delete-box",callback: function(key, opt){ $(opt.$trigger).remove(); }}, 
    202                 "sep1": "---------", 
    203                 "quick_search" : {name:get_lang("Quick search of messages"), icon: "quick-search-contact",callback: function(key, opt){ search_emails($.trim($(opt.$trigger).find("input").val()).match(reComplexEmail)[1]); }}, 
    204                 "full_search" : {name:get_lang("Search messages of ..."), icon: "quick-search-contact",callback: function(key, opt){ search_emails("", $.trim($(opt.$trigger).find("input").val()).match(reComplexEmail)[1]);}}          
    205         } 
    206 }); 
    207  
    208 function updateLabelsColumn(messageInfo) { 
    209         var msg_number = messageInfo.msg_number; 
    210         //uid é o numero da mensagem quando os dados são carregados na busca rapida. 
    211         if(messageInfo.uid != '' && messageInfo.uid != 'undefined' && messageInfo.uid != null){ 
    212                 msg_number = messageInfo.uid; 
    213         } 
    214         var msg_folder = current_folder; 
    215         if(messageInfo.boxname != '' && messageInfo.boxname != 'undefined' && messageInfo.boxname != null){ 
    216                 msg_folder = messageInfo.boxname; 
    217         } 
    218          
    219          if(current_folder == msg_folder || !current_folder){ 
    220                  $('#td_message_labels_' + msg_number +', tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number) 
    221                  .html('<img src="../prototype/modules/mail/img/tag.png">'); 
    222         }else{ 
    223                 $('tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number) 
    224                 .html('<img src="../prototype/modules/mail/img/tag.png">'); 
    225         } 
    226          
    227         var menuItems = {}; 
    228         if (messageInfo.labels) { 
    229                 if($.isArray(messageInfo.labels)){ 
    230                         var labels = messageInfo.labels; 
    231                         messageInfo.labels = {}; 
    232                         for(var i in labels) 
    233                                 messageInfo.labels[labels[i].id] = {backgroundColor: labels[i]['backgroundColor'], 
    234                                         borderColor: labels[i]['borderColor'], 
    235                                         fontColor: labels[i]['fontColor'], id: labels[i]['id'], name: labels[i]['name'],  
    236                                         uid: labels[i]['uid'] } 
    237                 }        
    238                 menuItems = messageInfo.labels; 
    239         } else { 
    240                 var labeleds = DataLayer.get('labeled', { 
    241                         criteria: {deepness: '2'}, 
    242                         filter: [ 
    243                                 'AND', 
    244                                 ['=', 'folderName', msg_folder],  
    245                                 ['=', 'messageNumber', msg_number] 
    246                         ] 
    247                          
    248                 }); 
    249                 if (labeleds) { 
    250                         for (var i=0; i < labeleds.length; i++) 
    251                                 menuItems[labeleds[i].label.id] = labeleds[i].label; 
    252                 } else { 
    253                         $('#td_message_labels_' + msg_number +', tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number) 
    254                         .html(''); 
    255                         //$.contextMenu( 'destroy', '#td_message_labels_' + msg_number +', #td_message_labels_search_' + msg_number+':first'); 
    256                         $.contextMenu( 'destroy', '#td_message_labels_' + msg_number +', tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number); 
    257                         return false; 
    258                 } 
    259         } 
    260         var menuItensLabel = {}; 
    261         for(index in menuItems){ 
    262                 menuItensLabel[index] = {type: "label", customName: menuItems[index].name, id: msg_folder+"/"+msg_number+"#"+index};             
    263         } 
    264         $.contextMenu.types.label = function(item, opt, root) { 
    265         $('<span>'+item.customName+'</span><span class="removeLabeled" title="'+get_lang("Remove Label")+'">x</span>') 
    266             .appendTo(this); 
    267                 $(this).find('span.removeLabeled').click(function(){ 
    268                         //TODO Mudar quando API abstrair atualizações no cache 
    269                         DataLayer.remove('labeled', false); 
    270                         DataLayer.get('labeled'); 
    271                         DataLayer.remove('labeled', item.id); 
    272                         DataLayer.commit(false, false, function(){ 
    273                                 updateLabelsColumn({msg_number:msg_number, boxname:msg_folder, labels:false}); 
    274                         }); 
    275                 }); 
    276         }; 
    277         if(current_folder == msg_folder || !current_folder){ 
    278                 $.contextMenu( 'destroy', '#td_message_labels_' + msg_number +', tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number); 
    279                 $.contextMenu({ 
    280                         selector: '#td_message_labels_' + msg_number +', tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number, 
    281                         trigger: 'hover', 
    282                         delay:100, 
    283                         autoHide:true, 
    284                         callback: function(key, options) { 
    285                                 //TODO - default actions 
    286                         }, 
    287                         items: menuItensLabel 
    288                 }); 
    289         }else{ 
    290                 $.contextMenu( 'destroy', 'tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number); 
    291  
    292                 $.contextMenu({ 
    293                         selector: 'tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number, 
    294                         trigger: 'hover', 
    295                         delay:100, 
    296                         autoHide:true, 
    297                         callback: function(key, options) { 
    298                                 //TODO - default actions 
    299                         }, 
    300                         items: menuItensLabel  
    301                 });      
    302         } 
    303 } 
    304  
    305 function loadExtraLDAPBox(data, element){ 
    306  
    307     if(!!data[0]){ 
    308         var decoded = {}; 
    309  
    310         $.each(data, function(i, e){ 
    311             decoded[e.name] = e.value; 
    312         }); 
    313  
    314         data = decoded; 
    315     } 
    316  
    317         menuItensLabel = {}; 
    318         menuItensLabel["Name"] = {name: "<b>"+data.name+"</b>", disabled: true}; 
    319         menuItensLabel["Email"] = {name: data.email, disabled: true}; 
    320         if(!!data.telephone){ 
    321                 menuItensLabel["TelefoneLabel"] = {name: "<b>"+get_lang("Telephone")+"</b>", disabled: true}; 
    322                 menuItensLabel["TelefoneValue"] = {name: data.telephone, disabled: true}; 
    323         } 
    324         if(data.vacationActive){ 
    325                 if(data.vacationActive == "TRUE"){ 
    326                         menuItensLabel["outOffice"] = {name: "<b>"+get_lang("Out of office")+"</b>", disabled: true}; 
    327                         menuItensLabel["outOfficeValue"] = {name: data.vacationInfo.substring(0, 20), disabled: true}; 
    328                 } 
    329         } 
    330         $.contextMenu({ 
    331                 selector: "#content_id_"+currentTab+" "+element+" .box-info", 
    332                 trigger: 'hover', 
    333                 delay:100, 
    334                 autoHide:true, 
    335                 items: menuItensLabel 
    336         });      
    337 } 
    338  
    339 function loadGroupBox(data, element){ 
    340         menuItensLabel = {}; 
    341         menuItensLabel["ContactGroupLabelAll"] = {name:"<b>"+get_lang("Group contacts")+"</b>", disabled: true}; 
    342         menuItensLabel["sep1"] = "---------"; 
    343         if(data.itens){ 
    344                 var aux = 0; 
    345                 var ctcName = ""; 
    346                 for(var item in data.itens){ 
    347                         if(parseInt(item) <= 4){ 
    348                                 ctcName = data.itens[item].data[0].value; 
    349                                 ctcName = ctcName.length > 2 ? ctcName : data.itens[item].data[2].value.substr(0,data.itens[item].data[2].value.indexOf("@")); 
    350                                 menuItensLabel["ContactGroupLabel"+item] = {name: "<b>"+ctcName+"</b>", disabled: true}; 
    351                                 menuItensLabel["ContactGroupValue"+item] = {name: data.itens[item].data[2].value, disabled: true}; 
    352                         }else{ 
    353                                 aux++; 
    354                                 if(aux == 1) 
    355                                         menuItensLabel["MoreContactGroupValue"] = {name : get_lang("And more %1 contact", aux), disabled: true }; 
    356                                 else 
    357                                         menuItensLabel["MoreContactGroupValue"] = {name : get_lang("And more %1 contact", aux)+"s", disabled: true }; 
    358                         } 
    359                 } 
    360         } 
    361         $.contextMenu({ 
    362                 selector: "#content_id_"+currentTab+" "+element+" .box-info", 
    363                 trigger: 'hover', 
    364                 delay:100, 
    365                 autoHide:true, 
    366                 items: menuItensLabel 
    367         });      
    368 } 
    369  
    370  
    371  
    372  
    373  
     1    function labeledMessages(isLabel){ 
     2        if(get_current_folder().split("_")[0] == "local"){ 
     3            alert("Pastas locais não fornece suporte para adição de marcadores.") 
     4            return true; 
     5        } 
     6                        if (isLabel) { 
     7                                var label = { 
     8                                        id: isLabel 
     9                                }        
     10                                var lableleds = new Array(); 
     11                                var msg_folder = current_folder; 
     12                                var messages = new Array(); 
     13                                if(currentTab == 0){ 
     14                                        var id = get_selected_messages().split(','); 
     15                                        for (i = 0; i < id.length; i++){ 
     16                                                messages.push({ 
     17                                                        msg_number: id[i], 
     18                                                        msg_folder: msg_folder 
     19                                                }); 
     20                                        } 
     21                                }else{ 
     22                                        // var id = get_selected_messages_search().split(','); 
     23                                        // var id_border = currentTab.replace(/[a-zA-Z_]+/, ""); 
     24                                        // for (i = 0; i < id.length; i++){ 
     25                                                // var tr = Element(id[i]+'_s'+id_border); 
     26                                                // msg_folder = tr.getAttribute('name');  
     27                                                // messages.push({ 
     28                                                        // "msg_number": id[i], 
     29                                                        // "msg_folder": msg_folder, 
     30                                                // }); 
     31                                        // }     
     32                                         
     33                                        var roles = get_selected_messages_search_role().split(','); 
     34                                        for (i = 0; i < roles.length; i++){ 
     35                                                var tr = $('[role="'+roles[i]+'"]'); 
     36                                                msg_folder = $(tr).attr('name');  
     37                                                var id = $(tr).attr('id');  
     38                                                messages.push({ 
     39                                                        "msg_number": id.replace(/_[a-zA-Z0-9]+/,""), 
     40                                                        "msg_folder": msg_folder 
     41                                                }); 
     42                                        } 
     43                                } 
     44 
     45                                for (var i=0; i < messages.length; i++) { 
     46                                        var hasLabel = DataLayer.get('labeled', { 
     47                                                filter: [ 
     48                                                        'AND', 
     49                                                        ['=', 'labelId', label.id],  
     50                                                        ['=', 'folderName', messages[i].msg_folder],  
     51                                                        ['=', 'messageNumber', messages[i].msg_number] 
     52                                        ]}); 
     53                                        if (!hasLabel || hasLabel == "") { 
     54                                                lableleds.push( 
     55                                                        DataLayer.put('labeled', { 
     56                                                                labelId:label.id,  
     57                                                                folderName:messages[i].msg_folder,  
     58                                                                messageNumber:messages[i].msg_number 
     59                                                        }) 
     60                                                ); 
     61                                                 
     62                                        } 
     63                                } 
     64                                DataLayer.commit(false, false, function(data){ 
     65                                        for (var i=0; i < messages.length; i++) { 
     66                                                updateLabelsColumn({msg_number:messages[i].msg_number, boxname:messages[i].msg_folder, labels:false}); 
     67                                        }                
     68                                }); 
     69                                 
     70 
     71                        } 
     72    } 
     73 
     74    function openListUsers(border_id) { 
     75        connector.loadScript("QuickCatalogSearch"); 
     76        if (typeof(QuickCatalogSearch) == 'undefined'){ 
     77                                        setTimeout('openListUsers('+border_id+')',500); 
     78                                        return false; 
     79                                } 
     80        QuickCatalogSearch.showCatalogList(border_id); 
     81    } 
     82 
     83 
     84    /** 
     85     * Cria a lista de marcadores para o submenu "Marcadores" 
     86     */ 
     87    function getLabels(){ 
     88        var labels = DataLayer.get('label',{criteria:{order: 'name'}}); 
     89        var menuLabelItems = {}; 
     90                menuLabelItems["new"] = { 
     91                        "name" : get_lang('New Label'), 
     92                        callback:function() {configureLabels({applyToSelectedMessages:true});} 
     93                }; 
     94        for(var i=0; i<labels.length; i++) { 
     95                menuLabelItems["label"+labels[i].id] = { 
     96                        "name" : labels[i].name 
     97                } 
     98        } 
     99        return menuLabelItems; 
     100    } 
     101 
     102    /** 
     103     *  Carrega o menu de opção de uma mensagem 
     104     */ 
     105    function loadMenu(){ 
     106        var archive = ""; 
     107        if(use_local_messages != 0){ 
     108            archive = {"name": get_lang("Archive"), "icon": "archive", callback: function(key, opt){ proxy_mensagens.archive_message('inbox', 'get_selected_messages'); }} 
     109        }else{ 
     110            archive = ""; 
     111        } 
     112 
     113        var labelItems = getLabels(); 
     114        $.contextMenu({ 
     115                selector: ".table_box tbody tr", 
     116            build: function($trigger, e) { 
     117 
     118                var itensNotLocal = { 
     119                    "label": { "name": get_lang("Labels"), "items": labelItems}, 
     120                    "follouwpflag":{"name": get_lang("Follow up"), callback: function(key, opt){ configureFollowupflag(); } }, 
     121                    "sep2": "---------" 
     122                } 
     123 
     124                var items= { 
     125                    "flagSeen":      {"name": get_lang("Mark as") + " " + get_lang('seen'), "icon": "seen", callback: function(key, opt){ proxy_mensagens.proxy_set_messages_flag('seen','get_selected_messages'); }}, 
     126                    "flagUnseen":    {"name": get_lang("Mark as") + " " + get_lang('unseen'), "icon": "unseen", callback: function(key, opt){ proxy_mensagens.proxy_set_messages_flag('unseen','get_selected_messages'); }}, 
     127                    "flagFlagged":   {"name": get_lang("Mark as") + " " + get_lang('important'), "icon": "important", callback: function(key, opt){ proxy_mensagens.proxy_set_messages_flag('flagged','get_selected_messages'); }}, 
     128                    "flagUnflagged": {"name": get_lang("Mark as") + " " + get_lang('normal'), callback: function(key, opt){ proxy_mensagens.proxy_set_messages_flag('unflagged','get_selected_messages'); }}, 
     129                    "sep1": "---------" 
     130                } 
     131 
     132                var lastItens = { 
     133                    "move": {"name": get_lang("Move to")+"...", "icon": "move", callback: function(key, opt){ wfolders.makeWindow('', 'move_to'); }}, 
     134                    "remove": {"name": get_lang("Delete"),      "icon": "delete", callback: function(key, opt){ proxy_mensagens.delete_msgs('null','selected','null'); }}, 
     135                    "export": {"name": get_lang("Export"),      "icon": "export", callback: function(key, opt){ proxy_mensagens.export_all_messages(); }}, 
     136                    "archive": archive 
     137                } 
     138 
     139                var realItens = {}; 
     140 
     141                if(currentTab == 0){ 
     142                    if(get_current_folder().split("local").length > 1){ 
     143                        realItens = $.extend(items, lastItens); 
     144                    }else{ 
     145                        realItens = $.extend(items, itensNotLocal); 
     146                        realItens = $.extend(realItens, lastItens); 
     147                    } 
     148                }else if(currentTab.split("local").length > 1){ 
     149                    realItens = $.extend(items, lastItens); 
     150                }else{ 
     151                    realItens = $.extend(items, itensNotLocal); 
     152                    realItens = $.extend(realItens, lastItens); 
     153                } 
     154 
     155                        return {  
     156                    callback: function(key, options) { 
     157                                //TODO - default actions 
     158                                 
     159                                /**  
     160                                 * Apply labels to selected messages 
     161                                 */ 
     162                                var isLabel = key.match(/label(.*)/); 
     163                                if (isLabel && isLabel.length > 1) { 
     164                                        labeledMessages(isLabel[1]); 
     165                                } 
     166                                selectAllFolderMsgs(false); 
     167                        }, 
     168                        items: realItens 
     169                } 
     170            } 
     171        }); 
     172    } 
     173    /*FIM*/ 
     174    loadMenu(); 
     175 
     176    if (!expresso_offline) { 
     177        var menuToolsItems = { 
     178                "i01": {"name": get_lang("Preferences"), "icon": "preferences-mail", callback: preferences_mail }, 
     179                "i02": {"name": get_lang("Search"), "icon": "search-mail", callback: function(key, opt){ search_emails(""); }}, 
     180                "103": {"name": get_lang("Edit filters"), "icon": "filter", callback: filterbox2 }, 
     181                "i05": {"name": get_lang("Share mailbox"), "icon": "share-mailbox", callback: sharebox }, 
     182                "i06": {"name": get_lang("Labels"), "icon": "tag", callback: configureLabels },  
     183                "i08": {"name": get_lang("Empty trash"), "icon": "empty-trash", callback: function(key, opt){ empty_trash_imap(); }} 
     184        }; 
     185                 
     186        if(preferences.use_local_messages==1) { 
     187                if(expresso_local_messages.is_offline_installed()) { 
     188                        menuToolsItems["i09"] = {"name": get_lang("Send from queue"), "icon": "queue", callback: force_check_queue }; 
     189                } 
     190        } 
     191    } else { 
     192        var menuToolsItems = { 
     193                "i01": {"name": get_lang("Search"), "icon": "search-mail", callback: function(key, opt){ search_emails(""); }} 
     194        } 
     195    } 
     196    $.contextMenu({ 
     197        selector: "#link_tools", 
     198        trigger: 'hover', 
     199        className: 'context-menu-tools', 
     200        position: function($menu, x, y){ 
     201                $menu.$menu.position({ my: "center top", at: "center bottom", of: this, offset:"0 0"}); 
     202        }, 
     203        determinePosition: function($menu, x, y){ 
     204                $menu.css('display', 'block').position({ my: "center top", at: "center bottom", of: this}).css('display', 'none'); 
     205        }, 
     206        delay:500, 
     207        autoHide:true, 
     208        events: { 
     209                show: function(opt) { 
     210                        var $trigger = $(opt.selector).css({'background-color': '#ffffff', 'border': '1px solid #CCCCCC'}); 
     211                        $('.context-menu-tools.context-menu-list.context-menu-root').css({'width': $trigger.css('width') }); 
     212                        $('.context-menu-tools.context-menu-list').css({'background': '#ffffff'}) 
     213                        .find(".context-menu-item").css({'background-color': '#ffffff'}).hover( 
     214                                function(){ 
     215                                        $(this).css({'background-color': '#CCCCCC'}); 
     216                                },  
     217                                function(){ 
     218                                        $(this).css({'background-color': '#ffffff'}); 
     219                                } 
     220                        ); 
     221                        return true; 
     222                }, 
     223                hide: function(opt) { 
     224                        $(opt.selector).css({'background-color': '', 'border': 'none'}); 
     225                        return true; 
     226                } 
     227        }, 
     228        callback: function(key, options) { 
     229                //TODO - default actions 
     230 
     231        }, 
     232        items: menuToolsItems 
     233    }); 
     234    var reComplexEmail = /<([^<]*)>[\s]*$/; 
     235    $.contextMenu({ 
     236        selector: ".box", 
     237        autoHide:true, 
     238        items: { 
     239                "add" : {name: get_lang("Quick Add"), icon : "quick-add",callback: function(key, opt){ var fname = $(opt.$trigger).find("input").val().split('"')[1];ccQuickAddOne.showList(','+fname+', ,'+$.trim($(opt.$trigger).find("input").val()).match(reComplexEmail)[1]); }}, 
     240                "remove" : {name:get_lang("Remove recipient"), icon:"delete-box",callback: function(key, opt){ $(opt.$trigger).remove(); }}, 
     241                "sep1": "---------", 
     242                "quick_search" : {name:get_lang("Quick search of messages"), icon: "quick-search-contact",callback: function(key, opt){ search_emails($.trim($(opt.$trigger).find("input").val()).match(reComplexEmail)[1]); }}, 
     243                "full_search" : {name:get_lang("Search messages of ..."), icon: "quick-search-contact",callback: function(key, opt){ search_emails("", $.trim($(opt.$trigger).find("input").val()).match(reComplexEmail)[1]);}}          
     244        } 
     245    }); 
     246 
     247    function updateLabelsColumn(messageInfo) { 
     248        var msg_number = messageInfo.msg_number; 
     249        //uid é o numero da mensagem quando os dados são carregados na busca rapida. 
     250        if(messageInfo.uid != '' && messageInfo.uid != 'undefined' && messageInfo.uid != null){ 
     251                msg_number = messageInfo.uid; 
     252        } 
     253        var msg_folder = current_folder; 
     254        if(messageInfo.boxname != '' && messageInfo.boxname != 'undefined' && messageInfo.boxname != null){ 
     255                msg_folder = messageInfo.boxname; 
     256        } 
     257         
     258         if(current_folder == msg_folder || !current_folder){ 
     259                 $('#td_message_labels_' + msg_number +', tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number) 
     260                 .html('<img src="../prototype/modules/mail/img/tag.png">'); 
     261        }else{ 
     262                $('tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number) 
     263                .html('<img src="../prototype/modules/mail/img/tag.png">'); 
     264        } 
     265         
     266        var menuItems = {}; 
     267        if (messageInfo.labels) { 
     268                if($.isArray(messageInfo.labels)){ 
     269                        var labels = messageInfo.labels; 
     270                        messageInfo.labels = {}; 
     271                        for(var i in labels) 
     272                                messageInfo.labels[labels[i].id] = {backgroundColor: labels[i]['backgroundColor'], 
     273                                        borderColor: labels[i]['borderColor'], 
     274                                        fontColor: labels[i]['fontColor'], id: labels[i]['id'], name: labels[i]['name'],  
     275                                        uid: labels[i]['uid'] } 
     276                }        
     277                menuItems = messageInfo.labels; 
     278        } else { 
     279                var labeleds = DataLayer.get('labeled', { 
     280                        criteria: {deepness: '2'}, 
     281                        filter: [ 
     282                                'AND', 
     283                                ['=', 'folderName', msg_folder],  
     284                                ['=', 'messageNumber', msg_number] 
     285                        ] 
     286                         
     287                }); 
     288                if (labeleds) { 
     289                        for (var i=0; i < labeleds.length; i++) 
     290                                menuItems[labeleds[i].label.id] = labeleds[i].label; 
     291                } else { 
     292                        $('#td_message_labels_' + msg_number +', tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number) 
     293                        .html(''); 
     294                        //$.contextMenu( 'destroy', '#td_message_labels_' + msg_number +', #td_message_labels_search_' + msg_number+':first'); 
     295                        $.contextMenu( 'destroy', '#td_message_labels_' + msg_number +', tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number); 
     296                        return false; 
     297                } 
     298        } 
     299        var menuItensLabel = {}; 
     300        for(index in menuItems){ 
     301                menuItensLabel[index] = {type: "label", customName: menuItems[index].name, id: msg_folder+"/"+msg_number+"#"+index};             
     302        } 
     303        $.contextMenu.types.label = function(item, opt, root) { 
     304            $('<span>'+item.customName+'</span><span class="removeLabeled" title="'+get_lang("Remove Label")+'">x</span>') 
     305                .appendTo(this); 
     306                $(this).find('span.removeLabeled').click(function(){ 
     307                        //TODO Mudar quando API abstrair atualizações no cache 
     308                        DataLayer.remove('labeled', false); 
     309                        DataLayer.get('labeled'); 
     310                        DataLayer.remove('labeled', item.id); 
     311                        DataLayer.commit(false, false, function(){ 
     312                                updateLabelsColumn({msg_number:msg_number, boxname:msg_folder, labels:false}); 
     313                        }); 
     314                }); 
     315        }; 
     316        if(current_folder == msg_folder || !current_folder){ 
     317                $.contextMenu( 'destroy', '#td_message_labels_' + msg_number +', tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number); 
     318                $.contextMenu({ 
     319                        selector: '#td_message_labels_' + msg_number +', tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number, 
     320                        trigger: 'hover', 
     321                        delay:100, 
     322                        autoHide:true, 
     323                        callback: function(key, options) { 
     324                                //TODO - default actions 
     325                        }, 
     326                        items: menuItensLabel 
     327                }); 
     328        }else{ 
     329                $.contextMenu( 'destroy', 'tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number); 
     330 
     331                $.contextMenu({ 
     332                        selector: 'tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number, 
     333                        trigger: 'hover', 
     334                        delay:100, 
     335                        autoHide:true, 
     336                        callback: function(key, options) { 
     337                                //TODO - default actions 
     338                        }, 
     339                        items: menuItensLabel  
     340                });      
     341        } 
     342    } 
     343 
     344    function loadExtraLDAPBox(data, element){ 
     345 
     346        if(!!data[0]){ 
     347            var decoded = {}; 
     348 
     349            $.each(data, function(i, e){ 
     350                decoded[e.name] = e.value; 
     351            }); 
     352 
     353            data = decoded; 
     354        } 
     355 
     356        menuItensLabel = {}; 
     357        menuItensLabel["Name"] = {name: "<b>"+data.name+"</b>", disabled: true}; 
     358        menuItensLabel["Email"] = {name: data.email, disabled: true}; 
     359        if(!!data.telephone){ 
     360            menuItensLabel["TelefoneLabel"] = {name: "<b>"+get_lang("Telephone")+"</b>", disabled: true}; 
     361            menuItensLabel["TelefoneValue"] = {name: data.telephone, disabled: true}; 
     362        } 
     363        if(data.vacationActive){ 
     364            if(data.vacationActive == "TRUE"){ 
     365                menuItensLabel["outOffice"] = {name: "<b>"+get_lang("Out of office")+"</b>", disabled: true}; 
     366                menuItensLabel["outOfficeValue"] = {name: data.vacationInfo.substring(0, 20), disabled: true}; 
     367            } 
     368        } 
     369        $.contextMenu({ 
     370            selector: "#content_id_"+currentTab+" "+element+" .box-info", 
     371            trigger: 'hover', 
     372            delay:100, 
     373            autoHide:true, 
     374            items: menuItensLabel 
     375        });  
     376    } 
     377 
     378    function loadGroupBox(data, element){ 
     379        menuItensLabel = {}; 
     380        menuItensLabel["ContactGroupLabelAll"] = {name:"<b>"+get_lang("Group contacts")+"</b>", disabled: true}; 
     381        menuItensLabel["sep1"] = "---------"; 
     382        if(data.itens){ 
     383                var aux = 0; 
     384                var ctcName = ""; 
     385                for(var item in data.itens){ 
     386                        if(parseInt(item) <= 4){ 
     387                                ctcName = data.itens[item].data[0].value; 
     388                                ctcName = ctcName.length > 2 ? ctcName : data.itens[item].data[2].value.substr(0,data.itens[item].data[2].value.indexOf("@")); 
     389                                menuItensLabel["ContactGroupLabel"+item] = {name: "<b>"+ctcName+"</b>", disabled: true}; 
     390                                menuItensLabel["ContactGroupValue"+item] = {name: data.itens[item].data[2].value, disabled: true}; 
     391                        }else{ 
     392                                aux++; 
     393                                if(aux == 1) 
     394                                        menuItensLabel["MoreContactGroupValue"] = {name : get_lang("And more %1 contact", aux), disabled: true }; 
     395                                else 
     396                                        menuItensLabel["MoreContactGroupValue"] = {name : get_lang("And more %1 contact", aux)+"s", disabled: true }; 
     397                        } 
     398                } 
     399        } 
     400        $.contextMenu({ 
     401                selector: "#content_id_"+currentTab+" "+element+" .box-info", 
     402                trigger: 'hover', 
     403                delay:100, 
     404                autoHide:true, 
     405                items: menuItensLabel 
     406        });      
     407    } 
     408 
     409 
     410 
     411 
     412 
Note: See TracChangeset for help on using the changeset viewer.