0
0
Fork 0

Fix regressions from #2683 (#2970)

* Fix regressions from #2683

Properly format spoiler text HTML, while keeping old logic for blankness intact
Process hashtags and mentions in spoiler text
Format spoiler text for Atom
Change "show more" toggle into a button instead of anchor
Fix style regression on dropdowns for detailed statuses

* Fix lint issue

* Convert spoiler text to plaintext in desktop notifications
This commit is contained in:
Eugen Rochko 2017-05-11 00:28:10 +02:00 committed by GitHub
parent 65027657ec
commit 72698bc3b4
14 changed files with 88 additions and 49 deletions

View file

@ -332,7 +332,7 @@ class AtomSerializer
end
def serialize_status_attributes(entry, status)
append_element(entry, 'summary', status.spoiler_text, 'xml:lang': status.language) if status.spoiler_text?
append_element(entry, 'summary', Formatter.instance.format(status.proper, :spoiler_text, false).to_str, 'xml:lang': status.language, type: 'html') if status.spoiler_text?
append_element(entry, 'content', Formatter.instance.format(status.proper).to_str, type: 'html', 'xml:lang': status.language)
status.mentions.each do |mentioned|

View file

@ -9,13 +9,15 @@ class Formatter
include ActionView::Helpers::TextHelper
def format(status)
return reformat(status.content) unless status.local?
def format(status, attribute = :text, paragraphize = true)
raw_content = status.public_send(attribute)
html = status.text
return '' if raw_content.blank?
return reformat(raw_content) unless status.local?
html = raw_content
html = encode_and_link_urls(html, status.mentions)
html = simple_format(html, {}, sanitize: false)
html = simple_format(html, {}, sanitize: false) if paragraphize
html = html.delete("\n")
html.html_safe # rubocop:disable Rails/OutputSafety
@ -25,18 +27,6 @@ class Formatter
sanitize(html, Sanitize::Config::MASTODON_STRICT).html_safe # rubocop:disable Rails/OutputSafety
end
def format_spoiler(status)
return reformat(status.spoiler_text) unless status.local?
html = status.spoiler_text
html = encode_and_link_urls(html)
html = simple_format(html, {}, sanitize: false)
html = html.delete("\n")
html.html_safe # rubocop:disable Rails/OutputSafety
end
def plaintext(status)
return status.text if status.local?
strip_tags(status.text)