diff --git a/app/assets/javascripts/discourse/widgets/post-cooked.js.es6 b/app/assets/javascripts/discourse/widgets/post-cooked.js.es6 index d434012b4b..3d55314f08 100644 --- a/app/assets/javascripts/discourse/widgets/post-cooked.js.es6 +++ b/app/assets/javascripts/discourse/widgets/post-cooked.js.es6 @@ -165,7 +165,13 @@ export default class PostCooked { ajax(`/posts/by_number/${topicId}/${postId}`) .then(result => { + const post = this.decoratorHelper.getModel(); + const quotedPosts = post.quoted || {}; + quotedPosts[result.id] = result; + post.set("quoted", quotedPosts); + const div = $("
"); + div.data("post-id", result.id); div.html(result.cooked); _decorators.forEach(cb => cb(div, this.decoratorHelper)); 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 eec0662153..826c85e9a8 100644 --- a/plugins/poll/assets/javascripts/initializers/extend-for-poll.js.es6 +++ b/plugins/poll/assets/javascripts/initializers/extend-for-poll.js.es6 @@ -55,37 +55,44 @@ function initializePolls(api) { function attachPolls($elem, helper) { const $polls = $(".poll", $elem); - if (!$polls.length) { + if (!$polls.length || !helper) { return; } - if (!helper) { - return; - } - - const post = helper.getModel(); + let post = helper.getModel(); api.preventCloak(post.id); - const votes = post.get("polls_votes") || {}; - post.pollsChanged(); - const polls = post.get("pollsObject"); - if (!polls) { - return; - } + const polls = post.pollsObject || {}; + const votes = post.polls_votes || {}; _interval = _interval || setInterval(rerender, 30000); $polls.each((idx, pollElem) => { const $poll = $(pollElem); const pollName = $poll.data("poll-name"); - const poll = polls[pollName]; + let poll = polls[pollName]; + let vote = votes[pollName] || []; + + const quotedId = $poll.parent(".expanded-quote").data("post-id"); + if (quotedId) { + const quotedPost = post.quoted[quotedId]; + if (quotedPost) { + post = Ember.Object.create(quotedPost); + poll = Ember.Object.create( + quotedPost.polls.find(p => p.name === pollName) + ); + vote = quotedPost.polls_votes || {}; + vote = vote[pollName] || []; + } + } + if (poll) { const glue = new WidgetGlue("discourse-poll", register, { id: `${pollName}-${post.id}`, post, poll, - vote: votes[pollName] || [] + vote }); glue.appendTo(pollElem); _glued.push(glue);