1533 lines
50 KiB
JavaScript
1533 lines
50 KiB
JavaScript
/*+***********************************************************************************
|
|
* The contents of this file are subject to the vtiger CRM Public License Version 1.0
|
|
* ("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_List_Js("MailManager_List_Js", {}, {
|
|
|
|
getContainer : function() {
|
|
return jQuery('.main-container');
|
|
},
|
|
|
|
loadFolders : function(folder) {
|
|
app.helper.showProgress(app.vtranslate("JSLBL_Loading_Please_Wait")+"...");
|
|
var self = this;
|
|
var params = {
|
|
'module' : app.getModuleName(),
|
|
'view' : 'Index',
|
|
'_operation' : 'folder',
|
|
'_operationarg' : 'getFoldersList'
|
|
}
|
|
app.request.post({"data" : params}).then(function(error, responseData) {
|
|
app.helper.hideProgress();
|
|
self.getContainer().find('#folders_list').html(responseData);
|
|
self.getContainer().find('#folders_list').mCustomScrollbar({
|
|
setHeight: 550,
|
|
autoExpandScrollbar: true,
|
|
scrollInertia: 200,
|
|
autoHideScrollbar: true,
|
|
theme : "dark-3"
|
|
});
|
|
self.registerFolderClickEvent();
|
|
if(folder) {
|
|
self.openFolder(folder);
|
|
} else {
|
|
self.openFolder('INBOX');
|
|
}
|
|
self.registerAutoRefresh();
|
|
});
|
|
},
|
|
|
|
registerAutoRefresh : function() {
|
|
var self = this;
|
|
var container = self.getContainer();
|
|
var timeout = parseInt(container.find('#refresh_timeout').val());
|
|
var folder = container.find('.mm_folder.active').data('foldername');
|
|
if(timeout > 0) {
|
|
setTimeout(function() {
|
|
var thisInstance = new MailManager_List_Js();
|
|
if(folder && typeof folder != "undefined") {
|
|
thisInstance.loadFolders(folder);
|
|
} else {
|
|
thisInstance.loadFolders();
|
|
}
|
|
}, timeout);
|
|
}
|
|
},
|
|
|
|
registerFolderClickEvent : function() {
|
|
var self = this;
|
|
var container = self.getContainer();
|
|
container.find('.mm_folder').click(function(e) {
|
|
var folderElement = jQuery(e.currentTarget);
|
|
var folderName = folderElement.data('foldername');
|
|
container.find('.mm_folder').each(function(i, ele) {
|
|
jQuery(ele).removeClass('active');
|
|
});
|
|
folderElement.addClass('active');
|
|
if(folderName == 'vt_drafts') {
|
|
self.openDraftFolder();
|
|
} else {
|
|
self.openFolder(folderName);
|
|
}
|
|
});
|
|
},
|
|
|
|
registerComposeEmail : function() {
|
|
var self = this;
|
|
var container = self.getContainer();
|
|
container.find('#mail_compose').click(function() {
|
|
var params = {
|
|
step : "step1",
|
|
module : "MailManager",
|
|
view : "MassActionAjax",
|
|
mode : "showComposeEmailForm",
|
|
selected_ids : "[]",
|
|
excluded_ids : "[]"
|
|
};
|
|
self.openComposeEmailForm(null, params);
|
|
});
|
|
},
|
|
|
|
registerSettingsEdit : function() {
|
|
var self = this;
|
|
var container = this.getContainer();
|
|
container.find('.mailbox_setting').click(function() {
|
|
app.helper.showProgress(app.vtranslate("JSLBL_Loading_Please_Wait")+"...");
|
|
var params = {
|
|
'module' : 'MailManager',
|
|
'view' : 'Index',
|
|
'_operation' : 'settings',
|
|
'_operationarg' : 'edit'
|
|
};
|
|
var popupInstance = Vtiger_Popup_Js.getInstance();
|
|
popupInstance.showPopup(params, '', function(data) {
|
|
app.helper.hideProgress();
|
|
self.handleSettingsEvents(data);
|
|
self.registerDeleteMailboxEvent(data);
|
|
self.registerSaveMailboxEvent(data);
|
|
});
|
|
});
|
|
},
|
|
|
|
handleSettingsEvents : function(data) {
|
|
var settingContainer = jQuery(data);
|
|
settingContainer.find('#serverType').on('change', function(e) {
|
|
var element = jQuery(e.currentTarget);
|
|
var serverType = element.val();
|
|
var useServer = '', useProtocol = '', useSSLType = '', useCert = '';
|
|
if(serverType == 'gmail' || serverType == 'yahoo') {
|
|
useServer = 'imap.gmail.com';
|
|
if(serverType == 'yahoo') {
|
|
useServer = 'imap.mail.yahoo.com';
|
|
}
|
|
useProtocol = 'IMAP4';
|
|
useSSLType = 'ssl';
|
|
useCert = 'novalidate-cert';
|
|
settingContainer.find('.settings_details').removeClass('hide');
|
|
settingContainer.find('.additional_settings').addClass('hide');
|
|
} else if(serverType == 'fastmail') {
|
|
useServer = 'mail.messagingengine.com';
|
|
useProtocol = 'IMAP2';
|
|
useSSLType = 'tls';
|
|
useCert = 'novalidate-cert';
|
|
settingContainer.find('.settings_details').removeClass('hide');
|
|
settingContainer.find('.additional_settings').addClass('hide');
|
|
} else if(serverType == 'other') {
|
|
useServer = '';
|
|
useProtocol = 'IMAP4';
|
|
useSSLType = 'ssl';
|
|
useCert = 'novalidate-cert';
|
|
settingContainer.find('.settings_details').removeClass('hide');
|
|
settingContainer.find('.additional_settings').removeClass('hide');
|
|
} else {
|
|
settingContainer.find('.settings_details').addClass('hide');
|
|
}
|
|
|
|
settingContainer.find('.refresh_settings').show();
|
|
settingContainer.find('#_mbox_user').val('');
|
|
settingContainer.find('#_mbox_pwd').val('');
|
|
settingContainer.find('[name="_mbox_sent_folder"]').val('');
|
|
settingContainer.find('.selectFolderValue').addClass('hide');
|
|
settingContainer.find('.selectFolderDesc').removeClass('hide');
|
|
if(useProtocol != '') {
|
|
settingContainer.find('#_mbox_server').val(useServer);
|
|
settingContainer.find('.mbox_protocol').each(function(i, node) {
|
|
if(jQuery(node).val() == useProtocol) {
|
|
jQuery(node).attr('checked', true);
|
|
}
|
|
});
|
|
settingContainer.find('.mbox_ssltype').each(function(i, node) {
|
|
if(jQuery(node).val() == useSSLType) {
|
|
jQuery(node).attr('checked', true);
|
|
}
|
|
});
|
|
settingContainer.find('.mbox_certvalidate').each(function(i, node) {
|
|
if(jQuery(node).val() == useCert) {
|
|
jQuery(node).attr('checked', true);
|
|
}
|
|
});
|
|
}
|
|
});
|
|
},
|
|
|
|
registerDeleteMailboxEvent : function(data) {
|
|
var settingContainer = jQuery(data);
|
|
settingContainer.find('#deleteMailboxBtn').click(function(e) {
|
|
e.preventDefault();
|
|
app.helper.showProgress(app.vtranslate("JSLBL_Deleting")+"...");
|
|
var params = {
|
|
'module' : 'MailManager',
|
|
'view' : 'Index',
|
|
'_operation' : 'settings',
|
|
'_operationarg' : 'remove'
|
|
};
|
|
app.request.post({"data" : params}).then(function(error, responseData) {
|
|
app.helper.hideProgress();
|
|
if(responseData.status) {
|
|
window.location.reload();
|
|
}
|
|
});
|
|
});
|
|
},
|
|
|
|
registerSaveMailboxEvent : function(data) {
|
|
var settingContainer = jQuery(data);
|
|
settingContainer.find('#saveMailboxBtn').click(function(e) {
|
|
e.preventDefault();
|
|
var form = settingContainer.find('#EditView');
|
|
var data = form.serializeFormData();
|
|
var params = {
|
|
position: {
|
|
'my' : 'bottom left',
|
|
'at' : 'top left',
|
|
'container' : jQuery('#EditView')
|
|
}};
|
|
var errorMsg = app.vtranslate('JS_REQUIRED_FIELD');
|
|
if(data['_mbox_server'] == "") {
|
|
vtUtils.showValidationMessage(settingContainer.find('#_mbox_server'), errorMsg, params);
|
|
return false;
|
|
} else {
|
|
vtUtils.hideValidationMessage(settingContainer.find('#_mbox_server'));
|
|
}
|
|
if(data['_mbox_user'] == "") {
|
|
vtUtils.showValidationMessage(settingContainer.find('#_mbox_user'), errorMsg, params);
|
|
return false;
|
|
} else {
|
|
vtUtils.hideValidationMessage(settingContainer.find('#_mbox_user'));
|
|
}
|
|
if(data['_mbox_pwd'] == "") {
|
|
vtUtils.showValidationMessage(settingContainer.find('#_mbox_pwd'), errorMsg, params);
|
|
return false;
|
|
} else {
|
|
vtUtils.hideValidationMessage(settingContainer.find('#_mbox_pwd'));
|
|
}
|
|
app.helper.showProgress(app.vtranslate("JSLBL_Saving_And_Verifying")+"...");
|
|
var params = {
|
|
'module' : 'MailManager',
|
|
'view' : 'Index',
|
|
'_operation' : 'settings',
|
|
'_operationarg' : 'save'
|
|
};
|
|
jQuery.extend(params, data);
|
|
app.request.post({"data" : params}).then(function(error, responseData) {
|
|
app.helper.hideModal();
|
|
app.helper.hideProgress();
|
|
if(error) {
|
|
app.helper.showAlertNotification({'message' : error.message});
|
|
} else if(responseData.mailbox) {
|
|
window.location.reload();
|
|
}
|
|
});
|
|
});
|
|
},
|
|
|
|
registerInitialLayout : function() {
|
|
var self = this;
|
|
var container = self.getContainer();
|
|
if(container.find('#isMailBoxExists').val() == "0") {
|
|
container.find('#modnavigator').addClass('hide');
|
|
container.find('#listViewContent').addClass('paddingLeft0');
|
|
}
|
|
},
|
|
|
|
openFolder : function(folderName, page, query, type) {
|
|
var self = this;
|
|
app.helper.showProgress(app.vtranslate("JSLBL_Loading_Please_Wait")+"...");
|
|
if(!page) {
|
|
page = 0;
|
|
}
|
|
var container = self.getContainer();
|
|
vtUtils.hideValidationMessage(container.find('#mailManagerSearchbox'));
|
|
var params = {
|
|
'module' : 'MailManager',
|
|
'view' : 'Index',
|
|
'_operation' : 'folder',
|
|
'_operationarg' : 'open',
|
|
'_folder' : folderName,
|
|
'_page' : page
|
|
};
|
|
if(query) {
|
|
params['q'] = query;
|
|
}
|
|
if(type) {
|
|
params['type'] = type;
|
|
}
|
|
app.request.post({"data" : params}).then(function(error, responseData) {
|
|
container.find('#mails_container').removeClass('col-lg-12');
|
|
container.find('#mails_container').addClass('col-lg-5');
|
|
container.find('#mailPreviewContainer').removeClass('hide');
|
|
container.find('#mails_container').html(responseData);
|
|
app.helper.hideProgress();
|
|
self.registerMoveMailDropdownClickEvent();
|
|
self.registerMailCheckBoxClickEvent();
|
|
self.registerScrollForMailList();
|
|
self.registerMainCheckboxClickEvent();
|
|
self.registerPrevPageClickEvent();
|
|
self.registerNextPageClickEvent();
|
|
self.registerSearchEvent();
|
|
self.registerFolderMailDeleteEvent();
|
|
self.registerMoveMailToFolder();
|
|
self.registerMarkMessageAsUnread();
|
|
self.registerMailClickEvent();
|
|
self.registerMarkMessageAsRead();
|
|
self.clearPreviewContainer();
|
|
self.loadMailContents(folderName);
|
|
container.find('#searchType').trigger('change');
|
|
});
|
|
},
|
|
|
|
/**
|
|
* Function to load the body of all mails in folder list
|
|
* @param {type} folderName
|
|
* @returns {undefined}
|
|
*/
|
|
loadMailContents : function(folderName){
|
|
var mailids = jQuery('input[name="folderMailIds"]').val();
|
|
if (typeof mailids !== 'undefined') {
|
|
mailids = mailids.split(",");
|
|
var params = {
|
|
'module' : 'MailManager',
|
|
'action' : 'Folder',
|
|
'mode' : 'showMailContent',
|
|
'mailids' : mailids,
|
|
'folderName':folderName
|
|
};
|
|
app.request.post({"data" : params}).then(function(error, responseData) {
|
|
for(var k in responseData){
|
|
var messageContent = responseData[k];
|
|
var messageEle = jQuery('#mmMailEntry_'+k);
|
|
messageEle.find('.mmMailDesc').html(messageContent);
|
|
}
|
|
});
|
|
}
|
|
},
|
|
|
|
registerFolderMailDeleteEvent : function() {
|
|
var self = this;
|
|
var container = self.getContainer();
|
|
container.find('#mmDeleteMail').click(function(e) {
|
|
var folder = jQuery(e.currentTarget).data('folder');
|
|
var msgNos = new Array();
|
|
container.find('.mailCheckBox').each(function(i, ele) {
|
|
var element = jQuery(ele);
|
|
if(element.is(":checked")) {
|
|
msgNos.push(element.closest('.mailEntry').find('.msgNo').val());
|
|
}
|
|
});
|
|
if(msgNos.length <= 0) {
|
|
app.helper.showAlertBox({message:app.vtranslate('JSLBL_NO_EMAILS_SELECTED')});
|
|
return false;
|
|
} else {
|
|
app.helper.showConfirmationBox({'message' : app.vtranslate('LBL_DELETE_CONFIRMATION')}).then(function() {
|
|
app.helper.showProgress(app.vtranslate("JSLBL_Deleting")+"...");
|
|
var params = {
|
|
'module' : 'MailManager',
|
|
'view' : 'Index',
|
|
'_operation' : 'mail',
|
|
'_operationarg' : 'delete',
|
|
'_folder' : folder,
|
|
'_msgno' : msgNos.join(',')
|
|
};
|
|
app.request.post({data : params}).then(function(err,data) {
|
|
app.helper.hideProgress();
|
|
if(data.status) {
|
|
app.helper.showSuccessNotification({'message': app.vtranslate('JSLBL_MAILS_DELETED')});
|
|
self.updateUnreadCount("-"+self.getUnreadCountByMsgNos(msgNos), folder);
|
|
self.updatePagingCount(msgNos.length);
|
|
for(var i = 0; i < msgNos.length; i++) {
|
|
container.find('#mmMailEntry_'+msgNos[i]).remove();
|
|
}
|
|
var openedMsgNo = container.find('#mmMsgNo').val();
|
|
if(jQuery.inArray(openedMsgNo, msgNos) !== -1) {
|
|
self.clearPreviewContainer();
|
|
}
|
|
}
|
|
});
|
|
});
|
|
}
|
|
});
|
|
},
|
|
|
|
updatePagingCount : function(deletedCount) {
|
|
var pagingDataElement = jQuery('.pageInfoData');
|
|
var pagingElement = jQuery('.pageInfo');
|
|
if(pagingDataElement.length != 0){
|
|
var total = pagingDataElement.data('total');
|
|
var start = pagingDataElement.data('start');
|
|
var end = pagingDataElement.data('end');
|
|
var labelOf = pagingDataElement.data('label-of');
|
|
total = total - deletedCount;
|
|
pagingDataElement.data('total', total);
|
|
pagingElement.html(start+' '+'-'+' '+end+' '+labelOf+' '+total+' ');
|
|
}
|
|
},
|
|
|
|
registerMoveMailToFolder : function() {
|
|
var self = this;
|
|
var container = self.getContainer();
|
|
var moveToDropDown = container.find('#mmMoveToFolder');
|
|
moveToDropDown.on('click','a',function(e) {
|
|
var element = jQuery(e.currentTarget);
|
|
var moveToFolder = element.closest('li').data('movefolder');
|
|
var folder = element.closest('li').data('folder');
|
|
var msgNos = new Array();
|
|
container.find('.mailCheckBox').each(function(i, ele) {
|
|
var element = jQuery(ele);
|
|
if(element.is(":checked")) {
|
|
msgNos.push(element.closest('.mailEntry').find('.msgNo').val());
|
|
}
|
|
});
|
|
if(msgNos.length <= 0) {
|
|
container.find('.moveToFolderDropDown').removeClass('open');
|
|
app.helper.showAlertBox({message:app.vtranslate('JSLBL_NO_EMAILS_SELECTED')});
|
|
return false;
|
|
} else {
|
|
app.helper.showProgress(app.vtranslate("JSLBL_MOVING")+"...");
|
|
var params = {
|
|
'module' : 'MailManager',
|
|
'view' : 'Index',
|
|
'_operation' : 'mail',
|
|
'_operationarg' : 'move',
|
|
'_folder' : folder,
|
|
'_moveFolder' : moveToFolder,
|
|
'_msgno' : msgNos.join(',')
|
|
};
|
|
app.request.post({data : params}).then(function(err,data) {
|
|
app.helper.hideProgress();
|
|
if(data.status) {
|
|
app.helper.showSuccessNotification({'message': app.vtranslate('JSLBL_MAIL_MOVED')});
|
|
var unreadCount = self.getUnreadCountByMsgNos(msgNos);
|
|
self.updateUnreadCount("-"+unreadCount, folder);
|
|
self.updateUnreadCount("+"+unreadCount, moveToFolder);
|
|
for(var i = 0; i < msgNos.length; i++) {
|
|
container.find('#mmMailEntry_'+msgNos[i]).remove();
|
|
}
|
|
container.find('.moveToFolderDropDown').removeClass('open');
|
|
}
|
|
});
|
|
}
|
|
});
|
|
},
|
|
|
|
registerMarkMessageAsUnread : function() {
|
|
var self = this;
|
|
var container = self.getContainer();
|
|
container.find('#mmMarkAsUnread').click(function(e) {
|
|
var folder = jQuery(e.currentTarget).data('folder');
|
|
var msgNos = new Array();
|
|
container.find('.mailCheckBox').each(function(i, ele) {
|
|
var element = jQuery(ele);
|
|
if(element.is(":checked")) {
|
|
msgNos.push(element.closest('.mailEntry').find('.msgNo').val());
|
|
}
|
|
});
|
|
if(msgNos.length <= 0) {
|
|
app.helper.showAlertBox({message:app.vtranslate('JSLBL_NO_EMAILS_SELECTED')});
|
|
return false;
|
|
} else {
|
|
app.helper.showProgress(app.vtranslate("JSLBL_Updating")+"...");
|
|
var params = {
|
|
'module' : 'MailManager',
|
|
'view' : 'Index',
|
|
'_operation' : 'mail',
|
|
'_operationarg' : 'mark',
|
|
'_folder' : folder,
|
|
'_msgno' : msgNos.join(','),
|
|
'_markas' : 'unread'
|
|
};
|
|
app.request.post({data : params}).then(function(err,data) {
|
|
app.helper.hideProgress();
|
|
if(data.status) {
|
|
app.helper.showSuccessNotification({'message': app.vtranslate('JSLBL_MAILS_MARKED_UNREAD')});
|
|
self.markMessageUnread(msgNos);
|
|
self.updateUnreadCount("+"+self.getUnreadCountByMsgNos(msgNos), folder);
|
|
}
|
|
});
|
|
}
|
|
});
|
|
},
|
|
|
|
registerMarkMessageAsRead : function() {
|
|
var self = this;
|
|
var container = self.getContainer();
|
|
container.find('#mmMarkAsRead').click(function(e) {
|
|
var folder = jQuery(e.currentTarget).data('folder');
|
|
var msgNos = new Array();
|
|
container.find('.mailCheckBox').each(function(i, ele) {
|
|
var element = jQuery(ele);
|
|
if(element.is(":checked")) {
|
|
msgNos.push(element.closest('.mailEntry').find('.msgNo').val());
|
|
}
|
|
});
|
|
if(msgNos.length <= 0) {
|
|
app.helper.showAlertBox({message:app.vtranslate('JSLBL_NO_EMAILS_SELECTED')});
|
|
return false;
|
|
} else {
|
|
app.helper.showProgress(app.vtranslate("JSLBL_Updating")+"...");
|
|
var params = {
|
|
'module' : 'MailManager',
|
|
'view' : 'Index',
|
|
'_operation' : 'mail',
|
|
'_operationarg' : 'mark',
|
|
'_folder' : folder,
|
|
'_msgno' : msgNos.join(','),
|
|
'_markas' : 'read'
|
|
};
|
|
app.request.post({data : params}).then(function(err,data) {
|
|
app.helper.hideProgress();
|
|
if(data.status) {
|
|
app.helper.showSuccessNotification({'message': app.vtranslate('JSLBL_MAILS_MARKED_READ')});
|
|
self.markMessageRead(msgNos);
|
|
self.updateUnreadCount("-"+self.getUnreadCountByMsgNos(msgNos), folder);
|
|
}
|
|
});
|
|
}
|
|
});
|
|
},
|
|
|
|
registerSearchEvent : function() {
|
|
var self = this;
|
|
var container = self.getContainer();
|
|
container.find('#mm_searchButton').click(function() {
|
|
var query = container.find('#mailManagerSearchbox').val();
|
|
if(query.trim() == '') {
|
|
vtUtils.showValidationMessage(container.find('#mailManagerSearchbox'), app.vtranslate('JSLBL_ENTER_SOME_VALUE'));
|
|
return false;
|
|
} else {
|
|
vtUtils.hideValidationMessage(container.find('#mailManagerSearchbox'));
|
|
}
|
|
var folder = container.find('#mailManagerSearchbox').data('foldername');
|
|
var type = container.find('#searchType').val();
|
|
self.openFolder(folder, 0, query, type);
|
|
});
|
|
},
|
|
|
|
markMessageUnread : function(msgNos) {
|
|
var self = this;
|
|
var container = self.getContainer();
|
|
if(typeof msgNos == "string") {
|
|
msgNos = new Array(msgNos);
|
|
}
|
|
if(typeof msgNos == "object") {
|
|
for(var i = 0; i < msgNos.length; i++) {
|
|
var msgNo = msgNos[i];
|
|
var msgEle = container.find('#mmMailEntry_'+msgNo);
|
|
msgEle.removeClass('mmReadEmail');
|
|
msgEle.data('read', "0");
|
|
var nameSubject = "<strong>" + msgEle.find('.nameSubjectHolder').html() + "</strong>";
|
|
msgEle.find('.nameSubjectHolder').html(nameSubject);
|
|
}
|
|
}
|
|
},
|
|
|
|
markMessageRead : function(msgNos) {
|
|
var self = this;
|
|
var container = self.getContainer();
|
|
if(typeof msgNos == "string") {
|
|
msgNos = new Array(msgNos);
|
|
}
|
|
if(typeof msgNos == "object") {
|
|
for(var i = 0; i < msgNos.length; i++) {
|
|
var msgNo = msgNos[i];
|
|
var msgEle = container.find('#mmMailEntry_'+msgNo);
|
|
msgEle.addClass('mmReadEmail');
|
|
msgEle.data('read', "1");
|
|
var nameSubject = msgEle.find('.nameSubjectHolder').find('strong').html();
|
|
msgEle.find('.nameSubjectHolder').html(nameSubject);
|
|
}
|
|
}
|
|
},
|
|
|
|
getUnreadCountByMsgNos : function(msgNos) {
|
|
var count = 0;
|
|
var self = this;
|
|
var container = self.getContainer();
|
|
for(var i = 0; i < msgNos.length; i++) {
|
|
var isRead = parseInt(container.find('#mmMailEntry_'+msgNos[i]).data('read'));
|
|
if(isRead == 0) {
|
|
count++;
|
|
}
|
|
}
|
|
return count;
|
|
},
|
|
|
|
registerMailCheckBoxClickEvent : function() {
|
|
var self = this;
|
|
var container = self.getContainer();
|
|
container.find('.mailCheckBox').click(function(e) {
|
|
var element = jQuery(e.currentTarget);
|
|
if(element.is(":checked")) {
|
|
element.closest('.mailEntry').addClass('highLightMail');
|
|
element.closest('.mailEntry').removeClass('fontBlack');
|
|
element.closest('.mailEntry').addClass('whiteFont');
|
|
element.closest('.mailEntry').removeClass('mmReadEmail');
|
|
element.closest('.mailEntry').find('.mmDateTimeValue').addClass('mmListDateDivSelected');
|
|
} else {
|
|
var isRead = element.closest('.mailEntry').data('read');
|
|
if(parseInt(isRead)) {
|
|
element.closest('.mailEntry').addClass('mmReadEmail');
|
|
element.closest('.mailEntry').removeClass('highLightMail');
|
|
} else {
|
|
element.closest('.mailEntry').removeClass('highLightMail');
|
|
}
|
|
element.closest('.mailEntry').find('.mmDateTimeValue').removeClass('mmListDateDivSelected');
|
|
element.closest('.mailEntry').addClass('fontBlack');
|
|
}
|
|
});
|
|
},
|
|
|
|
registerMoveMailDropdownClickEvent : function() {
|
|
var self = this;
|
|
var container = self.getContainer();
|
|
container.find('.moveToFolderDropDown').click(function(e) {
|
|
e.stopImmediatePropagation();
|
|
var element = jQuery(e.currentTarget);
|
|
element.addClass('open');
|
|
});
|
|
},
|
|
|
|
registerScrollForMailList : function() {
|
|
var self = this;
|
|
self.getContainer().find('#emailListDiv').mCustomScrollbar({
|
|
setHeight: 600,
|
|
autoExpandScrollbar: true,
|
|
scrollInertia: 200,
|
|
autoHideScrollbar: true,
|
|
theme : "dark-3"
|
|
});
|
|
},
|
|
|
|
registerMainCheckboxClickEvent : function() {
|
|
var self = this;
|
|
var container = self.getContainer();
|
|
container.find('#mainCheckBox').click(function(e) {
|
|
var element = jQuery(e.currentTarget);
|
|
if(element.is(":checked")) {
|
|
container.find('.mailCheckBox').each(function(i, ele) {
|
|
jQuery(ele).prop('checked', true);
|
|
jQuery(ele).closest('.mailEntry').addClass('highLightMail');
|
|
jQuery(ele).closest('.mailEntry').removeClass('fontBlack');
|
|
jQuery(ele).closest('.mailEntry').addClass('whiteFont');
|
|
jQuery(ele).closest('.mailEntry').removeClass('mmReadEmail');
|
|
jQuery(ele).closest('.mailEntry').find('.mmDateTimeValue').addClass('mmListDateDivSelected');
|
|
});
|
|
} else {
|
|
container.find('.mailCheckBox').each(function(i, ele) {
|
|
jQuery(ele).prop('checked', false);
|
|
var isRead = jQuery(ele).closest('.mailEntry').data('read');
|
|
if(parseInt(isRead)) {
|
|
jQuery(ele).closest('.mailEntry').addClass('mmReadEmail');
|
|
jQuery(ele).closest('.mailEntry').removeClass('highLightMail');
|
|
} else {
|
|
jQuery(ele).closest('.mailEntry').removeClass('highLightMail');
|
|
}
|
|
jQuery(ele).closest('.mailEntry').find('.mmDateTimeValue').removeClass('mmListDateDivSelected');
|
|
jQuery(ele).closest('.mailEntry').addClass('fontBlack');
|
|
});
|
|
}
|
|
});
|
|
},
|
|
|
|
registerPrevPageClickEvent : function() {
|
|
var self = this;
|
|
var container = self.getContainer();
|
|
container.find('#PreviousPageButton').click(function(e) {
|
|
var element = jQuery(e.currentTarget);
|
|
var folder = element.data('folder');
|
|
var page = element.data('page');
|
|
self.openFolder(folder, page, jQuery('#mailManagerSearchbox').val(), jQuery('#searchType').val());
|
|
});
|
|
},
|
|
|
|
registerNextPageClickEvent : function() {
|
|
var self = this;
|
|
var container = self.getContainer();
|
|
container.find('#NextPageButton').click(function(e) {
|
|
var element = jQuery(e.currentTarget);
|
|
var folder = element.data('folder');
|
|
var page = element.data('page');
|
|
self.openFolder(folder, page, jQuery('#mailManagerSearchbox').val(), jQuery('#searchType').val());
|
|
});
|
|
},
|
|
|
|
registerMailClickEvent : function() {
|
|
var self = this;
|
|
var container = self.getContainer();
|
|
container.find('.mmfolderMails').click(function(e) {
|
|
var emailElement = jQuery(e.currentTarget);
|
|
var parentEle = emailElement.closest('.mailEntry');
|
|
var msgNo = emailElement.find('.msgNo').val();
|
|
var params = {
|
|
'module' : 'MailManager',
|
|
'view' : 'Index',
|
|
'_operation' : 'mail',
|
|
'_operationarg' : 'open',
|
|
'_folder' : parentEle.data('folder'),
|
|
'_msgno' : msgNo
|
|
};
|
|
app.helper.showProgress(app.vtranslate("JSLBL_Opening")+"...");
|
|
app.request.post({data : params}).then(function(err, data) {
|
|
app.helper.hideProgress();
|
|
var uiContent = data.ui;
|
|
var unreadCount = self.getUnreadCountByMsgNos(new Array(msgNo));
|
|
jQuery(parentEle).addClass('mmReadEmail');
|
|
jQuery(parentEle).data('read', "1");
|
|
var nameSubject = jQuery(parentEle).find('.nameSubjectHolder').find('strong').html();
|
|
jQuery(parentEle).find('.nameSubjectHolder').html(nameSubject);
|
|
container.find('#mailPreviewContainer').html(uiContent);
|
|
self.highLightMail(msgNo);
|
|
self.registerMailDeleteEvent();
|
|
self.registerForwardEvent();
|
|
self.registerPrintEvent();
|
|
self.registerReplyEvent();
|
|
self.registerReplyAllEvent();
|
|
self.showRelatedActions();
|
|
self.registerMailPaginationEvent();
|
|
container.find('.emailDetails').popover({html: true});
|
|
self.updateUnreadCount("-"+unreadCount, jQuery(parentEle).data('folder'));
|
|
self.loadContentsInIframe(container.find('#mmBody'));
|
|
});
|
|
});
|
|
},
|
|
|
|
loadContentsInIframe : function(element) {
|
|
var bodyContent = element.html();
|
|
element.html('<iframe id="bodyFrame" style="width: 100%; border: none;"></iframe>');
|
|
var frameElement = jQuery("#bodyFrame")[0].contentWindow.document;
|
|
frameElement.open();
|
|
frameElement.close();
|
|
jQuery('#bodyFrame').contents().find('html').html(bodyContent);
|
|
jQuery('#bodyFrame').contents().find('html').find('a').on('click', function(e) {
|
|
e.preventDefault();
|
|
var url = jQuery(e.currentTarget).attr('href');
|
|
window.open(url, '_blank');
|
|
});
|
|
},
|
|
|
|
highLightMail : function(msgNo) {
|
|
var self = this;
|
|
var container = self.getContainer();
|
|
container.find('.mailEntry').each(function(i, ele) {
|
|
var element = jQuery(ele);
|
|
var isRead = element.data('read');
|
|
if(parseInt(isRead)) {
|
|
element.addClass('mmReadEmail');
|
|
element.removeClass('highLightMail');
|
|
} else {
|
|
element.removeClass('highLightMail');
|
|
}
|
|
element.find('.mmDateTimeValue').removeClass('mmListDateDivSelected');
|
|
element.addClass('fontBlack');
|
|
});
|
|
var selectedMailEle = container.find('#mmMailEntry_'+msgNo);
|
|
selectedMailEle.addClass('highLightMail');
|
|
selectedMailEle.removeClass('fontBlack');
|
|
selectedMailEle.addClass('whiteFont');
|
|
selectedMailEle.removeClass('mmReadEmail');
|
|
selectedMailEle.find('.mmDateTimeValue').addClass('mmListDateDivSelected');
|
|
},
|
|
|
|
registerMailPaginationEvent : function() {
|
|
var self = this;
|
|
var container = self.getContainer();
|
|
container.find('.mailPagination').click(function(e) {
|
|
var element = jQuery(e.currentTarget);
|
|
var msgNo = element.data('msgno');
|
|
var folder = element.data('folder');
|
|
var params = {
|
|
'module' : 'MailManager',
|
|
'view' : 'Index',
|
|
'_operation' : 'mail',
|
|
'_operationarg' : 'open',
|
|
'_folder' : folder,
|
|
'_msgno' : msgNo
|
|
};
|
|
app.helper.showProgress(app.vtranslate("JSLBL_Opening")+"...");
|
|
app.request.post({data : params}).then(function(err, data) {
|
|
app.helper.hideProgress();
|
|
var uiContent = data.ui;
|
|
container.find('#mmMailEntry_'+msgNo).addClass('mmReadEmail');
|
|
container.find('#mmMailEntry_'+msgNo).data('read', "1");
|
|
var nameSubject = container.find('#mmMailEntry_'+msgNo).find('.nameSubjectHolder').find('strong').html();
|
|
container.find('#mmMailEntry_'+msgNo).find('.nameSubjectHolder').html(nameSubject);
|
|
container.find('#mailPreviewContainer').html(uiContent);
|
|
self.registerMailDeleteEvent();
|
|
self.registerForwardEvent();
|
|
self.registerReplyEvent();
|
|
self.registerReplyAllEvent();
|
|
self.showRelatedActions();
|
|
self.registerMailPaginationEvent();
|
|
self.highLightMail(msgNo);
|
|
self.loadContentsInIframe(container.find('#mmBody'));
|
|
});
|
|
});
|
|
},
|
|
|
|
registerMailDeleteEvent : function() {
|
|
var self = this;
|
|
var container = self.getContainer();
|
|
container.find('#mmDelete').click(function() {
|
|
var msgNo = jQuery('#mmMsgNo').val();
|
|
var folder = jQuery('#mmFolder').val();
|
|
app.helper.showConfirmationBox({'message' : app.vtranslate('LBL_DELETE_CONFIRMATION')}).then(function() {
|
|
app.helper.showProgress(app.vtranslate("JSLBL_Deleting")+"...");
|
|
var params = {
|
|
'module' : 'MailManager',
|
|
'view' : 'Index',
|
|
'_operation' : 'mail',
|
|
'_operationarg' : 'delete',
|
|
'_folder' : folder,
|
|
'_msgno' : msgNo
|
|
};
|
|
app.request.post({data : params}).then(function(err,data) {
|
|
app.helper.hideProgress();
|
|
if(data.status) {
|
|
container.find('#mmMailEntry_'+msgNo).remove();
|
|
var previewHtml = '<div class="mmListMainContainer">\n\
|
|
<center><strong>'+app.vtranslate('JSLBL_NO_MAIL_SELECTED_DESC')+'</center></strong></div>';
|
|
jQuery('#mailPreviewContainer').html(previewHtml);
|
|
}
|
|
});
|
|
});
|
|
});
|
|
},
|
|
|
|
registerForwardEvent : function() {
|
|
var self = this;
|
|
var container = self.getContainer();
|
|
container.find('#mmForward').click(function() {
|
|
app.helper.showProgress(app.vtranslate("JSLBL_Loading")+"...");
|
|
var msgNo = jQuery('#mmMsgNo').val();
|
|
var from = jQuery('#mmFrom').val();
|
|
var to = jQuery('#mmTo').val();
|
|
var cc = jQuery('#mmCc').val() ? jQuery('#mmCc').val() : '';
|
|
var subject = JSON.parse(jQuery('#mmSubject').val());
|
|
var body = jQuery('#mmBody').find('iframe#bodyFrame').contents().find('html').html();
|
|
var date = jQuery('#mmDate').val();
|
|
var folder = jQuery('#mmFolder').val();
|
|
|
|
var fwdMsgMetaInfo = app.vtranslate('JSLBL_FROM') + from + '<br/>'+
|
|
app.vtranslate('JSLBL_DATE') + date + '<br/>'+
|
|
app.vtranslate('JSLBL_SUBJECT') + subject;
|
|
if (to != '' && to != null) {
|
|
fwdMsgMetaInfo += '<br/>'+app.vtranslate('JSLBL_TO') + to;
|
|
}
|
|
if (cc != '' && cc != null) {
|
|
fwdMsgMetaInfo += '<br/>'+app.vtranslate('JSLBL_CC') + cc;
|
|
}
|
|
fwdMsgMetaInfo += '<br/>';
|
|
|
|
var fwdSubject = (subject.toUpperCase().indexOf('FWD:') == 0) ? subject : 'Fwd: ' + subject;
|
|
var fwdBody = '<p></p><p>'+app.vtranslate('JSLBL_FORWARD_MESSAGE_TEXT')+'<br/>'+fwdMsgMetaInfo+'</p>'+body;
|
|
var attchmentCount = parseInt(container.find('#mmAttchmentCount').val());
|
|
if(attchmentCount) {
|
|
var params = {
|
|
'module' : 'MailManager',
|
|
'view' : 'Index',
|
|
'_operation' : 'mail',
|
|
'_operationarg' : 'forward',
|
|
'messageid' : encodeURIComponent(msgNo),
|
|
'folder' : encodeURIComponent(folder),
|
|
'subject' : encodeURIComponent(fwdSubject),
|
|
'body' : encodeURIComponent(fwdBody)
|
|
};
|
|
app.request.post({'data' : params}).then(function(err, data) {
|
|
var draftId = data.emailid;
|
|
var newParams = {
|
|
'module' : 'Emails',
|
|
'view' : 'ComposeEmail',
|
|
'mode' : 'emailEdit',
|
|
'record' : draftId
|
|
};
|
|
app.request.post({data : newParams}).then(function(err,data) {
|
|
app.helper.hideProgress();
|
|
if(err === null) {
|
|
var dataObj = jQuery(data);
|
|
var descriptionContent = dataObj.find('#iframeDescription').val();
|
|
app.helper.showModal(data, {cb : function() {
|
|
var editInstance = new Emails_MassEdit_Js();
|
|
editInstance.registerEvents();
|
|
jQuery('#emailPreviewIframe').contents().find('html').html(descriptionContent);
|
|
jQuery("#emailPreviewIframe").height(jQuery('#emailPreviewIframe').contents().find('html').height());
|
|
}});
|
|
}
|
|
});
|
|
});
|
|
} else {
|
|
app.helper.hideProgress();
|
|
var params = {
|
|
'step' : "step1",
|
|
'module' : "MailManager",
|
|
'view' : "MassActionAjax",
|
|
'mode' : "showComposeEmailForm",
|
|
'selected_ids' : "[]",
|
|
'excluded_ids' : "[]",
|
|
}
|
|
self.openComposeEmailForm("forward", params, {'subject' : fwdSubject, 'body' : fwdBody});
|
|
}
|
|
});
|
|
},
|
|
|
|
registerPrintEvent : function() {
|
|
var self = this;
|
|
var container = self.getContainer();
|
|
container.find('#mmPrint').click(function() {
|
|
var subject = JSON.parse(container.find('#mmSubject').val());
|
|
var from = container.find('#mmFrom').val();
|
|
var to = container.find('#mmTo').val();
|
|
var cc = container.find('#mmCc').val();
|
|
var date = container.find('#mmDate').val();
|
|
var body = jQuery('#mmBody').find('iframe#bodyFrame').contents().find('html').html();
|
|
|
|
var content = window.open();
|
|
content.document.write("<b>"+subject+"</b><br>");
|
|
content.document.write(app.vtranslate("JSLBL_FROM")+" "+from +"<br>");
|
|
content.document.write(app.vtranslate("JSLBL_TO")+" "+to+"<br>");
|
|
if(cc) {
|
|
content.document.write(app.vtranslate("JSLBL_CC")+" "+cc+"<br>");
|
|
}
|
|
content.document.write(app.vtranslate("JSLBL_DATE")+" "+date+"<br>");
|
|
content.document.write("<br><br>"+body);
|
|
content.print();
|
|
});
|
|
},
|
|
|
|
registerReplyEvent : function() {
|
|
var self = this;
|
|
self.getContainer().find('#mmReply').click(function() {
|
|
self.openReplyEmail(false);
|
|
});
|
|
},
|
|
|
|
registerReplyAllEvent : function() {
|
|
var self = this;
|
|
self.getContainer().find('#mmReplyAll').click(function() {
|
|
self.openReplyEmail(true);
|
|
});
|
|
},
|
|
|
|
openReplyEmail : function(all) {
|
|
var self = this;
|
|
if (typeof(all) == 'undefined') {
|
|
all = true;
|
|
}
|
|
var mUserName = jQuery('#mmUserName').val();
|
|
var from = jQuery('#mmFrom').val();
|
|
var to = all ? jQuery('#mmTo').val() : '';
|
|
var cc = all ? jQuery('#mmCc').val() : '';
|
|
|
|
var mailIds = '';
|
|
if(to != null) {
|
|
mailIds = to;
|
|
}
|
|
if(cc != null) {
|
|
mailIds = mailIds ? mailIds+','+cc : cc;
|
|
}
|
|
|
|
mailIds = mailIds.replace(/\s+/g, '');
|
|
|
|
var emails = mailIds.split(',');
|
|
for(var i = 0; i < emails.length ; i++) {
|
|
if(emails[i].indexOf(mUserName) != -1){
|
|
emails.splice(i,1);
|
|
}
|
|
}
|
|
mailIds = emails.join(',');
|
|
|
|
mailIds = mailIds.replace(',,', ',');
|
|
if(mailIds.charAt(mailIds.length-1) == ',') {
|
|
mailIds = mailIds.slice(0, -1);
|
|
} else if(mailIds.charAt(0) == ','){
|
|
mailIds = mailIds.slice(1);
|
|
}
|
|
|
|
var subject = JSON.parse(jQuery('#mmSubject').val());
|
|
var body = jQuery('#mmBody').find('iframe#bodyFrame').contents().find('html').html();
|
|
var date = jQuery('#mmDate').val();
|
|
|
|
var replySubject = (subject.toUpperCase().indexOf('RE:') == 0) ? subject : 'Re: ' + subject;
|
|
var replyBody = '<p></br></br></p><p style="margin:0;padding:0;">On '+date+', '+from+' wrote :</p><blockquote style="border:0;margin:0;border-left:1px solid gray;padding:0 0 0 2px;">'+body+'</blockquote><br />';
|
|
var parentRecord = new Array();
|
|
var linktoElement = jQuery('[name=_mlinkto]');
|
|
linktoElement.each(function(index){
|
|
var value = jQuery(this).val();
|
|
if(value) {
|
|
parentRecord.push(value);
|
|
}
|
|
});
|
|
var params = {
|
|
'step' : "step1",
|
|
'module' : "MailManager",
|
|
'view' : "MassActionAjax",
|
|
'mode' : "showComposeEmailForm",
|
|
'linktomodule' : 'true',
|
|
'excluded_ids' : "[]",
|
|
'to' : '["'+from+'"]'
|
|
}
|
|
if(parentRecord.length) {
|
|
params['selected_ids'] = parentRecord;
|
|
} else {
|
|
params['selected_ids'] = "[]";
|
|
}
|
|
if(mailIds) {
|
|
self.openComposeEmailForm("replyall", params, {'subject' : replySubject, 'body' : replyBody, 'ids' : mailIds});
|
|
} else {
|
|
self.openComposeEmailForm("reply", params, {'subject' : replySubject, 'body' : replyBody});
|
|
}
|
|
},
|
|
|
|
showRelatedActions : function() {
|
|
var self = this;
|
|
var container = self.getContainer();
|
|
var from = container.find('#mmFrom').val();
|
|
var to = container.find('#mmTo').val();
|
|
var folder = container.find('#mmFolder').val();
|
|
var msgNo = container.find('#mmMsgNo').val();
|
|
var msgUid = container.find('#mmMsgUid').val();
|
|
|
|
var params = {
|
|
'module' : 'MailManager',
|
|
'view' : 'Index',
|
|
'_operation' : 'relation',
|
|
'_operationarg' : 'find',
|
|
'_mfrom' : from,
|
|
'_mto' : to,
|
|
'_folder' : folder,
|
|
'_msgno' : msgNo,
|
|
'_msguid' : msgUid
|
|
};
|
|
|
|
app.request.post({data : params}).then(function(err, data) {
|
|
container.find('#relationBlock').html(data.ui);
|
|
self.handleRelationActions();
|
|
app.helper.showVerticalScroll(container.find('#relationBlock .recordScroll'), {autoHideScrollbar: true});
|
|
var iframeHeight = jQuery('#mails_container').height() - (200 + jQuery('#mailManagerActions').height());
|
|
var contentHeight = jQuery('#bodyFrame').contents().find('html').height();
|
|
if (contentHeight > iframeHeight) {
|
|
jQuery('#bodyFrame').css({'height': iframeHeight});
|
|
} else {
|
|
jQuery('#bodyFrame').css({'height': contentHeight});
|
|
}
|
|
});
|
|
},
|
|
|
|
openDraftFolder : function(page, query, type) {
|
|
var self = this;
|
|
app.helper.showProgress(app.vtranslate("JSLBL_Loading_Please_Wait")+"...");
|
|
if(!page) {
|
|
page = 0;
|
|
}
|
|
var container = self.getContainer();
|
|
vtUtils.hideValidationMessage(container.find('#mailManagerSearchbox'));
|
|
var params = {
|
|
'module' : 'MailManager',
|
|
'view' : 'Index',
|
|
'_operation' : 'folder',
|
|
'_operationarg' : 'drafts',
|
|
'_page' : page
|
|
};
|
|
if(query) {
|
|
params['q'] = query;
|
|
}
|
|
if(type) {
|
|
params['type'] = type;
|
|
}
|
|
app.request.post({"data" : params}).then(function(error, responseData) {
|
|
container.find('#mails_container').removeClass('col-lg-5');
|
|
container.find('#mails_container').addClass('col-lg-12');
|
|
container.find('#mails_container').html(responseData);
|
|
container.find('#mailPreviewContainer').addClass('hide');
|
|
app.helper.hideProgress();
|
|
self.registerMoveMailDropdownClickEvent();
|
|
self.registerMailCheckBoxClickEvent();
|
|
self.registerScrollForMailList();
|
|
self.registerMainCheckboxClickEvent();
|
|
self.registerDraftPrevPageClickEvent();
|
|
self.registerDraftNextPageClickEvent();
|
|
self.registerDraftMailClickEvent();
|
|
self.registerDraftSearchEvent();
|
|
self.registerDraftDeleteEvent();
|
|
self.clearPreviewContainer();
|
|
});
|
|
},
|
|
|
|
registerDraftPrevPageClickEvent : function() {
|
|
var self = this;
|
|
var container = self.getContainer();
|
|
container.find('#PreviousPageButton').click(function(e) {
|
|
var element = jQuery(e.currentTarget);
|
|
var page = element.data('page');
|
|
self.openDraftFolder(page);
|
|
});
|
|
},
|
|
|
|
registerDraftNextPageClickEvent : function() {
|
|
var self = this;
|
|
var container = self.getContainer();
|
|
container.find('#NextPageButton').click(function(e) {
|
|
var element = jQuery(e.currentTarget);
|
|
var page = element.data('page');
|
|
self.openDraftFolder(page);
|
|
});
|
|
},
|
|
|
|
registerDraftMailClickEvent : function() {
|
|
var self = this;
|
|
var container = self.getContainer();
|
|
container.find('.draftEmail').click(function(e) {
|
|
e.preventDefault();
|
|
var element = jQuery(e.currentTarget);
|
|
var msgNo = element.find('.msgNo').val();
|
|
var params = {
|
|
'module' : 'Emails',
|
|
'view' : 'ComposeEmail',
|
|
'mode' : 'emailEdit',
|
|
'record' : msgNo
|
|
};
|
|
app.helper.showProgress(app.vtranslate("JSLBL_Opening")+"...");
|
|
app.request.post({data : params}).then(function(err,data) {
|
|
app.helper.hideProgress();
|
|
if(err === null) {
|
|
var dataObj = jQuery(data);
|
|
var descriptionContent = dataObj.find('#iframeDescription').val();
|
|
app.helper.showModal(data, {cb:function() {
|
|
var editInstance = new Emails_MassEdit_Js();
|
|
editInstance.registerEvents();
|
|
jQuery('#emailPreviewIframe').contents().find('html').html(descriptionContent);
|
|
jQuery("#emailPreviewIframe").height(jQuery('.email-body-preview').height());
|
|
}});
|
|
}
|
|
});
|
|
});
|
|
},
|
|
|
|
registerDraftSearchEvent : function() {
|
|
var self = this;
|
|
var container = self.getContainer();
|
|
container.find('#mm_searchButton').click(function() {
|
|
var query = container.find('#mailManagerSearchbox').val();
|
|
if(query.trim() == '') {
|
|
vtUtils.showValidationMessage(container.find('#mailManagerSearchbox'), app.vtranslate('JSLBL_ENTER_SOME_VALUE'));
|
|
return false;
|
|
} else {
|
|
vtUtils.hideValidationMessage(container.find('#mailManagerSearchbox'));
|
|
}
|
|
var type = container.find('#searchType').val();
|
|
self.openDraftFolder(0, query, type);
|
|
});
|
|
},
|
|
|
|
registerDraftDeleteEvent : function() {
|
|
var self = this;
|
|
var container = self.getContainer();
|
|
container.find('#mmDeleteMail').click(function() {
|
|
var msgNos = new Array();
|
|
container.find('.mailCheckBox').each(function(i, ele) {
|
|
var element = jQuery(ele);
|
|
if(element.is(":checked")) {
|
|
msgNos.push(element.closest('.mailEntry').find('.msgNo').val());
|
|
}
|
|
});
|
|
if(msgNos.length <= 0) {
|
|
app.helper.showAlertBox({message:app.vtranslate('JSLBL_NO_EMAILS_SELECTED')});
|
|
return false;
|
|
} else {
|
|
app.helper.showConfirmationBox({'message' : app.vtranslate('LBL_DELETE_CONFIRMATION')}).then(function() {
|
|
app.helper.showProgress(app.vtranslate("JSLBL_Deleting")+"...");
|
|
var params = {
|
|
'module' : 'MailManager',
|
|
'view' : 'Index',
|
|
'_operation' : 'mail',
|
|
'_operationarg' : 'delete',
|
|
'_folder' : '__vt_drafts',
|
|
'_msgno' : msgNos.join(',')
|
|
};
|
|
app.request.post({data : params}).then(function(err,data) {
|
|
app.helper.hideProgress();
|
|
if(data.status) {
|
|
self.openDraftFolder();
|
|
app.helper.showSuccessNotification({'message': app.vtranslate('JSLBL_MAILS_DELETED')});
|
|
}
|
|
});
|
|
});
|
|
}
|
|
});
|
|
},
|
|
|
|
updateUnreadCount : function(count, folder) {
|
|
var self = this;
|
|
var container = self.getContainer();
|
|
if(!folder) {
|
|
folder = container.find('.mm_folder.active').data('foldername');
|
|
}
|
|
var newCount;
|
|
if(typeof count == "number") {
|
|
newCount = parseInt(count);
|
|
} else {
|
|
var oldCount = parseInt(container.find('.mm_folder[data-foldername="'+folder+'"]').find('.mmUnreadCountBadge').text());
|
|
if(count.substr(0, 1) == "+") {
|
|
newCount = oldCount + (parseInt(count.substr(1, (count.length - 1))));
|
|
} else if(count.substr(0, 1) == "-") {
|
|
newCount = oldCount - (parseInt(count.substr(1, (count.length - 1))));
|
|
} else {
|
|
newCount = parseInt(count);
|
|
}
|
|
}
|
|
container.find('.mm_folder[data-foldername="'+folder+'"]').find('.mmUnreadCountBadge').text(newCount);
|
|
if(newCount > 0) {
|
|
container.find('.mm_folder[data-foldername="'+folder+'"]').find('.mmUnreadCountBadge').removeClass("hide");
|
|
} else {
|
|
container.find('.mm_folder[data-foldername="'+folder+'"]').find('.mmUnreadCountBadge').addClass("hide");
|
|
}
|
|
},
|
|
|
|
handleRelationActions : function() {
|
|
var self = this;
|
|
var container = self.getContainer();
|
|
container.find('#_mlinktotype').on('change', function(e) {
|
|
var element = jQuery(e.currentTarget);
|
|
var actionType = element.data('action');
|
|
var module = element.val();
|
|
var relatedRecord = self.getRecordForRelation();
|
|
if(relatedRecord !== false) {
|
|
if(actionType == "associate") {
|
|
if(module == 'Emails') {
|
|
self.associateEmail(relatedRecord);
|
|
} else if(module == "ModComments") {
|
|
self.associateComment(relatedRecord);
|
|
} else if(module) {
|
|
self.createRelatedRecord(module);
|
|
}
|
|
} else if(module) {
|
|
self.createRelatedRecord(module);
|
|
}
|
|
}
|
|
self.resetRelationDropdown();
|
|
});
|
|
},
|
|
|
|
associateEmail : function(relatedRecord) {
|
|
var self = this;
|
|
var container = self.getContainer();
|
|
var params = {
|
|
'module' : 'MailManager',
|
|
'view' : 'Index',
|
|
'_operation' : 'relation',
|
|
'_operationarg' : 'link',
|
|
'_mlinkto' : relatedRecord,
|
|
'_mlinktotype' : 'Emails',
|
|
'_folder' : container.find('#mmFolder').val(),
|
|
'_msgno' : container.find('#mmMsgNo').val()
|
|
}
|
|
app.helper.showProgress(app.vtranslate('JSLBL_Associating')+'...');
|
|
app.request.post({data : params}).then(function(err,data) {
|
|
if (err === null) {
|
|
app.helper.showSuccessNotification({'message':''});
|
|
app.helper.hideProgress();
|
|
} else {
|
|
app.helper.showErrorNotification({"message": err});
|
|
}
|
|
});
|
|
},
|
|
|
|
associateComment : function(relatedRecord) {
|
|
var self = this;
|
|
var container = self.getContainer();
|
|
var params = {
|
|
'module' : 'MailManager',
|
|
'view' : 'Index',
|
|
'_operation' : 'relation',
|
|
'_operationarg' : 'commentwidget',
|
|
'_mlinkto' : relatedRecord,
|
|
'_mlinktotype' : 'ModComments',
|
|
'_folder' : container.find('#mmFolder').val(),
|
|
'_msgno' : container.find('#mmMsgNo').val()
|
|
}
|
|
app.helper.showProgress(app.vtranslate('JSLBL_Loading')+'...');
|
|
app.request.post({data : params}).then(function(err, data) {
|
|
app.helper.hideProgress();
|
|
app.helper.showModal(data, {'cb' : function(data) {
|
|
jQuery('[name="saveButton"]', data).on('click',function(e){
|
|
e.preventDefault();
|
|
self.saveComment(data);
|
|
});
|
|
}});
|
|
});
|
|
},
|
|
|
|
createRelatedRecord : function(module) {
|
|
var self = this;
|
|
var container = self.getContainer();
|
|
var relatedRecord = self.getRecordForRelation();
|
|
var msgNo = container.find('#mmMsgNo').val();
|
|
var folder = container.find('#mmFolder').val();
|
|
var params = {
|
|
'module' : 'MailManager',
|
|
'view' : 'Index',
|
|
'_operation' : 'relation',
|
|
'_operationarg' : 'create_wizard',
|
|
'_mlinktotype' : module,
|
|
'_folder' : folder,
|
|
'_msgno' : msgNo
|
|
};
|
|
if(relatedRecord && relatedRecord !== null) {
|
|
params['_mlinkto'] = relatedRecord;
|
|
}
|
|
app.helper.showProgress(app.vtranslate('JSLBL_Loading')+'...');
|
|
app.request.post({data : params}).then(function(err, data) {
|
|
app.helper.hideProgress();
|
|
app.helper.showModal(data);
|
|
var form = jQuery('form[name="QuickCreate"]');
|
|
app.event.trigger('post.QuickCreateForm.show',form);
|
|
vtUtils.applyFieldElementsView(form);
|
|
var moduleName = form.find('[name="module"]').val();
|
|
var targetClass = app.getModuleSpecificViewClass('Edit', moduleName);
|
|
var targetInstance = new window[targetClass]();
|
|
targetInstance.registerBasicEvents(form);
|
|
var newParams = {};
|
|
newParams.callbackFunction = function() {
|
|
app.helper.hideModal();
|
|
self.showRelatedActions();
|
|
};
|
|
newParams.requestParams = params;
|
|
self.quickCreateSave(form, newParams);
|
|
app.helper.hideProgress();
|
|
});
|
|
},
|
|
|
|
/**
|
|
* Register Quick Create Save Event
|
|
* @param {type} form
|
|
* @returns {undefined}
|
|
*/
|
|
quickCreateSave : function(form,invokeParams){
|
|
var container = this.getContainer();
|
|
var params = {
|
|
submitHandler: function(form) {
|
|
// to Prevent submit if already submitted
|
|
jQuery("button[name='saveButton']").attr("disabled","disabled");
|
|
if(this.numberOfInvalids() > 0) {
|
|
return false;
|
|
}
|
|
var formData = jQuery(form).serialize();
|
|
var requestParams = invokeParams.requestParams;
|
|
|
|
// replacing default parameters for custom handlings in mail manager
|
|
formData = formData.replace('module=', 'xmodule=').replace('action=', 'xaction=');
|
|
if(requestParams) {
|
|
requestParams['_operationarg'] = 'create';
|
|
if(requestParams['_mlinktotype'] == 'Events') {
|
|
requestParams['_mlinktotype'] = 'Calendar';
|
|
}
|
|
jQuery.each(requestParams, function(key, value){
|
|
formData += "&"+key+"="+value;
|
|
});
|
|
}
|
|
|
|
app.request.post({data:formData}).then(function(err,data){
|
|
if(err === null) {
|
|
if (!data.error) {
|
|
jQuery('.vt-notification').remove();
|
|
app.event.trigger("post.QuickCreateForm.save",data,jQuery(form).serializeFormData());
|
|
app.helper.hideModal();
|
|
app.helper.showSuccessNotification({"message":app.vtranslate('JS_RECORD_CREATED')});
|
|
invokeParams.callbackFunction(data, err);
|
|
} else {
|
|
jQuery("button[name='saveButton']").removeAttr('disabled');
|
|
app.event.trigger('post.save.failed', data);
|
|
}
|
|
}else{
|
|
app.event.trigger("post.QuickCreateForm.save",data,jQuery(form).serializeFormData());
|
|
app.helper.showErrorNotification({"message":err});
|
|
}
|
|
});
|
|
}
|
|
};
|
|
form.vtValidate(params);
|
|
},
|
|
|
|
saveComment : function(data) {
|
|
var _mlinkto = jQuery('[name="_mlinkto"]', data).val();
|
|
var _mlinktotype = jQuery('[name="_mlinktotype"]', data).val();
|
|
var _msgno = jQuery('[name="_msgno"]', data).val();
|
|
var _folder = jQuery('[name="_folder"]', data).val();
|
|
var commentcontent = jQuery('[name="commentcontent"]', data).val();
|
|
if(commentcontent.trim() == "") {
|
|
var validationParams = {
|
|
position: {
|
|
'my' : 'bottom left',
|
|
'at' : 'top left',
|
|
'container' : jQuery('#commentContainer', data)
|
|
}
|
|
};
|
|
var errorMsg = app.vtranslate('JSLBL_CANNOT_ADD_EMPTY_COMMENT');
|
|
vtUtils.showValidationMessage(jQuery('[name="commentcontent"]', data), errorMsg, validationParams);
|
|
return false;
|
|
} else {
|
|
vtUtils.hideValidationMessage(jQuery('[name="commentcontent"]', data));
|
|
}
|
|
var params = {
|
|
'module' : 'MailManager',
|
|
'view' : 'Index',
|
|
'_operation' : 'relation',
|
|
'_operationarg' : 'create',
|
|
'commentcontent' : commentcontent,
|
|
'_mlinkto' : _mlinkto,
|
|
'_mlinktotype' : _mlinktotype,
|
|
'_msgno' : _msgno,
|
|
'_folder' : _folder
|
|
}
|
|
app.helper.showProgress(app.vtranslate('JSLBL_Saving')+'...');
|
|
app.request.post({'data' : params}).then(function(err, response) {
|
|
app.helper.hideProgress();
|
|
if(response.ui) {
|
|
app.helper.showSuccessNotification({'message':''});
|
|
app.helper.hideModal();
|
|
} else {
|
|
app.helper.showAlertBox({'message' : app.vtranslate("JSLBL_FAILED_ADDING_COMMENT")});
|
|
}
|
|
});
|
|
},
|
|
|
|
getRecordForRelation : function() {
|
|
var self = this;
|
|
var container = self.getContainer();
|
|
var element = container.find('[name="_mlinkto"]');
|
|
if(element.length > 0) {
|
|
if(element.length == 1) {
|
|
element.attr('checked', true);
|
|
return element.val();
|
|
} else {
|
|
selected = false;
|
|
element.each(function(i, ele) {
|
|
if(jQuery(ele).is(":checked")) {
|
|
selected = true;
|
|
}
|
|
});
|
|
if(selected) {
|
|
return container.find('[name="_mlinkto"]:checked').val();
|
|
} else {
|
|
app.helper.showAlertBox({'message' : app.vtranslate("JSLBL_PLEASE_SELECT_ATLEAST_ONE_RECORD")});
|
|
return false;
|
|
}
|
|
}
|
|
} else {
|
|
return null;
|
|
}
|
|
},
|
|
|
|
resetRelationDropdown : function() {
|
|
this.getContainer().find('#_mlinktotype').val("");
|
|
},
|
|
|
|
openComposeEmailForm : function(type, params, data) {
|
|
Vtiger_Index_Js.showComposeEmailPopup(params, function(response) {
|
|
var descEle = jQuery(response).find('#description');
|
|
if(type == "reply" || type == "forward") {
|
|
jQuery('#subject', response).val(data.subject);
|
|
descEle.val(data.body);
|
|
jQuery('[name="cc"]', response).val("");
|
|
jQuery('.ccContainer', response).addClass("hide");
|
|
jQuery('#ccLink', response).css("display", "");
|
|
} else if(type == "replyall") {
|
|
jQuery('#subject', response).val(data.subject);
|
|
descEle.val(data.body);
|
|
var mailIds = data.ids;
|
|
if(mailIds) {
|
|
jQuery('.ccContainer', response).removeClass("hide");
|
|
jQuery('#ccLink', response).css("display", "none");
|
|
jQuery('[name="cc"]', response).val(mailIds);
|
|
}
|
|
} else {
|
|
jQuery('#subject', response).val("");
|
|
descEle.val("");
|
|
jQuery('[name="cc"]', response).val("");
|
|
jQuery('.ccContainer', response).addClass("hide");
|
|
jQuery('#ccLink', response).css("display", "");
|
|
}
|
|
});
|
|
},
|
|
|
|
clearPreviewContainer : function() {
|
|
var previewHtml = '<div class="mmListMainContainer">\n\
|
|
<center><strong>'+app.vtranslate('JSLBL_NO_MAIL_SELECTED_DESC')+'</center></strong></div>';
|
|
this.getContainer().find('#mailPreviewContainer').html(previewHtml);
|
|
},
|
|
|
|
registerRefreshFolder : function() {
|
|
var self = this;
|
|
var container = self.getContainer();
|
|
container.find('.mailbox_refresh').click(function() {
|
|
var folder = container.find('.mm_folder.active').data('foldername');
|
|
if(folder == 'vt_drafts') {
|
|
self.openDraftFolder();
|
|
} else {
|
|
self.openFolder(folder);
|
|
}
|
|
});
|
|
},
|
|
|
|
registerSearchTypeChangeEvent : function() {
|
|
var container = this.getContainer();
|
|
container.on('change', '#searchType', function(e){
|
|
var element = jQuery(e.currentTarget);
|
|
var searchBox = jQuery('#mailManagerSearchbox');
|
|
if(element.val() == 'ON'){
|
|
searchBox.addClass('dateField');
|
|
searchBox.parent().append('<span class="date-addon input-group-addon"><i class="fa fa-calendar"></i></span>');
|
|
vtUtils.registerEventForDateFields(searchBox);
|
|
} else {
|
|
searchBox.datepicker('remove');
|
|
searchBox.removeClass('dateField');
|
|
searchBox.parent().find('.date-addon').remove();
|
|
}
|
|
});
|
|
},
|
|
|
|
registerPostMailSentEvent: function () {
|
|
app.event.on('post.mail.sent', function (event, data) {
|
|
var resultEle = jQuery(data);
|
|
var success = resultEle.find('.mailSentSuccessfully');
|
|
if (success.length > 0) {
|
|
app.helper.showModal(data);
|
|
}
|
|
});
|
|
},
|
|
|
|
registerEvents : function() {
|
|
var self = this;
|
|
self.loadFolders();
|
|
self.registerComposeEmail();
|
|
self.registerSettingsEdit();
|
|
self.registerInitialLayout();
|
|
self.registerRefreshFolder();
|
|
self.registerSearchTypeChangeEvent();
|
|
self.registerPostMailSentEvent();
|
|
}
|
|
});
|