mirror of
https://gh.wpcy.net/https://github.com/discourse/discourse.git
synced 2026-05-08 02:18:34 +08:00
Introduces new dynamic autocomplete for filter to make discovery easier: <img width="930" height="585" alt="image" src="https://github.com/user-attachments/assets/17e7f746-a170-4f10-9ddf-77ef651e5325" /> https://github.com/user-attachments/assets/e9d7bc29-a593-4ef3-82a2-f10fc35ed47c --------- Co-authored-by: Martin Brennan <martin@discourse.org>
54 lines
1.2 KiB
Ruby
54 lines
1.2 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
class TopicListSerializer < ApplicationSerializer
|
|
attributes :can_create_topic,
|
|
:more_topics_url,
|
|
:for_period,
|
|
:per_page,
|
|
:top_tags,
|
|
:tags,
|
|
:shared_drafts,
|
|
:filter_option_info
|
|
|
|
has_many :topics, serializer: TopicListItemSerializer, embed: :objects
|
|
has_many :shared_drafts, serializer: TopicListItemSerializer, embed: :objects
|
|
has_many :tags, serializer: TagSerializer, embed: :objects
|
|
has_many :categories, serializer: CategoryBadgeSerializer, embed: :objects
|
|
|
|
def initialize(object, options = {})
|
|
super
|
|
options[:filter] = object.filter
|
|
end
|
|
|
|
def can_create_topic
|
|
scope.can_create?(Topic)
|
|
end
|
|
|
|
def include_shared_drafts?
|
|
object.shared_drafts.present?
|
|
end
|
|
|
|
def include_filter_option_info?
|
|
object.filter_option_info.present?
|
|
end
|
|
|
|
def include_for_period?
|
|
for_period.present?
|
|
end
|
|
|
|
def include_more_topics_url?
|
|
object.more_topics_url.present? && (object.topics.size == object.per_page)
|
|
end
|
|
|
|
def include_top_tags?
|
|
Tag.include_tags?
|
|
end
|
|
|
|
def include_tags?
|
|
SiteSetting.tagging_enabled && object.tags.present?
|
|
end
|
|
|
|
def include_categories?
|
|
scope.can_lazy_load_categories?
|
|
end
|
|
end
|