FIX: missing assignee icon in search (#230)
Change serializer to include icon path
This commit is contained in:
parent
fcd4532c76
commit
a876821ab1
30
plugin.rb
30
plugin.rb
|
@ -248,11 +248,23 @@ after_initialize do
|
||||||
|
|
||||||
if allowed_access && results.posts.length > 0
|
if allowed_access && results.posts.length > 0
|
||||||
topics = results.posts.map(&:topic)
|
topics = results.posts.map(&:topic)
|
||||||
assignments = Assignment.strict_loading.where(target: topics).includes(:assigned_to).index_by(&:topic_id)
|
assignments = Assignment.strict_loading.where(topic: topics).includes(:assigned_to).group_by(&:topic_id)
|
||||||
|
|
||||||
results.posts.each do |post|
|
results.posts.each do |post|
|
||||||
assigned_to = assignments[post.topic.id]&.assigned_to
|
topic_assignments = assignments[post.topic.id]
|
||||||
post.topic.preload_assigned_to(assigned_to)
|
direct_assignment = topic_assignments&.find { |assignment| assignment.target_type == "Topic" }
|
||||||
|
indirect_assignments = topic_assignments&.select { |assignment| assignment.target_type == "Post" }
|
||||||
|
if direct_assignment
|
||||||
|
assigned_to = direct_assignment.assigned_to
|
||||||
|
post.topic.preload_assigned_to(assigned_to)
|
||||||
|
end
|
||||||
|
if indirect_assignments.present?
|
||||||
|
indirect_assignment_map = indirect_assignments.reduce({}) do |acc, assignment|
|
||||||
|
acc[assignment.target_id] = assignment.assigned_to
|
||||||
|
acc
|
||||||
|
end
|
||||||
|
post.topic.preload_indirectly_assigned_to(indirect_assignment_map)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -519,7 +531,7 @@ after_initialize do
|
||||||
|
|
||||||
# SearchTopicListItem serializer
|
# SearchTopicListItem serializer
|
||||||
add_to_serializer(:search_topic_list_item, :assigned_to_user, false) do
|
add_to_serializer(:search_topic_list_item, :assigned_to_user, false) do
|
||||||
object.assigned_to
|
DiscourseAssign::Helpers.build_assigned_to_user(object.assigned_to, object)
|
||||||
end
|
end
|
||||||
|
|
||||||
add_to_serializer(:search_topic_list_item, 'include_assigned_to_user?') do
|
add_to_serializer(:search_topic_list_item, 'include_assigned_to_user?') do
|
||||||
|
@ -527,13 +539,21 @@ after_initialize do
|
||||||
end
|
end
|
||||||
|
|
||||||
add_to_serializer(:search_topic_list_item, :assigned_to_group, false) do
|
add_to_serializer(:search_topic_list_item, :assigned_to_group, false) do
|
||||||
object.assigned_to
|
BasicGroupSerializer.new(object.assigned_to, scope: scope, root: false).as_json
|
||||||
end
|
end
|
||||||
|
|
||||||
add_to_serializer(:search_topic_list_item, 'include_assigned_to_group?') do
|
add_to_serializer(:search_topic_list_item, 'include_assigned_to_group?') do
|
||||||
(SiteSetting.assigns_public || scope.can_assign?) && object.assigned_to&.is_a?(Group)
|
(SiteSetting.assigns_public || scope.can_assign?) && object.assigned_to&.is_a?(Group)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
add_to_serializer(:search_topic_list_item, :indirectly_assigned_to) do
|
||||||
|
DiscourseAssign::Helpers.build_indirectly_assigned_to(object.indirectly_assigned_to, object)
|
||||||
|
end
|
||||||
|
|
||||||
|
add_to_serializer(:search_topic_list_item, :include_indirectly_assigned_to?) do
|
||||||
|
(SiteSetting.assigns_public || scope.can_assign?) && object.indirectly_assigned_to.present?
|
||||||
|
end
|
||||||
|
|
||||||
# TopicsBulkAction
|
# TopicsBulkAction
|
||||||
TopicsBulkAction.register_operation("assign") do
|
TopicsBulkAction.register_operation("assign") do
|
||||||
if @user.can_assign?
|
if @user.can_assign?
|
||||||
|
|
Loading…
Reference in New Issue