DEV: Migrate sidebar site settings (#19336)
This new site setting replaces the `enable_experimental_sidebar_hamburger` and `enable_sidebar` site settings as the sidebar feature exits the experimental phase. Note that we're replacing this without depreciation since the previous site setting was considered experimental. Internal Ref: /t/86563
This commit is contained in:
parent
f7f0ca801b
commit
fde9e6bc25
|
@ -43,10 +43,8 @@ const SiteHeaderComponent = MountWidget.extend(
|
||||||
@observes("site.narrowDesktopView")
|
@observes("site.narrowDesktopView")
|
||||||
narrowDesktopViewChanged() {
|
narrowDesktopViewChanged() {
|
||||||
this.eventDispatched("dom:clean", "header");
|
this.eventDispatched("dom:clean", "header");
|
||||||
if (
|
|
||||||
this.siteSettings.enable_experimental_sidebar_hamburger &&
|
if (this._dropDownHeaderEnabled()) {
|
||||||
(!this.sidebarEnabled || this.site.narrowDesktopView)
|
|
||||||
) {
|
|
||||||
this.appEvents.on(
|
this.appEvents.on(
|
||||||
"sidebar-hamburger-dropdown:rendered",
|
"sidebar-hamburger-dropdown:rendered",
|
||||||
this,
|
this,
|
||||||
|
@ -232,10 +230,7 @@ const SiteHeaderComponent = MountWidget.extend(
|
||||||
this.appEvents.on("user-menu:rendered", this, "_animateMenu");
|
this.appEvents.on("user-menu:rendered", this, "_animateMenu");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (
|
if (this._dropDownHeaderEnabled()) {
|
||||||
this.siteSettings.enable_experimental_sidebar_hamburger &&
|
|
||||||
(!this.sidebarEnabled || this.site.narrowDesktopView)
|
|
||||||
) {
|
|
||||||
this.appEvents.on(
|
this.appEvents.on(
|
||||||
"sidebar-hamburger-dropdown:rendered",
|
"sidebar-hamburger-dropdown:rendered",
|
||||||
this,
|
this,
|
||||||
|
@ -324,10 +319,7 @@ const SiteHeaderComponent = MountWidget.extend(
|
||||||
this.appEvents.off("user-menu:rendered", this, "_animateMenu");
|
this.appEvents.off("user-menu:rendered", this, "_animateMenu");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (
|
if (this._dropDownHeaderEnabled()) {
|
||||||
this.siteSettings.enable_experimental_sidebar_hamburger &&
|
|
||||||
!this.sidebarEnabled
|
|
||||||
) {
|
|
||||||
this.appEvents.off(
|
this.appEvents.off(
|
||||||
"sidebar-hamburger-dropdown:rendered",
|
"sidebar-hamburger-dropdown:rendered",
|
||||||
this,
|
this,
|
||||||
|
@ -469,6 +461,14 @@ const SiteHeaderComponent = MountWidget.extend(
|
||||||
this._animate = false;
|
this._animate = false;
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_dropDownHeaderEnabled() {
|
||||||
|
return (
|
||||||
|
(!this.sidebarEnabled &&
|
||||||
|
this.siteSettings.navigation_menu !== "legacy") ||
|
||||||
|
this.site.narrowDesktopView
|
||||||
|
);
|
||||||
|
},
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
@ -56,7 +56,7 @@
|
||||||
</LinkTo>
|
</LinkTo>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
{{#if @siteSettings.enable_experimental_sidebar_hamburger}}
|
{{#if (not (eq @siteSettings.navigation_menu "legacy"))}}
|
||||||
<li class="indent nav-sidebar">
|
<li class="indent nav-sidebar">
|
||||||
<LinkTo @route="preferences.sidebar">
|
<LinkTo @route="preferences.sidebar">
|
||||||
{{d-icon "bars"}}
|
{{d-icon "bars"}}
|
||||||
|
|
|
@ -64,13 +64,13 @@ export default Controller.extend({
|
||||||
|
|
||||||
@discourseComputed(
|
@discourseComputed(
|
||||||
"sidebarQueryParamOverride",
|
"sidebarQueryParamOverride",
|
||||||
"siteSettings.enable_sidebar",
|
"siteSettings.navigation_menu",
|
||||||
"canDisplaySidebar",
|
"canDisplaySidebar",
|
||||||
"sidebarDisabledRouteOverride"
|
"sidebarDisabledRouteOverride"
|
||||||
)
|
)
|
||||||
sidebarEnabled(
|
sidebarEnabled(
|
||||||
sidebarQueryParamOverride,
|
sidebarQueryParamOverride,
|
||||||
enableSidebar,
|
navigationMenu,
|
||||||
canDisplaySidebar,
|
canDisplaySidebar,
|
||||||
sidebarDisabledRouteOverride
|
sidebarDisabledRouteOverride
|
||||||
) {
|
) {
|
||||||
|
@ -95,7 +95,7 @@ export default Controller.extend({
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return enableSidebar;
|
return navigationMenu === "sidebar";
|
||||||
},
|
},
|
||||||
|
|
||||||
calculateShowSidebar() {
|
calculateShowSidebar() {
|
||||||
|
|
|
@ -509,7 +509,7 @@ class PluginApi {
|
||||||
) {
|
) {
|
||||||
const siteSettings = this.container.lookup("service:site-settings");
|
const siteSettings = this.container.lookup("service:site-settings");
|
||||||
|
|
||||||
if (siteSettings.enable_experimental_sidebar_hamburger) {
|
if (siteSettings.navigation_menu !== "legacy") {
|
||||||
try {
|
try {
|
||||||
const { href, route, label, rawLabel, className } = fn();
|
const { href, route, label, rawLabel, className } = fn();
|
||||||
const textContent = rawLabel || I18n.t(label);
|
const textContent = rawLabel || I18n.t(label);
|
||||||
|
@ -534,7 +534,7 @@ class PluginApi {
|
||||||
this.addCommunitySectionLink(args, name.match(/footerLinks/));
|
this.addCommunitySectionLink(args, name.match(/footerLinks/));
|
||||||
} catch {
|
} catch {
|
||||||
deprecated(
|
deprecated(
|
||||||
`Usage of \`api.decorateWidget('hamburger-menu:generalLinks')\` is incompatible with the \`enable_experimental_sidebar_hamburger\` site setting. Please use \`api.addCommunitySectionLink\` instead.`,
|
`Usage of \`api.decorateWidget('hamburger-menu:generalLinks')\` is incompatible with the \`navigation_menu\` site setting when not set to "legacy". Please use \`api.addCommunitySectionLink\` instead.`,
|
||||||
{ id: "discourse.decorate-widget.hamburger-widget-links" }
|
{ id: "discourse.decorate-widget.hamburger-widget-links" }
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,7 +25,7 @@
|
||||||
|
|
||||||
<div class="sidebar-wrapper">
|
<div class="sidebar-wrapper">
|
||||||
{{!-- empty div allows for animation --}}
|
{{!-- empty div allows for animation --}}
|
||||||
{{#if (and this.siteSettings.enable_experimental_sidebar_hamburger this.sidebarEnabled this.showSidebar)}}
|
{{#if (and this.sidebarEnabled this.showSidebar)}}
|
||||||
<Sidebar @toggleSidebar={{action "toggleSidebar"}}/>
|
<Sidebar @toggleSidebar={{action "toggleSidebar"}}/>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -61,7 +61,7 @@
|
||||||
</LinkTo>
|
</LinkTo>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
{{#if this.siteSettings.enable_experimental_sidebar_hamburger}}
|
{{#if (not (eq @siteSettings.navigation_menu "legacy"))}}
|
||||||
<li class="indent nav-sidebar">
|
<li class="indent nav-sidebar">
|
||||||
<LinkTo @route="preferences.sidebar">
|
<LinkTo @route="preferences.sidebar">
|
||||||
{{i18n "user.preferences_nav.sidebar"}}
|
{{i18n "user.preferences_nav.sidebar"}}
|
||||||
|
|
|
@ -5,16 +5,17 @@ createWidget("header-contents", {
|
||||||
tagName: "div.contents.clearfix",
|
tagName: "div.contents.clearfix",
|
||||||
template: hbs`
|
template: hbs`
|
||||||
{{#if this.site.desktopView}}
|
{{#if this.site.desktopView}}
|
||||||
{{#if this.siteSettings.enable_experimental_sidebar_hamburger}}
|
{{#if attrs.sidebarEnabled}}
|
||||||
{{#if attrs.sidebarEnabled}}
|
{{sidebar-toggle attrs=attrs}}
|
||||||
{{sidebar-toggle attrs=attrs}}
|
|
||||||
{{/if}}
|
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
{{home-logo attrs=attrs}}
|
{{home-logo attrs=attrs}}
|
||||||
|
|
||||||
{{#if attrs.topic}}
|
{{#if attrs.topic}}
|
||||||
{{header-topic-info attrs=attrs}}
|
{{header-topic-info attrs=attrs}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
<div class="panel clearfix" role="navigation">{{yield}}</div>
|
<div class="panel clearfix" role="navigation">{{yield}}</div>
|
||||||
`,
|
`,
|
||||||
});
|
});
|
||||||
|
|
|
@ -324,9 +324,8 @@ createWidget("header-icons", {
|
||||||
});
|
});
|
||||||
|
|
||||||
if (
|
if (
|
||||||
!this.siteSettings.enable_experimental_sidebar_hamburger ||
|
this.siteSettings.navigation_menu === "legacy" ||
|
||||||
(this.siteSettings.enable_experimental_sidebar_hamburger &&
|
!attrs.sidebarEnabled ||
|
||||||
!attrs.sidebarEnabled) ||
|
|
||||||
this.site.mobileView
|
this.site.mobileView
|
||||||
) {
|
) {
|
||||||
icons.push(hamburger);
|
icons.push(hamburger);
|
||||||
|
@ -498,7 +497,7 @@ export default createWidget("header", {
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
} else if (state.hamburgerVisible) {
|
} else if (state.hamburgerVisible) {
|
||||||
if (this.siteSettings.enable_experimental_sidebar_hamburger) {
|
if (this.siteSettings.navigation_menu !== "legacy") {
|
||||||
if (!attrs.sidebarEnabled || this.site.narrowDesktopView) {
|
if (!attrs.sidebarEnabled || this.site.narrowDesktopView) {
|
||||||
panels.push(this.attach("revamped-hamburger-menu-wrapper", {}));
|
panels.push(this.attach("revamped-hamburger-menu-wrapper", {}));
|
||||||
}
|
}
|
||||||
|
@ -613,7 +612,7 @@ export default createWidget("header", {
|
||||||
|
|
||||||
toggleHamburger() {
|
toggleHamburger() {
|
||||||
if (
|
if (
|
||||||
this.siteSettings.enable_experimental_sidebar_hamburger &&
|
this.siteSettings.navigation_menu !== "legacy" &&
|
||||||
this.attrs.sidebarEnabled &&
|
this.attrs.sidebarEnabled &&
|
||||||
!this.site.narrowDesktopView
|
!this.site.narrowDesktopView
|
||||||
) {
|
) {
|
||||||
|
@ -623,7 +622,7 @@ export default createWidget("header", {
|
||||||
this.toggleBodyScrolling(this.state.hamburgerVisible);
|
this.toggleBodyScrolling(this.state.hamburgerVisible);
|
||||||
|
|
||||||
schedule("afterRender", () => {
|
schedule("afterRender", () => {
|
||||||
if (this.siteSettings.enable_experimental_sidebar_hamburger) {
|
if (this.siteSettings.navigation_menu !== "legacy") {
|
||||||
// Remove focus from hamburger toggle button
|
// Remove focus from hamburger toggle button
|
||||||
document.querySelector("#toggle-hamburger-menu")?.blur();
|
document.querySelector("#toggle-hamburger-menu")?.blur();
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -285,8 +285,7 @@ acceptance("Second Factor Auth Page", function (needs) {
|
||||||
});
|
});
|
||||||
|
|
||||||
test("sidebar is disabled on 2FA route", async function (assert) {
|
test("sidebar is disabled on 2FA route", async function (assert) {
|
||||||
this.siteSettings.enable_experimental_sidebar_hamburger = true;
|
this.siteSettings.navigation_menu = "sidebar";
|
||||||
this.siteSettings.enable_sidebar = true;
|
|
||||||
|
|
||||||
await visit("/session/2fa?nonce=ok110111");
|
await visit("/session/2fa?nonce=ok110111");
|
||||||
|
|
||||||
|
|
|
@ -9,8 +9,7 @@ import Site from "discourse/models/site";
|
||||||
|
|
||||||
acceptance("Sidebar - Anonymous - Categories Section", function (needs) {
|
acceptance("Sidebar - Anonymous - Categories Section", function (needs) {
|
||||||
needs.settings({
|
needs.settings({
|
||||||
enable_experimental_sidebar_hamburger: true,
|
navigation_menu: "sidebar",
|
||||||
enable_sidebar: true,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
test("category section links ordered by category's topic count when default_sidebar_categories has not been configured and site setting to fix categories positions is disabled", async function (assert) {
|
test("category section links ordered by category's topic count when default_sidebar_categories has not been configured and site setting to fix categories positions is disabled", async function (assert) {
|
||||||
|
|
|
@ -12,8 +12,7 @@ import { click, visit } from "@ember/test-helpers";
|
||||||
|
|
||||||
acceptance("Sidebar - Anonymous user - Community Section", function (needs) {
|
acceptance("Sidebar - Anonymous user - Community Section", function (needs) {
|
||||||
needs.settings({
|
needs.settings({
|
||||||
enable_experimental_sidebar_hamburger: true,
|
navigation_menu: "sidebar",
|
||||||
enable_sidebar: true,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
test("display short site description site setting when it is set", async function (assert) {
|
test("display short site description site setting when it is set", async function (assert) {
|
||||||
|
|
|
@ -9,8 +9,7 @@ import Site from "discourse/models/site";
|
||||||
|
|
||||||
acceptance("Sidebar - Anonymous Tags Section", function (needs) {
|
acceptance("Sidebar - Anonymous Tags Section", function (needs) {
|
||||||
needs.settings({
|
needs.settings({
|
||||||
enable_experimental_sidebar_hamburger: true,
|
navigation_menu: "sidebar",
|
||||||
enable_sidebar: true,
|
|
||||||
suppress_uncategorized_badge: false,
|
suppress_uncategorized_badge: false,
|
||||||
tagging_enabled: true,
|
tagging_enabled: true,
|
||||||
});
|
});
|
||||||
|
|
|
@ -6,8 +6,7 @@ import { acceptance, exists } from "discourse/tests/helpers/qunit-helpers";
|
||||||
|
|
||||||
acceptance("Sidebar - Anonymous User", function (needs) {
|
acceptance("Sidebar - Anonymous User", function (needs) {
|
||||||
needs.settings({
|
needs.settings({
|
||||||
enable_experimental_sidebar_hamburger: true,
|
navigation_menu: "sidebar",
|
||||||
enable_sidebar: true,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
test("sidebar is displayed", async function (assert) {
|
test("sidebar is displayed", async function (assert) {
|
||||||
|
@ -30,7 +29,7 @@ acceptance("Sidebar - Anonymous User", function (needs) {
|
||||||
});
|
});
|
||||||
|
|
||||||
test("sidebar hamburger panel dropdown when sidebar has been disabled", async function (assert) {
|
test("sidebar hamburger panel dropdown when sidebar has been disabled", async function (assert) {
|
||||||
this.siteSettings.enable_sidebar = false;
|
this.siteSettings.navigation_menu = "header dropdown";
|
||||||
|
|
||||||
await visit("/");
|
await visit("/");
|
||||||
await click(".hamburger-dropdown");
|
await click(".hamburger-dropdown");
|
||||||
|
@ -44,8 +43,7 @@ acceptance("Sidebar - Anonymous User", function (needs) {
|
||||||
|
|
||||||
acceptance("Sidebar - Anonymous User - Login Required", function (needs) {
|
acceptance("Sidebar - Anonymous User - Login Required", function (needs) {
|
||||||
needs.settings({
|
needs.settings({
|
||||||
enable_experimental_sidebar_hamburger: true,
|
navigation_menu: "sidebar",
|
||||||
enable_sidebar: true,
|
|
||||||
login_required: true,
|
login_required: true,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -9,8 +9,7 @@ acceptance("Sidebar - Mobile - User with sidebar enabled", function (needs) {
|
||||||
needs.user();
|
needs.user();
|
||||||
|
|
||||||
needs.settings({
|
needs.settings({
|
||||||
enable_experimental_sidebar_hamburger: true,
|
navigation_menu: "sidebar",
|
||||||
enable_sidebar: true,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
needs.mobileView();
|
needs.mobileView();
|
||||||
|
|
|
@ -8,8 +8,7 @@ acceptance("Sidebar - Narrow Desktop", function (needs) {
|
||||||
needs.user();
|
needs.user();
|
||||||
|
|
||||||
needs.settings({
|
needs.settings({
|
||||||
enable_experimental_sidebar_hamburger: true,
|
navigation_menu: "sidebar",
|
||||||
enable_sidebar: true,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
test("wide sidebar is changed to cloak when resize to narrow screen", async function (assert) {
|
test("wide sidebar is changed to cloak when resize to narrow screen", async function (assert) {
|
||||||
|
|
|
@ -14,8 +14,7 @@ acceptance("Sidebar - Plugin API", function (needs) {
|
||||||
needs.user();
|
needs.user();
|
||||||
|
|
||||||
needs.settings({
|
needs.settings({
|
||||||
enable_experimental_sidebar_hamburger: true,
|
navigation_menu: "sidebar",
|
||||||
enable_sidebar: true,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
needs.hooks.afterEach(() => {
|
needs.hooks.afterEach(() => {
|
||||||
|
|
|
@ -22,8 +22,7 @@ acceptance(
|
||||||
function (needs) {
|
function (needs) {
|
||||||
needs.settings({
|
needs.settings({
|
||||||
allow_uncategorized_topics: false,
|
allow_uncategorized_topics: false,
|
||||||
enable_experimental_sidebar_hamburger: true,
|
navigation_menu: "sidebar",
|
||||||
enable_sidebar: true,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
needs.user({ admin: false });
|
needs.user({ admin: false });
|
||||||
|
@ -66,8 +65,7 @@ acceptance("Sidebar - Logged on user - Categories Section", function (needs) {
|
||||||
});
|
});
|
||||||
|
|
||||||
needs.settings({
|
needs.settings({
|
||||||
enable_experimental_sidebar_hamburger: true,
|
navigation_menu: "sidebar",
|
||||||
enable_sidebar: true,
|
|
||||||
suppress_uncategorized_badge: false,
|
suppress_uncategorized_badge: false,
|
||||||
allow_uncategorized_topics: true,
|
allow_uncategorized_topics: true,
|
||||||
});
|
});
|
||||||
|
|
|
@ -28,8 +28,7 @@ acceptance("Sidebar - Logged on user - Community Section", function (needs) {
|
||||||
});
|
});
|
||||||
|
|
||||||
needs.settings({
|
needs.settings({
|
||||||
enable_experimental_sidebar_hamburger: true,
|
navigation_menu: "sidebar",
|
||||||
enable_sidebar: true,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
needs.pretender((server, helper) => {
|
needs.pretender((server, helper) => {
|
||||||
|
|
|
@ -22,8 +22,7 @@ acceptance(
|
||||||
});
|
});
|
||||||
|
|
||||||
needs.settings({
|
needs.settings({
|
||||||
enable_experimental_sidebar_hamburger: true,
|
navigation_menu: "sidebar",
|
||||||
enable_sidebar: true,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
test("clicking on section header button", async function (assert) {
|
test("clicking on section header button", async function (assert) {
|
||||||
|
@ -43,8 +42,7 @@ acceptance(
|
||||||
needs.user({ can_send_private_messages: true });
|
needs.user({ can_send_private_messages: true });
|
||||||
|
|
||||||
needs.settings({
|
needs.settings({
|
||||||
enable_experimental_sidebar_hamburger: true,
|
navigation_menu: "sidebar",
|
||||||
enable_sidebar: true,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
needs.pretender((server, helper) => {
|
needs.pretender((server, helper) => {
|
||||||
|
|
|
@ -19,8 +19,7 @@ acceptance(
|
||||||
function (needs) {
|
function (needs) {
|
||||||
needs.settings({
|
needs.settings({
|
||||||
tagging_enabled: false,
|
tagging_enabled: false,
|
||||||
enable_experimental_sidebar_hamburger: true,
|
navigation_menu: "sidebar",
|
||||||
enable_sidebar: true,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
needs.user();
|
needs.user();
|
||||||
|
@ -39,8 +38,7 @@ acceptance(
|
||||||
acceptance("Sidebar - Logged on user - Tags section", function (needs) {
|
acceptance("Sidebar - Logged on user - Tags section", function (needs) {
|
||||||
needs.settings({
|
needs.settings({
|
||||||
tagging_enabled: true,
|
tagging_enabled: true,
|
||||||
enable_experimental_sidebar_hamburger: true,
|
navigation_menu: "sidebar",
|
||||||
enable_sidebar: true,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
needs.user({
|
needs.user({
|
||||||
|
|
|
@ -14,7 +14,7 @@ acceptance(
|
||||||
needs.user();
|
needs.user();
|
||||||
|
|
||||||
needs.settings({
|
needs.settings({
|
||||||
enable_experimental_sidebar_hamburger: false,
|
navigation_menu: "legacy",
|
||||||
});
|
});
|
||||||
|
|
||||||
test("clicking header hamburger icon displays old hamburger dropdown", async function (assert) {
|
test("clicking header hamburger icon displays old hamburger dropdown", async function (assert) {
|
||||||
|
@ -32,8 +32,7 @@ acceptance(
|
||||||
needs.user();
|
needs.user();
|
||||||
|
|
||||||
needs.settings({
|
needs.settings({
|
||||||
enable_experimental_sidebar_hamburger: true,
|
navigation_menu: "header dropdown",
|
||||||
enable_sidebar: false,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
test("showing and hiding sidebar", async function (assert) {
|
test("showing and hiding sidebar", async function (assert) {
|
||||||
|
@ -80,8 +79,7 @@ acceptance(
|
||||||
needs.user();
|
needs.user();
|
||||||
|
|
||||||
needs.settings({
|
needs.settings({
|
||||||
enable_experimental_sidebar_hamburger: true,
|
navigation_menu: "sidebar",
|
||||||
enable_sidebar: true,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
test("viewing keyboard shortcuts using sidebar", async function (assert) {
|
test("viewing keyboard shortcuts using sidebar", async function (assert) {
|
||||||
|
|
|
@ -17,8 +17,7 @@ acceptance("User Preferences - Sidebar", function (needs) {
|
||||||
});
|
});
|
||||||
|
|
||||||
needs.settings({
|
needs.settings({
|
||||||
enable_experimental_sidebar_hamburger: true,
|
navigation_menu: "sidebar",
|
||||||
enable_sidebar: true,
|
|
||||||
tagging_enabled: true,
|
tagging_enabled: true,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -31,12 +31,13 @@ class NotificationsController < ApplicationController
|
||||||
limit = 50 if limit > 50
|
limit = 50 if limit > 50
|
||||||
|
|
||||||
include_reviewables = false
|
include_reviewables = false
|
||||||
if SiteSetting.enable_experimental_sidebar_hamburger
|
|
||||||
|
if SiteSetting.legacy_navigation_menu?
|
||||||
|
notifications = Notification.recent_report(current_user, limit, notification_types)
|
||||||
|
else
|
||||||
notifications = Notification.prioritized_list(current_user, count: limit, types: notification_types)
|
notifications = Notification.prioritized_list(current_user, count: limit, types: notification_types)
|
||||||
# notification_types is blank for the "all notifications" user menu tab
|
# notification_types is blank for the "all notifications" user menu tab
|
||||||
include_reviewables = notification_types.blank? && guardian.can_see_review_queue?
|
include_reviewables = notification_types.blank? && guardian.can_see_review_queue?
|
||||||
else
|
|
||||||
notifications = Notification.recent_report(current_user, limit, notification_types)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
if notifications.present? && !(params.has_key?(:silent) || @readonly_mode)
|
if notifications.present? && !(params.has_key?(:silent) || @readonly_mode)
|
||||||
|
@ -63,12 +64,14 @@ class NotificationsController < ApplicationController
|
||||||
notifications: serialize_data(notifications, NotificationSerializer),
|
notifications: serialize_data(notifications, NotificationSerializer),
|
||||||
seen_notification_id: current_user.seen_notification_id
|
seen_notification_id: current_user.seen_notification_id
|
||||||
}
|
}
|
||||||
|
|
||||||
if include_reviewables
|
if include_reviewables
|
||||||
json[:pending_reviewables] = Reviewable.basic_serializers_for_list(
|
json[:pending_reviewables] = Reviewable.basic_serializers_for_list(
|
||||||
Reviewable.user_menu_list_for(current_user),
|
Reviewable.user_menu_list_for(current_user),
|
||||||
current_user
|
current_user
|
||||||
).as_json
|
).as_json
|
||||||
end
|
end
|
||||||
|
|
||||||
render_json_dump(json)
|
render_json_dump(json)
|
||||||
else
|
else
|
||||||
offset = params[:offset].to_i
|
offset = params[:offset].to_i
|
||||||
|
|
|
@ -51,7 +51,8 @@ class ReviewableClaimedTopicsController < ApplicationController
|
||||||
end
|
end
|
||||||
|
|
||||||
MessageBus.publish("/reviewable_claimed", data, group_ids: group_ids.to_a)
|
MessageBus.publish("/reviewable_claimed", data, group_ids: group_ids.to_a)
|
||||||
if SiteSetting.enable_experimental_sidebar_hamburger
|
|
||||||
|
if !SiteSetting.legacy_navigation_menu?
|
||||||
Jobs.enqueue(:refresh_users_reviewable_counts, group_ids: group_ids.to_a)
|
Jobs.enqueue(:refresh_users_reviewable_counts, group_ids: group_ids.to_a)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1870,7 +1870,7 @@ class UsersController < ApplicationController
|
||||||
permitted.concat UserUpdater::TAG_NAMES.keys
|
permitted.concat UserUpdater::TAG_NAMES.keys
|
||||||
permitted << UserUpdater::NOTIFICATION_SCHEDULE_ATTRS
|
permitted << UserUpdater::NOTIFICATION_SCHEDULE_ATTRS
|
||||||
|
|
||||||
if SiteSetting.enable_experimental_sidebar_hamburger
|
if !SiteSetting.legacy_navigation_menu?
|
||||||
if params.has_key?(:sidebar_category_ids) && params[:sidebar_category_ids].blank?
|
if params.has_key?(:sidebar_category_ids) && params[:sidebar_category_ids].blank?
|
||||||
params[:sidebar_category_ids] = []
|
params[:sidebar_category_ids] = []
|
||||||
end
|
end
|
||||||
|
|
|
@ -31,31 +31,31 @@ class Jobs::NotifyReviewable < ::Jobs::Base
|
||||||
counts[r.reviewable_by_group_id] += 1 if r.reviewable_by_group_id
|
counts[r.reviewable_by_group_id] += 1 if r.reviewable_by_group_id
|
||||||
end
|
end
|
||||||
|
|
||||||
if SiteSetting.enable_experimental_sidebar_hamburger
|
if SiteSetting.legacy_navigation_menu?
|
||||||
notify_users(
|
|
||||||
User.real.admins,
|
|
||||||
all_updates[:admins]
|
|
||||||
)
|
|
||||||
else
|
|
||||||
notify_legacy(
|
notify_legacy(
|
||||||
User.real.admins.pluck(:id),
|
User.real.admins.pluck(:id),
|
||||||
count: counts[:admins],
|
count: counts[:admins],
|
||||||
updates: all_updates[:admins],
|
updates: all_updates[:admins],
|
||||||
)
|
)
|
||||||
|
else
|
||||||
|
notify_users(
|
||||||
|
User.real.admins,
|
||||||
|
all_updates[:admins]
|
||||||
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
if reviewable.reviewable_by_moderator?
|
if reviewable.reviewable_by_moderator?
|
||||||
if SiteSetting.enable_experimental_sidebar_hamburger
|
if SiteSetting.legacy_navigation_menu?
|
||||||
notify_users(
|
|
||||||
User.real.moderators.where("id NOT IN (?)", @contacted),
|
|
||||||
all_updates[:moderators]
|
|
||||||
)
|
|
||||||
else
|
|
||||||
notify_legacy(
|
notify_legacy(
|
||||||
User.real.moderators.where("id NOT IN (?)", @contacted).pluck(:id),
|
User.real.moderators.where("id NOT IN (?)", @contacted).pluck(:id),
|
||||||
count: counts[:moderators],
|
count: counts[:moderators],
|
||||||
updates: all_updates[:moderators],
|
updates: all_updates[:moderators],
|
||||||
)
|
)
|
||||||
|
else
|
||||||
|
notify_users(
|
||||||
|
User.real.moderators.where("id NOT IN (?)", @contacted),
|
||||||
|
all_updates[:moderators]
|
||||||
|
)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -70,10 +70,10 @@ class Jobs::NotifyReviewable < ::Jobs::Base
|
||||||
count += counts[gu.group_id]
|
count += counts[gu.group_id]
|
||||||
end
|
end
|
||||||
|
|
||||||
if SiteSetting.enable_experimental_sidebar_hamburger
|
if SiteSetting.legacy_navigation_menu?
|
||||||
notify_user(user, updates)
|
|
||||||
else
|
|
||||||
notify_legacy([user.id], count: count, updates: updates)
|
notify_legacy([user.id], count: count, updates: updates)
|
||||||
|
else
|
||||||
|
notify_user(user, updates)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class NavigationMenuSiteSetting < EnumSiteSetting
|
||||||
|
SIDEBAR = "sidebar"
|
||||||
|
HEADER_DROPDOWN = "header dropdown"
|
||||||
|
LEGACY = "legacy"
|
||||||
|
|
||||||
|
def self.valid_value?(val)
|
||||||
|
values.any? { |v| v[:value] == val }
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.values
|
||||||
|
@values ||= [
|
||||||
|
{ name: "admin.navigation_menu.sidebar", value: SIDEBAR },
|
||||||
|
{ name: "admin.navigation_menu.header_dropdown", value: HEADER_DROPDOWN },
|
||||||
|
{ name: "admin.navigation_menu.legacy", value: LEGACY }
|
||||||
|
]
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.translate_names?
|
||||||
|
true
|
||||||
|
end
|
||||||
|
end
|
|
@ -237,6 +237,10 @@ class SiteSetting < ActiveRecord::Base
|
||||||
c.present? && c.to_i != SiteSetting.uncategorized_category_id.to_i
|
c.present? && c.to_i != SiteSetting.uncategorized_category_id.to_i
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def self.legacy_navigation_menu?
|
||||||
|
SiteSetting.navigation_menu == "legacy"
|
||||||
|
end
|
||||||
|
|
||||||
ALLOWLIST_DEPRECATED_SITE_SETTINGS = {
|
ALLOWLIST_DEPRECATED_SITE_SETTINGS = {
|
||||||
'email_domains_blacklist': 'blocked_email_domains',
|
'email_domains_blacklist': 'blocked_email_domains',
|
||||||
'email_domains_whitelist': 'allowed_email_domains',
|
'email_domains_whitelist': 'allowed_email_domains',
|
||||||
|
|
|
@ -276,7 +276,7 @@ class TopicTrackingState
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.include_tags_in_report?
|
def self.include_tags_in_report?
|
||||||
SiteSetting.tagging_enabled && (@include_tags_in_report || SiteSetting.enable_experimental_sidebar_hamburger)
|
SiteSetting.tagging_enabled && (@include_tags_in_report || !SiteSetting.legacy_navigation_menu?)
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.include_tags_in_report=(v)
|
def self.include_tags_in_report=(v)
|
||||||
|
|
|
@ -1719,7 +1719,7 @@ class User < ActiveRecord::Base
|
||||||
end
|
end
|
||||||
|
|
||||||
def redesigned_user_menu_enabled?
|
def redesigned_user_menu_enabled?
|
||||||
SiteSetting.enable_experimental_sidebar_hamburger
|
!SiteSetting.legacy_navigation_menu?
|
||||||
end
|
end
|
||||||
|
|
||||||
protected
|
protected
|
||||||
|
@ -1951,7 +1951,7 @@ class User < ActiveRecord::Base
|
||||||
private
|
private
|
||||||
|
|
||||||
def set_default_sidebar_section_links(update: false)
|
def set_default_sidebar_section_links(update: false)
|
||||||
return if !SiteSetting.enable_experimental_sidebar_hamburger
|
return if SiteSetting.legacy_navigation_menu?
|
||||||
return if staged? || bot?
|
return if staged? || bot?
|
||||||
|
|
||||||
if SiteSetting.default_sidebar_categories.present?
|
if SiteSetting.default_sidebar_categories.present?
|
||||||
|
|
|
@ -26,6 +26,6 @@ module UserSidebarTagsMixin
|
||||||
end
|
end
|
||||||
|
|
||||||
def include_display_sidebar_tags?
|
def include_display_sidebar_tags?
|
||||||
SiteSetting.tagging_enabled && SiteSetting.enable_experimental_sidebar_hamburger
|
SiteSetting.tagging_enabled && !SiteSetting.legacy_navigation_menu?
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -258,7 +258,7 @@ class CurrentUserSerializer < BasicUserSerializer
|
||||||
end
|
end
|
||||||
|
|
||||||
def include_sidebar_category_ids?
|
def include_sidebar_category_ids?
|
||||||
SiteSetting.enable_experimental_sidebar_hamburger
|
!SiteSetting.legacy_navigation_menu?
|
||||||
end
|
end
|
||||||
|
|
||||||
def include_status?
|
def include_status?
|
||||||
|
|
|
@ -243,7 +243,7 @@ class SiteSerializer < ApplicationSerializer
|
||||||
end
|
end
|
||||||
|
|
||||||
def include_anonymous_default_sidebar_tags?
|
def include_anonymous_default_sidebar_tags?
|
||||||
scope.anonymous? && SiteSetting.enable_experimental_sidebar_hamburger && SiteSetting.tagging_enabled && SiteSetting.default_sidebar_tags.present?
|
scope.anonymous? && !SiteSetting.legacy_navigation_menu? && SiteSetting.tagging_enabled && SiteSetting.default_sidebar_tags.present?
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
|
@ -4678,6 +4678,11 @@ en:
|
||||||
official: "Official Plugin"
|
official: "Official Plugin"
|
||||||
broken_route: "Unable to configure link to '%{name}'. Ensure ad-blockers are disabled and try reloading the page."
|
broken_route: "Unable to configure link to '%{name}'. Ensure ad-blockers are disabled and try reloading the page."
|
||||||
|
|
||||||
|
navigation_menu:
|
||||||
|
sidebar: "Sidebar"
|
||||||
|
header_dropdown: "Header Dropdown"
|
||||||
|
legacy: "Legacy"
|
||||||
|
|
||||||
backups:
|
backups:
|
||||||
title: "Backups"
|
title: "Backups"
|
||||||
menu:
|
menu:
|
||||||
|
@ -5724,7 +5729,7 @@ en:
|
||||||
search: "Search"
|
search: "Search"
|
||||||
groups: "Groups"
|
groups: "Groups"
|
||||||
dashboard: "Dashboard"
|
dashboard: "Dashboard"
|
||||||
sidebar: "Sidebar"
|
navigation: "Navigation"
|
||||||
secret_list:
|
secret_list:
|
||||||
invalid_input: "Input fields cannot be empty or contain vertical bar character."
|
invalid_input: "Input fields cannot be empty or contain vertical bar character."
|
||||||
default_categories:
|
default_categories:
|
||||||
|
|
|
@ -1870,8 +1870,6 @@ ar:
|
||||||
top_topics_formula_first_post_likes_multiplier: "قيمة مُضاعِف تسجيلات الإعجاب على أول منشور (n) في معادلة الموضوعات الأكثر نشاطًا: `log(views_count) * 2 + op_likes_count * (n) + LEAST(likes_count / posts_count, 3) + 10 + log(posts_count)`"
|
top_topics_formula_first_post_likes_multiplier: "قيمة مُضاعِف تسجيلات الإعجاب على أول منشور (n) في معادلة الموضوعات الأكثر نشاطًا: `log(views_count) * 2 + op_likes_count * (n) + LEAST(likes_count / posts_count, 3) + 10 + log(posts_count)`"
|
||||||
top_topics_formula_least_likes_per_post_multiplier: "قيمة أقل عدد من تسجيلات الإعجاب لكل مُضاعِف منشورات (n) في معادلة الموضوعات الأكثر نشاطًا: `log(views_count) * 2 + op_likes_count * 0.5 + LEAST(likes_count / posts_count, (n)) + 10 + log(posts_count)`"
|
top_topics_formula_least_likes_per_post_multiplier: "قيمة أقل عدد من تسجيلات الإعجاب لكل مُضاعِف منشورات (n) في معادلة الموضوعات الأكثر نشاطًا: `log(views_count) * 2 + op_likes_count * 0.5 + LEAST(likes_count / posts_count, (n)) + 10 + log(posts_count)`"
|
||||||
enable_safe_mode: "السماح للمستخدمين بالدخول إلى الوضع الآمن لتصحيح أخطاء المكوِّنات الإضافية"
|
enable_safe_mode: "السماح للمستخدمين بالدخول إلى الوضع الآمن لتصحيح أخطاء المكوِّنات الإضافية"
|
||||||
enable_experimental_sidebar_hamburger: "يسمح بتفعيل الشريط الجانبي التجريبي وقائمة الثلاث شرط المنسدلة."
|
|
||||||
enable_sidebar: "يفعِّل الشريط الجانبي التجريبي."
|
|
||||||
rate_limit_create_topic: "بعد إنشاء موضوع، يجب على المستخدمين الانتظار (n) ثانية قبل إنشاء موضوع آخر."
|
rate_limit_create_topic: "بعد إنشاء موضوع، يجب على المستخدمين الانتظار (n) ثانية قبل إنشاء موضوع آخر."
|
||||||
rate_limit_create_post: "بعد النشر، يجب على المستخدمين الانتظار (n) ثانية قبل إنشاء منشور آخر."
|
rate_limit_create_post: "بعد النشر، يجب على المستخدمين الانتظار (n) ثانية قبل إنشاء منشور آخر."
|
||||||
rate_limit_new_user_create_topic: "بعد إنشاء موضوع، يجب على المستخدمين الجُدد الانتظار (n) ثانية قبل إنشاء موضوع آخر."
|
rate_limit_new_user_create_topic: "بعد إنشاء موضوع، يجب على المستخدمين الجُدد الانتظار (n) ثانية قبل إنشاء موضوع آخر."
|
||||||
|
|
|
@ -1662,8 +1662,6 @@ de:
|
||||||
top_topics_formula_first_post_likes_multiplier: "Wert des Multiplikators (n) für die „Gefällt mir“-Angaben des ersten Beitrags in der Formel für angesagte Themen: `log(views_count) * 2 + op_likes_count * (n) + LEAST(likes_count / posts_count, 3) + 10 + log(posts_count)`"
|
top_topics_formula_first_post_likes_multiplier: "Wert des Multiplikators (n) für die „Gefällt mir“-Angaben des ersten Beitrags in der Formel für angesagte Themen: `log(views_count) * 2 + op_likes_count * (n) + LEAST(likes_count / posts_count, 3) + 10 + log(posts_count)`"
|
||||||
top_topics_formula_least_likes_per_post_multiplier: "Wert des Multiplikators (n) für die wenigsten „Gefällt mir“-Angaben pro Beitrag in der Formel für angesagte Themen: `log(views_count) * 2 + op_likes_count * 0.5 + LEAST(likes_count / posts_count, (n)) + 10 + log(posts_count)`"
|
top_topics_formula_least_likes_per_post_multiplier: "Wert des Multiplikators (n) für die wenigsten „Gefällt mir“-Angaben pro Beitrag in der Formel für angesagte Themen: `log(views_count) * 2 + op_likes_count * 0.5 + LEAST(likes_count / posts_count, (n)) + 10 + log(posts_count)`"
|
||||||
enable_safe_mode: "Erlaube Benutzern, den abgesicherten Modus zu betreten, um Plug-ins zu debuggen."
|
enable_safe_mode: "Erlaube Benutzern, den abgesicherten Modus zu betreten, um Plug-ins zu debuggen."
|
||||||
enable_experimental_sidebar_hamburger: "Ermöglicht die Aktivierung der experimentellen Seitenleiste und des Benutzer-Hamburger-Drop-down-Menüs."
|
|
||||||
enable_sidebar: "Aktiviert die experimentelle Seitenleiste."
|
|
||||||
rate_limit_create_topic: "Nach Erstellen eines Themas muss ein Benutzer (n) Sekunden warten, bevor ein weiteres Thema erstellt werden kann."
|
rate_limit_create_topic: "Nach Erstellen eines Themas muss ein Benutzer (n) Sekunden warten, bevor ein weiteres Thema erstellt werden kann."
|
||||||
rate_limit_create_post: "Nach Schreiben eines Beitrags muss ein Benutzer (n) Sekunden warten, bevor ein weiterer Beitrag erstellt werden kann."
|
rate_limit_create_post: "Nach Schreiben eines Beitrags muss ein Benutzer (n) Sekunden warten, bevor ein weiterer Beitrag erstellt werden kann."
|
||||||
rate_limit_new_user_create_topic: "Nach Erstellen eines Themas muss ein neuer Benutzer (n) Sekunden warten, bevor ein weiteres Thema erstellt werden kann."
|
rate_limit_new_user_create_topic: "Nach Erstellen eines Themas muss ein neuer Benutzer (n) Sekunden warten, bevor ein weiteres Thema erstellt werden kann."
|
||||||
|
|
|
@ -1792,8 +1792,6 @@ en:
|
||||||
top_topics_formula_least_likes_per_post_multiplier: "value of least likes per post multiplier (n) in top topics formula: `log(views_count) * 2 + op_likes_count * 0.5 + LEAST(likes_count / posts_count, (n)) + 10 + log(posts_count)`"
|
top_topics_formula_least_likes_per_post_multiplier: "value of least likes per post multiplier (n) in top topics formula: `log(views_count) * 2 + op_likes_count * 0.5 + LEAST(likes_count / posts_count, (n)) + 10 + log(posts_count)`"
|
||||||
|
|
||||||
enable_safe_mode: "Allow users to enter safe mode to debug plugins."
|
enable_safe_mode: "Allow users to enter safe mode to debug plugins."
|
||||||
enable_experimental_sidebar_hamburger: "Allows experimental sidebar and user hamburger dropdown menu to be enabled."
|
|
||||||
enable_sidebar: "Enables experimental sidebar."
|
|
||||||
|
|
||||||
rate_limit_create_topic: "After creating a topic, users must wait (n) seconds before creating another topic."
|
rate_limit_create_topic: "After creating a topic, users must wait (n) seconds before creating another topic."
|
||||||
rate_limit_create_post: "After posting, users must wait (n) seconds before creating another post."
|
rate_limit_create_post: "After posting, users must wait (n) seconds before creating another post."
|
||||||
|
@ -2390,6 +2388,7 @@ en:
|
||||||
suggest_weekends_in_date_pickers: "Include weekends (Saturday and Sunday) in date picker suggestions (disable this if you use Discourse only on weekdays, Monday through Friday)."
|
suggest_weekends_in_date_pickers: "Include weekends (Saturday and Sunday) in date picker suggestions (disable this if you use Discourse only on weekdays, Monday through Friday)."
|
||||||
|
|
||||||
splash_screen: "Displays a temporary loading screen while site assets load"
|
splash_screen: "Displays a temporary loading screen while site assets load"
|
||||||
|
navigation_menu: "Determine which navigation menu to be used for the site."
|
||||||
default_sidebar_categories: "Selected categories will be displayed under Sidebar's Categories section by default."
|
default_sidebar_categories: "Selected categories will be displayed under Sidebar's Categories section by default."
|
||||||
default_sidebar_tags: "Selected tags will be displayed under Sidebar's Tags section by default."
|
default_sidebar_tags: "Selected tags will be displayed under Sidebar's Tags section by default."
|
||||||
enable_new_user_profile_nav_groups: "EXPERIMENTAL: Users of the selected groups will be shown the new user profile navigation menu"
|
enable_new_user_profile_nav_groups: "EXPERIMENTAL: Users of the selected groups will be shown the new user profile navigation menu"
|
||||||
|
|
|
@ -1662,8 +1662,6 @@ es:
|
||||||
top_topics_formula_first_post_likes_multiplier: "valor del multiplicador de me gusta en la primera publicación (n) en la fórmula de temas destacados: «log(views_count) * 2 + op_likes_count * (n) + LEAST(likes_count / posts_count, 3) + 10 + log(posts_count)»"
|
top_topics_formula_first_post_likes_multiplier: "valor del multiplicador de me gusta en la primera publicación (n) en la fórmula de temas destacados: «log(views_count) * 2 + op_likes_count * (n) + LEAST(likes_count / posts_count, 3) + 10 + log(posts_count)»"
|
||||||
top_topics_formula_least_likes_per_post_multiplier: "valor del multiplicador de me gusta por publicación (n) en la fórmula de temas destacados: «log(views_count) * 2 + op_likes_count * 0.5 + LEAST(likes_count / posts_count, (n)) + 10 + log(posts_count)»"
|
top_topics_formula_least_likes_per_post_multiplier: "valor del multiplicador de me gusta por publicación (n) en la fórmula de temas destacados: «log(views_count) * 2 + op_likes_count * 0.5 + LEAST(likes_count / posts_count, (n)) + 10 + log(posts_count)»"
|
||||||
enable_safe_mode: "Permitir a los usuarios ingresar al modo seguro para depurar plugins."
|
enable_safe_mode: "Permitir a los usuarios ingresar al modo seguro para depurar plugins."
|
||||||
enable_experimental_sidebar_hamburger: "Permite habilitar la barra lateral experimental y el menú desplegable de hamburguesas del usuario."
|
|
||||||
enable_sidebar: "Habilita la barra lateral experimental."
|
|
||||||
rate_limit_create_topic: "Después de crear un tema, los usuarios deben esperar (n) segundos antes de crear otro tema."
|
rate_limit_create_topic: "Después de crear un tema, los usuarios deben esperar (n) segundos antes de crear otro tema."
|
||||||
rate_limit_create_post: "Después de realizar una publicación, los usuarios deben esperar (n) segundos antes de crear otra publicación."
|
rate_limit_create_post: "Después de realizar una publicación, los usuarios deben esperar (n) segundos antes de crear otra publicación."
|
||||||
rate_limit_new_user_create_topic: "Después de crear un tema, los nuevos usuarios deben esperar (n) segundos antes de crear otro tema."
|
rate_limit_new_user_create_topic: "Después de crear un tema, los nuevos usuarios deben esperar (n) segundos antes de crear otro tema."
|
||||||
|
|
|
@ -1665,8 +1665,6 @@ fi:
|
||||||
top_topics_formula_first_post_likes_multiplier: "avausviestin tykkäysmäärän kerroin (n) Suositut-listauksen kaavassa: `log(katselut) * 2 + avausviestin tykkäykset * (n) + PIENEMPI(tykkäysten määrä / viestien määrä, 3) + 10 + log(viestien määrä)`"
|
top_topics_formula_first_post_likes_multiplier: "avausviestin tykkäysmäärän kerroin (n) Suositut-listauksen kaavassa: `log(katselut) * 2 + avausviestin tykkäykset * (n) + PIENEMPI(tykkäysten määrä / viestien määrä, 3) + 10 + log(viestien määrä)`"
|
||||||
top_topics_formula_least_likes_per_post_multiplier: "tykkäykset/viestit -suhteen enimmäisarvo (n) Suositut-listauksen kaavassa: `log(katselut) * 2 + avausviestin tykkäykset * 0.5 + PIENEMPI(tykkäysten määrä / viestien määrä, (n)) + 10 + log(viestien määrä)`"
|
top_topics_formula_least_likes_per_post_multiplier: "tykkäykset/viestit -suhteen enimmäisarvo (n) Suositut-listauksen kaavassa: `log(katselut) * 2 + avausviestin tykkäykset * 0.5 + PIENEMPI(tykkäysten määrä / viestien määrä, (n)) + 10 + log(viestien määrä)`"
|
||||||
enable_safe_mode: "Salli käyttäjän siirtyä vikasietotilaan lisäosien vianmääritystä varten."
|
enable_safe_mode: "Salli käyttäjän siirtyä vikasietotilaan lisäosien vianmääritystä varten."
|
||||||
enable_experimental_sidebar_hamburger: "Mahdollistaa kokeellisen sivupalkin ja käyttäjän hampurilaisvalikon käyttöönoton."
|
|
||||||
enable_sidebar: "Ottaa käyttöön kokeellisen sivupalkin."
|
|
||||||
rate_limit_create_topic: "Ketjun aloittamisen jälkeen käyttäjän täytyy odottaa (n) sekuntia ennen toisen ketjun aloittamista."
|
rate_limit_create_topic: "Ketjun aloittamisen jälkeen käyttäjän täytyy odottaa (n) sekuntia ennen toisen ketjun aloittamista."
|
||||||
rate_limit_create_post: "Viestin luomisen jälkeen käyttäjän täytyy odottaa (n) sekuntia ennen uuden viestin luomista."
|
rate_limit_create_post: "Viestin luomisen jälkeen käyttäjän täytyy odottaa (n) sekuntia ennen uuden viestin luomista."
|
||||||
rate_limit_new_user_create_topic: "Ketjun luomisen jälkeen uuden käyttäjän täytyy odottaa (n) sekuntia ennen uuden ketjun luomista."
|
rate_limit_new_user_create_topic: "Ketjun luomisen jälkeen uuden käyttäjän täytyy odottaa (n) sekuntia ennen uuden ketjun luomista."
|
||||||
|
|
|
@ -1662,8 +1662,6 @@ fr:
|
||||||
top_topics_formula_first_post_likes_multiplier: "formule permettant d'obtenir la valeur du multiplicateur des premiers « J'aime » (n) dans les sujets tendance : « log(views_count) * 2 + op_likes_count * (n) + LEAST(likes_count / posts_count, 3) + 10 + log(posts_count) »"
|
top_topics_formula_first_post_likes_multiplier: "formule permettant d'obtenir la valeur du multiplicateur des premiers « J'aime » (n) dans les sujets tendance : « log(views_count) * 2 + op_likes_count * (n) + LEAST(likes_count / posts_count, 3) + 10 + log(posts_count) »"
|
||||||
top_topics_formula_least_likes_per_post_multiplier: "formule permettant d'obtenir la valeur du multiplicateur du plus petit nombre de « J'aime » par message (n) dans les sujets tendance : « log(views_count) * 2 + op_likes_count * 0.5 + LEAST(likes_count / posts_count, (n)) + 10 + log(posts_count) »"
|
top_topics_formula_least_likes_per_post_multiplier: "formule permettant d'obtenir la valeur du multiplicateur du plus petit nombre de « J'aime » par message (n) dans les sujets tendance : « log(views_count) * 2 + op_likes_count * 0.5 + LEAST(likes_count / posts_count, (n)) + 10 + log(posts_count) »"
|
||||||
enable_safe_mode: "Permettre aux utilisateurs d'utiliser le mode sans échec pour déboguer les extensions."
|
enable_safe_mode: "Permettre aux utilisateurs d'utiliser le mode sans échec pour déboguer les extensions."
|
||||||
enable_experimental_sidebar_hamburger: "Permet d'activer la barre latérale expérimentale et le menu déroulant hamburger de l'utilisateur."
|
|
||||||
enable_sidebar: "Active la barre latérale expérimentale."
|
|
||||||
rate_limit_create_topic: "Après la création d'un sujet, les utilisateurs doivent attendre (n) secondes avant de pouvoir en créer un nouveau."
|
rate_limit_create_topic: "Après la création d'un sujet, les utilisateurs doivent attendre (n) secondes avant de pouvoir en créer un nouveau."
|
||||||
rate_limit_create_post: "Après avoir publié un message, les utilisateurs doivent attendre (n) secondes avant de pouvoir en publier un autre."
|
rate_limit_create_post: "Après avoir publié un message, les utilisateurs doivent attendre (n) secondes avant de pouvoir en publier un autre."
|
||||||
rate_limit_new_user_create_topic: "Après la création d'un sujet, les nouveaux utilisateurs doivent attendre (n) secondes avant de pouvoir en créer un nouveau."
|
rate_limit_new_user_create_topic: "Après la création d'un sujet, les nouveaux utilisateurs doivent attendre (n) secondes avant de pouvoir en créer un nouveau."
|
||||||
|
|
|
@ -1781,8 +1781,6 @@ he:
|
||||||
top_topics_formula_first_post_likes_multiplier: "מכפיל של לייקים על הפוסט הראשון (n) בנוסת הנושאים המובילים: `log(views_count) * 2 + op_likes_count * (n) + LEAST(likes_count / posts_count, 3) + 10 + log(posts_count)`"
|
top_topics_formula_first_post_likes_multiplier: "מכפיל של לייקים על הפוסט הראשון (n) בנוסת הנושאים המובילים: `log(views_count) * 2 + op_likes_count * (n) + LEAST(likes_count / posts_count, 3) + 10 + log(posts_count)`"
|
||||||
top_topics_formula_least_likes_per_post_multiplier: "מכפיל של כמות לייקים מינימלית לפוסט (n) בנוסחת הנושאים המובילים: `log(views_count) * 2 + op_likes_count * 0.5 + LEAST(likes_count / posts_count, (n)) + 10 + log(posts_count)`"
|
top_topics_formula_least_likes_per_post_multiplier: "מכפיל של כמות לייקים מינימלית לפוסט (n) בנוסחת הנושאים המובילים: `log(views_count) * 2 + op_likes_count * 0.5 + LEAST(likes_count / posts_count, (n)) + 10 + log(posts_count)`"
|
||||||
enable_safe_mode: "לאפשר למשתמשים להיכנס למצב בטוח כדי לנפות שגיאות בתוספים."
|
enable_safe_mode: "לאפשר למשתמשים להיכנס למצב בטוח כדי לנפות שגיאות בתוספים."
|
||||||
enable_experimental_sidebar_hamburger: "מאפשר להפעיל סרגל צד ניסיוני ותפריט המבורגר נגלל למשתמש."
|
|
||||||
enable_sidebar: "מפעיל סרגל צד ניסיוני."
|
|
||||||
rate_limit_create_topic: "לאחר יצירת נושא, על המשתמשים להמתין (n) שניות לפני יצירת נושא אחר."
|
rate_limit_create_topic: "לאחר יצירת נושא, על המשתמשים להמתין (n) שניות לפני יצירת נושא אחר."
|
||||||
rate_limit_create_post: "לאחר הפרסום על המשתמשים להמתין (n) שניות לפני יצירת פוסט חדש."
|
rate_limit_create_post: "לאחר הפרסום על המשתמשים להמתין (n) שניות לפני יצירת פוסט חדש."
|
||||||
rate_limit_new_user_create_topic: "לאחר יצירת נושא, משתמשים חדשים יחוייבו לחכות (n) שניות לפני שיוכלו ליצור נושא אחר."
|
rate_limit_new_user_create_topic: "לאחר יצירת נושא, משתמשים חדשים יחוייבו לחכות (n) שניות לפני שיוכלו ליצור נושא אחר."
|
||||||
|
|
|
@ -962,8 +962,6 @@ hu:
|
||||||
min_password_length: "Minimum jelszóhossz."
|
min_password_length: "Minimum jelszóhossz."
|
||||||
block_common_passwords: "A 10 000 leggyakoribb jelszó tiltása."
|
block_common_passwords: "A 10 000 leggyakoribb jelszó tiltása."
|
||||||
discord_secret: "Discord titkos kulcs"
|
discord_secret: "Discord titkos kulcs"
|
||||||
enable_experimental_sidebar_hamburger: "Lehetővé teszi a kísérleti oldalsáv és a felhasználói hamburger legördülő menü engedélyezését."
|
|
||||||
enable_sidebar: "Engedélyezi a kísérleti oldalsávot."
|
|
||||||
rate_limit_new_user_create_topic: "Egy téma létrehozása után az új felhasználóknak (n) másodpercet kell várniuk, mielőtt új témát hozhatnak létre."
|
rate_limit_new_user_create_topic: "Egy téma létrehozása után az új felhasználóknak (n) másodpercet kell várniuk, mielőtt új témát hozhatnak létre."
|
||||||
suggested_topics: "A javasolt témák száma a téma alján láthatók."
|
suggested_topics: "A javasolt témák száma a téma alján láthatók."
|
||||||
limit_suggested_to_category: "Csak a javasolt kategóriákból származó témakörök jelenhetnek meg a javasolt témakörökben."
|
limit_suggested_to_category: "Csak a javasolt kategóriákból származó témakörök jelenhetnek meg a javasolt témakörökben."
|
||||||
|
|
|
@ -1662,8 +1662,6 @@ it:
|
||||||
top_topics_formula_first_post_likes_multiplier: "valore del moltiplicatore (n) dei mi piace sul primo messaggio nella formula dei migliori argomenti: `log(views_count) * 2 + op_likes_count * (n) + LEAST(likes_count / posts_count, 3) + 10 + log(posts_count)`"
|
top_topics_formula_first_post_likes_multiplier: "valore del moltiplicatore (n) dei mi piace sul primo messaggio nella formula dei migliori argomenti: `log(views_count) * 2 + op_likes_count * (n) + LEAST(likes_count / posts_count, 3) + 10 + log(posts_count)`"
|
||||||
top_topics_formula_least_likes_per_post_multiplier: "valore del moltiplicatore (n) del numero minimo di \"mi piace\" per messaggio nella formula dei migliori argomenti: `log(views_count) * 2 + op_likes_count * 0.5 + LEAST(likes_count / posts_count, (n)) + 10 + log(posts_count)`"
|
top_topics_formula_least_likes_per_post_multiplier: "valore del moltiplicatore (n) del numero minimo di \"mi piace\" per messaggio nella formula dei migliori argomenti: `log(views_count) * 2 + op_likes_count * 0.5 + LEAST(likes_count / posts_count, (n)) + 10 + log(posts_count)`"
|
||||||
enable_safe_mode: "Consenti agli utenti di accedere alla modalità sicura per eseguire il debug dei plug-in."
|
enable_safe_mode: "Consenti agli utenti di accedere alla modalità sicura per eseguire il debug dei plug-in."
|
||||||
enable_experimental_sidebar_hamburger: "Consente di abilitare in via sperimentale la barra laterale e il menu utente a tendina."
|
|
||||||
enable_sidebar: "Abilita la barra laterale sperimentale."
|
|
||||||
rate_limit_create_topic: "Dopo aver creato un argomento, gli utenti devono aspettare (n) secondi prima di poterne creare un altro."
|
rate_limit_create_topic: "Dopo aver creato un argomento, gli utenti devono aspettare (n) secondi prima di poterne creare un altro."
|
||||||
rate_limit_create_post: "Dopo aver inviato un messaggio, gli utenti devono aspettare (n) secondi prima di creare un altro messaggio. "
|
rate_limit_create_post: "Dopo aver inviato un messaggio, gli utenti devono aspettare (n) secondi prima di creare un altro messaggio. "
|
||||||
rate_limit_new_user_create_topic: "Dopo aver creato un argomento, i nuovi utenti devono aspettare (n) secondi prima di poter creare un altro argomento."
|
rate_limit_new_user_create_topic: "Dopo aver creato un argomento, i nuovi utenti devono aspettare (n) secondi prima di poter creare un altro argomento."
|
||||||
|
|
|
@ -1613,8 +1613,6 @@ ja:
|
||||||
top_topics_formula_first_post_likes_multiplier: "人気のトピックの計算式に使用する最初の投稿の「いいね!」の乗数 (n) の値: `log(views_count) * 2 + op_likes_count * (n) + LEAST(likes_count / posts_count, 3) + 10 + log(posts_count)`"
|
top_topics_formula_first_post_likes_multiplier: "人気のトピックの計算式に使用する最初の投稿の「いいね!」の乗数 (n) の値: `log(views_count) * 2 + op_likes_count * (n) + LEAST(likes_count / posts_count, 3) + 10 + log(posts_count)`"
|
||||||
top_topics_formula_least_likes_per_post_multiplier: "人気のトピックの計算式に使用する最小「いいね!」率の乗数 (n) の値: `log(views_count) * 2 + op_likes_count * 0.5 + LEAST(likes_count / posts_count, (n)) + 10 + log(posts_count)`"
|
top_topics_formula_least_likes_per_post_multiplier: "人気のトピックの計算式に使用する最小「いいね!」率の乗数 (n) の値: `log(views_count) * 2 + op_likes_count * 0.5 + LEAST(likes_count / posts_count, (n)) + 10 + log(posts_count)`"
|
||||||
enable_safe_mode: "プラグインをデバッグするためにユーザーによる安全モードの開始を許可する。"
|
enable_safe_mode: "プラグインをデバッグするためにユーザーによる安全モードの開始を許可する。"
|
||||||
enable_experimental_sidebar_hamburger: "実験的サイドバーとユーザーのハンバーガードロップダウンメニューを有効にできます。"
|
|
||||||
enable_sidebar: "実験的サイドバーを有効にします。"
|
|
||||||
rate_limit_create_topic: "トピック作成後、ユーザーは (n) 秒待ってから次のトピックを作成する必要があります。"
|
rate_limit_create_topic: "トピック作成後、ユーザーは (n) 秒待ってから次のトピックを作成する必要があります。"
|
||||||
rate_limit_create_post: "投稿後、ユーザーは (n) 秒待ってから次の投稿を作成する必要があります。"
|
rate_limit_create_post: "投稿後、ユーザーは (n) 秒待ってから次の投稿を作成する必要があります。"
|
||||||
rate_limit_new_user_create_topic: "トピック作成後、新規ユーザーは (n) 秒待ってから次のトピックを作成する必要があります。"
|
rate_limit_new_user_create_topic: "トピック作成後、新規ユーザーは (n) 秒待ってから次のトピックを作成する必要があります。"
|
||||||
|
|
|
@ -1676,8 +1676,6 @@ nl:
|
||||||
top_topics_formula_first_post_likes_multiplier: "waarde van vermenigvuldiger (n) voor likes van eerste berichten in toptopicsformule: 'log(views_count) * 2 + op_likes_count * (n) + LEAST(likes_count / posts_count, 3) + 10 + log(posts_count)'"
|
top_topics_formula_first_post_likes_multiplier: "waarde van vermenigvuldiger (n) voor likes van eerste berichten in toptopicsformule: 'log(views_count) * 2 + op_likes_count * (n) + LEAST(likes_count / posts_count, 3) + 10 + log(posts_count)'"
|
||||||
top_topics_formula_least_likes_per_post_multiplier: "waarde van vermenigvuldiger (n) voor minste likes per bericht in toptopicsformule: 'log(views_count) * 2 + op_likes_count * 0.5 + LEAST(likes_count / posts_count, (n)) + 10 + log(posts_count)'"
|
top_topics_formula_least_likes_per_post_multiplier: "waarde van vermenigvuldiger (n) voor minste likes per bericht in toptopicsformule: 'log(views_count) * 2 + op_likes_count * 0.5 + LEAST(likes_count / posts_count, (n)) + 10 + log(posts_count)'"
|
||||||
enable_safe_mode: "Gebruikers mogen de veilige modus betreden om plug-ins te debuggen."
|
enable_safe_mode: "Gebruikers mogen de veilige modus betreden om plug-ins te debuggen."
|
||||||
enable_experimental_sidebar_hamburger: "Staat toe dat de experimentele zijbalk en het hamburgermenu van de gebruiker worden ingeschakeld."
|
|
||||||
enable_sidebar: "Schakelt de experimentele zijbalk in."
|
|
||||||
rate_limit_create_topic: "Na het maken van een topic moeten gebruikers (n) seconden wachten voordat ze een ander topic kunnen maken."
|
rate_limit_create_topic: "Na het maken van een topic moeten gebruikers (n) seconden wachten voordat ze een ander topic kunnen maken."
|
||||||
rate_limit_create_post: "Na het plaatsen van een bericht moeten gebruikers (n) seconden wachten voor ze een ander bericht kunnen plaatsen."
|
rate_limit_create_post: "Na het plaatsen van een bericht moeten gebruikers (n) seconden wachten voor ze een ander bericht kunnen plaatsen."
|
||||||
rate_limit_new_user_create_topic: "Na het maken van een topic moeten nieuwe gebruikers (n) seconden wachten voor ze een ander topic kunnen maken."
|
rate_limit_new_user_create_topic: "Na het maken van een topic moeten nieuwe gebruikers (n) seconden wachten voor ze een ander topic kunnen maken."
|
||||||
|
|
|
@ -1761,8 +1761,6 @@ pl_PL:
|
||||||
top_topics_formula_first_post_likes_multiplier: "wartość mnożnika polubień pierwszego wpisu (n) w tematach formuła: `log(views_count) * 2 + op_likes_count * (n) + LEAST(likes_count / posts_count, 3) + 10 + log(posts_count)`"
|
top_topics_formula_first_post_likes_multiplier: "wartość mnożnika polubień pierwszego wpisu (n) w tematach formuła: `log(views_count) * 2 + op_likes_count * (n) + LEAST(likes_count / posts_count, 3) + 10 + log(posts_count)`"
|
||||||
top_topics_formula_least_likes_per_post_multiplier: "wartość mnożnika najmniejszej liczby polubień na wpis w (n) tematach formuła: `log(views_count) * 2 + op_likes_count * 0.5 + LEAST(likes_count / posts_count, (n)) + 10 + log(posts_count)`"
|
top_topics_formula_least_likes_per_post_multiplier: "wartość mnożnika najmniejszej liczby polubień na wpis w (n) tematach formuła: `log(views_count) * 2 + op_likes_count * 0.5 + LEAST(likes_count / posts_count, (n)) + 10 + log(posts_count)`"
|
||||||
enable_safe_mode: "Zezwól użytkownikom na wchodzenie do trybu awaryjnego w celu debudowania wtyczek."
|
enable_safe_mode: "Zezwól użytkownikom na wchodzenie do trybu awaryjnego w celu debudowania wtyczek."
|
||||||
enable_experimental_sidebar_hamburger: "Umożliwia włączenie eksperymentalnego paska bocznego i rozwijanego hamburger menu użytkownika."
|
|
||||||
enable_sidebar: "Włącza eksperymentalny pasek boczny."
|
|
||||||
rate_limit_create_topic: "Po otworzeniu tematu użytkownicy muszą odczekać (n) sekund, zanim otworzą inny temat."
|
rate_limit_create_topic: "Po otworzeniu tematu użytkownicy muszą odczekać (n) sekund, zanim otworzą inny temat."
|
||||||
rate_limit_create_post: "Po napisaniu wpisu użytkownicy muszą odczekać (n) sekund, zanim napiszą inny wpis."
|
rate_limit_create_post: "Po napisaniu wpisu użytkownicy muszą odczekać (n) sekund, zanim napiszą inny wpis."
|
||||||
rate_limit_new_user_create_topic: "Po otworzeniu tematu nowi użytkownicy muszą odczekać (n) sekund, zanim otworzą inny temat."
|
rate_limit_new_user_create_topic: "Po otworzeniu tematu nowi użytkownicy muszą odczekać (n) sekund, zanim otworzą inny temat."
|
||||||
|
|
|
@ -1665,8 +1665,6 @@ pt_BR:
|
||||||
top_topics_formula_first_post_likes_multiplier: "valor do multiplicador de curtidas da primeira postagem (n) na fórmula dos melhores tópicos: \"log(views_count) * 2 + op_likes_count * (n) + LEAST(likes_count / posts_count, 3) + 10 + log(posts_count)\""
|
top_topics_formula_first_post_likes_multiplier: "valor do multiplicador de curtidas da primeira postagem (n) na fórmula dos melhores tópicos: \"log(views_count) * 2 + op_likes_count * (n) + LEAST(likes_count / posts_count, 3) + 10 + log(posts_count)\""
|
||||||
top_topics_formula_least_likes_per_post_multiplier: "valor do multiplicador da menor quantidade de curtidas por publicação (n) na fórmula de melhores tópicos: \"log(views_count) * 2 + op_likes_count * 0.5 + LEAST(likes_count / posts_count, (n)) + 10 + log(posts_count)\""
|
top_topics_formula_least_likes_per_post_multiplier: "valor do multiplicador da menor quantidade de curtidas por publicação (n) na fórmula de melhores tópicos: \"log(views_count) * 2 + op_likes_count * 0.5 + LEAST(likes_count / posts_count, (n)) + 10 + log(posts_count)\""
|
||||||
enable_safe_mode: "Permitir que os(as) usuários(as) insiram o modo de segurança para depurar plug-ins."
|
enable_safe_mode: "Permitir que os(as) usuários(as) insiram o modo de segurança para depurar plug-ins."
|
||||||
enable_experimental_sidebar_hamburger: "Permite que a barra lateral experimental e o menu hambúrguer suspenso do usuário sejam ativados."
|
|
||||||
enable_sidebar: "Ativar barra lateral experimental."
|
|
||||||
rate_limit_create_topic: "Após criar um tópico, os(as) usuários(as) devem aguardar (n) segundos antes de criar um outro tópico."
|
rate_limit_create_topic: "Após criar um tópico, os(as) usuários(as) devem aguardar (n) segundos antes de criar um outro tópico."
|
||||||
rate_limit_create_post: "Após postar, os(as) usuários(as) devem aguardar (n) segundos antes de criar outra postagem."
|
rate_limit_create_post: "Após postar, os(as) usuários(as) devem aguardar (n) segundos antes de criar outra postagem."
|
||||||
rate_limit_new_user_create_topic: "Após criar um tópico, novos(as) usuários(as) devem aguardar (n) segundos antes de criar outro tópico."
|
rate_limit_new_user_create_topic: "Após criar um tópico, novos(as) usuários(as) devem aguardar (n) segundos antes de criar outro tópico."
|
||||||
|
|
|
@ -1761,8 +1761,6 @@ ru:
|
||||||
top_topics_formula_first_post_likes_multiplier: "значение первого поста множитель лайков (n) в формуле топ-тем: `log(views_count) * 2 + op_likes_count * (n) + LEAST(likes_count / posts_count, 3) + 10 + log(posts_count)`"
|
top_topics_formula_first_post_likes_multiplier: "значение первого поста множитель лайков (n) в формуле топ-тем: `log(views_count) * 2 + op_likes_count * (n) + LEAST(likes_count / posts_count, 3) + 10 + log(posts_count)`"
|
||||||
top_topics_formula_least_likes_per_post_multiplier: "значение наименьшего количества лайков на множитель поста (n) в формуле топ-тем: `log(views_count) * 2 + op_likes_count * 0.5 + LEAST(likes_count / posts_count, (n)) + 10 + log(posts_count)`"
|
top_topics_formula_least_likes_per_post_multiplier: "значение наименьшего количества лайков на множитель поста (n) в формуле топ-тем: `log(views_count) * 2 + op_likes_count * 0.5 + LEAST(likes_count / posts_count, (n)) + 10 + log(posts_count)`"
|
||||||
enable_safe_mode: "Разрешать пользователям входить в безопасный режим для отладки плагинов."
|
enable_safe_mode: "Разрешать пользователям входить в безопасный режим для отладки плагинов."
|
||||||
enable_experimental_sidebar_hamburger: "Позволяет включить экспериментальную боковую панель и раскрывающееся меню пользователя."
|
|
||||||
enable_sidebar: "Включить экспериментальную боковую панель."
|
|
||||||
rate_limit_create_topic: "Пользователи могут создавать новую тему после создания предыдущей только по прошествии указанного здесь количества секунд."
|
rate_limit_create_topic: "Пользователи могут создавать новую тему после создания предыдущей только по прошествии указанного здесь количества секунд."
|
||||||
rate_limit_create_post: "Пользователи могут создавать новое сообщение после создания предыдущего только по прошествии указанного здесь количества секунд."
|
rate_limit_create_post: "Пользователи могут создавать новое сообщение после создания предыдущего только по прошествии указанного здесь количества секунд."
|
||||||
rate_limit_new_user_create_topic: "Новички могут создавать новую тему после создания предыдущей только по прошествии указанного здесь количества секунд."
|
rate_limit_new_user_create_topic: "Новички могут создавать новую тему после создания предыдущей только по прошествии указанного здесь количества секунд."
|
||||||
|
|
|
@ -1677,8 +1677,6 @@ sv:
|
||||||
top_topics_formula_first_post_likes_multiplier: "värde av första inläggsgillningsmultiplikatorn (n) i formeln för toppämnen: `log(views_count) * 2 + op_likes_count * (n) + LEAST(likes_count / posts_count, 3) + 10 + log(posts_count)`"
|
top_topics_formula_first_post_likes_multiplier: "värde av första inläggsgillningsmultiplikatorn (n) i formeln för toppämnen: `log(views_count) * 2 + op_likes_count * (n) + LEAST(likes_count / posts_count, 3) + 10 + log(posts_count)`"
|
||||||
top_topics_formula_least_likes_per_post_multiplier: "värde av minsta inläggsgillningsmultiplikatorn (n) i formeln för toppämnen: `log(views_count) * 2 + op_likes_count * 0.5 + LEAST(likes_count / posts_count, (n)) + 10 + log(posts_count)`"
|
top_topics_formula_least_likes_per_post_multiplier: "värde av minsta inläggsgillningsmultiplikatorn (n) i formeln för toppämnen: `log(views_count) * 2 + op_likes_count * 0.5 + LEAST(likes_count / posts_count, (n)) + 10 + log(posts_count)`"
|
||||||
enable_safe_mode: "Tillåt användare att gå in i säkert läge för att felsöka tillägg."
|
enable_safe_mode: "Tillåt användare att gå in i säkert läge för att felsöka tillägg."
|
||||||
enable_experimental_sidebar_hamburger: "Tillåter att experimentellt sidofält och användarens hamburgarmeny aktiveras."
|
|
||||||
enable_sidebar: "Aktiverar experimentellt sidofält."
|
|
||||||
rate_limit_create_topic: "Efter att ha skapat ett ämne, måste användare vänta (n) sekunder innan de kan skapa ett nytt."
|
rate_limit_create_topic: "Efter att ha skapat ett ämne, måste användare vänta (n) sekunder innan de kan skapa ett nytt."
|
||||||
rate_limit_create_post: "Efter att ha skrivit ett inlägg, måste användare vänta (n) sekunder innan de skriver ett nytt."
|
rate_limit_create_post: "Efter att ha skrivit ett inlägg, måste användare vänta (n) sekunder innan de skriver ett nytt."
|
||||||
rate_limit_new_user_create_topic: "Efter att ha skapat ett ämne, måste nya användare vänta (n) sekunder innan de kan skapa ett nytt."
|
rate_limit_new_user_create_topic: "Efter att ha skapat ett ämne, måste nya användare vänta (n) sekunder innan de kan skapa ett nytt."
|
||||||
|
|
|
@ -1669,8 +1669,6 @@ tr_TR:
|
||||||
top_topics_formula_first_post_likes_multiplier: "en popüler konular formülünde ilk gönderi beğeni çarpanının (n) değeri: \"log(views_count) * 2 + op_likes_count * (n) + LEAST(likes_count / posts_count, 3) + 10 + log(posts_count)\""
|
top_topics_formula_first_post_likes_multiplier: "en popüler konular formülünde ilk gönderi beğeni çarpanının (n) değeri: \"log(views_count) * 2 + op_likes_count * (n) + LEAST(likes_count / posts_count, 3) + 10 + log(posts_count)\""
|
||||||
top_topics_formula_least_likes_per_post_multiplier: "en popüler konular formülünde gönderi başına en az beğeni çarpanı (n) değeri: \"log(views_count) * 2 + op_likes_count * 0.5 + LEAST(likes_count / posts_count, (n)) + 10 + log(posts_count)\""
|
top_topics_formula_least_likes_per_post_multiplier: "en popüler konular formülünde gönderi başına en az beğeni çarpanı (n) değeri: \"log(views_count) * 2 + op_likes_count * 0.5 + LEAST(likes_count / posts_count, (n)) + 10 + log(posts_count)\""
|
||||||
enable_safe_mode: "Kullanıcıların eklentilerde hata ayıklamak için güvenli moda girmesine izin verin."
|
enable_safe_mode: "Kullanıcıların eklentilerde hata ayıklamak için güvenli moda girmesine izin verin."
|
||||||
enable_experimental_sidebar_hamburger: "Deneysel kenar çubuğunun ve kullanıcı hamburger açılır menüsünün etkinleştirilmesini sağlar."
|
|
||||||
enable_sidebar: "Deneysel kenar çubuğunu etkinleştirir."
|
|
||||||
rate_limit_create_topic: "Bir konu oluşturduktan sonra, kullanıcılar başka bir konu oluşturabilmek için (n) saniye beklemelidir."
|
rate_limit_create_topic: "Bir konu oluşturduktan sonra, kullanıcılar başka bir konu oluşturabilmek için (n) saniye beklemelidir."
|
||||||
rate_limit_create_post: "Gönderi yaptıktan sonra, kullanıcılar başka bir gönderi oluşturabilmek için (n) saniye beklemelidir."
|
rate_limit_create_post: "Gönderi yaptıktan sonra, kullanıcılar başka bir gönderi oluşturabilmek için (n) saniye beklemelidir."
|
||||||
rate_limit_new_user_create_topic: "Bir konu oluşturduktan sonra, yeni kullanıcılar başka bir konu oluşturabilmek için (n) saniye beklemelidir."
|
rate_limit_new_user_create_topic: "Bir konu oluşturduktan sonra, yeni kullanıcılar başka bir konu oluşturabilmek için (n) saniye beklemelidir."
|
||||||
|
|
|
@ -1773,8 +1773,6 @@ uk:
|
||||||
top_topics_formula_first_post_likes_multiplier: "значення коефіцієнта множення переглядів журналу (n) у формулі топ-тем: `log(views_count) * 2 + op_likes_count * (n) + LEAST(likes_count / posts_count, 3) + 10 + log(posts_count)`"
|
top_topics_formula_first_post_likes_multiplier: "значення коефіцієнта множення переглядів журналу (n) у формулі топ-тем: `log(views_count) * 2 + op_likes_count * (n) + LEAST(likes_count / posts_count, 3) + 10 + log(posts_count)`"
|
||||||
top_topics_formula_least_likes_per_post_multiplier: "значення коефіцієнта найменшої кількості вподобань на допис (n) у формулі топ-тем: `log(views_count) * 2 + op_likes_count * 0.5 + LEAST(likes_count / posts_count, (n)) + 10 + log(posts_count)`"
|
top_topics_formula_least_likes_per_post_multiplier: "значення коефіцієнта найменшої кількості вподобань на допис (n) у формулі топ-тем: `log(views_count) * 2 + op_likes_count * 0.5 + LEAST(likes_count / posts_count, (n)) + 10 + log(posts_count)`"
|
||||||
enable_safe_mode: "Дозволити користувачам входити в безпечний режим для налагодження плагінів."
|
enable_safe_mode: "Дозволити користувачам входити в безпечний режим для налагодження плагінів."
|
||||||
enable_experimental_sidebar_hamburger: "Дозволяє вмикати експериментальну бічну панель і спадне меню користувача."
|
|
||||||
enable_sidebar: "Вмикає експериментальну бічну панель."
|
|
||||||
rate_limit_create_topic: "Після створення теми користувачі повинні зачекати (n) секунд, перш ніж створювати іншу тему."
|
rate_limit_create_topic: "Після створення теми користувачі повинні зачекати (n) секунд, перш ніж створювати іншу тему."
|
||||||
rate_limit_create_post: "Після надсилання користувачі повинні зачекати (n) секунд, перш ніж створити інший допис."
|
rate_limit_create_post: "Після надсилання користувачі повинні зачекати (n) секунд, перш ніж створити інший допис."
|
||||||
rate_limit_new_user_create_topic: "Після створення теми нові користувачі повинні зачекати (n) секунд, перш ніж створювати нову тему."
|
rate_limit_new_user_create_topic: "Після створення теми нові користувачі повинні зачекати (n) секунд, перш ніж створювати нову тему."
|
||||||
|
|
|
@ -1156,8 +1156,6 @@ vi:
|
||||||
top_topics_formula_log_views_multiplier: "giá trị nhật ký lượt xem nhân với (n) trong công thức chủ đề top: `log(views_count) * (n) + op_likes_count * 0.5 + LEAST(likes_count / posts_count, 3) + 10 + log(posts_count)`"
|
top_topics_formula_log_views_multiplier: "giá trị nhật ký lượt xem nhân với (n) trong công thức chủ đề top: `log(views_count) * (n) + op_likes_count * 0.5 + LEAST(likes_count / posts_count, 3) + 10 + log(posts_count)`"
|
||||||
top_topics_formula_first_post_likes_multiplier: "giá trị của lượt like bài viết đầu tiên nhân với (n) trong công thức chủ đề top: `log(views_count) * 2 + op_likes_count * (n) + LEAST(likes_count / posts_count, 3) + 10 + log(posts_count)`"
|
top_topics_formula_first_post_likes_multiplier: "giá trị của lượt like bài viết đầu tiên nhân với (n) trong công thức chủ đề top: `log(views_count) * 2 + op_likes_count * (n) + LEAST(likes_count / posts_count, 3) + 10 + log(posts_count)`"
|
||||||
top_topics_formula_least_likes_per_post_multiplier: "giá trị số lượt like tối thiểu của mỗi bài viết nhân với (n) trong công thức chủ đề top: `log(views_count) * 2 + op_likes_count * 0.5 + LEAST(likes_count / posts_count, (n)) + 10 + log(posts_count)`"
|
top_topics_formula_least_likes_per_post_multiplier: "giá trị số lượt like tối thiểu của mỗi bài viết nhân với (n) trong công thức chủ đề top: `log(views_count) * 2 + op_likes_count * 0.5 + LEAST(likes_count / posts_count, (n)) + 10 + log(posts_count)`"
|
||||||
enable_experimental_sidebar_hamburger: "Cho phép bật thanh bên thử nghiệm và menu thả xuống hamburger người dùng."
|
|
||||||
enable_sidebar: "Bật thanh bên thử nghiệm."
|
|
||||||
rate_limit_create_topic: "Sau khi tạo một chủ đề, người dùng phải chờ (n) giây trước khi tạo một chủ đề khác."
|
rate_limit_create_topic: "Sau khi tạo một chủ đề, người dùng phải chờ (n) giây trước khi tạo một chủ đề khác."
|
||||||
rate_limit_create_post: "Sau khi đăn bài, người dùng phải chờ (n) giây trước khi đăng bài khác."
|
rate_limit_create_post: "Sau khi đăn bài, người dùng phải chờ (n) giây trước khi đăng bài khác."
|
||||||
rate_limit_new_user_create_topic: "Sau khi tạo một chủ đề, người dùng mới phải chờ (n) giây trước khi tạo chủ đề khác."
|
rate_limit_new_user_create_topic: "Sau khi tạo một chủ đề, người dùng mới phải chờ (n) giây trước khi tạo chủ đề khác."
|
||||||
|
|
|
@ -1613,8 +1613,6 @@ zh_CN:
|
||||||
top_topics_formula_first_post_likes_multiplier: "热门话题中第一个帖子点赞因子 (n) 值的公式:`log(views_count) * 2 + op_likes_count * (n) + LEAST(likes_count / posts_count, 3) + 10 + log(posts_count)`"
|
top_topics_formula_first_post_likes_multiplier: "热门话题中第一个帖子点赞因子 (n) 值的公式:`log(views_count) * 2 + op_likes_count * (n) + LEAST(likes_count / posts_count, 3) + 10 + log(posts_count)`"
|
||||||
top_topics_formula_least_likes_per_post_multiplier: "热门话题中每个帖子的最少点赞因子 (n) 值的公式:`log(views_count) * 2 + op_likes_count * 0.5 + LEAST(likes_count / posts_count, (n)) + 10 + log(posts_count)`"
|
top_topics_formula_least_likes_per_post_multiplier: "热门话题中每个帖子的最少点赞因子 (n) 值的公式:`log(views_count) * 2 + op_likes_count * 0.5 + LEAST(likes_count / posts_count, (n)) + 10 + log(posts_count)`"
|
||||||
enable_safe_mode: "允许用户进入安全模式以调试插件。"
|
enable_safe_mode: "允许用户进入安全模式以调试插件。"
|
||||||
enable_experimental_sidebar_hamburger: "允许启用实验性边栏和用户汉堡下拉菜单。"
|
|
||||||
enable_sidebar: "启用实验性边栏。"
|
|
||||||
rate_limit_create_topic: "创建话题后,用户必须等待 (n) 秒才能创建另一个话题。"
|
rate_limit_create_topic: "创建话题后,用户必须等待 (n) 秒才能创建另一个话题。"
|
||||||
rate_limit_create_post: "发帖后,用户必须等待 (n) 秒才能创建另一个帖子。"
|
rate_limit_create_post: "发帖后,用户必须等待 (n) 秒才能创建另一个帖子。"
|
||||||
rate_limit_new_user_create_topic: "创建话题后,新用户必须等待 (n) 秒才能创建另一个话题。"
|
rate_limit_new_user_create_topic: "创建话题后,新用户必须等待 (n) 秒才能创建另一个话题。"
|
||||||
|
|
|
@ -1247,8 +1247,6 @@ zh_TW:
|
||||||
top_topics_formula_first_post_likes_multiplier: "熱門主題公式中首貼讚的數量的因子的值(n):`log(views_count) * 2 + op_likes_count * (n) + LEAST(likes_count / posts_count, 3) + 10 + log(posts_count)`"
|
top_topics_formula_first_post_likes_multiplier: "熱門主題公式中首貼讚的數量的因子的值(n):`log(views_count) * 2 + op_likes_count * (n) + LEAST(likes_count / posts_count, 3) + 10 + log(posts_count)`"
|
||||||
top_topics_formula_least_likes_per_post_multiplier: "熱門主題公式中贊和貼文數量的比例的最小值(n):`log(views_count) * (n) + op_likes_count * 0.5 + LEAST(likes_count / posts_count, 3) + 10 + log(posts_count)`"
|
top_topics_formula_least_likes_per_post_multiplier: "熱門主題公式中贊和貼文數量的比例的最小值(n):`log(views_count) * (n) + op_likes_count * 0.5 + LEAST(likes_count / posts_count, 3) + 10 + log(posts_count)`"
|
||||||
enable_safe_mode: "允許使用者進入安全模式以偵錯插件(plugins)。"
|
enable_safe_mode: "允許使用者進入安全模式以偵錯插件(plugins)。"
|
||||||
enable_experimental_sidebar_hamburger: "允許啟用實驗側選單和漢堡下拉選單。"
|
|
||||||
enable_sidebar: "啟用實驗性側選單。"
|
|
||||||
rate_limit_create_topic: "建立新討論話題之後,使用者必須間隔多少秒 (n) 才能再建立新討論話題"
|
rate_limit_create_topic: "建立新討論話題之後,使用者必須間隔多少秒 (n) 才能再建立新討論話題"
|
||||||
rate_limit_create_post: "建立新貼文之後,使用者必須間隔多少秒 (n) 才能再建立新貼文"
|
rate_limit_create_post: "建立新貼文之後,使用者必須間隔多少秒 (n) 才能再建立新貼文"
|
||||||
rate_limit_new_user_create_topic: "建立一個話題後,新使用者必須等待 (n) 秒才能建立另一個新話題"
|
rate_limit_new_user_create_topic: "建立一個話題後,新使用者必須等待 (n) 秒才能建立另一個新話題"
|
||||||
|
|
|
@ -2032,9 +2032,6 @@ developer:
|
||||||
enable_safe_mode:
|
enable_safe_mode:
|
||||||
default: true
|
default: true
|
||||||
client: true
|
client: true
|
||||||
enable_experimental_sidebar_hamburger:
|
|
||||||
default: false
|
|
||||||
client: true
|
|
||||||
enable_experimental_hashtag_autocomplete:
|
enable_experimental_hashtag_autocomplete:
|
||||||
default: false
|
default: false
|
||||||
client: true
|
client: true
|
||||||
|
@ -2060,10 +2057,12 @@ developer:
|
||||||
allow_any: false
|
allow_any: false
|
||||||
refresh: true
|
refresh: true
|
||||||
|
|
||||||
sidebar:
|
navigation:
|
||||||
enable_sidebar:
|
navigation_menu:
|
||||||
default: true
|
|
||||||
client: true
|
client: true
|
||||||
|
default: "legacy"
|
||||||
|
type: enum
|
||||||
|
enum: "NavigationMenuSiteSetting"
|
||||||
default_sidebar_categories:
|
default_sidebar_categories:
|
||||||
type: category_list
|
type: category_list
|
||||||
default: ""
|
default: ""
|
||||||
|
|
|
@ -0,0 +1,36 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class MigrateSidebarSiteSettings < ActiveRecord::Migration[7.0]
|
||||||
|
def up
|
||||||
|
previous_enable_experimental_sidebar_hamburger = DB.query_single(
|
||||||
|
"SELECT value FROM site_settings WHERE name = 'enable_experimental_sidebar_hamburger'"
|
||||||
|
)[0]
|
||||||
|
|
||||||
|
previous_enable_sidebar = DB.query_single(
|
||||||
|
"SELECT value FROM site_settings WHERE name = 'enable_sidebar'"
|
||||||
|
)[0]
|
||||||
|
|
||||||
|
value =
|
||||||
|
case [previous_enable_experimental_sidebar_hamburger, previous_enable_sidebar]
|
||||||
|
when ['t', 't'], ['t', nil]
|
||||||
|
"sidebar"
|
||||||
|
when ['t', 'f']
|
||||||
|
"header dropdown"
|
||||||
|
when ['f', 't'], ['f', 'f'], ['f', nil]
|
||||||
|
"legacy"
|
||||||
|
when [nil, 't'], [nil, 'f'], [nil, nil]
|
||||||
|
nil
|
||||||
|
end
|
||||||
|
|
||||||
|
if value
|
||||||
|
execute(<<~SQL)
|
||||||
|
INSERT INTO site_settings (name, data_type, value, created_at, updated_at)
|
||||||
|
VALUES ('navigation_menu', 8, '#{value}', now(), now())
|
||||||
|
SQL
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def down
|
||||||
|
raise ActiveRecord::IrreversibleMigration
|
||||||
|
end
|
||||||
|
end
|
|
@ -235,13 +235,7 @@ module SiteSettingExtension
|
||||||
|
|
||||||
defaults.all(default_locale)
|
defaults.all(default_locale)
|
||||||
.reject do |setting_name, _|
|
.reject do |setting_name, _|
|
||||||
if !include_hidden && hidden_settings.include?(setting_name)
|
!include_hidden && hidden_settings.include?(setting_name)
|
||||||
true
|
|
||||||
elsif categories[setting_name].to_s == "sidebar" && !SiteSetting.enable_experimental_sidebar_hamburger
|
|
||||||
true
|
|
||||||
else
|
|
||||||
false
|
|
||||||
end
|
|
||||||
end.map do |s, v|
|
end.map do |s, v|
|
||||||
type_hash = type_supervisor.type_hash(s)
|
type_hash = type_supervisor.type_hash(s)
|
||||||
default = defaults.get(s, default_locale).to_s
|
default = defaults.get(s, default_locale).to_s
|
||||||
|
|
|
@ -17,9 +17,6 @@ export default class ChatController extends Controller {
|
||||||
}
|
}
|
||||||
|
|
||||||
get shouldUseCoreSidebar() {
|
get shouldUseCoreSidebar() {
|
||||||
return (
|
return this.siteSettings.navigation_menu === "sidebar";
|
||||||
this.siteSettings.enable_sidebar &&
|
|
||||||
this.siteSettings.enable_experimental_sidebar_hamburger
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -151,10 +151,9 @@ RSpec.describe "Navigation", type: :system, js: true do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context "when sidebar is enabled" do
|
context "when sidebar is configured as the navigation menu" do
|
||||||
before do
|
before do
|
||||||
SiteSetting.enable_experimental_sidebar_hamburger = true
|
SiteSetting.navigation_menu = "sidebar"
|
||||||
SiteSetting.enable_sidebar = true
|
|
||||||
end
|
end
|
||||||
|
|
||||||
context "when opening channel from sidebar with drawer preferred" do
|
context "when opening channel from sidebar with drawer preferred" do
|
||||||
|
|
|
@ -20,8 +20,7 @@ RSpec.describe "Receiving message", type: :system, js: true do
|
||||||
|
|
||||||
context "when core sidebar is enabled" do
|
context "when core sidebar is enabled" do
|
||||||
before do
|
before do
|
||||||
SiteSetting.enable_sidebar = true
|
SiteSetting.navigation_menu = "sidebar"
|
||||||
SiteSetting.enable_experimental_sidebar_hamburger = true
|
|
||||||
end
|
end
|
||||||
|
|
||||||
context "when receiving a direct message" do
|
context "when receiving a direct message" do
|
||||||
|
|
|
@ -14,10 +14,9 @@ RSpec.describe "Navigation", type: :system, js: true do
|
||||||
sign_in(user)
|
sign_in(user)
|
||||||
end
|
end
|
||||||
|
|
||||||
context "when core sidebar is enabled" do
|
context "when sidebar is enabled as the navigation menu" do
|
||||||
before do
|
before do
|
||||||
SiteSetting.enable_sidebar = true
|
SiteSetting.navigation_menu = "sidebar"
|
||||||
SiteSetting.enable_experimental_sidebar_hamburger = true
|
|
||||||
end
|
end
|
||||||
|
|
||||||
it "uses core sidebar" do
|
it "uses core sidebar" do
|
||||||
|
|
|
@ -15,8 +15,7 @@ acceptance(
|
||||||
|
|
||||||
needs.settings({
|
needs.settings({
|
||||||
chat_enabled: true,
|
chat_enabled: true,
|
||||||
enable_sidebar: false,
|
navigation_menu: "legacy",
|
||||||
enable_experimental_sidebar_hamburger: false,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
needs.pretender((server, helper) => {
|
needs.pretender((server, helper) => {
|
||||||
|
|
|
@ -15,8 +15,7 @@ acceptance("Discourse Chat - Sidebar - User Status", function (needs) {
|
||||||
|
|
||||||
needs.settings({
|
needs.settings({
|
||||||
chat_enabled: true,
|
chat_enabled: true,
|
||||||
enable_experimental_sidebar_hamburger: true,
|
navigation_menu: "sidebar",
|
||||||
enable_sidebar: true,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
needs.pretender((server, helper) => {
|
needs.pretender((server, helper) => {
|
||||||
|
|
|
@ -61,7 +61,6 @@ acceptance(
|
||||||
needs.settings({
|
needs.settings({
|
||||||
chat_enabled: true,
|
chat_enabled: true,
|
||||||
chat_allow_archiving_channels: true,
|
chat_allow_archiving_channels: true,
|
||||||
enable_sidebar: false,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
needs.pretender((server, helper) => {
|
needs.pretender((server, helper) => {
|
||||||
|
|
|
@ -65,7 +65,7 @@ acceptance("Discourse Chat - without unread", function (needs) {
|
||||||
has_chat_enabled: true,
|
has_chat_enabled: true,
|
||||||
});
|
});
|
||||||
needs.settings({
|
needs.settings({
|
||||||
enable_sidebar: false,
|
navigation_menu: "legacy",
|
||||||
chat_enabled: true,
|
chat_enabled: true,
|
||||||
});
|
});
|
||||||
needs.pretender((server, helper) => {
|
needs.pretender((server, helper) => {
|
||||||
|
|
|
@ -18,8 +18,7 @@ acceptance("Discourse Chat - Core Sidebar", function (needs) {
|
||||||
|
|
||||||
needs.settings({
|
needs.settings({
|
||||||
chat_enabled: true,
|
chat_enabled: true,
|
||||||
enable_experimental_sidebar_hamburger: true,
|
navigation_menu: "sidebar",
|
||||||
enable_sidebar: true,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
needs.pretender((server, helper) => {
|
needs.pretender((server, helper) => {
|
||||||
|
@ -528,7 +527,7 @@ acceptance("Discourse Chat - Plugin Sidebar", function (needs) {
|
||||||
|
|
||||||
needs.settings({
|
needs.settings({
|
||||||
chat_enabled: true,
|
chat_enabled: true,
|
||||||
enable_sidebar: false,
|
navigation_menu: "legacy",
|
||||||
});
|
});
|
||||||
|
|
||||||
needs.pretender((server, helper) => {
|
needs.pretender((server, helper) => {
|
||||||
|
@ -613,8 +612,7 @@ acceptance(
|
||||||
|
|
||||||
needs.settings({
|
needs.settings({
|
||||||
chat_enabled: true,
|
chat_enabled: true,
|
||||||
enable_experimental_sidebar_hamburger: true,
|
navigation_menu: "sidebar",
|
||||||
enable_sidebar: true,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
needs.pretender((server, helper) => {
|
needs.pretender((server, helper) => {
|
||||||
|
@ -656,8 +654,7 @@ acceptance(
|
||||||
|
|
||||||
needs.settings({
|
needs.settings({
|
||||||
chat_enabled: true,
|
chat_enabled: true,
|
||||||
enable_experimental_sidebar_hamburger: true,
|
navigation_menu: "sidebar",
|
||||||
enable_sidebar: true,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
needs.pretender((server, helper) => {
|
needs.pretender((server, helper) => {
|
||||||
|
@ -698,8 +695,7 @@ acceptance(
|
||||||
|
|
||||||
needs.settings({
|
needs.settings({
|
||||||
chat_enabled: true,
|
chat_enabled: true,
|
||||||
enable_experimental_sidebar_hamburger: true,
|
navigation_menu: "sidebar",
|
||||||
enable_sidebar: true,
|
|
||||||
direct_message_enabled_groups: "13", // trust_level_3 auto group ID;
|
direct_message_enabled_groups: "13", // trust_level_3 auto group ID;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -741,8 +737,7 @@ acceptance(
|
||||||
|
|
||||||
needs.settings({
|
needs.settings({
|
||||||
chat_enabled: true,
|
chat_enabled: true,
|
||||||
enable_experimental_sidebar_hamburger: true,
|
navigation_menu: "sidebar",
|
||||||
enable_sidebar: true,
|
|
||||||
direct_message_enabled_groups: "13", // trust_level_3 auto group ID;
|
direct_message_enabled_groups: "13", // trust_level_3 auto group ID;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@ RSpec.describe Jobs::NotifyReviewable do
|
||||||
fab!(:user) { group_user.user }
|
fab!(:user) { group_user.user }
|
||||||
|
|
||||||
it "will notify users of new reviewable content for the new user menu" do
|
it "will notify users of new reviewable content for the new user menu" do
|
||||||
SiteSetting.enable_experimental_sidebar_hamburger = true
|
SiteSetting.navigation_menu = "sidebar"
|
||||||
SiteSetting.enable_category_group_moderation = true
|
SiteSetting.enable_category_group_moderation = true
|
||||||
|
|
||||||
GroupUser.create!(group_id: group.id, user_id: moderator.id)
|
GroupUser.create!(group_id: group.id, user_id: moderator.id)
|
||||||
|
@ -84,7 +84,7 @@ RSpec.describe Jobs::NotifyReviewable do
|
||||||
end
|
end
|
||||||
|
|
||||||
it "will notify users of new reviewable content for the old user menu" do
|
it "will notify users of new reviewable content for the old user menu" do
|
||||||
SiteSetting.enable_experimental_sidebar_hamburger = false
|
SiteSetting.navigation_menu = "legacy"
|
||||||
SiteSetting.enable_category_group_moderation = true
|
SiteSetting.enable_category_group_moderation = true
|
||||||
|
|
||||||
GroupUser.create!(group_id: group.id, user_id: moderator.id)
|
GroupUser.create!(group_id: group.id, user_id: moderator.id)
|
||||||
|
|
|
@ -833,24 +833,4 @@ RSpec.describe SiteSettingExtension do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe 'sidebar category site settings' do
|
|
||||||
describe '.all_settings' do
|
|
||||||
before do
|
|
||||||
settings.setting(:test_setting, 88, category: :sidebar)
|
|
||||||
end
|
|
||||||
|
|
||||||
it 'does not include the sidebar category setting when enable_experimental_sidebar_hamburger site setting is disabled' do
|
|
||||||
SiteSetting.enable_experimental_sidebar_hamburger = false
|
|
||||||
|
|
||||||
expect(settings.all_settings.detect { |s| s[:setting] == :test_setting }).to eq(nil)
|
|
||||||
end
|
|
||||||
|
|
||||||
it 'includes the sidebar category setting when enable_experimental_sidebar_hamburger site setting is enabled' do
|
|
||||||
SiteSetting.enable_experimental_sidebar_hamburger = true
|
|
||||||
|
|
||||||
expect(settings.all_settings.detect { |s| s[:setting] == :test_setting }[:setting]).to eq(:test_setting)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -593,13 +593,13 @@ RSpec.describe TopicTrackingState do
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
it "includes tags when SiteSetting.enable_experimental_sidebar_hamburger is true" do
|
it "includes tags when SiteSetting.navigation_menu is not legacy" do
|
||||||
report = TopicTrackingState.report(user)
|
report = TopicTrackingState.report(user)
|
||||||
expect(report.length).to eq(1)
|
expect(report.length).to eq(1)
|
||||||
row = report[0]
|
row = report[0]
|
||||||
expect(row.respond_to?(:tags)).to eq(false)
|
expect(row.respond_to?(:tags)).to eq(false)
|
||||||
|
|
||||||
SiteSetting.enable_experimental_sidebar_hamburger = true
|
SiteSetting.navigation_menu = "sidebar"
|
||||||
|
|
||||||
report = TopicTrackingState.report(user)
|
report = TopicTrackingState.report(user)
|
||||||
expect(report.length).to eq(1)
|
expect(report.length).to eq(1)
|
||||||
|
|
|
@ -36,7 +36,7 @@ RSpec.describe User do
|
||||||
fab!(:staff_tag_group) { Fabricate(:tag_group, permissions: { "staff" => 1 }, tag_names: [hidden_tag.name]) }
|
fab!(:staff_tag_group) { Fabricate(:tag_group, permissions: { "staff" => 1 }, tag_names: [hidden_tag.name]) }
|
||||||
|
|
||||||
before do
|
before do
|
||||||
SiteSetting.enable_experimental_sidebar_hamburger = true
|
SiteSetting.navigation_menu = "sidebar"
|
||||||
SiteSetting.tagging_enabled = true
|
SiteSetting.tagging_enabled = true
|
||||||
SiteSetting.default_sidebar_categories = "#{category.id}|#{secured_category.id}"
|
SiteSetting.default_sidebar_categories = "#{category.id}|#{secured_category.id}"
|
||||||
SiteSetting.default_sidebar_tags = "#{tag.name}|#{hidden_tag.name}"
|
SiteSetting.default_sidebar_tags = "#{tag.name}|#{hidden_tag.name}"
|
||||||
|
@ -107,8 +107,8 @@ RSpec.describe User do
|
||||||
expect(SidebarSectionLink.where(linkable_type: 'Category', user_id: user.id).pluck(:linkable_id)).to be_empty
|
expect(SidebarSectionLink.where(linkable_type: 'Category', user_id: user.id).pluck(:linkable_id)).to be_empty
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'should not create any sidebar section link records when experimental sidebar is disabled' do
|
it 'should not create any sidebar section link records when navigation_menu site setting is still legacy' do
|
||||||
SiteSetting.enable_experimental_sidebar_hamburger = false
|
SiteSetting.navigation_menu = "legacy"
|
||||||
|
|
||||||
user = Fabricate(:user)
|
user = Fabricate(:user)
|
||||||
|
|
||||||
|
@ -2195,9 +2195,9 @@ RSpec.describe User do
|
||||||
expect(message).to eq(nil)
|
expect(message).to eq(nil)
|
||||||
end
|
end
|
||||||
|
|
||||||
context "with redesigned_user_menu_enabled on" do
|
context "with sidebar based navigation menu" do
|
||||||
before do
|
before do
|
||||||
SiteSetting.enable_experimental_sidebar_hamburger = true
|
SiteSetting.navigation_menu = "sidebar"
|
||||||
end
|
end
|
||||||
|
|
||||||
it "adds all_unread_notifications and grouped_unread_notifications to the payload" do
|
it "adds all_unread_notifications and grouped_unread_notifications to the payload" do
|
||||||
|
|
|
@ -111,7 +111,7 @@ RSpec.describe NotificationsController do
|
||||||
expect(JSON.parse(response.body)['notifications'][0]['read']).to eq(false)
|
expect(JSON.parse(response.body)['notifications'][0]['read']).to eq(false)
|
||||||
end
|
end
|
||||||
|
|
||||||
context "with the enable_experimental_sidebar_hamburger setting" do
|
context "when navigation menu settings is non-legacy" do
|
||||||
fab!(:unread_high_priority) do
|
fab!(:unread_high_priority) do
|
||||||
Fabricate(
|
Fabricate(
|
||||||
:notification,
|
:notification,
|
||||||
|
@ -121,6 +121,7 @@ RSpec.describe NotificationsController do
|
||||||
created_at: 10.minutes.ago
|
created_at: 10.minutes.ago
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
fab!(:read_high_priority) do
|
fab!(:read_high_priority) do
|
||||||
Fabricate(
|
Fabricate(
|
||||||
:notification,
|
:notification,
|
||||||
|
@ -130,6 +131,7 @@ RSpec.describe NotificationsController do
|
||||||
created_at: 8.minutes.ago
|
created_at: 8.minutes.ago
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
fab!(:unread_regular) do
|
fab!(:unread_regular) do
|
||||||
Fabricate(
|
Fabricate(
|
||||||
:notification,
|
:notification,
|
||||||
|
@ -139,6 +141,7 @@ RSpec.describe NotificationsController do
|
||||||
created_at: 6.minutes.ago
|
created_at: 6.minutes.ago
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
fab!(:read_regular) do
|
fab!(:read_regular) do
|
||||||
Fabricate(
|
Fabricate(
|
||||||
:notification,
|
:notification,
|
||||||
|
@ -148,12 +151,18 @@ RSpec.describe NotificationsController do
|
||||||
created_at: 4.minutes.ago
|
created_at: 4.minutes.ago
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
fab!(:pending_reviewable) { Fabricate(:reviewable) }
|
fab!(:pending_reviewable) { Fabricate(:reviewable) }
|
||||||
|
|
||||||
it "gets notifications list with unread ones at the top when the setting is enabled" do
|
before do
|
||||||
SiteSetting.enable_experimental_sidebar_hamburger = true
|
SiteSetting.navigation_menu = "sidebar"
|
||||||
|
end
|
||||||
|
|
||||||
|
it "gets notifications list with unread ones at the top" do
|
||||||
get "/notifications.json", params: { recent: true }
|
get "/notifications.json", params: { recent: true }
|
||||||
|
|
||||||
expect(response.status).to eq(200)
|
expect(response.status).to eq(200)
|
||||||
|
|
||||||
expect(response.parsed_body["notifications"].map { |n| n["id"] }).to eq([
|
expect(response.parsed_body["notifications"].map { |n| n["id"] }).to eq([
|
||||||
unread_high_priority.id,
|
unread_high_priority.id,
|
||||||
notification.id,
|
notification.id,
|
||||||
|
@ -163,10 +172,13 @@ RSpec.describe NotificationsController do
|
||||||
])
|
])
|
||||||
end
|
end
|
||||||
|
|
||||||
it "gets notifications list with unread high priority notifications at the top when the setting is disabled" do
|
it "gets notifications list with unread high priority notifications at the top when navigation menu is legacy" do
|
||||||
SiteSetting.enable_experimental_sidebar_hamburger = false
|
SiteSetting.navigation_menu = "legacy"
|
||||||
|
|
||||||
get "/notifications.json", params: { recent: true }
|
get "/notifications.json", params: { recent: true }
|
||||||
|
|
||||||
expect(response.status).to eq(200)
|
expect(response.status).to eq(200)
|
||||||
|
|
||||||
expect(response.parsed_body["notifications"].map { |n| n["id"] }).to eq([
|
expect(response.parsed_body["notifications"].map { |n| n["id"] }).to eq([
|
||||||
unread_high_priority.id,
|
unread_high_priority.id,
|
||||||
notification.id,
|
notification.id,
|
||||||
|
@ -177,9 +189,10 @@ RSpec.describe NotificationsController do
|
||||||
end
|
end
|
||||||
|
|
||||||
it "should not bump last seen reviewable in readonly mode" do
|
it "should not bump last seen reviewable in readonly mode" do
|
||||||
SiteSetting.enable_experimental_sidebar_hamburger = true
|
|
||||||
user.update!(admin: true)
|
user.update!(admin: true)
|
||||||
|
|
||||||
Discourse.received_redis_readonly!
|
Discourse.received_redis_readonly!
|
||||||
|
|
||||||
expect {
|
expect {
|
||||||
get "/notifications.json", params: { recent: true, bump_last_seen_reviewable: true }
|
get "/notifications.json", params: { recent: true, bump_last_seen_reviewable: true }
|
||||||
expect(response.status).to eq(200)
|
expect(response.status).to eq(200)
|
||||||
|
@ -189,7 +202,6 @@ RSpec.describe NotificationsController do
|
||||||
end
|
end
|
||||||
|
|
||||||
it "should not bump last seen reviewable if the user can't see reviewables" do
|
it "should not bump last seen reviewable if the user can't see reviewables" do
|
||||||
SiteSetting.enable_experimental_sidebar_hamburger = true
|
|
||||||
expect {
|
expect {
|
||||||
get "/notifications.json", params: { recent: true, bump_last_seen_reviewable: true }
|
get "/notifications.json", params: { recent: true, bump_last_seen_reviewable: true }
|
||||||
expect(response.status).to eq(200)
|
expect(response.status).to eq(200)
|
||||||
|
@ -197,8 +209,8 @@ RSpec.describe NotificationsController do
|
||||||
end
|
end
|
||||||
|
|
||||||
it "should not bump last seen reviewable if the silent param is present" do
|
it "should not bump last seen reviewable if the silent param is present" do
|
||||||
SiteSetting.enable_experimental_sidebar_hamburger = true
|
|
||||||
user.update!(admin: true)
|
user.update!(admin: true)
|
||||||
|
|
||||||
expect {
|
expect {
|
||||||
get "/notifications.json", params: {
|
get "/notifications.json", params: {
|
||||||
recent: true,
|
recent: true,
|
||||||
|
@ -210,8 +222,8 @@ RSpec.describe NotificationsController do
|
||||||
end
|
end
|
||||||
|
|
||||||
it "should not bump last seen reviewable if the bump_last_seen_reviewable param is not present" do
|
it "should not bump last seen reviewable if the bump_last_seen_reviewable param is not present" do
|
||||||
SiteSetting.enable_experimental_sidebar_hamburger = true
|
|
||||||
user.update!(admin: true)
|
user.update!(admin: true)
|
||||||
|
|
||||||
expect {
|
expect {
|
||||||
get "/notifications.json", params: { recent: true }
|
get "/notifications.json", params: { recent: true }
|
||||||
expect(response.status).to eq(200)
|
expect(response.status).to eq(200)
|
||||||
|
@ -219,26 +231,33 @@ RSpec.describe NotificationsController do
|
||||||
end
|
end
|
||||||
|
|
||||||
it "bumps last_seen_reviewable_id" do
|
it "bumps last_seen_reviewable_id" do
|
||||||
SiteSetting.enable_experimental_sidebar_hamburger = true
|
|
||||||
user.update!(admin: true)
|
user.update!(admin: true)
|
||||||
|
|
||||||
expect(user.last_seen_reviewable_id).to eq(nil)
|
expect(user.last_seen_reviewable_id).to eq(nil)
|
||||||
|
|
||||||
get "/notifications.json", params: { recent: true, bump_last_seen_reviewable: true }
|
get "/notifications.json", params: { recent: true, bump_last_seen_reviewable: true }
|
||||||
|
|
||||||
|
expect(response.status).to eq(200)
|
||||||
expect(user.reload.last_seen_reviewable_id).to eq(pending_reviewable.id)
|
expect(user.reload.last_seen_reviewable_id).to eq(pending_reviewable.id)
|
||||||
|
|
||||||
reviewable2 = Fabricate(:reviewable)
|
reviewable2 = Fabricate(:reviewable)
|
||||||
|
|
||||||
get "/notifications.json", params: { recent: true, bump_last_seen_reviewable: true }
|
get "/notifications.json", params: { recent: true, bump_last_seen_reviewable: true }
|
||||||
|
|
||||||
|
expect(response.status).to eq(200)
|
||||||
expect(user.reload.last_seen_reviewable_id).to eq(reviewable2.id)
|
expect(user.reload.last_seen_reviewable_id).to eq(reviewable2.id)
|
||||||
end
|
end
|
||||||
|
|
||||||
it "includes pending reviewables when the setting is enabled" do
|
it "includes pending reviewables when the setting is enabled" do
|
||||||
SiteSetting.enable_experimental_sidebar_hamburger = true
|
|
||||||
user.update!(admin: true)
|
user.update!(admin: true)
|
||||||
pending_reviewable2 = Fabricate(:reviewable, created_at: 4.minutes.ago)
|
pending_reviewable2 = Fabricate(:reviewable, created_at: 4.minutes.ago)
|
||||||
Fabricate(:reviewable, status: Reviewable.statuses[:approved])
|
Fabricate(:reviewable, status: Reviewable.statuses[:approved])
|
||||||
Fabricate(:reviewable, status: Reviewable.statuses[:rejected])
|
Fabricate(:reviewable, status: Reviewable.statuses[:rejected])
|
||||||
|
|
||||||
get "/notifications.json", params: { recent: true }
|
get "/notifications.json", params: { recent: true }
|
||||||
|
|
||||||
expect(response.status).to eq(200)
|
expect(response.status).to eq(200)
|
||||||
|
|
||||||
expect(response.parsed_body["pending_reviewables"].map { |r| r["id"] }).to eq([
|
expect(response.parsed_body["pending_reviewables"].map { |r| r["id"] }).to eq([
|
||||||
pending_reviewable.id,
|
pending_reviewable.id,
|
||||||
pending_reviewable2.id
|
pending_reviewable2.id
|
||||||
|
@ -246,7 +265,6 @@ RSpec.describe NotificationsController do
|
||||||
end
|
end
|
||||||
|
|
||||||
it "doesn't include reviewables that are claimed by someone that's not the current user" do
|
it "doesn't include reviewables that are claimed by someone that's not the current user" do
|
||||||
SiteSetting.enable_experimental_sidebar_hamburger = true
|
|
||||||
user.update!(admin: true)
|
user.update!(admin: true)
|
||||||
|
|
||||||
claimed_by_user = Fabricate(:reviewable, topic: Fabricate(:topic), created_at: 5.minutes.ago)
|
claimed_by_user = Fabricate(:reviewable, topic: Fabricate(:topic), created_at: 5.minutes.ago)
|
||||||
|
@ -267,17 +285,17 @@ RSpec.describe NotificationsController do
|
||||||
])
|
])
|
||||||
end
|
end
|
||||||
|
|
||||||
it "doesn't include reviewables when the setting is disabled" do
|
it "doesn't include reviewables when navigation menu is legacy" do
|
||||||
SiteSetting.enable_experimental_sidebar_hamburger = false
|
SiteSetting.navigation_menu = "legacy"
|
||||||
user.update!(admin: true)
|
user.update!(admin: true)
|
||||||
|
|
||||||
get "/notifications.json", params: { recent: true }
|
get "/notifications.json", params: { recent: true }
|
||||||
|
|
||||||
expect(response.status).to eq(200)
|
expect(response.status).to eq(200)
|
||||||
expect(response.parsed_body.key?("pending_reviewables")).to eq(false)
|
expect(response.parsed_body.key?("pending_reviewables")).to eq(false)
|
||||||
end
|
end
|
||||||
|
|
||||||
it "doesn't include reviewables if the user can't see the review queue" do
|
it "doesn't include reviewables if the user can't see the review queue" do
|
||||||
SiteSetting.enable_experimental_sidebar_hamburger = true
|
|
||||||
user.update!(admin: false)
|
user.update!(admin: false)
|
||||||
|
|
||||||
get "/notifications.json", params: { recent: true }
|
get "/notifications.json", params: { recent: true }
|
||||||
|
@ -379,12 +397,14 @@ RSpec.describe NotificationsController do
|
||||||
|
|
||||||
context "with 'recent' filter" do
|
context "with 'recent' filter" do
|
||||||
it "doesn't include notifications from topics the user isn't allowed to see" do
|
it "doesn't include notifications from topics the user isn't allowed to see" do
|
||||||
SiteSetting.enable_experimental_sidebar_hamburger = true
|
SiteSetting.navigation_menu = "sidebar"
|
||||||
|
|
||||||
get "/notifications.json", params: { recent: true }
|
get "/notifications.json", params: { recent: true }
|
||||||
expect(response.status).to eq(200)
|
expect(response.status).to eq(200)
|
||||||
expect_correct_notifications(response)
|
expect_correct_notifications(response)
|
||||||
|
|
||||||
SiteSetting.enable_experimental_sidebar_hamburger = false
|
SiteSetting.navigation_menu = "legacy"
|
||||||
|
|
||||||
get "/notifications.json", params: { recent: true }
|
get "/notifications.json", params: { recent: true }
|
||||||
expect(response.status).to eq(200)
|
expect(response.status).to eq(200)
|
||||||
expect_correct_notifications(response)
|
expect_correct_notifications(response)
|
||||||
|
@ -393,12 +413,14 @@ RSpec.describe NotificationsController do
|
||||||
|
|
||||||
context "without 'recent' filter" do
|
context "without 'recent' filter" do
|
||||||
it "doesn't include notifications from topics the user isn't allowed to see" do
|
it "doesn't include notifications from topics the user isn't allowed to see" do
|
||||||
SiteSetting.enable_experimental_sidebar_hamburger = true
|
SiteSetting.navigation_menu = "sidebar"
|
||||||
|
|
||||||
get "/notifications.json"
|
get "/notifications.json"
|
||||||
expect(response.status).to eq(200)
|
expect(response.status).to eq(200)
|
||||||
expect_correct_notifications(response)
|
expect_correct_notifications(response)
|
||||||
|
|
||||||
SiteSetting.enable_experimental_sidebar_hamburger = false
|
SiteSetting.navigation_menu = "legacy"
|
||||||
|
|
||||||
get "/notifications.json"
|
get "/notifications.json"
|
||||||
expect(response.status).to eq(200)
|
expect(response.status).to eq(200)
|
||||||
expect_correct_notifications(response)
|
expect_correct_notifications(response)
|
||||||
|
|
|
@ -85,7 +85,7 @@ RSpec.describe ReviewableClaimedTopicsController do
|
||||||
end
|
end
|
||||||
|
|
||||||
it "queues a sidekiq job to refresh reviewable counts for users who can see the reviewable" do
|
it "queues a sidekiq job to refresh reviewable counts for users who can see the reviewable" do
|
||||||
SiteSetting.enable_experimental_sidebar_hamburger = true
|
SiteSetting.navigation_menu = "sidebar"
|
||||||
SiteSetting.enable_category_group_moderation = true
|
SiteSetting.enable_category_group_moderation = true
|
||||||
|
|
||||||
not_notified = Fabricate(:user)
|
not_notified = Fabricate(:user)
|
||||||
|
@ -159,7 +159,7 @@ RSpec.describe ReviewableClaimedTopicsController do
|
||||||
|
|
||||||
it "queues a sidekiq job to refresh reviewable counts for users who can see the reviewable" do
|
it "queues a sidekiq job to refresh reviewable counts for users who can see the reviewable" do
|
||||||
SiteSetting.reviewable_claiming = 'optional'
|
SiteSetting.reviewable_claiming = 'optional'
|
||||||
SiteSetting.enable_experimental_sidebar_hamburger = true
|
SiteSetting.navigation_menu = "sidebar"
|
||||||
SiteSetting.enable_category_group_moderation = true
|
SiteSetting.enable_category_group_moderation = true
|
||||||
|
|
||||||
not_notified = Fabricate(:user)
|
not_notified = Fabricate(:user)
|
||||||
|
|
|
@ -2308,9 +2308,9 @@ RSpec.describe UsersController do
|
||||||
expect(json['user']['id']).to eq user.id
|
expect(json['user']['id']).to eq user.id
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'with experimental sidebar' do
|
context 'with sidebar' do
|
||||||
before do
|
before do
|
||||||
SiteSetting.enable_experimental_sidebar_hamburger = true
|
SiteSetting.navigation_menu = "sidebar"
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'does not remove category or tag sidebar section links when params are not present' do
|
it 'does not remove category or tag sidebar section links when params are not present' do
|
||||||
|
|
|
@ -229,8 +229,8 @@ RSpec.describe CurrentUserSerializer do
|
||||||
fab!(:tag_sidebar_section_link_2) { Fabricate(:tag_sidebar_section_link, user: user, linkable: pm_tag) }
|
fab!(:tag_sidebar_section_link_2) { Fabricate(:tag_sidebar_section_link, user: user, linkable: pm_tag) }
|
||||||
fab!(:tag_sidebar_section_link_3) { Fabricate(:tag_sidebar_section_link, user: user, linkable: hidden_tag) }
|
fab!(:tag_sidebar_section_link_3) { Fabricate(:tag_sidebar_section_link, user: user, linkable: hidden_tag) }
|
||||||
|
|
||||||
it "is not included when experimental sidebar has not been enabled" do
|
it "is not included when navigation menu is legacy" do
|
||||||
SiteSetting.enable_experimental_sidebar_hamburger = false
|
SiteSetting.navigation_menu = "legacy"
|
||||||
SiteSetting.tagging_enabled = true
|
SiteSetting.tagging_enabled = true
|
||||||
|
|
||||||
json = serializer.as_json
|
json = serializer.as_json
|
||||||
|
@ -239,7 +239,7 @@ RSpec.describe CurrentUserSerializer do
|
||||||
end
|
end
|
||||||
|
|
||||||
it "is not included when tagging has not been enabled" do
|
it "is not included when tagging has not been enabled" do
|
||||||
SiteSetting.enable_experimental_sidebar_hamburger = true
|
SiteSetting.navigation_menu = "sidebar"
|
||||||
SiteSetting.tagging_enabled = false
|
SiteSetting.tagging_enabled = false
|
||||||
|
|
||||||
json = serializer.as_json
|
json = serializer.as_json
|
||||||
|
@ -247,8 +247,8 @@ RSpec.describe CurrentUserSerializer do
|
||||||
expect(json[:sidebar_tags]).to eq(nil)
|
expect(json[:sidebar_tags]).to eq(nil)
|
||||||
end
|
end
|
||||||
|
|
||||||
it "serializes only the tags that the user can see when experimental sidebar and tagging has been enabled" do
|
it "serializes only the tags that the user can see when sidebar and tagging has been enabled" do
|
||||||
SiteSetting.enable_experimental_sidebar_hamburger = true
|
SiteSetting.navigation_menu = "sidebar"
|
||||||
SiteSetting.tagging_enabled = true
|
SiteSetting.tagging_enabled = true
|
||||||
|
|
||||||
json = serializer.as_json
|
json = serializer.as_json
|
||||||
|
@ -279,25 +279,17 @@ RSpec.describe CurrentUserSerializer do
|
||||||
fab!(:category_sidebar_section_link_2) { Fabricate(:category_sidebar_section_link, user: user, linkable: category_2) }
|
fab!(:category_sidebar_section_link_2) { Fabricate(:category_sidebar_section_link, user: user, linkable: category_2) }
|
||||||
fab!(:category_sidebar_section_link_3) { Fabricate(:category_sidebar_section_link, user: user, linkable: private_category) }
|
fab!(:category_sidebar_section_link_3) { Fabricate(:category_sidebar_section_link, user: user, linkable: private_category) }
|
||||||
|
|
||||||
it "is not included when SiteSetting.enable_experimental_sidebar_hamburger is false" do
|
it "is not included when navigation menu is legacy" do
|
||||||
category_sidebar_section_link
|
category_sidebar_section_link
|
||||||
SiteSetting.enable_experimental_sidebar_hamburger = false
|
SiteSetting.navigation_menu = "legacy"
|
||||||
|
|
||||||
json = serializer.as_json
|
json = serializer.as_json
|
||||||
|
|
||||||
expect(json[:sidebar_category_ids]).to eq(nil)
|
expect(json[:sidebar_category_ids]).to eq(nil)
|
||||||
end
|
end
|
||||||
|
|
||||||
it "is not included when experimental sidebar has not been enabled" do
|
it 'serializes only the categories that the user can see when sidebar and tagging has been enabled"' do
|
||||||
SiteSetting.enable_experimental_sidebar_hamburger = false
|
SiteSetting.navigation_menu = "sidebar"
|
||||||
|
|
||||||
json = serializer.as_json
|
|
||||||
|
|
||||||
expect(json[:sidebar_category_ids]).to eq(nil)
|
|
||||||
end
|
|
||||||
|
|
||||||
it 'serializes only the categories that the user can see when experimental sidebar and tagging has been enabled"' do
|
|
||||||
SiteSetting.enable_experimental_sidebar_hamburger = true
|
|
||||||
|
|
||||||
json = serializer.as_json
|
json = serializer.as_json
|
||||||
|
|
||||||
|
@ -383,13 +375,15 @@ RSpec.describe CurrentUserSerializer do
|
||||||
describe "#new_personal_messages_notifications_count" do
|
describe "#new_personal_messages_notifications_count" do
|
||||||
fab!(:notification) { Fabricate(:notification, user: user, read: false, notification_type: Notification.types[:private_message]) }
|
fab!(:notification) { Fabricate(:notification, user: user, read: false, notification_type: Notification.types[:private_message]) }
|
||||||
|
|
||||||
it "isn't included when enable_experimental_sidebar_hamburger is disabled" do
|
it "isn't included when navigation menu is legacy" do
|
||||||
SiteSetting.enable_experimental_sidebar_hamburger = false
|
SiteSetting.navigation_menu = "legacy"
|
||||||
|
|
||||||
expect(serializer.as_json[:new_personal_messages_notifications_count]).to be_nil
|
expect(serializer.as_json[:new_personal_messages_notifications_count]).to be_nil
|
||||||
end
|
end
|
||||||
|
|
||||||
it "is included when enable_experimental_sidebar_hamburger is enabled" do
|
it "is included when sidebar is enabled" do
|
||||||
SiteSetting.enable_experimental_sidebar_hamburger = true
|
SiteSetting.navigation_menu = "sidebar"
|
||||||
|
|
||||||
expect(serializer.as_json[:new_personal_messages_notifications_count]).to eq(1)
|
expect(serializer.as_json[:new_personal_messages_notifications_count]).to eq(1)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -147,7 +147,7 @@ RSpec.describe SiteSerializer do
|
||||||
fab!(:staff_tag_group) { Fabricate(:tag_group, permissions: { "staff" => 1 }, tag_names: [hidden_tag.name]) }
|
fab!(:staff_tag_group) { Fabricate(:tag_group, permissions: { "staff" => 1 }, tag_names: [hidden_tag.name]) }
|
||||||
|
|
||||||
before do
|
before do
|
||||||
SiteSetting.enable_experimental_sidebar_hamburger = true
|
SiteSetting.navigation_menu = "sidebar"
|
||||||
SiteSetting.tagging_enabled = true
|
SiteSetting.tagging_enabled = true
|
||||||
SiteSetting.default_sidebar_tags = "#{tag.name}|#{tag2.name}|#{hidden_tag.name}"
|
SiteSetting.default_sidebar_tags = "#{tag.name}|#{tag2.name}|#{hidden_tag.name}"
|
||||||
end
|
end
|
||||||
|
@ -160,8 +160,8 @@ RSpec.describe SiteSerializer do
|
||||||
expect(serialized[:anonymous_default_sidebar_tags]).to eq(nil)
|
expect(serialized[:anonymous_default_sidebar_tags]).to eq(nil)
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'is not included in the serialised object when experimental sidebar has not been enabled' do
|
it 'is not included in the serialised object when navigation menu is legacy' do
|
||||||
SiteSetting.enable_experimental_sidebar_hamburger = false
|
SiteSetting.navigation_menu = "legacy"
|
||||||
|
|
||||||
serialized = described_class.new(Site.new(guardian), scope: guardian, root: false).as_json
|
serialized = described_class.new(Site.new(guardian), scope: guardian, root: false).as_json
|
||||||
expect(serialized[:anonymous_default_sidebar_tags]).to eq(nil)
|
expect(serialized[:anonymous_default_sidebar_tags]).to eq(nil)
|
||||||
|
|
|
@ -379,22 +379,22 @@ RSpec.describe UserSerializer do
|
||||||
context 'when viewing self' do
|
context 'when viewing self' do
|
||||||
subject(:json) { UserSerializer.new(user, scope: Guardian.new(user), root: false).as_json }
|
subject(:json) { UserSerializer.new(user, scope: Guardian.new(user), root: false).as_json }
|
||||||
|
|
||||||
it "is not included when SiteSetting.enable_experimental_sidebar_hamburger is false" do
|
it "is not included when navigation menu is set to legacy" do
|
||||||
SiteSetting.enable_experimental_sidebar_hamburger = false
|
SiteSetting.navigation_menu = "legacy"
|
||||||
SiteSetting.tagging_enabled = true
|
SiteSetting.tagging_enabled = true
|
||||||
|
|
||||||
expect(json[:sidebar_tags]).to eq(nil)
|
expect(json[:sidebar_tags]).to eq(nil)
|
||||||
end
|
end
|
||||||
|
|
||||||
it "is not included when SiteSetting.tagging_enabled is false" do
|
it "is not included when SiteSetting.tagging_enabled is false" do
|
||||||
SiteSetting.enable_experimental_sidebar_hamburger = true
|
SiteSetting.navigation_menu = "sidebar"
|
||||||
SiteSetting.tagging_enabled = false
|
SiteSetting.tagging_enabled = false
|
||||||
|
|
||||||
expect(json[:sidebar_tags]).to eq(nil)
|
expect(json[:sidebar_tags]).to eq(nil)
|
||||||
end
|
end
|
||||||
|
|
||||||
it "is present when experimental sidebar and tagging has been enabled" do
|
it "is present when sidebar and tagging has been enabled" do
|
||||||
SiteSetting.enable_experimental_sidebar_hamburger = true
|
SiteSetting.navigation_menu = "sidebar"
|
||||||
SiteSetting.tagging_enabled = true
|
SiteSetting.tagging_enabled = true
|
||||||
|
|
||||||
tag_sidebar_section_link_2.linkable.update!(pm_topic_count: 5, topic_count: 0)
|
tag_sidebar_section_link_2.linkable.update!(pm_topic_count: 5, topic_count: 0)
|
||||||
|
@ -411,8 +411,8 @@ RSpec.describe UserSerializer do
|
||||||
|
|
||||||
subject(:json) { UserSerializer.new(user, scope: Guardian.new(user2), root: false).as_json }
|
subject(:json) { UserSerializer.new(user, scope: Guardian.new(user2), root: false).as_json }
|
||||||
|
|
||||||
it "is not present even when experimental sidebar and tagging has been enabled" do
|
it "is not present even when sidebar and tagging has been enabled" do
|
||||||
SiteSetting.enable_experimental_sidebar_hamburger = true
|
SiteSetting.navigation_menu = "sidebar"
|
||||||
SiteSetting.tagging_enabled = true
|
SiteSetting.tagging_enabled = true
|
||||||
|
|
||||||
expect(json[:sidebar_tags]).to eq(nil)
|
expect(json[:sidebar_tags]).to eq(nil)
|
||||||
|
|
|
@ -6,12 +6,12 @@ RSpec.shared_examples "#display_sidebar_tags" do |serializer_klass|
|
||||||
let(:serializer) { serializer_klass.new(user, scope: Guardian.new(user), root: false) }
|
let(:serializer) { serializer_klass.new(user, scope: Guardian.new(user), root: false) }
|
||||||
|
|
||||||
before do
|
before do
|
||||||
SiteSetting.enable_experimental_sidebar_hamburger = true
|
SiteSetting.navigation_menu = "sidebar"
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'should not be included in serialised object when experimental hamburger and sidebar has been disabled' do
|
it 'should not be included in serialised object when navigation menu is legacy' do
|
||||||
SiteSetting.tagging_enabled = true
|
SiteSetting.tagging_enabled = true
|
||||||
SiteSetting.enable_experimental_sidebar_hamburger = false
|
SiteSetting.navigation_menu = "legacy"
|
||||||
|
|
||||||
expect(serializer.as_json[:display_sidebar_tags]).to eq(nil)
|
expect(serializer.as_json[:display_sidebar_tags]).to eq(nil)
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue