You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

83 lines
3.1 KiB

  1. /* Copyright 2016 Antonio Espinosa - <antonio.espinosa@tecnativa.com>
  2. Copyright 2018 David Vidal - <david.vidal@tecnativa.com>
  3. License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). */
  4. odoo.define('mail_tracking.partner_tracking', function(require){
  5. "use strict";
  6. var core = require('web.core');
  7. var session = require('web.session');
  8. var data = require('web.data');
  9. var ActionManager = require('web.ActionManager');
  10. var chat_manager = require('mail.chat_manager');
  11. var ChatThread = require('mail.ChatThread');
  12. var Chatter = require('mail.Chatter');
  13. var _t = core._t;
  14. // chat_manager is a simple dictionary, not an OdooClass
  15. chat_manager._make_message_super = chat_manager.make_message;
  16. chat_manager.make_message = function(data) {
  17. var msg = this._make_message_super(data);
  18. msg.partner_trackings = data.partner_trackings || [];
  19. return msg;
  20. };
  21. ChatThread.include({
  22. events: _.extend(ChatThread.prototype.events, {
  23. 'click .o_mail_action_tracking_partner': 'on_tracking_partner_click',
  24. 'click .o_mail_action_tracking_status': 'on_tracking_status_click',
  25. }),
  26. _preprocess_message: function (message) {
  27. var msg = this._super.apply(this, arguments);
  28. msg.partner_trackings = msg.partner_trackings || [];
  29. return msg;
  30. },
  31. on_tracking_partner_click: function (event) {
  32. var partner_id = this.$el.find(event.currentTarget).data('partner');
  33. var state = {
  34. 'model': 'res.partner',
  35. 'id': partner_id,
  36. 'title': _t("Tracking partner"),
  37. };
  38. event.preventDefault();
  39. this.action_manager.do_push_state(state);
  40. var action = {
  41. type:'ir.actions.act_window',
  42. view_type: 'form',
  43. view_mode: 'form',
  44. res_model: 'res.partner',
  45. views: [[false, 'form']],
  46. target: 'current',
  47. res_id: partner_id,
  48. };
  49. this.do_action(action);
  50. },
  51. on_tracking_status_click: function (event) {
  52. var tracking_email_id = $(event.currentTarget).data('tracking');
  53. var state = {
  54. 'model': 'mail.tracking.email',
  55. 'id': tracking_email_id,
  56. 'title': _t("Message tracking"),
  57. };
  58. event.preventDefault();
  59. this.action_manager.do_push_state(state);
  60. var action = {
  61. type:'ir.actions.act_window',
  62. view_type: 'form',
  63. view_mode: 'form',
  64. res_model: 'mail.tracking.email',
  65. views: [[false, 'form']],
  66. target: 'new',
  67. res_id: tracking_email_id,
  68. };
  69. this.do_action(action);
  70. },
  71. init: function (parent, options) {
  72. this._super.apply(this, arguments);
  73. this.action_manager = this.findAncestor(function(ancestor){
  74. return ancestor instanceof ActionManager;
  75. });
  76. },
  77. });
  78. });