From 2cafd7e79be190eaea01fcafd11f742740237e69 Mon Sep 17 00:00:00 2001 From: Ted Johansson Date: Wed, 12 Feb 2025 09:57:53 +0800 Subject: [PATCH] DEV: Separate admins and moderators on about page (#31272) This PR does some things to the about page: - Hide the stat if there are 0 admins/moderators. - Count admins and moderators separately, so a user who is both will add to both counts. - A user who is both will still show up as a moderator, even if `admins` is hidden. --- .../discourse/app/components/about-page.gjs | 14 ++++++++++---- app/models/about.rb | 12 ++++++++---- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/app/assets/javascripts/discourse/app/components/about-page.gjs b/app/assets/javascripts/discourse/app/components/about-page.gjs index 4b3315d824c..22bc68054da 100644 --- a/app/assets/javascripts/discourse/app/components/about-page.gjs +++ b/app/assets/javascripts/discourse/app/components/about-page.gjs @@ -37,6 +37,7 @@ export default class AboutPage extends Component { { class: "members", icon: "users", + display: true, text: i18n("about.member_count", { count: this.args.model.stats.users_count, formatted_number: I18n.toNumber(this.args.model.stats.users_count, { @@ -47,6 +48,7 @@ export default class AboutPage extends Component { { class: "admins", icon: "shield-halved", + display: this.adminsCount > 0, text: i18n("about.admin_count", { count: this.adminsCount, formatted_number: I18n.toNumber(this.adminsCount, { precision: 0 }), @@ -55,6 +57,7 @@ export default class AboutPage extends Component { { class: "moderators", icon: "shield-halved", + display: this.moderatorsCount > 0, text: i18n("about.moderator_count", { count: this.moderatorsCount, formatted_number: I18n.toNumber(this.moderatorsCount, { @@ -65,6 +68,7 @@ export default class AboutPage extends Component { { class: "site-creation-date", icon: "calendar-days", + display: true, text: this.siteAgeString, }, ]; @@ -253,10 +257,12 @@ export default class AboutPage extends Component {
{{#each this.stats as |stat|}} - - {{icon stat.icon}} - {{stat.text}} - + {{#if stat.display}} + + {{icon stat.icon}} + {{stat.text}} + + {{/if}} {{/each}}
diff --git a/app/models/about.rb b/app/models/about.rb index c11476aa45a..a6ead14dd1f 100644 --- a/app/models/about.rb +++ b/app/models/about.rb @@ -67,7 +67,8 @@ class About def moderators @moderators ||= apply_excluded_groups( - User.where(moderator: true, admin: false).human_users.order(last_seen_at: :desc), + User.where(moderator: true).human_users.order(last_seen_at: :desc), + ignore_groups: [Group::AUTO_GROUPS[:admins]], ) end @@ -75,7 +76,10 @@ class About @admins ||= DiscoursePluginRegistry.apply_modifier( :about_admins, - apply_excluded_groups(User.where(admin: true).human_users.order(last_seen_at: :desc)), + apply_excluded_groups( + User.where(admin: true).human_users.order(last_seen_at: :desc), + ignore_groups: [Group::AUTO_GROUPS[:moderators]], + ), ) end @@ -139,8 +143,8 @@ class About private - def apply_excluded_groups(query) - group_ids = SiteSetting.about_page_hidden_groups_map + def apply_excluded_groups(query, ignore_groups: []) + group_ids = SiteSetting.about_page_hidden_groups_map - ignore_groups return query if group_ids.blank? query.joins(