email to contact 2

This commit is contained in:
yuri
2015-07-16 17:59:26 +03:00
parent a31df6f2af
commit 03b8041acb
4 changed files with 61 additions and 23 deletions
@@ -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">&#187;</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
+9
View File
@@ -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;
}