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; });