diff --git a/frontend/client/res/templates/email/fields/email-address-varchar/detail.tpl b/frontend/client/res/templates/email/fields/email-address-varchar/detail.tpl
index 822f184865..25060bd18e 100644
--- a/frontend/client/res/templates/email/fields/email-address-varchar/detail.tpl
+++ b/frontend/client/res/templates/email/fields/email-address-varchar/detail.tpl
@@ -1,15 +1,5 @@
{{#if value}}
{{{value}}}
- {{#if showCreate}}
-
-
-
-
- {{/if}}
{{else}}
{{{translate 'None'}}}
{{/if}}
diff --git a/frontend/client/src/views/email/fields/email-address-varchar.js b/frontend/client/src/views/email/fields/email-address-varchar.js
index 80ff3cd0b3..7a611f1e8d 100644
--- a/frontend/client/src/views/email/fields/email-address-varchar.js
+++ b/frontend/client/src/views/email/fields/email-address-varchar.js
@@ -18,7 +18,7 @@
* You should have received a copy of the GNU General Public License
* along with EspoCRM. If not, see http://www.gnu.org/licenses/.
************************************************************************/
-Espo.define('views/email/fields/email-address-varchar', 'views/fields/varchar', function (Dep) {
+Espo.define('views/email/fields/email-address-varchar', ['views/fields/varchar', 'views/email/fields/from-address-varchar'], function (Dep, From) {
return Dep.extend({
@@ -38,7 +38,6 @@ Espo.define('views/email/fields/email-address-varchar', 'views/fields/varchar',
if (~address.indexOf('@')) {
this.addAddress(address, '');
$input.val('');
-
}
}
@@ -51,6 +50,14 @@ Espo.define('views/email/fields/email-address-varchar', 'views/fields/varchar',
$input.val('');
}
},
+ 'click [data-action="createContact"]': function (e) {
+ var address = $(e.currentTarget).data('address');
+ From.prototype.createPerson.call(this, 'Contact', address);
+ }
+ },
+
+ parseNameFromStringAddress: function (s) {
+ return From.prototype.parseNameFromStringAddress.call(this, s);
},
getAttributeList: function () {
@@ -214,8 +221,16 @@ Espo.define('views/email/fields/email-address-varchar', 'views/fields/varchar',
if (id) {
lineHtml = '
';
} else {
- lineHtml = '' + addressHtml + '
';
+ lineHtml = addressHtml;
}
+ if (!id) {
+ if (this.model.get('parentId')) {
+ if (this.getAcl().check('Contact', 'edit')) {
+ lineHtml += From.prototype.getCreateHtml.call(this, address);
+ }
+ }
+ }
+ lineHtml = '' + lineHtml + '
';
return lineHtml;
},
diff --git a/frontend/client/src/views/email/fields/from-address-varchar.js b/frontend/client/src/views/email/fields/from-address-varchar.js
index 48404a389c..dcf64a136e 100644
--- a/frontend/client/src/views/email/fields/from-address-varchar.js
+++ b/frontend/client/src/views/email/fields/from-address-varchar.js
@@ -39,19 +39,17 @@ Espo.define('views/email/fields/from-address-varchar', 'views/fields/varchar', f
},
events: {
- 'click [data-action="createContact"]': function () {
- this.createPerson('Contact');
- },
- 'click [data-action="createLead"]': function () {
- this.createPerson('Lead');
- },
+ 'click [data-action="createContact"]': function (e) {
+ var address = $(e.currentTarget).data('address');
+ this.createPerson('Contact', address);
+ }
},
data: function () {
var data = Dep.prototype.data.call(this);
var address = this.model.get(this.name);
- if (!(address in this.idHash)) {
+ if (!(address in this.idHash) && this.model.get('parentId')) {
if (this.getAcl().check('Contact', 'edit')) {
data.showCreate = true;
}
@@ -102,9 +100,29 @@ Espo.define('views/email/fields/from-address-varchar', 'views/fields/varchar', f
} else {
lineHtml = addressHtml;
}
+ if (!id) {
+ if (this.model.get('parentId')) {
+ if (this.getAcl().check('Contact', 'edit')) {
+ lineHtml += this.getCreateHtml(address);
+ }
+ }
+ }
+ lineHtml = '' + lineHtml + '
';
return lineHtml;
},
+ getCreateHtml: function (address) {
+ var html = '' +
+ '' +
+ '' +
+ '';
+ return html;
+ },
+
parseNameFromStringAddress: function (value) {
value = value || '';
if (~value.indexOf('<')) {
@@ -117,11 +135,17 @@ Espo.define('views/email/fields/from-address-varchar', 'views/fields/varchar', f
return null;
},
- createPerson: function (scope) {
- var address = this.model.get(this.name);
+ createPerson: function (scope, address) {
+ var address = address;
var fromString = this.model.get('fromString') || this.model.get('fromName');
- var name = this.nameHash[address] || this.parseNameFromStringAddress(fromString) || null;
+ var name = this.nameHash[address] || null;
+
+ if (!name) {
+ if (this.name == 'from') {
+ name = this.parseNameFromStringAddress(fromString) || null;
+ }
+ }
var attributes = {
emailAddress: address
diff --git a/frontend/less/espo/custom.less b/frontend/less/espo/custom.less
index 671ad5950c..8b61925086 100644
--- a/frontend/less/espo/custom.less
+++ b/frontend/less/espo/custom.less
@@ -893,3 +893,12 @@ img.avatar.avatar-link {
font-weight: 800;
}
+.email-address-create-dropdown .btn {
+ position: relative;
+ top: -1px;
+ padding: 0 4px;
+ margin: 0;
+ margin-bottom: 0;
+ border: 0;
+}
+