From 071be2f1af65e74a68dfe01815a8860060d4f97e Mon Sep 17 00:00:00 2001 From: Igor Richter Date: Wed, 3 Jan 2024 16:27:56 +0100 Subject: [PATCH 01/27] extend locales for incomplete tool status --- src/locales/de.json | 6 ++++++ src/locales/en.json | 6 ++++++ src/locales/es.json | 6 ++++++ src/locales/uk.json | 6 ++++++ src/store/env-config.ts | 5 +++++ src/store/types/env-config.ts | 1 + 6 files changed, 30 insertions(+) diff --git a/src/locales/de.json b/src/locales/de.json index c2bace33e7..7912a4322f 100644 --- a/src/locales/de.json +++ b/src/locales/de.json @@ -543,6 +543,7 @@ "components.molecules.share.result.qrCodeScan": "QR-Code scannen", "components.molecules.share.courses.options.infoText": "Mit dem folgenden Link kann der Kurs als Kopie von anderen Lehrkräften importiert werden. Personenbezogene Daten werden dabei nicht importiert.", "components.molecules.share.courses.options.ctlTools.infotext": "Externe Tools, die dem Kurs oder Boardkarten zugeordnet sind, werden nicht kopiert.", + "components.molecules.share.courses.options.ctlTools.withfeature.infotext": "Geschützte Teile der Tool-Konfigurationen werden nicht kopiert.", "components.molecules.share.courses.result.linkLabel": "Link Kurskopie", "components.molecules.share.courses.mail.subject": "Kurs zum Importieren", "components.molecules.share.courses.mail.body": "Link zum Kurs:", @@ -573,6 +574,7 @@ "components.molecules.import.tasks.label": "Aufgabe", "components.molecules.import.tasks.options.selectCourse.infoText": "Der Kurs, in den die Aufgabe importiert werden soll, muss im Folgenden ausgewählt werden.", "components.molecules.import.tasks.options.selectCourse": "Kurs wählen", + "components.externalTools.status.incomplete": "Konfiguration unvollständig", "components.externalTools.status.latest": "Aktuell", "components.externalTools.status.outdated": "Veraltet", "components.externalTools.status.unknown": "Unbekannt", @@ -1060,6 +1062,10 @@ "feature-board-external-tool-element.dialog.title": "Auswahl & Einstellungen", "feature-board-external-tool-element.alert.error.teacher": "Das Tool kann aktuell nicht gestartet werden. Bitte Board aktualisieren oder an die Schuladministrator:in wenden.", "feature-board-external-tool-element.alert.error.student": "Das Tool kann aktuell nicht gestartet werden. Bitte Board aktualisieren oder an die Lehrkraft oder Kursleiter:in wenden.", + "common.tool.information.incompleteOnSchool.teacher": "Die Tool-Konfiguration ist unvollständig, daher kann das Tool nicht gestartet werden. Bitte an die Schuladministrator:in wenden.", + "common.tool.information.incompleteOnContext.teacher": "Die Tool-Konfiguration ist unvollständig, daher kann das Tool nicht gestartet werden. Bitte Tool-Konfiguration vervollständigen.", + "common.tool.information.incompleteOnSchoolAndContext.teacher": "Die Tool-Konfiguration ist unvollständig, daher kann das Tool nicht gestartet werden. Bitte Tool-Konfiguration vervollständigen und an die Schuladministrator:in wenden.", + "common.tool.information.incomplete.student": "Die Tool-Konfiguration ist unvollständig, daher kann das Tool nicht gestartet werden. Bitte an die Lehrkraft oder Kursleiter:in wenden.", "common.tool.information.outdatedOnSchool.teacher": "Die Tool-Konfiguration ist veraltet, daher kann das Tool nicht gestartet werden. Zum Aktualisieren bitte an die Schuladministrator:in wenden.", "common.tool.information.outdatedOnContext.teacher": "Die Tool-Konfiguration ist veraltet, daher kann das Tool nicht gestartet werden. Bitte Tool-Konfiguration aktualisieren.", "common.tool.information.outdatedOnSchoolAndContext.teacher": "Die Tool-Konfiguration ist veraltet, daher kann das Tool nicht gestartet werden. Bitte Tool-Konfiguration aktualisieren und an die Schuladministrator:in wenden.", diff --git a/src/locales/en.json b/src/locales/en.json index b5114a47c4..413d82f101 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -541,6 +541,7 @@ "components.molecules.share.result.qrCodeScan": "Scan QR code", "components.molecules.share.courses.options.infoText": "With the following link, the course can be imported as a copy by other teachers. Personal data will not be imported.", "components.molecules.share.courses.options.ctlTools.infotext": "External tools associated with the course or boarding cards will not be copied.", + "components.molecules.share.courses.options.ctlTools.withFeature.infotext": "Protected parts of the tool configurations are not copied.", "components.molecules.share.courses.result.linkLabel": "Link course copy", "components.molecules.share.courses.mail.subject": "Course you can import", "components.molecules.share.courses.mail.body": "Link to the course:", @@ -571,6 +572,7 @@ "components.molecules.import.tasks.label": "Task", "components.molecules.import.tasks.options.selectCourse.infoText": "Please select the course into which you would like to import the task.", "components.molecules.import.tasks.options.selectCourse": "Select course", + "components.externalTools.status.incomplete": "Configuration incomplete", "components.externalTools.status.latest": "Latest", "components.externalTools.status.outdated": "Outdated", "components.externalTools.status.unknown": "Unknown", @@ -1060,6 +1062,10 @@ "feature-board-external-tool-element.dialog.title": "Selection & Settings", "feature-board-external-tool-element.alert.error.teacher": "The tool configuration is out of date, so the tool cannot be started. Please update tool configuration.", "feature-board-external-tool-element.alert.error.student": "The tool configuration is out of date, so the tool cannot be started. To update, please contact the school administrator.", + "common.tool.information.incompleteOnSchool.teacher": "The tool configuration is incomplete, so the tool cannot be started. Please contact the school administrator.", + "common.tool.information.incompleteOnContext.teacher": "The tool configuration is incomplete, so the tool cannot be started. Please complete tool configuration.", + "common.tool.information.incompleteOnSchoolAndContext.teacher": "The tool configuration is incomplete, so the tool cannot be started. Please complete the tool configuration and contact the school administrator.", + "common.tool.information.incomplete.student": "The tool configuration is incomplete, so the tool cannot be started. Please contact the teacher or course leader.", "common.tool.information.outdatedOnContext.teacher": "The tool configuration is out of date, so the tool cannot be started. Please update tool configuration.", "common.tool.information.outdatedOnSchool.teacher": "The tool configuration is out of date, so the tool cannot be started. To update, please contact the school administrator.", "common.tool.information.outdatedOnSchoolAndContext.teacher": "The tool configuration is out of date, so the tool cannot be started. Please update the tool configuration and contact the school administrator.", diff --git a/src/locales/es.json b/src/locales/es.json index 5ef64881e0..158f99c6de 100644 --- a/src/locales/es.json +++ b/src/locales/es.json @@ -530,6 +530,7 @@ "components.molecules.share.result.qrCodeScan": "Escanear código QR", "components.molecules.share.courses.options.infoText": "Con el siguiente enlace, el curso puede ser importado como copia por otros profesores. Los datos personales no se importarán.", "components.molecules.share.courses.options.ctlTools.infotext": "No se copiarán herramientas externas asociadas al curso ni tarjetas de embarque.", + "components.molecules.share.courses.options.ctlTools.withFeature.infotext": "Las partes protegidas de las configuraciones de herramientas no se copian.", "components.molecules.share.courses.result.linkLabel": "Enlace a la copia del curso", "components.molecules.share.courses.mail.subject": "Curso de importación", "components.molecules.share.courses.mail.body": "Enlace al curso:", @@ -560,6 +561,7 @@ "components.molecules.import.tasks.label": "Tarea", "components.molecules.import.tasks.options.selectCourse.infoText": "Seleccione el curso al que desea importar la tarea.", "components.molecules.import.tasks.options.selectCourse": "Elija el curso", + "components.externalTools.status.incomplete": "Configuración incompleta", "components.externalTools.status.latest": "Actual", "components.externalTools.status.outdated": "Anticuado", "components.externalTools.status.unknown": "Desconocido", @@ -1055,6 +1057,10 @@ "feature-board-external-tool-element.dialog.title": "Selección y configuración", "feature-board-external-tool-element.alert.error.teacher": "La herramienta no se puede iniciar actualmente. Actualice el tablero o comuníquese con el administrador de la escuela.", "feature-board-external-tool-element.alert.error.student": "La herramienta no se puede iniciar actualmente. Actualice el tablero o comuníquese con el maestro o instructor del curso.", + "common.tool.information.incompleteOnSchool.teacher": "La configuración de la herramienta está incompleta, por lo que no se puede iniciar la herramienta. Por favor comuníquese con el administrador de la escuela.", + "common.tool.information.incompleteOnContext.teacher": "La configuración de la herramienta está incompleta, por lo que no se puede iniciar la herramienta. Complete la configuración de la herramienta.", + "common.tool.information.incompleteOnSchoolAndContext.teacher": "La configuración de la herramienta está incompleta, por lo que no se puede iniciar la herramienta. Complete la configuración de la herramienta y comuníquese con el administrador de la escuela.", + "common.tool.information.incomplete.student": "La configuración de la herramienta está incompleta, por lo que no se puede iniciar la herramienta. Comuníquese con el maestro o el líder del curso.", "common.tool.information.outdatedOnSchool.teacher": "La configuración de la herramienta está desactualizada, por lo que no se puede iniciar la herramienta. Para actualizar, comuníquese con el administrador de la escuela.", "common.tool.information.outdatedOnContext.teacher": "La configuración de la herramienta está desactualizada, por lo que no se puede iniciar la herramienta. Actualice la configuración de la herramienta.", "common.tool.information.outdatedOnSchoolAndContext.teacher": "La configuración de la herramienta está desactualizada, por lo que no se puede iniciar la herramienta. Actualice la configuración de la herramienta y comuníquese con el administrador de la escuela.", diff --git a/src/locales/uk.json b/src/locales/uk.json index 5ad7701379..5c4eaee5ff 100644 --- a/src/locales/uk.json +++ b/src/locales/uk.json @@ -286,6 +286,7 @@ "components.molecules.share.result.qrCodeScan": "Відскануйте QR-код", "components.molecules.share.courses.options.infoText": "За наступним посиланням курс може бути імпортований як копія іншими викладачами. Персональні дані не імпортуються.", "components.molecules.share.courses.options.ctlTools.infotext": "Зовнішні інструменти, пов’язані з курсом або посадочними картками, не будуть скопійовані.", + "components.molecules.share.courses.options.ctlTools.withFeature.infotext": "Захищені частини конфігурацій інструменту не копіюються.", "components.molecules.share.courses.result.linkLabel": "Посилання на копію курсу", "components.molecules.share.courses.mail.subject": "Курс імпорту", "components.molecules.share.courses.mail.body": "Посилання на курс:", @@ -394,6 +395,7 @@ "components.board.menu.card": "Налаштування картки", "components.board.menu.element": "Налаштування елемента", "components.board.alert.info.teacher": "Цю дошку бачать усі учасники курсу.", + "components.externalTools.status.incomplete": "Конфігурація не завершена", "components.externalTools.status.latest": "Останній", "components.externalTools.status.outdated": "Застаріла", "components.externalTools.status.unknown": "Незнайомець", @@ -1085,6 +1087,10 @@ "feature-board-external-tool-element.dialog.title": "Вибір і налаштування", "feature-board-external-tool-element.alert.error.teacher": "Інструмент зараз неможливо запустити. Будь ласка, оновіть дошку або зверніться до адміністратора школи.", "feature-board-external-tool-element.alert.error.student": "Інструмент зараз неможливо запустити. Будь ласка, оновіть дошку або зверніться до вчителя чи інструктора курсу.", + "common.tool.information.incompleteOnSchool.teacher": "Конфігурація інструменту неповна, тому інструмент не можна запустити. Будь ласка, зверніться до адміністратора школи.", + "common.tool.information.incompleteOnContext.teacher": "Конфігурація інструменту неповна, тому інструмент не можна запустити. Завершіть налаштування інструменту.", + "common.tool.information.incompleteOnSchoolAndContext.teacher": "Конфігурація інструменту неповна, тому інструмент не можна запустити. Будь ласка, завершіть налаштування інструменту та зверніться до адміністратора школи.", + "common.tool.information.incomplete.student": "Конфігурація інструменту неповна, тому інструмент не можна запустити. Будь ласка, зв'яжіться з викладачем або керівником курсу.", "common.tool.information.outdatedOnContext.teacher": "Конфігурація інструменту застаріла, тому інструмент не можна запустити. Оновіть конфігурацію інструмента.", "common.tool.information.outdatedOnSchool.teacher": "Конфігурація інструменту застаріла, тому інструмент не можна запустити. Для оновлення зверніться до адміністратора школи.", "common.tool.information.outdatedOnSchoolAndContext.teacher": "Конфігурація інструменту застаріла, тому інструмент не можна запустити. Оновіть конфігурацію інструменту та зверніться до адміністратора школи.", diff --git a/src/store/env-config.ts b/src/store/env-config.ts index c49cc0a795..ffad956bb8 100644 --- a/src/store/env-config.ts +++ b/src/store/env-config.ts @@ -47,6 +47,7 @@ export default class EnvConfigModule extends VuexModule { FEATURE_SHOW_NEW_CLASS_VIEW_ENABLED: false, FEATURE_PROVISIONING_OPTIONS_ENABLED: false, FEATURE_CTL_TOOLS_TAB_ENABLED: false, + FEATURE_CTL_TOOLS_COPY_ENABLED: false, }; loadingErrorCount = 0; status: Status = ""; @@ -193,6 +194,10 @@ export default class EnvConfigModule extends VuexModule { return this.env.FEATURE_PROVISIONING_OPTIONS_ENABLED ?? false; } + get getCtlToolsCopyEnabled(): boolean { + return this.env.FEATURE_CTL_TOOLS_COPY_ENABLED ?? false; + } + get getEnv(): Envs { return this.env; } diff --git a/src/store/types/env-config.ts b/src/store/types/env-config.ts index a0e014e10b..1254918721 100644 --- a/src/store/types/env-config.ts +++ b/src/store/types/env-config.ts @@ -52,4 +52,5 @@ export type Envs = { FEATURE_NEST_SYSTEMS_API_ENABLED?: boolean; FEATURE_TLDRAW_ENABLED?: boolean; FEATURE_PROVISIONING_OPTIONS_ENABLED?: boolean; + FEATURE_CTL_TOOLS_COPY_ENABLED?: boolean; }; From dc20401f68c8a4323e6bdf29162b283e1467b135 Mon Sep 17 00:00:00 2001 From: Arne Gnisa Date: Wed, 3 Jan 2024 16:47:51 +0100 Subject: [PATCH 02/27] N21-1421 WIP --- .../administration/ExternalToolSection.vue | 4 +- .../external-tool-section-utils.composable.ts | 15 +++--- .../school-external-tool-item.ts | 11 ++-- .../ExternalToolConfigurator.vue | 25 +++++++-- .../ExternalToolElement.vue | 4 +- .../ExternalToolElementAlert.unit.ts | 54 +++++++++---------- .../ExternalToolElementAlert.vue | 22 +++++--- src/locales/de.json | 5 +- src/locales/en.json | 17 +++--- src/locales/es.json | 17 +++--- src/locales/uk.json | 17 +++--- .../rooms/tools/RoomExternalToolsSection.vue | 3 ++ src/serverApi/v3/api.ts | 36 +++++++++++++ ...text-external-tool-configuration-status.ts | 2 + .../mapper/common-tool.mapper.ts | 1 + .../mapper/context-external-tool.mapper.ts | 1 + .../mapper/school-external-tool.mapper.ts | 4 ++ ...hool-external-tool-configuration-status.ts | 1 + .../external-tool/school-external-tool.ts | 2 + .../tool-configuration-template.ts | 9 ++-- ...tExternalToolConfigurationStatusFactory.ts | 1 + ...lToolConfigurationStatusResponseFactory.ts | 1 + .../schoolExternalToolConfigurationFactory.ts | 1 + ...lToolConfigurationStatusResponseFactory.ts | 1 + ...ternalToolConfigurationTemplate.factory.ts | 1 + .../toolConfigurationTemplateFactory.ts | 1 + 26 files changed, 179 insertions(+), 77 deletions(-) diff --git a/src/components/administration/ExternalToolSection.vue b/src/components/administration/ExternalToolSection.vue index 94e125a429..dcdfbac9b9 100644 --- a/src/components/administration/ExternalToolSection.vue +++ b/src/components/administration/ExternalToolSection.vue @@ -20,14 +20,14 @@ + + diff --git a/src/components/rooms/RoomExternalToolCard.vue b/src/components/rooms/RoomExternalToolCard.vue index 73c5a0330e..5433e25287 100644 --- a/src/components/rooms/RoomExternalToolCard.vue +++ b/src/components/rooms/RoomExternalToolCard.vue @@ -7,18 +7,16 @@ @click="handleClick" >