diff --git a/application/Espo/Controllers/EntityManager.php b/application/Espo/Controllers/EntityManager.php
index aac5791a86..199b5bba03 100644
--- a/application/Espo/Controllers/EntityManager.php
+++ b/application/Espo/Controllers/EntityManager.php
@@ -78,6 +78,9 @@ class EntityManager extends \Espo\Core\Controllers\Base
if (!empty($data['sortDirection'])) {
$params['asc'] = $data['sortDirection'] === 'asc';
}
+ if (isset($data['textFilterFields']) && is_array($data['textFilterFields'])) {
+ $params['textFilterFields'] = $data['textFilterFields'];
+ }
$result = $this->getContainer()->get('entityManagerUtil')->create($name, $type, $params);
diff --git a/application/Espo/Core/Utils/EntityManager.php b/application/Espo/Core/Utils/EntityManager.php
index c08016f2b1..ff569c5974 100644
--- a/application/Espo/Core/Utils/EntityManager.php
+++ b/application/Espo/Core/Utils/EntityManager.php
@@ -219,6 +219,15 @@ class EntityManager
$this->getMetadata()->set('entityDefs', $name, $entityDefsData);
}
+ if (isset($data['textFilterFields'])) {
+ $entityDefsData = array(
+ 'collection' => array(
+ 'textFilterFields' => $data['textFilterFields']
+ )
+ );
+ $this->getMetadata()->set('entityDefs', $name, $entityDefsData);
+ }
+
$this->getMetadata()->save();
$this->getLanguage()->save();
diff --git a/application/Espo/Resources/i18n/en_US/EntityManager.json b/application/Espo/Resources/i18n/en_US/EntityManager.json
index 13f6138aed..1a9370a544 100644
--- a/application/Espo/Resources/i18n/en_US/EntityManager.json
+++ b/application/Espo/Resources/i18n/en_US/EntityManager.json
@@ -20,7 +20,8 @@
"relationName": "Middle Table Name",
"linkMultipleField": "Link Multiple Field",
"linkMultipleFieldForeign": "Foreign Link Multiple Field",
- "disabled": "Disabled"
+ "disabled": "Disabled",
+ "textFilterFields": "Text Filter Fields"
},
"options": {
"type": {
diff --git a/client/res/templates/admin/entity-manager/modals/edit-entity.tpl b/client/res/templates/admin/entity-manager/modals/edit-entity.tpl
index 620d9e61ac..f9b659cffa 100644
--- a/client/res/templates/admin/entity-manager/modals/edit-entity.tpl
+++ b/client/res/templates/admin/entity-manager/modals/edit-entity.tpl
@@ -59,4 +59,14 @@
+
+
+
{{/if}}
diff --git a/client/src/views/admin/entity-manager/modals/edit-entity.js b/client/src/views/admin/entity-manager/modals/edit-entity.js
index 4f5f7e00b2..4dc24dd71d 100644
--- a/client/src/views/admin/entity-manager/modals/edit-entity.js
+++ b/client/src/views/admin/entity-manager/modals/edit-entity.js
@@ -77,6 +77,8 @@ Espo.define('views/admin/entity-manager/modals/edit-entity', ['views/modal', 'mo
this.model.set('sortBy', this.getMetadata().get('entityDefs.' + scope + '.collection.sortBy'));
this.model.set('sortDirection', this.getMetadata().get('entityDefs.' + scope + '.collection.asc') ? 'asc' : 'desc');
+
+ this.model.set('textFilterFields', this.getMetadata().get('entityDefs.' + scope + '.collection.textFilterFields') || ['name']);
}
this.createView('type', 'views/fields/enum', {
@@ -159,7 +161,7 @@ Espo.define('views/admin/entity-manager/modals/edit-entity', ['views/modal', 'mo
}
return true;
}, this).sort(function (v1, v2) {
- return this.translate(v1, 'fields', scope).localeCompare(this.translate(v2, 'fields', scope));
+ return this.translate(v1, 'fields', scope).localeCompare(this.translate(v2, 'fields', scope));
}.bind(this));
var translatedOptions = {};
@@ -174,10 +176,10 @@ Espo.define('views/admin/entity-manager/modals/edit-entity', ['views/modal', 'mo
defs: {
name: 'sortBy',
params: {
- options: orderableFieldList,
- translatedOptions: translatedOptions
+ options: orderableFieldList
}
- }
+ },
+ translatedOptions: translatedOptions
});
this.createView('sortDirection', 'views/fields/enum', {
@@ -191,6 +193,32 @@ Espo.define('views/admin/entity-manager/modals/edit-entity', ['views/modal', 'mo
}
}
});
+ var fieldDefs = this.getMetadata().get(['entityDefs', scope, 'fields']) || {};
+
+ var optionList = Object.keys(fieldDefs).filter(function (item) {
+ if (!~['varchar', 'text', 'phoneNumber', 'email', 'personName'].indexOf(this.getMetadata().get(['entityDefs', scope, 'fields', item, 'type']))) {
+ return false;
+ }
+ return true;
+ }, this);
+
+ var textFilterFieldsTranslation = {};
+ optionList.forEach(function (item) {
+ textFilterFieldsTranslation[item] = this.translate(item, 'fields', scope);
+ }, this);
+
+ this.createView('textFilterFields', 'views/fields/multi-enum', {
+ model: model,
+ mode: 'edit',
+ el: this.options.el + ' .field[data-name="textFilterFields"]',
+ defs: {
+ name: 'textFilterFields',
+ params: {
+ options: optionList
+ }
+ },
+ translatedOptions: textFilterFieldsTranslation
+ });
}
},
@@ -262,7 +290,8 @@ Espo.define('views/admin/entity-manager/modals/edit-entity', ['views/modal', 'mo
labelPlural: this.model.get('labelPlural'),
type: this.model.get('type'),
stream: this.model.get('stream'),
- disabled: this.model.get('disabled')
+ disabled: this.model.get('disabled'),
+ textFilterFields: this.model.get('textFilterFields')
};
if (this.scope) {