mirror of
https://github.com/discourse/discourse.git
synced 2025-06-18 00:13:48 +08:00
DEV: Setup experimental sidebar skeleton (#16575)
* hidden siteSetting to enable experimental sidebar * user preference to enable experimental sidebar * `experimental_sidebar_enabled` attribute for current user * Empty glimmer component for Sidebar
This commit is contained in:

committed by
GitHub

parent
9f9131efbe
commit
98c49acad5
@ -0,0 +1,3 @@
|
|||||||
|
import GlimmerComponent from "discourse/components/glimmer";
|
||||||
|
|
||||||
|
export default class Sidebar extends GlimmerComponent {}
|
@ -58,6 +58,7 @@ export default Controller.extend({
|
|||||||
"skip_new_user_tips",
|
"skip_new_user_tips",
|
||||||
"color_scheme_id",
|
"color_scheme_id",
|
||||||
"dark_scheme_id",
|
"dark_scheme_id",
|
||||||
|
"enable_experimental_sidebar",
|
||||||
];
|
];
|
||||||
|
|
||||||
if (makeThemeDefault) {
|
if (makeThemeDefault) {
|
||||||
|
@ -99,6 +99,7 @@ let userOptionFields = [
|
|||||||
"skip_new_user_tips",
|
"skip_new_user_tips",
|
||||||
"default_calendar",
|
"default_calendar",
|
||||||
"bookmark_auto_delete_preference",
|
"bookmark_auto_delete_preference",
|
||||||
|
"enable_experimental_sidebar",
|
||||||
];
|
];
|
||||||
|
|
||||||
export function addSaveableUserOptionField(fieldName) {
|
export function addSaveableUserOptionField(fieldName) {
|
||||||
|
@ -25,6 +25,11 @@
|
|||||||
{{create-topics-notice}}
|
{{create-topics-notice}}
|
||||||
{{plugin-outlet name="top-notices" connectorTagName="div" args=(hash currentPath=router._router.currentPath)}}
|
{{plugin-outlet name="top-notices" connectorTagName="div" args=(hash currentPath=router._router.currentPath)}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
{{#if currentUser.experimental_sidebar_enabled}}
|
||||||
|
<Sidebar />
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
{{outlet}}
|
{{outlet}}
|
||||||
{{outlet "user-card"}}
|
{{outlet "user-card"}}
|
||||||
</div>
|
</div>
|
||||||
|
@ -133,6 +133,10 @@
|
|||||||
<fieldset class="control-group other">
|
<fieldset class="control-group other">
|
||||||
<legend class="control-label">{{i18n "user.other_settings"}}</legend>
|
<legend class="control-label">{{i18n "user.other_settings"}}</legend>
|
||||||
|
|
||||||
|
{{#if siteSettings.enable_experimental_sidebar}}
|
||||||
|
{{preference-checkbox labelKey="user.enable_experimental_sidebar" checked=model.user_option.enable_experimental_sidebar class="pref-external-links"}}
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
{{preference-checkbox labelKey="user.external_links_in_new_tab" checked=model.user_option.external_links_in_new_tab class="pref-external-links"}}
|
{{preference-checkbox labelKey="user.external_links_in_new_tab" checked=model.user_option.external_links_in_new_tab class="pref-external-links"}}
|
||||||
{{preference-checkbox labelKey="user.enable_quoting" checked=model.user_option.enable_quoting class="pref-enable-quoting"}}
|
{{preference-checkbox labelKey="user.enable_quoting" checked=model.user_option.enable_quoting class="pref-enable-quoting"}}
|
||||||
{{preference-checkbox labelKey="user.enable_defer" checked=model.user_option.enable_defer class="pref-defer-undread"}}
|
{{preference-checkbox labelKey="user.enable_defer" checked=model.user_option.enable_defer class="pref-defer-undread"}}
|
||||||
|
@ -261,6 +261,7 @@ end
|
|||||||
# default_calendar :integer default("none_selected"), not null
|
# default_calendar :integer default("none_selected"), not null
|
||||||
# oldest_search_log_date :datetime
|
# oldest_search_log_date :datetime
|
||||||
# bookmark_auto_delete_preference :integer default(3), not null
|
# bookmark_auto_delete_preference :integer default(3), not null
|
||||||
|
# enable_experimental_sidebar :boolean default(FALSE)
|
||||||
#
|
#
|
||||||
# Indexes
|
# Indexes
|
||||||
#
|
#
|
||||||
|
@ -69,7 +69,8 @@ class CurrentUserSerializer < BasicUserSerializer
|
|||||||
:draft_count,
|
:draft_count,
|
||||||
:default_calendar,
|
:default_calendar,
|
||||||
:bookmark_auto_delete_preference,
|
:bookmark_auto_delete_preference,
|
||||||
:pending_posts_count
|
:pending_posts_count,
|
||||||
|
:experimental_sidebar_enabled
|
||||||
|
|
||||||
delegate :user_stat, to: :object, private: true
|
delegate :user_stat, to: :object, private: true
|
||||||
delegate :any_posts, :draft_count, :pending_posts_count, :read_faq?, to: :user_stat
|
delegate :any_posts, :draft_count, :pending_posts_count, :read_faq?, to: :user_stat
|
||||||
@ -327,4 +328,12 @@ class CurrentUserSerializer < BasicUserSerializer
|
|||||||
def include_has_topic_draft?
|
def include_has_topic_draft?
|
||||||
Draft.has_topic_draft(object)
|
Draft.has_topic_draft(object)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def experimental_sidebar_enabled
|
||||||
|
object.user_option.enable_experimental_sidebar
|
||||||
|
end
|
||||||
|
|
||||||
|
def include_experimental_sidebar_enabled?
|
||||||
|
SiteSetting.enable_experimental_sidebar
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -35,6 +35,7 @@ class UserOptionSerializer < ApplicationSerializer
|
|||||||
:skip_new_user_tips,
|
:skip_new_user_tips,
|
||||||
:default_calendar,
|
:default_calendar,
|
||||||
:oldest_search_log_date,
|
:oldest_search_log_date,
|
||||||
|
:enable_experimental_sidebar
|
||||||
|
|
||||||
def auto_track_topics_after_msecs
|
def auto_track_topics_after_msecs
|
||||||
object.auto_track_topics_after_msecs || SiteSetting.default_other_auto_track_topics_after_msecs
|
object.auto_track_topics_after_msecs || SiteSetting.default_other_auto_track_topics_after_msecs
|
||||||
@ -52,4 +53,8 @@ class UserOptionSerializer < ApplicationSerializer
|
|||||||
object.theme_ids.presence || [SiteSetting.default_theme_id]
|
object.theme_ids.presence || [SiteSetting.default_theme_id]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def include_enable_experimental_sidebar?
|
||||||
|
SiteSetting.enable_experimental_sidebar
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
@ -47,7 +47,8 @@ class UserUpdater
|
|||||||
:title_count_mode,
|
:title_count_mode,
|
||||||
:timezone,
|
:timezone,
|
||||||
:skip_new_user_tips,
|
:skip_new_user_tips,
|
||||||
:default_calendar
|
:default_calendar,
|
||||||
|
:enable_experimental_sidebar
|
||||||
]
|
]
|
||||||
|
|
||||||
NOTIFICATION_SCHEDULE_ATTRS = -> {
|
NOTIFICATION_SCHEDULE_ATTRS = -> {
|
||||||
|
@ -1156,6 +1156,7 @@ en:
|
|||||||
external_links_in_new_tab: "Open all external links in a new tab"
|
external_links_in_new_tab: "Open all external links in a new tab"
|
||||||
enable_quoting: "Enable quote reply for highlighted text"
|
enable_quoting: "Enable quote reply for highlighted text"
|
||||||
enable_defer: "Enable defer to mark topics unread"
|
enable_defer: "Enable defer to mark topics unread"
|
||||||
|
enable_experimental_sidebar: "Enable experimental sidebar"
|
||||||
change: "change"
|
change: "change"
|
||||||
featured_topic: "Featured Topic"
|
featured_topic: "Featured Topic"
|
||||||
moderator: "%{user} is a moderator"
|
moderator: "%{user} is a moderator"
|
||||||
|
@ -1957,6 +1957,10 @@ developer:
|
|||||||
enable_safe_mode:
|
enable_safe_mode:
|
||||||
default: true
|
default: true
|
||||||
client: true
|
client: true
|
||||||
|
enable_experimental_sidebar:
|
||||||
|
default: false
|
||||||
|
client: true
|
||||||
|
hidden: true
|
||||||
|
|
||||||
embedding:
|
embedding:
|
||||||
embed_by_username:
|
embed_by_username:
|
||||||
|
@ -0,0 +1,7 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class AddEnableExperimentalSidebarToUserOptions < ActiveRecord::Migration[6.1]
|
||||||
|
def change
|
||||||
|
add_column :user_options, :enable_experimental_sidebar, :boolean, default: false
|
||||||
|
end
|
||||||
|
end
|
@ -2309,6 +2309,21 @@ describe UsersController do
|
|||||||
expect(response).to be_forbidden
|
expect(response).to be_forbidden
|
||||||
expect(user.reload.name).not_to eq 'Jim Tom'
|
expect(user.reload.name).not_to eq 'Jim Tom'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context 'enabling experimental sidebar' do
|
||||||
|
before do
|
||||||
|
sign_in(user)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "should be able to update UserOption#enable_experimental_sidebar" do
|
||||||
|
SiteSetting.enable_experimental_sidebar = true
|
||||||
|
|
||||||
|
put "/u/#{user.username}.json", params: { enable_experimental_sidebar: 'true' }
|
||||||
|
|
||||||
|
expect(response.status).to eq(200)
|
||||||
|
expect(user.user_option.enable_experimental_sidebar).to eq(true)
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -3882,6 +3897,23 @@ describe UsersController do
|
|||||||
expect(topic_post_count[topic.id.to_s]).to eq(2)
|
expect(topic_post_count[topic.id.to_s]).to eq(2)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it "includes UserOption#enable_experimental_sidebar when SiteSetting.enable_experimental_sidebar is true" do
|
||||||
|
SiteSetting.enable_experimental_sidebar = true
|
||||||
|
user1.user_option.update!(enable_experimental_sidebar: true)
|
||||||
|
|
||||||
|
get "/u/#{user1.username}.json"
|
||||||
|
|
||||||
|
expect(response.status).to eq(200)
|
||||||
|
expect(response.parsed_body["user"]["user_option"]["enable_experimental_sidebar"]).to eq(true)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "does not include UserOption#enable_experimental_sidebar when SiteSetting.enable_experimental_sidebar is false" do
|
||||||
|
get "/u/#{user1.username}.json"
|
||||||
|
|
||||||
|
expect(response.status).to eq(200)
|
||||||
|
expect(response.parsed_body["user"]["user_option"]["enable_experimental_sidebar"]).to eq(nil)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
it "should be able to view a user" do
|
it "should be able to view a user" do
|
||||||
|
Reference in New Issue
Block a user