Esempio n. 1
0
 update_counter: function () {
     var counter = chat_manager.get_needaction_counter();
     this.$needaction_counter.text(counter);
     this.$el.toggleClass('o_no_notification', !counter);
 },
Esempio n. 2
0
 this.thread.on('redirect_to_channel', this, function (channel_id) {
     chat_manager.join_channel(channel_id).then(this.set_channel.bind(this));
 });
Esempio n. 3
0
 this.thread.on('toggle_star_status', this, function (message_id) {
     chat_manager.toggle_star_status(message_id);
 });
Esempio n. 4
0
 def.then(function () {
     chat_manager.send_native_notification('Permission granted', 'Odoo has now the permission to send you native notifications on this device.');
 });
Esempio n. 5
0
 this.$buttons.on('click', '.o_mail_chat_button_mark_read', function () {
     chat_manager.mark_all_as_read(self.channel, self.domain);
 });
Esempio n. 6
0
 "click .o_mail_chat_channel_item": function (event) {
     event.preventDefault();
     var channel_id = this.$(event.currentTarget).data('channel-id');
     this.set_channel(chat_manager.get_channel(channel_id));
 },
Esempio n. 7
0
 "click .o_mail_partner_unpin": function (event) {
     event.stopPropagation();
     var channel_id = $(event.target).data("channel-id");
     this.unsubscribe_from_channel(chat_manager.get_channel(channel_id));
 },
Esempio n. 8
0
 chat_session.window.thread.$el.on("scroll", null, _.debounce(function () {
     if (!chat_session.keep_unread && chat_session.window.thread.is_at_bottom()) {
         chat_manager.mark_channel_as_seen(session);
     }
 }, 100));
Esempio n. 9
0
 chat_session.window.$('.o_mail_thread, .o_chat_composer').one('click', function () {
     chat_manager.mark_channel_as_seen(session);
 });
Esempio n. 10
0
 source: function(request, response) {
     chat_manager.search_partner(request.term, 10).done(response);
 },
