diff --git a/app/controllers/admin/dashboard_controller.rb b/app/controllers/admin/dashboard_controller.rb index 54f26ba9d90..23caabc1403 100644 --- a/app/controllers/admin/dashboard_controller.rb +++ b/app/controllers/admin/dashboard_controller.rb @@ -6,7 +6,7 @@ class Admin::DashboardController < Admin::StaffController before_action :ensure_dashboard_improvements_enabled, only: %i[bulk_reports] def index - if SiteSetting.dashboard_improvements + if dashboard_improvements? visible_ids = AdminDashboardSectionConfiguration.visible_section_ids data = { sections: visible_ids.map { |id| { id: id, data: section_data(id) } } } if current_user.admin? @@ -145,6 +145,14 @@ class Admin::DashboardController < Admin::StaffController end def ensure_dashboard_improvements_enabled - raise Discourse::NotFound if !SiteSetting.dashboard_improvements + raise Discourse::NotFound if !dashboard_improvements? + end + + def dashboard_improvements? + if params[:version] == "alt" + !SiteSetting.dashboard_improvements + else + SiteSetting.dashboard_improvements + end end end diff --git a/frontend/discourse/admin/controllers/admin/dashboard.js b/frontend/discourse/admin/controllers/admin/dashboard.js index 76d94b5155f..64b4b09f6d2 100644 --- a/frontend/discourse/admin/controllers/admin/dashboard.js +++ b/frontend/discourse/admin/controllers/admin/dashboard.js @@ -26,12 +26,13 @@ export default class AdminDashboardController extends Controller { @tracked range = DEFAULT_PERIOD; @tracked start_date = null; @tracked end_date = null; + @tracked version = null; @tracked loadedSections = null; @tracked loadingSections = false; @tracked sectionsFetchError = false; @autoTrackedArray problems; - queryParams = ["range", "start_date", "end_date"]; + queryParams = ["range", "start_date", "end_date", "version"]; isLoading = false; dashboardFetchedAt = null; @@ -112,6 +113,7 @@ export default class AdminDashboardController extends Controller { const model = await AdminDashboard.fetch({ startDate, endDate, + version: this.version, }); if (id !== this._sectionsLoadId) { @@ -142,6 +144,13 @@ export default class AdminDashboardController extends Controller { } } + get showRedesign() { + if (this.version === "alt") { + return !this.siteSettings.dashboard_improvements; + } + return this.siteSettings.dashboard_improvements; + } + @computed("siteSettings.version_checks") get showVersionChecks() { return this.siteSettings.version_checks; @@ -196,7 +205,7 @@ export default class AdminDashboardController extends Controller { ) { this.set("isLoading", true); - AdminDashboard.fetch() + AdminDashboard.fetch({ version: this.version }) .then((model) => { let properties = { dashboardFetchedAt: new Date(), diff --git a/frontend/discourse/admin/models/admin-dashboard.js b/frontend/discourse/admin/models/admin-dashboard.js index a965b7a4bdc..4dd5155b0b0 100644 --- a/frontend/discourse/admin/models/admin-dashboard.js +++ b/frontend/discourse/admin/models/admin-dashboard.js @@ -8,7 +8,7 @@ const GENERAL_ATTRIBUTES = [ ]; export default class AdminDashboard extends EmberObject { - static async fetch({ startDate, endDate } = {}) { + static async fetch({ startDate, endDate, version } = {}) { const data = {}; if (startDate) { data.start_date = moment(startDate).format("YYYY-MM-DD"); @@ -16,6 +16,9 @@ export default class AdminDashboard extends EmberObject { if (endDate) { data.end_date = moment(endDate).format("YYYY-MM-DD"); } + if (version) { + data.version = version; + } const json = await ajax("/admin/dashboard.json", { data }); const model = AdminDashboard.create(); diff --git a/frontend/discourse/admin/routes/admin/dashboard.js b/frontend/discourse/admin/routes/admin/dashboard.js index a6776b591c5..54e66cf8ec9 100644 --- a/frontend/discourse/admin/routes/admin/dashboard.js +++ b/frontend/discourse/admin/routes/admin/dashboard.js @@ -1,11 +1,8 @@ -import { service } from "@ember/service"; import { scrollTop } from "discourse/lib/scroll-top"; import DiscourseRoute from "discourse/routes/discourse"; import { i18n } from "discourse-i18n"; export default class AdminDashboardRoute extends DiscourseRoute { - @service siteSettings; - titleToken() { return i18n("admin.config.dashboard.title"); } @@ -17,7 +14,7 @@ export default class AdminDashboardRoute extends DiscourseRoute { setupController(controller) { super.setupController(...arguments); - if (this.siteSettings.dashboard_improvements) { + if (controller.showRedesign) { controller.fetchSections(); } else { controller.fetchProblems(); diff --git a/frontend/discourse/admin/templates/admin/dashboard.gjs b/frontend/discourse/admin/templates/admin/dashboard.gjs index cd7aa449096..366a2032388 100644 --- a/frontend/discourse/admin/templates/admin/dashboard.gjs +++ b/frontend/discourse/admin/templates/admin/dashboard.gjs @@ -8,7 +8,7 @@ import DPageHeader from "discourse/ui-kit/d-page-header"; import { i18n } from "discourse-i18n"; export default