From 65947e05c8f7ebac48b9edf4cc42d09a801d470f Mon Sep 17 00:00:00 2001 From: Igor Richter Date: Mon, 2 Dec 2024 13:50:00 +0100 Subject: [PATCH] requested changes --- package.json | 2 +- src/components/share/ImportModal.unit.ts | 19 ++++-- src/components/share/ImportModal.vue | 86 +++++++++++++++++++----- src/components/share/ShareModal.unit.ts | 6 +- src/components/share/ShareModal.vue | 65 +++++++++++------- src/locales/de.ts | 28 ++++---- src/locales/en.ts | 21 ++++-- src/locales/es.ts | 28 ++++---- src/locales/uk.ts | 28 ++++---- 9 files changed, 182 insertions(+), 101 deletions(-) diff --git a/package.json b/package.json index ed84f3b7dd..6d15e28f85 100644 --- a/package.json +++ b/package.json @@ -104,7 +104,7 @@ } }, "engines": { - "node": "22", + "node": "20", "npm": ">=9" } } diff --git a/src/components/share/ImportModal.unit.ts b/src/components/share/ImportModal.unit.ts index c982d94ed4..840f15dadc 100644 --- a/src/components/share/ImportModal.unit.ts +++ b/src/components/share/ImportModal.unit.ts @@ -122,11 +122,11 @@ describe("@components/share/ImportModal", () => { `[data-testid="import-modal-external-tools-info"]` ); - expect(infoText.attributes("html")).toEqual( - "components.molecules.import.options.ctlTools.infoText" + expect(infoText.text()).toEqual( + "components.molecules.shareImport.options.ctlTools.infoText.line1" ); }); - it("should not show course file info", () => { + it("should also show course file info", () => { const { wrapper } = setup({ getCtlToolsTabEnabled: true }); const dialog = wrapper.findComponent({ name: "v-custom-dialog" }); @@ -136,7 +136,7 @@ describe("@components/share/ImportModal", () => { `[data-testid="import-modal-coursefiles-info"]` ); - expect(infoText.exists()).toBe(false); + expect(infoText.exists()).toBe(true); }); }); describe("show ctl tool info is disabled", () => { @@ -168,10 +168,15 @@ describe("@components/share/ImportModal", () => { it("should set the right key for course files", () => { const { wrapper } = setup({ getCtlToolsTabEnabled: false }); - const renderHtml = wrapper.findComponent({ name: "RenderHTML" }); + const dialog = wrapper.findComponent({ name: "v-custom-dialog" }); + const cardText = dialog.findComponent({ name: "v-card-text" }); + + const infoText = cardText.find( + `[data-testid="import-modal-coursefiles-info"]` + ); - expect(renderHtml.props("html")).toEqual( - "components.molecules.import.courses.options.infoText" + expect(infoText.element.innerHTML).toEqual( + "components.molecules.shareImport.options.restrictions.infoText.line1" ); }); }); diff --git a/src/components/share/ImportModal.vue b/src/components/share/ImportModal.vue index c87399f845..1a23a2bc1d 100644 --- a/src/components/share/ImportModal.vue +++ b/src/components/share/ImportModal.vue @@ -22,21 +22,69 @@
- - +
+
+ {{ + t( + "components.molecules.shareImport.options.tableHeader.InfoText" + ) + }} +
    +
  • + {{ + t( + "components.molecules.shareImport.options.personalData.infoText" + ) + }} +
  • +
  • + {{ + t( + "components.molecules.shareImport.options.ctlTools.infoText.line1" + ) + }} +
  • +
  • + {{ + t( + "components.molecules.shareImport.options.ctlTools.infoText.line2" + ) + }} +
  • +
  • + {{ + t( + "components.molecules.shareImport.options.restrictions.infoText.line1" + ) + }} +
  • +
  • + {{ + t( + "components.molecules.shareImport.options.restrictions.infoText.line2" + ) + }} +
  • +
  • + {{ + t( + "components.molecules.shareImport.options.restrictions.infoText.line3" + ) + }} +
  • +
  • + {{ + t( + "components.molecules.shareImport.options.restrictions.infoText.line4" + ) + }} +
  • +
+
+
{{ t(`components.molecules.import.${parentType}.rename`) }} @@ -59,7 +107,6 @@ import { ENV_CONFIG_MODULE_KEY, injectStrict } from "@/utils/inject"; import { mdiInformation } from "@icons/material"; import { computed, reactive, ref } from "vue"; import { useI18n } from "vue-i18n"; -import { RenderHTML } from "@feature-render-html"; const emit = defineEmits(["import", "cancel"]); const props = defineProps({ @@ -88,7 +135,10 @@ const onConfirm = () => { }; const onCancel = () => emit("cancel"); -const ctlToolsEnabled = computed(() => { - return envConfigModule.getCtlToolsTabEnabled; +const showCtlToolsInfo = computed(() => { + return ( + envConfigModule.getCtlToolsTabEnabled && + (props.parentType === "courses" || props.parentType === "columnBoard") + ); }); diff --git a/src/components/share/ShareModal.unit.ts b/src/components/share/ShareModal.unit.ts index 81ee46290e..a675156f13 100644 --- a/src/components/share/ShareModal.unit.ts +++ b/src/components/share/ShareModal.unit.ts @@ -137,11 +137,9 @@ describe("@/components/share/ShareModal", () => { `[data-testid="share-modal-external-tools-info"]` ); - const renderHtmls = wrapper.findAllComponents({ name: "RenderHTML" }); - expect(infotext.isVisible()).toBe(true); - expect(renderHtmls[0].props("html")).toEqual( - "components.molecules.share.courses.options.ctlTools.infoText" + expect(infotext.text()).toEqual( + "components.molecules.shareImport.options.ctlTools.infoText.line1" ); }); }); diff --git a/src/components/share/ShareModal.vue b/src/components/share/ShareModal.vue index 3a3d0340de..64b1d0d9f7 100644 --- a/src/components/share/ShareModal.vue +++ b/src/components/share/ShareModal.vue @@ -20,7 +20,6 @@
{{ t(`components.molecules.share.${type}.options.infoText`) }} -

@@ -30,41 +29,62 @@
{{ t( - "components.molecules.share.courses.options.tableHeader.InfoText" + "components.molecules.shareImport.options.tableHeader.InfoText" ) }}
    +
  • + {{ + t( + "components.molecules.shareImport.options.personalData.infoText" + ) + }} +
  • {{ t( - "components.molecules.share.options.personalData.infoText" + "components.molecules.shareImport.options.ctlTools.infoText.line1" ) }}
  • - + {{ t( - 'components.molecules.share.courses.options.ctlTools.infoText', - {} + "components.molecules.shareImport.options.ctlTools.infoText.line2" ) - " - component="p" - style="margin-bottom: 0px" - data-testid="share-modal-external-tools-info" - /> - +
  • + {{ + t( + "components.molecules.shareImport.options.restrictions.infoText.line2" + ) + }} +
  • +
  • + {{ t( - 'components.molecules.share.courses.options.restrictions.infoText', - {} + "components.molecules.shareImport.options.restrictions.infoText.line3" ) - " - component="p" - /> + }} +
  • +
  • + {{ + t( + "components.molecules.shareImport.options.restrictions.infoText.line4" + ) + }} +
@@ -92,7 +112,6 @@ import VCustomDialog from "@/components/organisms/vCustomDialog.vue"; import ShareModalOptionsForm from "@/components/share/ShareModalOptionsForm.vue"; import ShareModalResult from "@/components/share/ShareModalResult.vue"; -import RenderHTML from "@/modules/feature/render-html/RenderHTML.vue"; import { ShareTokenBodyParamsParentTypeEnum } from "@/serverApi/v3/api"; import { ENV_CONFIG_MODULE_KEY, diff --git a/src/locales/de.ts b/src/locales/de.ts index a349eace21..74b2cd2151 100644 --- a/src/locales/de.ts +++ b/src/locales/de.ts @@ -593,16 +593,10 @@ export default { "components.molecules.import.courses.label": "Kurs", "components.molecules.import.courses.rename": "Bei Bedarf kann der Name des Kurses umbenannt werden: ", - "components.molecules.import.options.ctlTools.infoText": - "Folgende Inhalte werden nicht kopiert:
  • Personenbezogene Daten
  • In Zielschule nicht verfügbare, externe Tools
  • Geschützte Einstellungen externer Tools
  • Dateien unter Kurs-Dateien
  • Inhalte aus Etherpads
  • Geogebra IDs und
  • Kursgruppen
", - "components.molecules.import.courses.options.infoText": - "Folgende Inhalte werden nicht kopiert:
  • Personenbezogene Daten
  • Dateien unter Kurs-Dateien
  • Inhalte aus Etherpads
  • Geogebra IDs und
  • Kursgruppen
", "components.molecules.import.courses.options.title": "Kurs importieren", "components.molecules.import.lessons.label": "Thema", "components.molecules.import.lessons.rename": "Bei Bedarf kann der Name des Themas umbenannt werden: ", - "components.molecules.import.lessons.options.infoText": - "Folgende Inhalte werden nicht kopiert:
  • Personenbezogene Daten
  • Dateien unter Kurs-Dateien
  • Inhalte aus Etherpads
  • Geogebra IDs und
  • Kursgruppen
", "components.molecules.import.lessons.options.selectCourse.infoText": "Der Kurs, in den das Thema importiert werden soll, muss im Folgenden ausgewählt werden.", "components.molecules.import.lessons.options.selectCourse": "Kurs wählen", @@ -619,8 +613,6 @@ export default { "components.molecules.import.tasks.label": "Aufgabe", "components.molecules.import.tasks.rename": "Bei Bedarf kann der Name der Aufgabe umbenannt werden: ", - "components.molecules.import.tasks.options.infoText": - "Folgende Inhalte werden nicht kopiert:
  • Personenbezogene Daten
  • Dateien unter Kurs-Dateien
  • Inhalte aus Etherpads
  • Geogebra IDs und
  • Kursgruppen
", "components.molecules.import.tasks.options.selectCourse.infoText": "Der Kurs, in den die Aufgabe importiert werden soll, muss im Folgenden ausgewählt werden.", "components.molecules.export.options.info": @@ -664,15 +656,23 @@ export default { "Link Bereich-Kopie", "components.molecules.share.courses.mail.body": "Link zum Kurs:", "components.molecules.share.courses.mail.subject": "Kurs zum Importieren", - "components.molecules.share.courses.options.ctlTools.infoText": - "
  • In Zielschule nicht verfügbare, externe Tools
  • Geschützte Einstellungen externer Tools
  • ", + "components.molecules.shareImport.options.ctlTools.infoText.line1": + "In Zielschule nicht verfügbare, externe Tools", + "components.molecules.shareImport.options.ctlTools.infoText.line2": + "Geschützte Einstellungen externer Tools", "components.molecules.share.courses.options.infoText": "Mit dem folgenden Link kann der Kurs als Kopie von anderen Lehrkräften importiert werden.", - "components.molecules.share.options.personalData.infoText": + "components.molecules.shareImport.options.personalData.infoText": "Personenbezogene Daten", - "components.molecules.share.courses.options.restrictions.infoText": - "
  • Dateien unter Kurs-Dateien
  • Inhalte aus Etherpads
  • Geogebra IDs und
  • Kursgruppen
  • ", - "components.molecules.share.courses.options.tableHeader.InfoText": + "components.molecules.shareImport.options.restrictions.infoText.line1": + "Dateien unter Kurs-Dateien", + "components.molecules.shareImport.options.restrictions.infoText.line2": + "Inhalte aus Etherpads", + "components.molecules.shareImport.options.restrictions.infoText.line3": + "Geogebra IDs und", + "components.molecules.shareImport.options.restrictions.infoText.line4": + "Kursgruppen", + "components.molecules.shareImport.options.tableHeader.InfoText": "Folgende Inhalte werden nicht kopiert:", "components.molecules.share.courses.result.linkLabel": "Link Kurskopie", "components.molecules.share.lessons.mail.body": "Link zum Thema:", diff --git a/src/locales/en.ts b/src/locales/en.ts index ed9d3417d3..30e0189a9e 100644 --- a/src/locales/en.ts +++ b/src/locales/en.ts @@ -647,14 +647,23 @@ export default { "components.molecules.MintEcFooter.chapters": "Chapter overview", "components.molecules.share.courses.mail.body": "Link to the course:", "components.molecules.share.courses.mail.subject": "Course you can import", - "components.molecules.share.courses.options.ctlTools.infoText": - "
  • External tools not available in the target school
  • Protected settings of external tools
  • ", + "components.molecules.shareImport.options.ctlTools.infoText.line1": + "External tools not available in the target school", + "components.molecules.shareImport.options.ctlTools.infoText.line2": + "Protected settings of external tools", "components.molecules.share.courses.options.infoText": "With the following link, the course can be imported as a copy by other teachers.", - "components.molecules.share.options.personalData.infoText": "Personal data", - "components.molecules.share.courses.options.restrictions.infoText": - "
  • Files under Course Files
  • Content from Etherpads
  • Geogebra IDs and
  • Course groups
  • ", - "components.molecules.share.courses.options.tableHeader.InfoText": + "components.molecules.shareImport.options.personalData.infoText": + "Personal data", + "components.molecules.shareImport.options.restrictions.infoText.line1": + "Files under Course Files", + "components.molecules.shareImport.options.restrictions.infoText.line2": + "Content from Etherpads", + "components.molecules.shareImport.options.restrictions.infoText.line3": + "Geogebra IDs and", + "components.molecules.shareImport.options.restrictions.infoText.line4": + "Course groups", + "components.molecules.shareImport.options.tableHeader.InfoText": "The following content will not be copied:", "components.molecules.share.courses.result.linkLabel": "Link course copy", "components.molecules.share.lessons.mail.body": "Link to the topic:", diff --git a/src/locales/es.ts b/src/locales/es.ts index 8cd7c9679c..b2fca62d0f 100644 --- a/src/locales/es.ts +++ b/src/locales/es.ts @@ -601,16 +601,10 @@ export default { "components.molecules.import.courses.label": "Curso", "components.molecules.import.courses.rename": "Si es necesario, se puede cambiar el nombre del curso: ", - "components.molecules.import.options.ctlTools.infoText": - "El siguiente contenido no se copiará:
    • Datos personales
    • Herramientas externas no disponibles en la escuela de destino
    • Configuraciones protegidas de herramientas externas
    • Archivos en Archivos de curso
    • Contenido de Etherpads
    • ID de Geogebra y
    • Grupos de cursos
    ", - "components.molecules.import.courses.options.infoText": - "El siguiente contenido no se copiará:
    • Datos personales
    • Archivos en archivos del curso
    • Contenido de Etherpads
    • ID de Geogebra y
    • Grupos de cursos
    ", "components.molecules.import.courses.options.title": "Importar curso", "components.molecules.import.lessons.label": "Tema", "components.molecules.import.lessons.rename": "Si es necesario, se puede cambiar el nombre del tema: ", - "components.molecules.import.lessons.options.infoText": - "El siguiente contenido no se copiará:
    • Datos personales
    • Archivos en archivos del curso
    • Contenido de Etherpads
    • ID de Geogebra y
    • Grupos de cursos
    ", "components.molecules.import.lessons.options.selectCourse.infoText": "Seleccione el curso al que desea importar el tema.", "components.molecules.import.lessons.options.selectCourse": "Elija el curso", @@ -627,8 +621,6 @@ export default { "components.molecules.import.tasks.label": "Tarea", "components.molecules.import.tasks.rename": "Si es necesario, se puede cambiar el nombre de la tarea: ", - "components.molecules.import.tasks.options.infoText": - "El siguiente contenido no se copiará:
    • Datos personales
    • Archivos en archivos del curso
    • Contenido de Etherpads
    • ID de Geogebra y
    • Grupos de cursos
    ", "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", @@ -667,13 +659,21 @@ export default { "components.molecules.share.courses.mail.subject": "Curso de importació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.infoText": - "
  • Herramientas externas no disponibles en la escuela de destino
  • Configuraciones protegidas de herramientas externas
  • ", - "components.molecules.share.options.personalData.infoText": + "components.molecules.shareImport.options.infoText.line1": + "Herramientas externas no disponibles en la escuela de destino", + "components.molecules.shareImport.options.infoText.line2": + "Configuraciones protegidas de herramientas externas", + "components.molecules.shareImport.options.personalData.infoText": "Datos personales", - "components.molecules.share.courses.options.restrictions.infoText": - "
  • Archivos en Archivos de curso
  • Contenido de Etherpads
  • ID de Geogebra y
  • Grupos de cursos
  • ", - "components.molecules.share.courses.options.tableHeader.InfoText": + "components.molecules.shareImport.options.restrictions.infoText.line1": + "Archivos en Archivos de curso", + "components.molecules.shareImport.options.restrictions.infoText.line2": + "Contenido de Etherpads", + "components.molecules.shareImport.options.restrictions.infoText.line3": + "ID de Geogebra y", + "components.molecules.shareImport.options.restrictions.infoText.line4": + "Grupos de cursos", + "components.molecules.shareImport.options.tableHeader.InfoText": "No se copiará el siguiente contenido:", "components.molecules.share.courses.result.linkLabel": "Enlace a la copia del curso", diff --git a/src/locales/uk.ts b/src/locales/uk.ts index 58f4ef9e17..e2d5b00d1a 100644 --- a/src/locales/uk.ts +++ b/src/locales/uk.ts @@ -597,16 +597,10 @@ export default { "components.molecules.import.courses.label": "Курс", "components.molecules.import.courses.rename": "При необхідності назву курсу можна перейменувати: ", - "components.molecules.import.options.ctlTools.infoText": - "Наступний вміст не буде скопійовано:
    • Особисті дані
    • Зовнішні інструменти, недоступні в цільовій школі
    • Захищені налаштування зовнішніх інструментів< /li>
    • Файли у Файлах курсу
    • Вміст із Etherpads
    • Ідентифікатори Geogebra та
    • Групи курсів
    ", - "components.molecules.import.courses.options.infoText": - "Наступний вміст не буде скопійовано:
    • Особисті дані
    • Файли у файлах курсу
    • Вміст із Etherpads
    • ідентифікатори Geogebra та
    • групи курсів
    ", "components.molecules.import.courses.options.title": "Курс імпорту", "components.molecules.import.lessons.label": "Тема", "components.molecules.import.lessons.rename": "При необхідності назву теми можна перейменувати: ", - "components.molecules.import.lessons.options.infoText": - "Наступний вміст не буде скопійовано:
    • Особисті дані
    • Файли у файлах курсу
    • Вміст із Etherpads
    • ідентифікатори Geogebra та
    • групи курсів
    ", "components.molecules.import.lessons.options.selectCourse.infoText": "Будь ласка, оберіть курс з якого ви хочете імпортувати тему", "components.molecules.import.lessons.options.selectCourse": "Оберіть курс", @@ -623,8 +617,6 @@ export default { "components.molecules.import.tasks.label": "Завдання", "components.molecules.import.tasks.rename": "При необхідності назву завдання можна перейменувати: ", - "components.molecules.import.tasks.options.infoText": - "Наступний вміст не буде скопійовано:
    • Особисті дані
    • Файли у файлах курсу
    • Вміст із Etherpads
    • ідентифікатори Geogebra та
    • групи курсів
    ", "components.molecules.import.tasks.options.selectCourse.infoText": "Виберіть курс, до якого ви хочете імпортувати завдання.", "components.molecules.import.tasks.options.selectCourse": "Оберіть курс", @@ -664,13 +656,21 @@ export default { "components.molecules.share.courses.mail.subject": "Курс імпорту", "components.molecules.share.courses.options.ctlTools.infoText": "Зовнішні інструменти, пов’язані з курсом або посадочними картками, не будуть скопійовані.", - "components.molecules.share.courses.options.infoText": - "
  • Зовнішні інструменти недоступні в цільовій школі
  • Захищені налаштування зовнішніх інструментів
  • ", - "components.molecules.share.options.personalData.infoText": + "components.molecules.shareImport.options.infoText.line1": + "Зовнішні інструменти недоступні в цільовій школі", + "components.molecules.shareImport.options.infoText.line2": + "Захищені налаштування зовнішніх інструментів", + "components.molecules.shareImport.options.personalData.infoText": "Персональні дані", - "components.molecules.share.courses.options.restrictions.infoText": - "
  • Файли в розділі Файли курсу
  • Вміст із Etherpads
  • Ідентифікатори Geogebra та
  • Групи курсів
  • ", - "components.molecules.share.courses.options.tableHeader.InfoText": + "components.molecules.shareImport.options.restrictions.infoText.line1": + "Файли в розділі Файли курсу", + "components.molecules.shareImport.options.restrictions.infoText.line2": + "Вміст із Etherpads", + "components.molecules.shareImport.options.restrictions.infoText.line3": + "Ідентифікатори Geogebra та", + "components.molecules.shareImport.options.restrictions.infoText.line4": + "Групи курсів", + "components.molecules.shareImport.options.tableHeader.InfoText": "Наступний вміст не буде скопійовано:", "components.molecules.share.courses.result.linkLabel": "Посилання на копію курсу",