From 24f00dfa03bb520f25ba73d701d5475f93fcee5f Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Fri, 8 Aug 2025 11:15:07 +0300 Subject: [PATCH] field manager param label translation --- .../templates/admin/field-manager/edit.tpl | 6 +- client/src/views/admin/field-manager/edit.js | 58 ++++++++++++++----- 2 files changed, 45 insertions(+), 19 deletions(-) diff --git a/client/res/templates/admin/field-manager/edit.tpl b/client/res/templates/admin/field-manager/edit.tpl index 24e1648992..eb098203c5 100644 --- a/client/res/templates/admin/field-manager/edit.tpl +++ b/client/res/templates/admin/field-manager/edit.tpl @@ -27,12 +27,10 @@
{{{label}}}
- {{#each paramList}} + {{#each paramDataList}} {{#unless hidden}}
- +
{{{var name ../this}}}
{{/unless}} diff --git a/client/src/views/admin/field-manager/edit.js b/client/src/views/admin/field-manager/edit.js index 167f4db20f..c0fb59e410 100644 --- a/client/src/views/admin/field-manager/edit.js +++ b/client/src/views/admin/field-manager/edit.js @@ -70,17 +70,29 @@ class FieldManagerEditView extends View { 'nonAdminReadOnly', ] - /** @type {Model & {fetchedAttributes?: Record}}*/ + /** + * @type {Model & {fetchedAttributes?: Record}} + */ model - /** @type {Record[]} */ + + /** + * @private + * @type {Record[]} + */ paramList + /** + * @private + * @type {Record[]} + */ + paramDataList + data() { return { scope: this.scope, field: this.field, defs: this.defs, - paramList: this.paramList, + paramDataList: this.paramDataList, type: this.type, fieldList: this.fieldList, isCustom: this.defs.isCustom, @@ -210,17 +222,16 @@ class FieldManagerEditView extends View { .then(() => { const promiseList = []; this.paramList = []; - const paramList = Espo.Utils.clone(this.getFieldManager().getParamList(this.type) || []); + + const paramList = Espo.Utils.cloneDeep(this.getFieldManager().getParamList(this.type)); if (!this.isNew) { const fieldManagerAdditionalParamList = this.getMetadata() - .get([ - 'entityDefs', this.scope, 'fields', - this.field, 'fieldManagerAdditionalParamList' - ]) || []; + .get(['entityDefs', this.scope, 'fields', this.field, 'fieldManagerAdditionalParamList']) + ?? []; - fieldManagerAdditionalParamList.forEach((item) => { + fieldManagerAdditionalParamList.forEach(item => { paramList.push(item); }); } @@ -396,6 +407,19 @@ class FieldManagerEditView extends View { ); }); + this.paramDataList = this.paramList.map(o => { + let label = this.translate(o.name, 'fields', 'Admin'); + + if (o.labelTranslation) { + label = this.getLanguage().translatePath(o.labelTranslation); + } + + return { + ...o, + label: label, + }; + }); + Promise.all(promiseList).then(() => callback()); }); }); @@ -658,21 +682,25 @@ class FieldManagerEditView extends View { createFieldView(type, name, readOnly, params, options, callback) { const viewName = (params || {}).view || this.getFieldManager().getViewName(type); + let labelText = undefined; + + if (params && params.labelTranslation) { + labelText = this.getLanguage().translatePath(params.labelTranslation); + } + const o = { model: this.model, selector: `.field[data-name="${name}"]`, - defs: { - name: name, - params: params - }, + name: name, + params: params, mode: readOnly ? 'detail' : 'edit', readOnly: readOnly, scope: this.scope, field: this.field, + labelText: labelText, + ...options, }; - _.extend(o, options || {}); - const promise = this.createView(name, viewName, o, callback); this.fieldList.push(name);