0
0
Fork 0
mirror of https://github.com/discourse/discourse.git synced 2026-08-06 04:48:33 +08:00
discourse/plugins/discourse-details/plugin.rb
Martin Brennan 1620a74bd4
DEV: Update discourse-details description and README (#40786)
The plugin metadata and README described it as an "HTML5.1 Details
polyfill" with an IE9 note, which is long obsolete now that
`<details>/<summary>` is universally supported. The plugin is really the
implementation of the [details] BBCode feature (markdown rule, composer
button, rich editor support, email/excerpt rendering).

Update the about line and README to describe what the plugin actually
does, and drop the stale standalone-repo installation instructions since
it ships bundled with core.
2026-06-12 07:59:18 +10:00

44 lines
1.2 KiB
Ruby
Vendored

# frozen_string_literal: true
# name: discourse-details
# about: Adds collapsible `[details]` sections to posts
# version: 0.4
# authors: Régis Hanol
# url: https://github.com/discourse/discourse/tree/main/plugins/discourse-details
enabled_site_setting :details_enabled
register_asset "stylesheets/details.scss"
after_initialize do
Email::Styles.register_plugin_style do |fragment|
# remove all elided content
fragment.css("details.elided").each(&:remove)
# replace all details with their summary in emails
fragment
.css("details")
.each do |details|
summary = details.css("summary")
if summary && summary[0]
summary = summary[0]
if summary && summary.respond_to?(:name)
summary.name = "p"
details.replace(summary)
end
end
end
end
on(:reduce_cooked) do |fragment, post|
fragment
.css("details")
.each do |el|
text = el.css("summary").text
link = fragment.document.create_element("a")
link["href"] = post&.url.presence || Discourse.base_url
link.content = I18n.t("details.excerpt_details")
el.replace CGI.escapeHTML(text) + " " + link.to_html
end
end
end