Merge branch 'hotfix/5.5.7'
This commit is contained in:
@@ -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>
|
||||
|
||||
@@ -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}}">
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
},
|
||||
|
||||
});
|
||||
});
|
||||
@@ -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);
|
||||
},
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user