Skip to content

Commit

Permalink
N21 2075 sync existing course (#3373)
Browse files Browse the repository at this point in the history
* N21-2075 feature flag
* N21-2075 overview impl
* add start dialog for existing course
* connect sync start dialog to api
* N21-2075 Sidebar + overview changes
* N21-2075 delete course
* N21-2075 generate api
* N21-2075 handle delete error
* N21-2075 locales
---------

Co-authored-by: Marvin Öhlerking <marvin.oehlerking@capgemini.com>
Co-authored-by: Igor Richter <93926487+IgorCapCoder@users.noreply.github.com>
  • Loading branch information
3 people committed Sep 3, 2024
1 parent 5cd3583 commit 31f79cf
Show file tree
Hide file tree
Showing 34 changed files with 3,002 additions and 115 deletions.
2 changes: 1 addition & 1 deletion src/components/templates/RoomWrapper.unit.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ const getWrapper = (
}),
},
stubs: {
GroupSelectionDialog: true,
StartNewCourseSyncDialog: true,
CommonCartridgeImportModal: true,
},
},
Expand Down
4 changes: 2 additions & 2 deletions src/components/templates/RoomWrapper.vue
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
<template v-else>
<slot name="page-content" />
</template>
<GroupSelectionDialog v-model:is-open="isCourseSyncDialogOpen" />
<StartNewCourseSyncDialog v-model:is-open="isCourseSyncDialogOpen" />
<CommonCartridgeImportModal :max-width="480" class="upload-modal" />
</DefaultWireframe>
</template>
Expand All @@ -43,7 +43,7 @@ import {
envConfigModule,
courseRoomListModule,
} from "@/store";
import { GroupSelectionDialog } from "@feature-course-sync";
import { StartNewCourseSyncDialog } from "@feature-course-sync";
import { mdiImport, mdiPlus, mdiSchoolOutline, mdiSync } from "@mdi/js";
import { computed, ComputedRef, Ref, ref } from "vue";
import { useI18n } from "vue-i18n";
Expand Down
31 changes: 27 additions & 4 deletions src/locales/de.ts
Original file line number Diff line number Diff line change
Expand Up @@ -806,11 +806,20 @@ export default {
"feature-course-sync.EndCourseSyncDialog.success":
"Synchronisation erfolgreich beendet",
"feature-course-sync.GroupSelectionDialog.title": "Nutzendengruppe auswählen",
"feature-course-sync.GroupSelectionDialog.text":
"Die gewählte Nutzendengruppe wird im nächsten Schritt mit dem neu erstellten Kurs synchronisiert.",
"feature-course-sync.GroupSelectionDialog.selection.label": "Gruppen-Auswahl",
"feature-course-sync.GroupSelectionDialog.noTeacher":
"Folgende Daten zur Erstellung eines neuen Kurses sind in Nutzergruppe {groupName} nicht vorhanden:<li>Lehrkraft</li><br/>Bitte in moin.schule überprüfen und Kurs-Erstellung erneut starten.",
"feature-course-sync.StartNewCourseSyncDialog.text":
"Die gewählte Nutzendengruppe wird im nächsten Schritt mit dem neu erstellten Kurs synchronisiert.",
"feature-course-sync.StartExistingCourseSyncDialog.text":
"Die gewählte Nutzendengruppe wird im nächsten Schritt mit dem ausgewählten Kurs synchronisiert.",
"feature-course-sync.StartExistingCourseSyncDialog.confirmation.warning":
"Eine Synchronisation mit {systemName} überschreibt die Personen des Kurses (Lehrkräfte und Schüler*innen).",
"feature-course-sync.StartExistingCourseSyncDialog.confirmation.text":
"Soll die Synchronisation der Nutzergruppe {groupName} im Kurs {courseName} wirklich gestartet werden?",
"feature-course-sync.StartExistingCourseSyncDialog.success":
"Nutzendengruppe erfolgreich synchronisiert",
"feature-course-sync.startRoomSyncDialog.title": "Synchronisation starten",
"format.date": "DD.MM.YYYY",
"format.dateLong": "dddd, DD. MMMM YYYY",
"format.dateTime": "DD.MM.YYYY HH:mm",
Expand Down Expand Up @@ -884,13 +893,19 @@ export default {
'Möchten Sie wirklich die Klasse "<i>{itemName}</i>" löschen?',
"pages.administration.classes.deleteDialog.title": "Klasse löschen?",
"pages.administration.classes.edit": "Klasse bearbeiten",
"pages.administration.classes.hint":
"pages.administration.common.hint":
"Mit allen Änderungen und Einstellungen im Verwaltungsbereich wird bestätigt, dass diese durch einen weisungsberechtigten Schul-Admin mit Befugnis zu Anpassungen der Schule in der Cloud durchgeführt werden. Anpassungen durch den Schul-Admin gelten insofern als Weisung der Schule gegenüber dem Cloudbetreiber {institute_title}.",
"pages.administration.classes.index.add": "Klasse hinzufügen",
"pages.administration.classes.index.title": "Klassen verwalten",
"pages.administration.classes.label.archive": "Archiv",
"pages.administration.common.label.archive": "Archiv",
"pages.administration.common.label.active": "Aktuell",
"pages.administration.classes.manage": "Klasse verwalten",
"pages.administration.classes.header.sync": "Synchronisiert mit",
"pages.administration.courses.delete": "Kurs löschen",
"pages.administration.courses.deleteDialog.content":
'Möchten Sie wirklich diesen Kurs "<i>{itemName}</i>" löschen?',
"pages.administration.courses.index.add": "Kurs hinzufügen",
"pages.administration.courses.edit": "Kurs bearbeiten",
"pages.administration.index.title": "Administration",
"pages.administration.ldap.activate.breadcrumb": "Synchronisation",
"pages.administration.ldap.activate.className": "Name",
Expand Down Expand Up @@ -1099,6 +1114,7 @@ export default {
"Die Registrierungslinks konnten auf Grund eines Problems nicht generiert werden",
"pages.administration.remove.error": "Löschen der Nutzer fehlgeschlagen",
"pages.administration.remove.success": "Ausgewählte(r) Nutzer gelöscht",
"pages.administration.rooms.index.title": "Kurse verwalten",
"pages.administration.school.index.authSystems.addLdap":
"LDAP-System hinzufügen",
"pages.administration.school.index.authSystems.alias": "Alias",
Expand Down Expand Up @@ -1564,6 +1580,13 @@ export default {
"pages.rooms.fab.add.syncedCourse": "Neuer synchronisierter Kurs",
"pages.rooms.fab.ariaLabel": "Neuen Kurs erstellen",
"pages.rooms.fab.import.course": "Kurs importieren",
"pages.rooms.groupName": "Kurse",
"pages.rooms.headerSection.archived": "Archiv",
"pages.rooms.headerSection.synchronized": "Synchronisiert",
"pages.rooms.headerSection.menu.ariaLabel": "Kursmenü",
"pages.rooms.headerSection.toCourseFiles": "Zu den Kursdateien",
"pages.rooms.menuItems.endSync": "Synchronisation beenden",
"pages.rooms.menuItems.startSync": "Synchronisation starten",
"pages.rooms.importCourse.btn.continue": "Weiter",
"pages.rooms.importCourse.codeError": "Der Kurs-Code wird nicht verwendet.",
"pages.rooms.importCourse.importError":
Expand Down
32 changes: 28 additions & 4 deletions src/locales/en.ts
Original file line number Diff line number Diff line change
Expand Up @@ -800,11 +800,20 @@ export default {
"feature-course-sync.EndCourseSyncDialog.success":
"Synchronization completed successfully",
"feature-course-sync.GroupSelectionDialog.title": "Select user group",
"feature-course-sync.GroupSelectionDialog.text":
"In the next step, the selected user group will be synchronized with the newly created course.",
"feature-course-sync.GroupSelectionDialog.selection.label": "Group selection",
"feature-course-sync.GroupSelectionDialog.noTeacher":
"The following data for creating a new course is not available in the user group {groupName}:<li>Teacher</li><br/>Please check in moin.schule and start course creation again.",
"feature-course-sync.StartNewCourseSyncDialog.text":
"In the next step, the selected user group will be synchronized with the newly created course.",
"feature-course-sync.StartExistingCourseSyncDialog.text":
"The selected user group will be synchronized with the selected course in the next step.",
"feature-course-sync.StartExistingCourseSyncDialog.confirmation.warning":
"A synchronization with {systemName} overwrites the members in the course (teachers and students).",
"feature-course-sync.StartExistingCourseSyncDialog.confirmation.text":
"Should the synchronization of the user group {groupName} in the course {courseName} really be started?",
"feature-course-sync.StartExistingCourseSyncDialog.success":
"User group successfully synchronized",
"feature-course-sync.startRoomSyncDialog.title": "Start synchronization",
"format.date": "MM/DD/YYYY",
"format.dateLong": "dddd, MMMM DD. YYYY",
"format.dateTime": "MM/DD/YYYY HH:mm",
Expand Down Expand Up @@ -877,13 +886,20 @@ export default {
'Are you sure you want to delete class "<i>{itemName}<i>"?',
"pages.administration.classes.deleteDialog.title": "Delete class?",
"pages.administration.classes.edit": "Edit class",
"pages.administration.classes.hint":
"pages.administration.common.hint":
"With all changes and settings in the administration area, it is confirmed that these are carried out by a school admin with authority to make adjustments to the school in the cloud. Adjustments made by the school admin are deemed to be instructions from the school to the cloud operator {institute_title}.",
"pages.administration.classes.index.add": "Add class",
"pages.administration.classes.index.title": "Manage classes",
"pages.administration.classes.label.archive": "Archive",
"pages.administration.common.label.archive": "Archive",
"pages.administration.common.label.active": "Current",
"pages.administration.classes.manage": "Manage class",
"pages.administration.classes.header.sync": "Synchronized with",
"pages.administration.courses.delete": "Delete course",
"pages.administration.courses.deleteDialog.content":
'Do you really want this course "<i>{itemName}</i>" to delete?',
"pages.administration.courses.index.add": "Add course",

"pages.administration.courses.edit": "Edit course",
"pages.administration.index.title": "Administration",
"pages.administration.ldap.activate.breadcrumb": "Synchronization",
"pages.administration.ldap.activate.className": "Name",
Expand Down Expand Up @@ -1092,6 +1108,7 @@ export default {
"The registration links could not be generated",
"pages.administration.remove.error": "Failed to delete users",
"pages.administration.remove.success": "Selected users deleted",
"pages.administration.rooms.index.title": "Manage courses",
"pages.administration.school.index.authSystems.addLdap": "Add LDAP System",
"pages.administration.school.index.authSystems.alias": "Alias",
"pages.administration.school.index.authSystems.confirmDeleteText":
Expand Down Expand Up @@ -1535,6 +1552,13 @@ export default {
"pages.rooms.fab.add.syncedCourse": "New synchronized course",
"pages.rooms.fab.ariaLabel": "Create new course",
"pages.rooms.fab.import.course": "Import course",
"pages.rooms.groupName": "Courses",
"pages.rooms.headerSection.archived": "Archive",
"pages.rooms.headerSection.synchronized": "Synchronized",
"pages.rooms.headerSection.menu.ariaLabel": "Course menu",
"pages.rooms.headerSection.toCourseFiles": "To the course files",
"pages.rooms.menuItems.endSync": "End synchronization",
"pages.rooms.menuItems.startSync": "Start synchronization",
"pages.rooms.importCourse.btn.continue": "Continue",
"pages.rooms.importCourse.codeError": "The course code is not in use.",
"pages.rooms.importCourse.importError":
Expand Down
31 changes: 27 additions & 4 deletions src/locales/es.ts
Original file line number Diff line number Diff line change
Expand Up @@ -823,12 +823,21 @@ export default {
"Sincronización completada exitosamente",
"feature-course-sync.GroupSelectionDialog.title":
"Seleccionar grupo de usuarios",
"feature-course-sync.GroupSelectionDialog.text":
"En el siguiente paso, el grupo de usuarios seleccionado se sincronizará con el curso recién creado.",
"feature-course-sync.GroupSelectionDialog.selection.label":
"Selección de grupo",
"feature-course-sync.GroupSelectionDialog.noTeacher":
"Los siguientes datos para crear un nuevo curso no están disponibles en el grupo de usuarios {groupName}:<li>Profesor</li><br/>Por favor, regístrese en moin.schule y comience la creación del curso nuevamente.",
"feature-course-sync.StartNewCourseSyncDialog.text":
"En el siguiente paso, el grupo de usuarios seleccionado se sincronizará con el curso recién creado.",
"feature-course-sync.StartExistingCourseSyncDialog.text":
"El grupo de usuarios seleccionado se sincronizará con el curso seleccionado en el siguiente paso.",
"feature-course-sync.StartExistingCourseSyncDialog.confirmation.warning":
"Una sincronización con {systemName} sobrescribe a las personas del curso (profesores y estudiantes).",
"feature-course-sync.StartExistingCourseSyncDialog.confirmation.text":
"¿Debería realmente iniciarse la sincronización del grupo de usuarios {groupName} en el curso {courseName}?",
"feature-course-sync.StartExistingCourseSyncDialog.success":
"Grupo de usuarios sincronizado exitosamente",
"feature-course-sync.startRoomSyncDialog.title": "Iniciar sincronización",
"format.date": "DD/MM/YYYY",
"format.dateLong": "dddd, DD. MMMM YYYY",
"format.dateTime": "DD/MM/YYYY HH:mm",
Expand Down Expand Up @@ -901,13 +910,19 @@ export default {
'¿Está seguro de que desea eliminar la clase "<i>{itemName}<i>"?',
"pages.administration.classes.deleteDialog.title": "¿Eliminar clase?",
"pages.administration.classes.edit": "Editar clase",
"pages.administration.classes.hint":
"pages.administration.common.hint":
"Con todos los cambios y ajustes en el área de administración, se confirma que estos son llevados a cabo por un administrador de la escuela autorizado para hacer ajustes en la escuela en la nube. Los ajustes realizados por el administrador de la escuela se consideran instrucciones de la escuela al operador de la nube {institute_title}.",
"pages.administration.classes.index.add": "Agregar clase",
"pages.administration.classes.index.title": "Administrar clases",
"pages.administration.classes.label.archive": "Archivo",
"pages.administration.common.label.archive": "Archivo",
"pages.administration.common.label.active": "Actual",
"pages.administration.classes.manage": "Administrar clase",
"pages.administration.classes.header.sync": "Sincronizado con",
"pages.administration.courses.delete": "Eliminar curso",
"pages.administration.courses.deleteDialog.content":
'¿Realmente quieres este curso? "<i>{itemName}</i>" borrar?',
"pages.administration.courses.index.add": "Agregar curso",
"pages.administration.courses.edit": "Editar curso",
"pages.administration.index.title": "Administración",
"pages.administration.ldap.activate.breadcrumb": "Sincronización",
"pages.administration.ldap.activate.className": "Nombre",
Expand Down Expand Up @@ -1124,6 +1139,7 @@ export default {
"No se han podido generar los enlaces de registro",
"pages.administration.remove.error": "Error al eliminar usuarios",
"pages.administration.remove.success": "Usuarios seleccionados eliminados",
"pages.administration.rooms.index.title": "Administrar cursos",
"pages.administration.school.index.authSystems.addLdap":
"Añadir sistema LDAP",
"pages.administration.school.index.authSystems.alias": "Alias",
Expand Down Expand Up @@ -1579,6 +1595,13 @@ export default {
"pages.rooms.fab.add.syncedCourse": "Nuevo curso sincronizado",
"pages.rooms.fab.ariaLabel": "Crear nuevo curso",
"pages.rooms.fab.import.course": "Importar curso",
"pages.rooms.groupName": "Cursos",
"pages.rooms.headerSection.archived": "Archivo",
"pages.rooms.headerSection.synchronized": "Sincronizado",
"pages.rooms.headerSection.menu.ariaLabel": "Menú del curso",
"pages.rooms.headerSection.toCourseFiles": "A los archivos del curso",
"pages.rooms.menuItems.endSync": "Finalizar sincronización",
"pages.rooms.menuItems.startSync": "Iniciar sincronización",
"pages.rooms.importCourse.btn.continue": "Continuar",
"pages.rooms.importCourse.codeError": "El código del curso no está en uso.",
"pages.rooms.importCourse.importError":
Expand Down
31 changes: 27 additions & 4 deletions src/locales/uk.ts
Original file line number Diff line number Diff line change
Expand Up @@ -813,11 +813,20 @@ export default {
"Синхронізацію успішно завершено",
"feature-course-sync.GroupSelectionDialog.title":
"Виберіть групу користувачів",
"feature-course-sync.GroupSelectionDialog.text":
"На наступному кроці вибрана група користувачів буде синхронізована з новоствореним курсом.",
"feature-course-sync.GroupSelectionDialog.selection.label": "Вибір групи",
"feature-course-sync.GroupSelectionDialog.noTeacher":
"Наступні дані для створення нового курсу недоступні в групі користувачів {groupName}:<li>Викладач</li><br/>Перевірте moin.schule і почніть створення курсу знову.",
"feature-course-sync.StartNewCourseSyncDialog.text":
"На наступному кроці вибрана група користувачів буде синхронізована з новоствореним курсом.",
"feature-course-sync.StartExistingCourseSyncDialog.text":
"Вибрана група користувачів буде синхронізована з вибраним курсом на наступному кроці.",
"feature-course-sync.StartExistingCourseSyncDialog.confirmation.warning":
"Синхронізація з {systemName} перезаписує людей у курсі (викладачі та студенти).",
"feature-course-sync.StartExistingCourseSyncDialog.confirmation.text":
"Чи дійсно слід починати синхронізацію групи користувачів {groupName} у курсі {courseName}?",
"feature-course-sync.StartExistingCourseSyncDialog.success":
"Групу користувачів успішно синхронізовано",
"feature-course-sync.startRoomSyncDialog.title": "Почніть синхронізацію",
"format.date": "DD.MM.YYYY",
"format.dateLong": "dddd, DD. MMMM YYYY",
"format.dateTime": "DD.MM.YYYY HH:mm",
Expand Down Expand Up @@ -891,13 +900,19 @@ export default {
'Ви впевнені, що хочете видалити клас "<i>{itemName}<i>"?',
"pages.administration.classes.deleteDialog.title": "Видалити клас?",
"pages.administration.classes.edit": "Редагувати клас",
"pages.administration.classes.hint":
"pages.administration.common.hint":
"Усі зміни та налаштування в області адміністрування підтверджують, що вони внесені авторизованим адміністратором школи з повноваженнями вносити зміни до школи в хмарі. Коригування, внесені адміністратором школи, вважаються вказівками школи оператору хмари {institute_title}.",
"pages.administration.classes.index.add": "Додати клас",
"pages.administration.classes.index.title": "Керувати заняттями",
"pages.administration.classes.label.archive": "Архів",
"pages.administration.common.label.archive": "Архів",
"pages.administration.common.label.active": "поточний",
"pages.administration.classes.manage": "Керувати класом",
"pages.administration.classes.header.sync": "Синхронізовано з",
"pages.administration.courses.delete": "Видалити курс",
"pages.administration.courses.deleteDialog.content":
'Ви впевнені, що хочете видалити цей курс "<i>{itemName}</i>" ?',
"pages.administration.courses.index.add": "Додати курс",
"pages.administration.courses.edit": "Редагувати курс",
"pages.administration.index.title": "Адміністрування",
"pages.administration.ldap.activate.breadcrumb": "Cинхронізація",
"pages.administration.ldap.activate.className": "Ім'я",
Expand Down Expand Up @@ -1107,6 +1122,7 @@ export default {
"Не вдалося згенерувати посилання для реєстрації",
"pages.administration.remove.error": "Не вдалося видалити користувачів",
"pages.administration.remove.success": "Вибраних користувачів видалено",
"pages.administration.rooms.index.title": "Керувати курсами",
"pages.administration.school.index.authSystems.addLdap":
"Додати систему LDAP",
"pages.administration.school.index.authSystems.alias": "Псевдонім",
Expand Down Expand Up @@ -1559,6 +1575,13 @@ export default {
"pages.rooms.fab.add.syncedCourse": "Новий синхронізований курс",
"pages.rooms.fab.ariaLabel": "Створити новий курс",
"pages.rooms.fab.import.course": "Імпортувати курс",
"pages.rooms.groupName": "Курси",
"pages.rooms.headerSection.archived": "Архів",
"pages.rooms.headerSection.synchronized": "Синхронізовано",
"pages.rooms.headerSection.menu.ariaLabel": "Меню курсу",
"pages.rooms.headerSection.toCourseFiles": "До файлів курсу",
"pages.rooms.menuItems.endSync": "Завершити синхронізацію",
"pages.rooms.menuItems.startSync": "Почніть синхронізацію",
"pages.rooms.importCourse.btn.continue": "Продовжити",
"pages.rooms.importCourse.codeError": "Код курсу не використовується.",
"pages.rooms.importCourse.importError":
Expand Down
Loading

0 comments on commit 31f79cf

Please sign in to comment.