email to contact 2
This commit is contained in:
@@ -1,15 +1,5 @@
|
||||
{{#if value}}
|
||||
{{{value}}}
|
||||
{{#if showCreate}}
|
||||
<span class="dorpdown">
|
||||
<button class="dropdown-toggle btn btn-link btn-sm" data-toggle="dropdown">
|
||||
<span class="caret text-muted"></span>
|
||||
</button>
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<li><a href="javascript:" data-action="createContact">{{translate 'Create Contact' scope='Email'}}</a></li>
|
||||
</ul>
|
||||
</span>
|
||||
{{/if}}
|
||||
{{else}}
|
||||
{{{translate 'None'}}}
|
||||
{{/if}}
|
||||
|
||||
@@ -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 = '<div>' + '<a href="#' + entityType + '/view/' + id + '">' + name + '</a> <span class="text-muted">»</span> ' + addressHtml + '</div>';
|
||||
} else {
|
||||
lineHtml = '<div>' + addressHtml + '</div>';
|
||||
lineHtml = addressHtml;
|
||||
}
|
||||
if (!id) {
|
||||
if (this.model.get('parentId')) {
|
||||
if (this.getAcl().check('Contact', 'edit')) {
|
||||
lineHtml += From.prototype.getCreateHtml.call(this, address);
|
||||
}
|
||||
}
|
||||
}
|
||||
lineHtml = '<div>' + lineHtml + '</div>';
|
||||
return lineHtml;
|
||||
},
|
||||
|
||||
|
||||
@@ -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 = '<div>' + lineHtml + '</div>';
|
||||
return lineHtml;
|
||||
},
|
||||
|
||||
getCreateHtml: function (address) {
|
||||
var html = '<span class="dorpdown email-address-create-dropdown">' +
|
||||
'<button class="dropdown-toggle btn btn-link btn-sm" data-toggle="dropdown">' +
|
||||
'<span class="caret text-muted"></span>' +
|
||||
'</button>' +
|
||||
'<ul class="dropdown-menu" role="menu">' +
|
||||
'<li><a href="javascript:" data-action="createContact" data-address="'+address+'">'+this.translate('Create Contact', 'labels', 'Email')+'</a></li>' +
|
||||
'</ul>' +
|
||||
'</span>';
|
||||
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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user