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 @@ + + +
+
+ +
+ {{{textFilterFields}}} +
+
+
{{/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) {