self.parent_thread.message_fetch(this.domain, this.context, false, function (arg, data) {
self.id = false;
// insert the message on dom after this message
- self.parent_thread.switch_new_message( data, self.$el );
+ self.parent_thread.switch_new_message( data, self.$el.parent() );
self.animated_destroy(200);
});
this.$('.oe_reply').on('click', this.on_message_reply);
this.$('.oe_star').on('click', this.on_star);
this.$('.oe_msg_vote').on('click', this.on_vote);
+ this.$('.oe_mail_vote_count').on('mouseenter', this.on_hover);
this.$('.oe_mail_expand').on('click', this.on_expand);
this.$('.oe_mail_reduce').on('click', this.on_expand);
this.$('.oe_mail_action_model').on('click', this.on_record_clicked);
+ this.$('.oe_mail_action_author').on('click', this.on_record_author_clicked);
+ },
+ on_hover : function(event){
+ var self = this;
+ var voter = "";
+ var limit = 10;
+ event.stopPropagation();
+ var $target = $(event.target).hasClass("fa-thumbs-o-up") ? $(event.target).parent() : $(event.target);
+ //Note: We can set data-content attr on target element once we fetch data so that next time when one moves mouse on element it saves call
+ //But if there is new like comes then we'll not have new likes in popover in that case
+ if ($target.data('liker-list'))
+ {
+ voter = $target.data('liker-list');
+ self.bindTooltipTo($target, voter);
+ $target.tooltip('hide').tooltip('show');
+ $(".tooltip").on("mouseleave", function () {
+ $(this).remove();
+ });
+ }else{
+ this.ds_message.call('get_likers_list', [this.id, limit])
+ .done(function (data) {
+ _.each(data, function(people, index) {
+ voter = voter + people.substring(0,1).toUpperCase() + people.substring(1);
+ if(index != data.length-1) {
+ voter = voter + "<br/>";
+ }
+ });
+ $target.data('liker-list', voter);
+ self.bindTooltipTo($target, voter);
+ $target.tooltip('hide').tooltip('show');
+ $(".tooltip").on("mouseleave", function () {
+ $(this).remove();
+ });
+ });
+ }
+ return true;
+ },
+ bindTooltipTo: function($el, value) {
+ $el.tooltip({
+ 'title': value,
+ 'placement': 'top',
+ 'container': this.el,
+ 'html': true,
+ 'trigger': 'manual',
+ 'animation': false
+ }).on("mouseleave", function () {
+ setTimeout(function () {
+ if (!$(".tooltip:hover").length) {
+ $el.tooltip("hide");
+ }
+ },100);
+ });
},
-
on_record_clicked: function (event) {
+ event.preventDefault();
+ var self = this;
var state = {
'model': this.model,
'id': this.res_id,
'title': this.record_name
};
session.webclient.action_manager.do_push_state(state);
+ this.context.params = {
+ model: this.model,
+ res_id: this.res_id,
+ };
+ this.thread.ds_thread.call("message_redirect_action", {context: this.context}).then(function(action){
+ self.do_action(action);
+ });
+ },
+
+ on_record_author_clicked: function (event) {
+ event.preventDefault();
+ var partner_id = $(event.target).data('partner');
+ var state = {
+ 'model': 'res.partner',
+ 'id': partner_id,
+ 'title': this.record_name
+ };
+ session.webclient.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']],
+ res_id: partner_id,
+ }
+ this.do_action(action);
},
/* Call the on_compose_message on the thread of this message. */
on_expand: function (event) {
event.stopPropagation();
- this.$('.oe_msg_body_short:first').toggle();
- this.$('.oe_msg_body_long:first').toggle();
+ this.$('.oe_msg_body:first > .oe_msg_body_short:first').toggle();
+ this.$('.oe_msg_body:first > .oe_msg_body_long:first').toggle();
return false;
},
this.$(".oe_msg_footer:first .oe_mail_vote_count").remove();
this.$(".oe_msg_footer:first .oe_msg_vote").replaceWith(vote_element);
this.$('.oe_msg_vote').on('click', this.on_vote);
+ this.$('.oe_mail_vote_count').on('mouseenter', this.on_hover);
},
/**
* @param {Object} defaults ??
*/
load_searchview: function (defaults) {
- var self = this;
var ds_msg = new session.web.DataSetSearch(this, 'mail.message');
this.searchview = new session.web.SearchView(this, ds_msg, false, defaults || {}, false);
- this.searchview.appendTo(this.$('.oe_view_manager_view_search'))
- .then(function () { self.searchview.on('search_data', self, self.do_searchview_search); });
+ this.searchview.on('search_data', this, this.do_searchview_search);
+ this.searchview.appendTo(this.$('.oe_view_manager_view_search'),
+ this.$('.oe_searchview_drawer_container'));
if (this.searchview.has_defaults) {
this.searchview.ready.then(this.searchview.do_search);
}
}
});
-
- /**
- * ------------------------------------------------------------
- * UserMenu
- * ------------------------------------------------------------
- *
- * Add a link on the top user bar for write a full mail
- */
- session.web.ComposeMessageTopButton = session.web.Widget.extend({
- template:'mail.ComposeMessageTopButton',
-
- start: function () {
- this.$('button').on('click', this.on_compose_message );
- this._super();
- },
-
- on_compose_message: function (event) {
- event.stopPropagation();
- var action = {
- type: 'ir.actions.act_window',
- res_model: 'mail.compose.message',
- view_mode: 'form',
- view_type: 'form',
- views: [[false, 'form']],
- target: 'new',
- context: {},
- };
- session.client.action_manager.do_action(action);
- },
- });
-
- session.web.UserMenu.include({
- do_update: function(){
- var self = this;
- this._super.apply(this, arguments);
- this.update_promise.then(function() {
- var mail_button = new session.web.ComposeMessageTopButton();
- mail_button.appendTo(session.webclient.$el.find('.oe_systray'));
- });
- },
- });
-
-
/**
* ------------------------------------------------------------
* Sub-widgets loading