Block-style spoiler tags

AI-generated summary

lukegb has created a plugin for block-style spoiler tags, which can be used to collapse blocks of text. The plugin supports nested tags and markdown, removes spoiler contents from emails, and is configurable. However, there are some known issues, such as recursive Markdown transpilation and UUID generation. jakedwhitaker pointed out an issue with links not working properly within the spoiler block, which can be worked around by using non-ref style links. riking noted that most of the plugin’s functionality is now built-in, and provided a workaround for migration.

Need support for [spoiler] tags which are actually misnamed and are actually collapsed-block tags? Look no further!

(yes, this is basically the same as the built-in [details] block, you should try to convince your users to use those instead!)

https://github.com/lukegb/discourse-bbcode-spoiler

Screenshots

(FLARD is an injoke on my forum)

Syntax

[spoiler]contents go here[/spoiler] if you want the default title.

[spoiler=Button title]contents go here[/spoiler] if you don’t.

Features

  • Fully supports nested [spoiler] tags and markdown (so HRs, headers, etc, work fine)
  • Removes the spoiler contents from emails which are sent. (This needs rethinking, but for my usecase it’s OK since we don’t have reply-via-email turned on yet)
  • Always shows in expanded mode in post previews to allow for easier editing
  • Configurable default spoiler text (i.e. what happens if no button override text is specified)

Known issues

  • Currently recursively invokes the full Markdown->JsonML transpiler instead of letting Discourse pass me the inner JsonML. It (Discourse) seems to have weird issues with block-level Markdown tags at the moment, but that could just be me messing up.
  • Horrific UUID generation stuff in order to easily refer to the checkbox.
  • Currently overrides [spoiler] and not [hide] and this is not configurable (at the moment). PRs welcome, but I’m planning to come back to this in a bit.
  • Probably(?) doesn’t scroll properly in preview mode.
6 Likes

On line 58, I think you can use this.toTree(inner) instead - discourse-bbcode-spoiler/assets/javascripts/bbcode_spoiler_dialect.js at 9716d81686d0ef728409be53fce545a37cd9224e · lukegb/discourse-bbcode-spoiler · GitHub

2 Likes

One issue I’ve encountered: block spoilers cannot read links that are outside of the block spoiler, which makes it difficult to use them for organization as a collapsible text feature. You can manually move the links, yes, but adding new ones moves them all back to the bottom of the post.

Yeah, I know about this one. The workaround is to use non-ref style links, but it’s a bit of a pain since the Markdown editor uses them by default.

Marked as #plugin:broken-plugin. All functionality except the CSS theme to draw a box around collapsed-details is built-in now.

If you think you need this for a import/migration, try doing this instead:

rake posts:remap'[\[spoiler\],\[details=Spoiler\]]'
rake posts:remap'[\[spoiler=,\[details=]'
rake posts:remap'[\[/spoiler\],\[/details\]]'
3 Likes