mirror of
https://github.com/discourse/discourse.git
synced 2025-02-16 18:24:52 -06:00
FIX: don't validate and render the polls inside a quoted post. (#15019)
Previously, we had issues while approving posts since we validated the polls inside quotes.
This commit is contained in:
parent
10a4bbfa72
commit
461936f211
@ -71,7 +71,10 @@ function initializePolls(api) {
|
||||
});
|
||||
|
||||
function attachPolls(elem, helper) {
|
||||
const pollNodes = elem.querySelectorAll(".poll");
|
||||
let pollNodes = [...elem.querySelectorAll(".poll")];
|
||||
pollNodes = pollNodes.filter(
|
||||
(node) => node.parentNode.tagName !== "BLOCKQUOTE"
|
||||
);
|
||||
if (!pollNodes.length || !helper) {
|
||||
return;
|
||||
}
|
||||
|
@ -286,6 +286,7 @@ class DiscoursePoll::Poll
|
||||
def self.extract(raw, topic_id, user_id = nil)
|
||||
# TODO: we should fix the callback mess so that the cooked version is available
|
||||
# in the validators instead of cooking twice
|
||||
raw = raw.sub(/\[quote.+\/quote\]/m, '')
|
||||
cooked = PrettyText.cook(raw, topic_id: topic_id, user_id: user_id)
|
||||
|
||||
Nokogiri::HTML5(cooked).css("div.poll").map do |p|
|
||||
|
@ -211,4 +211,37 @@ describe DiscoursePoll::Poll do
|
||||
expect(messages.count).to eq(0)
|
||||
end
|
||||
end
|
||||
|
||||
describe '.extract' do
|
||||
it "skips the polls inside quote" do
|
||||
raw = <<~RAW
|
||||
[quote="username, post:1, topic:2"]
|
||||
[poll type=regular result=always]
|
||||
* 1
|
||||
* 2
|
||||
[/poll]
|
||||
[/quote]
|
||||
|
||||
[poll type=regular result=always]
|
||||
* 3
|
||||
* 4
|
||||
[/poll]
|
||||
|
||||
Post with a poll and a quoted poll.
|
||||
RAW
|
||||
|
||||
expect(DiscoursePoll::Poll.extract(raw, 2)).to contain_exactly({
|
||||
"name" => "poll",
|
||||
"options" => [{
|
||||
"html" => "3",
|
||||
"id" => "68b434ff88aeae7054e42cd05a4d9056"
|
||||
}, {
|
||||
"html" => "4",
|
||||
"id" => "aa2393b424f2f395abb63bf785760a3b"
|
||||
}],
|
||||
"status" => "open",
|
||||
"type" => "regular"
|
||||
})
|
||||
end
|
||||
end
|
||||
end
|
||||
|
Loading…
Reference in New Issue
Block a user