Merge branch 'stable'

This commit is contained in:
yuri
2019-07-23 18:22:53 +03:00
21 changed files with 68 additions and 35 deletions
@@ -203,6 +203,10 @@ Espo.define('views/email/fields/email-address-varchar', ['views/fields/varchar',
},
addAddress: function (address, name, type, id) {
if (name) {
name = this.getHelper().escapeString(name);
}
if (this.justAddedAddress) {
this.deleteAddress(this.justAddedAddress);
}
@@ -236,6 +240,13 @@ Espo.define('views/email/fields/email-address-varchar', ['views/fields/varchar',
},
addAddressHtml: function (address, name) {
if (name) {
name = this.getHelper().escapeString(name);
}
if (address) {
name = this.getHelper().escapeString(address);
}
var conteiner = this.$el.find('.link-container');
var html =
'<div data-address="'+address+'" class="list-group-item">' +
@@ -288,6 +299,10 @@ Espo.define('views/email/fields/email-address-varchar', ['views/fields/varchar',
var addressHtml = '<span>' + address + '</span>';
if (name) {
name = this.getHelper().escapeString(name);
}
var lineHtml;
if (id) {
lineHtml = '<div>' + '<a href="#' + entityType + '/view/' + id + '">' + name + '</a> <span class="text-muted">&#187;</span> ' + addressHtml + '</div>';
@@ -106,6 +106,11 @@ Espo.define('views/email/fields/from-address-varchar', 'views/fields/varchar', f
var fromString = this.model.get('fromString') || this.model.get('fromName');
var name = this.nameHash[address] || this.parseNameFromStringAddress(fromString) || null;
if (name) {
name = this.getHelper().escapeString(name);
}
var entityType = this.typeHash[address] || null;
var id = this.idHash[address] || null;
@@ -129,6 +134,8 @@ Espo.define('views/email/fields/from-address-varchar', 'views/fields/varchar', f
},
getCreateHtml: function (address) {
address = this.getHelper().escapeString(address);
var html = '<span class="dropdown email-address-create-dropdown pull-right">' +
'<button class="dropdown-toggle btn btn-link btn-sm" data-toggle="dropdown">' +
'<span class="caret text-muted"></span>' +
@@ -179,6 +186,10 @@ Espo.define('views/email/fields/from-address-varchar', 'views/fields/varchar', f
}
}
if (name) {
name = this.getHelper().escapeString(name);
}
var attributes = {
emailAddress: address
};
@@ -240,6 +251,10 @@ Espo.define('views/email/fields/from-address-varchar', 'views/fields/varchar', f
}
}
if (name) {
name = this.getHelper().escapeString(name);
}
var attributes = {
emailAddress: address
};
@@ -130,7 +130,7 @@ Espo.define('views/fields/link-multiple-with-primary', 'views/fields/link-multip
var $container = this.$el.find('.link-container');
var $el = $('<div class="form-inline list-group-item link-with-role clearfix link-group-item-with-primary">').addClass('link-' + id).attr('data-id', id);
var nameHtml = '<div>' + name + '&nbsp;' + '</div>';
var nameHtml = '<div>' + this.getHelper().escapeString(name) + '&nbsp;' + '</div>';
var removeHtml = '<a href="javascript:" class="pull-right" data-id="' + id + '" data-action="clearLink"><span class="fas fa-times"></a>';
$left = $('<div>');
+7 -1
View File
@@ -76,10 +76,16 @@ define('views/list', ['views/main', 'search-manager'], function (Dep, SearchMana
this.setViewMode(this.viewMode);
if (this.getMetadata().get('clientDefs.' + this.scope + '.searchPanelDisabled')) {
if (this.getMetadata().get(['clientDefs', this.scope, 'searchPanelDisabled'])) {
this.searchPanel = false;
}
if (this.getUser().isPortal()) {
if (this.getMetadata().get(['clientDefs', this.scope, 'searchPanelInPortalDisabled'])) {
this.searchPanel = false;
}
}
if (this.getMetadata().get(['clientDefs', this.scope, 'createDisabled'])) {
this.createButton = false;
}
@@ -40,7 +40,7 @@ Espo.define('views/notification/items/assign', 'views/notification/items/base',
this.userId = data.userId;
this.messageData['entityType'] = Espo.Utils.upperCaseFirst((this.translate(data.entityType, 'scopeNames') || '').toLowerCase());
this.messageData['entity'] = '<a href="#' + data.entityType + '/view/' + data.entityId + '">' + data.entityName + '</a>';
this.messageData['entity'] = '<a href="#' + this.getHelper().escapeString(data.entityType) + '/view/' + this.getHelper().escapeString(data.entityId) + '">' + this.getHelper().escapeString(data.entityName) + '</a>';
this.createMessage();
},
@@ -46,19 +46,18 @@ Espo.define('views/notification/items/email-received', 'views/notification/items
this.userId = data.userId;
this.messageData['entityType'] = Espo.Utils.upperCaseFirst((this.translate(data.entityType, 'scopeNames') || '').toLowerCase());
this.messageData['entityType'] = this.getHelper().escapeString(Espo.Utils.upperCaseFirst((this.translate(data.entityType, 'scopeNames') || '').toLowerCase()));
if (data.personEntityId) {
this.messageData['from'] = '<a href="#' + data.personEntityType + '/view/' + data.personEntityId + '">' + data.personEntityName + '</a>';
this.messageData['from'] = '<a href="#' + this.getHelper().escapeString(data.personEntityType) + '/view/' + this.getHelper().escapeString(data.personEntityId) + '">' + this.getHelper().escapeString(data.personEntityName) + '</a>';
} else {
this.messageData['from'] = data.fromString || this.translate('empty address');
this.messageData['from'] = this.getHelper().escapeString(data.fromString || this.translate('empty address'));
}
this.emailId = data.emailId;
this.emailName = data.emailName;
this.emailId = this.getHelper().escapeString(data.emailId);
this.emailName = this.getHelper().escapeString(data.emailName);
this.createMessage();
}
});
});
@@ -39,10 +39,10 @@ Espo.define('views/notification/items/entity-removed', 'views/notification/items
this.userId = data.userId;
this.messageData['entityType'] = (this.translate(data.entityType, 'scopeNames') || '').toLowerCase();
this.messageData['entityType'] = this.getHelper().escapeString((this.translate(data.entityType, 'scopeNames') || '').toLowerCase());
this.messageData['user'] = '<a href="#User/view/' + data.userId + '">' + data.userName + '</a>';
this.messageData['entity'] = '<a href="#'+data.entityType+'/view/' + data.entityId + '">' + data.entityName + '</a>';
this.messageData['user'] = '<a href="#User/view/' + this.getHelper().escapeString(data.userId) + '">' + this.getHelper().escapeString(data.userName) + '</a>';
this.messageData['entity'] = '<a href="#'+this.getHelper().escapeString(data.entityType)+'/view/' + this.getHelper().escapeString(data.entityId) + '">' + this.getHelper().escapeString(data.entityName) + '</a>';
this.createMessage();
}
@@ -47,10 +47,10 @@ Espo.define('views/notification/items/message', 'views/notification/items/base',
this.userId = data.userId;
this.messageData['entityType'] = Espo.Utils.upperCaseFirst((this.translate(data.entityType, 'scopeNames') || '').toLowerCase());
this.messageData['entityType'] = this.getHelper().escapeString(Espo.Utils.upperCaseFirst((this.translate(data.entityType, 'scopeNames') || '').toLowerCase()));
this.messageData['user'] = '<a href="#User/view/' + data.userId + '">' + data.userName + '</a>';
this.messageData['entity'] = '<a href="#'+data.entityType+'/view/' + data.entityId + '">' + data.entityName + '</a>';
this.messageData['user'] = '<a href="#User/view/' + this.getHelper().escapeString(data.userId) + '">' + this.getHelper().escapeString(data.userName) + '</a>';
this.messageData['entity'] = '<a href="#'+this.getHelper().escapeString(data.entityType)+'/view/' + this.getHelper().escapeString(data.entityId) + '">' + this.getHelper().escapeString(data.entityName) + '</a>';
this.createMessage();
}
+1 -1
View File
@@ -42,7 +42,7 @@ define('views/site-portal/navbar', 'views/site/navbar', function (Dep) {
var tabList = this.getConfig().get('tabList') || [];
tabList = Espo.Utils.clone(tabList || []);
if (this.getThemeManager().getParam('navbarIsVertical')) {
if (this.getThemeManager().getParam('navbarIsVertical') || tabList.length) {
tabList.unshift('Home');
}
return tabList;
+1 -2
View File
@@ -41,7 +41,6 @@ Espo.define('views/site/navbar', 'view', function (Dep) {
menuDataList: this.getMenuDataList(),
quickCreateList: this.quickCreateList,
enableQuickCreate: this.quickCreateList.length > 0,
userName: this.getUser().get('name'),
userId: this.getUser().id,
logoSrc: this.getLogoSrc()
};
@@ -528,7 +527,7 @@ Espo.define('views/site/navbar', 'view', function (Dep) {
var list = [
{
link: '#User/view/' + this.getUser().id,
html: avatarHtml + this.getUser().get('name')
html: avatarHtml + this.getHelper().escapeString(this.getUser().get('name')),
},
{divider: true}
];
+1 -1
View File
@@ -85,7 +85,7 @@ Espo.define('views/stream/note', 'view', function (Dep) {
this.messageData = {
'user': 'field:createdBy',
'entity': 'field:parent',
'entityType': this.translateEntityType(this.model.get('parentType')),
'entityType': this.getHelper().escapeString(this.translateEntityType(this.model.get('parentType'))),
};
if (!this.options.noEdit && (this.isEditable || this.isRemovable)) {
+1 -1
View File
@@ -52,7 +52,7 @@ Espo.define('views/stream/notes/assign', 'views/stream/note', function (Dep) {
this.assignedUserId = data.assignedUserId || null;
this.assignedUserName = data.assignedUserName || null;
this.messageData['assignee'] = '<a href="#User/view/' + data.assignedUserId + '">' + data.assignedUserName + '</a>';
this.messageData['assignee'] = '<a href="#User/view/' + this.getHelper().escapeString(data.assignedUserId) + '">' + this.getHelper().escapeString(data.assignedUserName) + '</a>';
if (this.isUserStream) {
if (this.assignedUserId) {
@@ -56,7 +56,7 @@ Espo.define('views/stream/notes/create-related', 'views/stream/note', function (
this.entityName = this.model.get('relatedName') || data.entityName || null;
this.messageData['relatedEntityType'] = this.translateEntityType(this.entityType);
this.messageData['relatedEntity'] = '<a href="#' + this.entityType + '/view/' + this.entityId + '">' + this.entityName +'</a>';
this.messageData['relatedEntity'] = '<a href="#' + this.getHelper().escapeString(this.entityType) + '/view/' + this.getHelper().escapeString(this.entityId) + '">' + this.getHelper().escapeString(this.entityName) +'</a>';
this.createMessage();
}
+1 -1
View File
@@ -52,7 +52,7 @@ Espo.define('views/stream/notes/create', 'views/stream/note', function (Dep) {
this.assignedUserId = data.assignedUserId || null;
this.assignedUserName = data.assignedUserName || null;
this.messageData['assignee'] = '<a href="#User/view/' + this.assignedUserId + '">' + this.assignedUserName + '</a>';
this.messageData['assignee'] = '<a href="#User/view/' + this.assignedUserId + '">' + this.getHelper().escapeString(this.assignedUserName) + '</a>';
var isYou = false;
if (this.isUserStream) {
@@ -67,7 +67,7 @@ Espo.define('views/stream/notes/email-received', 'views/stream/note', function (
}
}
this.messageData['email'] = '<a href="#Email/view/' + data.emailId + '">' + data.emailName + '</a>';
this.messageData['email'] = '<a href="#Email/view/' + this.getHelper().escapeString(data.emailId) + '">' + this.getHelper().escapeString(data.emailName) + '</a>';
this.messageName = 'emailReceived';
@@ -77,7 +77,7 @@ Espo.define('views/stream/notes/email-received', 'views/stream/note', function (
if (data.personEntityId) {
this.messageName += 'From';
this.messageData['from'] = '<a href="#'+data.personEntityType+'/view/' + data.personEntityId + '">' + data.personEntityName + '</a>';
this.messageData['from'] = '<a href="#'+this.getHelper().escapeString(data.personEntityType)+'/view/' + this.getHelper().escapeString(data.personEntityId) + '">' + this.getHelper().escapeString(data.personEntityName) + '</a>';
}
if (this.model.get('parentType') === data.personEntityType && this.model.get('parentId') == data.personEntityId) {
+2 -2
View File
@@ -65,11 +65,11 @@ Espo.define('views/stream/notes/email-sent', 'views/stream/note', function (Dep)
}
}
this.messageData['email'] = '<a href="#Email/view/' + data.emailId + '">' + data.emailName + '</a>';
this.messageData['email'] = '<a href="#Email/view/' + this.getHelper().escapeString(data.emailId) + '">' + this.getHelper().escapeString(data.emailName) + '</a>';
this.messageName = 'emailSent';
this.messageData['by'] = '<a href="#'+data.personEntityType+'/view/' + data.personEntityId + '">' + data.personEntityName + '</a>';
this.messageData['by'] = '<a href="#'+this.getHelper().escapeString(data.personEntityType)+'/view/' + this.getHelper().escapeString(data.personEntityId) + '">' + this.getHelper().escapeString(data.personEntityName) + '</a>';
if (this.isThis) {
@@ -76,7 +76,7 @@ Espo.define('views/stream/notes/mention-in-post', 'views/stream/note', function
teamIdList.forEach(function (teamId) {
var teamName = teamNameHash[teamId];
if (teamName) {
teamHtmlList.push('<a href="#Team/view/' + teamId + '">' + teamName + '</a>');
teamHtmlList.push('<a href="#Team/view/' + this.getHelper().escapeString(teamId) + '">' + this.getHelper().escapeString(teamName) + '</a>');
}
}, this);
@@ -93,7 +93,7 @@ Espo.define('views/stream/notes/mention-in-post', 'views/stream/note', function
userIdList.forEach(function (userId) {
var userName = userNameHash[userId];
if (userName) {
userHtmlList.push('<a href="#User/view/' + userId + '">' + userName + '</a>');
userHtmlList.push('<a href="#User/view/' + this.getHelper().escapeString(userId) + '">' + this.getHelper().escapeString(userName) + '</a>');
}
}, this);
this.messageData['target'] = userHtmlList.join(', ');
@@ -113,4 +113,3 @@ Espo.define('views/stream/notes/mention-in-post', 'views/stream/note', function
});
});
+3 -3
View File
@@ -85,7 +85,7 @@ Espo.define('views/stream/notes/post', 'views/stream/note', function (Dep) {
teamIdList.forEach(function (teamId) {
var teamName = teamNameHash[teamId];
if (teamName) {
teamHtmlList.push('<a href="#Team/view/' + teamId + '">' + teamName + '</a>');
teamHtmlList.push('<a href="#Team/view/' + this.getHelper().escapeString(teamId) + '">' + this.getHelper().escapeString(teamName) + '</a>');
}
}, this);
@@ -103,7 +103,7 @@ Espo.define('views/stream/notes/post', 'views/stream/note', function (Dep) {
portalIdList.forEach(function (portalId) {
var portalName = portalNameHash[portalId];
if (portalName) {
portalHtmlList.push('<a href="#Portal/view/' + portalId + '">' + portalName + '</a>');
portalHtmlList.push('<a href="#Portal/view/' + this.getHelper().escapeString(portalId) + '">' + this.getHelper().escapeString(portalName) + '</a>');
}
}, this);
@@ -135,7 +135,7 @@ Espo.define('views/stream/notes/post', 'views/stream/note', function (Dep) {
} else {
var userName = userNameHash[userId];
if (userName) {
userHtmlList.push('<a href="#User/view/' + userId + '">' + userName + '</a>');
userHtmlList.push('<a href="#User/view/' + this.getHelper().escapeString(userId) + '">' + this.getHelper().escapeString(userName) + '</a>');
}
}
}
+1 -1
View File
@@ -55,7 +55,7 @@ Espo.define('views/stream/notes/relate', 'views/stream/note', function (Dep) {
this.entityName = this.model.get('relatedName') || data.entityName || null;
this.messageData['relatedEntityType'] = this.translateEntityType(this.entityType);
this.messageData['relatedEntity'] = '<a href="#' + this.entityType + '/view/' + this.entityId + '">' + this.entityName +'</a>';
this.messageData['relatedEntity'] = '<a href="#' + this.getHelper().escapeString(this.entityType) + '/view/' + this.getHelper().escapeString(this.entityId) + '">' + this.getHelper().escapeString(this.entityName) +'</a>';
this.createMessage();
},
+1 -1
View File
@@ -56,7 +56,7 @@ Espo.define('views/stream/notes/status', 'views/stream/note', function (Dep) {
this.style = data.style || 'default';
this.statusText = this.getLanguage().translateOption(value, field, this.model.get('parentType'));
this.statusText = this.getHelper().escapeString(this.getLanguage().translateOption(value, field, this.model.get('parentType')));
this.messageData['field'] = this.translate(field, 'fields', this.model.get('parentType')).toLowerCase();
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "espocrm",
"version": "5.6.5",
"version": "5.6.6",
"description": "",
"main": "index.php",
"repository": {