From 59fedeea6e6a48d96429400de354e89b2741b915 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marvin=20=C3=96hlerking?= Date: Thu, 25 Jul 2024 16:27:10 +0200 Subject: [PATCH 1/4] fix feature deletion --- controllers/administration.js | 14 +--------- locales/de.json | 4 --- locales/en.json | 4 --- locales/es.json | 4 --- locales/uk.json | 4 --- views/administration/school.hbs | 45 --------------------------------- 6 files changed, 1 insertion(+), 74 deletions(-) diff --git a/controllers/administration.js b/controllers/administration.js index 0791f7c3a3..ae90250fdf 100644 --- a/controllers/administration.js +++ b/controllers/administration.js @@ -1289,7 +1289,7 @@ const getUsersWithoutConsent = async (req, roleName, classId) => { .map((u) => u._id), consentStatus: { $in: ['missing', 'parentsAgreed'] }, $limit: batchSize, - $sort: { 'lastName': 1}, + $sort: { lastName: 1 }, }, })).data, ); @@ -2277,7 +2277,6 @@ const schoolUpdateHandler = async (req, res, next) => { student: { LERNSTORE_VIEW: false }, teacher: { STUDENT_LIST: false }, }, - features: [], logo, }; @@ -2293,17 +2292,6 @@ const schoolUpdateHandler = async (req, res, next) => { requestBody.permissions.student.LERNSTORE_VIEW = !!req.body.studentlernstorevisibility; } - // Update school features - const possibleSchoolFeatures = [ - 'messenger', 'messengerSchoolRoom', 'messengerStudentRoomCreate', 'rocketChat', 'videoconference', - ]; - - for (const feature of possibleSchoolFeatures) { - if (req.body[feature] === 'true') { - requestBody.features.push(feature); - } - } - await api(req, { version: 'v3' }).patch(`/school/${res.locals.currentSchool}`, { json: requestBody, }); diff --git a/locales/de.json b/locales/de.json index 830fe8e8e9..bc858b21c1 100644 --- a/locales/de.json +++ b/locales/de.json @@ -566,7 +566,6 @@ "generalSettings": "Allgemeine Einstellungen" }, "label": { - "activeChatFunction": "Chatfunktion aktivieren", "activeMatrixFunction": "Matrix Messenger aktivieren", "afterTheTransferPhaseEnded": "Nach Beenden der Transferphase", "allStudentsVisibility": "Die Aktivierung dieser Option hat datenschutzrechtlich eine hohe Schwelle. Um die Sichtbarkeit aller Schüler:innen der Schule für jede Lehrkraft zu aktivieren, ist es erforderlich, dass jede/r Schüler:in wirksam in diese Datenverarbeitung eingewilligt hat.", @@ -585,7 +584,6 @@ "dataProtectionAdd": "Datenschutzerklärung hinzufügen", "duringTheSchoolYear": "Während des Schuljahres", "duringTheTransferPhase": "Während der Transferphase", - "enableVideoConference": "Videokonferenzen für Kurse und Teams aktivieren", "endOfTheTransferPhase": "Beenden der Transferphase", "fileStorageSpaceUsedInCloud": "Genutzter Datei-Speicherplatz in der Cloud", "inTheTransferPhase": "in der Transferphase:", @@ -631,9 +629,7 @@ "fileSelected": "Datei ausgewählt", "fileTooLarge": "PDF Datei ist zu groß. Maximal {{size}}MB", "ifChatsAreActivatedAtYourSchool": "Sind Chats an deiner Schule aktiviert, können Team-Admins im jeweiligen Team sowie Lehrkräfte in ihren Kursen die Chatfunktion gezielt freischalten.", - "ifChatsAreActivatedAtYourSchoolTeamAdministratorsCan": "Sind Chats an deiner Schule aktiviert, können Team-Admins im jeweiligen Team die Chatfunktion gezielt freischalten.", "ifMatrixIsActivatedAtYourSchool": "Ist der Matrix Messenger aktiviert, können alle Lehrkräfte dieser Schule Chaträume, private Unterhaltungen oder kurs- und teaminterne Gruppendiskussionen starten. Schüler:innen haben dort anfangs nur Leserechte, können aber über die Kurs- und Teameinstellungen auch Schreibrechte zugewiesen bekommen. Mehr Informationen dazu findest du im ", - "ifVideoConferenceAreActivatedAtYourSchool": "Sind Videokonferenzen an deiner Schule aktiviert, können Lehrkräfte ihrem Kurs im Bereich Tools das Videokonferenz-Tool hinzufügen und dann von dort aus Videokonferenzen für alle Kursteilnehmer:innen starten. Team-Admins können die Videokonferenzfunktion im jeweiligen Team aktivieren. Team-Leiter:innen und Team-Admins können dann Videokonferenzen zu Terminen hinzufügen und starten.", "LDAPChanges": "du kannst die notwendigen Änderungen für das neue Schuljahr im\nLDAP vornehmen (neue Nutzer:innen, Update der Klassen)", "lernstoreEnabledForStudents": "Wenn diese Option nicht aktiviert ist, können die Schüler:innen nicht auf den Lern-Store zugreifen", "loginViaLDAP": "der Login via LDAP ist für bestehende Nutzer:innen weiterhin möglich", diff --git a/locales/en.json b/locales/en.json index 87329d744f..ed84a12680 100644 --- a/locales/en.json +++ b/locales/en.json @@ -566,7 +566,6 @@ "generalSettings": "General Settings" }, "label": { - "activeChatFunction": "Activate chat function", "activeMatrixFunction": "Activate Matrix Messenger", "afterTheTransferPhaseEnded": "After the transfer phase has ended", "allStudentsVisibility": "Activating this option has a high threshold under data protection law. In order to activate the visibility of all students in the school for each teacher, it is necessary that each student has effectively consented to this data processing.", @@ -585,7 +584,6 @@ "dataProtectionAdd": "Add privacy policy", "duringTheSchoolYear": "During the school year", "duringTheTransferPhase": "During the transfer phase", - "enableVideoConference": "Activate video conferencing for courses and teams", "endOfTheTransferPhase": "End of the transfer phase", "fileStorageSpaceUsedInCloud": "Used file storage in the cloud", "inTheTransferPhase": "in the transfer phase:", @@ -631,9 +629,7 @@ "fileSelected": "File selected", "fileTooLarge": "PDF file is too large. It can be at max {{size}}MB large.", "ifChatsAreActivatedAtYourSchool": "If chats are enabled at your school, team administrators and teachers can selectively unlock the chat function respectively for their team or courses.", - "ifChatsAreActivatedAtYourSchoolTeamAdministratorsCan": "If chats are enabled at your school, team administrators in the respective team can specifically unlock the chat function.", "ifMatrixIsActivatedAtYourSchool": "If the Matrix Messenger is activated, all teachers in this school can start chat rooms, private conversations or group discussions within the course or team. Students initially have read-only access, but can also be given write access via the course and team settings. Students can also start private chats within courses and teams. You can find more information about this in the ", - "ifVideoConferenceAreActivatedAtYourSchool": "If video conferencing is enabled at your school, teachers can add the video conferencing tool to their course in the Tools section and then start video conferencing for all course participants from there. Team administrators can activate the video conference function in the respective team. Team leaders and team admins can then add and start video conferences for appointments.", "LDAPChanges": "you can make the necessary changes for the new school year in the\nLDAP (new users, update classes)", "lernstoreEnabledForStudents": "If unchecked, then the students will not be able to access Learning Store", "loginViaLDAP": "Login via LDAP is still possible for existing users", diff --git a/locales/es.json b/locales/es.json index c0ec321147..3348a2c322 100644 --- a/locales/es.json +++ b/locales/es.json @@ -566,7 +566,6 @@ "generalSettings": "Configuración general" }, "label": { - "activeChatFunction": "Activar función de chat", "activeMatrixFunction": "Activar Matrix Messenger", "afterTheTransferPhaseEnded": "Una vez finalizada la fase de transferencia", "allStudentsVisibility": "La activación de esta opción tiene un nivel alto según la ley de protección de datos. Para activar la visibilidad de todos los alumnos de la escuela para cada profesor, es necesario que cada alumno haya dado su consentimiento de manera efectiva para este tratamiento de datos.", @@ -585,7 +584,6 @@ "dataProtectionAdd": "Añadir política de privacidad", "duringTheSchoolYear": "Durante el año escolar", "duringTheTransferPhase": "Durante la fase de transferencia", - "enableVideoConference": "Activar videoconferencias para cursos y equipos", "endOfTheTransferPhase": "Fin de la fase de transferencia", "fileStorageSpaceUsedInCloud": "Almacenamiento de archivos usados en la nube", "inTheTransferPhase": "en la fase de transferencia:", @@ -631,9 +629,7 @@ "fileSelected": "Archivo seleccionado", "fileTooLarge": "El archivo PDF es demasiado grande. Puede tener un tamaño máximo de {{size}} MB.", "ifChatsAreActivatedAtYourSchool": "Si los chats están habilitados en tu escuela, los administradores del equipo y los profesores pueden desbloquear la función de chat de manera selectiva y respectivamente para su equipo o cursos.", - "ifChatsAreActivatedAtYourSchoolTeamAdministratorsCan": "Si los chats están habilitados en tu escuela, los administradores del equipo en el equipo respectivo pueden desbloquear específicamente la función de chat.", "ifMatrixIsActivatedAtYourSchool": "Si se activa Matrix Messenger, todos los profesores de esta escuela pueden iniciar salas de chat, conversaciones privadas o discusiones en grupo dentro del curso o equipo. Los estudiantes inicialmente solo tienen acceso de lectura, pero también se les puede dar acceso de escritura a través de la configuración del curso y del equipo. Los estudiantes también pueden iniciar chats privados dentro de los cursos y equipos. Puedes encontrar más información al respecto en la", - "ifVideoConferenceAreActivatedAtYourSchool": "Si la videoconferencia está habilitada en tu escuela, los profesores pueden añadir la herramienta de videoconferencia a su curso en la sección Herramientas y entonces podrán iniciar desde allí videoconferencias para todos los participantes del curso. Los administradores del equipo pueden activar la función de videoconferencia en el equipo respectivo. Los líderes de equipo y los administradores de equipo pueden añadir e iniciar videoconferencias para citas.", "LDAPChanges": "Puedes realizar los cambios necesarios para el nuevo año escolar en LDAP (nuevos usuarios, clases de actualización)", "lernstoreEnabledForStudents": "Si no está seleccionado, los estudiantes no podrán acceder a Lern-Store", "loginViaLDAP": "El inicio de sesión a través de LDAP sigue siendo posible para los usuarios existentes", diff --git a/locales/uk.json b/locales/uk.json index affd964b2c..6165311cbb 100644 --- a/locales/uk.json +++ b/locales/uk.json @@ -862,8 +862,6 @@ "coursesWithLearningContent": "Курси з навчальним контентом для наступного навчального року також можна створити у фазі переходу (без призначення класу)", "doNotEndTheTransferPhase": "Не завершуйте фазу переходу, доки користувачів не буде призначено до нових класів", "ifChatsAreActivatedAtYourSchool": "Якщо у вашій школі ввімкнено чати, адміністратори команд і викладачі можуть вибірково розблокувати функцію чату відповідно для своєї команди або курсів.", - "ifChatsAreActivatedAtYourSchoolTeamAdministratorsCan": "Якщо у вашій школі ввімкнено чати, адміністратори команди у відповідній команді можуть спеціально розблокувати функцію чату.", - "ifVideoConferenceAreActivatedAtYourSchool": "Якщо у вашій школі увімкнені відеоконференції, викладачі можуть додати інструмент відеоконференцій до свого курсу в розділі «Інструменти», а потім почати відеоконференції для всіх учасників курсу звідти. Адміністратори команд можуть активувати функцію відеоконференції у відповідній команді. Керівники команд і адміністратори команд можуть потім додавати та розпочинати відеоконференції для призначення зустрічей.", "loginViaLDAP": "Вхід в систему через LDAP все ще можливий для наявних користувачів", "newSchoolYear": "Новий навчальний рік", "newUsersClassesAndChanges": "Щойно додані користувачі, класи та зміни в наявних даних не синхронізуються з LDAP", @@ -897,7 +895,6 @@ "saveGeneralSettings": "Збережіть загальні налаштування" }, "label": { - "activeChatFunction": "Активувати функцію чату", "afterTheTransferPhaseEnded": "Після завершення фази переходу", "allStudentsVisibility": "Активація цієї опції має високе граничне значення згідно із законодавством про захист даних. Щоб активувати видимість усіх учнів у школі для кожного викладача, необхідно, щоб кожен учень надав свою фактичну згоду на таку обробку даних.", "allStudentsVisibilityBrandenburg": "Увімкнення цієї опції вмикає видимість всіх учнів цієї школи для кожного вчителя.", @@ -911,7 +908,6 @@ "dataProtectionAdd": "Додати політику конфіденційності", "duringTheSchoolYear": "Протягом навчального року", "duringTheTransferPhase": "Під час фази переходу", - "enableVideoConference": "Активувати відеоконференції для курсів і команд", "endOfTheTransferPhase": "Закінчення фази переходу", "fileStorageSpaceUsedInCloud": "Використовується сховище файлів у хмарі", "inTheTransferPhase": "у фазі переходу:", diff --git a/views/administration/school.hbs b/views/administration/school.hbs index 8b1dff4828..bd0d5faeff 100644 --- a/views/administration/school.hbs +++ b/views/administration/school.hbs @@ -289,51 +289,6 @@ {{/ifConfig}} {{/ifConfig}} - {{! Only hide setting from UI and not completly from the DOM to ensure that the configured state is passed back to the server }} -
-
- -

