From 63b8797667a7f68dd28cbff2dc2860e0d2a61266 Mon Sep 17 00:00:00 2001 From: Guo Xiang Tan Date: Tue, 21 Jun 2016 17:41:53 +0800 Subject: [PATCH] FIX: Incorrect model for embedded post widget. --- .../javascripts/discourse/lib/transform-post.js.es6 | 5 ++++- app/assets/javascripts/discourse/widgets/post.js.es6 | 9 +++++++-- .../javascripts/initializers/extend-for-poll.js.es6 | 1 + 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/app/assets/javascripts/discourse/lib/transform-post.js.es6 b/app/assets/javascripts/discourse/lib/transform-post.js.es6 index 315a05f2901..77238979707 100644 --- a/app/assets/javascripts/discourse/lib/transform-post.js.es6 +++ b/app/assets/javascripts/discourse/lib/transform-post.js.es6 @@ -19,7 +19,7 @@ export function includeAttributes(...attributes) { export function transformBasicPost(post) { // Note: it can be dangerous to not use `get` in Ember code, but this is significantly // faster and has tests to confirm it works. We only call `get` when the property is a CP - return { + const postAtts = { id: post.id, hidden: post.hidden, deleted: post.get('deleted'), @@ -73,6 +73,9 @@ export function transformBasicPost(post) { replyCount: post.reply_count, }; + _additionalAttributes.forEach(a => postAtts[a] = post[a]); + + return postAtts; } diff --git a/app/assets/javascripts/discourse/widgets/post.js.es6 b/app/assets/javascripts/discourse/widgets/post.js.es6 index d51a9ac77de..01df08f0fad 100644 --- a/app/assets/javascripts/discourse/widgets/post.js.es6 +++ b/app/assets/javascripts/discourse/widgets/post.js.es6 @@ -268,7 +268,9 @@ createWidget('post-contents', { const repliesBelow = state.repliesBelow; if (repliesBelow.length) { - result.push(h('section.embedded-posts.bottom', repliesBelow.map(p => this.attach('embedded-post', p)))); + result.push(h('section.embedded-posts.bottom', repliesBelow.map(p => { + return this.attach('embedded-post', p, { model: this.store.createRecord('post', p) }); + }))); } return result; @@ -339,7 +341,10 @@ createWidget('post-article', { html(attrs, state) { const rows = [h('a.tabLoc', { attributes: { href: ''} })]; if (state.repliesAbove.length) { - const replies = state.repliesAbove.map(p => this.attach('embedded-post', p, { state: { above: true } })); + const replies = state.repliesAbove.map(p => { + return this.attach('embedded-post', p, { model: this.store.createRecord('post', p), state: { above: true } }); + }); + rows.push(h('div.row', h('section.embedded-posts.top.topic-body.offset2', replies))); } diff --git a/plugins/poll/assets/javascripts/initializers/extend-for-poll.js.es6 b/plugins/poll/assets/javascripts/initializers/extend-for-poll.js.es6 index d0993720922..d6a0bb4249b 100644 --- a/plugins/poll/assets/javascripts/initializers/extend-for-poll.js.es6 +++ b/plugins/poll/assets/javascripts/initializers/extend-for-poll.js.es6 @@ -108,6 +108,7 @@ function initializePolls(api) { _pollViews = postPollViews; } + api.includePostAttributes("polls", "polls_votes"); api.decorateCooked(createPollViews, { onlyStream: true }); api.cleanupStream(cleanUpPollViews); }