about summary refs log tree commit diff
path: root/app/helpers/formatting_helper.rb
diff options
context:
space:
mode:
authorEugen Rochko <eugen@zeonfederated.com>2022-05-09 07:43:08 +0200
committerGitHub <noreply@github.com>2022-05-09 07:43:08 +0200
commit2b8dc58b7ff7fb708687c08a75c99b3fb30efc49 (patch)
tree6145e0c99b5550ad80d902b67a76278e0753ac69 /app/helpers/formatting_helper.rb
parentf17e73da09e6c63665aee4e9731df7808094960e (diff)
Change RSS feeds (#18356)
* Change RSS feeds

- Use date and time for titles instead of ellipsized text
- Use full content in body, even when there is a content warning
- Use media extensions

* Change feed icons and add width and height attributes to custom emojis

* Fix custom emoji animate on hover breaking

* Fix tests
Diffstat (limited to 'app/helpers/formatting_helper.rb')
-rw-r--r--app/helpers/formatting_helper.rb26
1 files changed, 26 insertions, 0 deletions
diff --git a/app/helpers/formatting_helper.rb b/app/helpers/formatting_helper.rb
index a58dd608f..f5b8dbed8 100644
--- a/app/helpers/formatting_helper.rb
+++ b/app/helpers/formatting_helper.rb
@@ -18,6 +18,32 @@ module FormattingHelper
     html_aware_format(status.text, status.local?, preloaded_accounts: [status.account] + (status.respond_to?(:active_mentions) ? status.active_mentions.map(&:account) : []))
   end
 
+  def rss_status_content_format(status)
+    html = status_content_format(status)
+
+    before_html = begin
+      if status.spoiler_text?
+        "<p><strong>#{I18n.t('rss.content_warning', locale: valid_locale_or_nil(status.language))}</strong> #{h(status.spoiler_text)}</p><hr />"
+      else
+        ''
+      end
+    end.html_safe # rubocop:disable Rails/OutputSafety
+
+    after_html = begin
+      if status.preloadable_poll
+        "<p>#{status.preloadable_poll.options.map { |o| "<input type=#{status.preloadable_poll.multiple? ? 'checkbox' : 'radio'} disabled /> #{h(o)}" }.join('<br />')}</p>"
+      else
+        ''
+      end
+    end.html_safe # rubocop:disable Rails/OutputSafety
+
+    prerender_custom_emojis(
+      safe_join([before_html, html, after_html]),
+      status.emojis,
+      style: 'width: 1.1em; height: 1.1em; object-fit: contain; vertical-align: middle; margin: -.2ex .15em .2ex'
+    ).to_str
+  end
+
   def account_bio_format(account)
     html_aware_format(account.note, account.local?)
   end