Changeset 7414 for trunk/expressoMail1_2/js/doiMenuData.js
- Timestamp:
- 10/11/12 18:14:36 (12 years ago)
- 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.