2
0
Fork 0
mirror of https://github.com/discourse/discourse.git synced 2026-03-03 23:54:20 +08:00
discourse/app/serializers/basic_category_serializer.rb
Natalie Tay d177263591
FIX: Do not return translated name when editing category (#35297)
The inheritance chain is for category serializers is
```
  CategorySerializer -> SiteCategorySerializer -> BasicCategorySerializer
```

The BasicCategorySerializer includes BasicCategoryAttributes (provides
untranslated name/description), the SiteCategorySerializer overrides
name and description to provide translated versions, the
CategorySerializer tries to include BasicCategoryAttributes but this
does nothing because the module is already in the ancestor chain from
BasicCategorySerializer. In Ruby, including a module that's already in
the ancestor chain has no effect.

This commit fixes the issue
2025-10-09 17:46:02 +08:00

92 lines
2.2 KiB
Ruby

# frozen_string_literal: true
class BasicCategorySerializer < ApplicationSerializer
include BasicCategoryAttributes
attributes :id,
:name,
:color,
:text_color,
:style_type,
:icon,
:emoji,
: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 description_text
if object.uncategorized?
I18n.t("category.uncategorized_description", locale: SiteSetting.default_locale)
else
object.description_text
end
end
def description_excerpt
if object.uncategorized?
I18n.t("category.uncategorized_description", locale: SiteSetting.default_locale)
else
object.description_excerpt
end
end
def name
category_name
end
def description
category_description
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