mirror of
https://github.com/discourse/discourse.git
synced 2024-11-24 22:50:45 +08:00
692e0140e2
This PR enables custom email dark mode styles by default that were added here.
There is currently poor support for dark mode queries in mail clients. The main beneficiary of these changes will be Apple Mail and Outlook.
Enjoy the darkness 🕶️
119 lines
2.5 KiB
Ruby
119 lines
2.5 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require 'erb'
|
|
|
|
module EmailHelper
|
|
|
|
def mailing_list_topic(topic, post_count)
|
|
render(
|
|
partial: partial_for("mailing_list_post"),
|
|
locals: { topic: topic, post_count: post_count }
|
|
)
|
|
end
|
|
|
|
def mailing_list_topic_text(topic)
|
|
url, title = extract_details(topic)
|
|
raw(@markdown_linker.create(title, url))
|
|
end
|
|
|
|
def private_topic_title(topic)
|
|
I18n.t("system_messages.private_topic_title", id: topic.id)
|
|
end
|
|
|
|
def email_topic_link(topic)
|
|
url, title = extract_details(topic)
|
|
raw "<a href='#{Discourse.base_url}#{url}' style='color: ##{@anchor_color}'>#{title}</a>"
|
|
end
|
|
|
|
def email_html_template
|
|
EmailStyle.new.html
|
|
.sub('%{email_content}') { capture { yield } }
|
|
.gsub('%{html_lang}', html_lang)
|
|
.gsub('%{dark_mode_meta_tags}', dark_mode_meta_tags)
|
|
.gsub('%{dark_mode_styles}', dark_mode_styles)
|
|
.html_safe
|
|
end
|
|
|
|
protected
|
|
|
|
def dark_mode_meta_tags
|
|
"
|
|
<meta name='color-scheme' content='light dark' />
|
|
<meta name='supported-color-schemes' content='light dark' />
|
|
"
|
|
end
|
|
|
|
def dark_mode_styles
|
|
"
|
|
<style>
|
|
@media (prefers-color-scheme: dark) {
|
|
html {
|
|
background: #151515 !important;
|
|
}
|
|
|
|
h1,
|
|
h2,
|
|
h3,
|
|
h4,
|
|
h5,
|
|
h6,
|
|
p,
|
|
span,
|
|
td {
|
|
color: #dddddd !important;
|
|
}
|
|
|
|
[data-stripped-secure-media] {
|
|
border-color: #454545 !important;
|
|
}
|
|
|
|
[dm='text-color'] {
|
|
color: #dddddd;
|
|
}
|
|
|
|
[dm='header'] {
|
|
background: #151515 !important;
|
|
}
|
|
|
|
[dm='topic-body'] {
|
|
background: #151515 !important;
|
|
border-bottom: 1px solid #454545 !important;
|
|
}
|
|
|
|
[dm='triangle'] {
|
|
border-top-color: #151515 !important;
|
|
}
|
|
|
|
[dm='body'] {
|
|
background: #222222 !important;
|
|
color: #dddddd !important;
|
|
}
|
|
|
|
[dm='body_primary'] {
|
|
background: #062e3d !important;
|
|
color: #dddddd !important;
|
|
}
|
|
|
|
[dm='bg'] {
|
|
background: #323232 !important;
|
|
border-color: #454545 !important;
|
|
}
|
|
}
|
|
</style>
|
|
"
|
|
end
|
|
|
|
def extract_details(topic)
|
|
if SiteSetting.private_email?
|
|
[topic.slugless_url, private_topic_title(topic)]
|
|
else
|
|
[topic.relative_url, format_topic_title(topic.title)]
|
|
end
|
|
end
|
|
|
|
def partial_for(name)
|
|
SiteSetting.private_email? ? "email/secure_#{name}" : "email/#{name}"
|
|
end
|
|
|
|
end
|