UX: Enable site_name for all header fields on welcome banner (#37186)

Right now site_name is only available on the welcome-banner header field
for anonymous visitors. This makes it available for all members.

### Before
`site_name` is only available for anonymous visitors:

<img width="380" height="450" alt="image"
src="https://github.com/user-attachments/assets/4f973b49-f1f1-4355-8ea1-f7b43ff0914a"
/>

Using it in other fields results in a validation error:

<img width="690" height="288" alt="image"
src="https://github.com/user-attachments/assets/336139c4-100f-44e9-95d4-98494dd0aaf2"
/>

### After
`site_name` is available on all header fields:

<img width="365" height="495" alt="image"
src="https://github.com/user-attachments/assets/2654734e-10fa-4078-8c9c-88adf96bb870"
/>
This commit is contained in:
Manuel Kostka
2026-01-20 17:35:48 +00:00
committed by GitHub
parent 26659fc2cf
commit 9a7f0d6858
4 changed files with 25 additions and 15 deletions
+1
View File
@@ -41,6 +41,7 @@ class TranslationOverride < ActiveRecord::Base
optional_tags
],
%w[system_messages.welcome_user] => %w[username name name_or_username],
%w[js.welcome_banner.header] => %w[site_name],
}
include HasSanitizableFields
+2 -2
View File
@@ -6029,11 +6029,11 @@ en:
locale_label: "Language"
header_new_members:
label: "Header for new members"
description: "Available variable: <code>&percnt;{preferred_display_name}</code>"
description: "Available variables: <code>&percnt;{site_name}</code>, <code>&percnt;{preferred_display_name}</code>"
placeholder: "Welcome, %{preferred_display_name}!"
header_logged_in:
label: "Header for logged-in members"
description: "Available variable: <code>&percnt;{preferred_display_name}</code>"
description: "Available variables: <code>&percnt;{site_name}</code>, <code>&percnt;{preferred_display_name}</code>"
placeholder: "Welcome back, %{preferred_display_name}!"
header_anonymous:
label: "Header for anonymous visitors"
@@ -533,6 +533,7 @@ export default class AdminWelcomeBannerForm extends Component {
<field.Input
placeholder={{i18n
"admin.config.welcome_banner.form.header_logged_in.placeholder"
site_name="%{site_name}"
preferred_display_name="%{preferred_display_name}"
}}
/>
@@ -98,22 +98,30 @@ export default class WelcomeBanner extends Component {
}
get headerText() {
const site_name = this.siteSettings.title || "";
let key, args;
if (!this.currentUser) {
return i18n("welcome_banner.header.anonymous_members", {
site_name: this.siteSettings.title,
});
key = "welcome_banner.header.anonymous_members";
args = { site_name };
} else {
const isNewUser = !this.currentUser.previous_visit_at;
key = isNewUser
? "welcome_banner.header.new_members"
: "welcome_banner.header.logged_in_members";
args = {
site_name,
preferred_display_name: sanitize(
prioritizeNameFallback(
this.currentUser.name,
this.currentUser.username
)
),
};
}
const isNewUser = !this.currentUser.previous_visit_at;
const key = isNewUser
? "welcome_banner.header.new_members"
: "welcome_banner.header.logged_in_members";
return i18n(key, {
preferred_display_name: sanitize(
prioritizeNameFallback(this.currentUser.name, this.currentUser.username)
),
});
return i18n(key, args);
}
get subheaderText() {