/*+********************************************************************************** * The contents of this file are subject to the vtiger CRM Public License Version 1.1 * ("License"); You may not use this file except in compliance with the License * The Original Code is: vtiger CRM Open Source * The Initial Developer of the Original Code is vtiger. * Portions created by vtiger are Copyright (C) vtiger. * All Rights Reserved. ************************************************************************************/ Vtiger_Header_Js.extend('MailManager_QuickCreate_Js', { foldersClicked : false }, { registerQuickCreatePostLoadEvents: function(form, params) { var thisInstance = this; form.find('#goToFullForm').remove(); form.on('click','.cancelLink',function() { MailManager.resetLinkToDropDown(); }); form.on('submit', function(e){ var invalidFields = form.data('jqv').InvalidFields; if (invalidFields.length > 0) { //If validation fails, form should submit again form.removeData('submit'); form.closest('#globalmodal').find('.modal-header h3').progressIndicator({ 'mode': 'hide' }); e.preventDefault(); return; } var recordPreSaveEvent = jQuery.Event(Vtiger_Edit_Js.recordPreSave); form.trigger(recordPreSaveEvent, {'value': 'edit', 'module': form.find('[name="module"]').val()}); if (!(recordPreSaveEvent.isDefaultPrevented())) { MailManager.mail_associate_create(form, jQuery('form[name="relationship"]')); } e.preventDefault(); }); thisInstance.registerTabEventsInQuickCreate(form); } }); if (typeof(MailManager) == 'undefined') { // Legacy classes used if (typeof VtigerJS_DialogBox == 'undefined') { VtigerJS_DialogBox = { block: function() { }, unblock: function() { } } } if (typeof Form == 'undefined') { Form = { serialize: function(form) { return jQuery(form).serialize(); } } } /* * Namespaced javascript class for MailManager */ MailManager = { MailManagerUploadLimit : 6, /* * Utility function * Usage: * var output = MailManager.sprintf("String format %s, Number format %s", "VALUE", 10); */ sprintf: function(){ var printString = arguments[0]; for (var i = 1; i < arguments.length; ++i) { // Replace any %s, %d, %c with the variables. // TODO Format the argument w.r.t to format specifier printString = printString.replace(/%[a-z]+/, arguments[i]); } return printString; }, /* Show error message */ show_error: function(message){ var errordiv = jQuery('#_messagediv_'); if (message == '') { errordiv.text('').hide(); } else { errordiv.html('

' + message + '

').css('display','block').addClass('mm_error').removeClass('mm_message'); MailManager.placeAtCenter(errordiv); } MailManager.hide_error(); }, hide_error: function() { setTimeout( function() { jQuery('#_messagediv_').hide(); }, 5000); }, show_message: function(message){ var errordiv = jQuery('#_messagediv_'); if (message == '') { errordiv.text('').hide(); } else { errordiv.html('

' + message + '

').css('display','block').removeClass('mm_error').addClass('mm_message'); MailManager.placeAtCenter(errordiv); } MailManager.hide_error(); }, /* Base url for any ajax actions */ _baseurl: function(){ return "index.php?module=MailManager&view=Index&"; }, /* Translation support */ i18n: function(key){ return app.vtranslate(key); }, /* Build the main ui */ mainui: function(){ var isMailBoxExists = jQuery('#isMailBoxExists').val(); if (isMailBoxExists == 1) { MailManager.openCurrentFolder(); } setTimeout(function() { if (isMailBoxExists == 1) { jQuery("#_folderprogress_").show(); MailManager.mail_open_meta = {}; if (MailManager.mail_reply_rteinstance) { MailManager.mail_reply_rteinstance.destroy(); MailManager.mail_reply_rteinstance = false; } var message = app.vtranslate('JSLBL_Loading_Please_Wait')+' ....'; var progressIndicatorElement = jQuery.progressIndicator({ 'message' : message, 'position' : 'html', 'blockInfo' : { 'enabled' : true } }); } AppConnector.request(MailManager._baseurl() + "_operation=mainui").then(function(response) { //var response = MailManager.removeHidElement(transport.responseText); response = JSON.parse(response); MailManager._mainui_callback(response); if (isMailBoxExists == 1) { progressIndicatorElement.progressIndicator({ 'mode' : 'hide' }) jQuery("#_folderprogress_").hide(); var timeOut = jQuery("#refresh_timeout").val(); if(timeOut != "" && timeOut !=0) { setInterval(MailManager.updateMailFolders, timeOut); } // Update the seleted folders to highlight them. jQuery('.defaultContainer').addClass('show'); jQuery('.defaultContainer').removeClass('hide'); } else { jQuery('.defaultContainer').addClass('hide'); jQuery('.defaultContainer').removeClass('show'); } var folderName = jQuery('#mm_selected_folder').val(); MailManager.updateSelectedFolder(folderName); }); }, 400); }, openCurrentFolder : function() { if(jQuery("#mailbox_folder")) { var currentFolder = jQuery("#mailbox_folder").val(); // This is added as we will be settings mailbox_folder with the current selected folder. // By this time we would have lost the last mailbox folder also if(currentFolder == 'mm_drafts') currentFolder = 'INBOX'; if(currentFolder) { MailManager.folder_open(currentFolder); }else { MailManager.folder_open('INBOX'); } } else { MailManager.folder_open('INBOX'); } }, updateMailFolders : function() { AppConnector.request(MailManager._baseurl() + "_operation=mainui").then(function(response) { //var response = MailManager.removeHidElement(transport.responseText); response = JSON.parse(response); jQuery('#_mainfolderdiv_').html(response['result']['ui']); MailManager.refreshCurrentFolder(); // this is used to refresh the mails in the folders var folderName = jQuery('#mm_selected_folder').val(); MailManager.updateSelectedFolder(folderName); MailManager.triggerUI5Resize(); } ); }, quicklinks_update: function() { AppConnector.request(MailManager._baseurl() + "_operation=mainui&_operationarg=_quicklinks").then(function(response) { //var response = MailManager.removeHidElement(transport.responseText); response = JSON.parse(response); jQuery("#_quicklinks_mainuidiv_").html(response['result']['ui']); } ); }, showSelectFolderDesc: function() { jQuery(".selectFolderValue").addClass('hide'); jQuery(".selectFolderDesc").show(); jQuery(".selectFolderDesc").removeClass('hide'); }, /* Intermedidate call back to build main ui */ _mainui_callback: function(responseJSON){ jQuery('#_mainfolderdiv_').html(responseJSON['result']['ui']); if (!responseJSON['result']['mailbox']) { MailManager.open_settings_detail(); } MailManager.triggerUI5Resize(); }, moveMail : function(element) { function execute() { var temp = new Array(); function getCheckedMails() { var cb_elements = jQuery('[name="mc_box"]'); for (var i = 0; i < cb_elements.length; i++) { if (cb_elements[i].checked) { temp.push(cb_elements[i].value); } } } function validate() { getCheckedMails(); // Check the selected mails if(temp.length < 1) { alert(app.vtranslate('JSLBL_PLEASE_SELECT_ATLEAST_ONE_MAIL')); MailManager.resetFolderDropDown(); return false; } return true; } function callbackFunction(response) { for(var i = 0; i"); app.registerEventForDatePickerFields(element, true); } }else { element.closest('div').removeClass('date'); element.removeClass('dateField').removeAttr('data-date-format'); element.unbind('focus'); element.next().remove("span.add-on"); jQuery('#jscal_trigger_fval').hide(); } MailManager.triggerUI5Resize(); } ); }, updateSelectedFolder : function(currentSelectedFolder) { var prevFolderName = jQuery('#mm_selected_folder').val(); if (jQuery('[id="_mailfolder_' + prevFolderName +'"]') && prevFolderName != currentSelectedFolder) { jQuery('[id="_mailfolder_' + prevFolderName +'"]').removeClass('mm_folder_selected'); jQuery('[id="_mailfolder_' + prevFolderName +'"]').parent().removeClass('mm_folder_selected_background'); } jQuery('[id="_mailfolder_'+ currentSelectedFolder +'"]').addClass('mm_folder_selected'); jQuery('[id="_mailfolder_'+ currentSelectedFolder +'"]').parent().addClass('mm_folder_selected_background'); }, bindEnterKeyForSearch : function() { jQuery("#search_txt").keyup(function (event) { if(event.keyCode == 13){ jQuery("#mm_search").click(); } }); }, updateMoveFolderList : function() { if(jQuery('#mailbox_folder') && jQuery('#moveFolderList')) { var currentFolder = jQuery('#mailbox_folder').val(); jQuery('#moveFolderList').find("option[value='"+currentFolder+"']").remove(); } }, refreshCurrentFolder: function(){ var selectedFolder = jQuery('#mm_selected_folder').val(); var currentFolderName = jQuery("#mailbox_folder").val(); //check if the mail is open var mail = jQuery('#_contentdiv2_').css('display'); if(selectedFolder == currentFolderName && currentFolderName !='mm_drafts' && mail != 'block') { MailManager.folder_open(currentFolderName, 0); } }, /* Update count of unread mails on folder */ folder_updateCount: function(folder, count){ if (jQuery('#_mailfolder_' + folder)) { if (count) { jQuery('#_mailfolder_' + folder).addClass('mm_folder_selected').html(MailManager.sprintf("%s (%s)", folder, count)); } else { jQuery('#_mailfolder_' + folder).addClass('mm_folder_selected').html(MailManager.sprintf("%s", folder)); } } }, /* Basic search for folder emails */ search_basic: function(form){ var frmparams = Form.serialize(form); var message = app.vtranslate('JSLBL_Searching')+' ...'; var progressIndicatorElement = jQuery.progressIndicator({ 'message' : message, 'position' : 'html', 'blockInfo' : { 'enabled' : true } }); AppConnector.request(MailManager._baseurl() + "_operation=folder&_operationarg=open&" + frmparams).then(function(response) { response = JSON.parse(response); progressIndicatorElement.progressIndicator({ 'mode' : 'hide' }) MailManager.mail_close(); //var response = MailManager.removeHidElement(transport.responseText); jQuery('#_contentdiv_').html(response.result); MailManager.triggerUI5Resize(); } ); return false; }, // Meta information of currently opened mail mail_open_meta: {}, /* Open email */ mail_open: function(folder, msgno){ var message = app.vtranslate('JSLBL_Opening')+' ...'; var progressIndicatorElement = jQuery.progressIndicator({ 'message' : message, 'position' : 'html', 'blockInfo' : { 'enabled' : true } }); jQuery('#_mailrow_' + msgno).removeClass('fontBold'); jQuery('#_mailrow_' + msgno).addClass('mm_normal'); AppConnector.request(MailManager._baseurl() + "_operation=mail&_operationarg=open&_folder=" + encodeURIComponent(folder) + "&_msgno=" + encodeURIComponent(msgno)).then(function(responseJSON) { responseJSON = JSON.parse(responseJSON); progressIndicatorElement.progressIndicator({ 'mode' : 'hide' }) //var response = MailManager.removeHidElement(transport.responseText); //var responseJSON = JSON.parse(response); var resultJSON = responseJSON['result']; if (!resultJSON['ui']) { Vtiger_Helper_Js.showPnotify(app.vtranslate('JSLBL_Failed_To_Open_Email')); return; } MailManager.close_all(); jQuery('#_contentdiv2_').show(); jQuery('#_contentdiv2_').html(resultJSON['ui']); MailManager.mail_open_meta = resultJSON['meta']; var folderName = resultJSON['folder']; // Update folder count on UI MailManager.folder_updateCount(folderName, resultJSON['unread']); MailManager.mail_find_relationship(); } ); }, /* Close email */ mail_close: function(){ MailManager.close_all(); jQuery('#_contentdiv_').show(); MailManager.mail_open_meta = {}; }, /* Mark mail as read */ mail_mark_unread: function(folder, msgno){ var message = app.vtranslate('JSLBL_Updating')+' ...'; var progressIndicatorElement = jQuery.progressIndicator({ 'message' : message, 'position' : 'html', 'blockInfo' : { 'enabled' : true } }); AppConnector.request(MailManager._baseurl() + "_operation=mail&_operationarg=mark&_markas=unread&_folder=" + encodeURIComponent(folder) + "&_msgno=" + encodeURIComponent(msgno)).then(function(responseJSON) { responseJSON = JSON.parse(responseJSON); progressIndicatorElement.progressIndicator({ 'mode' : 'hide' }) //var response = MailManager.removeHidElement(transport.responseText); //var responseJSON = JSON.parse(response); var resultJSON = responseJSON['result']; if (responseJSON && resultJSON['status']) { MailManager.mail_close(); var msgno = resultJSON['msgno']; jQuery('#_mailrow_' + msgno).removeClass('mm_normal'); jQuery('#_mailrow_' + msgno).addClass('fontBold'); MailManager.folder_updateCount(resultJSON['folder'], resultJSON['unread']); } } ); }, /*Print email */ mail_print: function(){ var subject = jQuery('#_mailopen_subject').html(); var from = jQuery('#_mailopen_from').html(); var to = jQuery('#_mailopen_to').html(); var cc = jQuery('#_mailopen_cc') ? jQuery('#_mailopen_cc').html() : ''; var date = jQuery('#_mailopen_date').html(); var body = jQuery('#_mailopen_body').html(); var content = window.open(); content.document.write(""+subject+"
"); content.document.write("
From :" +from +"
"); content.document.write("To :" +to+"
"); cc == null ? '' : content.document.write("CC :" +cc+"
"); content.document.write("Date :" + date+"
"); content.document.write("
"+body +"
"); content.print(); }, /* Lookup for mail relations in CRM */ mail_find_relationship: function(){ jQuery('#_mailrecord_findrel_btn_').html(MailManager.i18n('JSLBL_Finding_Relation') + '...'); jQuery("#_mailrecord_findrel_btn_").attr('disabled', true); var meta = MailManager.mail_open_meta; AppConnector.request(MailManager._baseurl() + "_operation=relation&_operationarg=find&_mfrom=" + encodeURIComponent(meta['from']) + '&_folder=' +encodeURIComponent(meta['folder']) +'&_msgno=' +encodeURIComponent(meta['msgno']) +'&_msguid=' + encodeURIComponent(meta['msguid'].replace('<', '<').replace('>', '>'))).then(function(responseJSON) { responseJSON = JSON.parse(responseJSON); jQuery('#_mailrecord_findrel_btn_').html(MailManager.i18n('JSLBL_Find_Relation_Now')); jQuery("#_mailrecord_findrel_btn_").attr('disabled', false); jQuery('#_mailrecord_findrel_btn_').hide(); //var response = MailManager.removeHidElement(transport.responseText); //var responseJSON = JSON.parse(response); var resultJSON = responseJSON['result']; jQuery('#_mailrecord_relationshipdiv_').html(resultJSON['ui']); MailManager.triggerUI5Resize(); } ); }, /* Associate email to CRM record */ mail_associate: function(form){ var frmparams = Form.serialize(form); // No record is selected for linking? if (frmparams.indexOf('_mlinkto') == -1) return; var message = app.vtranslate('JSLBL_Associating')+' ...'; var progressIndicatorElement = jQuery.progressIndicator({ 'message' : message, 'position' : 'html', 'blockInfo' : { 'enabled' : true } }); AppConnector.request(MailManager._baseurl() + "_operation=relation&_operationarg=link&" + frmparams).then(function(responseJSON) { progressIndicatorElement.progressIndicator({ 'mode' : 'hide' }) //var response = MailManager.removeHidElement(transport.responseText); //var responseJSON = JSON.parse(response); var resultJSON = responseJSON['result']; if (resultJSON['ui']) { jQuery('#_mailrecord_relationshipdiv_').html(resultJSON['ui']); } MailManager.triggerUI5Resize(); } ); }, /* Extended support for creating and linking */ mail_associate_create_wizard: function(form){ if (form._mlinktotype.value == '') { MailManager.mail_associate_create_cancel(); return; } var thisInstance = this; var message = app.vtranslate('JSLBL_Loading')+' ...'; var progressIndicatorElement = jQuery.progressIndicator({ 'message' : message, 'position' : 'html', 'blockInfo' : { 'enabled' : true } }); var frmparams = Form.serialize(form); AppConnector.request(MailManager._baseurl() + "_operation=relation&_operationarg=create_wizard&" + frmparams).then(function(response) { var quickCreateController = new MailManager_QuickCreate_Js(); quickCreateController.handleQuickCreateData(response); } ); }, /* This will be used to perform actions on mails with an Linked record*/ mail_associate_actions : function(form) { var selected = false; if(form._mlinkto.length != undefined) { for(i=0; i' + '
'+MailManager.i18n('JSLBL_UPLOAD_DROPFILES')+'
' + '
'+MailManager.i18n('JSLBL_UPLOAD_FILE')+'
' + '' + '', // template for one item in file list fileTemplate: '
  • ' + '' + '' + '' + ''+MailManager.i18n('JSLBL_UPLOAD_CANCEL')+'' + '\n\ ' + ''+MailManager.i18n('JSLBL_UPLOAD_FAILED')+'' + '
  • ', multiple: false, classes: { // used to get elements from templates button: 'qq-upload-button', drop: 'qq-upload-drop-area', dropActive: 'qq-upload-drop-area-active', list: 'qq-upload-list', file: 'qq-upload-file', spinner: 'qq-upload-spinner', size: 'qq-upload-size', cancel: 'qq-upload-cancel', deleteupload: 'qq-upload-deleteupload', // added to list item when upload completes // used in css to hide progress spinner success: 'qq-upload-success', fail: 'qq-upload-fail' } }); return uploader; }, //draft mail_draft: function(id, edit){ var params = {module: "Emails", view: "ComposeEmail", mode: "emailPreview", record: id} if (typeof edit != 'undefined' && edit) params['mode'] = 'emailEdit'; var emailEditInstance = new Emails_MassEdit_Js(); var win = emailEditInstance.showComposeEmailForm(params); var folder = jQuery('#mailbox_folder').val(); if (folder == 'mm_drafts') { var timer = setInterval(function() { if(win.closed) { clearInterval(timer); MailManager.folder_drafts(0); } }, 500); } }, deleteAttachment : function(id, docid, ele) { var message = app.vtranslate('JSLBL_Loading')+' ...'; var progressIndicatorElement = jQuery.progressIndicator({ 'message' : message, 'position' : 'html', 'blockInfo' : { 'enabled' : true } }); AppConnector.request(MailManager._baseurl() + "_operation=mail&_operationarg=deleteAttachment&emailid="+ encodeURIComponent(id) +"&docid="+ encodeURIComponent(docid)).then(function(responseJSON) { responseJSON = JSON.parse(responseJSON); progressIndicatorElement.progressIndicator({ 'mode' : 'hide' }) //var responseJSON = JSON.parse(response.responseText); if(responseJSON.result.success == true) { jQuery(ele).parent().fadeTo('slow', 0.0, function(){ var count = jQuery('#attachmentCount').val(); jQuery('#attachmentCount').val(--count); jQuery(ele).parent().remove(); }); } else { Vtiger_Helper_Js.showPnotify(app.vtranslate('JSLBL_ATTACHMENT_NOT_DELETED')); } } ); }, /* Reply to mail */ mail_reply: function(all){ if (typeof(all) == 'undefined') all = true; // TODO Strip invalid HTML? var from = jQuery('#_mailopen_from').html(); var cc = all ? jQuery('#_mailopen_cc').html() : ''; var subject = jQuery('#_mailopen_subject').html(); var body = jQuery('#_mailopen_body').html(); var date = jQuery('#_mailopen_date').html(); var replySubject = (subject.toUpperCase().indexOf('RE:') == 0) ? subject : 'Re: ' + subject; var replyBody = MailManager.sprintf('

    %s, %s, %s:

    %s

    ', 'On ' + date, from, 'wrote', body); function fillComposeEmailForm(win) { var formValues = { '#ccContainer input' : cc, '[name="subject"]': replySubject } var rteValues = { 'description': replyBody } win['app']['setFormValues'](formValues); win['app']['setRTEValues'](rteValues); if (cc) { win['jQuery']('#ccLink').trigger('click'); } } var params = {step: "step1", module: "MailManager", view: "MassActionAjax", mode: "showComposeEmailForm", selected_ids:"[]", excluded_ids: "[]", to:'["'+from+'"]'} Vtiger_Index_Js.showComposeEmailPopup(params, function(win){ if (typeof win != 'undefined') { setTimeout(function() {fillComposeEmailForm(win);}, 2000); } }); }, /* Track and Initialize RTE instance for reply */ mail_reply_rteinstance: false, mail_reply_rteinit: function(data){ if (MailManager.mail_reply_rteinstance == false) { var textAreaName = '_mail_replyfrm_body_'; CKEDITOR.replace(textAreaName, { toolbar: 'Full', extraPlugins: 'uicolor', uiColor: '#dfdff1' }); MailManager.mail_reply_rteinstance = CKEDITOR.instances[textAreaName]; } MailManager.mail_reply_rteinstance.setData(data, function(){ }); MailManager.mail_reply_rteinstance.focus(); }, /* Close reply UI */ mail_reply_close: function(){ jQuery('#_replydiv_').hide(); if(jQuery('#mm_selected_folder').val()=='mm_settings'){ MailManager.open_settings(); } else{ var contentDiv2 = jQuery('#_contentdiv2_').html(); if (contentDiv2 == '') { jQuery('#_contentdiv_').show(); } else { jQuery('#_contentdiv2_').show(); } // Updated to highlight selected folder var currentSelectedFolder = jQuery('#mailbox_folder').val(); MailManager.updateSelectedFolder(currentSelectedFolder); jQuery('#mm_selected_folder').val(currentSelectedFolder); } MailManager.triggerUI5Resize(); }, /* Forward email */ mail_forward: function(messageId){ /** * If mail has no attachment - open the popup in compose mode. * Else create a draft with attachment - open the popup as draft edit mode. */ var from = jQuery('#_mailopen_from').html(); var to = jQuery('#_mailopen_to').html(); var cc = jQuery('#_mailopen_cc') ? jQuery('#_mailopen_cc').html() : ''; var subject = jQuery('#_mailopen_subject').html(); var body = jQuery('#_mailopen_body').html(); var date = jQuery('#_mailopen_date').html(); var folder = jQuery('#mailbox_folder').val(); var fwdMsgMetaInfo = MailManager.i18n('JSLBL_FROM') + from + '
    '+MailManager.i18n('JSLBL_DATE') + date + '
    '+MailManager.i18n('JSLBL_SUBJECT') + subject; if (to != '' && to != null) fwdMsgMetaInfo += '
    '+MailManager.i18n('JSLBL_TO') + to; if (cc != '' && cc != null) fwdMsgMetaInfo += '
    '+MailManager.i18n('JSLBL_CC') + cc; fwdMsgMetaInfo += '
    '; var fwdSubject = (subject.toUpperCase().indexOf('FWD:') == 0) ? subject : 'Fwd: ' + subject; var fwdBody = MailManager.sprintf('

    %s
    %s

    %s', MailManager.i18n('JSLBL_FORWARD_MESSAGE_TEXT'), fwdMsgMetaInfo, body); var attachmentCount = jQuery("#_mail_attachmentcount_").val(); if(attachmentCount) { VtigerJS_DialogBox.block(); AppConnector.request(MailManager._baseurl() + "_operation=mail&_operationarg=forward&messageid=" + encodeURIComponent(messageId) +"&folder=" + encodeURIComponent(folder) +"&subject=" + encodeURIComponent(fwdSubject) + "&body=" + fwdBody).then(function(responseJSON) { responseJSON = JSON.parse(responseJSON); VtigerJS_DialogBox.unblock(); // Open the draft the was saved. if (responseJSON['success']) { MailManager.mail_draft(responseJSON['result']['emailid'], true); } } ); } else { // Populate the popup window function fillComposeEmailForm(win) { var formValues = { '[name="subject"]': fwdSubject } var rteValues = { 'description': fwdBody } win['app']['setFormValues'](formValues); win['app']['setRTEValues'](rteValues); } var params = {step: "step1", module: "MailManager", view: "MassActionAjax", mode: "showComposeEmailForm", selected_ids:"[]", excluded_ids: "[]"} Vtiger_Index_Js.showComposeEmailPopup(params, function(win){ if (typeof win != 'undefined') { setTimeout(function() {fillComposeEmailForm(win);}, 2000); } }); } }, /* Send reply to email */ mail_reply_send: function(form){ if (MailManager.mail_reply_rteinstance) { MailManager.mail_reply_rteinstance.updateElement(); } var meta = MailManager.mail_open_meta; var msguid = encodeURIComponent(meta['msguid'] ? meta['msguid'].replace('<', '<').replace('>', '>') : ''); if(!MailManager.validateEmailFields(form.to.value, form.cc.value, form.bcc.value)) { return false; } if (form.to.value == '') { Vtiger_Helper_Js.showPnotify(app.vtranslate('JSLBL_Recepient_Cannot_Be_Empty')); return false; } if (form.subject.value == '') { Vtiger_Helper_Js.showPnotify(app.vtranslate('JSLBL_Subject_Cannot_Be_Empty')); return false; } var bodyval = $('_mail_replyfrm_body_').value.trim(); if (bodyval == '
    ' || bodyval == '') { Vtiger_Helper_Js.showPnotify(app.vtranslate('JSLBL_Body_Cannot_Be_Empty')); return false; } var message = app.vtranslate('JSLBL_Sending')+' ...'; var progressIndicatorElement = jQuery.progressIndicator({ 'message' : message, 'position' : 'html', 'blockInfo' : { 'enabled' : true } }); var params = { '_operation':'mail', '_operationarg':'send', '_msgid':msguid, 'to':encodeURIComponent(form.to.value), 'cc':encodeURIComponent(form.cc.value), 'bcc':encodeURIComponent(form.bcc.value), 'subject':encodeURIComponent(form.subject.value), 'body':encodeURIComponent(form.body.value), 'linkto':encodeURIComponent(form.linkto.value), 'emailid':encodeURIComponent(form.emailid.value) }; var baseurl = MailManager._baseurl(); MailManager.Request(baseurl, params, function(transport) { progressIndicatorElement.progressIndicator({ 'mode' : 'hide' }) var response = MailManager.removeHidElement(transport.responseText); var responseJSON = JSON.parse(response); if (responseJSON['success']) { MailManager.mail_reply_close(); MailManager.show_message(MailManager.i18n('JSLBL_MAIL_SENT')); } else { Vtiger_Helper_Js.showPnotify(app.vtranslate('JSLBL_Failed_To_Send_Mail') + ': ' + responseJSON['error']['message']); } }); }, /* Send reply to email */ save_draft: function(form){ if (MailManager.mail_reply_rteinstance) { MailManager.mail_reply_rteinstance.updateElement(); } if(!MailManager.validateEmailFields(form.to.value, form.cc.value, form.bcc.value)) { return false; } if (form.subject.value == '' ) { if(!confirm(MailManager.i18n('JSLBL_SaveWith_EmptySubject'))) { return false; } } var message = app.vtranslate('JSLBL_Saving')+' ...'; var progressIndicatorElement = jQuery.progressIndicator({ 'message' : message, 'position' : 'html', 'blockInfo' : { 'enabled' : true } }); var params = { '_operation':'mail', '_operationarg':'save', 'emailid':encodeURIComponent(form.emailid.value), 'to':encodeURIComponent(form.to.value), 'cc':encodeURIComponent(form.cc.value), 'bcc':encodeURIComponent(form.bcc.value), 'subject':encodeURIComponent(form.subject.value), 'body':encodeURIComponent(form.body.value), 'linkto':encodeURIComponent(form.linkto.value), 'currentid':encodeURIComponent(form.emailid.value) }; var baseurl = MailManager._baseurl(); MailManager.Request(baseurl, params, function(transport) { progressIndicatorElement.progressIndicator({ 'mode' : 'hide' }) var response = MailManager.removeHidElement(transport.responseText); var responseJSON = JSON.parse(response); if (responseJSON['success']) { MailManager.show_message(MailManager.i18n('JSLBL_DRAFT_MAIL_SAVED')); } else { Vtiger_Helper_Js.showPnotify(app.vtranslate('JSLBL_Failed_To_Save_Mail')); } }); }, folder_drafts: function(page){ var message = app.vtranslate('JSLBL_Loading')+' '+app.vtranslate('JSLBL_Loading'); var progressIndicatorElement = jQuery.progressIndicator({ 'message' : message, 'position' : 'html', 'blockInfo' : { 'enabled' : true } }); var params = { '_operation':'folder', '_operationarg':'drafts', '_page':encodeURIComponent(page) }; var baseurl = MailManager._baseurl(); MailManager.Request(baseurl, params, function(transport) { progressIndicatorElement.progressIndicator({ 'mode' : 'hide' }) MailManager.mail_close(); var resultObject = JSON.parse(transport.responseText); jQuery('#_contentdiv_').html(resultObject.result); // Initialize upload //MailManager.createUploader(); MailManager.bindEnterKeyForSearch(); // Update the selected folder to highlight selected folder MailManager.updateSelectedFolder('mm_drafts'); jQuery('#mm_selected_folder').val('mm_drafts'); jQuery('#mailbox_folder').val('mm_drafts'); MailManager.triggerUI5Resize(); }); }, search_popupui: function(target, handle){ var message = app.vtranslate('JSLBL_Loading')+' ...'; var progressIndicatorElement = jQuery.progressIndicator({ 'message' : message, 'position' : 'html', 'blockInfo' : { 'enabled' : true } }); var params = { '_operation':'search', '_operationarg':'popupui' }; var baseurl = MailManager._baseurl(); MailManager.Request(baseurl, params, function(transport) { progressIndicatorElement.progressIndicator({ 'mode' : 'hide' }) var response = MailManager.removeHidElement(transport.responseText); jQuery('#_popupsearch_').html(response); MailManager.placeAtCenter(jQuery('#_popupsearch_')); jQuery('#_popupsearch_').show().draggable(); MailManager.search_popup_init(target); MailManager.triggerUI5Resize(); }); }, search_popup_init: function(target){ var url = MailManager._baseurl() + "_operation=search&_operationarg=email&"; if (jQuery('#_search_popupui_target_')) { jQuery('#_search_popupui_target_').val(target); } var elem = jQuery('#_search_popupui_input_'); if (elem) { if (elem.attr('_tokeninput_init_')) return; elem.tokenInput(url, { hintText: MailManager.i18n('JSLBL_Search_For_Email') + '...', noResultsText: MailManager.i18n('JSLBL_Nothing_Found'), searchingText: MailManager.i18n('JSLBL_Searching_Please_Wait') + '...', minChars : 3, classes: { tokenList: "token-input-list-facebook", token: "token-input-token-facebook", tokenDelete: "token-input-delete-token-facebook", selectedToken: "token-input-selected-token-facebook", highlightedToken: "token-input-highlighted-token-facebook", dropdown: "token-input-dropdown-facebook", dropdownItem: "token-input-dropdown-item-facebook", dropdownItem2: "token-input-dropdown-item2-facebook", selectedDropdownItem: "token-input-selected-dropdown-item-facebook", inputToken: "token-input-list-facebook" } }); elem.attr('_tokeninput_init_', true); } }, search_consume_input: function(form){ var inputstr = form._search_popupui_input_.value; var target = form._search_popupui_target_.value; // Based on target perform the operation var targetnode = $(target); if (targetnode) { if (targetnode.value.length > 0 && targetnode.value.substr(-1) != ',') { inputstr = ',' + inputstr; } targetnode.value += inputstr; } MailManager.popup_close(); }, popup_close: function(){ jQuery('#_popupsearch_').html(''); jQuery('#_popupsearch_').hide(); MailManager.triggerUI5Resize(); }, clear_input: function(id){ if (jQuery("#"+id)) jQuery("#"+id).val(''); }, selectTemplate: function() { url = 'module=EmailTemplate&parent=Settings&view=List'; var popupInstance = Vtiger_Popup_Js.getInstance(); popupInstance.show(url,function(data){ var responseData = JSON.parse(data); for(var key in responseData){ responseData = responseData[key]; break; } jQuery('#_mail_replyfrm_subject_').val(responseData['name']); CKEDITOR.instances['_mail_replyfrm_body_'].setData(responseData['info']); }); }, removeHidElement: function(jsonresponse){ // PHPSESSID is General value // Session Name should be picked from php.ini var replaceJsonTxt = jsonresponse.replace('/]?/', ''); return replaceJsonTxt; }, massMailDelete: function(folder){ var cb_elements = jQuery('[name="mc_box"]'); var temp = new Array(); var len = jQuery('[name="mc_box"]').length; for (var i = 0; i < len; i++) { if (cb_elements[i].checked) { temp.push(cb_elements[i].value); } } if (temp.length == 0) { return alert(app.vtranslate('JSLBL_NO_EMAILS_SELECTED')); } else { MailManager.maildelete(folder, temp, true); } }, maildelete: function(foldername, msgno, reloadfolder){ var message = app.vtranslate('LBL_DELETE_CONFIRMATION'); if (!confirm(message)) return; var message = app.vtranslate('JSLBL_Deleting')+' ...'; var progressIndicatorElement = jQuery.progressIndicator({ 'message' : message, 'position' : 'html', 'blockInfo' : { 'enabled' : true } }); var params = { '_operation':'mail', '_operationarg':'delete', '_folder':encodeURIComponent(foldername), '_msgno':encodeURIComponent(msgno) }; var baseurl = MailManager._baseurl(); MailManager.Request(baseurl, params, function() { for(var i = 0;i"); app.registerEventForDatePickerFields(element, true); } }else { element.closest('div').removeClass('date'); element.removeClass('dateField').removeAttr('data-date-format'); element.unbind('focus'); element.next().remove("span.add-on"); jQuery('#jscal_trigger_fval').hide(); } MailManager.triggerUI5Resize(); MailManager.bindEnterKeyForSearch(); }); return false; }, add_data_to_relatedlist: function(res){ var fileSize, attachContent, element; fileSize = MailManager.computeDisplayableFileSize(res['size']); if(res.error != undefined) { attachContent = "
  • "+res['name']+"\n\ "+fileSize+"\n\ Failed"; element = jQuery(window.opener.document).find('.qq-upload-list'); jQuery(element[0]).append(attachContent); window.close(); return false; } attachContent = "
  • "+res['name']+"\n\ "+fileSize+"\n\ \n\
  • "; try { element = jQuery(window.opener.document).find('.qq-upload-list'); if(element[0]) { jQuery(element[0]).append(attachContent); } else { element = jQuery.find('.qq-upload-list'); jQuery(element[0]).append(attachContent); } window.close(); } catch(e) { element = jQuery.find('.qq-upload-list'); jQuery(element[0]).append(attachContent); } // Update the attachment counter MailManager.uploadCountUpdater(); }, computeDisplayableFileSize : function(size) { var fileSize; if(size <= 1024) { fileSize = size+"b"; } else if(size > 1024 && size < 1048576) { fileSize = (Math.round(size/1024))+"kB"; } else if(size > (1024*1024)) { fileSize = (Math.round(size/(1024*1024)))+"MB"; } else { fileSize = size; } return fileSize; }, validateEmailFields : function(to, cc, bcc) { if(to != "") { if(!MailManager.mail_validate(to)) { return false; } } if(cc != "") { if(!MailManager.mail_validate(cc)) { return false; } } if(bcc != "") { if(!MailManager.mail_validate(bcc)) { return false; } } return true; }, mail_validate : function(str) { 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]+)?$/; arr = new Array(); arr = str.split(","); var tmp; for(var i=0; i<=arr.length-1; i++) { tmp = arr[i]; if(tmp.match('<') && tmp.match('>')) { if(!MailManager.findAngleBracket(arr[i])) { var errorMsg = app.vtranslate('JSLBL_EMAIL_FORMAT_INCORRECT'); Vtiger_Helper_Js.showPnotify(errorMsg+": "+arr[i]); return false; } } else if(trim(arr[i]) != "" && !(email_regex.test(trim(arr[i])))) { var errorMsg2 = app.vtranslate('JSLBL_EMAIL_FORMAT_INCORRECT'); Vtiger_Helper_Js.showPnotify(errorMsg2+": "+arr[i]); return false; } } return true; }, findAngleBracket : function (mailadd) { var strlen = mailadd.length; var gt = 0; var lt = 0; var ret = ''; for(i=0 ;i' && lt == 1) { gt = 1; } if(mailadd.charAt(i) != '<' && lt == 1 && gt == 0) { ret = ret + mailadd.charAt(i); } } if(/^[a-z0-9]([a-z0-9_\-\.]*)@([a-z0-9_\-\.]*)(\.[a-z]{2,3}(\.[a-z]{2}){0,2})$/.test(ret)){ return true; } else { return false; } }, uploadCountUpdater : function() { var countElement; if(jQuery('#attachmentCount').length) { countElement = jQuery('#attachmentCount'); } else { countElement = jQuery(window.opener.document).find('#attachmentCount'); } var MailManagerCurrentUploadCount = countElement.val(); if(MailManagerCurrentUploadCount == null || MailManagerCurrentUploadCount == "") { MailManagerCurrentUploadCount = 0; } countElement.val(++MailManagerCurrentUploadCount); }, checkUploadCount : function() { var MailManagerCurrentUploadCount = jQuery("#attachmentCount").val(); if(MailManagerCurrentUploadCount >= MailManager.MailManagerUploadLimit) { Vtiger_Helper_Js.showPnotify(app.vtranslate('JSLBL_FILEUPLOAD_LIMIT_EXCEEDED')); return false; } return true; }, AjaxDuplicateValidate : function (module, fieldname, form) { var deferred = jQuery.Deferred(); function execute() { var fieldvalue = encodeURIComponent(trim(getObj(fieldname).value)); var recordid = getObj('record').value; function validate() { if(fieldvalue == '') { Vtiger_Helper_Js.showPnotify(app.vtranslate('JSLBL_ACCOUNTNAME_CANNOT_EMPTY')); deffered.reject(form); return false; } return true; } function requestOnComplete(response) { var str = response.responseText; VtigerJS_DialogBox.unblock(); if(str.indexOf('SUCCESS') > -1) { deferred.resolve(form); } else { alert(str); deferred.reject(form); } } if(validate()) { VtigerJS_DialogBox.block(); var params = { 'module':encodeURIComponent(module), 'action':encodeURIComponent(module)+"Ajax", 'file':'Save', 'dup_check':true, 'record':encodeURIComponent(recordid) }; params[fieldname] = encodeURIComponent(fieldvalue); MailManager.Request('index.php?', params, requestOnComplete); VtigerJS_DialogBox.unblock(); } } // Trigger the function call execute(); return deferred.promise(); }, Request : function(url, params, callback) { //var encodedParams = MailManager.getEncodedParameterString(params); return jQuery.ajax( { url : url, type : 'POST', data : params, complete : function(response) { callback(response); } }); }, getEncodedParameterString : function (paramObject){ var encodedParams = new Array(); for(key in paramObject) { encodedParams.push(key+'='+ paramObject[key]); } encodedParams = encodedParams.join('&'); return encodedParams; }, clearSearchString : function() { jQuery('#search_txt').val(""); jQuery('#search_type').val(""); }, resetLinkToDropDown : function() { jQuery('#_mlinktotype').val(""); }, resetFolderDropDown : function() { jQuery('#moveFolderList').val("") }, toggleSelect : function(state, relCheckName) { var elements = jQuery('[name='+relCheckName+']'); for(i=0; i"); jQuery('#search_txt').val(""); app.registerEventForDatePickerFields(jQuery('.dateField'), true); } else { element.closest('div').removeClass('date'); element.removeClass('dateField').removeAttr('data-date-format'); element.unbind('focus'); element.next().remove("span.add-on"); jQuery('#jscal_trigger_fval').hide(); } }, getFoldersList: function() { var foldersList = jQuery('#foldersList').val(); if (typeof foldersList !== 'undefined') { var imageEle = jQuery('.imageElement'); if (jQuery('#foldersList').hasClass('hide')) { var imagePath = imageEle.data('downimage'); jQuery('#foldersList').removeClass('hide'); } else { var imagePath = imageEle.data('rightimage'); jQuery('#foldersList').addClass('hide'); } imageEle.attr('src', imagePath); } else { var progressElement = jQuery('#folders'); progressElement.progressIndicator(); var imageEle = jQuery('.imageElement'); var imagePath = imageEle.data('downimage'); imageEle.attr('src', imagePath); if(MailManager_QuickCreate_Js.foldersClicked == false) { AppConnector.request(MailManager._baseurl() + "_operation=folder&_operationarg=getFoldersList").then(function(response) { response = JSON.parse(response); jQuery('#folders').append(response.result); progressElement.progressIndicator({'mode':'hide'}); MailManager_QuickCreate_Js.foldersClicked = true; }); } } }, triggerUI5Resize: function() { if (parent.resizeUI5Iframe) parent.resizeUI5Iframe(self.document.body.scrollHeight); } } }