mirror of https://github.com/OCA/web.git
[FIX] web_translate_dialog: Translations were not generated, and then cannot be stored properly
parent
e9aea87272
commit
60a11c95d9
|
@ -22,15 +22,19 @@ odoo.define("web_translate_dialog.translate_dialog", function(require) {
|
||||||
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 = false;
|
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;
|
||||||
this.model = parent.modelName;
|
this.model = parent.modelName;
|
||||||
|
@ -60,7 +64,7 @@ odoo.define("web_translate_dialog.translate_dialog", function(require) {
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
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 =
|
var related_readonly =
|
||||||
typeof field.related !== "undefined" && field.readonly;
|
typeof field.related !== "undefined" && field.readonly;
|
||||||
|
@ -69,7 +73,7 @@ odoo.define("web_translate_dialog.translate_dialog", function(require) {
|
||||||
!related_readonly &&
|
!related_readonly &&
|
||||||
parent.renderer.state.getFieldNames().includes(name)
|
parent.renderer.state.getFieldNames().includes(name)
|
||||||
) {
|
) {
|
||||||
field_list.push(name);
|
field_list[name] = field;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return field_list;
|
return field_list;
|
||||||
|
@ -126,14 +130,14 @@ odoo.define("web_translate_dialog.translate_dialog", function(require) {
|
||||||
// Set maxlength if initial field has size attr
|
// Set maxlength if initial field has size attr
|
||||||
_.each(
|
_.each(
|
||||||
this.translatable_fields,
|
this.translatable_fields,
|
||||||
function(field_name) {
|
function(field, name) {
|
||||||
var size = $("[name=" + field_name + "]")[0].maxLength;
|
var size = $("[name=" + name + "]")[0].maxLength;
|
||||||
if (size > 0) {
|
if (size > 0) {
|
||||||
this.$(
|
this.$(
|
||||||
'input.oe_translation_field[name$="' +
|
'input.oe_translation_field[name$="' +
|
||||||
field_name +
|
name +
|
||||||
'"], textarea.oe_translation_field[name$="' +
|
'"], textarea.oe_translation_field[name$="' +
|
||||||
field_name +
|
name +
|
||||||
'"]'
|
'"]'
|
||||||
).attr("maxlength", size);
|
).attr("maxlength", size);
|
||||||
}
|
}
|
||||||
|
@ -199,6 +203,10 @@ odoo.define("web_translate_dialog.translate_dialog", function(require) {
|
||||||
this.$(".oe_translation_field")
|
this.$(".oe_translation_field")
|
||||||
.val("")
|
.val("")
|
||||||
.removeClass("touched");
|
.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);
|
||||||
|
@ -207,7 +215,7 @@ odoo.define("web_translate_dialog.translate_dialog", function(require) {
|
||||||
method: "get_field_translations",
|
method: "get_field_translations",
|
||||||
args: [[this.res_id]],
|
args: [[this.res_id]],
|
||||||
kwargs: {
|
kwargs: {
|
||||||
field_names: this.translatable_fields,
|
field_names: translatable_fields,
|
||||||
},
|
},
|
||||||
}).then(function(res) {
|
}).then(function(res) {
|
||||||
if (res[self.res_id]) {
|
if (res[self.res_id]) {
|
||||||
|
@ -299,10 +307,23 @@ odoo.define("web_translate_dialog.translate_dialog", function(require) {
|
||||||
|
|
||||||
_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
|
||||||
var res_id = event.target.res_id
|
event.stopPropagation();
|
||||||
? event.target.res_id
|
var self = this;
|
||||||
: event.target.state.res_id;
|
var record = this.model.get(event.data.id, {raw: true});
|
||||||
this.open_translate_dialog(event.data, res_id);
|
this._rpc({
|
||||||
|
route: "/web/dataset/call_button",
|
||||||
|
params: {
|
||||||
|
model: "ir.translation",
|
||||||
|
method: "translate_fields",
|
||||||
|
args: [record.model, record.res_id, event.data.fieldName],
|
||||||
|
kwargs: {context: 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);
|
||||||
|
});
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -29,10 +29,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 t-set="field" t-value="widget.translatable_fields[field_name]" />
|
||||||
t-set="field"
|
|
||||||
t-value="widget.view.renderer.state.fields[field_name]"
|
|
||||||
/>
|
|
||||||
<tr t-att-data-field="field_name">
|
<tr t-att-data-field="field_name">
|
||||||
<td
|
<td
|
||||||
t-if="!widget.single_field"
|
t-if="!widget.single_field"
|
||||||
|
|
Loading…
Reference in New Issue