mirror of
https://github.com/discourse/discourse.git
synced 2025-05-28 13:51:18 +08:00
DEV: Plugin API to allow creation of directory columns with item query (#13402)
The first thing we needed here was an enum rather than a boolean to determine how a directory_column was created. Now we have `automatic`, `user_field` and `plugin` directory columns. This plugin API is assuming that the plugin has added a migration to a column to the `directory_items` table. This was created to be initially used by discourse-solved. PR with API usage - https://github.com/discourse/discourse-solved/pull/137/
This commit is contained in:

committed by
GitHub

parent
ea2833d0d8
commit
0c42a29dc4
@ -26,13 +26,14 @@ class DirectoryItemsController < ApplicationController
|
||||
result = result.references(:user).where.not(users: { username: params[:exclude_usernames].split(",") })
|
||||
end
|
||||
|
||||
order = params[:order] || DirectoryItem.headings.first
|
||||
order = params[:order] || DirectoryColumn.automatic_column_names.first
|
||||
dir = params[:asc] ? 'ASC' : 'DESC'
|
||||
if DirectoryItem.headings.include?(order.to_sym)
|
||||
if DirectoryColumn.active_column_names.include?(order.to_sym)
|
||||
result = result.order("directory_items.#{order} #{dir}, directory_items.id")
|
||||
elsif params[:order] === 'username'
|
||||
result = result.order("users.#{order} #{dir}, directory_items.id")
|
||||
else
|
||||
# Ordering by user field value
|
||||
user_field = UserField.find_by(name: params[:order])
|
||||
if user_field
|
||||
result = result
|
||||
@ -98,6 +99,10 @@ class DirectoryItemsController < ApplicationController
|
||||
serializer_opts[:user_field_ids] = params[:user_field_ids]&.split("|")&.map(&:to_i)
|
||||
end
|
||||
|
||||
if params[:plugin_column_ids]
|
||||
serializer_opts[:plugin_column_ids] = params[:plugin_column_ids]&.split("|")&.map(&:to_i)
|
||||
end
|
||||
|
||||
serialized = serialize_data(result, DirectoryItemSerializer, serializer_opts)
|
||||
render_json_dump(directory_items: serialized,
|
||||
meta: {
|
||||
|
Reference in New Issue
Block a user