diff --git a/addons/hr_attendance/static/src/js/attendance.js b/addons/hr_attendance/static/src/js/attendance.js
index c1545d10470..c6766e99779 100644
--- a/addons/hr_attendance/static/src/js/attendance.js
+++ b/addons/hr_attendance/static/src/js/attendance.js
@@ -34,7 +34,7 @@ var AttendanceSlider = Widget.extend({
title: function() {
var last_text = formats.format_value(self.last_sign, {type: "datetime"});
var current_text = formats.format_value(new Date(), {type: "datetime"});
- var duration = self.last_sign ? $.timeago(self.last_sign) : "none";
+ var duration = self.last_sign ? moment(self.last_sign).fromNow() : "none";
if (self.get("signed_in")) {
return _.str.sprintf(_t("Last sign in: %s,
%s.
Click to sign out."), last_text, duration);
} else {
diff --git a/addons/im_livechat/views/im_livechat_channel_templates.xml b/addons/im_livechat/views/im_livechat_channel_templates.xml
index 0efd2310a14..52257ef1658 100644
--- a/addons/im_livechat/views/im_livechat_channel_templates.xml
+++ b/addons/im_livechat/views/im_livechat_channel_templates.xml
@@ -107,7 +107,6 @@
-
diff --git a/addons/web/static/lib/jquery.timeago/jquery.timeago.js b/addons/web/static/lib/jquery.timeago/jquery.timeago.js
deleted file mode 100644
index 91ba5fd7756..00000000000
--- a/addons/web/static/lib/jquery.timeago/jquery.timeago.js
+++ /dev/null
@@ -1,165 +0,0 @@
-/**
- * Timeago is a jQuery plugin that makes it easy to support automatically
- * updating fuzzy timestamps (e.g. "4 minutes ago" or "about 1 day ago").
- *
- * Please note that the library has been slightly modified for i18n's sake.
- *
- * @name timeago
- * @version 0.11.3
- * @requires jQuery v1.2.3+
- * @author Ryan McGeary
- * @license MIT License - http://www.opensource.org/licenses/mit-license.php
- *
- * For usage and examples, visit:
- * http://timeago.yarp.com/
- *
- * Copyright (c) 2008-2012, Ryan McGeary (ryan -[at]- mcgeary [*dot*] org)
- */
-(function($) {
- $.timeago = function(timestamp) {
- if (timestamp instanceof Date) {
- return inWords(timestamp);
- } else if (typeof timestamp === "string") {
- return inWords($.timeago.parse(timestamp));
- } else if (typeof timestamp === "number") {
- return inWords(new Date(timestamp));
- } else {
- return inWords($.timeago.datetime(timestamp));
- }
- };
- var $t = $.timeago;
-
- $.extend($.timeago, {
- settings: {
- refreshMillis: 60000,
- allowFuture: false,
- strings: {
- prefixAgo: null,
- prefixFromNow: null,
- suffixAgo: "ago",
- suffixFromNow: "from now",
- seconds: "less than a minute",
- minute: "about a minute",
- minutes: "%d minutes",
- hour: "about an hour",
- hours: "about %d hours",
- day: "a day",
- days: "%d days",
- month: "about a month",
- months: "%d months",
- year: "about a year",
- years: "%d years",
- wordSeparator: " ",
- numbers: []
- },
- translator: null
- },
- inWords: function(distanceMillis) {
- var $l = this.settings.strings;
- var prefix = $l.prefixAgo;
- var suffix = $l.suffixAgo;
- if (this.settings.allowFuture) {
- if (distanceMillis < 0) {
- prefix = $l.prefixFromNow;
- suffix = $l.suffixFromNow;
- }
- }
-
- var seconds = Math.abs(distanceMillis) / 1000;
- var minutes = seconds / 60;
- var hours = minutes / 60;
- var days = hours / 24;
- var years = days / 365;
-
- function convert(stringOrFunction, number) {
- var string = $.isFunction(stringOrFunction) ? stringOrFunction(number, distanceMillis) : stringOrFunction;
-
- // return the proper string and the numeric value that goes in it
- return {'string': string, 'value': ($l.numbers && $l.numbers[number]) || number};
- }
-
- var stringAndNumber = seconds < 45 && convert($l.seconds, Math.round(seconds)) ||
- seconds < 90 && convert($l.minute, 1) ||
- minutes < 45 && convert($l.minutes, Math.round(minutes)) ||
- minutes < 90 && convert($l.hour, 1) ||
- hours < 24 && convert($l.hours, Math.round(hours)) ||
- hours < 42 && convert($l.day, 1) ||
- days < 30 && convert($l.days, Math.round(days)) ||
- days < 45 && convert($l.month, 1) ||
- days < 365 && convert($l.months, Math.round(days / 30)) ||
- years < 1.5 && convert($l.year, 1) ||
- convert($l.years, Math.round(years));
-
- var string = stringAndNumber.string;
- var value = stringAndNumber.value;
- var separator = $l.wordSeparator === undefined ? " " : $l.wordSeparator;
-
- // compose and translate the final string
- var fullString = $.trim([prefix, string, suffix].join(separator));
- var translatedString = $t.settings.translator ?
- $t.settings.translator(fullString) :
- fullString;
-
- return translatedString.replace(/%d/i, value);
- },
- parse: function(iso8601) {
- var s = $.trim(iso8601);
- s = s.replace(/\.\d\d\d+/,""); // remove milliseconds
- s = s.replace(/-/,"/").replace(/-/,"/");
- s = s.replace(/T/," ").replace(/Z/," UTC");
- s = s.replace(/([\+\-]\d\d)\:?(\d\d)/," $1$2"); // -04:00 -> -0400
- return new Date(s);
- },
- datetime: function(elem) {
- var iso8601 = $t.isTime(elem) ? $(elem).attr("datetime") : $(elem).attr("title");
- return $t.parse(iso8601);
- },
- isTime: function(elem) {
- // jQuery's `is()` doesn't play well with HTML5 in IE
- return $(elem).get(0).tagName.toLowerCase() === "time"; // $(elem).is("time");
- }
- });
-
- $.fn.timeago = function() {
- var self = this;
- self.each(refresh);
-
- var $s = $t.settings;
- if ($s.refreshMillis > 0) {
- setInterval(function() { self.each(refresh); }, $s.refreshMillis);
- }
- return self;
- };
-
- function refresh() {
- var data = prepareData(this);
- if (!isNaN(data.datetime)) {
- $(this).text(inWords(data.datetime));
- }
- return this;
- }
-
- function prepareData(element) {
- element = $(element);
- if (!element.data("timeago")) {
- element.data("timeago", { datetime: $t.datetime(element) });
- var text = $.trim(element.text());
- if (text.length > 0 && !($t.isTime(element) && element.attr("title"))) {
- element.attr("title", text);
- }
- }
- return element.data("timeago");
- }
-
- function inWords(date) {
- return $t.inWords(distance(date));
- }
-
- function distance(date) {
- return (new Date().getTime() - date.getTime());
- }
-
- // fix for IE6 suckage
- document.createElement("abbr");
- document.createElement("time");
-}(jQuery));
diff --git a/addons/web/static/src/js/framework/translation.js b/addons/web/static/src/js/framework/translation.js
index 47673756e81..69743e9787d 100644
--- a/addons/web/static/src/js/framework/translation.js
+++ b/addons/web/static/src/js/framework/translation.js
@@ -80,11 +80,6 @@ var _lt = function (s) {
return {toString: function () { return _t(s); }};
};
-// provide timeago.js with our own translator method
-if($.timeago){ // make timeago an optional dependency of translation
- $.timeago.settings.translator = _t;
-}
-
qweb.default_dict = {
'_' : _,
'JSON': JSON,
diff --git a/addons/web/views/webclient_templates.xml b/addons/web/views/webclient_templates.xml
index 2813acd5933..294f546db8e 100644
--- a/addons/web/views/webclient_templates.xml
+++ b/addons/web/views/webclient_templates.xml
@@ -16,7 +16,6 @@
-
diff --git a/addons/website_slides/static/src/js/slides.js b/addons/website_slides/static/src/js/slides.js
index 71d20378044..f351cc0eb66 100644
--- a/addons/website_slides/static/src/js/slides.js
+++ b/addons/website_slides/static/src/js/slides.js
@@ -24,7 +24,7 @@ $(document).ready(function () {
if (datetime_obj && new Date().getTime() - datetime_obj.getTime() > 7 * 24 * 60 * 60 * 1000) {
display_str = datetime_obj.toDateString();
} else {
- display_str = $.timeago(datetime_obj);
+ display_str = moment(datetime_obj).fromNow();
}
$(el).text(display_str);
});