From e7d2be46639d90da1ee3fb062c4ae45ac33eeb60 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 2 Mar 2025 21:58:40 +0200 Subject: [PATCH] feat(options/language): store list of languages --- .../type_widgets/options/i18n/language.ts | 24 ++++++++++++++++--- src/routes/api/options.ts | 1 + src/services/options_init.ts | 3 ++- src/services/options_interface.ts | 1 + 4 files changed, 25 insertions(+), 4 deletions(-) diff --git a/src/public/app/widgets/type_widgets/options/i18n/language.ts b/src/public/app/widgets/type_widgets/options/i18n/language.ts index c57a91560..52f420077 100644 --- a/src/public/app/widgets/type_widgets/options/i18n/language.ts +++ b/src/public/app/widgets/type_widgets/options/i18n/language.ts @@ -28,15 +28,33 @@ export default class LanguageOptions extends OptionsWidget { this.$languagesContainer = this.$widget.find(".options-languages"); } + async save() { + const enabledLanguages: string[] = []; + + this.$languagesContainer.find("input:checked").each((i, el) => { + const languageId = $(el).attr("data-language-id"); + if (languageId) { + enabledLanguages.push(languageId); + } + }); + + await this.updateOption("languages", JSON.stringify(enabledLanguages)); + } + async optionsLoaded(options: OptionMap) { const availableLocales = await server.get("options/locales"); + const enabledLanguages = (JSON.parse(options.languages) as string[]); this.$languagesContainer.empty(); for (const locale of availableLocales) { - const checkbox = $(`