Editor toolbar generates invalid multi-paragraph spoilers

AI-generated summary

The editor toolbar generates invalid multi-paragraph spoilers. To reproduce the issue, select two paragraphs with double line breaks, click the gear, and click “Blur Spoiler.” The actual output is an inline spoiler that does not render correctly.

dfabulich reports that the bug is still present, despite claims that it was fixed. The expected behavior is to insert spoiler tags at the start and end of the selection, creating a multi-paragraph spoiler block.

codinghorror agrees that the editor should add spoiler BBCode tags at the top and bottom of the selection, and sam notes that the code toolbar button already works this way for inline spoilers.

zogstrip mentions that supporting mixed formatting within a spoiler block is not possible due to limitations in BBCode. However, codinghorror and sam argue that fixing the toolbar to use “block mode” for multi-line selections is a simple solution.

The issue has been assigned to pmusaraj, who has fixed the problem via two commits, making the toolbar button use “block mode” for multi-line selections.

Continuing the discussion from HTML <b> across paragraph breaks differs between preview and result:

The editor bug is still there as far as I can see.

To reproduce: on meta.discourse.org or try.discourse.org, type two paragraphs with double line breaks separating them like this:

foo

bar

Select the paragraphs, click the gear, and click “Blur Spoiler.”

Actual: The editor inserts spoiler tags inline at the start/end of the selection, which used to work, but which no longer makes a multi-paragraph spoiler.

[spoiler]foo

bar[/spoiler]

It renders like this:

[spoiler]foo

bar[/spoiler]

Expected:

[spoiler]
foo

bar
[/spoiler]

foo

bar

「いいね!」 4

Note that it should also do the right thing if you select the spoilers in this example:

foo Rosebud is a sled

Bruce Willis died in Act 1

It was Kevin Spacey the whole time

Darth is Anakin bar 

Currently it does this:

foo [spoiler]Rosebud is a sled

Bruce Willis died in Act 1

It was Kevin Spacey the whole time

Darth is Anakin[/spoiler] bar

I’m not 100% sure what it should do in this case. One thing it might do is convert the inline spoilers into a spoiler block like this.

foo
[spoiler]
Rosebud is a sled

Bruce Willis died in Act 1

It was Kevin Spacey the whole time

Darth is Anakin
[/spoiler]
bar

foo

Rosebud is a sled

Bruce Willis died in Act 1

It was Kevin Spacey the whole time

Darth is Anakin

bar

But perhaps instead it should wrap each inline section with its own [spoiler] tag and embed all of the paragraphs in a spoiler block.

foo [spoiler]Rosebud is a sled[/spoiler]

[spoiler]
Bruce Willis died in Act 1

It was Kevin Spacey the whole time
[/spoiler]

[spoiler]Darth is Anakin[/spoiler] bar 

foo Rosebud is a sled

Bruce Willis died in Act 1

It was Kevin Spacey the whole time

Darth is Anakin bar

But that introduces three spoilers; you have to click on each spoiler one at a time to reveal it. :confused:

Incorrect, it should simply add spoiler BBCode tags at the top and bottom. And if it does not, we should definitely fix that @eviltrout

[spoiler]
foo Rosebud is a sled

Bruce Willis died in Act 1

It was Kevin Spacey the whole time

Darth is Anakin bar 
[/spoiler]

I guess that’s OK, too. (A bit weird that non-spoiler text “foo” and “bar” sneaks in.)

I just want to make sure inline spoilers will still work.

So if you select the spoiler here:

foo Rosebud is a sled bar

it should continue to generate an inline spoiler

foo [spoiler]Rosebud is a sled[/spoiler] bar

foo Rosebud is a sled bar

Yes, that is more or less how the code toolbar button already works – try it – so I think @eviltrout can just adopt that exact behavior.

@eviltrout I recall fixing this a few weeks back with the details plugin.

Current behavior:

test []test

test[] test

Hit spoiler

test [spoiler]test

test[/spoiler] test

Desired

test
[spoiler]
test

test
[/spoiler]
test

Since spoiler is also inline, this needs to work as well

text spoil text
text [spoiler]spoil[/spoiler] text
「いいね!」 3

もしまだ問題であれば、@eviltrout にこの件を割り当てていただけますか?

[spoiler]まだ

問題です[/spoiler]

「いいね!」 2

ブロックまたはインラインの BBCode のどちらかしかサポートしていないため、修正は難しいでしょう

[Developer's guide to Markdown extensions]

[spoiler]
block
[/spoiler]
[spoiler]inline[/spoiler]

難しくないようです。複数行の選択には正しい形式を使うだけでよいのですか?

「いいね!」 1

いいえ、これは Markdown の修正ではなく、ツールバーの動作に関する調整です。ツールバーが不適切な Markdown を生成してしまっているので、改行の追加をより賢く行う必要があります。

「いいね!」 1

さて、選択範囲に改行がある場合にツールバーを「ブロックモード」で動作させるのは簡単です。

[spoiler]mixed
formatting
[/spoiler]

という形式のサポートはそうではありません。

「いいね!」 1

はい、しかしここでのリクエストはそれだけのことです。

「いいね!」 3

@pmusaraj 確認してもらえますか?エディタの選択とボタンは十分にテストされているので、この状況に対するテストの作成方法は比較的明確だと思います。

「いいね!」 3

この問題は、以下の 2 つのコミットで修正されます(core、discourse-spoiler-alert)。選択された文字列が複数行の場合、ツールバーボタンは「ブロックモード」を使用します。

「いいね!」 6

このトピックは 47 時間後に自動的に閉鎖されました。新しい返信は受け付けられません。