From 03b8041acb41cf46f5b3bf82c240d4e1b78affc6 Mon Sep 17 00:00:00 2001 From: yuri Date: Thu, 16 Jul 2015 17:59:26 +0300 Subject: [PATCH] email to contact 2 --- .../fields/email-address-varchar/detail.tpl | 10 ----- .../email/fields/email-address-varchar.js | 21 +++++++-- .../email/fields/from-address-varchar.js | 44 ++++++++++++++----- frontend/less/espo/custom.less | 9 ++++ 4 files changed, 61 insertions(+), 23 deletions(-) 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 = '
' + '' + name + ' » ' + addressHtml + '
'; } 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; +} +