Render inline code in card titles (#2518)
* Remove unused marked JS dependency * Remove unused redcarpet dependency * Render inline code in card titles Add card_html_title helper that HTML-escapes input then converts backtick-wrapped text to <code> elements. Apply to card titles in board preview, card detail, public views, and notification emails. Style inline code elements in titles to match description styling. Co-authored-by: Andy Smith <andy@37signals.com> --------- Co-authored-by: Andy Smith <andy@37signals.com>
This commit is contained in:
@@ -119,4 +119,29 @@ class HtmlHelperTest < ActionView::TestCase
|
||||
assert_no_match(/<img/, output, "should not create an img element")
|
||||
assert_includes output, "<img"
|
||||
end
|
||||
|
||||
test "card_html_title renders backticks as code elements" do
|
||||
assert_equal "Fix the <code>bug</code> in production", card_html_title(cards(:logo).tap { _1.title = "Fix the `bug` in production" })
|
||||
end
|
||||
|
||||
test "card_html_title renders multiple code spans" do
|
||||
assert_equal "<code>foo</code> and <code>bar</code>", card_html_title(cards(:logo).tap { _1.title = "`foo` and `bar`" })
|
||||
end
|
||||
|
||||
test "card_html_title renders code spans without surrounding spaces" do
|
||||
assert_equal "what<code>about</code>this", card_html_title(cards(:logo).tap { _1.title = "what`about`this" })
|
||||
end
|
||||
|
||||
test "card_html_title escapes HTML tags" do
|
||||
assert_equal "<script>alert(1)</script>", card_html_title(cards(:logo).tap { _1.title = "<script>alert(1)</script>" })
|
||||
end
|
||||
|
||||
test "card_html_title escapes HTML inside backticks" do
|
||||
assert_equal "<code><script></code>", card_html_title(cards(:logo).tap { _1.title = "`<script>`" })
|
||||
end
|
||||
|
||||
test "card_html_title returns blank title as-is" do
|
||||
assert_nil card_html_title(cards(:logo).tap { _1.title = nil })
|
||||
assert_equal "", card_html_title(cards(:logo).tap { _1.title = "" })
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user