summaryrefslogtreecommitdiff
path: root/addons/website_mail_channel/static/src/js/website_mail_channel.js
blob: 30928d781dc1c0983b1e44e1cbe07aa9396d2b7b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
odoo.define('website_mail_channel', function (require) {
'use strict';

var publicWidget = require('web.public.widget');

publicWidget.registry.websiteMailChannel = publicWidget.Widget.extend({
    selector: '#wrapwrap',
    events: {
        'click .o_mg_link_hide': '_onHideLinkClick',
        'click .o_mg_link_show': '_onShowLinkClick',
        'click button.o_mg_read_more': '_onReadMoreClick',
    },

    //--------------------------------------------------------------------------
    // Handlers
    //--------------------------------------------------------------------------

    /**
     * @private
     * @param {Event} ev
     */
    _onHideLinkClick: function (ev) {
        ev.preventDefault();
        ev.stopPropagation();
        var $link = $(ev.currentTarget);
        var $container = $link.parents('div').first();
        $container.find('.o_mg_link_hide').first().hide();
        $container.find('.o_mg_link_show').first().show();
        $container.find('.o_mg_link_content').first().show();
    },
    /**
     * @private
     * @param {Event} ev
     */
    _onShowLinkClick: function (ev) {
        ev.preventDefault();
        ev.stopPropagation();
        var $link = $(ev.currentTarget);
        var $container = $link.parents('div').first();
        $container.find('.o_mg_link_hide').first().show();
        $container.find('.o_mg_link_show').first().hide();
        $container.find('.o_mg_link_content').first().hide();
    },
    /**
     * @private
     * @param {Event} ev
     */
     _onReadMoreClick: function (ev) {
        var $link = $(ev.target);
        this._rpc({
            route: $link.data('href'),
            params: {
                last_displayed_id: $link.data('msg-id'),
            },
        }).then(function (data) {
            if (!data) {
                return;
            }
            var $threadContainer = $link.parents('.o_mg_replies').first().find('ul.list-unstyled');
            if ($threadContainer) {
                var $lastMsg = $threadContainer.find('li.media').last();
                $(data).find('li.media').insertAfter($lastMsg);
                $(data).find('.o_mg_read_more').parent().appendTo($threadContainer);
            }
            var $showMore = $link.parent();
            $showMore.remove();
            return;
        });
     },
});
});