Merge branch 'hotfix/5.5.7'

This commit is contained in:
yuri
2019-01-28 13:11:04 +02:00
16 changed files with 224 additions and 134 deletions
+54 -25
View File
@@ -218,14 +218,43 @@ class Entity extends \Espo\ORM\Entity
$this->set($field . 'Name', $entityName);
}
public function getLinkMultipleName($field, $id)
{
$namesAttribute = $field . 'Names';
if (!$this->has($namesAttribute)) return;
$names = $this->get($namesAttribute);
if ($names instanceof \StdClass) {
if (isset($names->$id)) {
if (isset($names->$id)) {
return $names->$id;
}
}
}
}
public function setLinkMultipleName($field, $id, $value)
{
$namesAttribute = $field . 'Names';
if (!$this->has($namesAttribute)) return;
$object = $this->get($namesAttribute);
if (!isset($object) || !($object instanceof \StdClass)) {
$object = (object) [];
}
$object->$id = $value;
$this->set($namesAttribute, $object);
}
public function getLinkMultipleColumn($field, $column, $id)
{
$columnsField = $field . 'Columns';
$columnsAttribute = $field . 'Columns';
if (!$this->has($columnsField)) {
if (!$this->has($columnsAttribute)) {
return;
}
$columns = $this->get($columnsField);
$columns = $this->get($columnsAttribute);
if ($columns instanceof \StdClass) {
if (isset($columns->$id)) {
if (isset($columns->$id->$column)) {
@@ -237,11 +266,11 @@ class Entity extends \Espo\ORM\Entity
public function setLinkMultipleColumn($field, $column, $id, $value)
{
$columnsField = $field . 'Columns';
if (!$this->hasAttribute($columnsField)) {
$columnsAttribute = $field . 'Columns';
if (!$this->hasAttribute($columnsAttribute)) {
return;
}
$object = $this->get($columnsField);
$object = $this->get($columnsAttribute);
if (!isset($object) || !($object instanceof \StdClass)) {
$object = (object) [];
}
@@ -253,35 +282,35 @@ class Entity extends \Espo\ORM\Entity
}
$object->$id->$column = $value;
$this->set($columnsField, $object);
$this->set($columnsAttribute, $object);
}
public function setLinkMultipleIdList($field, array $idList)
{
$idsField = $field . 'Ids';
$this->set($idsField, $idList);
$idsAttribute = $field . 'Ids';
$this->set($idsAttribute, $idList);
}
public function addLinkMultipleId($field, $id)
{
$idsField = $field . 'Ids';
$idsAttribute = $field . 'Ids';
if (!$this->hasAttribute($idsField)) return;
if (!$this->hasAttribute($idsAttribute)) return;
if (!$this->has($idsField)) {
if (!$this->has($idsAttribute)) {
if (!$this->isNew()) {
$this->loadLinkMultipleField($field);
} else {
$this->set($idsField, []);
$this->set($idsAttribute, []);
}
}
if (!$this->has($idsField)) {
if (!$this->has($idsAttribute)) {
return;
}
$idList = $this->get($idsField);
$idList = $this->get($idsAttribute);
if (!in_array($id, $idList)) {
$idList[] = $id;
$this->set($idsField, $idList);
$this->set($idsAttribute, $idList);
}
}
@@ -300,16 +329,16 @@ class Entity extends \Espo\ORM\Entity
public function getLinkMultipleIdList($field)
{
$idsField = $field . 'Ids';
$idsAttribute = $field . 'Ids';
if (!$this->hasAttribute($idsField)) return null;
if (!$this->hasAttribute($idsAttribute)) return null;
if (!$this->has($idsField)) {
if (!$this->has($idsAttribute)) {
if (!$this->isNew()) {
$this->loadLinkMultipleField($field);
}
}
$valueList = $this->get($idsField);
$valueList = $this->get($idsAttribute);
if (empty($valueList)) {
return [];
}
@@ -318,21 +347,21 @@ class Entity extends \Espo\ORM\Entity
public function hasLinkMultipleId($field, $id)
{
$idsField = $field . 'Ids';
$idsAttribute = $field . 'Ids';
if (!$this->hasAttribute($idsField)) return null;
if (!$this->hasAttribute($idsAttribute)) return null;
if (!$this->has($idsField)) {
if (!$this->has($idsAttribute)) {
if (!$this->isNew()) {
$this->loadLinkMultipleField($field);
}
}
if (!$this->has($idsField)) {
if (!$this->has($idsAttribute)) {
return;
}
$idList = $this->get($idsField);
$idList = $this->get($idsAttribute);
if (in_array($id, $idList)) {
return true;
}
@@ -97,41 +97,24 @@ class Meeting extends \Espo\Core\Repositories\Event
parent::beforeSave($entity, $options);
$assignedUserId = $entity->get('assignedUserId');
if ($assignedUserId) {
if ($entity->has('usersIds')) {
$usersIds = $entity->get('usersIds');
if (!is_array($usersIds)) {
$usersIds = [];
}
if (!in_array($assignedUserId, $usersIds)) {
$usersIds[] = $assignedUserId;
$entity->set('usersIds', $usersIds);
$hash = $entity->get('usersNames');
if ($hash instanceof \StdClass) {
$hash->$assignedUserId = $entity->get('assignedUserName');
$entity->set('usersNames', $hash);
}
}
} else {
if ($entity->hasLinkMultipleField('assignedUsers')) {
$assignedUserIdList = $entity->getLinkMultipleIdList('assignedUsers');
foreach ($assignedUserIdList as $assignedUserId) {
$entity->addLinkMultipleId('users', $assignedUserId);
$entity->setLinkMultipleName('users', $assignedUserId, $entity->getLinkMultipleName('assignedUsers', $assignedUserId));
}
if ($entity->isNew()) {
$currentUserId = $this->getEntityManager()->getUser()->id;
if (isset($usersIds) && in_array($currentUserId, $usersIds)) {
$usersColumns = $entity->get('usersColumns');
if (empty($usersColumns)) {
$usersColumns = new \StdClass();
}
if ($usersColumns instanceof \StdClass) {
if (empty($usersColumns->$currentUserId) || !($usersColumns->$currentUserId instanceof \StdClass)) {
$usersColumns->$currentUserId = new \StdClass();
}
if (empty($usersColumns->$currentUserId->status)) {
$usersColumns->$currentUserId->status = 'Accepted';
}
}
}
} else {
$assignedUserId = $entity->get('assignedUserId');
if ($assignedUserId) {
$entity->addLinkMultipleId('users', $assignedUserId);
$entity->setLinkMultipleName('users', $assignedUserId, $entity->get('assignedUserName'));
}
}
if ($entity->isNew()) {
$currentUserId = $this->getEntityManager()->getUser()->id;
if ($entity->hasLinkMultipleId('users', $currentUserId)) {
$entity->setLinkMultipleColumn('users', 'status', $currentUserId, 'Accepted');
}
}
}
@@ -107,6 +107,7 @@
"cleanupDeletedRecords": "Clean up deleted records",
"addressCountryList": "Address Country Autocomplete List",
"addressCityList": "Address City Autocomplete List",
"addressStateList": "Address State Autocomplete List",
"fiscalYearShift": "Fiscal Year Start",
"jobRunInParallel": "Jobs Run in Parallel",
"jobMaxPortion": "Jobs Max Portion",
@@ -367,30 +367,9 @@
"assignSelf": "{user} خود اختصاص {entityType} {entity}"
},
"lists": {
"dayNames": [
"یکشنبه",
"دوشنبه",
"سه شنبه",
"چهارشنبه",
" پنجشنبه",
"جمعه شنبه"
],
"dayNamesShort": [
"یکشنبه",
"دوشنبه",
"سه شنبه",
"چهارشنبه",
" پنجشنبه",
"جمعه شنبه"
],
"dayNamesMin": [
"یکشنبه",
"دوشنبه",
"سه شنبه",
"چهارشنبه",
" پنجشنبه",
"جمعه شنبه"
]
"dayNames": [ "یکشنبه", "دوشنبه", "سه شنبه", "چهارشنبه", " پنجشنبه", "جمعه", "شنبه" ],
"dayNamesShort": [ "یکشنبه", "دوشنبه", "سه شنبه", "چهارشنبه", " پنجشنبه", "جمعه", "شنبه" ],
"dayNamesMin": [ "یکشنبه", "دوشنبه", "سه شنبه", "چهارشنبه", " پنجشنبه", "جمعه", "شنبه" ]
},
"options": {
"salutationName": {
@@ -18,7 +18,8 @@
[{"name": "timeFormat"}, {"name": "thousandSeparator"}],
[{"name": "fiscalYearShift"}, {"name": "decimalMark"}],
[{"name": "addressFormat"}, {"name": "addressPreview"}],
[{"name": "addressCountryList"}, {"name": "addressCityList"}]
[{"name": "addressCountryList"}, {"name": "addressCityList"}],
[{"name": "addressStateList"}, false]
]
},
{
@@ -508,6 +508,9 @@
"addressCityList": {
"type": "multiEnum"
},
"addressStateList": {
"type": "multiEnum"
},
"jobRunInParallel": {
"type": "bool",
"tooltip": true
@@ -6,30 +6,36 @@
"country",
"postalCode"
],
"fields":{
"street":{
"fields": {
"street": {
"type": "text",
"maxLength": 255,
"dbType": "varchar"
},
"city":{
"city": {
"type":"varchar",
"trim": true,
"maxLength": 255,
"view": "views/fields/address-city",
"customizationOptionsDisabled": true
},
"state":{
"type":"varchar",
"trim": true
},
"country":{
"state": {
"type":"varchar",
"trim": true,
"maxLength": 255,
"view": "views/fields/address-state",
"customizationOptionsDisabled": true
},
"country": {
"type":"varchar",
"trim": true,
"maxLength": 255,
"view": "views/fields/address-country",
"customizationOptionsDisabled": true
},
"postalCode":{
"postalCode": {
"type":"varchar",
"maxLength": 40,
"trim": true
},
"map": {
@@ -5,10 +5,7 @@
</div>
<% } %>
<% _.each(layout.rows, function (row, key) { %>
<div class="expanded-row">
<% _.each(row, function (defs, key) { %>
{{#if this.<%= defs.name %>}}
<span class="cell" data-name="<%= defs.field %>"><%
<div class="expanded-row"><% _.each(row, function (defs, key) { %>{{#if this.<%= defs.name %>}}<span class="cell" data-name="<%= defs.field %>"><%
var tag = 'tag' in defs ? defs.tag : false;
if (tag) {
print( '<' + tag);
@@ -24,9 +21,5 @@
if (tag) {
print( '</' + tag + '>');
}
%></span>
{{/if}}
<% }); %>
</div>
%></span>{{/if}}<% }); %></div>
<% }); %>
@@ -1,13 +1,13 @@
<textarea class="form-control auto-height" data-name="{{name}}Street" rows="1" placeholder="{{translate 'Street'}}" autocomplete="espo-street">{{streetValue}}</textarea>
<textarea class="form-control auto-height" data-name="{{name}}Street" rows="1" placeholder="{{translate 'Street'}}" autocomplete="espo-street" maxlength="{{streetMaxLength}}">{{streetValue}}</textarea>
<div class="row">
<div class="col-sm-4 col-xs-4">
<input type="text" class="form-control" data-name="{{name}}City" value="{{cityValue}}" placeholder="{{translate 'City'}}" autocomplete="espo-city">
<input type="text" class="form-control" data-name="{{name}}City" value="{{cityValue}}" placeholder="{{translate 'City'}}" autocomplete="espo-city" maxlength="{{cityMaxLength}}">
</div>
<div class="col-sm-4 col-xs-4">
<input type="text" class="form-control" data-name="{{name}}State" value="{{stateValue}}" placeholder="{{translate 'State'}}" autocomplete="espo-state">
<input type="text" class="form-control" data-name="{{name}}State" value="{{stateValue}}" placeholder="{{translate 'State'}}" autocomplete="espo-state" maxlength="{{stateMaxLength}}">
</div>
<div class="col-sm-4 col-xs-4">
<input type="text" class="form-control" data-name="{{name}}PostalCode" value="{{postalCodeValue}}" placeholder="{{translate 'PostalCode'}}" autocomplete="espo-postalCode">
<input type="text" class="form-control" data-name="{{name}}PostalCode" value="{{postalCodeValue}}" placeholder="{{translate 'PostalCode'}}" autocomplete="espo-postalCode" maxlength="{{postalCodeMaxLength}}">
</div>
</div>
<input type="text" class="form-control" data-name="{{name}}Country" value="{{countryValue}}" placeholder="{{translate 'Country'}}" autocomplete="espo-country">
<input type="text" class="form-control" data-name="{{name}}Country" value="{{countryValue}}" placeholder="{{translate 'Country'}}" autocomplete="espo-country" maxlength="{{countryMaxLength}}">
@@ -1,17 +1,17 @@
<textarea class="form-control auto-height" data-name="{{name}}Street" rows="1" placeholder="{{translate 'Street'}}" autocomplete="espo-street">{{streetValue}}</textarea>
<textarea class="form-control auto-height" data-name="{{name}}Street" rows="1" placeholder="{{translate 'Street'}}" autocomplete="espo-street" maxlength="{{streetMaxLength}}">{{streetValue}}</textarea>
<div class="row">
<div class="col-sm-6 col-xs-6">
<input type="text" class="form-control" data-name="{{name}}PostalCode" value="{{postalCodeValue}}" placeholder="{{translate 'PostalCode'}}" autocomplete="espo-postalCode">
<input type="text" class="form-control" data-name="{{name}}PostalCode" value="{{postalCodeValue}}" placeholder="{{translate 'PostalCode'}}" autocomplete="espo-postalCode" maxlength="{{postalCodeMaxLength}}">
</div>
<div class="col-sm-6 col-xs-6">
<input type="text" class="form-control" data-name="{{name}}City" value="{{cityValue}}" placeholder="{{translate 'City'}}" autocomplete="espo-city">
<input type="text" class="form-control" data-name="{{name}}City" value="{{cityValue}}" placeholder="{{translate 'City'}}" autocomplete="espo-city" maxlength="{{cityMaxLength}}">
</div>
</div>
<div class="row">
<div class="col-sm-6 col-xs-6">
<input type="text" class="form-control" data-name="{{name}}State" value="{{stateValue}}" placeholder="{{translate 'State'}}" autocomplete="espo-state">
<input type="text" class="form-control" data-name="{{name}}State" value="{{stateValue}}" placeholder="{{translate 'State'}}" autocomplete="espo-state" maxlength="{{stateMaxLength}}">
</div>
<div class="col-sm-6 col-xs-6">
<input type="text" class="form-control" data-name="{{name}}Country" value="{{countryValue}}" placeholder="{{translate 'Country'}}" autocomplete="espo-country">
<input type="text" class="form-control" data-name="{{name}}Country" value="{{countryValue}}" placeholder="{{translate 'Country'}}" autocomplete="espo-country" maxlength="{{countryMaxLength}}">
</div>
</div>
@@ -1,14 +1,14 @@
<input type="text" class="form-control auto-height" data-name="{{name}}Country" value="{{countryValue}}" placeholder="{{translate 'Country'}}" autocomplete="espo-country">
<input type="text" class="form-control auto-height" data-name="{{name}}Country" value="{{countryValue}}" placeholder="{{translate 'Country'}}" autocomplete="espo-country" maxlength="{{countryMaxLength}}">
<div class="row">
<div class="col-sm-4 col-xs-4">
<input type="text" class="form-control" data-name="{{name}}PostalCode" value="{{postalCodeValue}}" placeholder="{{translate 'PostalCode'}}" autocomplete="espo-postalCode">
<input type="text" class="form-control" data-name="{{name}}PostalCode" value="{{postalCodeValue}}" placeholder="{{translate 'PostalCode'}}" autocomplete="espo-postalCode" maxlength="{{postalCodeMaxLength}}">
</div>
<div class="col-sm-4 col-xs-4">
<input type="text" class="form-control" data-name="{{name}}State" value="{{stateValue}}" placeholder="{{translate 'State'}}" autocomplete="espo-state">
<input type="text" class="form-control" data-name="{{name}}State" value="{{stateValue}}" placeholder="{{translate 'State'}}" autocomplete="espo-state" maxlength="{{stateMaxLength}}">
</div>
<div class="col-sm-4 col-xs-4">
<input type="text" class="form-control" data-name="{{name}}City" value="{{cityValue}}" placeholder="{{translate 'City'}}" autocomplete="espo-city">
<input type="text" class="form-control" data-name="{{name}}City" value="{{cityValue}}" placeholder="{{translate 'City'}}" autocomplete="espo-city" maxlength="{{cityMaxLength}}">
</div>
</div>
<textarea class="form-control" data-name="{{name}}Street" rows="1" placeholder="{{translate 'Street'}}" autocomplete="espo-street">{{streetValue}}</textarea>
<textarea class="form-control" data-name="{{name}}Street" rows="1" placeholder="{{translate 'Street'}}" autocomplete="espo-street" maxlength="{{streetMaxLength}}">{{streetValue}}</textarea>
@@ -1,14 +1,14 @@
<textarea class="form-control auto-height" data-name="{{name}}Street" rows="1" placeholder="{{translate 'Street'}}" autocomplete="espo-street">{{streetValue}}</textarea>
<input type="text" class="form-control" data-name="{{name}}City" value="{{cityValue}}" placeholder="{{translate 'City'}}" autocomplete="espo-city">
<textarea class="form-control auto-height" data-name="{{name}}Street" rows="1" placeholder="{{translate 'Street'}}" autocomplete="espo-street" maxlength="{{streetMaxLength}}">{{streetValue}}</textarea>
<input type="text" class="form-control" data-name="{{name}}City" value="{{cityValue}}" placeholder="{{translate 'City'}}" autocomplete="espo-city" maxlength="{{cityMaxLength}}">
<div class="row">
<div class="col-sm-5 col-xs-5">
<input type="text" class="form-control" data-name="{{name}}Country" value="{{countryValue}}" placeholder="{{translate 'Country'}}" autocomplete="espo-country">
<input type="text" class="form-control" data-name="{{name}}Country" value="{{countryValue}}" placeholder="{{translate 'Country'}}" autocomplete="espo-country" maxlength="{{countryMaxLength}}">
</div>
<div class="col-sm-3 col-xs-3">
<input type="text" class="form-control" data-name="{{name}}State" value="{{stateValue}}" placeholder="{{translate 'State'}}" autocomplete="espo-state">
<input type="text" class="form-control" data-name="{{name}}State" value="{{stateValue}}" placeholder="{{translate 'State'}}" autocomplete="espo-state" maxlength="{{stateMaxLength}}">
</div>
<div class="col-sm-4 col-xs-4">
<input type="text" class="form-control" data-name="{{name}}PostalCode" value="{{postalCodeValue}}" placeholder="{{translate 'PostalCode'}}" autocomplete="espo-postalCode">
<input type="text" class="form-control" data-name="{{name}}PostalCode" value="{{postalCodeValue}}" placeholder="{{translate 'PostalCode'}}" autocomplete="espo-postalCode" maxlength="{{postalCodeMaxLength}}">
</div>
</div>
+5 -5
View File
@@ -1,13 +1,13 @@
<textarea class="form-control auto-height" data-name="{{name}}Street" rows="1" placeholder="{{translate 'Street'}}" autocomplete="espo-street">{{streetValue}}</textarea>
<textarea class="form-control auto-height" data-name="{{name}}Street" rows="1" placeholder="{{translate 'Street'}}" autocomplete="espo-street" maxlength="{{streetMaxLength}}">{{streetValue}}</textarea>
<div class="row">
<div class="col-sm-4 col-xs-4">
<input type="text" class="form-control" data-name="{{name}}City" value="{{cityValue}}" placeholder="{{translate 'City'}}" autocomplete="espo-city">
<input type="text" class="form-control" data-name="{{name}}City" value="{{cityValue}}" placeholder="{{translate 'City'}}" autocomplete="espo-city" maxlength="{{cityMaxLength}}">
</div>
<div class="col-sm-4 col-xs-4">
<input type="text" class="form-control" data-name="{{name}}State" value="{{stateValue}}" placeholder="{{translate 'State'}}" autocomplete="espo-state">
<input type="text" class="form-control" data-name="{{name}}State" value="{{stateValue}}" placeholder="{{translate 'State'}}" autocomplete="espo-state" maxlength="{{stateMaxLength}}">
</div>
<div class="col-sm-4 col-xs-4">
<input type="text" class="form-control" data-name="{{name}}PostalCode" value="{{postalCodeValue}}" placeholder="{{translate 'PostalCode'}}" autocomplete="espo-postalCode">
<input type="text" class="form-control" data-name="{{name}}PostalCode" value="{{postalCodeValue}}" placeholder="{{translate 'PostalCode'}}" autocomplete="espo-postalCode" maxlength="{{postalCodeMaxLength}}">
</div>
</div>
<input type="text" class="form-control" data-name="{{name}}Country" value="{{countryValue}}" placeholder="{{translate 'Country'}}" autocomplete="espo-country">
<input type="text" class="form-control" data-name="{{name}}Country" value="{{countryValue}}" placeholder="{{translate 'Country'}}" autocomplete="espo-country" maxlength="{{countryMaxLength}}">
+41
View File
@@ -0,0 +1,41 @@
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* EspoCRM is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with EspoCRM. If not, see http://www.gnu.org/licenses/.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU General Public License version 3.
*
* In accordance with Section 7(b) of the GNU General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
************************************************************************/
Espo.define('views/fields/address-state', 'views/fields/varchar', function (Dep) {
return Dep.extend({
setupOptions: function () {
var stateList = this.getConfig().get('addressStateList') || [];
if (stateList.length) {
this.params.options = Espo.Utils.clone(stateList);
}
},
});
});
+48 -2
View File
@@ -61,6 +61,14 @@ Espo.define('views/fields/address', 'views/fields/base', function (Dep) {
data.formattedAddress = this.getFormattedAddress();
}
if (this.isEditMode()) {
data.stateMaxLength = this.stateMaxLength;
data.streetMaxLength = this.streetMaxLength;
data.postalCodeMaxLength = this.postalCodeMaxLength;
data.cityMaxLength = this.cityMaxLength;
data.countryMaxLength = this.countryMaxLength;
}
var isNotEmpty = false;
return data;
@@ -330,7 +338,6 @@ Espo.define('views/fields/address', 'views/fields/base', function (Dep) {
this.once('remove', function () {
this.$country.autocomplete('dispose');
}, this);
this.$country.attr('autocomplete', 'espo-country');
}
@@ -369,7 +376,6 @@ Espo.define('views/fields/address', 'views/fields/base', function (Dep) {
this.once('remove', function () {
this.$city.autocomplete('dispose');
}, this);
this.$city.attr('autocomplete', 'espo-city');
}
@@ -377,6 +383,44 @@ Espo.define('views/fields/address', 'views/fields/base', function (Dep) {
this.$street.on('input', function (e) {
this.controlStreetTextareaHeight();
}.bind(this));
var stateList = this.getConfig().get('addressStateList') || [];
if (stateList.length) {
this.$state.autocomplete({
minChars: 0,
lookup: stateList,
maxHeight: 200,
formatResult: function (suggestion) {
return suggestion.value;
},
lookupFilter: function (suggestion, query, queryLowerCase) {
if (suggestion.value.toLowerCase().indexOf(queryLowerCase) === 0) {
if (suggestion.value.length === queryLowerCase.length) return false;
return true;
}
return false;
},
onSelect: function () {
this.trigger('change');
}.bind(this)
});
this.$state.on('focus', function () {
if (this.$state.val()) return;
this.$state.autocomplete('onValueChange');
}.bind(this));
this.once('render', function () {
this.$state.autocomplete('dispose');
}, this);
this.once('remove', function () {
this.$state.autocomplete('dispose');
}, this);
this.$state.attr('autocomplete', 'espo-state');
}
this.controlStreetTextareaHeight();
this.$street.on('input', function (e) {
this.controlStreetTextareaHeight();
}.bind(this));
}
},
@@ -412,6 +456,8 @@ Espo.define('views/fields/address', 'views/fields/base', function (Dep) {
this.addressAttributeList.push(attribute);
this.addressPartList.push(item);
this[item + 'Field'] = attribute;
this[item + 'MaxLength'] = this.getMetadata().get(['entityDefs', this.model.name, 'fields', attribute, 'maxLength']);
}, this);
},
+14 -6
View File
@@ -1342,6 +1342,15 @@ table.no-margin {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
margin-bottom: 2px;
&:last-child {
margin-bottom: 0;
}
&:empty {
margin-bottom: -2px;
}
}
.expanded-row .cell .complex-text {
@@ -1929,14 +1938,12 @@ h4.panel-title span.fas.color-icon {
position: relative;
top: -1px;
}
padding-left: 26px;
}
.stream-head-container {
padding-bottom: 3px;
}
.stream-head-text-container {
padding-left: 26px;
margin-bottom: 4px;
}
.stream-head-container > img.avatar {
@@ -1975,7 +1982,8 @@ stream-head-text-container .span {
.stream-details-container,
.stream-subject-container,
{
padding: 2px 0 5px 26px;
padding: 2px 0 2px 26px;
margin-bottom: 2px;
}
.stream-details-container > ul {