diff --git a/addons/website_blog/controllers/main.py b/addons/website_blog/controllers/main.py index a9331c5669e..12fd63f2fab 100644 --- a/addons/website_blog/controllers/main.py +++ b/addons/website_blog/controllers/main.py @@ -244,7 +244,6 @@ class WebsiteBlog(http.Controller): cr, uid, context = request.cr, request.uid, request.context blog_post = request.registry['blog.post'] partner_obj = request.registry['res.partner'] - thread_obj = request.registry['mail.thread'] if uid != request.website.user_id.id: partner_ids = [user.partner_id.id] @@ -343,6 +342,14 @@ class WebsiteBlog(http.Controller): return ids return self._get_discussion_detail(ids, publish, **post) + @http.route('/blogpost/get_discussions/', type='json', auth="public", website=True) + def discussions(self, post_id=0, paths=None, count=False, **post): + ret = [] + for path in paths: + result = self.discussion(post_id=post_id, path=path, count=count, **post) + ret.append({"path": path, "val": result}) + return ret + @http.route('/blogpost/change_background', type='json', auth="public", website=True) def change_bg(self, post_id=0, image=None, **post): if not post_id: diff --git a/addons/website_blog/static/src/js/website_blog.inline.discussion.js b/addons/website_blog/static/src/js/website_blog.inline.discussion.js index 56851c3939c..426016fc96f 100644 --- a/addons/website_blog/static/src/js/website_blog.inline.discussion.js +++ b/addons/website_blog/static/src/js/website_blog.inline.discussion.js @@ -25,9 +25,8 @@ $('
').insertAfter($('#blog_content')); } // Attach a discussion to each paragraph. - $(self.settings.content).each(function(i) { - self.discussion_handler(i, $(this)); - }); + self.discussions_handler(self.settings.content); + // Hide the discussion. $('html').click(function(event) { if($(event.target).parents('#discussions_wrapper, .main-discussion-link-wrp').length === 0) { @@ -54,14 +53,29 @@ 'count': comment_count, //if true only get length of total comment, display on discussion thread. }) }, - discussion_handler : function(i, node) { + prepare_multi_data : function(identifiers, comment_count) { var self = this; - var identifier = node.attr('data-chatter-id'); - if (identifier) { - self.prepare_data(identifier, true).then( function (data) { - self.prepare_discuss_link(data, identifier, node); + return openerp.jsonRpc("/blogpost/get_discussions/", 'call', { + 'post_id': self.settings.post_id, + 'paths': identifiers, + 'count': comment_count, //if true only get length of total comment, display on discussion thread. + }) + }, + discussions_handler: function() { + var self = this; + var node_by_id = {}; + $(self.settings.content).each(function(i) { + var node = $(this); + var identifier = node.attr('data-chatter-id'); + if (identifier) { + node_by_id[identifier] = node; + } + }); + self.prepare_multi_data(_.keys(node_by_id), true).then( function (multi_data) { + _.forEach(multi_data, function(data) { + self.prepare_discuss_link(data.val, data.path, node_by_id[data.path]); }); - } + }); }, prepare_discuss_link : function(data, identifier, node) { var self = this;