mirror of
https://github.com/discourse/discourse.git
synced 2025-01-19 09:52:46 +08:00
DEV: cook grid bbcode in chat (#29658)
This change will only prevent a cooked message with [grid] to show [grid] instead the content will be wrapped in `div class="d-image-grid"`. This is only enabled on messages made by bot, as regular users could use grid but have no reason to use it ATM. It will also not apply the decoration which shouldn't change the behavior more than just remove grid markup from the message
This commit is contained in:
parent
af642d0d69
commit
032b1f871b
|
@ -223,8 +223,13 @@ module Chat
|
|||
]
|
||||
|
||||
def self.cook(message, opts = {})
|
||||
bot = opts[:user_id] && opts[:user_id].negative?
|
||||
|
||||
features = MARKDOWN_FEATURES.dup
|
||||
features << "image-grid" if bot
|
||||
|
||||
rules = MARKDOWN_IT_RULES.dup
|
||||
rules << "heading" if opts[:user_id] && opts[:user_id].negative?
|
||||
rules << "heading" if bot
|
||||
|
||||
# A rule in our Markdown pipeline may have Guardian checks that require a
|
||||
# user to be present. The last editing user of the message will be more
|
||||
|
@ -235,8 +240,7 @@ module Chat
|
|||
cooked =
|
||||
PrettyText.cook(
|
||||
message,
|
||||
features_override:
|
||||
MARKDOWN_FEATURES + DiscoursePluginRegistry.chat_markdown_features.to_a,
|
||||
features_override: features + DiscoursePluginRegistry.chat_markdown_features.to_a,
|
||||
markdown_it_rules: rules,
|
||||
force_quote_link: true,
|
||||
user_id: opts[:user_id],
|
||||
|
|
|
@ -99,6 +99,16 @@ describe Chat::Message do
|
|||
<h6><a name="h6-6" class="anchor" href="#h6-6"></a>h6</h6>
|
||||
HTML
|
||||
end
|
||||
|
||||
it "cooks the grid bbcode" do
|
||||
cooked = described_class.cook("[grid]\ntest\n[/grid]", user_id: -1)
|
||||
|
||||
expect(cooked).to match_html <<~HTML
|
||||
<div class="d-image-grid">
|
||||
<p>test</p>
|
||||
</div>
|
||||
HTML
|
||||
end
|
||||
end
|
||||
|
||||
it "doesn't support headings" do
|
||||
|
@ -109,6 +119,14 @@ describe Chat::Message do
|
|||
HTML
|
||||
end
|
||||
|
||||
it "doesn't support grid" do
|
||||
cooked = described_class.cook("[grid]\ntest\n[/grid]")
|
||||
|
||||
expect(cooked).to match_html <<~HTML
|
||||
<p>[grid]<br>test<br>[/grid]</p>
|
||||
HTML
|
||||
end
|
||||
|
||||
it "supports horizontal replacement" do
|
||||
cooked = described_class.cook("---")
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user