From 42f184bf6fdf4d06a74554f0e9987cec763f29b9 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Thu, 30 Aug 2012 18:12:37 +0200 Subject: [PATCH] [REM] Removed TranslateDialog. Use ir.translation#translate() instead bzr revid: fme@openerp.com-20120830161237-twthb37lkbv6yn3t --- addons/web/static/src/js/view_form.js | 22 ++--- addons/web/static/src/js/views.js | 119 -------------------------- addons/web/static/src/xml/base.xml | 22 ----- 3 files changed, 12 insertions(+), 151 deletions(-) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 0b0366a9ee4..2034bfb741f 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -22,10 +22,6 @@ instance.web.form.FieldManagerMixin = { * Must return the asked field as in fields_get. */ get_field: function(field_name) {}, - /** - * Called by the field when the translate button is clicked. - */ - open_translate_dialog: function(field) {}, /** * Returns true when the view is in create mode. */ @@ -1049,9 +1045,6 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM is_create_mode: function() { return this.get("actual_mode") === "create"; }, - open_translate_dialog: function(field) { - return this._super(field); - }, }); /** @@ -1882,6 +1875,10 @@ instance.web.form.FieldInterface = { * Must set the focus on the field. Return false if field is not focusable. */ focus: function() {}, + /** + * Called when the translate button is clicked. + */ + on_translate: function() {}, }; /** @@ -1936,9 +1933,7 @@ instance.web.form.AbstractField = instance.web.form.FormWidget.extend(instance.w this._super(); if (this.field.translate) { this.$el.addClass('oe_form_field_translatable'); - this.$el.find('.oe_field_translate').click(_.bind(function() { - this.field_manager.open_translate_dialog(this); - }, this)); + this.$el.find('.oe_field_translate').click(this.on_translate); } this.$label = this.view.$el.find('label[for=' + this.id_for_label + ']'); if (instance.session.debug) { @@ -2000,6 +1995,13 @@ instance.web.form.AbstractField = instance.web.form.FormWidget.extend(instance.w set_input_id: function(id) { this.id_for_label = id; }, + on_translate: function() { + var self = this; + var trans = new instance.web.DataSet(this, 'ir.translation', this.view.dataset.get_context()); + return trans.call('translate', [this.view.dataset.model, this.view.datarecord.id, this.name]).then(function(action) { + self.do_action(action); + }); + }, }); /** diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js index e453ecbc905..b83ddb1cc3f 100644 --- a/addons/web/static/src/js/views.js +++ b/addons/web/static/src/js/views.js @@ -1050,119 +1050,6 @@ instance.web.Sidebar = instance.web.Widget.extend({ } }); -instance.web.TranslateDialog = instance.web.Dialog.extend({ - dialog_title: {toString: function () { return _t("Translations"); }}, - init: function(view) { - // TODO fme: should add the language to fields_view_get because between the fields view get - // and the moment the user opens the translation dialog, the user language could have been changed - this.view_language = view.session.user_context.lang; - this['on_button_' + _t("Save")] = this.on_btn_save; - this['on_button_' + _t("Close")] = this.on_btn_close; - this._super(view, { - width: '80%', - height: '80%', - destroy_on_close: false, - }); - this.view = view; - this.view_type = view.fields_view.type || ''; - this.$fields_form = null; - this.$view_form = null; - this.$sidebar_form = null; - this.translatable_fields_keys = _.map(this.view.translatable_fields || [], function(i) { return i.name; }); - this.languages = null; - this.languages_loaded = $.Deferred(); - (new instance.web.DataSetSearch(this, 'res.lang', this.view.dataset.get_context(), - [['translatable', '=', '1']])).read_slice(['code', 'name'], { sort: 'id' }).then(this.on_languages_loaded); - }, - start: function() { - var self = this; - this._super(); - return $.when(this.languages_loaded).then(function() { - self.$el.html(instance.web.qweb.render('TranslateDialog', { widget: self })); - self.$fields_form = self.$el.find('.oe_translation_form'); - self.$fields_form.find('.oe_trad_field').change(function() { - $(this).toggleClass('touched', ($(this).val() != $(this).attr('data-value'))); - }); - }); - }, - on_languages_loaded: function(langs) { - this.languages = langs; - this.languages_loaded.resolve(); - }, - do_load_fields_values: function(callback) { - var self = this, - deffered = []; - this.$fields_form.find('.oe_trad_field').val('').removeClass('touched'); - _.each(self.languages, function(lg) { - var deff = $.Deferred(); - deffered.push(deff); - var callback = function(values) { - _.each(self.translatable_fields_keys, function(f) { - var value = values[0][f] || ''; - self.$fields_form.find('.oe_trad_field[name="' + lg.code + '-' + f + '"]').val(value).attr('data-value', value); - }); - deff.resolve(); - }; - if (lg.code === self.view_language) { - var values = {}; - _.each(self.translatable_fields_keys, function(field) { - values[field] = self.view.fields[field].get_value(); - }); - callback([values]); - } else { - self.view.dataset.read_ids([self.view.datarecord.id], self.translatable_fields_keys, { - context: { 'lang': lg.code } - }).then(callback); - } - }); - $.when.apply(null, deffered).then(callback); - }, - open: function(field) { - var self = this; - this._super(); - $.when(this.languages_loaded).then(function() { - if (self.view.translatable_fields && self.view.translatable_fields.length) { - self.do_load_fields_values(function() { - if (field) { - var $field_input = self.$el.find('tr[data-field="' + field.name + '"] td:nth-child(2) *:first-child'); - self.$el.scrollTo($field_input); - $field_input.focus(); - } - }); - } else { - sup.call(self); - } - }); - }, - on_btn_save: function() { - var trads = {}; - var self = this; - var trads_mutex = new $.Mutex(); - self.$fields_form.find('.oe_trad_field.touched').each(function() { - var field = $(this).attr('name').split('-'); - if (!trads[field[0]]) { - trads[field[0]] = {}; - } - trads[field[0]][field[1]] = $(this).val(); - }); - _.each(trads, function(data, code) { - if (code === self.view_language) { - _.each(data, function(value, field) { - self.view.fields[field].set_value(value); - }); - } - trads_mutex.exec(function() { - return self.view.dataset.write(self.view.datarecord.id, data, { context : { 'lang': code } }); - }); - }); - this.close(); - return trads_mutex; - }, - on_btn_close: function() { - this.close(); - } -}); - instance.web.View = instance.web.Widget.extend({ // name displayed in view switchers display_name: '', @@ -1214,12 +1101,6 @@ instance.web.View = instance.web.Widget.extend({ action_views_ids: {} }); }, - open_translate_dialog: function(field) { - if (!this.translate_dialog) { - this.translate_dialog = new instance.web.TranslateDialog(this); - } - this.translate_dialog.open(field); - }, /** * Fetches and executes the action identified by ``action_data``. * diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index 511e37f4ab4..d97cc57f5ea 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -1202,28 +1202,6 @@ - - - - - - - - - - -
-
Field
-
-
-
- - - - -
-
-