Skip to content
Snippets Groups Projects
Commit 1d3e3c41 authored by Satish's avatar Satish
Browse files

#277 - Can not add more than one email to CC (Mail Manager)

parent 45ca8bdd
No related branches found
No related tags found
1 merge request!96#277 - Can not add more than one email to CC (Mail Manager)
......@@ -63,7 +63,7 @@ jQuery.Class("Emails_MassEdit_Js",{},{
* return UI
*/
showComposeEmailForm : function(params,cb,windowName){
app.hideModalWindow();
app.hideModalWindow();
var popupInstance = Vtiger_Popup_Js.getInstance();
return popupInstance.show(params,cb,windowName);
......@@ -279,7 +279,7 @@ jQuery.Class("Emails_MassEdit_Js",{},{
for(var id in responseData){
selectedDocumentId = id;
var selectedFileName = responseData[id].info['filename'];
var selectedFileSize = responseData[id].info['filesize'];
var selectedFileSize = responseData[id].info['filesize'];
var response = thisInstance.writeDocumentIds(selectedDocumentId)
if(response){
var attachmentElement = thisInstance.getDocumentAttachmentElement(selectedFileName,id,selectedFileSize);
......@@ -405,31 +405,31 @@ jQuery.Class("Emails_MassEdit_Js",{},{
}
var popupInstance =Vtiger_Popup_Js.getInstance();
popupInstance.show(params, function(data){
var responseData = JSON.parse(data);
for(var id in responseData){
var data = {
'name' : responseData[id].name,
'id' : id,
'emailid' : responseData[id].email
}
thisInstance.setReferenceFieldValue(parentElem, data);
thisInstance.addToEmailAddressData(data);
thisInstance.appendToSelectedIds(id);
thisInstance.addToEmails(data);
var responseData = JSON.parse(data);
for(var id in responseData){
var data = {
'name' : responseData[id].name,
'id' : id,
'emailid' : responseData[id].email
}
},'relatedEmailModules');
thisInstance.setReferenceFieldValue(parentElem, data);
thisInstance.addToEmailAddressData(data);
thisInstance.appendToSelectedIds(id);
thisInstance.addToEmails(data);
}
},'relatedEmailModules');
});
this.getMassEmailForm().on('click','[name="clearToEmailField"]',function(e){
var element = jQuery(e.currentTarget);
element.closest('div.toEmailField').find('.sourceField').val('');
element.closest('div.toEmailField').find('#toEmail').val('');
thisInstance.getMassEmailForm().find('[name="toemailinfo"]').val(JSON.stringify(new Array()));
thisInstance.getMassEmailForm().find('[name="selected_ids"]').val(JSON.stringify(new Array()));
thisInstance.getMassEmailForm().find('[name="to"]').val(JSON.stringify(new Array()));
var preloadData = [];
thisInstance.setPreloadData(preloadData);
thisInstance.getMassEmailForm().find('#emailField').select2('data', preloadData);
thisInstance.getMassEmailForm().find('#toEmail').select2('data', preloadData);
});
......@@ -446,9 +446,9 @@ jQuery.Class("Emails_MassEdit_Js",{},{
}
preloadData.push(emailInfo);
thisInstance.setPreloadData(preloadData);
container.find('#emailField').select2('data', preloadData);
container.find('#toEmail').select2('data', preloadData);
var toEmailField = container.find('.sourceField');
var toEmailField = container.find('#toEmail');
var toEmailFieldExistingValue = toEmailField.val();
var toEmailFieldNewValue;
if(toEmailFieldExistingValue != ""){
......@@ -459,50 +459,50 @@ jQuery.Class("Emails_MassEdit_Js",{},{
toEmailField.val(toEmailFieldNewValue);
},
addToEmailAddressData : function(mailInfo) {
var mailInfoElement = this.getMassEmailForm().find('[name="toemailinfo"]');
var existingToMailInfo = JSON.parse(mailInfoElement.val());
if(typeof existingToMailInfo.length != 'undefined') {
existingToMailInfo = {};
}
//If same record having two different email id's then it should be appended to
//existing email id
if(existingToMailInfo.hasOwnProperty(mailInfo.id) === true){
var existingValues = existingToMailInfo[mailInfo.id];
var newValue = new Array(mailInfo.emailid);
existingToMailInfo[mailInfo.id] = jQuery.merge(existingValues,newValue);
} else {
existingToMailInfo[mailInfo.id] = new Array(mailInfo.emailid);
}
mailInfoElement.val(JSON.stringify(existingToMailInfo));
},
appendToSelectedIds : function(selectedId) {
var selectedIdElement = this.getMassEmailForm().find('[name="selected_ids"]');
var previousValue = '';
if(JSON.parse(selectedIdElement.val()) != '') {
previousValue = JSON.parse(selectedIdElement.val());
//If value doesn't exist then insert into an array
if(jQuery.inArray(selectedId,previousValue) === -1){
previousValue.push(selectedId);
}
} else {
addToEmailAddressData : function(mailInfo) {
var mailInfoElement = this.getMassEmailForm().find('[name="toemailinfo"]');
var existingToMailInfo = JSON.parse(mailInfoElement.val());
if(typeof existingToMailInfo.length != 'undefined') {
existingToMailInfo = {};
}
//If same record having two different email id's then it should be appended to
//existing email id
if(existingToMailInfo.hasOwnProperty(mailInfo.id) === true){
var existingValues = existingToMailInfo[mailInfo.id];
var newValue = new Array(mailInfo.emailid);
existingToMailInfo[mailInfo.id] = jQuery.merge(existingValues,newValue);
} else {
existingToMailInfo[mailInfo.id] = new Array(mailInfo.emailid);
}
mailInfoElement.val(JSON.stringify(existingToMailInfo));
},
appendToSelectedIds : function(selectedId) {
var selectedIdElement = this.getMassEmailForm().find('[name="selected_ids"]');
var previousValue = '';
if(JSON.parse(selectedIdElement.val()) != '') {
previousValue = JSON.parse(selectedIdElement.val());
//If value doesn't exist then insert into an array
if(jQuery.inArray(selectedId,previousValue) === -1){
previousValue.push(selectedId);
}
} else {
previousValue = new Array(selectedId);
}
}
selectedIdElement.val(JSON.stringify(previousValue));
},
},
addToEmails : function(mailInfo){
var toEmails = this.getMassEmailForm().find('[name="to"]');
var value = JSON.parse(toEmails.val());
addToEmails : function(mailInfo){
var toEmails = this.getMassEmailForm().find('[name="to"]');
var value = JSON.parse(toEmails.val());
if(value == ""){
value = new Array();
}
value.push(mailInfo.emailid);
toEmails.val(JSON.stringify(value));
},
value.push(mailInfo.emailid);
toEmails.val(JSON.stringify(value));
},
/**
* Function to remove attachments that are added in
* edit view of email in compose email form
......@@ -614,7 +614,7 @@ jQuery.Class("Emails_MassEdit_Js",{},{
registerAutoCompleteFields : function(container) {
var thisInstance = this;
container.find('#emailField').select2({
container.find('.emailField').select2({
minimumInputLength: 3,
closeOnSelect : false,
......@@ -626,18 +626,18 @@ jQuery.Class("Emails_MassEdit_Js",{},{
},
ajax : {
'url' : 'index.php?module=Emails&action=BasicAjax',
'dataType' : 'json',
'data' : function(term,page){
var data = {};
data['searchValue'] = term;
return data;
},
'results' : function(data){
'url' : 'index.php?module=Emails&action=BasicAjax',
'dataType' : 'json',
'data' : function(term,page){
var data = {};
data['searchValue'] = term;
return data;
},
'results' : function(data){
var finalResult = [];
var results = data.result;
var resultData = new Array();
for(var moduleName in results) {
for(var moduleName in results) {
var moduleResult = [];
moduleResult.text = moduleName;
......@@ -654,18 +654,51 @@ jQuery.Class("Emails_MassEdit_Js",{},{
}
moduleResult.children = children;
resultData.push(moduleResult);
}
}
finalResult.results = resultData;
return finalResult;
},
return finalResult;
},
transport : function(params) {
return jQuery.ajax(params);
}
}
}
}).on("change", function (selectedData) {
console.log("Change of select element");
var addedElement = selectedData.added;
var removedData = selectedData.removed;
var currentElementName = jQuery(selectedData.currentTarget).attr('name');
if(currentElementName == 'cc' || currentElementName == 'bcc') {
var fieldName = 'ccInfo';
if(currentElementName == 'bcc') {
fieldName = 'bccInfo';
}
var emailData = [];
var fieldData = jQuery('[name="'+fieldName+'"]').val();
if(fieldData.length) {
emailData = JSON.parse(fieldData);
emailData = jQuery.map(emailData, function(value, index) {
return [value];
});
}
if(typeof addedElement != 'undefined') {
var data = {
'id' : addedElement.recordId,
'name' : addedElement.text,
'emailid' : addedElement.id
}
emailData.push(data);
} else if(typeof removedData != 'undefined') {
for(var i in emailData) {
if(emailData[i].id == removedData.recordId || emailData[i].emailid == removedData.id) {
emailData.splice(i, 1);
}
}
}
jQuery('[name="'+fieldName+'"]').val(JSON.stringify(emailData));
}
if (typeof addedElement != 'undefined') {
var data = {
'id' : addedElement.recordId,
......@@ -721,13 +754,13 @@ jQuery.Class("Emails_MassEdit_Js",{},{
}
});
container.find('#emailField').select2("container").find("ul.select2-choices").sortable({
container.find('.emailField').select2("container").find("ul.select2-choices").sortable({
containment: 'parent',
start: function(){
container.find('#emailField').select2("onSortStart");
container.find('.emailField').select2("onSortStart");
},
update: function(){
container.find('#emailField').select2("onSortEnd");
container.find('.emailField').select2("onSortEnd");
}
});
......@@ -762,6 +795,7 @@ jQuery.Class("Emails_MassEdit_Js",{},{
}
}
}
if (typeof toFieldValues != 'undefined') {
for(var i in toFieldValues) {
var emailId = toFieldValues[i];
......@@ -774,14 +808,47 @@ jQuery.Class("Emails_MassEdit_Js",{},{
}
if (typeof preloadData != 'undefined') {
thisInstance.setPreloadData(preloadData);
container.find('#emailField').select2('data', preloadData);
container.find('.emailField[name="toEmail"]').select2('data', preloadData);
}
var ccValues = container.find('[name="ccInfo"]').val();
if(ccValues) {
ccValues = JSON.parse(ccValues);
var emailData = [];
for(var i in ccValues) {
var ccValue = ccValue[i];
if(ccValue.id) {
emailData.push({'id' : ccValue.emailid, 'text' : ccValue.name, 'recordId' : ccValue.id});
} else if(ccValue.emailid) {
emailData.push({'id' : ccValue.emailid, 'text' : ccValue.name});
} else {
emailData.push({'id' : ccValue.trim(), 'text' : ccValue.trim()});
}
}
container.find('.emailField[name="cc"]').select2('data', emailData);
}
var bccValues = container.find('[name="bccInfo"]').val();
if(bccValues) {
bccValues = JSON.parse(bccValues);
var bemailData = [];
for(var i in bccValues) {
var bccValue = bccValues[i];
if(bccValue.id) {
bemailData.push({'id' : bccValue.emailid, 'text' : bccValue.name, 'recordId' : bccValue.id});
} else if(bccValue.emailid) {
bemailData.push({'id' : bccValue.emailid, 'text' : bccValue.name});
} else {
bemailData.push({'id' : bccValue.trim(), 'text' : bccValue.trim()});
}
}
container.find('.emailField[name="bcc"]').select2('data', bemailData);
}
},
removeFromEmailAddressData : function(mailInfo) {
var mailInfoElement = this.getMassEmailForm().find('[name="toemailinfo"]');
var previousValue = JSON.parse(mailInfoElement.val());
var mailInfoElement = this.getMassEmailForm().find('[name="toemailinfo"]');
var previousValue = JSON.parse(mailInfoElement.val());
var elementSize = previousValue[mailInfo.id].length;
var emailAddress = mailInfo.emailid;
var selectedId = mailInfo.id;
......@@ -801,14 +868,14 @@ jQuery.Class("Emails_MassEdit_Js",{},{
//update toemailnameslist hidden element value
}
mailInfoElement.val(JSON.stringify(previousValue));
},
},
removeFromSelectedIds : function(selectedId) {
var selectedIdElement = this.getMassEmailForm().find('[name="selected_ids"]');
var previousValue = JSON.parse(selectedIdElement.val());
removeFromSelectedIds : function(selectedId) {
var selectedIdElement = this.getMassEmailForm().find('[name="selected_ids"]');
var previousValue = JSON.parse(selectedIdElement.val());
var mailInfoElement = this.getMassEmailForm().find('[name="toemailinfo"]');
var mailAddress = JSON.parse(mailInfoElement.val());
var elements = mailAddress[selectedId];
var mailAddress = JSON.parse(mailInfoElement.val());
var elements = mailAddress[selectedId];
var noOfEmailAddress = elements.length;
//Don't remove id from selected_ids if element is having more than two email id's
......@@ -826,11 +893,11 @@ jQuery.Class("Emails_MassEdit_Js",{},{
}
selectedIdElement.val(JSON.stringify(updatedValue));
}
},
},
removeFromEmails : function(mailInfo){
var toEmails = this.getMassEmailForm().find('[name="to"]');
var previousValue = JSON.parse(toEmails.val());
removeFromEmails : function(mailInfo){
var toEmails = this.getMassEmailForm().find('[name="to"]');
var previousValue = JSON.parse(toEmails.val());
var updatedValue = [];
for (var i in previousValue) {
......@@ -843,8 +910,8 @@ jQuery.Class("Emails_MassEdit_Js",{},{
updatedValue.push(email);
}
}
toEmails.val(JSON.stringify(updatedValue));
},
toEmails.val(JSON.stringify(updatedValue));
},
registerEvents : function(){
var thisInstance = this;
......
......@@ -20,28 +20,28 @@
<input type="hidden" name="excluded_ids" value='{ZEND_JSON::encode($EXCLUDED_IDS)}' />
<input type="hidden" name="viewname" value="{$VIEWNAME}" />
<input type="hidden" name="module" value="{$MODULE}"/>
<input type="hidden" name="selectedFields" value='{ZEND_JSON::encode($SELECTED_FIELDS)}'/>
<input type="hidden" name="selectedFields" value='{ZEND_JSON::encode($SELECTED_FIELDS)}'/>
<input type="hidden" name="mode" value="massSave" />
<input type="hidden" name="toemailinfo" value='{ZEND_JSON::encode($TOMAIL_INFO)}' />
<input type="hidden" name="view" value="MassSaveAjax" />
<input type="hidden" name="to" value='{ZEND_JSON::encode($TO)}' />
<input type="hidden" name="toMailNamesList" value='{ZEND_JSON::encode($TOMAIL_NAMES_LIST)}' />
<input type="hidden" name="to" value='{ZEND_JSON::encode($TO)}' />
<input type="hidden" name="toMailNamesList" value='{ZEND_JSON::encode($TOMAIL_NAMES_LIST)}' />
<input type="hidden" id="flag" name="flag" value="" />
<input type="hidden" id="maxUploadSize" value="{$MAX_UPLOAD_SIZE}" />
<input type="hidden" id="documentIds" name="documentids" value="" />
<input type="hidden" name="emailMode" value="{$EMAIL_MODE}" />
{if !empty($PARENT_EMAIL_ID)}
<input type="hidden" name="parent_id" value="{$PARENT_EMAIL_ID}" />
{if !empty($PARENT_EMAIL_ID)}
<input type="hidden" name="parent_id" value="{$PARENT_EMAIL_ID}" />
<input type="hidden" name="parent_record_id" value="{$PARENT_RECORD}" />
{/if}
{if !empty($RECORDID)}
<input type="hidden" name="record" value="{$RECORDID}" />
{/if}
<input type="hidden" name="search_key" value= "{$SEARCH_KEY}" />
<input type="hidden" name="operator" value="{$OPERATOR}" />
<input type="hidden" name="search_value" value="{$ALPHABET_VALUE}" />
<input type="hidden" name="search_params" value='{ZEND_JSON::encode($SEARCH_PARAMS)}' />
{/if}
{if !empty($RECORDID)}
<input type="hidden" name="record" value="{$RECORDID}" />
{/if}
<input type="hidden" name="search_key" value= "{$SEARCH_KEY}" />
<input type="hidden" name="operator" value="{$OPERATOR}" />
<input type="hidden" name="search_value" value="{$ALPHABET_VALUE}" />
<input type="hidden" name="search_params" value='{ZEND_JSON::encode($SEARCH_PARAMS)}' />
<div class="row-fluid toEmailField padding10">
<span class="span8">
<span class="row-fluid">
......@@ -49,8 +49,8 @@
{if !empty($TO)}
{assign var=TO_EMAILS value=","|implode:$TO}
{/if}
<span class="span9">
<input id="emailField" name="toEmail" type="text" class="row-fluid autoComplete sourceField select2"
<span class="span9">
<input id="toEmail" name="toEmail" type="text" class="row-fluid autoComplete emailField select2"
value="{$TO_EMAILS}" data-validation-engine="validate[required, funcCall[Vtiger_To_Email_Validator_Js.invokeValidation]]"
data-fieldinfo='{$FIELD_INFO}'
{if !empty($SPECIAL_VALIDATOR)}data-validator='{Zend_Json::encode($SPECIAL_VALIDATOR)}'{/if}/>
......@@ -83,7 +83,7 @@
<div class="span8">
<div class="row-fluid">
<div class="span2">{vtranslate('LBL_CC',$MODULE)}</div>
<input class="span9" data-validation-engine="validate[funcCall[Vtiger_MultiEmails_Validator_Js.invokeValidation]]" type="text" name="cc" value="{if !empty($CC)}{$CC}{/if}"/>
<input class="span9 row-fluid emailField select2" data-validation-engine="validate[funcCall[Vtiger_To_Email_Validator_Js.invokeValidation]]" type="text" name="cc" value="{if !empty($CC)}{$CC}{/if}"/>
</div>
</div>
<div class="span4"></div>
......@@ -92,7 +92,7 @@
<span class="span8">
<span class="row-fluid">
<span class="span2">{vtranslate('LBL_BCC',$MODULE)}</span>
<input class="span9" data-validation-engine="validate[funcCall[Vtiger_MultiEmails_Validator_Js.invokeValidation]]" type="text" name="bcc" value="{if !empty($BCC)}{$BCC}{/if}"/>
<input class="span9 row-fluid emailField select2" data-validation-engine="validate[funcCall[Vtiger_To_Email_Validator_Js.invokeValidation]]" type="text" name="bcc" value="{if !empty($BCC)}{$BCC}{/if}"/>
</span>
</span>
<span class="span4"></span>
......@@ -113,11 +113,11 @@
<span class="span8">
<span class="row-fluid">
<span class="span2">{vtranslate('LBL_SUBJECT',$MODULE)}<span class="redColor">*</span></span>
<span class="span9">
<input data-validation-engine='validate[required]' class="row-fluid" type="text" name="subject" value="{$SUBJECT}" id="subject" spellcheck="true"/>
</span>
<span class="span9">
<input data-validation-engine='validate[required]' class="row-fluid" type="text" name="subject" value="{$SUBJECT}" id="subject" spellcheck="true"/>
</span>
</span>
</span>
</span>
<span class="span4"></span>
</div>
<div class="row-fluid padding10">
......@@ -135,7 +135,7 @@
{else}
{assign var=FILE_TYPE value="file"}
{/if}
<div class="MultiFile-label customAttachment" data-file-id="{$ATTACHMENT['fileid']}" data-file-type="{$FILE_TYPE}" data-file-size="{$ATTACHMENT['size']}" {if $FILE_TYPE eq "document"} data-document-id="{$DOCUMENT_ID}"{/if}>
<div class="MultiFile-label customAttachment" data-file-id="{$ATTACHMENT['fileid']}" data-file-type="{$FILE_TYPE}" data-file-size="{$ATTACHMENT['size']}" {if $FILE_TYPE eq "document"} data-document-id="{$DOCUMENT_ID}"{/if}>
{if $ATTACHMENT['nondeletable'] neq true}
<a name="removeAttachment" class="cursorPointer">x </a>
{/if}
......@@ -158,7 +158,7 @@
<button type="button" class="btn" id="gotoPreview" title="{vtranslate('LBL_GO_TO_PREVIEW',$MODULE)}" style="margin-left: 5px;"><strong>{vtranslate('LBL_GO_TO_PREVIEW',$MODULE)}</strong></button>
{/if}
</span>
<span name="progressIndicator" style="height:30px;">&nbsp;</span>
<span name="progressIndicator" style="height:30px;">&nbsp;</span>
</div>
</div>
{if $MODULE_IS_ACTIVE}
......@@ -169,9 +169,9 @@
</div>
{/if}
</div>
{if $RELATED_LOAD eq true}
<input type="hidden" name="related_load" value={$RELATED_LOAD} />
{/if}
{if $RELATED_LOAD eq true}
<input type="hidden" name="related_load" value={$RELATED_LOAD} />
{/if}
<textarea id="description" name="description">{$DESCRIPTION}</textarea>
<input type="hidden" name="attachments" value='{ZEND_JSON::encode($ATTACHMENTS)}' />
</form>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment