diff --git a/CHANGELOG.md b/CHANGELOG.md index e1793da3..9070ea54 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ and this project adheres to ### Added - ✨(summary) report exception type in failure analytics +- ✨(frontend) add configurable documentation menu item ## Fixed diff --git a/docs/installation/kubernetes.md b/docs/installation/kubernetes.md index 9188d1eb..c10326d7 100644 --- a/docs/installation/kubernetes.md +++ b/docs/installation/kubernetes.md @@ -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 | diff --git a/src/backend/meet/settings.py b/src/backend/meet/settings.py index 681ad1e1..f392917d 100755 --- a/src/backend/meet/settings.py +++ b/src/backend/meet/settings.py @@ -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 ), diff --git a/src/frontend/src/api/useConfig.ts b/src/frontend/src/api/useConfig.ts index e6b758e8..8e1ffe83 100644 --- a/src/frontend/src/api/useConfig.ts +++ b/src/frontend/src/api/useConfig.ts @@ -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 diff --git a/src/frontend/src/features/rooms/livekit/components/controls/Options/DocumentationMenuItem.tsx b/src/frontend/src/features/rooms/livekit/components/controls/Options/DocumentationMenuItem.tsx new file mode 100644 index 00000000..01c8785d --- /dev/null +++ b/src/frontend/src/features/rooms/livekit/components/controls/Options/DocumentationMenuItem.tsx @@ -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 ( + + + {t('documentation')} + + ) +} diff --git a/src/frontend/src/features/rooms/livekit/components/controls/Options/OptionsMenuItems.tsx b/src/frontend/src/features/rooms/livekit/components/controls/Options/OptionsMenuItems.tsx index 50439296..4ddf9e26 100644 --- a/src/frontend/src/features/rooms/livekit/components/controls/Options/OptionsMenuItems.tsx +++ b/src/frontend/src/features/rooms/livekit/components/controls/Options/OptionsMenuItems.tsx @@ -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 = () => { + diff --git a/src/frontend/src/locales/de/rooms.json b/src/frontend/src/locales/de/rooms.json index 753e6ca0..46758ba8 100644 --- a/src/frontend/src/locales/de/rooms.json +++ b/src/frontend/src/locales/de/rooms.json @@ -260,7 +260,8 @@ "enter": "Vollbild", "exit": "Vollbildmodus verlassen" }, - "support": "Support kontaktieren" + "support": "Support kontaktieren", + "documentation": "Dokumentation" } }, "effects": { diff --git a/src/frontend/src/locales/en/rooms.json b/src/frontend/src/locales/en/rooms.json index 26ce6376..9b37fc31 100644 --- a/src/frontend/src/locales/en/rooms.json +++ b/src/frontend/src/locales/en/rooms.json @@ -260,7 +260,8 @@ "enter": "Fullscreen", "exit": "Exit fullscreen mode" }, - "support": "Contact support" + "support": "Contact support", + "documentation": "Documentation" } }, "effects": { diff --git a/src/frontend/src/locales/fr/rooms.json b/src/frontend/src/locales/fr/rooms.json index 8a219dcf..76e68893 100644 --- a/src/frontend/src/locales/fr/rooms.json +++ b/src/frontend/src/locales/fr/rooms.json @@ -260,7 +260,8 @@ "enter": "Plein écran", "exit": "Quitter le mode plein écran" }, - "support": "Contacter l'aide" + "support": "Contacter l'aide", + "documentation": "Documentation" } }, "effects": { diff --git a/src/frontend/src/locales/nl/rooms.json b/src/frontend/src/locales/nl/rooms.json index 472edbef..7b38b93f 100644 --- a/src/frontend/src/locales/nl/rooms.json +++ b/src/frontend/src/locales/nl/rooms.json @@ -260,7 +260,8 @@ "enter": "Volledig scherm", "exit": "Stop volledig scherm stand" }, - "support": "Contact ondersteuning" + "support": "Contact ondersteuning", + "documentation": "Documentatie" } }, "effects": { diff --git a/src/helm/env.d/common.yaml.gotmpl b/src/helm/env.d/common.yaml.gotmpl index 541425c6..b4687d97 100644 --- a/src/helm/env.d/common.yaml.gotmpl +++ b/src/helm/env.d/common.yaml.gotmpl @@ -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"