DEV: Change enable_admin_sidebar_navigation to group setting (#25159)

This will make it easier to do more focused
testing of this change.
This commit is contained in:
Martin Brennan 2024-01-09 09:06:27 +10:00 committed by GitHub
parent e10620bfd3
commit 8c6144d116
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
15 changed files with 69 additions and 18 deletions

View File

@ -1,13 +1,19 @@
import Controller from "@ember/controller"; import Controller from "@ember/controller";
import { readOnly } from "@ember/object/computed";
import { inject as service } from "@ember/service"; import { inject as service } from "@ember/service";
import { dasherize } from "@ember/string"; import { dasherize } from "@ember/string";
import discourseComputed from "discourse-common/utils/decorators"; import discourseComputed from "discourse-common/utils/decorators";
export default class AdminController extends Controller { export default class AdminController extends Controller {
@service router; @service router;
@service currentUser;
@readOnly("siteSettings.enable_admin_sidebar_navigation") showAdminSidebar; @discourseComputed("siteSettings.admin_sidebar_enabled_groups")
showAdminSidebar() {
return this.siteSettings.userInAnyGroups(
"admin_sidebar_enabled_groups",
this.currentUser
);
}
@discourseComputed("siteSettings.enable_group_directory") @discourseComputed("siteSettings.enable_group_directory")
showGroups(enableGroupDirectory) { showGroups(enableGroupDirectory) {

View File

@ -14,7 +14,12 @@ export default class AdminRoute extends DiscourseRoute {
} }
activate() { activate() {
if (!this.siteSettings.enable_admin_sidebar_navigation) { if (
!this.siteSettings.userInAnyGroups(
"admin_sidebar_enabled_groups",
this.currentUser
)
) {
return DiscourseURL.redirectTo("/admin"); return DiscourseURL.redirectTo("/admin");
} }

View File

@ -6,13 +6,19 @@ import I18n from "discourse-i18n";
export default class AdminRoute extends DiscourseRoute { export default class AdminRoute extends DiscourseRoute {
@service sidebarState; @service sidebarState;
@service siteSettings; @service siteSettings;
@service currentUser;
titleToken() { titleToken() {
return I18n.t("admin_title"); return I18n.t("admin_title");
} }
activate() { activate() {
if (this.siteSettings.enable_admin_sidebar_navigation) { if (
this.siteSettings.userInAnyGroups(
"admin_sidebar_enabled_groups",
this.currentUser
)
) {
this.sidebarState.setPanel(ADMIN_PANEL); this.sidebarState.setPanel(ADMIN_PANEL);
this.sidebarState.setSeparatedMode(); this.sidebarState.setSeparatedMode();
this.sidebarState.hideSwitchPanelButtons(); this.sidebarState.hideSwitchPanelButtons();
@ -26,7 +32,12 @@ export default class AdminRoute extends DiscourseRoute {
deactivate(transition) { deactivate(transition) {
this.controllerFor("application").set("showTop", true); this.controllerFor("application").set("showTop", true);
if (this.siteSettings.enable_admin_sidebar_navigation) { if (
this.siteSettings.userInAnyGroups(
"admin_sidebar_enabled_groups",
this.currentUser
)
) {
if (!transition?.to.name.startsWith("admin")) { if (!transition?.to.name.startsWith("admin")) {
this.sidebarState.setPanel(MAIN_PANEL); this.sidebarState.setPanel(MAIN_PANEL);
} }

View File

@ -181,7 +181,12 @@ export default {
return; return;
} }
if (!this.siteSettings.enable_admin_sidebar_navigation) { if (
!this.siteSettings.userInAnyGroups(
"admin_sidebar_enabled_groups",
this.currentUser
)
) {
return; return;
} }

View File

@ -31,7 +31,10 @@ export default class AdminRevampSectionLink extends BaseSectionLink {
return ( return (
this.currentUser.staff && this.currentUser.staff &&
this.siteSettings.enable_admin_sidebar_navigation this.siteSettings.userInAnyGroups(
"admin_sidebar_enabled_groups",
this.currentUser
)
); );
} }

View File

@ -2237,7 +2237,6 @@ de:
experimental_search_menu_groups: "EXPERIMENTELL: Das neue Suchmenü aktivieren, das für die Verwendung von Glimmer aktualisiert wurde" experimental_search_menu_groups: "EXPERIMENTELL: Das neue Suchmenü aktivieren, das für die Verwendung von Glimmer aktualisiert wurde"
enable_experimental_lightbox: "EXPERIMENTELL: Die Standard-Bild-Lightbox durch das überarbeitete Design ersetzen." enable_experimental_lightbox: "EXPERIMENTELL: Die Standard-Bild-Lightbox durch das überarbeitete Design ersetzen."
experimental_form_templates: "EXPERIMENTELL: Aktiviere die Funktion der Formularvorlagen. <b>Nachdem du sie aktiviert hast, verwalte</b> die Vorlagen unter <a href='%{base_path}/admin/customize/form-templates'>Anpassen / Vorlagen</a>." experimental_form_templates: "EXPERIMENTELL: Aktiviere die Funktion der Formularvorlagen. <b>Nachdem du sie aktiviert hast, verwalte</b> die Vorlagen unter <a href='%{base_path}/admin/customize/form-templates'>Anpassen / Vorlagen</a>."
enable_admin_sidebar_navigation: "EXPERIMENTELL: Aktiviere die Seitenleisten-Navigation für die Admin-Benutzeroberfläche, die die Admin-Navigationsschaltflächen auf oberster Ebene ersetzt."
page_loading_indicator: "Die Ladeanzeige konfigurieren, die bei der Seitennavigation in Discourse erscheint. „Spinner“ ist ein ganzseitiger Indikator. „Slider“ zeigt einen schmalen Balken am oberen Rand des Bildschirms an." page_loading_indicator: "Die Ladeanzeige konfigurieren, die bei der Seitennavigation in Discourse erscheint. „Spinner“ ist ein ganzseitiger Indikator. „Slider“ zeigt einen schmalen Balken am oberen Rand des Bildschirms an."
show_user_menu_avatars: "Benutzeravatare im Benutzermenü anzeigen" show_user_menu_avatars: "Benutzeravatare im Benutzermenü anzeigen"
errors: errors:

View File

@ -2499,7 +2499,7 @@ en:
enable_experimental_lightbox: "EXPERIMENTAL: Replace the default image lightbox with the revamped design." enable_experimental_lightbox: "EXPERIMENTAL: Replace the default image lightbox with the revamped design."
experimental_form_templates: "EXPERIMENTAL: Enable the form templates feature. <b>After enabled,</b> manage the templates at <a href='%{base_path}/admin/customize/form-templates'>Customize / Templates</a>." experimental_form_templates: "EXPERIMENTAL: Enable the form templates feature. <b>After enabled,</b> manage the templates at <a href='%{base_path}/admin/customize/form-templates'>Customize / Templates</a>."
enable_admin_sidebar_navigation: "EXPERIMENTAL: Enable sidebar navigation for the admin UI, which replaces the top-level admin navigation buttons." admin_sidebar_enabled_groups: "EXPERIMENTAL: Enable sidebar navigation for the admin UI for the specified groups, which replaces the top-level admin navigation buttons."
page_loading_indicator: "Configure the loading indicator which appears during page navigations within Discourse. 'Spinner' is a full page indicator. 'Slider' shows a narrow bar at the top of the screen." page_loading_indicator: "Configure the loading indicator which appears during page navigations within Discourse. 'Spinner' is a full page indicator. 'Slider' shows a narrow bar at the top of the screen."
show_user_menu_avatars: "Show user avatars in the user menu" show_user_menu_avatars: "Show user avatars in the user menu"

View File

@ -2181,7 +2181,6 @@ it:
experimental_search_menu_groups: "SPERIMENTALE: attiva il nuovo menu di ricerca che è stato aggiornato per utilizzare glimmer." experimental_search_menu_groups: "SPERIMENTALE: attiva il nuovo menu di ricerca che è stato aggiornato per utilizzare glimmer."
enable_experimental_lightbox: "SPERIMENTALE: sostituisci la lightbox dell'immagine predefinita con il design rinnovato." enable_experimental_lightbox: "SPERIMENTALE: sostituisci la lightbox dell'immagine predefinita con il design rinnovato."
experimental_form_templates: "SPERIMENTALE: abilita la funzionalità dei modelli di modulo. <b>Dopo l'abilitazione,</b> gestisci i modelli in <a href='%{base_path}/admin/customize/form-templates'>Personalizza / Modelli</a>." experimental_form_templates: "SPERIMENTALE: abilita la funzionalità dei modelli di modulo. <b>Dopo l'abilitazione,</b> gestisci i modelli in <a href='%{base_path}/admin/customize/form-templates'>Personalizza / Modelli</a>."
enable_admin_sidebar_navigation: "SPERIMENTALE: abilita la navigazione della barra laterale per l'interfaccia di amministrazione, che sostituisce i pulsanti di navigazione dell'amministratore di livello superiore."
page_loading_indicator: "Configura l'indicatore di caricamento che appare durante la navigazione delle pagine all'interno di Discourse. 'Spinner' come un indicatore a pagina intera. 'Slider' mostra una barra stretta nella parte superiore dello schermo." page_loading_indicator: "Configura l'indicatore di caricamento che appare durante la navigazione delle pagine all'interno di Discourse. 'Spinner' come un indicatore a pagina intera. 'Slider' mostra una barra stretta nella parte superiore dello schermo."
errors: errors:
invalid_css_color: "Colore non valido. Immettere un nome o un valore esadecimale per il colore." invalid_css_color: "Colore non valido. Immettere un nome o un valore esadecimale per il colore."

View File

@ -2330,7 +2330,6 @@ pl_PL:
experimental_search_menu_groups: "EKSPERYMENTALNE: Włącza nowe menu wyszukiwania, które zostało ulepszone tak, by korzystało z glimmer" experimental_search_menu_groups: "EKSPERYMENTALNE: Włącza nowe menu wyszukiwania, które zostało ulepszone tak, by korzystało z glimmer"
enable_experimental_lightbox: "EKSPERYMENTALNIE: Zastąp domyślny lightbox obrazu odświeżonym projektem." enable_experimental_lightbox: "EKSPERYMENTALNIE: Zastąp domyślny lightbox obrazu odświeżonym projektem."
experimental_form_templates: "EKSPERYMENTALNIE: Włącz funkcję szablonów formularzy. <b>Po włączeniu</b> zarządzaj szablonami w <a href='%{base_path}/admin/customize/form-templates'>Dostosuj / Szablony</a>." experimental_form_templates: "EKSPERYMENTALNIE: Włącz funkcję szablonów formularzy. <b>Po włączeniu</b> zarządzaj szablonami w <a href='%{base_path}/admin/customize/form-templates'>Dostosuj / Szablony</a>."
enable_admin_sidebar_navigation: "EKSPERYMENTALNE: Włącz nawigację na pasku bocznym interfejsu administratora, która zastępuje przyciski nawigacyjne administratora najwyższego poziomu."
page_loading_indicator: "Skonfiguruj wskaźnik ładowania, który pojawia się podczas nawigacji po stronie w Discourse. \"Spinner\" to wskaźnik na pełnym ekranie. \"Slider\" wyświetla wąski pasek u góry ekranu." page_loading_indicator: "Skonfiguruj wskaźnik ładowania, który pojawia się podczas nawigacji po stronie w Discourse. \"Spinner\" to wskaźnik na pełnym ekranie. \"Slider\" wyświetla wąski pasek u góry ekranu."
show_user_menu_avatars: "Pokaż awatary użytkowników w menu użytkownika" show_user_menu_avatars: "Pokaż awatary użytkowników w menu użytkownika"
errors: errors:

View File

@ -1144,7 +1144,6 @@ ro:
min_trust_level_to_tag_topics: "Nivelul minim de încredere necesar pentru a pune etichete pe subiecte." min_trust_level_to_tag_topics: "Nivelul minim de încredere necesar pentru a pune etichete pe subiecte."
suppress_overlapping_tags_in_list: "Dacă etichetele corespund exact cu cuvintele din titlul subiectelor, nu mai afișa aceste etichete." suppress_overlapping_tags_in_list: "Dacă etichetele corespund exact cu cuvintele din titlul subiectelor, nu mai afișa aceste etichete."
shared_drafts_allowed_groups: "Permit utilizatorilor din aceste grupuri să vadă și să editeze ciorne comune." shared_drafts_allowed_groups: "Permit utilizatorilor din aceste grupuri să vadă și să editeze ciorne comune."
enable_admin_sidebar_navigation: "EXPERIMENTAL: Activează navigarea în bara laterală pentru interfața de administrare care înlocuiește butoanele de navigare de la nivelul superior al administratorului."
show_user_menu_avatars: "Arată avatare utilizator în meniul utilizatorului" show_user_menu_avatars: "Arată avatare utilizator în meniul utilizatorului"
errors: errors:
invalid_email: "Adresă de email invalidă." invalid_email: "Adresă de email invalidă."

View File

@ -2344,7 +2344,6 @@ uk:
experimental_search_menu_groups: "ЕКСПЕРИМЕНТАЛЬНЕ: Вмикає нове меню пошуку, в якому використовується мерехтіння" experimental_search_menu_groups: "ЕКСПЕРИМЕНТАЛЬНЕ: Вмикає нове меню пошуку, в якому використовується мерехтіння"
enable_experimental_lightbox: "ЕКСПЕРИМЕНТАЛЬНЕ: оновлений дизайн стандартного лайтбоксу зображень." enable_experimental_lightbox: "ЕКСПЕРИМЕНТАЛЬНЕ: оновлений дизайн стандартного лайтбоксу зображень."
experimental_form_templates: "ЕКСПЕРИМЕНТАЛЬНО: Увімкніть функцію шаблонів форм. <b>Після увімкнення</b> керуйте шаблонами за адресою <a href='%{base_path}/admin/customize/form-templates'>Налаштування/Шаблони</a>." experimental_form_templates: "ЕКСПЕРИМЕНТАЛЬНО: Увімкніть функцію шаблонів форм. <b>Після увімкнення</b> керуйте шаблонами за адресою <a href='%{base_path}/admin/customize/form-templates'>Налаштування/Шаблони</a>."
enable_admin_sidebar_navigation: "ЕКСПЕРИМЕНТАЛЬНО: Увімкніть бічну панель навігації для інтерфейсу адміністратора, яка замінить кнопки навігації адміністратора верхнього рівня."
page_loading_indicator: "Вибір індикатора завантаження, який з’являється під час навігації сторінкою в Discourse. «Спіннер» це індикатор на всю сторінку. «Слайдер» — вузька смужка у верхній частині екрана." page_loading_indicator: "Вибір індикатора завантаження, який з’являється під час навігації сторінкою в Discourse. «Спіннер» це індикатор на всю сторінку. «Слайдер» — вузька смужка у верхній частині екрана."
show_user_menu_avatars: "Показувати аватари користувачів у меню користувача" show_user_menu_avatars: "Показувати аватари користувачів у меню користувача"
errors: errors:

View File

@ -2302,9 +2302,13 @@ developer:
refresh: true refresh: true
hidden: true hidden: true
client: true client: true
enable_admin_sidebar_navigation: admin_sidebar_enabled_groups:
default: false
client: true client: true
type: group_list
list_type: compact
default: ""
allow_any: false
refresh: true
lazy_load_categories: lazy_load_categories:
default: false default: false
client: true client: true

View File

@ -0,0 +1,22 @@
# frozen_string_literal: true
class ChangeEnableAdminSidebarToGroupPostMigration < ActiveRecord::Migration[7.0]
def change
enable_admin_sidebar_navigation_raw =
DB.query_single(
"SELECT value FROM site_settings WHERE name = 'enable_admin_sidebar_navigation'",
).first
if enable_admin_sidebar_navigation_raw.present?
DB.exec(
"INSERT INTO site_settings(name, value, data_type, created_at, updated_at)
VALUES('admin_sidebar_enabled_groups', :setting, '20', NOW(), NOW())",
setting: "1", # 1 is the Group::AUTO_GROUPS[:admins] group id
)
end
end
def down
raise ActiveRecord::IrreversibleMigration
end
end

View File

@ -6,7 +6,7 @@ describe "Admin Revamp | Sidebar Navigation | Plugin Links", type: :system do
before do before do
chat_system_bootstrap chat_system_bootstrap
SiteSetting.enable_admin_sidebar_navigation = true SiteSetting.admin_sidebar_enabled_groups = Group::AUTO_GROUPS[:admins]
sign_in(admin) sign_in(admin)
end end

View File

@ -5,7 +5,7 @@ describe "Admin Revamp | Sidebar Navigation", type: :system do
let(:sidebar) { PageObjects::Components::NavigationMenu::Sidebar.new } let(:sidebar) { PageObjects::Components::NavigationMenu::Sidebar.new }
before do before do
SiteSetting.enable_admin_sidebar_navigation = true SiteSetting.admin_sidebar_enabled_groups = Group::AUTO_GROUPS[:admins]
sign_in(admin) sign_in(admin)
end end
@ -21,7 +21,7 @@ describe "Admin Revamp | Sidebar Navigation", type: :system do
end end
context "when the setting is disabled" do context "when the setting is disabled" do
before { SiteSetting.enable_admin_sidebar_navigation = false } before { SiteSetting.admin_sidebar_enabled_groups = "" }
it "does not show the admin sidebar" do it "does not show the admin sidebar" do
visit("/latest") visit("/latest")