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.

85 lines
2.7 KiB

  1. odoo.define('mail_archives.archives', function (require) {
  2. "use strict";
  3. var base_obj = require('mail_base.base');
  4. //-------------------------------------------------------------------------------
  5. var bus = require('bus.bus').bus;
  6. var config = require('web.config');
  7. var core = require('web.core');
  8. var data = require('web.data');
  9. var Model = require('web.Model');
  10. var session = require('web.session');
  11. var time = require('web.time');
  12. var web_client = require('web.web_client');
  13. var _lt = core._lt;
  14. //-------------------------------------------------------------------------------
  15. var ChatAction = core.action_registry.get('mail.chat.instant_messaging');
  16. ChatAction.include({
  17. init: function(parent, action, options) {
  18. this._super.apply(this, arguments);
  19. var channel_name = 'channel_archive';
  20. // Add channel Archive for enable "display_subject" option
  21. this.channels_display_subject.push(channel_name);
  22. },
  23. update_message_on_current_channel: function(current_channel_id, message){
  24. var result = this._super.apply(this, arguments);
  25. var archive = current_channel_id === "channel_archive" && !message.is_archive;
  26. return archive || result;
  27. }
  28. });
  29. // Inherit class and override methods
  30. base_obj.MailTools.include({
  31. get_properties: function(msg){
  32. var properties = this._super.apply(this, arguments);
  33. properties.is_archive = this.property_descr("channel_archive", msg, this);
  34. return properties;
  35. },
  36. set_channel_flags: function(data, msg){
  37. this._super.apply(this, arguments);
  38. // Get recipients ids
  39. var recipients_ids = [];
  40. for (var i = 0; i < data.partner_ids.length; i++){
  41. recipients_ids.push(data.partner_ids[i][0]);
  42. }
  43. // If author or recipient
  44. if (data.author_id[0] == session.partner_id || recipients_ids.indexOf(session.partner_id) != -1) {
  45. msg.is_archive = true;
  46. }
  47. return msg;
  48. },
  49. get_channel_array: function(msg){
  50. var arr = this._super.apply(this, arguments);
  51. return arr.concat('channel_archive');
  52. },
  53. get_domain: function(channel){
  54. return (channel.id === "channel_archive") ? [
  55. '|', ['partner_ids', 'in', [openerp.session.partner_id]],
  56. ['author_id.user_ids', 'in', [openerp.session.uid]]
  57. ] : this._super.apply(this, arguments);
  58. }
  59. });
  60. base_obj.chat_manager.is_ready.then(function(){
  61. // Add archive channel
  62. base_obj.chat_manager.mail_tools.add_channel({
  63. id: "channel_archive",
  64. name: _lt("Archive"),
  65. type: "static"
  66. });
  67. return $.when();
  68. });
  69. return base_obj.chat_manager;
  70. });