discourse/app/helpers/topics_helper.rb
Natalie Tay cd6427203c
FEATURE: A dedicated 'show original' user preferences saved to user options (#39128)
Currently toggling "Show original" only persists in local storage for
the device for 30 days.

This PR adds the option in the user's interface settings at
`/my/preferences/interface`.
2026-04-07 21:37:20 +08:00

37 lines
1.2 KiB
Ruby

# frozen_string_literal: true
module TopicsHelper
include ApplicationHelper
def render_topic_title(topic)
link_to(Emoji.gsub_emoji_to_unicode(topic.title), topic.relative_url)
end
def categories_breadcrumb(topic)
breadcrumb = []
category = topic.category
if category && !category.uncategorized?
breadcrumb.push(url: category.url, name: category.name, color: category.color)
while category = category.parent_category
breadcrumb.prepend(url: category.url, name: category.name, color: category.color)
end
end
Plugin::Filter.apply(:topic_categories_breadcrumb, topic, breadcrumb)
end
def localize_topic_view_content(topic_view)
return if cookies.key?(ContentLocalization::SHOW_ORIGINAL_COOKIE)
return if current_user&.user_option&.show_original_content
# locale param is appropriately set in the application controller
# depending on site settings and presence of user
locale = I18n.locale
LocalizationAttributesReplacer.replace_topic_attributes(topic_view.topic, locale)
topic_view.posts.each do |post|
LocalizationAttributesReplacer.replace_post_attributes(post, locale)
end
end
end