From 442ebe182e87be5ea66a6e6564c98e8efb5d6711 Mon Sep 17 00:00:00 2001 From: Enric Tobella Date: Thu, 4 Mar 2021 15:28:44 +0100 Subject: [PATCH 1/2] [IMP] web_translate_dialog: Allow to use it on a list inside a record --- .../static/src/js/web_translate_dialog.js | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/web_translate_dialog/static/src/js/web_translate_dialog.js b/web_translate_dialog/static/src/js/web_translate_dialog.js index b6ed79c3c..36d5f26cf 100644 --- a/web_translate_dialog/static/src/js/web_translate_dialog.js +++ b/web_translate_dialog/static/src/js/web_translate_dialog.js @@ -27,11 +27,16 @@ var TranslateDialog = Dialog.extend({ var field_names; var single_field = false; if (options.field){ + this.record_id = options.field.id; + var record = parent.model.get(options.field.id) + this.model = record.model; field_names = [options.field.fieldName]; single_field = true; title_string = title_string.replace('/', field_names); } else { + this.record_id = parent.handle; + this.model = parent.modelName; field_names = this.get_translatable_fields(parent); } this._super(parent, @@ -168,7 +173,7 @@ var TranslateDialog = Dialog.extend({ var def = $.Deferred(); deferred.push(def); rpc.query({ - model: this.view.modelName, + model: this.model, method: 'get_field_translations', args: [ [this.res_id], @@ -207,7 +212,7 @@ var TranslateDialog = Dialog.extend({ var context = new Context(session.user_context, {lang: code}); rpc.query({ - model: self.view.modelName, + model: self.model, method: 'write', args: [self.res_id, text], kwargs: {context: context.eval()} @@ -215,9 +220,13 @@ var TranslateDialog = Dialog.extend({ done.resolve(); }); if (code === self.view_language) { + var changes = {}; _.each(text, function(value, key) { - var view_elem = self.view.$( ":input[name='" + key +"']") - view_elem.val(value).trigger('change'); + changes[key] = value; + }); + self.trigger_up('field_changed', { + dataPointID: self.record_id, + changes: changes, }); } return done; From 8360d8c8a38a96d74c4a139141f307e7530bab7b Mon Sep 17 00:00:00 2001 From: Enric Tobella Date: Mon, 29 Mar 2021 16:45:16 +0200 Subject: [PATCH 2/2] [FIX] web_translate_dialog: Translations were not generated, and then cannot be stored properly --- .../static/src/js/web_translate_dialog.js | 40 +++++++++++++------ web_translate_dialog/static/src/xml/base.xml | 2 +- 2 files changed, 29 insertions(+), 13 deletions(-) diff --git a/web_translate_dialog/static/src/js/web_translate_dialog.js b/web_translate_dialog/static/src/js/web_translate_dialog.js index 36d5f26cf..4b069b10a 100644 --- a/web_translate_dialog/static/src/js/web_translate_dialog.js +++ b/web_translate_dialog/static/src/js/web_translate_dialog.js @@ -24,15 +24,15 @@ var TranslateDialog = Dialog.extend({ template: "TranslateDialog", init: function(parent, options) { var title_string = _t("Translate fields: /"); - var field_names; + var field_names = {}; var single_field = false; if (options.field){ this.record_id = options.field.id; var record = parent.model.get(options.field.id) this.model = record.model; - field_names = [options.field.fieldName]; + field_names[options.field.fieldName] = record.fields[options.field.fieldName]; single_field = true; - title_string = title_string.replace('/', field_names); + title_string = title_string.replace('/', record.fields[options.field.fieldName].string); } else { this.record_id = parent.handle; @@ -65,11 +65,11 @@ var TranslateDialog = Dialog.extend({ }); }, get_translatable_fields: function(parent) { - var field_list = []; + var field_list = {}; _.each(parent.renderer.state.fields, function(field, name){ var related_readonly = typeof field.related !== 'undefined' && field.readonly; if (field.translate == true && !related_readonly && parent.renderer.state.getFieldNames().includes(name)){ - field_list.push(name); + field_list[name] = field; } }); return field_list; @@ -116,10 +116,10 @@ var TranslateDialog = Dialog.extend({ }, set_maxlength: function(){ // set maxlength if initial field has size attr - _.each(this.translatable_fields, function(field_name){ - var size = $('[name='+field_name+']')[0].maxLength; + _.each(this.translatable_fields, function(field, name){ + var size = $('[name='+name+']')[0].maxLength; if (size > 0){ - this.$('input.oe_translation_field[name$="'+field_name+'"], textarea.oe_translation_field[name$="'+field_name+'"]').attr('maxlength', size); + this.$('input.oe_translation_field[name$="'+field_name+'"], textarea.oe_translation_field[name$="'+name+'"]').attr('maxlength', size); } }, this); }, @@ -169,7 +169,10 @@ var TranslateDialog = Dialog.extend({ deferred = []; this.$('.oe_translation_field').val('').removeClass('touched'); - + var translatable_fields = [] + _.forEach(this.translatable_fields, function(field, name) { + translatable_fields.push(name) + }); var def = $.Deferred(); deferred.push(def); rpc.query({ @@ -179,7 +182,7 @@ var TranslateDialog = Dialog.extend({ [this.res_id], ], kwargs: { - field_names: this.translatable_fields, + field_names: translatable_fields, }, }).done( function (res) { @@ -259,6 +262,7 @@ FormController.include({ }, on_button_translate: function() { var self = this; + var record = self.model.get(this.handle) $.when(this.has_been_loaded).then(function() { self.open_translate_dialog(null, self.getSelectedIds()[0]); }); @@ -273,8 +277,20 @@ BasicController.include({ _onTranslate: function(event) { // the image next to the fields opens the translate dialog - var res_id = event.target.res_id ? event.target.res_id : event.target.state.res_id; - this.open_translate_dialog(event.data, res_id); + event.stopPropagation(); + var self = this; + var record = this.model.get(event.data.id, {raw: true}); + this._rpc({ + route: '/web/dataset/call_button', + params: { + model: 'ir.translation', + method: 'translate_fields', + args: [record.model, record.res_id, event.data.fieldName, record.getContext()], + } + }).then(function () { + var res_id = event.target.res_id ? event.target.res_id : event.target.state.res_id; + self.open_translate_dialog(event.data, res_id); + }) }, }); diff --git a/web_translate_dialog/static/src/xml/base.xml b/web_translate_dialog/static/src/xml/base.xml index 3306c7e42..221f4e212 100644 --- a/web_translate_dialog/static/src/xml/base.xml +++ b/web_translate_dialog/static/src/xml/base.xml @@ -18,7 +18,7 @@ - +