mirror of
https://github.com/discourse/discourse.git
synced 2024-11-24 00:51:03 +08:00
38 lines
1.3 KiB
Ruby
38 lines
1.3 KiB
Ruby
module CategoryBadge
|
|
|
|
def self.category_stripe(color, classes)
|
|
style = color ? "style='background-color: ##{color};'" : ''
|
|
"<span class='#{classes}' #{style}></span>"
|
|
end
|
|
|
|
def self.html_for(category, opts=nil)
|
|
opts = opts || {}
|
|
|
|
# If there is no category, bail
|
|
return "" if category.blank?
|
|
|
|
# By default hide uncategorized
|
|
return "" if category.uncategorized? && !opts[:show_uncategorized]
|
|
|
|
extra_classes = "#{opts[:extra_classes]} #{SiteSetting.category_style}"
|
|
|
|
result = ''
|
|
|
|
unless category.parent_category_id.nil? || opts[:hide_parent]
|
|
parent_category = Category.find_by(id: category.parent_category_id)
|
|
result << category_stripe(parent_category.color, 'badge-category-parent-bg')
|
|
end
|
|
result << category_stripe(category.color, 'badge-category-bg')
|
|
|
|
class_names = 'badge-category clear-badge'
|
|
text_color = "##{category.text_color}"
|
|
description = category.description_text ? "title='#{category.description_text.html_safe}'" : ''
|
|
|
|
result << "<span style='color: #{text_color};' data-drop-close='true' class='#{class_names}'
|
|
#{description}'>"
|
|
|
|
result << category.name.html_safe << '</span>'
|
|
"<a class='badge-wrapper #{extra_classes}' href='#{Discourse.base_url}#{category.url}'>#{result}</a>"
|
|
end
|
|
end
|