From f5b41eb78b5ce4bb63c7104efb641b264b00dd0d Mon Sep 17 00:00:00 2001 From: yuri Date: Tue, 31 May 2016 11:01:17 +0300 Subject: [PATCH] field manager: translatedOptions param --- application/Espo/Core/Utils/FieldManager.php | 2 +- application/Espo/Resources/metadata/fields/array.json | 6 ++++-- application/Espo/Resources/metadata/fields/enum.json | 3 ++- application/Espo/Resources/metadata/fields/multiEnum.json | 6 ++++-- application/Espo/Resources/metadata/fields/phone.json | 3 ++- client/src/views/admin/field-manager/edit.js | 4 +++- 6 files changed, 16 insertions(+), 8 deletions(-) diff --git a/application/Espo/Core/Utils/FieldManager.php b/application/Espo/Core/Utils/FieldManager.php index b69f36efb7..f607ae33df 100644 --- a/application/Espo/Core/Utils/FieldManager.php +++ b/application/Espo/Core/Utils/FieldManager.php @@ -100,7 +100,7 @@ class FieldManager $this->setLabel($name, $fieldDefs['label'], $scope); } - if (isset($fieldDefs['type']) && ($fieldDefs['type'] == 'enum' || $fieldDefs['type'] == 'phone')) { + if (isset($fieldDefs['type']) && $this->getMetadata()->get(['fields', $fieldDefs['type'], 'translatedOptions'])) { if (isset($fieldDefs['translatedOptions'])) { $this->setTranslatedOptions($name, $fieldDefs['translatedOptions'], $scope); } diff --git a/application/Espo/Resources/metadata/fields/array.json b/application/Espo/Resources/metadata/fields/array.json index f165e0569c..3099e797d4 100644 --- a/application/Espo/Resources/metadata/fields/array.json +++ b/application/Espo/Resources/metadata/fields/array.json @@ -7,7 +7,8 @@ }, { "name":"options", - "type":"array" + "type":"array", + "view": "views/admin/field-manager/fields/options" }, { "name":"translation", @@ -24,5 +25,6 @@ "notCreatable": false, "fieldDefs":{ "type":"jsonArray" - } + }, + "translatedOptions": true } diff --git a/application/Espo/Resources/metadata/fields/enum.json b/application/Espo/Resources/metadata/fields/enum.json index 76b1a10ca1..589fc068ef 100644 --- a/application/Espo/Resources/metadata/fields/enum.json +++ b/application/Espo/Resources/metadata/fields/enum.json @@ -31,5 +31,6 @@ "filter": true, "fieldDefs":{ "type":"varchar" - } + }, + "translatedOptions": true } diff --git a/application/Espo/Resources/metadata/fields/multiEnum.json b/application/Espo/Resources/metadata/fields/multiEnum.json index 6d3e43fa66..778e7748c4 100644 --- a/application/Espo/Resources/metadata/fields/multiEnum.json +++ b/application/Espo/Resources/metadata/fields/multiEnum.json @@ -7,7 +7,8 @@ }, { "name":"options", - "type":"array" + "type":"array", + "view": "views/admin/field-manager/fields/options" }, { "name":"translation", @@ -19,5 +20,6 @@ "notCreatable": false, "fieldDefs":{ "type":"jsonArray" - } + }, + "translatedOptions": true } diff --git a/application/Espo/Resources/metadata/fields/phone.json b/application/Espo/Resources/metadata/fields/phone.json index cf1c69455a..d5f14c175e 100644 --- a/application/Espo/Resources/metadata/fields/phone.json +++ b/application/Espo/Resources/metadata/fields/phone.json @@ -24,5 +24,6 @@ "filter": true, "fieldDefs":{ "notStorable":true - } + }, + "translatedOptions": true } diff --git a/client/src/views/admin/field-manager/edit.js b/client/src/views/admin/field-manager/edit.js index 98002d61e5..19ccc34097 100644 --- a/client/src/views/admin/field-manager/edit.js +++ b/client/src/views/admin/field-manager/edit.js @@ -32,6 +32,8 @@ Espo.define('views/admin/field-manager/edit', ['view', 'model'], function (Dep, template: 'admin/field-manager/edit', + entityTypeWithTranslatedOptionsList: ['enum', 'multiEnum', 'array', 'phone'], + data: function () { return { scope: this.scope, @@ -198,7 +200,7 @@ Espo.define('views/admin/field-manager/edit', ['view', 'model'], function (Dep, langData[this.scope]['fields'][this.model.get('name')] = this.model.get('label'); - if (~['enum', 'phone'].indexOf(this.model.get('type')) && this.model.get('translatedOptions')) { + if (this.getMetadata().get(['fields', this.model.get('type'), 'translatedOptions']) && this.model.get('translatedOptions')) { langData[this.scope].options = langData[this.scope].options || {}; langData[this.scope]['options'][this.model.get('name')] = this.model.get('translatedOptions') || {}; }