DEV: Pass topic to TopicView.add_post_custom_fields_allowlister (#14678)

Allows custom fields to be loaded based on the attributes of a topic.
This commit is contained in:
Alan Guo Xiang Tan 2021-10-22 10:22:09 +08:00 committed by GitHub
parent c7703cec2f
commit d1201d6188
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 5 additions and 5 deletions

View File

@ -326,8 +326,8 @@ class Plugin::Instance
# Add a post_custom_fields_allowlister block to the TopicView, respecting if the plugin is enabled
def topic_view_post_custom_fields_allowlister(&block)
reloadable_patch do |plugin|
::TopicView.add_post_custom_fields_allowlister do |user|
plugin.enabled? ? block.call(user) : []
::TopicView.add_post_custom_fields_allowlister do |user, topic|
plugin.enabled? ? block.call(user, topic) : []
end
end
end

View File

@ -65,8 +65,8 @@ class TopicView
post_custom_fields_allowlisters << block
end
def self.allowed_post_custom_fields(user)
wpcf = default_post_custom_fields + post_custom_fields_allowlisters.map { |w| w.call(user) }
def self.allowed_post_custom_fields(user, topic)
wpcf = default_post_custom_fields + post_custom_fields_allowlisters.map { |w| w.call(user, topic) }
wpcf.flatten.uniq
end
@ -116,7 +116,7 @@ class TopicView
@user_custom_fields = User.custom_fields_for_ids(@posts.pluck(:user_id), added_fields)
end
if (allowed_fields = TopicView.allowed_post_custom_fields(@user)).present?
if (allowed_fields = TopicView.allowed_post_custom_fields(@user, @topic)).present?
@post_custom_fields = Post.custom_fields_for_ids(@posts.pluck(:id), allowed_fields)
end
end