diff --git a/plugins/chat/app/models/chat/message.rb b/plugins/chat/app/models/chat/message.rb index 7e642fe30b9..3766fbe0ead 100644 --- a/plugins/chat/app/models/chat/message.rb +++ b/plugins/chat/app/models/chat/message.rb @@ -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], diff --git a/plugins/chat/spec/models/chat/message_spec.rb b/plugins/chat/spec/models/chat/message_spec.rb index 32e696b6219..3c66a186863 100644 --- a/plugins/chat/spec/models/chat/message_spec.rb +++ b/plugins/chat/spec/models/chat/message_spec.rb @@ -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("---")