Changeset 7348 for sandbox/2.5.0-expresso1/expressoMail1_2/js
- Timestamp:
- 10/04/12 15:45:13 (12 years ago)
- 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(){ 102 106 var archive = ""; 103 107 if(use_local_messages != 0){ … … 107 111 } 108 112 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.