FIX: support quotes for poll parameters

This commit is contained in:
Régis Hanol 2015-05-07 16:40:14 +02:00
parent 78cff468bc
commit 9b0ca60f52
2 changed files with 6 additions and 5 deletions

View File

@ -8,7 +8,7 @@
const WHITELISTED_ATTRIBUTES = ["type", "name", "min", "max", "step", "order", "color", "background", "status"]; const WHITELISTED_ATTRIBUTES = ["type", "name", "min", "max", "step", "order", "color", "background", "status"];
const WHITELISTED_STYLES = ["color", "background"]; const WHITELISTED_STYLES = ["color", "background"];
const ATTRIBUTES_REGEX = new RegExp("(" + WHITELISTED_ATTRIBUTES.join("|") + ")=[^\\s\\]]+", "g"); const ATTRIBUTES_REGEX = new RegExp("(" + WHITELISTED_ATTRIBUTES.join("|") + ")=['\"]?[^\\s\\]]+['\"]?", "g");
Discourse.Dialect.replaceBlock({ Discourse.Dialect.replaceBlock({
start: /\[poll([^\]]*)\]([\s\S]*)/igm, start: /\[poll([^\]]*)\]([\s\S]*)/igm,
@ -44,8 +44,9 @@
// extract poll attributes // extract poll attributes
(matches[1].match(ATTRIBUTES_REGEX) || []).forEach(function(m) { (matches[1].match(ATTRIBUTES_REGEX) || []).forEach(function(m) {
var attr = m.split("="); var attr = m.split("="), name = attr[0], value = attr[1];
attributes[DATA_PREFIX + attr[0]] = attr[1]; value = value.replace(/["']/g, "");
attributes[DATA_PREFIX + name] = value;
}); });
// we might need these values later... // we might need these values later...

View File

@ -112,14 +112,14 @@ describe PostsController do
describe "named polls" do describe "named polls" do
it "should have different options" do it "should have different options" do
xhr :post, :create, { title: title, raw: "[poll name=foo]\n- A\n- A[/poll]" } xhr :post, :create, { title: title, raw: "[poll name=""foo""]\n- A\n- A[/poll]" }
expect(response).not_to be_success expect(response).not_to be_success
json = ::JSON.parse(response.body) json = ::JSON.parse(response.body)
expect(json["errors"][0]).to eq(I18n.t("poll.named_poll_must_have_different_options", name: "foo")) expect(json["errors"][0]).to eq(I18n.t("poll.named_poll_must_have_different_options", name: "foo"))
end end
it "should have at least 2 options" do it "should have at least 2 options" do
xhr :post, :create, { title: title, raw: "[poll name=foo]\n- A[/poll]" } xhr :post, :create, { title: title, raw: "[poll name='foo']\n- A[/poll]" }
expect(response).not_to be_success expect(response).not_to be_success
json = ::JSON.parse(response.body) json = ::JSON.parse(response.body)
expect(json["errors"][0]).to eq(I18n.t("poll.named_poll_must_have_at_least_2_options", name: "foo")) expect(json["errors"][0]).to eq(I18n.t("poll.named_poll_must_have_at_least_2_options", name: "foo"))