odoo.define('portal.PortalSidebar', function (require) {
'use strict';
var core = require('web.core');
var publicWidget = require('web.public.widget');
var time = require('web.time');
var session = require('web.session');
var _t = core._t;
var PortalSidebar = publicWidget.Widget.extend({
/**
* @override
*/
start: function () {
this._setDelayLabel();
return this._super.apply(this, arguments);
},
//--------------------------------------------------------------------------
// Private
//---------------------------------------------------------------------------
/**
* Set the due/delay information according to the given date
* like :
*
* @private
*/
_setDelayLabel: function () {
var $sidebarTimeago = this.$el.find('.o_portal_sidebar_timeago');
_.each($sidebarTimeago, function (el) {
var dateTime = moment(time.auto_str_to_date($(el).attr('datetime'))),
today = moment().startOf('day'),
diff = dateTime.diff(today, 'days', true),
displayStr;
session.is_bound.then(function (){
if (diff === 0) {
displayStr = _t('Due today');
} else if (diff > 0) {
// Workaround: force uniqueness of these two translations. We use %1d because the string
// with %d is already used in mail and mail's translations are not sent to the frontend.
displayStr = _.str.sprintf(_t('Due in %1d days'), Math.abs(diff));
} else {
displayStr = _.str.sprintf(_t('%1d days overdue'), Math.abs(diff));
}
$(el).text(displayStr);
});
});
},
/**
* @private
* @param {string} href
*/
_printIframeContent: function (href) {
// due to this issue : https://bugzilla.mozilla.org/show_bug.cgi?id=911444
// open a new window with pdf for print in Firefox (in other system: http://printjs.crabbly.com)
if ($.browser.mozilla) {
window.open(href, '_blank');
return;
}
if (!this.printContent) {
this.printContent = $('');
this.$el.append(this.printContent);
this.printContent.on('load', function () {
$(this).get(0).contentWindow.print();
});
} else {
this.printContent.get(0).contentWindow.print();
}
},
});
return PortalSidebar;
});