/modules/MailManager/MailManager.js
JavaScript | 1645 lines | 1346 code | 203 blank | 96 comment | 262 complexity | 5c05f6d3f697a291cddda07dd8dc4725 MD5 | raw file
Possible License(s): LGPL-2.1, GPL-2.0, LGPL-3.0
Large files files are truncated, but you can click here to view the full file
- /*+**********************************************************************************
- * 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.
- ************************************************************************************/
- if (typeof(MailManager) == 'undefined') {
- /*
- * 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;
- },
-
- /*
- * Progress indicator handlers.
- */
- progress_show: function(msg, suffix){
- if (typeof(suffix) == 'undefined')
- suffix = '';
- VtigerJS_DialogBox.block();
- if (typeof(msg) != 'undefined')
- jQuery('#_progressmsg_').html(msg + suffix.toString());
- jQuery('#_progress_').show();
- },
- progress_hide: function(){
- VtigerJS_DialogBox.unblock();
- jQuery('#_progressmsg_').html('');
- jQuery('#_progress_').hide();
- },
-
- /* Show error message */
- show_error: function(message){
- var errordiv = jQuery('#_messagediv_');
-
- if (message == '') {
- errordiv.text('').hide();
- } else {
- errordiv.html('<p>' + message + '</p>').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('<p>' + message + '</p>').css('display','block').removeClass('mm_error').addClass('mm_message');
- MailManager.placeAtCenter(errordiv);
- }
- MailManager.hide_error();
- },
- /* Base url for any ajax actions */
- _baseurl: function(){
- return "module=MailManager&action=MailManagerAjax&file=index&mode=ajax&";
- },
-
- /* Translation support */
- i18n: function(key){
- if (typeof(MailManageri18nInfo) != 'undefined')
- return MailManageri18nInfo[key];
- if (typeof(alert_arr) != 'undefined' && alert_arr[key])
- return alert_arr[key];
- return key;
- },
-
- /* Build the main ui */
- mainui: function(){
- MailManager.openCurrentFolder();
- setTimeout(function() {
- jQuery("#_folderprogress_").show();
- MailManager.mail_open_meta = {};
- if (MailManager.mail_reply_rteinstance) {
- MailManager.mail_reply_rteinstance.destroy();
- MailManager.mail_reply_rteinstance = false;
- }
- MailManager.progress_show(MailManager.i18n('JSLBL_Loading_Please_Wait'), '...');
- new Ajax.Request('index.php', {
- method: 'post',
- postBody: MailManager._baseurl() + "_operation=mainui",
- onComplete: function(transport){
- var response = MailManager.removeHidElement(transport.responseText);
- response = JSON.parse(response);
- MailManager._mainui_callback(response);
- jQuery("#_folderprogress_").hide();
- var timeOut = jQuery("#refresh_timeout").val();
- if(timeOut != "" && timeOut !=0) {
- setInterval(MailManager.updateMailFolders, timeOut);
- }
- // Update the seleted folders to highlight them.
- 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() {
- new Ajax.Request('index.php', {
- method: 'post',
- postBody: MailManager._baseurl() + "_operation=mainui",
- onComplete: function(transport){
- 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);
- }
- });
- },
- quicklinks_update: function() {
- new Ajax.Request('index.php', {
- method: 'post',
- postBody: MailManager._baseurl() + "_operation=mainui&_operationarg=_quicklinks",
- onComplete: function(transport){
- var response = MailManager.removeHidElement(transport.responseText);
- response = JSON.parse(response);
- jQuery("#_quicklinks_mainuidiv_").html(response['result']['ui']);
- }
- });
- },
-
- /* Intermedidate call back to build main ui */
- _mainui_callback: function(responseJSON){
- MailManager.progress_hide();
- jQuery('#_mainfolderdiv_').html(responseJSON['result']['ui']);
- if (!responseJSON['result']['mailbox']) {
- MailManager.open_settings();
- }
- },
- 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) {
- MailManager.show_error(MailManager.i18n('JSLBL_PLEASE_SELECT_ATLEAST_ONE_MAIL'));
- MailManager.resetFolderDropDown();
- return false;
- }
- return true;
- }
- function callbackFunction(response) {
- for(var i = 0; i<temp.length; i++){
- jQuery("#_mailrow_"+temp[i]).fadeOut(1500,function() {
- jQuery("#_mailrow_"+temp[i]).remove();
- });
- }
- }
- if(validate()) {
- MailManager.progress_show(MailManager.i18n('JSLBL_MOVING'), '...');
- VtigerJS_DialogBox.block();
- var moveToFolderName = jQuery("#moveFolderList").val();
- var currentFolderName = jQuery("#mailbox_folder").val();
- var params = {
- '_operation': 'mail',
- '_operationarg' : 'move',
- '_msgno' : encodeURIComponent(temp),
- '_folder' : encodeURIComponent(currentFolderName),
- '_moveFolder' : moveToFolderName.replace('�','')
- };
- MailManager.Request('index.php?'+MailManager._baseurl() , params, callbackFunction).
- then( function () {
- MailManager.folder_open(currentFolderName);
- MailManager.progress_hide();
- MailManager.show_error(MailManager.i18n('JSLBL_MAIL_MOVED'));
- });
- }
- }
- execute();
- },
- /* Refresh the main ui */
- reload_now: function(){
- MailManager.mainui();
- },
-
- /* Close all the div */
- close_all: function(){
- if (jQuery('#_contentdiv_')) jQuery('#_contentdiv_').hide();
- if (jQuery('#_contentdiv2_')) jQuery('#_contentdiv2_').hide();
- if (jQuery('#_messagediv_')) jQuery('#_messagediv_').hide();
- if (jQuery('#_settingsdiv_')) jQuery('#_settingsdiv_').hide();
- if (jQuery('#_replydiv_')) jQuery('#_replydiv_').hide();
- },
-
- /* Open settings page */
- open_settings: function(){
- MailManager.progress_show(MailManager.i18n('JSLBL_Settings')+ '...');
- new Ajax.Request('index.php', {
- method: 'post',
- postBody: MailManager._baseurl() + "_operation=settings&_operationarg=edit",
- onComplete: function(transport){
- MailManager.progress_hide();
-
- MailManager.close_all();
- jQuery('#_settingsdiv_').show();
- var response = MailManager.removeHidElement(transport.responseText);
- jQuery('#_settingsdiv_').html(response);
- // Update the seleted folders to highlight them.
- MailManager.updateSelectedFolder('mm_settings');
- jQuery('#mm_selected_folder').val('mm_settings');
- }
- });
- },
-
-
- handle_settings_confighelper: function(selectBox){
- var form = selectBox.form;
-
- var useServer = '', useProtocol = '', useSSLType = '', useCert = '';
- if (selectBox.value == 'gmail' || selectBox.value == 'yahoo') {
- useServer = 'imap.gmail.com';
- if(selectBox.value == 'yahoo') {
- useServer = 'imap.mail.yahoo.com';
- }
- useProtocol = 'IMAP4';
- useSSLType = 'ssl';
- useCert = 'novalidate-cert';
- jQuery('#settings_details').show();
- jQuery('#additional_settings').hide();
- } else if (selectBox.value == 'fastmail') {
- useServer = 'mail.messagingengine.com';
- useProtocol = 'IMAP2';
- useSSLType = 'tls';
- useCert = 'novalidate-cert';
- jQuery('#settings_details').show();
- jQuery('#additional_settings').hide();
- } else if (selectBox.value == 'other') {
- useServer = '';
- useProtocol = 'IMAP4';
- useSSLType = 'ssl';
- useCert = 'novalidate-cert';
- jQuery('#settings_details').show();
- jQuery('#additional_settings').show();
- } else {
- jQuery('#settings_details').hide();
- }
- // Clear the User Name and Password field
- jQuery('#_mbox_user').val('');
- jQuery('#_mbox_pwd').val('');
- if (useProtocol != '') {
- form._mbox_server.value = useServer;
-
- $A(form._mbox_protocol).each(function(node){
- node.checked = (node.value == useProtocol);
- });
- $A(form._mbox_ssltype).each(function(node){
- node.checked = (node.value == useSSLType);
- });
- $A(form._mbox_certvalidate).each(function(node){
- node.checked = (node.value == useCert);
- });
- }
- },
-
- /* Save the settings */
- save_settings: function(form){
- if(form._mbox_server.value == "") {
- MailManager.show_error(MailManager.i18n('JSLBL_SERVERNAME_CANNOT_BE_EMPTY'));
- return false;
- }
- if(form._mbox_user.value == "") {
- MailManager.show_error(MailManager.i18n('JSLBL_USERNAME_CANNOT_BE_EMPTY'));
- return false;
- }
- if(form._mbox_pwd.value == "") {
- MailManager.show_error(MailManager.i18n('JSLBL_PASSWORD_CANNOT_BE_EMPTY'));
- return false;
- }
- MailManager.progress_show(MailManager.i18n('JSLBL_Saving_And_Verifying'), '...');
- new Ajax.Request('index.php', {
- method: 'post',
- postBody: MailManager._baseurl() + "_operation=settings&_operationarg=save&" + Form.serialize(form),
- onComplete: function(transport){
- MailManager.progress_hide();
- var response = MailManager.removeHidElement(transport.responseText);
- var responseJSON = JSON.parse(response);
- if (responseJSON['success']) {
- MailManager.quicklinks_update();
- MailManager.folder_open('INBOX');
- MailManager.mainui();
- } else {
- MailManager.show_error(responseJSON['error']['message']);
- }
- }
- });
- },
-
- /* Remove the settings */
- remove_settings: function(form){
- MailManager.progress_show(MailManager.i18n('JSLBL_Removing'), '...');
- new Ajax.Request('index.php', {
- method: 'post',
- postBody: MailManager._baseurl() + "_operation=settings&_operationarg=remove&" + Form.serialize(form),
- onComplete: function(transport){
- MailManager.progress_hide();
- MailManager.close_all();
- var response = MailManager.removeHidElement(transport.responseText);
- var responseJSON = JSON.parse(response);
- if (responseJSON['success']) {
- MailManager.reload_now();
- } else {
- MailManager.show_error(responseJSON['error']['message']);
- }
- }
- });
- },
-
- /* Close the settings */
- close_settings: function(){
- MailManager.close_all();
- jQuery('#_contentdiv_').show();
- // Toggle highlighting previous folder and current folder selection
- var folderName = jQuery('#mailbox_folder').val();
- MailManager.updateSelectedFolder(folderName);
- jQuery('#mm_selected_folder').val(folderName);
- },
-
- /* Open the folder listing */
- folder_open: function(name, page){
- if (typeof(page) == 'undefined')
- page = 0;
- var query = "";
- // Consider search string too
- if(jQuery('#search_txt').val()) {
- query = "&q=" +encodeURIComponent(jQuery('#search_txt').val());
- }
- if(jQuery('#search_type').val()) {
- query += "&type=" + encodeURIComponent(jQuery('#search_type').val());
- }
- MailManager.progress_show(MailManager.i18n('JSLBL_Loading'), ' ' + name + '...');
-
- new Ajax.Request('index.php', {
- method: 'post',
- postBody: MailManager._baseurl() + "_operation=folder&_operationarg=open&_folder=" + encodeURIComponent(name) +
- "&_page=" + encodeURIComponent(page) + query,
- onComplete: function(transport){
- MailManager.progress_hide();
- // Toggle highlighting previous folder and current folder selection
- MailManager.updateSelectedFolder(name);
- // Update the selected MailBox folder name
- jQuery('#mailbox_folder').val(name);
- // Update the current selected folder, which will be used to highlight the selected folder
- jQuery('#mm_selected_folder').val(name);
-
- MailManager.mail_close();
- var response = MailManager.removeHidElement(transport.responseText);
- jQuery('#_contentdiv_').html(response);
-
- // Clear last open mail
- jQuery('#_contentdiv2_').html('');
-
- // Updates the drop down used for move emails
- MailManager.updateMoveFolderList();
- // Bind "Enter" key for search on the Search text box
- MailManager.bindEnterKeyForSearch();
- }
- });
- },
- 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("<b>%s (%s)</b>", 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);
-
- MailManager.progress_show(MailManager.i18n('JSLBL_Searching'), ' ...');
-
- new Ajax.Request('index.php', {
- method: 'post',
- postBody: MailManager._baseurl() + "_operation=folder&_operationarg=open&" + frmparams,
- onComplete: function(transport){
- MailManager.progress_hide();
-
- MailManager.mail_close();
- var response = MailManager.removeHidElement(transport.responseText);
- jQuery('#_contentdiv_').html(response);
- }
- });
-
- return false;
- },
-
- // Meta information of currently opened mail
- mail_open_meta: {},
-
- /* Open email */
- mail_open: function(folder, msgno){
-
- MailManager.progress_show(MailManager.i18n('JSLBL_Opening'), ' ...');
-
- jQuery('#_mailrow_' + msgno).removeClass('mm_bold');
- jQuery('#_mailrow_' + msgno).addClass('mm_normal');
-
- new Ajax.Request('index.php', {
- method: 'post',
- postBody: MailManager._baseurl() + "_operation=mail&_operationarg=open&_folder=" + encodeURIComponent(folder) + "&_msgno=" + encodeURIComponent(msgno),
- onComplete: function(transport){
- MailManager.progress_hide();
- var response = MailManager.removeHidElement(transport.responseText);
- var responseJSON = JSON.parse(response);
- var resultJSON = responseJSON['result'];
-
- if (!resultJSON['ui']) {
- MailManager.show_error(MailManager.i18n('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){
-
- MailManager.progress_show(MailManager.i18n('JSLBL_Updating'), ' ...');
- new Ajax.Request('index.php', {
- method: 'post',
- postBody: MailManager._baseurl() + "_operation=mail&_operationarg=mark&_markas=unread&_folder=" + encodeURIComponent(folder) + "&_msgno=" + encodeURIComponent(msgno),
- onComplete: function(transport){
- MailManager.progress_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('mm_bold');
-
- MailManager.folder_updateCount(resultJSON['folder'], resultJSON['unread']);
- }
- }
- });
- },
-
- /* 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;
-
- new Ajax.Request('index.php', {
- method: 'post',
- postBody: MailManager._baseurl() + "_operation=relation&_operationarg=find&_mfrom=" + encodeURIComponent(meta['from']) +
- '&_folder=' +
- encodeURIComponent(meta['folder']) +
- '&_msgno=' +
- encodeURIComponent(meta['msgno']) +
- '&_msguid=' +
- encodeURIComponent(meta['msguid'].replace('<', '<').replace('>', '>')),
-
- onComplete: function(transport){
-
- 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']);
- }
- });
- },
-
- /* 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;
-
- MailManager.progress_show(MailManager.i18n('JSLBL_Associating'), ' ...');
- new Ajax.Request('index.php', {
- method: 'post',
- postBody: MailManager._baseurl() + "_operation=relation&_operationarg=link&" + frmparams,
- onComplete: function(transport){
- MailManager.progress_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']);
- }
- }
- });
- },
-
- /* Extended support for creating and linking */
- mail_associate_create_wizard: function(form){
- if (form._mlinktotype.value == '') {
- MailManager.mail_associate_create_cancel();
- return;
- }
- var frmparams = Form.serialize(form);
- MailManager.progress_show(MailManager.i18n('JSLBL_Loading'), ' ...');
- new Ajax.Request('index.php', {
- method: 'post',
- postBody: MailManager._baseurl() + "_operation=relation&_operationarg=create_wizard&" + frmparams,
- onComplete: function(transport){
- MailManager.progress_hide();
- var response = MailManager.removeHidElement(transport.responseText);
- jQuery('#_relationpopupdiv_').get(0).innerHTML = (response);
- var scriptTags = $("_relationpopupdiv_").getElementsByTagName("script");
- for(var i = 0; i< scriptTags.length; i++){
- var scriptTag = scriptTags[i];
- eval(scriptTag.innerHTML);
- }
- // Place the popup at center
- MailManager.placeAtCenter(jQuery('#_relationpopupdiv_'));
- jQuery('#_relationpopupdiv_').css('visibility', '').show();
- //Make it Dragable
- jQuery('#_relationpopupdiv_').draggable().css('cursor','move');
- }
- });
- },
-
- /* 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<form._mlinkto.length; i++) {
- if(form._mlinkto[i].checked) {
- selected = true;
- }
- }
- } else {
- if(form._mlinkto && form._mlinkto.checked) {
- selected = true;
- } else {
- form._mlinkto.checked = true;
- selected = true;
- }
- }
-
- // No record is selected for linking?
- if (selected == false) {
- MailManager.show_error(MailManager.i18n('JSLBL_PLEASE_SELECT_ATLEAST_ONE_RECORD'));
- MailManager.resetLinkToDropDown();
- return false;
- }
-
- if(form._mlinktotype.value == 'Emails') {
- MailManager.mail_associate(form);
- } else if(form._mlinktotype.value == 'ModComments') {
- MailManager.showCommentWidget(form);
- } else {
- MailManager.mail_associate_create_wizard(form);
- }
- },
- mail_associate_create_cancel: function(){
- jQuery('#_relationpopupdiv_').hide();
- MailManager.resetLinkToDropDown();
- },
-
- mail_associate_create: function(form){
- //this is needed as there will be additional module & action element in quickcreate form
- jQuery("form[name='QcEditView']").children("input[name='module']").remove();
- jQuery("form[name='QcEditView']").children("input[name='action']").remove();
-
- var frmparams = Form.serialize(form);
- MailManager.progress_show(MailManager.i18n('JSLBL_Associating'), ' ...');
- new Ajax.Request('index.php', {
- method: 'post',
- postBody: MailManager._baseurl() + "_operation=relation&_operationarg=create&" + frmparams,
- onComplete: function(transport){
- MailManager.progress_hide();
- var response = MailManager.removeHidElement(transport.responseText);
- var responseJSON = JSON.parse(response);
- var resultJSON = responseJSON['result'];
- if (resultJSON['ui']) {
- MailManager.mail_associate_create_cancel();
- jQuery('#_mailrecord_relationshipdiv_').html(resultJSON['ui']);
- return true;
- }
- }
- });
- },
-
- // function to show the comment widget
- showCommentWidget : function(form) {
- var frmparams = Form.serialize(form);
- MailManager.progress_show();
- new Ajax.Request('index.php', {
- method: 'post',
- postBody: MailManager._baseurl() + "_operation=relation&_operationarg=commentwidget&" + frmparams,
- onComplete: function(transport){
- MailManager.progress_hide();
- var response = MailManager.removeHidElement(transport.responseText);
- MailManager.mail_associate_create_cancel();
- jQuery('#_relationpopupdiv_').html(response).css('visibility', '').show();
- // Place the popup at the center
- MailManager.placeAtCenter(jQuery('#_relationpopupdiv_'));
- // Make it draggable
- jQuery('#_relationpopupdiv_').draggable().css('cursor','move');
- }
- });
- },
- addCommentValidate : function(form) {
- var comment = jQuery.trim(jQuery(form.commentcontent).val());
- if(comment == '') {
- MailManager.show_error(MailManager.i18n('JSLBL_CANNOT_ADD_EMPTY_COMMENT'));
- return false;
- }
- return true;
- },
- // Place an element at the center of the page
- placeAtCenter : function(element) {
- element.css("position","absolute");
- element.css("top", ((jQuery(window).height() - element.outerHeight()) / 2) + jQuery(window).scrollTop() + "px");
- element.css("left", ((jQuery(window).width() - element.outerWidth()) / 2) + jQuery(window).scrollLeft() + "px");
- },
- /* Compose new mail */
- mail_compose: function(){
- MailManager.close_all();
- jQuery('#_replydiv_').html(jQuery('#replycontentdiv').html());
- jQuery('#_replydiv_').show();
-
- jQuery("#_mail_replyfrm_to_").val('');
- jQuery("#_mail_replyfrm_cc_").val('');
- jQuery("#_mail_replyfrm_bcc_").val('');
- jQuery("#_mail_replyfrm_subject_").val('');
- jQuery("#emailid").val('');
- jQuery('.qq-upload-list').children().remove();
- jQuery('#attachments').children().remove();
- jQuery('#attachmentCount').val('');
- if (MailManager.mail_reply_rteinstance) {
- delete CKEDITOR.instances['_mail_replyfrm_body_'];
- MailManager.mail_reply_rteinstance = false;
- }
- MailManager.mail_reply_rteinit('');
- MailManager.createUploader();
- // Update the seleted folders to highlight them.
- MailManager.updateSelectedFolder('mm_compose');
- jQuery('#mm_selected_folder').val('mm_compose');
- },
- createUploader : function (){
- var uploader = new qq.FileUploader({
- element: document.getElementById('file-uploader'),
- action : 'index.php?module=MailManager&action=MailManagerAjax&file=index&mode=ajax&_operation=relation&_operationarg=saveattachment',
- template: '<div class="qq-uploader">' +
- '<div class="qq-upload-drop-area"><span>'+MailManager.i18n('JSLBL_UPLOAD_DROPFILES')+'</span></div>' +
- '<div class="qq-upload-button">'+MailManager.i18n('JSLBL_UPLOAD_FILE')+'</div>' +
- '<ul class="qq-upload-list"></ul>' +
- '</div>',
- // template for one item in file list
- fileTemplate: '<li>' +
- '<span class="qq-upload-file small"></span>' +
- '<span class="qq-upload-spinner small"></span>' +
- '<span class="qq-upload-size small"></span>' +
- '<a class="qq-upload-cancel small" href="#">'+MailManager.i18n('JSLBL_UPLOAD_CANCEL')+'</a>' +
- '<a class="qq-upload-deleteupload small" href="#">\n\
- <img height="12" border="0" width="12" title='+MailManager.i18n('JSLBL_Delete')+' src="themes/images/no.gif"></a>' +
- '<span class="qq-upload-failed-text small">'+MailManager.i18n('JSLBL_UPLOAD_FAILED')+'</span>' +
- '</li>',
- 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){
- MailManager.close_all();
- MailManager.progress_show(MailManager.i18n('JSLBL_Loading'), ' ...');
- new Ajax.Request('index.php', {
- method: 'post',
- postBody: MailManager._baseurl() + "_operation=mail&_operationarg=getdraftmail&id="+ encodeURIComponent(id),
- onComplete: function(response){
- jQuery('.qq-upload-list').children().remove();
- MailManager.progress_hide();
- jQuery('#_replydiv_').show();
- var responseJSON = JSON.parse(response.responseText);
- MailManager.mail_reply_rteinit(responseJSON['result'][0][0]['description']);
- jQuery("#_mail_replyfrm_to_").val(JSON.parse(responseJSON['result'][0][0]['saved_toid']));
- jQuery("#_mail_replyfrm_cc_").val(JSON.parse(responseJSON['result'][0][0]['ccmail']));
- jQuery("#_mail_replyfrm_bcc_").val(JSON.parse(responseJSON['result'][0][0]['bccmail']));
- jQuery("#_mail_replyfrm_subject_").val(responseJSON['result'][0][0]['subject']);
- jQuery("#emailid").val(responseJSON['result'][0][0]['id']);
- var attachments = responseJSON['result'][0]['attachments'];
- if(attachments != null) {
- var attachmentsHTML = "";
- for(i=0; i<attachments.length;i++) {
- attachmentsHTML += "<li class='qq-upload-success small'><span class='qq-upload-file small'>"+attachments[i]['name']+"</span>\n\
- <span class='qq-upload-size small' style='display: inline;'>"+attachments[i]['size']+"</span>\n\
- <a class='qq-upload-deleteupload small' onclick='MailManager.deleteAttachment(\""+ id +"\", \""+attachments[i]['docid']+"\", this);' href='#'>\n\
- <img height='12' border='0' width='12' title="+MailManager.i18n('JSLBL_Delete')+" src='themes/images/no.gif'></a></li>";
- }
- }
- jQuery('#attachmentCount').val(attachments.length);
- jQuery('.qq-upload-list').append(attachmentsHTML);
- jQuery('#upload_target').children().remove();
- // Updated to highlight selected folder
- MailManager.updateSelectedFolder("mm_compose");
- jQuery('#mm_selected_folder').val("mm_compose");
- }
- });
- },
- deleteAttachment : function(id, docid, ele) {
- MailManager.progress_show(MailManager.i18n('JSLBL_Loading'), ' ...');
- new Ajax.Request('index.php', {
- method: 'post',
- postBody: MailManager._baseurl() + "_operation=mail&_operationarg=deleteAttachment&emailid="+ encodeURIComponent(id)
- +"&docid="+ encodeURIComponent(docid),
- onComplete: function(response){
- MailManager.progress_hide();
- var responseJSON = JSON.parse(response.responseText);
- if(responseJSON.result.success == true) {
- MailManager.progress_hide();
- jQuery(ele).parent().fadeTo('slow', 0.0, function(){
- var count = jQuery('#attachmentCount').val();
- jQuery('#attachmentCount').val(--count);
- jQuery(ele).parent().remove();
- });
- } else {
- MailManager.show_error(MailManager.i18n('JSLBL_ATTACHMENT_NOT_DELETED'));
- }
- }
- });
- },
-
- /* Reply to mail */
- mail_reply: function(all){
- if (typeof(all) == 'undefined')
- all = true;
-
- var from = jQuery('#_mailopen_from').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();
-
- MailManager.close_all();
- jQuery('#_replydiv_').show();
-
- // TODO Strip invalid HTML?
- if (all)
- jQuery("#_mail_replyfrm_cc_").val(cc);
- else
- jQuery("#_mail_replyfrm_cc_").val('');
-
- jQuery("#_mail_replyfrm_to_").val(from);
- jQuery("#_mail_replyfrm_bcc_").val('');
- var replySubject = (subject.toUpperCase().indexOf('RE:') == 0) ? subject : 'Re: ' + subject;
- jQuery("#_mail_replyfrm_subject_").val(replySubject);
- 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);
- jQuery("#emailid").val('');
- jQuery("#attachmentCount").val('');
- MailManager.mail_reply_rteinit(replyBody);
- MailManager.createUploader();
- // Update the seleted folders to highlight them.
- MailManager.updateSelectedFolder('mm_compose');
- jQuery('#mm_selected_folder').val('mm_compose');
- },
-
- /* 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);
- }
- },
-
- /* Forward email */
- mail_forward: function(messageId){
- // Update the seleted folders to highlight them.
- MailManager.updateSelectedFolder('mm_compose');
- jQuery('#mm_selected_folder').val('mm_compose');
- 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();
-
- MailManager.close_all();
- jQuery('#_replydiv_').show();
-
- var replyfrm = $('_mail_replyfrm_');
-
- var fwdMsgMetaInfo = MailManager.i18n('JSLBL_FROM') + from + '<br/>'+MailManager.i18n('JSLBL_DATE') + date + '<br/>'+MailManager.i18n('JSLBL_SUBJECT') + subject;
- if (to != '' && to != null)
- fwdMsgMetaInfo += '<br/>'+MailManager.i18n('JSLBL_TO') + to;
- if (cc != '' && cc != null)
- fwdMsgMetaInfo += '<br/>'+MailManager.i18n('JSLBL_CC') + cc;
- fwdMsgMetaInfo += '<br/>';
-
- replyfrm.to.value = '';
- replyfrm.cc.value = '';
- replyfrm.bcc.value = '';
- replyfrm.subject.value = (subject.toUpperCase().indexOf('FWD:') == 0) ? subject : 'Fwd: ' + subject;
- replyfrm.body.value = MailManager.sprintf('<p></p><p>%s<br/>%s</p>%s', MailManager.i18n('JSLBL_FORWARD_MESSAGE_TEXT'), fwdMsgMetaInfo, body);
- replyfrm.emailid.value = '';
- replyfrm.attachmentCount.value = '';
- MailManager.mail_reply_rteinit(replyfrm.body.value);
- MailManager.createUploader();
- var folder = jQuery('input[name=_folder]').val();
- var attachmentCount = jQuery("#_mail_attachmentcount_").val();
- if(attachmentCount) {
- VtigerJS_DialogBox.block();
- new Ajax.Request('index.php', {
- method: 'post',
- postBody: MailManager._baseurl() + "_operation=mail&_operationarg=forward&messageid=" +
- encodeURIComponent(messageId) +"&folder=" + encodeURIComponent(folder) +"&subject=" + encodeURIComponent(replyfrm.subject.value),
- onComplete: function(transport){
- var response = MailManager.removeHidElement(transport.responseText);
- var responseJSON = JSON.parse(response);
- if (responseJSON['success']) {
- jQuery("#emailid").val(responseJSON['result']['emailid'])
- var attachments = responseJSON['result']['attachments'];
- if(attachments != '' && attachments != null) { //If attachments are present
- for(i=0; i<attachments.length; i++){
- MailManager.add_data_to_relatedlist(attachments[i]);
- }
- }
- }
- VtigerJS_DialogBox.unblock();
- }
- });
- }
- },
-
- /* 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 == '') {
- MailManager.show_error(MailManager.i18n('JSLBL_Recepient_Cannot_Be_Empty'));
- return false;
- }
- if (form.subject.value == '' && !confirm(MailManager.i18n('JSLBL_SendWith_EmptySubject'))) {
- return false;
- }
- var bodyval = $('_mail_replyfrm_body_').value.trim();
- if (bodyval == '<br />' && !confirm(MailManager.i18n('JSLBL_SendWith_EmptyText'))) {
- return false;
- }
- if (bodyval == '' && !confirm(MailManager.i18n('JSLBL_SendWith_EmptyText'))) {
- return false;
- }
- MailManager.progress_show(MailManager.i18n('JSLBL_Sending'), ' ...');
- 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('index.php?'+baseurl, params, function(transport) {
- MailManager.progress_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'));
- // var currentSelectedFolder = jQuery('#mm_selected_folder').val();
- // MailManager.updateSelectedFolder(currentSelectedFolder);
- // jQuery('#mm_selected_folder').val(currentSelectedFolder);
- } else {
- MailManager.show_error(MailManager.i18n('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;
- }
- }
- MailManager.progress_show(MailManager.i18n('JSLBL_Saving'), ' ...');
- 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…
Large files files are truncated, but you can click here to view the full file