|
|
/* Copyright 2016 Antonio Espinosa - <antonio.espinosa@tecnativa.com> Copyright 2018 David Vidal - <david.vidal@tecnativa.com> License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). */
odoo.define('mail_tracking.partner_tracking', function(require){ "use strict";
var core = require('web.core'); var ActionManager = require('web.ActionManager'); var AbstractMessage = require('mail.model.AbstractMessage'); var Message = require('mail.model.Message'); var ThreadWidget = require('mail.widget.Thread');
var _t = core._t;
AbstractMessage.include({ /** * Messages do not have any PartnerTrackings. * * @return {boolean} */ hasPartnerTrackings: function () { return false; }, });
Message.include({ init: function (parent, data, emojis) { this._super.apply(this, arguments); this._partnerTrackings = data.partner_trackings || []; },
/** * State whether this message contains some PartnerTrackings values * * @override * @return {boolean} */ hasPartnerTrackings: function () { return !!(this._partnerTrackings && (this._partnerTrackings.length > 0)); },
/** * Get the PartnerTrackings values of this message * If this message has no PartnerTrackings values, returns [] * * @override * @return {Object[]} */ getPartnerTrackings: function () { if (!this.hasPartnerTrackings()) { return []; } return this._partnerTrackings; }, });
ThreadWidget.include({ events: _.extend(ThreadWidget.prototype.events, { 'click .o_mail_action_tracking_partner': 'on_tracking_partner_click', 'click .o_mail_action_tracking_status': 'on_tracking_status_click', }), on_tracking_partner_click: function (event) { var partner_id = this.$el.find(event.currentTarget).data('partner'); var state = { 'model': 'res.partner', 'id': partner_id, 'title': _t("Tracking partner"), }; event.preventDefault(); this.action_manager.do_push_state(state); var action = { type:'ir.actions.act_window', view_type: 'form', view_mode: 'form', res_model: 'res.partner', views: [[false, 'form']], target: 'current', res_id: partner_id, }; this.do_action(action); }, on_tracking_status_click: function (event) { var tracking_email_id = $(event.currentTarget).data('tracking'); var state = { 'model': 'mail.tracking.email', 'id': tracking_email_id, 'title': _t("Message tracking"), }; event.preventDefault(); this.action_manager.do_push_state(state); var action = { type:'ir.actions.act_window', view_type: 'form', view_mode: 'form', res_model: 'mail.tracking.email', views: [[false, 'form']], target: 'new', res_id: tracking_email_id, }; this.do_action(action); }, init: function (parent, options) { this._super.apply(this, arguments); this.action_manager = this.findAncestor(function(ancestor){ return ancestor instanceof ActionManager; }); }, }); });
|