Rename "Self-Deleting Messages" to "Burn-on-Read Messages" (#35318) (#35331)
Some checks are pending
Server CI / Compute Go Version (push) Waiting to run
Server CI / Check mocks (push) Blocked by required conditions
Server CI / Check go mod tidy (push) Blocked by required conditions
Server CI / check-style (push) Blocked by required conditions
Server CI / Check serialization methods for hot structs (push) Blocked by required conditions
Server CI / Vet API (push) Blocked by required conditions
Server CI / Check migration files (push) Blocked by required conditions
Server CI / Generate email templates (push) Blocked by required conditions
Server CI / Check store layers (push) Blocked by required conditions
Server CI / Check mmctl docs (push) Blocked by required conditions
Server CI / Postgres with binary parameters (push) Blocked by required conditions
Server CI / Postgres (push) Blocked by required conditions
Server CI / Postgres (FIPS) (push) Blocked by required conditions
Server CI / Generate Test Coverage (push) Blocked by required conditions
Server CI / Run mmctl tests (push) Blocked by required conditions
Server CI / Run mmctl tests (FIPS) (push) Blocked by required conditions
Server CI / Build mattermost server app (push) Blocked by required conditions
Web App CI / check-lint (push) Waiting to run
Web App CI / check-i18n (push) Blocked by required conditions
Web App CI / check-types (push) Blocked by required conditions
Web App CI / test (platform) (push) Blocked by required conditions
Web App CI / test (mattermost-redux) (push) Blocked by required conditions
Web App CI / test (channels shard 1/4) (push) Blocked by required conditions
Web App CI / test (channels shard 2/4) (push) Blocked by required conditions
Web App CI / test (channels shard 3/4) (push) Blocked by required conditions
Web App CI / test (channels shard 4/4) (push) Blocked by required conditions
Web App CI / upload-coverage (push) Blocked by required conditions
Web App CI / build (push) Blocked by required conditions

* Rename "Self-Deleting Messages" to "Burn-on-Read Messages"

Updated the Burn on Read feature naming in the System Console for consistency with the product terminology and made all Posts subsection titles translatable for better internationalization support.

- Renamed section title from "Self-Deleting Messages" to "Burn-on-Read Messages"
- Updated section description to clarify that messages delete after being read (removed "or sent")
- Added translation keys for all 6 Posts subsection titles
- Updated type definitions and UI components to support translatable subsection titles



* Linting

---------


(cherry picked from commit 28406fbe23)

Co-authored-by: Maria A Nunez <maria.nunez@mattermost.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Mattermost Build 2026-02-17 20:23:14 +02:00 committed by GitHub
parent 35408e8b14
commit cd1fe0a98f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 57 additions and 35 deletions

View file

@ -3006,7 +3006,7 @@ const AdminDefinition: AdminDefinitionType = {
sections: [
{
key: 'PostSettings.Threads',
title: 'Threads',
title: defineMessage({id: 'admin.posts.sections.threads.title', defaultMessage: 'Threads'}),
description: defineMessage({id: 'admin.posts.sections.threads.description', defaultMessage: 'Configure threaded discussions and auto-follow defaults.'}),
settings: [
{
@ -3066,7 +3066,7 @@ const AdminDefinition: AdminDefinitionType = {
},
{
key: 'PostSettings.Drafts',
title: 'Drafts and Scheduled Posts',
title: defineMessage({id: 'admin.posts.sections.drafts.title', defaultMessage: 'Drafts and Scheduled Posts'}),
description: defineMessage({id: 'admin.posts.sections.drafts.description', defaultMessage: 'Control draft syncing and scheduled sending.'}),
settings: [
{
@ -3089,7 +3089,7 @@ const AdminDefinition: AdminDefinitionType = {
},
{
key: 'PostSettings.Priority',
title: 'Priority & Urgent Notifications',
title: defineMessage({id: 'admin.posts.sections.priority.title', defaultMessage: 'Priority & Urgent Notifications'}),
description: defineMessage({id: 'admin.posts.sections.priority.description', defaultMessage: 'Set message priority and repeating notifications for urgent delivery.'}),
settings: [
{
@ -3223,8 +3223,8 @@ const AdminDefinition: AdminDefinitionType = {
},
{
key: 'PostSettings.BurnOnRead',
title: 'Self-Deleting Messages',
description: defineMessage({id: 'admin.posts.sections.burnOnRead.description', defaultMessage: 'Controls for messages that delete automatically a certain time after being sent or read.'}),
title: defineMessage({id: 'admin.posts.sections.burnOnRead.title', defaultMessage: 'Burn-on-Read Messages'}),
description: defineMessage({id: 'admin.posts.sections.burnOnRead.description', defaultMessage: 'Controls for messages that delete automatically a certain time after being read.'}),
license_sku: LicenseSkus.EnterpriseAdvanced,
component: LicensedSectionContainer,
componentProps: {
@ -3333,7 +3333,7 @@ const AdminDefinition: AdminDefinitionType = {
},
{
key: 'PostSettings.Previews',
title: 'Content & Previews',
title: defineMessage({id: 'admin.posts.sections.previews.title', defaultMessage: 'Content & Previews'}),
description: defineMessage({id: 'admin.posts.sections.previews.description', defaultMessage: 'Configure link previews and how advanced formatting renders.'}),
settings: [
{
@ -3437,7 +3437,7 @@ const AdminDefinition: AdminDefinitionType = {
},
{
key: 'PostSettings.Performance',
title: 'Performance & Limits',
title: defineMessage({id: 'admin.posts.sections.performance.title', defaultMessage: 'Performance & Limits'}),
description: defineMessage({id: 'admin.posts.sections.performance.description', defaultMessage: 'Configure limits that protect client performance and rendering.'}),
settings: [
{

View file

@ -3,7 +3,7 @@
import React, {useEffect, useState} from 'react';
import './custom_profile_attributes.scss';
import {FormattedMessage} from 'react-intl';
import {FormattedMessage, defineMessage} from 'react-intl';
import {useSelector} from 'react-redux';
import {Link} from 'react-router-dom';
@ -135,12 +135,10 @@ const CustomProfileAttributes: React.FC<Props> = (props: Props): JSX.Element | n
<div className='custom-profile-attributes'>
<SettingsGroup
id={props.id}
title={
<FormattedMessage
id='admin.customProfileAttributes.title'
defaultMessage='Custom profile attributes sync'
/>
}
title={defineMessage({
id: 'admin.customProfileAttributes.title',
defaultMessage: 'Custom profile attributes sync',
})}
container={false}
subtitle={
<FormattedMessage

View file

@ -21,6 +21,7 @@ import AdminHeader from 'components/widgets/admin_console/admin_header';
import WithTooltip from 'components/with_tooltip';
import Constants from 'utils/constants';
import {isMessageDescriptor} from 'utils/i18n';
import LDAPBooleanSetting from './ldap_boolean_setting';
import LDAPButtonSetting from './ldap_button_setting';
@ -592,20 +593,23 @@ const LDAPWizard = (props: Props) => {
defaultMessage='Sections'
/>
</div>
{memoizedSections.map((section) => (
<button
key={section.key + '-sidebar-item'}
className={`ldap-wizard-sidebar-item ${section.key === activeSectionKey ? 'ldap-wizard-sidebar-item--active' : ''}`}
onClick={() => {
const sectionElement = sectionRefs.current[section.key];
if (sectionElement) {
sectionElement.scrollIntoView({behavior: 'smooth', block: 'start'});
}
}}
>
{section.sectionTitle || section.title}
</button>
))}
{memoizedSections.map((section) => {
const title = section.sectionTitle || section.title;
return (
<button
key={section.key + '-sidebar-item'}
className={`ldap-wizard-sidebar-item ${section.key === activeSectionKey ? 'ldap-wizard-sidebar-item--active' : ''}`}
onClick={() => {
const sectionElement = sectionRefs.current[section.key];
if (sectionElement) {
sectionElement.scrollIntoView({behavior: 'smooth', block: 'start'});
}
}}
>
{isMessageDescriptor(title) ? <FormattedMessage {...title}/> : title}
</button>
);
})}
</div>
);
};

View file

@ -20,7 +20,7 @@ import type {GlobalState} from 'types/store';
type OwnProps = {
settingsList: React.ReactNode[];
requiredSku: LicenseSkus;
sectionTitle?: string;
sectionTitle?: string | MessageDescriptor;
sectionDescription?: string | MessageDescriptor;
featureDiscoveryConfig: {
featureName: string;

View file

@ -2,12 +2,14 @@
// See LICENSE.txt for license information.
import React, {memo} from 'react';
import type {MessageDescriptor} from 'react-intl';
import {FormattedMessage} from 'react-intl';
type Props = {
id?: string;
show?: boolean;
header?: React.ReactNode;
title?: React.ReactNode;
title?: string | MessageDescriptor;
subtitle?: React.ReactNode;
children?: React.ReactNode;
container?: boolean;
@ -35,7 +37,15 @@ const SettingsGroup = ({
let sectionTitle = null;
if (!header && title) {
sectionTitle = <div className={'section-title'}>{title}</div>;
sectionTitle = (
<div className={'section-title'}>
{typeof title === 'string' ? (
title
) : (
<FormattedMessage {...title}/>
)}
</div>
);
}
let sectionSubtitle = null;

View file

@ -184,7 +184,7 @@ export type AdminDefinitionConfigSchemaSettings = {
export type AdminDefinitionConfigSchemaSection = {
key: string;
title?: string;
title?: string | MessageDescriptor;
subtitle?: string;
description?: string | MessageDescriptor;
license_sku?: string;

View file

@ -10,7 +10,7 @@ import {LicenseSkuBadge} from 'components/widgets/badges';
import './admin_section_panel.scss';
type Props = {
title?: string;
title?: string | MessageDescriptor;
description?: string | MessageDescriptor;
licenseSku?: string;
children: React.ReactNode;
@ -28,7 +28,11 @@ const AdminSectionPanel: React.FC<Props> = ({
<div className='AdminSectionPanel__header'>
{title && (
<h3 className='AdminSectionPanel__title'>
{title}
{typeof title === 'string' ? (
title
) : (
<FormattedMessage {...title}/>
)}
{licenseSku && <LicenseSkuBadge sku={licenseSku}/>}
</h3>
)}

View file

@ -2365,12 +2365,18 @@
"admin.posts.postPriority.title": "Message Priority",
"admin.posts.scheduledPosts.description": "When enabled, users can schedule and send messages in the future.",
"admin.posts.scheduledPosts.title": "Scheduled Posts",
"admin.posts.sections.burnOnRead.description": "Controls for messages that delete automatically a certain time after being sent or read.",
"admin.posts.sections.burnOnRead.description": "Controls for messages that delete automatically a certain time after being read.",
"admin.posts.sections.burnOnRead.title": "Burn-on-Read Messages",
"admin.posts.sections.drafts.description": "Control draft syncing and scheduled sending.",
"admin.posts.sections.drafts.title": "Drafts and Scheduled Posts",
"admin.posts.sections.performance.description": "Configure limits that protect client performance and rendering.",
"admin.posts.sections.performance.title": "Performance & Limits",
"admin.posts.sections.previews.description": "Configure link previews and how advanced formatting renders.",
"admin.posts.sections.previews.title": "Content & Previews",
"admin.posts.sections.priority.description": "Set message priority and repeating notifications for urgent delivery.",
"admin.posts.sections.priority.title": "Priority & Urgent Notifications",
"admin.posts.sections.threads.description": "Configure threaded discussions and auto-follow defaults.",
"admin.posts.sections.threads.title": "Threads",
"admin.privacy.showEmailDescription": "When false, hides the email address of members from everyone except System Administrators and the System Roles with read/write access to Compliance, Billing, or User Management.",
"admin.privacy.showEmailTitle": "Show Email Address:",
"admin.privacy.showFullNameDescription": "When false, hides the full name of members from everyone except System Administrators. Username is shown in place of full name.",