[FIX] website: translations for qweb templates not applied.
-Website.tours must be loaded after the translation data: "website.ready" before the tour ensure that the translations are loaded. -Translations for qweb templates not applied: Translate all text nodes in qweb templates when translation data are loaded. -Add some translations in website tours. opw:619786
This commit is contained in:
parent
47ca07ba19
commit
092c64b76f
|
@ -14,6 +14,7 @@ import werkzeug.wrappers
|
|||
from PIL import Image
|
||||
|
||||
import openerp
|
||||
from openerp.addons.web.controllers.main import WebClient
|
||||
from openerp.addons.web import http
|
||||
from openerp.http import request, STATIC_CACHE
|
||||
from openerp.tools import image_save_for_web
|
||||
|
@ -276,6 +277,13 @@ class Website(openerp.addons.web.controllers.main.Home):
|
|||
irt.create(request.cr, request.uid, new_trans)
|
||||
return True
|
||||
|
||||
@http.route('/website/translations', type='json', auth="public", website=True)
|
||||
def get_website_translations(self, lang):
|
||||
module_obj = request.registry['ir.module.module']
|
||||
module_ids = module_obj.search(request.cr, request.uid, [('name', 'ilike', 'website'), ('state', '=', 'installed')], context=request.context)
|
||||
modules = [x['name'] for x in module_obj.read(request.cr, request.uid, module_ids, ['name'], context=request.context)]
|
||||
return WebClient().translations(mods=modules, lang=lang)
|
||||
|
||||
@http.route('/website/attach', type='http', auth='user', methods=['POST'], website=True)
|
||||
def attach(self, func, upload=None, url=None, disable_optimization=None):
|
||||
Attachments = request.registry['ir.attachment']
|
||||
|
|
|
@ -304,14 +304,32 @@
|
|||
if ($('html').data('website-id')) {
|
||||
website.id = $('html').data('website-id');
|
||||
website.session = new openerp.Session();
|
||||
var modules = ['website'];
|
||||
return openerp._t.database.load_translations(website.session, modules, website.get_context().lang);
|
||||
return openerp.jsonRpc('/website/translations', 'call', {'lang': website.get_context().lang})
|
||||
.then(function(trans) {
|
||||
openerp._t.database.set_bundle(trans);});
|
||||
}
|
||||
}).then(function () {
|
||||
var templates = openerp.qweb.templates;
|
||||
var keys = _.keys(templates);
|
||||
for (var i = 0; i < keys.length; i++){
|
||||
treat_node(templates[keys[i]]);
|
||||
}
|
||||
}).promise();
|
||||
}
|
||||
return all_ready;
|
||||
};
|
||||
|
||||
function treat_node(node){
|
||||
if(node.nodeType === 3) {
|
||||
if(node.nodeValue.match(/\S/)){
|
||||
node.nodeValue = openerp._t($.trim(node.nodeValue));
|
||||
}
|
||||
}
|
||||
else if(node.nodeType === 1 && node.hasChildNodes()) {
|
||||
_.each(node.childNodes, function(subnode) {treat_node(subnode);});
|
||||
}
|
||||
};
|
||||
|
||||
website.inject_tour = function() {
|
||||
// if a tour is active inject tour js
|
||||
};
|
||||
|
|
|
@ -2,7 +2,8 @@
|
|||
'use strict';
|
||||
|
||||
var _t = openerp._t;
|
||||
|
||||
var website = openerp.website;
|
||||
website.ready().done(function() {
|
||||
openerp.Tour.register({
|
||||
id: 'banner',
|
||||
name: _t("Build a page"),
|
||||
|
@ -114,5 +115,6 @@
|
|||
},
|
||||
]
|
||||
});
|
||||
});
|
||||
|
||||
}());
|
||||
|
|
|
@ -18,7 +18,6 @@
|
|||
return this._super.apply(this, arguments).then(function () {
|
||||
var $edit_button = $("button[data-action=edit]");
|
||||
$edit_button.removeClass("hidden");
|
||||
$edit_button.text("Translate");
|
||||
|
||||
if(website.no_editor) {
|
||||
$edit_button.removeProp('disabled');
|
||||
|
|
|
@ -2,7 +2,8 @@
|
|||
'use strict';
|
||||
|
||||
var _t = openerp._t;
|
||||
|
||||
var website = openerp.website;
|
||||
website.ready().done(function() {
|
||||
openerp.Tour.register({
|
||||
id: 'blog',
|
||||
name: _t("Create a blog post"),
|
||||
|
@ -103,5 +104,6 @@
|
|||
},
|
||||
]
|
||||
});
|
||||
});
|
||||
|
||||
}());
|
||||
|
|
|
@ -2,7 +2,8 @@
|
|||
'use strict';
|
||||
|
||||
var _t = openerp._t;
|
||||
|
||||
var website = openerp.website;
|
||||
website.ready().done(function() {
|
||||
openerp.Tour.register({
|
||||
id: 'event',
|
||||
name: _t("Create an event"),
|
||||
|
@ -101,5 +102,6 @@
|
|||
},
|
||||
]
|
||||
});
|
||||
});
|
||||
|
||||
}());
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
(function () {
|
||||
'use strict';
|
||||
|
||||
var website = openerp.website;
|
||||
website.ready().done(function() {
|
||||
openerp.Tour.register({
|
||||
id: 'event_buy_tickets',
|
||||
name: "Try to buy tickets for event",
|
||||
|
@ -72,5 +73,6 @@
|
|||
}
|
||||
]
|
||||
});
|
||||
});
|
||||
|
||||
}());
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
(function () {
|
||||
'use strict';
|
||||
|
||||
openerp.Tour.register({
|
||||
id: 'shop_buy_product',
|
||||
name: "Try to buy products",
|
||||
|
|
|
@ -2,7 +2,8 @@
|
|||
'use strict';
|
||||
|
||||
var _t = openerp._t;
|
||||
|
||||
var website = openerp.website;
|
||||
website.ready().done(function() {
|
||||
openerp.Tour.register({
|
||||
id: 'shop',
|
||||
name: _t("Create a product"),
|
||||
|
@ -111,5 +112,6 @@
|
|||
},
|
||||
]
|
||||
});
|
||||
});
|
||||
|
||||
}());
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
(function () {
|
||||
'use strict';
|
||||
|
||||
var _t = openerp._t;
|
||||
var steps = openerp.Tour.tours.shop_buy_product.steps;
|
||||
for (var k=0; k<steps.length; k++) {
|
||||
if (steps[k].title === "click on add to cart") {
|
||||
steps.splice(k+1, 0, {
|
||||
title: "click in modal on 'Proceed to checkout' button",
|
||||
title: _t("click in modal on 'Proceed to checkout' button"),
|
||||
element: '.modal a:contains("Proceed to checkout")',
|
||||
});
|
||||
break;
|
||||
|
|
Loading…
Reference in New Issue