openerp-community-reviewer team mailing list archive
-
openerp-community-reviewer team
-
Mailing list archive
-
Message #05558
[Merge] lp:~camptocamp/web-addons/7.0-web_translate_dialog-sync-current-view-1301218-gbr into lp:web-addons
Guewen Baconnier @ Camptocamp has proposed merging lp:~camptocamp/web-addons/7.0-web_translate_dialog-sync-current-view-1301218-gbr into lp:web-addons.
Commit message:
Propagate back and forth edited fields on the current language between the current view and the translate dialog.
Requested reviews:
Web-Addons Core Editors (webaddons-core-editors)
Related bugs:
Bug #1301218 in Web addons for OpenERP: "web_translate_dialog: current language not synchronized when edited"
https://bugs.launchpad.net/web-addons/+bug/1301218
For more details, see:
https://code.launchpad.net/~camptocamp/web-addons/7.0-web_translate_dialog-sync-current-view-1301218-gbr/+merge/213783
Fix lp:1301218
--
https://code.launchpad.net/~camptocamp/web-addons/7.0-web_translate_dialog-sync-current-view-1301218-gbr/+merge/213783
Your team Web-Addons Core Editors is requested to review the proposed merge of lp:~camptocamp/web-addons/7.0-web_translate_dialog-sync-current-view-1301218-gbr into lp:web-addons.
=== modified file 'web_translate_dialog/static/src/js/web_translate_dialog.js'
--- web_translate_dialog/static/src/js/web_translate_dialog.js 2014-02-25 14:29:42 +0000
+++ web_translate_dialog/static/src/js/web_translate_dialog.js 2014-04-02 08:58:31 +0000
@@ -126,10 +126,24 @@
});
});
},
- // use a `read_translations` method instead of a `read`
- // this latter leave the fields empty if there is no
- // translation for a field instead of taking the src field
- do_load_fields_values: function(callback) {
+ set_fields_values: function(lang, values) {
+ var self = this;
+ _.each(this.translatable_fields_keys, function(f) {
+ self.$el.find('.oe_translation_field[name="' + lang.code + '-' + f + '"]')
+ .val(values[f] || '')
+ .attr('data-value', values[f] || '');
+
+ var $tarea = self.$el.find('.oe_form_field_html .oe_translation_field[name="' + lang.code + '-' + f + '"]');
+ if ($tarea.length) {
+ $tarea.cleditor()[0].updateFrame();
+ }
+ });
+ var $textarea = this.$el.find('textarea.oe_translation_field');
+ $textarea.css({minHeight:'100px'});
+ $textarea.autosize();
+ $(window).resize(); // triggers the autosize
+ },
+ do_load_fields_values: function() {
var self = this,
deferred = [];
@@ -137,31 +151,25 @@
_.each(self.languages, function(lg) {
var deff = $.Deferred();
deferred.push(deff);
- var callback = function(values) {
+ if (lg.code === self.view_language) {
+ var values = {};
+ _.each(self.translatable_fields_keys, function(field) {
+ values[field] = self.view.fields[field].get_value();
+ });
+ self.set_fields_values(lg, values);
+ deff.resolve();
+ } else {
+ self.view.dataset.call(
+ 'read',
+ [[self.view.datarecord.id],
+ self.translatable_fields_keys,
+ self.view.dataset.get_context({
+ 'lang': lg.code
+ })]).done(function (rows) {
+ self.set_fields_values(lg, rows[0]);
+ deff.resolve();
+ });
};
- self.view.dataset.call(
- 'read',
- [[self.view.datarecord.id],
- self.translatable_fields_keys,
- self.view.dataset.get_context({
- 'lang': lg.code
- })]).done(function (values) {
- _.each(self.translatable_fields_keys, function(f) {
- self.$el.find('.oe_translation_field[name="' + lg.code + '-' + f + '"]')
- .val(values[0][f] || '')
- .attr('data-value', values[0][f] || '');
-
- var $tarea = self.$el.find('.oe_form_field_html .oe_translation_field[name="' + lg.code + '-' + f + '"]');
- if ($tarea.length) {
- $tarea.cleditor()[0].updateFrame();
- }
- });
- var $textarea = self.$el.find('textarea.oe_translation_field');
- $textarea.css({minHeight:'100px'});
- $textarea.autosize();
- $(window).resize(); // triggers the autosize
- deff.resolve();
- });
});
return deferred;
},
@@ -178,17 +186,7 @@
});
_.each(translations, function(data, code) {
if (code === self.view_language) {
- _.each(data, function(value, field) {
- var view_field = self.view.fields[field];
- var is_dirty = view_field.view.$el.hasClass('oe_form_dirty');
- // update the field on the view
- view_field.set_value(value);
- if ( !is_dirty ) {
- // Avoid to set the view dirty when not necessary:
- // values have already been saved.
- view_field.view.$el.removeClass('oe_form_dirty');
- }
- });
+ self.view.set_values(data);
}
translation_mutex.exec(function() {
return new instance.web.DataSet(self, self.view.dataset.model, self.view.dataset.get_context()).write(self.view.datarecord.id, data, { context : { 'lang': code }});
Follow ups