[IMP] To allow to translate pages in version.
The translations of a page A in a version are applied to all the pages with the same key of page A.
This commit is contained in:
@@ -49,7 +49,7 @@
|
||||
});
|
||||
} else {
|
||||
this.translate().then(function () {
|
||||
mysuper.call(self);
|
||||
mysuper.call(self, true);
|
||||
if(self.gengo_translate){
|
||||
self.translation_gengo_display()
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user