Esempio n. 11
0
 .then(function () {
     reposition_windows({remove_new_chat: remove_new_chat});
     return chat_manager.get_messages({channel_id: chat_session.id});
 }).then(function (messages) {
Esempio n. 12
0
 on_click_button_unsubscribe: function () {
     chat_manager.unsubscribe(this.channel);
 },
Esempio n. 13
0
    render_sidebar: function () {
        var self = this;
        var $sidebar = this._render_sidebar({
            active_channel_id: this.channel ? this.channel.id: undefined,
            channels: chat_manager.get_channels(),
            needaction_counter: chat_manager.get_needaction_counter(),
            starred_counter: chat_manager.get_starred_counter(),
        });
        this.$(".o_mail_chat_sidebar").html($sidebar.contents());

        this.$('.o_mail_add_channel[data-type=public]').find("input").autocomplete({
            source: function(request, response) {
                self.last_search_val = _.escape(request.term);
                self.do_search_channel(self.last_search_val).done(function(result){
                    result.push({
                        'label':  _.str.sprintf('<strong>'+_t("Create %s")+'</strong>', '<em>"#'+self.last_search_val+'"</em>'),
                        'value': '_create',
                    });
                    response(result);
                });
            },
            select: function(event, ui) {
                if (self.last_search_val) {
                    if (ui.item.value === '_create') {
                        chat_manager.create_channel(self.last_search_val, "public");
                    } else {
                        chat_manager.join_channel(ui.item.id);
                    }
                }
            },
            focus: function(event) {
                event.preventDefault();
            },
            html: true,
        });

        this.$('.o_mail_add_channel[data-type=dm]').find("input").autocomplete({
            source: function(request, response) {
                self.last_search_val = _.escape(request.term);
                chat_manager.search_partner(self.last_search_val, 10).done(response);
            },
            select: function(event, ui) {
                var partner_id = ui.item.id;
                var dm = chat_manager.get_dm_from_partner_id(partner_id);
                if (dm) {
                    self.set_channel(dm);
                } else {
                    chat_manager.create_channel(partner_id, "dm");
                }
                // clear the input
                $(this).val('');
                return false;
            },
            focus: function(event) {
                event.preventDefault();
            },
        });

        this.$('.o_mail_add_channel[data-type=private]').find("input").on('keyup', this, function (event) {
            var name = _.escape($(event.target).val());
            if(event.which === $.ui.keyCode.ENTER && name) {
                chat_manager.create_channel(name, "private");
            }
        });
    },
Esempio n. 14
0
 this.$buttons.on('click', '.o_mail_chat_button_mark_read', function () {
     chat_manager.mark_all_as_read();
 });
Esempio n. 15
0
 this.$('.o_mail_add_channel[data-type=private]').find("input").on('keyup', this, function (event) {
     var name = _.escape($(event.target).val());
     if(event.which === $.ui.keyCode.ENTER && name) {
         chat_manager.create_channel(name, "private");
     }
 });
Esempio n. 16
0
 chat_session.window.on("close_chat_session", null, function () {
     close_chat(chat_session);
     chat_manager.close_chat_session(chat_session.id);
 });
Esempio n. 17
0
 on_composer_input_focused: function () {
     var suggestions = chat_manager.get_mention_partner_suggestions(this.channel);
     var composer = this.channel.mass_mailing ? this.extended_composer : this.basic_composer;
     composer.mention_set_prefetched_partners(suggestions);
 },
Esempio n. 18
0
 chat_session.window.on("toggle_star_status", null, function (message_id) {
     chat_manager.toggle_star_status(message_id);
 });
Esempio n. 19
0
 .then(function () {
     self.trigger_up('hide_home_menu'); // we cannot 'go back to previous page' otherwise
     core.bus.trigger('change_menu_section', chat_manager.get_discuss_menu_id());
 });
Esempio n. 20
0
 chat_session.window.on("fold_channel", null, function (channel_id, folded) {
     chat_manager.fold_channel(channel_id, folded);
 });
Esempio n. 21
0
 this.clear_needactions_def.then(function (msgs_ids) {
     chat_manager.undo_mark_as_read(msgs_ids, channel);
 });
Esempio n. 22
0
 chat_session.window.on("redirect", null, function (res_model, res_id) {
     chat_manager.redirect(res_model, res_id, open_chat);
 });
Esempio n. 23
0
    start: function() {
        var self = this;

        // create searchview
        var options = {
            $buttons: $("<div>"),
            action: this.action,
            disable_groupby: true,
        };
        var dataset = new data.DataSetSearch(this, 'mail.message');
        var view_id = (this.action && this.action.search_view_id && this.action.search_view_id[0]) || false;
        var default_channel_id = this.options.active_id ||
                                 this.action.context.active_id ||
                                 this.action.params.default_active_id ||
                                 'channel_inbox';
        var default_channel = chat_manager.get_channel(default_channel_id) ||
                              chat_manager.get_channel('channel_inbox');

        this.searchview = new SearchView(this, dataset, view_id, {}, options);
        this.searchview.on('search_data', this, this.on_search);

        this.basic_composer = new composer.BasicComposer(this, {mention_partners_restricted: true});
        this.extended_composer = new composer.ExtendedComposer(this, {mention_partners_restricted: true});
        this.thread = new ChatThread(this, {
            display_help: true,
            shorten_messages: false,
        });

        this.$buttons = $(QWeb.render("mail.chat.ControlButtons", {}));
        this.$buttons.find('button').css({display:"inline-block"});
        this.$buttons.on('click', '.o_mail_chat_button_invite', this.on_click_button_invite);
        this.$buttons.on('click', '.o_mail_chat_button_unsubscribe', this.on_click_button_unsubscribe);
        this.$buttons.on('click', '.o_mail_chat_button_settings', this.on_click_button_settings);
        this.$buttons.on('click', '.o_mail_toggle_channels', function () {
            self.$('.o_mail_chat_sidebar').slideToggle(200);
        });
        this.$buttons.on('click', '.o_mail_chat_button_mark_read', function () {
            chat_manager.mark_all_as_read(self.channel, self.domain);
        });
        this.$buttons.on('click', '.o_mail_chat_button_unstar_all', chat_manager.unstar_all);
        this.$buttons.on('click', '.o_mail_chat_button_new_message', this.on_click_new_message);

        this.thread.on('redirect', this, function (res_model, res_id) {
            chat_manager.redirect(res_model, res_id, this.set_channel.bind(this));
        });
        this.thread.on('redirect_to_channel', this, function (channel_id) {
            chat_manager.join_channel(channel_id).then(this.set_channel.bind(this));
        });
        this.thread.on('load_more_messages', this, this.load_more_messages);
        this.thread.on('mark_as_read', this, function (message_id) {
            chat_manager.mark_as_read([message_id]);
        });
        this.thread.on('toggle_star_status', this, function (message_id) {
            chat_manager.toggle_star_status(message_id);
        });
        this.thread.on('select_message', this, this.select_message);
        this.thread.on('unselect_message', this, this.unselect_message);

        this.basic_composer.on('post_message', this, this.on_post_message);
        this.basic_composer.on('input_focused', this, this.on_composer_input_focused);
        this.extended_composer.on('post_message', this, this.on_post_message);
        this.extended_composer.on('input_focused', this, this.on_composer_input_focused);

        var def1 = this.thread.appendTo(this.$('.o_mail_chat_content'));
        var def2 = this.basic_composer.appendTo(this.$('.o_mail_chat_content'));
        var def3 = this.extended_composer.appendTo(this.$('.o_mail_chat_content'));
        var def4 = this.searchview.appendTo($("<div>")).then(function () {
            self.$searchview_buttons = self.searchview.$buttons.contents();
        });

        this.render_sidebar();

        return $.when(def1, def2, def3, def4)
            .then(this.set_channel.bind(this, default_channel))
            .then(function () {
                chat_manager.bus.on('open_channel', self, self.set_channel);
                chat_manager.bus.on('new_message', self, self.on_new_message);
                chat_manager.bus.on('update_message', self, self.on_update_message);
                chat_manager.bus.on('new_channel', self, self.on_new_channel);
                chat_manager.bus.on('anyone_listening', self, function (channel, query) {
                    query.is_displayed = query.is_displayed || (channel.id === self.channel.id && self.thread.is_at_bottom());
                });
                chat_manager.bus.on('unsubscribe_from_channel', self, self.render_sidebar);
                chat_manager.bus.on('update_needaction', self, self.throttled_render_sidebar);
                chat_manager.bus.on('update_channel_unread_counter', self, self.throttled_render_sidebar);
                chat_manager.bus.on('update_dm_presence', self, self.throttled_render_sidebar);
                self.thread.$el.on("scroll", null, _.debounce(function () {
                    if (self.thread.is_at_bottom()) {
                        chat_manager.mark_channel_as_seen(self.channel);
                    }
                }, 100));
            });
    },
Esempio n. 24
0
 chat_manager.join_channel(channel_id).then(function (channel) {
     chat_manager.detach_channel(channel);
 });
Esempio n. 25
0
 this.thread.on('redirect', this, function (res_model, res_id) {
     chat_manager.redirect(res_model, res_id, this.set_channel.bind(this));
 });
Esempio n. 26
0
 source: function(request, response) {
     self.last_search_val = _.escape(request.term);
     chat_manager.search_partner(self.last_search_val).done(response);
 },
Esempio n. 27
0
 this.thread.on('mark_as_read', this, function (message_id) {
     chat_manager.mark_as_read([message_id]);
 });
Esempio n. 28
0
 select: function(event, ui) {
     var partner_id = ui.item.id;
     chat_manager.create_channel(partner_id, "dm");
 },
Esempio n. 29
0
 self.thread.$el.on("scroll", null, _.debounce(function () {
     if (self.thread.is_at_bottom()) {
         chat_manager.mark_channel_as_seen(self.channel);
     }
 }, 100));
Esempio n. 30
0
 destroy: function () {
     chat_manager.remove_chatter_messages(this.model);
     this._super.apply(this, arguments);
 },