discourse-yearly-review/app/helpers/yearly_review_helper.rb
2025-03-17 11:42:09 +00:00

70 lines
1.8 KiB
Ruby

# frozen_string_literal: true
module YearlyReviewHelper
include ActionView::Helpers::NumberHelper
AVATAR_SIZE = "50"
def avatar_image(username, uploaded_avatar_id)
template = User.avatar_template(username, uploaded_avatar_id).gsub(/{size}/, AVATAR_SIZE)
"![avatar\\|25x25](#{template})"
end
def user_link(username)
"@#{username}"
end
def topic_link(title, slug, topic_id)
link = "#{Discourse.base_url}/t/#{slug}/#{topic_id}"
"[#{title}](#{link})"
end
def class_from_key(key)
key.gsub("_", "-")
end
def slug_from_name(name)
name.downcase.gsub(" ", "-")
end
def badge_link(name, id, more)
url = "#{Discourse.base_url}/badges/#{id}/#{slug_from_name(name)}"
"[#{t("yearly_review.more_badge_users", more: more)}](#{url})"
end
def category_link(name)
category = Category.find_by(name: name)
if category.parent_category_id
parent_category = Category.find(category.parent_category_id)
url = "#{Discourse.base_url}/c/#{parent_category.slug}/#{category.slug}/l/top"
else
url = "#{Discourse.base_url}/c/#{category.slug}/l/top"
end
link_text = t("yearly_review.category_topics_title", category: name)
"[#{link_text}](#{url})"
end
def user_visits_link
if SiteSetting.enable_user_directory && !SiteSetting.hide_user_profiles_from_public
url = "#{Discourse.base_url}/u?order=days_visited&period=yearly"
"[#{t("yearly_review.all_yearly_visits")}](#{url})"
end
end
def format_number(number)
number_to_human(number, units: { thousand: "k" }, format: "%n%u")
end
def table_row(*values)
"|#{values.join("|")}|"
end
def table_header(*labels)
headings = labels.map { |label| I18n.t("yearly_review.#{label}") }
"|#{headings.join("|")}|"
end
def compiled_method_container
self.class
end
end