2019-05-03 06:17:27 +08:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2015-11-30 18:32:01 +08:00
|
|
|
# name: discourse-details
|
|
|
|
# about: HTML5.1 Details polyfill for Discourse
|
2016-03-12 00:51:16 +08:00
|
|
|
# version: 0.4
|
2015-11-30 18:32:01 +08:00
|
|
|
# authors: Régis Hanol
|
2021-07-19 23:35:47 +08:00
|
|
|
# url: https://github.com/discourse/discourse/tree/main/plugins/discourse-details
|
2015-11-30 18:32:01 +08:00
|
|
|
|
|
|
|
enabled_site_setting :details_enabled
|
2023-08-31 08:01:01 +08:00
|
|
|
hide_plugin
|
2015-11-30 18:32:01 +08:00
|
|
|
|
|
|
|
register_asset "stylesheets/details.scss"
|
|
|
|
|
|
|
|
after_initialize do
|
|
|
|
Email::Styles.register_plugin_style do |fragment|
|
2016-03-12 00:51:16 +08:00
|
|
|
# remove all elided content
|
2018-02-08 07:01:11 +08:00
|
|
|
fragment.css("details.elided").each(&:remove)
|
2016-03-12 00:51:16 +08:00
|
|
|
|
|
|
|
# replace all details with their summary in emails
|
|
|
|
fragment
|
|
|
|
.css("details")
|
|
|
|
.each do |details|
|
2016-05-02 10:33:56 +08:00
|
|
|
summary = details.css("summary")
|
|
|
|
if summary && summary[0]
|
|
|
|
summary = summary[0]
|
|
|
|
if summary && summary.respond_to?(:name)
|
|
|
|
summary.name = "p"
|
|
|
|
details.replace(summary)
|
2023-01-07 04:42:16 +08:00
|
|
|
end
|
2016-05-02 10:33:56 +08:00
|
|
|
end
|
|
|
|
end
|
2015-11-30 18:32:01 +08:00
|
|
|
end
|
|
|
|
|
2019-05-24 23:57:03 +08:00
|
|
|
on(:reduce_cooked) do |fragment, post|
|
|
|
|
fragment
|
|
|
|
.css("details")
|
|
|
|
.each do |el|
|
2020-07-14 09:49:36 +08:00
|
|
|
text = el.css("summary").text
|
2019-05-24 23:57:03 +08:00
|
|
|
link = fragment.document.create_element("a")
|
2024-05-22 16:42:58 +08:00
|
|
|
link["href"] = post&.url.presence || Discourse.base_url
|
2019-05-24 23:57:03 +08:00
|
|
|
link.content = I18n.t("details.excerpt_details")
|
2019-06-26 21:27:56 +08:00
|
|
|
el.replace CGI.escapeHTML(text) + " " + link.to_html
|
2019-05-24 23:57:03 +08:00
|
|
|
end
|
2018-02-08 07:01:11 +08:00
|
|
|
end
|
2015-11-30 18:32:01 +08:00
|
|
|
end
|