diff options
Diffstat (limited to 'addons/portal/static/src/js/portal_sidebar.js')
| -rw-r--r-- | addons/portal/static/src/js/portal_sidebar.js | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/addons/portal/static/src/js/portal_sidebar.js b/addons/portal/static/src/js/portal_sidebar.js new file mode 100644 index 00000000..d081ddec --- /dev/null +++ b/addons/portal/static/src/js/portal_sidebar.js @@ -0,0 +1,75 @@ +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 : <span class="o_portal_sidebar_timeago" t-att-datetime="invoice.date_due"/> + * + * @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 = $('<iframe id="print_iframe_content" src="' + href + '" style="display:none"></iframe>'); + this.$el.append(this.printContent); + this.printContent.on('load', function () { + $(this).get(0).contentWindow.print(); + }); + } else { + this.printContent.get(0).contentWindow.print(); + } + }, +}); +return PortalSidebar; +}); |
