Skip to content
Snippets Groups Projects
Commit 0fe5640b authored by Prasad's avatar Prasad
Browse files

Merge branch '277' into 'master'

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

While constructing select2 plugin and search, hardcoded for to email field only

See merge request !96
parents 9525ce63 1d3e3c41
No related branches found
No related tags found
No related merge requests found
......@@ -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