mirror of https://github.com/OCA/social.git
158 lines
4.8 KiB
JavaScript
158 lines
4.8 KiB
JavaScript
/* 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;
|
|
},
|
|
|
|
/**
|
|
* Messages do not have any email Cc values.
|
|
*
|
|
* @return {boolean}
|
|
*/
|
|
hasEmailCc: function () {
|
|
return false;
|
|
},
|
|
});
|
|
|
|
Message.include({
|
|
init: function (parent, data, emojis) {
|
|
this._super.apply(this, arguments);
|
|
this._partnerTrackings = data.partner_trackings || [];
|
|
this._emailCc = data.email_cc || [];
|
|
},
|
|
|
|
/**
|
|
* State whether this message contains some PartnerTrackings values
|
|
*
|
|
* @override
|
|
* @return {boolean}
|
|
*/
|
|
hasPartnerTrackings: function () {
|
|
return _.some(this._partnerTrackings);
|
|
},
|
|
|
|
/**
|
|
* State whether this message contains some email Cc values
|
|
*
|
|
* @return {boolean}
|
|
*/
|
|
hasEmailCc: function () {
|
|
return _.some(this._emailCc);
|
|
},
|
|
|
|
/**
|
|
* 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;
|
|
},
|
|
|
|
/**
|
|
* Get the email Cc values of this message
|
|
* If this message has no email Cc values, returns []
|
|
*
|
|
* @return {Array}
|
|
*/
|
|
getEmailCc: function () {
|
|
if (!this.hasEmailCc()) {
|
|
return [];
|
|
}
|
|
return this._emailCc;
|
|
},
|
|
|
|
/**
|
|
* Check if the email is an Cc
|
|
* If this message has no email Cc values, returns false
|
|
*
|
|
* @return {Boolean}
|
|
*/
|
|
isEmailCc: function (email) {
|
|
if (!this.hasEmailCc()) {
|
|
return false;
|
|
}
|
|
return _.some(this._emailCc, function (item) {
|
|
return item[0] === email;
|
|
});
|
|
},
|
|
});
|
|
|
|
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;
|
|
});
|
|
},
|
|
});
|
|
});
|