- {{$t "administration.school.text.ifChatsAreActivatedAtYourSchoolTeamAdministratorsCan" }} -

-
- {{#hasConfig "ROCKET_CHAT_DEPRECATION_DATE"}} -

- {{$t "global.text.info"}} - {{$t "administration.school.text.rocketChatDeprecationInfo" (dict "date" (i18nDate (getConfig "ROCKET_CHAT_DEPRECATION_DATE")))}} -

- {{/hasConfig}} -
- - {{#ifConfig "FEATURE_VIDEOCONFERENCE_ENABLED" true}} -
- -
- {{/ifConfig}} {{#if ../school.fileStorageType}}
From 75986d8ff14266787ff861b6aba998548c2fe381 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marvin=20=C3=96hlerking?= Date: Fri, 26 Jul 2024 14:38:02 +0200 Subject: [PATCH 2/4] fix problem differently --- controllers/administration.js | 17 +++++++++++ locales/de.json | 4 +++ locales/en.json | 4 +++ locales/es.json | 4 +++ locales/uk.json | 4 +++ views/administration/school.hbs | 50 +++++++++++++++++++++++++++++++++ 6 files changed, 83 insertions(+) diff --git a/controllers/administration.js b/controllers/administration.js index ae90250fdf..d4bca8af24 100644 --- a/controllers/administration.js +++ b/controllers/administration.js @@ -2260,6 +2260,8 @@ const schoolUpdateHandler = async (req, res, next) => { name, language, logo_dataUrl, + rocketChat, + videoconference, } = req.body; let logo; @@ -2270,6 +2272,20 @@ const schoolUpdateHandler = async (req, res, next) => { }; } + let features = req.body.features; + + if (rocketChat) { + features.push('rocketChat'); + } else { + features = features.filter((feature) => feature !== 'rocketChat'); + } + + if (videoconference) { + features.push('videoconference'); + } else { + features = features.filter((feature) => feature !== 'videoconference'); + } + const requestBody = { name, language, @@ -2277,6 +2293,7 @@ const schoolUpdateHandler = async (req, res, next) => { student: { LERNSTORE_VIEW: false }, teacher: { STUDENT_LIST: false }, }, + features, logo, }; diff --git a/locales/de.json b/locales/de.json index bc858b21c1..830fe8e8e9 100644 --- a/locales/de.json +++ b/locales/de.json @@ -566,6 +566,7 @@ "generalSettings": "Allgemeine Einstellungen" }, "label": { + "activeChatFunction": "Chatfunktion aktivieren", "activeMatrixFunction": "Matrix Messenger aktivieren", "afterTheTransferPhaseEnded": "Nach Beenden der Transferphase", "allStudentsVisibility": "Die Aktivierung dieser Option hat datenschutzrechtlich eine hohe Schwelle. Um die Sichtbarkeit aller Schüler:innen der Schule für jede Lehrkraft zu aktivieren, ist es erforderlich, dass jede/r Schüler:in wirksam in diese Datenverarbeitung eingewilligt hat.", @@ -584,6 +585,7 @@ "dataProtectionAdd": "Datenschutzerklärung hinzufügen", "duringTheSchoolYear": "Während des Schuljahres", "duringTheTransferPhase": "Während der Transferphase", + "enableVideoConference": "Videokonferenzen für Kurse und Teams aktivieren", "endOfTheTransferPhase": "Beenden der Transferphase", "fileStorageSpaceUsedInCloud": "Genutzter Datei-Speicherplatz in der Cloud", "inTheTransferPhase": "in der Transferphase:", @@ -629,7 +631,9 @@ "fileSelected": "Datei ausgewählt", "fileTooLarge": "PDF Datei ist zu groß. Maximal {{size}}MB", "ifChatsAreActivatedAtYourSchool": "Sind Chats an deiner Schule aktiviert, können Team-Admins im jeweiligen Team sowie Lehrkräfte in ihren Kursen die Chatfunktion gezielt freischalten.", + "ifChatsAreActivatedAtYourSchoolTeamAdministratorsCan": "Sind Chats an deiner Schule aktiviert, können Team-Admins im jeweiligen Team die Chatfunktion gezielt freischalten.", "ifMatrixIsActivatedAtYourSchool": "Ist der Matrix Messenger aktiviert, können alle Lehrkräfte dieser Schule Chaträume, private Unterhaltungen oder kurs- und teaminterne Gruppendiskussionen starten. Schüler:innen haben dort anfangs nur Leserechte, können aber über die Kurs- und Teameinstellungen auch Schreibrechte zugewiesen bekommen. Mehr Informationen dazu findest du im ", + "ifVideoConferenceAreActivatedAtYourSchool": "Sind Videokonferenzen an deiner Schule aktiviert, können Lehrkräfte ihrem Kurs im Bereich Tools das Videokonferenz-Tool hinzufügen und dann von dort aus Videokonferenzen für alle Kursteilnehmer:innen starten. Team-Admins können die Videokonferenzfunktion im jeweiligen Team aktivieren. Team-Leiter:innen und Team-Admins können dann Videokonferenzen zu Terminen hinzufügen und starten.", "LDAPChanges": "du kannst die notwendigen Änderungen für das neue Schuljahr im\nLDAP vornehmen (neue Nutzer:innen, Update der Klassen)", "lernstoreEnabledForStudents": "Wenn diese Option nicht aktiviert ist, können die Schüler:innen nicht auf den Lern-Store zugreifen", "loginViaLDAP": "der Login via LDAP ist für bestehende Nutzer:innen weiterhin möglich", diff --git a/locales/en.json b/locales/en.json index ed84a12680..87329d744f 100644 --- a/locales/en.json +++ b/locales/en.json @@ -566,6 +566,7 @@ "generalSettings": "General Settings" }, "label": { + "activeChatFunction": "Activate chat function", "activeMatrixFunction": "Activate Matrix Messenger", "afterTheTransferPhaseEnded": "After the transfer phase has ended", "allStudentsVisibility": "Activating this option has a high threshold under data protection law. In order to activate the visibility of all students in the school for each teacher, it is necessary that each student has effectively consented to this data processing.", @@ -584,6 +585,7 @@ "dataProtectionAdd": "Add privacy policy", "duringTheSchoolYear": "During the school year", "duringTheTransferPhase": "During the transfer phase", + "enableVideoConference": "Activate video conferencing for courses and teams", "endOfTheTransferPhase": "End of the transfer phase", "fileStorageSpaceUsedInCloud": "Used file storage in the cloud", "inTheTransferPhase": "in the transfer phase:", @@ -629,7 +631,9 @@ "fileSelected": "File selected", "fileTooLarge": "PDF file is too large. It can be at max {{size}}MB large.", "ifChatsAreActivatedAtYourSchool": "If chats are enabled at your school, team administrators and teachers can selectively unlock the chat function respectively for their team or courses.", + "ifChatsAreActivatedAtYourSchoolTeamAdministratorsCan": "If chats are enabled at your school, team administrators in the respective team can specifically unlock the chat function.", "ifMatrixIsActivatedAtYourSchool": "If the Matrix Messenger is activated, all teachers in this school can start chat rooms, private conversations or group discussions within the course or team. Students initially have read-only access, but can also be given write access via the course and team settings. Students can also start private chats within courses and teams. You can find more information about this in the ", + "ifVideoConferenceAreActivatedAtYourSchool": "If video conferencing is enabled at your school, teachers can add the video conferencing tool to their course in the Tools section and then start video conferencing for all course participants from there. Team administrators can activate the video conference function in the respective team. Team leaders and team admins can then add and start video conferences for appointments.", "LDAPChanges": "you can make the necessary changes for the new school year in the\nLDAP (new users, update classes)", "lernstoreEnabledForStudents": "If unchecked, then the students will not be able to access Learning Store", "loginViaLDAP": "Login via LDAP is still possible for existing users", diff --git a/locales/es.json b/locales/es.json index 3348a2c322..c0ec321147 100644 --- a/locales/es.json +++ b/locales/es.json @@ -566,6 +566,7 @@ "generalSettings": "Configuración general" }, "label": { + "activeChatFunction": "Activar función de chat", "activeMatrixFunction": "Activar Matrix Messenger", "afterTheTransferPhaseEnded": "Una vez finalizada la fase de transferencia", "allStudentsVisibility": "La activación de esta opción tiene un nivel alto según la ley de protección de datos. Para activar la visibilidad de todos los alumnos de la escuela para cada profesor, es necesario que cada alumno haya dado su consentimiento de manera efectiva para este tratamiento de datos.", @@ -584,6 +585,7 @@ "dataProtectionAdd": "Añadir política de privacidad", "duringTheSchoolYear": "Durante el año escolar", "duringTheTransferPhase": "Durante la fase de transferencia", + "enableVideoConference": "Activar videoconferencias para cursos y equipos", "endOfTheTransferPhase": "Fin de la fase de transferencia", "fileStorageSpaceUsedInCloud": "Almacenamiento de archivos usados en la nube", "inTheTransferPhase": "en la fase de transferencia:", @@ -629,7 +631,9 @@ "fileSelected": "Archivo seleccionado", "fileTooLarge": "El archivo PDF es demasiado grande. Puede tener un tamaño máximo de {{size}} MB.", "ifChatsAreActivatedAtYourSchool": "Si los chats están habilitados en tu escuela, los administradores del equipo y los profesores pueden desbloquear la función de chat de manera selectiva y respectivamente para su equipo o cursos.", + "ifChatsAreActivatedAtYourSchoolTeamAdministratorsCan": "Si los chats están habilitados en tu escuela, los administradores del equipo en el equipo respectivo pueden desbloquear específicamente la función de chat.", "ifMatrixIsActivatedAtYourSchool": "Si se activa Matrix Messenger, todos los profesores de esta escuela pueden iniciar salas de chat, conversaciones privadas o discusiones en grupo dentro del curso o equipo. Los estudiantes inicialmente solo tienen acceso de lectura, pero también se les puede dar acceso de escritura a través de la configuración del curso y del equipo. Los estudiantes también pueden iniciar chats privados dentro de los cursos y equipos. Puedes encontrar más información al respecto en la", + "ifVideoConferenceAreActivatedAtYourSchool": "Si la videoconferencia está habilitada en tu escuela, los profesores pueden añadir la herramienta de videoconferencia a su curso en la sección Herramientas y entonces podrán iniciar desde allí videoconferencias para todos los participantes del curso. Los administradores del equipo pueden activar la función de videoconferencia en el equipo respectivo. Los líderes de equipo y los administradores de equipo pueden añadir e iniciar videoconferencias para citas.", "LDAPChanges": "Puedes realizar los cambios necesarios para el nuevo año escolar en LDAP (nuevos usuarios, clases de actualización)", "lernstoreEnabledForStudents": "Si no está seleccionado, los estudiantes no podrán acceder a Lern-Store", "loginViaLDAP": "El inicio de sesión a través de LDAP sigue siendo posible para los usuarios existentes", diff --git a/locales/uk.json b/locales/uk.json index 6165311cbb..affd964b2c 100644 --- a/locales/uk.json +++ b/locales/uk.json @@ -862,6 +862,8 @@ "coursesWithLearningContent": "Курси з навчальним контентом для наступного навчального року також можна створити у фазі переходу (без призначення класу)", "doNotEndTheTransferPhase": "Не завершуйте фазу переходу, доки користувачів не буде призначено до нових класів", "ifChatsAreActivatedAtYourSchool": "Якщо у вашій школі ввімкнено чати, адміністратори команд і викладачі можуть вибірково розблокувати функцію чату відповідно для своєї команди або курсів.", + "ifChatsAreActivatedAtYourSchoolTeamAdministratorsCan": "Якщо у вашій школі ввімкнено чати, адміністратори команди у відповідній команді можуть спеціально розблокувати функцію чату.", + "ifVideoConferenceAreActivatedAtYourSchool": "Якщо у вашій школі увімкнені відеоконференції, викладачі можуть додати інструмент відеоконференцій до свого курсу в розділі «Інструменти», а потім почати відеоконференції для всіх учасників курсу звідти. Адміністратори команд можуть активувати функцію відеоконференції у відповідній команді. Керівники команд і адміністратори команд можуть потім додавати та розпочинати відеоконференції для призначення зустрічей.", "loginViaLDAP": "Вхід в систему через LDAP все ще можливий для наявних користувачів", "newSchoolYear": "Новий навчальний рік", "newUsersClassesAndChanges": "Щойно додані користувачі, класи та зміни в наявних даних не синхронізуються з LDAP", @@ -895,6 +897,7 @@ "saveGeneralSettings": "Збережіть загальні налаштування" }, "label": { + "activeChatFunction": "Активувати функцію чату", "afterTheTransferPhaseEnded": "Після завершення фази переходу", "allStudentsVisibility": "Активація цієї опції має високе граничне значення згідно із законодавством про захист даних. Щоб активувати видимість усіх учнів у школі для кожного викладача, необхідно, щоб кожен учень надав свою фактичну згоду на таку обробку даних.", "allStudentsVisibilityBrandenburg": "Увімкнення цієї опції вмикає видимість всіх учнів цієї школи для кожного вчителя.", @@ -908,6 +911,7 @@ "dataProtectionAdd": "Додати політику конфіденційності", "duringTheSchoolYear": "Протягом навчального року", "duringTheTransferPhase": "Під час фази переходу", + "enableVideoConference": "Активувати відеоконференції для курсів і команд", "endOfTheTransferPhase": "Закінчення фази переходу", "fileStorageSpaceUsedInCloud": "Використовується сховище файлів у хмарі", "inTheTransferPhase": "у фазі переходу:", diff --git a/views/administration/school.hbs b/views/administration/school.hbs index bd0d5faeff..9a1f72f748 100644 --- a/views/administration/school.hbs +++ b/views/administration/school.hbs @@ -289,6 +289,51 @@ {{/ifConfig}} {{/ifConfig}} + {{! Only hide setting from UI and not completly from the DOM to ensure that the configured state is passed back to the server }} +
+
+ +

+ {{$t "administration.school.text.ifChatsAreActivatedAtYourSchoolTeamAdministratorsCan" }} +

+
+ {{#hasConfig "ROCKET_CHAT_DEPRECATION_DATE"}} +

+ {{$t "global.text.info"}} + {{$t "administration.school.text.rocketChatDeprecationInfo" (dict "date" (i18nDate (getConfig "ROCKET_CHAT_DEPRECATION_DATE")))}} +

+ {{/hasConfig}} +
+ + {{#ifConfig "FEATURE_VIDEOCONFERENCE_ENABLED" true}} +
+ +
+ {{/ifConfig}} {{#if ../school.fileStorageType}}
@@ -299,6 +344,11 @@ {{/each}}
{{/if}} {{> "lib/components/csrfInput"}} + + {{#each @root.school.features}} + + {{/each}} + From 16aefda4fc1c2158171fff20ecf5d2d0a93c6518 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marvin=20=C3=96hlerking?= Date: Fri, 26 Jul 2024 14:55:25 +0200 Subject: [PATCH 3/4] use set for features --- controllers/administration.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/controllers/administration.js b/controllers/administration.js index d4bca8af24..e4aa6acc2b 100644 --- a/controllers/administration.js +++ b/controllers/administration.js @@ -2272,18 +2272,18 @@ const schoolUpdateHandler = async (req, res, next) => { }; } - let features = req.body.features; + const features = new Set(req.body.features); if (rocketChat) { - features.push('rocketChat'); + features.add('rocketChat'); } else { - features = features.filter((feature) => feature !== 'rocketChat'); + features.delete('rocketChat'); } if (videoconference) { - features.push('videoconference'); + features.add('videoconference'); } else { - features = features.filter((feature) => feature !== 'videoconference'); + features.delete('rocketChat'); } const requestBody = { @@ -2293,7 +2293,7 @@ const schoolUpdateHandler = async (req, res, next) => { student: { LERNSTORE_VIEW: false }, teacher: { STUDENT_LIST: false }, }, - features, + features: Array.from(features), logo, }; From d121d2e855f349882e86c7b0f31c5ee5a7553c87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marvin=20=C3=96hlerking?= Date: Fri, 26 Jul 2024 14:56:51 +0200 Subject: [PATCH 4/4] delete correct feature for videoconference --- controllers/administration.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/controllers/administration.js b/controllers/administration.js index e4aa6acc2b..a97510134b 100644 --- a/controllers/administration.js +++ b/controllers/administration.js @@ -2283,7 +2283,7 @@ const schoolUpdateHandler = async (req, res, next) => { if (videoconference) { features.add('videoconference'); } else { - features.delete('rocketChat'); + features.delete('videoconference'); } const requestBody = {