mirror of https://github.com/OCA/web.git
[FIX] web_translate_dialog: Translations were not generated, and then cannot be stored properly
parent
442ebe182e
commit
8360d8c8a3
|
@ -24,15 +24,15 @@ var TranslateDialog = Dialog.extend({
|
||||||
template: "TranslateDialog",
|
template: "TranslateDialog",
|
||||||
init: function(parent, options) {
|
init: function(parent, options) {
|
||||||
var title_string = _t("Translate fields: /");
|
var title_string = _t("Translate fields: /");
|
||||||
var field_names;
|
var field_names = {};
|
||||||
var single_field = false;
|
var single_field = false;
|
||||||
if (options.field){
|
if (options.field){
|
||||||
this.record_id = options.field.id;
|
this.record_id = options.field.id;
|
||||||
var record = parent.model.get(options.field.id)
|
var record = parent.model.get(options.field.id)
|
||||||
this.model = record.model;
|
this.model = record.model;
|
||||||
field_names = [options.field.fieldName];
|
field_names[options.field.fieldName] = record.fields[options.field.fieldName];
|
||||||
single_field = true;
|
single_field = true;
|
||||||
title_string = title_string.replace('/', field_names);
|
title_string = title_string.replace('/', record.fields[options.field.fieldName].string);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
this.record_id = parent.handle;
|
this.record_id = parent.handle;
|
||||||
|
@ -65,11 +65,11 @@ var TranslateDialog = Dialog.extend({
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
get_translatable_fields: function(parent) {
|
get_translatable_fields: function(parent) {
|
||||||
var field_list = [];
|
var field_list = {};
|
||||||
_.each(parent.renderer.state.fields, function(field, name){
|
_.each(parent.renderer.state.fields, function(field, name){
|
||||||
var related_readonly = typeof field.related !== 'undefined' && field.readonly;
|
var related_readonly = typeof field.related !== 'undefined' && field.readonly;
|
||||||
if (field.translate == true && !related_readonly && parent.renderer.state.getFieldNames().includes(name)){
|
if (field.translate == true && !related_readonly && parent.renderer.state.getFieldNames().includes(name)){
|
||||||
field_list.push(name);
|
field_list[name] = field;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return field_list;
|
return field_list;
|
||||||
|
@ -116,10 +116,10 @@ var TranslateDialog = Dialog.extend({
|
||||||
},
|
},
|
||||||
set_maxlength: function(){
|
set_maxlength: function(){
|
||||||
// set maxlength if initial field has size attr
|
// set maxlength if initial field has size attr
|
||||||
_.each(this.translatable_fields, function(field_name){
|
_.each(this.translatable_fields, function(field, name){
|
||||||
var size = $('[name='+field_name+']')[0].maxLength;
|
var size = $('[name='+name+']')[0].maxLength;
|
||||||
if (size > 0){
|
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);
|
}, this);
|
||||||
},
|
},
|
||||||
|
@ -169,7 +169,10 @@ var TranslateDialog = Dialog.extend({
|
||||||
deferred = [];
|
deferred = [];
|
||||||
|
|
||||||
this.$('.oe_translation_field').val('').removeClass('touched');
|
this.$('.oe_translation_field').val('').removeClass('touched');
|
||||||
|
var translatable_fields = []
|
||||||
|
_.forEach(this.translatable_fields, function(field, name) {
|
||||||
|
translatable_fields.push(name)
|
||||||
|
});
|
||||||
var def = $.Deferred();
|
var def = $.Deferred();
|
||||||
deferred.push(def);
|
deferred.push(def);
|
||||||
rpc.query({
|
rpc.query({
|
||||||
|
@ -179,7 +182,7 @@ var TranslateDialog = Dialog.extend({
|
||||||
[this.res_id],
|
[this.res_id],
|
||||||
],
|
],
|
||||||
kwargs: {
|
kwargs: {
|
||||||
field_names: this.translatable_fields,
|
field_names: translatable_fields,
|
||||||
},
|
},
|
||||||
}).done(
|
}).done(
|
||||||
function (res) {
|
function (res) {
|
||||||
|
@ -259,6 +262,7 @@ FormController.include({
|
||||||
},
|
},
|
||||||
on_button_translate: function() {
|
on_button_translate: function() {
|
||||||
var self = this;
|
var self = this;
|
||||||
|
var record = self.model.get(this.handle)
|
||||||
$.when(this.has_been_loaded).then(function() {
|
$.when(this.has_been_loaded).then(function() {
|
||||||
self.open_translate_dialog(null, self.getSelectedIds()[0]);
|
self.open_translate_dialog(null, self.getSelectedIds()[0]);
|
||||||
});
|
});
|
||||||
|
@ -273,8 +277,20 @@ BasicController.include({
|
||||||
|
|
||||||
_onTranslate: function(event) {
|
_onTranslate: function(event) {
|
||||||
// the image next to the fields opens the translate dialog
|
// the image next to the fields opens the translate dialog
|
||||||
|
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;
|
var res_id = event.target.res_id ? event.target.res_id : event.target.state.res_id;
|
||||||
this.open_translate_dialog(event.data, res_id);
|
self.open_translate_dialog(event.data, res_id);
|
||||||
|
})
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,7 @@
|
||||||
</th>
|
</th>
|
||||||
</tr>
|
</tr>
|
||||||
<t t-foreach="widget.translatable_fields" t-as="field_name">
|
<t t-foreach="widget.translatable_fields" t-as="field_name">
|
||||||
<t t-set="field" t-value="widget.view.searchView.fields[field_name]" />
|
<t t-set="field" t-value="widget.translatable_fields[field_name]"/>
|
||||||
<tr t-att-data-field="field_name">
|
<tr t-att-data-field="field_name">
|
||||||
<td t-if="!widget.single_field" class="oe_form_frame_cell field_name" width="1%" nowrap="nowrap">
|
<td t-if="!widget.single_field" class="oe_form_frame_cell field_name" width="1%" nowrap="nowrap">
|
||||||
<label class="oe_label"><t t-esc="field.string"/>:</label>
|
<label class="oe_label"><t t-esc="field.string"/>:</label>
|
||||||
|
|
Loading…
Reference in New Issue