diff --git a/addons/website/static/src/js/website.translator.js b/addons/website/static/src/js/website.translator.js index 1b300f5fd74..11efc67d7ae 100644 --- a/addons/website/static/src/js/website.translator.js +++ b/addons/website/static/src/js/website.translator.js @@ -49,7 +49,7 @@ }); } else { this.translate().then(function () { - mysuper.call(self); + mysuper.call(self, true); if(self.gengo_translate){ self.translation_gengo_display() } diff --git a/addons/website_version/controllers/main.py b/addons/website_version/controllers/main.py index 9580ec981fa..fffecd74d9a 100644 --- a/addons/website_version/controllers/main.py +++ b/addons/website_version/controllers/main.py @@ -145,14 +145,3 @@ class Versioning_Controller(Website): exp_obj = request.env['website_version.experiment'] exp_obj.create(vals) return existing_experiment - - @http.route('/website/customize_template_get', type='json', auth='user', website=True) - def customize_template_get(self, key, full=False, bundles=False, **kw): - result = Website.customize_template_get(self, key, full=full, bundles=bundles, **kw) - check = [] - res = [] - for data in result: - if data['name'] not in check: - check.append(data['name']) - res.append(data) - return res diff --git a/addons/website_version/models/ir_ui_view.py b/addons/website_version/models/ir_ui_view.py index bf7d401b519..2c9ab3c7231 100644 --- a/addons/website_version/models/ir_ui_view.py +++ b/addons/website_version/models/ir_ui_view.py @@ -126,3 +126,53 @@ class view(models.Model): all_id = self.search(cr, uid, [('key', '=', view.key)], context=dict(context or {}, active_test=False)) for v in self.browse(cr, uid, all_id, context=dict(context or {}, active_test=False)): v.write({'active': not v.active}) + + @api.model + def translate_qweb(self, id_, arch, lang): + view = self.browse(id_) + if not view.key: + return super(view, self).translate_qweb(id_, arch, lang) + views = self.search([('key', '=', view.key), '|', + ('website_id', '=', view.website_id.id), ('website_id', '=', False)]) + fallback_views = self + for v in views: + if v.mode == 'primary' and v.inherit_id.mode == 'primary': + # template is `cloned` from parent view + fallback_views += view.inherit_id + views += fallback_views + def translate_func(term): + Translations = self.env['ir.translation'] + trans = Translations._get_source('website', 'view', lang, term, views.ids) + return trans + self._translate_qweb(arch, translate_func) + return arch + + @api.model + def customize_template_get(self, key, full=False, bundles=False, **kw): + result = super(view, self).customize_template_get(key, full=full, bundles=bundles, **kw) + check = [] + res = [] + for data in result: + if data['name'] not in check: + check.append(data['name']) + res.append(data) + return res + + @api.model + def get_view_translations(self, xml_id, lang, + field=['id', 'res_id', 'value', 'state', 'gengo_translation']): + irt = self.pool['ir.translation'] + view = self.browse(xml_id) + view_list = self.search([('key', '=', view.key), + '|', ('website_id', '=', view.website_id.id), ('website_id', '=', False)]) + views_ids = [] + for v in view_list: + views = self.customize_template_get(v.id, full=True) + views_ids += [v.get('id') for v in views if v.get('active')] + domain = [('type', '=', 'view'), ('res_id', 'in', views_ids), ('lang', '=', lang)] + element_list = irt.search_read(self.env.cr, self.env.uid, + domain, field, context=self.env.context) + for element in element_list: + if element['res_id'] in view_list.ids: + element['res_id'] = xml_id + return element_list