DEV: Make the Glimmer Search Menu the new default (#25092)
- Convert group based `experimental_search_menu_groups_enabled` site setting to be a _hidden_ boolean `experimental_search_menu` setting. - Make default `true` - Remove widget search menu tests Discourse Encrypt Test Failure Fix - https://github.com/discourse/discourse-encrypt/pull/301
This commit is contained in:
parent
117611ea82
commit
1f94da349b
|
@ -521,7 +521,7 @@ export default createWidget("header", {
|
|||
const panels = [this.attach("header-buttons", attrs), headerIcons];
|
||||
|
||||
if (state.searchVisible || this.search.visible) {
|
||||
if (this.currentUser?.experimental_search_menu_groups_enabled) {
|
||||
if (this.siteSettings.experimental_search_menu) {
|
||||
this.search.inTopicContext =
|
||||
this.search.inTopicContext && inTopicRoute;
|
||||
panels.push(this.attach("glimmer-search-menu-wrapper"));
|
||||
|
@ -731,7 +731,7 @@ export default createWidget("header", {
|
|||
focusSearchInput() {
|
||||
if (
|
||||
this.state.searchVisible &&
|
||||
!this.currentUser?.experimental_search_menu_groups_enabled
|
||||
!this.siteSettings.experimental_search_menu
|
||||
) {
|
||||
schedule("afterRender", () => {
|
||||
const searchInput = document.querySelector("#search-term");
|
||||
|
|
|
@ -9,9 +9,6 @@ import {
|
|||
|
||||
acceptance("Search - Glimmer - Mobile", function (needs) {
|
||||
needs.mobileView();
|
||||
needs.user({
|
||||
experimental_search_menu_groups_enabled: true,
|
||||
});
|
||||
|
||||
test("search", async function (assert) {
|
||||
await visit("/");
|
||||
|
|
|
@ -15,18 +15,11 @@ import {
|
|||
exists,
|
||||
query,
|
||||
queryAll,
|
||||
updateCurrentUser,
|
||||
} from "discourse/tests/helpers/qunit-helpers";
|
||||
import selectKit from "discourse/tests/helpers/select-kit-helper";
|
||||
import I18n from "discourse-i18n";
|
||||
|
||||
acceptance("Search - Glimmer - Anonymous", function (needs) {
|
||||
needs.user({
|
||||
experimental_search_menu_groups_enabled: true,
|
||||
});
|
||||
needs.hooks.beforeEach(() => {
|
||||
updateCurrentUser({ is_anonymous: true });
|
||||
});
|
||||
needs.pretender((server, helper) => {
|
||||
server.get("/search/query", (request) => {
|
||||
if (request.queryParams.type_filter === DEFAULT_TYPE_FILTER) {
|
||||
|
@ -439,9 +432,7 @@ acceptance("Search - Glimmer - Anonymous", function (needs) {
|
|||
});
|
||||
|
||||
acceptance("Search - Glimmer - Authenticated", function (needs) {
|
||||
needs.user({
|
||||
experimental_search_menu_groups_enabled: true,
|
||||
});
|
||||
needs.user();
|
||||
needs.settings({
|
||||
log_search_queries: true,
|
||||
allow_uncategorized_topics: true,
|
||||
|
@ -742,9 +733,7 @@ acceptance("Search - Glimmer - Authenticated", function (needs) {
|
|||
});
|
||||
|
||||
acceptance("Search - Glimmer - with tagging enabled", function (needs) {
|
||||
needs.user({
|
||||
experimental_search_menu_groups_enabled: true,
|
||||
});
|
||||
needs.user();
|
||||
needs.settings({ tagging_enabled: true });
|
||||
needs.pretender((server, helper) => {
|
||||
server.get("/tag/dev/notifications", () => {
|
||||
|
@ -912,10 +901,7 @@ acceptance("Search - Glimmer - with tagging enabled", function (needs) {
|
|||
});
|
||||
|
||||
acceptance("Search - Glimmer - assistant", function (needs) {
|
||||
needs.user({
|
||||
experimental_search_menu_groups_enabled: true,
|
||||
});
|
||||
|
||||
needs.user();
|
||||
needs.pretender((server, helper) => {
|
||||
server.get("/search/query", (request) => {
|
||||
if (request.queryParams["search_context[type]"] === "private_messages") {
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,567 +0,0 @@
|
|||
import { setupTest } from "ember-qunit";
|
||||
import { module, test } from "qunit";
|
||||
import {
|
||||
reciprocallyRankedList,
|
||||
searchContextDescription,
|
||||
translateResults,
|
||||
} from "discourse/lib/search";
|
||||
import I18n from "discourse-i18n";
|
||||
|
||||
module("Unit | Utility | search", function (hooks) {
|
||||
setupTest(hooks);
|
||||
|
||||
test("unescapesEmojisInBlurbs", async function (assert) {
|
||||
const source = {
|
||||
posts: [
|
||||
{
|
||||
id: 160,
|
||||
username: "pmusaraj",
|
||||
avatar_template: "/user_avatar/localhost/pmusaraj/{size}/3_2.png",
|
||||
created_at: "2019-07-22T03:47:04.864Z",
|
||||
like_count: 1,
|
||||
blurb: ":thinking: This here is a test of emojis in search blurbs.",
|
||||
post_number: 1,
|
||||
topic_id: 41,
|
||||
},
|
||||
],
|
||||
topics: [],
|
||||
users: [],
|
||||
categories: [],
|
||||
tags: [],
|
||||
groups: [],
|
||||
grouped_search_result: false,
|
||||
};
|
||||
|
||||
const results = await translateResults(source);
|
||||
const blurb = results.posts[0].get("blurb");
|
||||
|
||||
assert.ok(blurb.includes("thinking.png"));
|
||||
assert.ok(blurb.startsWith('<img width="20" height="20" src'));
|
||||
assert.ok(!blurb.includes(":thinking:"));
|
||||
});
|
||||
|
||||
test("searchContextDescription", function (assert) {
|
||||
assert.strictEqual(
|
||||
searchContextDescription("topic"),
|
||||
I18n.t("search.context.topic")
|
||||
);
|
||||
assert.strictEqual(
|
||||
searchContextDescription("user", "silvio.dante"),
|
||||
I18n.t("search.context.user", { username: "silvio.dante" })
|
||||
);
|
||||
assert.strictEqual(
|
||||
searchContextDescription("category", "staff"),
|
||||
I18n.t("search.context.category", { category: "staff" })
|
||||
);
|
||||
assert.strictEqual(
|
||||
searchContextDescription("tag", "important"),
|
||||
I18n.t("search.context.tag", { tag: "important" })
|
||||
);
|
||||
assert.strictEqual(
|
||||
searchContextDescription("private_messages"),
|
||||
I18n.t("search.context.private_messages")
|
||||
);
|
||||
assert.strictEqual(searchContextDescription("bad_type"), undefined);
|
||||
});
|
||||
|
||||
test("reciprocallyRankedList", async function (assert) {
|
||||
const sourceA = [
|
||||
{
|
||||
id: 250,
|
||||
name: "Bruce Wayne",
|
||||
username: "batman",
|
||||
topic_id: 96,
|
||||
topic: {
|
||||
id: 96,
|
||||
title: "I like to fight crime",
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 104,
|
||||
name: "Steve Rogers",
|
||||
username: "captain_america",
|
||||
topic_id: 2,
|
||||
topic: {
|
||||
id: 2,
|
||||
title: "What its like being frozen...",
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 202,
|
||||
name: "Peter Parker",
|
||||
username: "spidey",
|
||||
topic_id: 32,
|
||||
topic: {
|
||||
id: 32,
|
||||
title: "My experience meeting the Avengers",
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 290,
|
||||
name: "Clark Kent",
|
||||
username: "superman",
|
||||
topic_id: 111,
|
||||
topic: {
|
||||
id: 111,
|
||||
title: "My fear of Kryptonite",
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
const sourceB = [
|
||||
{
|
||||
id: 104,
|
||||
name: "Tony Stark",
|
||||
username: "ironman",
|
||||
topic_id: 95,
|
||||
topic: {
|
||||
id: 95,
|
||||
title: "What I learned from my father",
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 246,
|
||||
name: "The Joker",
|
||||
username: "joker",
|
||||
topic_id: 93,
|
||||
topic: {
|
||||
id: 93,
|
||||
title: "Why don't you put a smile on that face...",
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 104,
|
||||
name: "Steve Rogers",
|
||||
username: "captain_america",
|
||||
topic_id: 2,
|
||||
topic: {
|
||||
id: 2,
|
||||
title: "What its like being frozen...",
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 245,
|
||||
name: "Loki",
|
||||
username: "loki",
|
||||
topic_id: 92,
|
||||
topic: {
|
||||
id: 92,
|
||||
title: "There is only one person you can trust",
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
const desiredMixedResults = [
|
||||
{
|
||||
id: 104,
|
||||
itemKey: "2_2",
|
||||
name: "Steve Rogers",
|
||||
reciprocalRank: 0.30952380952380953,
|
||||
topic: {
|
||||
id: 2,
|
||||
title: "What its like being frozen...",
|
||||
},
|
||||
topic_id: 2,
|
||||
username: "captain_america",
|
||||
},
|
||||
{
|
||||
id: 250,
|
||||
itemKey: "96_96",
|
||||
name: "Bruce Wayne",
|
||||
reciprocalRank: 0.2,
|
||||
topic: {
|
||||
id: 96,
|
||||
title: "I like to fight crime",
|
||||
},
|
||||
topic_id: 96,
|
||||
username: "batman",
|
||||
},
|
||||
{
|
||||
id: 104,
|
||||
itemKey: "95_95",
|
||||
name: "Tony Stark",
|
||||
reciprocalRank: 0.2,
|
||||
topic: {
|
||||
id: 95,
|
||||
title: "What I learned from my father",
|
||||
},
|
||||
topic_id: 95,
|
||||
username: "ironman",
|
||||
},
|
||||
{
|
||||
id: 246,
|
||||
itemKey: "93_93",
|
||||
name: "The Joker",
|
||||
reciprocalRank: 0.16666666666666666,
|
||||
topic: {
|
||||
id: 93,
|
||||
title: "Why don't you put a smile on that face...",
|
||||
},
|
||||
topic_id: 93,
|
||||
username: "joker",
|
||||
},
|
||||
{
|
||||
id: 202,
|
||||
itemKey: "32_32",
|
||||
name: "Peter Parker",
|
||||
reciprocalRank: 0.14285714285714285,
|
||||
topic: {
|
||||
id: 32,
|
||||
title: "My experience meeting the Avengers",
|
||||
},
|
||||
topic_id: 32,
|
||||
username: "spidey",
|
||||
},
|
||||
{
|
||||
id: 290,
|
||||
itemKey: "111_111",
|
||||
name: "Clark Kent",
|
||||
reciprocalRank: 0.125,
|
||||
topic: {
|
||||
id: 111,
|
||||
title: "My fear of Kryptonite",
|
||||
},
|
||||
topic_id: 111,
|
||||
username: "superman",
|
||||
},
|
||||
{
|
||||
id: 245,
|
||||
itemKey: "92_92",
|
||||
name: "Loki",
|
||||
reciprocalRank: 0.125,
|
||||
topic: {
|
||||
id: 92,
|
||||
title: "There is only one person you can trust",
|
||||
},
|
||||
topic_id: 92,
|
||||
username: "loki",
|
||||
},
|
||||
];
|
||||
|
||||
const rankedList = reciprocallyRankedList(
|
||||
[sourceA, sourceB],
|
||||
["topic_id", "topic_id"]
|
||||
);
|
||||
|
||||
assert.deepEqual(
|
||||
rankedList,
|
||||
desiredMixedResults,
|
||||
"it correctly ranks the results using the reciprocal ranking algorithm"
|
||||
);
|
||||
});
|
||||
|
||||
test("reciprocallyRankedList (varied lists with more sources)", async function (assert) {
|
||||
const sourceA = [
|
||||
{
|
||||
id: 1,
|
||||
name: "Tony Stark",
|
||||
username: "ironman",
|
||||
topic_id: 21,
|
||||
topic: {
|
||||
id: 21,
|
||||
title: "I am iron man",
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
name: "Steve Rogers",
|
||||
username: "captain_america",
|
||||
topic_id: 22,
|
||||
topic: {
|
||||
id: 22,
|
||||
title: "What its like being frozen...",
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
name: "Peter Parker",
|
||||
username: "spidey",
|
||||
topic_id: 23,
|
||||
topic: {
|
||||
id: 23,
|
||||
title: "My experience meeting the Avengers",
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 4,
|
||||
name: "Stephen Strange",
|
||||
username: "doctor_strange",
|
||||
topic_id: 24,
|
||||
topic: {
|
||||
id: 24,
|
||||
title: "14 mil different possible futures",
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
const sourceB = [
|
||||
{
|
||||
id: 5,
|
||||
name: "Clark Kent",
|
||||
username: "superman",
|
||||
tid: 90,
|
||||
topic: {
|
||||
id: 90,
|
||||
title: "I am not from this planet.",
|
||||
fancy_title: "I am not from this planet.",
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 6,
|
||||
name: "Bruce Wayne",
|
||||
username: "batman",
|
||||
tid: 91,
|
||||
topic: {
|
||||
id: 91,
|
||||
title: "It's not who I am underneath, but what I do that defines me.",
|
||||
fancy_title: "It's what I do that defines me.",
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 7,
|
||||
name: "Steve Rogers",
|
||||
username: "captain_america",
|
||||
tid: 22,
|
||||
topic: {
|
||||
id: 22,
|
||||
title: "What its like being frozen...",
|
||||
fancy_title: "What its like being frozen...",
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 8,
|
||||
name: "Barry Allen",
|
||||
username: "the_flash",
|
||||
tid: 93,
|
||||
topic: {
|
||||
id: 93,
|
||||
title: "Run Barry run!",
|
||||
fancy_title: "Run barry run!",
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
const sourceC = [
|
||||
{
|
||||
id: 41,
|
||||
tuid: 906,
|
||||
name: "The Joker",
|
||||
username: "joker",
|
||||
user_id: 81,
|
||||
flair_name: "DC",
|
||||
topic: {
|
||||
title: "I am not from this planet.",
|
||||
can_edit: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 91,
|
||||
tuid: 23,
|
||||
name: "Peter Parker",
|
||||
username: "spidey",
|
||||
user_id: 80,
|
||||
flair_name: "Marvel",
|
||||
topic: {
|
||||
title: "My experience meeting the Avengers.",
|
||||
can_edit: false,
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 42,
|
||||
tuid: 96,
|
||||
name: "Thanos",
|
||||
username: "thanos",
|
||||
user_id: 82,
|
||||
flair_name: "Marvel",
|
||||
topic: {
|
||||
title: "Fine, I'll do it myself",
|
||||
can_edit: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 43,
|
||||
tuid: 97,
|
||||
name: "Lex Luthor",
|
||||
username: "lex",
|
||||
user_id: 83,
|
||||
flair_name: "DC",
|
||||
topic: {
|
||||
title:
|
||||
"Devils don't come from the hell beneath us, they come from the sky",
|
||||
can_edit: true,
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
const desiredMixedResults = [
|
||||
{
|
||||
id: 1,
|
||||
itemKey: "21__",
|
||||
name: "Tony Stark",
|
||||
reciprocalRank: 0.2,
|
||||
topic: {
|
||||
id: 21,
|
||||
title: "I am iron man",
|
||||
},
|
||||
topic_id: 21,
|
||||
username: "ironman",
|
||||
},
|
||||
{
|
||||
id: 5,
|
||||
itemKey: "_90_",
|
||||
name: "Clark Kent",
|
||||
reciprocalRank: 0.2,
|
||||
tid: 90,
|
||||
topic: {
|
||||
fancy_title: "I am not from this planet.",
|
||||
id: 90,
|
||||
title: "I am not from this planet.",
|
||||
},
|
||||
username: "superman",
|
||||
},
|
||||
{
|
||||
flair_name: "DC",
|
||||
id: 41,
|
||||
itemKey: "__906",
|
||||
name: "The Joker",
|
||||
reciprocalRank: 0.2,
|
||||
topic: {
|
||||
can_edit: true,
|
||||
title: "I am not from this planet.",
|
||||
},
|
||||
tuid: 906,
|
||||
user_id: 81,
|
||||
username: "joker",
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
itemKey: "22__",
|
||||
name: "Steve Rogers",
|
||||
reciprocalRank: 0.16666666666666666,
|
||||
topic: {
|
||||
id: 22,
|
||||
title: "What its like being frozen...",
|
||||
},
|
||||
topic_id: 22,
|
||||
username: "captain_america",
|
||||
},
|
||||
{
|
||||
id: 6,
|
||||
itemKey: "_91_",
|
||||
name: "Bruce Wayne",
|
||||
reciprocalRank: 0.16666666666666666,
|
||||
tid: 91,
|
||||
topic: {
|
||||
fancy_title: "It's what I do that defines me.",
|
||||
id: 91,
|
||||
title: "It's not who I am underneath, but what I do that defines me.",
|
||||
},
|
||||
username: "batman",
|
||||
},
|
||||
{
|
||||
flair_name: "Marvel",
|
||||
id: 91,
|
||||
itemKey: "__23",
|
||||
name: "Peter Parker",
|
||||
reciprocalRank: 0.16666666666666666,
|
||||
topic: {
|
||||
can_edit: false,
|
||||
title: "My experience meeting the Avengers.",
|
||||
},
|
||||
tuid: 23,
|
||||
user_id: 80,
|
||||
username: "spidey",
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
itemKey: "23__",
|
||||
name: "Peter Parker",
|
||||
reciprocalRank: 0.14285714285714285,
|
||||
topic: {
|
||||
id: 23,
|
||||
title: "My experience meeting the Avengers",
|
||||
},
|
||||
topic_id: 23,
|
||||
username: "spidey",
|
||||
},
|
||||
{
|
||||
id: 7,
|
||||
itemKey: "_22_",
|
||||
name: "Steve Rogers",
|
||||
reciprocalRank: 0.14285714285714285,
|
||||
tid: 22,
|
||||
topic: {
|
||||
fancy_title: "What its like being frozen...",
|
||||
id: 22,
|
||||
title: "What its like being frozen...",
|
||||
},
|
||||
username: "captain_america",
|
||||
},
|
||||
{
|
||||
flair_name: "Marvel",
|
||||
id: 42,
|
||||
itemKey: "__96",
|
||||
name: "Thanos",
|
||||
reciprocalRank: 0.14285714285714285,
|
||||
topic: {
|
||||
can_edit: true,
|
||||
title: "Fine, I'll do it myself",
|
||||
},
|
||||
tuid: 96,
|
||||
user_id: 82,
|
||||
username: "thanos",
|
||||
},
|
||||
{
|
||||
id: 4,
|
||||
itemKey: "24__",
|
||||
name: "Stephen Strange",
|
||||
reciprocalRank: 0.125,
|
||||
topic: {
|
||||
id: 24,
|
||||
title: "14 mil different possible futures",
|
||||
},
|
||||
topic_id: 24,
|
||||
username: "doctor_strange",
|
||||
},
|
||||
{
|
||||
id: 8,
|
||||
itemKey: "_93_",
|
||||
name: "Barry Allen",
|
||||
reciprocalRank: 0.125,
|
||||
tid: 93,
|
||||
topic: {
|
||||
fancy_title: "Run barry run!",
|
||||
id: 93,
|
||||
title: "Run Barry run!",
|
||||
},
|
||||
username: "the_flash",
|
||||
},
|
||||
{
|
||||
flair_name: "DC",
|
||||
id: 43,
|
||||
itemKey: "__97",
|
||||
name: "Lex Luthor",
|
||||
reciprocalRank: 0.125,
|
||||
topic: {
|
||||
can_edit: true,
|
||||
title:
|
||||
"Devils don't come from the hell beneath us, they come from the sky",
|
||||
},
|
||||
tuid: 97,
|
||||
user_id: 83,
|
||||
username: "lex",
|
||||
},
|
||||
];
|
||||
|
||||
const rankedList = reciprocallyRankedList(
|
||||
[sourceA, sourceB, sourceC],
|
||||
["topic_id", "tid", "tuid"]
|
||||
);
|
||||
|
||||
assert.deepEqual(
|
||||
rankedList,
|
||||
desiredMixedResults,
|
||||
"it correctly ranks the results using the reciprocal ranking algorithm"
|
||||
);
|
||||
});
|
||||
});
|
|
@ -1807,10 +1807,6 @@ class User < ActiveRecord::Base
|
|||
in_any_groups?(SiteSetting.experimental_new_new_view_groups_map)
|
||||
end
|
||||
|
||||
def experimental_search_menu_groups_enabled?
|
||||
in_any_groups?(SiteSetting.experimental_search_menu_groups_map)
|
||||
end
|
||||
|
||||
def watched_precedence_over_muted
|
||||
if user_option.watched_precedence_over_muted.nil?
|
||||
SiteSetting.watched_precedence_over_muted
|
||||
|
|
|
@ -66,8 +66,7 @@ class CurrentUserSerializer < BasicUserSerializer
|
|||
:sidebar_tags,
|
||||
:sidebar_category_ids,
|
||||
:sidebar_sections,
|
||||
:new_new_view_enabled?,
|
||||
:experimental_search_menu_groups_enabled?
|
||||
:new_new_view_enabled?
|
||||
|
||||
delegate :user_stat, to: :object, private: true
|
||||
delegate :any_posts, :draft_count, :pending_posts_count, :read_faq?, to: :user_stat
|
||||
|
|
|
@ -2490,7 +2490,6 @@ en:
|
|||
experimental_new_new_view_groups: 'EXPERIMENTAL: Enable a new topics list that combines unread and new topics and make the "Everything" link in the sidebar link to it.'
|
||||
enable_custom_sidebar_sections: "EXPERIMENTAL: Enable custom sidebar sections"
|
||||
experimental_topics_filter: "EXPERIMENTAL: Enables the experimental topics filter route at /filter"
|
||||
experimental_search_menu_groups: "EXPERIMENTAL: Enables the new search menu that has been upgraded to use glimmer"
|
||||
enable_experimental_lightbox: "EXPERIMENTAL: Replace the default image lightbox with the revamped design."
|
||||
|
||||
experimental_form_templates: "EXPERIMENTAL: Enable the form templates feature. <b>After enabled,</b> manage the templates at <a href='%{base_path}/admin/customize/form-templates'>Customize / Templates</a>."
|
||||
|
|
|
@ -2281,12 +2281,10 @@ developer:
|
|||
experimental_topics_filter:
|
||||
client: true
|
||||
default: false
|
||||
experimental_search_menu_groups:
|
||||
type: group_list
|
||||
list_type: compact
|
||||
default: ""
|
||||
allow_any: false
|
||||
refresh: true
|
||||
experimental_search_menu:
|
||||
client: true
|
||||
hidden: true
|
||||
default: true
|
||||
max_sidebar_section_links:
|
||||
default: 50
|
||||
hidden: true
|
||||
|
@ -2796,8 +2794,8 @@ uncategorized:
|
|||
hidden: true
|
||||
|
||||
max_api_invites:
|
||||
default: 200
|
||||
hidden: true
|
||||
default: 200
|
||||
hidden: true
|
||||
|
||||
overridden_robots_txt:
|
||||
default: ""
|
||||
|
|
Loading…
Reference in New Issue