(frontend) add configurable documentation link

Expose a room options Documentation link via FRONTEND_DOCUMENTATION_URL
so deployers can set or hide it.
This commit is contained in:
Arnaud Robin
2026-07-24 18:02:26 +02:00
committed by aleb_the_flash
parent a5b79afde1
commit 0c0b2f2616
11 changed files with 40 additions and 4 deletions
+1
View File
@@ -11,6 +11,7 @@ and this project adheres to
### Added
- ✨(summary) report exception type in failure analytics
- ✨(frontend) add configurable documentation menu item
## Fixed
+1
View File
@@ -344,6 +344,7 @@ These are the environmental options available on meet backend.
| FRONTEND_SILENCE_LIVEKIT_DEBUG | Silence LiveKit debug logs | false |
| FRONTEND_IS_SILENT_LOGIN_ENABLED | Enable silent login feature | true |
| FRONTEND_FEEDBACK | Frontend feedback configuration | {} |
| FRONTEND_DOCUMENTATION_URL | URL of the documentation opened from the room options menu. If unset, the documentation menu item is hidden | |
| FRONTEND_USE_FRENCH_GOV_FOOTER | Show the French government footer in the homepage | false |
| FRONTEND_USE_PROCONNECT_BUTTON | Show a "Login with ProConnect" button in the homepage instead of a "Login" button | false |
| DJANGO_EMAIL_BACKEND | Email backend library | django.core.mail.backends.smtp.EmailBackend |
+3
View File
@@ -398,6 +398,9 @@ class Base(Configuration):
"feedback": values.DictValue(
{}, environ_name="FRONTEND_FEEDBACK", environ_prefix=None
),
"documentation_url": values.Value(
None, environ_name="FRONTEND_DOCUMENTATION_URL", environ_prefix=None
),
"external_home_url": values.Value(
None, environ_name="FRONTEND_EXTERNAL_HOME_URL", environ_prefix=None
),
+1
View File
@@ -20,6 +20,7 @@ export interface ApiConfig {
feedback: {
url: string
}
documentation_url?: string
external_home_url?: string
silence_livekit_debug_logs?: boolean
is_silent_login_enabled?: boolean
@@ -0,0 +1,23 @@
import { RiBookOpenLine } from '@remixicon/react'
import { MenuItem } from 'react-aria-components'
import { useTranslation } from 'react-i18next'
import { menuRecipe } from '@/primitives/menuRecipe'
import { useConfig } from '@/api/useConfig'
export const DocumentationMenuItem = () => {
const { t } = useTranslation('rooms', { keyPrefix: 'options.items' })
const { data } = useConfig()
if (!data?.documentation_url) return
return (
<MenuItem
href={data.documentation_url}
target="_blank"
className={menuRecipe({ icon: true, variant: 'dark' }).item}
>
<RiBookOpenLine size={20} />
{t('documentation')}
</MenuItem>
)
}
@@ -5,6 +5,7 @@ import { SettingsMenuItem } from './SettingsMenuItem'
import { FeedbackMenuItem } from './FeedbackMenuItem'
import { EffectsMenuItem } from './EffectsMenuItem'
import { SupportMenuItem } from './SupportMenuItem'
import { DocumentationMenuItem } from './DocumentationMenuItem'
import { TranscriptMenuItem } from './TranscriptMenuItem'
import { ScreenRecordingMenuItem } from './ScreenRecordingMenuItem'
import { PictureInPictureMenuItem } from '@/features/rooms/livekit/components/controls/Options/PictureInPictureMenuItem'
@@ -28,6 +29,7 @@ export const OptionsMenuItems = () => {
<Separator />
<MenuSection>
<SupportMenuItem />
<DocumentationMenuItem />
<FeedbackMenuItem />
<SettingsMenuItem />
</MenuSection>
+2 -1
View File
@@ -260,7 +260,8 @@
"enter": "Vollbild",
"exit": "Vollbildmodus verlassen"
},
"support": "Support kontaktieren"
"support": "Support kontaktieren",
"documentation": "Dokumentation"
}
},
"effects": {
+2 -1
View File
@@ -260,7 +260,8 @@
"enter": "Fullscreen",
"exit": "Exit fullscreen mode"
},
"support": "Contact support"
"support": "Contact support",
"documentation": "Documentation"
}
},
"effects": {
+2 -1
View File
@@ -260,7 +260,8 @@
"enter": "Plein écran",
"exit": "Quitter le mode plein écran"
},
"support": "Contacter l'aide"
"support": "Contacter l'aide",
"documentation": "Documentation"
}
},
"effects": {
+2 -1
View File
@@ -260,7 +260,8 @@
"enter": "Volledig scherm",
"exit": "Stop volledig scherm stand"
},
"support": "Contact ondersteuning"
"support": "Contact ondersteuning",
"documentation": "Documentatie"
}
},
"effects": {
+1
View File
@@ -154,6 +154,7 @@ backend:
FRONTEND_SILENCE_LIVEKIT_DEBUG: False
FRONTEND_SUPPORT: "{'id': '58ea6697-8eba-4492-bc59-ad6562585041', 'help_article_transcript': 'https://lasuite.crisp.help/fr/article/visio-transcript-1sjq43x', 'help_article_recording': 'https://lasuite.crisp.help/fr/article/visio-enregistrement-wgc8o0', 'help_article_more_tools': 'https://lasuite.crisp.help/fr/article/visio-tools-bvxj23'}"
FRONTEND_FEEDBACK: "{'url': 'https://grist.numerique.gouv.fr/o/docs/cbMv4G7pLY3Z/USER-RESEARCH-or-LA-SUITE/f/26'}"
FRONTEND_DOCUMENTATION_URL: "https://docs.numerique.gouv.fr/docs/7c5bd65d-3c21-486f-bce1-26e0a921d642/"
FRONTEND_MANIFEST_LINK: "https://docs.numerique.gouv.fr/docs/1ef86abf-f7e0-46ce-b6c7-8be8b8af4c3d/"
FRONTEND_IDLE_DISCONNECT_WARNING_DELAY: 9000
FRONTEND_TRANSCRIPTION_DESTINATION: "https://docs.numerique.gouv.fr"