mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
FEATURE: Add setting & preference for search sort default order (#24428)
This commit adds a new `search_default_sort_order` site setting, set to "relevance" by default, that controls the default sort order for the full page /search route. If the user changes the order in the dropdown on that page, we remember their preference automatically, and it takes precedence over the site setting as a default from then on. This way people who prefer e.g. Latest Post as their default can make it so.
This commit is contained in:
29
app/models/search_sort_order_site_setting.rb
Normal file
29
app/models/search_sort_order_site_setting.rb
Normal file
@@ -0,0 +1,29 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
class SearchSortOrderSiteSetting < EnumSiteSetting
|
||||
def self.valid_value?(val)
|
||||
val.to_i.to_s == val.to_s && values.any? { |v| v[:value] == val.to_i }
|
||||
end
|
||||
|
||||
def self.values
|
||||
@values ||= [
|
||||
{ name: "search.relevance", value: 0, id: :relevance },
|
||||
{ name: "search.latest_post", value: 1, id: :latest },
|
||||
{ name: "search.most_liked", value: 2, id: :likes },
|
||||
{ name: "search.most_viewed", value: 3, id: :views },
|
||||
{ name: "search.latest_topic", value: 4, id: :latest_topic },
|
||||
]
|
||||
end
|
||||
|
||||
def self.value_from_id(id)
|
||||
values.find { |v| v[:id] == id }[:value]
|
||||
end
|
||||
|
||||
def self.id_from_value(value)
|
||||
values.find { |v| v[:value] == value }[:id]
|
||||
end
|
||||
|
||||
def self.translate_names?
|
||||
true
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user