[ Index ] |
PHP Cross Reference of vtigercrm-6.1.0 |
[Summary view] [Print] [Text view]
1 /*+********************************************************************************** 2 * The contents of this file are subject to the vtiger CRM Public License Version 1.1 3 * ("License"); You may not use this file except in compliance with the License 4 * The Original Code is: vtiger CRM Open Source 5 * The Initial Developer of the Original Code is vtiger. 6 * Portions created by vtiger are Copyright (C) vtiger. 7 * All Rights Reserved. 8 ************************************************************************************/ 9 10 Vtiger_Header_Js.extend('MailManager_QuickCreate_Js', { 11 foldersClicked : false 12 }, { 13 14 registerQuickCreatePostLoadEvents: function(form, params) { 15 var thisInstance = this; 16 form.find('#goToFullForm').remove(); 17 18 form.on('click','.cancelLink',function() { 19 MailManager.resetLinkToDropDown(); 20 }); 21 22 form.on('submit', function(e){ 23 var invalidFields = form.data('jqv').InvalidFields; 24 25 if (invalidFields.length > 0) { 26 //If validation fails, form should submit again 27 form.removeData('submit'); 28 form.closest('#globalmodal').find('.modal-header h3').progressIndicator({ 29 'mode': 'hide' 30 }); 31 e.preventDefault(); 32 return; 33 } 34 var recordPreSaveEvent = jQuery.Event(Vtiger_Edit_Js.recordPreSave); 35 form.trigger(recordPreSaveEvent, {'value': 'edit', 'module': form.find('[name="module"]').val()}); 36 if (!(recordPreSaveEvent.isDefaultPrevented())) { 37 MailManager.mail_associate_create(form, jQuery('form[name="relationship"]')); 38 } 39 e.preventDefault(); 40 }); 41 thisInstance.registerTabEventsInQuickCreate(form); 42 } 43 }); 44 45 if (typeof(MailManager) == 'undefined') { 46 47 // Legacy classes used 48 if (typeof VtigerJS_DialogBox == 'undefined') { 49 VtigerJS_DialogBox = { 50 block: function() { }, 51 unblock: function() { } 52 } 53 } 54 if (typeof Form == 'undefined') { 55 Form = { 56 serialize: function(form) { 57 return jQuery(form).serialize(); 58 } 59 } 60 } 61 62 /* 63 * Namespaced javascript class for MailManager 64 */ 65 MailManager = { 66 67 MailManagerUploadLimit : 6, 68 69 /* 70 * Utility function 71 * Usage: 72 * var output = MailManager.sprintf("String format %s, Number format %s", "VALUE", 10); 73 */ 74 sprintf: function(){ 75 var printString = arguments[0]; 76 for (var i = 1; i < arguments.length; ++i) { 77 // Replace any %s, %d, %c with the variables. 78 // TODO Format the argument w.r.t to format specifier 79 printString = printString.replace(/%[a-z]+/, arguments[i]); 80 } 81 return printString; 82 }, 83 84 /* Show error message */ 85 show_error: function(message){ 86 var errordiv = jQuery('#_messagediv_'); 87 88 if (message == '') { 89 errordiv.text('').hide(); 90 } else { 91 errordiv.html('<p>' + message + '</p>').css('display','block').addClass('mm_error').removeClass('mm_message'); 92 MailManager.placeAtCenter(errordiv); 93 } 94 MailManager.hide_error(); 95 }, 96 97 hide_error: function() { 98 setTimeout( function() { 99 jQuery('#_messagediv_').hide(); 100 }, 5000); 101 }, 102 103 show_message: function(message){ 104 var errordiv = jQuery('#_messagediv_'); 105 if (message == '') { 106 errordiv.text('').hide(); 107 } else { 108 errordiv.html('<p>' + message + '</p>').css('display','block').removeClass('mm_error').addClass('mm_message'); 109 MailManager.placeAtCenter(errordiv); 110 } 111 MailManager.hide_error(); 112 }, 113 114 /* Base url for any ajax actions */ 115 _baseurl: function(){ 116 return "index.php?module=MailManager&view=Index&"; 117 }, 118 119 /* Translation support */ 120 i18n: function(key){ 121 return app.vtranslate(key); 122 }, 123 124 /* Build the main ui */ 125 mainui: function(){ 126 var isMailBoxExists = jQuery('#isMailBoxExists').val(); 127 if (isMailBoxExists == 1) { 128 MailManager.openCurrentFolder(); 129 } 130 setTimeout(function() { 131 if (isMailBoxExists == 1) { 132 jQuery("#_folderprogress_").show(); 133 MailManager.mail_open_meta = {}; 134 if (MailManager.mail_reply_rteinstance) { 135 MailManager.mail_reply_rteinstance.destroy(); 136 MailManager.mail_reply_rteinstance = false; 137 } 138 var message = app.vtranslate('JSLBL_Loading_Please_Wait')+' ....'; 139 var progressIndicatorElement = jQuery.progressIndicator({ 140 'message' : message, 141 'position' : 'html', 142 'blockInfo' : { 143 'enabled' : true 144 } 145 }); 146 } 147 AppConnector.request(MailManager._baseurl() + "_operation=mainui").then(function(response) { 148 //var response = MailManager.removeHidElement(transport.responseText); 149 response = JSON.parse(response); 150 MailManager._mainui_callback(response); 151 if (isMailBoxExists == 1) { 152 progressIndicatorElement.progressIndicator({ 153 'mode' : 'hide' 154 }) 155 jQuery("#_folderprogress_").hide(); 156 var timeOut = jQuery("#refresh_timeout").val(); 157 if(timeOut != "" && timeOut !=0) { 158 setInterval(MailManager.updateMailFolders, timeOut); 159 } 160 // Update the seleted folders to highlight them. 161 jQuery('.defaultContainer').addClass('show'); 162 jQuery('.defaultContainer').removeClass('hide'); 163 } else { 164 jQuery('.defaultContainer').addClass('hide'); 165 jQuery('.defaultContainer').removeClass('show'); 166 } 167 var folderName = jQuery('#mm_selected_folder').val(); 168 MailManager.updateSelectedFolder(folderName); 169 }); 170 }, 400); 171 }, 172 173 openCurrentFolder : function() { 174 if(jQuery("#mailbox_folder")) { 175 var currentFolder = jQuery("#mailbox_folder").val(); 176 // This is added as we will be settings mailbox_folder with the current selected folder. 177 // By this time we would have lost the last mailbox folder also 178 if(currentFolder == 'mm_drafts') currentFolder = 'INBOX'; 179 180 if(currentFolder) { 181 MailManager.folder_open(currentFolder); 182 }else { 183 MailManager.folder_open('INBOX'); 184 } 185 } else { 186 MailManager.folder_open('INBOX'); 187 } 188 }, 189 190 updateMailFolders : function() { 191 AppConnector.request(MailManager._baseurl() + "_operation=mainui").then(function(response) { 192 //var response = MailManager.removeHidElement(transport.responseText); 193 response = JSON.parse(response); 194 jQuery('#_mainfolderdiv_').html(response['result']['ui']); 195 MailManager.refreshCurrentFolder(); // this is used to refresh the mails in the folders 196 197 var folderName = jQuery('#mm_selected_folder').val(); 198 MailManager.updateSelectedFolder(folderName); 199 200 MailManager.triggerUI5Resize(); 201 } 202 ); 203 }, 204 205 quicklinks_update: function() { 206 AppConnector.request(MailManager._baseurl() + "_operation=mainui&_operationarg=_quicklinks").then(function(response) { 207 //var response = MailManager.removeHidElement(transport.responseText); 208 response = JSON.parse(response); 209 jQuery("#_quicklinks_mainuidiv_").html(response['result']['ui']); 210 } 211 ); 212 }, 213 214 showSelectFolderDesc: function() { 215 jQuery(".selectFolderValue").addClass('hide'); 216 jQuery(".selectFolderDesc").show(); 217 jQuery(".selectFolderDesc").removeClass('hide'); 218 }, 219 220 /* Intermedidate call back to build main ui */ 221 _mainui_callback: function(responseJSON){ 222 jQuery('#_mainfolderdiv_').html(responseJSON['result']['ui']); 223 224 if (!responseJSON['result']['mailbox']) { 225 MailManager.open_settings_detail(); 226 } 227 228 MailManager.triggerUI5Resize(); 229 }, 230 231 232 moveMail : function(element) { 233 234 function execute() { 235 var temp = new Array(); 236 237 function getCheckedMails() { 238 var cb_elements = jQuery('[name="mc_box"]'); 239 240 for (var i = 0; i < cb_elements.length; i++) { 241 if (cb_elements[i].checked) { 242 temp.push(cb_elements[i].value); 243 } 244 } 245 } 246 247 function validate() { 248 getCheckedMails(); // Check the selected mails 249 if(temp.length < 1) { 250 alert(app.vtranslate('JSLBL_PLEASE_SELECT_ATLEAST_ONE_MAIL')); 251 MailManager.resetFolderDropDown(); 252 return false; 253 } 254 return true; 255 } 256 257 function callbackFunction(response) { 258 for(var i = 0; i<temp.length; i++){ 259 jQuery("#_mailrow_"+temp[i]).fadeOut(1500,function() { 260 jQuery("#_mailrow_"+temp[i]).remove(); 261 }); 262 } 263 } 264 265 if(validate()) { 266 var message = app.vtranslate('JSLBL_MOVING')+' ....'; 267 var progressIndicatorElement = jQuery.progressIndicator({ 268 'message' : message, 269 'position' : 'html', 270 'blockInfo' : { 271 'enabled' : true 272 } 273 }); 274 VtigerJS_DialogBox.block(); 275 var moveToFolderName = jQuery("#moveFolderList").val(); 276 var currentFolderName = jQuery("#mailbox_folder").val(); 277 var params = { 278 '_operation': 'mail', 279 '_operationarg' : 'move', 280 '_msgno' : encodeURIComponent(temp), 281 '_folder' : encodeURIComponent(currentFolderName), 282 '_moveFolder' : moveToFolderName.replace('�','') 283 }; 284 MailManager.Request(MailManager._baseurl() , params, callbackFunction).then( function () { 285 MailManager.folder_open(currentFolderName); 286 progressIndicatorElement.progressIndicator({ 287 'mode' : 'hide' 288 }) 289 alert(app.vtranslate('JSLBL_MAIL_MOVED')); 290 }); 291 } 292 } 293 execute(); 294 }, 295 296 /* Refresh the main ui */ 297 reload_now: function(){ 298 MailManager.mainui(); 299 }, 300 301 /* Close all the div */ 302 close_all: function(){ 303 if (jQuery('#_contentdiv_')) jQuery('#_contentdiv_').hide(); 304 if (jQuery('#_contentdiv2_')) jQuery('#_contentdiv2_').hide(); 305 if (jQuery('#_messagediv_')) jQuery('#_messagediv_').hide(); 306 if (jQuery('#_settingsdiv_')) jQuery('#_settingsdiv_').hide(); 307 if (jQuery('#_replydiv_')) jQuery('#_replydiv_').hide(); 308 }, 309 310 /* Open settings page */ 311 open_settings: function(){ 312 var message = app.vtranslate('JSLBL_Settings')+' ....'; 313 var progressIndicatorElement = jQuery.progressIndicator({ 314 'message' : message, 315 'position' : 'html', 316 'blockInfo' : { 317 'enabled' : true 318 } 319 }); 320 AppConnector.request(MailManager._baseurl() + "_operation=settings&_operationarg=edit").then(function(response) { 321 response = JSON.parse(response); 322 progressIndicatorElement.progressIndicator({ 323 'mode' : 'hide' 324 }) 325 MailManager.close_all(); 326 jQuery('#_settingsdiv_').show(); 327 //var response = MailManager.removeHidElement(transport.responseText); 328 jQuery('#_settingsdiv_').html(response.result); 329 330 // Update the seleted folders to highlight them. 331 MailManager.updateSelectedFolder('mm_settings'); 332 jQuery('#mm_selected_folder').val('mm_settings'); 333 334 MailManager.triggerUI5Resize(); 335 } 336 ); 337 }, 338 339 /* Open settings detail page */ 340 open_settings_detail: function(){ 341 var message = app.vtranslate('JSLBL_Settings')+' ....'; 342 var progressIndicatorElement = jQuery.progressIndicator({ 343 'message' : message, 344 'position' : 'html', 345 'blockInfo' : { 346 'enabled' : true 347 } 348 }); 349 AppConnector.request(MailManager._baseurl() + "_operation=settings&_operationarg=detail").then(function(response) { 350 response = JSON.parse(response); 351 progressIndicatorElement.progressIndicator({ 352 'mode' : 'hide' 353 }) 354 MailManager.close_all(); 355 jQuery('#_settingsdiv_').show(); 356 //var response = MailManager.removeHidElement(transport.responseText); 357 jQuery('#_settingsdiv_').html(response.result); 358 359 // Update the seleted folders to highlight them. 360 MailManager.updateSelectedFolder('mm_settings'); 361 jQuery('#mm_selected_folder').val('mm_settings'); 362 363 MailManager.triggerUI5Resize(); 364 } 365 ); 366 }, 367 368 handle_settings_confighelper: function(selectBox){ 369 var form = selectBox.form; 370 371 var useServer = '', useProtocol = '', useSSLType = '', useCert = ''; 372 if (selectBox.value == 'gmail' || selectBox.value == 'yahoo') { 373 useServer = 'imap.gmail.com'; 374 if(selectBox.value == 'yahoo') { 375 useServer = 'imap.mail.yahoo.com'; 376 } 377 useProtocol = 'IMAP4'; 378 useSSLType = 'ssl'; 379 useCert = 'novalidate-cert'; 380 jQuery('.settings_details').show(); 381 jQuery('.additional_settings').hide(); 382 } else if (selectBox.value == 'fastmail') { 383 useServer = 'mail.messagingengine.com'; 384 useProtocol = 'IMAP2'; 385 useSSLType = 'tls'; 386 useCert = 'novalidate-cert'; 387 jQuery('.settings_details').show(); 388 jQuery('.additional_settings').hide(); 389 } else if (selectBox.value == 'other') { 390 useServer = ''; 391 useProtocol = 'IMAP4'; 392 useSSLType = 'ssl'; 393 useCert = 'novalidate-cert'; 394 jQuery('.settings_details').show(); 395 jQuery('.additional_settings').show(); 396 } else { 397 jQuery('.settings_details').hide(); 398 } 399 jQuery('.refresh_settings').show(); 400 // Clear the User Name and Password field 401 jQuery('#_mbox_user').val(''); 402 jQuery('#_mbox_pwd').val(''); 403 404 if (useProtocol != '') { 405 form._mbox_server.value = useServer; 406 407 jQuery(form._mbox_protocol).each(function(node){ 408 node.checked = (node.value == useProtocol); 409 }); 410 jQuery(form._mbox_ssltype).each(function(node){ 411 node.checked = (node.value == useSSLType); 412 }); 413 jQuery(form._mbox_certvalidate).each(function(node){ 414 node.checked = (node.value == useCert); 415 }); 416 } 417 }, 418 419 /* Save the settings */ 420 save_settings: function(form){ 421 if(form._mbox_server.value == "") { 422 alert(app.vtranslate('JSLBL_SERVERNAME_CANNOT_BE_EMPTY')); 423 return false; 424 } 425 if(form._mbox_user.value == "") { 426 alert(app.vtranslate('JSLBL_USERNAME_CANNOT_BE_EMPTY')); 427 return false; 428 } 429 if(form._mbox_pwd.value == "") { 430 alert(app.vtranslate('JSLBL_PASSWORD_CANNOT_BE_EMPTY')); 431 return false; 432 } 433 var message = app.vtranslate('JSLBL_Saving_And_Verifying')+' ....'; 434 var progressIndicatorElement = jQuery.progressIndicator({ 435 'message' : message, 436 'position' : 'html', 437 'blockInfo' : { 438 'enabled' : true 439 } 440 }); 441 var url = MailManager._baseurl() + "_operation=settings&_operationarg=save&" + Form.serialize(form); 442 AppConnector.request(url).then(function(data) { 443 data = JSON.parse(data); 444 progressIndicatorElement.progressIndicator({ 445 'mode' : 'hide' 446 }) 447 //var response = MailManager.removeHidElement(transport.responseText); 448 //var responseJSON = JSON.parse(response); 449 if (data['success']) { 450 jQuery('#isMailBoxExists').val(1); 451 jQuery('#folders').find(':last-child').remove(); 452 MailManager_QuickCreate_Js.foldersClicked = false; 453 var imageEle = jQuery('.imageElement'); 454 var imagePath = imageEle.data('rightimage'); 455 imageEle.attr('src', imagePath); 456 MailManager.mainui(); 457 } else { 458 alert(app.vtranslate(data['error']['message'])); 459 } 460 } 461 ); 462 }, 463 464 /* Remove the settings */ 465 remove_settings: function(form){ 466 var message = app.vtranslate('JSLBL_Removing')+' ....'; 467 var progressIndicatorElement = jQuery.progressIndicator({ 468 'message' : message, 469 'position' : 'html', 470 'blockInfo' : { 471 'enabled' : true 472 } 473 }); 474 AppConnector.request(MailManager._baseurl() + "_operation=settings&_operationarg=remove&" + Form.serialize(form)).then(function(responseJSON) { 475 responseJSON = JSON.parse(responseJSON); 476 progressIndicatorElement.progressIndicator({ 477 'mode' : 'hide' 478 }) 479 MailManager.close_all(); 480 jQuery('#folders').find(':last-child').remove(); 481 jQuery('#isMailBoxExists').val(0); 482 MailManager_QuickCreate_Js.foldersClicked = false; 483 var imageEle = jQuery('.imageElement'); 484 var imagePath = imageEle.data('rightimage'); 485 imageEle.attr('src', imagePath); 486 jQuery('#quickLinksInfo').html(''); 487 if (responseJSON['success']) { 488 MailManager.reload_now(); 489 } else { 490 alert(app.vtranslate(data['error']['message'])); 491 } 492 } 493 ); 494 }, 495 496 /* Close the settings */ 497 close_settings: function(){ 498 MailManager.close_all(); 499 jQuery('#_contentdiv_').show(); 500 501 // Toggle highlighting previous folder and current folder selection 502 var folderName = jQuery('#mailbox_folder').val(); 503 MailManager.updateSelectedFolder(folderName); 504 jQuery('#mm_selected_folder').val(folderName); 505 }, 506 507 /* Open the folder listing */ 508 folder_open: function(name, page){ 509 if (typeof(page) == 'undefined') 510 page = 0; 511 512 var query = ""; 513 // Consider search string too 514 if(jQuery('#search_txt').val()) { 515 query = "&q=" +encodeURIComponent(jQuery('#search_txt').val()); 516 } 517 if(jQuery('#search_type').val()) { 518 query += "&type=" + encodeURIComponent(jQuery('#search_type').val()); 519 } 520 var message = app.vtranslate('JSLBL_Loading')+' ' + name + ' ...'; 521 var progressIndicatorElement = jQuery.progressIndicator({ 522 'message' : message, 523 'position' : 'html', 524 'blockInfo' : { 525 'enabled' : true 526 } 527 }); 528 AppConnector.request(MailManager._baseurl() + "_operation=folder&_operationarg=open&_folder=" + encodeURIComponent(name) + 529 "&_page=" + encodeURIComponent(page) + query).then(function(response) { 530 response = JSON.parse(response); 531 progressIndicatorElement.progressIndicator({ 532 'mode' : 'hide' 533 }) 534 535 // Toggle highlighting previous folder and current folder selection 536 MailManager.updateSelectedFolder(name); 537 538 // Update the selected MailBox folder name 539 jQuery('#mailbox_folder').val(name); 540 541 // Update the current selected folder, which will be used to highlight the selected folder 542 jQuery('#mm_selected_folder').val(name); 543 544 MailManager.mail_close(); 545 //var response = MailManager.removeHidElement(transport.responseText); 546 jQuery('#_contentdiv_').html(response.result); 547 548 // Clear last open mail 549 jQuery('#_contentdiv2_').html(''); 550 551 // Updates the drop down used for move emails 552 MailManager.updateMoveFolderList(); 553 554 // Bind "Enter" key for search on the Search text box 555 MailManager.bindEnterKeyForSearch(); 556 var type = jQuery('#search_type').val(); 557 var dateformat = jQuery('#jscal_dateformat').val(); 558 var element = jQuery('#search_txt'); 559 if(type == 'ON') { 560 if(element.length != 0) { 561 element.closest('div').addClass('date') 562 element.addClass('dateField').attr('data-date-format', dateformat); 563 element.after(" <span class='add-on'><i class='icon-calendar'></i></span>"); 564 app.registerEventForDatePickerFields(element, true); 565 } 566 }else { 567 element.closest('div').removeClass('date'); 568 element.removeClass('dateField').removeAttr('data-date-format'); 569 element.unbind('focus'); 570 element.next().remove("span.add-on"); 571 jQuery('#jscal_trigger_fval').hide(); 572 } 573 MailManager.triggerUI5Resize(); 574 } 575 ); 576 }, 577 578 updateSelectedFolder : function(currentSelectedFolder) { 579 var prevFolderName = jQuery('#mm_selected_folder').val(); 580 if (jQuery('[id="_mailfolder_' + prevFolderName +'"]') && prevFolderName != currentSelectedFolder) { 581 jQuery('[id="_mailfolder_' + prevFolderName +'"]').removeClass('mm_folder_selected'); 582 jQuery('[id="_mailfolder_' + prevFolderName +'"]').parent().removeClass('mm_folder_selected_background'); 583 } 584 jQuery('[id="_mailfolder_'+ currentSelectedFolder +'"]').addClass('mm_folder_selected'); 585 jQuery('[id="_mailfolder_'+ currentSelectedFolder +'"]').parent().addClass('mm_folder_selected_background'); 586 }, 587 588 bindEnterKeyForSearch : function() { 589 jQuery("#search_txt").keyup(function (event) { 590 if(event.keyCode == 13){ 591 jQuery("#mm_search").click(); 592 } 593 }); 594 }, 595 596 updateMoveFolderList : function() { 597 if(jQuery('#mailbox_folder') && jQuery('#moveFolderList')) { 598 var currentFolder = jQuery('#mailbox_folder').val(); 599 jQuery('#moveFolderList').find("option[value='"+currentFolder+"']").remove(); 600 601 } 602 }, 603 604 refreshCurrentFolder: function(){ 605 var selectedFolder = jQuery('#mm_selected_folder').val(); 606 var currentFolderName = jQuery("#mailbox_folder").val(); 607 608 //check if the mail is open 609 var mail = jQuery('#_contentdiv2_').css('display'); 610 if(selectedFolder == currentFolderName && currentFolderName !='mm_drafts' && mail != 'block') { 611 MailManager.folder_open(currentFolderName, 0); 612 } 613 }, 614 615 /* Update count of unread mails on folder */ 616 folder_updateCount: function(folder, count){ 617 if (jQuery('#_mailfolder_' + folder)) { 618 if (count) { 619 jQuery('#_mailfolder_' + folder).addClass('mm_folder_selected').html(MailManager.sprintf("<b>%s (%s)</b>", folder, count)); 620 } else { 621 jQuery('#_mailfolder_' + folder).addClass('mm_folder_selected').html(MailManager.sprintf("%s", folder)); 622 } 623 } 624 }, 625 626 /* Basic search for folder emails */ 627 search_basic: function(form){ 628 var frmparams = Form.serialize(form); 629 630 var message = app.vtranslate('JSLBL_Searching')+' ...'; 631 var progressIndicatorElement = jQuery.progressIndicator({ 632 'message' : message, 633 'position' : 'html', 634 'blockInfo' : { 635 'enabled' : true 636 } 637 }); 638 AppConnector.request(MailManager._baseurl() + "_operation=folder&_operationarg=open&" + frmparams).then(function(response) { 639 response = JSON.parse(response); 640 progressIndicatorElement.progressIndicator({ 641 'mode' : 'hide' 642 }) 643 644 MailManager.mail_close(); 645 //var response = MailManager.removeHidElement(transport.responseText); 646 jQuery('#_contentdiv_').html(response.result); 647 648 MailManager.triggerUI5Resize(); 649 } 650 ); 651 652 return false; 653 }, 654 655 // Meta information of currently opened mail 656 mail_open_meta: {}, 657 658 /* Open email */ 659 mail_open: function(folder, msgno){ 660 661 var message = app.vtranslate('JSLBL_Opening')+' ...'; 662 var progressIndicatorElement = jQuery.progressIndicator({ 663 'message' : message, 664 'position' : 'html', 665 'blockInfo' : { 666 'enabled' : true 667 } 668 }); 669 jQuery('#_mailrow_' + msgno).removeClass('fontBold'); 670 jQuery('#_mailrow_' + msgno).addClass('mm_normal'); 671 672 AppConnector.request(MailManager._baseurl() + "_operation=mail&_operationarg=open&_folder=" + encodeURIComponent(folder) + "&_msgno=" + encodeURIComponent(msgno)).then(function(responseJSON) { 673 responseJSON = JSON.parse(responseJSON); 674 progressIndicatorElement.progressIndicator({ 675 'mode' : 'hide' 676 }) 677 //var response = MailManager.removeHidElement(transport.responseText); 678 //var responseJSON = JSON.parse(response); 679 var resultJSON = responseJSON['result']; 680 if (!resultJSON['ui']) { 681 Vtiger_Helper_Js.showPnotify(app.vtranslate('JSLBL_Failed_To_Open_Email')); 682 return; 683 } 684 685 MailManager.close_all(); 686 jQuery('#_contentdiv2_').show(); 687 jQuery('#_contentdiv2_').html(resultJSON['ui']); 688 689 MailManager.mail_open_meta = resultJSON['meta']; 690 var folderName = resultJSON['folder']; 691 692 // Update folder count on UI 693 MailManager.folder_updateCount(folderName, resultJSON['unread']); 694 695 MailManager.mail_find_relationship(); 696 } 697 ); 698 }, 699 700 701 /* Close email */ 702 mail_close: function(){ 703 MailManager.close_all(); 704 jQuery('#_contentdiv_').show(); 705 MailManager.mail_open_meta = {}; 706 }, 707 708 /* Mark mail as read */ 709 mail_mark_unread: function(folder, msgno){ 710 711 var message = app.vtranslate('JSLBL_Updating')+' ...'; 712 var progressIndicatorElement = jQuery.progressIndicator({ 713 'message' : message, 714 'position' : 'html', 715 'blockInfo' : { 716 'enabled' : true 717 } 718 }); 719 AppConnector.request(MailManager._baseurl() + "_operation=mail&_operationarg=mark&_markas=unread&_folder=" + encodeURIComponent(folder) + "&_msgno=" + encodeURIComponent(msgno)).then(function(responseJSON) { 720 responseJSON = JSON.parse(responseJSON); 721 progressIndicatorElement.progressIndicator({ 722 'mode' : 'hide' 723 }) 724 //var response = MailManager.removeHidElement(transport.responseText); 725 //var responseJSON = JSON.parse(response); 726 var resultJSON = responseJSON['result']; 727 728 if (responseJSON && resultJSON['status']) { 729 MailManager.mail_close(); 730 731 var msgno = resultJSON['msgno']; 732 jQuery('#_mailrow_' + msgno).removeClass('mm_normal'); 733 jQuery('#_mailrow_' + msgno).addClass('fontBold'); 734 735 MailManager.folder_updateCount(resultJSON['folder'], resultJSON['unread']); 736 } 737 } 738 ); 739 }, 740 741 /*Print email */ 742 mail_print: function(){ 743 744 var subject = jQuery('#_mailopen_subject').html(); 745 var from = jQuery('#_mailopen_from').html(); 746 var to = jQuery('#_mailopen_to').html(); 747 var cc = jQuery('#_mailopen_cc') ? jQuery('#_mailopen_cc').html() : ''; 748 var date = jQuery('#_mailopen_date').html(); 749 var body = jQuery('#_mailopen_body').html(); 750 751 var content = window.open(); 752 content.document.write("<b>"+subject+"</b><br>"); 753 content.document.write("<br>From :" +from +"<br>"); 754 content.document.write("To :" +to+"<br>"); 755 cc == null ? '' : content.document.write("CC :" +cc+"<br>"); 756 content.document.write("Date :" + date+"<br>"); 757 content.document.write("<br>"+body +"<br>"); 758 759 content.print(); 760 }, 761 762 /* Lookup for mail relations in CRM */ 763 mail_find_relationship: function(){ 764 jQuery('#_mailrecord_findrel_btn_').html(MailManager.i18n('JSLBL_Finding_Relation') + '...'); 765 jQuery("#_mailrecord_findrel_btn_").attr('disabled', true); 766 767 var meta = MailManager.mail_open_meta; 768 AppConnector.request(MailManager._baseurl() + "_operation=relation&_operationarg=find&_mfrom=" + encodeURIComponent(meta['from']) + 769 '&_folder=' +encodeURIComponent(meta['folder']) +'&_msgno=' +encodeURIComponent(meta['msgno']) +'&_msguid=' + 770 encodeURIComponent(meta['msguid'].replace('<', '<').replace('>', '>'))).then(function(responseJSON) { 771 responseJSON = JSON.parse(responseJSON); 772 jQuery('#_mailrecord_findrel_btn_').html(MailManager.i18n('JSLBL_Find_Relation_Now')); 773 jQuery("#_mailrecord_findrel_btn_").attr('disabled', false); 774 jQuery('#_mailrecord_findrel_btn_').hide(); 775 //var response = MailManager.removeHidElement(transport.responseText); 776 //var responseJSON = JSON.parse(response); 777 var resultJSON = responseJSON['result']; 778 779 jQuery('#_mailrecord_relationshipdiv_').html(resultJSON['ui']); 780 781 MailManager.triggerUI5Resize(); 782 } 783 ); 784 }, 785 786 /* Associate email to CRM record */ 787 mail_associate: function(form){ 788 789 var frmparams = Form.serialize(form); 790 // No record is selected for linking? 791 if (frmparams.indexOf('_mlinkto') == -1) 792 return; 793 794 var message = app.vtranslate('JSLBL_Associating')+' ...'; 795 var progressIndicatorElement = jQuery.progressIndicator({ 796 'message' : message, 797 'position' : 'html', 798 'blockInfo' : { 799 'enabled' : true 800 } 801 }); 802 AppConnector.request(MailManager._baseurl() + "_operation=relation&_operationarg=link&" + frmparams).then(function(responseJSON) { 803 progressIndicatorElement.progressIndicator({ 804 'mode' : 'hide' 805 }) 806 //var response = MailManager.removeHidElement(transport.responseText); 807 //var responseJSON = JSON.parse(response); 808 var resultJSON = responseJSON['result']; 809 if (resultJSON['ui']) { 810 jQuery('#_mailrecord_relationshipdiv_').html(resultJSON['ui']); 811 } 812 813 MailManager.triggerUI5Resize(); 814 } 815 ); 816 }, 817 818 /* Extended support for creating and linking */ 819 mail_associate_create_wizard: function(form){ 820 if (form._mlinktotype.value == '') { 821 MailManager.mail_associate_create_cancel(); 822 return; 823 } 824 var thisInstance = this; 825 826 var message = app.vtranslate('JSLBL_Loading')+' ...'; 827 var progressIndicatorElement = jQuery.progressIndicator({ 828 'message' : message, 829 'position' : 'html', 830 'blockInfo' : { 831 'enabled' : true 832 } 833 }); 834 var frmparams = Form.serialize(form); 835 AppConnector.request(MailManager._baseurl() + "_operation=relation&_operationarg=create_wizard&" + frmparams).then(function(response) { 836 var quickCreateController = new MailManager_QuickCreate_Js(); 837 quickCreateController.handleQuickCreateData(response); 838 } 839 ); 840 }, 841 842 /* This will be used to perform actions on mails with an Linked record*/ 843 mail_associate_actions : function(form) { 844 var selected = false; 845 846 if(form._mlinkto.length != undefined) { 847 for(i=0; i<form._mlinkto.length; i++) { 848 if(form._mlinkto[i].checked) { 849 selected = true; 850 } 851 } 852 } else { 853 if(form._mlinkto && form._mlinkto.checked) { 854 selected = true; 855 } else { 856 form._mlinkto.checked = true; 857 selected = true; 858 } 859 } 860 861 // No record is selected for linking? 862 if (selected == false) { 863 Vtiger_Helper_Js.showPnotify(app.vtranslate('JSLBL_PLEASE_SELECT_ATLEAST_ONE_RECORD')); 864 MailManager.resetLinkToDropDown(); 865 return false; 866 } 867 868 if(form._mlinktotype.value == 'Emails') { 869 MailManager.mail_associate(form); 870 } else if(form._mlinktotype.value == 'ModComments') { 871 MailManager.showCommentWidget(form); 872 } else { 873 MailManager.mail_associate_create_wizard(form); 874 } 875 }, 876 877 mail_associate_create_cancel: function(){ 878 jQuery('#_relationpopupdiv_').hide(); 879 MailManager.resetLinkToDropDown(); 880 app.hideModalWindow(); 881 }, 882 883 mail_associate_create: function(form, mainform){ 884 885 var frmparams = Form.serialize(form); 886 frmparams = frmparams.replace('module=', 'xmodule=').replace('action=', 'xaction='); 887 frmparams += '&' + Form.serialize(mainform); 888 889 jQuery('#globalmodal').find('.modal-header').progressIndicator({smallLoadingImage : true, 'mode' : 'show'}); 890 var message = app.vtranslate('JSLBL_Associating')+' ...'; 891 var progressIndicatorElement = jQuery.progressIndicator({ 892 'message' : message, 893 'position' : 'html', 894 'blockInfo' : { 895 'enabled' : true 896 } 897 }); 898 AppConnector.request(MailManager._baseurl() + "_operation=relation&_operationarg=create&" + frmparams).then(function(responseJSON) { 899 progressIndicatorElement.progressIndicator({ 900 'mode' : 'hide' 901 }) 902 //var response = MailManager.removeHidElement(transport.responseText); 903 //var responseJSON = JSON.parse(response); 904 var resultJSON = responseJSON['result']; 905 if (resultJSON['ui']) { 906 MailManager.mail_associate_create_cancel(); 907 jQuery('#_mailrecord_relationshipdiv_').html(resultJSON['ui']); 908 MailManager.resetLinkToDropDown(); 909 910 MailManager.triggerUI5Resize(); 911 return true; 912 } 913 } 914 ); 915 }, 916 917 // function to show the comment widget 918 showCommentWidget : function(form) { 919 var frmparams = Form.serialize(form); 920 var progressIndicatorElement = jQuery.progressIndicator({ 921 'message' : '', 922 'position' : 'html', 923 'blockInfo' : { 924 'enabled' : true 925 } 926 }); 927 AppConnector.request(MailManager._baseurl() + "_operation=relation&_operationarg=commentwidget&" + frmparams).then(function(response) { 928 progressIndicatorElement.progressIndicator({ 929 'mode' : 'hide' 930 }) 931 var callBackFunction = function(data){ 932 jQuery('.cancelLink', data).on('click',function(e){ 933 MailManager.resetLinkToDropDown(); 934 }); 935 936 jQuery('[name="saveButton"]',data).on('click',function(e){ 937 var valid = MailManager.addCommentValidate(data); 938 if(valid){ 939 MailManager.saveComment(data); 940 } 941 }); 942 } 943 app.showModalWindow(response,function(response){ 944 if(typeof callBackFunction == 'function'){ 945 callBackFunction(response); 946 } 947 },{ 948 'text-align' : 'left' 949 }); 950 } 951 ); 952 }, 953 954 addCommentValidate : function(form) { 955 var element = jQuery('[name=commentcontent]', form); 956 var comment = jQuery.trim(element.val()); 957 if(comment == '') { 958 element.validationEngine('showPrompt',app.vtranslate('JSLBL_CANNOT_ADD_EMPTY_COMMENT'),'',"topLeft",true); 959 return false; 960 } 961 return true; 962 }, 963 964 saveComment : function(form){ 965 var _mlinkto = jQuery('[name="_mlinkto"]:checked').val(); 966 var _mlinktotype = jQuery('[name="_mlinktotype"]').val(); 967 var _msgno = jQuery('[name="_msgno"]').val(); 968 var _folder = jQuery('[name="_folder"]').val() 969 var commentcontent = jQuery('[name="commentcontent"]').val(); 970 var frmparams = 'commentcontent='+commentcontent+'&_mlinkto='+_mlinkto+'&_mlinktotype='+_mlinktotype+'&_msgno='+_msgno+'&_folder='+_folder; 971 var message = app.vtranslate('JSLBL_Saving')+' ...'; 972 var progressIndicatorElement = jQuery.progressIndicator({ 973 'message' : message, 974 'position' : 'html', 975 'blockInfo' : { 976 'enabled' : true 977 } 978 }); 979 AppConnector.request(MailManager._baseurl() + "_operation=relation&_operationarg=create&" + frmparams).then(function(responseJSON) { 980 responseJSON = JSON.parse(responseJSON); 981 progressIndicatorElement.progressIndicator({ 982 'mode' : 'hide' 983 }) 984 var resultJSON = responseJSON['result']; 985 if (resultJSON['ui']) { 986 app.hideModalWindow(form); 987 MailManager.resetLinkToDropDown(); 988 } 989 } 990 ); 991 }, 992 993 // Place an element at the center of the page 994 placeAtCenter : function(element) { 995 element.css("position","absolute"); 996 element.css("top", ((jQuery(window).height() - element.outerHeight()) / 4) + jQuery(window).scrollTop() + "px"); 997 element.css("left", ((jQuery(window).width() - element.outerWidth()) / 2) + jQuery(window).scrollLeft() + "px"); 998 999 }, 1000 1001 /* Compose new mail */ 1002 mail_compose: function(){ 1003 var params = {step: "step1", module: "MailManager", view: "MassActionAjax", mode: "showComposeEmailForm", 1004 selected_ids : "[]", excluded_ids : "[]"}; 1005 Vtiger_Index_Js.showComposeEmailPopup(params); 1006 }, 1007 1008 createUploader : function (){ 1009 var uploader = new qq.FileUploader({ 1010 element: document.getElementById('file-uploader'), 1011 action : 'index.php?module=MailManager&action=MailManagerAjax&file=index&mode=ajax&_operation=relation&_operationarg=saveattachment', 1012 1013 template: '<div class="qq-uploader">' + 1014 '<div class="qq-upload-drop-area"><span>'+MailManager.i18n('JSLBL_UPLOAD_DROPFILES')+'</span></div>' + 1015 '<div class="qq-upload-button">'+MailManager.i18n('JSLBL_UPLOAD_FILE')+'</div>' + 1016 '<ul class="qq-upload-list"></ul>' + 1017 '</div>', 1018 1019 // template for one item in file list 1020 fileTemplate: '<li>' + 1021 '<span class="qq-upload-file small"></span>' + 1022 '<span class="qq-upload-spinner small"></span>' + 1023 '<span class="qq-upload-size small"></span>' + 1024 '<a class="qq-upload-cancel small" href="#">'+MailManager.i18n('JSLBL_UPLOAD_CANCEL')+'</a>' + 1025 '<a class="qq-upload-deleteupload small" href="#">\n\ 1026 <img height="12" border="0" width="12" title='+MailManager.i18n('JSLBL_Delete')+' src="themes/images/no.gif"></a>' + 1027 '<span class="qq-upload-failed-text small">'+MailManager.i18n('JSLBL_UPLOAD_FAILED')+'</span>' + 1028 '</li>', 1029 multiple: false, 1030 classes: { 1031 // used to get elements from templates 1032 button: 'qq-upload-button', 1033 drop: 'qq-upload-drop-area', 1034 dropActive: 'qq-upload-drop-area-active', 1035 list: 'qq-upload-list', 1036 1037 file: 'qq-upload-file', 1038 spinner: 'qq-upload-spinner', 1039 size: 'qq-upload-size', 1040 cancel: 'qq-upload-cancel', 1041 deleteupload: 'qq-upload-deleteupload', 1042 // added to list item when upload completes 1043 // used in css to hide progress spinner 1044 success: 'qq-upload-success', 1045 fail: 'qq-upload-fail' 1046 } 1047 }); 1048 return uploader; 1049 }, 1050 1051 //draft 1052 mail_draft: function(id, edit){ 1053 var params = {module: "Emails", view: "ComposeEmail", mode: "emailPreview", record: id} 1054 if (typeof edit != 'undefined' && edit) params['mode'] = 'emailEdit'; 1055 var emailEditInstance = new Emails_MassEdit_Js(); 1056 var win = emailEditInstance.showComposeEmailForm(params); 1057 var folder = jQuery('#mailbox_folder').val(); 1058 if (folder == 'mm_drafts') { 1059 var timer = setInterval(function() { 1060 if(win.closed) { 1061 clearInterval(timer); 1062 MailManager.folder_drafts(0); 1063 } 1064 }, 500); 1065 } 1066 }, 1067 1068 deleteAttachment : function(id, docid, ele) { 1069 var message = app.vtranslate('JSLBL_Loading')+' ...'; 1070 var progressIndicatorElement = jQuery.progressIndicator({ 1071 'message' : message, 1072 'position' : 'html', 1073 'blockInfo' : { 1074 'enabled' : true 1075 } 1076 }); 1077 AppConnector.request(MailManager._baseurl() + "_operation=mail&_operationarg=deleteAttachment&emailid="+ encodeURIComponent(id) 1078 +"&docid="+ encodeURIComponent(docid)).then(function(responseJSON) { 1079 responseJSON = JSON.parse(responseJSON); 1080 progressIndicatorElement.progressIndicator({ 1081 'mode' : 'hide' 1082 }) 1083 //var responseJSON = JSON.parse(response.responseText); 1084 if(responseJSON.result.success == true) { 1085 jQuery(ele).parent().fadeTo('slow', 0.0, function(){ 1086 var count = jQuery('#attachmentCount').val(); 1087 jQuery('#attachmentCount').val(--count); 1088 jQuery(ele).parent().remove(); 1089 }); 1090 } else { 1091 Vtiger_Helper_Js.showPnotify(app.vtranslate('JSLBL_ATTACHMENT_NOT_DELETED')); 1092 } 1093 } 1094 ); 1095 }, 1096 1097 /* Reply to mail */ 1098 mail_reply: function(all){ 1099 if (typeof(all) == 'undefined') 1100 all = true; 1101 1102 // TODO Strip invalid HTML? 1103 var from = jQuery('#_mailopen_from').html(); 1104 var cc = all ? jQuery('#_mailopen_cc').html() : ''; 1105 var subject = jQuery('#_mailopen_subject').html(); 1106 var body = jQuery('#_mailopen_body').html(); 1107 var date = jQuery('#_mailopen_date').html(); 1108 1109 var replySubject = (subject.toUpperCase().indexOf('RE:') == 0) ? subject : 'Re: ' + subject; 1110 var replyBody = MailManager.sprintf('<p></p><p style="margin:0;padding:0;">%s, %s, %s:</p><blockquote style="border:0;margin:0;border-left:1px solid gray;padding:0 0 0 2px;">%s</blockquote><br />', 'On ' + date, from, 'wrote', body); 1111 1112 function fillComposeEmailForm(win) { 1113 var formValues = { 1114 '#ccContainer input' : cc, 1115 '[name="subject"]': replySubject 1116 } 1117 var rteValues = { 1118 'description': replyBody 1119 } 1120 win['app']['setFormValues'](formValues); 1121 win['app']['setRTEValues'](rteValues); 1122 if (cc) { 1123 win['jQuery']('#ccLink').trigger('click'); 1124 } 1125 } 1126 1127 var params = {step: "step1", module: "MailManager", view: "MassActionAjax", mode: "showComposeEmailForm", selected_ids:"[]", excluded_ids: "[]", to:'["'+from+'"]'} 1128 Vtiger_Index_Js.showComposeEmailPopup(params, function(win){ 1129 if (typeof win != 'undefined') { 1130 setTimeout(function() {fillComposeEmailForm(win);}, 2000); 1131 } 1132 }); 1133 }, 1134 1135 /* Track and Initialize RTE instance for reply */ 1136 mail_reply_rteinstance: false, 1137 mail_reply_rteinit: function(data){ 1138 if (MailManager.mail_reply_rteinstance == false) { 1139 var textAreaName = '_mail_replyfrm_body_'; 1140 CKEDITOR.replace(textAreaName, { 1141 toolbar: 'Full', 1142 extraPlugins: 'uicolor', 1143 uiColor: '#dfdff1' 1144 }); 1145 MailManager.mail_reply_rteinstance = CKEDITOR.instances[textAreaName]; 1146 } 1147 1148 MailManager.mail_reply_rteinstance.setData(data, function(){ 1149 }); 1150 MailManager.mail_reply_rteinstance.focus(); 1151 }, 1152 1153 /* Close reply UI */ 1154 mail_reply_close: function(){ 1155 jQuery('#_replydiv_').hide(); 1156 if(jQuery('#mm_selected_folder').val()=='mm_settings'){ 1157 MailManager.open_settings(); 1158 } 1159 else{ 1160 var contentDiv2 = jQuery('#_contentdiv2_').html(); 1161 if (contentDiv2 == '') { 1162 jQuery('#_contentdiv_').show(); 1163 } else { 1164 jQuery('#_contentdiv2_').show(); 1165 } 1166 1167 // Updated to highlight selected folder 1168 var currentSelectedFolder = jQuery('#mailbox_folder').val(); 1169 MailManager.updateSelectedFolder(currentSelectedFolder); 1170 jQuery('#mm_selected_folder').val(currentSelectedFolder); 1171 } 1172 1173 MailManager.triggerUI5Resize(); 1174 }, 1175 1176 /* Forward email */ 1177 mail_forward: function(messageId){ 1178 1179 /** 1180 * If mail has no attachment - open the popup in compose mode. 1181 * Else create a draft with attachment - open the popup as draft edit mode. 1182 */ 1183 1184 var from = jQuery('#_mailopen_from').html(); 1185 var to = jQuery('#_mailopen_to').html(); 1186 var cc = jQuery('#_mailopen_cc') ? jQuery('#_mailopen_cc').html() : ''; 1187 var subject = jQuery('#_mailopen_subject').html(); 1188 var body = jQuery('#_mailopen_body').html(); 1189 var date = jQuery('#_mailopen_date').html(); 1190 var folder = jQuery('#mailbox_folder').val(); 1191 1192 var fwdMsgMetaInfo = MailManager.i18n('JSLBL_FROM') + from + '<br/>'+MailManager.i18n('JSLBL_DATE') + date + '<br/>'+MailManager.i18n('JSLBL_SUBJECT') + subject; 1193 if (to != '' && to != null) 1194 fwdMsgMetaInfo += '<br/>'+MailManager.i18n('JSLBL_TO') + to; 1195 if (cc != '' && cc != null) 1196 fwdMsgMetaInfo += '<br/>'+MailManager.i18n('JSLBL_CC') + cc; 1197 fwdMsgMetaInfo += '<br/>'; 1198 1199 var fwdSubject = (subject.toUpperCase().indexOf('FWD:') == 0) ? subject : 'Fwd: ' + subject; 1200 var fwdBody = MailManager.sprintf('<p></p><p>%s<br/>%s</p>%s', MailManager.i18n('JSLBL_FORWARD_MESSAGE_TEXT'), fwdMsgMetaInfo, body); 1201 1202 var attachmentCount = jQuery("#_mail_attachmentcount_").val(); 1203 if(attachmentCount) { 1204 VtigerJS_DialogBox.block(); 1205 AppConnector.request(MailManager._baseurl() + "_operation=mail&_operationarg=forward&messageid=" + 1206 encodeURIComponent(messageId) +"&folder=" + encodeURIComponent(folder) +"&subject=" + encodeURIComponent(fwdSubject) + 1207 "&body=" + fwdBody).then(function(responseJSON) { 1208 responseJSON = JSON.parse(responseJSON); 1209 VtigerJS_DialogBox.unblock(); 1210 // Open the draft the was saved. 1211 if (responseJSON['success']) { 1212 MailManager.mail_draft(responseJSON['result']['emailid'], true); 1213 } 1214 } 1215 ); 1216 1217 } else { 1218 // Populate the popup window 1219 function fillComposeEmailForm(win) { 1220 var formValues = { 1221 '[name="subject"]': fwdSubject 1222 } 1223 var rteValues = { 1224 'description': fwdBody 1225 } 1226 win['app']['setFormValues'](formValues); 1227 win['app']['setRTEValues'](rteValues); 1228 } 1229 var params = {step: "step1", module: "MailManager", view: "MassActionAjax", mode: "showComposeEmailForm", selected_ids:"[]", excluded_ids: "[]"} 1230 Vtiger_Index_Js.showComposeEmailPopup(params, function(win){ 1231 if (typeof win != 'undefined') { 1232 setTimeout(function() {fillComposeEmailForm(win);}, 2000); 1233 } 1234 }); 1235 } 1236 }, 1237 1238 /* Send reply to email */ 1239 mail_reply_send: function(form){ 1240 if (MailManager.mail_reply_rteinstance) { 1241 MailManager.mail_reply_rteinstance.updateElement(); 1242 } 1243 var meta = MailManager.mail_open_meta; 1244 1245 var msguid = encodeURIComponent(meta['msguid'] ? meta['msguid'].replace('<', '<').replace('>', '>') : ''); 1246 1247 if(!MailManager.validateEmailFields(form.to.value, form.cc.value, form.bcc.value)) { 1248 return false; 1249 } 1250 1251 if (form.to.value == '') { 1252 Vtiger_Helper_Js.showPnotify(app.vtranslate('JSLBL_Recepient_Cannot_Be_Empty')); 1253 return false; 1254 } 1255 if (form.subject.value == '') { 1256 Vtiger_Helper_Js.showPnotify(app.vtranslate('JSLBL_Subject_Cannot_Be_Empty')); 1257 return false; 1258 } 1259 var bodyval = $('_mail_replyfrm_body_').value.trim(); 1260 if (bodyval == '<br />' || bodyval == '') { 1261 Vtiger_Helper_Js.showPnotify(app.vtranslate('JSLBL_Body_Cannot_Be_Empty')); 1262 return false; 1263 } 1264 var message = app.vtranslate('JSLBL_Sending')+' ...'; 1265 var progressIndicatorElement = jQuery.progressIndicator({ 1266 'message' : message, 1267 'position' : 'html', 1268 'blockInfo' : { 1269 'enabled' : true 1270 } 1271 }); 1272 var params = { 1273 '_operation':'mail', 1274 '_operationarg':'send', 1275 '_msgid':msguid, 1276 'to':encodeURIComponent(form.to.value), 1277 'cc':encodeURIComponent(form.cc.value), 1278 'bcc':encodeURIComponent(form.bcc.value), 1279 'subject':encodeURIComponent(form.subject.value), 1280 'body':encodeURIComponent(form.body.value), 1281 'linkto':encodeURIComponent(form.linkto.value), 1282 'emailid':encodeURIComponent(form.emailid.value) 1283 }; 1284 var baseurl = MailManager._baseurl(); 1285 MailManager.Request(baseurl, params, function(transport) { 1286 progressIndicatorElement.progressIndicator({ 1287 'mode' : 'hide' 1288 }) 1289 var response = MailManager.removeHidElement(transport.responseText); 1290 var responseJSON = JSON.parse(response); 1291 if (responseJSON['success']) { 1292 MailManager.mail_reply_close(); 1293 MailManager.show_message(MailManager.i18n('JSLBL_MAIL_SENT')); 1294 } else { 1295 Vtiger_Helper_Js.showPnotify(app.vtranslate('JSLBL_Failed_To_Send_Mail') + 1296 ': ' + responseJSON['error']['message']); 1297 } 1298 }); 1299 }, 1300 1301 /* Send reply to email */ 1302 save_draft: function(form){ 1303 if (MailManager.mail_reply_rteinstance) { 1304 MailManager.mail_reply_rteinstance.updateElement(); 1305 } 1306 1307 if(!MailManager.validateEmailFields(form.to.value, form.cc.value, form.bcc.value)) { 1308 return false; 1309 } 1310 1311 if (form.subject.value == '' ) { 1312 if(!confirm(MailManager.i18n('JSLBL_SaveWith_EmptySubject'))) { 1313 return false; 1314 } 1315 } 1316 1317 var message = app.vtranslate('JSLBL_Saving')+' ...'; 1318 var progressIndicatorElement = jQuery.progressIndicator({ 1319 'message' : message, 1320 'position' : 'html', 1321 'blockInfo' : { 1322 'enabled' : true 1323 } 1324 }); 1325 var params = { 1326 '_operation':'mail', 1327 '_operationarg':'save', 1328 'emailid':encodeURIComponent(form.emailid.value), 1329 'to':encodeURIComponent(form.to.value), 1330 'cc':encodeURIComponent(form.cc.value), 1331 'bcc':encodeURIComponent(form.bcc.value), 1332 'subject':encodeURIComponent(form.subject.value), 1333 'body':encodeURIComponent(form.body.value), 1334 'linkto':encodeURIComponent(form.linkto.value), 1335 'currentid':encodeURIComponent(form.emailid.value) 1336 }; 1337 var baseurl = MailManager._baseurl(); 1338 MailManager.Request(baseurl, params, function(transport) { 1339 progressIndicatorElement.progressIndicator({ 1340 'mode' : 'hide' 1341 }) 1342 var response = MailManager.removeHidElement(transport.responseText); 1343 var responseJSON = JSON.parse(response); 1344 1345 if (responseJSON['success']) { 1346 MailManager.show_message(MailManager.i18n('JSLBL_DRAFT_MAIL_SAVED')); 1347 } else { 1348 Vtiger_Helper_Js.showPnotify(app.vtranslate('JSLBL_Failed_To_Save_Mail')); 1349 } 1350 }); 1351 }, 1352 1353 folder_drafts: function(page){ 1354 var message = app.vtranslate('JSLBL_Loading')+' '+app.vtranslate('JSLBL_Loading'); 1355 var progressIndicatorElement = jQuery.progressIndicator({ 1356 'message' : message, 1357 'position' : 'html', 1358 'blockInfo' : { 1359 'enabled' : true 1360 } 1361 }); 1362 var params = { 1363 '_operation':'folder', 1364 '_operationarg':'drafts', 1365 '_page':encodeURIComponent(page) 1366 }; 1367 var baseurl = MailManager._baseurl(); 1368 MailManager.Request(baseurl, params, function(transport) { 1369 progressIndicatorElement.progressIndicator({ 1370 'mode' : 'hide' 1371 }) 1372 MailManager.mail_close(); 1373 var resultObject = JSON.parse(transport.responseText); 1374 jQuery('#_contentdiv_').html(resultObject.result); 1375 // Initialize upload 1376 //MailManager.createUploader(); 1377 1378 MailManager.bindEnterKeyForSearch(); 1379 1380 // Update the selected folder to highlight selected folder 1381 MailManager.updateSelectedFolder('mm_drafts'); 1382 jQuery('#mm_selected_folder').val('mm_drafts'); 1383 jQuery('#mailbox_folder').val('mm_drafts'); 1384 1385 MailManager.triggerUI5Resize(); 1386 }); 1387 }, 1388 1389 search_popupui: function(target, handle){ 1390 var message = app.vtranslate('JSLBL_Loading')+' ...'; 1391 var progressIndicatorElement = jQuery.progressIndicator({ 1392 'message' : message, 1393 'position' : 'html', 1394 'blockInfo' : { 1395 'enabled' : true 1396 } 1397 }); 1398 var params = { 1399 '_operation':'search', 1400 '_operationarg':'popupui' 1401 }; 1402 var baseurl = MailManager._baseurl(); 1403 MailManager.Request(baseurl, params, function(transport) { 1404 progressIndicatorElement.progressIndicator({ 1405 'mode' : 'hide' 1406 }) 1407 var response = MailManager.removeHidElement(transport.responseText); 1408 jQuery('#_popupsearch_').html(response); 1409 MailManager.placeAtCenter(jQuery('#_popupsearch_')); 1410 jQuery('#_popupsearch_').show().draggable(); 1411 MailManager.search_popup_init(target); 1412 1413 MailManager.triggerUI5Resize(); 1414 }); 1415 }, 1416 1417 search_popup_init: function(target){ 1418 var url = MailManager._baseurl() + "_operation=search&_operationarg=email&"; 1419 1420 if (jQuery('#_search_popupui_target_')) { 1421 jQuery('#_search_popupui_target_').val(target); 1422 } 1423 1424 var elem = jQuery('#_search_popupui_input_'); 1425 if (elem) { 1426 if (elem.attr('_tokeninput_init_')) 1427 return; 1428 elem.tokenInput(url, { 1429 hintText: MailManager.i18n('JSLBL_Search_For_Email') + '...', 1430 noResultsText: MailManager.i18n('JSLBL_Nothing_Found'), 1431 searchingText: MailManager.i18n('JSLBL_Searching_Please_Wait') + '...', 1432 minChars : 3, 1433 classes: { 1434 tokenList: "token-input-list-facebook", 1435 token: "token-input-token-facebook", 1436 tokenDelete: "token-input-delete-token-facebook", 1437 selectedToken: "token-input-selected-token-facebook", 1438 highlightedToken: "token-input-highlighted-token-facebook", 1439 dropdown: "token-input-dropdown-facebook", 1440 dropdownItem: "token-input-dropdown-item-facebook", 1441 dropdownItem2: "token-input-dropdown-item2-facebook", 1442 selectedDropdownItem: "token-input-selected-dropdown-item-facebook", 1443 inputToken: "token-input-list-facebook" 1444 } 1445 }); 1446 elem.attr('_tokeninput_init_', true); 1447 } 1448 }, 1449 1450 search_consume_input: function(form){ 1451 var inputstr = form._search_popupui_input_.value; 1452 var target = form._search_popupui_target_.value; 1453 1454 // Based on target perform the operation 1455 var targetnode = $(target); 1456 if (targetnode) { 1457 if (targetnode.value.length > 0 && targetnode.value.substr(-1) != ',') { 1458 inputstr = ',' + inputstr; 1459 } 1460 targetnode.value += inputstr; 1461 } 1462 MailManager.popup_close(); 1463 }, 1464 1465 popup_close: function(){ 1466 jQuery('#_popupsearch_').html(''); 1467 jQuery('#_popupsearch_').hide(); 1468 1469 MailManager.triggerUI5Resize(); 1470 }, 1471 1472 clear_input: function(id){ 1473 if (jQuery("#"+id)) 1474 jQuery("#"+id).val(''); 1475 }, 1476 1477 selectTemplate: function() { 1478 url = 'module=EmailTemplate&parent=Settings&view=List'; 1479 var popupInstance = Vtiger_Popup_Js.getInstance(); 1480 popupInstance.show(url,function(data){ 1481 var responseData = JSON.parse(data); 1482 for(var key in responseData){ 1483 responseData = responseData[key]; 1484 break; 1485 } 1486 jQuery('#_mail_replyfrm_subject_').val(responseData['name']); 1487 CKEDITOR.instances['_mail_replyfrm_body_'].setData(responseData['info']); 1488 }); 1489 }, 1490 1491 removeHidElement: function(jsonresponse){ 1492 // PHPSESSID is General value 1493 // Session Name should be picked from php.ini 1494 var replaceJsonTxt = jsonresponse.replace('/<input type="hidden" name="PHPSESSID" value=["]{1}[a-z0-9]+["]{1}\s{0,1}[/]?[>]?/', ''); 1495 return replaceJsonTxt; 1496 }, 1497 1498 massMailDelete: function(folder){ 1499 var cb_elements = jQuery('[name="mc_box"]'); 1500 var temp = new Array(); 1501 var len = jQuery('[name="mc_box"]').length; 1502 for (var i = 0; i < len; i++) { 1503 if (cb_elements[i].checked) { 1504 temp.push(cb_elements[i].value); 1505 } 1506 } 1507 if (temp.length == 0) { 1508 return alert(app.vtranslate('JSLBL_NO_EMAILS_SELECTED')); 1509 } else { 1510 MailManager.maildelete(folder, temp, true); 1511 } 1512 }, 1513 1514 maildelete: function(foldername, msgno, reloadfolder){ 1515 var message = app.vtranslate('LBL_DELETE_CONFIRMATION'); 1516 if (!confirm(message)) return; 1517 1518 var message = app.vtranslate('JSLBL_Deleting')+' ...'; 1519 var progressIndicatorElement = jQuery.progressIndicator({ 1520 'message' : message, 1521 'position' : 'html', 1522 'blockInfo' : { 1523 'enabled' : true 1524 } 1525 }); 1526 var params = { 1527 '_operation':'mail', 1528 '_operationarg':'delete', 1529 '_folder':encodeURIComponent(foldername), 1530 '_msgno':encodeURIComponent(msgno) 1531 }; 1532 var baseurl = MailManager._baseurl(); 1533 MailManager.Request(baseurl, params, function() { 1534 for(var i = 0;i<msgno.length;i++) { 1535 var ele ="#_mailrow_"+msgno[i]; 1536 jQuery(ele).fadeOut(1500,function() { 1537 jQuery(ele).remove(); 1538 }); 1539 } 1540 if(reloadfolder == true) { 1541 progressIndicatorElement.progressIndicator({ 1542 'mode' : 'hide' 1543 }) 1544 if(foldername == "__vt_drafts") { 1545 MailManager.folder_drafts(); 1546 } else { 1547 MailManager.folder_open(foldername); 1548 } 1549 } 1550 }); 1551 }, 1552 1553 show: function(ele){ 1554 jQuery('#' + ele).css('display', 'block'); 1555 }, 1556 1557 getDocuments : function(){ 1558 if(!MailManager.checkUploadCount()) { 1559 return false; 1560 } 1561 var emailId = jQuery('#emailid').val(); 1562 if(emailId == "") { 1563 var body = CKEDITOR.instances['_mail_replyfrm_body_']; 1564 if(body != "") 1565 body = body.getData(); 1566 1567 var to = jQuery('#_mail_replyfrm_to_').val(); 1568 var cc = jQuery('#_mail_replyfrm_cc_').val(); 1569 var bcc = jQuery('#_mail_replyfrm_bcc_').val(); 1570 var subject = jQuery('#_mail_replyfrm_subject_').val(); 1571 VtigerJS_DialogBox.block(); 1572 1573 var params = { 1574 '_operation':'mail', 1575 '_operationarg':'save', 1576 'to':encodeURIComponent(to), 1577 'cc':encodeURIComponent(cc), 1578 'bcc':encodeURIComponent(bcc), 1579 'subject':encodeURIComponent(subject), 1580 'body':encodeURIComponent(body) 1581 }; 1582 var baseurl = MailManager._baseurl(); 1583 MailManager.Request(baseurl, params, function(response){ 1584 var responseText = JSON.parse(response.responseText); 1585 emailId = responseText.result.emailid; 1586 jQuery('#emailid').val(emailId); 1587 window.open('index.php?module=Documents&return_module=MailManager&action=Popup&popuptype=detailview&form=EditView&form_submit=false&recordid='+emailId+'&forrecord='+emailId+'&parenttab=Marketing&srcmodule=MailManager&popupmode=ajax&RLreturn_module=MailManager&RLparent_id='+emailId+'&parenttab=My Home Page&callback=MailManager.add_data_to_relatedlist','test','width=640,height=602,resizable=0,scrollbars=0'); 1588 }); 1589 } else { 1590 window.open('index.php?module=Documents&return_module=MailManager&action=Popup&popuptype=detailview&form=EditView&form_submit=false&recordid='+emailId+'&forrecord='+emailId+'&parenttab=Marketing&srcmodule=MailManager&popupmode=ajax&RLreturn_module=MailManager&RLparent_id='+emailId+'&parenttab=My Home Page&callback=MailManager.add_data_to_relatedlist','test','width=640,height=602,resizable=0,scrollbars=0'); 1591 } 1592 VtigerJS_DialogBox.unblock(); 1593 }, 1594 1595 search_drafts: function(){ 1596 var string = jQuery('#search_txt').val(); 1597 if(string == '') { 1598 alert(app.vtranslate('JSLBL_ENTER_SOME_VALUE')); 1599 return false; 1600 } 1601 1602 var type = jQuery('#search_type').val(); 1603 var message = app.vtranslate('JSLBL_Searching')+' ...'; 1604 var progressIndicatorElement = jQuery.progressIndicator({ 1605 'message' : message, 1606 'position' : 'html', 1607 'blockInfo' : { 1608 'enabled' : true 1609 } 1610 }); 1611 var params = { 1612 '_operation':'folder', 1613 '_operationarg':'drafts', 1614 'q':encodeURIComponent(string), 1615 'type':encodeURIComponent(type) 1616 }; 1617 var baseurl = MailManager._baseurl(); 1618 MailManager.Request(baseurl, params, function(response){ 1619 progressIndicatorElement.progressIndicator({ 1620 'mode' : 'hide' 1621 }) 1622 MailManager.mail_close(); 1623 var responseText = MailManager.removeHidElement(response.responseText); 1624 jQuery('#_contentdiv_').html(responseText.result); 1625 1626 MailManager.triggerUI5Resize(); 1627 }); 1628 1629 return false; 1630 }, 1631 1632 search_mails: function(foldername){ 1633 var string = jQuery('#search_txt').val(); 1634 if(string == '') { 1635 alert(app.vtranslate('JSLBL_ENTER_SOME_VALUE')); 1636 return false; 1637 } 1638 var type = jQuery('#search_type').val(); 1639 var dateformat = jQuery('#jscal_dateformat').val(); 1640 var message = app.vtranslate('JSLBL_Searching')+' ...'; 1641 var progressIndicatorElement = jQuery.progressIndicator({ 1642 'message' : message, 1643 'position' : 'html', 1644 'blockInfo' : { 1645 'enabled' : true 1646 } 1647 }); 1648 var params = { 1649 '_operation':'folder', 1650 '_operationarg':'open', 1651 'q':encodeURIComponent(string), 1652 'type':encodeURIComponent(type), 1653 '_folder':encodeURIComponent(foldername) 1654 }; 1655 var baseurl = MailManager._baseurl(); 1656 MailManager.Request(baseurl, params, function(response){ 1657 progressIndicatorElement.progressIndicator({ 1658 'mode' : 'hide' 1659 }) 1660 MailManager.mail_close(); 1661 response = JSON.parse(response['responseText']); 1662 jQuery('#_contentdiv_').html(response.result); 1663 1664 jQuery('#_mailfolder_' + foldername).addClass('mm_folder_selected'); 1665 var element = jQuery('#search_txt'); 1666 if(type == 'ON') { 1667 if(element.length != 0) { 1668 element.closest('div').addClass('date') 1669 element.addClass('dateField').attr('data-date-format', dateformat); 1670 element.after(" <span class='add-on'><i class='icon-calendar'></i></span>"); 1671 app.registerEventForDatePickerFields(element, true); 1672 } 1673 }else { 1674 element.closest('div').removeClass('date'); 1675 element.removeClass('dateField').removeAttr('data-date-format'); 1676 element.unbind('focus'); 1677 element.next().remove("span.add-on"); 1678 jQuery('#jscal_trigger_fval').hide(); 1679 } 1680 1681 MailManager.triggerUI5Resize(); 1682 1683 MailManager.bindEnterKeyForSearch(); 1684 1685 }); 1686 1687 return false; 1688 }, 1689 1690 add_data_to_relatedlist: function(res){ 1691 var fileSize, attachContent, element; 1692 fileSize = MailManager.computeDisplayableFileSize(res['size']); 1693 if(res.error != undefined) { 1694 attachContent = "<li class='qq-upload-success small'><span class='qq-upload-file small'>"+res['name']+"</span>\n\ 1695 <span class='qq-upload-size small' style='display: inline;'>"+fileSize+"</span>\n\ 1696 <span class='qq-upload-failed-text small' style='display: inline;'>Failed</span>"; 1697 element = jQuery(window.opener.document).find('.qq-upload-list'); 1698 jQuery(element[0]).append(attachContent); 1699 window.close(); 1700 return false; 1701 } 1702 1703 attachContent = "<li class='qq-upload-success small'><span class='qq-upload-file small'>"+res['name']+"</span>\n\ 1704 <span class='qq-upload-size small' style='display: inline;'>"+fileSize+"</span>\n\ 1705 <a class='qq-upload-deleteupload small' onclick='MailManager.deleteAttachment(\""+res['emailid']+"\", \""+res['docid']+"\", this);' href='#'>\n\ 1706 <img height='12' border='0' width='12' title='Delete' src='themes/images/no.gif'></a></li>"; 1707 1708 try 1709 { 1710 element = jQuery(window.opener.document).find('.qq-upload-list'); 1711 1712 if(element[0]) { 1713 jQuery(element[0]).append(attachContent); 1714 } else { 1715 element = jQuery.find('.qq-upload-list'); 1716 jQuery(element[0]).append(attachContent); 1717 } 1718 window.close(); 1719 } catch(e) { 1720 element = jQuery.find('.qq-upload-list'); 1721 jQuery(element[0]).append(attachContent); 1722 } 1723 // Update the attachment counter 1724 MailManager.uploadCountUpdater(); 1725 1726 }, 1727 1728 computeDisplayableFileSize : function(size) { 1729 var fileSize; 1730 if(size <= 1024) { 1731 fileSize = size+"b"; 1732 } else if(size > 1024 && size < 1048576) { 1733 fileSize = (Math.round(size/1024))+"kB"; 1734 } else if(size > (1024*1024)) { 1735 fileSize = (Math.round(size/(1024*1024)))+"MB"; 1736 } else { 1737 fileSize = size; 1738 } 1739 return fileSize; 1740 }, 1741 1742 validateEmailFields : function(to, cc, bcc) { 1743 if(to != "") { 1744 if(!MailManager.mail_validate(to)) { 1745 return false; 1746 } 1747 } 1748 if(cc != "") { 1749 if(!MailManager.mail_validate(cc)) { 1750 return false; 1751 } 1752 } 1753 if(bcc != "") { 1754 if(!MailManager.mail_validate(bcc)) { 1755 return false; 1756 } 1757 } 1758 return true; 1759 }, 1760 1761 mail_validate : function(str) { 1762 var email_regex = /^[_/a-zA-Z0-9]+([!"#$%&'()*+,./:;<=>?\^_`{|}~-]?[a-zA-Z0-9/_/-])*@[a-zA-Z0-9]+([\_\-\.]?[a-zA-Z0-9]+)*\.([\-\_]?[a-zA-Z0-9])+(\.?[a-zA-Z0-9]+)?$/; 1763 arr = new Array(); 1764 arr = str.split(","); 1765 var tmp; 1766 for(var i=0; i<=arr.length-1; i++) { 1767 tmp = arr[i]; 1768 if(tmp.match('<') && tmp.match('>')) { 1769 if(!MailManager.findAngleBracket(arr[i])) { 1770 var errorMsg = app.vtranslate('JSLBL_EMAIL_FORMAT_INCORRECT'); 1771 Vtiger_Helper_Js.showPnotify(errorMsg+": "+arr[i]); 1772 return false; 1773 } 1774 } else if(trim(arr[i]) != "" && !(email_regex.test(trim(arr[i])))) { 1775 var errorMsg2 = app.vtranslate('JSLBL_EMAIL_FORMAT_INCORRECT'); 1776 Vtiger_Helper_Js.showPnotify(errorMsg2+": "+arr[i]); 1777 return false; 1778 } 1779 } 1780 return true; 1781 }, 1782 1783 findAngleBracket : function (mailadd) { 1784 var strlen = mailadd.length; 1785 var gt = 0; 1786 var lt = 0; 1787 var ret = ''; 1788 for(i=0 ;i<strlen; i++) { 1789 if(mailadd.charAt(i) == '<' && gt == 0) { 1790 lt = 1; 1791 } 1792 if(mailadd.charAt(i) == '>' && lt == 1) { 1793 gt = 1; 1794 } 1795 if(mailadd.charAt(i) != '<' && lt == 1 && gt == 0) { 1796 ret = ret + mailadd.charAt(i); 1797 } 1798 } 1799 if(/^[a-z0-9]([a-z0-9_\-\.]*)@([a-z0-9_\-\.]*)(\.[a-z]{2,3}(\.[a-z]{2}){0,2})$/.test(ret)){ 1800 return true; 1801 } else { 1802 return false; 1803 } 1804 }, 1805 1806 uploadCountUpdater : function() { 1807 var countElement; 1808 if(jQuery('#attachmentCount').length) { 1809 countElement = jQuery('#attachmentCount'); 1810 } else { 1811 countElement = jQuery(window.opener.document).find('#attachmentCount'); 1812 } 1813 var MailManagerCurrentUploadCount = countElement.val(); 1814 if(MailManagerCurrentUploadCount == null || MailManagerCurrentUploadCount == "") { 1815 MailManagerCurrentUploadCount = 0; 1816 } 1817 countElement.val(++MailManagerCurrentUploadCount); 1818 }, 1819 1820 checkUploadCount : function() { 1821 var MailManagerCurrentUploadCount = jQuery("#attachmentCount").val(); 1822 if(MailManagerCurrentUploadCount >= MailManager.MailManagerUploadLimit) { 1823 Vtiger_Helper_Js.showPnotify(app.vtranslate('JSLBL_FILEUPLOAD_LIMIT_EXCEEDED')); 1824 return false; 1825 } 1826 return true; 1827 }, 1828 1829 1830 AjaxDuplicateValidate : function (module, fieldname, form) { 1831 var deferred = jQuery.Deferred(); 1832 1833 function execute() { 1834 var fieldvalue = encodeURIComponent(trim(getObj(fieldname).value)); 1835 var recordid = getObj('record').value; 1836 1837 function validate() { 1838 if(fieldvalue == '') { 1839 Vtiger_Helper_Js.showPnotify(app.vtranslate('JSLBL_ACCOUNTNAME_CANNOT_EMPTY')); 1840 deffered.reject(form); 1841 return false; 1842 } 1843 return true; 1844 } 1845 1846 function requestOnComplete(response) { 1847 var str = response.responseText; 1848 VtigerJS_DialogBox.unblock(); 1849 if(str.indexOf('SUCCESS') > -1) { 1850 deferred.resolve(form); 1851 } else { 1852 alert(str); 1853 deferred.reject(form); 1854 } 1855 } 1856 1857 if(validate()) { 1858 VtigerJS_DialogBox.block(); 1859 var params = { 1860 'module':encodeURIComponent(module), 1861 'action':encodeURIComponent(module)+"Ajax", 1862 'file':'Save', 1863 'dup_check':true, 1864 'record':encodeURIComponent(recordid) 1865 }; 1866 params[fieldname] = encodeURIComponent(fieldvalue); 1867 MailManager.Request('index.php?', params, requestOnComplete); 1868 VtigerJS_DialogBox.unblock(); 1869 } 1870 } 1871 // Trigger the function call 1872 execute(); 1873 return deferred.promise(); 1874 }, 1875 1876 Request : function(url, params, callback) { 1877 //var encodedParams = MailManager.getEncodedParameterString(params); 1878 return jQuery.ajax( { 1879 url : url, 1880 type : 'POST', 1881 data : params, 1882 complete : function(response) { 1883 callback(response); 1884 } 1885 }); 1886 }, 1887 1888 getEncodedParameterString : function (paramObject){ 1889 var encodedParams = new Array(); 1890 for(key in paramObject) { 1891 encodedParams.push(key+'='+ paramObject[key]); 1892 } 1893 encodedParams = encodedParams.join('&'); 1894 return encodedParams; 1895 }, 1896 1897 clearSearchString : function() { 1898 jQuery('#search_txt').val(""); 1899 jQuery('#search_type').val(""); 1900 }, 1901 1902 resetLinkToDropDown : function() { 1903 jQuery('#_mlinktotype').val(""); 1904 }, 1905 1906 resetFolderDropDown : function() { 1907 jQuery('#moveFolderList').val("") 1908 }, 1909 1910 toggleSelect : function(state, relCheckName) { 1911 var elements = jQuery('[name='+relCheckName+']'); 1912 for(i=0; i<elements.length; i++) { 1913 var element = jQuery(elements[i]); 1914 if(state) { 1915 element.attr('checked',state).parent().parent().addClass('mm_lvtColDataHover').removeClass('mm_lvtColData'); 1916 } else { 1917 element.attr('checked',state).parent().parent().removeClass('mm_lvtColDataHover').addClass('mm_lvtColData'); 1918 } 1919 } 1920 }, 1921 1922 toggleSelectMail : function(state, element) { 1923 if(state) { 1924 jQuery(element).parent().parent().addClass('mm_lvtColDataHover').removeClass('mm_lvtColData'); 1925 } else { 1926 jQuery(element).parent().parent().addClass('mm_lvtColData').removeClass('mm_lvtColDataHover'); 1927 } 1928 1929 var allChecked = false; 1930 if (state) { 1931 var allChecked = true; 1932 var elements = jQuery('[name="mc_box"]'); 1933 for(var i=0; i<elements.length; i++) { 1934 var element = jQuery(elements[i]); 1935 var isChecked = jQuery(element).parent().parent().hasClass('mm_lvtColDataHover'); 1936 if (!isChecked) { 1937 var allChecked = false; 1938 break; 1939 } 1940 } 1941 } 1942 jQuery('#parentCheckBox').attr('checked', allChecked); 1943 }, 1944 1945 highLightListMail : function(element) { 1946 jQuery(element).addClass('mm_lvtColDataHover').removeClass('mm_lvtColData'); 1947 }, 1948 1949 unHighLightListMail : function(element) { 1950 jQuery(element).addClass('mm_lvtColData').removeClass('mm_lvtColDataHover'); 1951 var state = jQuery(element).find('input:nth-child(1)')[0].checked; 1952 if(state){ 1953 jQuery(element).addClass('mm_lvtColDataHover'); 1954 } 1955 }, 1956 1957 addRequiredElements : function() { 1958 var option = jQuery('#search_type').val(); 1959 var dateformat = jQuery('#jscal_dateformat').val(); 1960 var element = jQuery('#search_txt'); 1961 if(option == 'ON') { 1962 element.closest('div').addClass('date') 1963 element.addClass('dateField').attr('data-date-format', dateformat); 1964 element.after(" <span class='add-on'><i class='icon-calendar'></i></span>"); 1965 jQuery('#search_txt').val(""); 1966 app.registerEventForDatePickerFields(jQuery('.dateField'), true); 1967 } else { 1968 element.closest('div').removeClass('date'); 1969 element.removeClass('dateField').removeAttr('data-date-format'); 1970 element.unbind('focus'); 1971 element.next().remove("span.add-on"); 1972 jQuery('#jscal_trigger_fval').hide(); 1973 } 1974 }, 1975 1976 getFoldersList: function() { 1977 var foldersList = jQuery('#foldersList').val(); 1978 if (typeof foldersList !== 'undefined') { 1979 var imageEle = jQuery('.imageElement'); 1980 if (jQuery('#foldersList').hasClass('hide')) { 1981 var imagePath = imageEle.data('downimage'); 1982 jQuery('#foldersList').removeClass('hide'); 1983 } else { 1984 var imagePath = imageEle.data('rightimage'); 1985 jQuery('#foldersList').addClass('hide'); 1986 } 1987 imageEle.attr('src', imagePath); 1988 } else { 1989 var progressElement = jQuery('#folders'); 1990 progressElement.progressIndicator(); 1991 1992 var imageEle = jQuery('.imageElement'); 1993 var imagePath = imageEle.data('downimage'); 1994 imageEle.attr('src', imagePath); 1995 1996 if(MailManager_QuickCreate_Js.foldersClicked == false) { 1997 AppConnector.request(MailManager._baseurl() + "_operation=folder&_operationarg=getFoldersList").then(function(response) { 1998 response = JSON.parse(response); 1999 jQuery('#folders').append(response.result); 2000 progressElement.progressIndicator({'mode':'hide'}); 2001 MailManager_QuickCreate_Js.foldersClicked = true; 2002 }); 2003 } 2004 } 2005 }, 2006 2007 triggerUI5Resize: function() { 2008 if (parent.resizeUI5Iframe) parent.resizeUI5Iframe(self.document.body.scrollHeight); 2009 } 2010 } 2011 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Fri Nov 28 20:08:37 2014 | Cross-referenced by PHPXref 0.7.1 |