[FIX] website{,_slides}: display date in locale

In 10.0 since 52f268d0 some parts such as the date/datetime widget are
adapted to the current locale and not just displayed in english.

But the dates in the slides module are always in english because they
don't wait for the locale to be loaded.

To wait for the locale, this commit also adds a reference localeDef on
the website.website module.

note: this fix is only for [10.0,11.0[, another fix must be done in 11.0

opw-804555
closes #22241
This commit is contained in:
Nicolas Lempereur
2018-01-15 16:31:19 +01:00
parent 5a83c9143d
commit ef8cd11a6b
2 changed files with 17 additions and 14 deletions
+2 -1
View File
@@ -241,7 +241,7 @@ odoo.define('website.website', function (require) {
/* Load localizations */
var lang = utils.get_cookie('website_lang') || $('html').attr('lang') || 'en_US';
ajax.loadJS('/web/webclient/locale/' + lang.replace('-', '_'));
var localeDef = ajax.loadJS('/web/webclient/locale/' + lang.replace('-', '_'));
/**
* Object who contains all method and bind for the top bar, the template is create server side.
@@ -291,6 +291,7 @@ odoo.define('website.website', function (require) {
console.warn("website.ready is deprecated: Please use require('web_editor.base').ready()");
return base.ready();
},
localeDef: localeDef,
};
return data;
});
+15 -13
View File
@@ -7,6 +7,7 @@ var core = require('web.core');
var time = require('web.time');
var Widget = require('web.Widget');
var local_storage = require('web.local_storage');
var website = require('website.website');
var _t = core._t;
var page_widgets = {};
@@ -15,19 +16,20 @@ $(document).ready(function () {
var widget_parent = $('body');
$("timeago.timeago").each(function (index, el) {
var datetime = $(el).attr('datetime'),
datetime_obj = time.str_to_datetime(datetime),
// if presentation 7 days, 24 hours, 60 min, 60 second, 1000 millis old(one week)
// then return fix formate string else timeago
display_str = "";
if (datetime_obj && new Date().getTime() - datetime_obj.getTime() > 7 * 24 * 60 * 60 * 1000) {
display_str = datetime_obj.toDateString();
} else {
display_str = moment(datetime_obj).fromNow();
}
$(el).text(display_str);
website.localeDef.then(function () {
$("timeago.timeago").each(function (index, el) {
var datetime = $(el).attr('datetime'),
datetime_obj = time.str_to_datetime(datetime),
// if presentation 7 days, 24 hours, 60 min, 60 second, 1000 millis old(one week)
// then return fix formate string else timeago
display_str = "";
if (datetime_obj && new Date().getTime() - datetime_obj.getTime() > 7 * 24 * 60 * 60 * 1000) {
display_str = moment(datetime_obj).format('ll');
} else {
display_str = moment(datetime_obj).fromNow();
}
$(el).text(display_str);
});
});
// To prevent showing channel settings alert box once user closed it.