From ef8cd11a6be25cbb5288e8ab88b4aafa2fa0119c Mon Sep 17 00:00:00 2001 From: Nicolas Lempereur Date: Mon, 15 Jan 2018 16:24:52 +0100 Subject: [PATCH] [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 --- addons/website/static/src/js/website.js | 3 +- addons/website_slides/static/src/js/slides.js | 28 ++++++++++--------- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/addons/website/static/src/js/website.js b/addons/website/static/src/js/website.js index 3c063ba60dc..d9d3943dcc1 100644 --- a/addons/website/static/src/js/website.js +++ b/addons/website/static/src/js/website.js @@ -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; }); diff --git a/addons/website_slides/static/src/js/slides.js b/addons/website_slides/static/src/js/slides.js index c4df6643f99..93ff942ab83 100644 --- a/addons/website_slides/static/src/js/slides.js +++ b/addons/website_slides/static/src/js/slides.js @@ -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.