Changeset 7348


Ignore:
Timestamp:
10/04/12 15:45:13 (8 years ago)
Author:
thiago
Message:

Ticket #3088 - Correção do bug no submenu dos marcadores e validação.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sandbox/2.5.0-expresso1/expressoMail1_2/js/doiMenuData.js

    r7220 r7348  
    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(){ 
     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(){ 
    102106        var archive = ""; 
    103107        if(use_local_messages != 0){ 
     
    107111        } 
    108112 
    109         var menu = { 
    110             "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'); }}, 
    111             "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'); }}, 
    112             "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'); }}, 
    113             "flagUnflagged": {"name": get_lang("Mark as") + " " + get_lang('normal'), callback: function(key, opt){ proxy_mensagens.proxy_set_messages_flag('unflagged','get_selected_messages'); }}, 
    114              
    115             "sep1": "---------", 
    116             "label": { "name": get_lang("Labels"), "items": labelItems}, 
    117             "follouwpflag":{"name": get_lang("Follow up"), callback: function(key, opt){ configureFollowupflag(); } }, 
    118              
    119             "sep2": "---------", 
    120             "move": {"name": get_lang("Move to")+"...", "icon": "move", callback: function(key, opt){ wfolders.makeWindow('', 'move_to'); }}, 
    121             "remove": {"name": get_lang("Delete"),      "icon": "delete", callback: function(key, opt){ proxy_mensagens.delete_msgs('null','selected','null'); }}, 
    122             "export": {"name": get_lang("Export"),      "icon": "export", callback: function(key, opt){ proxy_mensagens.export_all_messages(); }}, 
    123             /* Airton 
    124                 TO-DO: Esse menu só deve aparecer quando a preferência de arquivamento local estiver ativada 
    125                 Como aqui dentro não dá pra fazer um if, fazer isso no início do método, passar toda essa linha para uma string e depois só colocar a variável aqui embaixo 
    126             */    
    127             "archive": archive 
    128         } 
    129  
    130  
    131         var labelItems = getLabels(); 
    132         $.contextMenu({ 
    133                 selector: ".table_box tbody tr", 
    134                 callback: function(key, options) { 
    135                         //TODO - default actions 
    136                          
    137                         /**  
    138                          * Apply labels to selected messages 
    139                          */ 
    140                         var isLabel = key.match(/label(.*)/); 
    141                         if (isLabel && isLabel.length > 1) { 
    142                                 labeledMessages(isLabel[1]); 
    143                         } 
    144                         selectAllFolderMsgs(false); 
    145                 }, 
    146                 items: menu 
    147  
    148         }); 
    149 } 
    150 /*FIM*/ 
    151 loadMenu(); 
    152  
    153 if (!expresso_offline) { 
    154         var menuToolsItems = { 
    155                 "i01": {"name": get_lang("Preferences"), "icon": "preferences-mail", callback: preferences_mail }, 
    156                 "i02": {"name": get_lang("Search"), "icon": "search-mail", callback: function(key, opt){ search_emails(""); }}, 
    157                 "103": {"name": get_lang("Edit filters"), "icon": "filter", callback: filterbox2 }, 
    158                 "i05": {"name": get_lang("Share mailbox"), "icon": "share-mailbox", callback: sharebox }, 
    159                 "i06": {"name": get_lang("Labels"), "icon": "tag", callback: configureLabels },  
    160                 "i08": {"name": get_lang("Empty trash"), "icon": "empty-trash", callback: function(key, opt){ empty_trash_imap(); }} 
    161         }; 
    162                  
    163         if(preferences.use_local_messages==1) { 
    164                 if(expresso_local_messages.is_offline_installed()) { 
    165                         menuToolsItems["i09"] = {"name": get_lang("Send from queue"), "icon": "queue", callback: force_check_queue }; 
    166                 } 
    167         } 
    168 } else { 
    169         var menuToolsItems = { 
    170                 "i01": {"name": get_lang("Search"), "icon": "search-mail", callback: function(key, opt){ search_emails(""); }} 
    171         } 
    172 } 
    173 $.contextMenu({ 
    174         selector: "#link_tools", 
    175         trigger: 'hover', 
    176         className: 'context-menu-tools', 
    177         position: function($menu, x, y){ 
    178                 $menu.$menu.position({ my: "center top", at: "center bottom", of: this, offset:"0 0"}); 
    179         }, 
    180         determinePosition: function($menu, x, y){ 
    181                 $menu.css('display', 'block').position({ my: "center top", at: "center bottom", of: this}).css('display', 'none'); 
    182         }, 
    183         delay:500, 
    184         autoHide:true, 
    185         events: { 
    186                 show: function(opt) { 
    187                         var $trigger = $(opt.selector).css({'background-color': '#ffffff', 'border': '1px solid #CCCCCC'}); 
    188                         $('.context-menu-tools.context-menu-list.context-menu-root').css({'width': $trigger.css('width') }); 
    189                         $('.context-menu-tools.context-menu-list').css({'background': '#ffffff'}) 
    190                         .find(".context-menu-item").css({'background-color': '#ffffff'}).hover( 
    191                                 function(){ 
    192                                         $(this).css({'background-color': '#CCCCCC'}); 
    193                                 },  
    194                                 function(){ 
    195                                         $(this).css({'background-color': '#ffffff'}); 
    196                                 } 
    197                         ); 
    198                         return true; 
    199                 }, 
    200                 hide: function(opt) { 
    201                         $(opt.selector).css({'background-color': '', 'border': 'none'}); 
    202                         return true; 
    203                 } 
    204         }, 
    205         callback: function(key, options) { 
    206                 //TODO - default actions 
    207  
    208         }, 
    209         items: menuToolsItems 
    210 }); 
    211 var reComplexEmail = /<([^<]*)>[\s]*$/; 
    212 $.contextMenu({ 
    213         selector: ".box", 
    214         autoHide:true, 
    215         items: { 
    216                 "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]); }}, 
    217                 "remove" : {name:get_lang("Remove recipient"), icon:"delete-box",callback: function(key, opt){ $(opt.$trigger).remove(); }}, 
    218                 "sep1": "---------", 
    219                 "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]); }}, 
    220                 "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]);}}          
    221         } 
    222 }); 
    223  
    224 function updateLabelsColumn(messageInfo) { 
    225         var msg_number = messageInfo.msg_number; 
    226         //uid é o numero da mensagem quando os dados são carregados na busca rapida. 
    227         if(messageInfo.uid != '' && messageInfo.uid != 'undefined' && messageInfo.uid != null){ 
    228                 msg_number = messageInfo.uid; 
    229         } 
    230         var msg_folder = current_folder; 
    231         if(messageInfo.boxname != '' && messageInfo.boxname != 'undefined' && messageInfo.boxname != null){ 
    232                 msg_folder = messageInfo.boxname; 
    233         } 
    234          
    235          if(current_folder == msg_folder || !current_folder){ 
    236                  $('#td_message_labels_' + msg_number +', tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number) 
    237                  .html('<img src="../prototype/modules/mail/img/tag.png">'); 
    238         }else{ 
    239                 $('tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number) 
    240                 .html('<img src="../prototype/modules/mail/img/tag.png">'); 
    241         } 
    242          
    243         var menuItems = {}; 
    244         if (messageInfo.labels) { 
    245                 if($.isArray(messageInfo.labels)){ 
    246                         var labels = messageInfo.labels; 
    247                         messageInfo.labels = {}; 
    248                         for(var i in labels) 
    249                                 messageInfo.labels[labels[i].id] = {backgroundColor: labels[i]['backgroundColor'], 
    250                                         borderColor: labels[i]['borderColor'], 
    251                                         fontColor: labels[i]['fontColor'], id: labels[i]['id'], name: labels[i]['name'],  
    252                                         uid: labels[i]['uid'] } 
    253                 }        
    254                 menuItems = messageInfo.labels; 
    255         } else { 
    256                 var labeleds = DataLayer.get('labeled', { 
    257                         criteria: {deepness: '2'}, 
    258                         filter: [ 
    259                                 'AND', 
    260                                 ['=', 'folderName', msg_folder],  
    261                                 ['=', 'messageNumber', msg_number] 
    262                         ] 
    263                          
    264                 }); 
    265                 if (labeleds) { 
    266                         for (var i=0; i < labeleds.length; i++) 
    267                                 menuItems[labeleds[i].label.id] = labeleds[i].label; 
    268                 } else { 
    269                         $('#td_message_labels_' + msg_number +', tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number) 
    270                         .html(''); 
    271                         //$.contextMenu( 'destroy', '#td_message_labels_' + msg_number +', #td_message_labels_search_' + msg_number+':first'); 
    272                         $.contextMenu( 'destroy', '#td_message_labels_' + msg_number +', tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number); 
    273                         return false; 
    274                 } 
    275         } 
    276         var menuItensLabel = {}; 
    277         for(index in menuItems){ 
    278                 menuItensLabel[index] = {type: "label", customName: menuItems[index].name, id: msg_folder+"/"+msg_number+"#"+index};             
    279         } 
    280         $.contextMenu.types.label = function(item, opt, root) { 
    281         $('<span>'+item.customName+'</span><span class="removeLabeled" title="'+get_lang("Remove Label")+'">x</span>') 
    282             .appendTo(this); 
    283                 $(this).find('span.removeLabeled').click(function(){ 
    284                         //TODO Mudar quando API abstrair atualizações no cache 
    285                         DataLayer.remove('labeled', false); 
    286                         DataLayer.get('labeled'); 
    287                         DataLayer.remove('labeled', item.id); 
    288                         DataLayer.commit(false, false, function(){ 
    289                                 updateLabelsColumn({msg_number:msg_number, boxname:msg_folder, labels:false}); 
    290                         }); 
    291                 }); 
    292         }; 
    293         if(current_folder == msg_folder || !current_folder){ 
    294                 $.contextMenu( 'destroy', '#td_message_labels_' + msg_number +', tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number); 
    295                 $.contextMenu({ 
    296                         selector: '#td_message_labels_' + msg_number +', tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number, 
    297                         trigger: 'hover', 
    298                         delay:100, 
    299                         autoHide:true, 
    300                         callback: function(key, options) { 
    301                                 //TODO - default actions 
    302                         }, 
    303                         items: menuItensLabel 
    304                 }); 
    305         }else{ 
    306                 $.contextMenu( 'destroy', 'tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number); 
    307  
    308                 $.contextMenu({ 
    309                         selector: 'tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number, 
    310                         trigger: 'hover', 
    311                         delay:100, 
    312                         autoHide:true, 
    313                         callback: function(key, options) { 
    314                                 //TODO - default actions 
    315                         }, 
    316                         items: menuItensLabel  
    317                 });      
    318         } 
    319 } 
    320  
    321 function loadExtraLDAPBox(data, element){ 
    322         menuItensLabel = {}; 
    323         menuItensLabel["Name"] = {name: "<b>"+data[0].value+"</b>", disabled: true};             
    324         menuItensLabel["Email"] = {name: data[1].value, disabled: true};         
    325         if(data[2].value){ 
    326                 menuItensLabel["TelefoneLabel"] = {name: "<b>"+get_lang("Telephone")+"</b>", disabled: true}; 
    327                 menuItensLabel["TelefoneValue"] = {name: data[2].value, disabled: true}; 
    328         } 
    329         if(data[3]){ 
    330                 if(data[3].value == "TRUE"){ 
    331                         menuItensLabel["outOffice"] = {name: "<b>"+get_lang("Out of office")+"</b>", disabled: true}; 
    332                         menuItensLabel["outOfficeValue"] = {name: data[4].value.substring(0, 20), disabled: true}; 
    333                 } 
    334         } 
    335         $.contextMenu({ 
    336                 selector: "#content_id_"+currentTab+" "+element+" .box-info", 
    337                 trigger: 'hover', 
    338                 delay:100, 
    339                 autoHide:true, 
    340                 items: menuItensLabel 
    341         });      
    342 } 
    343  
    344 function loadGroupBox(data, element){ 
    345         menuItensLabel = {}; 
    346         menuItensLabel["ContactGroupLabelAll"] = {name:"<b>"+get_lang("Group contacts")+"</b>", disabled: true}; 
    347         menuItensLabel["sep1"] = "---------"; 
    348         if(data.itens){ 
    349                 var aux = 0; 
    350                 var ctcName = ""; 
    351                 for(var item in data.itens){ 
    352                         if(parseInt(item) <= 4){ 
    353                                 ctcName = data.itens[item].data[0].value; 
    354                                 ctcName = ctcName.length > 2 ? ctcName : data.itens[item].data[2].value.substr(0,data.itens[item].data[2].value.indexOf("@")); 
    355                                 menuItensLabel["ContactGroupLabel"+item] = {name: "<b>"+ctcName+"</b>", disabled: true}; 
    356                                 menuItensLabel["ContactGroupValue"+item] = {name: data.itens[item].data[2].value, disabled: true}; 
    357                         }else{ 
    358                                 aux++; 
    359                                 if(aux == 1) 
    360                                         menuItensLabel["MoreContactGroupValue"] = {name : get_lang("And more %1 contact", aux), disabled: true }; 
    361                                 else 
    362                                         menuItensLabel["MoreContactGroupValue"] = {name : get_lang("And more %1 contact", aux)+"s", disabled: true }; 
    363                         } 
    364                 } 
    365         } 
    366         $.contextMenu({ 
    367                 selector: "#content_id_"+currentTab+" "+element+" .box-info", 
    368                 trigger: 'hover', 
    369                 delay:100, 
    370                 autoHide:true, 
    371                 items: menuItensLabel 
    372         });      
    373 } 
    374  
    375  
    376  
    377  
    378  
     113        var labelItems = getLabels(); 
     114        $.contextMenu({ 
     115                selector: ".table_box tbody tr", 
     116                callback: function(key, options) { 
     117                        //TODO - default actions 
     118                         
     119                        /**  
     120                         * Apply labels to selected messages 
     121                         */ 
     122                        var isLabel = key.match(/label(.*)/); 
     123                        if (isLabel && isLabel.length > 1) { 
     124                                labeledMessages(isLabel[1]); 
     125                        } 
     126                        selectAllFolderMsgs(false); 
     127                }, 
     128                items: {"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'); }}, 
     129                "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'); }}, 
     130                "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'); }}, 
     131                "flagUnflagged": {"name": get_lang("Mark as") + " " + get_lang('normal'), callback: function(key, opt){ proxy_mensagens.proxy_set_messages_flag('unflagged','get_selected_messages'); }}, 
     132                 
     133                "sep1": "---------", 
     134                "label": { "name": get_lang("Labels"), "items": labelItems}, 
     135                "follouwpflag":{"name": get_lang("Follow up"), callback: function(key, opt){ configureFollowupflag(); } }, 
     136                 
     137                "sep2": "---------", 
     138                "move": {"name": get_lang("Move to")+"...", "icon": "move", callback: function(key, opt){ wfolders.makeWindow('', 'move_to'); }}, 
     139                "remove": {"name": get_lang("Delete"),      "icon": "delete", callback: function(key, opt){ proxy_mensagens.delete_msgs('null','selected','null'); }}, 
     140                "export": {"name": get_lang("Export"),      "icon": "export", callback: function(key, opt){ proxy_mensagens.export_all_messages(); }}, 
     141                /* Airton 
     142                    TO-DO: Esse menu só deve aparecer quando a preferência de arquivamento local estiver ativada 
     143                    Como aqui dentro não dá pra fazer um if, fazer isso no início do método, passar toda essa linha para uma string e depois só colocar a variável aqui embaixo 
     144                */    
     145                "archive": archive} 
     146 
     147        }); 
     148    } 
     149    /*FIM*/ 
     150    loadMenu(); 
     151 
     152    if (!expresso_offline) { 
     153        var menuToolsItems = { 
     154                "i01": {"name": get_lang("Preferences"), "icon": "preferences-mail", callback: preferences_mail }, 
     155                "i02": {"name": get_lang("Search"), "icon": "search-mail", callback: function(key, opt){ search_emails(""); }}, 
     156                "103": {"name": get_lang("Edit filters"), "icon": "filter", callback: filterbox2 }, 
     157                "i05": {"name": get_lang("Share mailbox"), "icon": "share-mailbox", callback: sharebox }, 
     158                "i06": {"name": get_lang("Labels"), "icon": "tag", callback: configureLabels },  
     159                "i08": {"name": get_lang("Empty trash"), "icon": "empty-trash", callback: function(key, opt){ empty_trash_imap(); }} 
     160        }; 
     161                 
     162        if(preferences.use_local_messages==1) { 
     163                if(expresso_local_messages.is_offline_installed()) { 
     164                        menuToolsItems["i09"] = {"name": get_lang("Send from queue"), "icon": "queue", callback: force_check_queue }; 
     165                } 
     166        } 
     167    } else { 
     168        var menuToolsItems = { 
     169                "i01": {"name": get_lang("Search"), "icon": "search-mail", callback: function(key, opt){ search_emails(""); }} 
     170        } 
     171    } 
     172    $.contextMenu({ 
     173        selector: "#link_tools", 
     174        trigger: 'hover', 
     175        className: 'context-menu-tools', 
     176        position: function($menu, x, y){ 
     177                $menu.$menu.position({ my: "center top", at: "center bottom", of: this, offset:"0 0"}); 
     178        }, 
     179        determinePosition: function($menu, x, y){ 
     180                $menu.css('display', 'block').position({ my: "center top", at: "center bottom", of: this}).css('display', 'none'); 
     181        }, 
     182        delay:500, 
     183        autoHide:true, 
     184        events: { 
     185                show: function(opt) { 
     186                        var $trigger = $(opt.selector).css({'background-color': '#ffffff', 'border': '1px solid #CCCCCC'}); 
     187                        $('.context-menu-tools.context-menu-list.context-menu-root').css({'width': $trigger.css('width') }); 
     188                        $('.context-menu-tools.context-menu-list').css({'background': '#ffffff'}) 
     189                        .find(".context-menu-item").css({'background-color': '#ffffff'}).hover( 
     190                                function(){ 
     191                                        $(this).css({'background-color': '#CCCCCC'}); 
     192                                },  
     193                                function(){ 
     194                                        $(this).css({'background-color': '#ffffff'}); 
     195                                } 
     196                        ); 
     197                        return true; 
     198                }, 
     199                hide: function(opt) { 
     200                        $(opt.selector).css({'background-color': '', 'border': 'none'}); 
     201                        return true; 
     202                } 
     203        }, 
     204        callback: function(key, options) { 
     205                //TODO - default actions 
     206 
     207        }, 
     208        items: menuToolsItems 
     209    }); 
     210    var reComplexEmail = /<([^<]*)>[\s]*$/; 
     211    $.contextMenu({ 
     212        selector: ".box", 
     213        autoHide:true, 
     214        items: { 
     215                "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]); }}, 
     216                "remove" : {name:get_lang("Remove recipient"), icon:"delete-box",callback: function(key, opt){ $(opt.$trigger).remove(); }}, 
     217                "sep1": "---------", 
     218                "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]); }}, 
     219                "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]);}}          
     220        } 
     221    }); 
     222 
     223    function updateLabelsColumn(messageInfo) { 
     224        var msg_number = messageInfo.msg_number; 
     225        //uid é o numero da mensagem quando os dados são carregados na busca rapida. 
     226        if(messageInfo.uid != '' && messageInfo.uid != 'undefined' && messageInfo.uid != null){ 
     227                msg_number = messageInfo.uid; 
     228        } 
     229        var msg_folder = current_folder; 
     230        if(messageInfo.boxname != '' && messageInfo.boxname != 'undefined' && messageInfo.boxname != null){ 
     231                msg_folder = messageInfo.boxname; 
     232        } 
     233         
     234         if(current_folder == msg_folder || !current_folder){ 
     235                 $('#td_message_labels_' + msg_number +', tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number) 
     236                 .html('<img src="../prototype/modules/mail/img/tag.png">'); 
     237        }else{ 
     238                $('tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number) 
     239                .html('<img src="../prototype/modules/mail/img/tag.png">'); 
     240        } 
     241         
     242        var menuItems = {}; 
     243        if (messageInfo.labels) { 
     244                if($.isArray(messageInfo.labels)){ 
     245                        var labels = messageInfo.labels; 
     246                        messageInfo.labels = {}; 
     247                        for(var i in labels) 
     248                                messageInfo.labels[labels[i].id] = {backgroundColor: labels[i]['backgroundColor'], 
     249                                        borderColor: labels[i]['borderColor'], 
     250                                        fontColor: labels[i]['fontColor'], id: labels[i]['id'], name: labels[i]['name'],  
     251                                        uid: labels[i]['uid'] } 
     252                }        
     253                menuItems = messageInfo.labels; 
     254        } else { 
     255                var labeleds = DataLayer.get('labeled', { 
     256                        criteria: {deepness: '2'}, 
     257                        filter: [ 
     258                                'AND', 
     259                                ['=', 'folderName', msg_folder],  
     260                                ['=', 'messageNumber', msg_number] 
     261                        ] 
     262                         
     263                }); 
     264                if (labeleds) { 
     265                        for (var i=0; i < labeleds.length; i++) 
     266                                menuItems[labeleds[i].label.id] = labeleds[i].label; 
     267                } else { 
     268                        $('#td_message_labels_' + msg_number +', tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number) 
     269                        .html(''); 
     270                        //$.contextMenu( 'destroy', '#td_message_labels_' + msg_number +', #td_message_labels_search_' + msg_number+':first'); 
     271                        $.contextMenu( 'destroy', '#td_message_labels_' + msg_number +', tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number); 
     272                        return false; 
     273                } 
     274        } 
     275        var menuItensLabel = {}; 
     276        for(index in menuItems){ 
     277                menuItensLabel[index] = {type: "label", customName: menuItems[index].name, id: msg_folder+"/"+msg_number+"#"+index};             
     278        } 
     279        $.contextMenu.types.label = function(item, opt, root) { 
     280            $('<span>'+item.customName+'</span><span class="removeLabeled" title="'+get_lang("Remove Label")+'">x</span>') 
     281                .appendTo(this); 
     282                $(this).find('span.removeLabeled').click(function(){ 
     283                        //TODO Mudar quando API abstrair atualizações no cache 
     284                        DataLayer.remove('labeled', false); 
     285                        DataLayer.get('labeled'); 
     286                        DataLayer.remove('labeled', item.id); 
     287                        DataLayer.commit(false, false, function(){ 
     288                                updateLabelsColumn({msg_number:msg_number, boxname:msg_folder, labels:false}); 
     289                        }); 
     290                }); 
     291        }; 
     292        if(current_folder == msg_folder || !current_folder){ 
     293                $.contextMenu( 'destroy', '#td_message_labels_' + msg_number +', tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number); 
     294                $.contextMenu({ 
     295                        selector: '#td_message_labels_' + msg_number +', tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number, 
     296                        trigger: 'hover', 
     297                        delay:100, 
     298                        autoHide:true, 
     299                        callback: function(key, options) { 
     300                                //TODO - default actions 
     301                        }, 
     302                        items: menuItensLabel 
     303                }); 
     304        }else{ 
     305                $.contextMenu( 'destroy', 'tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number); 
     306 
     307                $.contextMenu({ 
     308                        selector: 'tr[role="'+msg_number+'_'+msg_folder+'"] #td_message_labels_search_' + msg_number, 
     309                        trigger: 'hover', 
     310                        delay:100, 
     311                        autoHide:true, 
     312                        callback: function(key, options) { 
     313                                //TODO - default actions 
     314                        }, 
     315                        items: menuItensLabel  
     316                });      
     317        } 
     318    } 
     319 
     320    function loadExtraLDAPBox(data, element){ 
     321        menuItensLabel = {}; 
     322        menuItensLabel["Name"] = {name: "<b>"+data[0].value+"</b>", disabled: true};             
     323        menuItensLabel["Email"] = {name: data[1].value, disabled: true};         
     324        if(data[2].value){ 
     325                menuItensLabel["TelefoneLabel"] = {name: "<b>"+get_lang("Telephone")+"</b>", disabled: true}; 
     326                menuItensLabel["TelefoneValue"] = {name: data[2].value, disabled: true}; 
     327        } 
     328        if(data[3]){ 
     329                if(data[3].value == "TRUE"){ 
     330                        menuItensLabel["outOffice"] = {name: "<b>"+get_lang("Out of office")+"</b>", disabled: true}; 
     331                        menuItensLabel["outOfficeValue"] = {name: data[4].value.substring(0, 20), disabled: true}; 
     332                } 
     333        } 
     334        $.contextMenu({ 
     335                selector: "#content_id_"+currentTab+" "+element+" .box-info", 
     336                trigger: 'hover', 
     337                delay:100, 
     338                autoHide:true, 
     339                items: menuItensLabel 
     340        });      
     341    } 
     342 
     343    function loadGroupBox(data, element){ 
     344        menuItensLabel = {}; 
     345        menuItensLabel["ContactGroupLabelAll"] = {name:"<b>"+get_lang("Group contacts")+"</b>", disabled: true}; 
     346        menuItensLabel["sep1"] = "---------"; 
     347        if(data.itens){ 
     348                var aux = 0; 
     349                var ctcName = ""; 
     350                for(var item in data.itens){ 
     351                        if(parseInt(item) <= 4){ 
     352                                ctcName = data.itens[item].data[0].value; 
     353                                ctcName = ctcName.length > 2 ? ctcName : data.itens[item].data[2].value.substr(0,data.itens[item].data[2].value.indexOf("@")); 
     354                                menuItensLabel["ContactGroupLabel"+item] = {name: "<b>"+ctcName+"</b>", disabled: true}; 
     355                                menuItensLabel["ContactGroupValue"+item] = {name: data.itens[item].data[2].value, disabled: true}; 
     356                        }else{ 
     357                                aux++; 
     358                                if(aux == 1) 
     359                                        menuItensLabel["MoreContactGroupValue"] = {name : get_lang("And more %1 contact", aux), disabled: true }; 
     360                                else 
     361                                        menuItensLabel["MoreContactGroupValue"] = {name : get_lang("And more %1 contact", aux)+"s", disabled: true }; 
     362                        } 
     363                } 
     364        } 
     365        $.contextMenu({ 
     366                selector: "#content_id_"+currentTab+" "+element+" .box-info", 
     367                trigger: 'hover', 
     368                delay:100, 
     369                autoHide:true, 
     370                items: menuItensLabel 
     371        });      
     372    } 
     373 
     374 
     375 
     376 
     377 
Note: See TracChangeset for help on using the changeset viewer.