discourse/app/serializers/basic_category_serializer.rb
Bianca Nenciu dbe923d26e
FIX: Fetch categories for "+subcategories" option (#26622)
Selecting the +subcategories option does not work sometimes when "lazy
load categories" is enabled because the subcategories may not be
fetched. This ensures that subcategories are loaded by requesting them
before being used.
2024-04-25 16:47:45 +03:00

97 lines
2.4 KiB
Ruby

# frozen_string_literal: true
class BasicCategorySerializer < ApplicationSerializer
attributes :id,
:name,
:color,
:text_color,
:slug,
:topic_count,
:post_count,
:position,
:description,
:description_text,
:description_excerpt,
:topic_url,
:read_restricted,
:permission,
:parent_category_id,
:notification_level,
:can_edit,
:topic_template,
:has_children,
:subcategory_count,
:sort_order,
:sort_ascending,
:show_subcategory_list,
:num_featured_topics,
:default_view,
:subcategory_list_style,
:default_top_period,
:default_list_filter,
:minimum_required_tags,
:navigate_to_first_post_after_read,
:custom_fields
has_one :uploaded_logo, embed: :object, serializer: CategoryUploadSerializer
has_one :uploaded_logo_dark, embed: :object, serializer: CategoryUploadSerializer
has_one :uploaded_background, embed: :object, serializer: CategoryUploadSerializer
has_one :uploaded_background_dark, embed: :object, serializer: CategoryUploadSerializer
def include_parent_category_id?
parent_category_id
end
def name
if object.uncategorized?
I18n.t("uncategorized_category_name", locale: SiteSetting.default_locale)
else
object.name
end
end
def description_text
if object.uncategorized?
I18n.t("category.uncategorized_description", locale: SiteSetting.default_locale)
else
object.description_text
end
end
def description
if object.uncategorized?
I18n.t("category.uncategorized_description", locale: SiteSetting.default_locale)
else
object.description
end
end
def description_excerpt
if object.uncategorized?
I18n.t("category.uncategorized_description", locale: SiteSetting.default_locale)
else
object.description_excerpt
end
end
def can_edit
true
end
def include_can_edit?
scope && scope.can_edit?(object)
end
def notification_level
object.notification_level
end
def custom_fields
object.preloaded_custom_fields
end
def include_custom_fields?
custom_fields.present?
end
end